ess-17.11/0000755005071500004540000000000013202324211007311 500000000000000ess-17.11/.dir-locals.el0000644005071500004540000000062013202324173011667 00000000000000;;; Directory Local Variables ;;; See Info node `(emacs) Directory Variables' for more information. ((emacs-lisp-mode ;; (coding . utf-8-unix) ;; emacs 24.3.5 gives "Coding cannot be specified by dir-locals" (indent-tabs-mode) (whitespace-style face tabs spaces trailing lines space-before-tab::space newline indentation::space empty space-after-tab::space space-mark tab-mark newline-mark))) ess-17.11/.gitignore0000644005071500004540000000057613202324173011240 00000000000000*~ *.orig *# *.info doc/ess.* doc/info/ess.info doc/readme.* doc/refcard/refcard.* *history *NEWS *VERSION *REVISION *BACKUP* *REMOTE* *LOCAL* *BASE* lisp/*.elc doc/html/*.html README ANNOUNCE MM-MISC Mail-head RPM*.spec *SVN* ess-[1-9]*.[0-9][0-9] ess-[1-9]*.[0-9][0-9][-.]??? ess-[1-9]*.[0-9][0-9]-[0-9] ess-[1-9]*.[0-9][0-9]-[0-9][-.]??? lisp/julia-mode.el lisp/ess-autoloads.el ess-17.11/COPYING0000644005071500004540000004313013202324173010274 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ess-17.11/ChangeLog0000644005071500004540000063316713202324173011032 000000000000002017-11-13 ESS Maintainers * Version 17.11 released. 2017-01-19 Stefan Monnier * .gitignore: Add ELPA's ess-autoloads.el. 2016-10-22 ESS Maintainers * Version 16.10 released. 2016-05-07 ESS Maintainers * Version 16.04 released. 2015-12-11 ESS Maintainers * Version 15.09-2 released. 2015-10-26 ESS Maintainers * Version 15.09-1 released. 2015-09-24 ESS Maintainers * Version 15.09 released. 2015-04-23 ESS Maintainers * Version 15.03-1 released. 2015-03-31 ESS Maintainers * Version 15.03 released. 2015-01-31 Rodney Sparapani * Makefiles are now UNIX and GNU make friendly. 2014-09-13 ESS Maintainers * Version 14.09 released. 2013-12-10 Rodney Sparapani * Makeconf (SITELISP): tersely documenting SITELISP and incorporating into comments for emacs variants * Makeconf (INFODIR): updating INFODIR for Mac OS X 2013-12-07 ESS Maintainers * Version 13.09-1 released. 2013-09-27 ESS Maintainers * Version 13.09 released. 2013-05-14 ESS Maintainers * Version 13.05 released. 2013-01-14 Rodney Sparapani * Makeconf (INFODIR): on Mac OS X, this directory does not fall under Emacs.app as previously indicated; it is actually the same as you might expect on UNIX/Linux, i.e. /usr/local/info 2013-01-12 ESS Maintainers * Version 12.09-2 released. 2012-12-21 ESS Maintainers * Version 12.09-1 released. 2012-09-24 ESS Maintainers * Version 12.09 released. 2012-06-07 ESS Maintainers * Version 12.04-4 released. 2012-06-01 ESS Maintainers * Version 12.04-3 released. 2012-05-11 ESS Maintainers * Version 12.04-2 released. 2012-05-07 Rodney Sparapani * Makeconf;Makefile;*/Makefile (uninstall): first attempt at uninstall target; please test 2012-04-05 ESS Maintainers * Version 12.04 released. 2012-03-30 ESS Maintainers * Version 12.03 released. New numbering scheme. 2012-03-11 Vitalie Spinu * doc/ess.texi (Styles): added C-c . to the docs. (Help): added description of i, v, w, q, k keys. (Object names): added TAB completion in ess-mode. (Other edit buffer commands): TAB completion adjusted. 2012-03-13 Vitalie Spinu * doc/newfeat.texi: New emacs 24 completion. M-TAB and breaking change emphasis. 2012-02-29 Vitalie Spinu * doc/refcard/refcard.tex: added new features and removed deprecated bindings. 2012-02-26 Vitalie Spinu * doc/ess.texi: rearranged, renamed and completed with several new chapters and sections to reflect newly added features (``Completion'', ``Developing with ESS'', ``ESS tracebug'', ``ESS developer'', ``ESS ElDoc'', ``IDO Comppletion'' and ``Evaluating Code''). First chapters are all about S and R, no special distinctions is necessary in the section names. ESS is defector 80% R, and docs are reflecting that. 2012-02-25 Vitalie Spinu * doc/newfeat.texi: completed documenting changes. 2011-12-13 Vitalie Spinu * etc/R-ESS-bugs.R (`swank:quit-inspector`): added swanky functions. 2011-12-12 Vitalie Spinu * etc/ess-developer.R: R side of ess-developer.el 2011-11-24 Vitalie Spinu * etc/R-ESS-bugs.el ("\n\n\n"): double prompt bug (5)) 2011-11-11 Vitalie Spinu (spinuvit@gmail.com) * etc/R-ESS-bugs.el: added this file for tracking R-bugs from the lisp side. 2011-07-30 ESS Maintainers * Version 5.14 released. 2011-06-20 Henning Redestig * etc/ess-roxy-tests.R (trickyInArgsComments): small examples I used to try out ess-roxy 2011-05-03 Rodney Sparapani * doc/unixlike.texi (Unix installation): * Makeconf (LISPDIR): Installing everything into site-lisp is sloppy; better to create an ess sub-directory and install there. 2011-04-26 Rodney Sparapani * doc/help-sas.texi (ESS(SAS)--TAB key): removing all references to uncommenting ess-site.el code since we moved away from that several years ago, however, the vestiges still linger (OK, but isn't that what vestiges do?) 2011-03-07 Stephen Eglen * doc/help-s.texi (ESS(S)--Editing files): Document calling R-mode directly. 2011-03-01 Stephen Eglen * doc/ess.texi (Debugging R): New node. 2011-02-28 Rodney Sparapani * doc/requires.texi: update BUGS info and include texi2dvi WARNING 2011-02-03 ESS Maintainers * Version 5.13 released. 2010-12-15 Dirk Eddelbuettel * etc/pkg-Maintainers (Debian): updated 2010-11-09 Rodney Sparapani * doc/announc.texi (Announce): \ * doc/currfeat.texi (Current Features): \ * doc/requires.texi (Requirements): \ * doc/stabilty.texi (Stability): \ Minor tweaks to bring it slightly more up-to-date. 2010-11-08 ESS Maintainers * Version 5.12 released. 2010-08-13 Stephen Eglen * doc/ess.texi (Org): New section describing interaction with Org mode, contributed by Dan Davison and Eric Schulte. 2010-07-13 ESS Maintainers * Version 5.11 released. 2010-06-08 ESS Maintainers * Version 5.10 released. 2010-05-21 ESS Maintainers * Version 5.9.1 released. 2010-05-21 ESS Maintainers * Version 5.9 released. 2010-04-25 Henning Redestig * doc/ess.texi (Roxygen): added documentation for ess-roxy 2010-04-08 Rodney Sparapani * doc/ess.texi (Top): Cosmetic change to see if the web page is updating like it should 2010-03-03 ESS Maintainers * Version 5.8 released. 2009-12-07 ESS Maintainers * Version 5.7.1 released. 2009-12-07 ESS Maintainers * Version 5.7 released. 2009-12-04 ESS Maintainers * Version 5.6 released. 2009-11-22 Stephen Eglen * doc/help-s.texi (iESS(S)--Inferior ESS processes): Add documentation about how exec-path determines which directories are searched to find R versions. 2009-10-07 ESS Maintainers * Version 5.5 released. 2009-10-02 Martin Maechler * doc/{windows|unixlike}.texi: fix *wrong* e-mail for ess-help 2009-06-08 ESS Maintainers * Version 5.4 released. 2009-05-27 Rodney Sparapani * Makefile (downloads): new target for creation of .tgz and .zip only 2009-04-22 Stephen Eglen * doc/ess.texi (TAGS): Describe R CMD rtags. (TAGS): Expand on documentation, thanks to feedback from Martin. 2009-03-05 Rodney Sparapani * doc/newfeat.texi, doc/help-bugs.tex, doc/help-jags.texi: ESS[BUGS] and ESS[JAGS]: typing = now results in <- 2009-02-23 Rodney Sparapani * Makeconf: update LISPDIR, INFODIR, ETCDIR for XEmacs. Use the modern default /usr/local/share/xemacs rather than the deprecated /usr/local/lib/xemacs. Also, default to the site-packages subdirectory rather than xemacs-packages, this allows you more freedom to update the SUMO packages without touching your ESS installation and vice versa. 2009-01-23 ESS Maintainers * Version 5.3.11 released. 2009-01-21 Rodney Sparapani * Makefile (all install clean distclean): @for loop throws away exit code, probably due to cd .. which always returns 0; @for no longer used 2009-01-13 Rodney Sparapani * doc/windows.texi and doc/unixlike.texi (Installation): replace fake double quotes in examples with real double quotes 2009-01-12 Rodney Sparapani * doc/Makefile, doc/ess.texi, doc/readme.texi, doc/windows.texi, doc/unixlike.texi (Installation): new simplified installation instructions for Windows and Unix/Unix-like including Mac OS X (major changes now complete) 2009-01-07 Rodney Sparapani * doc/Makefile (TEXISRC): add help-jags.texi to list * doc/help-jags.texi (ESS(JAGS)--Log files): the "log" of the run is now .jog (like BUGS which is .bog); .out created too many problems since the BOA output files have that extension as well (ESS(JAGS)--Model files): adding 2 new local variables: ess-jags-burnin and ess-jags-update. ESS[BUGS] has similar variables, but the modern defaults are an order of magnitude bigger, so it seemed like creating new variables was warranted 2008-12-17 Rodney Sparapani * doc/windows.texi (Microsoft Windows installation): this file will replace the Windows portion of inst_tar.texi 2008-12-15 Rodney Sparapani * doc/Makefile (install-other-docs): fixing yet another bug related to DOCDIR, was there no testing at all before foisting this on us? 2008-12-09 Rodney Sparapani * Makeconf and doc/Makefile (DOCDIR): belatedly document and defensively create 2008-12-03 Rodney Sparapani * Makeconf and doc/readme.texi (README re-organization): Add TOC for plaintext format only, requires re-defining MAKETXT accordingly. 2008-12-02 Rodney Sparapani * doc/readme.texi and doc/Makefile (README re-organization): re-arrange so that installation information comes in the 4/5th sections rather than much further down (7/8th); also massaged wording in the intro which no longer requires as much perl (which I never really understood since I don't speak perl; shall we stick to what we all know: e-lisp/make/texi/not perl/etc.) 2008-11-14 Stephen Eglen * doc/ess.texi (Indenting): Describe roxygen 2008-07-28 ESS Maintainers * Version 5.3.8 released. 2008-04-10 ESS Maintainers * Version 5.3.7 released. 2007-09-13 ESS Maintainers * Version 5.3.6 released. 2007-08-15 ESS Maintainers * Version 5.3.5 released. 2007-07-20 Stephen Eglen * doc/help-s.texi (iESS(S)--Inferior ESS processes): Document R-newest. 2007-04-26 ESS Maintainers * Version 5.3.4 released. 2006-12-16 Martin Maechler * doc/ess.texi (Help): do look up the 's *' bindings and mention differences R <-> S(-plus) 2006-09-26 ESS Maintainers * Version 5.3.3 released. 2006-09-19 ESS Maintainers * Version 5.3.2 released. 2006-06-03 ESS Maintainers * Version 5.3.1 released. 2006-04-07 ESS Maintainers * Version 5.3.0 released. 2006-04-07 Martin Maechler * doc/refcard/refcard.tex: update for ESS 5.3.0 2006-02-09 Anthony Rossini * doc/newfeat.texi: documentation for @code{ess-use-inferior-program-name-in-buffer-name}, 2006-02-07 ESS Maintainers * Version 5.2.12 released. 2006-01-06 Stephen Eglen * doc/ess.texi (Help with emacs): New section, referring people to Emacswiki and FAQs. 2005-11-14 ESS Maintainers * Version 5.2.11 released. 2005-09-09 ESS Maintainers * Version 5.2.10 released. 2005-08-30 ESS Maintainers * Version 5.2.9 released. 2005-05-12 ESS Maintainers * Version 5.2.8 released. 2005-04-18 ESS Maintainers * Version 5.2.7 released. 2005-03-14 ESS Maintainers * Version 5.2.6 released. 2005-02-01 ESS Maintainers * Version 5.2.5 released. 2005-01-06 ESS Maintainers * Version 5.2.4 released. 2004-12-31 Stephen Eglen * doc/inst_tar.texi (Unix installation): Remove note regarding GNU Make, as this is relevant only for developers, and so does not need to be in the user's guide [the shorter the installation instructions, the better!] 2004-12-29 Stephen Eglen * doc/newfeat.texi: Mention changes to completion. * doc/inst_tar.texi (Unix installation): Comment out optional step about creating database files for slow computers; delete later. * doc/ess.texi (Completion details): Comment out note about slow completion on old systems; delete later. (Imenu): Add note about imenu regexps. 2004-10-27 Martin Maechler * doc/ess.texi: added Debian patches from Camm Maguire * lisp/* : dito for six files 2004-09-21 ESS Maintainers * Version 5.2.3 released. 2004-07-27 Martin Maechler * Moved from CVS to Subversion 2004-07-08 ESS Maintainers * Version 5.2.2 released. 2004-06-28 ESS Maintainers * Version 5.2.1 released. 2004-05-22 Stephen Eglen * doc/ess.texi (Interactive ESS): At the start of the chapter on iESS, introduce a few general terms before getting into specifics. 2004-05-17 Stephen Eglen * doc/ess.texi: Few typos; add brief description of Imenu and document the 'l' key when viewing help files. 2004-05-05 Stephen Eglen * doc/ess.texi (winjava): Put empty lines around example to get proper formatting. 2004-05-04 Stephen Eglen * doc/help-s.texi (ESS-help--assistance with viewing help): Refer to Help chapter. * doc/ess.texi (Multiple ESS processes): ess-request-a-process not bound to C-c C-k. Commented out some doc for ess-plain-first-buffername. (System dependent): Change of section name from "Other variables ..." to "Variables ...". 2004-04-28 Stephen Eglen * doc/ess.texi: Document winjava, inferior-ess-own-frame and ess-help-own-frame. 2004-02-22 Stephen Eglen * doc/bugrept.texi: Describe how to make a *Backtrace* buffer. 2004-02-19 Stephen Eglen * doc/ess.texi (ESS processes on Remote Computers): add brief notes on how to get a ssh buffer. Note that URL currently spills into right margin in ess.pdf; anyway to prevent that? 2002-11-29 Stephen Eglen * doc/ess-defs.texi: New file to provide macros for formatting R, S, SPLUS. * doc/ess.texi: Quite a few updates to the documentation: Include ess-defs.texi for @Sl macro. Add Stephen to author list. Remove bold from ESS/S. Remove Variable and command index (had just two entries). Use "X window system" or "X11" rather than "X-windows" (see `man X'). Add section on editor=emacsclient. Change "more historic"->"older" Correct exit() entry in the variable and command index. Remove multiple references to Emacs/XEmacs differences in .emacs/init.el for init file. 2002-08-07 Martin Maechler * VERSION: new version -- Makefile did not commit (aarggh).. * lisp/Makefile, Makefile: more Makefile tweaks: lisp/ess-cust.el with proper version number must be committed (in time before tagging etc) * lisp/ess-cust.el: new version -- Makefile did not commit (aarggh).. * info/ess.info-3, info/ess.info-4, info/ess.info-1, info/ess.info, info/ess.info-2: Updating info for new version * ANNOUNCE, README: Updating README, ANNOUNCE for new version * doc/newfeat.texi: prepare for release of 5.1.23 (with *correct* version number)! * Makefile: dist: also update lisp/ess-cust.el rel : also `tag' 2002-08-06 rsparapa * info/ess.info-1: Updating info for new version * ANNOUNCE, doc/authors.texi, doc/getting.texi, doc/inst_cvs.texi, doc/newfeat.texi, doc/requires.texi, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4, README: docs: I was trying to create a PDF version of ANNOUNCE with texi2dvi and dvipdf (is there a better way?). And, certain functions like @email and @code betray unsightly behavior. I replaced @email with @uref:mailto and @code with @display. You may note that a better translation of @code would be @example, but @example misbehaves as well. @display doesn't make a difference for info or HTML, but it does for PDF. However, there doesn't appear to be an alternative for the moment. Another bug, is texi2html ignores the @enumerate argument (besides mishandling @macro statements). Oh joy! 2002-08-05 rsparapa * ANNOUNCE, doc/announc.texi, doc/Makefile, doc/readme.texi, README, info/ess.info-1: docs: some final minor changes to docs before release. Also, attempted to address Martin's concern in doc/Makefile with respect to install. Now, you can differentiate between making in the doc directory and installing elsewhere as the documentation indicates. The target install has returned for info files only. 2002-08-02 rsparapa * doc/dir, doc/help-sas.texi, doc/Makefile, info/ess.info-1, info/ess.info, README, info/ess.info-2: info: Rich's comment made me realize that we may also need to "install" the dir file. So, I changed the Makefile to: $(INFODIR)/ess.info: $(TEXISRC) @echo "making Info documentation..." $(MAKEINFO) ess.texi $(INSTALL) ess.info* $(INFODIR) test -f $(INFODIR)/dir || $(INSTALL) dir $(INFODIR) I suppose that a more sophisticated approach could be taken, but this is probably good enough for now. I believe that all issues that I was working on are now complete. I'm going on vacation on 8/7 and then to JSM the following week, but I should have e-mail and internet access the whole time. Did someone once say "Release early and release often"? 2002-08-01 rsparapa * info/dir: dir: I discovered what the problem is with @direntry and GNU Emacs 21. Apparently, the functionality differs between XEmacs and Emacs. Under XEmacs, the @direntry has precedence over the dir file. Emacs appears to be just the opposite. So, I edited the dir file by hand. Not sure where this file comes from. info/emacs does not create this file in a directory that doesn't already have one. The file doesn't seem to be created by makeinfo and thats where the problem lies. There is no synchronization between @direntry and dir once dir has been created (however that happens). The best solution at present is to keep the two in synch by hand. Which really isn't that big of a deal since we are only talking about one line being identical in dir and ess.texi * doc/ediff-sas.gif, doc/ess-demo.jpg, doc/ess-intro.pdf, doc/ess-intro.tex, doc/font-cor-s.gif, doc/font-cor-s.jpg, doc/font-incor-s.gif, doc/font-incor-s.jpg, doc/hilock-sas.gif, doc/Makefile, README, fontlock-test/baseball.sas, info/ess.info, info/ess.info-1, info/ess.info-2, info/ess.info-3, info/ess.info-4: docs: committing files based on recent discussion 2002-07-31 rsparapa * doc/ess.texi, README: HTML docs: a few tweaks to the texinfo to create a reasonable HTML table of contents * doc/ess.texi, README: doc bug: I was testing out the info docs and I realized that the "Detailed Node List" and the actual nodes for Installation were different. In this case, it would lead you to believe that there weren't any relevant topics in the Installation section because you see the "Detailed" list first, but there's nothing on it. I suppose you could carefully check each "Detailed" vs. actual node combination, but that would be time-consuming and prone to failure. And, I also realized that nobody would want a 100 item list when they can drill-down from a 10 item list anyways. So, I was lazy and just commented out the entire "Detailed Node List". * ANNOUNCE, doc/Makefile, README, doc/announc.texi, doc/authors.texi, doc/credits.texi, doc/ess.texi, doc/help-sas.texi, doc/inst_tar.texi, doc/readme.texi, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4: more doc changes: Where should I begin? I realized that having info files might not be helpful if you didn't already have ESS installed. So, I decided to create HTML docs and put them @ software.biostat.washington.edu:/ess/doc/html But, texi2html doesn't work with version.texi. After pulling my hair out, I decided to read the documentation. Guess what? texi2html doesn't support @macro commands. So, instead of @essver{}, I replaced those references by @include ../VERSION which seems to work. Of course, this was after I re-did the doc/Makefile thinking there was something wrong in there. The HTML docs are now on the net. And, lots of other "improvements" to the docs. * doc/ess.texi, info/ess.info, README, info/ess.info-1, info/ess.info-2, info/ess.info-3, info/ess.info-4: info: running some long SAS jobs, ZZZZZzzzzZZZZZ... Meanwhile, re-wrote parts of the intro and re-arranged some of the documentation categories; boy is that fun. NOT! Promoted "Help for the S family" and "Help for SAS" to main categories so you don't have to poke around so long. One bugaboo that remains with GNU Emacs 21.1-21.3 is the @direntry which is set to: * ESS: (ess). Emacs Speaks Statistics (S/S+/R, SAS, BUGS, Stata, XLisp-Stat). but, Emacs sadly reports: ESS Version 5.x.y (was: S-mode). This works fine on XEmacs 21.4.8 and I'm using texinfo 4.2 * lisp/ess-utils.el: ess-kermit-get, ess-kermit-send I had to replace (shell) with ess-sas-goto-shell; maybe we should generalize ess-sas-goto-shell and ess-sas-shell-buffer in ess-utils.el too 2002-07-30 rsparapa * lisp/Makefile: lisp/Makefile: essa-sas.el should not be compiled since it is required by essl-sas.el and therefore, already compiled * lisp/Makefile: lisp/Makefile: fixed a bug testing whether a directory is . 2002-07-29 rsparapa * doc/ess.texi, doc/help-sas.texi, info/ess.info, info/ess.info-1, info/ess.info-3, README, info/ess.info-4: Help for SAS: more updates and fixes; now ready for release 2002-07-27 rsparapa * doc/Makefile, Makefile: Makefile: changed target info to the more descriptive and appropriate docs 2002-07-26 rsparapa * doc/ess.texi, doc/help-sas.texi: ESS[SAS] info documentation: lots of minor changes that should make it a better intro as well as a more complete and correct manual * doc/Makefile, lisp/Makefile, Makeconf, Makefile: more Makefile mods: made INSTALL comments more explicit and removed install as the target from main Makefile, it was only present in the lisp Makefile in any case * Makefile: main Makefile: realclean target deleted; doc and lisp Makefile's don't have it anyway; ESSVERSIONDIR changed to ESSDIR * Makeconf: Makeconf: made 2 comments more explanatory * doc/Makefile, Makeconf, Makefile, doc/newfeat.texi: more Makefile/Makeconf improvements: I think this should do it for the next release. Enjoy! * info/ess.info-1, info/ess.info: Updating info for new version * ANNOUNCE, README: Updating README, ANNOUNCE for new version * Makeconf, README, doc/Makefile, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4, lisp/Makefile: more Makefile changes: Apparently, we had two different methods for replacing old version numbers with new ones. For some reason, the old method based on perl stopped working. So, we created a new method based on @essver{}. However, the old version targets and dependencies remained. I have no idea what kind of weirdness resulted from that. Just in case, I'm removing the old method. 2002-07-25 rsparapa * lisp/essa-sas.el: ESS[SAS]: ess-sleep-for now defaults to 5 seconds on Windows only (which was where the problem was initially) * lisp/essa-sas.el: ESS[SAS]: fixed bug in ess-sas-submit-sh for Kermit file transfers; noticed that ess-kermit- functions call (shell) when it probably should be ess-sas-goto-shell 2002-07-24 rsparapa * doc/Makefile, fontlock-test/baseball.sas, Makeconf, Makefile, VERSION: Makefile happy-land: I think I finally figured this maze out. We'll see when we try to release 5.1.21 * lisp/ess-utils.el: ess-utils.el: fixed a bug in ess-save-and-set-local-variables; more exhaustive testing later tonight * lisp/essa-sas.el: ESS[SAS]: ess-save-and-set-local-variables is now called from ess-sas-submit-sh, ess-sas-submit-windows and ess-sas-submit-mac rather than save-buffer which formerly appeared in ess-sas-submit. Not, sure what to do with ess-sas-submit-iESS, but it should not be called in ess-sas-submit-region. Also, now called in ess-sas-data-view so you can take advantage of the recently added ess-sas-data-view-fsview-statement buffer-local variable. * lisp/ess-utils.el: ess-utils.el: added 2 new functions ess-search-except: searches forward for a regexp, stores as match 1 and optionally, ignores results that also match a second regexp parameter, and optionally, searches backward for a third non-nil parameter ess-save-and-set-local-variables: if a buffer is modified, save the buffer and if Local Variables are defined, update them with revert returning t if buffer was modified and nil otherwise * lisp/essa-sas.el: ESS[SAS], ess-sas-data-view: Now, I'm adding features just for myself. I've always wanted the capability to add a PROC FSVIEW statement to an ess-sas-data-view call, but I just never got around to it. You can configure it with the string ess-sas-data-view-fsview-statement. Also, you can now change the PROC FSVIEW command itself with ess-sas-data-view-fsview-command and I renamed ess-sas-data-view-options to ess-sas-data-view-submit-options to make it more clear what it does (i.e. so you don't confuse -options with -fsview-command). * Makeconf, doc/Makefile, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, Makefile, info/ess.info-4, lisp/Makefile: Makeconf/Makefile tweaking: still need to re-organize doc Makefile which is currently in the main Makefile and the doc Makefile 2002-07-23 rsparapa * Makeconf: Makeconf: minor improvements in anticipation of a more important role for this method of installing ESS * lisp/make-regexp.el: make-regexp.el: timing functions removed due to name collisions with Gnus 2002-07-22 rsparapa * lisp/essa-sas.el: ESS[SAS]: extended ess-sas-goto-shell to take an optional argument if non-nil, then set-buffer rather than switch. This new call replaces code chunks in ess-sas-submit-region, ess-sas-data-view and ess-sas-graph-view. Furthermore, this behavior is what was intended in nearly all (ess-sas-goto-shell) calls and I have replaced them all with (ess-sas-goto-shell t); except for the key-bindings for F8/F3 and the code that deals with kermit file transfers which require the old behavior. Have only tested on XEmacs and 'sh, so YMMV. * lisp/essa-sas.el: ESS[SAS]: ess-sas-goto-shell resurrected! Our recent discussion with respect to each SAS program, perhaps, needing it's own ess-sas-submit-method brought me back to ancient discussions of asynchronous shell buffer names. Emacs and XEmacs named them differently. Our solution was to use & for 'sh and start for 'ms-dos to make synchronous processes asynchronous. However, this made ess-sas-goto-shell unnecessary since the buffer was always *shell*. Now, I added the variable ess-sas-shell-buffer which is buffer-local and defaults to *shell*. If you set this to something else, then you will get another shell buffer. And, ess-sas-goto-shell will take you to whichever one you need. So, we are back to the original function. I also moved the add-hook call to the shell creation step since it seemed like over-kill to call it every time you did ess-sas-submit-sh. Is this enough explanation or am I boring you? 2002-07-19 rsparapa * lisp/essa-sas.el: ESS[SAS]: tweaks to -> ess-sas-submit-mac for JSM presentation * lisp/essa-sas.el: ESS[SAS]: ess-sas-submit-method needs to be buffer-local so that ess-sas-submit can submit different buffers in different ways with the Local Variables trick 2002-07-16 rsparapa * lisp/ess-utils.el: ess-utils.el: added ess-kermit- functions; now, it's really ready for testing * lisp/ess-cust.el: ess-cust.el: added ess-kermit- variables * lisp/essa-sas.el: ESS[SAS]: moved ess-kermit- variables to ess-cust.el and ess-kermit- functions to ess-utils.el * lisp/ess-cust.el: ess-cust.el: applied Stephen's patch; also changed more :types from "string" to 'string; finally, fixed custom-ize for SAS; it always worked if you specified 'ess-sas for the group, but never worked if you specified 'ess; this was because defgroup defined 'ess-SAS rather than 'ess-sas; and, now I understand what :prefix does; we discussed this previously and nobody knew (the documentation doesn't say either); :prefix is the beginning of the variable name that the custom-ize buffer doesn't show you; therefore, it seems that :prefix should be "ess-" for 'ess-sas; I think this is what it always was, but now I know this is right; only tested this on XEmacs 21.4.8 which is nearly bullet-proof; please test on buggier versions of (x)emacs 2002-07-11 rsparapa * lisp/essa-sas.el: ess-search-except, ess-sas-data-view, ess-sas-graph-view: improvements to all; simplification of the latter -view's with ess-search-except and other minor changes * lisp/essa-sas.el: ess-search-except: I forgot to include the bloody example of it's use; now see ess-sas-data-view. * lisp/essa-sas.el: ess-search-except: I believe it does what we want now. Sorry, to make this a multi-stage commit, but I can think in SAS, not elisp yet :o) * lisp/essa-sas.el: ess-search-except: I had some free time and I decided to write a function to perform the complex searches that are necessary for ess-sas-data-view. I suppose a function like this would be valuable for ess-sas-graph-view and for other packages as well. After a bit more testing, I'll put it some place more appropriate. I suppose we don't have alot of time left before 5.2.0 * lisp/essa-sas.el: ess-sas-data-view: the code will make your head hurt, but the search for a permanent SAS data just got a little smarter. After it finds a tentative candidate in a forward search, it checks if it is a work./first./last. If so, then it backward searches. I suppose a better approach would be to write an ess-search function that takes arguments for regexp, direction, and exceptions to ignore. I don't have time right now, but let's add it to the TODO. 2002-07-02 rsparapa * doc/ess.texi: updated copyright to 2002. Deep thought: does everything need a person to copyright it? Wouldn't it be better to have something like: Copyright (C) 2002 ESS Developers? 2002-06-24 rsparapa * lisp/essa-sas.el: ess-sas-data-view: Now ignoring WORK datasets since there is no way to open them anyway. It would be nice if this function (as well as ess-sas-graph-view) could also be accessable via the mouse. Any hints as to how to do it would be appreciated. Currently, you have to move the point manually or re-type the dataset/graph that you want to view. Just clicking on a dataset/graph would be easier. 2002-06-24 Martin Maechler * lisp/essdsp6w.el, lisp/essd-r.el, lisp/essd-s3.el, lisp/essd-s4.el, lisp/essd-sp3.el, lisp/essd-sp4.el, lisp/essd-sp5.el, lisp/essd-sp6.el: activate imenu for S+modes, using the ess-[SR]-use-imenu variable (in R and S+) 2002-06-20 rsparapa * lisp/ess-emcs.el, lisp/ess-inf.el, lisp/ess-menu.el, lisp/ess-mode.el, lisp/ess-mous.el, lisp/ess-trns.el, lisp/noweb-mode.el: all ess-running-xemacs have now been replaced with (featurep 'xemacs) * VERSION: VERSION: 5.2.0 2002-06-19 rsparapa * lisp/ess-emcs.el: ess-emcs.el: (featurep 'xemacs) has been implemented according to Rich's suggestion; however, ess-running-xemacs is rather pervasive among numerous other ESS lisp files; I don't have time to go into every file and change them all; but, this will certainly be the recommended route to take with ESS 6 2002-06-19 rmh * lisp/essdsp6w.el, lisp/ess-emcs.el, lisp/essd-sp4.el, lisp/ess-site.el: w32-short-file-name win32-short-file-name 2002-06-19 rsparapa * README, ANNOUNCE: Updating README, ANNOUNCE for new version 2002-06-18 rsparapa * doc/ess.texi, doc/inst_tar.texi: Unix Installation: massive changes; I really don't understand points 7 and 8, but I assume the XEmacs parts of 8 will change once 5.2.0 is an "official" XEmacs package; I suggest similar changes be made to Microsoft Windows Installation, but I made none. Enjoy! 2002-06-18 Martin Maechler * lisp/essd-r.el: allow prompt "Browse[1]> " -- i.e. add "[]" to valid prompt chars (but not as first one!) 2002-06-18 rsparapa * lisp/essa-sas.el: ess-kermit-get: last bug-fix ; it's about as user-friendly as I can imagine at the moment 2002-06-17 rsparapa * doc/help-sas.texi, doc/inst_tar.texi, doc/newfeat.texi, doc/requires.texi: doc: minor improvements * doc/currfeat.texi, doc/newfeat.texi: doc: a few minor changes in preparation for the 5.2.0 release * lisp/essa-sas.el: ESS[SAS]: fixed a newly introduced bug in ess-kermit-get; synchronized ess-kermit-send with ess-kermit-get; replaced equal with string-equal (do we need to do this globally?); I'd like to do a little bit more testing before 5.2.0; I'll try to get it done tonight * lisp/essa-sas.el: ESS[SAS]: changes for more user friendly kermit file transfers; ess-kermit-prefix default is now # which should be os-independent; former defaults, : or ], could be problematic and were based on ange-ftp/efs/tramp (an unnecessary restriction it turns out); when ess-sas-goto is passed the suffix "log" or "lst" ess-kermit-get is called if the file starts with ess-kermit-prefix; other extensions could be dangerous since you might have altered the local copy whereas .log and .lst files are only being modified by the SAS batch job; as long as the integrity of the .sas program is maintained .log and .lst can always be retrieved if an unwanted transfer overwrites them 2002-06-04 rsparapa * lisp/ess-utils.el: ess-utils: explanatory comment on the recent change in ess-revert-wisely 2002-05-28 rmh * doc/ess.texi, doc/help-sas.texi, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4: M-x SAS does not work with MS Windows 2002-05-28 rsparapa * Makefile: Makefile: made compile the default; also fixed problem with make all 2002-05-27 Martin Maechler * doc/README.SPLUS4WIN: 5.1.21, not *.20 (is this not yet integrated in *.texi ?) 2002-05-21 rmh * doc/dir, info/dir: dir file needed in same directory as *.info* files * doc/ess.texi, doc/help-sas.texi, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4, README: improve documentation for ess-remote 2002-05-20 rsparapa * Makefile: Makefile: commented out a stray reference to info in the doc directory * ANNOUNCE, README: Updating README, ANNOUNCE for new version 2002-05-17 rmh * doc/ess.texi, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4: document ess-remote, S+elsewhere, ess-elsewhere * doc/ess.texi, doc/help-s.texi, doc/inst_tar.texi, info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4, README: add reference to ~/.xemacs/init.el as the Xemacs alternate for the Gnu emacs file .emacs 2002-05-16 rsparapa * lisp/essa-sas.el: ESS[SAS]: ess-sas-data-view; oops that was not right. now fixed. dataset names may end in macro variables, but libraries must not 2002-05-14 rsparapa * lisp/essa-sas.el: ESS[SAS]: ess-sas-data-view will now recognize a permanent SAS dataset name that ends in a macro variable. You will be prompted with the portion of the name up to, but not including the macro variable, since it wouldn't be valid otherwise. You will need to complete the dataset name. You cannot use a macro variable for the library since &libname.dataname is macro concatenation. 2002-05-13 rsparapa * lisp/essa-sas.el: ESS[SAS] doc-strings: updated doc-strings for ess-sas-submit-method * doc/help-sas.texi: ESS[SAS] help: ess-sas-submit-method discussed, with respect to both local and remote SAS batch jobs including Kermit 2002-05-12 rmh * info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4: repair trailing garbage by removing [] from node names * doc/ess.texi, doc/help-sas.texi, doc/help-s.texi: @node lines cannot contain []. I replaced them with () in the node lines and left them at [] in the section heads and in the body of the text. 2002-05-10 rsparapa * doc/help-sas.texi: ESS[SAS] help: discussion of ess-sas-submit-command etc. But, still need to discuss ess-sas-submit-method and kermit too. 2002-05-10 rmh * doc/ess.texi: Thank you Martin, I was starting do essentially the same thing to ess.texi. Now I don't have to. I did one extra step. We had an empty chapter in the dvi that I commented out. @comment @chapter Help for Statistical Packages Then I promoted both S and SAS to chapter status. @chapter Help for the S family @chapter Help for SAS There is a fundamental problem in both help-s.texi and help-sas.texi. Make the ess.dvi and then look at the S and SAS chapters. Both chapters have a trailing piece of the node-name as the last line in each section. I tried several ways to make that go away with no success. Can you figure out what is going on and fix it? Thanks 2002-05-10 Martin Maechler * doc/ess.texi, doc/inst_tar.texi: comment empty chapter; update nodes and menus (in Emacs) and hand fix 2002-05-10 rmh * lisp/essd-els.el: gnuclient doesn't work across tcpip (or at least I don't yet know how), so I removed it from inferior-ess-language-start for ess-remote. * lisp/essdsp6w.el, lisp/essl-s.el: S-Plus 6 help() function uses pager=options()$help.pager I modified inferior-S-language-start in essl-s.el to always define options()$help.pager to have the same value as options()$pager. Only S-Plus 6 uses this new value. The way the statement is constructed, it does not get used for R and it generates a harmless extra component to the options() in earlier versions of S-Plus. 2002-05-10 rsparapa * doc/getting.texi, doc/newfeat.texi: doc: updates for next release 2002-05-10 rmh * lisp/essd-sas.el: put ess-eval-line-and-step-invisibly on C-c i on sas-mode-local-map * lisp/essd-els.el: ess-remote for SAS needs shell-mode * lisp/ess-inf.el: ess-eval-line-and-step-invisibly is needed for ess-remote to work with sas * lisp/essd-els.el: ess-remote now works for "sas -stdio" 2002-05-09 rsparapa * doc/announc.texi: ANNOUNCE: missed a reference to @essver{} 2002-05-08 Martin Maechler * lisp/ChangeLog, lisp/ess-trns.el: clean-region fix for new menu function 2002-05-07 Martin Maechler * doc/Makefile: better Makefile fixes; add "pdf" target * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/ess.info-4, doc/Makefile: Makefile fixes; ess.info* only in ../info * doc/requires.texi: @footnote properly * doc/help-s.texi: some @item s fixed --- do NOT use manual "-" for items! * doc/requires.texi: minor typo in footnote * doc/Makefile: run pdftex twice 2002-05-07 rsparapa * README: Updating README, ANNOUNCE for new version 2002-05-06 rmh * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/ess.info-4, doc/help-s.texi: @display * Makefile: add ess.info-4 2002-05-05 rsparapa * lisp/essa-sas.el: ESS[SAS]: ess-kermit-send incorporated into ess-sas-submit-sh kermit is almost as transparent as tramp and ange-ftp/EFS just execute ess-sas-submit like any other file 2002-05-05 rmh * lisp/ess-trns.el: install Thomas Baumann repair to ess-transcript-clean-region 2002-05-04 rsparapa * lisp/essa-sas.el: ESS[SAS]: ess-sas-submit-sh now works with local copies of kermit transfer files. just need some documentation. 2002-05-03 rsparapa * lisp/essa-sas.el: ESS[SAS]: ess-kermit-send now works although I haven't tested it completely. still need to fix ess-sas-submit-sh * lisp/essa-sas.el: ESS[SAS]: updated ess-kermit-get per the latest proposal; created a variable ess-kermit-prefix which is customize-able that can be used to specify the files that are recognized as local kermit copies of remote files. : is the default and the only other value that is recommended is ] also, created ess-kermit-remote-directory which is buffer local and the default is customize-able; currently $HOME when you run ess-kermit-get you can reset this variable and ess-kermit-get is now documented haven't fixed ess-kermit-send, but it should be trivial also note, that if you have just done an ess-kermit-send then ess-sas-submit-sh should work as long as we handle the cd command appropriately, i.e. "cd ." 2002-05-02 rmh * lisp/essd-els.el: change SAS to SAS-customize-alist * lisp/essd-els.el: add &optional proc-name to ess-remote 2002-05-01 rmh * lisp/essd-els.el: ess-remote First draft of what I consider the right way to do what we have previously called S+elsewhere and ESS-elsewhere. Please test this. Start a telnet or other protocol to a remote computer, start S or R (or maybe something else), M-x ess-remote, and tell it which dialect. You are now talking to an inferior-ess process. I added all the *-customize-alist to ess-select-alist-dialect. I added only sp6 to the dialects we prompt for, but all will be recognized. Rodney, dialect "sas" points to S+elsewhere-customize-alist rather than to SAS-customize-alist. If this works then ess-add-ess-process should be moved from essa-sas.el to ess-inf.el * lisp/essdsp6w.el, lisp/ess-site.el: tweaks to S+6 for S-Plus 6.1 for Windows beta 1 Delay time is now a user variable ess-S+6-startup-delay. No delay time for S+6-existing. We verify the version of S-Plus 6 and hide and make read-only the file we check. ESS now prompts for the correct directory. 2002-04-29 rmh * lisp/essdsp6w.el: S-Plus 6.1 beta for Windows works correctly with ESS. 6.0 didn't work correctly. I modified M-x S+6 to "Verify that `inferior-S+6-program-name' points to S-Plus 6. Start normally for S-Plus 6.1. Inform the user to start S-Plus 6.0 from the icon and than connect to it with `S+6-existing'. Give an error message if `inferior-S+6-program-name' doesn't point to S-Plus 6." S-Plus 6.1 starts up exceedingly slowly. I changed the delay time in M-x S+6-initiate to 60 seconds (double what we needed for M-x S+4). The is the delay needed for my 300MHz machine. I will make this a variable so the users can customize it for their speed. 2002-04-27 Martin Maechler * lisp/ess-trns.el: ..-DO-clean-region; added to Menu; see ChangeLog * lisp/essd-sp6.el: ess-setup-directory-fun etc from Jeff Mincy 2002-04-26 Martin Maechler * lisp/ess-cust.el: version number was lost -- bug in perl in Makefile ??? * doc/Makefile: ess.info -> ../info * lisp/ess-cust.el: new ess-directory-function and ess-history-directory stuff from Jeff Mincy * lisp/ess-site.el: wrap file-name-as-directory around ess-lisp-dir... [from Jeff Mincy] 2002-04-25 rossini * lisp/essd-r.el: we don't want the semantic stuff "live" yet! * lisp/essd-r.el, lisp/r.bnf, lisp/sas.bnf, lisp/semantic-r.el, lisp/semantic-sas.el: These files are the start of semantic.el support. Useful for using the CEDET tools (cedet.sourceforge.net), including ECB. Definitely worth a bit of time, but they get awfully confusing. 2002-04-21 rmh * lisp/essa-sas.el: simplify ess-sas-toggle-sas-log-mode for legibility, no change in what it does, see email for details. 2002-04-17 rmh * doc/ess.info-4, doc/Makefile: we now have ess.info-4 * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/ess.texi, doc/help-sas.texi, doc/help-s.texi, doc/inst_tar.texi, doc/Makefile: I fixed up help-sas, installed help-s, fixed up some style issues, cleaned up cross references to empty pages. All occurences of @essver MUST have braces @essver{} or else the remainder of the source line is treated as a comment. The doc/Makefile doesn't depend on the *.texi files. I attempted to change it to $(ESSINFODIR)/ess.info: *.texi but that doesn't work. So I used $(ESSINFODIR)/ess.info: ess.texi help-sas.texi inst_tar.texi The @display requires everything to be left justified. Otherwise the indentations are interpreted as hard spaces. Why are some lines in @display and others in @example? They look the same. This is inst_tar.texi, lines 29-36 @example gunzip ess-@essver{}.tar.gz tar vxf ess-@essver{}.tar @end example @display (or: @code{gunzip < ess-@essver{}.tar.gz | tar vxf -} ). (or using GNU tar: @code{tar zvxf ess-@essver{}.tar.gz}). @end display I added the control-function keys to help-sas.texi I fixed the help menu pointers to the empty operating system nodes. As long as I am doing info, I fixed up help-s.texi and installed it. It compiles correctly. It still needs to be read carefully to make sure it is coherent. I think the various doc/README* files now need to be regenerated from the appropriate *.texi files. 2002-04-16 rsparapa * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/Makefile: Updating docs for new version * README: Updating README, ANNOUNCE for new version * doc/readme.texi: Updating docs for new version * README: Updating README, ANNOUNCE for new version * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/ess.texi, doc/inst_tar.texi, doc/readme.texi: Updating docs for new version * README: Updating README, ANNOUNCE for new version * doc/inst_tar.texi: doc: added one @display that I forgot earlier 2002-04-16 rmh * doc/help-sas.texi: make last line less than 80 columns * doc/help-sas.texi: typos and introduce filetype-2 earlier * doc/help-s.texi, doc/readme.texi: @essver and s-plus 6 references 2002-04-16 rsparapa * Makefile: Makefile(xemacs-links): updated to reflect the new location of info files which makes a very logical connection in this case as well. * info/ess.info-1, info/ess.info, info/ess.info-2, info/ess.info-3, info/ess.info-4: info: need a directory with nothing else in it for a concise display and this seemed like a logical choice 2002-04-15 rsparapa * README: Updating README, ANNOUNCE for new version * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/help-sas.texi, doc/inst_tar.texi, VERSION: 5.1.21: more doc changes for release * ANNOUNCE, README: Updating README, ANNOUNCE for new version * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/ess.texi, doc/help-sas.texi, doc/inst_tar.texi, doc/Makefile, doc/readme.texi, lisp/ess-emcs.el, Makefile: 5.1.21: lots of changes for 5.1.21 release * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/getting.texi, doc/help-sas.texi, doc/requires.texi: doc: many changes addressing Rich's concerns (please see rsparapa discussion if you are interested). Before 5.1.21 can be released, we need to figure out how to get texinfo to generate the proper version number in all documents. 2002-04-12 rsparapa * doc/newfeat.texi, lisp/essl-sas.el: ESS[SAS]: corrected font-locking for in: operator * doc/announc.texi, doc/help-sas.texi, doc/newfeat.texi: doc: changes for 5.1.21 release * doc/ess.info, doc/ess.info-1, doc/ess.info-3, doc/help-sas.texi: doc: First attempt at creating info documentation for SAS. It is basically README.SAS with a few additions/corrections. Fine for this release, but could use alot of work. * lisp/essa-sas.el: ESS[SAS]: F12 (graph view) now defined for all locales 2002-04-10 rsparapa * lisp/essl-sas.el: ESS[SAS]: estimate and contrast keywords are now highlighted 2002-04-09 rsparapa * doc/announc.texi, doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3, doc/ess.texi, doc/help-s.texi: doc: first attempt at creating user manual with texinfo. I thought that I could just mimic help-s.texi. However, help-s.texi appears to be a basket case. It has no @menu statements. This made it impossible for me to makeinfo. So, instead I created help-sas.texi from scratch based on README.SAS. Note that the @menu commands will cause problems if they contain : so I've been using --. Also note that makeinfo appears to create working info pages, but texi2dvi does not create documents correctly. It's a shame since they are very nice, except for garbage which appears to be mangled next, previous, and up. This will cause us alot of problems if we want to maintain one source and produce .info, .html and .pdf (I actually only tried viewing with xdvi, but I suspect the problem exists with other formats, but I pray not). 2002-04-04 hornik * lisp/essddr.el: Add '\docType'. 2002-03-27 rossini * xemacs/README: files and build/export for xemacs package 2002-03-22 rsparapa * lisp/essa-sas.el, lisp/essl-sas.el: ESS[SAS]: added font-lock support for legacy COMMENT...; style comments 2002-03-19 rsparapa * lisp/essa-sas.el: ESS[SAS]: Somehow managed to have to two functionally identical versions of ess-sas-file-path; now only one. 2002-03-18 rsparapa * doc/requires.texi: doc: added "custom" link 2002-03-17 rsparapa * doc/requires.texi: doc: noted that certain geriatric versions of emacs are no longer supported 2002-03-12 rmh * lisp/essd-r.el, lisp/ess-inf.el: make C-c C-q work with R I checked it on windows with rw1041. Please verify the repair for unix. essd-inf.el I modified ess-quit to treat R as a special case because R asks the question "Save workspace image? [y/n/c]: ". essd-r.el I modified inferior-ess-exit-command and added inferior-ess-exit-prompt 2002-03-03 rmh * lisp/ess-iw32.el: ess-command on windows. fix last week only needed if buf is t. 2002-02-27 rmh * lisp/Makefile: add mouseme.el to lisp/Makefile 2002-02-27 rsparapa * lisp/essa-sas.el: ESS[SAS]: GSASFILE viewing for Emacs 21.1; I figured out how to view image files in Emacs 21.1. But, apparently it only works for Unix at the moment. You have to turn on the minor mode auto-image-file-mode. Then opening a .jpg or .jpeg file will display it in a buffer. It is supposed to work with .gif files, but it doesn't for me; so I'm only activating this feature for JPEG. 2002-02-26 rsparapa * lisp/ess-emcs.el: lisp(ess-emcs.el): added a function to display graphical images per the XEmacs documentation (for 21.4 and higher) * lisp/essa-sas.el: ESS[SAS]: viewing GSASFILEs; XEmacs supports .gif and .jpg natively. So, on XEmacs, those formats are displayed in an empty buffer. Otherwise, graphics are handled as before (with an image viewer program). 2002-02-26 rmh * lisp/ess-iw32.el: The repair of the C-c C-l problem reported by S.McClatchie and Bj”©Ìrn-Helge Mevik required a change to ess-command in ess-iw32.el. I believe the problem was limited to Windows machines and first appeared in 5.1.19 when I added ess-command to ess-iw32.el. The temporary buffer buf was not associated with an ESS process. Now it is. This is a consequence of how I created a windows version of ess-command. Part of loading a file is checking whether the new file would overwrite any old S language objects. This in turn requires running search() which uses ess-command. The temporary buffer created to hold the results of the search was not associated with an ESS process. Therefore when ess-command checks whether it is running under Windows, it finds instead that it is in the tbuffer which is not connected with an ESS process so it can't decide and quits. Since the original buffer that the user was trying to load was correctly connected to an ESS process, the user is justifiably confused. The repair is done at the most central point, at the ess-command for windows. 2002-02-25 rsparapa * lisp/Makefile: lisp Makefile: added ess-mous.el, but have not tested it 2002-02-20 rsparapa * lisp/essa-sas.el: ESS[SAS]: added a missing F11 key definition and new functionality for F12; pressing F12 searches for a GSASFILE definition, otherwise defaults to SAS program name and opens the image file in an image viewer application available on that OS (defaults to the CDE sdtimage for Unix and kodakimg for MS) 2002-02-20 rsparapa * Makefile: Makefile: Oops. We don't want tag to depend on rel. For tagging we have to rely on the user to do the appropriate thing. 2002-02-19 rossini * lisp/ess-cust.el: edited ess-source-directory doc string to include my favorite setting. It's amazing what you find when you start looking... 2002-02-19 rsparapa * Makefile: Makefile: after make rel goes flawlessly; do a make tag; you might want to wait a few days just to be sure since the tag must be unique and we don't want micro number escalation 2002-02-19 rsparapa * doc/currfeat.texi: Current Features: deleted SPSS 2002-02-13 rsparapa * Makefile: Makefile: Removed the JCGS paper from the distributions and fixed some problems. First of all, zip will update a .zip if it already exists. I found no way to change this behavior. Also, gzip will prompt you before overwriting a .gz. So, I just delete the files if they already exist with a test && rm || true. Also, tar would occasionally give me an error about symbolic links. So, I did a mv instead of an ln -s. * doc/ess.info-1: Updating docs for new version 2002-02-07 rsparapa * Makefile: Makefile: updated for new repository 2002-02-07 rsparapa * doc/ess.info-1, doc/ess.info, doc/ess.info-2, doc/ess.info-3: Updating docs for new version * ANNOUNCE, README: Updating README, ANNOUNCE for new version * lisp/essa-sas.el: ESS[SAS]: last change before 5.1.20; forgot to add C-TAB to the globalization for PC keys * doc/announc.texi, doc/credits.texi, doc/inst_cvs.texi, doc/inst_tar.texi, doc/mailing.texi, doc/newfeat.texi, doc/readme.texi, doc/stabilty.texi: Doc changes for pending ESS-5.1.20 release. 2002-01-31 rsparapa * lisp/essl-sas.el: ESS[SAS]: mult-line comments of the /* */ variety are always fontified correctly because they are handled by grammar rather than regular expressions. OTOH, * ; and %* ; comments have only worked in the past on single line comments. This is particularly annoying in SAS-log-mode since a single-line comment will often be flowed and not fontified correctly. There is no solution TIKO for the multiple line problem so I changed the regular expression to just fontify the first line which will at least allow you to recognize that a comment is beginning which is better than the way it was before. * lisp/essl-sas.el: ESS[SAS]: improved macro statements syntax highlighting, i.e. you have more freedom of placement than you do for SAS statements in general 2002-01-28 Martin Maechler * lisp/ess-help.el: doc string * lisp/ess-utils.el: comment * doc/newfeat.texi, lisp/ChangeLog, lisp/essddr.el: C-c C-f (finally!) 2002-01-24 rsparapa * lisp/essl-bug.el: ESS[BUGS]: working, but no elsewhere yet 2002-01-23 rsparapa * lisp/essl-bug.el: ESS[BUGS]: let's schedule elsewhere for the next release * lisp/essa-sas.el: ESS[SAS]: should be good to go for the next release; will test tomorrow * lisp/essa-sas.el: ESS[SAS]: a uniform interface for batch elsewhere may be a bit too ambitious at this time * lisp/essa-sas.el: ESS[SAS]: a few adjustments * lisp/essa-sas.el, lisp/ess-batch.el, lisp/essl-bug.el: ESS-elsewhere: moving towards a common codebase for batch ESS-elsewhere 2002-01-21 rmh * lisp/essdsp6w.el: change *ddeclient ESS* to '(ddeESS [S+6])' * lisp/essd-sp4.el: 1. change strings from *ddeclient ESS* to '(ddeESS [S+4])' 2. There is a weird error in this version that I don't understand. The environment variable PATH gets the value of MANPATH. I cannot figure out why. It is MANPATH for me on two machines so far, I don't know if that is related to my personal list of environment variables or something else. The fix I installed here works on my machine, I hope it works on others. I did attempt a generalization, but that didn't work for me. * lisp/ess-site.el: change default to (fset 'S 'S+6) etc. * lisp/ess-inf.el: remove commented out .in.ESS. This was replaced with options()$STERM yesterday. 2002-01-20 rmh * doc/ess.info, doc/ess.info-2, doc/ess.info-3: matches ess.texi from a few minutes ago. * doc/ess.info-1, doc/ess.texi, doc/inst_tar.texi, doc/newfeat.texi, lisp/ess-site.el: 1. In ess-site.el section 2.1 I made two changes. For the item a I want an opinion. a. I changed the default in this section from S-Plus 4,5,3 to S-Plus 6 for all three of those operating systems? Is there still a need to distinguish linux from other unixen? b. I added (fset 'Sqpe 'Sqpe+6) for Windows 2. I edited inst_tar.texi to match. 3. While in inst_tar.texi I added to the SAS discussion and fixed up the installation section to xref the Unix and MS sections to each other. 4. The current ess.texi and ess.info-2 have only the unix information. I deleted the whole installation section from ess.texi and replaced it with @include inst_cvs.texi 5. Tony, please fix up inst_cvs.texi once the anonymous cvs server in washington is working. 6. Rodney, please put Macintosh instructions into inst_cvs.texi. 7. I promised Terry Therneau that I would comment on indentation and fancy comments in the *info*. I did so in ess.texi. While there I added Rodney to the author list. 8. I added the STERM discussion to ess.texi. 9. I started to add the pager and editor discussion to ess.texi and realized that I can't until the "@node Edit buffer" section is completely rewritten. I may do this, but not tonight. This entire section describes the behavior pattern that we do not encourage. It describes the "S objects are real" philosophy deprecated in the README.S file. The revision can leave that in, but must have a section based on the "Source code is real" philosophy. * lisp/ess-cust.el, lisp/essd-els.el, lisp/essd-r.el, lisp/essd-s3.el, lisp/essd-s4.el, lisp/essd-sp3.el, lisp/essd-sp4.el, lisp/essd-sp5.el, lisp/essd-sp6.el, lisp/essdsp6w.el: I installed options("STERM") in the rest of the S language essd*.el files. I documented it in ess.texi and in newfeat.texi. STERM has the value "iESS" for all except S+4 and S+6 for Windows. In those two situations it has value "ddeESS". Suggestions for non-ESS values are in the ess.texi. I also installed options("editor") and options("pager"). Default definitions are in ess-cust.el Windows Unix Macintosh R-pager nil nil nil R-editor gnuclient emacsclient nil S-pager gnuclientw emacsclient nil S-editor gnuclient emacsclient nil When the ESS value is nil, then nothing gets sent to the S language process. ess-cust defcustomed all new variables essd-r revised from last week a. R-editor and R-pager b. defun R-transcript and fset r-transcript c. moved R-mode to follow R essd-s3 a. I changed two (setq-default ess-customize-alist S3-customize-alist) to use setq. b. moved S3-mode to follow S3 essd-s4 essd-sp3 essd-sp5 essd-sp6 essd-sp4 essdsp6w essd-els I made it match, but it needs rethinking. The right plan is something along the lines of a. telnet to the remote, b. start remote ess process, c. `ess-add-ess-process' 2002-01-18 rsparapa * lisp/essa-sas.el: ESS[SAS]: automated ess-sas-suffix-regexp and commented out ess-sas-smart-backtab 2002-01-17 rmh * lisp/tmpfile: I got a newer version of cygwin. Now PCL-CVS works from the office. I will check from home later. * lisp/tmpfile: test commit with PCL-CVS 2002-01-16 rmh * lisp/essa-sas.el, lisp/ess-mous.el: Tony, what is `ordinary-insertion-filter' in `essl-sta.el'. doing in the middle of `ess-command' in ess-inf.el? Rodney, please look at the cvs log ess-mous.el There are several questions and comments about ess-processes in the Jan 14 log that overlap what you are doing in essa-sas.el essa-sas.el: I finally understand why we have been having trouble communicating about S+elsewhere. `ess-add-ess-process' is a much simpler functional equivalent to the kludge in `S+elsewhere' and `ESS-elsewhere'. I revised the doc-string to make it more accurate and also simplified the function while I was there. ess-mous.el: I got rid of the end-of-line-problem I was having. 2002-01-16 rsparapa * lisp/essl-sas.el: ESS[SAS]: fixed bug in PROC syntax highlighting; updated doc-string for sas-program 2002-01-16 Martin Maechler * lisp/ChangeLog, lisp/ess-menu.el: improved imenu-expression from Stephen E 2002-01-16 rsparapa * lisp/essl-bug.el: ess-revert definition removed, call to ess-revert replaced by ess-revert-wisely * lisp/essa-sas.el: SAS on Mac now accepts ess-sas-submit-command-options like the others * lisp/essl-sas.el: sas-program defaults to sas except on Mac where it is the AppleScript equivalent * lisp/ess-utils.el: added ess-revert-wisely 2002-01-15 rsparapa * lisp/essa-sas.el: ESS[SAS]: tweak to local variable recognition in ess-sas-submit 2002-01-15 rmh * lisp/essl-sas.el: force SAS-listing-mode * lisp/essl-sas.el: force minor-mode * lisp/essa-sas.el, lisp/essl-sas.el: The ess-sas-toggle-log-sas-mode I posted yesterday didn't quite work. It go hung because the log and LOG options stepped on each other's toes. So I put it all into a single if statement, renamed it to ess-sas-toggle-sas-log-mode, made it refer to SAS-log-mode, and redefined SAS-log-mode to agree with current usage. 2002-01-15 Martin Maechler * lisp/ChangeLog, lisp/essl-s.el: add-log (Changelog) 2002-01-15 rmh * lisp/essa-sas.el: I finally read the latest essa-sas.el 1. I found ess-sas-toggle-sas-mode several months ago and started to use it. I like it. Now that I have read it closely I revised it and renamed it. ;;; this version of ess-sas-toggle-log-sas-mode ;;; 1. can be included in .emacs as ;;; (ess-sas-toggle-log-sas-mode t) ;;; because it doesn't need to find a .log file. ;;; 2. works if there is already an association for .log files. ;;; 3. restores the old association when SAS-mode is deleted. ;;; 4. works with the file it has, doesn't kill it and get a fresh copy. ;;; This matters for large log files and slow telephone connections. ;;; 5. I changed its name to be more descriptive. 2. How is kermit used by ESS? I see definititions for ess-kermit-command ess-kermit-get ess-kermit-send, but do not see any places they are used. I think these three items should be separated into a new ess-kermit.el rather than buried in essa-sas.el. Are they restricted to ess in any way? Might they be better as a new kermit.el? 3. You hardwired the `txt' extension into ess-sas-file-path. That should be sensitive to the value of ess-sas-suffix-1 and ess-sas-suffix-2. 4. ess-sas-submit-mac is the only ess-sas-submit* that does not have ess-sas-submit-command-options. I don't understand ess-sas-submit-command-options. Why is it buffer-local? I think it should depend on the host and the version of sas, not on the myfile.sas command file. Am I misunderstanding what is going on? 5. ess-revert-wisely in essa-sas.el and ess-revert in essl-bug.el are identical. This suggests that the ess-revert name should be used and moved to ess-utils.el * lisp/ChangeLog, lisp/ess-inf.el, lisp/ess-mode.el, lisp/ess-mous.el, lisp/ess-trns.el: ess-mous is ready for testing. ess-mous.el: put ess-mous on submenu of C-mouse-3 for ess-transript-mode, inferior-ess-mode, ess-mode This feature is still beta. ess-inf.el: ess-ddeclient-p. now depends on ess-local-process-name get-ess-process. I changed error message to say buffer is not associated with an ESS process (instead of saying that no ESS process is running) inferior-ess-mode-menu. Added "What is this? (beta)" ess-trns.el: ess-transcript-mode-menu. Added "What is this? (beta)" ess-mode.el: ess-mode-menu. Added "What is this? (beta)" ChangeLog: ess-mous changes. I tested it on windows for R, S+4, and Sqpe+4. I am having line-ending problems with Sqpe+4 but otherwise it looks ok. Please look at it. I found a problem which I am unsure how to solve. The variable `ess-current-process-name' in the `*R*' buffer can have the value "S+4". All I have to do is open an S+4 process and an R process, then C-c C-s the file.s buffer to S+4 and then switch to the R process. I think, but am willing to hear arguments against it, that anytime an inferior-ess-mode buffer is made current, then it should automatically reset `ess-current-process-name' to refer to itself. I'm not sure how to do that. This is explicitly not a buffer-local variable. Is there a hook that gets called when we change into a buffer, either by C-x b or by clicking? 2002-01-14 rsparapa * lisp/essa-sas.el: ESS[SAS]: if Local Variables are defined, a revert is necessary to update them if changed; anybody know a better way? 2002-01-14 rsparapa * lisp/essl-sas.el: ESS[SAS]: some minor changes/corrections to customize variables * lisp/essa-sas.el: ESS[SAS]: ess-sas-submit-command and ess-sas-submit-command-options are buffer-local with appropriate adjustments in the ess-sas-submit- methods 2002-01-11 rmh * lisp/essd-r.el: STERM only. Keep S-pager S-editor variables, but initialized to nil 2002-01-11 rsparapa * lisp/essa-sas.el: ess-revert-wisely: vc-revert-buffer acting strangely in Emacs 21.1; commented out until workaround is found * lisp/essa-sas.el: ESS-elsewhere: ess-kermit-get works and it is no longer ESS[SAS] specific other than the location of the defun 2002-01-11 rmh * lisp/ChangeLog, lisp/essd-r.el, lisp/ess-inf.el: STERM pager editor 2002-01-10 rmh * doc/newfeat.texi: add mouse-me 2002-01-10 rsparapa * lisp/essa-sas.el: ESS-elsewhere: ess-sas-submit really, really works now with ess-kermit-send 2002-01-10 Martin Maechler * lisp/ChangeLog, lisp/ess-help.el: ess-help-bogous-..buffer fix 2002-01-10 rsparapa * lisp/essa-sas.el: ESS-elsewhere: kermit transfer really works with ssh, but not telnet; YMMV 2002-01-10 rsparapa * lisp/essa-sas.el: ESS-elsewhere: ok, nearly working; more debugging of ess-kermit-get and ess-kermit-send * lisp/essa-sas.el: ESS-elsewhere: first working version that uses kermit as the transfer protocol 2002-01-09 rmh * lisp/essdsp6w.el: changed a stray sp4 to sp6 2002-01-09 rsparapa * lisp/essa-sas.el: ESS-elsewhere: debugging kermit method * lisp/essa-sas.el: ESS-elsewhere: re-defined ess-sas-submit-method to make it more useful; also re-defuned ess-sas-data-view * lisp/essa-sas.el: ESS-elsewhere: first attempt to get it to work with kermit when tramp is unavailable * lisp/essa-sas.el: ESS[SAS]: removed some debugging 2002-01-09 rmh * lisp/ess-mous.el: ess-mous keys * lisp/ess-cust.el, lisp/essd-sp4.el, lisp/essdsp6w.el, lisp/ess-site.el: splus6 for windows bug and embedded blanks in splus[46] 2002-01-08 rsparapa * lisp/essa-sas.el: ESS[SAS]: put (save-match-data) around searches in ess-sas-goto and ess-sas-data-view * lisp/essa-sas.el: ESS-elsewhere: tweaked dependencies of * lisp/essa-sas.el: ESS-elsewhere: changed dependencies from w32-dos-shell-semantics to ess-sas-submit-method; a convenient way to set ess-sas-submit-pre-command and ess-sas-submit-post-command; now using ess-microsoft-p rather than system-type as well 2002-01-08 rossini * ChangeLog: moved repository, checking CVS commit stuff. 2002-01-08 ess * lisp/essa-sas.el: ESS-elsewhere: adjusted ess-sas-submit-method, ess-sas-data-view-options, ess-sas-submit-post-command, ess-sas-submit-pre-command * lisp/essl-sas.el: ESS[SAS]: changed doc-string of sas-pre-run-hook * lisp/essl-sas.el: ESS[SAS]: changed doc-string of sas-program * lisp/essl-sas.el: ESS[SAS]: reverted default of sas-program to sas * lisp/essa-sas.el: ESS[SAS]: changed doc-string for ess-sas-tab-stop-alist * lisp/essa-sas.el: ESS[SAS]: changed doc-strings for ess-sas-goto and ess-sas-file * lisp/essa-sas.el: ESS[SAS]: 1 fix to ess-sas-file-goto; ESS-elsewhere for SAS batch is fully functional!; at least for me; YMMV * lisp/essa-sas.el: ESS[SAS]: 1 fix to ess-sas-file-path 2002-01-08 A.J. Rossini * moved repository to U Washington. 2001-08-10 ESS Maintainers * Version 5.1.19 released. 2000-10-17 ESS Maintainers * Version 5.1.18 released. 2000-10-17 A.J. Rossini * doc/ess.info, doc/ess.info-1, doc/ess.info-2, doc/ess.info-3: upgrade to 5.1.18 and rebuild doc * doc/readme.texi, doc/announc.texi: upgrade to 5.1.18 * doc/README.SPLUS4WIN, lisp/ess-cust.el: upgraded to 5.1.18 2000-10-11 maechler * lisp/ChangeLog, lisp/essl-s.el, doc/newfeat.texi: ess-smart-underscore 2000-10-10 A.J. Rossini * doc/inst_tar.texi: fixed documentation for XLispStat under windows. * doc/authors.texi: fixed Rodney's homepage pointer. * VERSION: upgrade version to 5.1.18 * doc/ess.info-1: Updating docs for new version [make dist] * ANNOUNCE, README: Updating README, ANNOUNCE for new version [make dist] * lisp/ChangeLog: small changes. This log is incomplete. * ChangeLog: updated change log. * doc/README.SPLUS4WIN, doc/ess.info, doc/ess.info-1: Misc changes * doc/inst_tar.texi: @enumerate can't have a @bullet. * doc/newfeat.texi: added 5.1.17 new features * doc/announc.texi: update for 5.1.17 * doc/README.SAS: Merged Rich's comments/changes. * doc/inst_tar.texi: added Rich H's README changes. * doc/mailing.texi: itemize the "flat text list". * doc/readme.texi: Small changes. * doc/authors.texi: added Rodney to authors list. * doc/stabilty.texi: comment re: some versions better than others. 2000-10-10 ESS Maintainers * Version 5.1.17 released. 2000-10-10 ESS Maintainers * Version 5.1.17 released. 2000-10-10 ESS Maintainers * Version 5.1.17 released. 2000-10-10 ESS Maintainers * Version 5.1.17 released. 2000-10-10 A.J. Rossini * doc/README.SPLUS4WIN, doc/ess.info, doc/ess.info-1: Misc changes * doc/inst_tar.texi: @enumerate can't have a @bullet. * doc/newfeat.texi: added 5.1.17 new features * doc/announc.texi: update for 5.1.17 * doc/README.SAS: Merged Rich's comments/changes. * doc/inst_tar.texi: added Rich H's README changes. * doc/mailing.texi: itemize the "flat text list". * doc/readme.texi: Small changes. * doc/authors.texi: added Rodney to authors list. * doc/stabilty.texi: comment re: some versions better than others. 2000-10-09 A.J. Rossini * lisp/ess-vars.el: Merged with changes in another location. 2000-10-09 maechler * lisp/ChangeLog, lisp/essl-s.el: new (ess-fix-miscellaneous) & (ess-toggle-underscore) 2000-10-08 A.J. Rossini * Makefile.in: autoconf precursor to Makefile 2000-10-07 A.J. Rossini * lisp/ess-vars.el: ess-vars is obsoleted. 2000-10-06 maechler * lisp/essl-s.el: 2 comments 2000-10-04 maechler * lisp/ChangeLog, lisp/ess-cust.el, lisp/ess-inf.el, lisp/ess-mode.el, lisp/ess-vars.el, lisp/essl-s.el: ess-S-assign and redefine "_" in ..MM-keys 2000-09-14 A.J. Rossini * lisp/ess-inf.el: ess-proc-name: need to ensure ALL concat args are strings (or at least, are not numbers). Thanks to WDMcCoy for reporting this. 2000-09-10 A.J. Rossini * DEBIAN/control, DEBIAN/md5sums, DEBIAN/postinst, DEBIAN/prerm: Copied from ESS 5.1.13 debian package * LDA/ex1.nw: Newer example * LDA/README: Initial Documentation 2000-09-05 ess * lisp/essa-sas.el: A few enhancements (ess-sleep-for/re-defining ess-sas-submit-command: see documentation) and bug-fixes for Win 95/NT. 2000-09-05 A.J. Rossini * lisp/ess-site.el: rearranged for coherency. * lisp/ess-menu.el: added C example. * lisp/ess-menu.el: 1st pass at S and XLS menus. Not integrated yet 2000-09-04 A.J. Rossini * lisp/ess-inf.el, lisp/essd-r.el, lisp/essd-sp3.el: Changes suggested by Ed Kademan * lisp/ess-inf.el: cleaning up docs and reunderstanding inferior-ess/ess-multi * lisp/ess-inf.el: comment on R handling for exit. 2000-09-03 A.J. Rossini * lisp/ess-inf.el: cleaning and correcting comments. Some ancient comments removed. * lisp/ess-comp.el: removed extraneous comments * lisp/ess-comp.el: now, the byte-compile fun is really removed. ess-message now has doc-string in "right" place. * lisp/ess-comp.el: cleaned up code. Removed extraneous comments, and the byte-compiler fun. * lisp/Makefile, lisp/ess-comp.el, lisp/ess-cust.el, lisp/ess-dump.el, lisp/ess-font-lock.el, lisp/ess-inf.el, lisp/ess-site.el, lisp/ess-vars.el, lisp/ess.el: refactoring code for cleaning, in process of debugging * lisp/19.29/README: backwards compatibility. * configure.in: merged with W3, added languages. Need to set languages. * aclocal.m4: new version from 4.0pre.46 * configure.in: somewhat complete. Needs redundant work later. * configure.in: Starting to do autoconf. Looking at W3 and R for examples. 2000-08-27 A.J. Rossini * lisp/ess-site.el: Documentation and cleaning. 2000-08-17 maechler * lisp/ChangeLog, lisp/essd-r.el: no spurious windows warning anymore 2000-08-09 maechler * lisp/ChangeLog, lisp/ess-help.el: help: inherit syntax-table ==> "h" in help : "default prompt"! 2000-07-13 A.J. Rossini * doc/newfeat.texi: set up for 5.1.15--17 * VERSION: upgraded version. * README: Updating README, ANNOUNCE for new version [make dist] * doc/ess.info-1: slightly new doc * lisp/ess-comp.el, lisp/ess-site.el: documentation and code cleanup * lisp/19.29/README: backwards compat doc 2000-07-13 ESS Maintainers * Version 5.1.16 released. 2000-06-30 ESS Maintainers * Version 5.1.14 released. 2000-06-30 A.J. Rossini * ChangeLog, VERSION, lisp/ess-inf.el, lisp/essd-arc.el, lisp/essd-vst.el: XLS fixes not quite right. No startfile if non existant * doc/ess.info-1: Updating docs for new version [make dist] * Makefile: wrong doc/docs. * Makefile: doc or docs? * ANNOUNCE, README: Updating README, ANNOUNCE for new version [make dist] * lisp/essa-sas.el, lisp/essd-els.el, lisp/essl-sas.el, lisp/essnt204.el: RMH/RS changes for SAS, ESS-elsewhere, NT Emacs 20.4 * lisp/ess-site.el: merged RMH/RS's changes for SAS. * VERSION: upgrade version * doc/README.Microsoft: not ready to generate this on the fly, yet. * doc/README.SPLUS4WIN, doc/announc.texi, doc/ess.info, doc/ess.info-1, doc/inst_tar.texi, doc/newfeat.texi, doc/readme.texi: docs updated to 5.1.14, cleaned up. * doc/newfeat.texi: added 5.1.14 stuff. * lisp/ess-cust.el: added ViSta/ARC support * lisp/ess-inf.el: added flags/checks for XLS systems. Might help for others * lisp/essd-arc.el: first version of ARC mode * lisp/Makefile: added essd-arc.el to targets. * lisp/ess-site.el: documentation. ViSta and ARC added. * lisp/essd-vst.el: now it actually might work. * lisp/ess-vars.el: added Arc, Vista. cleaned up code. a bit of documentation. 2000-06-30 maechler * etc/ess-s4.S, etc/ess-sp3.S: comments 1999-11-22 ess * VERSION, lisp/ess-vars.el: Updated to 5.1.11 1999-11-17 ess * lisp/essddr.el: 'bold isn't defined in XEmacs. Using reference-face instead of Rd-bold-face. 1999-11-16 ess * Makefile, etc/replace-version-numbers, lisp/ess-vars.el: Fixed small version update errors * ANNOUNCE, Makefile, README, doc/README.SPLUS4WIN, doc/announc.texi, doc/inst_tar.texi, doc/readme.texi, lisp/Makefile, lisp/ess-help.el, lisp/ess-site.el, lisp/essd-els.el, lisp/make-regexp.el, lisp/noweb-mode.el: updated version numbers * doc/newfeat.texi: cleaned up NTEmacs requirements. * lisp/essl-sta.el: added local variables for editing and indexing. * lisp/essl-sta.el: added Brendan's suggested function. * doc/inst_tar.texi: added change to doc, that "make" is done by "make install" * doc/ESS_intro.tex: Martin suggested a small fix. * doc/ESS_intro.tex: Another bit of documentation * doc/announc.texi: shortened header -- this is for announc, after all! * doc/announc.texi: moved license to the end, New Features to the beginning. * doc/newfeat.texi: added new features for 5.1.11. * doc/README.SPLUS4WIN: comment at the beginning about new reading material. * doc/README.SPLUS4WIN: added David Brahm's HELP INSTRUCTIONS for the license manager. * lisp/essl-sta.el: added make-regexp to ESS, and finished integrating Brendan's code. Need to test it now! * lisp/make-regexp.el: needed for Stata-mode extensions * lisp/essl-sta.el: added Brendan Halpin's corrections. * lisp/ess-inf.el: concat needs number-to-string conversion. * lisp/essd-omg.el: Omegahat fixes (for commandline flags) 1999-11-11 ess * lisp/noweb-mode.el: C-c C-n shouldn't be TeX-normalmode, since it is too close to submit-line with ESS! (overwrite). * lisp/essd-omg.el: Use prefix for setting Omegahat arguments. 1999-11-10 ess * lisp/ChangeLog: fixed up to now. * lisp/essl-omg.el: S- becomes OMG- Comments redone (to use //, ///, and //// for levels of indentation) OMG-syntax started, variable defined, needs to be fixed. * lisp/essd-omg.el: further Omegahat dialect changes (use OMG syntax, which needs fixing!) 1999-11-05 maechler * lisp/ChangeLog, lisp/ess.el, lisp/noweb-mode.el: functionp definition if necessary * lisp/noweb-mode.el: functionp for emacs-19.34 1999-11-04 ess * lisp/essd-els.el: fixed paren error. * ANNOUNCE, Makefile, README, VERSION, doc/README.SPLUS4WIN, doc/announc.texi, doc/ess.texi, doc/inst_tar.texi, doc/readme.texi, etc/replace-version-numbers, lisp/Makefile, lisp/ess-site.el, lisp/ess-vars.el, lisp/essd-sas.el: Changed version numbers * ChangeLog: 5.1.10 released. * doc/newfeat.texi: added 5.1.10 stuff. 1999-11-03 ess * doc/README.elsewhere, lisp/Makefile, lisp/ess-inf.el, lisp/ess-site.el, lisp/ess-vars.el, lisp/essd-sp5.el: Changes for ESS-elsewhere. * lisp/essd-els.el: added a generic ESS-elsewhere function. 1999-11-03 Anthony Rossini * fixed Stata again, added ESS-elsewhere. * Release 5.1.10 Tue Sep 14 17:00:19 1999 A.J. Rossini * Release 5.1.9 * added stata mode fixes, noweb/literate data analysis fixes. 1999-09-01 Martin Maechler * Finally upgraded version number to 5.1.9 (for pre-release) after fixing etc/replace-version-numbers 1999-07-23 Martin Maechler * Release 5.1.8 1999-04-05 A.J. Rossini * Makefile, doc/Makefile, doc/README.SPLUS4WIN, doc/inst_tar.texi, doc/readme.texi, doc/requires.texi, lisp/ess-site.el, lisp/ess-vars.el: text from 5.1.7 to 5.1.8 * lisp/ : -->>> lisp/ChangeLog <<<<< * ANNOUNCE, README, doc/ajr-talk.tex, doc/ess.texi, lisp/ChangeLog: doc updates * ChangeLog: *** empty log message *** * doc/README.SPLUS4WIN, doc/announc.texi, Makefile, doc/Makefile, doc/inst_tar.texi, doc/readme.texi, doc/requires.texi, lisp/ess-site.el, lisp/ess-vars.el: 5.1.6 to 5.1.7 changes for possible release * ChangeLog: more stuff. 1999-04-05 A.J. Rossini * doc/README.SPLUS4WIN, doc/announc.texi, Makefile, doc/Makefile, doc/inst_tar.texi, doc/readme.texi, doc/requires.texi, lisp/ess-site.el, lisp/ess-vars.el: 5.1.6 to 5.1.7 changes for possible release * ChangeLog: more stuff. Fri Apr 2 10:10:35 1999 A.J. Rossini * doc/getting.texi: fixed links. Wed Mar 31 14:08:39 1999 A.J. Rossini * Makefile (ESSVERSION): updated * Makefile (ESSVERSIONMSDOS): updated * Makefile (ESSVERSIONTAG): new variable, use it. * Makefile (dist): fixed to export both zip and gzip files. 1999-03-17 A.J. Rossini * ANNOUNCE, README, doc/Makefile, doc/README.SPLUS4WIN, doc/announc.texi, doc/inst_tar.texi, doc/readme.texi, doc/requires.texi: version number update * lisp/essd-r.el, Makefile, doc/README.Microsoft, doc/README.SPLUS4COMMAND, lisp/ess-site.el, lisp/ess-vars.el: RMH's changes 1999-03-17 maechler * doc/README: README explaining a bit about ./doc/ directory 1999-03-16 A.J. Rossini * Makefile: *** empty log message *** * Makefile: for dist target, use export, not co. * lisp/essd-r32-sh-dos.el, lisp/essd-sp4com.el: MS Dos stuff for R, S+4.x * ChangeLog, Makefile, doc/announc.texi, doc/inst_tar.texi, doc/readme.texi, doc/requires.texi, lisp/ChangeLog: Prep for 5.1.4 * lisp/essd-sp4.el, lisp/ess-iw32.el: RMH changes. * doc/README.SPLUS4COMMAND: New file * doc/README.SPLUS4WIN: added RMH's mods. * lisp/ess-site.el: Merged RMH's work. * lisp/ess-vars.el: incremented. * lisp/ess-inf.el: RMH's changes. 1999-03-16 maechler * lisp/ChangeLog: mini change "foobar.Sout-45" * lisp/ess-site.el: auto-mode-alist: "foobar.Sout-4.5" also turns on S-transcript-mode 1999-03-16 A.J. Rossini * lisp/essd-sp4.el, lisp/ess-iw32.el: RMH changes. * doc/README.SPLUS4COMMAND: New file * doc/README.SPLUS4WIN: added RMH's mods. * lisp/ess-site.el: Merged RMH's work. * lisp/ess-vars.el: incremented. * lisp/ess-inf.el: RMH's changes. 1999-03-16 maechler * lisp/ChangeLog: mini change "foobar.Sout-45" * lisp/ess-site.el: auto-mode-alist: "foobar.Sout-4.5" also turns on S-transcript-mode 1999-03-15 A.J. Rossini * lisp/ess-vars.el: RMH - 15Mar1999. Added inferior-S+4-editor-pager-command. * lisp/essd-r32.el: 15Mar1999 version. * lisp/essd-r.el: added `R-microsoft', which is the "right-thing" to do under Microsoft Windows 32-bit platforms. Need to merge this with `R'. 1999-03-09 maechler * lisp/ess-help.el: add `inferior-ess-help-command' to doc string 1999-03-08 A.J. Rossini * lisp/ess-inf.el: add stata to deal with input properly. 1999-03-05 A.J. Rossini * ANNOUNCE, ChangeLog, Makefile, README: top level stuff, sigh! * doc/announc.texi, doc/authors.texi, doc/bugs.texi, doc/inst_tar.texi, doc/requires.texi: Cleaned up text. * doc/requires.texi: cleaned/formatted up requirements * doc/currfeat.texi: pretty-printing. * lisp/essd-sta.el: new command for help: turn off more, and continue. * lisp/ess-help.el: stata hates ess-nuke-help-bs, since it (stata) is clean. * lisp/ess-inf.el: fixed command sender for stata. more like R than like XLS. * lisp/essl-sta.el: more help file corrections. * lisp/ess-inf.el: STA same as XLS/SAS. * lisp/essd-sta.el: ess-*-lastvalue-command needed to be fixed! * lisp/essl-sta.el: stat help regex is evil * lisp/essl-sta.el: whitespace cleanup. * lisp/essl-sta.el: double var defs. whoops! * lisp/essl-sta.el (ess-help-STA-sec-regex): fixed section header grabbing. * lisp/essd-sta.el: need to manually turn off paging, I think... * lisp/essl-sta.el: help section regex not quite right. * lisp/ess-help.el: Stata is like XLS and SAS wrt help. * lisp/essd-sta.el: fixed help facility. * lisp/essl-sta.el: added help section regexs * lisp/essd-sta.el: make descirption "same as" objects. * lisp/essd-sta.el: secondary prompt identical to primary prompt. * lisp/essd-sta.el: redid help so that no paging is present. * doc/ess.texi: cleared up the bug report section. * doc/bugrept.texi: combined multiple sources (ess.texi and README). * doc/credits.texi: moved content from ess.texi here, for piecemeal editing and reuse. * doc/ess.texi: added placeholders for README.OS files and README.StatPackage files, to be migrated here. * doc/announc.texi, doc/authors.texi, doc/bugrept.texi, doc/currfeat.texi, doc/getting.texi, doc/inst_cvs.texi, doc/inst_tar.texi, doc/license.texi, doc/mailing.texi, doc/newfeat.texi, doc/readme.texi, doc/requires.texi, doc/stabilty.texi: Migrating all documentation into texinfo format, including ../README and ../ANNOUNCE * doc/ess.texi: removed README, cleaning out duplicate texinfo code. * doc/ess.texi: moved README text into sub-texinfo files. (to be called by readme.texi and announc.texi for documentation construction). 1999-03-05 A.J. Rossini * doc/announc.texi, doc/authors.texi, doc/bugs.texi, doc/inst_tar.texi, doc/requires.texi: Cleaned up text. * doc/requires.texi: cleaned/formatted up requirements * doc/currfeat.texi: pretty-printing. * lisp/essd-sta.el: new command for help: turn off more, and continue. * lisp/ess-help.el: stata hates ess-nuke-help-bs, since it (stata) is clean. * lisp/ess-inf.el: fixed command sender for stata. more like R than like XLS. * lisp/essl-sta.el: more help file corrections. * lisp/ess-inf.el: STA same as XLS/SAS. * lisp/essd-sta.el: ess-*-lastvalue-command needed to be fixed! * lisp/essl-sta.el: stat help regex is evil * lisp/essl-sta.el: whitespace cleanup. * lisp/essl-sta.el: double var defs. whoops! * lisp/essl-sta.el (ess-help-STA-sec-regex): fixed section header grabbing. * lisp/essd-sta.el: need to manually turn off paging, I think... * lisp/essl-sta.el: help section regex not quite right. * lisp/ess-help.el: Stata is like XLS and SAS wrt help. * lisp/essd-sta.el: fixed help facility. * lisp/essl-sta.el: added help section regexs * lisp/essd-sta.el: make descirption "same as" objects. * lisp/essd-sta.el: secondary prompt identical to primary prompt. * lisp/essd-sta.el: redid help so that no paging is present. * doc/ess.texi: cleared up the bug report section. * doc/bugrept.texi: combined multiple sources (ess.texi and README). * doc/credits.texi: moved content from ess.texi here, for piecemeal editing and reuse. * doc/ess.texi: added placeholders for README.OS files and README.StatPackage files, to be migrated here. * doc/announc.texi, doc/authors.texi, doc/bugrept.texi, doc/currfeat.texi, doc/getting.texi, doc/inst_cvs.texi, doc/inst_tar.texi, doc/license.texi, doc/mailing.texi, doc/newfeat.texi, doc/readme.texi, doc/requires.texi, doc/stabilty.texi: Migrating all documentation into texinfo format, including ../README and ../ANNOUNCE * doc/ess.texi: removed README, cleaning out duplicate texinfo code. * doc/ess.texi: moved README text into sub-texinfo files. (to be called by readme.texi and announc.texi for documentation construction). 1999-03-04 A.J. Rossini * lisp/essd-sta.el: let stata have command line options just like R. * lisp/essd-sta.el: by default, provide login screen just like splus/r do. * lisp/essd-sta.el: fixed help. * lisp/essd-sta.el: added stata's prompt * lisp/ess-vars.el: added inferior stata program variable. * lisp/essd-sta.el: speling error, nil -> 'nil. * lisp/essl-sta.el: reversed variable alist ordering. * lisp/essd-sta.el: commented out ESS-help for Stata, for compiling, initial testing. * lisp/essl-sta.el: added STA-syntax-table, but it's wrong (for Splus). * lisp/essl-sta.el: moved STA-editing-alist to beginning. * lisp/essl-sta.el: added an STA-editing-alist variable, BUT it looks like Splus, :-(. Needs to be edited a bit! * doc/ess.texi: included README in texinfo file. Now, need to extract README from it. * lisp/essd-s_2b4.el: RMH's patches, Mar 3 1999 * lisp/essd-sp4.el: updated using RMH's patches. 1999-03-03 A.J. Rossini * lisp/ChangeLog: updated lisp directory changelog. * ChangeLog: updated changelog file. * lisp/Makefile: updated version information converted s+3 to sp3. * lisp/ess-vars.el: updated version information. * doc/README.Microsoft: Added ess-bugs.cmts to this file. * lisp/ess-iw32-load-file.el, lisp/essd-s+3.el, lisp/essd-s+4.el, lisp/essd-s+5.el, lisp/essd-s_2b4-msdos-existing.el, lisp/essd-s_2b4-msdos.el: Tidied up ess-iw32*.el files. * lisp/ess-iw32.el: copied all changes from ess-iw32-load-file.el here. * lisp/ess-iw32-load-file.el: fixed. * doc/README.Microsoft: Combination of 2 of RMH's text/help files. * lisp/essd-s_2b4.el: essd-s_2b4-msdos*.el were not needed. Contents moved into base file. * doc/README.SPLUS4WIN: Changed history of Splus 4.5 stuff; added new information for using Splus 4.5 and R under Windows NT. * doc/TODO: moved from mailbox to TODO list. * lisp/ess-iw32-load-file.el, lisp/ess-iw32.el, lisp/essd-r32.el, lisp/essd-s_2b4-msdos-existing.el, lisp/essd-s_2b4-msdos.el, lisp/essd-s_2b4.el, lisp/msdos.el: RMH's changes, up to March 2nd 1999-03-03 A.J. Rossini * lisp/Makefile: updated version information converted s+3 to sp3. * lisp/ess-vars.el: updated version information. * doc/README.Microsoft: Added ess-bugs.cmts to this file. * lisp/ess-iw32-load-file.el, lisp/essd-s+3.el, lisp/essd-s+4.el, lisp/essd-s+5.el, lisp/essd-s_2b4-msdos-existing.el, lisp/essd-s_2b4-msdos.el: Tidied up ess-iw32*.el files. * lisp/ess-iw32.el: copied all changes from ess-iw32-load-file.el here. * lisp/ess-iw32-load-file.el: fixed. * doc/README.Microsoft: Combination of 2 of RMH's text/help files. * lisp/essd-s_2b4.el: essd-s_2b4-msdos*.el were not needed. Contents moved into base file. * doc/README.SPLUS4WIN: Changed history of Splus 4.5 stuff; added new information for using Splus 4.5 and R under Windows NT. * doc/TODO: moved from mailbox to TODO list. * lisp/ess-iw32-load-file.el, lisp/ess-iw32.el, lisp/essd-r32.el, lisp/essd-s_2b4-msdos-existing.el, lisp/essd-s_2b4-msdos.el, lisp/essd-s_2b4.el, lisp/msdos.el: RMH's changes, up to March 2nd 1999-02-24 A.J. Rossini * lisp/ess-iw32.el: temp val left in distribution. whoops (RMH). 1999-02-22 A.J. Rossini * lisp/essd-els.el, lisp/essd-s3.el, lisp/essd-s4.el, lisp/essd-sta.el, lisp/ess-site.el, lisp/essd-sp4.el, lisp/essd-sp5.el, lisp/essd-sp3.el: Removed s+# to sp# for S-PLUS commands 1999-02-12 Martin Maechler * lisp/Makefile: emacs, not "19.34" 1999-02-11 Martin Maechler * doc/README.SPLUS4WIN: added pointer to NTEmacs. * README, ANNOUNCE: corrected documentation for R, added pointer to NTEmacs 1999-02-10 Martin Maechler * etc/other/Tags/Lubinsky-S-tags/desc: reformated material. * README: set up for 5.1.2 release * Makefile: Set up for 5.1.2 release * ANNOUNCE: set up for 5.1.2 release * doc/rmh-essi121098-msw32.tex: rmh-essi121098-msw32.tex is obsolete. * lisp/essd-sas.el: added RMH's new fixes for the 5.1.2 version. * doc/README.S: RMH's documentation additions for Splus 4.5 * doc/README.SAS: RMH's doc additions for 5.1.2 * doc/README.SPLUS4WIN: Includes RMH's changes for Splus 4.5 documentation * etc/other/Tags/README: cleaned text. * ANNOUNCE, README: updating for 5.1.2 1999-02-02 Martin Maechler * lisp/ess-inf.el: (last commit was with unsaved file) * lisp/ChangeLog, lisp/ess-inf.el: fix regex for "help(..);" also work for "?" with R-input-sender 1999-01-13 Martin Maechler * lisp/Makefile: added ess-debug essd-s+4 ess-iw32 * lisp/ess-iw32.el: RMH`s workaround for ess-inf.el ess-setq-values-default (instead of ..-local) 1999-01-12 Martin Maechler * lisp/ess-inf.el: still "-default", not "local" * lisp/ess-inf.el, lisp/ess.el: more dribble output * lisp/ess.el: add dribble-info about comint-process-echoes 1999-01-11 Martin Maechler * lisp/ess-site.el: minor comments only * lisp/essd-sq4.el: removed [RMH] * lisp/ess-site.el: RMH changes (Dec 28) * lisp/ess-trns.el: RMH added some ess-inf..-prompt.. * lisp/ess-vars.el: RMH added S+4 & dde (& removed some "ess-external") * lisp/essd-els.el: RMH added S+elsewhere-mode * lisp/ess-iw32.el, lisp/essd-s+4.el: new from Rich Dec 28 * lisp/ess-inf.el: 2 lines for S+4 1999-01-04 Martin Maechler * lisp/essddr.el: R CMD Rd2txt 1998-12-18 A.J. Rossini * ANNOUNCE, README: Updating Announce/Readme. Need to merge announce to readme, and just subset out the relevant section for Announce. 1998-12-17 Kurt Hornik * lisp/ess-vars.el: Match R `require(' in ess-change-sp-regexp. * lisp/Makefile: Add `essd-els.el' to SOURCES. 1998-12-16 Martin Maechler * ChangeLog: ess.texi * doc/ess.texi: 5.0 -> 5.1.x * doc/ess.texi: MM: (CVS) Date also for info * doc/ess.texi: MM: (CVS) Date added * doc/ess.texi: added '$Date: 2004/07/08 15:03:06 $'; 5.0 -> 5.1.x Mon Dec 14 20:23:55 1998 A.J. Rossini * README: added 5.1.x comments, updated to current state of affairs. * etc/other/Tags/README: stuff for emacs text mode for editing. * etc/other/Tags/README: Information on tagging for Emacs/VI and ESS. * etc/other/Tags/Lubinsky-S-tags/README, etc/other/Tags/Lubinsky-S-tags/desc, etc/other/Tags/Lubinsky-S-tags/etags.c: Modifications to gnu tag programs for S * lisp/ess-mode.el: fixed copyright and header information * lisp/ess-site.el: commented out SHOME definition. Fri Dec 11 19:51:18 1998 A.J. Rossini * lisp/ess-vars.el: fixed copyright, rossini's email address. * lisp/ess-iw32.el: fixed rossini's email address, headers, copyright. * lisp/essd-els.el, lisp/essd-s+4.el: fixed rossini's email address. * lisp/essd-sq4.el: fixed copyright and header attributions. * lisp/essd-els.el: fixed header files and copyright. * lisp/essd-s+4.el: added changes to copyright and header docs. * etc/other/S-spread/gradexmp.s, etc/other/S-spread/sprd-emc.s, etc/other/S-spread/sprd-grd.s, etc/other/S-spread/sprd-int.el, etc/other/S-spread/sprd-spr.s, etc/other/S-spread/sprd-txt.s, etc/other/S-spread/sprd3d.how, etc/other/S-spread/README, etc/other/S-spread/S-spread.el, etc/other/S-spread/asaprc.ps: RMH's S-spread, Oct 1997 version * doc/rmh-essi121098-msw32.tex: Adding Rich's documentation for Windows stuff. * lisp/ess-vars.el: Merged RMH's changes. * lisp/ess-iw32.el, lisp/essd-els.el, lisp/essd-s+4.el, lisp/essd-sq4.el: New files for ESS for Splus/MSW/NT/98/95 New files for remote-ESS on Unix. * lisp/ess-site.el: Added RMH's changes for Microsoft Windows and Splus. Mon Nov 30 17:37:57 1998 Kurt Hornik * lisp/Makefile: Add essd-s+5.el to SOURCES (as it gets required in ess-site). Mon Nov 23 20:03:17 1998 A.J. Rossini * lisp/ChangeLog: *** empty log message *** Fri Nov 20 20:57:33 1998 A.J. Rossini * lisp/ess-vars.el: ess-help-w3-url-prefix points to pyrite. * lisp/ess-vars.el: removed spurrious comment about generic function, in front of a variable. * lisp/essd-s+5.el: trimmed out old S4 stuff. Mon Nov 16 17:29:25 1998 Martin Maechler * lisp/ess-inf.el: do not need comint echo anymore.. Sat Nov 14 00:23:19 1998 A.J. Rossini * Makefile, lisp/ChangeLog, ChangeLog: whitespace editing. * doc/Makefile: added info target. removed spurrious ess.info/ess.texi target. Fri Nov 13 23:47:27 1998 A.J. Rossini * Makefile: added comment re: export vs checkout for "dist" target. * lisp/ess-site.el: added sample entry for S+5. * lisp/ChangeLog: *** empty log message *** * lisp/ess-site.el: added suffix for StatSci's script files. Thu Nov 12 17:27:30 1998 Martin Maechler * lisp/essd-r.el, lisp/essd-s+3.el, lisp/essd-s+5.el, lisp/essd-s3.el: newline in dribble buff * lisp/ess-inf.el: more details in prompt for ess-get-dir; more dribble; WHITE SPACE * lisp/ess.el: slightly better dribble output * lisp/essd-s4.el: drop doubled comments * lisp/ess-vars.el: . Wed Nov 11 15:54:34 1998 Martin Maechler * Makefile: -X CVS * lisp/essd-s+5.el: omit .Smode() extras; new "S+" instead of "S+3" * lisp/essl-s.el: new "S+" instead of "S+3" * lisp/ess-inf.el: comint-echo : OFF for S+5 * lisp/essd-s3.el: comments only * lisp/essd-s+3.el: comment out ess-mode-edit * lisp/Makefile, lisp/ess-vars.el: new version numbers * lisp/essd-s+5.el: several more s4 -> s+5 changes; still not ok * lisp/essd-s+3.el: transpose to defs * lisp/ess-vars.el: require s+5 Tue Nov 10 17:45:11 1998 Martin Maechler * lisp/ess-site.el: s+5 is now distributed * lisp/essd-s+5.el: provide typo fixed Mon Nov 9 23:50:26 1998 A.J. Rossini * ChangeLog: *** empty log message *** * Makefile: uses scp to put the tar file where it belongs. * Makefile, lisp/ChangeLog, lisp/Makefile, lisp/ess-site.el: New material for Makefiles * lisp/essl-sta.el: removed possible problems from stata mode. * ChangeLog: *** empty log message *** * Makefile: added new top-level dist target. * lisp/essd-s+5.el: This is for Splus5, based on S4. * lisp/ess-web.nw: last change, sigh. * lisp/ess-web.nw: emacs lisp mode is wrong, sigh. * lisp/ess-web.nw: Contains interface code between Noweb and ESS * lisp/ChangeLog: added stata-dialect/lang to makefile * lisp/Makefile: added Stata stuff. Thu Sep 24 23:32:14 1998 A.J. Rossini * lisp/ChangeLog: more stuff. * lisp/essd-sta.el: should be sta, not stt * lisp/ChangeLog: update for ess-site. * lisp/ess-site.el: added stata mode, which is now STA (ref: Thomas Lumley) Thu Sep 17 09:11:51 1998 Martin Maechler * lisp/ChangeLog, lisp/ess-utils.el: several small things Fri Sep 11 14:25:59 1998 Martin Maechler * lisp/ChangeLog: . * lisp/Makefile, lisp/ess-inf.el, lisp/ess-mode.el, lisp/ess-utils.el, lisp/ess.el: Adaptions to new ess-utils * lisp/essl-s.el: LOTS in "pretty edit source" * lisp/essd-r.el: new function (R-fix-T-F) Thu Sep 10 06:15:55 1998 Kurt Hornik * lisp/essddr.el: Change old `ess-doc' to `essddr'. Expand Rd-mode-abbrev-table (abbrevs). Change Rd-indent-level default to 4. Add a preliminary Rd-mode menu. Add a preliminary Rd-submit-bug-report(). * lisp/ess-vars.el: Change ess-mode-font-lock-keyword so that assignment function declarations are also fontified correctly (hopefully ...). * doc/Makefile: Get rid of old LISPDIR code. * Makefile: Use `$(MAKE)' instead of `make'. Wed Sep 9 23:49:12 1998 A.J. Rossini * lisp/ChangeLog: new stuff. * lisp/essd-sta.el: modified for stata commands. What is quit? * lisp/essl-sta.el: Small mods. * lisp/essd-sta.el: Added first pass at a stata file. * lisp/Makefile: BATCHFLAGS should be --no-init-file, not --no-init-fil Wed Sep 9 08:45:26 1998 Martin Maechler * lisp/essl-s.el: minor (save-recursion..) -- Committing from Shell to see permissions Tue Sep 8 21:18:33 1998 Martin Maechler * lisp/essl-s.el: more things for (ess-dump-to-src), (ess-fix-comments),.... ess-MM-fix-src * lisp/ess-mode.el: add optional quiet argument to (set-ess-style) * lisp/ess-mode.el: only white space * lisp/ChangeLog: .. * lisp/essl-s.el: added "&optional dont-ask" argument to ess-dump-to-src, ess-fix-comments,.... ess-MM-fix-src Mon Sep 7 16:27:37 1998 Martin Maechler * lisp/ChangeLog: .. * lisp/essl-s.el: 4 digit year in ess-time-string! * doc/README.SAS: Added paragraph about ess-sas-sh / PATH problems at very end -- for RMH Wed Aug 26 12:18:54 1998 Martin Maechler * lisp/ChangeLog, lisp/essl-s.el: font-lock: "." as word constituent Mon Aug 24 12:50:45 1998 Martin Maechler * ANNOUNCE, README, doc/ess.texi: stat.ethz short for www.stat.math.ethz Thu Aug 20 06:48:48 1998 Martin Maechler * lisp/ChangeLog: .. * lisp/essddr.el: Expanded Rd-section-names and Rd-keywords [following Kurt's suggestion] Tue Aug 18 08:44:54 1998 Martin Maechler * lisp/essd-s+3.el, lisp/essd-r.el, lisp/ChangeLog: "--no-readline" for R; S+3-dialect-name for S-plus Fri Aug 14 16:32:23 1998 Martin Maechler * lisp/ess-vars.el, lisp/Makefile: calling new version "pre5.1" * lisp/essl-s.el: "ease:" replaced by "ess-"; fixed some comments Mon Apr 27 07:53:02 1998 Martin Maechler * lisp/essl-s.el: improved ess-num-var-round Fri Apr 17 12:29:46 1998 Martin Maechler * lisp/essd-sas.el: ../etc/ is place for sas-sh-command * etc/function-outline.S, lisp/essl-s.el: function-outline-file now in ../etc/ * Makefile, doc/Makefile, lisp/Makefile: Makefiles separated; new for ./doc Mon Apr 6 20:35:04 1998 A.J. Rossini * lisp/ChangeLog: Storing updates. * lisp/ess-comp.el, lisp/ess-inf.el, lisp/ess-site.el, lisp/ess-vars.el: See ChangeLog for more details. Not tagged. Tue Dec 16 00:17:44 1997 A.J. Rossini * lisp/ChangeLog: *** empty log message *** * lisp/essd-s4.el (S4-mode): New function, use it. Wed Dec 10 15:36:29 1997 A.J. Rossini * lisp/ChangeLog, lisp/essd-xls.el: XLS-mode is now the mode-name symbol. (instead of ess-mode). This is required for noweb-mode to work nicely. ChangeLog documented to reflect this fact. Tue Dec 9 22:55:40 1997 A.J. Rossini * lisp/ChangeLog: *** empty log message *** * lisp/essd-r.el: removed non-necessary autoload for a non-existant function (was intended for start-args, but never was written or used). * lisp/essl-sta.el: Changed essl-sta.el to not use stat.el in the documentation comments. * lisp/ChangeLog: *** empty log message *** * lisp/essddr.el: one too many parens. * lisp/essddr.el: added commented out face. DB's error doesn't exist for me, though. Fri Dec 5 15:13:59 1997 A.J. Rossini * lisp/ChangeLog: *** empty log message *** * lisp/ChangeLog: ChangeLog file install * lisp/ess-site.el: added comments about Emacs 20.2 errors. Fri Dec 5 14:46:38 1997 ess * Makefile: Added top-level Makefile. Needs definitions, though. * etc/ess-s+3.S, etc/ess-s4.S: Initial revision 1998-12-14 A.J. Rossini * README : updated to 5.1.x Tue Dec 2 08:49:07 1997 Anthony Rossini * Makefile: info isn't a valid target, and cleaned up doc targets. (KH). Mon Dec 1 16:55:17 1997 Anthony Rossini * ess.el: removed blank lines. Mon Dec 1 16:51:46 1997 Anthony Rossini * ess.texi: small edit. Mon Dec 1 16:48:14 1997 Anthony Rossini * ess.texi: changed wording around ess-plain-first-buffername (RMH). Mon Dec 1 16:42:47 1997 Anthony Rossini * Makefile: new branch (5.1.1.1). Mon Dec 1 16:36:13 1997 Anthony Rossini * Makefile: Batchflags are user serviceable. Mon Dec 1 10:59:29 1997 Anthony Rossini * RELEASED: version 5.0. Mon Dec 1 10:45:55 1997 Anthony Rossini * README.SAS: added noise about ess-sas-sh-command stupidity that AJR has personally experienced. Sun Nov 30 13:44:55 1997 Anthony Rossini * Makefile: comments for indexing. Sun Nov 30 13:41:00 1997 Anthony Rossini * ess.texi: more fixes. Many more to go. Sun Nov 30 12:38:26 1997 Anthony Rossini * README.SAS: added more information. Sun Nov 30 12:15:19 1997 Anthony Rossini * essl-lsp.el: small typo in comments. Sun Nov 30 12:14:33 1997 Anthony Rossini * Makefile: added revision, added other changes. Sun Nov 30 12:12:26 1997 Anthony Rossini * README.SAS: new material on autoexec.sas added. Sun Nov 30 12:09:30 1997 Anthony Rossini * essl-s.el (S-editing-alist): need indent-line-function defined. (RMH). Sun Nov 30 12:08:24 1997 Anthony Rossini * essl-sas.el: removed sas-indent-region. Sun Nov 30 12:07:05 1997 Anthony Rossini * essl-sas.el (SAS-editing-alist): need indent-line-function (RMH). Sun Nov 30 12:06:00 1997 Anthony Rossini * ess-mode.el (ess-mode): fixed doc string. (RMH). Sun Nov 30 12:03:34 1997 Anthony Rossini * essd-sas.el: useless comments removed. Sun Nov 30 12:03:10 1997 Anthony Rossini * essd-sas.el: useless comments removed. (RMH). Sun Nov 30 12:02:58 1997 Anthony Rossini * essd-sas.el (inferior-SAS-args-temp): docstring, explaining stupidity of this variable Sun Nov 30 12:00:24 1997 Anthony Rossini * ess-sas-sh-command: better shell scripting (RMH). Wed Nov 26 16:33:10 1997 Anthony Rossini * RELEASED: 5.0-gettingcloser. Wed Nov 26 16:10:02 1997 Anthony Rossini * Makefile (dist): do the right thing w/ README. Wed Nov 26 16:05:20 1997 Anthony Rossini * ess-sas-sh-command: more information. cleaned up for current essd-sas.el arg passing. Wed Nov 26 15:51:04 1997 Anthony Rossini * essd-sas.el: modified args to try to have "one set" for SAS process (2nd is for redirect). Wed Nov 26 15:43:10 1997 Anthony Rossini * essd-sas.el: renamed and reordered inferior-SAS-args... Wed Nov 26 14:29:40 1997 Anthony Rossini * ess-sas-sh-command: added more documentation on I/O. Wed Nov 26 14:01:23 1997 Anthony Rossini * ess-inf.el: cleaned up comments. Wed Nov 26 13:58:42 1997 Anthony Rossini * ess-sas-sh-command: cleaned up comments. Wed Nov 26 11:01:36 1997 Anthony Rossini * essddr.el: switch-to-S to switch-to-ESS. Wed Nov 26 11:01:07 1997 Anthony Rossini * essddr.el (Rd-mode-map): switch-to-S is now switch-to-ESS. Wed Nov 26 11:00:06 1997 Anthony Rossini * ess-mode.el (ess-mode): added "indent-region" binding to doc-string. Wed Nov 26 10:52:11 1997 Anthony Rossini * ess-trns.el (ess-transcript-mode-map): added 2 lines for consistency. (RMH) Wed Nov 26 10:51:29 1997 Anthony Rossini * ess-trns.el: ispell-checked. File name / header name mismatch corrected. (AJR) Wed Nov 26 10:49:58 1997 Anthony Rossini * ess-inf.el: ispell checked, typos fixed (RMH/AJR). Wed Nov 26 10:42:58 1997 Anthony Rossini * essl-sas.el (SAS-editing-alist): function definitions are useless. Remove. Wed Nov 26 10:37:44 1997 Anthony Rossini * essl-s.el (S-editing-alist): removed function definitions. They don't work. Wed Nov 26 10:29:00 1997 Anthony Rossini * ess-site.el: ispell-checked (AJR/RMH) Tue Nov 25 15:37:37 1997 Anthony Rossini * Doc/TODO: Real dump suggested programming fix. * README.S: Real dump user correction. Tue Nov 25 15:37:00 1997 Anthony Rossini * README.S : Real Dump user correction Tue Nov 25 13:06:38 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode): Make sure that silly moves like "ess-dialect=S" are not cause for a bailout. (AJR). Tue Nov 25 12:38:21 1997 Anthony Rossini * README.S: changes for font-lock "Dump" problem. (RMH) Tue Nov 25 12:36:48 1997 Anthony Rossini * Makefile: chmod 444 ess.info* ess.dvi on release (RMH) Tue Nov 25 08:53:54 1997 Anthony Rossini * RELEASED: 5.0-honestlylastpre. * README.S: added comment re: \" and fontlock. Tue Nov 25 08:50:56 1997 Anthony Rossini * Doc/TODO: removed SAS tabbing, added S dumping (RMH). Tue Nov 25 08:49:18 1997 Anthony Rossini * essd-sas.el (SAS-mode): construct a sas-mode-local-map, from ess-mode-map, for modifying the tab key. Tue Nov 25 08:24:42 1997 Anthony Rossini * ess-mode.el (ess-mode): removed white space, spurrious comment. Mon Nov 24 12:14:38 1997 Anthony Rossini * Doc/TODO: SAS indent fixes. Mon Nov 24 11:33:00 1997 Anthony Rossini * README: fixed Kurt's address. Mon Nov 24 11:32:13 1997 Anthony Rossini * ess-mode.el: put back functions; see 10:48 change. Mon Nov 24 10:58:12 1997 Anthony Rossini * essl-s.el: ess to S. Mon Nov 24 10:50:51 1997 Anthony Rossini * essl-s.el: inadvertent placement of ess-indent-line function. Mon Nov 24 10:50:19 1997 Anthony Rossini * essl-s.el (S-editing-alist): inadvertent placement of indent-line-function. Mon Nov 24 10:48:19 1997 Anthony Rossini * ess-mode.el: commented out some language specific functions. Moved to essl-s.el Mon Nov 24 10:45:21 1997 Anthony Rossini * essl-s.el: new functions; S for ESS. Use them. Mon Nov 24 10:43:36 1997 Anthony Rossini * essl-s.el (S-comment-indent): * essl-s.el (S-indent-line): * essl-s.el (S-calculate-indent): new functions; used to be ess-*. Mon Nov 24 10:39:41 1997 Anthony Rossini * essl-sas.el: removed some lisp-isms. Mon Nov 24 10:36:48 1997 Anthony Rossini * essl-sas.el (sas-indent-region): New function. Use it. Mon Nov 24 10:25:07 1997 Anthony Rossini * essd-s4.el (S4-customize-alist): ess-object-name-db-file is "ess-s4-namedb.el". (RMH) Mon Nov 24 10:18:42 1997 Anthony Rossini * README.SAS: 2 typos (RMH). Mon Nov 24 10:17:46 1997 Anthony Rossini * ess-mode.el: added ess-quit autoload. Mon Nov 24 10:16:40 1997 Anthony Rossini * ess-inf.el (ess-quit): since now possible to call from ess-mode, make sure that we are connected to a process. Mon Nov 24 10:01:33 1997 Anthony Rossini * ess-vars.el (ess-mode-font-lock-keywords): finish off line. Mon Nov 24 09:59:39 1997 Anthony Rossini * Doc/TODO: quotes need fixing (RMH). Mon Nov 24 09:55:43 1997 Anthony Rossini * ess-mode.el (ess-mode-map): added ess-quit. (RMH). Mon Nov 24 09:48:15 1997 Anthony Rossini * essd-sas.el (SAS-customize-alist): inferior-ess-exit-command should be `endsas;\n'. (RMH). Sat Nov 22 19:16:40 1997 Anthony Rossini * Doc/README-19.28: new version of file (RMH). Fri Nov 21 17:37:26 1997 Anthony Rossini * Doc/TODO: added 2 more from RMH, with comments. Fri Nov 21 17:31:50 1997 Anthony Rossini * ess-site.el: fixed comments to reflect reality (RMH). Fri Nov 21 17:05:05 1997 Anthony Rossini * ess-trns.el: ess-mode -> ESS. (RMH) ess-mode-map -> ess-transcript-mode-map Fri Nov 21 17:02:45 1997 Anthony Rossini * Makefile (DISTSCRIPTS): commented out. (RMH) * Makefile (dist-doc): commented out. Will do by hand for 5.0. (RMH) * Makefile: Added comments for structure of Makefile. (RMH) Fri Nov 21 10:26:53 1997 Anthony Rossini * Doc/TODO: incr version. Fri Nov 21 10:26:25 1997 Anthony Rossini * Doc/TODO: added dir directions for info. Fri Nov 21 10:22:17 1997 Anthony Rossini * Doc/rmh-talk.tex: removed trailing \\. Fri Nov 21 10:19:50 1997 Anthony Rossini * Makefile (dist): ess.dvi and ess.info need to be up to date. Thu Nov 20 18:38:51 1997 Anthony Rossini * essl-sta.el: * essl-sas.el: * essl-s.el: * essl-lsp.el: * essddr.el: * essd-xls.el: * essd-vst.el: * essd-sas.el: * essd-s4.el: * essd-s3.el: * essd-s+3.el: incr version. * essd-r.el: incr version, comments. * ess.texi: small edits, incr version * ess.el: ess-mode is ESS. incr version * ess-vars.el: incr version, added comments. Thu Nov 20 18:21:01 1997 Anthony Rossini * ess-site.el: part of ESS; comments. Thu Nov 20 18:20:12 1997 Anthony Rossini * Makefile: incr, edits. Thu Nov 20 18:19:24 1997 Anthony Rossini * Makefile: errors. Thu Nov 20 18:17:13 1997 Anthony Rossini * COPYING: trying. Thu Nov 20 18:15:01 1997 Anthony Rossini * ess-trns.el: added copyright, incr version. Thu Nov 20 18:12:06 1997 Anthony Rossini * ess-mode.el: edited copyright. incr version. Thu Nov 20 18:11:02 1997 Anthony Rossini * README: removed silly university locations. incr version. Thu Nov 20 18:09:00 1997 Anthony Rossini * ess-inf.el: added copyright, edited comments, incr version. Thu Nov 20 18:07:51 1997 Anthony Rossini * ess-help.el: edited comments, incr version. Thu Nov 20 18:03:09 1997 Anthony Rossini * ess-debug.el: edit, end, upgraded version. Thu Nov 20 18:00:55 1997 Anthony Rossini * ess-comp.el: removed log file, edited comments, upgrade to 4. Thu Nov 20 16:41:51 1997 Anthony Rossini * RELEASED: 5.0-verylastpre. * ess-inf.el: fixed menus. Thu Nov 20 16:40:29 1997 Anthony Rossini * ess-trns.el: fixed menus. Thu Nov 20 16:38:35 1997 Anthony Rossini * ess-mode.el: formatting. extra ). Thu Nov 20 16:37:23 1997 Anthony Rossini * ess-mode.el: cleaned up menus. removed useless comments. Thu Nov 20 16:29:15 1997 Anthony Rossini * ess-mode.el: fixed goto-info stuff. Thu Nov 20 16:13:43 1997 Anthony Rossini * ess-help.el (ess-goto-info): ess isn't ess-mode. Split window, not other-window. Thu Nov 20 10:04:28 1997 Anthony Rossini * README: added comments on help file editing. Thu Nov 20 10:01:47 1997 Anthony Rossini * Doc/TODO: added inferior-ess rewrite. Thu Nov 20 09:54:51 1997 Anthony Rossini * README.XLispStat: Splus removed, XLispStat added. Thu Nov 20 09:53:48 1997 Anthony Rossini * README.S: retitled the FAQ. Thu Nov 20 09:52:57 1997 Anthony Rossini * README: changes (RMH). Thu Nov 20 09:46:20 1997 Anthony Rossini * ess.texi: archive is on Franz. Thu Nov 20 09:43:47 1997 Anthony Rossini * README: more comments about dir. Thu Nov 20 09:41:53 1997 Anthony Rossini * Makefile: "it" to "they". Thu Nov 20 09:40:44 1997 Anthony Rossini * Makefile: put dir back into the Docs. Thu Nov 20 09:38:54 1997 Anthony Rossini * Doc/TODO: truns :-). Thu Nov 20 09:38:12 1997 Anthony Rossini * Doc/ajr-talk.tex: added typoout for fonts. Thu Nov 20 09:35:28 1997 Anthony Rossini * Doc/rmh-talk.tex: fixed my typo, line wrap. Thu Nov 20 09:33:16 1997 Anthony Rossini * Doc/README.additions: added essdd*.el Thu Nov 20 09:22:02 1997 Anthony Rossini * Doc/TODO: added new for fix to About. Thu Nov 20 09:19:52 1997 Anthony Rossini * ess-trns.el (ess-transcript-mode-menu): * ess-inf.el (inferior-ess-mode-menu): * ess-mode.el (ess-mode-menu): removed About from menu, for now. Wed Nov 19 12:24:22 1997 Anthony Rossini * RELEASED 5.0, lastpre. * Makefile: removed veryclean. unnecessary target. Fixed dist-doc target. Wed Nov 19 12:21:38 1997 Anthony Rossini * Doc/rmh-talk.tex: no changes. Wed Nov 19 12:21:02 1997 Anthony Rossini * Doc/ajr-talk.tex: final version. Not best, but we've got docs provided. Wed Nov 19 12:03:03 1997 Anthony Rossini * Doc/ajr-talk.tex: use the ugly version Wed Nov 19 12:01:53 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): never take name from a running process buffer. Wed Nov 19 11:56:09 1997 Anthony Rossini * essd-xls.el: added transcript mode. Wed Nov 19 11:43:24 1997 Anthony Rossini * ess-mode.el (ess-mode-menu): bug in "About". Wed Nov 19 11:25:01 1997 Anthony Rossini * README: database creation works. Wed Nov 19 11:20:28 1997 Anthony Rossini * ess-inf.el (ess-create-object-name-db): use temporary name for ess-object-name-db; since we make it buffer local to accomodate different languages, need to handle it carefully. In particular, might be better to make buffer local upon demand, rather than always buffer local. But lots of considerations, here. Wed Nov 19 11:14:10 1997 Anthony Rossini * ess-inf.el (ess-create-object-name-db): added *ESS* messages. Wed Nov 19 10:56:47 1997 Anthony Rossini * ess.el (ess-load-object-name-db-file): no warning when object database name fails to exist; the code is still there. Wed Nov 19 10:55:38 1997 Anthony Rossini * essd-s+3.el: setq-default to setq * essd-r.el: setq, not setq default. Wed Nov 19 10:52:28 1997 Anthony Rossini * README: added statement about object-name db being broken. Wed Nov 19 10:33:47 1997 Anthony Rossini * essd-s+3.el (S+3-transcript-mode): make interactive. Wed Nov 19 10:32:28 1997 Anthony Rossini * ess-site.el (s-transcript-mode): make interactive. Wed Nov 19 10:31:54 1997 Anthony Rossini * essd-r.el (r-transcript-mode): make interactive. Tue Nov 18 17:38:56 1997 Anthony Rossini * essddr.el: updated to 0.1.7. (KH) Tue Nov 18 17:37:11 1997 Anthony Rossini * ess-inf.el: ess-create-object-name-db, format Tue Nov 18 17:21:37 1997 Anthony Rossini * essd-s+3.el (S+3-customize-alist): changed var name for consistency. Tue Nov 18 17:20:21 1997 Anthony Rossini * essd-r.el (R-customize-alist): use R-help-sec-keys-alist. Tue Nov 18 17:19:23 1997 Anthony Rossini * ess-vars.el: removed spurrious variable. Tue Nov 18 17:18:29 1997 Anthony Rossini * ess-vars.el: removed ess--help-S-sec-keys-alist; second def! Tue Nov 18 17:14:33 1997 Anthony Rossini * essl-s.el (ess-help-*-sec-keys-alist): renamed to *-help-sec-keys-alist. defvars to defconst. Tue Nov 18 17:03:40 1997 Anthony Rossini * ess-inf.el (inferior-ess): removed "switch-to" logic in inferior-ess. Now should strictly start-up a buffer. Tue Nov 18 16:58:06 1997 Anthony Rossini * Makefile: added warnings for set-keymap-parent; XEmacs, non-Emacs. Tue Nov 18 16:52:52 1997 Anthony Rossini * essl-s.el: added Martin's fix to documentation. Mon Nov 17 09:59:20 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode-menu): reinstalled info connection. Mon Nov 17 09:58:37 1997 Anthony Rossini * ess-mode.el: reinstalled info connection. Mon Nov 17 09:25:24 1997 Anthony Rossini * Doc/rmh-talk.tex: added updates. (RMH) Mon Nov 17 09:09:09 1997 Anthony Rossini * README.S: fixed grammar. Mon Nov 17 09:05:50 1997 Anthony Rossini * README/ess.texi: R uses ess-r-namedb.el. (RMH) Mon Nov 17 09:04:41 1997 Anthony Rossini * README/ess.texi: changed phrasing for creating object database files. (RMH) Mon Nov 17 09:00:38 1997 Anthony Rossini * ess-inf.el (inferior-ess): doc string edited. Wrong comments removed (RMH). Mon Nov 17 08:57:54 1997 Anthony Rossini * Makefile: fixed documentation dependencies (RMH) Mon Nov 17 08:56:41 1997 Anthony Rossini * ess.el: fixed Lisp-Dir-Entry; franz.stat.wisc.edu, not ftp.math.sc.edu. (RMH). Mon Nov 17 08:54:59 1997 Anthony Rossini * Doc/ajr-talk.tex: added comments for changing font usage (RMH). Fri Nov 14 17:44:14 1997 Anthony Rossini * README: added more of an introduction and "history" statement. * README.S: added a small "FAQ" at the end. * Doc/TODO: Added last of the SAS things to do for 5.2 or 5.4. Fri Nov 14 17:27:27 1997 Anthony Rossini * README: more comments. Fri Nov 14 16:59:05 1997 Anthony Rossini * Doc/TODO: added SAS fontlock, graphics. R Help Fri Nov 14 13:49:40 1997 Anthony Rossini * README.XLispStat: fixed small typos. Fri Nov 14 11:24:05 1997 Anthony Rossini * Makefile (DOCS): reordered variable. Added info/dvi files. Fri Nov 14 11:22:03 1997 Anthony Rossini * ess.el: more comment work. * ess.el: verified using lisp-mnt.el; standard package formatting. Fri Nov 14 11:06:18 1997 Anthony Rossini * Makefile (clean): don't remove .dvi or .info* * Makefile (veryclean): new target, for removing what clean used to remove Fri Nov 14 10:13:49 1997 Anthony Rossini * Makefile: version to 5.0 Fri Nov 14 10:13:40 1997 Anthony Rossini * Makefile (VERSION): version to 5.0 Fri Nov 14 10:13:24 1997 Anthony Rossini * ess-vars.el: version to 5.0 Fri Nov 14 10:13:04 1997 Anthony Rossini * ess-vars.el (ess-version): version to 5.0. Fri Nov 14 10:12:34 1997 Anthony Rossini * README.S: added notes for starting R with prefix arguments. Fri Nov 14 09:59:25 1997 Anthony Rossini * ess.texi: added @itemize markers. Thu Nov 13 21:45:27 1997 Anthony Rossini * Release: 5.0-pre5 * Makefile (VERSION): incremented. * ess-vars.el (ess-version): incremented. Thu Nov 13 21:40:12 1997 Anthony Rossini * essd-sas.el: works again. shooze... Thu Nov 13 20:51:36 1997 Anthony Rossini * ess.el (ess-load-object-name-db-file): don't bomb if file doesn't exist.. Thu Nov 13 20:31:21 1997 Anthony Rossini * ess-inf.el: back to initial, except for new unused, commented out, variable) Thu Nov 13 20:28:06 1997 Anthony Rossini * ess-inf.el: New temp variables for when we rewrite the initialization routines; NEED TO DO THIS FOR 5.2!!! LOGIC HAS CHANGED, FOR THE "SIMPLER"! * ess-inf.el: doesn't work. This is a mess. * ess-inf.el (inferior-ess): use language instead of dialect for "*language*" and "*language:1*" buffer names; old version commented out. Thu Nov 13 20:11:10 1997 Anthony Rossini * ess-vars.el (ess-plain-first-buffername): use it. Thu Nov 13 20:07:42 1997 Anthony Rossini * ess-inf.el: forgot ")". Thu Nov 13 20:06:12 1997 Anthony Rossini * essd-sas.el: fixed R then SAS buffer name problem. Thu Nov 13 19:56:57 1997 Anthony Rossini * ess-site.el: added commented example for ess-plain-first-buffername. TRUE by default, i.e. for "novice" mode. Thu Nov 13 19:54:23 1997 Anthony Rossini * ess-vars.el: moved database loading to ess-mode and inferior-ess-mode; removed old comments. Thu Nov 13 19:52:31 1997 Anthony Rossini * ess-inf.el (ess-proc-name): If ess-plain-first-buffername is true, don't add "process number" to the first process. Thu Nov 13 19:35:59 1997 Anthony Rossini * ess.el (ess-load-object-name-db-file): new function, use it. Thu Nov 13 19:35:27 1997 Anthony Rossini * ess-inf.el: C-c tab is ess-complete-object-name. Thu Nov 13 19:34:48 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode-map): C-c TAB is ess-complete-object-name, same as in ess-mode. Thu Nov 13 19:27:55 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode): load object-name db file if exists. Thu Nov 13 19:19:37 1997 Anthony Rossini * ess-mode.el (ess-mode): load object-name db file if exists. Thu Nov 13 19:17:59 1997 Anthony Rossini * ess.texi: bare-bones description of how to create object-name databases. Thu Nov 13 19:09:07 1997 Anthony Rossini * README: added notes for database creation Thu Nov 13 10:16:12 1997 Anthony Rossini * README.XLispStat : XLispStat isn't a trademark. Thu Nov 13 09:59:05 1997 Anthony Rossini * Makefile (ess.elc): fixed action * Makefile (ess-vars.elc): fixed action Thu Nov 13 09:58:42 1997 Anthony Rossini * ess-vars.el: removed ancient comments. Thu Nov 13 09:58:23 1997 Anthony Rossini * README.S: added means for using second philosophy. Thu Nov 13 09:51:19 1997 Anthony Rossini * README.S: fixed line break. Thu Nov 13 09:40:56 1997 Anthony Rossini * Doc/ajr-talk.tex: added location of talk. Thu Nov 13 09:39:52 1997 Anthony Rossini * Doc/rmh-talk.tex: pointed to FRANZ. added comment about where given. 1998-11-13 A.J. Rossini * doc/Makefile: added "info" target. Removed spurrious ess.info/ess.texi dependency, i.e. the first. Thu Nov 13 08:54:40 1997 Anthony Rossini * Makefile (dist-doc): new target. Use it * Makefile (ESS-doc): new target. Use it. Wed Nov 12 17:32:49 1997 Anthony Rossini * Doc/ajr-talk.tex: de latex-2-html'd. Wed Nov 12 17:26:25 1997 Anthony Rossini * ess-inf.el: args passes all the way through. Wed Nov 12 16:30:34 1997 Anthony Rossini * essd-r.el: added prefix to R. Wed Nov 12 15:15:06 1997 Anthony Rossini * README: added stata comment, site-init.el Wed Nov 12 15:12:25 1997 Anthony Rossini * ess.texi: added installation (from README). Use @file{} for file names. Wed Nov 12 14:56:41 1997 Anthony Rossini * Makefile: added warning messages for ignorable errors. Wed Nov 12 14:43:07 1997 Anthony Rossini * ess-inf.el: can't seem to remove last byte compiler error. Wed Nov 12 14:30:00 1997 Anthony Rossini * ess-trns.el: * ess-help.el: added compile requires to remove byte-compiler warnings. Wed Nov 12 14:21:33 1997 Anthony Rossini * essddr.el: paren balance. whoops. Wed Nov 12 14:20:41 1997 Anthony Rossini * essddr.el: added "require 'ess-help" to solve byte compiler errors. Wed Nov 12 14:16:37 1997 Anthony Rossini * essd-sas.el: require 'shell to fix byte-compile errors. Wed Nov 12 02:45:44 1997 Anthony Rossini * Release: 5.0-pre4 * ess-vars.el: updated version number for release * Makefile: Updated version number for release Wed Nov 12 02:27:16 1997 Anthony Rossini * essd-sas.el: seems to work, now. Tue Nov 11 19:20:50 1997 Anthony Rossini * essd-sas.el: might need comint. Tue Nov 11 19:09:18 1997 Anthony Rossini * README.XLispStat: fixed small errors. Tue Nov 11 19:04:51 1997 Anthony Rossini * README.XLispStat : bad key-seq "C-c C-f" isn't find-file. Tue Nov 11 19:01:22 1997 Anthony Rossini * README.S: merged rewrite (RMH) Tue Nov 11 16:49:41 1997 Anthony Rossini * essd-sas.el: format cleaning. Tue Nov 11 16:42:28 1997 Anthony Rossini * essd-sas.el: ess-SAS-pre-run-hook now called from SAS, not inferior-ess. Tue Nov 11 16:34:38 1997 Anthony Rossini * essl-sta.el: wrong header! Tue Nov 11 16:32:51 1997 Anthony Rossini * ess.texi: added to New Features. Tue Nov 11 16:30:26 1997 Anthony Rossini * README: small typos. Distributed from Wisconsin. Tue Nov 11 16:27:21 1997 Anthony Rossini * README: added Splus 3.4. Removed "futures". Tue Nov 11 16:25:59 1997 Anthony Rossini * ess-vars.el: inferior S -> inferior ESS Tue Nov 11 16:24:38 1997 Anthony Rossini * ess-site.el: small doc changes (RMH). Tue Nov 11 16:21:34 1997 Anthony Rossini * README.S: edited how to find key-sequences (RMH) Tue Nov 11 16:19:51 1997 Anthony Rossini * ess-inf.el: removed comint symbols. (RMH). Need to read comint docs (AJR). Tue Nov 11 16:19:00 1997 Anthony Rossini * Makefile: small typos corrected. Tue Nov 11 16:04:26 1997 Anthony Rossini * ess-inf.el (ess-read-object-name): use ess-read-object-name-dump. * ess-inf.el (ess-read-object-name-default): reverted back to old behavior. * ess-inf.el (ess-read-object-name-dump): new function. Use it. Tue Nov 11 15:56:03 1997 Anthony Rossini * ess.texi: XLisp-Stat, uniformly. Tue Nov 11 15:51:48 1997 Anthony Rossini * ess.texi: fixed titles (no @_{} commands). Updated menus. (MM) Tue Nov 11 15:38:52 1997 Anthony Rossini * README.XLispStat: removed "S(tm)". * README.SAS: major overhaul (RMH). * README.S: removed "S(tm)". Tue Nov 11 10:02:44 1997 Anthony Rossini * ess-inf.el (ess-read-object-name-default): new version (KH). Tue Nov 11 10:00:54 1997 Anthony Rossini * ess-site.el ((assoc "\\.[rR]\\'" auto-mode-alist)): added man format again for R internal man pages. Mon Nov 10 23:17:28 1997 Anthony Rossini * Makefile: added latex/tex for talks on ESS 5.0. Mon Nov 10 23:02:36 1997 Anthony Rossini * Releasing 5.0-pre3. * essd-sas.el: changes made. Watch out. * ess-vars.el (ess-version): 5.0-pre3 * Makefile (VERSION): 5.0-pre3 Mon Nov 10 22:58:39 1997 Anthony Rossini * ess-mode.el: more S to ESS Mon Nov 10 22:52:55 1997 Anthony Rossini * ess-inf.el: more S/ESS fixes (RMH) Mon Nov 10 22:49:31 1997 Anthony Rossini * README.SAS: typo Mon Nov 10 22:43:59 1997 Anthony Rossini * ess-inf.el (ess-read-object-name-default): handle defaults better. Mon Nov 10 22:34:11 1997 Anthony Rossini * README.S: typo. Mon Nov 10 17:28:28 1997 Anthony Rossini * README.SAS: added some suggestions by RMH. Mon Nov 10 17:26:11 1997 Anthony Rossini * README.S: edited as suggested by RMH. Mon Nov 10 17:17:21 1997 Anthony Rossini * README.S: stuff. Mon Nov 10 17:16:21 1997 Anthony Rossini * README: changed mode/revision. Mon Nov 10 17:14:53 1997 Anthony Rossini * README: fixes (RMH) Mon Nov 10 17:04:38 1997 Anthony Rossini * ess-trns.el (ess-transcript-mode): * ess-help.el (ess-help-mode): * ess-inf.el (inferior-ess-mode): * ess-mode.el (ess-mode): keep tabs out of the code. Mon Nov 10 16:48:00 1997 Anthony Rossini * ess.texi: @code -> @email when appropriate. Mon Nov 10 15:58:23 1997 Anthony Rossini * ess.texi: added most, approx 300, of MM's changes. A very few differences, though. Mon Nov 10 15:05:45 1997 Anthony Rossini * ess-vars.el: S -> ESS (MM) Mon Nov 10 15:02:32 1997 Anthony Rossini * ess-trns.el: S -> ESS (MM) Mon Nov 10 14:59:39 1997 Anthony Rossini * ess-mode.el: S -> ESS (MM). Mon Nov 10 14:51:30 1997 Anthony Rossini * ess-inf.el: S -> ESS (MM). Mon Nov 10 14:41:30 1997 Anthony Rossini * ess-help.el: removed comment re: S.el. * ess-help.el: updated docs and functions, S -> ESS (MM) Mon Nov 10 14:34:35 1997 Anthony Rossini * Makefile (MAKEHTML): change target (MM) * Makefile (clean): more to clean (MM) * Makefile (dvi): new target. Use it (MM) Sun Nov 9 16:30:38 1997 Anthony Rossini * Doc/TODO: cleaned out my email of TODO problems, except for SAS). Sun Nov 9 16:24:39 1997 Anthony Rossini * Doc/TODO: updated for what has been accomplished by this stage, for 5.0. Sun Nov 9 15:32:34 1997 Anthony Rossini * essl-sta.el: cleaned up errors via lets. Sun Nov 9 15:26:33 1997 Anthony Rossini * essl-sas.el: removing unusable commands. Sun Nov 9 15:08:56 1997 Anthony Rossini * ess-vars.el (no-doc): new variable. use it for autoload documentation. Sun Nov 9 15:08:13 1997 Anthony Rossini * Makefile: ess-vars/ess/ess-site dependencies cleared up. Sun Nov 9 15:02:29 1997 Anthony Rossini * essd-sas.el: changed documentation for autoloads. Sun Nov 9 14:56:32 1997 Anthony Rossini * essl-sas.el: one too many ")" (in editing sas-narrow-to-page). Sun Nov 9 14:48:55 1997 Anthony Rossini * ess-site.el: cleaned up. Sun Nov 9 14:44:06 1997 Anthony Rossini * ess-comp.el: cleaned up. Sun Nov 9 14:38:29 1997 Anthony Rossini * essl-sta.el: cleaned up format. Sun Nov 9 14:33:18 1997 Anthony Rossini * essd-sas.el: cleaned up byte-compiler warnings and lisp. Sun Nov 9 14:32:54 1997 Anthony Rossini * essl-sas.el: need the right name at top. * essl-sas.el: cleaned up byte-compiler warnings. Sun Nov 9 14:17:36 1997 Anthony Rossini * Makefile: cleaned dependencies for essd-*.el Sun Nov 9 14:00:56 1997 Anthony Rossini * ess-vars.el (ess-version): upgrade to 5.0 * Makefile: upgrade version to 5.0 1998-11-09 A.J. Rossini * Makefile (dist): new top-level target. (dist): uses scp to put it where it belongs. Fri Nov 7 19:43:11 1997 Anthony Rossini * Released 5.0-pre2. * Makefile (dist): copy makefile into the appropriate place. Fri Nov 7 19:41:02 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): fixed process name synch problem. Fri Nov 7 19:18:57 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): set explicit-shell-file-name to "/bin/sh" to aviod prompt evilness. Fri Nov 7 18:33:29 1997 Anthony Rossini * Doc/TODO: SAS problems. Fri Nov 7 18:28:40 1997 Anthony Rossini * ess-inf.el (inferior-R-input-sender): patch to avoid problems with R, for "help()" (MM). Fri Nov 7 18:17:54 1997 Anthony Rossini * ess-site.el: added comments re: TT commenting/editing styles. Fri Nov 7 18:10:25 1997 Anthony Rossini * ess-mode.el: indentation. Fri Nov 7 14:42:45 1997 Anthony Rossini * ess-mode.el: changes for TT (RMH). Fri Nov 7 14:31:35 1997 Anthony Rossini * essl-sas.el (sas-require-confirmation): doc string edit. Fri Nov 7 14:30:33 1997 Anthony Rossini * ess-vars.el (ess-transcript-minor-mode): * ess-vars.el (ess-listing-minor-mode): new variables. Use. (RMH) Fri Nov 7 14:29:49 1997 Anthony Rossini * essl-sas.el: fixes for multiple SAS processes. (RMH) Fri Nov 7 13:53:16 1997 Anthony Rossini * essd-sas.el: changes for SAS mode (RMH-2Nov). Fri Nov 7 13:47:31 1997 Anthony Rossini * ess-vars.el: patches for Terry Thernau's suggested indentation (RMH) Fri Nov 7 13:37:41 1997 Anthony Rossini * README.XLispStat: new file. read it. * README.SAS: New file. Read it. * README.S: revision, not version. Fri Nov 7 11:41:01 1997 Anthony Rossini * README.S: added gen'l features, id -> version. Fri Nov 7 09:23:55 1997 Anthony Rossini * README.S: New file. Include it. Fri Nov 7 09:20:30 1997 Anthony Rossini * README: pointer to README.S, README.SAS, and README.XLispStat Fri Nov 7 09:17:52 1997 Anthony Rossini * README: changes to mailing list and WWW documentation location (MM). Thu Nov 6 10:42:10 1997 Anthony Rossini * Makefile (DOCS): added README.LANGUAGE files to the Makefile. Need to fill them in. Wed Oct 29 14:08:52 1997 Anthony Rossini * README: rearranged, as suggested by Don Cram. (DC). Mon Oct 27 14:50:18 1997 Anthony Rossini * ess.texi: readded "New Features" section. Mon Oct 27 13:05:13 1997 Anthony Rossini * ess.texi: started editing section 1. In particular, @b{S} refers to a generic statistical process, at this point. Mon Oct 27 10:44:44 1997 Anthony Rossini * ess.texi (Local Variables): TeX-master ought to be ess.texi. Whoops. Mon Oct 27 10:25:49 1997 Anthony Rossini * Doc/TODO: added RMH's SAS suggestions. Mon Oct 27 10:22:17 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): removed interactive call. * essd-sas.el (ess-SAS-pre-run-hook): make sure buffer name of any running *shell* buffers is unique for changes. Mon Oct 27 10:03:34 1997 Anthony Rossini * Makefile (SOURCES): removed ess-debug from distributed sources. Mon Oct 27 09:01:24 1997 Anthony Rossini * Makefile (dist): Doc should not be writable, again. Fri Oct 24 16:31:12 1997 Anthony Rossini * Makefile (install): -ne should be !=, since doing string, not integer, comparison. (KH) Fri Oct 24 12:25:40 1997 Anthony Rossini * ess-vars.el (ess-version): * Makefile (VERSION): 5.0-pre2 * ess-site.el ((assoc "\\.[rR]\\'" auto-mode-alist)): changes for R, 0.50 vs. 0.60. Fri Oct 24 08:56:26 1997 Anthony Rossini * ESS-5.0-pre1 released. Fri Oct 24 08:55:10 1997 Anthony Rossini * ess-vars.el (ess-version): * Makefile (VERSION): updated version name to 5.0-pre1, skipping beta-17. Fri Oct 24 08:51:27 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): We need to make sure that no shells are currently running. put back the stuff removed 1.5 hours ago. Cleaned up variable usage using let. Fri Oct 24 08:13:58 1997 Anthony Rossini * essl-sas.el (SAS-log-mode): fundamental mode, with read-only. Same as listing mode, pretty much. Fri Oct 24 08:11:41 1997 Anthony Rossini * essl-sas.el (set-sas-file-buffer): sasl-mode isn't real, anymore. Fri Oct 24 08:07:48 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): after accepting process input, sleep-for to allow the rest of the input to appear! Else, we don't read the correct tty. Alternative: would have to grep for tty, and figure out if we mean BSD or SYSV style unix. Bleach. Fri Oct 24 07:21:33 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): removed ess-sas-shell-buffer-name stuff. Necessary? Fri Oct 24 07:21:16 1997 Anthony Rossini * ess-sas-sh-command: use /bin/sh Fri Oct 24 07:20:56 1997 Anthony Rossini * Makefile (dist): make sure scripts are executable before packaging. Thu Oct 23 17:24:23 1997 Anthony Rossini * essd-sas.el (ess-sas-shell-buffer-name-flag): use it. * essd-sas.el (ess-sas-shell-buffer-name): use it. Thu Oct 23 17:20:42 1997 Anthony Rossini * essd-sas.el (ess-SAS-pre-run-hook): removed 'interactive' call. Should only be run from a run-hooks call? * essd-sas.el (ess-SAS-pre-run-hook): ess-shell-buffer-name-p should be ess-shell-buffer-name-flag; -p and p suffices are reserved for functions, -flag reserved for variables. Thu Oct 23 13:17:28 1997 Anthony Rossini * ess-inf.el (ess-eval-line-and-next-line, ess-eval-line, ess-eval-function, ess-eval-buffer): ess-force-buffer-current Thu Oct 23 09:08:24 1997 Anthony Rossini * Makefile (install): test lispdir to see if needs install (MM). Thu Oct 23 09:07:42 1997 Anthony Rossini * essl-sas.el (ess-transcript-mode): should be autoloaded. Thu Oct 23 09:01:45 1997 Anthony Rossini * ess-site.el (s-transcript-mode): generic. Moved here. Thu Oct 23 09:00:02 1997 Anthony Rossini * essd-r.el (r-transcript-mode): moved here. Thu Oct 23 08:57:04 1997 Anthony Rossini * Makefile (AUXFILES): added SCRIPTS * Makefile (SCRIPTS): new variable, use it. Thu Oct 23 08:52:27 1997 Anthony Rossini * ess-inf.el (ess-eval-visibly): DOCSTRING lied; text -> text-withtabs. Thu Oct 23 08:30:21 1997 Anthony Rossini * Makefile (dist): remove write permission from ChangeLog for distribution. Thu Oct 23 08:23:52 1997 Anthony Rossini * Makefile (DOCS): new variable. Use it. Thu Oct 23 08:22:09 1997 Anthony Rossini * Makefile (SOURCES): Need to include ess-debug, ess-comp. Wed Oct 22 15:53:46 1997 Anthony Rossini * ess-vars.el (ess-version): updated version number (17) * Makefile (VERSION): updated version number (17) * beta 16 released. Wed Oct 22 15:10:26 1997 Anthony Rossini * Makefile (dist): dist target now works; being too ambitious resulted in the loss of below. 1997-10-22 Anthony Rossini * WHOOPS. Stupid mistake, lost 2 days of ChangeLog activity. Mon Oct 20 14:20:51 1997 Anthony Rossini * ess-help.el (ess-display-help-on-object): set the customization variables properly. Thu Oct 16 14:25:59 1997 Anthony Rossini * essd-sas.el (ess-mode): added autoload. * essd-s+3.el: editing of spaces. * Makefile (SOURCES): changed edd-doc appropairately.i Fri Oct 10 12:05:40 1997 Anthony Rossini * beta 15 released. * ess-trns.el (ess-transcript-mode): start up in read-only mode. Wed Oct 8 14:50:03 1997 Anthony Rossini * ess-inf.el (ess-proc-name): takes stringname for buffer; was ess-dialect. Use it. Wed Oct 8 13:56:51 1997 Anthony Rossini * essd-s4.el (S4-customize-alist): inferior-ess-*-command variables must end in "\n". * essd-s+3.el (S+3-customize-alist): inferior-ess-*-command variables must end in "\n". Wed Oct 8 08:50:58 1997 Anthony Rossini * ess-vars.el (inferior-ess-names-command): add "\n" to end of names(%s) command (KH). Wed Oct 8 05:36:04 1997 Anthony Rossini * ess-debug.el: new file for debugging and development. Use it. Tue Oct 7 15:46:59 1997 Anthony Rossini * ess-site.el: commented out debug-on-error. Tue Oct 7 15:42:49 1997 Anthony Rossini * ess-inf.el (ess-get-words-from-vector): don't concat "\n", since we might have multi-line commands. Make them do it in the command definition (KH). Tue Oct 7 13:21:57 1997 Anthony Rossini * Makefile (SOURCES): add ess-doc.el Thu Oct 2 08:52:58 1997 Anthony Rossini * Makefile (install): create INFODIR and LISPDIR as well as parents before installing. Thu Oct 2 08:42:46 1997 Anthony Rossini * ess-inf.el (ess-multi): removed ess-pre-run-hook execution; it should only happen in inferior-ess. Thu Oct 2 01:12:22 1997 Anthony Rossini * essl-s.el (r-transcript-mode, s-transcript-mode): new functions. Use it, and fset it. Thu Oct 2 01:12:07 1997 Anthony Rossini * ess-trns.el (ess-transcript-mode): added alist parameter. Use it. Thu Oct 2 00:35:30 1997 Anthony Rossini * ess-vars.el (ess-function-pattern): tied the non-quoted function name to either the beginning of a line or a space, instead of beginning of a word. Wed Oct 1 21:50:59 1997 Anthony Rossini * essl-s.el (S-syntax-table): modified . to be "_" (KH). Wed Oct 1 21:46:51 1997 Anthony Rossini * ess-inf.el: Require ess-site, not just ess, so that language specific stuff will be loaded. Wed Oct 1 21:45:47 1997 Anthony Rossini * ess-trns.el: Require ess-site, not just ess, so that language specific stuff will be loaded. Tue Sep 16 16:15:37 1997 Anthony Rossini * essl-sas.el (SAS-editing-alist): * essl-lsp.el (Lisp-editing-alist): * essl-s.el (S-editing-alist): ess-keep-dump-files NEEDS to be 'ask. Wed Sep 10 13:48:41 1997 Anthony Rossini * ess-help.el (ess-submit-bug-report): ess-program-name doesn't exist. Wed Sep 10 13:44:52 1997 Anthony Rossini * essl-sas.el: can't require sas here. Wed Sep 10 13:33:57 1997 Anthony Rossini * essl-sas.el: added Tom Cook's sas-data code. Not integrated yet. Wed Sep 10 09:42:30 1997 Anthony Rossini * Makefile (html/ess_toc.html): Use explicit file "index.html", since some servers/browsers have different defaults. (MM). Wed Sep 10 09:40:04 1997 Anthony Rossini * ess-site.el ((assoc "\\.[rR]\\'" auto-mode-alist)): change check for setting auto-mode-alist (MM). Tue Sep 9 16:35:21 1997 Anthony Rossini * ess-mode.el: removed code which generated a second "ess-mode" menu. Tue Sep 9 16:23:56 1997 Anthony Rossini * ess-mode.el (ess-mode): mode name: ess-language, not ess-dialect. Tue Sep 9 16:22:41 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode): mode name: iESS [ess-dialect:proc] Tue Sep 9 10:39:35 1997 Anthony Rossini * essd-[r][s+3].el (*-customize-alist): lastvalue command renamed as ".ess.lvsave". Tue Sep 9 09:59:04 1997 Anthony Rossini * ess-inf.el: what is (fset 'run-s (fset 'run-S (symbol-function 'S))) for?? Tue Sep 9 09:15:24 1997 Anthony Rossini * ess-vars.el (ess-version): incremented * Makefile (VERSION): incremented Tue Sep 9 09:01:59 1997 Anthony Rossini * RELEASING beta 13 Tue Sep 9 09:01:02 1997 Anthony Rossini * Makefile (all): ess -> ESS Tue Sep 9 08:29:48 1997 Anthony Rossini * essd-r.el (R-customize-alist): needs syntax table for inferior processes. Mon Sep 8 15:22:18 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode): need to fix syntax table. Mon Sep 8 14:28:57 1997 Anthony Rossini * essl-sas.el (sas-indent-line): renamed from indent-sas-statement. Mon Sep 8 14:08:24 1997 Anthony Rossini * ess-mode.el (ess-mode): add one more debugging statement. Mon Sep 8 13:23:20 1997 Anthony Rossini * ess-vars.el: moved syntax table code to essl-s.el. Mon Sep 8 13:07:48 1997 Anthony Rossini * ess-vars.el (ess-version): updated. * Makefile: Updated version number Mon Sep 8 12:25:09 1997 Anthony Rossini * ess-help.el (ess-find-help-file): doesn't search for completions, with SAS or XLS. Fine, since there isn't a really good way to build the list [SAS] or it isn't coded yet [XLS]. Mon Sep 8 12:24:42 1997 Anthony Rossini * ess-help.el (ess-display-help-on-object): uses process name as part of the buffer. Mon Sep 8 12:23:24 1997 Anthony Rossini * ess-vars.el: removed inferior-ess-save-lastvalue-command and inferior-ess-retr-lastvalue-command, not needed. Mon Sep 8 09:01:18 1997 Anthony Rossini * essl-sas.el: moved SAS language related autoloads and fsets from ess.el to here. Mon Sep 8 08:59:13 1997 Anthony Rossini * essl-s.el: moved S language related autoloads and fsets from ess.el to here. Mon Sep 8 08:51:01 1997 Anthony Rossini * essd-sas.el (SAS-customize-alist): use ess-local-customize-alist. Mon Sep 8 08:46:32 1997 Anthony Rossini * essd-r.el (R-customize-alist): use ess-local-customize-alist. Mon Sep 8 08:45:43 1997 Anthony Rossini * essd-s+3.el (S+3-customize-alist): use ess-local-customize-alist. Mon Sep 8 08:45:00 1997 Anthony Rossini * essd-s4.el (S4-customize-alist): use ess-local-customize-alist. Mon Sep 8 08:42:48 1997 Anthony Rossini * essd-s3.el (S3-customize-alist): use ess-local-customize-alist. Mon Sep 8 08:41:35 1997 Anthony Rossini * ess-vars.el (ess-local-customize-alist): new variable. use it. Mon Sep 8 08:35:42 1997 Anthony Rossini * ess-site.el: code to remove .[sS] from auto-mode-alist commented out. Need a version which works with Emacs. Fri Sep 5 14:20:18 1997 Anthony Rossini * ess-mode.el (ess-eval-map): define it. New keysequence: C-c C-e ... for evaluation of code. Fri Sep 5 14:19:43 1997 Anthony Rossini * ess-vars.el (ess-eval-map): new variable. use it. Wed Sep 3 12:54:46 1997 Anthony Rossini * ess-trns.el: removed log section. Wed Sep 3 12:30:57 1997 Anthony Rossini * ess-mode.el (ess-find-dump-file-other-window): changed error to message, so that dumping non-existant R objects would work. Wed Sep 3 12:29:45 1997 Anthony Rossini * ess-help.el (ess-submit-bug-report): fixed to use ess-bugs, and to include *ESS* buffer contents. Wed Sep 3 12:27:35 1997 Anthony Rossini * essd-s4.el: rolled in John Chamber's s4-modeadds.el Wed Sep 3 11:48:24 1997 Anthony Rossini * essd-s4.el (S4-customize-alist): added inferior-ess-search-list-command from the ess-xtras. Wed Sep 3 11:11:37 1997 Anthony Rossini * ess-site.el ((assoc "\\.q" auto-mode-alist)): removed '$'. (RMH). Wed Sep 3 10:42:13 1997 Anthony Rossini * ess.texi : applied Martin's updates. Wed Sep 3 10:37:39 1997 Anthony Rossini * Makefile: applied Martin's patch, ESS -> ess, for texinfo stuff. Tue Sep 2 16:36:59 1997 Anthony Rossini * essd-*.el (ess-dump-filename-template): use it, with ess-suffix. Tue Sep 2 16:19:41 1997 Anthony Rossini * ess-vars.el (ess-delete-dump-files): changed default value to nil. Better safe than sorry. Tue Sep 2 16:05:04 1997 Anthony Rossini * essd-*.el (*-customize-alist): ess-suffix. Use it. Tue Sep 2 15:44:02 1997 Anthony Rossini * essl-s.el: moved "general" variables from essd-s?.el, essd-r.el. There, should only be modifications to the standard S customizations. Avoids conflict with not loading certain customization variables. Tue Sep 2 13:23:01 1997 Anthony Rossini * Makefile (LASTVERSION): version set to 12. Tue Sep 2 10:22:11 1997 Anthony Rossini * ess-vars.el (ess-version): Version 11 released; set to 12. Mon Sep 1 17:16:42 1997 Anthony Rossini * essd-r.el (R-mode): setq-default the customize alist. Mon Sep 1 16:59:57 1997 Anthony Rossini * essd-s+3.el (S+3-mode): need to set ess-customize-alist. Mon Sep 1 16:15:10 1997 Anthony Rossini * ess-vars.el (ess-mode-font-lock-keywords): redid the assign fontlocking. Mon Sep 1 15:53:54 1997 Anthony Rossini * ess-vars.el (ess-mode-editing-alist): renamed. Use it. Mon Sep 1 15:48:43 1997 Anthony Rossini * ess-inf.el (inferior-ess): corrected doc string. Mon Sep 1 14:54:44 1997 Anthony Rossini * essl-sas.el: added sas config variables here. Mon Sep 1 14:21:08 1997 Anthony Rossini * essd-sas.el (SAS): works. Mon Sep 1 14:20:45 1997 Anthony Rossini * essd-sas.el (SAS-mode): fixed and "modernized". Mon Sep 1 14:16:16 1997 Anthony Rossini * ess.el (SAS-transcript-mode): load it. Mon Sep 1 14:16:07 1997 Anthony Rossini * ess.el (SAS-mode): load it. Mon Sep 1 14:12:33 1997 Anthony Rossini * ess-site.el (auto-mode-alist): XLS is recognized. SAS is recognized. Fri Aug 29 13:41:22 1997 Anthony Rossini * ess-inf.el (inferior-ess-make-comint): use inferior-ess-start-file, inferior-ess-start-args. Fri Aug 29 13:24:12 1997 Anthony Rossini * essd-sas.el (inferior-SAS-args): new variable. Use it. Fri Aug 29 13:11:56 1997 Anthony Rossini * ess-vars.el (ess-dribble-buffer): now defaults to *ESS*. (RMH/MM). Fri Aug 29 13:09:04 1997 Anthony Rossini * essd-sas.el (SAS-customize-alist): fixed primary prompt (RMH). Thu Aug 28 10:21:41 1997 Anthony Rossini * ess-mode.el (ess-check-modifications): reformat. Thu Aug 28 09:03:53 1997 Anthony Rossini * ess.el: moved ess-site autoloads here. Thu Aug 28 09:02:57 1997 Anthony Rossini * ess-help.el (ess-find-help-file): autoloaded ess-get-object-list at the beginning of ess-help; byte-compiler error. Wed Aug 27 14:33:56 1997 Anthony Rossini * ess-mode.el (ess-mode): needed to set buffer local variables AFTER they are killed. Whoops. Wed Aug 27 14:27:44 1997 Anthony Rossini * ess-mode.el (ess-mode): type changed to dialect. Wed Aug 27 11:55:07 1997 Anthony Rossini * ess-inf.el (ess-proc-name): changed the process name to be returned. Now is the form: ess-dialect : ess-process-number. Tue Aug 26 18:49:31 1997 Anthony Rossini * ess-version-running -> ess-dialect Tue Aug 26 18:49:18 1997 Anthony Rossini * ess-proc-prefix -> ess-language Tue Aug 26 17:58:11 1997 Anthony Rossini * ess-site.el: added SAS site init (from Cook's mode) (TC) Tue Aug 26 17:50:57 1997 Anthony Rossini * essl-sas.el: new file. SAS language editing mode (Cook's mode). Use it. (TC) Tue Aug 26 17:48:47 1997 Anthony Rossini * essl-s.el : new file. S language editing mode. Use it. S specific stuff from ess-mode. Mon Aug 25 16:53:10 1997 Anthony Rossini * ess-help.el (ess-find-help-file): added hack to complete non-S stuff. (KH) Mon Aug 25 16:42:46 1997 Anthony Rossini * essd-r.el (R-customize-alist): made the name quoted. Mon Aug 18 15:27:41 1997 Maechler * essd-r.el (R-customize-alist): sorted * essd-s4.el: * essd-s3.el (S3-customize-alist): not Splus; no 'Optional/Required Arg' * essd-s+3.el (S+3-customize-alist): switched some lower/upper case: more important things on lower case; now compatible to R Mon Aug 25 16:35:29 1997 Anthony Rossini * ess-site.el auto-mode-alist: Use \\' instead of $ [faster (?)], standard; Add ...src/library/[A-z]*/funs/.. for R source editing. (MM). Mon Aug 25 11:02:37 1997 Anthony Rossini * ess-site.el (inferior-ess-font-lock-input): added setq of this variable as a customization example (RMH). Mon Aug 25 10:35:09 1997 Anthony Rossini * ess-comp.el: removed (require 'cl). This is semi-evil, if we can only avoid it. Fri Aug 22 17:01:56 1997 Anthony Rossini * ess-vars.el (inferior-ess-font-lock-prompt-p): New variable. Need to use it. Customize in ess-site. Fri Aug 22 16:56:35 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode): mode name is now "iESS", as per discussion. Fri Aug 22 16:54:19 1997 Anthony Rossini * ess-vars.el (ess-object-name-db-file-loaded): use it to determine which languages/versions have been loaded. Fri Aug 22 16:48:55 1997 Anthony Rossini * essd-r.el (R-customize-alist): added ess-object-name-db to alist. Fri Aug 22 16:47:57 1997 Anthony Rossini * essd-s+3.el (S+3-customize-alist): added ess-object-name-db to alist. Fri Aug 22 16:41:49 1997 Anthony Rossini * essd-xls.el (XLS-customize-alist): added ess-object-name-db to alist. Fri Aug 22 16:40:31 1997 Anthony Rossini * essd-xls.el (XLS-mode): moved from ess-mode.el Fri Aug 22 15:58:54 1997 Anthony Rossini * essd-s+3.el (S-mode): moved from ess-mode.el Fri Aug 22 15:58:07 1997 Anthony Rossini * essd-r.el (R-mode): moved from ess-mode.el Fri Aug 22 15:50:25 1997 Anthony Rossini * essd-s+3.el: removed commented out font-lock patterns. (RMH) Fri Aug 22 15:49:56 1997 Anthony Rossini * essd-s3.el: removed commented out font-lock patterns. (RMH) Fri Aug 22 15:48:59 1997 Anthony Rossini * ess-vars.el (essd-S-inferior-font-lock-keywords): added RMH's error patterns. Fri Aug 22 12:28:42 1997 Anthony Rossini * essd-sas.el: new file (RMH). Fri Aug 22 12:18:30 1997 Anthony Rossini * ess-vars.el (ess-function-pattern): New pattern, thanks to Stephen C. Pope . Fri Aug 22 11:59:32 1997 Anthony Rossini * Makefile (ESS.info): fixed text output (KH) Fri Aug 22 11:59:13 1997 Anthony Rossini * Makefile (html/ESS_toc.html): fixed text output (KH) Fri Aug 22 11:55:33 1997 Anthony Rossini * ess-vars.el (inferior-ess-save-lastvalue-command): new defvar for variable. (KH) Fri Aug 22 11:55:07 1997 Anthony Rossini * ess-vars.el (inferior-ess-retr-lastvalue-command): new defvar for variable. (KH) Fri Aug 22 11:54:27 1997 Anthony Rossini * ess-vars.el (S-plus): removed variable Fri Aug 22 11:51:22 1997 Anthony Rossini * essd-xls.el (XLS-customize-alist): inferior-ess-start-file ("~/.ess-R"). inferior-ess-start-args. Use it. Fri Aug 22 11:43:49 1997 Anthony Rossini * essd-s+3.el (S+3-customize-alist): inferior-ess-start-file ("~/.ess-R"). inferior-ess-start-args. Use it. Fri Aug 22 11:42:34 1997 Anthony Rossini * essd-r.el (R-customize-alist): inferior-ess-start-file ("~/.ess-R"). inferior-ess-start-args. Use it. Fri Aug 22 11:06:34 1997 Anthony Rossini * ess.texi: renamed, from ESS.texi. Changed header. Added info-directory stuff (KH). Fri Aug 22 11:04:02 1997 Anthony Rossini * ess.el: installed new, non CL versions of ess-setq-vars, ess-setq-vars-default. (KH) Fri Aug 22 10:58:05 1997 Anthony Rossini * ess-xtra.el: ESS-version -> ess-version (KH) Fri Aug 22 10:57:13 1997 Anthony Rossini * ess-vars.el (ess-version): incremented. ESS-version -> ess-version. (AJR) Fri Aug 22 10:56:11 1997 Anthony Rossini * ess-inf.el (inferior-ess-mode): ESS-version -> ess-version (KH) Fri Aug 22 10:56:11 1997 Anthony Rossini * STARTED : ESS-4.9-b11. All DOCUMENTATION NOW IN `ChangeLog'. Tue Jul 29 07:14:01 1997 Anthony Rossini * ess-vars.el: transcript fontlock vars now here. Mon Jul 28 09:57:57 1997 Anthony Rossini * ess-site.el: explanatory comments for dialect customization. Mon Jul 28 09:55:58 1997 Anthony Rossini * ess-vars.el: added defvars for ess-site things below. Still need to add to essd-*.el's! * ess-site.el: more customizations for the executable names. Need to move defvars to ess-vars. * README: edited authors again. * Makefile: S-mode -> ESS. * Makefile: updated version number. * ess-site.el: moved/uncommented essd-s?.el * essd-s3.el: provide the right package! * Makefile: S-mode -> ESS. * ess-site.el: reformat. * ess-site.el: fixed typo. * ess.el: made ess-setq-vars* clean. No ugly hacks! cleaned up authorship. * Makefile: updated version number. * ess.el (ess-setq-vars-default): made nice. * ess.el (ess-setq-vars): made nice. 1997-07-25 Anthony Rossini * ess-mode.el (ess-mode-map): newline/return mapped to 'newline-and-indent, by popular demand. * General : variable definitions in ess now moved to ess-vars. ess now only contains useful code for distinguishing between processes. 1997-07-01 Anthony Rossini * ess-inf.el (inferior-ess): removed make-local-variables which should've been handled in ess.el (ess-multi): same as above. (ess.el): fixed same. (ess-execute): removed make-local-variable 'ess-local-process-name (ess-force-buffer-current): removed make-local-variable 'ess-local-process-name (inferior-ess): let (done 0), for constructing inferior-ess-procname. * ess-site.el: added RMH's new docs, `ess-keep-dump-files'. * ess-inf.el (ess-quit): doc string edited. * ess-mode.el (ess-check-source): RMH's solution. 1997-06-16 Anthony Rossini * Makefile: trans->trns. Idea is to keep file names at the 8+3 length for archaic OSs... Sun Jun 15 04:39:09 1997 Anthony Rossini * NOTE: SEE RCS Log files for program updates. All language/dialect specific code attempted to be moved to essd files (d=dialect :-).. need more movement, though... * ess.el: Documentation update. Wed May 21 14:47:17 1997 Anthony Rossini * S-mode has now become ess-mode. (Emacs Speaks Statistics). Thu Apr 24 18:10:32 1997 Anthony Rossini * TODO: (MM) word wrap mistake. * S-help.el (S-help-mode-map): (MM) Patch to bind ^M to next-line. Whoops. (AJR) changed to \C-m. Wed Apr 23 09:29:53 1997 Anthony Rossini * S.el (S-mode-version): incremented. * S-help.el (S-display-help-on-object): (MM) S-help-sec-regex, S-help-sec-keys-alist take correct values (see yesterday's log for inferior-S-help-command). Need to do similar with inferior-S-help-command hack! * S.el : (MM) S-help-sec-regex, S-help-sec-keys-alist buffer-local. Tue Apr 22 19:19:47 1997 Anthony Rossini * S-mode-4.9-b5 : released. * S-help.el (S-display-help-on-object): Added curr-help-command (since inferior-S-help-command is buffer-local, need to get BEFORE switching buffers). * S-site.el (S,R,XLS): setq-default to setq. (R): "cat" -> inferior-S-pager. Buffer local? (XLS): cleaned up. (S-XLS-shortcut-post-run-hook): new function. (S-XLS-shortcut-pre-run-hook): new function. (R): cleaned up. (S-R-shortcut-post-run-hook): new function. (S-R-shortcut-pre-run-hook): new function. (S): cleaned up. (S-S-shortcut-post-run-hook): new function. (S-S-shortcut-pre-run-hook): new function. * S-inf.el (inferior-S): removed useless make-local-variables * S.el : declared many variables via make-variable-buffer-local. * S-site.el : removed useless make-local-variables... * S-inf.el (S-multi): setq -> setq-default, for inferior-S-prompt. * buffer-local stuff moved to S.el. Mon Apr 21 21:35:22 1997 Anthony Rossini * S-mode-4.9-b4 : released. * S-site.el (XLS): wrong help; syntax confusion :-). * S-inf.el (inferior-S): moved the setting of the history file. * S.el: inferior-S-program should be global? Sun Apr 20 12:30:36 1997 Anthony Rossini * S-inf.el: moved S-force-buffer-current here, from S-mode. * S.el: (S-version-running): buffer-local. (inferior-S-program): buffer-local. (inferior-S-secondary-prompt): buffer-local. (inferior-S-primary-prompt): buffer-local. * S-site.el (S-transcript-mode): change autoload to point at S-trans. Fri Apr 18 12:01:59 1997 Anthony Rossini * S-site.el: removed stupid comments, rearranged autoloads sensibly. * S-inf.el: Moved `eval-*' commands here from S-mode. Edited autoloads appropriately (must be a better way to deal with the bytecompiler and file/function synchronization!) * S-mode.el: Moved `eval-*' commands to S-inf. Thu Apr 17 12:58:34 1997 Anthony Rossini * S.el (S-mode-font-lock-keywords): changed ("<-" . font-lock-reference-face) to ("< * S-trans.el: removed byte-compiler errors. * S-mode.el (S-indent-exp): commented out, in "let", restart and last-sexp. * S-inf.el (S-eval-visibly): See: "Terrible Kludge". This code needs to be "done right (tm)". Last byte-compile problem... :-(. (S-get-process-variable): removed let (not needed?) (S-set-process-variable): removed let (not needed?) * S.el: run-hooks 'S-mode-load-hook before provide 'S. (S-mode-version): update the version. * S-help.el: added autoloads for bytecompile (need to find a cleaner way). Tue Apr 8 06:32:20 1997 Anthony Rossini * S-mode-4.9-b3 RELEASED. * S-site.el (R): use the previously defined variable. (S): use the previously defined variable. (XLS): use the previously defined variable. * S.el (inferior-S-program): changed definition. (inferior-S-program-name): new. (inferior-R-program-name): new. (inferior-XLS-program-name): new. (inferior-S4-program-name): new. * General: put back GNU. But need to check this! * General: removed "FSF GNU" from all files. It's not kosher. Mon Apr 7 07:52:49 1997 Anthony Rossini * S-inf.el (get-S-process): moved to prevent byte-compiler warnings. * S.el: moved user/sys vars from S-mode.el/S-inf/S-help (font-lock): added require. * S-help.el: moved user/sys vars to S.el. * S-site.el: removed (require 'font-lock). * S-mode.el: moved user/sys vars to S.el. * S-inf.el: moved requires and eval-when-compile requires. * S-site.el: moved XLS, R, S here from S-inf. Added local vars at end. Edited commented-out documentation. * S-inf.el: moved XLS, R, S to S-site (XLS, R, S): S0 -> inferior-S (inferior-S): Renamed from S0. * S.el: Documentation cleaned, modified. Old news moved to NEWS files. (S-mode-version): variable updated (wasn't, before. Whoops!) * S-mode-4.9-b2 RELEASED * S.el : removed autoloads (and duplicates) for the modes and inferior processes (which were and are in S-site). * S.el : Commentary: deferred installation instructions to README and S-site. Removed comint stuff, since present in 19.x emacsen. * S.el (S-local-process-name): variable, not a constant. * S-site.el: Added R-mode autoload. * README: query-rep'd "4.8" to "4.9". * S-mode.el (S-mode-map): S-parse-errors binding changed to C-c` Sun Apr 6 14:23:45 1997 Anthony Rossini * S-inf.el (inferior-S-make-comint): S-inf-pager -> inferior-S-pager. * S-site.el (XLS): added XLS autoload. * S-inf.el (inferior-S-make-comint): replaced with Kurt's version (I need to verify this). (inferior-S-pager): New variable. Fri Apr 4 10:38:26 1997 Anthony Rossini * S-mode-4.9-b1 RELEASED * S-site.el: added R as an autoload. * S-inf.el (inferior-S-mode): Added a switch (based on S-proc-prefix) for using inferior-S-input-sender or inferior-R-input-sender. * S-inf.el (inferior-R-input-sender): added (thanks to KH). * S-mode.el (S-eval-paragraph): added. (from S-extras). * S-extras.el: removed S-eval-paragraph * Makefile: More in line with GNU standards. Still WRONG, though. Thu Apr 3 14:38:09 1997 Anthony Rossini * S-help.el: Support for W3 viewing of R files is included. It works (but could be better). Removed until 5.0 :-). * S.el (S-proc-prefix): Moved before S-history-file definition, which now depends on it. * S-help.el (S-submit-bug-report): send to rossini@stat.sc.edu * S-inf.el (inferior-S-mode-map): C-x` should be C-c` (S-parse-errors). Major modes NEVER use C-x prefixes! (inferior-S-mode-map): C-c C-a masks a useful function in comint. Need to find a second prefix for "hotkeys". * S-inf.el (S-object-name-db-file): added variable. (S-create-object-name-db): Use S-object-name-db. * S-inf.el (inferior-S-mode): Changed comint-completion-addsuffix definition, and made buffer-local (thanks: Kurt Hornik). * All_files : S-filenames-map is final name. (-p for functions. Bozo...). * S-inf.el (inferior-S-font-lock-keywords): changed variable name from S-inf-font-lock-keywords. (inferior-S-mode): changed variable name to inferior-S-font-lock-keywords from S-inf-font-lock-keywords. * S-modeadds.el (S-mode-load-hook): changed name of S-inf-filenames-map to S-filenames-map-p * S-inf.el (S-dir-modtime): changed name of S-inf-filenames-map to S-filenames-map-p (S-object-names): changed name of S-inf-filenames-map to S-filenames-map-p * S-mode.el (S-check-modifications): changed name of S-inf-filenames-map to S-filenames-map-p * S-inf.el: removed S-inf-filenames-map defvar. * S.el: Moved S-inf-filenames-map defvar here, renamed as S-filenames-map-p. Wed Apr 2 09:38:47 1997 Anthony Rossini * TODO: updated ALL conversations and reasonings. * Makefile: removed extraneous commented-out parts. Changed Prefloads, default Emacs, compilation flags, and infodir location. * S-mode.el (S-dump-object): added indent-region (thanks: Peter Dalgaard, ). * S-mode.el : changed default for S-else-offset to 0 (thanks: Peter Dalgaard, ). Mon Mar 10 11:30:23 1997 Anthony Rossini * General : moved the rest of the easymenu startup code here * General : edited Makefile for easier XEmacs distribution * S-site.el : added example Splus call (thanks: Claudia Yastremiz ) Fri Mar 7 17:42:36 1997 Anthony Rossini * S-trans.el : For easymenu menus, moved code from S-menu here. * S-mode.el : For easymenu menus, moved code from S-menu here. * S-inf.el : For easymenu menus, moved code from S-menu here. * Added code from Kurt H. Mon Feb 10 11:14:42 1997 Anthony Rossini * S-help.el : added/checked some of Martin's older patches (most in the 4.8.6 series). * Makefile (patch): added $(GZCAT) (normally zcat, but sometimes it's gzcat, if sys admins are GNU-suspicious). * S-mode.el: XEmacs compatibility, maintaining Emacs compatibility. * S-inf.el: See above. * S-trans.el: See above. * S-menu.el: added easymenu support, XEmacs menu hooks. Mon Oct 14 16:24:14 1996 Local * S-inf.el: inferior-S-program -- only new if S <--> R Tue Jun 25 08:53:12 1996 Martin Maechler * S-inf.el: (defun R ...); renamed 'S to 'S0; S, R both call S0 after setting variables. * S.el: added autoloads for 'R and 'R-mode. defconst for S-help-S... and S-help-R used in S-inf. * S-site.el: same autoloads * S-help.el : S-help-sec-regex,etc: defconst for S- and R- versions moved to S.el, since used in S-inf * S-mode.el (R-mode): added S-force-buffer-current: optional 2nd arg. 'force' Mon Dec 4 1995 -- Wed May 29 1996 Martin Maechler * S.el: Fixed the syntax-table entry which broke 'beg.-of-function'. New variable S-proc-prefix (for using "R" and "S" simultaneously). * S-inf.el: S-synchronize-evals -> NIL (finally!). S-proc-name : Use new variable S-proc-prefix instead of hardwired "S"; the same for other places. S-execute-search: Use new variable inferior-S-search-list-command Switched binding of C-c C-k to S-force-buffer-current. Fixed LONG-STANDING bug in S-eval-region (when >= 2 S-processes) now using (get-S-process ...) instead of hardwired "S". * S-help.el: added S-eval-line-and-next-line to key bindings. Changed binding of request-a-process to C-c C-k as in other S-modes. New configurable variable S-help-sec-regex (for R help) * Makefile: texi, not texinfo; support for non-GNU tar; minor.. Mon Dec 4 1995 -- Wed May 29 1996 Martin Maechler * S.el: Fixed the syntax-table entry which broke 'beg.-of-function'. New variable S-proc-prefix (for using "R" and "S" simultaneously). * S-inf.el: S-synchronize-evals -> NIL (finally!). S-proc-name : Use new variable S-proc-prefix instead of hardwired "S"; the same for other places. S-execute-search: Use new variable inferior-S-search-list-command Switched binding of C-c C-k to S-force-buffer-current. Fixed LONG-STANDING bug in S-eval-region (when >= 2 S-processes) now using (get-S-process ...) instead of hardwired "S". * S-help.el: added S-eval-line-and-next-line to key bindings. Changed binding of request-a-process to C-c C-k as in other S-modes. New configurable variable S-help-sec-regex (for R help) * Makefile: texi, not texinfo; support for non-GNU tar; minor.. Wed Dec 13 17:27:53 1995 David M Smith * S-inf.el (S-search-list): Would return nil if S-search-list was nil and the search path had not changed (which could happen, apparently) Mon Dec 4 10:21:52 1995 David M Smith * S.el: New syntax table. * S-trans.el: New bindings. * S-mode.texi: Updates for 4.8 * S-mode.el: Autoload and bind S-list-object-completions. S-request-a-process moved to C-c C-k. S-force-buffer-current: new function * S-menu.el: Many updates. * S-inf.el: S-object-list: docstring update S-directory is now used as the default S directory. The current buffers default directory is used if it is nil. get-S-process: better error message. inferior-S-mode: Use comint-input-filter-functions instead of the deprecated comint-input-sentinel. Don't anchor paragraph regexps. S-list-object-completions: new function S-modtime-gt: bugfix S-complete-filename: don't use comint-last-inout-start * S-help.el: Make autoloads from S-inf.el. * Makefile: Deleted useless SCRATCH vbl. Use S-mode.texi, not S-mode.texinfo. Thu Nov 30 13:10:17 1995 David M Smith * Makefile: Version update Mon Nov 13 14:46:13 1995 David M Smith * S.el (S-mode-syntax-table): Made syntax table independent of c-mode-syntax-table * S-mode.el (S-check-modifications): Changed regexp to allow `w' and `_' class syntax in object names Wed Aug 23 16:37:10 1995 David M Smith * S-inf.el (S-complete-filename): Checked form the beginning of the *last* command to determine if we should complete a filename. History expansions work now. Mon Aug 21 15:35:29 1995 David M Smith * S-menu.el (S-transcript-mode-menu): New menu (S-inferior-S-mode-menu): Lotsa updates. * S-trans.el (S-transcript-copy-command): Renamed from S-transcript-copy-commmand (mmm). Also switches to the S process. (S-trans-font-lock-keywords): strings keep other highlighting Lots of autoloads for S-mode.el stuff * S-help.el: Autoloads for stuff in S-mode.el Tue Aug 8 11:06:43 1995 David M Smith * S-mode.el (S-dump-object-into-edit-buffer): Run a lambda S-source-directory in the process buffer (S-dump-object-into-edit-buffer): As for process if none attached * S-inf.el (S): Use default-directory only if S-directory is nil. * S.el (S-directory): Doc update * S-inf.el (S-modtime-gt): Fixed to give correct results (inferior-S-mode): Add S-search-path-tracker to comint-input-filter-functions, not comint-input-sentinel. Tue Aug 1 16:13:14 1995 David M Smith * S-inf.el (inferior-S-mode): Don't anchor paragraph-start and paragraph-separate with "^" (for 19.29). Tue Aug 1 14:44:32 1995 David M Smith * S-mode.el (S-eval-region): Make sure S-local-process-name is set. * S-inf.el (get-S-process): Better error message when no processes are running. * S-mode.el (S-eval-region): Make sure S-inf is loaded Thu Jul 27 16:43:01 1995 David M Smith * S-inf.el (S-list-object-completions): New function (inferior-S-mode-map): Bind it to M-? Tue Jul 25 16:07:10 1995 David Smith * Version 4.7 released. * Makefile (info): New target (install): Ignore errors in second cp in case LISPDIR==. (clean): Junk all the tex crap, too (VERSION): New variable (distrib): Use it (AUXFILES): Include ChangeLog (distrib): Make sure Makefile is writeable * S-inf.el (S-execute-screen-options): Added documentation. (S-multi): Use S-post-run-hook * S.el (S-keep-dump-files): Expanded documentation. (S-delete-dump-files): Expanded documentation. (S-post-run-hook): New variable. Mon Jul 24 11:58:22 1995 David M Smith * S.el: Default for S-keep-dump-files is 'check * S-mode.el (S-mode): Make S-keep-dump-files buffer-local. (S-load-file): Meaningful values of S-keep-dump-files are nil, check, ask and anything else. (S-dump-object): If S-keep-dump-files is 'check, don't ask for confirmation when loading. * S-mode.el (S-dump-object-into-edit-buffer): Bug-fix; you can now create the Src directory if it doesn't exist. * S-site.el (window-system): Only add turn-on-font-lock to mode hooks if window-system is non-nil. Also add to S-transcript-mode-hook. Thu Jul 20 12:21:43 1995 David M Smith * S-inf.el (S-inf-font-lock-keywords): Strings in input don't de-fontify anymore. Wed Jun 28 12:15:57 1995 David M Smith * S-mode.texinfo: Updated e-mail addresses, and used @@ instead of @. * S-mode.el (S-mode): Use S-mode-font-lock-keywords, not S-inf-font-lock-keywords Mon Jun 26 12:14:10 1995 David M Smith * Version 4.6 released * TODO, S-mode.texinfo, NEWS, Makefile: Update for 4.6 Mon Jun 26 12:09:55 1995 David M Smith * S-trans.el: Font-lock support. * README: Update for 4.6 * S.el: Version update: 4.6 S-local-process-name added. * S-site.el: Deleted hilit19 patterns (font-lock patterns are now in the individual source files). S-site should now be much more lightweight to load. Used add-to-list for the load-path. .s for S-mode files in auto-mode-alist by default. * S-mode.el: Font-lock support. Fri Jun 23 13:56:54 1995 David M Smith * S-inf.el: Doesn't call comint-output-filter-functions in S-eval-visibly any more (and so works in 19.29). Font-lock support. Bound M-RET to S-transcript-send-command-and-move. Wed Oct 26 12:37:15 1994 David M Smith * S-mode.el (S-check-modifications): Fixed a bug which occurred when the object name could not be found. Tue Oct 25 16:28:54 1994 David M Smith * S-inf.el: Moved S-local-process name to S.el. (S-eval-visibly): Bugfix involving comint-last-output-end Wed Jun 1 11:03:34 1994 David M. Smith (maa036@mathssun5) * Version 4.5 released. * Makefile: Update to distrib target * Makefile: Bugfix with info install * README: Update for 4.5 * NEWS: *** empty log message *** Wed Jun 1 10:29:30 1994 David M. Smith (maa036@mathssun5) * S-menu.el: Bugfix Mon May 30 16:34:53 1994 David M. Smith (maa036@mathssun5) * S-site.el: Major revision. * README: More detail in INSTALL section. * TODO: Initial revision * S.el: Version number update: 4.5 * Makefile: Bugfix in SOURCES * Makefile: added S-mode.texinfo to AUXFILES * Makefile, NEWS, README: Initial revision Fri May 27 17:18:50 1994 David M. Smith (maa036@mathssun5) * S-mode.el, S-trans.el: Binding changes * S-help.el: Binding change * S.el: Define S-help as an alias for S-display-help-on-object. * S-inf.el: S-view-at-bottom: deleted function and keybinding Changed bindings of S-display-help-on-object and S-execute. * S-menu.el: Many modifications to S-inferior-S-mode-menu, including incorporation of the old hotkey menu. * S.el: Autoload for S-load-file. * S-help.el: S-submit-bug-report: new function * S.el: Added autoloads for S-dump-object-into-edit-buffer and S-parse-errors. * S.el: Added an autoload for S-submit-bug-report * S-mode.el: Added a provide call. Can't imagine why it wasn't there before. * S-mode.texinfo: Initial revision Fri May 13 09:57:00 1994 David M. Smith (maa036@mathssun5) * S.el: Version number update: 4.4 * S-inf.el: bugfix * S-inf.el: S-compiled-dir: new function S-object-names: support it * S-inf.el: Support for S-object-name-db. S-object-names: modified S-get-words-from-vector: new function S-create-object-name-db: new command Wed May 11 14:18:27 1994 David M. Smith (maa036@mathssun5) * S-trans.el: Defined S-transcript-send-command-and-move * S-menu.el: Dunno. Fri Apr 29 14:30:55 1994 David M. Smith (maa036@mathssun5) * S-mode.el: S-continued-statement-p: minor bugfix. Removed the (bolp) test; I don't know why it was there but it caused top-level statements to be indented. S-insert-local-variables: removed (obsolete) * S-mode.el: S-dump-object-into-edit-buffer: rewrite. Implemented S-delete-dump-files. S-dump-object: new function S-find-dump-file-other-window: new function * S.el: New option S-delete-dump-files * S.el: Version number change (4.3) Thu Apr 28 12:58:41 1994 David M. Smith (maa036@mathssun5) * S-mode.el: Definition and implementation of S-mode-silently-save. Fri Apr 22 14:40:56 1994 David M. Smith (maa036@mathssun5) * splitup2/S-inf.el (S-get-directory): Cause an error if an invalid directory is specified. Wed Mar 16 14:19:31 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-inf.el (inferior-S-primary-prompt): prompts are optionally followed by one space. (S-complete-object-name): No longer runs indent-for-tab-command (S-after-pathname-p): deleted (S-complete-filename): New function (inferior-S-mode): Better completion support, thanks to the new comint. Wed Feb 23 15:50:28 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-inf.el (S-search-list): Bugfix where relative pathnames in search list were expanded in wrong directory Fri Feb 18 19:27:10 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-mode.el (S-check-modifications): Don't cause an error if the source file has been deleted. Tue Feb 15 12:11:42 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-inf.el (S-temp-buffer-p): Deleted. There is no longer any dependence on this variable: S-local-process-name suffices. (S-local-variables-string): Deleted. File extensions should be good enough for setting the mode. (S-cleanup): Simplified. Doesn't delete files. * splitup2/S-help.el (S-help-mode): Make S-local-process-name local. * splitup2/S-mode.el (S-mode): make S-local-process-name permanent-local. (S-insert-function-templates): deleted, S-function-template has this functionality now. (S-function-template): May be nil or a string. Point is placed after first open. (S-dump-object-into-edit-buffer): If S-keep-dump-files is nil, don't delete files, but don't make backups either. Mon Feb 14 14:53:17 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-mode.el (S-check-modifications): New function (S-load-file): Rewrite. Only ask for a filename if the current buffer is not in S-mode. Always offer to save. * splitup2/S-inf.el (S-inf-filenames-map): New variable (S-object-names): Use it (S-extract-onames-from-alist): Supply directory name (S-get-modtime-list): Supply directory name for quicker completions (S-object-modtime): New function (S-modtime-gt): New function Fri Feb 11 14:49:29 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-mode.el (S-mode): Set parse-sexp-ignore-comments to t; there are no longer any limitations with this in elisp. Wed Feb 9 13:25:12 1994 David M. Smith (maa036@mathssun5.lancs.ac.uk) * splitup2/S-trans.el (S-transcript-send-command-and-move): New function (S-transcript-send-command): Doesn't move any more. * splitup2/S-inf.el (S-eval-visibly): Call comint-output-filter-functions Wed Jan 26 11:15:46 1994 David Smith (maa507@mathssun5.lancs.ac.uk) * S.el (S-search-list): Caches result in S-search-list (S-execute-objects): Use it (S-search-list ): Now just a cache. Don't access directly Completions are now calculated on demand; as a result the first completion in a session will take a long time. The results are cached, however, so remaining completions should be fast. Sun Jan 23 17:56:46 1994 David Smith (maa507@mathssun5.lancs.ac.uk) * S.el (S): If S-ask-for-S-directory is unset, set default-directory to S-directory. Wed Jan 19 16:16:10 1994 David Smith (maa507@mathssun5.lancs.ac.uk) * S-site.el: Added (cond (window-system ...)) calls so that all users (even those without window systems) can safely require this file. Thu Jan 6 15:15:53 1994 David Smith (dsmith@spam.maths.adelaide.edu.au) Version 4.1alpha released to wingra * S.el: deleted S-set-display and associated variables. Fri Dec 24 11:56:00 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-command): Rewrite. Now uses a new filter to redirect output to the buffer; comint never sees the output. This filter could feasibly be accomodated to detect the prompt itself; allowing for an "in the background" implementation of S-command. (S-process-sentinel): Reports date; useful if you have run many S sessions in one transcript file. Thu Dec 16 12:47:38 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-multi): Ask for transcript file, maybe (S-ask-about-transfile): new variable (S-get-directory): replaces S-set-directory Wed Dec 15 12:10:11 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-loop-timeout): Increased Mon Dec 13 10:11:25 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-command): Avoids calling comint-output-filter-functions until the last minute. (S-complete-object-name): Complete rewrite of completion routines. Completion should now be accurate in every situation: the only way to make it wrong is to use assign() to assign into a dataframe not at position 1. Uses objects() to make listings, so you don't get .Data, .Help etc. Should now be able to make this work for DOS users. (S-object-list): New buffer-local vbl; cache of completions Thu Dec 9 12:08:09 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-process-sentinel): Can now see message after q() Tue Nov 16 09:25:41 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-mode): kill-all-local-variables (S-insert-local-variables): Use ### instead of # in local variables section. Mon Nov 15 10:31:02 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (inferior-S-mode): Changed comint-after-partial-pathname-command to comint-after-partial-filename-command (new comint) Sun Nov 14 17:18:55 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el: Version 4.00alpha. Made available for FTP, and announced on the S-mode mailing list Fri Nov 12 12:36:06 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-transcript-mode): Created. (S-execute-screen-options): Added. Thu Nov 11 12:30:06 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-find-help-file): More intuitive defaults when requesting help generated by S-read-helpobj-name-default. (S-eval-visibly): Doesn't wait for prompt after the last line of text has been sent. (inferior-S-send-input): Big improvement in the handling of multi-line inputs. Users should use LFD (not RET) to continue incomplete commands. Should automate this. Thu Oct 7 14:45:00 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (inferior-S-mode): Few mods to make it work with the new comint. Mon Sep 27 11:21:56 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (inferior-S-get-old-input): Now separates multi-line commands by newlines instead of spaces. This produces messier output, but avoids S's 255 char line limit for commands. Sun Sep 26 17:38:59 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-kill-buffer-function): Added to kill-buffer-hook in the process buffer. Fri Sep 17 11:23:36 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-display-temp-buffer): Uses temp-buffer-show-function instead of popper. (inferior-S-mode): Fixed a typo of paragraph-separate appearing as paragraph-start. Wed Sep 15 11:47:51 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el: Converted old E18 variables (buffer-flush-undo, comment-indent-hook) to E19 versions. Removed the require for comint-extra -- now contained in the new comint.el. Removed autoload for comint-isearch -- that's the user's decision. (inferior-S-prompt): Now generated from inferior-S-primary-prompt and (new variable) inferior-S-secondary-prompt Tue Sep 14 09:33:03 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-multi): Makes use of Simon Marshall's new comint.el. New variable S-history-file for saving histories. Calls comint-read-input-ring. Sets the sentinel. (S-process-sentinel): Created. Automatically saves the history ring if the S process dies. Sun Sep 12 18:53:40 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el: (S-multi). Now always switches to the buffer associated with process N, if available. (inferior-S-make-comint): New calling procedure; bufname is the literal buffer name (no *'s are added); procname is the process name to use. Tue Sep 7 16:20:11 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (inferior-S-mode-map): Unbound comint-[mp]search input, and comint-isearch, as I haven't tested them yet. (inferior-S-mode): replaced input-ring-size with comint-input-ring-size (Vivek Khera ). * comint-extra.el: Added comint-msearch* and comint-psearch*, commented out in the E19 distribution of comint.el * comint-isearch.el: Back in the distribution Fri Sep 3 16:20:28 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (S-mode): Replaced the documentation string, and removed the code which set it explicitly. Doing this was breaking the byte compiler. Version 3.63 Wed Aug 25 17:36:57 1993 David Smith (dsmith@spam.maths.adelaide.edu.au) * S.el (inferior-S-send-input): Added a hook: S-send-input-hook, so that I could do nice things with highlighting. This will probably disappear or change. Sat Aug 14 14:48:11 1993 David Smith (dsmith@spam) * S.el (S-extract-onames-from-alist): Modified so that S-complete-object-name will work in the minibuffer (e.g. through command S-execute.) * S.el: Restructured the entire S.el file into meaningful sections. The file now uses Outline mode. * S.el: Tek mode is no longer supported. Moved all Tek-related variables and functions to S-tek.el, and commented out any code references to them. * S-tek.el: This file is no longer supported. Moved all Tek-related functions and variables in S.el to the end of this file. Wed Aug 4 16:35:24 1993 David Smith (dsmith@spam) * S.el (S-complete-object-name): Fixed regexp so that completion over lists works properly. Thu Jul 22 12:25:46 1993 David Smith (maa507@mathssun4) * S.el: Uses s-menu instead of s-simple-menus. * s-menu.el: Totally rehacked from s-simple-menus.el to use easymenu.el, to take advantage of Emacs 19 menus. * S.el: Rehacked the multiple process code so that local variables are used to store process-specific variables. I really don't know why I didn't do this in the first place. As a result multiple processes actually seem to work, now. (S-request-a-process): Now enters initial input Sun Jul 18 12:15:27 1993 David Smith (maa507@mathssun4) * S.el: Created this change log file, and moved the change log from S.el here. The following is from the original Changelog section of S.el Release 2.1 on October 14, 1991 to statlib@stat.cmu.edu, and to the elisp archives at OSU (brennan@dg-rtp.dg.com (Dave Brennan)) and announced on internet.s-news, netnews.gnu.emacs.sources, & andrew.programs.S ------------------------------------------------------- Jul 26 1991 Frank Ritter * added S-mode-load-hook & S-pre-run-hook and testing by neilc@research.att.com Jul 9 1991 Frank Ritter * Changed S-command to use a register rather than the kill ring. * Better file header, comments now at 60 col so mailers wont' eat them. * Better S-extract-word-name. * Added S-mode-version variable * Changed syntax table to read |#; appropriately Wed Nov 28 11:03:50 1990 Ed Kademan (kademan at hermes) * Make the S-mode-syntax-table a slightly modified version of the c-mode-syntax-table instead of a version of the one for lisp. Sat Nov 10 12:41:52 1990 Ed Kademan (kademan at hermes) * Made run-S and run-s commands synonymous with the function S. Fri Oct 19 12:41:52 1990 Ed Kademan (kademan at hermes) * Made S-directory a user modifiable variable. S will run from that directory. Thu Oct 18 12:41:52 1990 Ed Kademan (kademan at hermes) * Added function S-nuke-help-bs to clean up nroff style text in the S help buffer. This function is a modification of nuke-nroff-bs from man.el. ------------------------------------------------------- Unnumbered version released dated Thu Jun 14 09:56:56 CDT 1990 Fri Jan 17 1992 Dave Smith (dsmith@stats.adelaide.edu.au) * Help mode for reading files. When asking for an object to run help on, completion is over those help files that exist. * Added object name completion, and made S-get-object-list efficient enough to make it worthwile. * Error parsing for loaded files * Better customization of file-names, with sensible defaults * Sensible buffer names for object buffers * Corrected definition for `.' in syntax table * Improved (and simplified) S-read-object-name-default * Included pager='cat' to default help-command specification * Added a call to run-hook for S-pre-run-hook * Changed keymaps to conform with GNU guidelines (i.e. no \C-letter bindings) * S-command has a new third argument, visible Tue May 27 1992 Dave Smith (dsmith@stats.adelaide.edu.au) * now copes with dynamically changing prompts (reported by Doug Bates) Thu May 29 1992 Dave Smith (dsmith@stats.adelaide.edu.au) * Added S-execute, modified S-execute-* to use it. Mon Jun 22 1992 dsmith * Added S-mode editing commands written by Ken'ichi Shibayama (shiba@isac.co.jp). A big win. * Removed the redundant argument to S-switch-to-end-of-S * S-function-pattern improved * added S-eval-visibly, S-eval-visibly-p and modified S-eval-* to use them * added S-eval-line-and-next-line * eval commands can now echo in the process buffer * added S-kill-output and S-view-at-bottom * added a binding for comint-isearch and autoloaded it * added S-execute-in-tb. S-parse-errors now takes prefix arg. Thu Jun 25 1992 dsmith * Moved some doctrings to comments (Frank Ritter) * The Tek stuff now lives in a separate file (Frank Ritter) * Fiddly C-c ESC M-. bindings in S mode and Help mode moved to C-c M-. bindings (Martin Maechler) * S-execute-objects now uses variable inferior-S-objects-command whose value depends on S version. (Ken'ichi Shibayama) * Symbols given uniform prefixes: S- or inferior-S- (Frank Ritter) -- Version 3.41 released to Statlib and Emacs Archive -- Tue Jul 7 11:56:59 CST 1992 dsmith * S-execute-attach now updates the internal search list. This is a manifestation of a general bug: S-command doesn't call S-search-path-tracker Wed Jul 29 09:38:54 CST 1992 kenichi * Several fixes to indenting code. New variable S-else-offset. Indentation of code not within braces. expression() indentation. Correct handling of in-line comments. Fri Aug 7 10:52:06 CST 1992 dsmith * S-execute now uses S-mode-minibuffer-map. * Setting indentation variables in .emacs now has some effect. * Files retrieved by S-dump-object-into-scratch are now automatically placed in S-mode. Fri Jul 28 1992 R.D.Ball added multi-S to allow multiple S sessions run by ESC-x S or with numeric prefix arg e.g. ESC-2 ESC-x S The current S process is determined by S-process-name, this is modified by typing a return into a non-current S process buffer. Variables S-process-name-list, S-current-process-name and functions update-S-process-name-list, get-S-process to replace (get-process "*S*"), and checks for existence of process, buffer in inferior-S-mode made function S-eval-line-and-next-line keep to the bottom of the S process buffer so user can see results when working interactiveley To do this an optional arg eob was added to S-eval-visibly To go to bottom of window it was necessary to use switch-to-buffer-other-window, but this only when eob is t. Additionally, if S-eval-visibly-at-end is t the functions S-eval-region etc. also display results at the end of the current process buffer. Default directory for starting S is now the current directory for the current buffer. (Set S-use-current-directory to nil to avoid this). Sat Sep 19 18:35:10 CST 1992 dmsith * Modified Rod's multi-S code so that it works properly. S-process-name-list is now an alist whose CARs are the process names and whose CDRs is an alist of variable . value pairs specific to particular processes (so e.g. completion works properly for each buffer.) The function S-get-process-specific-vbls does the work, and any process-specific variables should be mentioned here. S-mode buffers know which process they should evaluate into. * New command S-request-a-process which should be bound to a key. Wed Nov 4 dsmith * S-load-file now informs you if S gave a warning during load. Also, the S-errors buffer is displayed using popper, if available * C-x ` is now also bound in S-mode. * Installed Frank's menus Wed Nov 18 dsmith * Bound M-TAB and M-? to comint completion functions in inf-S-mode and S-mode * In the process buffer, a paragraph is a promwpt, a command and its output, to make the paragraph functions useful * Multiple S sessions in a process buffer are delimited by ^L, to make the page functions useful * In process buffer mode line, name of process is shown in [..] (in case buffer name is changed.) In edit buffers, the name if the process the buffer belongs to is shown in []'s Wed Nov 21 dsmith * Nuked S-make-function, since it is now obsolete * Added S-clean-region * M-TAB in S-mode now completes *files*, not objects. Object completion has moved to C-c TAB. * Bound k in the help buffer to 'kill-buffer. * Local variables are added to files accessed with C-c C-d, if needed. * Fixed incorrect use of 'save-buffer in several places. * Bound C-c C-p to 'S-request-a-process * Replaced S-beginning-of-function and S-end-of-function to DMS's versions, since Frank's don't work with the new function regexp. * New variable S-synchronize-evals (Martin Maechler) * Changed default of S-eval-visibly-p to t. Wed May 12 dmith * Change definition of S-dumped-missing-re to cope with 3.1 ess-17.11/LDA/0000755005071500004540000000000013202324173007720 500000000000000ess-17.11/LDA/README0000644005071500004540000000114513202324173010521 00000000000000Test Literate Data Analysis is a concept that takes Literate Programming and implements it for data analysis. We envision it as a means to record for future use, the trials and tribulations of data analysis which are helpful for future statisticians, and to provide examples of expert analyses (including mistakes and the roads less and not taken). This directory contains work on a tech report for ESS and literate data analysis, as well as examples of literary styles and applications. Files: - ex1.nw : trivial example of the use of multiple code modes - ex2.nw : - lda-ess.tex (.pdf, .ps) : Tech Report ess-17.11/LDA/ex1.nw0000644005071500004540000000134613202324173010707 00000000000000\documentclass{article} \usepackage{noweb} \begin{document} For example, plotting 20 pairs of $N(0,1)$ random variates can be looked at via the two following chunks. <>= ;; -*- mode: xlispstat -*- (def test (normal-rand 20)) (def test2 (normal-rand 20)) (plot test test2) @ The below code demonstrates that there isn't much difference between Lisp and the S language (as implemented through the dialect, R). <>= ## -*- mode: R -*- test <- rnorm(20) test2 <- rnorm(20) plot(test,test2) @ Finally, we could show how to do this in Stata or SAS, as follows: <>= gen test = normal(20) gen test2 = normal(20) plot test,test2 @ \end{document} ess-17.11/Makeconf0000644005071500004540000001130213202324173010703 00000000000000####======= Common Declarations for *all* ESS -*-Makefile-*-s ========== ## To install ESS for all users on your unix system: ## 1. Edit Section 1 and 2 below ## 2. Execute: gmake install ## Section 1 ## Installation variables for your emacs variant ## ## Variable Description ## EMACS use emacs for GNU Emacs, xemacs for XEmacs ## EMACSBATCH emacs/xemacs command for compiling elisp files ## SITELISP Destination of site-lisp; but some variants have no site-lisp ## LISPDIR Destination of compiled elisp files ## INFODIR Destination of info files ## ETCDIR Destination of script and icon files ## PREFIX(DESTDIR) Directory prepended to SITELISP, INFODIR, DOCDIR & ETCDIR ## Specify either PREFIX or DESTDIR to over-ride /usr DESTDIR=/usr PREFIX=$(DESTDIR) ##__ GNU Emacs __ EMACS=emacs SITELISP=$(PREFIX)/share/emacs/site-lisp LISPDIR=$(SITELISP)/ess INFODIR=$(PREFIX)/share/info ETCDIR =$(PREFIX)/share/emacs/etc/ess ##__ XEmacs __ #EMACS=$(PREFIX)/bin/xemacs #SITELISP=$(PREFIX)/share/xemacs/site-packages/lisp #LISPDIR=$(SITELISP)/ess #INFODIR=$(PREFIX)/share/xemacs/site-packages/info #ETCDIR =$(PREFIX)/share/xemacs/site-packages/etc/ess ##__ GNU Emacs __ for Mac OS X with NeXTstep (Cocoa or GNUstep) # PREFIX=/Applications/Emacs.app/Contents/Resources # EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs # SITELISP=$(PREFIX)/site-lisp # LISPDIR=$(SITELISP)/ess # INFODIR=/usr/local/info # ETCDIR =$(PREFIX)/etc/ess ##__ Aquamacs __ (donated by Dan Knoepfle, Mar 26, 2011) # PREFIX=/Applications/Aquamacs.app/Contents/Resources/lisp/aquamacs/edit-modes # EMACS=/Applications/Aquamacs.app/Contents/MacOS/Aquamacs # SITELISP=/Applications/Aquamacs.app/Contents/Resources/lisp # LISPDIR=$(PREFIX)/ess-mode/lisp # INFODIR=/Applications/Aquamacs.app/Contents/Resources/info # ETCDIR=$(PREFIX)/ess-mode/etc ## the following command is the same for recent versions of both Emacs and XEmacs EMACSBATCH = $(EMACS) -batch -no-site-file -no-init-file ## Section 2 ## Installation variables for your unix variant ## ## Variable Description ## SHELL Bourne shell or XPG4 compliant shell ## MAKEINFO program to convert .texi{nfo} to .info ## MAKEHTML program to convert .texi{nfo} to .html ## MAKETXT program to convert .texi{nfo} to .txt ## INSTALLDIR to create directories, if necessary ## INSTALL to copy files, file copying commands expect 2 args: ## 1st) source-file & 2nd) target-directory ## UNINSTALL deletes all arguments ## DOCDIR Destination of other doc files ## DOWNLOAD Download internet file to stdout SHELL = /bin/sh MAKEINFO = LC_ALL=C LANG=en makeinfo # new: MAKEHTML .html .texi {necessary to build 'Index'} MAKEHTML = $(MAKEINFO) --html --no-split --css-include=atouchofstyle.css -o ## ^^^^^^^^^^ today's bandwidth is fast #MAKETXT = $(MAKEINFO) --no-validate --no-headers --no-split -o - MAKETXT = $(MAKEINFO) --no-validate --plaintext --no-split -o - INSTALLDIR = mkdir -p #INSTALLDIR = install -d INSTALL = cp -p #INSTALL = install UNINSTALL = rm -f DOCDIR=$(PREFIX)/share/doc/ess # N.B. $(shell) is a GNU-ism: we need a workaround to be UNIX make friendly DOWNLOAD=$(shell which -s wget && echo 'wget -O -' || which curl) ##DOWNLOAD = wget -O - ##DOWNLOAD = curl ## Section 3 ## For ESS developers only, not part of installation procedure ## ## Variable Description ## ESSVERSION set to the contents of VERSION ## ESSDIR ess- prepended to ESSVERSION ## ESSVERSIONTAG repository tags cannot contain .'s (no longer used) ## GNUTAR the name of GNU tar to support the z option ## SVN_URL SVN repository URL (repo retired) ## UPLOAD_DIR Martin's upload directory ## ESS_HOMEPAGE Martin's svn co https://svn.r-project.org/ESS-web/trunk ## # N.B. $(shell) is a GNU-ism: we need a workaround to be UNIX make friendly ESSVERSION=$(shell cat ./VERSION 2> /dev/null || cat ../VERSION) #F: but the following use of `..` *FAILS* #F: ESSVERSION=`cat ./VERSION 2> /dev/null || cat ../VERSION` #ESSVERSIONTAG=ESS-$(shell sed 's/\./-/g' VERSION) ## SVN repo retired ## Currently only works when run in top ess/ directory; not in etc/ or lisp/ : # ESSfromSVN=$(shell test -d .svn && echo 'yes') # ifeq ($(ESSfromSVN),yes) # ESSVERSIONsvn=$(shell svn up && echo "`date +%y-%m`-r`svnversion`") # else # ESSVERSIONsvn=$(shell echo "`date +%y-%m`_not_svn") # endif # ESSVERSIONTAG=$(ESSVERSIONsvn) ESSDIR=ess-$(ESSVERSION) GNUTAR=tar # SVN_URL = https://svn.r-project.org/ESS UPLOAD_DIR = /u/maechler/emacs/ess-WWW/downloads/ess ESS_HOMEPAGE = /u/maechler/emacs/ESS-web .SUFFIXES: .i3 .m3 .nw .tex .dvi .html .c .h .el .elc ess-17.11/Makefile0000644005071500004540000001267413202324173010712 00000000000000## Top Level Makefile ## Before making changes here, please take a look at Makeconf include ./Makeconf ETC_FILES = # etc/SVN-REVISION etc/ESSR-VERSION ## This is the default target, i.e. 'make' and 'make all' are the same. all install uninstall: $(ETC_FILES) cd etc; $(MAKE) $@ cd lisp; $(MAKE) $@ cd doc; $(MAKE) $@ lisp: $(ETC_FILES) cd lisp; $(MAKE) .PHONY: test test: cd test; $(EMACS) --script run-tests generate-indent-cases: cd test; $(EMACS) --script generate-indent-cases ## the rest of the targets are for ESS developer's use only : # VERSION: # @echo "$(ESSVERSION)" > $@ ## Hmm, this is a bit brittle ... but for distribution, there's no problem ## no longer: using git! # etc/SVN-REVISION etc/SVN-REVISION-tmp: VERSION lisp/*.el doc/*.texi doc/Makefile etc/Makefile lisp/Makefile Makefile Makeconf # (LC_ALL=C TZ=GMT svn info || $(ECHO) "Revision: unknown") 2> /dev/null \ # | sed -n -e '/^Revision/p' -e '/^Last Changed Date/'p \ # | cut -d' ' -f1,2,3,4 > $@-tmp # if [ -s $@-tmp ]; then mv $@-tmp $@ ; elif [ ! -f $@ ]; then echo 'not available' > $@ ; fi # etc/ESSR-VERSION: etc/ESSR/DESCRIPTION # sed -n '/^Version: */{ s///; s/ *$$//p }' $< > $@ ## --- PRE-release --- # Create .tgz and .zip files only # GNUTAR=gtar make tarballs tarballs: $(ESSDIR) @echo "**********************************************************" @echo "** Making distribution of ESS for (pre)release $(ESSVERSION) from $(ESSDIR)/" @echo "** Creating .tgz file **" test -f $(ESSDIR).tgz && rm -rf $(ESSDIR).tgz || true $(GNUTAR) hcvofz $(ESSDIR).tgz $(ESSDIR) @echo "** Creating .zip file **" test -f $(ESSDIR).zip && rm -rf $(ESSDIR).zip || true zip -r $(ESSDIR).zip $(ESSDIR) touch $@ # Create the "release" directory # run in the foreground so you can accept the certificate $(ESSDIR): all RPM.spec cleanup-dist @echo "**********************************************************" @echo "** Making $(ESSDIR) directory of ESS for release $(ESSVERSION)," @echo "** (must have setup git / github with cached authentication, prior for security)" @echo "**********************************************************" @echo "** Exporting Files **" git clone git@github.com:emacs-ess/ESS.git $(ESSDIR)-git mkdir -p $(ESSDIR) (cd $(ESSDIR)-git; $(GNUTAR) cvf - --exclude=.git --exclude=.svn --no-wildcards .) | (cd $(ESSDIR); $(GNUTAR) xf - ) @echo "** Clean-up docs, Make docs, and Correct Write Permissions **" CLEANUP="user-* useR-* Why_* README.*"; ED=$(ESSDIR)/doc; \ if [ -d $$ED ] ; then CD=`pwd`; cd $$ED; chmod -R u+w $$CLEANUP; rm -rf $$CLEANUP; \ $(MAKE) all cleanaux ; cd $$CD; fi # just in case: update from VERSION: cd lisp; $(MAKE) ess-custom.el; $(INSTALL) ess-custom.el ../$(ESSDIR)/lisp/; cd .. cd lisp; $(MAKE) julia-mode.el; $(INSTALL) julia-mode.el ../$(ESSDIR)/lisp/; cd .. $(INSTALL) RPM.spec $(ESSDIR)/ chmod a-w $(ESSDIR)/lisp/*.el chmod u+w $(ESSDIR)/lisp/ess-site.el $(ESSDIR)/Make* $(ESSDIR)/*/Makefile touch $(ESSDIR)/etc/.IS.RELEASE # # Get (the first 12 hexdigits of) the git version into the release tarball: cut -c 1-12 $(ESSDIR)-git/.git/refs/heads/master > $(ESSDIR)/etc/git-ref dist: VERSION tarballs grep -E 'defvar ess-(version|revision)' lisp/ess-custom.el \ $(ESSDIR)/lisp/ess-custom.el touch $@ .PHONY: cleanup-dist cleanup-rel dist cleanup-dist: @echo "** Cleaning up **" rm -f $(ESSDIR)/etc/.IS.RELEASE $(ESSDIR)/etc/git-ref (if [ -d $(ESSDIR) ] ; then \ chmod -R u+w $(ESSDIR) $(ESSDIR)-git && rm -rf $(ESSDIR) $(ESSDIR)-git; fi) ## should only be called manually (if at all): cleanup-rel: @rm -f $(ESSDIR)* ## @rm -f dist lisp/dist $(ESSDIR)* %.spec: %.spec.in VERSION sed 's/@@VERSION@@/$(ESSVERSION)/g' $< > $@ ## --- RELEASE section --- ## NB: Typically use 'make -W VERSION ChangeLog' before 'make rel' <<--- MUST ## since ~~~~~~~~~~~~~~~~~~~~~~~~~ ## ChangeLog often ends up newer than VERSION ChangeLog: VERSION @echo "** Adding log-entry to ChangeLog file" mv ChangeLog ChangeLog.old (echo `date "+%Y-%m-%d "` \ " ESS Maintainers " ; \ echo; echo " * Version $(ESSVERSION) released."; echo; \ cat ChangeLog.old ) > ChangeLog @rm ChangeLog.old git commit -m 'Version $(ESSVERSION)' ChangeLog tag: @echo "** Tagging the release ** 1) pull existing; 2) tag 3) push it" git pull --tags git tag -a -m'release tagging' v$(ESSVERSION) @echo '** Pushing the v$(ESSVERSION) upstream ...' git push origin v$(ESSVERSION) @touch $@ homepage: @echo "** Updating ESS Webpage **" [ x$$USER = xmaechler ] || (echo 'must be maechler'; exit 1 ) cd $(ESS_HOMEPAGE); ./update-VERSION $(ESSVERSION) @touch $@ upload: [ x$$USER = xmaechler ] || (echo 'must be maechler'; exit 1 ) @echo "** Placing .tgz and .zip files **" cp -p $(ESSDIR).tgz $(ESSDIR).zip $(UPLOAD_DIR) @echo "** Creating LATEST.IS. file **" rm -f $(UPLOAD_DIR)/LATEST.IS.* touch $(UPLOAD_DIR)/LATEST.IS.$(ESSDIR) touch $@ #==== RELEASE : ==== rel: ChangeLog dist tag homepage upload @echo "If all is perfect, eventually call 'make cleanup-rel'" touch $@ ## TODO (when MM has GPG set up properly): add this to 'rel' .PHONY: buildrpm buildrpm: dist rpmbuild -ta --sign $(ESSDIR).tgz builddeb: dpkg-buildpackage -uc -us -rfakeroot -tc ## 'clean' shall remove *exactly* those things that are *not* in version control ## 'distclean' removes also things in VC (svn, when they are remade by "make"): clean distclean: cleanup-dist cd etc; $(MAKE) $@ cd lisp; $(MAKE) $@ cd doc; $(MAKE) $@ # rm -f etc/SVN-REVISION* ess-17.11/OONEWS0000644005071500004540000001374713202324173010211 00000000000000== Changes up to version 5.0 : * Works with XLispStat, R, and S(plus). == Changes up to version 4.8.MM6.XE3 : * inferior S-mode: C-c C-a is comint-bol (not attach directories) Output cleaned up (thanks to PD). * Code cleaned up, more according to Emacs-Lisp Style Guide. * Added some code for S4 (not activated yet). (thanks to JMC). * Added some extra configuration code (not activated yet) (thanks to MM). * reports to proper authority (Hornik/Maechler/Rossini). * Makefile updated (i.e. Unpacks into a subdirectory (this has been true for all XE versions, etc)). * Fixed up output from R (KH). == Changes up to version 4.8.MM6.XE2 : * Works with Emacs and XEmacs. I think. Documentation needs to be updated . == Changes up to version 4.8.MM6.XE1 : * XEmacs compatibility added, Emacs compatibility broken. Easymenu now in use. == Changes up to version 4.8.MM6 : * Lots of patches by Martin. S-eval, right? (AJR: I don't know). == Changes up to version 4.8: * Keybinding changes in S Transcript Mode. RET now simply executes the current commant. M-RET executes and moves, C-c RET copies, leaving you in the process buffer. These bindings mirror those in Inferior S mode. * If S-source-directory is a lambda expression, it is evaluated with the process buffer as the current buffer. * The default starting directory is always your home directory. Set S-directory to `nil' to get the old behaviour (use the current buffer's default directory). * In Inferior S mode, S mode and S transcript mode, M-? is now bound to the new function S-list-object-completions. Also, S-resynch is available from the Inf-S menu. * S-request-a-process is now bound to C-c C-k. This frees C-c C-p for the standard comint binding of comint-previous-prompt. * Massive manual update. == Changes in version 4.7: * Probably *only* works with Emacs 19.29 * New semantics for S-keep-dump-files. Values may be nil, check, ask or t; the default is 'check. It's also now buffer-local. See the info file for more details. * New hook, S-post-run-hook, run just after the S process starts. Use this to evaluate code at the start of a session. == Changes in version 4.6: * Works with Emacs 19.29 * Font-lock support in S-mode, inferior-S-mode and S-transcript-mode buffers * M-RET in inferior-S-mode is bound to S-transcript-send-command-and-move * S-site now much more lightweight to load. == Changes in version 4.5: * New, and hopefully simpler, installation procedure. == Changes in version 4.4: * There is now a command to send bug reports: S-submit-bug-report. It is also available from menus (Send bug report). * Keybinding changes: S-view-at-bottom (on C-c C-v) has been deleted. It's functionality is provided by comint's comint-show-maximum-output, on C-c C-e. S-display-help-on-object has moved from C-c C-h onto C-c C-v (and now has an alias, M-x S-help), and S-execute (S-execute-in-tb in S-mode) has moved from C-c C-e to C-c C-t. == Changes in version 4.3: * The variable S-source-directory-generator has been deleted. It's functionality has been subsumed into the variable S-source-directory; if this is not a string it is assumed to be a lambda expression, and behaves in the same was as S-source-directory used to. * New user option S-delete-dump-files. == Changes in version 4.2: * New user variable S-inf-filenames-map. Set this to nil if you are using DOS or some other system with limited filename lengths. * S-local-variables-string and S-temp-buffer-p have been deleted. S-mode no longer adds a local variables section to source files. You should use file extensions to set the major mode. * S-insert-function-templates has been deleted. Its functionality has been taken over by the user variable S-function-template. * S.el has been divided into four separate files, with autoloads. * New file S-site.el for site-level customizations. * S-ask-about-display and X-displays-list have been removed. * User variable: S-ask-about-transfile. If non-nil, asks for a transcript file to use. == Changes in version 4.0: * The TAB key in inferior-S-mode is more versatile; it completes S object names when point follows an object name, and completes filenames when point is in a string. * New mode: S-transcript-mode, for dealing with S transcript files. * Multi-line inputs are now evaluated neatly * inferior-S-prompt is no longer a user variable. Instead, set inferior-S-primary-prompt and inferior-S-secondary-prompt * Uses the comint.el supplied with Emacs 19.20 onwards. * Hook: S-send-input-hook * Emacs version 18 is no longer supported (sorry). Works with Emacs 19 (and, unfortunately, only Emacs 19) * S-tek is no longer supported, and has been removed from the distribution * Works with S version 3.1 == Changes in version 3.5: * Support for multiple S processes. Pass a numeric argument to M-x S to start a new S process. The name of the process associated with the cuurent buffer is shown in the mode line like this: [S2] * In the process buffer, a paragraph is a prompt, a command and its output, to make the paragraph functions useful. Multiple S sessions are delimited by ^L, to make the page functions useful * User variable S-synchronize-evals * New function S-request-a-process, bound to C-c C-p * New function S-clean-region == RELEASE 3.4 INFORMATION * Works with version 3.0 S * Command-line completion of S object names * Recognition of attached data frames * Dedicated S Help mode * Tek graphics support * Several bugfixes and code cleanups * Texinfo documentation == RELEASE 2.1 INFORMATION Improvements since last release (unnumbered of Summer 1990): * Better description provided of functions loaded. * Better header for this file. * S-directory is now a prescriptive rather than just descriptive variable. * better syntax table, so |#; are better recognized and commands using them work better. * we have a version number. Local Variables: mode: text fill-prefix: " " End: ess-17.11/README.md0000644005071500004540000000045413202324173010522 00000000000000[![MELPA Stable](http://stable.melpa.org/packages/ess-badge.svg)](http://stable.melpa.org/#/ess) [![MELPA](http://melpa.org/packages/ess-badge.svg)](http://melpa.org/#/ess) # ESS Git development branch of Emacs Speaks Statistics: ESS. For more info, see our web page at http://ess.r-project.org/ ess-17.11/RPM.spec.in0000644005071500004540000000753013202324173011164 00000000000000# This is an RPM spec file that specifies how to package # ESS for Fedora Core Linux and, possibly, similar systems. %define name emacs-ess %define version @@VERSION@@ %define release 1.tgm Summary: Emacs Speaks Statistics add-on package for Emacs Name: %{name} Version: %{version} Release: %{release} Copyright: GPL Group: Applications/Editors Source: http://ESS.R-project.org/downloads/ess/ess-%{version}.tgz URL: http://ESS.R-project.org/ Packager: Detlef Steuer <.........de> BuildRoot: %{_tmppath}/%{name}-root Prefix: %{_prefix} BuildArchitectures: noarch BuildRequires: emacs Requires: emacs %description This package provides Emacs Speaks Statistics (ESS), which provides Emacs-based front ends for popular statistics packages. ESS provides an intelligent, consistent interface between the user and the software. ESS interfaces with S-PLUS, R, SAS, BUGS and other statistical analysis packages under the Unix, Microsoft Windows, and Apple Mac OS operating systems. ESS is a package for the GNU Emacs and XEmacs text editors whose features ESS uses to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages. %prep %setup -n ess-%{version} ( cd doc && chmod u+w html info ) # fix perms to ensure builddir can be deleted %build make # create an init file that is loaded when a user starts up emacs to # tell emacs to autoload our package's Emacs code when needed cat > %{name}-init.el <<"EOF" ;;; Set up %{name} for Emacs. ;;; ;;; This file is automatically loaded by emacs's site-start.el ;;; when you start a new emacs session. (require 'ess-site) EOF # create a README.RPM file to document any quirks of this package cat > README.RPM < EOF %install %{__rm} -rf ${RPM_BUILD_ROOT} INITDIR=${RPM_BUILD_ROOT}%{_datadir}/emacs/site-lisp/site-start.d PKGLISP=${RPM_BUILD_ROOT}%{_datadir}/emacs/site-lisp/%{name}-%{version} INFODIR=${RPM_BUILD_ROOT}%{_infodir} %{__install} -D %{name}-init.el $INITDIR/%{name}-init.el %{__install} -d $PKGLISP %{__install} -d $INFODIR %{__make} install \ PREFIX=${RPM_BUILD_ROOT}%{_prefix} \ LISPDIR=$PKGLISP \ INFODIR=$INFODIR %{__rm} -f $INFODIR/dir # don't package but instead update in pre and post %{__cp} -a etc $PKGLISP # tuck ess's /etc into lisp dir for easy transport # Uncomment to print the README file after install. # # %post # echo # cat %{_defaultdocdir}/%{name}-%{version}/README.RPM # echo %clean %{__rm} -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,root) %doc README README.RPM ANNOUNCE COPYING VERSION ChangeLog doc %dir %{_datadir}/emacs/site-lisp/%{name}-%{version} %{_datadir}/emacs/site-lisp/%{name}-%{version}/* %{_datadir}/emacs/site-lisp/site-start.d/* %{_infodir}/*.gz %post [ -f /usr/share/info/ess.info.gz ] && \ /sbin/install-info /usr/share/info/ess.info.gz /usr/share/info/dir || : %preun if [ $1 = 0 ]; then [ -f /usr/share/info/ess.info.gz ] && \ /sbin/install-info --delete /usr/share/info/ess.info.gz \ /usr/share/info/dir || : fi %changelog * Fri Oct 15 2004 Tom Moertel 5.2.3-1.tgm - Updated to ESS 5.2.3. * Fri Aug 27 2004 Tom Moertel 5.2.2-3.tgm - Updated ESS URL. - Fixed Summary. * Fri Aug 27 2004 Tom Moertel 5.2.2-2.tgm - Fixed bug: Forgot to include ESS's etc/ directory. * Thu Aug 26 2004 Tom Moertel 5.2.2-1.tgm - Initial build. ess-17.11/VERSION0000644005071500004540000000000613202324173010304 0000000000000017.11 ess-17.11/debian/0000755005071500004540000000000013202324173010542 500000000000000ess-17.11/debian/changelog0000644005071500004540000005033513202324173012342 00000000000000ess (16.10-2) unstable; urgency=medium * debian/emacsen-install: Improvement suggested in #850041 install * debian/control: Increased Standards-Version: to current version -- ess (16.10-1) unstable; urgency=medium * New upstream version released today -- Dirk Eddelbuettel Sat, 22 Oct 2016 11:04:13 -0500 ess (16.04-2) unstable; urgency=medium * debian/emacsen-install: Skip installation for emacs23 * debian/control: Note requirement for emacs24 or later * debian/control: Increased Standards-Version: to current version -- Dirk Eddelbuettel Sun, 22 May 2016 15:30:40 -0500 ess (16.04-1) unstable; urgency=medium * New upstream version released today -- Dirk Eddelbuettel Sat, 07 May 2016 11:46:33 -0500 ess (15.09.2-3) unstable; urgency=low * debian/control: Add Build-Depends on texlive-fonts-recommended -- Dirk Eddelbuettel Sun, 06 Mar 2016 09:39:09 -0600 ess (15.09.2-2) unstable; urgency=low * doc/texinfo.tex: Temporarily adding copy from texinfo 6.0 to avoid breakage with the version included with texinfo 6.1 (Closes: #815734) -- Dirk Eddelbuettel Thu, 03 Mar 2016 07:43:01 -0600 ess (15.09.2-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Fri, 11 Dec 2015 06:17:51 -0600 ess (15.09.1-1) unstable; urgency=low * New upstream version released today * debian/emacsen-install: Call gzip with '-f' to ensure in-place upgrades (Closes: #802953) * debian/control: Shift Maintainer: address from ess-debian list to me, remove now-redundant Uploaders: field (Closes: #803003) -- Dirk Eddelbuettel Mon, 26 Oct 2015 19:22:28 -0500 ess (15.09-1) unstable; urgency=low * New upstream version -- Dirk Eddelbuettel Sat, 26 Sep 2015 21:20:07 -0500 ess (15.03-1-2) unstable; urgency=low * debian/emacsen-compat: Added, with value of zero * debian/emacsen-install: Refreshed * debian/control: Depends: emacsen-common (>= 2.0.8) per Emacsen Policy -- Dirk Eddelbuettel Mon, 04 May 2015 20:29:39 -0500 ess (15.03-1-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Thu, 23 Apr 2015 12:38:30 -0500 ess (15.03-1) unstable; urgency=low * New upstream version released today * debian/control: Change Depends: on r-base-core to Recommends: (Closes: #767043) * debian/control: Add julia to Suggests: * debian/control: Increased Standards-Version: to current version -- Dirk Eddelbuettel Wed, 01 Apr 2015 05:31:31 -0500 ess (14.09-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Sat, 13 Sep 2014 09:03:04 -0500 ess (13.09-1-1) unstable; urgency=low * New upstream version released today * debian/control: Increased Standards-Version: to current version -- Dirk Eddelbuettel Sat, 07 Dec 2013 13:26:27 -0600 ess (13.09-1) unstable; urgency=low * New upstream version released today * debian/control: Increased Standards-Version: to current version * debian/control: Added Build-Depends: on autotools-dev to always use current autotools file -- Dirk Eddelbuettel Fri, 27 Sep 2013 18:41:32 -0500 ess (13.05-3) unstable; urgency=low * debian/emacsen-install (PACKAGE): Do not attempt installation for either emacs22 or xemacs21 which are no longer supported upstream (Closes: #708930, #710438) -- Dirk Eddelbuettel Sat, 01 Jun 2013 13:35:06 -0500 ess (13.05-2) unstable; urgency=low * lisp/ess-stan-d.el: Comment-out the file which should not have been in the release. -- Dirk Eddelbuettel Fri, 17 May 2013 13:54:28 -0500 ess (13.05-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Wed, 15 May 2013 06:31:40 -0500 ess (12.09-2-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Sat, 12 Jan 2013 15:51:47 -0600 ess (12.09-1-1) unstable; urgency=low * New upstream version released twelve hours ago * debian/control: Mention Julia in Description: (Closes: #692468) -- Dirk Eddelbuettel Sat, 22 Dec 2012 00:56:45 -0600 ess (12.09-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Mon, 24 Sep 2012 14:32:49 -0500 ess (12.04-4-1) unstable; urgency=low * New upstream patch version released today -- Dirk Eddelbuettel Thu, 07 Jun 2012 11:52:04 -0500 ess (12.04-3-1) unstable; urgency=low * New upstream patch version released today -- Dirk Eddelbuettel Fri, 01 Jun 2012 08:53:38 -0500 ess (12.04-2-1) unstable; urgency=low * New upstream patch version released today -- Dirk Eddelbuettel Fri, 11 May 2012 06:15:00 -0500 ess (12.04-1-1) unstable; urgency=low * New upstream patch version released today -- Dirk Eddelbuettel Wed, 09 May 2012 08:00:38 -0500 ess (12.04-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Thu, 05 Apr 2012 18:26:34 -0500 ess (12.03-1) unstable; urgency=low * New upstream version released today (with new numbering scheme) * debian/control: Increased Standards-Version: to current version -- Dirk Eddelbuettel Fri, 30 Mar 2012 08:46:40 -0500 ess (5.14-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Sat, 30 Jul 2011 12:34:05 -0500 ess (5.13-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Thu, 03 Feb 2011 16:10:05 -0600 ess (5.12-1) unstable; urgency=low * New upstream version released today * debian/emacen-startup: Follow suggestion by Kevin Ryde in #594750 and use debian-pkg-add-load-path-item as well; also improved emacsen-install script by using soft links instead of copies (Closes: #594750) -- Dirk Eddelbuettel Mon, 08 Nov 2010 16:52:27 -0600 ess (5.11-1) unstable; urgency=low * New upstream version released today -- Dirk Eddelbuettel Tue, 13 Jul 2010 11:50:00 -0500 ess (5.10-1) unstable; urgency=low * New upstream version released this morning -- Dirk Eddelbuettel Tue, 08 Jun 2010 05:29:06 -0500 ess (5.9.1-2) unstable; urgency=low * lisp/*: Upgraded to svn revision 5352 with a fix by Sebastian Luque for the XEmacs incompatibility (Closes: #583857) -- Dirk Eddelbuettel Fri, 04 Jun 2010 09:59:22 -0500 ess (5.9.1-1) unstable; urgency=low * New upstream version -- Dirk Eddelbuettel Tue, 25 May 2010 09:02:10 -0500 ess (5.9-1) unstable; urgency=low * New upstream version released this morning * debian/control: Increased Standards-Version: to current version * debian/source/format: Added with value "1.0" to please lintian -- Dirk Eddelbuettel Fri, 21 May 2010 02:32:53 -0500 ess (5.8-1) unstable; urgency=low * New upstream version released this morning -- Dirk Eddelbuettel Wed, 03 Mar 2010 06:25:04 -0600 ess (5.7.1-1) unstable; urgency=low * New upstream version released this afternoon -- Dirk Eddelbuettel Mon, 07 Dec 2009 16:50:32 -0600 ess (5.7-1) unstable; urgency=low * New upstream version released this morning -- Dirk Eddelbuettel Mon, 07 Dec 2009 06:29:02 -0600 ess (5.6-1) unstable; urgency=low * New upstream version released this morning -- Dirk Eddelbuettel Fri, 04 Dec 2009 11:46:57 -0600 ess (5.5-1) unstable; urgency=low * New upstream version released today * debian/control: Updated Depends: list by adding 'emacs23' to list * debian/control: Updated Homepage: URL to 'ess.r-project.org' * debian/control: Increased Standards-Version: to 3.8.1 + debian/control: Added '${misc:Depends}' to Depends + debian/control: Added 'dpkg (>= 1.15.4) | install-info' -- Dirk Eddelbuettel Wed, 07 Oct 2009 09:31:55 -0500 ess (5.4-1) unstable; urgency=low * New upstream version released today * etc/config.guess: Switched to current version /usr/share/misc/config.guess * debian/control enhancements suggested by Debian bugreport #529914 * debian/control: Increased Standards-Version: to 3.8.1 * debian/control: Added Homepage: fields * debian/compat: Increased to level 7, increaded Build-Depends accordingly * debian/rules: Use dh_prep in cleaning step -- Dirk Eddelbuettel Mon, 08 Jun 2009 15:19:01 -0500 ess (5.3.11-1) unstable; urgency=low * New upstream release -- Dirk Eddelbuettel Fri, 23 Jan 2009 12:00:52 -0600 ess (5.3.10.1-1) unstable; urgency=low * New upstream release 5.3.10 * This release is relabeled 5.3.10.1 as we used the 5.3.10 version number for the bugfix release which turns out to have been a pre-release. -- Dirk Eddelbuettel Fri, 12 Dec 2008 07:25:55 -0600 ess (5.3.10-2) unstable; urgency=low * Updated to SVN revision 4001 which addresses the bug report 'ess: fails setting up' when no R version is present (Closes: #507510) -- Dirk Eddelbuettel Thu, 04 Dec 2008 09:25:16 -0600 ess (5.3.10-1) unstable; urgency=low * New upstream release * Closes open bug 'emacs warning on upgrade' (Closes: #507299) -- Dirk Eddelbuettel Sat, 29 Nov 2008 20:39:02 -0600 ess (5.3.9~svn3950-1) unstable; urgency=low * New packages based on svn revision 3950 approaching release 5.3.9. -- Dirk Eddelbuettel Sat, 04 Oct 2008 18:41:09 -0500 ess (5.3.8~svn3917-1) unstable; urgency=low * New upstream version based on svn revision 3917 approaching release 5.3.8. * debian/rules: Add trailing slash to ess-etc-directory definition -- with thanks to Martin Maechler for finding this as the cause to SAS load issues -- Dirk Eddelbuettel Thu, 17 Jul 2008 19:16:57 -0500 ess (5.3.8~svn3902-1) unstable; urgency=low * debian/emacsen-install: Strengthen regular expression to only exclude ess.el. Thanks to Sebastian Luque for fixing the bug he reported! This now really fixed bug report 482351 addressed in the previous upload. * debian/watch: Updated URL and regular expression -- Dirk Eddelbuettel Fri, 23 May 2008 21:39:40 -0500 ess (5.3.8~svn3899-1) unstable; urgency=low * New upstream version based on svn revision 3899 * lisp/Makefile: Add ess-eldoc to targets (Closes: #482351) -- Dirk Eddelbuettel Thu, 22 May 2008 06:13:36 -0500 ess (5.3.8~svn3895-1) unstable; urgency=low * New upstream version based on svn revision 3895 approaching release 5.3.8. * New maintainers: the package is now maintained by group of Ess and Debian developers that can be reached at ess-debian@r-project.org. Camm's many years of diligent maintenance are gratefully acknowledged. * The group repository is available at https://svn.R-project.org/ESS [ Stefan Theussl ] * debian/control: Change build-depends to texlive packages (Closes: #420945) * debian/emacsen-startup.el: Applied patch kindly supplied by Peter Galbraith to not load Ess when it has been purged (Closes: #440194) * Add details to copyright. [ Martin Maechler ] * doc/refcard/refcard.tex: Switched to fullpage.sty (Closes: #443462) [ Dirk Eddelbuettel ] * New upstream version addresses the following bugs: "options(error=recover) in R confuses ESS (Closes: #400382) "upgrade to fix complaints about .Last.value" (Closes: #442159) "warning: make-variable-buffer-local should be called ..." (Closes: #456001) * Bug report #371058 is being looked at upstream and the missing functionality may be added in the future. All other open bugs are now closed. * debian/copyright: Updated to new parseable form for copyright and license * debian/doc-base: Updated Section: -- Dirk Eddelbuettel Mon, 19 May 2008 21:13:02 -0500 ess (5.3.0-1) unstable; urgency=low * New upstream release * Add tetex-extra to build-depends, Closes: #363080, Closes: #358327. * Apply xemacs key binding fix, Closes: #343234. * Comment out svn references in refcard.tex, as Debian does not have svn.sty at the moment. * Add ess-intro-graphs.pdf and refcard.pdf to docs -- Camm Maguire Fri, 28 Apr 2006 16:27:11 +0000 ess (5.2.12-1) unstable; urgency=low * New upstream release * Bug fix: "ess-mode rebinds [(meta backspace)]", thanks to Rafael Laboissiere (Closes: #343234). Applied patch -- Camm Maguire Wed, 1 Mar 2006 16:13:18 +0000 ess (5.2.11-1) unstable; urgency=low * New upstream release * Newer standards -- Camm Maguire Tue, 22 Nov 2005 23:13:20 +0000 ess (5.2.10-1) unstable; urgency=low * New upstream release -- Camm Maguire Fri, 21 Oct 2005 00:50:06 +0000 ess (5.2.6-1) unstable; urgency=high * New upstream release * chmod -R u+w on orig source -- Camm Maguire Tue, 22 Mar 2005 13:48:07 +0000 ess (5.2.5-1) unstable; urgency=high * New upstream release * Bug fix: "ess: error in doc-base file", thanks to Laurent Bonnaud (Closes: #283699). index.html -> ess.html in doc-base. * Revert to (require 'ess-site) in emacsen-startup now that global-font-lock issue is resolved. -- Camm Maguire Thu, 10 Mar 2005 15:25:56 +0000 ess (5.2.3-4) unstable; urgency=high * Suggests: xlispstat, r-base | r-base-core, pspp -- Camm Maguire Fri, 19 Nov 2004 14:40:23 +0000 ess (5.2.3-3) unstable; urgency=high * repair broken replace-regexp-in-string -> ess-replace-regexp-in-string patch * expand autoload functionality in emacsen-startup -- Camm Maguire Thu, 11 Nov 2004 00:51:43 +0000 ess (5.2.3-2) unstable; urgency=high * Fix autoload on 'R, 'R-mode, and 'XLS -- Camm Maguire Thu, 28 Oct 2004 15:28:56 +0000 ess (5.2.3-1) unstable; urgency=high * New upstream release * Remove debian/info in favor of command line args generated at compile time. * Full make in doc directory * Suggest r-base and xlispstat * Autoload ess-site on M-x R and M-x XLS instead of require in emacs startup. Closes: #271845. * replace-regexp-in-string -> ess-replace-regexp-in-string, Closes: #278253. * Clean README ANNOUNCE doc/html/readme.html doc/html/ess.html -- Camm Maguire Tue, 26 Oct 2004 18:48:59 +0000 ess (5.2.2-2) unstable; urgency=high * Chnage menu entry in ess.el to re-enable R icon functionality. -- Camm Maguire Tue, 14 Sep 2004 13:04:06 +0000 ess (5.2.2-1) unstable; urgency=low * New upstream release * New release Closes: #267588 * new watch file * Added INFO-DIR-SECTION Emacs info es.info * Add ess.dvi and readme.dvi to documentation * minor rules changes to doc/Makefile * comment out ess-display-w3-help-on-object-other-window, as is not finished and contains code called for effect. * Carry forward bug fix to ess-latex.el * Carry forward ess-sysdp.el disabling of local variables * Carry forward renamining of 'nuke-trailing...' in ess-utils.el * Several old doc files no longer available * Add /usr/share/ess/etc directory for icon support. TODO, need to clean the contents. * compat 4 -- Camm Maguire Mon, 30 Aug 2004 16:41:21 +0000 ess (5.1.24-6) unstable; urgency=low * Newer standards * Bug fix: "Half-broken dependency on emacs20", thanks to Martin Michlmayr (Closes: #232757). replace with emacs21 -- Camm Maguire Sun, 15 Feb 2004 20:08:31 +0000 ess (5.1.24-5) unstable; urgency=low * nuke-trailing-whitespace -> ess-nuke-trailing-whitespace to avoid collision with emacs-goodies, Closes: #214583 -- Camm Maguire Tue, 14 Oct 2003 13:35:04 +0000 ess (5.1.24-4) unstable; urgency=low * Remove references to old info files - Closes: #204035 * Newer texinfo adds content to index sections, Closes: #188937 * Newer standards * Lintian cleanups to copyright file -- Camm Maguire Tue, 14 Oct 2003 13:34:54 +0000 ess (5.1.24-3) unstable; urgency=low * Build-depend on texi2html, Closes: #173641 -- Camm Maguire Thu, 19 Dec 2002 14:24:20 -0500 ess (5.1.24-2) unstable; urgency=low * Fix bug in ess-latex.el, Closes: #168792 -- Camm Maguire Thu, 14 Nov 2002 21:46:18 -0500 ess (5.1.24-1) unstable; urgency=low * New upstream release -- Camm Maguire Wed, 30 Oct 2002 15:08:50 -0500 ess (5.1.20-3) unstable; urgency=low * New upstream site -- Camm Maguire Wed, 30 Oct 2002 12:34:16 -0500 ess (5.1.20-2) unstable; urgency=low * flavor ->debian-emacs-flavor in emacsen-startup -- Camm Maguire Mon, 4 Mar 2002 14:26:19 -0500 ess (5.1.20-1) unstable; urgency=low * New upstream release -- Camm Maguire Thu, 28 Feb 2002 15:25:29 -0500 ess (5.1.19-5) unstable; urgency=low * Info files in section Emacs, Closes: #135171 * Newer standards * Build-Depends-Indep * Depends emacs20 | emacsen -- Camm Maguire Sat, 23 Feb 2002 09:40:49 -0500 ess (5.1.19-4) unstable; urgency=low * Reformatted doc string in essl-bug.el, disabled indentation eval local variables in ess-sysdp.el, eliminates warnings when byte compiling, Closes: #132436 -- Camm Maguire Tue, 12 Feb 2002 14:14:02 -0500 ess (5.1.19-3) unstable; urgency=low * /etc/emacs/site-start.d/50ess.el as conffile, Closes: #132138 -- Camm Maguire Mon, 4 Feb 2002 09:12:13 -0500 ess (5.1.19-2) unstable; urgency=low * autoload -> require in emacsen startup -- Camm Maguire Fri, 1 Feb 2002 14:41:16 -0500 ess (5.1.19-1) unstable; urgency=low * New upstream release * chmod u+w doc/user-faq doc/user-manual -- Camm Maguire Mon, 10 Sep 2001 09:47:31 -0400 ess (5.1.18-4) unstable; urgency=low * Fixed emacsen startup, Closes: #102850, Closes: #103142 -- Camm Maguire Tue, 3 Jul 2001 22:02:08 -0400 ess (5.1.18-3) unstable; urgency=low * Autoload instead of load in emacsen-startup -- Camm Maguire Wed, 7 Mar 2001 09:44:33 -0500 ess (5.1.18-2) unstable; urgency=low * Updated Build-Depends -- Camm Maguire Tue, 6 Mar 2001 23:53:35 -0500 ess (5.1.18-1) unstable; urgency=low * New upstream source, Closes #74938 * New source, Closes #86626. * New upstream source, Closes: #81565 -- Camm Maguire Tue, 6 Mar 2001 22:42:01 -0500 ess (5.1.13-3) unstable; urgency=low * Added build-depends line. Closes #70297. * Changed load-path in emacsen-startup to load .elc instead of .el files * Added doc-base registration file -- Camm Maguire Sun, 17 Sep 2000 03:44:16 +0200 ess (5.1.13-2) unstable; urgency=low * Commented out requirement of tex-site in ess-debug.el to avoid dependency on auctex. Closes #65453. -- Camm Maguire Mon, 12 Jun 2000 18:07:47 +0200 ess (5.1.13-1) unstable; urgency=low * New upstream release, fixing various bugs * Incorporated lintian fixes of previous version into this upload to frozen -- Camm Maguire Thu, 30 Mar 2000 00:47:26 +0200 ess (5.1.8-4) unstable; urgency=low * Upgraded to latest standards version * Fixed rules to build on freshly unpacked source * Made local copy of dh_dhelp script in debian/ * Upgraded GPL copyright path -- Camm Maguire Wed, 29 Mar 2000 18:09:18 +0200 ess (5.1.8-3) unstable; urgency=low * Fixed confusing description (closes #51303) * Modified dhelp setup slightly -- Camm Maguire Sat, 11 Sep 1999 15:22:00 -0400 ess (5.1.8-2) unstable; urgency=low * Fixed dhelp support -- Camm Maguire Sat, 11 Sep 1999 13:49:06 -0400 ess (5.1.8-1) unstable; urgency=low * Initial Release. -- Camm Maguire Sat, 11 Sep 1999 12:03:46 -0400 ess-17.11/debian/compat0000644005071500004540000000000213202324173011660 000000000000007 ess-17.11/debian/control0000644005071500004540000000215513202324173012070 00000000000000Source: ess Section: gnu-r Priority: optional Maintainer: Dirk Eddelbuettel Standards-Version: 3.9.8 Build-Depends: debhelper (>= 7.0.0) Build-Depends-Indep: texlive-base, texlive-latex-base, texlive-latex-recommended, texlive-latex-extra, texlive-generic-recommended, texlive-extra-utils, texlive-fonts-recommended, texinfo, autotools-dev Homepage: http://ess.r-project.org Package: ess Architecture: all Depends: ${misc:Depends}, emacsen-common (>= 2.0.8), dpkg (>= 1.15.4) | install-info Recommends: r-base-core Conflicts: dhelp (<= 0.3.12) Suggests: xlispstat, pspp, jags, julia Description: Emacs mode for statistical programming and data analysis ESS ("Emacs Speaks Statistics") is a GNU Emacs and XEmacs mode for interactive statistical programming and data analysis. Languages supported are the S family (S 3/4, S-PLUS 3/4/5/6/7, and R), SAS, XLispStat, Stata, BUGS and Julia. . ESS grew out of the desire for bug fixes and extensions to S-mode and SAS-mode as well as a consistent union of their features in one package. . As of versions 16.04 or later, Emacs version 24 or later is required. ess-17.11/debian/copyright0000644005071500004540000000337213202324173012422 00000000000000This is the Debian GNU/Linux ess package of Emacs Speaks Statistics (ESS) which provides a common, generic, and useful interface, through emacs, to many statistical packages. Upstream Authors: A.J. Rossini , Richard M. Heiberger , Kurt Hornik , Martin Maechler , Rodney A. Sparapani , Stephen Eglen , Sebastian P. Luque , Henning Redestig ESS has a home page at `http://ESS.R-project.org/'. It is free software distributed under a GNU-style copyleft. This package was initially debianized by Camm Maguire on Sat, 11 Sep 1999 12:03:46 -0400. As of May 2008, the package is maintained by a group of ESS and Debian developers which can be reached at ess-debian@r-project.org. Sources were downloaded from http://ESS.R-project.org/downloads/ess/ and changes, typically only to files in the Debian/ directory are fully documented in the file /usr/share/doc/ess/changelog.Debian.gz Copyright (C) 1994 - 2010 Martin Maechler Copyright (C) 1994 - 2010 A.J. Rossini Copyright (C) 1994 - 2010 Richard M. Heiberger Copyright (C) 1994 - 2010 Kurt Hornik Copyright (C) 1999 - 2010 Rodney A. Sparapani Copyright (C) 2002 - 2010 Stephen Eglen Copyright (C) 2010 Sebastian P. Luque Copyright (C) 2010 Henning Redestig License: GPL Earlier copyrights apply to some of the emacs lisp sources files in ../lisp/. These authors have all transferred copyright to the ESS core team. On a Debian GNU/Linux system, the GNU General Public License (GPL) is included in the file /usr/share/common-licenses/GPL. ess-17.11/debian/dirs0000644005071500004540000000003613202324173011345 00000000000000usr/share/emacs/site-lisp/ess ess-17.11/debian/doc-base0000644005071500004540000000104313202324173012060 00000000000000Document: ess Title: Ess Manual Author: A.J. Rossini,Richard M. Heiberger,Kurt Hornik,Martin Maechler,Rodney A. Sparapani,Stephen Eglen,Sebastian P. Luque,Henning Redestig Abstract: ESS is a GNU Emacs and XEmacs mode for interactive statistical programming and data analysis. Languages supported: the S family (S 3/4, S-PLUS 3/4/5/6/7, and R), SAS, XLispStat, Stata and BUGS. Section: Science/Data Analysis Format: Text Files: /usr/share/doc/ess/README* Format: HTML Index: /usr/share/doc/ess/html/ess.html Files: /usr/share/doc/ess/html/*.html ess-17.11/debian/docs0000644005071500004540000000024013202324173011331 00000000000000ChangeLog README doc/html doc/TODO doc/rmh-talk.tex doc/slverb.sty doc/NEWS doc/ESS_intro.tex doc/ajr-talk.tex doc/ess-intro-graphs.pdf doc/refcard/refcard.pdf ess-17.11/debian/emacsen-compat0000644005071500004540000000000213202324173013271 000000000000000 ess-17.11/debian/emacsen-install0000644005071500004540000000351413202324173013467 00000000000000#! /bin/sh -e # /usr/lib/emacsen-common/packages/install/ess # Written by Jim Van Zandt , borrowing heavily # from the install scripts for gettext by Santiago Vila # and octave by Dirk Eddelbuettel . FLAVOR=$1 PACKAGE=ess # edd 03 Jan 2017 cf #850041 #if [ ${FLAVOR} = emacs ]; then exit 0; fi #if [ ${FLAVOR} = xemacs21 ]; then exit 0; fi #if [ ${FLAVOR} = emacs22 ]; then exit 0; fi #if [ ${FLAVOR} = emacs23 ]; then exit 0; fi case ${FLAVOR} in xemacs*|emacs|emacs2[1-3]) exit 0;; esac echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} FLAVORTEST=$(echo $FLAVOR | cut -c-6) if [ ${FLAVORTEST} = xemacs ] ; then SITEFLAG="-no-site-file -no-init-file" else SITEFLAG="--no-site-file --no-init-file" fi FLAGS="${SITEFLAG} -q -batch -l path.el -l ess-comp.el -f batch-byte-compile" #FLAGS1="${SITEFLAG} -q -batch -l path.el -l ess-comp.el -l ess-vars.elc -f batch-byte-compile" ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} # Install-info-altdir does not actually exist. # Maybe somebody will write it. if test -x /usr/sbin/install-info-altdir; then echo install/${PACKAGE}: install Info links for ${FLAVOR} install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz fi install -m 755 -d ${ELCDIR} cd ${ELDIR} FILES=$(ls -1 *.el | grep -vx 'ess.el') ## edd 08 Nov 2010 old code #cp ${FILES} ess.el ${ELCDIR} #cd ${ELCDIR} ## edd 08 Nov 2010 replaced by this (cf #594750) cd ${ELCDIR} for f in ${ELDIR}/*.el; do ln -sf $f . done cat << EOF > path.el (setq load-path (cons "." load-path) byte-compile-warnings nil) EOF touch Install.log ${FLAVOR} ${FLAGS} ${FILES} >> Install.log 2>&1 ${FLAVOR} ${FLAGS} ess.el >> Install.log 2>&1 gzip -9fv Install.log #rm -f *.el path.el exit 0 ess-17.11/debian/emacsen-remove0000644005071500004540000000070513202324173013315 00000000000000#!/bin/sh -e # /usr/lib/emacsen-common/packages/remove/ess FLAVOR=$1 PACKAGE=ess if [ ${FLAVOR} != emacs ]; then if test -x /usr/sbin/install-info-altdir; then echo remove/${PACKAGE}: removing Info links for ${FLAVOR} install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/ess.info.gz fi echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} fi ess-17.11/debian/emacsen-startup0000644005071500004540000000307413202324173013524 00000000000000;; -*-emacs-lisp-*- ;; ;; Emacs startup file for the Debian GNU/Linux ess package ;; ;; Originally contributed by Nils Naumann ;; Modified by Dirk Eddelbuettel ;; Adapted for dh-make by Jim Van Zandt ;; The following code fixes bug #440194 - thanks to Peter S Galbraith ;; skip loading when ;; not ess is fully installed, as this file still exists when the ;; package is removed but not purged. (cond ((not (file-exists-p "/usr/share/emacs/site-lisp/ess")) (message "Package ess removed but not purged. Skipping setup.")) ((not (file-exists-p (concat "/usr/share/" (symbol-name debian-emacs-flavor) "/site-lisp/ess/ess-site.elc"))) (message "Package ess not fully installed. Skipping setup.")) (t ;; The ess package follows the Debian/GNU Linux 'emacsen' policy and ;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, ;; xemacs19, emacs20, xemacs20...). The compiled code is then ;; installed in a subdirectory of the respective site-lisp directory. ;; We have to add this to the load-path: (debian-pkg-add-load-path-item (concat "/usr/share/" (symbol-name debian-emacs-flavor) "/site-lisp/ess")) ;; As ess_5.12-1 we also link the uncompiled code into that directory so no need to load it ;; Put the uncompiled code in the path too ;; (setq load-path (cons (concat "/usr/share/" ;; (symbol-name debian-emacs-flavor) ;; "/site-lisp/ess") load-path )) (require 'ess-site) ) ) ess-17.11/debian/rules0000755005071500004540000000606313202324173011547 00000000000000#!/usr/bin/make -f #-*- makefile -*- # Made with the aid of dh_make, by Craig Small # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. # Some lines taken from debmake, by Christoph Lameter. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # This is the debhelper compatability version to use. #export DH_COMPAT=1 ## edd 16 May 2008 trivial 'orig.tar.gz' creator ## technically, this could be a native Debian package as ## the debian/ is in upstream SVN but it is easier to have ## another degree of freedom for Debian revisions ## if we used just the svn rev: version := $(shell svnversion) ## edd 04 Oct 2008 use changelog entry instead version := $(shell head -1 debian/changelog | perl -nle 'm/\((\S+)-\d\)/ && print $$1') showversion: @echo Version is ${version} tarball: (cd .. && \ tar czf tarballs/ess_${version}.orig.tar.gz ess \ --exclude=.svn \ --exclude=.git \ --exclude=debian ) build: build-arch build-indep build-arch: build-stamp build-indep: build-stamp build-stamp: dh_testdir chmod -R u+w * # $(MAKE) -C doc ess.dvi # $(MAKE) -C doc readme.dvi $(MAKE) -C doc touch build-stamp clean: dh_testdir dh_testroot chmod -R u+w * rm -f build-stamp install-stamp doc/*.info* [ ! -f Makefile ] || $(MAKE) clean rm -f doc/*.dvi #README ANNOUNCE doc/html/readme.html doc/html/ess.html rm -f doc/refcard/refcard.log doc/refcard/refcard.aux dh_clean install: install-stamp install-stamp: build-stamp dh_testdir dh_testroot dh_prep dh_installdirs # cd doc ; $(MAKE) install PREFIX=`pwd`/debian/ess cp lisp/*.el debian/ess/usr/share/emacs/site-lisp/ess ! [ -e debian/ess/usr/share/emacs/site-lisp/ess/ess-site.el ] || \ chmod u+w debian/ess/usr/share/emacs/site-lisp/ess/ess-site.el cat lisp/ess-site.el | \ sed -e 's,(defvar ess-etc-directory nil,(defvar ess-etc-directory "/usr/share/ess/etc/",1'\ -e 's,(while (and (listp ess-etc,(while (and (not ess-etc-directory) (listp ess-etc,1' \ > debian/ess/usr/share/emacs/site-lisp/ess/ess-site.el mkdir -p debian/ess/usr/share/ess cp -a etc debian/ess/usr/share/ess/ rm -f debian/ess/usr/share/ess/etc/BACKBUGS.BAT # rm -f debian/ess/usr/share/ess/etc/ess-sas-sh-command chmod 0755 debian/ess/usr/share/ess/etc/ess-sas-sh-command rm -f debian/ess/usr/share/ess/etc/backbug5 rm -f debian/ess/usr/share/ess/etc/backbug5.sparc rm -f debian/ess/usr/share/ess/etc/backbugs.sparc touch install-stamp # Build architecture-independent files here. binary-indep: build install dh_testdir dh_testroot dh_installdocs dh_installemacsen dh_installinfo $$(find doc -type f -name "*.info*") dh_installchangelogs rm -fv debian/ess/usr/share/doc/ess/ChangeLog dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb # Build architecture-dependent files here. binary-arch: build install source diff: @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install ess-17.11/debian/source/0000755005071500004540000000000013202324173012042 500000000000000ess-17.11/debian/source/format0000644005071500004540000000000413202324173013167 000000000000001.0 ess-17.11/debian/watch0000644005071500004540000000032213202324173011510 00000000000000# format version number, currently 2; this line is compulsory! version=2 # This is one format for an HTTP site, which is the same as the FTP format http://ess.r-project.org/downloads/ess/ess-([-0-9\.]*).tgz ess-17.11/doc/0000755005071500004540000000000013202324210010055 500000000000000ess-17.11/doc/ChangeLog0000644005071500004540000000401113202324173011553 000000000000002013-07-02 Rodney Sparapani * readme.texi/announc.texi: cosmetic changes to title 2013-07-01 Rodney Sparapani * ess.texi/allnews.texi: cosmetic changes to title 2013-06-28 Rodney Sparapani * help-sas.texi (ESS): convert ESS(SAS) to ESS[SAS] in the table of contents as was done for BUGS/JAGS however, this is not a complete solution since the nodes themselves are still named ESS(SAS)--... and there is no way to fix that, right? 2013-06-12 Rodney Sparapani * allnews.texi/Makefile (New features): All "new" features as discussed in ess-core; see below 2013-06-12 Rodney Sparapani * ess.texi/Makefile (New features): really "new" as discussed in ess-core; see below 2013-06-07 Rodney Sparapani * onewfeat.texi/newfeat.texi: migrated pre-12.03 features to onewfeat.texi However, this will have no practical effect until we stop including onewfeat.texi from ess.texi; see below 2013-04-11 Rodney Sparapani * onewfeat.texi/newfeat.texi: migrated pre-5.3.10 new features to old new features in accordance with downloads/OLD; but, I think we need to go further: is "new" valid more than 2 years, i.e. 5.14+ (07/11)? However, currently this migration has no practical effect since ess.texi includes both newfeat.texi and onewfeat.texi; does that really make sense? 2013-03-08 Rodney Sparapani * newfeat.texi: @item @ESS{[SAS]}: long over-looked @code{SAS-mode-hook} appears! 2013-02-25 Rodney Sparapani * Makefile: ignore warnings from makeinfo 2013-01-23 Rodney Sparapani * currfeat.texi: cleaning up the language in Languages Supported... S family (R and S+ AKA S-PLUS) 2012-07-06 Rodney Sparapani * ess.texi (ESS tracebug): just trying to see what would make the tracebug key tables look right 2012-06-22 Rodney Sparapani * credits.texi: fixed a typo ess-17.11/doc/ESS_intro.tex0000644005071500004540000002652313202324173012404 00000000000000%% $Id: ESS_intro.tex,v 1.2 1999/11/16 20:58:36 ess Exp $ %% %% $Log: ESS_intro.tex,v $ %% Revision 1.2 1999/11/16 20:58:36 ess %% Martin suggested a small fix. %% %% Revision 1.1 1999/11/16 20:54:33 ess %% Another bit of documentation %% %% Revision 1.11 1998/10/12 21:09:20 rossini %% added andy's notes. %% %% Revision 1.10 1998/10/12 15:53:25 rossini %% emacs clarification made (thanks Martin!). %% %% Revision 1.9 1998/10/12 15:48:16 rossini %% Released in semi-final form. %% %% \documentclass{article} \addtolength{\textheight}{2in} \addtolength{\textwidth}{1in} \addtolength{\topmargin}{-1in} \addtolength{\oddsidemargin}{-1.0in} \usepackage{palatino} \usepackage{html} \title{A Quick Introduction to ESS} \author{A.J. Rossini} \begin{document} \maketitle This document can be found at \begin{center} \htmladdnormallink {http://www.biostat.washington.edu/\~{}rossini/talk/ESS\_intro/} {http://www.biostat.washington.edu/\~{}rossini/talk/ESS\_intro/} \end{center} The example file for this session is \htmladdnormallink{rossini.example.R} {http://www.biostat.washington.edu/\~{}rossini/talk/ESS\_intro/rossini.example.R}, which can be retrieved (from the Biostat machines) by \begin{verbatim} cp ~rossini/public_html/talk/ESS_intro/rossini.example.R . \end{verbatim} to your current working directory. (note that the final ``.'' is very important!). For convenience, the \htmladdnormallink{latex} {http://www.biostat.washington.edu/\~{}rossini/talk/ESS\_intro/ESS\_intro.tex} and \htmladdnormallink{postscript} {http://www.biostat.washington.edu/\~{}rossini/talk/ESS\_intro/ESS\_intro.ps} versions are also available. \section{Common Emacs Information} \label{sec:emacs} This is not a tutorial for Emacs. That is a subject for another session. Basic notation for key sequences: \begin{itemize} \item \verb+[tab]+ is the TAB (indent) key. \item \verb+C-k+ refers to holding down the control (ctrl) key \textbf{WHILE} pressing ``k''. \item \verb+M-k+ refers to pressing the Escape key (ESC), \textbf{THEN} pressing ``k''. \end{itemize} \textbf{Only run one Emacs session}. This is a cardinal rule, that you should try not to violate. To load in (visit) new files, do: \begin{itemize} \item \verb+C-x C-f+ (replaces current file in window with new) \item \verb+C-x 4 C-f+ (load new file in different window) \item \verb+C-x 5 C-f+ (load new file in different frame) \end{itemize} and to switch to another file, do \begin{itemize} \item \verb+C-x b+ (switch to new buffer in window) \item \verb+C-x 4 b+ (replaces current file in different window) \item \verb+C-x 5 b+ (replaces current file in different frame) \end{itemize} Buffers are the representations of the files you are editing. You can treat them as the files themselves. \subsection{Useful (X)Emacs Commands for UW Biostat} \label{sec:emacs:uwbiostat} In the following, \emph{``Emacs''} can be used instead of \emph{``XEmacs''}. This section is thanks to \htmladdnormallink{Andy Dunning}{mailto:adunning@biostat.washington.edu} and \htmladdnormallink{Greg Warnes}{mailto:warnes@biostat.washington.edu}. It's also available as a \htmladdnormallink{crib sheet text document} {http://www.biostat.washington.edu/\~{}rossini/talk/ESS\_intro/emacs.txt}. \begin{verbatim} USEFUL XEMACS COMMANDS ====================== STARTING XEMACS (Currently on GIBSON, GORN, SOL, ATLAS, ABACUS) --------------- rsh login to machine xemacs start xemacs, edit xemacs -f S start xemacs, run S-plus xemacs -nw start xemacs in _text_ mode (nw="No Window") (useful over telnet session from home) ANY EMACS BUFFER ---------------- MOVING AROUND ------------- C-v Move forward one screenful M-v Move backward one screenful C-l Clear screen and redisplay everything M- -> Meta- - moves forward a word M- <- Meta- - moves back a word M- |^ Meta- - move up a paragraph M- V Meta- - move down a paragraph M- < Meta- - move to end of file CUT AND PASTE ------------- C-d _D_elete C-k _K_ill from the cursor position to end of line C-y Recover/Paste (_Y_ank) killed text (repeat to copy) M-y recover former killed text (after C-y. Repeat to go back through stack). C-x u _U_ndo LOADING/SAVING FILES -------------------- C-x C-f _F_ind a file C-x C-s _S_ave the file If you find a second file with C-x C-f, the first file remains inside Emacs. You can switch back to it by finding it again with C-x C-b. This way you can get quite a number of files inside Emacs. MANAGING BUFFERS / WINDOWS -------------------------- C-x 0 Move between windows C-x 1 One window (i.e., kill all other windows). C-x b Switch to new _b_uffer C-x C-b List _b_uffers SEARCH and REPLACE ------------------ M-x (then) replace-string Replace string C-s _S_earch forward - repeat to move to next occurence C-r Search _r_everse - repeat to move to previous occurence MISC ---- C-h or C-h ? _H_elp C-h c (command) _H_elp on this _c_ommand C-u 8 (character or command) Repeat character or command 8 times C-g Stop, undo, unhang. C-x C-c stop editing and exit (_c_lose) Emacs STARTING SPLUS / ESS -------------------- M-x S Start _S_-plus process buffer M-x S-mode Change mode of current buffer to S-plus code editing S EXECUTION BUFFER (Usually named "*S*" or similar, mode line says "iESS") ------------------ C-c C-d _D_ump S-plus object or function into new editing buffer. C-c C-v xxx get S-plus help on "xxx" S CODE EDITING BUFFER (Usually named for the file being edited, mode line --------------------- says "ESS[S]") C-c C-j Send line to S C-c C-n Send line to S and move down to _n_ext line C-c C-r Send highlighted _r_egion to S C-c C-b Send whole _b_uffer to S C-c C-f Send _f_unction where cursor is to S C-c C-v xxx get S-plus help on "xxx" \end{verbatim} \section{Replacing Command-line Usage} \label{sec:commandline} \subsection{Start-up} \label{sec:commandline:startup} \begin{enumerate} \item To run from the command-line in a non-windowing environment: \begin{verbatim} xemacs -f S \end{verbatim} \item To run from the command-line in a windowing environment: \begin{verbatim} xemacs -f S & \end{verbatim} \end{enumerate} (note that depending on the system, you might be using \verb+emacs+, not \verb+xemacs+). \textbf{Optional: } The first time that one runs this, you should construct the object list. This is done by: \begin{verbatim} M-x ess-create-object-name-db \end{verbatim} or \begin{verbatim} M-x ess-create-obj[tab] \end{verbatim} where \verb+[tab]+ is the TAB key. One can replace \verb+S+ with \verb+R+ or \verb+XLS+, to run a different version. The object database feature currently only works with Splus and R. \subsection{Replacing Command-line Usage} \label{sec:commandline:usage} To enter commands, you generally need to be at a command prompt (i.e. ``\verb+> +''). But there are some nice exceptions. The follow applies primarily to \verb+Splus+ and \verb+R+. \begin{enumerate} \item To get help on a function (help(``lm'')) without spoiling your input line: \verb+C-c C-v+ \item Completion of objects (functions and data): \begin{enumerate} \item \verb+C-c [tab]+ \item \verb+[tab]+ (sometimes). \end{enumerate} \item Search command-line history ``manually'', matching on current input \begin{enumerate} \item backwards: \verb+M-p+ \item forwards: \verb+M-n+ \end{enumerate} \item Complete current line based on command-line history: \begin{enumerate} \item backwards: \verb+\C-[uparrow]-p+ \item forwards: \verb+M-n+ \end{enumerate} \item If you are reviewing old commands, to re-enter it one (with the cursor on the line): \verb+[return]+. \end{enumerate} Many other commands, as well... \section{Replacing Cut-and-Paste} \label{sec:cutpaste} The next stage of statistics package usage is usually to cut-and-paste from an editor. Since we are within an editor, this is moot. \textbf{Use the following suffices for your files:} \begin{itemize} \item \verb+.S+, such as \verb+critical_simulation.S+ \item \verb+.R+, such as \verb+speedy_simulation.R+ \end{itemize} \subsection{Cut and Paste} \label{sec:cutpaste:usual} You \textbf{can} cut and paste. It's pretty identical, and a bit ugly. \subsection{Efficient Methods 1} \label{sec:cutpaste:eff1} \textbf{This works from the process (inferior ESS, or iESS) buffer} One improvement is to use a \verb+source()+-like facility. \begin{enumerate} \item To source a file into Splus (within ESS): \verb+C-c C-l+ (load file) \item To find what the errors are (if any): \verb+C-c `+ (backquote). \end{enumerate} The latter will tell you what the error is. You'll have to go back to the file and edit it. \subsection{Efficient Methods 2} \label{sec:cutpaste:eff2} \textbf{This works from the editing (ESS) buffer} Better yet, use a file, and send material from the file straight to the process. This works if the file ends in the proper suffix (and hence, the mode at the bottom should say ``ESS''). The following is possible: \begin{itemize} \item Send current line to S: \verb+C-c C-j+ \item Send current function to S (assumes the cursor is in the function body): \verb+C-c C-f+. \item Send current region (highlighted) to S \verb+C-c C-r+ \item Send whole buffer/file to S \verb+C-c C-b+ \end{itemize} \section{Editing} \label{sec:edit} \textbf{This works from the editing (ESS) buffer} See Section~\ref{sec:cutpaste:eff2} for communication between the code buffer and the process buffer. The help commands and object completion commands (only \verb+C-c [TAB]+ version) work. Syntax-highlighting and formatting are present. For comment indentation: \begin{enumerate} \item \verb+#+ gets moved to the right-side of the line \item \verb+##+ is placed at the current indentation level \item \verb+###+ is placed flush-left. \end{enumerate} To dump an object into a buffer (for editing, saving, possible reloading): \begin{enumerate} \item \verb+C-c C-d+ dumps the named object into an editing buffer (in ESS mode). \end{enumerate} \section{Advanced Usage} \label{sec:advanced} \begin{itemize} \item preliminary integration with noweb, for literate programming and data analysis (another talk) \item Has a transcript mode for recreating work and providing demonstrations. \item Except for object-completion, everything mentioned here works \textbf{identically} for Stata, XLispStat, and SAS. \item Makes versioning (version control, document revision history) simple. \end{itemize} \end{document} ess-17.11/doc/Makefile0000644005071500004540000001013013202324173011440 00000000000000### Makefile - for DOCUMENTATION (./doc) of ESS distribution. ### ## Before making changes here, please take a look at Makeconf include ../Makeconf # program to convert .texi{nfo} to .html #MM: use makeinfo (i.e. MAKEHTML from above) which is more #-- standardized than texi2html which exists in #MM at least two widely differing versions (TeX vs GNU): #MM TEXI2HTML = LANG=C texi2html -verbose -iso #MM SPLITCHAP = -split_chapter -menu -glossary ## TEXI2PDF = LANG=C texi2dvi --pdf # To obtain sorted indices run: "texindex ess.??". #### no user servicable parts beyond this point #### TEXISRC = announc.texi authors.texi bugrept.texi bugs.texi bugs-ms.texi \ credits.texi currfeat.texi ess.texi ess-defs.texi getting.texi \ help-s.texi help-sas.texi inst_svn.texi installation.texi \ license.texi mailing.texi onewfeat.texi news.texi onews.texi \ newfeat.texi readme.texi requires.texi stabilty.texi help-bugs.texi \ help-jags.texi allnews.texi Makefile ../Makeconf ../VERSION ESSINFONODE1='* ESS: (ess).' ESSINFONODE2=' Emacs Speaks Statistics' ESSINFONODE3=' (S/S+/R, SAS, BUGS, Stata, XLisp-Stat).' ### Targets -- PDFs = ess.pdf readme.pdf refcard/refcard.pdf TXTs = ../README ../ANNOUNCE ../NEWS ../ONEWS all : info text html pdf docs : info text html info : info/ess.info text : $(TXTs) html : html/ess.html html/readme.html html/news.html pdf : $(PDFs) ess.pdf : $(TEXISRC); $(TEXI2PDF) ess.texi readme.pdf : $(TEXISRC); $(TEXI2PDF) readme.texi cleanaux: -@rm -f *.aux *.cp *.cps *.fn *.fns *.ky *.kys *.log *.out \ *.pg *.pgs *.tmp *.toc *.tp *.vr *.vrs ## this shall remove *exactly* those things that are *not* in version control: clean: cleanaux -@rm -f $(TXTs) $(PDFs) info/*.info* html/* ## this removes also things in VC (svn, when they are remade by "make"): distclean : clean # -@rm -f $(PDFs) ../README: $(TEXISRC) -$(MAKETXT) readme.texi \ | perl -pe 'last if /^Concept Index/;' > $@ # | perl -pe 'last if /^Concept Index/; print "For INSTALLATION, see way below.\n\n" if /^\s*ESS grew out of/' \ ../ANNOUNCE: $(TEXISRC) -$(MAKETXT) announc.texi \ | perl -pe 'last if /^Concept Index/;' > $@ README.Microsoft : README.Microsoft.texi $(MAKETXT) README.Microsoft.texi \ | perl -pe 'last if /^Concept Index/;' > $@ ../NEWS: Makefile ess-defs.texi newfeat.texi news.texi -$(MAKETXT) news.texi > $@ ../ONEWS: Makefile ess-defs.texi onewfeat.texi onews.texi -$(MAKETXT) onews.texi > $@ ### File Dependencies info/ess.info: $(TEXISRC) ../VERSION @echo "making Info documentation..." -$(MAKEINFO) ess.texi mv -f ess.info info/ install: install-info install-other-docs install-info : info/ess.info -$(INSTALLDIR) $(INFODIR) $(INSTALL) info/ess.info $(INFODIR) test -f $(INFODIR)/dir || $(INSTALL) dir.txt $(INFODIR)/dir grep $(ESSINFONODE1) $(INFODIR)/dir || \ (echo >> $(INFODIR)/dir; echo 'Emacs' >> $(INFODIR)/dir; \ echo $(ESSINFONODE1) $(ESSINFONODE2) >> $(INFODIR)/dir; \ echo $(ESSINFONODE3) >> $(INFODIR)/dir) install-other-docs: pdf html -$(INSTALLDIR) $(DOCDIR) $(INSTALL) ess.pdf readme.pdf $(DOCDIR) $(INSTALL) html/ess.html html/readme.html html/news.html $(DOCDIR) $(INSTALL) refcard/refcard.pdf $(DOCDIR) uninstall : -cd $(DOCDIR) && $(UNINSTALL) ess.pdf readme.pdf README ANNOUNCE -cd $(DOCDIR) && $(UNINSTALL) ess.html readme.html news.html -cd $(DOCDIR) && $(UNINSTALL) refcard.pdf ## TO DO: ess_toc.html & readme_toc.html should be merged into index.html html/ess.html: $(TEXISRC) @echo "making HTML documentation..." mkdir -p html -$(MAKEHTML) html/ess.html ess.texi #MM $(TEXI2HTML) $(SPLITCHAP) ess.texi #MM test -d ess && cp -p ess/ess_toc.html html/index.html || cp -p ess_toc.html html/index.html #MM test -d ess && mv -f ess/*.html html || mv -f *.html html html/readme.html: $(TEXISRC) -$(MAKEHTML) html/readme.html --no-validate readme.texi ## ^^^^^^^^^^^^^ (design bug: "FIXME" in ess.texi) #MM $(TEXI2HTML) readme.texi # mv -f readme.html html html/news.html: $(TEXISRC) mkdir -p html -$(MAKEHTML) html/news.html allnews.texi refcard/refcard.pdf: refcard/refcard.tex (cd refcard ; pdflatex refcard) ess-17.11/doc/NEWS0000644005071500004540000001374713202324173010520 00000000000000== Changes up to version 5.0 : * Works with XLispStat, R, and S(plus). == Changes up to version 4.8.MM6.XE3 : * inferior S-mode: C-c C-a is comint-bol (not attach directories) Output cleaned up (thanks to PD). * Code cleaned up, more according to Emacs-Lisp Style Guide. * Added some code for S4 (not activated yet). (thanks to JMC). * Added some extra configuration code (not activated yet) (thanks to MM). * reports to proper authority (Hornik/Maechler/Rossini). * Makefile updated (i.e. Unpacks into a subdirectory (this has been true for all XE versions, etc)). * Fixed up output from R (KH). == Changes up to version 4.8.MM6.XE2 : * Works with Emacs and XEmacs. I think. Documentation needs to be updated . == Changes up to version 4.8.MM6.XE1 : * XEmacs compatibility added, Emacs compatibility broken. Easymenu now in use. == Changes up to version 4.8.MM6 : * Lots of patches by Martin. S-eval, right? (AJR: I don't know). == Changes up to version 4.8: * Keybinding changes in S Transcript Mode. RET now simply executes the current commant. M-RET executes and moves, C-c RET copies, leaving you in the process buffer. These bindings mirror those in Inferior S mode. * If S-source-directory is a lambda expression, it is evaluated with the process buffer as the current buffer. * The default starting directory is always your home directory. Set S-directory to `nil' to get the old behaviour (use the current buffer's default directory). * In Inferior S mode, S mode and S transcript mode, M-? is now bound to the new function S-list-object-completions. Also, S-resynch is available from the Inf-S menu. * S-request-a-process is now bound to C-c C-k. This frees C-c C-p for the standard comint binding of comint-previous-prompt. * Massive manual update. == Changes in version 4.7: * Probably *only* works with Emacs 19.29 * New semantics for S-keep-dump-files. Values may be nil, check, ask or t; the default is 'check. It's also now buffer-local. See the info file for more details. * New hook, S-post-run-hook, run just after the S process starts. Use this to evaluate code at the start of a session. == Changes in version 4.6: * Works with Emacs 19.29 * Font-lock support in S-mode, inferior-S-mode and S-transcript-mode buffers * M-RET in inferior-S-mode is bound to S-transcript-send-command-and-move * S-site now much more lightweight to load. == Changes in version 4.5: * New, and hopefully simpler, installation procedure. == Changes in version 4.4: * There is now a command to send bug reports: S-submit-bug-report. It is also available from menus (Send bug report). * Keybinding changes: S-view-at-bottom (on C-c C-v) has been deleted. It's functionality is provided by comint's comint-show-maximum-output, on C-c C-e. S-display-help-on-object has moved from C-c C-h onto C-c C-v (and now has an alias, M-x S-help), and S-execute (S-execute-in-tb in S-mode) has moved from C-c C-e to C-c C-t. == Changes in version 4.3: * The variable S-source-directory-generator has been deleted. It's functionality has been subsumed into the variable S-source-directory; if this is not a string it is assumed to be a lambda expression, and behaves in the same was as S-source-directory used to. * New user option S-delete-dump-files. == Changes in version 4.2: * New user variable S-inf-filenames-map. Set this to nil if you are using DOS or some other system with limited filename lengths. * S-local-variables-string and S-temp-buffer-p have been deleted. S-mode no longer adds a local variables section to source files. You should use file extensions to set the major mode. * S-insert-function-templates has been deleted. Its functionality has been taken over by the user variable S-function-template. * S.el has been divided into four separate files, with autoloads. * New file S-site.el for site-level customizations. * S-ask-about-display and X-displays-list have been removed. * User variable: S-ask-about-transfile. If non-nil, asks for a transcript file to use. == Changes in version 4.0: * The TAB key in inferior-S-mode is more versatile; it completes S object names when point follows an object name, and completes filenames when point is in a string. * New mode: S-transcript-mode, for dealing with S transcript files. * Multi-line inputs are now evaluated neatly * inferior-S-prompt is no longer a user variable. Instead, set inferior-S-primary-prompt and inferior-S-secondary-prompt * Uses the comint.el supplied with Emacs 19.20 onwards. * Hook: S-send-input-hook * Emacs version 18 is no longer supported (sorry). Works with Emacs 19 (and, unfortunately, only Emacs 19) * S-tek is no longer supported, and has been removed from the distribution * Works with S version 3.1 == Changes in version 3.5: * Support for multiple S processes. Pass a numeric argument to M-x S to start a new S process. The name of the process associated with the cuurent buffer is shown in the mode line like this: [S2] * In the process buffer, a paragraph is a prompt, a command and its output, to make the paragraph functions useful. Multiple S sessions are delimited by ^L, to make the page functions useful * User variable S-synchronize-evals * New function S-request-a-process, bound to C-c C-p * New function S-clean-region == RELEASE 3.4 INFORMATION * Works with version 3.0 S * Command-line completion of S object names * Recognition of attached data frames * Dedicated S Help mode * Tek graphics support * Several bugfixes and code cleanups * Texinfo documentation == RELEASE 2.1 INFORMATION Improvements since last release (unnumbered of Summer 1990): * Better description provided of functions loaded. * Better header for this file. * S-directory is now a prescriptive rather than just descriptive variable. * better syntax table, so |#; are better recognized and commands using them work better. * we have a version number. Local Variables: mode: text fill-prefix: " " End: ess-17.11/doc/README0000644005071500004540000000206213202324173010665 00000000000000How do we organize the ess/doc/ directory ? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Source: *.texi [texinfo] Targets (see also ./Makefile): ess.dvi [DVI -> PostScript] readme.dvi ess.info* [Info] readme.info* ./html/*html ---------------------- Structure: TWO main files (note that a third one, announc.texi, is conceptually a subset of readme.texi and is only used to automatically produce ../ANNOUNCE) ess.texi | |-- ../VERSION |-- ess-defs.texi | |-- newfeat.texi | |-- credits.texi | \-- authors.texi | |-- getting.texi | \-- inst_svn.texi |-- inst_tar.texi | |-- requires.texi | |-- help-s.texi |-- help-sas.texi |-- help-bugs.texi | |-- bugs.texi | |-- bugrept.texi | \-- mailing.texi readme.texi | |-- license.texi | |-- newfeat.texi | |-- currfeat.texi | |-- stabilty.texi | |-- requires.texi | |-- getting.texi | \-- inst_svn.texi |-- inst_tar.texi | |-- bugrept.texi | |-- mailing.texi | \-- authors.texi ess-17.11/doc/html/0000755005071500004540000000000013202324204011024 500000000000000ess-17.11/doc/html/ess.html0000644005071500004540000155602713202324203012443 00000000000000 ESS – Emacs Speaks Statistics

ESS – Emacs Speaks Statistics

Table of Contents

ESS — Emacs Speaks Statistics

Next: , Up: (dir)   [Contents][Index]

ESS: Emacs Speaks Statistics

ESS version 17.11

by  A.J. Rossini,
    R.M. Heiberger,
    K. Hornik,
    M. Maechler,
    R.A. Sparapani,
    S.J. Eglen,
    S.P. Luque,
    H. Redestig,
    V. Spinu,
and L. Henry.

Emacs Speaks Statistics (ESS) provides an intelligent, consistent interface between the user and the software. ESS interfaces with SAS, S-PLUS, R, BUGS/JAGS and other statistical analysis packages on Unix, Linux and Microsoft Windows. ESS is itself a package within the emacs text editor and uses emacs features to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction to ESS

The S family (S, Splus and R) and SAS statistical analysis packages provide sophisticated statistical and graphical routines for manipulating data. Emacs Speaks Statistics (ESS) is based on the merger of two pre-cursors, S-mode and SAS-mode, which provided support for the S family and SAS respectively. Later on, Stata-mode was also incorporated.

ESS provides a common, generic, and useful interface, through emacs, to many statistical packages. It currently supports the S family, SAS, BUGS/JAGS, and Stata with the level of support roughly in that order.

A bit of notation before we begin. emacs refers to both GNU Emacs by the Free Software Foundation, as well as XEmacs by the XEmacs Project. The emacs major mode ESS[language], where language can take values such as S, SAS, or XLS. The inferior process interface (the connection between emacs and the running process) referred to as inferior ESS (iESS), is denoted in the modeline by ESS[dialect], where dialect can take values such as S3, S4, S+3, S+4, S+5, S+6, S+7, R, XLS, VST, SAS.

Currently, the documentation contains many references to ‘S’ where actually any supported (statistics) language is meant, i.e., ‘S’ could also mean ‘R’ or ‘SAS’.

For exclusively interactive users of S, ESS provides a number of features to make life easier. There is an easy to use command history mechanism, including a quick prefix-search history. To reduce typing, command-line completion is provided for all S objects and “hot keys” are provided for common S function calls. Help files are easily accessible, and a paging mechanism is provided to view them. Finally, an incidental (but very useful) side-effect of ESS is that a transcript of your session is kept for later saving or editing.

No special knowledge of Emacs is necessary when using S interactively under ESS.

For those that use S in the typical edit–test–revise cycle when programming S functions, ESS provides for editing of S functions in Emacs edit buffers. Unlike the typical use of S where the editor is restarted every time an object is edited, ESS uses the current Emacs session for editing. In practical terms, this means that you can edit more than one function at once, and that the ESS process is still available for use while editing. Error checking is performed on functions loaded back into S, and a mechanism to jump directly to the error is provided. ESS also provides for maintaining text versions of your S functions in specified source directories.


1.1 Why should I use ESS?

Statistical packages are powerful software systems for manipulating and analyzing data, but their user interfaces often leave something something to be desired: they offer weak editor functionality and they differ among themselves so markedly that you have to re-learn how to do those things for each package. ESS is a package which is designed to make editing and interacting with statistical packages more uniform, user-friendly and give you the power of emacs as well.


Up: Features   [Contents][Index]

1.1.1 Features Overview

  • Languages Supported:
    • S family (R and S+ AKA S-PLUS)
    • SAS
    • OpenBUGS/JAGS
    • Stata
    • Julia
  • Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia)
    • Syntactic indentation and highlighting of source code
    • Partial evaluation of code
    • Loading and error-checking of code
    • Source code revision maintenance
    • Batch execution (SAS, OpenBUGS/JAGS)
    • Use of imenu to provide links to appropriate functions
  • Interacting with the process (S family, SAS, Stata, Julia)
    • Command-line editing
    • Searchable Command history
    • Command-line completion of S family object names and file names
    • Quick access to object lists and search lists
    • Transcript recording
    • Interface to the help system
  • Transcript manipulation (S family, Stata)
    • Recording and saving transcript files
    • Manipulating and editing saved transcripts
    • Re-evaluating commands from transcript files
  • Interaction with Help Pages and other Documentation (R)
    • Fast Navigation
    • Sending Examples to running ESS process.
    • Fast Transfer to Further Help Pages
  • Help File Editing (R)
    • Syntactic indentation and highlighting of source code.
    • Sending Examples to running ESS process.
    • Previewing

ESS provides several features which make it easier to interact with the ESS process (a connection between your buffer and the statistical package which is waiting for you to input commands). These include:

  • Command-line editing for fixing mistakes in commands before they are entered. The ‘-e’ flag for S-plus provides something similar to this, but here you have the full range of Emacs commands rather than a limited subset. However, other packages do not necessarily have features like this built-in. See Command-line editing.
  • Searchable command history for recalling previously-submitted commands. This provides all the features of the ‘Splus -e’ history mechanism, plus added features such as history searching. See Command History.
  • Command-line completion of both object and file names for quick entry. This is similar to tcsh’s facility for filenames; here it also applies to object names and list components. See Completion.
  • Hot-keys for quick entry of commonly-used commands in ‘S’ such as objects() and search(). See Hot keys.
  • Transcript recording for a complete record of all the actions in an S session. See Transcript.
  • Interface to the help system, with a specialized mode for viewing S help files. See Help.

If you commonly create or modify S functions, you will have found the standard facilities for this (the ‘fix()’ function, for example) severely limiting. Using S’s standard features, one can only edit one function at a time, and you can’t continue to use S while editing. ESS corrects these problems by introducing the following features:

  • Object editing. ESS allows you to edit more than one function simultaneously in dedicated Emacs buffers. The ESS process may continue to be used while functions are being edited. See Edit buffer.
  • A specialized editing mode for S code, which provides syntactic indentation and highlighting. See Indenting.
  • Facilities for loading and error-checking source files, including a keystroke to jump straight to the position of an error in a source file. See Error Checking.
  • Source code revision maintenance, which allows you to keep historic versions of S source files. See Source Files.
  • Facilities for evaluating S code such as portions of source files, or line-by-line evaluation of files (useful for debugging). See Evaluating code.

Finally, ESS provides features for re-submitting commands from saved transcript files, including:

  • Evaluation of previously entered commands, stripping away unnecessary prompts. See Transcript resubmit.

Next: , Previous: , Up: Introduction   [Contents][Index]

1.2 New features in ESS

Changes and New Features in 17.11:

  • The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put (require 'ess-r-mode) or (require 'ess-stata-mode) in your init file. This is for experienced Emacs users as this requires setting up autoloads for .R files manually. We will keep maintaining ess-site for easy loading of all ESS features.
  • Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor.
  • ESS[R]: New command ess-r-package-use-dir. It sets the working directory of the current process to the current package directory.
  • ESS[R] Lookup for references in inferior buffers has been improved. New variable ess-r-package-source-roots contains package sub-directories which are searched recursively during the file lookup point. Directories in ess-tracebug-search-path are now also searched recursively.
  • ESS[R] Namespaced evaluation is now automatically enabled only in the R/ directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file.

Changes and New Features in 16.10:

  • ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls.
  • ESS[R]: Backquoted names and %op% operators are recognised as sexp. This is useful for code navigation, e.g. with C-M-f and C-M-b.
  • ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode’s code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set ess-roxy-fold-examples to non-nil to automatically fold the examples field when you open a buffer.
  • ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set ess-roxy-fontify-examples to non-nil to try it out.
  • ESS[R]: New package development command ess-r-devtools-ask bound to C-c C-w C-a. It asks with completion for any devtools command that takes pkg as argument.
  • ESS[R]: New command C-c C-e C-r to reload the inferior process. Currently only implemented for R. The R method runs inferior-ess-r-reload-hook on reloading.
  • ESS[R]: ess-r-package-mode is now activated in non-file buffers as well.

Bug fixes in 16.10:

  • ESS[R]: Fix broken (un)flagging for debugging inside packages
  • ESS[R]: Fixes (and improvements) in Package development
  • ESS[R]: Completion no longer produces ...= inside list( ).
  • ESS[R]: Better debugging and tracing in packages.
  • ESS[R]: Better detection of symbols at point.
  • ESS[R]: No more spurious warnings on deletion of temporary files.
  • ESS[julia]: help and completion work (better)
  • ESS[julia]: available via ess-remote

Changes and New Features in 16.04:

  • ESS[R]: developer functionality has been refactored. The new user interface consists of a single command ess-r-set-evaluation-env bound by default to C-c C-t C-s. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set ess-r-package-auto-set-evaluation-env to nil to disable this.
  • ESS[R]: New ess-r-package-mode This development mode provides features to make package development easier. Currently, most of the commands are based on the devtools packages and are accessible with C-c C-w prefix. See the documentation of ess-r-package-mode function for all available commands. With C-u prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with [pkg:NAME] in the mode-line.
  • ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change options('html_type').
  • ESS[R]: New specialized breakpoints for debugging magrittr pipes
  • ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process.

Bug fixes in 16.04:

  • ESS[R]: Roxygen blocks with backtics are now correctly filled
  • ESS[R]: Don’t skip breakpoints in magrittr’s debug_pipe
  • ESS[R]: Error highlighting now understands ‘testthat‘ type errors
  • ESS[Julia]: Added getwd and setwd generic commands

Changes and New Features in 15.09:

  • ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with ess-offset- give the actual offsets, those starting with ess-indent- are control (commonly Boolean) variables, and those starting with ess-align- are vertical alignment overrides which inhibit default offsets in specific situations. See ess-style-alist for detailed description of the new indentation system and provided default indentation styles.
  • ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring ess-brace-imaginary-offset, ess-expression-offset and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by ess-offset-continuations. It can be set to either cascade or straight (the default). ess-arg-function-offset has been replaced by ess-indent-from-lhs and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to prev-call and open-delim in order to produce a consistent indentation.
  • ESS: A test framework has been set up.
  • ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with ess-offset-arguments set to prev-line is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation.
  • ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the examples field without squashing the surrounding code in the comments.
  • ESS[R]: ESS can now format your code! This is controlled through the settings ess-fill-calls and ess-fill-continuations. When activated, (fill-paragraph) formats your calls and your formulas/continuations while making sure they don’t go past fill-column. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set ess-blink-filling to nil to prevent this.
  • ESS[R]: Fix occasional missing error location fontification in inferior buffers.
  • ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace.
  • ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on julia-mode.el from the Julia project. If you install ESS from the official tarball/zip file, julia-mode.el is already included. Otherwise, if you install ESS by running make, then the latest version of julia-mode.el is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running make, then ensure that you have the julia-mode.el, which you can get easily from MELPA for example.
  • iESS: For naming inferior processes, ESS can use projectile’s project root and it does so when ess-gen-proc-buffer-name-function is set to ess-gen-proc-buffer-name:projectile-or-simple as by default, or to another value beginning with ess-gen-proc-buffer-name:projectile-*.

Changes and New Features in 15.03-1:

  • ESS[R]: An indentation bug has been fixed (github issue 163)
  • ESS[R]: On windows, if ‘ess-prefer-higher-bit’ is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R.

Changes and New Features in 15.03:

  • ESS[R]: Full native support for ‘company-mode‘.
  • ESS[R]: More efficient caching algorithm for R completion.
  • ESS: New offset variable ‘ess-close-paren-offset‘ to control the indentation of the closing parentheses.
  • ESS[R]: Ask for CRAN mirror only once per emacs session.
  • ESS[R]: Detect library and require calls for better completion caching.
  • Buffer display is now customizable (ess-show-buffer-action).
  • Use y-or-n-p instead of yes-or-no-p throughout.
  • More support for ODS in ess-sas-graph-view.
  • Makefiles are now both UNIX and GNU friendly.
  • ESS[R]: Simplify directory lookup in ess-developer (#137).
  • Make closed paren indentation consistent

Bug Fixes in 15.03:

  • Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R).
  • Fix git version lookup
  • Don’t check directory modtime in R dialect.
  • Declare all ess macros for edebug.
  • Add ess-smart-comma to eldoc message functions.
  • Inform users when retrieving RDA aliases.
  • Line ending in ’~’ is also a continuation line.
  • Filing roxy paragraphs works as expected now.
  • In ess-developer-add-package, remove incorrect ‘wait‘ argument from ess-get-words-from-vector call.
  • Fix #96, #117, #120, #125, #134, #137.
  • Fix ess-quit-r. Call base::q() even if it is masked.
  • Fix ‘ess-show-buffer‘ to always display the buffer in another window.
  • Makefile: Fix cd bug for directories with spaces in them
  • ess-kill-buffer-and-go modified to not restart R

Changes / Selected Bug Fixes in 14.09:

  • ESS[Julia]: Executable is changed to julia.
  • ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported.
  • ESS[R]: Running R with gdb debugger now works as expected
  • iESS: Inferior ESS buffers are now derived from comint-mode
  • ESS[R]: ess-execute-screen-options uses correct screen width in terminal sessions
  • ESS: ess-build-tags-for-directory works when no TAGS file name was provided
  • ESS: ess-offset-statement-continued is now respected everywhere except inside of the if test condition.
  • ESS: New variable ess-offset-statement-first-continued for indentation of the first line in multiline statements.
  • ESSR: Starting , in multiline statements indentation is now ignored to achieve a more pleasant alignment.
  • ESSR: Improved behavior of RET in roxygen blocks.
  • ESS[R]: command cleaning with C-u C-u C-y was broken with lines containing " + "
  • ESS[R]: fixed "empty watch window bug"
  • ESS[R]: don’t ask for help location on ac-quick-help (request of github #81)
  • ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands
  • ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1)
  • ESS[Julia]: recognize function names ending with !
  • ESS[Julia]: fix indentation of "for" comprehension syntax within brackets.

Changes / Selected Bug Fixes in 13.09-1:

  • ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in ~/.config/ESSR/ directory on the remote machine
  • TRAMP: PAGER environment variable is now correctly set to inferior-ess-pager
  • retrieval of help topics on remote machines is fixed
  • org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature)
  • ess-execute is now bound to C-c C-e C-e in ess-extra-map.
  • completion works again in ess-execute
  • ESS[R]: head and tail methods were replaced by htsummary in ess-R-describe-object-at-point-commands
  • ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation
  • ESS[transcript]: ’Clean Region’ now works with multiline statements; ess-transcript-clean-region etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by ’+’
  • ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2. Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately.
  • ESS[SAS]: ess-sas-edit-keys-toggle default returns to nil
  • ESS[R]: support for prettify-symbols-mode: contribution from Rudiger Sonderfeld https://github.com/emacs-ess/ESS/pull/65
  • ESS[SWV]: knitr now evaluates in the current frame
  • ESS[developer]: ess-developer doesn’t kill open DESCRIPTION files anymore
  • ESS[roxygen]: ess-roxy-preview-HTML is now on C-c C-o C-w and ess-roxy-preview-text is now on C-c C-o C-t
  • ESS: installation with make install was simplified and should work out of the box on most *nix systems
  • ESS installation instructions simplified
  • fixed font-lock bug introduced in 13.09 that was causing very slow process output

Changes/New Features in 13.09:

  • font-lock in process buffers doesn’t "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input.
  • ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types.
  • ESS[julia]: a much better eldoc showing arguments of methods and data type constructors
  • ESS-developer:
    • - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package ess-developer-packages. The old behavior (activation on per-process basis) is still available on M-x ess-developer in a process buffer.
    • - integration with devtools package. New command ess-developer-load-package calls load_all on the package containing current file. ess-developer-add-package now offers IDO menu completions with available loading methods, currently library, and load_all. Loading command can be customized with ess-developer-load-on-add-commands.
  • TAB now indents region if region is active (a contribution of Matthew Fidler in pull #41)
  • M-x ess-version now reports full loading path and recognizes git and ELPA versions.
  • warning and error keyword are now highlighted with font-lock-warning-face as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification).
  • eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process.
  • org-babel: evaluation is now org-friendly
  • help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by ess-help-reuse-window custom variable.
  • help: ?foo pops IDO menu on multiple help files (so far it worked only for C-c C-v)
  • remote evaluation is considerably faster now on slow connections
  • ESS[R] tracebug R source references regular expressions are (mostly) language agnostic.
  • ess-function-call-face inherits from font-lock-function-name-face rather than font-lock-builtin-face.
  • ess-inject-source now accepts function-and-buffer option.
  • Documentation: The “New Features” section (and NEWS) now represent recent changes: within the last year or so. All changes can be found in the new news.html (or NEWS and ONEWS).
  • ESS[R] ess-rep-regexp should no longer inf.loop (rarely!), and hence M-x ess-fix-miscellaneous should neither.

Changes/New Features in 13.05:

  • ESS[gretl]: Support for gretl (both editing and sub-process interaction). A contribution of Ahmadou Dicko.
  • ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when ess-tracebug is active).
  • ESS: C-c ` is now bound to ess-show-traceback and C-c ~ is bound to ess-show-call-stack.
  • ESS[R]: ESS stores function in ’ESSR’ environment to avoid kludging users’ global environment and accidental deletion.
  • ESS[R]: new variable ess-swv-processing-command to control weaving and tangling.
  • ESS[R]: ess-default-style has been changed (from DEFAULT) to RRR. Use something like (setq ess-default-style 'DEFAULT) or (setq ess-indent-level 2) in your ~/.emacs equivalent before loading ESS, if you do not like this new “incompatible” default style.
  • ESS[julia]: ESS stores its functions in ’ESS’ module.
  • ESS[julia]: Eldoc is now supported in julia modes
  • ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes
  • ESS[R]: ess-use-tracebug’s default has been changed to t. Set it to nil if you want to keep the previous behavior.
  • ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with ess-debug-minor-mode and ess-debug-minor-mode-map.
  • ESS[tracebug]: ess-tracebug-map is an alias to ess-dev-map C-c C-t.
  • ESS[tracebug]: ess-bp-toggle-state (C-c C-t o) can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan).
  • ESS[tracebug]: ess-debug-flag-for-debugging and ess-debug-unflag-for-debugging work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in ess-developer-packages (C-c C-t C-a).
  • ESS[R]: Eldoc (activated by ess-use-eldoc) has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user.

    Note that you can turn off ElDoc, by placing (setq ess-use-eldoc nil) in your ~/.emacs file, prior to loading ESS,

  • ESS[SAS]: long over-looked SAS-mode-hook appears!
  • ESS[SAS]: ess-sas-edit-keys-toggle now defaults to t since sas-indent-line is still broken, i.e. TAB is now bound to ess-sas-tab-to-tab-stop by default

Changes/Bug Fixes in 12.09-2:

  • ESS: new ess-switch-to-end-of-proc-buffer variable that controls whether C-c C-z switches to the end of process buffer. The default is t. You can use prefix argument to C-c C-z to toggle this variable.
  • ESS: fix in ess-eval-linewise that was causing emacs to hang during R debugging with ess-eval-visibly equal to t.
  • ESS: fix in ess-eval-linewise that was causing emacs to recenter the prompt in visible window
  • ESS[tracebug]: A better handling of “Selection” prompts and debug related singlekey commands.
  • ESS: fix a bug in ess-switch-process that was causing *new* selection to fail.
  • ESS[R]: Solve missing ess-local-process-name bug in R-dired.
  • ESS[SWV]: ess-swv-PDF doesn’t ask for a command to run if there is only one command in ess-swv-pdflatex-commands.
  • ESS[SWV]: ess-swv-weave gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr).
  • ESS: ess-eval-*-and-step functions go to next empty line at eob, instead of staying at the last line.

Changes/New Features in 12.09-1:

  • ESS Breaking Changes in Keys:
    • - New keymaps: ess-doc-map bound to C-c C-d; ess-extra-map bound to C-c C-e; ess-dump-object-into-edit-buffer was moved on C-c C-e C-d
    • - roxygen map was moved on C-c C-o and ess-roxy-update-entry now resides on C-c C-o C-o
    • - ess-handy-commands is not bound anymore
    • - ess-dev-map (including ess-tracebug and ess-developer) moved on C-c C-t
    • - C-c C-y is deprecated in favor of C-c C-z C-z
  • ESS[R] new command ess-describe-object-at-point bound to C-c C-d C-e (repeat C-e or e to cycle). It was inspired by Erik Iverson’s ess-R-object-tooltip. Customize ess-describe-at-point-method to use tooltip instead of an electric buffer.
  • ESS: New command ess-build-tags-for-directory bound to C-c C-e C-t for building dialect specific tag tables. After building tags use M-. to navigate to function and objects definitions. By default C-c C-e C-t builds tags based on imenu regular expressions and also include other common languages .c, .o, .cpp etc. But it relies on external find and etags commands. If ess-build-tags-command is defined (for R), the inferior process is asked to build tags instead.
  • ESS: ess-switch-process offers *new* alternative to start a new process instead of switching to one of the currently running processes.
  • ESS: Switching between processes (C-c C-s) uses buffer names instead of the internal process names. Use M-x rename-buffer command to conveniently rename your process buffers.
  • ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where proc stands for the internal process name and dir stands for the directory where the process was started in. The default is *proc*. For customization see ess-gen-proc-buffer-name-function.
  • ESS: ess-eval-visibly-p is deprecated in favor of ess-eval-visibly.
  • ESS: New evaluation pattern nowait. In addition to old nil and t values, ess-eval-visibly accepts nowait for a visible evaluation with no waiting for the process. See ess-eval-visibly for details on evaluation patterns.
  • ESS: New “Process” menu entry with process related commands and configuration
  • iESS: Process buffer is now automatically shown on errors
  • ESS: New ess-switch-to-inferior-or-script-buffer command bound to C-c C-z in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command.
  • ESSR-help: On multiple help pages with the same name, C-c C-v now asks for user resolution directly in emacs.
  • ESS[R] ess-roxy: new variable ess-roxy-re for fontification of cases where the number of leading # differs from ess-roxy-str.
  • ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods’ arguments after trailing ||.
  • ESS[R]: New ess-display-demos command bound to C-c C-d o and C-c C-d C-o
  • ESS: New ess-help-web-search command bound to C-c C-d w and C-c C-d C-w to facilitate interactive search of web resources. Implemented for R, Stata and Julia. See also ess-help-web-search-command.
  • ESS: ess-pdf-viewer-pref accepts now command line arguments
  • ESS[Rnw]: Add knitr support. Customize ess-swv-processor for the default processor.
  • ESS[Rnw]: More thorough renaming of remaining noweb-* to ess-noweb-*.
  • ESS[Rnw] new commands ess-eval-chunk-and-step and ess-eval-chunk bound to M-n C-c and M-n C-M-x to mirror standard ess commands in C-c map.
  • ESS[R] Auto-completion: new variable ess-ac-R-argument-suffix to customize the insertion of trailing "=". Defaults to “ = “.
  • ESS[Julia]: Added index, apropos and web-search to julia.
  • ESS help: More evaluation commands were added to ess-help mode (C-c C-c, C-M-x etc)

Bug Fixes in 12.09-1:

  • iESShelp: Multiple help pages with the same name are properly handled on C-c C-v
  • iESSremote: Evaluation with ESS remote no longer freezes emacs.
  • iESS: comint-previous-prompt C-c C-p no longer stops on secondary prompt “+”.
  • iESS[R], iESS(Sqpe) [S] on Windows: The options("editor") is now initialized to emacsclient instead of the previous gnuclient. The user may need to add the line (server-start) to the emacs initialization file. emacsclient has been included with emacs since GNU Emacs 22.1.
  • ESS[Rnw] Fixed “connection to R” bug (in 12.09 only).
  • ESS[Rnw] Explicit ess-swv-stangle and ess-swv-sweave functions.
  • ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched “\”’
  • ESS[R] is more careful with the R code injection. It now happens only once at the start of the session.
  • ESS[R]: Fixed auto-scrolling the comint buffer on evaluation.
  • ESS[Julia]: Solve several indentation and word navigation problems.
  • ESS[Julia]: Help system works again.

Changes/New Features in 12.09:

  • Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.
  • ESS[R]: On Windows, there is now a new customizable variable (currently called ess-directory-containing-R) to tell ESS where to look for the Rterm.exe executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find Rterm.exe executables when they are installed somewhere else.
  • ESS[julia]: new mode for editing julia code (*.jl). Start with M-x julia.

    Full interaction interface, imenu and basic error referencing are available.

  • ESS[R] noweb: noweb-mode and noweb-font-lock-mode have been renamed to ess-noweb-mode and ess-noweb-font-lock-mode to avoid conflicts with the “real” noweb-mode.
  • ESS[R] noweb: The long standing font-lock bug has been solved in ess-noweb interface.
  • ESS: Basic evaluation keys are now bound to ess-eval-region-*- functions:
    • - C-M-x is bound to ess-eval-region-or-function-or-paragraph
    • - C-c C-c is bound to ess-eval-region-or-function-or-paragraph-and-step
    • - C-RET is bound to ess-eval-region-or-line-and-step

    Each of these functions first evaluates the region whenever the region is active.

  • ESS: C-M-a/C-M-e now step to beginning/end of paragraph if no function has been detected.
  • ESS: ess-eval-*-and-step family of functions are now smarter, and don’t step to end of buffer or end of chunk code (@) when at the end of the code.
  • ESS: ess-handy-commands function is bound to C-c h
  • ESS: ESS is now blinking the evaluated region. Set ess-blink-region to nil to deactivate; ess-blink-delay gives the duration of the blink. Evaluated region is “blinked” in highlight face.
  • ESS[R-help] New key a for “apropos()” in help buffers. Also available through C-c h.
  • ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers.
  • ESS[R]: New customization interface for font-lock.

    ESS font-lock operates with predefined keywords. Default keywords are listed in ess-R-font-lock-keywords and inferior-R-font-lock-keywords, which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through ESS/Font-lock submenu.

    Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators.

  • ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set ess-use-auto-complete to nil to deactivate.
  • ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default ac-auto-start characters.
  • ESS no longer redefines default ac-sources, but only appends ac-source-filename to it.
  • ESS: ac-source-R now concatenates “ = “ to function arguments.
  • ESS: Menus for ESS and iESS have been reorganized and enriched with Tracebug and Developer submenus.
  • ESS[R]: ess-developer and ess-tracebug commands are available by default in ess-dev-map which is bound to C-c d in ESS and iESS maps.
  • ESS[R]: eldoc truncates long lines whenever eldoc-echo-area-use-multiline-p is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also ess-eldoc-abbreviation-style.
  • ESS[R]: completion code pre-caches arguments of heavy generics such as plot and print to eliminated the undesirable delay on first request.
  • iESS: Prompts in inferior buffers are now highlighted uniformly with comint-highlight-prompt face.
  • ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like Sys.sleep(5) no longer stall emacs.
  • ESS: [R, S, Stata, Julia] have specialized ess-X-post-run-hooks, which are run at the end of subprocess initialization.
  • ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on C-c C-c and other interactive commands.
  • ESS no longer auto-connects to a subprocess with a different dialect than the current buffer’s one.
  • ESS: ess-arg-function-offset-new-line is now a list for all the ESS indentation styles, which results in the following indentation after an open “(”:
      a <- some.function(other.function(
         arg1,
         arg2)
    
  • ESS[SAS]: Improved MS RTF support for GNU Emacs; try ess-sas-rtf-portrait and ess-sas-rtf-landscape.

Changes/Bug Fixes in 12.04-3:

  • ESS: basic support for package.el compatibility
  • ESS[R]: correct indentation of & and | continuation lines
  • M-x ess-version shows the svn revision even after make install
  • ESS[SAS]: improved XEmacs support
  • iESS[R]: better finding of previous prompt
  • ESS[Stata]: adjusted prompt for mata mode
  • ESS[R]: resolved name clashes with cl.el
  • ESS[R]: removed dependence on obsolete package assoc
  • New make target lisp, to build the lisp-only part, i.e., not building the docs.

Changes/New Features in 12.04-1:

  • iESS[Stata]: New interactive help invocation.
  • iESS[Stata]: New custom variable inferior-STA-start-file.
  • iESS[Stata]: inferior-STA-program-name is now “stata” and can be customized.
  • ESS[Stata] New sections in stata help files Syntax(s-S), Remarks(r), Title(t).

Bug Fixes in 12.04-1:

  • ESS[R]: Better ess-tracebug error handling.
  • ESS[R]: Corrected ess-eldoc help string filtering and improved argument caching.
  • ESS[R]: Indentation of non-block if/else/for/while lines fixed.
  • M-x ess-version should work better.
  • ESS: Filename completion now again works inside strings.
  • iESS[Stata]: Fixed prompt detection issue.
  • ESS[Rd]: R is autostarted also from here, when needed.

Changes/New Features in 12.04:

  • ESS: Reverting new behavior of 12.03, TAB in ess-mode no longer completes by default. If you want smart TAB completion in R and S scripts, similarly to iESS behavior, set the variable ess-tab-complete-in-script to t. Also see ess-first-tab-never-complete for how to customize where first TAB is allowed to complete.
  • ESS: completion is consistently bound to M-TAB (aka M-C-i) in both Emacs23 and Emacs24.
  • ESS: The variable ess-arg-function-offset-new-line introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to ’(2) results in:
      a <- some.function(
        arg1,
        arg2)
    

Changes/New Features in 12.03:

  • ESS indentation: new offset variable ess-arg-function-offset-new-line controlling for the indentation of lines immediately following open ’(’. This is useful to shift backwards function arguments after a long function call expression:
      a <- some.function(
             arg1,
             arg2)
    

    instead of the old

      a <- some.function(
                         arg1,
                         arg2)
    

    If ’(’ is not followed by new line the behavior is unchanged:

      a <- some.function(arg1,
                         arg2)
    

    This variable should be set as part of indentation style lists, or in ess-mode hook.

  • ESS[R]: C-c . sets (indentation) style.
  • ESS: In ESS buffers yank(C-y) command accepts double argument C-u C-u to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files.
  • Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features (“Completion”, “Developing with ESS”, “ESS tracebug”, “ESS developer”, “ESS ElDoc”, “IDO Completion” and “Evaluating Code”)
  • RefCard: Reference card was updated to include new features.
  • Eldoc: Eldoc was rewritten and is activated by default. See ess-use-eldoc, ess-eldoc-show-on-symbol, ess-eldoc-abbreviation-style variables for how to change the default behavior. Note: skeleton-pair-insert-maybe prohibits eldoc display, on ( insertion.
  • ESS[R]: Eldoc shows arguments of a generic function whenever found.
  • ESS: TAB in ess-mode now indents and completes, if there is nothing to indent. Set ess-first-tab-never-completes-p to t to make TAB never complete on first invocation. Completion mechanism is similar to the completion in the inferior-ess-mode – a filename expansion is tried, if not found ESS completes the symbol by querying the process.
  • ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by completion-at-point. Also in accordance with emacs conventions, ESS doesn’t bind M-TAB for emacs 24 or higher. M-TAB calls the default complete-symbol.
  • ESS[R]: Out of the box integration with Auto Completion mode http://cx4a.org/software/auto-complete . Three AC sources ac-source-R-args, ac-source-R-objects and ac-source-R are provided. The last one combines the previous two and makes them play nicely together. Set ess-use-auto-complete to t to start using it. Refer to documentation string of ac-use-auto-complete for further information.
  • ESS[R]: New unified and fast argument completion system, comprised of ess-funname.start, ess-function-arguments, ess-get-object-at-point. Eldoc and auto-completion integration are using this system.
  • ESS: ess-switch-to-end-of-ESS(C-c C-z), and ess-switch-to-ESS(C-c C-y): Automatically start the process whenever needed.
  • ESS[R]: roxy knows about previewing text version of the documentation. Bound to C-c C-e t.
  • ESS[R]: Solved the “nil filename” bug in roxygen support.
  • ESS[R]: ess-tracebug is now part of ESS:

    New Features:

    • - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don’t have to source your file, but just evaluate your code in normal fashion. Variable ess-tracebug-inject-source-p controls this behavior - if t, always inject source reference, if 'function, inject only for functions (this is the default), if nil, never inject.

      During the source injection the value of ess-eval-visibly is ignored.

    • - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer (C-c ') and jumps through this buffers if still alive, or in original org buffer otherwise.
    • - New keys in watch mode: ? and d
    • - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook
  • ESS[R]: New package ess-developer to evaluate R code directly in the package environment and namespace. It can be toggled on and off with C-c d t. When ess-developer is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with C-d a, and remove with C-d r. Source the current file with C-d s.Evaluation function which depend on `ess-eval-region' ask for the package to source the code into, ess-eval-function and alternatives search for the function name in the development packages’ environment and namespace and insert the definition accordingly. See the documentation section “Developing with ESS/ESS developer” for more details.
  • ESS[R] help system:

    New Features:

    • - q quits window instead of calling ess-switch-to-end-of-ESS. This is consistent with emacs behavior help and other special buffers (breaking change).
    • - k kills window without asking for the name (pointed by Sam Steingold)
    • - Help map inherits from special-mode-map as sugested by Sam Steingold.
    • - Package index: new function ess-display-index bound to i in help mode map.
    • - Package vignettes: new function ess-display-vignettes bound to v in help mode map.
    • - Display help in HTML browser: new function ess-display-help-in-browser bound to w in help mode map. It depends on R’s browser option.
    • - New custom variable ess-help-pop-to-buffer: if non-nil ESS help buffers are given focus on display. The default is t (breaking change).
    • - New menu entries for the above functions.
    • - Bogus help buffers are no longer generated by default, i.e. buffers of the form “No documentation for ’foo’ in specified packages and libraries: you could try ’??foo’ ”. ess-help-kill-bogus-buffers now defaults to t. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning.
  • ESS now uses IDO completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set ess-use-ido to nil if you don’t want the IDO completion. See the documentation string of ess-use-ido for more information about IDO and ESS configuration.
  • ESS[S]: “,“ is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from `ess-handy-commands' list. If ess-R-smart-operators is t `ess-smart-comma also inserts “ “ after comma.
  • ESS[S], notably R: Variable `ess-handy-commands' stores an alist of useful commands which are called by ess-smart-comma in the inferior buffer.

    Currently containing:

    change-directory

    ess-change-directory

    help-index

    ess-display-index

    help-object

    ess-display-help-on-object

    vignettes

    ess-display-vignettes

    objects[ls]

    ess-execute-objects

    search

    ess-execute-search

    set-width

    ess-execute-screen-options

    install.packages

    ess-install.packages

    library

    ess-library

    setRepos

    ess-setRepositories

    sos

    ess-sos

    Handy commands: ess-library, ess-install.packages, etc - ask for item with completion and execute the correspond command. ess-sos is a interface to findFn function in package sos. If package sos is not found, ask user for interactive install.

  • ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of ess-tracebug and developer status of ess-developer in all associated buffers.
  • ESS: New ess-completing-read mechanism: ESS uses ido completions whenever possible. Variable ess-use-ido controls whether to use ido completion or not. Active by default.
  • ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future.
  • ESS[S]: New custom variable inferior-ess-S-prompt to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation (comint-previous-prompt and comint-next-prompt) the inferior buffers.
  • ESS[R]: Internal R completion retrieval (ess-R-complete-object-name) was rewritten and is faster now.
  • ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged.
  • ESS: new functions to manipulate process plists: ess-process-get and ess-process-set.
  • ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in > . This could be overwritten by setting inferor-ess-primary-prompt.
  • ESS[S], notably R: Saved command history: ess-history-file now accepts t (default), nil, or a file name. By setting it to nil no command line history is saved anymore. ess-history-directory now allows to have the history all saved in one “central” file.
  • ESS[R]: more Roxygen improvements.
  • ESS[R]: C-c . to set (indentation) style.
  • ESS[R]: Functions with non-standard names (for example ’aaa-bbb:cc’) are properly handled by font-lock and evaluation routines.
  • ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in ess-get-words-from-vector and ess-command.

Next: , Previous: , Up: Introduction   [Contents][Index]

1.3 Authors of and contributors to ESS

The ESS environment is built on the open-source projects of many contributors, dating back to 1989 where Doug Bates and Ed Kademan wrote S-mode to edit S and Splus files in GNU Emacs. Frank Ritter and Mike Meyer added features, creating version 2. Meyer and David Smith made further contributions, creating version 3. For version 4, David Smith provided significant enhancements to allow for powerful process interaction.

John Sall wrote GNU Emacs macros for SAS source code around 1990. Tom Cook added functions to submit jobs, review listing and log files, and produce basic views of a dataset, thus creating a SAS-mode which was distributed in 1994.

In 1994, A.J. Rossini extended S-mode to support XEmacs. Together with extensions written by Martin Maechler, this became version 4.7 and supported S, Splus, and R. In 1995, Rossini extended SAS-mode to work with XEmacs.

In 1997, Rossini merged S-mode and SAS-mode into a single Emacs package for statistical programming; the product of this marriage was called ESS version 5. Richard M. Heiberger designed the inferior mode for interactive SAS and SAS-mode was further integrated into ESS. Thomas Lumley’s Stata mode, written around 1996, was also folded into ESS. More changes were made to support additional statistical languages, particularly XLispStat.

ESS initially worked only with Unix statistics packages that used standard-input and standard-output for both the command-line interface and batch processing. ESS could not communicate with statistical packages that did not use this protocol. This changed in 1998 when Brian Ripley demonstrated use of the Windows Dynamic Data Exchange (DDE) protocol with ESS. Heiberger then used DDE to provide interactive interfaces for Windows versions of Splus. In 1999, Rodney A. Sparapani and Heiberger implemented SAS batch for ESS relying on files, rather than standard-input/standard-output, for Unix, Windows and Mac. In 2001, Sparapani added BUGS batch file processing to ESS for Unix and Windows.

  • The multiple process code, and the idea for ess-eval-line-and-next-line are by Rod Ball.
  • Thanks to Doug Bates for many useful suggestions.
  • Thanks to Martin Maechler for reporting and fixing bugs, providing many useful comments and suggestions, and for maintaining the ESS mailing lists.
  • Thanks to Frank Ritter for updates, particularly the menu code, and invaluable comments on the manual.
  • Thanks to Ken’ichi Shibayama for his excellent indenting code, and many comments and suggestions.
  • Thanks to Aki Vehtari for adding interactive BUGS support.
  • Thanks to Brendan Halpin for bug-fixes and updates to Stata-mode.
  • Last, but definitely not least, thanks to the many ESS users and contributors to the ESS mailing lists.

ESS is being developed and currently maintained by


Next: , Previous: , Up: Introduction   [Contents][Index]

1.4 Getting the latest version of ESS

The latest released version of ESS is always available on the web at: ESS web page or StatLib

1.4.1 Git for ESS development

For development and experimentation on new ESS features, there is now a GitHub branch for ESS, available at https://github.com/emacs-ess/ESS.


Previous: , Up: Introduction   [Contents][Index]

1.5 How to read this manual

If you need to install ESS, read Installation for details on what needs to be done before proceeding to the next chapter.

In this manual we use the standard notation for describing the keystrokes used to invoke certain commands. C-<chr> means hold the CONTROL key while typing the character <chr>. M-<chr> means hold the META or EDIT or ALT key down while typing <chr>. If there is no META, EDIT or ALT key, instead press and release the ESC key and then type <chr>.

All ESS commands can be invoked by typing M-x command. Most of the useful commands are bound to keystrokes for ease of use. Also, the most popular commands are also available through the emacs menubar, and finally, if available, a small subset are provided on the toolbar. Where possible, keybindings are similar to other modes in emacs to strive for a consistent user interface within emacs, regardless of the details of which programming language is being edited, or process being run.

Some commands, such as M-x R can accept an optional ‘prefix’ argument. To specify the prefix argument, you would type C-u before giving the command. e.g. If you type C-u M-x R, you will be asked for command line options that you wish to invoke the R process with.

Emacs is often referred to as a ‘self-documenting’ text editor. This applies to ESS in two ways. First, limited documentation about each ESS command can be obtained by typing C-h f. For example, if you type C-h f ess-eval-region, documentation for that command will appear in a separate *Help* buffer. Second, a complete list of keybindings that are available in each ESS mode and brief description of that mode is available by typing C-h m within an ESS buffer.

Emacs is a versatile editor written in both C and lisp; ESS is written in the Emacs lisp dialect (termed ‘elisp’) and thus benefits from the flexible nature of lisp. In particular, many aspects of ESS behaviour can be changed by suitable customization of lisp variables. This manual mentions some of the most frequent variables. A full list of them however is available by using the Custom facility within emacs. (Type M-x customize-group RET ess RET to get started.) Customization provides details of common user variables you can change to customize ESS to your taste, but it is recommended that you defer this section until you are more familiar with ESS.


Next: , Previous: , Up: Top   [Contents][Index]

2 Installing ESS on your system

The following section details those steps necessary to get ESS running on your system.


Next: , Up: Installation   [Contents][Index]

2.1 Step by step instructions

  1. Download the latest zip or tgz archive from ESS downloads area and unpack it into a directory where you would like ESS to reside. We will denote this directory as /path/to/ESS/ hereafter.

    Alternatively you can use git to fetch the most recent development version to your local machine with:

    git clone https://github.com/emacs-ess/ESS.git /path/to/ESS
    
  2. Optionally, compile elisp files and build the documentation with:
    cd /path/to/ESS/
    make
    

    Without this step, info, pdf and html documentation and reference card will not be available.

  3. Optionally, install into your local machine with make install. You might need administrative privileges:
    make install
    

    The files are installed into /usr/share/emacs directory. For this step to run correctly on macOS, you will need to adjust the PREFIX path in Makeconf. The necessary code and instructions are commented in that file.

  4. If you have performed the make install step from above, just add
    (require 'ess-site)
    

    to your ~/.emacs file. Otherwise, you should add /path/to/ESS/lisp/ to your emacs load path and then load ESS with the following lines in your ~/.emacs:

    (add-to-list 'load-path "/path/to/ESS/lisp/")
    (load "ess-site")
    
  5. Restart your Emacs and check that ESS was loaded from a correct location with M-x ess-version.

Note for Windows and macOS users: The most straightforward way to install Emacs on your machine is by downloading the Emacs binary by Vincent Goulet; either Emacs Modified for macOS or from Emacs Modified for Windows.

Note for XEmacs users: Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.


2.2 License

The source and documentation of ESS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

ESS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details.


Next: , Previous: , Up: Installation   [Contents][Index]

2.3 Stability

All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated!


Previous: , Up: Installation   [Contents][Index]

2.4 Requirements

ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS.

ESS supports current, and recent, stable versions of GNU Emacs (currently, 24.3 or higher; alpha/beta/pre-release versions are NOT SUPPORTED).

Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ended with ESS 12.04-4.

To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi).


Next: , Previous: , Up: Top   [Contents][Index]

3 Interacting with statistical programs

As well as using ESS to edit your source files for statistical programs, you can use ESS to run these statistical programs. In this chapter, we mostly will refer by example to running S from within emacs. The emacs convention is to name such processes running under its control as ‘inferior processes’. This term can be slightly misleading, in which case these processes can be thought of ‘interactive processes’. Either way, we use the term ‘iESS’ to refer to the Emacs mode used to interact with statistical programs.


3.1 Starting an ESS process

To start an S session on Unix or on Windows when you use the Cygwin bash shell, simply type M-x S RET.

To start an S session on Windows when you use the MSDOS prompt shell, simply type M-x S+6-msdos RET.

S will then (by default) ask the question

S starting data directory?

Enter the name of the directory you wish to start S from (that is, the directory you would have cd’d to before starting S from the shell). This directory should have a .Data subdirectory.

You will then be popped into a buffer with name ‘*S*’ which will be used for interacting with the ESS process, and you can start entering commands.


3.2 Running more than one ESS process

ESS allows you to run more than one ESS process simultaneously in the same session. Each process has a name and a number; the initial process (process 1) is simply named (using S-PLUS as an example) ‘S+3:1’. The name of the process is shown in the mode line in square brackets (for example, ‘[S+3:2]’); this is useful if the process buffer is renamed. Without a prefix argument, M-x S starts a new ESS process, using the first available process number. With a prefix argument (for R), C-u M-x R allows for the specification of command line options.

You can switch to any active ESS process with the command ‘M-x ess-request-a-process’. Just enter the name of the process you require; completion is provided over the names of all running S processes. This is a good command to consider binding to a global key.


3.3 ESS processes on Remote Computers

ESS works with processes on remote computers as easily as with processes on the local machine. The recommended way to access a statistical program on remote computer is to start it with tramp. Require tramp in your .emacs file:

(require 'tramp)

Now start an ssh session with ‘C-x C-f /ssh:user@host: RET’. Tramp should open a dired buffer in your remote home directory. Now call your favorite ESS process (R, Julia, stata etc) as you would usually do on local machine: M-x R.

Alternatively you can start your process normally (M-x R). After you are asked for starting directory, simply type ‘/ssh:user@host: RET’. R process will be started on the remote machine.

To simplify the process even further create a "config" file in your .ssh/ folder and add an account. For example if you use amazon EC2, it might look like following:

   Host amazon
      Hostname ec2-54-215-203-181.us-west-1.compute.amazonaws.com
      User ubuntu
      IdentityFile ~/.ssh/my_amazon_key.pem
      ForwardX11 yes

With this configuration /ssh:amazon: is enough to start a connection. The ForwardX11 is needed if you want to see R graphic device showing on the current machine

Other ways to setup a remote ESS connection are through ess-remote.

  1. Start a new shell, telnet or ssh buffer and connect to the remote computer (e.g. use, ‘M-x shell’, ‘M-x telnet’ or ‘M-x ssh’; ssh.el is available at http://www.splode.com/~friedman/software/emacs-lisp/src/ssh.el).
  2. Start the ESS process on the remote machine, for example with one of the commands ‘Splus’, or ‘R’, or ‘sas -stdio’.
  3. Start ‘M-x ess-remote’. You will be prompted for a program name with completion. Choose one. Your process is now known to ESS. All the usual ESS commands (‘C-c C-n’ and its relatives) now work with the S language processes. For SAS you need to use a different command ‘C-c i’ (that is a regular ‘i’, not a ‘C-i’) to send lines from your myfile.sas to the remote SAS process. ‘C-c i’ sends lines over invisibly. With ess-remote you get teletype behavior—the data input, the log, and the listing all appear in the same buffer. To make this work, you need to end every PROC and DATA step with a "RUN;" statement. The "RUN;" statement is what tells SAS that it should process the preceding input statements.
  4. Graphics (interactive) on the remote machine. If you run X11 (See X11, X Windows) on both the local and remote machines then you should be able to display the graphs locally by setting the ‘DISPLAY’ environment variable appropriately. Windows users can download ‘xfree86’ from cygwin.
  5. Graphics (static) on the remote machine. If you don’t run the X window system on the local machine, then you can write graphics to a file on the remote machine, and display the file in a graphics viewer on the local machine. Most statistical software can write one or more of postscript, GIF, or JPEG files. Depending on the versions of emacs and the operating system that you are running, emacs itself may display ‘.gif’ and ‘.jpg’ files. Otherwise, a graphics file viewer will be needed. Ghostscript/ghostview may be downloaded to display ‘.ps’ and ‘.eps’ files. Viewers for GIF and JPEG are usually included with operating systems. See ESS(SAS)--Function keys for batch processing, for more information on using the F12 key for displaying graphics files with SAS.

Should you or a colleague inadvertently start a statistical process in an ordinary ‘*shell*’ buffer, the ‘ess-remote’ command can be used to convert it to an ESS buffer and allow you to use the ESS commands with it.

We have two older commands, now deprecated, for accessing ESS processes on remote computers. See S+elsewhere and ESS-elsewhere.


3.4 S+elsewhere and ESS-elsewhere

These commands are now deprecated. We recommend ‘ess-remote’. We have two versions of the elsewhere function. ‘S+elsewhere’ is specific for the S-Plus program. The more general function ‘ESS-elsewhere’ is not as stable.

  1. Enter ‘M-x S+elsewhere’. You will be prompted for a starting directory. I usually give it my project directory on the local machine, say ‘~myname/myproject/

    Or enter ‘M-x ESS-elsewhere’. You will be prompted for an ESS program and for a starting directory. I usually give it my project directory on the local machine, say ‘~myname/myproject/

  2. The ‘*S+3*’ buffer will appear with a prompt from the local operating system (the unix prompt on a unix workstation or with cygwin bash on a PC, or the msdos prompt on a PC without bash). emacs may freeze because the cursor is at the wrong place. Unfreeze it with ‘C-g’ then move the cursor to the end with ‘M->’. With ‘S+elsewhere’ the buffer name is based on the name of the ESS program.
  3. Enter ‘telnet myname@other.machine’ (or ‘ssh myname@other.machine’). You will be prompted for your password on the remote machine. Use ‘M-x send-invisible’ before typing the password itself.
  4. Before starting the ESS process, type ‘stty -echo nl’ at the unix prompt. The ‘-echo’ turns off the echo, the ‘nl’ turns off the newline that you see as ‘^M’.
  5. You are now talking to the unix prompt on the other machine in the ‘*S+3*’ buffer. cd into the directory for the current project and start the ESS process by entering ‘Splus’ or ‘R’ or ‘sas -stdio’ as appropriate. If you can login remotely to your Windows 2000, then you should be able to run ‘Sqpe’ on the Windows machine. I haven’t tested this and no-one has reported their tests to me. You will not be able to run the GUI through this text-only connection.
  6. Once you get the S or R or SAS prompt, then you are completely connected. All the ‘C-c C-n’ and related commands work correctly in sending commands from ‘myfile.s’ or ‘myfile.r’ on the PC to the ‘*S+3*’ buffer running the S or R or SAS program on the remote machine.
  7. Graphics on the remote machine works fine. If you run the X window system on the remote unix machine you should be able to display them in ‘xfree86’ on your PC. If you don’t run X Windows, or X11, then you can write graphics to the postscript device and copy it to your PC with dired and display it with ghostscript.

3.5 Changing the startup actions

If you do not wish ESS to prompt for a starting directory when starting a new process, set the variable ess-ask-for-ess-directory to nil. In this case, the starting directory will be set using one of the following methods:

  1. If the variable ess-directory-function stores the name of a function, the value returned by this function is used. The default for this variable is nil.
  2. Otherwise, if the variable ess-directory stores the name of a directory (ending in a slash), this value is used. The default for this variable is nil.
  3. Otherwise, the working directory of the current buffer is used.

If ess-ask-for-ess-directory has a non-nil value (as it does by default) then the value determined by the above rules provides the default when prompting for the starting directory. Incidentally, ess-directory is an ideal variable to set in ess-pre-run-hook.

If you like to keep a record of your S sessions, set the variable ess-ask-about-transfile to t, and you will be asked for a filename for the transcript before the ESS process starts.

User Option: ess-ask-about-transfile

If non-nil, as for a file name in which to save the session transcript.

Enter the name of a file in which to save the transcript at the prompt. If the file doesn’t exist it will be created (and you should give it a file name ending in ‘.St’); if the file already exists the transcript will be appended to the file. (Note: if you don’t set this variable but you still want to save the transcript, you can still do it later — see Saving transcripts.)

Once these questions are answered (if they are asked at all) the S process itself is started by calling the program name specified in the variable inferior-ess-program. If you need to pass any arguments to this program, they may be specified in the variable inferior-S_program_name-args (e.g. if inferior-ess-program is "S+" then the variable to set is inferior-S+-args. It is not normally necessary to pass arguments to the S program; in particular do not pass the ‘-e’ option to Splus, since ESS provides its own command history mechanism.

By default, the new process will be displayed in the same window in the current frame. If you wish your S process to appear in a separate variable, customize the variable inferior-ess-own-frame. Alternatively, change inferior-ess-same-window if you wish the process to appear within another window of the current frame.


Next: , Previous: , Up: Top   [Contents][Index]

4 Interacting with the ESS process

The primary function of the ESS package is to provide an easy-to-use front end to the S interpreter. This is achieved by running the S process from within an Emacs buffer, called hereafter inferior buffer, which has an active inferior-ess-mode. The features of Inferior S mode are similar to those provided by the standard Emacs shell mode (see Shell Mode in The Gnu Emacs Reference Manual). Command-line completion of S objects and a number of ‘hot keys’ for commonly-used S commands are also provided for ease of typing.


4.1 Entering commands and fixing mistakes

Sending a command to the ESS process is as simple as typing it in and pressing the RETURN key:

Command: inferior-ess-send-input

RET Send the command on the current line to the ESS process.

If you make a typing error before pressing RET all the usual Emacs editing commands are available to correct it (see Basic editing commands in The GNU Emacs Reference Manual). Once the command has been corrected you can press RETURN (even if the cursor is not at the end of the line) to send the corrected command to the ESS process.

Emacs provides some other commands which are useful for fixing mistakes:

C-c C-w

backward-kill-word Deletes the previous word (such as an object name) on the command line.

C-c C-u

comint-kill-input Deletes everything from the prompt to point. Use this to abandon a command you have not yet sent to the ESS process.

C-c C-a

comint-bol Move to the beginning of the line, and then skip forwards past the prompt, if any.

See Shell Mode in The Gnu Emacs Reference Manual, for other commands relevant to entering input.


4.2 Manipulating the transcript

Most of the time, the cursor spends most of its time at the bottom of the ESS process buffer, entering commands. However all the input and output from the current (and previous) ESS sessions is stored in the process buffer (we call this the transcript) and often we want to move back up through the buffer, to look at the output from previous commands for example.

Within the process buffer, a paragraph is defined as the prompt, the command after the prompt, and the output from the command. Thus M-{ and M-} move you backwards and forwards, respectively, through commands in the transcript. A particularly useful command is M-h (mark-paragraph) which will allow you to mark a command and its entire output (for deletion, perhaps). For more information about paragraph commands, see Paragraphs in The GNU Emacs Reference Manual.

If an ESS process finishes and you restart it in the same process buffer, the output from the new ESS process appears after the output from the first ESS process separated by a form-feed (‘^L’) character. Thus pages in the ESS process buffer correspond to ESS sessions. Thus, for example, you may use C-x [ and C-x ] to move backward and forwards through ESS sessions in a single ESS process buffer. For more information about page commands, see Pages in The GNU Emacs Reference Manual.


4.2.1 Manipulating the output from the last command

Viewing the output of the command you have just entered is a common occurrence and ESS provides a number of facilities for doing this. Whenever a command produces a longish output, it is possible that the window will scroll, leaving the next prompt near the middle of the window. The first part of the command output may have scrolled off the top of the window, even though the entire output would fit in the window if the prompt were near the bottom of the window. If this happens, you can use the following comint commands:

comint-show-maximum-output to move to the end of the buffer, and place cursor on bottom line of window to make more of the last output visible. To make this happen automatically for all inputs, set the variable comint-scroll-to-bottom-on-input to t or 'this. If the first part of the output is still not visible, use C-c C-r (comint-show-output), which moves cursor to the previous command line and places it at the top of the window.

Finally, if you want to discard the last command output altogether, use C-c C-o (comint-delete-output), which deletes everything from the last command to the current prompt. Use this command judiciously to keep your transcript to a more manageable size.


4.2.2 Viewing older commands

If you want to view the output from more historic commands than the previous command, commands are also provided to move backwards and forwards through previously entered commands in the process buffer:

C-c C-p

comint-previous-input Moves point to the preceding command in the process buffer.

C-c C-n

comint-next-input Moves point to the next command in the process buffer.

Note that these two commands are analogous to C-p and C-n but apply to command lines rather than text lines. And just like C-p and C-n, passing a prefix argument to these commands means to move to the ARG’th next (or previous) command. (These commands are also discussed in Shell History Copying in The GNU Emacs Reference Manual.)

There are also two similar commands (not bound to any keys by default) which move to preceding or succeeding commands, but which first prompt for a regular expression (see Syntax of Regular Expression in The GNU Emacs Reference Manual), and then moves to the next (previous) command matching the pattern.

comint-backward-matching-input regexp arg
comint-forward-matching-input regexp arg

Search backward (forward) through the transcript buffer for the arg’th previous (next) command matching regexp. arg is the prefix argument; regexp is prompted for in the minibuffer.


4.2.3 Re-submitting commands from the transcript

When moving through the transcript, you may wish to re-execute some of the commands you find there. ESS provides three commands to do this; these commands may be used whenever the cursor is within a command line in the transcript (if the cursor is within some command output, an error is signalled). Note all three commands involve the RETURN key.

RET

inferior-ess-send-input See Command-line editing.

C-c RET

comint-copy-old-input Copy the command under the cursor to the current command line, but don’t execute it. Leaves the cursor on the command line so that the copied command may be edited.

When the cursor is not after the current prompt, the RETURN key has a slightly different behavior than usual. Pressing RET on any line containing a command that you entered (i.e. a line beginning with a prompt) sends that command to the ESS process once again. If you wish to edit the command before executing it, use C-c RET instead; it copies the command to the current prompt but does not execute it, allowing you to edit it before submitting it.

These commands work even if the current line is a continuation line (i.e. the prompt is ‘+’ instead of ‘>’) — in this case all the lines that form the multi-line command are concatenated together and the resulting command is sent to the ESS process (currently this is the only way to resubmit a multi-line command to the ESS process in one go). If the current line does not begin with a prompt, an error is signalled. This feature, coupled with the command-based motion commands described above, could be used as a primitive history mechanism. ESS provides a more sophisticated mechanism, however, which is described in Command History.


4.2.4 Keeping a record of your S session

To keep a record of your S session in a disk file, use the Emacs command C-x C-w (write-file) to attach a file to the ESS process buffer. The name of the process buffer will (probably) change to the name of the file, but this is not a problem. You can still use S as usual; just remember to save the file before you quit Emacs with C-x C-s. You can make ESS prompt you for a filename in which to save the transcript every time you start S by setting the variable ess-ask-about-transfile to t; See Customizing startup. We recommend you save your transcripts with filenames that end in ‘.St’. There is a special mode (ESS transcript mode — see Transcript Mode) for editing transcript files which is automatically selected for files with this suffix.

S transcripts can get very large, so some judicious editing is appropriate if you are saving it in a file. Use C-c C-o whenever a command produces excessively long output (printing large arrays, for example). Delete erroneous commands (and the resulting error messages or other output) by moving to the command (or its output) and typing M-h C-w. Also, remember that C-c C-x (and other hot keys) may be used for commands whose output you do not wish to appear in the transcript. These suggestions are appropriate even if you are not saving your transcript to disk, since the larger the transcript, the more memory your Emacs process will use on the host machine.

Finally, if you intend to produce S source code (suitable for using with source() or inclusion in an S function) from a transcript, then the command ess-transcript-clean-region may be of use. see Transcript Mode


4.3 Command History

ESS provides easy-to-use facilities for re-executing or editing previous commands. An input history of the last few commands is maintained (by default the last 500 commands are stored, although this can be changed by setting the variable comint-input-ring-size in inferior-ess-mode-hook.) The simplest history commands simply select the next and previous commands in the input history:

M-p

comint-previous-input Select the previous command in the input history.

M-n

comint-next-input Select the next command in the input history.

For example, pressing M-p once will re-enter the last command into the process buffer after the prompt but does not send it to the ESS process, thus allowing editing or correction of the command before the ESS process sees it. Once corrections have been made, press RET to send the edited command to the ESS process.

If you want to select a particular command from the history by matching it against a regular expression (see Syntax of Regular Expression in The GNU Emacs Reference Manual), to search for a particular variable name for example, these commands are also available:

M-r

comint-history-isearch-backward-regexp Prompt for a regular expression, and search backwards through the input history for a command matching the expression.

A common type of search is to find the last command that began with a particular sequence of characters; the following two commands provide an easy way to do this:

C-c M-r

comint-previous-matching-input-from-input Select the previous command in the history which matches the string typed so far.

C-c M-s

comint-next-matching-input-from-input Select the next command in the history which matches the string typed so far.

Instead of prompting for a regular expression to match against, as they instead select commands starting with those characters already entered. For instance, if you wanted to re-execute the last attach() command, you may only need to type att and then C-c M-r and RET.

See Shell History Ring in The GNU Emacs Reference Manual, for a more detailed discussion of the history mechanism, and do experiment with the In/Out menu to explore the possibilities.

Many ESS users like to have even easier access to these, and recommend to add something like

  (eval-after-load "comint"
   '(progn
      (define-key comint-mode-map [up]
        'comint-previous-matching-input-from-input)
      (define-key comint-mode-map [down]
        'comint-next-matching-input-from-input)

      ;; also recommended for ESS use --
      (setq comint-scroll-to-bottom-on-output 'others)
      (setq comint-scroll-show-maximum-output t)
      ;; somewhat extreme, almost disabling writing in *R*, *shell* buffers above prompt:
      (setq comint-scroll-to-bottom-on-input 'this)
      ))

to your .emacs file, where the last two settings are typically desirable for the situation where you work with a script (e.g., code.R) and send code chunks to the process buffer (e.g. *R*). Note however that these settings influence all comint-using emacs modes, not just the ESS ones, and for that reason, these customization cannot be part of ESS itself.


4.3.1 Saving the command history

The ess-history-file variable, which is t by default, together with ess-history-directory, governs if and where the command history is saved and restored between sessions. By default, ess-history-directory is nil, and the command history will be stored (as text file) in the ess-directory, e.g., as .Rhistory.

Experienced ESS users often work exclusively with script files rather than in a (e.g., *R) console session, and may not want to save any history files, and hence have:

  (setq ess-history-file nil)

or will only want one global command history file and have:

  (setq ess-history-directory "~/.R/")

in your .emacs file.


4.4 References to historical commands

Instead of searching through the command history using the command described in the previous section, you can alternatively refer to a historical command directly using a notation very similar to that used in csh. History references are introduced by a ‘!’ or ‘^’ character and have meanings as follows:

!!

The immediately previous command

!-N

The Nth previous command

!text

The last command beginning with the string ‘text

!?text

The last command containing the string ‘text

In addition, you may follow the reference with a word designator to select particular words of the input. A word is defined as a sequence of characters separated by whitespace. (You can modify this definition by setting the value of comint-delimiter-argument-list to a list of characters that are allowed to separate words and themselves form words.) Words are numbered beginning with zero. The word designator usually begins with a ‘:’ (colon) character; however it may be omitted if the word reference begins with a ‘^’, ‘$’, ‘*’ or ‘-’. If the word is to be selected from the previous command, the second ‘!’ character can be omitted from the event specification. For instance, ‘!!:1’ and ‘!:1’ both refer to the first word of the previous command, while ‘!!$’ and ‘!$’ both refer to the last word in the previous command. The format of word designators is as follows:

0

The zeroth word (i.e. the first one on the command line)

n

The nth word, where n is a number

^

The first word (i.e. the second one on the command line)

$

The last word

x-y

A range of words; ‘-y’ abbreviates ‘0-y

*

All the words except the zeroth word, or nothing if the command had just one word (the zeroth)

x*

Abbreviates x-$

x-

Like ‘x*’, but omitting the last word

In addition, you may surround the entire reference except for the first ‘!’ by braces to allow it to be followed by other (non-whitespace) characters (which will be appended to the expanded reference).

Finally, ESS also provides quick substitution; a reference like ‘^old^new^’ means “the last command, but with the first occurrence of the string ‘old’ replaced with the string ‘new’” (the last ‘^’ is optional). Similarly, ‘^old^’ means “the last command, with the first occurrence of the string ‘old’ deleted” (again, the last ‘^’ is optional).

To convert a history reference as described above to an input suitable for S, you need to expand the history reference, using the TAB key. For this to work, the cursor must be preceded by a space (otherwise it would try to complete an object name) and not be within a string (otherwise it would try to complete a filename). So to expand the history reference, type SPC TAB. This will convert the history reference into an S command from the history, which you can then edit or press RET to execute.

For example, to execute the last command that referenced the variable data, type !?data SPC TAB RET.


4.5 Hot keys for common commands

ESS provides a number of commands for executing the commonly used functions. These commands below are basically information-gaining commands (such as objects() or search()) which tend to clutter up your transcript and for this reason some of the hot keys display their output in a temporary buffer instead of the process buffer by default. This behavior is controlled by the following option:

User Option: ess-execute-in-process-buffer

If non-nil, means that these commands will produce their output in the process buffer instead.

In any case, passing a prefix argument to the commands (with C-u) will reverse the meaning of ess-execute-in-process-buffer for that command, i.e. the output will be displayed in the process buffer if it usually goes to a temporary buffer, and vice-versa. These are the hot keys that behave in this way:

Command: ess-execute-objects posn

C-c C-x Sends the objects() command to the ESS process. A prefix argument specifies the position on the search list (use a negative argument to toggle ess-execute-in-process-buffer as well). A quick way to see what objects are in your working directory. A prefix argument of 2 or more means get objects for that position. A negative prefix argument posn gets the objects for that position, as well as toggling ess-execute-in-process-buffer.

Command: ess-execute-search invert

C-c C-s Sends the inferior-ess-search-list-command command to the ess-language process; search() in S. Prefix invert toggles ess-execute-in-process-buffer.

ess-execute may seem pointless when you could just type the command in anyway, but it proves useful for ‘spot’ calculations which would otherwise clutter your transcript, or for evaluating an expression while partway through entering a command. You can also use this command to generate new hot keys using the Emacs keyboard macro facilities; see Keyboard Macros in The GNU Emacs Reference Manual.

The following hot keys do not use ess-execute-in-process-buffer to decide where to display the output — they either always display in the process buffer or in a separate buffer, as indicated:

Command: ess-load-file filename

C-c C-l Prompts for a file (filename) to load into the ESS process using source(). If there is an error during loading, you can jump to the error in the file with the following function.

Command: ess-parse-errors arg reset

C-c ` or C-x ` Visits next next-error message and corresponding source code. If all the error messages parsed so far have been processed already, the message buffer is checked for new ones. A prefix arg specifies how many error messages to move; negative means move back to previous error messages. Just C-u as a prefix means reparse the error message buffer and start at the first error. The reset argument specifies restarting from the beginning.

See Error Checking, for more details.

Command: ess-display-help-on-object object command

C-c C-v Pops up a help buffer for an S object or function. If command is supplied, it is used instead of inferior-ess-help-command. See Help for more details.

Command: ess-quit

C-c C-q Issue an exiting command to the inferior process, additionally also running ess-cleanup for disposing of any temporary buffers (such as help buffers and edit buffers) that may have been created. Use this command when you have finished your S session instead of simply quitting at the inferior process prompt, otherwise you will need to issue the command ess-cleanup explicitly to make sure that all the files that need to be saved have been saved, and that all the temporary buffers have been killed.


Next: , Previous: , Up: Entering commands   [Contents][Index]

4.6 Is the Statistical Process running under ESS?

For the S languages (S, S-Plus, R) ESS sets an option in the current process that programs in the language can check to determine the environment in which they are currently running.

ESS sets options(STERM="iESS") for S language processes running in an inferior iESS[S] or iESS[R] buffer.

ESS sets options(STERM="ddeESS") for independent S-Plus for Windows processes running in the GUI and communicating with ESS via the DDE (Microsoft Dynamic Data Exchange) protocol through a ddeESS[S] buffer.

Other values of options()$STERM that we recommend are:

  • length: Fixed length xterm or telnet window.
  • scrollable: Unlimited length xterm or telnet window.
  • server: S-Plus Stat Server.
  • BATCH: BATCH.
  • Rgui: R GUI.
  • Commands: S-Plus GUI without DDE interface to ESS.

Additional values may be recommended in the future as new interaction protocols are created. Unlike the values iESS and ddeESS, ESS can’t set these other values since the S language program is not under the control of ESS.


4.7 Using emacsclient

When starting R or S under Unix, ESS sets options(editor="emacsclient"). (Under Microsoft Windows, it will use gnuclient.exe rather than emacsclient, but the same principle applies.) Within your R session, for example, if you have a function called iterator, typing fix(iterator), will show that function in a temporary Emacs buffer. You can then correct the function. When you kill the buffer, the definition of the function is updated. Using edit() rather than fix() means that the function is not updated. Finally, the S function page(x) will also show a text representation of the object x in a temporary Emacs buffer.


4.8 Other commands provided by inferior-ESS

The following commands are also available in the process buffer:

Command: comint-interrupt-subjob

C-c C-c Sends a Control-C signal to the ESS process. This has the effect of aborting the current command.

Command: ess-switch-to-inferior-or-script-buffer toggle-eob

C-c C-z When in process buffer, return to the most recent script buffer. When in a script buffer pop to the associated process buffer. This is a single key command, that is C-c C-z C-z from a script buffer returns to the original buffer.

If toggle-eob is given, the value of ess-switch-to-end-of-proc-buffer is toggled.

User Option: ess-switch-to-end-of-proc-buffer

If non-nil, ess-switch-to-inferior-or-script-buffer goes to end of process buffer.

Other commands available in Inferior S mode are discussed in Shell Mode in The Gnu Emacs Reference Manual.


Next: , Previous: , Up: Top   [Contents][Index]

5 Sending code to the ESS process

Other commands are also available for evaluating portions of code in the S process. These commands cause the selected code to be evaluated directly by the ESS process as if you had typed them in at the command line; the source() function is not used. You may choose whether both the commands and their output appear in the process buffer (as if you had typed in the commands yourself) or if the output alone is echoed. The behavior is controlled by the variable:

User Option: ess-eval-visibly

Non-nil means ess-eval-* commands display commands and output in the process buffer. Default is t.

Passing a prefix (C-u) vis to any of the following commands, however, reverses the meaning of ess-eval-visibly for that command only — for example C-u C-c C-j suppresses the current line of S (or other) code in the ESS process buffer. This method of evaluation is an alternative to S’s source() function when you want the input as well as the output to be displayed. (You can sort of do this with source() when the option echo=T is set, except that prompts do not get displayed. ESS puts prompts in the right places.)

Primary commands for evaluating code are:

Command: ess-eval-region-or-line-and-step vis

Send the highlighted region or current line and step to next line of code.

Command: ess-eval-region-or-function-or-paragraph vis

C-M-x Sends the current selected region or function or paragraph.

Command: ess-eval-region-or-function-or-paragraph-and-step vis

C-c C-c Like ess-eval-region-or-function-or-paragraph but steps to next line of code.

Other, not so often used, evaluation commands are:

Command: ess-eval-line vis

C-c C-j Sends the current line to the ESS process.

Command: ess-eval-line-and-go vis

C-c M-j Like ess-eval-line but additionally switches point to the ESS process.

Command: ess-eval-function vis no-error

C-c C-f Sends the S function containing point to the ESS process.

Command: ess-eval-function-and-go vis

C-c M-f Like ess-eval-function but additionally switches point to the ESS process.

Command: ess-eval-region start end toggle message

C-c C-r Sends the current region to the ESS process.

Command: ess-eval-region-and-go start end vis

C-c M-r Like ess-eval-region but additionally switches point to the ESS process.

Command: ess-eval-buffer vis

C-c C-b Sends the current buffer to the ESS process.

Command: ess-eval-buffer-and-go vis

C-c M-b Like ess-eval-buffer but additionally switches point to the ESS process.

All the above ess-eval-* commands are useful for evaluating small amounts of code and observing the results in the process buffer for debugging purposes, or for generating transcripts from source files. When editing S functions, it is generally preferable to use C-c C-l to update the function’s value. In particular, ess-eval-buffer is now largely obsolete.

A useful way to work is to divide the frame into two windows; one containing the source code and the other containing the process buffer. If you wish to make the process buffer scroll automatically when the output reaches the bottom of the window, you will need to set the variable comint-scroll-to-bottom-on-output to 'others or t.


Next: , Previous: , Up: Top   [Contents][Index]

6 Manipulating saved transcript files

Inferior S mode records the transcript (the list of all commands executed, and their output) in the process buffer, which can be saved as a transcript file, which should normally have the suffix .St. The most obvious use for a transcript file is as a static record of the actions you have performed in a particular S session. Sometimes, however, you may wish to re-execute commands recorded in the transcript file by submitting them to a running ESS process. This is what Transcript Mode is for.

If you load file a with the suffix .St into Emacs, it is placed in S Transcript Mode. Transcript Mode is similar to Inferior S mode (see Entering commands): paragraphs are defined as a command and its output, and you can move though commands either with the paragraph commands or with C-c C-p and C-c C-n.


Next: , Up: Transcript Mode   [Contents][Index]

6.1 Resubmitting commands from the transcript file

Three commands are provided to re-submit command lines from the transcript file to a running ESS process. They are:

Command: ess-transcript-send-command

M-RET Sends the current command line to the ESS process, and execute it.

Command: ess-transcript-copy-command

C-c RET Copy the current command to the ESS process, and switch to it (ready to edit the copied command).

Command: ess-transcript-send-command-and-move

RET Sends the current command to the ESS process, and move to the next command line. This command is useful for submitting a series of commands.

Note that the first two commands are similar to those on the same keys in inferior S Mode. In all three cases, the commands should be executed when the cursor is on a command line in the transcript; the prompt is automatically removed before the command is submitted.


Previous: , Up: Transcript Mode   [Contents][Index]

6.2 Cleaning transcript files

Yet another use for transcript files is to extract the command lines for inclusion in an S source file or function. Transcript mode provides one command which does just this:

Command: ess-transcript-clean-region beg end even-if-read-only

C-c C-w Strip the transcript in the region (given by beg and end), leaving only commands. Deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Prefix argument even-if-read-only means to clean even if the buffer is read-only. Don’t forget to remove any erroneous commands first!

The remaining command lines may then be copied to a source file or edit buffer for inclusion in a function definition, or may be evaluated directly (see Evaluating code) using the code evaluation commands from S mode, also available in S Transcript Mode.


Next: , Previous: , Up: Top   [Contents][Index]

7 Editing objects and functions

ESS provides facilities for editing S objects within your Emacs session. Most editing is performed on S functions, although in theory you may edit datasets as well. Edit buffers are always associated with files, although you may choose to make these files temporary if you wish. Alternatively, you may make use of a simple yet powerful mechanism for maintaining backups of text representations of S functions. Error-checking is performed when S code is loaded into the ESS process.


7.1 Creating or modifying S objects

To edit an S object, type

Command: ess-dump-object-into-edit-buffer object

C-c C-e C-d Edit an S object in its own edit buffer.

from within the ESS process buffer (*S*). You will then be prompted for an object to edit: you may either type in the name of an existing object (for which completion is available using the TAB key), or you may enter the name of a new object. A buffer will be created containing the text representation of the requested object or, if you entered the name of a non-existent object at the prompt and the variable ess-function-template is non-nil, you will be presented with a template defined by that variable, which defaults to a skeleton function construct.

You may then edit the function as required. The edit buffer generated by ess-dump-object-into-edit-buffer is placed in the ESS major mode which provides a number of commands to facilitate editing S source code. Commands are provided to intelligently indent S code, evaluate portions of S code and to move around S code constructs.

Note: when you dump a file with C-c C-e C-d, ESS first checks to see whether there already exists an edit buffer containing that object and, if so, pops you directly to that buffer. If not, ESS next checks whether there is a file in the appropriate place with the appropriate name (see Source Files) and if so, reads in that file. You can use this facility to return to an object you were editing in a previous session (and which possibly was never loaded to the S session). Finally, if both these tests fail, the ESS process is consulted and a dump() command issued. If you want to force ESS to ask the ESS process for the object’s definition (say, to reformat an unmodified buffer or to revert back to S’s idea of the object’s definition) pass a prefix argument to ess-dump-object-into-edit-buffer by typing C-u C-c C-e C-d.


7.2 Loading source files into the ESS process

The best way to get information — particularly function definitions — into S is to load them in as source file, using S’s source function. You have already seen how to create source files using C-c C-e C-d; ESS provides a complementary command for loading source files (even files not created with ESS!) into the ESS process, namely ess-load-file (C-c C-l). see Hot keys.

After typing C-c C-l you will prompt for the name of the file to load into S; usually this is the current buffer’s file which is the default value (selected by simply pressing RET at the prompt). You will be asked to save the buffer first if it has been modified (this happens automatically if the buffer was generated with C-c C-e C-d). The file will then be loaded, and if it loads successfully you will be returned to the ESS process.


Next: , Previous: , Up: Editing objects   [Contents][Index]

7.3 Detecting errors in source files

If any errors occur when loading a file with C-c C-l, ESS will inform you of this fact. In this case, you can jump directly to the line in the source file which caused the error by typing C-c ` (ess-parse-errors). You will be returned to the offending file (loading it into a buffer if necessary) with point at the line S reported as containing the error. You may then correct the error, and reload the file. Note that none of the commands in an S source file will take effect if any part of the file contains errors.

Sometimes the error is not caused by a syntax error (loading a non-existent file for example). In this case typing C-c ` will simply display a buffer containing S’s error message. You can force this behavior (and avoid jumping to the file when there is a syntax error) by passing a prefix argument to ess-parse-errors with C-u C-c `.


7.4 Indenting and formatting S code

ESS provides a sophisticated mechanism for indenting S source code (thanks to Ken’ichi Shibayama). Compound statements (delimited by ‘{’ and ‘}’) are indented relative to their enclosing block. In addition, the braces have been electrified to automatically indent to the correct position when inserted, and optionally insert a newline at the appropriate place as well. Lines which continue an incomplete expression are indented relative to the first line of the expression. Function definitions, if statements, calls to expression() and loop constructs are all recognized and indented appropriately. User variables are provided to control the amount of indentation in each case, and there are also a number of predefined indentation styles to choose from.

Comments are also handled specially by ESS, using an idea borrowed from the Emacs-Lisp indentation style. By default, comments beginning with ‘###’ are aligned to the beginning of the line. Comments beginning with ‘##’ are aligned to the current level of indentation for the block containing the comment. Finally, comments beginning with ‘#’ are aligned to a column on the right (the 40th column by default, but this value is controlled by the variable comment-column,) or just after the expression on the line containing the comment if it extends beyond the indentation column. You turn off the default behavior by adding the line (setq ess-indent-with-fancy-comments nil) to your .emacs file.

ESS also supports Roxygen entries which is R documentation maintained in the source code as comments See Roxygen.

The indentation commands provided by ESS are:

Command: ess-indent-or-complete

TAB Indents the current line as S code.

Try to indent first, and if code is already properly indented, complete instead. In ess-mode, only tries completion if ess-tab-complete-in-script is non-nil. See also ess-first-tab-never-complete.

User Option: ess-tab-complete-in-script

If non-nil, TAB in script buffers tries to complete if there is nothing to indent.

User Option: ess-first-tab-never-complete

If non-nil, TAB never tries to complete in ess-mode. The default 'symbol does not try to complete if the next char is a valid symbol constituent. There are more options, see the help (C-h v).

Command: ess-indent-exp

TAB Indents each line in the S (compound) expression which follows point. Very useful for beautifying your S code.

Command: ess-electric-brace

{ } The braces automatically indent to the correct position when typed.

The following Emacs command are also helpful:

RET
LFD

newline-and-indent Insert a newline, and indent the next line. (Note that most keyboards nowadays do not have a LINEFEED key, but RET and C-j are equivalent.)

M-;

indent-for-comment Indents an existing comment line appropriately, or inserts an appropriate comment marker.


7.4.1 Changing styles for code indentation and alignment

The combined value of twelve variables (4 of three groups ess-indent-*, ess-offset-* and ess-align-*) that control indentation etc are collectively termed a style. ESS provides several styles covering the common styles of indentation: DEFAULT, OWN, GNU, BSD, K&R, C++, RRR, RRR+, Rstudio, Rstudio-, and CLB. The variable ess-style-alist lists the value of each indentation variable per style (and its documentation contains more).

Command: ess-set-style

C-c C-e C-s (or C-c C-e s) sets the formatting style in this buffer to be one of the predefined styles, see above. The DEFAULT style uses the default values for the indenting variables; The OWN style allows you to use your own private values of the indentation variable, see below.

(setq ess-default-style 'C++)
User Option: ess-default-style

The default value of ess-style. See the variable ess-style-alist for how these groups (DEFAULT, OWN, GNU, RRR, …) map onto different settings for variables.

User Option: ess-style-alist

Predefined formatting styles for ESS code. Values for all groups, except OWN, are fixed. To change the value of variables in the OWN group, customize the variable ess-own-style-list. The default style in use is controlled by ess-default-style.

The styles DEFAULT and OWN are initially identical. If you wish to edit some of the default values, set ess-default-style to 'OWN and change ess-own-style-list. See Customization, for convenient ways to set both these variables.

If you prefer not to use the custom facility, you can change individual indentation variables within a hook, for example:

(defun myindent-ess-hook ()
  (setq ess-indent-level 4))
(add-hook 'ess-mode-hook 'myindent-ess-hook)

In the rare case that you’d like to add an entire new indentation style of your own, copy the definition of ess-own-style-list to a new variable and ensure that the last line of the :set declaration calls ess-add-style with a unique name for your style (e.g. 'MINE). Finally, add (setq ess-default-style 'MINE) to use your new style.


Next: , Previous: , Up: Editing objects   [Contents][Index]

7.5 Commands for motion, completion and more

A number of commands are provided to move across function definitions in the edit buffer:

Command: ess-goto-beginning-of-function-or-para

ESC C-a aka C-M-a If inside a function go to the beginning of it, otherwise go to the beginning of paragraph.

Command: ess-goto-end-of-function-or-para

ESC C-e aka C-M-e Move point to the end of the function containing point.

Command: ess-mark-function

ESC C-h aka C-M-h Place point at the beginning of the S function containing point, and mark at the end.

Don’t forget the usual Emacs commands for moving over balanced expressions and parentheses: See Lists and Sexps in The GNU Emacs Reference Manual.

Completion is provided in the edit buffer in a similar fashion to the process buffer: TAB first indents, and if there is nothing to indent, completes the object or file name; M-? lists file completions. See See Completion, for more.

Finally, C-c C-z (ess-switch-to-inferior-or-script-buffer) returns you to the iESS process buffer, if done from a script buffer, placing point at the end of the buffer. If this is done from the iESS process buffer, point is taken to the script buffer.

In addition some commands available in the process buffer are also available in the script buffer. You can still read help files with C-c C-v, edit another function with C-c C-e C-d and of course C-c C-l can be used to load a source file into S.


7.6 Maintaining S source files

Every edit buffer in ESS is associated with a dump file on disk. Dump files are created whenever you type C-c C-e C-d (ess-dump-object-into-edit-buffer), and may either be deleted after use, or kept as a backup file or as a means of keeping several versions of an S function.

User Option: ess-delete-dump-files

If non-nil, dump files created with C-c C-e C-d are deleted immediately after they are created by the ess-process.

Since immediately after S dumps an object’s definition to a disk file the source code on disk corresponds exactly to S’s idea of the object’s definition, the disk file isn’t needed; deleting it now has the advantage that if you don’t modify the file (say, because you just wanted to look at the definition of one of the standard S functions) the source dump file won’t be left around when you kill the buffer. Note that this variable only applies to files generated with S’s dump function; it doesn’t apply to source files which already exist. The default value is t.

User Option: ess-keep-dump-files

Variable controlling whether to delete dump files after a successful load. If ‘nil’: always delete. If ‘ask’, confirm to delete. If ‘check’, confirm to delete, except for files created with ess-dump-object-into-edit-buffer. Anything else, never delete. This variable only affects the behaviour of ess-load-file. Dump files are never deleted if an error occurs during the load.

After an object has been successfully (i.e. without error) loaded back into S with C-c C-l, the disk file again corresponds exactly (well, almost — see below) to S’s record of the object’s definition, and so some people prefer to delete the disk file rather than unnecessarily use up space. This option allows you to do just that.

If the value of ess-keep-dump-files is t, dump files are never deleted after they are loaded. Thus you can maintain a complete text record of the functions you have edited within ESS. Backup files are kept as usual, and so by using the Emacs numbered backup facility — see Single or Numbered Backups in The Gnu Emacs Reference Manual, you can keep a historic record of function definitions. Another possibility is to maintain the files with a version-control system such as RCS See Version Control in The Gnu Emacs Reference Manual. As long as a dump file exists in the appropriate place for a particular object, editing that object with C-c C-e C-d finds that file for editing (unless a prefix argument is given) — the ESS process is not consulted. Thus you can keep comments outside the function definition as a means of documentation that does not clutter the S object itself. Another useful feature is that you may format the code in any fashion you please without S re-indenting the code every time you edit it. These features are particularly useful for project-based work.

If the value of ess-keep-dump-files is nil, the dump file is always silently deleted after a successful load with C-c C-l. While this is useful for files that were created with C-c C-e C-d it also applies to any other file you load (say, a source file of function definitions), and so can be dangerous to use unless you are careful. Note that since ess-keep-dump-files is buffer-local, you can make sure particular files are not deleted by setting it to t in the Local Variables section of the file See Local Variables in Files in The Gnu Emacs Reference Manual.

A safer option is to set ess-keep-dump-files to ask; this means that ESS will always ask for confirmation before deleting the file. Since this can get annoying if you always want to delete dump files created with C-c C-e C-d, but not any other files, setting ess-keep-dump-files to check (the default value) will silently delete dump files created with C-c C-e C-d in the current Emacs session, but query for any other file. Note that in any case you will only be asked for confirmation once per file, and your answer is remembered for the rest of the Emacs session.

Note that in all cases, if an error (such as a syntax error) is detected while loading the file with C-c C-l, the dump file is never deleted. This is so that you can edit the file in a new Emacs session if you happen to quit Emacs before correcting the error.

Dump buffers are always autosaved, regardless of the value of ess-keep-dump-files.


7.7 Names and locations of dump files

Every dump file should be given a unique file name, usually the dumped object name with some additions.

User Option: ess-dump-filename-template

Template for filenames of dumped objects. %s is replaced by the object name.

By default, dump file names are the user name, followed by ‘.’ and the object and ending with ‘.S’. Thus if user joe dumps the object myfun the dump file will have name joe.myfun.S. The username part is included to avoid clashes when dumping into a publicly-writable directory, such as /tmp; you may wish to remove this part if you are dumping into a directory owned by you.

You may also specify the directory in which dump files are written:

User Option: ess-source-directory

Directory name (ending in a slash) where S dump files are to be written.

By default, dump files are always written to /tmp, which is fine when ess-keep-dump-files is nil. If you are keeping dump files, then you will probably want to keep them somewhere in your home directory, say ~/S-source. This could be achieved by including the following line in your .emacs file:

(setq ess-source-directory (expand-file-name "~/S-source/"))

If you would prefer to keep your dump files in separate directories depending on the value of some variable, ESS provides a facility for this also. By setting ess-source-directory to a lambda expression which evaluates to a directory name, you have a great deal of flexibility in selecting the directory for a particular source file to appear in. The lambda expression is evaluated with the process buffer as the current buffer and so you can use the variables local to that buffer to make your choice. For example, the following expression causes source files to be saved in the subdirectory Src of the directory the ESS process was run in.

(setq ess-source-directory
      (lambda ()
         (concat ess-directory "Src/")))

(ess-directory is a buffer-local variable in process buffers which records the directory the ESS process was run from.) This is useful if you keep your dump files and you often edit objects with the same name in different ESS processes. Alternatively, if you often change your S working directory during an S session, you may like to keep dump files in some subdirectory of the directory pointed to by the first element of the current search list. This way you can edit objects of the same name in different directories during the one S session:

(setq ess-source-directory
   (lambda ()
       (file-name-as-directory
        (expand-file-name (concat
                           (car ess-search-list)
                           "/.Src")))))

If the directory generated by the lambda function does not exist but can be created, you will be asked whether you wish to create the directory. If you choose not to, or the directory cannot be created, you will not be able to edit functions.


Next: , Previous: , Up: Top   [Contents][Index]

8 Reading help files

ESS provides an easy-to-use facility for reading S help files from within Emacs. From within the ESS process buffer or any ESS edit buffer, typing C-c C-v (ess-display-help-on-object) will prompt you for the name of an object for which you would like documentation. Completion is provided over all objects which have help files.

If the requested object has documentation, you will be popped into a buffer (named *help(obj-name)*) containing the help file. This buffer is placed in a special ‘S Help’ mode which disables the usual editing commands but which provides a number of keys for paging through the help file.

Help commands:

?

ess-describe-help-mode Pops up a help buffer with a list of the commands available in S help mode.

h

ess-display-help-on-object Pop up a help buffer for a different object.

Paging commands:

b
DEL

scroll-down Move one page backwards through the help file.

SPC

scroll-up Move one page forwards through the help file.

>
<

end-of-buffer Move to the beginning and end of the help file, respectively.

Section-based motion commands:

n
p

ess-skip-to-previous-section and ess-skip-to-next-section Move to the next and previous section header in the help file, respectively. A section header consists of a number of capitalized words, followed by a colon.

In addition, the s key followed by one of the following letters will jump to a particular section in the help file. Note that R uses capitalized instead of all-capital section headers, e.g., ‘Description:’ instead of ‘DESCRIPTION:’ and also only some versions of S(-plus) have sections ‘BACKGROUND’, ‘BUGS’, ‘OPTIONAL ARGUMENTS’, ‘REQUIRED ARGUMENTS’, and ‘SIDE EFFECTS’.

Do use s ? to get the current list of active key bindings.

a

ARGUMENTS:

b

BACKGROUND:

B

BUGS:

d

DESCRIPTION:

D

DETAILS:

e

EXAMPLES:

n

NOTE:

O

OPTIONAL ARGUMENTS:

R

REQUIRED ARGUMENTS:

r

REFERENCES:

s

SEE ALSO:

S

SIDE EFFECTS:

u

USAGE:

v

VALUE:

<

Jumps to beginning of file

>

Jumps to end of file

?

Pops up a help buffer with a list of the defined section motion keys.

Evaluation:

l

ess-eval-line-and-step Evaluates the current line in the ESS process, and moves to the next line. Useful for running examples in help files.

r

ess-eval-region Send the contents of the current region to the ESS process. Useful for running examples in help files.

Quit commands:

q

ess-help-quit Return to previously selected buffer, and bury the help buffer.

k

kill-buffer Return to previously selected buffer, and kills the help buffer.

x

ess-kill-buffer-and-go Return to the ESS process, killing this help buffer.

Miscellaneous:

i

ess-display-index Prompt for a package and display it’s help index.

v

ess-display-vignettes Display all available vignettes.

w

ess-display-help-in-browser Display current help page with the web browser.

/

isearch-forward Same as C-s.

In addition, all of the ESS commands available in the edit buffers are also available in S help mode (see Edit buffer). Of course, the usual (non-editing) Emacs commands are available, and for convenience the digits and - act as prefix arguments.

If a help buffer already exists for an object for which help is requested, that buffer is popped to immediately; the ESS process is not consulted at all. If the contents of the help file have changed, you either need to kill the help buffer first, or pass a prefix argument (with C-u) to ess-display-help-on-object.

Help buffers are marked as temporary buffers in ESS, and are deleted when ess-quit or ess-cleanup are called.

Help buffers normally appear in another window within the current frame. If you wish help buffers to appear in their own frame (either one per help buffer, or one for all help buffers), you can customize the variable ess-help-own-frame.


Next: , Previous: , Up: Top   [Contents][Index]

9 Completion


9.1 Completion of object names

The TAB key is for completion. The value of the variable ess-first-tab-never-complete controls when completion is allowed controls when completion is allowed to occur. In ess-mode TAB first tries to indent, and if there is nothing to indent, complete the object name instead.

TAB

comint-dynamic-complete Complete the S object name or filename before point.

When the cursor is just after a partially-completed object name, pressing TAB provides completion in a similar fashion to tcsh except that completion is performed over all known S object names instead of file names. ESS maintains a list of all objects known to S at any given time, which basically consists of all objects (functions and datasets) in every attached directory listed by the search() command along with the component objects of attached data frames (if your version of S supports them).

For example, consider the three functions (available in Splus version 3.0) called binomplot(), binom.test() and binomial(). Typing bin TAB after the S prompt will insert the characters ‘om’, completing the longest prefix (‘binom’) which distinguishes these three commands. Pressing TAB once more provides a list of the three commands which have this prefix, allowing you to add more characters (say, ‘.’) which specify the function you desire. After entering more characters pressing TAB yet again will complete the object name up to uniqueness, etc. If you just wish to see what completions exist without adding any extra characters, type M-?.

Command: ess-list-object-completions

M-? List all possible completions of the object name at point.

ESS also provides completion over the components of named lists and environments (after ‘$’), S4 classes slots (after @), package and namespace objects (after :: and :::).

Completion is also provided over file names, which is particularly useful when using S functions such as get() or scan() which require fully expanded file names.

In the Inferior ESS buffer, if the cursor is not in a string and does not follow a (partial) object name, the TAB key has a third use: it expands history references. See History expansion.

Efficiency in completion is gained by maintaining a cache of objects currently known to S; when a new object becomes available or is deleted, only one component of the cache corresponding to the associated directory needs to be refreshed. If ESS ever becomes confused about what objects are available for completion (such as when if refuses to complete an object you know is there), the command M-x ess-resynch forces the entire cache to be refreshed, which should fix the problem.


9.2 Completion of function arguments

When inside a function call (i.e. following ‘(’), TAB completion also provides function arguments. If function is a generic, completion will provide all the arguments of S3 methods known to R.

A related functionality is See ESS ElDoc, which displays function arguments in the echo area whenever the point is inside a function call.


9.3 Minibuffer completion

From version 12.03, ESS uses IDO mechanism (part of default emacs) for minibuffer completion if ido.el package is available and the value of ess-use-ido it t (the default). The completion command ess-completing-read falls back on classic completion-read interface if this feature is not available for whatever reason.


Next: , Previous: , Up: Completion   [Contents][Index]

9.4 Integration with auto-complete package

ESS provides three sources for Auto Completion mode: ac-source-R-args, ac-source-R-objects and ac-source-R. The last one combines the previous two and makes them play nicely together. See auto-complete package documentation (http://cx4a.org/software/auto-complete/) for how to modify and install your own completion sources.

For the default auto-complete ESS configuration, install the latest version of auto-complete package. ESS automatically detect the package and activates auto-complete in ESS buffers.

To deactivate AC, place the following into your init file:

(setq ess-use-auto-complete nil)

Or, to activate auto-completion only in the ess-mode buffers:

(setq ess-use-auto-complete 'script-only)

ESS provides AC help both for arguments and objects (default keys C-? or <f1>). You can bind M-h to display quick help pop-ups:

(define-key ac-completing-map (kbd "M-h") 'ac-quick-help)

AC binds M-n, and M-p for the navigation in the completion menu, which might be inconvenient if you want it to use in the inferior R. Bind it to something else:

(define-key ac-completing-map "\M-n" nil) ;; was ac-next
(define-key ac-completing-map "\M-p" nil) ;; was ac-previous
(define-key ac-completing-map "\M-," 'ac-next)
(define-key ac-completing-map "\M-k" 'ac-previous)

Previous: , Up: Completion   [Contents][Index]

9.5 Icicles

Another option for comprehensively handling completion in Emacs is via Icicles (http://www.emacswiki.org/emacs/Icicles). It allows users to have completions shown temporarily in the standard ‘*Completions*’ buffer, and interactively select completion candidates using several methods. As of version 2013.04.04, Icicles provides support for completion in ESS. Please consult Icicles documentation, which is easily accessible via customize-group Icicles, for more details on installation and customization options.

Once installed, Icicles can be activated by evaluating (maybe place in ~/.emacs):

(require 'icicles)
(icy-mode 1)

Icicles can be toggled at any moment by typing M-x icy.

When Icicles is on, TAB offers completion, provided the conditions determined by ess-first-tab-never-complete allow it. Typing M-TAB will attempt completion regardless. Typing M-? in ESS or iESS modes brings up the relevant completion candidates from which to choose. Minibuffer input filters the available candidates. Use TAB for prefix completion or S-TAB for substring or regexp completion. Use S-SPC to match an additional pattern (repeatable). You can cycle among the matching candidates, choosing with RET or mouse-2.


Next: , Previous: , Up: Top   [Contents][Index]

10 Developing with ESS

ESS provides several tools to help you with the development of your R packages:


10.1 ESS tracebug

ESS tracebug offers visual debugging, interactive error navigation, interactive backtrace, breakpoint manipulation, control over R error actions, watch window and interactive flagging/unflagging of functions for debugging.

From ESS13.05 ess-tracebug is on by default. You can toggle it on and off with M-x ess-tracebug. To disable startup activation of ess-tracebug set ess-use-tracebug to nil.

Tracebug functionality can be found on ess-dev-map, bound to C-c C-t. Additionally, when subprocess is in a debugging state ess-debug-minor-mode is active and the following additional shortcuts are available:

* Interactive Debugging (`ess-debug-minor-mode-map'):

 M-C   . Continue                  . `ess-debug-command-continue'
 M-C-C . Continue multi            . `ess-debug-command-continue-multi'
 M-N   . Next step                 . `ess-debug-command-next'
 M-C-N . Next step multi           . `ess-debug-command-next-multi'
 M-U   . Up frame                  . `ess-debug-command-up'
 M-Q   . Quit debugging            . `ess-debug-command-quit'

These are all the tracebug commands defined in ess-dev-map (C-c C-t ? to show this table):

* Breakpoints (`ess-dev-map'):

 b   . Set BP (repeat to cycle BP type) . `ess-bp-set'
 B   . Set conditional BP               . `ess-bp-set-conditional'
 k   . Kill BP                          . `ess-bp-kil'
 K   . Kill all BPs                     . `ess-bp-kill-all'
 o   . Toggle BP state                  . `ess-bp-toggle-state'
 l   . Set logger BP                    . `ess-bp-set-logger'
 n   . Goto next BP                     . `ess-bp-next'
 p   . Goto previous BP                 . `ess-bp-previous'

  (C- prefixed equivalents are also defined)

* Debugging (`ess-dev-map'):
 `   . Show traceback                       . `ess-show-traceback' (also on C-c `)
 ~   . Show callstack                       . `ess-show-call-stack' (also on C-c ~)
 e   . Toggle error action (repeat to cycle). `ess-debug-toggle-error-action'
 d   . Flag for debugging                   . `ess-debug-flag-for-debugging'
 u   . Unflag for debugging                 . `ess-debug-unflag-for-debugging'
 w   . Watch window                         . `ess-watch'

  (C- prefixed equivalents are also defined)

* Navigation to errors (general emacs functionality):

 C-x `, M-g n   . `next-error'
 M-g p          . `previous-error'

* Misc:

?   . Show this help		. `ess-tracebug-show-help'

To configure how electric watch window splits the display see ess-watch-width-threshold and ess-watch-height-threshold variables.

A more detailed ess-tracebug documentation with screenshots is available at http://code.google.com/p/ess-tracebug/.

A short tutorial is at http://code.google.com/p/ess-tracebug/wiki/GettingStarted.

Note: Currently, ess-tracebug does not detect some of R’s debug related messages in non-English locales. To set your R messages to English add the following line to your .Rprofile init file:

   Sys.setlocale("LC_MESSAGES", "C")

10.2 Editing documentation

ESS provides two ways of writing documentation for R objects. Either using the standard R documentation system or using in-source documentation written as structured comment fields for use with the Roxygen package.


10.2.1 Editing R documentation (Rd) files

R objects are documented in files written in the R documentation (“Rd”), a simple markup language closely resembling (La)TeX, which can be processed into a variety of formats, including LaTeX, HTML, and plain text. Rd format is described in section “Rd format” of the “Writing R Extensions” manual in the R distribution. ESS has several features that facilitate editing Rd files.

Visiting an Rd file as characterized by its extension Rd will activate Rd Mode, which provides several facilities for making editing R documentation files more convenient, by helping with indentation, insertions, even doing some of the typing for you (with Abbrev Mode), and by showing Rd keywords, strings, etc. in different faces (with Font Lock Mode).

Note that R also accepts Rd files with extension rd; to activate ESS[Rd] support for this extension, you may need to add

(add-to-list 'auto-mode-alist '("\\.rd\\'" . Rd-mode))

to one of your Emacs startup files.

In Rd mode, the following special Emacs commands can be used in addition to the standard Emacs commands.

C-h m

Describe the features of Rd mode.

LFD
RET

Reindent the current line, insert a newline and indent the new line (reindent-then-newline-and-indent). An abbrev before point is expanded if abbrev-mode is non-nil.

TAB

Indent current line based on its contents and on previous lines. (indent-according-to-mode).

C-c C-e

Insert a “skeleton” with Rd markup for at least all mandatory entries in Rd files (Rd-mode-insert-skeleton). Note that many users might prefer to use the R function prompt on an existing R object to generate a non-empty Rd “shell” documenting the object (which already has all information filled in which can be obtained from the object).

C-c C-f

Insert “font” specifiers for some of the Rd markup commands markup available for emphasizing or quoting text, including markup for URLs and email addresses (Rd-font). C-c C-f is only a prefix; see e.g. C-c C-f TAB for the available bindings. Note that currently, not all of the Rd text markup as described in section “Marking text” of “Writing R Extensions” can be accessed via C-c C-f.

C-c C-j

Insert a suitably indented ‘\item{’ on the next line (Rd-mode-insert-item).

C-c C-p

Preview a plain text version (“help file”, see Help) generated from the Rd file (Rd-preview-help).

In addition, when editing Rd files one can interact with a running R process in a similar way as when editing R language files. E.g., C-c C-v provides access to on-line help, and C-c C-n sends the current line to the R process for evaluation. This interaction is particularly useful when editing the examples in the Rd file. See C-h m for all available commands.

Rd mode also provides access to abbreviations for most of the Rd markup commands. Type M-x list-abbrevs with Abbrev mode turned on to list all available abbrevs. Note that all Rd abbrevs start with a grave accent.

Rd mode can be customized via the following variables.

User Option: Rd-mode-hook

Hook to be run when Rd mode is entered.

User Option: Rd-indent-level

The indentation of Rd code with respect to containing blocks. Default is 2.

User Option: Rd-to-help-command

The shell command used for converting Rd source to help text. Default is ‘R CMD Rd2txt’.

To automatically turn on the abbrev and font-lock features of Rd mode, add the following lines to one of your Emacs startup files:

(add-hook 'Rd-mode-hook
          (lambda ()
           (abbrev-mode 1)
           (font-lock-mode 1)))

10.2.2 Editing Roxygen documentation

The Roxygen R package makes it possible to keep the intended contents for Rd files as structured comments in the R source files. Roxygen can then parse R files and generate appropriate Rd files from these comments, fill the usage fields as well as updating NAMESPACE files. See the Roxygen documentation found via http://roxygen.org for more information on its usage. An example of an Roxygen entry for a simple R function can look like this:

##' Description of the function
##'
##' Further details about this function
##' @title A title
##' @param me all parameters must be listed and documented
##' @return Description of the return value
##' @author The author
myfun <- function(me)
  cat("Hello", me, "\n")

The entry is immediately preceding the object to document and all lines start with the Roxygen prefix string, in this case ##'. ESS provides support to edit these documentation entries by providing line filling, navigation, template generation etc. Syntax highlighting is provided for Emacs but not for XEmacs.

Roxygen is customized by the variables in the customization group “Ess Roxy”. Customizables include the Roxygen prefix, use of folding to toggle visibility of Roxygen entries and the Roxygen template.

All ESS Roxygen support is defined in ess-roxy.el which is loaded by default in ESS. The following special Emacs commands are provided.

Command: ess-roxy-update-entry

C-c C-o C-o Generate a Roxygen template or update the parameter list in Roxygen entry at point (or above the function at the point). Documented parameters that are not in the function are placed last in the list, parameters that are not documented and not in the definition are dropped. Parameter descriptions are filled if ess-roxy-fill-param-p is non-nil.

Command: ess-roxy-toggle-roxy-region beg end

C-c C-o C-c Toggle the presence of the leading Roxygen string on all lines in the marked region (between beg and end. Convenient for transferring text to Roxygen entries and to evaluate example fields.

Command: ess-roxy-preview-Rd name-file

C-c C-o C-r Use the attached R process to parse the entry at point to obtain the Rd code. Convenient for previewing and checking syntax. When used with the prefix argument name-file, i.e. C-u C-c C-e C-r, place the content in a buffer associated with a Rd file with the same name as the documentation. Requires the Roxygen package to be installed.

Command: ess-roxy-preview-HTML visit-instead-of-open

C-c C-o C-t Use the attached R process to parse the entry at to generate HTML for the entry and open it in a browser. When used with the prefix argument visit-instead-of-open, i.e. C-u C-c C-e C-t, visit the generated HTML file instead. Requires the Roxygen and tools packages to be installed.

Command: ess-roxy-previous-entry

C-c C-o p Go to start of the Roxygen entry above point.

Command: ess-roxy-next-entry

C-c C-o n Go to end of the Roxygen entry above point.

Command: ess-roxy-hide-all

C-c C-o C-h Use the hideshow mode to fold away the visibility of all Roxygen entries. Hide-show support must be enabled for this binding to get defined.

ESS also advises the following standard editing functions in order to make Roxygen editing more intuitive:

TAB

ess-R-complete-object-name Complete Roxygen tag at point. E.g. doing TAB when the point is at the end of @par completes to @param.

M-h

mark-paragraph If the transient mark mode is active, place mark and point at start end end of the field at point and activate the mark.

TAB

ess-indent-command If hide-show support is enabled, fold away the visibility of the Roxygen entry at point.

M-q

fill-paragraph Fill the Roxygen field at point.

C-a

move-beginning-of-line Move to the point directly to the right of the Roxygen start string.

RET

newline-and-indent Insert a new line and the Roxygen prefix string.


10.3 Namespaced Evaluation

In non package files evaluation commands, See Evaluating code, send portions of the current buffer environment (R_GlobalEnv. When developing packages, ESS sends code to the corresponding package namespace and (for visible objects) into package environment (visible on search path). All objects that are assigned are displayed in the minibuffer alongside the environment in which they are assigned.

Here is a short overview of how namespace and package environments work in R. All objects defined in a package ’foo’ are stored in an environment called ’namespace:foo’. Parent environment of ’namespace:foo’ is an environment ’imports:foo’ which contains copies of all objects from other packages which ’foo’ imports. Parent environment of ’imports:foo’ is the ’namespace:base’. Parent environment of ’namespace:base’ is .GlobalEnv. Thus functions and methods stored in ’namespace:foo’ see all the objects in .GlobalEnv unless shadowed by objects in ’imports:foo’, ’namespace:base’, or ’namespace:foo’ itself. There is another environment associated with ’foo’ - ’package:foo’. This environment stores *copies* of exported objects from ’namespace:foo’ and is placed on the search() path, i.e. if ’foo’ is loaded and if you start with .GlobalEnv and iteratively call parent.env() you will get eventually to ’package:foo’. Thus all methods and functions defined in .GlobalEnv can "see" objects in ’package:foo’ environment. See also http://cran.r-project.org/doc/manuals/R-ints.html#Namespaces.

Ocasionally you want to evaluate into a package from a non-package file, or the other way around, evaluate into GlobalEnv from inside a package. In such cases C-c C-t C-s is your friend.

Command: ess-r-set-evaluation-env arg

C-c C-t C-s Set or unset the current evaluation environment (a package).


Next: , Previous: , Up: Top   [Contents][Index]

11 Other ESS features and tools

ESS has a few extra features, which didn’t fit anywhere else.


Next: , Up: Extras   [Contents][Index]

11.1 ElDoc

In ElDoc mode, the echo area displays function’s arguments at point. From ESS version 12.03, ElDoc is active by default in ess-mode and inferior-ess-mode buffers. To activate it only in ess-mode buffers, place the following into your init file:

(setq ess-use-eldoc 'script-only)
User Option: ess-use-eldoc

If ‘t’, activate eldoc in ess-mode and inferior-ess-mode buffers. If ‘'script-only’ activate in ess-mode buffers only. Set ess-use-eldoc to nil to stop using ElDoc altogether.

User Option: ess-eldoc-show-on-symbol

This variable controls whether the help is shown only inside function calls. If set to ‘t’, ElDoc shows help string whenever the point is on a symbol, otherwise (the default), shows only when the point is in a function call, i.e. after ‘'('’.

User Option: ess-eldoc-abbreviation-style

The variable determines how the doc string should be abbreviated to fit into minibuffer. Posible values are ‘nil’, ‘mild’, ‘normal’, ‘strong’ and ‘aggressive’. Please see the documentation of the variable for more details. The default filter is ‘normal’.

Ess-eldoc also honors the value of eldoc-echo-area-use-multiline-p, which if set to ‘nil’, will cause the truncation of doc string indifferent of the value of ess-eldoc-abbreviation-style. This way you can combine different filter levels with the truncation.


Next: , Previous: , Up: Extras   [Contents][Index]

11.2 Handy commands

Command: ess-handy-commands

Request and execute a command from ess-handy-commands list.

User Option: ess-handy-commands

An alist of custom ESS commands available for call by ess-handy-commands and ess-smart-comma function.

Currently contains:

change-directory

ess-change-directory

help-index

ess-display-index

help-object

ess-display-help-on-object

vignettes

ess-display-vignettes

objects[ls]

ess-execute-objects

search

ess-execute-search

set-width

ess-execute-screen-options

install.packages

ess-install.packages

library

ess-library

setRepos

ess-setRepositories

sos

ess-sos

Handy commands: ess-library, ess-install.packages, etc - ask for item with completion and execute the correspond command. ess-sos is a interface to findFn function in package sos. If package sos is not found, ask user for interactive install.


Next: , Previous: , Up: Extras   [Contents][Index]

11.3 Syntactic highlighting of buffers

ESS provides Font-Lock (see Using Multiple Typefaces in The Gnu Emacs Reference Manual) patterns for Inferior S Mode, S Mode, and S Transcript Mode buffers.

Syntax highlighting within ESS buffers is controlled by:

User Option: ess-font-lock-mode

Non-‘nil’ means we use font lock support for ESS buffers. Default is ‘t’, to use font lock support. If you change the value of this variable, restart Emacs for it to take effect.

The font-lock patterns are defined by the following variables, which you may modify if desired:

User Option: inferior-R-font-lock-keywords

Font-lock patterns for inferior *R* processes. (There is a corresponding inferior-S-font-lock-keywords for *S* processes.) The default value highlights prompts, inputs, assignments, output messages, vector and matrix labels, and literals such as ‘NA’ and TRUE.

User Option: ess-R-font-lock-keywords

Font-lock patterns for ESS R programming mode. (There is a corresponding ess-S-font-lock-keywords for S buffers.) The default value highlights function names, literals, assignments, source functions and reserved words.


Next: , Previous: , Up: Extras   [Contents][Index]

11.4 Parenthesis matching

Emacs and XEmacs have facilities for highlighting the parenthesis matching the parenthesis at point. This feature is very useful when trying to examine which parentheses match each other. This highlighting also indicates when parentheses are not matching. Depending on what version of emacs you use, one of the following should work in your initialisation file:

(paren-set-mode 'paren) ;for XEmacs
(show-paren-mode t) ;for Emacs

Next: , Previous: , Up: Extras   [Contents][Index]

11.5 Using graphics with ESS

One of the main features of the S package is its ability to generate high-resolution graphics plots, and ESS provides a number of features for dealing with such plots.


Next: , Up: Graphics   [Contents][Index]

11.5.1 Using ESS with the printer() driver

This is the simplest (and least desirable) method of using graphics within ESS. S’s printer() device driver produces crude character based plots which can be contained within the ESS process buffer itself. To start using character graphics, issue the S command

printer(width=79)

(the width=79 argument prevents Emacs line-wrapping at column 80 on an 80-column terminal. Use a different value for a terminal with a different number of columns.) Plotting commands do not generate graphics immediately, but are stored until the show() command is issued, which displays the current figure.


Next: , Previous: , Up: Graphics   [Contents][Index]

11.5.2 Using ESS with windowing devices

Of course, the ideal way to use graphics with ESS is to use a windowing system. Under X Windows, or X11, this requires that the DISPLAY environment variable be appropriately set.


Previous: , Up: Graphics   [Contents][Index]

11.5.3 Java Graphics Device

S+6.1 and newer on Windows contains a java library that supports graphics. Send the commands:

library(winjava)
java.graph()

to start the graphics driver. This allows you to use ESS for both interaction and graphics within S-PLUS. (Thanks to Tim Hesterberg for this information.)


Next: , Previous: , Up: Extras   [Contents][Index]

11.6 Imenu

Imenu is an Emacs tool for providing mode-specific buffer indexes. In some of the ESS editing modes (currently SAS and S), support for Imenu is provided. For example, in S mode buffers, the menubar should display an item called "Imenu-S". Within this menubar you will then be offered bookmarks to particular parts of your source file (such as the starting point of each function definition).

Imenu works by searching your buffer for lines that match what ESS thinks is the beginning of a suitable entry, e.g. the beginning of a function definition. To examine the regular expression that ESS uses, check the value of imenu-generic-expression. This value is set by various ESS variables such as ess-imenu-S-generic-expression.


Next: , Previous: , Up: Extras   [Contents][Index]

11.7 Toolbar

The R and S editing modes have support for a toolbar. This toolbar provides icons to act as shortcuts for starting new S/R processes, or for evaluating regions of your source buffers. The toolbar should be present if your emacs can display images. See Customization, for ways to change the toolbar.


Next: , Previous: , Up: Extras   [Contents][Index]

11.8 TAGS

The Emacs tags facility can be used to navigate around your files containing definitions of S functions. This facility is independent of ESS usage, but is written here since ESS users may wish to take advantage of TAGS facility. Read more about emacs tags in an emacs manual.

Etags, the program that generates the TAGS file, does not yet know the syntax to recognise function definitions in S files. Hence, you will need to provide a regexp that matches your function definitions. Here is an example call (broken over two lines; type as one line) that should be appropriate.

etags --language=none
--regex='/\([^ \t]+\)[ \t]*<-[ \t]*function/\1/' *.R

This will find entries in your source file of the form:

some.name <- function

with the function name starting in column 0. Windows users may need to change the single quotes to double quotes.

R version 2.9.0 introduced a front-end script for finding R tags, which calls the ‘rtags()’ function. By default, this script will recursively search the directories for relevant tags in R/C/Rd files. To use this script from the command line, try the following to get started:

R CMD rtags --help

For further details, see http://developer.r-project.org/rtags.html


Next: , Previous: , Up: Extras   [Contents][Index]

11.9 Rdired

Ess-rdired provides a dired-like buffer for viewing, editing and plotting objects in your current R session. If you are used to using the dired (directory editor) facility in Emacs, this mode gives you similar functionality for R objects.

Start an R session with M-x R and then store a few variables, such as:

s <- sin(seq(from=0, to=8*pi, length=100))
x <- c(1, 4, 9)
y <- rnorm(20)
z <- TRUE

Then use M-x ess-rdired to create a buffer listing the objects in your current environment and display it in a new window:

            mode length
  s      numeric    100
  x      numeric      3
  y      numeric     20
  z      logical      1

Type C-h m or ? to get a list of the keybindings for this mode. For example, with your point on the line of a variable, ‘p’ will plot the object, ‘v’ will view it, and ‘d’ will mark the object for deletion (‘x’ will actually perform the deletion).


Next: , Previous: , Up: Extras   [Contents][Index]

11.10 Rutils

Ess-rutils builds up on ess-rdired, providing key bindings for performing basic R functions in the inferior-ESS process buffer, such as loading and managing packages, object manipulation (listing, viewing, and deleting), and alternatives to help.start() and RSiteSearch() that use the browse-url Emacs function. The library can be loaded using M-x load-file, but the easiest is to include:

(require 'ess-rutils)

in your .emacs. Once R is started with M-x R, and if the value of the customizable variable ess-rutils-keys is true, several key bindings become available in iESS process buffers:

Command: ess-rutils-local-pkgs

C-c C-. l List all packages in all available libraries.

Command: ess-rutils-repos-pkgs

C-c C-. r List available packages from repositories listed by getOptions(``repos'') in the current R session.

Command: ess-rutils-update-pkgs lib repos

C-c C-. u Update packages in a particular library lib and repository repos.

Command: ess-rutils-apropos

C-c C-. a Search for a string using apropos.

Command: ess-rutils-rm-all

C-c C-. m Remove all R objects.

Command: ess-rutils-objs

C-c C-. o Manipulate R objects; wrapper for ess-rdired.

Command: ess-rutils-load-wkspc

C-c C-. w Load a workspace file into R.

Command: ess-rutils-save-wkspc

C-c C-. s Save a workspace file.

Command: ess-change-directory

C-c C-. d Change the working directory for the current R session.

Command: ess-rutils-html-docs

C-c C-. H Use browse-url to navigate R html documentation.

See the submenu ‘Rutils’ under the iESS menu for alternative access to these functions. The function ess-rutils-rsitesearch is provided without a particular key binding. This function is useful in any Emacs buffer, so can be bound to a user-defined key:

(eval-after-load "ess-rutils"
  '(global-set-key [(control c) (f6)] 'ess-rutils-rsitesearch))

Functions for listing objects and packages (ess-rutils-local-pkgs, ess-rutils-repos-pkgs, and ess-rutils-objs) show results in a separate buffer and window, in ess-rutils-mode, providing useful key bindings in this mode (type ? in this buffer for a description).


Next: , Previous: , Up: Extras   [Contents][Index]

11.11 Interaction with Org mode

Org-mode (http://orgmode.org) now supports reproducible research and literate programming in many languages (including R) – see chapter 14 of the Org manual (http://orgmode.org/org.html#Working-With-Source-Code). For ESS users, this offers a document-based work environment within which to embed ESS usage. R code lives in code blocks of an Org document, from which it can be edited in ess-mode, evaluated, extracted ("tangled") to pure code files. The code can also be exported ("woven") with the surrounding text to several formats including HTML and LaTeX. Results of evaluation including figures can be captured in the Org document, and data can be passed from the Org document (e.g. from a table) to the ESS R process. (This section contributed by Dan Davison and Eric Schulte.)


Previous: , Up: Extras   [Contents][Index]

11.12 Support for Sweave in ESS and AUCTeX

ESS provides support for writing and processing Sweave (http://www.statistik.lmu.de/~leisch/Sweave), building up on Emacs’ ess-noweb-mode for literate programming. When working on an Sweave document, the following key bindings are available:

Command: ess-swv-weave choose

M-n s Run Sweave on the current .Rnw file. If choose is non-‘nil’, offer a menu of available weavers.

Command: ess-swv-latex

M-n l Run LaTeX after Sweave’ing.

Command: ess-swv-PS

M-n p Generate and display a postscript file after LaTeX’ing.

Command: ess-swv-PDF pdflatex-cmd

M-n P Generate and display a PDF file after LaTeX’ing. Optional argument pdflatex-cmd is the command to use, which by default, is the command used to generate the PDF file is the first element of ess-swv-pdflatex-commands.

User Option: ess-swv-pdflatex-commands

Commands used by ess-swv-PDF to run a version of pdflatex; the first entry is the default command.

Sweave’ing with ess-swv-weave starts an inferior-ESS process, if one is not available. Other commands are available from the ‘Sweaving, Tangling, ...’ submenu of the Noweb menu.

AUCTeX (http://www.gnu.org/software/auctex) users may prefer to set the variable ess-swv-plug-into-AUCTeX-p (available from the “ESS Sweave” customization group) to t. Alternatively, the same can be achieved by activating the entry “AUCTeX Interface” from the ‘Sweaving, Tangling, ...’ submenu, which toggles this variable on or off. When the interface is activated, new entries for Sweave’ing and LaTeX’ing thereafter are available from AUCTeX’s “Command” menu. Sweave’ing can, thus, be done by C-c C-c Sweave RET without an inferior-ESS process. Similarly, LaTeX’ing can be done by C-c C-c LaTeXSweave RET. In both cases, the process can be monitored with C-c C-l (TeX-recenter-output-buffer). Open the viewer with C-c C-v (TeX-view), as usual in AUCTeX.


Next: , Previous: , Up: Top   [Contents][Index]

12 Overview of ESS features for the S family


12.1 ESS[S]–Editing files

ESS[S] is the mode for editing S language files. This mode handles:

  • - proper indenting, generated by both [Tab] and [Return].
  • - color and font choices based on syntax.
  • - ability to send the contents of an entire buffer, a highlighted region, an S function, or a single line to an inferior S process, if one is currently running.
  • - ability to switch between processes which would be the target of the buffer (for the above).
  • - The ability to request help from an S process for variables and functions, and to have the results sent into a separate buffer.
  • - completion of object names and file names.

ESS[S] mode should be automatically turned on when loading a file with the suffices found in ess-site (*.R, *.S, *.s, etc). Alternatively, type M-x R-mode to put the current buffer into R mode. However, one will have to start up an inferior process to take advantage of the interactive features.


12.2 iESS[S]–Inferior ESS processes

iESS (inferior ESS) is the mode for interfacing with active statistical processes (programs). This mode handles:

  • - proper indenting, generated by both [Tab] and [Return].
  • - color and font highlighting based on syntax.
  • - ability to resubmit the contents of a multi-line command to the executing process with a single keystroke [RET].
  • - The ability to request help from the current process for variables and functions, and to have the results sent into a separate buffer.
  • - completion of object names and file names.
  • - interactive history mechanism.
  • - transcript recording and editing.

To start up iESS mode, use:

   M-x S+3
   M-x S4
   M-x S+5
   M-x S+6
   M-x R

(for S-PLUS 3.x, S4, S+5, S+6 or S+7, and R, respectively. This assumes that you have access to each). Usually the site will have defined one of these programs (by default S+6) to the simpler name:

M-x S

In the (rare) case that you wish to pass command line arguments to the starting S+6 process, set the variable inferior-Splus-args.

Note that R has some extremely useful command line arguments. For example, --vanilla will ensure R starts up without loading in any init files. To enter a command line argument, call R using a "prefix argument", by

C-u M-x R

and when ESS prompts for "Starting Args ? ", enter (for example):

--vanilla

Then that R process will be started up using R --vanilla. If you wish to always call R with certain arguments, set the variable inferior-R-args accordingly.

If you have other versions of R or S-Plus available on the system, ESS is also able to start those versions. How this exactly works depend on which OS you are using, as described in the following paragraphs. The general principle, regardless of OS, is that ESS searches the paths listed in the variable exec-path for R binaries. If ESS cannot find your R binaries, on Unix you can change the unix environment variable PATH, as this variable is used to set exec-path.

R on Unix systems: If you have "R-1.8.1" on your exec-path, it can be started using M-x R-1.8.1. By default, ESS will find versions of R beginning "R-1" or "R-2". If your versions of R are called other names, consider renaming them with a symbolic link or change the variable ess-r-versions. To see which functions have been created for starting different versions of R, type M-x R- and then hit [Tab]. These other versions of R can also be started from the "ESS->Start Process->Other" menu.

R on Windows systems: If you have "rw1081" on your exec-path, it can be started using M-x rw1081. By default, ESS will find versions of R located in directories parallel to the version of R in your PATH. If your versions of R are called other names, you will need to change the variable ess-rterm-versions. To see which functions have been created for starting different versions of R, type M-x rw and then hit [Tab]. These other versions of R can also be started from the "ESS->Start Process->Other" menu.

Once ESS has found these extra versions of R, it will then create a new function, called M-x R-newest, which will call the newest version of R that it found. (ESS examines the date in the first line of information from R --version to determine which is newest.)

S on Unix systems: If you have "Splus7" on your exec-path, it can be started using M-x Splus7. By default, ESS will find all executables beginning "Splus" on your path. If your versions of S are called other names, consider renaming them with a symbolic link or change the variable ess-s-versions. To see which functions have been created for starting different versions of Splus, type M-x Splus and then hit [Tab]. These other versions of Splus can also be started from the "ESS->Start Process->Other" menu.

A second mechanism is also available for running other versions of Splus. The variable ess-s-versions-list is a list of lists; each sublist should be of the form: (DEFUN-NAME PATH ARGS). DEFUN-NAME is the name of the new emacs function you wish to create to start the new S process; PATH is the full path to the version of S you want to run; ARGS is an optional string of command-line arguments to pass to the S process. Here is an example setting:

(setq ess-s-versions-list
      '( ("Splus64" "/usr/local/bin/Splus64")
         ("Splus64-j" "/usr/local/bin/Splus64" "-j")))

which will then allow you to do M-x Splus64-j to start Splus64 with the corresponding command line arguments.

If you change the value of either ess-s-versions or ess-s-versions-list, you should put them in your .emacs before ess-site is loaded, since the new emacs functions are created when ESS is loaded.

Sqpe (S-Plus running inside an emacs buffer) on Windows systems: If you have an older version of S-Plus (S-Plus 6.1 for example) on your system, ir can be started inside an emacs buffer with M-x splus61. By default, ESS will find versions of S-Plus located in the installation directories that Insightful uses by default. If your versions of S-Plus are anywhere else, you will need to change the variable ess-SHOME-versions. To see which functions have been created for starting different versions of S-Plus, type M-x spl and then hit [Tab]. These other versions of S-Plus can also be started from the "ESS->Start Process->Other" menu.


12.3 ESS-help–assistance with viewing help

ESS has built-in facilities for viewing help files from S. See Help.


12.4 Philosophies for using ESS[S]

The first is preferred, and configured for. The second one can be retrieved again, by changing emacs variables.

1: (preferred by the current group of developers): The source code is real. The objects are realizations of the source code. Source for EVERY user modified object is placed in a particular directory or directories, for later editing and retrieval.

2: (older version): S objects are real. Source code is a temporary realization of the objects. Dumped buffers should not be saved. _We_strongly_discourage_this_approach_. However, if you insist, add the following lines to your .emacs file:

(setq ess-keep-dump-files 'nil)
(setq ess-delete-dump-files t)
(setq ess-mode-silently-save nil)

The second saves a small amount of disk space. The first allows for better portability as well as external version control for code.


12.5 Scenarios for use (possibilities–based on actual usage)

We present some basic suggestions for using ESS to interact with S. These are just a subset of approaches, many better approaches are possible. Contributions of examples of how you work with ESS are appreciated (especially since it helps us determine priorities on future enhancements)! (comments as to what should be happening are prefixed by "##").

1:  ##    Data Analysis Example (source code is real)
    ## Load the file you want to work with
    C-x C-f myfile.s

    ## Edit as appropriate, and then start up S-PLUS 3.x
    M-x S+3

    ## A new buffer *S+3:1* will appear.  Splus will have been started
    ## in this buffer.  The buffer is in iESS [S+3:1] mode.

    ## Split the screen and go back to the file editing buffer.
    C-x 2 C-x b myfile.s

    ## Send regions, lines, or the entire file contents to S-PLUS.  For regions,
    ## highlight a region with keystrokes or mouse and then send with:
    C-c C-r

    ## Re-edit myfile.s as necessary to correct any difficulties.  Add
    ## new commands here.  Send them to S by region with C-c C-r, or
    ## one line at a time with C-c C-n.

    ## Save the revised myfile.s with C-x C-s.

    ## Save the entire *S+3:1* interaction buffer with C-c C-s.  You
    ## will be prompted for a file name.  The recommended name is
    ## myfile.St.  With the *.St suffix, the file will come up in ESS
    ## Transcript mode the next time it is accessed from Emacs.



2:  ## Program revision example (source code is real)

    ## Start up S-PLUS 3.x in a process buffer (this will be *S+3:1*)
    M-x S+3

    ## Load the file you want to work with
    C-x C-f myfile.s

    ## edit program, functions, and code in myfile.s, and send revised
    ## functions to S when ready with
    C-c C-f
    ## or highlighted regions with
    C-c C-r
    ## or individual lines with
    C-c C-n
    ## or load the entire buffer with
    C-c C-l

    ## save the revised myfile.s when you have finished
    C-c C-s



3:  ## Program revision example (S object is real)

    ## Start up S-PLUS 3.x in a process buffer (this will be *S+3:1*)
    M-x S+3

    ## Dump an existing S object my.function into a buffer to work with
    C-c C-d my.function
    ## a new buffer named yourloginname.my.function.S will be created with
    ## an editable copy of the object.  The buffer is associated with the
    ## pathname /tmp/yourloginname.my.function.S and will amlost certainly not
    ## exist after you log off.

    ## enter program, functions, and code into work buffer, and send
    ## entire contents to S-PLUS when ready
    C-c C-b

    ## Go to *S+3:1* buffer, which is the process buffer, and examine
    ## the results.
    C-c C-y
    ## The sequence C-c C-y is a shortcut for:  C-x b *S+3:1*

    ## Return to the work buffer (may/may not be prefixed)
    C-x C-b yourloginname.my.function.S
    ## Fix the function that didn’t work, and resubmit by placing the
    ## cursor somewhere in the function and
    C-c C-f
    ## Or you could’ve selected a region (using the mouse, or keyboard
    ## via setting point/mark) and
    C-c C-r
    ## Or you could step through, line by line, using
    C-c C-n
    ## Or just send a single line (without moving to the next) using
    C-c C-j
    ## To fix that error in syntax for the "rchisq" command, get help
    ## by
    C-c C-v rchisq


4:    Data Analysis (S object is real)
    ## Start up S-PLUS 3.x, in a process buffer (this will be *S+3:1*)
    M-x S+3

    ## Work in the process buffer.  When you find an object that needs
    ## to be changed (this could be a data frame, or a variable, or a
    ## function), dump it to a buffer:
    C-c C-d my.cool.function

    ## Edit the function as appropriate, and dump back in to the
    ## process buffer
    C-c C-b

    ## Return to the S-PLUS process buffer
    C-c C-y
    ## Continue working.

    ## When you need help, use
    C-c C-v rchisq
    ## instead of entering:   help("rchisq")

12.6 Customization Examples and Solutions to Problems

1. Suppose that you are primarily an SPLUS 3.4 user, occasionally using S version 4, and sick and tired of the buffer-name *S+3* we’ve stuck you with. Simply edit the "ess-dialect" alist entry in the ess-sp3-d.el and ess-s4-d.el files to be "S" instead of "S4" and "S+3". This will ensure that all the inferior process buffer names are "*S*".

2. Suppose that you WANT to have the first buffer name indexed by ":1", in the same manner as your S-PLUS processes 2,3,4, and 5 (for you heavy simulation people). Then add after your (require ’ess-site) or (load "ess-site") command in your .emacs file, the line:

(setq ess-plain-first-buffername nil)

3. Fontlocking sometimes fails to behave nicely upon errors. When Splus dumps, a mis-matched " (double-quote) can result in the wrong font-lock face being used for the remainder of the buffer.

Solution: add a " at the end of the "Dumped..." statement, to revert the font-lock face back to normal.

4. When you change directory within a *R* or *S* session using the setwd() command, emacs does not recognise that you have changed the current directory.

Solution: Use M-x ess-change-directory. This will prompt you for the directory to change to. It will then change directory within the *S* buffer, and also update the emacs variable default-directory. Alternatively, if you have already executed setwd(), press M-RET within the *S* buffer so that Emacs can update default-directory.


Next: , Previous: , Up: Top   [Contents][Index]

13 ESS for SAS

ESS[SAS] was designed for use with SAS. It is descended from emacs macros developed by John Sall for editing SAS programs and SAS-mode by Tom Cook. Those editing features and new advanced features are part of ESS[SAS]. The user interface of ESS[SAS] has similarities with ESS[S] and the SAS Display Manager.


13.1 ESS[SAS]–Design philosophy

ESS[SAS] was designed to aid the user in writing and maintaining SAS programs, such as foo.sas. Both interactive and batch submission of SAS programs is supported.

ESS[SAS] was written with two primary goals.

  1. The emacs text editor provides a powerful and flexible development environment for programming languages. These features are a boon to all programmers and, with the help of ESS[SAS], to SAS users as well.
  2. Although a departure from SAS Display Manager, ESS[SAS] provides similar key definitions to give novice ESS[SAS] users a head start. Also, inconvenient SAS Display Manager features, like remote submission and syntax highlighting, are provided transparently; appealing to advanced ESS[SAS] users.

13.2 ESS[SAS]–Editing files

ESS[SAS] is the mode for editing SAS language files. This mode handles:

  • proper indenting, generated by both TAB and RET.
  • color and font choices based on syntax.
  • ability to save and submit the file you are working on as a batch SAS process with a single keypress and to continue editing while it is runs in the background.
  • capability of killing the batch SAS process through the *shell* buffer or allow the SAS process to keep on running after you exit emacs.
  • single keypress navigation of .sas, .log and .lst files (.log and .lst files are refreshed with each keypress).
  • ability to send the contents of an entire buffer, a highlighted region, or a single line to an interactive SAS process.
  • ability to switch between processes which would be the target of the buffer (for the above).

ESS[SAS] is automatically turned on when editing a file with a .sas suffix (or other extension, if specified via auto-mode-alist). The function keys can be enabled to use the same function keys that the SAS Display Manager does. The interactive capabilities of ESS require you to start an inferior SAS process with M-x SAS (See iESS(SAS)--Interactive SAS processes.)

At this writing, the indenting and syntax highlighting are generally correct. Known issues: for multiple line * or %* comments, only the first line is highlighted; for .log files, only the first line of a NOTE:, WARNING: or ERROR: message is highlighted; unmatched single/double quotes in CARDS data lines are NOT ignored; in an iterative DO statement, TO and BY are not highlighted.


13.3 ESS[SAS]–TAB key

Two options. The TAB key is bound by default to sas-indent-line. This function is used to syntactically indent SAS code so PROC and RUN are in the left margin, other statements are indented sas-indent-width spaces from the margin, continuation lines are indented sas-indent-width spaces in from the beginning column of that statement. This is the type of functionality that emacs provides in most programming language modes. This functionality is activated by placing the following line in your initialization file prior to a require/load:

(setq ess-sas-edit-keys-toggle nil)

ESS provides an alternate behavior for TAB that makes it behave as it does in SAS Display Manager, i.e. move the cursor to the next stop. The alternate behavior also provides a "TAB" backwards, C-TAB, that moves the cursor to the stop to the left and deletes any characters between them. This functionality is obtained by placing the following line in your initialization file prior to a require/load:

(setq ess-sas-edit-keys-toggle t)

Under the alternate behavior, TAB is bound to M-x tab-to-tab-stop and the stops are defined by ess-sas-tab-stop-list.


13.4 ESS[SAS]–Batch SAS processes

Submission of a SAS batch job is dependent on your environment. ess-sas-submit-method is determined by your operating system and your shell. It defaults to 'sh unless you are running Windows or Mac Classic. Under Windows, it will default to 'sh if you are using a UNIX-imitating shell; otherwise 'ms-dos for an MS-DOS shell. On macOS, it will default to 'sh, but under Mac Classic, it defaults to 'apple-script. You will also set this to 'sh if the SAS batch job needs to run on a remote machine rather than your local machine. This works transparently if you are editing the remote file via ange-ftp/EFS or tramp. Note that ess-sas-shell-buffer-remote-init is a Local Variable that defaults to "ssh" which will be used to open the buffer on the remote host and it is assumed that no password is necessary, i.e. you are using ssh-agent/ssh-add or the equivalent (see the discussion about Local Variables below if you need to change the default).

However, if you are editing the file locally and transferring it back and forth with Kermit, you need some additional steps. First, start Kermit locally before remotely logging in. Open a local copy of the file with the ess-kermit-prefix character prepended (the default is "#"). Execute the command M-x ess-kermit-get which automatically brings the contents of the remote file into your local copy. If you transfer files with Kermit manually in a *shell* buffer, then note that the Kermit escape sequence is C-q C-\ c rather than C-\ c which it would be in an ordinary terminal application, i.e. not in an emacs buffer. Lastly, note that the remote Kermit command is specified by ess-kermit-command.

The command used by the SUBMIT function key (F3 or F8) to submit a batch SAS job, whether local or remote, is ess-sas-submit-command which defaults to sas-program. sas-program is "invoke SAS using program file" for Mac Classic and "sas" otherwise. However, you may have to alter ess-sas-submit-command for a particular program, so it is defined as buffer-local. Conveniently, it can be set at the end of the program:

endsas;
Local variables:
ess-sas-submit-command: "sas8"
End:

The command line is also made of ess-sas-submit-pre-command, ess-sas-submit-post-command and ess-sas-submit-command-options (the last of which is also buffer-local). Here are some examples for your ~/.emacs or ~/.xemacs/init.el file (you may also use M-x customize-variable):

;'sh default
(setq ess-sas-submit-pre-command "nohup")
;'sh default
(setq ess-sas-submit-post-command "-rsasuser &")
;'sh example
(setq-default ess-sas-submit-command "/usr/local/sas/sas")
;'ms-dos default
(setq ess-sas-submit-pre-command "start")
;'ms-dos default
(setq ess-sas-submit-post-command "-rsasuser -icon")
;Windows example
(setq-default ess-sas-submit-command "c:/progra~1/sas/sas.exe")
;Windows example
(setq-default ess-sas-submit-command "c:\\progra~1\\sas\\sas.exe")

There is a built-in delay before a batch SAS job is submitted when using a UNIX-imitating shell under Windows. This is necessary in many cases since the shell might not be ready to receive a command. This delay is currently set high enough so as not to be a problem. But, there may be cases when it needs to be set higher, or could be set much lower to speed things up. You can over-ride the default in your ~/.emacs or ~/.xemacs/init.el file by:

(setq ess-sleep-for 0.2)

For example, (setq ess-sas-global-unix-keys t) keys shown, (setq ess-sas-global-pc-keys t) in parentheses; ESS[SAS] function keys are presented in the next section. Open the file you want to work with C-x C-f foo.sas. foo.sas will be in ESS[SAS] mode. Edit as appropriate, then save and submit the batch SAS job.

F3 (F8)

The job runs in the *shell* buffer while you continue to edit foo.sas. If ess-sas-submit-method is 'sh, then the message buffer will display the shell notification when the job is complete. The 'sh setting also allows you to terminate the SAS batch job before it is finished.

F8 (F3)

Terminating a SAS batch in the *shell* buffer.

kill PID

You may want to visit the .log (whether the job is still running or it is finished) and check for error messages. The .log will be refreshed and you will be placed in it’s buffer. You will be taken to the first error message, if any.

F5 (F6)

Goto the next error message, if any.

F5 (F6)

Now, ‘refresh’ the .lst and go to it’s buffer.

F6 (F7)

If you wish to make changes, go to the .sas file with.

F4 (F5)

Make your editing changes and submit again.

F3 (F8)

13.5 ESS[SAS]–Function keys for batch processing

The setup of function keys for SAS batch processing is unavoidably complex, but the usage of function keys is simple. There are five distinct options:

Option 1 (default). Function keys in ESS[SAS] are not bound to elisp commands. This is in accordance with the GNU Elisp Coding Standards (GECS) which do not allow function keys to be bound so that they are available to the user.

Options 2-5. Since GECS does not allow function keys to be bound by modes, these keys are often unused. So, ESS[SAS] provides users with the option of binding elisp commands to these keys. Users who are familiar with SAS will, most likely, want to duplicate the function key capabilities of the SAS Display Manager. There are four options (noted in parentheses).

  1. SAS Display Manager has different function key definitions for UNIX (2, 4) and Windows (3, 5); ESS[SAS] can use either.
  2. The ESS[SAS] function key definitions can be active in all buffers (global: 4, 5) or limited (local: 2, 3) only to buffers with files that are associated with ESS[SAS] as specified in your auto-mode-alist.

The distinction between local and global is subtle. If you want the ESS[SAS] definitions to work when you are in the *shell* buffer or when editing files other than the file extensions that ESS[SAS] recognizes, you will most likely want to use the global definitions. If you want your function keys to understand SAS batch commands when you are editing SAS files, and to behave normally when editing other files, then you will choose the local definitions. The option can be chosen by the person installing ESS for a site or by an individual.

  1. For a site installation or an individual, place ONLY ONE of the following lines in your initialization file prior to a require/load. ESS[SAS] function keys are available in ESS[SAS] if you choose either 2 or 3 and in all modes if you choose 4 or 5:
    ;;2; (setq ess-sas-local-unix-keys t)
    ;;3; (setq ess-sas-local-pc-keys t)
    ;;4; (setq ess-sas-global-unix-keys t)
    ;;5; (setq ess-sas-global-pc-keys t)
    

    The names -unix- and -pc- have nothing to do with the operating system that you are running. Rather, they mimic the definitions that the SAS Display Manager uses by default on those platforms.

  2. If your site installation has configured the keys contrary to your liking, then you must call the appropriate function.
     (load "ess-site") ;; local-unix-keys
     (ess-sas-global-pc-keys)
    

Finally, we get to what the function keys actually do. You may recognize some of the nicknames as SAS Display Manager commands (they are in all capitals).

UNIXPCNickname
F2F2refresh
revert the current buffer with the file of the same name if the file is newer than the buffer
F3F8SUBMIT
save the current .sas file (which is either the .sas file in the current buffer or the .sas file associated with the .lst or .log file in the current buffer) and submit the file as a batch SAS job
F4F5PROGRAM
switch buffer to .sas file
F5F6LOG
switch buffer to .log file, ‘refresh’ and goto next error message, if any
F6F7OUTPUT
switch buffer to .lst file and ‘refresh
F7F4filetype-1
switch buffer to ‘filetype-1’ (defaults to .txt) file and ‘refresh
F8F3shell
switch buffer to *shell*
F9F9VIEWTABLE
open an interactive PROC FSEDIT session on the SAS dataset near point
F10F10toggle-log
toggle ESS[SAS] for .log files; useful for certain debugging situations
F11F11filetype-2
switch buffer to ‘filetype-2’ (defaults to .dat) file and ‘refresh
F12F12viewgraph
open a GSASFILE near point for viewing either in emacs or with an external viewer
C-F1C-F1rtf-portrait
create an MS RTF portrait file from the current buffer with a file extension of .rtf
C-F2C-F2rtf-landscape
create an MS RTF landscape file from the current buffer with a file extension of .rtf
C-F3C-F8submit-region
write region to ess-temp.sas and submit
C-F5C-F6append-to-log
append ess-temp.log to the current .log file
C-F6C-F7append-to-output
append ess-temp.lst to the current .lst file
C-F9C-F9INSIGHT
open an interactive PROC INSIGHT session on the SAS dataset near point
C-F10C-F10toggle-listing
toggle ESS[SAS] for .lst files; useful for toggling read-only

SUBMIT, PROGRAM, LOG and OUTPUT need no further explanation since they mimic the SAS Display Manager commands and related function key definitions. However, six other keys have been provided for convenience and are described below.

shell’ switches you to the *shell* buffer where you can interact with your operating system. This is especially helpful if you would like to kill a SAS batch job. You can specify a different buffer name to associate with a SAS batch job (besides *shell*) with the buffer-local variable ess-sas-shell-buffer. This allows you to have multiple buffers running SAS batch jobs on multiple local/remote computers that may rely on different methods specified by the buffer-local variable ess-sas-submit-method.

F2 performs the ‘refresh’ operation on the current buffer. ‘refresh’ compares the buffer’s last modified date/time with the file’s last modified date/time and replaces the buffer with the file if the file is newer. This is the same operation that is automatically performed when LOG, OUTPUT, ‘filetype-1’ or F11 are pressed.

filetype-1’ switches you to a file with the same file name as your .sas file, but with a different extension (.txt by default) and performs ‘refresh’. You can over-ride the default extension; for example in your ~/.emacs or ~/.xemacs/init.el file:

(setq ess-sas-suffix-1 "csv") ; for example

F9 will prompt you for the name of a permanent SAS dataset near point to be opened for viewing by PROC FSEDIT. You can control the SAS batch command-line with ess-sas-data-view-submit-options. For controlling the SAS batch commands, you have the global variables ess-sas-data-view-libname and ess-sas-data-view-fsview-command as well as the buffer-local variable ess-sas-data-view-fsview-statement. If you have your SAS LIBNAME defined in ~/autoexec.sas, then the defaults for these variables should be sufficient.

Similarly, C-F9 will prompt you for the name of a permanent SAS dataset near point to be opened for viewing by PROC INSIGHT. You can control the SAS batch command-line with ess-sas-data-view-submit-options. For controlling the SAS batch commands, you have the global variables ess-sas-data-view-libname and ess-sas-data-view-insight-command as well as the buffer-local variable ess-sas-data-view-insight-statement.

F10 toggles ESS[SAS] mode for .log files which is off by default (technically, it is SAS-log-mode, but it looks the same). The syntax highlighting can be helpful in certain debugging situations, but large .log files may take a long time to highlight.

F11 is the same as ‘filetype-1’ except it is .dat by default.

F12 will prompt you for the name of a GSASFILE near the point in .log to be opened for viewing either with emacs or with an external viewer. Depending on your version of emacs and the operating system you are using, emacs may support .gif and .jpg files internally. You may need to change the following variables for your own situation. ess-sas-graph-view-suffix-regexp is a regular expression of supported file types defined via file name extensions. ess-sas-graph-view-viewer-default is the default external viewer for your platform. ess-sas-graph-view-viewer-alist is an alist of exceptions to the default; i.e. file types and their associated viewers which will be used rather than the default viewer.

(setq ess-sas-graph-view-suffix-regexp (concat "[.]\\([eE]?[pP][sS]\\|"
"[pP][dD][fF]\\|[gG][iI][fF]\\|[jJ][pP][eE]?[gG]\\|"
"[tT][iI][fF][fF]?\\)")) ;; default
(setq ess-sas-graph-view-viewer-default "kodakimg") ;; Windows default
(setq ess-sas-graph-view-viewer-default "sdtimage") ;; Solaris default
(setq ess-sas-graph-view-viewer-alist
  '(("[eE]?[pP][sS]" . "gv") ("[pP][dD][fF]" . "gv")) ;; default w/ gv

C-F2 produces US landscape by default, however, it can produce A4 landscape (first line for "global" key mapping, second for "local"):

(global-set-key [(control f2)] 'ess-sas-rtf-a4-landscape)
(define-key sas-mode-local-map [(control f2)] 'ess-sas-rtf-a4-landscape)

13.6 iESS[SAS]–Interactive SAS processes

Inferior ESS (iESS) is the method for interfacing with interactive statistical processes (programs). iESS[SAS] is what is needed for interactive SAS programming. iESS[SAS] works best with the SAS command-line option settings "-stdio -linesize 80 -noovp -nosyntaxcheck" (the default of inferior-SAS-args).

-stdio
            required to make the redirection of stdio work
-linesize 80
            keeps output lines from folding on standard terminals
-noovp
            prevents error messages from printing 3 times
-nosyntaxcheck
            permits recovery after syntax errors

To start up iESS[SAS] mode, use:

   M-x SAS

The *SAS:1.log* buffer in ESStr mode corresponds to the file foo.log in SAS batch usage and to the ‘SAS: LOG’ window in the SAS Display Manager. All commands submitted to SAS, informative messages, warnings, and errors appear here.

The *SAS:1.lst* buffer in ESSlst mode corresponds to the file foo.lst in SAS batch usage and to the ‘SAS: OUTPUT’ window in the SAS Display Manager. All printed output appears in this window.

The *SAS:1* buffer exists solely as a communications buffer. The user should never use this buffer directly. Files are edited in the foo.sas buffer. The C-c C-r key in ESS[SAS] is the functional equivalent of bringing a file into the ‘SAS: PROGRAM EDITOR’ window followed by SUBMIT.

For example, open the file you want to work with.

C-x C-f foo.sas

foo.sas will be in ESS[SAS] mode. Edit as appropriate, and then start up SAS with the cursor in the foo.sas buffer.

M-x SAS

Four buffers will appear on screen:

BufferModeDescription
foo.sasESS[SAS]your source file
*SAS:1*iESS[SAS:1]iESS communication buffer
*SAS:1.log*Shell ESStr []SAS log information
*SAS:1.lst*Shell ESSlst []SAS listing information

If you would prefer each of the four buffers to appear in its own individual frame, you can arrange for that. Place the cursor in the buffer displaying foo.sas. Enter the sequence C-c C-w. The cursor will normally be in buffer foo.sas. If not, put it there and C-x b foo.sas.

Send regions, lines, or the entire file contents to SAS (regions are most useful: a highlighted region will normally begin with the keywords DATA or PROC and end with RUN;), C-c C-r.

Information appears in the log buffer, analysis results in the listing buffer. In case of errors, make the corrections in the foo.sas buffer and resubmit with another C-c C-r.

At the end of the session you may save the log and listing buffers with the usual C-x C-s commands. You will be prompted for a file name. Typically, the names foo.log and foo.lst will be used. You will almost certainly want to edit the saved files before including them in a report. The files are read-only by default. You can make them writable by the emacs command C-x C-q.

At the end of the session, the input file foo.sas will typically have been revised. You can save it. It can be used later as the beginning of another iESS[SAS] session. It can also be used as a batch input file to SAS.

The *SAS:1* buffer is strictly for ESS use. The user should never need to read it or write to it. Refer to the .lst and .log buffers for monitoring output!

Troubleshooting: See iESS(SAS)--Common problems.


13.7 iESS[SAS]–Common problems

  1. iESS[SAS] does not work on Windows. In order to run SAS inside an emacs buffer, it is necessary to start SAS with the -stdio option. SAS does not support the -stdio option on Windows.
  2. If M-x SAS gives errors upon startup, check the following:
    • you are running Windows: see 1.
    • ess-sas-sh-command (from the ESS etc directory) needs to be executable; too check, type M-x dired; if not, fix it as follows, type M-:, then at the minibuffer prompt ‘Eval:, type (set-file-modes "ess-sas-sh-command" 493).
    • sas isn’t in your executable path; to verify, type M-: and at the minibuffer prompt ‘Eval:’, type (executable-find "sas")
  3. M-x SAS starts SAS Display Manager. Probably, the command sas on your system calls a shell script. In that case you will need to locate the real sas executable and link to it. You can execute the UNIX command:
    find / -name sas -print
    

    Now place a soft link to the real sas executable in your ~/bin directory, with for example

    cd ~/bin
    ln -s /usr/local/sas9/sas sas
    

Check your PATH environment variable to confirm that ~/bin appears before the directory in which the sas shell script appears.


13.8 ESS[SAS]–Graphics

Output from a SAS/GRAPH PROC can be displayed in a SAS/GRAPH window for SAS batch on Windows or for both SAS batch and interactive with XWindows on UNIX. If you need to create graphics files and view them with F12, then include the following (either in foo.sas or in ~/autoexec.sas):

filename gsasfile 'graphics.ps';
goptions device=ps gsfname=gsasfile gsfmode=append;

PROC PLOT graphs can be viewed in the listing buffer. You may wish to control the vertical spacing to allow the entire plot to be visible on screen, for example:

proc plot;
    plot a*b / vpos=25;
run;

13.9 ESS[SAS]–Windows

  • iESS[SAS] does not work on Windows. See iESS(SAS)--Common problems.
  • ESS[SAS] mode for editing SAS language files works very well. See ESS(SAS)--Editing files.
  • There are two execution options for SAS on Windows. You can use batch. See ESS(SAS)--Batch SAS processes.

    Or you can mark regions with the mouse and submit the code with ‘submit-region’ or paste them into SAS Display Manager.


Next: , Previous: , Up: Top   [Contents][Index]

14 ESS for BUGS

ESS[BUGS] was originally designed for use with BUGS software. Later, it evolved to support JAGS as a dialect of the BUGS language via ESS[JAGS], however, ESS[JAGS] is documented in the section Help for JAGS. ESS[BUGS] provides 5 features. First, BUGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in BUGS model files, command files and log files. Second, ESS creates templates for the command file from the model file so that a BUGS batch process can be defined by a single file. Third, ESS provides a BUGS batch script that allows ESS to set BUGS batch parameters. Fourth, key sequences are defined to create a command file and submit a BUGS batch process. Lastly, interactive submission of BUGS commands is also supported.


14.1 ESS[BUGS]–Model files

Model files with the .bug extension are edited in ESS[BUGS] mode if (require 'ess-bugs-d) was performed. Model files with the .jag extension are edited in ESS[JAGS] mode if (require 'ess-jags-d) was performed. Three keys are bound for your use in ESS[BUGS], F2, C-c C-c and =. F2 performs the same action as it does in ESS[SAS], See ESS(SAS)--Function keys for batch processing. C-c C-c performs the function ess-bugs-next-action which you will use a lot. Pressing it in an empty buffer for a model file will produce a template for you. = inserts the set operator, <-.


14.2 ESS[BUGS]–Command files

To avoid extension name collision, .bmd is used for BUGS command files and .jmd for JAGS command files. When you have finished editing your model file and press C-c C-c, a command file is created if one does not already exist. When you are finished editing your command file, pressing C-c C-c again will submit your command file as a batch job.


14.3 ESS[BUGS]–Log files

To avoid extension name collision, .bog is used for BUGS log files. The command line generated by ESS creates the .bog transcript file. Similarly, .jog is used for JAGS log files.


15 ESS for JAGS

ESS[BUGS] was originally designed for use with BUGS software. Later, it evolved to support JAGS as a dialect of the BUGS language via ESS[JAGS]. Since BUGS and JAGS are quite similar, ESS[BUGS] and ESS[JAGS] are necessarily similar. ESS[JAGS] provides 4 features. First, JAGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in JAGS model files, command files and log files. Second, ESS creates templates for the command file from the model file so that a JAGS batch process can be defined by a single file. Third, ESS provides a JAGS batch script that allows ESS to set JAGS batch parameters. Fourth, key sequences are defined to create a command file and submit a JAGS batch process.


15.1 ESS[JAGS]–Model files

Model files with the .bug extension are edited in ESS[BUGS] mode if (require 'ess-bugs-d) was performed or edited in ESS[JAGS] mode if (require 'ess-jags-d). Three keys are bound for your use in ESS[BUGS], F2, C-c C-c and =. F2 performs the same action as it does in ESS[SAS], See ESS(SAS)--Function keys for batch processing. C-c C-c performs the function ess-bugs-next-action which you will use a lot. Pressing it in an empty buffer for a model file will produce a template for you. = inserts the set operator, <-.

ESS[JAGS] does not support "replacement" variables which were part of ESS[BUGS]. Although, "replacement" variables are an extremely convenient feature, creating the elisp code for their operation was challenging. So, a more elisp-ish approach was adopted for ESS[JAGS]: elisp local variables. These variables are created as part of the template, i.e. with the first press of C-c C-c in an empty buffer. For your .bug file, they are named ess-jags-chains, ess-jags-monitor, ess-jags-thin, ess-jags-burnin and ess-jags-update; they appear in the Local Variables section. When you are finished editing your model file, pressing C-c C-c will perform the necessary actions to build your command file for you.

The ess-jags-chains variable is the number of chains that you want to initialize and sample from; defaults to 1. The ess-jags-monitor variable is a list of variables that you want monitored: encase each variable in double quotes. When you press C-c C-c, the appropriate statements are created in the command file to monitor the list of variables. By default, no variables are explicitly monitored which means JAGS will implicitly monitor all “default” variables. The ess-jags-thin variable is the thinning parameter. By default, the thinning parameter is set to 1, i.e. no thinning. The ess-jags-burnin variable is the number of initial samples to discard. By default, the burnin parameter is set to 10000. The ess-jags-update variable is the number of post-burnin samples to keep. By default, the update parameter is set to 10000. Both ess-jags-burnin and ess-jags-update are multiplied by ess-jags-thin since JAGS does not do it automatically.


15.2 ESS[JAGS]–Command files

To avoid extension name collision, .bmd is used for BUGS command files and .jmd for JAGS command files. For your .jmd file, there is only one variable, ess-jags-command, in the Local Variables section. When you have finished editing your model file and press C-c C-c, a command file is created if one does not already exist. When you are finished editing your command file, pressing C-c C-c again will submit your command file as a batch job. The ess-jags-command variable allows you to specify a different JAGS program to use to run your model; defaults to “jags”.


15.3 ESS[JAGS]–Log files

The .jog extension is used for JAGS log files. You may find F2 useful to refresh the .jog if the batch process over-writes or appends it.


Next: , Previous: , Up: Top   [Contents][Index]

16 Bugs and Bug Reporting, Mailing Lists


16.1 Bugs

  • Commands like ess-display-help-on-object and list completion cannot be used while the user is entering a multi-line command. The only real fix in this situation is to use another ESS process.
  • The ess-eval- commands can leave point in the ESS process buffer in the wrong place when point is at the same position as the last process output. This proves difficult to fix, in general, as we need to consider all windows with window-point at the right place.
  • It’s possible to clear the modification flag (say, by saving the buffer) with the edit buffer not having been loaded into S.
  • Backup files can sometimes be left behind, even when ess-keep-dump-files is nil.
  • Passing an incomplete S expression to ess-execute causes ESS to hang.
  • The function-based commands don’t always work as expected on functions whose body is not a parenthesized or compound expression, and don’t even recognize anonymous functions (i.e. functions not assigned to any variable).
  • Multi-line commands could be handled better by the command history mechanism.
  • Changes to the continutation prompt in R (e.g. options(continue = " ")) are not automatically detected by ESS. Hence, for now, the best thing is not to change the continuation prompt. If you do change the continuation prompt, you will need to change accordingly the value of inferior-ess-secondary-prompt in R-customize-alist.

16.2 Reporting Bugs

Please send bug reports, suggestions etc. to ESS-bugs@r-project.org

The easiest way to do this is within Emacs by typing

M-x ess-submit-bug-report

This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug.

If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer.

Note that comments, suggestions, words of praise and large cash donations are also more than welcome.


16.3 Mailing Lists

There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to ess-help-request@r-project.org; contributions to the list may be mailed to ess-help@r-project.org. Rest assured, this is a fairly low-volume mailing list.

The purposes of the mailing list include

  • helping users of ESS to get along with it.
  • discussing aspects of using ESS on Emacs and XEmacs.
  • suggestions for improvements.
  • announcements of new releases of ESS.
  • posting small patches to ESS.

16.4 Help with emacs

Emacs is a complex editor with many abilities that we do not have space to describe here. If you have problems with other features of emacs (e.g. printing), there are several sources to consult, including the emacs FAQs (try M-x xemacs-www-faq or M-x view-emacs-FAQ) and EmacsWiki (http://www.emacswiki.org). Please consult them before asking on the mailing list about issues that are not specific to ESS.


Next: , Previous: , Up: Top   [Contents][Index]

Appendix A Customizing ESS

ESS can be easily customized to your taste simply by including the appropriate lines in your .emacs file. There are numerous variables which affect the behavior of ESS in certain situations which can be modified to your liking. Keybindings may be set or changed to your preferences, and for per-buffer customizations hooks are also available.

Most of these variables can be viewed and set using the Custom facility within Emacs. Type M-x customize-group RET ess RET to see all the ESS variables that can be customized. Variables are grouped by subject to make it easy to find related variables.


Previous: , Up: Top   [Contents][Index]

Indices


Key index

Jump to:   ,   {   }  
C   E   M   R   T  
Index Entry  Section

,
,: Handy commands

{
{: Indenting

}
}: Indenting

C
C-c C-. a: Rutils
C-c C-. d: Rutils
C-c C-. H: Rutils
C-c C-. l: Rutils
C-c C-. m: Rutils
C-c C-. o: Rutils
C-c C-. r: Rutils
C-c C-. s: Rutils
C-c C-. u: Rutils
C-c C-. w: Rutils
C-C C-b: Evaluating code
C-c C-c: Other
C-C C-c: Evaluating code
C-c C-e C-d: Edit buffer
C-c C-e C-s: Styles
C-c C-e s: Styles
C-C C-f: Evaluating code
C-C C-j: Evaluating code
C-c C-l: Hot keys
C-c C-o C-c: Roxygen
C-c C-o C-h: Roxygen
C-c C-o C-o: Roxygen
C-c C-o C-r: Roxygen
C-c C-o C-t: Roxygen
C-c C-o n: Roxygen
C-c C-o p: Roxygen
C-c C-q: Hot keys
C-C C-r: Evaluating code
C-c C-s: Hot keys
C-c C-t C-s: Namespaced Evaluation
C-c C-v: Hot keys
C-c C-w: Clean
C-c C-x: Hot keys
C-c C-z: Other
C-C M-b: Evaluating code
C-C M-f: Evaluating code
C-C M-j: Evaluating code
C-C M-r: Evaluating code
C-c RET: Resubmit
C-c `: Hot keys
C-c `: Error Checking
C-j: Indenting
C-M-a: Other edit buffer commands
C-M-e: Other edit buffer commands
C-M-h: Other edit buffer commands
C-M-q: Indenting
C-M-x: Evaluating code
C-x `: Hot keys

E
ESC C-a: Other edit buffer commands
ESC C-e: Other edit buffer commands
ESC C-h: Other edit buffer commands
ESC C-q: Indenting

M
M-;: Indenting
M-?: Object names
M-C-q: Indenting
M-n l: Sweave and AUCTeX
M-n P: Sweave and AUCTeX
M-n s: Sweave and AUCTeX
M-RET: Resubmit

R
RET: Command-line editing
RET: Resubmit

T
TAB: Indenting

Jump to:   ,   {   }  
C   E   M   R   T  

Next: , Previous: , Up: Indices   [Contents][Index]

Function and program index

Jump to:   B   C   D   E   F   I   M   N   O   P   Q   S  
Index Entry  Section

B
backward-kill-word: Command-line editing

C
comint-backward-matching-input: Process buffer motion
comint-bol: Command-line editing
comint-copy-old-input: Transcript resubmit
comint-delete-output: Last command
comint-dynamic-complete: Object names
comint-forward-matching-input: Process buffer motion
comint-history-isearch-backward-regexp: Command History
comint-interrupt-subjob: Other
comint-kill-input: Command-line editing
comint-next-input: Process buffer motion
comint-next-input: Command History
comint-next-matching-input-from-input: Command History
comint-previous-input: Process buffer motion
comint-previous-input: Command History
comint-previous-matching-input-from-input: Command History
comint-show-output: Last command

D
dump(): Edit buffer

E
ess-change-directory: Rutils
ess-cleanup: Hot keys
ess-cleanup: Help
ess-describe-help-mode: Help
ess-display-help-on-object: Hot keys
ess-display-help-on-object: Help
ess-display-help-on-object: Help
ess-dump-object-into-edit-buffer: Edit buffer
ess-electric-brace: Indenting
ess-eval-buffer: Evaluating code
ess-eval-buffer-and-go: Evaluating code
ess-eval-function: Evaluating code
ess-eval-function-and-go: Evaluating code
ess-eval-line: Evaluating code
ess-eval-line-and-go: Evaluating code
ess-eval-line-and-step: Help
ess-eval-region: Evaluating code
ess-eval-region: Help
ess-eval-region-and-go: Evaluating code
ess-eval-region-or-function-or-paragraph: Evaluating code
ess-eval-region-or-function-or-paragraph-and-step: Evaluating code
ess-eval-region-or-line-and-step: Evaluating code
ess-execute-objects: Hot keys
ess-execute-search: Hot keys
ess-goto-beginning-of-function-or-para: Other edit buffer commands
ess-goto-end-of-function-or-para: Other edit buffer commands
ess-handy-commands: Handy commands
ess-handy-commands: Handy commands
ess-indent-command: Roxygen
ess-indent-exp: Indenting
ess-indent-or-complete: Indenting
ess-list-object-completions: Object names
ess-load-file: Hot keys
ess-load-file: Loading
ess-mark-function: Other edit buffer commands
ess-parse-errors: Hot keys
ess-parse-errors: Error Checking
ess-quit: Hot keys
ess-quit: Help
ess-R-complete-object-name: Roxygen
ess-r-set-evaluation-env: Namespaced Evaluation
ess-remote: ESS processes on Remote Computers
ess-request-a-process: Multiple ESS processes
ess-resynch: Object names
ess-roxy-hide-all: Roxygen
ess-roxy-next-entry: Roxygen
ess-roxy-preview-HTML: Roxygen
ess-roxy-preview-Rd: Roxygen
ess-roxy-previous-entry: Roxygen
ess-roxy-toggle-roxy-region: Roxygen
ess-roxy-update-entry: Roxygen
ess-rutils-apropos: Rutils
ess-rutils-html-docs: Rutils
ess-rutils-load-wkspc: Rutils
ess-rutils-local-pkgs: Rutils
ess-rutils-objs: Rutils
ess-rutils-repos-pkgs: Rutils
ess-rutils-rm-all: Rutils
ess-rutils-rsitesearch: Rutils
ess-rutils-save-wkspc: Rutils
ess-rutils-update-pkgs: Rutils
ess-set-style: Styles
ess-skip-to-help-section: Help
ess-skip-to-next-section: Help
ess-skip-to-previous-section: Help
ess-smart-comma: Handy commands
ess-submit-bug-report: Reporting Bugs
ess-switch-to-end-of-ESS: Help
ess-switch-to-inferior-or-script-buffer: Other
ess-swv-latex: Sweave and AUCTeX
ess-swv-PDF: Sweave and AUCTeX
ess-swv-PS: Sweave and AUCTeX
ess-swv-weave: Sweave and AUCTeX
ess-tracebug: ESS tracebug
ess-transcript-clean-region: Clean
ess-transcript-copy-command: Resubmit
ess-transcript-send-command: Resubmit
ess-transcript-send-command-and-move: Resubmit
ess-use-ido, ess-completing-read: Minibuffer completion

F
fill-paragraph: Roxygen

I
inferior-ess-send-input: Command-line editing

M
mark-paragraph: Roxygen
move-beginning-of-line: Roxygen

N
newline-and-indent: Roxygen

O
objects(): Hot keys

P
printer(): printer

Q
q(): Hot keys

S
S: Starting up
search(): Hot keys
search(): Object names
source(): Evaluating code
source(): Loading
STERM: Statistical Process running in ESS?

Jump to:   B   C   D   E   F   I   M   N   O   P   Q   S  

Variable index

Jump to:   A   C   E   I   R  
Index Entry  Section

A
ac-source-R: Auto-complete
ac-source-R-args: Auto-complete
ac-source-R-objects: Auto-complete

C
comint-delimiter-argument-list: History expansion
comint-input-ring-size: Command History
comment-column: Indenting

E
ess-ask-about-transfile: Customizing startup
ess-ask-about-transfile: Saving transcripts
ess-ask-for-ess-directory: Customizing startup
ess-default-style: Styles
ess-delete-dump-files: Source Files
ess-directory: Source Directories
ess-dump-filename-template: Source Directories
ess-eldoc-abbreviation-style: ESS ElDoc
ess-eldoc-show-on-symbol: ESS ElDoc
ess-eval-visibly: Evaluating code
ess-execute-in-process-buffer: Hot keys
ess-first-tab-never-complete: Indenting
ess-first-tab-never-complete: Object names
ess-font-lock-mode: Highlighting
ess-function-template: Edit buffer
ess-handy-commands: Handy commands
ess-handy-commands: Handy commands
ess-indent-with-fancy-comments: Indenting
ess-keep-dump-files: Source Files
ess-R-font-lock-keywords: Highlighting
ess-search-list: Source Directories
ess-source-directory: Source Directories
ess-style-alist: Styles
ess-switch-to-end-of-proc-buffer: Other
ess-swv-pdflatex-commands: Sweave and AUCTeX
ess-tab-complete-in-script: Indenting
ess-use-eldoc: ESS ElDoc

I
inferior-ess-program: Customizing startup
inferior-R-font-lock-keywords: Highlighting

R
Rd-indent-level: R documentation files
Rd-mode-hook: R documentation files
Rd-to-help-command: R documentation files

Jump to:   A   C   E   I   R  

Previous: , Up: Indices   [Contents][Index]

Concept Index

Jump to:   .  
A   B   C   D   E   F   G   H   I   K   L   M   N   O   P   Q   R   S   T   U   W   X  
Index Entry  Section

.
.emacs file: Source Directories

A
aborting S commands: Other
arguments to S program: Customizing startup
authors: Credits
auto-complete: Auto-complete
autosaving: Source Files

B
bug reports: Reporting Bugs
bugs: Bugs

C
cleaning up: Hot keys
comint: Credits
command history: Command History
command line arguments: iESS(S)--Inferior ESS processes
command-line completion: Object names
command-line editing: Command-line editing
commands: Entering commands
comments: Source Files
comments in S: Indenting
completion in edit buffer: Other edit buffer commands
completion of object names: Object names
completion on file names: Object names
completion on lists: Object names
completion, when prompted for object names: Edit buffer
creating new objects: Edit buffer
credits: Credits
customization: Customization

D
data frames: Object names
deleting output: Last command
directories: Starting up
dump file directories: Source Directories
dump file names: Source Directories
dump files: Edit buffer
dump files: Source Files

E
echoing commands when evaluating: Evaluating code
edit buffer: Edit buffer
editing commands: Command History
editing functions: Editing objects
editing transcripts: Saving transcripts
ElDoc: ESS ElDoc
emacsclient: Emacsclient
entering commands: Entering commands
errors: Error Checking
ess developer: Namespaced Evaluation
ESS process buffer: Starting up
ESS process directory: Starting up
ESS tracebug: ESS tracebug
ESS-elsewhere: ESS processes on Remote Computers
ess-roxy: Roxygen
evaluating code with echoed commands: Evaluating code
evaluating S expressions: Evaluating code

F
font-lock mode: Highlighting
formatting source code: Indenting

G
graphics: Graphics

H
Handy commands: Handy commands
help files: Help
highlighting: Highlighting
historic backups: Source Files
hot keys: Hot keys

I
icicles: Icicles
IDO completions: Minibuffer completion
indenting: Indenting
installation: Installation
interactive use of S: Introduction
interrupting S commands: Other
introduction: Introduction

K
keyboard short cuts: Hot keys
killing temporary buffers: Hot keys
killing the ESS process: Hot keys

L
lists, completion on: Object names

M
motion in transcript mode: Transcript Mode
multi-line commands, resubmitting: Transcript resubmit
multiple ESS processes: Multiple ESS processes

N
new objects, creating: Edit buffer

O
objects: Hot keys

P
pages in the process buffer: Transcript
paging commands in help buffers: Help
paragraphs in the process buffer: Transcript
parsing errors: Error Checking
process buffer: Starting up
process names: Multiple ESS processes
programming in S: Introduction
project work in S: Source Files

Q
quitting from ESS: Hot keys

R
re-executing commands: Command History
reading long command outputs: Last command
remote Computers: ESS processes on Remote Computers
reverting function definitions: Edit buffer
roxy: Roxygen
Roxygen: Roxygen
running S: Starting up

S
S+elsewhere: ESS processes on Remote Computers
search list: Hot keys
search list: Source Directories
sending input: Entering commands
starting directory: Starting up
starting ESS: Starting up
STERM: Statistical Process running in ESS?

T
tcsh: Object names
temporary buffers: Help
temporary buffers, killing: Hot keys
transcript: Transcript
transcript file: Customizing startup
transcript file names: Saving transcripts
transcript mode motion: Transcript Mode
transcripts of S sessions: Introduction

U
using S interactively: Introduction

W
winjava: winjava
working directory: Starting up
working directory: Source Directories

X
X Windows: X11

Jump to:   .  
A   B   C   D   E   F   G   H   I   K   L   M   N   O   P   Q   R   S   T   U   W   X  

ess-17.11/doc/html/readme.html0000644005071500004540000023502713202324203013077 00000000000000 ESS - Emacs Speaks Statistics

ESS - Emacs Speaks Statistics

 

1 General Information: README

This is the README file for the distribution of ESS version 17.11

ESS is a GNU Emacs and XEmacs mode for interactive statistical programming and data analysis. Languages supported: the S family (S, S-PLUS and R), SAS, BUGS/JAGS and Stata. ESS grew out of the desire for bug fixes and extensions to S-mode and SAS-mode as well as a consistent union of their features in one package.

Installation instructions are provided in sections for both Unix and Windows; see below.

The current development team is led by Martin Maechler since August 2004. Former project leader A.J. (Tony) Rossini (rossini@blindglobe.net) did the initial port to XEmacs and has been the primary coder. Martin Maechler (maechler@stat.math.ethz.ch) and Kurt Hornik (Kurt.Hornik@R-project.org) have assisted with the S family and XLispStat. Stephen Eglen (stephen@gnu.org) has worked mostly on R support. Richard M. Heiberger (rmh@temple.edu) has assisted with S/S-PLUS development for Windows. Richard and Rodney A. Sparapani (rsparapa@mcw.edu) have done much of the work improving SAS batch and interactive support. Rodney has also extended ESS to support BUGS/JAGS and has an interest in improving Stata support.

We are grateful to the previous developers of S-mode (Doug Bates, Ed Kademan, Frank Ritter, David M. Smith), SAS-mode (Tom Cook) and Stata-mode (Thomas Lumley).


1.1 License

The source and documentation of ESS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

ESS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details.


Next: , Previous: , Up: General Information  

1.2 Stability

All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated!


Next: , Previous: , Up: General Information  

1.3 Requirements

ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS.

ESS supports current, and recent, stable versions of GNU Emacs (currently, 24.3 or higher; alpha/beta/pre-release versions are NOT SUPPORTED).

Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ended with ESS 12.04-4.

To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi).


Next: , Previous: , Up: General Information  

1.4 Getting the Latest Version

The latest released version of ESS is always available on the web at: ESS web page or StatLib

1.4.1 Git for ESS development

For development and experimentation on new ESS features, there is now a GitHub branch for ESS, available at https://github.com/emacs-ess/ESS.


1.5 Installation

  1. Download the latest zip or tgz archive from ESS downloads area and unpack it into a directory where you would like ESS to reside. We will denote this directory as /path/to/ESS/ hereafter.

    Alternatively you can use git to fetch the most recent development version to your local machine with:

    git clone https://github.com/emacs-ess/ESS.git /path/to/ESS
    
  2. Optionally, compile elisp files and build the documentation with:
    cd /path/to/ESS/
    make
    

    Without this step, info, pdf and html documentation and reference card will not be available.

  3. Optionally, install into your local machine with make install. You might need administrative privileges:
    make install
    

    The files are installed into /usr/share/emacs directory. For this step to run correctly on macOS, you will need to adjust the PREFIX path in Makeconf. The necessary code and instructions are commented in that file.

  4. If you have performed the make install step from above, just add
    (require 'ess-site)
    

    to your ~/.emacs file. Otherwise, you should add /path/to/ESS/lisp/ to your emacs load path and then load ESS with the following lines in your ~/.emacs:

    (add-to-list 'load-path "/path/to/ESS/lisp/")
    (load "ess-site")
    
  5. Restart your Emacs and check that ESS was loaded from a correct location with M-x ess-version.

Note for Windows and macOS users: The most straightforward way to install Emacs on your machine is by downloading the Emacs binary by Vincent Goulet; either Emacs Modified for macOS or from Emacs Modified for Windows.

Note for XEmacs users: Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.


1.6 Starting an ESS process

To start an S session on Unix or on Windows when you use the Cygwin bash shell, simply type M-x S RET.

To start an S session on Windows when you use the MSDOS prompt shell, simply type M-x S+6-msdos RET.


Next: , Previous: , Up: General Information  

1.7 Current Features

  • Languages Supported:
    • S family (R and S+ AKA S-PLUS)
    • SAS
    • OpenBUGS/JAGS
    • Stata
    • Julia
  • Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia)
    • Syntactic indentation and highlighting of source code
    • Partial evaluation of code
    • Loading and error-checking of code
    • Source code revision maintenance
    • Batch execution (SAS, OpenBUGS/JAGS)
    • Use of imenu to provide links to appropriate functions
  • Interacting with the process (S family, SAS, Stata, Julia)
    • Command-line editing
    • Searchable Command history
    • Command-line completion of S family object names and file names
    • Quick access to object lists and search lists
    • Transcript recording
    • Interface to the help system
  • Transcript manipulation (S family, Stata)
    • Recording and saving transcript files
    • Manipulating and editing saved transcripts
    • Re-evaluating commands from transcript files
  • Interaction with Help Pages and other Documentation (R)
    • Fast Navigation
    • Sending Examples to running ESS process.
    • Fast Transfer to Further Help Pages
  • Help File Editing (R)
    • Syntactic indentation and highlighting of source code.
    • Sending Examples to running ESS process.
    • Previewing

1.8 New Features

Changes and New Features in 17.11:

  • The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put (require 'ess-r-mode) or (require 'ess-stata-mode) in your init file. This is for experienced Emacs users as this requires setting up autoloads for .R files manually. We will keep maintaining ess-site for easy loading of all ESS features.
  • Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor.
  • ESS[R]: New command ess-r-package-use-dir. It sets the working directory of the current process to the current package directory.
  • ESS[R] Lookup for references in inferior buffers has been improved. New variable ess-r-package-source-roots contains package sub-directories which are searched recursively during the file lookup point. Directories in ess-tracebug-search-path are now also searched recursively.
  • ESS[R] Namespaced evaluation is now automatically enabled only in the R/ directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file.

Changes and New Features in 16.10:

  • ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls.
  • ESS[R]: Backquoted names and %op% operators are recognised as sexp. This is useful for code navigation, e.g. with C-M-f and C-M-b.
  • ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode’s code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set ess-roxy-fold-examples to non-nil to automatically fold the examples field when you open a buffer.
  • ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set ess-roxy-fontify-examples to non-nil to try it out.
  • ESS[R]: New package development command ess-r-devtools-ask bound to C-c C-w C-a. It asks with completion for any devtools command that takes pkg as argument.
  • ESS[R]: New command C-c C-e C-r to reload the inferior process. Currently only implemented for R. The R method runs inferior-ess-r-reload-hook on reloading.
  • ESS[R]: ess-r-package-mode is now activated in non-file buffers as well.

Bug fixes in 16.10:

  • ESS[R]: Fix broken (un)flagging for debugging inside packages
  • ESS[R]: Fixes (and improvements) in Package development
  • ESS[R]: Completion no longer produces ...= inside list( ).
  • ESS[R]: Better debugging and tracing in packages.
  • ESS[R]: Better detection of symbols at point.
  • ESS[R]: No more spurious warnings on deletion of temporary files.
  • ESS[julia]: help and completion work (better)
  • ESS[julia]: available via ess-remote

Changes and New Features in 16.04:

  • ESS[R]: developer functionality has been refactored. The new user interface consists of a single command ess-r-set-evaluation-env bound by default to C-c C-t C-s. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set ess-r-package-auto-set-evaluation-env to nil to disable this.
  • ESS[R]: New ess-r-package-mode This development mode provides features to make package development easier. Currently, most of the commands are based on the devtools packages and are accessible with C-c C-w prefix. See the documentation of ess-r-package-mode function for all available commands. With C-u prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with [pkg:NAME] in the mode-line.
  • ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change options('html_type').
  • ESS[R]: New specialized breakpoints for debugging magrittr pipes
  • ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process.

Bug fixes in 16.04:

  • ESS[R]: Roxygen blocks with backtics are now correctly filled
  • ESS[R]: Don’t skip breakpoints in magrittr’s debug_pipe
  • ESS[R]: Error highlighting now understands ‘testthat‘ type errors
  • ESS[Julia]: Added getwd and setwd generic commands

Changes and New Features in 15.09:

  • ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with ess-offset- give the actual offsets, those starting with ess-indent- are control (commonly Boolean) variables, and those starting with ess-align- are vertical alignment overrides which inhibit default offsets in specific situations. See ess-style-alist for detailed description of the new indentation system and provided default indentation styles.
  • ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring ess-brace-imaginary-offset, ess-expression-offset and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by ess-offset-continuations. It can be set to either cascade or straight (the default). ess-arg-function-offset has been replaced by ess-indent-from-lhs and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to prev-call and open-delim in order to produce a consistent indentation.
  • ESS: A test framework has been set up.
  • ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with ess-offset-arguments set to prev-line is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation.
  • ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the examples field without squashing the surrounding code in the comments.
  • ESS[R]: ESS can now format your code! This is controlled through the settings ess-fill-calls and ess-fill-continuations. When activated, (fill-paragraph) formats your calls and your formulas/continuations while making sure they don’t go past fill-column. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set ess-blink-filling to nil to prevent this.
  • ESS[R]: Fix occasional missing error location fontification in inferior buffers.
  • ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace.
  • ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on julia-mode.el from the Julia project. If you install ESS from the official tarball/zip file, julia-mode.el is already included. Otherwise, if you install ESS by running make, then the latest version of julia-mode.el is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running make, then ensure that you have the julia-mode.el, which you can get easily from MELPA for example.
  • iESS: For naming inferior processes, ESS can use projectile’s project root and it does so when ess-gen-proc-buffer-name-function is set to ess-gen-proc-buffer-name:projectile-or-simple as by default, or to another value beginning with ess-gen-proc-buffer-name:projectile-*.

Changes and New Features in 15.03-1:

  • ESS[R]: An indentation bug has been fixed (github issue 163)
  • ESS[R]: On windows, if ‘ess-prefer-higher-bit’ is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R.

Changes and New Features in 15.03:

  • ESS[R]: Full native support for ‘company-mode‘.
  • ESS[R]: More efficient caching algorithm for R completion.
  • ESS: New offset variable ‘ess-close-paren-offset‘ to control the indentation of the closing parentheses.
  • ESS[R]: Ask for CRAN mirror only once per emacs session.
  • ESS[R]: Detect library and require calls for better completion caching.
  • Buffer display is now customizable (ess-show-buffer-action).
  • Use y-or-n-p instead of yes-or-no-p throughout.
  • More support for ODS in ess-sas-graph-view.
  • Makefiles are now both UNIX and GNU friendly.
  • ESS[R]: Simplify directory lookup in ess-developer (#137).
  • Make closed paren indentation consistent

Bug Fixes in 15.03:

  • Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R).
  • Fix git version lookup
  • Don’t check directory modtime in R dialect.
  • Declare all ess macros for edebug.
  • Add ess-smart-comma to eldoc message functions.
  • Inform users when retrieving RDA aliases.
  • Line ending in ’~’ is also a continuation line.
  • Filing roxy paragraphs works as expected now.
  • In ess-developer-add-package, remove incorrect ‘wait‘ argument from ess-get-words-from-vector call.
  • Fix #96, #117, #120, #125, #134, #137.
  • Fix ess-quit-r. Call base::q() even if it is masked.
  • Fix ‘ess-show-buffer‘ to always display the buffer in another window.
  • Makefile: Fix cd bug for directories with spaces in them
  • ess-kill-buffer-and-go modified to not restart R

Changes / Selected Bug Fixes in 14.09:

  • ESS[Julia]: Executable is changed to julia.
  • ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported.
  • ESS[R]: Running R with gdb debugger now works as expected
  • iESS: Inferior ESS buffers are now derived from comint-mode
  • ESS[R]: ess-execute-screen-options uses correct screen width in terminal sessions
  • ESS: ess-build-tags-for-directory works when no TAGS file name was provided
  • ESS: ess-offset-statement-continued is now respected everywhere except inside of the if test condition.
  • ESS: New variable ess-offset-statement-first-continued for indentation of the first line in multiline statements.
  • ESSR: Starting , in multiline statements indentation is now ignored to achieve a more pleasant alignment.
  • ESSR: Improved behavior of RET in roxygen blocks.
  • ESS[R]: command cleaning with C-u C-u C-y was broken with lines containing " + "
  • ESS[R]: fixed "empty watch window bug"
  • ESS[R]: don’t ask for help location on ac-quick-help (request of github #81)
  • ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands
  • ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1)
  • ESS[Julia]: recognize function names ending with !
  • ESS[Julia]: fix indentation of "for" comprehension syntax within brackets.

Changes / Selected Bug Fixes in 13.09-1:

  • ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in ~/.config/ESSR/ directory on the remote machine
  • TRAMP: PAGER environment variable is now correctly set to inferior-ess-pager
  • retrieval of help topics on remote machines is fixed
  • org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature)
  • ess-execute is now bound to C-c C-e C-e in ess-extra-map.
  • completion works again in ess-execute
  • ESS[R]: head and tail methods were replaced by htsummary in ess-R-describe-object-at-point-commands
  • ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation
  • ESS[transcript]: ’Clean Region’ now works with multiline statements; ess-transcript-clean-region etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by ’+’
  • ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2. Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately.
  • ESS[SAS]: ess-sas-edit-keys-toggle default returns to nil
  • ESS[R]: support for prettify-symbols-mode: contribution from Rudiger Sonderfeld https://github.com/emacs-ess/ESS/pull/65
  • ESS[SWV]: knitr now evaluates in the current frame
  • ESS[developer]: ess-developer doesn’t kill open DESCRIPTION files anymore
  • ESS[roxygen]: ess-roxy-preview-HTML is now on C-c C-o C-w and ess-roxy-preview-text is now on C-c C-o C-t
  • ESS: installation with make install was simplified and should work out of the box on most *nix systems
  • ESS installation instructions simplified
  • fixed font-lock bug introduced in 13.09 that was causing very slow process output

Changes/New Features in 13.09:

  • font-lock in process buffers doesn’t "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input.
  • ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types.
  • ESS[julia]: a much better eldoc showing arguments of methods and data type constructors
  • ESS-developer:
    • - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package ess-developer-packages. The old behavior (activation on per-process basis) is still available on M-x ess-developer in a process buffer.
    • - integration with devtools package. New command ess-developer-load-package calls load_all on the package containing current file. ess-developer-add-package now offers IDO menu completions with available loading methods, currently library, and load_all. Loading command can be customized with ess-developer-load-on-add-commands.
  • TAB now indents region if region is active (a contribution of Matthew Fidler in pull #41)
  • M-x ess-version now reports full loading path and recognizes git and ELPA versions.
  • warning and error keyword are now highlighted with font-lock-warning-face as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification).
  • eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process.
  • org-babel: evaluation is now org-friendly
  • help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by ess-help-reuse-window custom variable.
  • help: ?foo pops IDO menu on multiple help files (so far it worked only for C-c C-v)
  • remote evaluation is considerably faster now on slow connections
  • ESS[R] tracebug R source references regular expressions are (mostly) language agnostic.
  • ess-function-call-face inherits from font-lock-function-name-face rather than font-lock-builtin-face.
  • ess-inject-source now accepts function-and-buffer option.
  • Documentation: The “New Features” section (and NEWS) now represent recent changes: within the last year or so. All changes can be found in the new news.html (or NEWS and ONEWS).
  • ESS[R] ess-rep-regexp should no longer inf.loop (rarely!), and hence M-x ess-fix-miscellaneous should neither.

Changes/New Features in 13.05:

  • ESS[gretl]: Support for gretl (both editing and sub-process interaction). A contribution of Ahmadou Dicko.
  • ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when ess-tracebug is active).
  • ESS: C-c ` is now bound to ess-show-traceback and C-c ~ is bound to ess-show-call-stack.
  • ESS[R]: ESS stores function in ’ESSR’ environment to avoid kludging users’ global environment and accidental deletion.
  • ESS[R]: new variable ess-swv-processing-command to control weaving and tangling.
  • ESS[R]: ess-default-style has been changed (from DEFAULT) to RRR. Use something like (setq ess-default-style 'DEFAULT) or (setq ess-indent-level 2) in your ~/.emacs equivalent before loading ESS, if you do not like this new “incompatible” default style.
  • ESS[julia]: ESS stores its functions in ’ESS’ module.
  • ESS[julia]: Eldoc is now supported in julia modes
  • ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes
  • ESS[R]: ess-use-tracebug’s default has been changed to t. Set it to nil if you want to keep the previous behavior.
  • ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with ess-debug-minor-mode and ess-debug-minor-mode-map.
  • ESS[tracebug]: ess-tracebug-map is an alias to ess-dev-map C-c C-t.
  • ESS[tracebug]: ess-bp-toggle-state (C-c C-t o) can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan).
  • ESS[tracebug]: ess-debug-flag-for-debugging and ess-debug-unflag-for-debugging work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in ess-developer-packages (C-c C-t C-a).
  • ESS[R]: Eldoc (activated by ess-use-eldoc) has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user.

    Note that you can turn off ElDoc, by placing (setq ess-use-eldoc nil) in your ~/.emacs file, prior to loading ESS,

  • ESS[SAS]: long over-looked SAS-mode-hook appears!
  • ESS[SAS]: ess-sas-edit-keys-toggle now defaults to t since sas-indent-line is still broken, i.e. TAB is now bound to ess-sas-tab-to-tab-stop by default

Changes/Bug Fixes in 12.09-2:

  • ESS: new ess-switch-to-end-of-proc-buffer variable that controls whether C-c C-z switches to the end of process buffer. The default is t. You can use prefix argument to C-c C-z to toggle this variable.
  • ESS: fix in ess-eval-linewise that was causing emacs to hang during R debugging with ess-eval-visibly equal to t.
  • ESS: fix in ess-eval-linewise that was causing emacs to recenter the prompt in visible window
  • ESS[tracebug]: A better handling of “Selection” prompts and debug related singlekey commands.
  • ESS: fix a bug in ess-switch-process that was causing *new* selection to fail.
  • ESS[R]: Solve missing ess-local-process-name bug in R-dired.
  • ESS[SWV]: ess-swv-PDF doesn’t ask for a command to run if there is only one command in ess-swv-pdflatex-commands.
  • ESS[SWV]: ess-swv-weave gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr).
  • ESS: ess-eval-*-and-step functions go to next empty line at eob, instead of staying at the last line.

Changes/New Features in 12.09-1:

  • ESS Breaking Changes in Keys:
    • - New keymaps: ess-doc-map bound to C-c C-d; ess-extra-map bound to C-c C-e; ess-dump-object-into-edit-buffer was moved on C-c C-e C-d
    • - roxygen map was moved on C-c C-o and ess-roxy-update-entry now resides on C-c C-o C-o
    • - ess-handy-commands is not bound anymore
    • - ess-dev-map (including ess-tracebug and ess-developer) moved on C-c C-t
    • - C-c C-y is deprecated in favor of C-c C-z C-z
  • ESS[R] new command ess-describe-object-at-point bound to C-c C-d C-e (repeat C-e or e to cycle). It was inspired by Erik Iverson’s ess-R-object-tooltip. Customize ess-describe-at-point-method to use tooltip instead of an electric buffer.
  • ESS: New command ess-build-tags-for-directory bound to C-c C-e C-t for building dialect specific tag tables. After building tags use M-. to navigate to function and objects definitions. By default C-c C-e C-t builds tags based on imenu regular expressions and also include other common languages .c, .o, .cpp etc. But it relies on external find and etags commands. If ess-build-tags-command is defined (for R), the inferior process is asked to build tags instead.
  • ESS: ess-switch-process offers *new* alternative to start a new process instead of switching to one of the currently running processes.
  • ESS: Switching between processes (C-c C-s) uses buffer names instead of the internal process names. Use M-x rename-buffer command to conveniently rename your process buffers.
  • ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where proc stands for the internal process name and dir stands for the directory where the process was started in. The default is *proc*. For customization see ess-gen-proc-buffer-name-function.
  • ESS: ess-eval-visibly-p is deprecated in favor of ess-eval-visibly.
  • ESS: New evaluation pattern nowait. In addition to old nil and t values, ess-eval-visibly accepts nowait for a visible evaluation with no waiting for the process. See ess-eval-visibly for details on evaluation patterns.
  • ESS: New “Process” menu entry with process related commands and configuration
  • iESS: Process buffer is now automatically shown on errors
  • ESS: New ess-switch-to-inferior-or-script-buffer command bound to C-c C-z in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command.
  • ESSR-help: On multiple help pages with the same name, C-c C-v now asks for user resolution directly in emacs.
  • ESS[R] ess-roxy: new variable ess-roxy-re for fontification of cases where the number of leading # differs from ess-roxy-str.
  • ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods’ arguments after trailing ||.
  • ESS[R]: New ess-display-demos command bound to C-c C-d o and C-c C-d C-o
  • ESS: New ess-help-web-search command bound to C-c C-d w and C-c C-d C-w to facilitate interactive search of web resources. Implemented for R, Stata and Julia. See also ess-help-web-search-command.
  • ESS: ess-pdf-viewer-pref accepts now command line arguments
  • ESS[Rnw]: Add knitr support. Customize ess-swv-processor for the default processor.
  • ESS[Rnw]: More thorough renaming of remaining noweb-* to ess-noweb-*.
  • ESS[Rnw] new commands ess-eval-chunk-and-step and ess-eval-chunk bound to M-n C-c and M-n C-M-x to mirror standard ess commands in C-c map.
  • ESS[R] Auto-completion: new variable ess-ac-R-argument-suffix to customize the insertion of trailing "=". Defaults to “ = “.
  • ESS[Julia]: Added index, apropos and web-search to julia.
  • ESS help: More evaluation commands were added to ess-help mode (C-c C-c, C-M-x etc)

Bug Fixes in 12.09-1:

  • iESShelp: Multiple help pages with the same name are properly handled on C-c C-v
  • iESSremote: Evaluation with ESS remote no longer freezes emacs.
  • iESS: comint-previous-prompt C-c C-p no longer stops on secondary prompt “+”.
  • iESS[R], iESS(Sqpe) [S] on Windows: The options("editor") is now initialized to emacsclient instead of the previous gnuclient. The user may need to add the line (server-start) to the emacs initialization file. emacsclient has been included with emacs since GNU Emacs 22.1.
  • ESS[Rnw] Fixed “connection to R” bug (in 12.09 only).
  • ESS[Rnw] Explicit ess-swv-stangle and ess-swv-sweave functions.
  • ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched “\”’
  • ESS[R] is more careful with the R code injection. It now happens only once at the start of the session.
  • ESS[R]: Fixed auto-scrolling the comint buffer on evaluation.
  • ESS[Julia]: Solve several indentation and word navigation problems.
  • ESS[Julia]: Help system works again.

Changes/New Features in 12.09:

  • Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.
  • ESS[R]: On Windows, there is now a new customizable variable (currently called ess-directory-containing-R) to tell ESS where to look for the Rterm.exe executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find Rterm.exe executables when they are installed somewhere else.
  • ESS[julia]: new mode for editing julia code (*.jl). Start with M-x julia.

    Full interaction interface, imenu and basic error referencing are available.

  • ESS[R] noweb: noweb-mode and noweb-font-lock-mode have been renamed to ess-noweb-mode and ess-noweb-font-lock-mode to avoid conflicts with the “real” noweb-mode.
  • ESS[R] noweb: The long standing font-lock bug has been solved in ess-noweb interface.
  • ESS: Basic evaluation keys are now bound to ess-eval-region-*- functions:
    • - C-M-x is bound to ess-eval-region-or-function-or-paragraph
    • - C-c C-c is bound to ess-eval-region-or-function-or-paragraph-and-step
    • - C-RET is bound to ess-eval-region-or-line-and-step

    Each of these functions first evaluates the region whenever the region is active.

  • ESS: C-M-a/C-M-e now step to beginning/end of paragraph if no function has been detected.
  • ESS: ess-eval-*-and-step family of functions are now smarter, and don’t step to end of buffer or end of chunk code (@) when at the end of the code.
  • ESS: ess-handy-commands function is bound to C-c h
  • ESS: ESS is now blinking the evaluated region. Set ess-blink-region to nil to deactivate; ess-blink-delay gives the duration of the blink. Evaluated region is “blinked” in highlight face.
  • ESS[R-help] New key a for “apropos()” in help buffers. Also available through C-c h.
  • ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers.
  • ESS[R]: New customization interface for font-lock.

    ESS font-lock operates with predefined keywords. Default keywords are listed in ess-R-font-lock-keywords and inferior-R-font-lock-keywords, which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through ESS/Font-lock submenu.

    Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators.

  • ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set ess-use-auto-complete to nil to deactivate.
  • ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default ac-auto-start characters.
  • ESS no longer redefines default ac-sources, but only appends ac-source-filename to it.
  • ESS: ac-source-R now concatenates “ = “ to function arguments.
  • ESS: Menus for ESS and iESS have been reorganized and enriched with Tracebug and Developer submenus.
  • ESS[R]: ess-developer and ess-tracebug commands are available by default in ess-dev-map which is bound to C-c d in ESS and iESS maps.
  • ESS[R]: eldoc truncates long lines whenever eldoc-echo-area-use-multiline-p is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also ess-eldoc-abbreviation-style.
  • ESS[R]: completion code pre-caches arguments of heavy generics such as plot and print to eliminated the undesirable delay on first request.
  • iESS: Prompts in inferior buffers are now highlighted uniformly with comint-highlight-prompt face.
  • ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like Sys.sleep(5) no longer stall emacs.
  • ESS: [R, S, Stata, Julia] have specialized ess-X-post-run-hooks, which are run at the end of subprocess initialization.
  • ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on C-c C-c and other interactive commands.
  • ESS no longer auto-connects to a subprocess with a different dialect than the current buffer’s one.
  • ESS: ess-arg-function-offset-new-line is now a list for all the ESS indentation styles, which results in the following indentation after an open “(”:
      a <- some.function(other.function(
         arg1,
         arg2)
    
  • ESS[SAS]: Improved MS RTF support for GNU Emacs; try ess-sas-rtf-portrait and ess-sas-rtf-landscape.

Changes/Bug Fixes in 12.04-3:

  • ESS: basic support for package.el compatibility
  • ESS[R]: correct indentation of & and | continuation lines
  • M-x ess-version shows the svn revision even after make install
  • ESS[SAS]: improved XEmacs support
  • iESS[R]: better finding of previous prompt
  • ESS[Stata]: adjusted prompt for mata mode
  • ESS[R]: resolved name clashes with cl.el
  • ESS[R]: removed dependence on obsolete package assoc
  • New make target lisp, to build the lisp-only part, i.e., not building the docs.

Changes/New Features in 12.04-1:

  • iESS[Stata]: New interactive help invocation.
  • iESS[Stata]: New custom variable inferior-STA-start-file.
  • iESS[Stata]: inferior-STA-program-name is now “stata” and can be customized.
  • ESS[Stata] New sections in stata help files Syntax(s-S), Remarks(r), Title(t).

Bug Fixes in 12.04-1:

  • ESS[R]: Better ess-tracebug error handling.
  • ESS[R]: Corrected ess-eldoc help string filtering and improved argument caching.
  • ESS[R]: Indentation of non-block if/else/for/while lines fixed.
  • M-x ess-version should work better.
  • ESS: Filename completion now again works inside strings.
  • iESS[Stata]: Fixed prompt detection issue.
  • ESS[Rd]: R is autostarted also from here, when needed.

Changes/New Features in 12.04:

  • ESS: Reverting new behavior of 12.03, TAB in ess-mode no longer completes by default. If you want smart TAB completion in R and S scripts, similarly to iESS behavior, set the variable ess-tab-complete-in-script to t. Also see ess-first-tab-never-complete for how to customize where first TAB is allowed to complete.
  • ESS: completion is consistently bound to M-TAB (aka M-C-i) in both Emacs23 and Emacs24.
  • ESS: The variable ess-arg-function-offset-new-line introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to ’(2) results in:
      a <- some.function(
        arg1,
        arg2)
    

Changes/New Features in 12.03:

  • ESS indentation: new offset variable ess-arg-function-offset-new-line controlling for the indentation of lines immediately following open ’(’. This is useful to shift backwards function arguments after a long function call expression:
      a <- some.function(
             arg1,
             arg2)
    

    instead of the old

      a <- some.function(
                         arg1,
                         arg2)
    

    If ’(’ is not followed by new line the behavior is unchanged:

      a <- some.function(arg1,
                         arg2)
    

    This variable should be set as part of indentation style lists, or in ess-mode hook.

  • ESS[R]: C-c . sets (indentation) style.
  • ESS: In ESS buffers yank(C-y) command accepts double argument C-u C-u to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files.
  • Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features (“Completion”, “Developing with ESS”, “ESS tracebug”, “ESS developer”, “ESS ElDoc”, “IDO Completion” and “Evaluating Code”)
  • RefCard: Reference card was updated to include new features.
  • Eldoc: Eldoc was rewritten and is activated by default. See ess-use-eldoc, ess-eldoc-show-on-symbol, ess-eldoc-abbreviation-style variables for how to change the default behavior. Note: skeleton-pair-insert-maybe prohibits eldoc display, on ( insertion.
  • ESS[R]: Eldoc shows arguments of a generic function whenever found.
  • ESS: TAB in ess-mode now indents and completes, if there is nothing to indent. Set ess-first-tab-never-completes-p to t to make TAB never complete on first invocation. Completion mechanism is similar to the completion in the inferior-ess-mode – a filename expansion is tried, if not found ESS completes the symbol by querying the process.
  • ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by completion-at-point. Also in accordance with emacs conventions, ESS doesn’t bind M-TAB for emacs 24 or higher. M-TAB calls the default complete-symbol.
  • ESS[R]: Out of the box integration with Auto Completion mode http://cx4a.org/software/auto-complete . Three AC sources ac-source-R-args, ac-source-R-objects and ac-source-R are provided. The last one combines the previous two and makes them play nicely together. Set ess-use-auto-complete to t to start using it. Refer to documentation string of ac-use-auto-complete for further information.
  • ESS[R]: New unified and fast argument completion system, comprised of ess-funname.start, ess-function-arguments, ess-get-object-at-point. Eldoc and auto-completion integration are using this system.
  • ESS: ess-switch-to-end-of-ESS(C-c C-z), and ess-switch-to-ESS(C-c C-y): Automatically start the process whenever needed.
  • ESS[R]: roxy knows about previewing text version of the documentation. Bound to C-c C-e t.
  • ESS[R]: Solved the “nil filename” bug in roxygen support.
  • ESS[R]: ess-tracebug is now part of ESS:

    New Features:

    • - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don’t have to source your file, but just evaluate your code in normal fashion. Variable ess-tracebug-inject-source-p controls this behavior - if t, always inject source reference, if 'function, inject only for functions (this is the default), if nil, never inject.

      During the source injection the value of ess-eval-visibly is ignored.

    • - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer (C-c ') and jumps through this buffers if still alive, or in original org buffer otherwise.
    • - New keys in watch mode: ? and d
    • - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook
  • ESS[R]: New package ess-developer to evaluate R code directly in the package environment and namespace. It can be toggled on and off with C-c d t. When ess-developer is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with C-d a, and remove with C-d r. Source the current file with C-d s.Evaluation function which depend on `ess-eval-region' ask for the package to source the code into, ess-eval-function and alternatives search for the function name in the development packages’ environment and namespace and insert the definition accordingly. See the documentation section “Developing with ESS/ESS developer” for more details.
  • ESS[R] help system:

    New Features:

    • - q quits window instead of calling ess-switch-to-end-of-ESS. This is consistent with emacs behavior help and other special buffers (breaking change).
    • - k kills window without asking for the name (pointed by Sam Steingold)
    • - Help map inherits from special-mode-map as sugested by Sam Steingold.
    • - Package index: new function ess-display-index bound to i in help mode map.
    • - Package vignettes: new function ess-display-vignettes bound to v in help mode map.
    • - Display help in HTML browser: new function ess-display-help-in-browser bound to w in help mode map. It depends on R’s browser option.
    • - New custom variable ess-help-pop-to-buffer: if non-nil ESS help buffers are given focus on display. The default is t (breaking change).
    • - New menu entries for the above functions.
    • - Bogus help buffers are no longer generated by default, i.e. buffers of the form “No documentation for ’foo’ in specified packages and libraries: you could try ’??foo’ ”. ess-help-kill-bogus-buffers now defaults to t. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning.
  • ESS now uses IDO completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set ess-use-ido to nil if you don’t want the IDO completion. See the documentation string of ess-use-ido for more information about IDO and ESS configuration.
  • ESS[S]: “,“ is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from `ess-handy-commands' list. If ess-R-smart-operators is t `ess-smart-comma also inserts “ “ after comma.
  • ESS[S], notably R: Variable `ess-handy-commands' stores an alist of useful commands which are called by ess-smart-comma in the inferior buffer.

    Currently containing:

    change-directory

    ess-change-directory

    help-index

    ess-display-index

    help-object

    ess-display-help-on-object

    vignettes

    ess-display-vignettes

    objects[ls]

    ess-execute-objects

    search

    ess-execute-search

    set-width

    ess-execute-screen-options

    install.packages

    ess-install.packages

    library

    ess-library

    setRepos

    ess-setRepositories

    sos

    ess-sos

    Handy commands: ess-library, ess-install.packages, etc - ask for item with completion and execute the correspond command. ess-sos is a interface to findFn function in package sos. If package sos is not found, ask user for interactive install.

  • ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of ess-tracebug and developer status of ess-developer in all associated buffers.
  • ESS: New ess-completing-read mechanism: ESS uses ido completions whenever possible. Variable ess-use-ido controls whether to use ido completion or not. Active by default.
  • ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future.
  • ESS[S]: New custom variable inferior-ess-S-prompt to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation (comint-previous-prompt and comint-next-prompt) the inferior buffers.
  • ESS[R]: Internal R completion retrieval (ess-R-complete-object-name) was rewritten and is faster now.
  • ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged.
  • ESS: new functions to manipulate process plists: ess-process-get and ess-process-set.
  • ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in > . This could be overwritten by setting inferor-ess-primary-prompt.
  • ESS[S], notably R: Saved command history: ess-history-file now accepts t (default), nil, or a file name. By setting it to nil no command line history is saved anymore. ess-history-directory now allows to have the history all saved in one “central” file.
  • ESS[R]: more Roxygen improvements.
  • ESS[R]: C-c . to set (indentation) style.
  • ESS[R]: Functions with non-standard names (for example ’aaa-bbb:cc’) are properly handled by font-lock and evaluation routines.
  • ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in ess-get-words-from-vector and ess-command.

1.9 Reporting Bugs

Please send bug reports, suggestions etc. to ESS-bugs@r-project.org

The easiest way to do this is within Emacs by typing

M-x ess-submit-bug-report

This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug.

If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer.

Note that comments, suggestions, words of praise and large cash donations are also more than welcome.


Next: , Previous: , Up: General Information  

1.10 Mailing Lists

There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to ess-help-request@r-project.org; contributions to the list may be mailed to ess-help@r-project.org. Rest assured, this is a fairly low-volume mailing list.

The purposes of the mailing list include

  • helping users of ESS to get along with it.
  • discussing aspects of using ESS on Emacs and XEmacs.
  • suggestions for improvements.
  • announcements of new releases of ESS.
  • posting small patches to ESS.

1.11 Authors


ess-17.11/doc/html/news.html0000644005071500004540000032346013202324204012616 00000000000000 ESS – Emacs Speaks Statistics

ESS – Emacs Speaks Statistics

Changes and New Features in 17.11:

  • The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put (require 'ess-r-mode) or (require 'ess-stata-mode) in your init file. This is for experienced Emacs users as this requires setting up autoloads for .R files manually. We will keep maintaining ess-site for easy loading of all ESS features.
  • Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor.
  • ESS[R]: New command ess-r-package-use-dir. It sets the working directory of the current process to the current package directory.
  • ESS[R] Lookup for references in inferior buffers has been improved. New variable ess-r-package-source-roots contains package sub-directories which are searched recursively during the file lookup point. Directories in ess-tracebug-search-path are now also searched recursively.
  • ESS[R] Namespaced evaluation is now automatically enabled only in the R/ directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file.

Changes and New Features in 16.10:

  • ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls.
  • ESS[R]: Backquoted names and %op% operators are recognised as sexp. This is useful for code navigation, e.g. with C-M-f and C-M-b.
  • ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode’s code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set ess-roxy-fold-examples to non-nil to automatically fold the examples field when you open a buffer.
  • ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set ess-roxy-fontify-examples to non-nil to try it out.
  • ESS[R]: New package development command ess-r-devtools-ask bound to C-c C-w C-a. It asks with completion for any devtools command that takes pkg as argument.
  • ESS[R]: New command C-c C-e C-r to reload the inferior process. Currently only implemented for R. The R method runs inferior-ess-r-reload-hook on reloading.
  • ESS[R]: ess-r-package-mode is now activated in non-file buffers as well.

Bug fixes in 16.10:

  • ESS[R]: Fix broken (un)flagging for debugging inside packages
  • ESS[R]: Fixes (and improvements) in Package development
  • ESS[R]: Completion no longer produces ...= inside list( ).
  • ESS[R]: Better debugging and tracing in packages.
  • ESS[R]: Better detection of symbols at point.
  • ESS[R]: No more spurious warnings on deletion of temporary files.
  • ESS[julia]: help and completion work (better)
  • ESS[julia]: available via ess-remote

Changes and New Features in 16.04:

  • ESS[R]: developer functionality has been refactored. The new user interface consists of a single command ess-r-set-evaluation-env bound by default to C-c C-t C-s. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set ess-r-package-auto-set-evaluation-env to nil to disable this.
  • ESS[R]: New ess-r-package-mode This development mode provides features to make package development easier. Currently, most of the commands are based on the devtools packages and are accessible with C-c C-w prefix. See the documentation of ess-r-package-mode function for all available commands. With C-u prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with [pkg:NAME] in the mode-line.
  • ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change options('html_type').
  • ESS[R]: New specialized breakpoints for debugging magrittr pipes
  • ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process.

Bug fixes in 16.04:

  • ESS[R]: Roxygen blocks with backtics are now correctly filled
  • ESS[R]: Don’t skip breakpoints in magrittr’s debug_pipe
  • ESS[R]: Error highlighting now understands ‘testthat‘ type errors
  • ESS[Julia]: Added getwd and setwd generic commands

Changes and New Features in 15.09:

  • ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with ess-offset- give the actual offsets, those starting with ess-indent- are control (commonly Boolean) variables, and those starting with ess-align- are vertical alignment overrides which inhibit default offsets in specific situations. See ess-style-alist for detailed description of the new indentation system and provided default indentation styles.
  • ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring ess-brace-imaginary-offset, ess-expression-offset and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by ess-offset-continuations. It can be set to either cascade or straight (the default). ess-arg-function-offset has been replaced by ess-indent-from-lhs and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to prev-call and open-delim in order to produce a consistent indentation.
  • ESS: A test framework has been set up.
  • ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with ess-offset-arguments set to prev-line is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation.
  • ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the examples field without squashing the surrounding code in the comments.
  • ESS[R]: ESS can now format your code! This is controlled through the settings ess-fill-calls and ess-fill-continuations. When activated, (fill-paragraph) formats your calls and your formulas/continuations while making sure they don’t go past fill-column. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set ess-blink-filling to nil to prevent this.
  • ESS[R]: Fix occasional missing error location fontification in inferior buffers.
  • ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace.
  • ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on julia-mode.el from the Julia project. If you install ESS from the official tarball/zip file, julia-mode.el is already included. Otherwise, if you install ESS by running make, then the latest version of julia-mode.el is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running make, then ensure that you have the julia-mode.el, which you can get easily from MELPA for example.
  • iESS: For naming inferior processes, ESS can use projectile’s project root and it does so when ess-gen-proc-buffer-name-function is set to ess-gen-proc-buffer-name:projectile-or-simple as by default, or to another value beginning with ess-gen-proc-buffer-name:projectile-*.

Changes and New Features in 15.03-1:

  • ESS[R]: An indentation bug has been fixed (github issue 163)
  • ESS[R]: On windows, if ‘ess-prefer-higher-bit’ is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R.

Changes and New Features in 15.03:

  • ESS[R]: Full native support for ‘company-mode‘.
  • ESS[R]: More efficient caching algorithm for R completion.
  • ESS: New offset variable ‘ess-close-paren-offset‘ to control the indentation of the closing parentheses.
  • ESS[R]: Ask for CRAN mirror only once per emacs session.
  • ESS[R]: Detect library and require calls for better completion caching.
  • Buffer display is now customizable (ess-show-buffer-action).
  • Use y-or-n-p instead of yes-or-no-p throughout.
  • More support for ODS in ess-sas-graph-view.
  • Makefiles are now both UNIX and GNU friendly.
  • ESS[R]: Simplify directory lookup in ess-developer (#137).
  • Make closed paren indentation consistent

Bug Fixes in 15.03:

  • Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R).
  • Fix git version lookup
  • Don’t check directory modtime in R dialect.
  • Declare all ess macros for edebug.
  • Add ess-smart-comma to eldoc message functions.
  • Inform users when retrieving RDA aliases.
  • Line ending in ’~’ is also a continuation line.
  • Filing roxy paragraphs works as expected now.
  • In ess-developer-add-package, remove incorrect ‘wait‘ argument from ess-get-words-from-vector call.
  • Fix #96, #117, #120, #125, #134, #137.
  • Fix ess-quit-r. Call base::q() even if it is masked.
  • Fix ‘ess-show-buffer‘ to always display the buffer in another window.
  • Makefile: Fix cd bug for directories with spaces in them
  • ess-kill-buffer-and-go modified to not restart R

Changes / Selected Bug Fixes in 14.09:

  • ESS[Julia]: Executable is changed to julia.
  • ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported.
  • ESS[R]: Running R with gdb debugger now works as expected
  • iESS: Inferior ESS buffers are now derived from comint-mode
  • ESS[R]: ess-execute-screen-options uses correct screen width in terminal sessions
  • ESS: ess-build-tags-for-directory works when no TAGS file name was provided
  • ESS: ess-offset-statement-continued is now respected everywhere except inside of the if test condition.
  • ESS: New variable ess-offset-statement-first-continued for indentation of the first line in multiline statements.
  • ESSR: Starting , in multiline statements indentation is now ignored to achieve a more pleasant alignment.
  • ESSR: Improved behavior of RET in roxygen blocks.
  • ESS[R]: command cleaning with C-u C-u C-y was broken with lines containing " + "
  • ESS[R]: fixed "empty watch window bug"
  • ESS[R]: don’t ask for help location on ac-quick-help (request of github #81)
  • ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands
  • ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1)
  • ESS[Julia]: recognize function names ending with !
  • ESS[Julia]: fix indentation of "for" comprehension syntax within brackets.

Changes / Selected Bug Fixes in 13.09-1:

  • ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in ~/.config/ESSR/ directory on the remote machine
  • TRAMP: PAGER environment variable is now correctly set to inferior-ess-pager
  • retrieval of help topics on remote machines is fixed
  • org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature)
  • ess-execute is now bound to C-c C-e C-e in ess-extra-map.
  • completion works again in ess-execute
  • ESS[R]: head and tail methods were replaced by htsummary in ess-R-describe-object-at-point-commands
  • ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation
  • ESS[transcript]: ’Clean Region’ now works with multiline statements; ess-transcript-clean-region etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by ’+’
  • ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2. Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately.
  • ESS[SAS]: ess-sas-edit-keys-toggle default returns to nil
  • ESS[R]: support for prettify-symbols-mode: contribution from Rudiger Sonderfeld https://github.com/emacs-ess/ESS/pull/65
  • ESS[SWV]: knitr now evaluates in the current frame
  • ESS[developer]: ess-developer doesn’t kill open DESCRIPTION files anymore
  • ESS[roxygen]: ess-roxy-preview-HTML is now on C-c C-o C-w and ess-roxy-preview-text is now on C-c C-o C-t
  • ESS: installation with make install was simplified and should work out of the box on most *nix systems
  • ESS installation instructions simplified
  • fixed font-lock bug introduced in 13.09 that was causing very slow process output

Changes/New Features in 13.09:

  • font-lock in process buffers doesn’t "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input.
  • ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types.
  • ESS[julia]: a much better eldoc showing arguments of methods and data type constructors
  • ESS-developer:
    • - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package ess-developer-packages. The old behavior (activation on per-process basis) is still available on M-x ess-developer in a process buffer.
    • - integration with devtools package. New command ess-developer-load-package calls load_all on the package containing current file. ess-developer-add-package now offers IDO menu completions with available loading methods, currently library, and load_all. Loading command can be customized with ess-developer-load-on-add-commands.
  • TAB now indents region if region is active (a contribution of Matthew Fidler in pull #41)
  • M-x ess-version now reports full loading path and recognizes git and ELPA versions.
  • warning and error keyword are now highlighted with font-lock-warning-face as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification).
  • eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process.
  • org-babel: evaluation is now org-friendly
  • help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by ess-help-reuse-window custom variable.
  • help: ?foo pops IDO menu on multiple help files (so far it worked only for C-c C-v)
  • remote evaluation is considerably faster now on slow connections
  • ESS[R] tracebug R source references regular expressions are (mostly) language agnostic.
  • ess-function-call-face inherits from font-lock-function-name-face rather than font-lock-builtin-face.
  • ess-inject-source now accepts function-and-buffer option.
  • Documentation: The “New Features” section (and NEWS) now represent recent changes: within the last year or so. All changes can be found in the new news.html (or NEWS and ONEWS).
  • ESS[R] ess-rep-regexp should no longer inf.loop (rarely!), and hence M-x ess-fix-miscellaneous should neither.

Changes/New Features in 13.05:

  • ESS[gretl]: Support for gretl (both editing and sub-process interaction). A contribution of Ahmadou Dicko.
  • ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when ess-tracebug is active).
  • ESS: C-c ` is now bound to ess-show-traceback and C-c ~ is bound to ess-show-call-stack.
  • ESS[R]: ESS stores function in ’ESSR’ environment to avoid kludging users’ global environment and accidental deletion.
  • ESS[R]: new variable ess-swv-processing-command to control weaving and tangling.
  • ESS[R]: ess-default-style has been changed (from DEFAULT) to RRR. Use something like (setq ess-default-style 'DEFAULT) or (setq ess-indent-level 2) in your ~/.emacs equivalent before loading ESS, if you do not like this new “incompatible” default style.
  • ESS[julia]: ESS stores its functions in ’ESS’ module.
  • ESS[julia]: Eldoc is now supported in julia modes
  • ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes
  • ESS[R]: ess-use-tracebug’s default has been changed to t. Set it to nil if you want to keep the previous behavior.
  • ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with ess-debug-minor-mode and ess-debug-minor-mode-map.
  • ESS[tracebug]: ess-tracebug-map is an alias to ess-dev-map C-c C-t.
  • ESS[tracebug]: ess-bp-toggle-state (C-c C-t o) can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan).
  • ESS[tracebug]: ess-debug-flag-for-debugging and ess-debug-unflag-for-debugging work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in ess-developer-packages (C-c C-t C-a).
  • ESS[R]: Eldoc (activated by ess-use-eldoc) has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user.

    Note that you can turn off ElDoc, by placing (setq ess-use-eldoc nil) in your ~/.emacs file, prior to loading ESS,

  • ESS[SAS]: long over-looked SAS-mode-hook appears!
  • ESS[SAS]: ess-sas-edit-keys-toggle now defaults to t since sas-indent-line is still broken, i.e. TAB is now bound to ess-sas-tab-to-tab-stop by default

Changes/Bug Fixes in 12.09-2:

  • ESS: new ess-switch-to-end-of-proc-buffer variable that controls whether C-c C-z switches to the end of process buffer. The default is t. You can use prefix argument to C-c C-z to toggle this variable.
  • ESS: fix in ess-eval-linewise that was causing emacs to hang during R debugging with ess-eval-visibly equal to t.
  • ESS: fix in ess-eval-linewise that was causing emacs to recenter the prompt in visible window
  • ESS[tracebug]: A better handling of “Selection” prompts and debug related singlekey commands.
  • ESS: fix a bug in ess-switch-process that was causing *new* selection to fail.
  • ESS[R]: Solve missing ess-local-process-name bug in R-dired.
  • ESS[SWV]: ess-swv-PDF doesn’t ask for a command to run if there is only one command in ess-swv-pdflatex-commands.
  • ESS[SWV]: ess-swv-weave gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr).
  • ESS: ess-eval-*-and-step functions go to next empty line at eob, instead of staying at the last line.

Changes/New Features in 12.09-1:

  • ESS Breaking Changes in Keys:
    • - New keymaps: ess-doc-map bound to C-c C-d; ess-extra-map bound to C-c C-e; ess-dump-object-into-edit-buffer was moved on C-c C-e C-d
    • - roxygen map was moved on C-c C-o and ess-roxy-update-entry now resides on C-c C-o C-o
    • - ess-handy-commands is not bound anymore
    • - ess-dev-map (including ess-tracebug and ess-developer) moved on C-c C-t
    • - C-c C-y is deprecated in favor of C-c C-z C-z
  • ESS[R] new command ess-describe-object-at-point bound to C-c C-d C-e (repeat C-e or e to cycle). It was inspired by Erik Iverson’s ess-R-object-tooltip. Customize ess-describe-at-point-method to use tooltip instead of an electric buffer.
  • ESS: New command ess-build-tags-for-directory bound to C-c C-e C-t for building dialect specific tag tables. After building tags use M-. to navigate to function and objects definitions. By default C-c C-e C-t builds tags based on imenu regular expressions and also include other common languages .c, .o, .cpp etc. But it relies on external find and etags commands. If ess-build-tags-command is defined (for R), the inferior process is asked to build tags instead.
  • ESS: ess-switch-process offers *new* alternative to start a new process instead of switching to one of the currently running processes.
  • ESS: Switching between processes (C-c C-s) uses buffer names instead of the internal process names. Use M-x rename-buffer command to conveniently rename your process buffers.
  • ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where proc stands for the internal process name and dir stands for the directory where the process was started in. The default is *proc*. For customization see ess-gen-proc-buffer-name-function.
  • ESS: ess-eval-visibly-p is deprecated in favor of ess-eval-visibly.
  • ESS: New evaluation pattern nowait. In addition to old nil and t values, ess-eval-visibly accepts nowait for a visible evaluation with no waiting for the process. See ess-eval-visibly for details on evaluation patterns.
  • ESS: New “Process” menu entry with process related commands and configuration
  • iESS: Process buffer is now automatically shown on errors
  • ESS: New ess-switch-to-inferior-or-script-buffer command bound to C-c C-z in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command.
  • ESSR-help: On multiple help pages with the same name, C-c C-v now asks for user resolution directly in emacs.
  • ESS[R] ess-roxy: new variable ess-roxy-re for fontification of cases where the number of leading # differs from ess-roxy-str.
  • ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods’ arguments after trailing ||.
  • ESS[R]: New ess-display-demos command bound to C-c C-d o and C-c C-d C-o
  • ESS: New ess-help-web-search command bound to C-c C-d w and C-c C-d C-w to facilitate interactive search of web resources. Implemented for R, Stata and Julia. See also ess-help-web-search-command.
  • ESS: ess-pdf-viewer-pref accepts now command line arguments
  • ESS[Rnw]: Add knitr support. Customize ess-swv-processor for the default processor.
  • ESS[Rnw]: More thorough renaming of remaining noweb-* to ess-noweb-*.
  • ESS[Rnw] new commands ess-eval-chunk-and-step and ess-eval-chunk bound to M-n C-c and M-n C-M-x to mirror standard ess commands in C-c map.
  • ESS[R] Auto-completion: new variable ess-ac-R-argument-suffix to customize the insertion of trailing "=". Defaults to “ = “.
  • ESS[Julia]: Added index, apropos and web-search to julia.
  • ESS help: More evaluation commands were added to ess-help mode (C-c C-c, C-M-x etc)

Bug Fixes in 12.09-1:

  • iESShelp: Multiple help pages with the same name are properly handled on C-c C-v
  • iESSremote: Evaluation with ESS remote no longer freezes emacs.
  • iESS: comint-previous-prompt C-c C-p no longer stops on secondary prompt “+”.
  • iESS[R], iESS(Sqpe) [S] on Windows: The options("editor") is now initialized to emacsclient instead of the previous gnuclient. The user may need to add the line (server-start) to the emacs initialization file. emacsclient has been included with emacs since GNU Emacs 22.1.
  • ESS[Rnw] Fixed “connection to R” bug (in 12.09 only).
  • ESS[Rnw] Explicit ess-swv-stangle and ess-swv-sweave functions.
  • ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched “\”’
  • ESS[R] is more careful with the R code injection. It now happens only once at the start of the session.
  • ESS[R]: Fixed auto-scrolling the comint buffer on evaluation.
  • ESS[Julia]: Solve several indentation and word navigation problems.
  • ESS[Julia]: Help system works again.

Changes/New Features in 12.09:

  • Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.
  • ESS[R]: On Windows, there is now a new customizable variable (currently called ess-directory-containing-R) to tell ESS where to look for the Rterm.exe executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find Rterm.exe executables when they are installed somewhere else.
  • ESS[julia]: new mode for editing julia code (*.jl). Start with M-x julia.

    Full interaction interface, imenu and basic error referencing are available.

  • ESS[R] noweb: noweb-mode and noweb-font-lock-mode have been renamed to ess-noweb-mode and ess-noweb-font-lock-mode to avoid conflicts with the “real” noweb-mode.
  • ESS[R] noweb: The long standing font-lock bug has been solved in ess-noweb interface.
  • ESS: Basic evaluation keys are now bound to ess-eval-region-*- functions:
    • - C-M-x is bound to ess-eval-region-or-function-or-paragraph
    • - C-c C-c is bound to ess-eval-region-or-function-or-paragraph-and-step
    • - C-RET is bound to ess-eval-region-or-line-and-step

    Each of these functions first evaluates the region whenever the region is active.

  • ESS: C-M-a/C-M-e now step to beginning/end of paragraph if no function has been detected.
  • ESS: ess-eval-*-and-step family of functions are now smarter, and don’t step to end of buffer or end of chunk code (@) when at the end of the code.
  • ESS: ess-handy-commands function is bound to C-c h
  • ESS: ESS is now blinking the evaluated region. Set ess-blink-region to nil to deactivate; ess-blink-delay gives the duration of the blink. Evaluated region is “blinked” in highlight face.
  • ESS[R-help] New key a for “apropos()” in help buffers. Also available through C-c h.
  • ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers.
  • ESS[R]: New customization interface for font-lock.

    ESS font-lock operates with predefined keywords. Default keywords are listed in ess-R-font-lock-keywords and inferior-R-font-lock-keywords, which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through ESS/Font-lock submenu.

    Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators.

  • ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set ess-use-auto-complete to nil to deactivate.
  • ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default ac-auto-start characters.
  • ESS no longer redefines default ac-sources, but only appends ac-source-filename to it.
  • ESS: ac-source-R now concatenates “ = “ to function arguments.
  • ESS: Menus for ESS and iESS have been reorganized and enriched with Tracebug and Developer submenus.
  • ESS[R]: ess-developer and ess-tracebug commands are available by default in ess-dev-map which is bound to C-c d in ESS and iESS maps.
  • ESS[R]: eldoc truncates long lines whenever eldoc-echo-area-use-multiline-p is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also ess-eldoc-abbreviation-style.
  • ESS[R]: completion code pre-caches arguments of heavy generics such as plot and print to eliminated the undesirable delay on first request.
  • iESS: Prompts in inferior buffers are now highlighted uniformly with comint-highlight-prompt face.
  • ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like Sys.sleep(5) no longer stall emacs.
  • ESS: [R, S, Stata, Julia] have specialized ess-X-post-run-hooks, which are run at the end of subprocess initialization.
  • ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on C-c C-c and other interactive commands.
  • ESS no longer auto-connects to a subprocess with a different dialect than the current buffer’s one.
  • ESS: ess-arg-function-offset-new-line is now a list for all the ESS indentation styles, which results in the following indentation after an open “(”:
      a <- some.function(other.function(
         arg1,
         arg2)
    
  • ESS[SAS]: Improved MS RTF support for GNU Emacs; try ess-sas-rtf-portrait and ess-sas-rtf-landscape.

Changes/Bug Fixes in 12.04-3:

  • ESS: basic support for package.el compatibility
  • ESS[R]: correct indentation of & and | continuation lines
  • M-x ess-version shows the svn revision even after make install
  • ESS[SAS]: improved XEmacs support
  • iESS[R]: better finding of previous prompt
  • ESS[Stata]: adjusted prompt for mata mode
  • ESS[R]: resolved name clashes with cl.el
  • ESS[R]: removed dependence on obsolete package assoc
  • New make target lisp, to build the lisp-only part, i.e., not building the docs.

Changes/New Features in 12.04-1:

  • iESS[Stata]: New interactive help invocation.
  • iESS[Stata]: New custom variable inferior-STA-start-file.
  • iESS[Stata]: inferior-STA-program-name is now “stata” and can be customized.
  • ESS[Stata] New sections in stata help files Syntax(s-S), Remarks(r), Title(t).

Bug Fixes in 12.04-1:

  • ESS[R]: Better ess-tracebug error handling.
  • ESS[R]: Corrected ess-eldoc help string filtering and improved argument caching.
  • ESS[R]: Indentation of non-block if/else/for/while lines fixed.
  • M-x ess-version should work better.
  • ESS: Filename completion now again works inside strings.
  • iESS[Stata]: Fixed prompt detection issue.
  • ESS[Rd]: R is autostarted also from here, when needed.

Changes/New Features in 12.04:

  • ESS: Reverting new behavior of 12.03, TAB in ess-mode no longer completes by default. If you want smart TAB completion in R and S scripts, similarly to iESS behavior, set the variable ess-tab-complete-in-script to t. Also see ess-first-tab-never-complete for how to customize where first TAB is allowed to complete.
  • ESS: completion is consistently bound to M-TAB (aka M-C-i) in both Emacs23 and Emacs24.
  • ESS: The variable ess-arg-function-offset-new-line introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to ’(2) results in:
      a <- some.function(
        arg1,
        arg2)
    

Changes/New Features in 12.03:

  • ESS indentation: new offset variable ess-arg-function-offset-new-line controlling for the indentation of lines immediately following open ’(’. This is useful to shift backwards function arguments after a long function call expression:
      a <- some.function(
             arg1,
             arg2)
    

    instead of the old

      a <- some.function(
                         arg1,
                         arg2)
    

    If ’(’ is not followed by new line the behavior is unchanged:

      a <- some.function(arg1,
                         arg2)
    

    This variable should be set as part of indentation style lists, or in ess-mode hook.

  • ESS[R]: C-c . sets (indentation) style.
  • ESS: In ESS buffers yank(C-y) command accepts double argument C-u C-u to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files.
  • Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features (“Completion”, “Developing with ESS”, “ESS tracebug”, “ESS developer”, “ESS ElDoc”, “IDO Completion” and “Evaluating Code”)
  • RefCard: Reference card was updated to include new features.
  • Eldoc: Eldoc was rewritten and is activated by default. See ess-use-eldoc, ess-eldoc-show-on-symbol, ess-eldoc-abbreviation-style variables for how to change the default behavior. Note: skeleton-pair-insert-maybe prohibits eldoc display, on ( insertion.
  • ESS[R]: Eldoc shows arguments of a generic function whenever found.
  • ESS: TAB in ess-mode now indents and completes, if there is nothing to indent. Set ess-first-tab-never-completes-p to t to make TAB never complete on first invocation. Completion mechanism is similar to the completion in the inferior-ess-mode – a filename expansion is tried, if not found ESS completes the symbol by querying the process.
  • ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by completion-at-point. Also in accordance with emacs conventions, ESS doesn’t bind M-TAB for emacs 24 or higher. M-TAB calls the default complete-symbol.
  • ESS[R]: Out of the box integration with Auto Completion mode http://cx4a.org/software/auto-complete . Three AC sources ac-source-R-args, ac-source-R-objects and ac-source-R are provided. The last one combines the previous two and makes them play nicely together. Set ess-use-auto-complete to t to start using it. Refer to documentation string of ac-use-auto-complete for further information.
  • ESS[R]: New unified and fast argument completion system, comprised of ess-funname.start, ess-function-arguments, ess-get-object-at-point. Eldoc and auto-completion integration are using this system.
  • ESS: ess-switch-to-end-of-ESS(C-c C-z), and ess-switch-to-ESS(C-c C-y): Automatically start the process whenever needed.
  • ESS[R]: roxy knows about previewing text version of the documentation. Bound to C-c C-e t.
  • ESS[R]: Solved the “nil filename” bug in roxygen support.
  • ESS[R]: ess-tracebug is now part of ESS:

    New Features:

    • - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don’t have to source your file, but just evaluate your code in normal fashion. Variable ess-tracebug-inject-source-p controls this behavior - if t, always inject source reference, if 'function, inject only for functions (this is the default), if nil, never inject.

      During the source injection the value of ess-eval-visibly is ignored.

    • - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer (C-c ') and jumps through this buffers if still alive, or in original org buffer otherwise.
    • - New keys in watch mode: ? and d
    • - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook
  • ESS[R]: New package ess-developer to evaluate R code directly in the package environment and namespace. It can be toggled on and off with C-c d t. When ess-developer is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with C-d a, and remove with C-d r. Source the current file with C-d s.Evaluation function which depend on `ess-eval-region' ask for the package to source the code into, ess-eval-function and alternatives search for the function name in the development packages’ environment and namespace and insert the definition accordingly. See the documentation section “Developing with ESS/ESS developer” for more details.
  • ESS[R] help system:

    New Features:

    • - q quits window instead of calling ess-switch-to-end-of-ESS. This is consistent with emacs behavior help and other special buffers (breaking change).
    • - k kills window without asking for the name (pointed by Sam Steingold)
    • - Help map inherits from special-mode-map as sugested by Sam Steingold.
    • - Package index: new function ess-display-index bound to i in help mode map.
    • - Package vignettes: new function ess-display-vignettes bound to v in help mode map.
    • - Display help in HTML browser: new function ess-display-help-in-browser bound to w in help mode map. It depends on R’s browser option.
    • - New custom variable ess-help-pop-to-buffer: if non-nil ESS help buffers are given focus on display. The default is t (breaking change).
    • - New menu entries for the above functions.
    • - Bogus help buffers are no longer generated by default, i.e. buffers of the form “No documentation for ’foo’ in specified packages and libraries: you could try ’??foo’ ”. ess-help-kill-bogus-buffers now defaults to t. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning.
  • ESS now uses IDO completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set ess-use-ido to nil if you don’t want the IDO completion. See the documentation string of ess-use-ido for more information about IDO and ESS configuration.
  • ESS[S]: “,“ is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from `ess-handy-commands' list. If ess-R-smart-operators is t `ess-smart-comma also inserts “ “ after comma.
  • ESS[S], notably R: Variable `ess-handy-commands' stores an alist of useful commands which are called by ess-smart-comma in the inferior buffer.

    Currently containing:

    change-directory

    ess-change-directory

    help-index

    ess-display-index

    help-object

    ess-display-help-on-object

    vignettes

    ess-display-vignettes

    objects[ls]

    ess-execute-objects

    search

    ess-execute-search

    set-width

    ess-execute-screen-options

    install.packages

    ess-install.packages

    library

    ess-library

    setRepos

    ess-setRepositories

    sos

    ess-sos

    Handy commands: ess-library, ess-install.packages, etc - ask for item with completion and execute the correspond command. ess-sos is a interface to findFn function in package sos. If package sos is not found, ask user for interactive install.

  • ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of ess-tracebug and developer status of ess-developer in all associated buffers.
  • ESS: New ess-completing-read mechanism: ESS uses ido completions whenever possible. Variable ess-use-ido controls whether to use ido completion or not. Active by default.
  • ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future.
  • ESS[S]: New custom variable inferior-ess-S-prompt to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation (comint-previous-prompt and comint-next-prompt) the inferior buffers.
  • ESS[R]: Internal R completion retrieval (ess-R-complete-object-name) was rewritten and is faster now.
  • ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged.
  • ESS: new functions to manipulate process plists: ess-process-get and ess-process-set.
  • ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in > . This could be overwritten by setting inferor-ess-primary-prompt.
  • ESS[S], notably R: Saved command history: ess-history-file now accepts t (default), nil, or a file name. By setting it to nil no command line history is saved anymore. ess-history-directory now allows to have the history all saved in one “central” file.
  • ESS[R]: more Roxygen improvements.
  • ESS[R]: C-c . to set (indentation) style.
  • ESS[R]: Functions with non-standard names (for example ’aaa-bbb:cc’) are properly handled by font-lock and evaluation routines.
  • ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in ess-get-words-from-vector and ess-command.

Changes/New Features in 5.14:

  • ESS[BUGS/JAGS]: Batch BUGS is back! For recent OpenBUGS versions, 3.0.8+, a batch BUGS script is once again available, but for Linux only. Therefore, since it seems that BUGS and JAGS must co-exist (rather than a transition from BUGS to JAGS), .bug files are now in ESS[BUGS] mode and .jag files are in ESS[JAGS] mode. ESS[BUGS] now works like ESS[JAGS] rather than the original mode ESS[BUGS] mode which was difficult to maintain. Although, ESS[BUGS] appears to work, there still may be some features missing as well as bugs.
  • ESS[R]: New customizable variable ess-swv-plug-into-AUCTeX-p Commands to Sweave current file and LaTeX the result are now available to AUCTeX users, if this variable is set to t.
  • ESS[S]: C-c C-c (ess-eval-function-or-paragraph-and-step) is now skipping over comments as the other paragraph functions do. It (and similar functions) should no longer wrongly find ‘function()’ beginnings inside comments or strings.
  • ESS[SAS]: improved by better support for GNU Emacs

Changes/New Features in 5.13:

  • ESS[R]: On Windows, for R 2.12.0 and later, the Rterm executables (in subdirectories i386 / x64) now are found as well as for earlier R versions.
  • ESS[S+]: on Windows, both 32- and 64-bit versions of S+ (“S-PLUS”) are found now and made available on the menu.
  • ESS[R]: When prompting for a starting directory, the R version is (always?) correct now.
  • ESS[R]: on non-Windows platforms, the use-dialog-box variable is no longer temporarily changed (to nil for R-x.y.z version functions and to t for R itself), but rather the user customization is obeyed.
  • ESS[R]: more Roxygen improvements.
  • ‘Rd-preview-help’ now generates preview buffers with navigation facilities the same as regular help buffers.
  • ESS: New functions and keys C-c [up] / [down] for evaluating the buffer “from beginning till here”.

Changes/New Features in 5.12:

  • ESS[SAS] Font-locking: update of PROCs keywords (up to SAS 9.22); error/warnings.
  • ESS[R]: Roxygen improvements: S4 classes; also optionally keep spaces when filling arguments
  • ESS[Rd]: support new keywords: section-name \subsection plus a dozen “new” keywords; should match R 2.12.x now.
  • ess-display-help-on-object (C-c C-v) now caches the list of topics, thus speeding up the improvement feature introduced in 5.9.

Changes/New Features in 5.11:

  • Filename completion within buffers now adds only trailing characters to complete the filename, rather than expanding to an absolute file path. This filename completion is bound to the TAB key.
  • M-n P in Sweave buffers now prompts for the command to run instead of using pdflatex unconditionally, offering completion from customizable collection ess-swv-pdflatex-commands, the first of which is taken as default and that defaults to texi2pdf.
  • M-RET is now also bound in S language (R and S+) buffers to ess-use-this-dir. It sends setwd(..) to the S process to set the working directory to the one of the source file.

Changes/New Features in 5.10:

  • M-RET in *S* buffers is now bound to ess-dirs. This function will set Emacs’s current directory to be the same as the *S* process. This is useful if you use setwd() within a *S* process.

Changes/New Features in 5.9:

  • Toolbar: The toolbar now has an icon for starting Splus.
  • Indentation: New documentation and code has been added to make it easier to change how ESS indents code. In particular, see ess-default-style, ess-own-style-list and the documention subsection “Changing indentation styles”.
  • ess-display-help-on-object (C-c C-v) now offers completion candidates for help file aliases, in addition to object names.
  • Font locking: is now turned on even without window-system is nil, whenever ess-font-lock-mode is non-nil, i.e., by default.
  • ESS script editing: ess-eval-deactivate-mark default is now t, as suggested by Leo Alekseyev and subsequent “unanimous” ESS-help discussion.
  • ESS[R]: Editing support for “#!” (Rscript / littler) editing, thanks to Jeffrey Arnold.
  • ESS[R]: Now finds all R versions, both 64-bit and 32-bit, on some 64-bit Windows machines. Please report back to ess-core success or failure on your 64-bit Windows machine.
  • ESS Manual now more visually pleasing; http://ess.r-project.org/Manual/ess.html
  • ESS[R]: Roxygen on XEmacs no longer font locks for now (as it required missing features and hence broke ESS startup, there).
  • ESS[R]: Roxygen has a sub-menu on the [ESS] menu.
  • ESS[R]: Function ess-rutils-htmldocs in ess-rutils.el offers an alternative to help.start() for navigating R documentation, using the browse-url Emacs function.

Changes/New Features in 5.8:

  • ESS[R]: New ess-rutils.el with utilities for listing, loading, installing, and updating packages, as well as object manipulation (listing, viewing, and deleting). It also provides an alternative to RSiteSearch() that uses the browse-url function, so results can be viewed in an Emacs web browser.
  • ESS[R]: much more extensive Roxygen interface, via ess-roxy.el from Henning Redestig. Ess-roxy supports filling of roxygen fields, generation and updating roxygen templates, completion of roxygen tags, basic navigation (marking and moving between entries), folding using hs-minor-mode and preview of the Rd file.
  • Emacs lisp files have got better names (partly, for now).

Changes/New Features in 5.7:

  • ESS[R]: loading a source file (C-c C-l) now works in Windows, similarly to other platforms; (further; it had accidentally been broken in ESS 5.6 on all platforms)

Changes/New Features in 5.6:

  • ESS[R]: help() calls have to differ from old default, with newer versions of R; currently via .help.ESS <- function(...) hack.

Changes/New Features in 5.4:

  • ESS[SAS]: The long overdue change from make-regexp to regexp-opt for font-locking is complete. The new regexp-opt is now the default since it is better than the old code in many ways (and especially more maintainable). However, there are certainly some special cases missed (bug reports and patches welcome!). Setting ess-sas-run-regexp-opt to nil will result in the old code being used.
  • ESS[BUGS] and ESS[JAGS]: typing = now results in <-.
  • ESS[R] function arguments “show” (ess-r-args-show) now uses the new (tooltip-show-at-point) contributed by Erik Iverson.
  • Toolbar icons now also work in (beta) Emacs 23.
  • ESS[S]: New function ess-change-directory for setting both emacs’ current directory and the directory of an *R* or *S* buffer.
  • ESS[S] when transient-mark-mode is true, the mark is now kept, rather than deactivated, thanks to a patch from David Reitter.

Changes/New Features in 5.3.11:

  • ESS[SAS]: work around bug in Emacs 22.2 & 22.3 which fails to set case-fold fontification automatically.
  • Rd mode: support new keyword ’Rdversion’
  • ESS[R]: now again works with Emacs 21.x

Changes/New Features in 5.3.10:

  • Fixed noweb-mode bug accidentally introduced into 5.3.9
  • In noweb-mode, e.g., Rnw-mode, electric “<” also inserts closing “@". Further, the code chunk boundaries are better kept up-to-date, such that code[R] <-> text[LaTeX] minor mode switching should happen more reliably.
  • In noweb-mode, fix a buglet in rare [Enter] or [Tab] behavior; further, by default disable the former ‘[[’ .. ‘]]’ code-protection-when-filling behavior which has been found to be buggy.

Changes/New Features in 5.3.9:

  • ESS[SAS]: evince PDF viewer now supported as well; search order: evince, Xpdf, Adobe/Acrobat Reader
  • ESS[R]: added support for Roxygen, potentially to be extended.
  • ESS[S] (and R): inferior (*R*) and transcript modes no longer fontify language keywords (such as for, in, etc).
  • iESS[Stata]: Customize the ess-sta-delimiter-friendly setting to t to convert embedded semi-colons to newlines for Stata processing.
  • Sweave fix for embedded blanks in PDF reader and PDF files
  • Several fixes for Major Mode Convention violations in ess-mode and noweb-mode.
  • ESS[JAGS]: M-x comment-region now available!
  • ESS[S] The ess-swv-* commands (and keybindings) are now in a submenu of the “Noweb” menu, when editing Sweave files.

Changes/New Features in 5.3.8:

  • ESS[JAGS]: more separation from ESS[BUGS] (as much as is currently planned); now C-c C-c on an empty .jmd creates a template as it should; symbolic links are created for CODA output so BOA is happy: from index.txt to .ind and chain#.txt to #.out
  • ESS[SAS]: buffer-local ess-sas-submit-command and ess-sas-submit-command-options now recognized by ess-sas-submit-region
  • ESS[S]: When trying to evaluate code in an S language buffer and there is no associated process, now start R automatically instead of signalling an error. Also, restart R if there is an associated process which is not running. However, do not start R just via the “electric” ( (ess-r-args-auto-show).
  • ESS[S]: For (one-line) functions withOUT ’{ .. }’ bodys, the end of function is now correctly found more often. This notably improves C-c C-c (ess-eval-function-or-paragraph-and-step).
  • ESS[JAGS]: cleanup/re-organization of elisp code; symbolic links for CODA output are now only created by the new JAGS system command in version 1.0.3; specify whether this command is available via ess-jags-system; if not present, then no links are created so that the *shell* buffer does not become unresponsive during the batch run

Changes/New Features in 5.3.7:

  • ESS: ess-default-style now *is* customizable, i.e., changing its value in ~/.emacs now does have the desired effect.
  • ESS: ess-font-lock-mode is a new variable (default: t) which controls whether font-locking is enabled in ESS buffers.
  • ESS[R]: for XEmacs on Windows; another tweak to find R versions
  • ESS[SAS]: font-locking updated for ODS and SAS Bayesian Procedures; a more consistent handling of SAS options by ess-sas-submit-command-options which is buffer-local; portable snooze for MS Windows via customize-able ess-sleep-for (floats welcome); Xpdf now supported as a PDF viewer
  • ESS[Rnw]: now also works with “emacs -nw” and Emacs 22.
  • ESS[JAGS]: now requires JAGS 1.0 (see the new ESS for JAGS help section for more information): both need work; suggestions welcome
  • ESS[R]: [TAB] completion now uses the R-internal completion mechanism (for R >= 2.5.0).
  • ESS[R] ([S]): interpretation of “_” as assignment has been removed in ess-continued-statement-p for R and S.
  • several internal code cleanups.
  • ESS[R]: An experimental version of a new command Rgui on MS Windows to send lines directly from emacs to Rgui is available in file lisp/essd-rgui.el. Preliminary documentation is in file doc/rgui-doc.txt.

Changes/New Features in 5.3.6:

  • ESS: for XEmacs, using “gnuclient” (without a “-q”) works for things like fix() after M-x gnuserv-start has been done.
  • ESS[R]: M-x R-newest should now work in more situations on MS Windows, e.g., when R has been installed in a non-default "ProgramFiles" directory tree. In these cases, there’s no need to specify the name (and full path) of the R program anymore.
  • ESS[R]: For XEmacs, startup (with new tooltip code) works again.

Changes/New Features in 5.3.5:

  • ESS[R] a new defun is available, M-x R-newest, which will start the newest version of R that it can find on your system.
  • ESS[R] add Sven Hartenstein’s “R function arguments tips” functionality, via new file ../lisp/essd-r-args.el. Note that this includes an “electric "("” behavior inside R-mode which is active by default and can be customized via ess-r-args-electric-paren; i.e., use (setq ess-r-args-electric-paren nil) to turn it off. Further, ess-r-args-show-as allows to switch to the “tooltip” mode.
  • ESS: functions ess-get-pdf-viewer and *-ps-viewer; built on new customizable variables ess-pdf-viewer-pref and ess-ps-viewer-pref; currently used in ess-swv-PDF and *-PS.
  • ESS[R] Improved ess-swv-PDF to run pdf viewer only if pdflatex was ok
  • ESS[R] Improved ess-swv-weave to start R automatically if none is running.
  • ESS: Do no longer ask which ESS process to use if there is only one.

Changes/New Features in 5.3.4:

  • ESS[R] now better work with options(error=recover); and the new default of CHM help files on windows.
  • ESS[R] some more cleanup in the “sweave” functions
  • miscellaneous fixes

Changes/New Features in 5.3.3:

  • ESS[S] fix buglet (5.3.2 only) which left command prompt in “execute buffer” and hence help files.
  • new customizable variable ess-display-buffer-reuse-frames set to true (which changes default behavior) such that execution or help *frames* are reused.

Changes/New Features in 5.3.2:

  • Classic BUGS now supported by (require 'essd-bugs) with ESS[BUGS] and JAGS by (require 'essd-jags) with ESS[JAGS]. But, only one of them can be used at a time since they don’t play nice together. Also, C-c C-c is now bound to the function ess-bugs-next-action (F12 has been retired). And finally, note that essl-bug.el is deprecated and the replacement is essl-bugs.el.
  • ESS[R] Improved some of the “Sweave-make” functions (yet scarcely documented) in ess-swv.el.
  • ESS[S] No longer mess with .Last.value (nor in other “languages”).

Changes/New Features in 5.3.1:

  • See the docs for 2 ways to install ESS for XEmacs
    1. by uncommenting the XEmacs part of Section 1 of Makeconf and performing make install
    2. by unpacking either ess-5.3.1.tgz or ess-5.3.1.zip into PREFIX/lib/xemacs/site-packages on unix or PREFIX\XEmacs\site-packages on windows
  • ESS[R]: fixed bugs so that Rterm.exe can be found by XEmacs
  • ESS[S]: ess-toggle-S-assign-key is slightly changed; in particular, the default ess-assign-key is now C-x =.
  • ESS[R]: M-x R-site-search is a new (slightly experimental) utility similar to R’s RSiteSearch(..) but with the advantage of using Emacs’ preferred browser, see browse-url-browser-function

Changes/New Features in 5.3.0:

  • ESS[BUGS]: sanely re-format statistical output, .bog, from scientific notation to numbers rounded with 4 decimal places with M-x ess-bugs-sci-round-to-4-dp.
  • The keys for navigating among section headings in help buffers worked, but only for one language per session; they should now work for multiple languages. (They were also broken on Windows machines.)
  • ESS[S] long standing buglets in the internal logic for loading lisp code on Windows. Particularly fixed behavior in help mode with S-plus GUI.
  • New variable, ess-use-inferior-program-name-in-buffer-name, which enables using the executable name instead of the dialect name for R. Feature request.
  • ESS[S] ess-execute-screen-options now also works correctly when there is more than one window *side-by-side* in the same frame and runs in the correct buffer also when there is more than one S buffer.
  • iESS[S] new functions ess-eval-paragraph-and-step and ess-eval-function-or-paragraph-and-step are bound to keys C-c C-p and C-c C-c respectively and to the menu in ESS-mode; also bound in the help mode (for evaluating examples).
  • ESS[S] new function ess-toggle-S-assign-key allows to assign the “ <- ” insertion to an arbitrary key.

Changes/New Features in 5.2.12:

  • ESS[SAS]: M-; fixed, but the XEmacs function comment-dwim may be broken, if so, use M-x comment-region and M-x uncomment-region instead; only valid PROCs are fontified which is very helpful finding syntax errors (currently supported: BASE, ETS, FSP, GRAPH, IML, INSIGHT and STAT); the “feature” where F-keys take you to an empty buffer when the requested destination is a file that does not exist has been fixed, now the request results in a no-op. Further, sas-mode now also works in simple terminals.
  • Rterm/Cygwin combination works under Microsoft Windows.
  • ESS[R]: internal calls use baseenv() instead of NULL and define ’baseenv’ where needed.
  • New experimental support for installing ESS. See the file lisp/ess-install.el.

Changes/New Features in 5.2.11:

  • ESS Info entry and dir handled more effectively for GNU Emacs users
  • ESS[SAS]: temporary files created for batch submission of a region are now named based on the current file; see ess-sas-file-root for details; all lag and dif functions now fontified correctly
  • iESS[SAS]: fixed a few nagging bugs, however, still does not appear to work at this time; please let us know if you have any ideas.
  • ESS[S]: Support for running other versions of Splus has been added for unix. Two new variables, ess-s-versions and ess-s-versions-list, are used to tell ESS what other versions of Splus you would like to run.

Changes/New Features in 5.2.10:

  • ESS[R]: ess-r-versions can no longer be customized (since the customization was not taking effect unless customizations were loaded before ESS). Its value has been changed so that it will also find R executables beginning “R-devel” and “R-patched”. If you wish to change this variable, it must be set in your .emacs before ESS is loaded.
  • Installation with GNU Make enhanced: unix and unix-like operating systems will now be able to install ESS for all users in either a GNU Emacs site-lisp or an XEmacs package configuration by editing lisp/ess-site.el and Makeconf accordingly, then issuing make install
  • ESS[S]: Filename completion (inside strings) now also works in XEmacs for R and S-plus.

Changes/New Features in 5.2.9:

  • ESS[R] for Windows: the \ directory character bug with respect to ess-load-file has been eradicated.
  • iESS[SAS]: C-c C-r and C-c C-b once again work as intended and documented.
  • ESS[S]: M-x ess-fix-EQ-assign is a bit more agressive.
  • ESS[S]: Imenu now also shows setAs(), etc.
  • ESS[R]: R function pattern enhanced with underlying code such that M-C-a (ess-beginning-of-function) etc now work for many more cases, including S4 method definitions.
  • iESS[R]: myOwnhelp(1) no longer wrongly triggers help(1).
  • ESS[R]: Improved detection of bogus help buffers: valid help buffers containing with the string “no documentation”(e.g. contour) were being treated as bogus.
  • ESS[R]: In R help buffers, if options("help.try.all.packages" = TRUE) then ?rlm will list which packages rlm is defined in. This help buffer is not bogus, but instead is now relabelled “*help[R](rlm in packages)*”.
  • ESS[STA]: add “//” as comment starting character to syntax-table.

Changes/New Features in 5.2.8:

  • iESS: [Tab] completes file names “inside string” as in earlier (<= 5.2.3) ESS versions.

Changes/New Features in 5.2.7:

  • If you use Custom to change the variable ess-toolbar-items, the new toolbar is used in all subsequent ESS buffers.
  • ESS[SAS]: new feature: if ess-sas-log-max >0 and your .log grows to more than ess-sas-log-max bytes, just the first ess-sas-log-max bytes are refreshed; this is helpful when your .sas program generates lots of error messages and gets too big for emacs to display
  • ESS[R/S]: M-; in R/S editing modes will now indent with either one or two hashes depending on context.
  • ESS[R]: David Whiting’s Sweave extensions (to ’noweb’) are now available (from ess-swv.el loaded by default).

Changes/New Features in 5.2.6:

  • Removed non-ASCII characters in a few files.
  • ESS[R]: now works better when UTF-8 locale is active; in particular, you get correct directional quotes in R’s startup message for R-devel (unstable development version of R 2.1.0) when using environment variables LANGUAGE=en@quot LC_ALL=en_US.UTF-8
  • ESS[SAS]: toggling of .log mode improved (F10); toggling of .lst mode now also available (C-F10); killing all buffers associated with .sas program no longer bound to C-F10 since its a bit overzealous.
  • S-Plus 7 for Windows is now recognized.
  • ESS[S] (incl. R): in auto-fill mode, strings are not wrapped anymore.
  • ESS[S] (incl. R): font-lock now correctly differs between R and S, e.g., for "_"; both now fontify warning(.) and S does terminate() additionally.
  • Support for ‘bell’ aka ‘beep’ aka ‘ding’ aka ‘alarm’ in all inferior modes: When \a is output “to the the console” at the beginning of a line, the bell is rung.

Changes/New Features in 5.2.5:

  • ESS[R]: C-c C-q or ‘Quit S’ from the menu now should work (again and less klunkily) and do not append ‘-exited’ to the buffer name. Further, the behavior of (ess-cleanup), called from ess-quit, now depends on the new customizable variable ess-S-quit-kill-buffers-p which defaults to nil. Consequently, the question “Delete all buffers associated with ..?” will not be asked anymore by default.
  • ESS[SAS] – ess-ebcdic-to-ascii-search-and-replace will now work with the recode application as well which is available on many platforms
  • ESS[S] (incl. R): Name completion for slots of S4 objects now works!

Changes/New Features in 5.2.4:

  • The documentation now includes an overview of how to use the emacs TAGS facility for S functions. (The distribution also used to contain a directory etc/other/Tags where a ~1990 version of etags.c was distributed; this is no longer relevant and so has been deleted.)
  • ESS[SAS] – When you are working with EBCDIC files on an ASCII platform, .log NOTEs may display as gibberish since the EBCDIC characters are not converted to ASCII prior to their display. So, the function ess-ebcdic-to-ascii-search-and-replace is provided for convenience and is bound to C-F11. This function requires the dd command (only available on unix or unix-like platforms).
  • ESS: Completion of object names is now always done dynamically rather than allowing the option of using a pre-computed database (by ess-create-object-name-db) since modern computers seem fast enough for dynamic completion. (We expect few users, if any, have been using the pre-computed database method.)
  • ESS: object completion in iESS buffers running on Windows was very slow (for GNU Emacs, but not XEmacs) and has now been fixed. Further, it was more or less broken for all versions of S-plus 6.x, and has been fixed to work everywhere but with the Windows’ GUI of S-plus. The list of objects now shows unique names also when an object appears more than once in the search path.
  • ESS[R]: Completion of object names now also includes those starting with “.”.

Changes/New Features in 5.2.3:

  • ESS: When new inferior ESS processes are created, by default they will replace the current buffer (this restores behavior from pre 5.2.0). If you wish new ESS processes to start in another window of the current frame, set inferior-ess-same-window to nil.
  • New variables inferior-Splus-args and inferior-R-args provide a way to pass command line arguments to starting S and R processes.

Changes/New Features in 5.2.2:

  • bug-fixes for 5.2.1 (require ’executable), html docs, etc.
  • ess-lisp-directory/../doc/info added to Info-directory-list if ess-info not found by info
  • ESS[R]: If you have other versions of R on your exec-path, such as "R-1.8.1" with Unix or "rw1081" with Windows, ESS will find them and create appropriate functions, such as M-x R-1.8.1 or M-x rw1081, for calling them. By default only Unix programs beginning "R-1" and "R-2" and Windows programs parallel to the version of R in your exec-path will be found, but see ess-r-versions and ess-rterm-versions for ways to find other versions of R.
  • ESS[R]: Other versions of R, such as "R-1.8.1" on Unix and "rw1081" on Windows, are added to the "ESS / Start Process / Other" menu.
  • ESS[S]: If you have other versions of S-Plus on your Windows computer, such as S-Plus 6.1 or S-Plus 4.5, ESS will find them and create appropriate functions, such as M-x splus61, for calling the console version (Sqpe) inside an emacs buffer. By default only programs installed in the default location will be found, but see ess-SHOME-versions for ways to find other versions of S-Plus.
  • ESS[S]: Other versions of Sqpe on Windows, such as "splus61", are added to the "ESS / Start Process / Other" menu.
  • ESS[R]: (bug fix) ess-quit (bound to C-c C-q) should now quit the inferior R process, when issued from either the inferior buffer, or from a .R buffer.

Changes/New Features in 5.2.1:

  • ESS[S] (R and S-plus): now have toolbar support with icons to evaluate code in the inferior process or to switch there. This code is experimental and likely to change as XEmacs/Emacs issues get resolved. The toolbar should be enabled if your Emacs displays images, but can be disabled with the variable ess-use-toolbar. Thanks to David Smith from Insightful for the S-plus logo.
  • ESS[SAS]: ess-sas-graph-view (F12) enhanced; you can specify external file viewers for each graphics file type via the alist ess-sas-graph-view-viewer-alist; also .jpg/.gif are now handled by image-mode on XEmacs, if available, otherwise by graphics primitives as before

Changes/New Features in 5.2.0:

  • ESS[BUGS]: new info documentation! now supports interactive processing thanks to Aki Vehtari; new architecture-independent unix support as well as support for BUGS v. 0.5
  • ESS[SAS]: convert .log to .sas with ess-sas-transcript; info documentation improved; Local Variable bug fixes; SAS/IML statements/functions now highlighted; files edited remotely by ange-ftp/EFS/tramp are recognized and pressing SUBMIT opens a buffer on the remote host via the local variable ess-sas-shell-buffer-remote-init which defaults to "ssh"; changed the definition of the variable ess-sas-edit-keys-toggle to boolean rather than 0/1; added the function ess-electric-run-semicolon which automatically reverse indents lines containing only "run;"; C-F1 creates MS RTF portrait from the current buffer; C-F2 creates MS RTF landscape from the current buffer; C-F9 opens a SAS DATASET with PROC INSIGHT rather than PROC FSVIEW; "inferior" aliases for SAS batch: C-c C-r for submit region, C-c C-b for submit buffer, C-c C-x for goto .log; C-c C-y for goto .lst
  • ESS[S]: Pressing underscore ("_") once inserts " <- " (as before); pressing underscore twice inserts a literal underscore. To stop this smart behaviour, add "(ess-toggle-underscore nil)" to your .emacs after ess-site has been loaded; ess-dump-filename-template-proto (new name!) now can be customized successfully (for S language dialects); Support for Imenu has been improved; set ess-imenu-use-S to non-nil to get an "Imenu-S" item on your menubar; ess-help: Now using nice underlines (instead of ‘nuke-* ^H_’)
  • ESS[R]: After (require ’essa-r), M-x ess-r-var allows to load numbers from any Emacs buffer into an existing *R* process; M-x ess-rdired gives a “directory editor” of R objects; fixed ess-retr-lastvalue-command, i.e. .Last.value bug (thanks to David Brahm)
  • ESS: Support for creating new window frames has been added to ESS. Inferior ESS processes can be created in dedicated frames by setting inferior-ess-own-frame to t. ESS help buffers can also open in new frames; see the documentation for ess-help-own-frame for details. (Thanks to Kevin Rodgers for contributing code.)

Changes/New Features in 5.1.24:

  • The version number is now correct even inside ESS/Emacs

Changes/New Features in 5.1.23:

  • Minor more Makefile clean up.

Changes/New Features in 5.1.22:

  • Besides info documentation, PDF and HTML documentation are also provided (instead of built using "make") and available on the web as well; see ESS web page and StatLib
  • Now that info documentation is available, the README.* files are no longer supported. However, they are still distributed for what it’s worth.
  • ESS is now an XEmacs package! See XEmacs Installation HOWTO for details (specifically, items 10-15).
  • ESS[SAS]: more user-friendly enhancements for remote SAS batch jobs with Kermit file transfers (LOG and OUTPUT function key features now supported). Multiple shells now supported so you can run SAS on different computers from different buffers by setting the buffer-local variable ess-sas-shell-buffer to unique buffer names.
  • Major re-vamping of Makefile/Makeconf.

Changes/New Features in 5.1.21:

  • ESS[SAS]: info documentation now available!, see ESS->Help for SAS; F12 opens GSASFILE nearest point for viewing either within emacs, when available, or via an external viewer; more syntax highlighting keywords; more enhancements for remote SAS batch jobs with Kermit; new framework for remote SAS interactive jobs, see ess-remote
  • ESS[S]: info documentation now available!, see ESS->Help for the S family
  • Makefile: tag now independent of rel; info files made by doc/Makefile and installed in new info sub-directory

Changes/New Features in 5.1.20:

  • New ‘options()$STERM’ in the S dialects (S, S-Plus, R). The S program can determine the environment in which it is currently running. ESS sets the option to ‘iESS’ or ‘ddeESS’ when it starts an S language process. We recommend other specific values for S language processes that ESS does not start.
  • New ‘ess-mouse-me’ function, assigned to S-mouse-3 by default. User may click on a word or region and then choose from the menu to display the item, or a summary, or a plot, etc. This feature is still under development.
  • GNU Emacs 21.1 is now supported (fixed for S dialects, SAS & BUGS), (some from Stephen Eglen).
  • XEmacs 21.x is now supported (fixed w32-using-nt bug)
  • XEmacs on Win (NT) is better supported.
  • Workaround for bug in Sqpe+6 (S-PLUS 6 for Win).
  • should now work even when imenu is not available (for old XEmacsen).
  • ESS[SAS]: XEmacs-Imenu fix; C-TAB is globalized along with your function-key definitions, if specified; you can specify your SAS library definitions outside of autoexec.sas for ess-sas-data-view with SAS code placed in the variable ess-sas-data-view-libname, also the dataset name is defaulted to the nearest permanent dataset to point; Speedbar support now works for permanent datasets, please ignore first./last.; new font-locking is now the default with more improvements for font-locking PROCs, macro statements, * ; and %* ; comments; you can toggle sas-log-mode with F10 which will font-lock your .log (if it isn’t too big); submit remote .sas files accessed with ange-ftp, EFS or Tramp (Kermit is experimental) by setting ess-sas-submit-method to ’sh; ess-sas-submit-command and ess-sas-submit-command-options are buffer-local so you can have local file variable sections at the end of your .sas files to request different executables or specify special options and the local file variables are re-read at submit instead of only at file open so that if you make a change it is picked up immediately;
  • ESS[BUGS]: font-lock with ‘in’ fixed.
  • for STATA: font-lock bug fixed.
  • for Rd mode: C-c C-v and ‘switch-process’ in menu. further, C-c C-f prefix (Rd-font) for inserting or surrounding a word by things such as \code{.}, \code{\link{.}}, \emph{.} etc.
  • new functions (ess-directory-function) and (ess-narrow-to-defun) ess-directory <-> default-directory logic (Jeff Mincy).
  • Re-organized Makefile and fixed a few bugs.

Changes/New Features in 5.1.19:

  • S+6 now supported (Tony Rossini (Unix) and Rich Heiberger (Windows))
  • New BUGS support through ESS[BUGS] mode (Rodney Sparapani) Templates assist you in writing .bug and .cmd code (.cmd and .log are replaced by .bmd and .bog to avoid emacs extension collisions). Substitution" parameters facilitate "automagic" generation of data...in" and "init...in" filenames, "const N=" from your data file and "monitor()/stats()" commands. Activated by pressing F12.
  • Fixes for ‘ess-smart-underscore’ SAS breakage (Rich Heiberger)
  • You can change between PC and Unix, local and global SAS function-key definitions interactively (Rich Heiberger)
  • C-Submit a highlighted region to SAS batch (Rodney Sparapani)
  • New and improved SAS syntax highlighting (Rodney Sparapani) To get the new functionality, set ess-sas-run-make-regexp to nil. Also available in .log files via F10.
  • Open a permanent SAS dataset for viewing via F9 (Rodney Sparapani) You must have the library defined in autoexec.sas for it to work.
  • User-friendly defaults for ‘sas-program’, ‘ess-sas-batch-pre-command’ and ‘ess-sas-batch-post-command’ as well Customize support for these and other ESS[SAS] variables (Rodney Sparapani)
  • ‘ess-sas-suffix-2’ now defaults to .dat via F11 (Rodney Sparapani)
  • Emacs/XEmacs, Unix/Windows issues collectively handled in ess-emcs.el
  • defadvice solves problem of missing *ESS* (thanks to Jeff Mincy)
  • Improved manual a bit by including things that were only in ‘README’.

Changes/New Features in 5.1.18:

  • New ‘ess-smart-underscore’ function, now assigned to "_" by default. Inserts ‘ess-S-assign’ (customizable " <- "), unless inside string and comments where plain "_" is used instead. (MM)
  • Fixes for longstanding interactive SAS breakage (RMH)

Changes/New Features in 5.1.17:

  • Documentation for Windows Installation (Rich Heiberger)
  • removal of ess-vars, finalization of customize support (in the sense that there is no more use of ess-vars, but that we need to fix ess-cust) (AJ Rossini)
  • Many small (and large) fixes/contributions (MMaechler)
  • addition of the "S-equal" variable and provide M-x ess-add-MM-keys a way to remap "_" to ‘ess-S-assign’, typically " <- ", but customizable. (MMaechler)

Changes/New Features in 5.1.16:

  • BUG FIXES
  • Better SAS support

Changes/New Features in 5.1.15:

  • BUG FIXES

Changes/New Features in 5.1.14:

  • Yet more fixes to SAS mode, (Rich Heiberger and Rodney Sparapani)
  • Customize support (for most Emacsen which support it) (AJRossini)
  • ARC and ViSta support out of the box, and fixes for XLispStat (AJRossini)

Changes/New Features in 5.1.13:

  • Version numbering finally all depending on the ./VERSION file, thanks to Martin Maechler.
  • Yet more fixes to SAS mode, thanks to Rich Heiberger.

Changes/New Features in 5.1.12:

  • Splus 5.1 stabilized, thanks to Martin Maechler, Bill Venables, Chuck Taylor, and others.
  • More fixes to SAS mode, thanks to Rodney Sparapani and Rich Heiberger.

Changes/New Features in 5.1.11:

  • More fixes to Stata mode, thanks to Brendan Halpin.
  • fixed bugs in ESS-elsewhere, thanks to many testers
  • README.SPLUS4WIN has DETAILED instructions for S-PLUS 2000, thanks to David Brahm.
  • Fixes to SAS mode, thanks to Rodney Sparapani

Changes/New Features in 5.1.10:

  • More fixes to Stata mode
  • primitive generic version of ESS-elsewhere
  • Small fixes to SAS/Stata.

Changes/New Features in 5.1.9:

  • Stata mode works
  • Literate Data Analysis using Noweb works

Changes/New Features in 5.1.8:

  • Bug fixes
  • R documentation mode defaults changed

Changes/New Features in 5.1.2:

  • able to use inferior iESS mode to communicate directly with a running S-Plus 4.x process using the Microsoft DDE protocol. We use the familiar (from Unix ESS) C-c C-n and related key sequences to send lines from the S-mode file to the inferior S process. We continue to edit S input files in ESS[S] mode and transcripts of previous S sessions in ESS Transcript mode. All three modes know the S language, syntax, and indentation patterns and provide the syntactic highlighting that eases the programming tasks.
ess-17.11/doc/ess.pdf0000644005071500004540000167124413202324206011306 00000000000000%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 802 /Filter /FlateDecode >> stream xÚÅVÍo›0¿ç¯àH¤âÙ˜Ïc×f«ºUëšh—uœÄJ€Ô@§ªÿülüLBÆšn—)Rûù½ßdzeâ`õ#NŠ˜R”‰“ÜÊ•c^î>NÄÔWÏWC<ã‘7$óTU/ö»|ï“wâÈñ1ŠÂ$tK)ŒŠ“ÄYäÎww6ŸO=‡î‹yÌ –Õæu¾SOâr¶± kDÝðcq=™-&}Y7HQ‚‰…§+¼ª¬äÎròÕ  C‡`”â”X44D4¦‡h(uŸ¦~ârY‹ªÔKbDˆ.Û"¢AäëŠ-I"DߤX¬90±Ì.ùÓTóØV@HŸ{âstÌ×]U×¢gð…n`üŠ‹X·â¦?ÙÉJ–bs¦uH"”ÒȱëoÏtýõ¶_}‡Î‘Õ˜I¶c}Ùyg¶Úòr˜86‰çèvš.Ä}n[«¯,žsåÓ †¿õÅD©‘´æ“•9¤è™–òY‰BÆè\´Ròny²V*Y[À°jŽÎ-5÷0¥¾ûlÞÁèÈßâw†Œð¼PÓ*ﳫµ©«ƒâEQâ`—™¶ ˜ö…GQ˜ÄŽwxI8ÖB$E±©ò]”±ÿâc àŸè'ÌKCÕÿñ‘l§HDo%ý ’¦‘"‰ü[—‘¾(¤¢dÛ7™L¬É—L;ú$ £lïÏ Ñ¬G»é¿É⿨¿pš¼†zT¡ÛÎ}Yˆºîµp¤¬$+µ ‡œMežÛtËŽ¶^®ÎS)Ú&LgÉ%saF²j'8d¯–t-ê1U fö·uo'+°¥‡c7c¦ ð èæËJïÇ »r&!4ü€û`äc[y'yÍ¥!Iíj¶ÝEc¼þIñ Zì„â…éð\¨ l°AW;%}<.}[æ\4׈Ê\4ûœËJ¹>UFßá¥=Ç;;ÉÐNÖ싌(»VH€ |h·J bp)®üÔRVr3Ôx¯Yþgv2èH,6Ú §zHÑÔ™UÓzºïĪähô¢Ž uS ‡·‚Ò”Ú[È/NHkÑ endstream endobj 54 0 obj << /Length 2590 /Filter /FlateDecode >> stream xÚíœMsÛº†÷ùZJÓ1J|$»é´žÜÜôëvl·]´]Ðs*‰.IÅõ¿/¾JŒÞ8ub{²°,Ÿð5ñ><8À ÿM±¨0 ©ëÝ»B¾;|Z¨ÞAwÆϼÈß^½ûåe¹€hŠ.®n%¬ASÙË]m_v«^ýîÝû+{¡LAy¢XѬ‚%Šüw¢5¥vµjȲ½Þ²Õ®Êe£¾ž÷û†Ë‰©/£øÔ¥À„"q)~w¸¤Ô¿7\AˆÊåGõ_†ž_ .7‡õÔñ‹É«N½úúþòR]È¿"¤5  åW–Wü¿"­Ô:ûî ß|Ò‹=öæ‘›„ @ø@RBå_ÓŽšè3/ܺêîø¢Úcé²%)s¥uô‰ôaXŽYP\„+-  EQ,ÿv»BõòûŽñr¼íÛxM–Õ[‡‘©œ‰_+((ž]óG„ÖOÉÄ×·ÿ9.vÂQfk_ãŒh³]xÀìã‹F9Ë•å‘HBØ€º®”'±¢v|YÂ~XÕxÉÚé0°Q¡ôÓgÁ>wì>ˆâÁŸ‰ÔˤçBJ[‘‹” O!5ó7ˆTž¬D*)iSVÁ9À&[¤ú§FrtãQE–ÝÞ&ª0Tü>Êæ-O=)iÚ¡\Ò\xŠ4ßv$-OV’–”4¤•Mªº4¤aMÚoÓm?è¬%K/ÎY»_ñ²I½^óʉ§²i讓”eT‚Ć‚ºA/„Äc{pÄ}š}Ä"}æ…‡È8º¨²© ¡‘©+ÐHkZ4ª PlÑ lšºý'mø-SÕ`l¨)53?ö‚„{…ˆ™KÖnL²éô<³ãÿALG<úÐnƒäð¥aUÒo–œçÀ0F•6#—*ž¢Êw8BUž®¤êHs¾ÇÐðkñ…†z¿Ùýžqj·[5Yé͵—¤w}Ä~PÔwãÃ8±]pû‘ÔUõ 4xƯ‚Úû}Ì3}æ…‡öhŽ.ªÅ6i2µÍ&ͱv$#¼44Òv¹œØzâ¯íf YŽöÝŽ;<¨}¼1–Þ¶hò²€2 7 ØèTð=EÁ%*3@JÐ@D *Ԋ̲ùÝšíG„òÅ5„o³Ä7£¡Ó8›‰§žàsŽKÐL]AhZÓ"Zó´XÙD‡m¢k¯»-/™e– JÁÏ®f^Ñnͳ-茯¹€ºð 3X‚B™ºФ¦”V€ ¨Yõ_°º™ÅZp¶møK„ß’éWVˆ¨Ë%Ð…§œÑ&0OWx¤yRÆ Y±ÙµmÙЮ'[ËßwÓ­.Û§vêÆ©[ó… |ãnè? ín Wòu jôa¤07wY˜{á‰Â|6,ˆÄ óLmS˜kGòB ©ôöö*óvpÛ€­×%úh²£j¹fc¤0GrséULhO²­l|È}¼]xêñöÍ ‚•«+臘ªhøh2EúÅa¿·<íúAï+O+¸¼mÍ>òžÍ8Ú³:Ê* Íw¿Œ1¡‡2— žbÂ÷'ÂDž®d"©i˜À8Èaò¾­Šƒ6›^ºi.\°]?i.ÎûÝÝÏÊïš…fì2!ðÂÌ C©+ HkZj Ä91 ©².<õÈú~YÈÕ•lRÓ2¨he0 ƒ?¶ûîî°mOðC»×Cw><@!À°z­kÌ.z”sqqá)\|ë"¸äéJ\’šæä j@¡ÃÅ&0ýaâë•;nx0ô;½Ì4ÛÖœbZ‹Ô¡²M0К/lž.ýGì2w™i—ž°k6t(xš,SWִؕvÕJ]æùþkÇî­SývÃsÂPgú๠Êç^òzízPsépá):|§"täéJ:’š–ŽJ(ØöÎÆÃõ®óÎÎK€ý gO ¨äRÍ×E'f—¾Ë\»\xÊ.è"våéJ»’šÖ.^ûBêÙeë¿gìÎí +‡¶î‡”/Dq¦NÞð½Ë3òR[œ îÝðb»&ßµfF.žBÀ·[eêJ’š¦ZC¤¼è6˜çõ\ϘÒÐyÞÁ~6„êœà[GûéñÆš\Æ\xŠ1ßïcyº’±¤¦M3ƒšb˘ë>µ"|>ÝùYûøÝ&ð«ׇ/ò`XŒ =˜¹T¸ð¾C8x„&SWR‘Ô´™ ‚– wBᆠl¿f³Ï¢MnûåCð*ð N £Y)ƃÆ\\xŠß›yº’‡¤¦å¡¨@I‘áÁ&× 9·ô0Î>’ X0}¤$5%yѳUŒ=¸¹”¸ð%¾c8xª$SWR’Ô4”À†§ žñ5%TSòq<šA.gÇIøOþì·˜Õ'üVõaoW¬ê.ÁÏŠ#‹¢zöù&ⲜL—½ð„˳ÇÁb¦®p9­i]®!@Ôº\i—ÿ2Z¿Ø®]rogËíêd^H| "м•©_%µ¯r¡sá)è|p„.OWB—Ô´ÐѸÌRkæ~â)eíXˆÎ’¬^7lsúá†N|È–W2]?œE>/‰ÄŸ%øFkט×jˆr­¶Ñ)§½Q%*}ž ž´!)¸¦^`—º¥xÉöÛJ\ë?*ÃæO&ÖWDb:YÙÖÔqk±ldóì9Z‹æV3[‹^x¢µ8?Lc­ÅLmÓZLk ÛŠT®3¨¶í¨= N¶¢7üyÅ]‘O¤ðÍm!ÊïEqË"nñµd˧~cþè{ÊõÇ…§üñ G[¿™ÚÖŸ#ípölDXï+P»Â¿`_²í+C„güÛ²ð.pýÿnÿFR£¾ÿÌÔ袩ÑÒ ›™¢"5&‡UP‡¦³s¾e­+”çöàù#uz:o§ƒók)m@&D.:‘ïi¢”èÆW5 endstream endobj 118 0 obj << /Length 2527 /Filter /FlateDecode >> stream xÚíœ[o7Çßó)ô(;¼§oÛ$ͦØn¶ ,ÐíÃDK³«ÆRRûåpx“LÒ§nÒȉéX‰ÿŸy9£BýÁ£ª•”¢ŠÉÑlýªÐ÷v‹ÑpãâÝ+lâ¦*pD~õêÛ8áUE…GW×#Ž9ªhåžïj>úuܶ“ß®~|õöÊ='(ÙGÞÑ,Å3D™ ½fÿòÕK(h9È•“)Æ„ßÎÛ}»YL¦´äãí‡ÉTÐñ›Ùþf¸§Þׇ̇Ílßn77ý«üö\ðÙ åW\½ýäß©'åðCý~çû½“¡c”!V÷–óÃg£§AxdOŸT¿UZÝÑæâŒCµMôícdpÁ”¹l$*ŠxUVï¿(Šñ뮩”Ž·]ÿ“×ÛÉ””ãy{}kcãK¢œæÜ8­ôHOHª·ýÕ ýòOv™ õoÞŽð}È ÑÓ <çl8ÊŒD…éjg³šÎYU Uyg…qö§Ú¬àÔÏã¬ÌÀó:“¨äâ)—X!E“1J“ÏÑ:›  ¦«iÊj:š ¬ªQfi* Mÿ¬×¶0pSþj(.gõÐÐ÷m¯‡ ùa½»Ÿ¯ «Òº|Zó 3®P@|xÐ,Æ¢€Àt5 'šwÚG¼Äˆq³À¦}tÑØj²äãe³Ú ·Žl?éaNQËÏ™W¾!û‡Ž‘:`*Ï´¡Žü`"Õ†jÛ6T^»Ç€JUî‘A¶2¼ö‹„¨åE…0ÿò–Ÿ ¹×’bÄŒ+”žc$4‹É$#0mÇȉv|.á#aÓSåKƒ“õä0g°°#9<°Ñ“Nlâ• ?åÂñSŒnà„g¦˜#£ü@uû)&¯é¸)$bµÜ{¸¹>LðxØ›0c·8Ø21±ðèK&ù´V)*Ì`B©ðá9*B‡X´ ÔÕTd5-¬â*»9*ló'UÞ|8¨åmº;õjÌ{JPEåKQóÀºÙÚä)Ïðtämœ' nÏS^Óñ$ •]ÆMN7šEWûTó©Ý/Mn9ì·SC˜© wõ¬ÿ•ÿMÔäU/â‘~¿WÈG4a¥Ü7ƒu߇çÜH¸ÓÕîg5ûBi«%„qßöÃÞÏÚY¢ZåIJžÏ&Ç#/¸­ÁPR}xŽÔš©0]Mê‰æJ‹©evÅÍâ ¦ÔzÓ|œPÿ~»hŒÍs³4 Pæ²J?Ë©yôÑe•”õfÄ Öûðœõ¡ <º'ÔÕÖg5íìAÕB¶ÂÔYOÃ]CU7æÀÀÛºF^2G‰Èã86øµKq;èPz|xŽžÐIΣôÀt5='šw ªd%±k^l œŸ÷KÝË3ÕÌpú¼©÷‡®9=”®Ï§âñv•8•Î0\~…¢'QµØ7 ¬Z‚ðLÕr4мLU-@m[µœj'>ú„"*Kë ŸìWoÌÔû˜ Œ/_–‡ç~NѺ Í1><—cBd¢¸BuuŽÉj:Lû õ˜Ú¥ÉßU&¹uÛÃQ¸Ø´„¥ú¤ÉçºáøeNàYO pùð\¡Ñ ¸`º®¬¦…‹T%*¤›ÅÜòçòÖÔ4³}; [¶‹åJý OQûSSv+qAG’=ͤ™ Ä, > stream xÚíœ]sÛ6†ïó+t)ÍÔ(¾î&ÙtÛÙNíݽhsAË´ÍYYÒHr>š?¿ ‰/R|𯭽Òd<¢4G|)¼É 6ÿȤÀÅ*¸žÌï^àöÓÍÍ¤ÛøùÍ bãNLàIyvñâÛ×BLF.Èäâz"m¶ýþ.®&¿L뺞½»øþÅ« ¿+A)P³‰ÜUrB8b\ÒF´9~s ˜©NÐÙ !TLÿù~ÆÈ´Ú¼¯«³¦Ètuݽ¾:?ï6®«rw¿©¶Í;<½^mºw·U·áÂÊ»zñ©ùß¾&˜ÆêŒa¤”0GÛŠÿÍhKe^¿˜3åþHó¿ÚEŸDá#¿|¸Óö$ÛÓI Ö¶Ñ{Ú}« æÆ>‘C¢(ÜÐ#bcÜ ñ/çï>¿ºªwõòÆ #cÓ_1á 3Øí8JÖÛUHî¢y‘½wð¿ô{¿³¯ °GWštf)5±c¤P"P!õ3"%å¸(¨ã!<çx<úRŒ:ÓmÏjzÇG„ûYqëøO·õbµ]­oëv"7ž^»Ìp¿µ>s;!ç3mÑH pb‡ÊIÏq{–à¦Ûr’ÕôœpóY!='Ârr>¯–¥™5úpIåê×í²2¹ã²^˜Ú¥Ú~¾,·ÕU±Zv¯å|w_.Ü×Ë›Ê|•Œf­QAé/lR¦Ùß 5-„çL‹0aL·5-«éM3 æÁ4iM{y¿Ý­îêßÊ]íÿÕÇòn½èÎu>-—Ö›óÕâ¾ ²öîVÝëO›Õ墺ێ»cJ\ª¿vÙ™òÊþD¨W!<çU‰ÂGW…ývd#d ÁTÛFïiŸÍBĨ£¤¿(<5õûwÕ¶¾±§óÚMß3“x?OÐfoDü mG˜?Bt&}ÄF2m’GVГ!5"²ðhÐ!àŽ§›[ÐùÇ =”Ÿž(ö3AL·E(«éabC†:^„Œ¿¬›¶–Ï!§g6¨§@1ÒÄ×ÿm2R•HIˆjù¼¦±'³³ŸÖV(Ÿ!<Çg̊£|Ât[>³šžON–¾Hò UÏçY¹›7lÝÚÊõô¼«e×›™>ØÂÒféKÙÿól˜ÄŽ+ž$6+L·$«é¡)¢< bÈë™6 ËåÜ-z¸ËEÃÇeK’r$Å Ðf[óð”‡ê¯K])sí˜@Í á9sãVtÔ\˜nknVÓ›K2˜+{½ëÓ¶{ݘ¹«6¥1ø}kì^"h|TÓ¦wI¦©L@q ¦Ÿ_&H!`GŠ@Ï!Û¡F›@ݬ¦G›M¤G@í!ðruwçúëL‡‚(‰4£‡{½Â %”‰žc"öGÉQ&`º-YMÇ×¢Rx&ô0ç¿Ù”f)¯m,$š Lí²í­±n^/E«Ãéÿ™7óv8+€XEá¬zþjžÂ ¨í°jOEDr$\6úGõ©›~êåUõqt}ˆ‘ÆôxY\=«gœÉÀy, ÏÌc=rF©…ê6óX^ÓÓ*âîɯ×3ÍâÛÍYxªv½YÝlÊ»`&L#ÆŽ4ÿîºÈÙå)„çxнMðÓmyÊjzž T[Í7<•›º¼\TcÖ˜RÊcéýô:bÎQ(š!<‡fŒ‰½ó¨Û¢™ÕôhR³EÁËÕr^­w•o“TDâ z~ Óš ¥2„稌 IP™Óýlr$¯ endstream endobj 10 0 obj << /Type /ObjStm /N 100 /First 832 /Length 2240 /Filter /FlateDecode >> stream xÚµZÁŽ·½ÏWð˜\8¬bU‘l Ê% K‡$ y6vƒÕ pþ>Sœ]Áî/гÝä{d±È*>RSI’¼$­‰ÌqRöD5™H"IM5‘¦>¾YòÖá_é(ÓQº”âD‰ ÊsML¨P=1£†â=›á=ðzÓÄôÞŠ¼ÇOwåv= êׂ¢¨_aÆ©2жž*ªt´¸ мWAK«¡@kC‘Šrø'â§¥†n¢Š5NÈÖ% ªv·$ŸJKè¯:#ŠO •ñIð~|Bû¥ãS«'D¬WØ Ÿ†`éÀ“ £Ãš…ðGR%ÑgUôºYRCë`Cm(Œ¾h7:5TñVS/ÉJ‡­)¡a“ Ãö1°ÚlŠ^¡ˆHº%k0 li½Iê=™w;¡ `ب1 ã”Z…aœSÔ÷Ñ$ÔwŒî0¬£ið lðªaX {rGSPŸ 8kÃF‰Œ`W…`»5Œ|A;ZL逦æa_§a°.®ðœâh Æa˜ÝEá ÃÇm †v¨Oø^áÇ@/> ΃ˆQ‡~‚¾A48UäDu4Ìu1ö 7Ô•Òûðíâ>¾ŽZ£U4|žøâÉ:Ðá$ƒ[FéÑcÒÑL­0³Ó«W§ó»ÿþç6¿ûáß·§ó·÷w·w“ab}:ûñþÓÇۘe—»ýñ§¾¹ÿ5ݼ0t¥9¿?¡úêõR쫯.Èo€–^½Jç7ð6¾à'ü¯ÏŸÃì~ù çïî?¼½}L7hÌë7éüîö×ÇôþеÙJ•ß6^ý´óüõÝÝ=pnÆÂ1Ú¹<$‹Gô€¢õ çŠG p p p p p p p Ô@©R¥J ”(5Pj Ô@©"""""""""òS_Ls:¿ýô¯ÇËßýéîçÓù›û‡oªåý°üŒÜ+ ÆØÄ2æ4hJVpÁy³ÕŽr__üàm:ÿåþÝ}:¿N¢?Q¥÷<¦(±Ü´Ü©JG-¬X:ïèPºR³×Ù;¢¬Ä›tõ…tÕsÁ:«^rÃú<èÔ{®¶Ó;_Ä×]ªÁ×5ó6—EtÆèÒ¤kœ‹K§”ʃN{öâñI„)eÌ:ö§Ù§µfî;&åE},’›zô‘еCùÄkn<ù eêr,_ëèSÌwéXjt‡oÑ Ó\Ëäk’{çƒøÂg¤b…æúä3È8smºÍ)‹ú?íóBjÉÂ~,_i¹!Õ»ðaý®~,_u,Þ:ù0?ˆÛ±|³ÍU´:áÝvÄe[Äg=s‰ÚZviÑ…‹VЪµ'­ŠUœv†°/ê"c™ñ˜†X³¸ËG%›Dœ¯˜Uê¡|ì }š|˜ä;|‹=wAŸÂgÓ£Ë×°A¼ðu,7NÇò!¼™|†åfÛ]ê¢Ì‚‘vÏŠÕÆ¥«„Å‚ÆBï·ù]ì`s› #¿çÞå+šÛ¦ i¦-K]äÉ9φ‘Ãxß^@ë¢ø@Íó!‡éu;G«ºˆ9Œ÷ɇ ßúQ| Û¾Zô)@žEwlº((Q±\"§Nêȃ·ó¦ºhÑÆæŒkÌB÷ì;YÓ*¶66ºÁÖ-·ö%l¯Ó†Þpþû?þ ^IwŸ~ùåýï5¡Ï„ Ïä¡¡É©Í?°WÓöˆB­ù\!"²?&I¨,*‹†ÊÒBPiÑâmѯzTèQ¡‡,ÓÃL=d™(=Pz ô@éââââââââââ24ÐxÒ|NÝ«Lá«Lå«Lé«Lí«Lñ«Lõ«ø‹5£9“Ò¾ˆÓ1“à1Ûž¶(T2dìê.ŽÝÆrg·³Œ;ÈÊS1Âê[XŽåÃêKmJFcÙ¶S;Y”Òñ“Ï(ðÁ|¬E*iÒ³¶íTRh+ú$S`D¢°#RÉ¢d ú4ù‰B;–OK$€d™ÂŽ9e‘H…Í£Ùót׎é¸C¹(V+FýYãPÉúö¬—EÑS ›ÖiUeÏÌÇÒ!©§ ‡ÔĶõø:Ž™¦ ÇÙ©ˇ=\i4e8ÏÍæ3<çŽ@še£vß³ G&ŸÉp6ÝæTZ'ÃÕ¹G2\ÙÙ#/ã»úÉõ£åU2\Í2j† WÝŽåƒúÜ%Wäê¶³KÖU²ßМŸt8Ì‹m>]§Ãu~>Ü«‚y¸³3×¶N‡«ýªÃÁ¾Vå+ϧ‰•Æi"Ê7´0·©¥ÂGÍvøVé~ˆ¶¦Nåã<‘Žå»Dû©äŒDxg .“áÆâTáv—±É8Nœ²ØÈ‚wd¸e|# Ù½:Îû±|„É0%FlG^Ñ\êU†ãl¥ÊG˜½! ®u;'´²J‡ë¹Õ)Ã!_Û9~^F‡ í*ÃÕL;ò”-ŠïCv»]’!Ÿ(Û][o‡ìGóh–Är×/á{nhÞäY­Q¡ø¸X^$X5ú`eþï4Ñ{hŠ=×KN×[N×kN×{NóÍ‹D4oѼJDr½5ëÍÛD4¯ѼODóBMÅŒ¦dFS3#xS+$½^·šxÓ¶4íJ:ñtâÙij‰gÏ&žM<»Þßšx6ñìåž°¥T–ÏÄ+Bœ“]ñÊê*ñªä>÷yC¼j;×;–ñ!¯l3¢ñj'ýZF÷…Ú•é*íjˆSºB0ߑԗÑ!h³ù”®]íÇò}¡te}‘Ðâð}Öv¬\¼g›sÙ²žÕ¯WÈBuÜñíØt•NæÙúõzfÅÎÕœf«t2ËãŽýEów> stream xÚµWÛr7}çWàqS)ƒ¸0U®¤YŠSo\¢“ìÆÉÈ„¬‰Éf.’µ_ŸƒËð"mV¬ÉÆ¥OwŸn4 ®rÂ×øp_N„0øDÊ¿’(¿¦Ñǯ&™ñë1Ö¯’3?o g\N¸Î=¾2h …/¯&Ç3|T&!H¯¨!(|r¬gXÜ,#<ç^ÝÁ¤_²Dpd#àšræ7!s æŠ%€‘kð™çÐRÖ/a³æ1¨kí ÁB•eDdÜL ‹Ly; ‚Á4DzÁ2„ÌÏÙrlô‹¸„µˆBlÎ=¼À'÷KpEäFN„Ȉd^ŒHæ#ŒHÎà””$–¤‚ ¼` /X`W(Nd@UH‡_GpL6 ÈÒÛAþ¤ÙiBÊ0ƒø¥RpdIf€ìÓ‡¸ öæ>n`] )ÒxJ0FÑJc=7@¶(a€lgȹ™cZÀ]ŘgËBð‚YŰQ€}ÅQCÂj<TEÚrY (égrÔYˆ©TŠþ T*žA$j‘Ãp­4*U2 ë\L$R‰ÊB”ˆMeÞq¤RT48†`=ë@¶ž6äCY8&ÊW¯DUŽHA6ëg4ÑL°‰D5ó€È æ ZÈ öç@"ƒ¨,0 jTÁsƒ jé7#ƒZ"¹ÔÒú +!'/_N¦ïï׎L_UUÝM¦³þª ãïËêÓdúMÝ,\C>0OöÛdzéæù dNê^I‘“p8y†=¯ÈË—d:#Óoë÷5™¾&ÿ0æ òÕWüý]{Š*Ï®Ê(ÁÕÊÓ®iž›´ÿ¯É¢È¨ÍD Qj ?­=.©á<ÚŠfâ´æ˜Ì’9Ω2'2(Q0"œ ˜@i%E#·™?OˆR+ʤ!ÊLÑ\©ÓÚSŒZÈ`OsjòÇ'P•2Ù“–fjÜžeÏ“CôDªc|1‡œQôþq›üybD?§–ÇEΩÌOk.Y|tàN¡âÔöÐÇüìeš ~ZsJP™zšÐ‚2}$<ñLƒÆ’±mÛèkò˜Mù<69*†‰m§á9£¹?ùV=¯x[R•xÅC‘òc1>—=•S™î Ø¢ŒÙÓÚCw *oOijõøma³g²'$e)<)¨aO1÷š|àÆã]’é¿ÿó þ1 F0RõËåoÞ‹ºêÌ^P6î½À‹Û$‘ãm‡ÿ-â}@ ˜ä"‚jú®©ç3ÉôÝë 2}ï>w$YÙ÷ñ»ªkêE?ïʺ ÞîÍüÊëjÿ}>›}q |ኮo\¾¹÷;Û›º_.¼ôÿê[—ô¿>8ë›ÆUß°5ŒüÊ·®¹-ÝÝ¡ú¿Üßp½§ú`ÒËeu4„³Æ-Ê.©¾ê»›º *õµÿ.ªÈiiÊ«¾K‹Pò}ѹ6¯Û ©ßº®+«Aù&²|¸qkuX°„T¥ëºI[ýÏÂݺe½^ËCÍ·EÕ˨ý¦¾Ûиb=*CX«¸q¤FÚ®XÂá 3)¢äD á¾îƒgí}Û¹Õ!جsk¿~‹%J6±æR.ž°ïürîªÖE€a0âAqU.Ëî~04 v^º?ú²qžÖäÕÞÌØarMïn‡šß©8ùº+»›(m»r^,ýpÝÔ›bÕŽzÜ Êýzãöf®¨vÒ˜¹kGPÞöË®\/ÝáÞáè\öU• WuãbmDðºrO±ñw[—nUwã¬^­{’Œþo*‡Ü|é–­»»qÑßtbúb3Ÿ{ÂÆ‘Õvõªüob¥õ¤85÷uZøÇŠôÜCR›×+ºEûh™$ì¿¢þ,b½À© û}_R"yÄè ×åç!ï(Èâ“ÁßU;oÊu!ÑVÊuï»ÂÝvÛHsŒ/yð(NÝwHyp®©W{säÀÊ»ÈPhýõµkb=o»×O¸L’±z¹ˆë›L<wì™mµ*»¡¼ˆÃn„Û~?F̬¸¢ßìJEñOçÖÃ1Ìñ6Ù^C¿ ÅãîœcÅá÷¼A†ë&5¿‘ùGœÛSÝñ98ßbÝÃJ¡>?¯ê&)—™rÕÜíܰfèÇSô¦¹ùäîÛášÛLì\– v–ãP³ýž¼SKͶ9nÞ_§ƒÛîÐð$„¾Ju7þ.:_óv¾,ý},üØ&E·³r ö\h¢BV$zÇm¹p‹í½ZV`½¬›£oŽóÛbÙÛÚ^ ­ÔU‹ÉmžتöÔÛ îÃVзÑÙnOáº\Ž5¨ËGóoœÌ}ä-]‘*5ˆÇõÇÎc'göêwü'1Ü|ó»-¹¯ŽÞ ‹øŒÝ-9…ÇÜ,u¼Ey}Ÿ¦f»Æ'ͺªè endstream endobj 347 0 obj << /Type /ObjStm /N 100 /First 870 /Length 1534 /Filter /FlateDecode >> stream xÚ­W[oÛ6~÷¯àc̨xÑ ( ¸qšuX·"NËd™±Õʦ!K¹ì×ï;%Ë¦ì´Ø’ç|ç~ÈH0Ißc"‡³˜VŠñzé3úøFLxô™‹ !ÎɤŠñ ˜òü‘ B¦h/ô˜Š±ræË_ÅüÖ> $ð!/ˆ“ø…r‘d¡ð Xˆ‘ŒByà‡M‘_ÌY„3+KØû,†m2ŽXÓy̸Få d…'ADDŒsŒ”‚€ƒŠ{ €¬8‡·^‚Üö%Ÿü§£ˆq)èÈd®@& %€¬”È*öFJÙç8‚‹Ð°‘ûí9”>”@(nÈœR°›‡Ð£ÃâH c>R È!#M<¶Bxq@Ž=HQ®b’B@xAe˃BEéòÊð(Å‚óh¤1°0…`‰:,È™à„ƒ¤ Y€2ð[!ø‰z2'D¥ðDˆXŒÜ Žb!CH!{‚b£>A&(äñ†H ðOU#”š Š Èa½ä0”#ÑÌð9m„ÚB¡<È ô"”ÜCù!ƒ’Gt„ú£âõqŒ”Æ PqÒ#%…šùÈ ¤¢ò©H2HÆIã}dÝ€ >@Ò|I ‡ŒèHQ‰†0ÁWÔ$¥¨˜e4zû–½™±77æÎ°7Svñ»IÙfyÉÞ½µ‹{Oy;S©&ê!ËõŽˆlSú–«zÿz6£Ï¶0©Þí.äë¢0q\­tú½Ó1Õ¥NK«EÐê‚~Ü,ô¦ìÀº%‰$›E-iŠuR¶›µ©YhkV¾Žèj•l–­ëõ¾…jÅI[RffÓÓ—äÙr³Æ«áO„ªFЋ¬¤ï¼zxÐs½@«Þ®zJ׆ôüby·¹>R»6ÅO]?dsŸ¤¿~H^ôišȘ)²ïdÝÄÇš’›´J½gèï¢ZoÏ€ÿªómƒu«»’[aóŒÌU….fíÚ üüL&° Ùz,°·Ó1:HªMÚE¾XV”è3xƒìê'$ã <;yêàLªÒŒ-ƒn[¢ÔË¢+Ò§¬\ÕÆô9ë¾MÒïÉr „>¦YÚ•N»p¸¦úQçfkS×jÁLh»üÔ±;'š9RIªç•mìãMW eÑ&­ãœì#xòÔÁ¹uxö%x 5Ì{q»¸¿'…ÞXå5 ×wYí)nŠtEJ¡›"Ù®²ÔŠ}ÙYUK»ýjYo ]]‰Ûص’ö*µ¼÷M-Šì’äWÎÏÃ=á†2OmáëÇ,ªG0|K“ê7PÄ}ÓókZKL”heçBM:w¨˜ybn.×äÆŽ‰šrfgavyª2Ëmr,íÞÅr?‹$=ž‰8onÒÁ×Á“Nu¯&_®îôW[Õvkвw]ïÙ›—ŒÍÌ¡ì©Vj1lg"ù™~ÚWö@‹Z[@Íq²Îò—a%³ûËñ¸7|ún6ûkö÷À©ƒ”í¡>nÐk™)Ü—` ›µ¸gY‡¬ÓK`Ñ “º€§¸–µ=Û6›/½~˜PåòœE=Óa“ë±>ÚÝä=q~׎e½“³ïé~³ñèÑ=àiƳøýç1Œé—á¼E´PÝU¾Wú“Ò§æÑÄN$;ä›1<ìp¶Wþÿè_?x> stream xÚ­ZYÜÆ~ׯXäÅXC“Í;/Á:;‚chV‰Û€{ÉžZ<&ª«ëøºªzýþù7™w“›…éM^¿ð¨·;ÜpãÝ›¾ÌÛÂÄílæ—w/¾xE7¾çf^æßÜío"?v£0šèÝ7ß;þæÇ»¯_¼º›EJ}äŽ8óÉ–I|ã'®ò£·¦â4tý ´»m£X9_5›Àw†®Ýlá·ó¡lh'‘3´üûj·CήχT™ûÓ»;˜FÎŽöº.«3·ð"o·ñ—2ãT=7uSpãÌñ¯úpÉ­ë=”ýP溲³tuîK¡sÒùF¥Î‡M#c{áXÐûPÂ[ßžŽLe0 Oá®ù|Š«mËLê: k§þ®‡²áRgœ¶·kÝ”§±:ÍçzЮˆ0™‹P%¡ë¥ ˜ Í_­‰9!ædF­ó~¦‰µª®Øõâ‰Îi³¹ýa•Z๑ÿ¨Y™õ|\Ô6ØŒUhê”´ËÍ6ˆ|7ˆ²¥ÄïuªØ†^ä á…^è hJØQ›î`:ÜË jôq£§åŽSg¶ùØõm׃}…*pvÛº¥†§‘Èîv6F³•óZEšGž2³YÔ'”lØ k6³'Íó!¹|O.m¶#hìÈ¢aRgz&kòÍ\L¨|ÀsX“†Ž »ƒÉ¾SúmóRh€ÄõüØI2ѽlWõ-·Ê&o;ÖwÛ¡Ù“%Þø!`E‰Ý€ˆí}«@ƒ3ôØ“:šò¶®‘YÐy³Š#ç`Ó•¹|Ñ9qêØ›ýXñê²ArpŽ½Î MD%ƒ Ž<Á a „$~„«Î–ÃqAÜs*ó€ÜšjͨÐÜQ}Â]JÆG=$6kVeÃÆ4µ ·]aºÇL÷Eâ9÷å€ ŸÝ ~›LˆÃŒ`Ù†‡‰ÓÅà¡l,¨¥shðSå&°€ƒ™aÖB‚ÈUá„!Ù›®çÍÐ.µ ¸•m’ÀM€ ,óÍ{¸Ï<å¼zn»8q“ dÝ‹iÑvG9ØëM â5FÐ À9 Q‹`a»·ø>ÑÑ­òºvl ’ ]r1{" ²äªŠ¿t¿*²(tÓpº¾{ö!^à×g@ºlTеÔþoup…ŸM> +$±½¥CQ 5kͳøƒï W˜ƒxÎÁÖÏR7KÔÒZ9¾¯tsÁë~\½Å@–‡ç ¢È£:šnu“Ðwãl:§%¼FnÏ›´šk´_ ]ôk°ðõ@xPføÝàÃפ’ ¾òÝ4ŠóŒÜD%—3­PIÝøÂ"ÿ ˆÑüÔ¿ èb…œ àbž¦~÷öyz“-ÞÓÄc½ãiËü¬dò`ã±ï*/¾BÑŽ 7= Ly„߉ÅoîÂKžG°¶Mc$rÄAAˆËUmŒŒˆÙá"¾”•õ?ìÆ¦¡  {OˆÕF8šÀBŠÎØÅ-¯e-N(Ê'™ ±­Ï×6÷5ñÆà…Ij%W>÷*…M; ùB÷#‡bQ_ã˜"¸´/‡ÄyÄ„¦‚ð‘ˆ#¯Y!C8™zYQê D½êdqº4HâêY' “ @…î*è\† £YcKÊÀy°´$p¼Ø:ÞRÇ£eÕñv›ØÚ«&î/ÑdM—n_BØð“Pù<ø}{–ÌJ>ÿ23n¢A“ß'šC%ŸâPïþ7˜]°òQ°øû¬üsw÷Iä{ûQ M>¤ÒÔUY² Øþ:v±¦±B ~)”rv”|¬%°•8.H=fZ©Ë¦çÙ—¨¿c ô{Û˜z0§ĄœhÒòA²¦šýi÷Ùêqc7Í&ÌdH"t>Œº¢h6ÅÀyÆD¾[ÁXž¨ôê–²Q±‘Ä Q}Êä¾Àþ)| *%Aª o6¼”~׸’]ᨑ·cU,ó©ò¼wŸÙ›‡~eö|èÍa"¦³€ùæ—¼ûR2€3wNyˆE†x’)RNÏŸ´Ã/&øK76N˜ß´h’»a§æ¢=Öø¿ÜÏÝ’ÚÞèaìì*ºXá·¾„R>³Ü›•üKB}Ý—˜{À…L‘&*Y%”ÿÃ/ÖRøæ¹E¹üŽÀwOÆÆ31ÏäL±bÓv²¢6|…è¦ìkÌÓ SÜj,(r mxæ¿ÇR²Aú  ŸFq •s¯”Ôey¡¢%Œ<”æQzަ¦ì'q^—  hÈ&IA Á¶ ‹¤’µ!´ÜƒP¦€¶“ċ˶Ö!°²%•‚HŒ¨¨|lE?‘bß_§ñZJJnú¼+O6»ßóÄ3»¥0Ô£dÛf‰p¬|»poAªºÔ“zÍ£:% Ù:–)J,^>dßHm©—:b^’¤pÓ†,û±2ÅÁÌY›˜ÎX„¤8×$Kè†{A ‘™ l-mJA.Ðhk xÛ@ÝIÐkЫR4ˆá”›(ol¶kÇ?·ó ;UÜ*ÀØRúu0ýðkgJ»_ÓbI¢«¢\ˆÓâ(Œ{IÞ ×á“Ù<K;g&À,s^u¯Á€@àÈ÷Á¶xÞü©± 4u°_Í!¢rZ—¹O@wÕêÂF‘÷¶„<¡G)8o÷rQËW¤¯/(ÄmYòóXŸ¸§(;¸ ,f \ܘ½ìÒ9WÔDÂ3YFwÙW(Zñ”Qqâ*`Œ¥Cµ.§”€£ƒùeàañ±^„ãqtˆ#³ÇcTF²3AzŠÁÅ›ß <óÒ´r3—MÛ•X²§ôß.C7c5{j´K}—/ç_Ç ÈøÌÈÓ%\‡öWü3¡Èè/ϼaú™ë+yÝÍ_ÿTóƒB‚ ±<+ªØÆ78Ì9ÈTk£'˜Ó?©Sï¹LÝójÆ‹8‘CP®}4¤M(<Šc~èüÏÔ_h´M¡¯ç`T²"\°©’"I¼J´U¼žû€Kºs¡YñX o¸«okØÄï˜O>m¨uϯXüÊ,þ̱3ðq–øfá® êü…Þ¾nøÖ¼tUS±Ûú_ÌÈ圾¾Ð $:³ñu"É£XÄSPâ|'‘œ=™BL…P°’(±e$(#[0ï+k”D‹_í`xJ³f³/aÜ9{ìœgf¨µCCÉr%Ü]R?ÊÚlÁ©ÜªS/X²•Ù§/h-_סã©a/ßgØ›ñ›p×#SÞî%ÖL`S€ÆaÊ—ñëLïÃ#0ÀânüÌGêF`ì_ÎÍ%^µ¯ªö-gRëa5X@*tC?™@ÊÂÔë :6¹F<úÇ—é(K!Z¾,²0~7[iö×kl q*À¼•j‡p¼›=¢WþÖ^±dh¯'ÏÜœ)½»~ñ^}‰]uyÊú|m³Ì âiÆíßo…ÚöÛ·ïù äÏeþ ú#C endstream endobj 647 0 obj << /Length 1757 /Filter /FlateDecode >> stream xÚåYYsÛ6~÷¯Ð[©“!H”ò–´NÒLÔrž’̦ ‰5¯áÇÿ¾»X€—äØqé§N&Ž%v÷÷»Â.üa‹µ»ˆ|ßYóÕ"ÎÎ\5ZíÔ¸|{Æ´œ ‚ö@òõÕÙ‹7A°`®³v×lqµ.uµ]|²~>ˆ²‘ÕÒö}ßb/—6çõk¾ôVVSK~·mÜ$EN"MA¿› L,ä–·ürõþìâª3#ð¼GÚ‹’G3×ZÌ<× x°WÜa>'³?»,BµS÷˜ç„0â’ÔæÕ†„&KÚZÌf,Í~dÉ?K…‰Ì_|»yñþõö1Z¼2¼˜{Ñ÷mšÜ³¨Ïïix\l“&É÷DŠºh«Xb›[1’'²¶ºûÙ Ü IíD–¤wË•oÓl“nF׈!(ç´œòÖd'ýYŸž†û1_ãcÒ”äK^Àxã} ˆ|KC²?¤ðW}ØAQìèóŸ Y!$3ïìÔ-ª&)i’_—A`‰´L=£¿bÛùßÁ¾3«ªÄ¢²cDñ c´÷櫞23íæä&¨n%¿&µÆˆ[™Hˆ2y<;B¯E£\?6ùMÆm¿A*D…{)ÿ¬úXËñ>$™T(´Ã”Ï­êŒ~M vi’ßÔcQ–j«Ë*ý]›«RÏ{t™’†«!Ó-ò-rsÐæ–ºžÅ²®ˆk#uRâÓ¤ÄyÇ®¼ós‘e16 ª•:¯Î]X¤¨ˆ‚â:Õû£•›lV7Eu7·Þcã"+SÙt¡gÒÓ¸HÐÔõÒ†töŒšÌE&kM8c8ØÁS9œŸ9‰üÕ&”·´â¸ç‘9)Cá) 95´î¶`(33ÞWX^+‘×q•”IuqQmŸT]î„©þ‘.ø2-µÿ wu#³¹óÁ)§uIÙ¦b’fï;‰`¨ÏÞ—òÃÚ‡A ÕL4ã‰Ó³“ã÷“ãjÝç:óð¹Z8»U—Ò[ wvÄ”\3•â£2ó®#8ÆöGª€`Э_t%ju¥m&ü¼œŸƒoæ¢ÖÌúC3oOŠg¯2yÏö‹o3}=N U›ç½Èfs\¢¹ø.Yì̦Ó”\[õ»5ÚÚˆ¶öaŽýb½Š7‰©Ëxµ†Á3ãÔÔæ3ßyœÿÉ>à…BÞê*»=@‰VŠœµïë;³²$¨k©%¥ÛJÝä``'EÓVfúöЊº™¸QÒÔKú•¢NuCD¨n±]ÑÀºM½ ü2Z#Ó =°np^‰‚übøÆá×wX Š‹<—:Gz+f]Ó ¦AÕ·ÊP©f<ë{À-×¶¾Ô=E2l¨³6jä` ìDPp  …›%¶ i°QÇ*ì&5©RŠ…®j8±+´"m„VVèÏò²m”‹®vÎøF5ãÏÁW2n]¤:Ëh¦'yœ¶[ùò Ñ=úàyã›Á„ŠÐ^­=ó­ò?ÁÂøz`©‰ƒû¡é43(´ÐÓÛ«hͰ!wÔfH^É­ƒg_†¨h†hcFù[›ÍöKÛlËÓŽ9¼Çä'ÐÍô*¶Š=uÉ[hlì2mÑva0[™l¨Là(*Pr Sã©­€Ÿ ÍAE4Ûq;‡Á9É|,é‹]›¦4¥f/»Øá«`D/L܇øËD\c3lö*Aõ…šƒÈ©%h2<¢á˜ò¨`®kõöÒÀÆDk½+0f(u’ÿ8lYa–)²V]diåÛ‚–΋qhèM… ‡!*uaã j Žôi {ir3˜C¤©uÝ&ic'9Z¼†Ó¸”Ó§eŸGŽ­ J-[G> stream xÚ­ZÝܸ Ï_±oñ±kË’?®OíaÓæ®@f‹¢Èp^fljǞóG6Û¿¾¤Hùk¼3sÁ!ØH¢i™¢(òGj‚;þw©‡¡—Êä.?¾ñ µyº£ÎǼ ˜ÏFwÂù÷‡7y¯Ô]à{©ŸwûéT»»O·ìÔéfã†aè?l\)•ó¡ÚˆÄéšzãB»ëó®¨+béjjï·[x¨‚H:áæ×‡ŸÞÜ? b(!n”9Ïüp&qOÕ]”H/%Iý‹ÄøUX]<å „Áz}^[}%SP6£\™?K.L¶‡Ç bSƒ€ˆÎ ìtËçîÔÔ¥>¶4zä¤ûÅ2™4ÎÆä’~y_—e\ÏüLzþaÕSJøžø_˜uDÎgÌ!r»c»î5ûƒÓÅÑ~¥¾"eà‹™•º¥ñpq`ôγSïX7šŸ(TÇlЙXŒ Û3{X±ÔußózQ‘Ù±\3³ÛÁ—rp ÆJ@Êc–£\¾t{PN¨ôâ‘J‡Ã†ÍÀ.:'<ü´G9"óx¡ÁŠ}Õ¬?B1‡ˆÉ‘<Ø—ÖŠe¶–c¦lÕ§wÕ%V”.£Ôâªs'fw½æÛçSžÃ˜Ø 8ÝïŠ ú3²j>Jaz~c€Ÿ&n“Ûr_|9éEüƒçŠå÷œ¡¿Á¢` ʈ§(©ö0Á ž@Ž50\”³ ¸·ônnßEm‚ûC²7x þ}Ì×b‡E¤´/džsšª¨vœ@f¼{Ð7~_8O—£Ë2;P%ÝÛeHH ´ÙÈ/dí¤Ç8ß'fÁåÒ dl2À0=•\[åv'ìkGw1é¥ ÓïÍ*·¼mBú£·¤a£¿ïŠ0…`Ž‘Ї®²*_÷É ¤I‚‰i 5s½8ùöàxL<$ÁMlÉðõ‰FtuƒnG É[ª` ŔڡÝRÃI®™EšŒ1+}­¦ HÃþ‡Q‰½¸¶­ÌíNØ×¶u1éšGŽØ#ÛÍAê{€@+%1)ÎdŒ<æmR[î+R/'½ìŽ}O…òÏpÇ" ù¾4ÈÂÌ@Ÿ8À‡[zd-wÃqõü,A„PƒIŽ5\|9ãñÕ@ÃE1$“ŠFç†464ë8¡¨x=äRÆ‚WEH—Rו̓IœyÆ·§½µAÃl/æµ€ƒ÷}i“.`ìôcÿôzÀ4õuÉÚ Œú鵨l¹Ý û¶]Lz^^±5ÝûÅ–QöÇ^f¥¾{Vw‘ `@ß(¿å¾"ÿrÒiÝ%T¾‡uöýï‹ ü•¹b{G—”ËÆ !“BÅ&<¢8ƒ7uÛþñXt¬ Ù ˆÌ/óBâì›úH[[tA@L!”WÖ%cÑ“ó†8­ò¼ÐBk ÅŸœ ßÏíÛ }A¦ì !œyâXÛ¦YŒw-kÉ+‹“I ýÑLq:‘ },Vb Áÿl’‰ßï«Jcþ™5/VúxꌫåëHƒï½±ˆ=ò¾Z~d–Õ¶"çEl"6‡ƒÅ@÷8à2:2rFDºæÿññ¦ÅXæËËYL9uþqÎBB$Ø÷Ûù/N™5ÀнЄó³I|ž xíÍ`<+r@”x¸V Â7‡2£Ã©ž4׊(Íül¦Çx‰§uœžjHô À×OÁyàR®s¨ƒì.€c¡Âäµ- )#ã/&åà:d-=⪅fN°t™­/†U¦€ƒ±üWf*Dð6•½"8ETÌ\ˆÜYÁ>Ò˜¯‡Ê‰½ä†ä6£áo·4Æü—ï†LØ”’à9+ìÑwBDxÛŽ$sñ-l§G½ŸzûìÔwë§Âd}«{å7ú÷¾°…· 5·qõN¿VíuíóàÚ¬þ°!ô””—¿Ö¢f.~1àmý¡ÀgÌL ˆ¶¡Úôd:&G2•`7TôöÛrÚwô7ÖzSh@Ú;z›+rȸ ±…u•xrþSŽÌ\`eõ#YZm# úµYßÕh;̳Em‘1ؾ÷q= Wºµ k˜ÿlLÅŠ¢9ÿAO¨‰…®°G¯>ÙW¹ íXnß’‹‰²È‚ÍVÝ*:„ìI*9¯!aÕ0k_È©P!€ñ‹Åiæ>uøÓ´Üü .Ž„ø¯'i¼ËG=J „->ø;»‰‚ïa°C>&fƒ”‚ÛÁIà€JÉØkêG8™Eúæ’‰y¯Ì–u]F@ZïLMZ×½(ÌN|Sê´ÏEÇ¥“–(huGð‘¹1C¢›Í”KÛæÔ(Ÿ¢8_3¦“J9 ø&¦×¥ µÕž'¤ß™ÏÙÎp¯“•k>±1ì8TÓ}@WGõ èŒû€#²]ìU¦¼øÌd#nó…F»¾çaBzì·îD7+à š)×Ä5» ÇDK¡MŸ^TètM•Ét ‹xogÒLL†öâ±KMÞdí• Â+^uMñpÌ7ÐÈý áb02“™UxöŸúfÌæÆQp4 vy‘LJ–‰ ,u3INz0îŠä;ði|GÅ¥/óÂa2ÔÙ‰lBP‡hYég¢ Ä^„lÆè+[C Äû:¹š%ôEíuãYÀöò‚.× endstream endobj 666 0 obj << /Length 2814 /Filter /FlateDecode >> stream xÚÅZK“ÛÆ¾ëWðâ ¶ÊcoW墕r*VR«½¤l@rH" ôX-ÿ}º§{ð AYI´r©TÌ»»¿~ÎÊUÿä*ViŠ<ÊV›ã›ÀöšýŠ}#yžýÉÌ·o¾{Ç+ˆ<Èåêq7Ýêq»úÙ»?§N›;? CO~çGQìýXß©ÌëLsçÃï¶ßteSÓ”®¡ß>|€ÁX&‘Ýýúø·7?<׈•úÌûâÌ« Ë œÝ8ƒÑx•d‘aD·þ%)žj©ËEž¨§J%èh\ñç‡_‡i“-Ã@¤2sóè4ñÞë@Z”{›æx,ê-/L¦ 3%² u uÛúÆ?›§b¯ý¾Õþ¶4KçI•*·NÀ¹ò~ìè¼Vw-µºƒ¦ÆGäcžÊzO°±Þt9Óg³Ày+_Ó<]ù22¦c6½1š$I2;±@7pqì‰iÒÁÐpkÒaM±ÁžîâÄ*iÙx›,j,ÅRóY¾ŒE†]_Bl@[’»y'bš§þ y»Æ`#öŒÞi Ȥﲦ e ý¥›µîá:¡6-  ž½¶Ûjí‘mÐóŒ\Ñ[^Zpú³åŒ)‹u¥— F€™$›c†„¦‰¹ÐšÚ¦7훦p,AJ0Ü4$䢬™„Qh1 ;Û~í;Á•Ž5¥z ÏÂØÉ `²04 ·Ž©€¶|ÆN]‰¼Ýž%¼í aN&PAøUÜ®¦RÃŽ}—Dp7–÷—é=q /ðV¹ˆd<åmgŠ^÷{ßRpíì‹ü‹¤ÕÀCK8T[Y£%@±VwÒƒH¯a‰Å`9"5§yÎ+ÔK^eágiÉ—Q’H$£m{_u p°7‹á6ת/ؤǩW¶46!=õоkŽ0iSTÕ™×Öˆñ-7µë.y¶EWøÒb9híÃw‹ÒˆEGnÎļ0ã€óI,"˜<ãüãï &Üï¦럢@y˪¢®ºé¨Qt>ž:Gˆ=q[tš:v}Í~§m5¢¸<”ØÙRïÎ4GÞ“:®Ì%v–;šs¶V½·3­'ø¹µtXÃ'í MtŽj±ä¡ ¶Ûºe;M:ÆÌJ* ‰$”ƒŸ¯÷V›`2z7»5ù<èy‡¬ÖE×7§d‡/!ƒï—Ñ‹<Ï¿(x¯s¦¼g¶o/4åÊý¡‚ÿ¶“­b«)ŠCïØ^+4’mÙvz43 ·,­ßú¦#`ÃzÔjn±E6vljKgÁé¾3P¢$ìfYæ¡O 3pñšEþø%ˆƒ¶÷Ds@oÎ4`4+®´gCg¹å;—vcÓÂr ÷OÀL¾CÿÛØÁ0¥Y>ì7ÙcäI†áAõb>Ç! 4ûºlɺæHvEð8¬Ž bc¬FS‰×„víôs½‚ ·ýŠáÃ%¸b™]C @óF(Už;q{}Óœ¾Y:Q%º³²0Ú`ÛÜþ–™Ð˜qxB«_NˆVpMdí°ÓýBȹë+vÅ™óPb績á8žåVhdžË=ùé}KBrÖ%›éœf¢æN3‚86tÝû?ù»EN«i¸;ðp¾™’BÉÙ^ëE¢KÆÐy-*ÌEå¯ —(L]f¤÷Æ9PÀÆ%Då}W•µ¦Îã„éðiYj[M¦Þ ðý¼· ûè—âxª,ðàË*{µm­Dï_¨éà:ì9›‚—€üù|òM£4ÜæOøårŠ •£a«¶Îçà7ç@-}¡ÄE8‹Z6¶Ã¡ñÖØÍ·ÆK‡’‹ý%o±éÀ¦$S‡ƒu¹Ñós®kãD,TYB^R£_ǯ-g5ý‘-¥ YaÀ:ãtpÆx‡,lS5è<°5¡f@B†¨Üû »Å¸rQp賘¾y9ûÈØkS¾[9ŽËÂê¦ö벚§f—ZQ+†IÞMÁÃÁ€®®l¸‹?l·³Fl‹ š²îï¬C‹Lóõ¢ÖKe óœs¬“g:K'㢢¡-¼¢„ 8z*`¯Íá—òºPÃÚ3À R3”l~o*Xɬ‡ËÔ. h‘Ô½æÐÛ[½+úªãHîÄd˜ˆ(Ž VwåîüI”É(™læ'áÕ¾UÉ$˜’[F6‡xO%¯ï¹ 4^ª=ÄÈ=JÄ+°ôŽÓ±È‡ŸªÞÈ,aÍSqدkšªõ‹öi‘™:ñAש:Ðô6‚†ãº;N/Ý[gåéèÞ6ÄÞ{ÿ£Kþ•ˆæº÷‹Å¤Bf³â¸h[<9­yìa¬¿GhŒ¡Ùõ †Ï'ã‡iŽwl[ †DW<ÙL¶]ÌïHÌÔÀÔÓÓ~Ñ‹€ÈAÐ…ËCÌžŒvêݤá"H_Ù³§ŠËQÍ4—i– •È™²¾÷ËI(ò,Ÿª#žcÂÅ–ÚÖŽcc,Qá×´`rÏ’Ä» tXœ8ÓD›s¨€ÙÌq–‡©sœâAÐï£ó%ô}Ô݃ê0}½ˆ™C0<²Å‘à“~™þ¡i–Õ+V"uÒ¥´ ,öMXäb0E¯ƒŠJS‘¥ùrõ÷Ølõ-óð˜Ó:[Œ"ä什œˆê2ƒt\ö6{(Ÿ¡‹–¤ýCÙ+Mçÿ`QDn•ƒg:ùm¿ƒƒÝÎÏùƒ³|0hïÊALCæ¦v÷ƒ¾Æ¬Ž‹ýžR~Î=µ[†!¤«-]¾sQ m—©ŒBBjóºÑ阔 ævZg✠ÊÚ”^•ù§­w-•æ5W›“ÓøÏ ÷õȽ¿ðE5Ç{»g§ÓøÐ´ìcd€® „øót;ŽâÑY,º,1zæªl;Ä6¹H[j•àw²Ð<¡T¯ÎÓ·]ç*.Æ9ôu?ÑŽÑ‘›b3QŒï:Ò»UŠùZšq“¬NOŠF6Ù†_[–?ÛTòt d\ärù¸ðGjÂû†îÆ•:$áÔƒ£ìÛIé·05¥á®pV;&ŒJäxaƒ>2…¦0 ]A‡ñ*âüw_•Å"Í„³—$tub80ÎcÓpxé-"‰’± Í¨‘W~)2ü³ÐÿŽ*˜YU)+ûÐgïþ\‹QB ’ ™… úØt‹á/eÎ/J£«þjõAô^ü«L™“àšÐ-éÅ9ާÞÕ‰‹ ÒRNY€ûö_é&o´Øo £Æ#û:Kɱ,ŒÔšŸòz÷’g½(ÚpØÀRžÌoœåCTù,nìCNB=±×‚U­4u}*í "‘†ój‘ßêÎ×Ïî!Î×õó­WÊ,Í–’O¼ÀzxðJ\U>ºÅ”TFáBþÒ¹üe±žg¼¥3çf$€7Éçì?èUCIÏ–(•º~pT”¯cÚ4õqÌÝa€ä «ØhÞ˜E0ÇÅjµÄòöµýºÕ¿õ“½þÙ£®ŽçÁiyѽãÚ'wL¨â1!ÛÐë/^gËcŒœÆÍDgƒ-ºÁŒ,›´åÞ[NÓXFßÒ#÷ŽÒ¼ñ}Û6‹—V£ñó~.¼u;^òºLzEr¨np<äW³Ðq8T\R®²¨®ÿ–ÀíwM*šÊ嬠gárî„%ÎáAæ]<°–®Ì3-§—e5ˆws°ö»Å W)Û–­3ý˜°—ä_ñïžþœ*‹7 endstream endobj 671 0 obj << /Length 3158 /Filter /FlateDecode >> stream xÚÅZIÛF¾ûWôÍÆä,ßlÇ™q€äÐn`0p‚„"K§)RáÒÝʯŸ·qSS†3˜FÐÕòªXõ–ï-ÕÞ ÞMâÞDJ9IßdÇW.6ûnÜþã•'t6Ú3Ê÷w¯þþ½Ö7žë$nâÝÜíæ[Ýå7_¬‡ôÔ™fc+¥,ïíÆm}ª6~luM½±á7ï³®¨+&éjþýøù3Lj/ ,½ùåî‡WïÆchßÿÆó"å³{®Zœ8†Y}Æã©€Oý³ëEøUº]â$¡"©ç;! ¸LGürûËH6ÛR¹NäÅ^Zkë'ó(´á‚ötýÖ´­Ýا4»O÷Æ>Ö¹YÛßsC'ŠÇƒÜй–X¹y@Κ²> 3™'ŽÂjÃÝS³ñ¬zãGÖC‘Z[;“v}cd+¬LïiK<ÇíE®ã¹Êñ4N‹÷¸$œzck¥­>MÏZ9Λ´-Lã…$Ö‡¾idºÕÇcZå-÷ÒF†·ikrYRñ/.Ya¼+—ðøÀº®®ËvßÚuâ0Ø}q_8A* ΂ ŸB#Yâ,¶¥ô‹îÀ»‡þBš¡v‚I­>Ø›Àûqí0rÜ`T®Sc@Yƒ'àd k>ù|Š€íœ…ŸõƒR²7¨¯G…É’À솅ö¼?«©‘{£zïúJl=€Ãîê†iYJ÷°Ñ¡•eÊœƒáAÖpÉ(PÖ¿®0Ò÷GÞÄÈ~íH¾Íà’ü!â=0o”Žœ(ŒÊ.G ž•¶÷-·vhO ·ÍSפBÐìG¦ %ÙUà²"ã@_å¦)ÏEµç>)",²Pywa›ƒòŒÐÞás27·lè¤À—Êö]}©gÀé3j—gû ›ñ>Ê·ŠŠçH8€¬)<Ò_¦ð­["SˆÐB1œdþ(:Œì›Ã§;“O­B¡†#û£j9ÝïßþôîÇ«kÔ‹‹ƒ!î^™•¹±Ë¢2ïtálÁuÛÓNè…/äTdýÓ”'8–Y%K­¾ïiUÕ‰Û[š3¦ânqœÁ5¡iŽŠØü©Š–w­ˆæ‘;'þ€@HGºS{# r xR`hWéÑ´ ZÛße pHú˜ÏP¿ƒ8²Ú^Lˆz©Œ¢(ßîäÒÛ?qCëûMX}ÒjŽucõý}?®jLVï«â#» Í0S ¸gî=WØ:ã·ë~ab¸tª´Ú¯::n8"G}BkkvµûúÐË_»óɼ†®·Šq;#¢\Ó±P9 B¬cÑ éXP˜Ašß²˜¬HK`aΆ±mLz/ªQLÀ4 16r³í÷{Æ#´ tß]'“§B¶mׯ ÞIEê3¥Uæ‚ÿÐó+úCl˜¸¤ï1ê;vÀLJ3[Kù§¥9nƒj·¥`甂yàEi^jš¨>Ã/¢>šV_Žñà–L‰lN,V¢$<ôÂ^èÌÈ@GŸÛ™¦`¦à‡¨0d@{rx§X„J;nìóNïû=o@~‹17ÏEÞ®ËF;I’¼¼Þ =÷Fδ´ã°IÔœ}+ñ¸'™£ §ª÷y"«!NÌ:öa̲d˜úÿªâŸ¹ïwuõº›»Góøº ’ìêu»lA:¢ÂTÈ&ã3ëwõ}UTôòÂýØ4ƒÊŠý¡ÄHd@u‚j2KìPxÓvªã²ß:ÓvÝ!í~WÄgA2ø‘˜/?ôà6V/†k}qÙwyθËÄKå +‰/ÇAçÁ¨%€ÏЇ4…ÌY{Ž!ôž?Sj/öWè"1.3³I€nòšºŸXwxCÉ4”‹(”/R Tëì‰#0 Ææ!t˜ÛwçÈFsdí¡îËœ Þrg—¶€Ôo°“H\€Ã¸íf$Õ|¾H_I¯+»yöÅÞ~‚¥É…/Üþ©¤2ƒL¢}¬º’Ðw‚0šK@¼œN'x´*ðÔ”œCxXŸðbdiµ_´T"ÕL€ÌX¥X;$ƒ`™þRŒYÚfézM4ÐŽŸŒ‘}½º§€_U§íš‚íU-ƒÒõÇ+ºGF»( Ÿ³ö‘(Ö,žÒfoÅÆ¯i¶ áÂ#TST‡œ‰»£xÅWh]Öë¾"s0žÈ_‰v ¸ÿò°.mÆH-LNi%q§^* –pé iÃÖÄñBH€(§]=<´À¼/òÎý}ˆíƒå Uêæ~pËœú‘¨\݉ƒ&#BÕœ=ÞÀðóü¥Zµ¼iŠYsÎm …€¬“wYŽUo©4“Måëè2¸ôfÀ¨õ'51œëÁÎîžé­v¼ØŸKj-¶Â|ÉŸÊrà1WC+lŽ(=$Iu“ÉW‡§ÅÓøî·&(ig:Æ"â÷3ué¿VãK^°ø…9©\Æ´r´]“Í a’™§’*ÎÕ])5 À›Ÿ®\œ±võ çŽ]Ä|ÉüHY·Ÿ»>/jm©ªv¦¢tÑìf…á ?•(ëN3ã¡Tˆ³"yTìð YÇ¡[¦ß:胣¼go5Ny(R橜= XѦí5ÏNOÝRÙ(@&ôMJ!ùm룙̨G&‘[ÓPþ"œs [v‚Η}5¡Ñ`jÅÙÊkVwz1Ýã}V5í] ä¤@ï3W€b¶/0>Qµ5·H'è!{ŠO({ÇHæS%äy^ á"·†¤Ç+#°íC&©ƒ‹Xìööv=ãs°%'úÛj.ã$:™Ü÷ "Væ ø÷¾à·Îr„{œç¢sH_g§̜d²èxlRPÙ홓`*^5½»â(B²4¦@“7úóø}Övå¸Ulæ[¢Ä¦;Á(™âVô•±?øJ˜™]Ÿë©Rݪî¸Ñ5giÔ²n9(ƒ‘dHLJ2R¨ZMv‰QbÍÍ­]Ñ|©ú|;®Ï3³‚DÅËÊy8b’)±rŠ½Ç‚ÞÉ]wzèÃÎv(ÖÀ•óõ.¾Õ6éË ééÀ#üô]–$C^,KØib…´ËY)©q)ºúߌÒÄxl5&ͱþ‚vêkëßøX÷Ü©³‘39UêãÖ̳ù?è 5ÞÙ| Þþ!ê¿ßu´Ï endstream endobj 675 0 obj << /Length 2711 /Filter /FlateDecode >> stream xÚÅZ[oÔH~çWdµ8—Ëå /+`ÄhV!hWb¨ØÕÝ5qÛ½¾2¿~Ï©SåKâ†À‚PÚU®Ë¹Ÿï‡„ðÇNòð$å<Èãì¤Øß Íl»=¡‡³_ï1»Î‡…þlåÓó{^q svr¾™u^ž¼ó~ÙÉC¯ÚSŸsî±Ç§~ ïe}e^ß6§>ü–CÑ릦%}C¿Ïß¼—‚%±—œ¾?ÿíÞóó‘ Ew¤WÞ"˜…|AqoÅI’Åã1QýGÈR¼Õp—y%¸”EA!-ß½—ÍŽäa²Ì­¦³8'Ž^!k|H¼ºA1\Ñ`Ó´{ÙÓó5Î7Ck×[1©¿ú,‘w¾Ó½¢ß–8‰V•*i®ßµÍ°ÝÑÂ~§h¶S}¯ëmgÉNædû–nŸñ€ "^u¿ÑU岪º5f3ð˜;fe]®ÁÉ|”ÈthS5ƒDý¯Î"äù¸1ûá¡÷ïFyèI0§"ñd¯Ê‡k7gYd‰;àP„ææƒlå¶•‡̰µ›}β M„•£ý¤%:Ïó™šxžy$ ó…`ææ+r³'†JvœÊ´ùq"0ë®vºRtÀ^^‚¶hºZ; Ú¼¦¹²©ï÷4¹m `tAðAvýªBâ€g‘‹UF5ìë5Y$(!Ÿ)!=Sc— E$$^«Àqb+°Êë‚ø˜#J ˸jI€&Ì(1÷0Ïž ëÔxŠ}(É%Š®o1ŸøY ,±…õ‚Äa‹½}cdO¥ê¥®:T»±¦Ì{zíÞläPõq”Ù»`Ú1e˜4ã-E+x¾¨t}ÙÙsÞ¨uIC`áÉÂöÍ6ã¨Ü5³Á_²q Šp]­+b•gxL–ªv¡óЪ(ËI¼W!ftÕøçÛ¨æ³$`iúc`ÇÞ ý i‰=T^ê¨åBv LY‘{Ýudî0Pmk´*»Cº<ƒf­û r¦ÜÓãïFµº±™çb “;&ƒ‚Xʰ ²Üh¿Dõ€ßTu ¤Qˆ)p½mUÑW×ôN‚`¶µ1Aáü¦IÅuÛÔ{|NºáE³±g*{Þf¨ b`ÞØŠ=‰,êvè?ÈO¿<Åû·ŠY˽êàúÆôÛPi¹*Ì8Ä´…É#ïïz!ótñˆ ³™CüÁØÛ^"ÇaJv:¿†‰âmhöb€sÐDÐ(UkÅü¶ÙÓé$x šÍãÁ(þO0B†r^¢M%!&µ’­Óu×Câ£Ás"¢|6ÇöÀ1.»X…WFpXBO ‡½l/à¸GiÈ={ÕjfGl'ùÝÙOƒhŠ©ðFYµJ–×4ÐuQ ¥*Qÿ,÷^™í•îLBzˆ1(öô†–ÚÔîö‘ ¿Q©H¾dÀf® ÜvmÓåP×SX¢„Qêh Ö8Š /‡#G‘èE[ßH—¤èÎäÙÔ£ØÓv0á%„Š5áhÎxô5¶•¦É\¸6O£Y×U#K ©É耀ÁÌmäP!b¾´®AfâÉÖpP+<ŸAÇLXø‡ Ѽ¦¨Úr±™˜U+[_à¸oh§Õ˜AæE9´ÆwÍ¢Z¬‚ôrjœÐLlÝR@0Ö0ד )Ž4ˆá7ÚܘOå“ù žC Yc&øp¥û]3ô4øŒD·3‘ßÉPò¹¡n /P5aK¤…"Ý’Dì$Jv”5ÌØÔq«ˆˆܼL%_6Ÿ8ˆE<#s ààoÝÑp¤¦ˆB °Uá(€&]³mðú÷çÿü×i{O,l@=ZT¡>Éý¡:–ÈM2ÙñD¶ˆDóL¦WrB>Ët«‡¤ ÉEÍȽHzcê@“z… H}ºñ![£QªÎÆ+‘E®ìŒ\ÙyC§ÖM üpÊ&`åû±Y!V@,MÇèp¿³t&o$&oÐäD[cglˆ®Iºt ‹ð2 ñ‘b@Àß+4Úµ€™ÏË<„Y[UûÀDá_ –ÈÅw0hU¹Òp‘ ÌÍÊRÔ7k‹’{´z±e’C ' ˜‘ôx´ß´~§Ñ&WÉÃJ6dc¡Ý¢t ŸKµÉUhæ¶–ªàûŒ‚_†õiƒ™T>Wƒrç!Ô†gŒ9˜Áéê…¢0D©,³8ÿ’&æl?X YŒÁs2”[¨Ç )Ƀ([Lõí„[Û2ÞýÊ _n|ƒC®[–L€Wúìñz¦æEÿœÚ~DUôÄÆ1]—¶`›3ƒ-†v²£eV=ÊîBxôÉdVX„™u‹ZÁ†Â…åµ3Á` ËÀ-,áSÏãgÔA" ½×˜yÂŒ¨¶¡3ð%£2ïE±,G¡Ñì0oÁjý Ýß§Ý袸¶njkc3@)P‡¦¦ÇžB> stream xÚÅZ[sÛ¶~ϯÐi"Ï a^À›ßR×é´Ót:ŠßÚ΄"! 1/ HùrÎoï. )™rlÝN&!‚ÀÞ÷ÛE¼™ ¼YêÎâ `)OfyõÆÕ³j=£Áâ§7žYçÀBg´ò‡Ë7§Âpæ¹,uSov¹ouYÌþ˜Ÿo²m'Ô‰ÁÜ;;q8ç?×'~2ïTsâÀ³ØåljZÒ5ô¼øô ^†^ÄçñÉ_—¿¼¹¸ìÉ}ÿ‘ôâÊ{{n°GqoÃY”p木þÓõô©‡Üy>‹`Æ¥U?Š¼Ì” ‚³²ÄŸ‹¶¥™*ËUÓÒäª1"…XîÖŒ6? Ä1Û;^$=…’÷EaEãE>2n×]N[eªsò¦ª²©M“”…¼ÿÀªB”)*7|ÇÞ¼m³µa}µ«µÛ£lE Úô|ý\ƒà*:e× e¤y³Æ\”è”ײ^ÓïÅhYïiYVʬíK ûWYÆE]˜“ù\ŠÞN)"YÇ› þ?uFÈb?¶+ÞÒ^²µŒ´F=rp?žwR;Ò.ü§âŽ0œ,JžÃðYöŸ…om¦²µÊ¶cò7ø²QWægfè·[m@"ïDA¯j½ÏÍctã=Íb¦äû„~0ö„B\‹²Ù ådEál³ü Íyj{0/±Ÿ¾;qBž‚ÙU *à™cÝ o”éçç\Éî3ýÎÔzW |4³RM5éµnÈ’8S»ƒKgNq&Õ< +¤7*Z·s®á|5S|¸0Nû]sˆWÇ„[G!Žô?È[Rï÷iôŽtÿ½çÅï̤ç»Ã0켟 â—öÖž$”ã×ìÅ( ›Ì—&Îξþé†.üõÌúkT  4režq÷>È·WÚŠW#ü³ŽÜmp7ÎrŸB}ÞÏ—YIö†´ÜÚ ÙnKš!¢»Í‰74¶û¶ ›YÝtš„0+ëâñnúÞ>f$4XÍKaPAÏpnb$J“`CQ!•6p)lÀ‘À“µàâÝÅÀJõʣ㔣.®dY‚V+ŒuᬛiŽSý‡•;y¶QÐj¤N”+Ñv¢M2#—÷‚ˆù°§ã%,zXU¯­NéÛO¢Ø¬ð@¬‡rñ8sÓ³iÉ„:JUiÊÒÈîËðÚ¿ì áþ5% AkX«õÍç·"ßuÙ²û.•£ihþ c¶Í¤^—>´›~ÁçÎöPC¿ìˆ%û^Ä‚È æ½ã¡ëÍÏ›j[ “³#œ¼ùF”[šjïÚNT4ÖIU§RX’_v-)^iû§&€\3—ðŽòÓá…¯_øì–~€¬µmúÆÙ¤66Y5Ê(¦Ým1ÇÙ»gǹ‡ä·˜”è72¯1šÅ®®{̵ IÀ_’~ƒu±œ4—%Ã)¯mT4 ÅDÃÇ`›iÑ„>Kãô9 UNÈ´Œ¤7¹IÌ’Cw,-”´‘T×Wd)X¶¬ÒkH”rL2 î¯\)\1`` •Բ)ÄúékÏ(?DYB$á´¹¢vš­.j&å UJPšØØe! ö½µÑÂf*ŠÂÖ„¹dƒÀípÜ= ¹‹ÓèYz„z$wBª¼¨D§sš õ +Œ¬í¿ÚQÐA‡lþ0|¬}šaMlª_íwˆ+Á¶/€Ž4Èu*r÷]8(äS畼鉽8¨åšu-ÿgH¶7z¦JE¶÷o¼† ôŸ#­Ä˜õYãuÉéð>àÁ– X> stream xÚÅYÝsÛ¸Ï_áéK¨öH$’éS.—´é\®ÛÓ>\3J‚$ž)’%ÁØþﻋø!CŽãÉMÇ3&À~ïo—ì"„?v‘‡i9Ï.6ÇW¡^íö4¸úË+föù°ÑŸíüñæÕå‡$¹`a‡9»¸ÙͺÙ^üê½;­’ÝÊãØcoV>ç‰÷±^E™§ºfåÃs;lTÙÔ´E5ô|} ?&Lp/[}¾ùÛ«÷7#I=“^Üùˆ`Æ Š3ø5¹X̉ê‡,Å[O¹cQ `%¤]T])¿¬á’ͽfGädÕZ†ÚrÓ›_ “<6JÒøXlVQêÊZö´Rš'Áïå–è8!Ú7”øLa˜ ÕM·÷×ÅZ‹^V¨‘8òúfè6HQ˜u;ÙÉz£éa!ñëWôØ­™Ýò^ndêÙ®kŽ4‚kh€lTú,ýr×ɪèhðÞ”d´¦-¶’€ ÜgqÀfå># ¤D±Š®,÷e­U«M·bÞžÆ z’„_ðBÙõdwðnD_ÔK‡rЖ+Œ^õ{ÿ8Þט“;ùß¡ì´,`ï®1/«¨t᱓…: ä°¯ë˜=R±8¯bÙ÷¾Ñ‹Ë„D,ìfknuƒvxG2f¨·£[êƒD4?( !R{Ð;C›ßù’ì®û£€'|¼¿>ÃP¥K†TWøÇ¢u™òù‘[ž`UA’Ç/qšMsl+9…©;”UÓÝÙû¢4¿œc' ’TœUÐ#ÕsD1;§ûä"r‰Ç„BÜüõ곋¡8 R–Ù}oœT†AÆ™ÝrÅÖu°F#+E½uU j³Ieõõ£ŽRŒo\¹ÈQÌ覒fl«bƒî…³5ªàÁÉü˜ÆsPýp<݃‹‚|AÄ_±EDa6×Ý•¿•ý¦+×Ò׎íÇ`-ãT³þ b_(¿…§|0¢#ˆ«aDJåJAR÷{Y;•Ÿ¤àlR¾Ÿd‰‡©+Ô5dØ<ŒÑÐW>óNŠk<ä:4dp¢u¦O³²¦çŒZXW¤Ê ®ßöÁÊ'›*ëýx×¶ƒÅGß¹bÑ™LY ª9©›¢Òù#æ:‘âùηóØ%!üš0¤€“ƒÛtmxþþš€ U£i´êó™ØËX·ì‰ü§,{ƒôú&ÕŽ#ÜŽ¥Ú3@ãh[:1£n˜g@Y¿ƒlHÃÇìÄ!;aç\L½2Ö ½]5õ^gmxL`/Uon8˜“*ÌØˆ¶4†Ô{ /yh'K‹½`‹&Ý Œµá^¿vUÀ,²Âø“Ó=!Ùæõ9«½^j–×o¯öy&Ÿ"0Øc‚ôoD&Y”x;Ë0 ­¸'—©`z¯êõ^nlR¿Ö¶“Zå%‚2½CŠú¶7{êéÕO…õÜ™åå¶ž ~ÆX .8`ŽèiÜO{ýÙfG©²Rî@‚á”3,L«$JEA–çÕ2€†O+ÅîögÛj9=Ô :PfìݬàßÐ!Ôâ‚Ê)x‚mÓ jö4˜Ct˜Þ¤ÙZ´m×´] ±Äù±Þš B’e" " '¤nFJ#…ÆïÞ^ýtMÃ)B¥º–Á⮓×t1„¸7x æÿ>>î°Í4È–y /À’¶¥òoåd…f¿¯œXj8¾¹•»b¨”­r¡¼©ûe±¼6K%Ž@­¶ ñT(Qh˜§/ }σÃ~’ƒgmK•O§£]Ä9YÀÄÈ6$¥Ê݃ß?×MÕC‰¸uK+ ƒ(NnÝ4¦R®‹ÄRSJ# WöÔ9 —¯0Øn'«í™ é&áÑ3ä´™r.Zöøí¿€N=xýÑ—´sÂÓ^âÓçZZ\=^‡ÃrGO­p0ßg7µ….ÝñØ•6M53©e&õìí-}€¿Õ4í¥+œ|Fø §áI@,¼ ïõn+¡l9~—ôÁ¼mÓÈktü†ÑÆ¡@J¾”:jÀ2vgò¢°ï™ç(°“¼‰'¢ØtÏNOÍhß´à§Wc)GèëʪXWò)(Ÿ± JÇà“ojâ¹xœyÊöé{š…F&à+ékøÎ¿<™ê‚ÉmŸãR®É}g„ËB–…üpO$f­®/ªiªþÌGÅ|BúÚÀê`§`}Lj癧a˜¾Ð¦W £x´èÌM–gª·0 ;QiÕ[k™ÎZ$²lAèž½ëú˜ÙTåà¡ÿ9SÜ Ë鸓d`¡G'R0«¶õU”µN ´8o˜èrôÀv•þfŠ.Ð endstream endobj 691 0 obj << /Length 3041 /Filter /FlateDecode >> stream xÚ½ZK“ܶ¾ëWlœƒ8U!D Hê’’¥UJ.ÙN­Ö•ƒíJ8Ì ´rÄÇ®6ÿöt£Á×,fe¯í”J5`ãÙ~|ÝX~À?~‘I±L¤ÅáY`¨Íî‚WÿxÆí8ú³‘__?{ñ6Ž/xÀ² ã×ÛùR×›‹½×ûüØ©fåGQäñ—+_ˆØ{W­ÂÔëšzåÃï¦/:]W4¤«é÷òÃ茹^¶úùú›g—×ã1â0ü•çÅ‘,çæÐ^ÈT0 :³j[£nUYUãç›Ì‹›|§ð § s‘²ˆG°Ÿ™[ÕÈÚð™p¯þ)à‘jZü ¼wo¾§ÆAÿ‰×ÓWQŽ¥B Øq0™{zŽnOËä¸äí*޽Ée¾.ÍQ.üasŸGŒÇt‚²Î7ºÚÁÔˆÃVÝÞJ¹ýbé}Ó(º€òÞrt"‘˜‰p`¨Ôë&oî]¬‹€aË´ËçÕÆµh°0MÇEáŒÿÎËÒ¹jÌR>Žd+¸¿Ì{?g $vÀmà#ôм"êÚ°išÃ$O¬`8­UômWôÕ†tìNƒ„gM9 “ñF—Ú€'÷ëÊh…=GëT‹L°$Œ'6ÌDóA~aŒ÷'Aý2 J“Ðp.– ™ŒÇ¯_}íÚ7ä,ɲ‡ÚFž®6¤x]K„FíŒÝ™Î­ƒfÆ /û¼]áúOAäÔ,PWkkÎzÝwãäÚ.ømÞu{eðVoJttZý*Ý“*À½Ññ×öWÁaGî– Š 8•߉^/ä÷­ÿ™´ï÷ŒOîhš0Š”ÕÑè\Ý D‘²EFLk´Bü8æhÊØ2jKs‹zW.Ú™;ÝŒ¸|ÿÏUy¯è‹äoNÙžQ¦,cI’Ó¥õ\ÈâÏ›Ê8D?ƒ‡À†jšºÁ¦ðnPuÔ½[7¶?oàöµGÙàÇ^ïö%ü7š¡ìès‚ã‰޳­« ­¸ñïèPþ6/ÜÎ7LçÑYä-í wOú%’e±X*T»¯û$²Ák€ó ¥4š½%†ïS¼éNÑW[MéôÁÒ`ŸÖo¬}po”PK={뾩§Ù=Ái€þ˜ØMkl†AðqO#0Dè2'ãÂÎúôÄÛ· þkÍQÃÝ‹ÂLBóaO±ŸGtF• ,u™ ïr$` Hg¾>æêŽßK r¢3ïØ[˜¤%hº±À{·¥º`Fc½­4N 0‘¨Úþ®ûö­ƒSšyxµH†…ü…è¬f lNÆ0™â7~ ³$R«º#BÞ¶–aÇ^£âÔM„£E9Èœ"J™èhäQÈÐMk7êìN d€=Û¦>Ph‘ð’›¶sèÁ5d0înÛ(ÛšŸìÖŽºÙùëÜ*zi`Ÿð¦ìó ï©ÂïäX#afo­ªÍ€P;Øoóu{UñrAÎ œ°4ž]L‡ÞR#KßûŽÚÝËÜV í žZX²ÄÁ›™½²ý5ýšF¸TdÚSˆTBÇÝM¶cZS)e²9ÿ²Œž#‚Î!Nzê@k·ôÙ(É€Œ¦ª0‡ú0rL‡¶k À)/!G›–ºsœiŽœ H¶\ÀÀ;p-%Ê“Ó —«Y$'¬mMÜÖÂO=âÁSð¶F3ÿr¤£)K£øA2ú§LÊWI2÷Ij ª¤1àÄh“둼Aºˆ(àNï¬DóâÆªNaeŒ§Kf žÊéY ¹q‰`þJô‹k·Œ¥SÈ8µ.ë ÌÅ$=ñælä’ÆñB™LÚÖvgøŽí$üBF#A+Âäi‘áLê°„Ï£‚„°kV±˜ÚvuCåØl´8úÒö÷9Œ½zNmÜ·º©«™ÙB‡ñ5ð;U¹k½!ÒMÙovänà«oUÓâjàýwe½F§o_}ìA—e¬“ ©*‹éWµL±Ð›!™)‰¶Q¥¢@²Âw)öÿ+SœÊ«[T`„3“·¢zšK߀bñâØÞÝbÔÄ ӧ˨b°D1Õð€n"&ÞÄ׺œ•º”-:š@mä C6Ôîâ”Ðs.ý¤À埩¢.¤Cd²|Ýæ} é{w_žÉÞ!¥žä¹ÏMäÖ³)›@)¶y"ê"€» 3ñêL5‹¦|r+o.ß¾úáýõÙ×ñej‹‹»@^Œ«^]]‰|r¹ø6"Bï‡V'ô@5îH¤ ¾„GSð/µ}±ry?áDÌ^«ºO_Êß(Îs+ˆ©¼yú’N¦ç§l!l.*¥'ûšìÎ/ñ1ž¶ Ïî'‹&ç_‘LDÀYœ> stream xÚÅZKoÜ8¾çWx÷2rqDŠ¢¤ÙS’I³ ±±‹Eft‹ÝÖX-õèáGûÛ·ŠE½Úlçx,²D‘ŪbÕWÅægüñ³<:Kã˜å2;Ûì_D–ÚîΨñáï/¸ÂÀp1òÍå‹ïß'ÉXåüìr»œê²8û¼½Ö‡Þ´çaÇÿá<”2 ~ªÏEôms³6}ÙÔ4¤oèùîâ^J¥dÀ£ó_/ÿñâÝåÄG"Ä2Œ#qÌ£xÅro“3•IÆcIlÿñWµÛËY®„¡\0„ˆªRÿ: ]L+ƒ5ÝP»q¼« Úó†vYvø”AÝ @îˆØ ‡ƒÔ´½)ÜÀšÂrç<(5õöN€¦#Ž6& ì(9 yÂDò|;K3¼.~:ËnÅiÛ¦¥fk¶¦5õÆP·0½qêÆ®®Ý°A‘`)ÞÞ¢4Üצ:P MŸ–±ù« ¿ªu…œž…Ä[ÈcÆNnp̵®w§ÄäöNbJ¾RL¼"Š#–ò…ŒhˆZÉX¢¦™L×…CgÂöo®†oΜ3«ñ‹ïÐtTÝê¡ê±#a—Žze Øšº³ "€,=,ñ$b±ã½‹„¥"G0PCœ¦§iKLJ=ÅЯËʽØÒóiêÜaG“ I{"KYús\8pƒbÌÁù‰kCCknËfè¨çö}­qR ·ìT>*É«yÅY$óÕ¹à܃ѷ%žz!Ae¨aÛ¼±–þÐQÙNƒÑú‘²Ô#t[³·ž‚† .E|¼—ÐÂ<Ð7è꽘µþ+}~yí¦Ýµ=„!‰Ýñ¼:5ºeÂ÷$Ø;äL;)·æPœoº+ûk¯5Át [A·;÷eÝ´á¾)ŒO€œgŒg|ü =„grÁ™à⩹ý>xçS&“x6a¯È(fBd„…xv—²,Í—›'<µ©¸L'q”NOÚE Ðå¨:ÿÁWÎ}¼–æí¼¸„å`µôCoCËÞ†^gŸ‘t,–Atús$ ±Ÿ¯$}uûf·«LØõº?a¡‚åé$®_¢$òÉI2!c¯˜¬RohM—Š€™9 Îx°±ª„ÆŒ ã¼u |Ô*†–|´ÉO"q +àecÉ™®¼l{?aèÆQγ¶Fß8\â®3©ÆYÙä’AyÉÃØL¢nØAè!ú´Ù­|h:7Ëô_vs•®qçºëö¹°ÕT>v;ÛJÃ?ð<¶»Cñû 'ÃÉÕg\`å×êi§ÇqHR€iüy!mçÉ*¡qb·K>Q¶¢F²;ò>ñ¥›q°y7>.R¹ Þä q‹|i)ëÁæ öMëZ]s¸ý—dìÐI ˆÀæ(t®"Å$—Çx¨Ã¦|œ0Ƥ¥Es,ìiÀ÷˜«áÓšâ8Ìf)[½1ôÎqÙ“3!Þâ+\@ø±Üv4K×l{Ýäò-ÃvÌ6Á‡¾¢´•å IÀ ¯UøsÓÛô*‚±LNæù Í‘lã Rû¡­‰Ô€ýÄD|Wýè´K'’O.Ç!4œÝÏúlÅà>ód8;ÓÿN¶¿V=¥Åee5ìEq€ËñÔÓ&RØDë[=ŒÁxO×zýß÷ÌìõÆ{¤eÆ&gv¹¬Pþ”v”M»Ž–U£É\ýâ•ÿh*Áx”ãѼx}áOÉ9Ë…:ª6T q#ƒEÒІ鮹qI„åX&‹¢¾nà#ߡ̶ưæÊF·Ý_ü2ßÓ<~f!x6Óæ+ßÞé.4EÙ‡7…9äçµ7 j“Óä “q4¦àõü;ƒPçOfÖМCBW:wôè ¥,Í&›Dö˺0uVeíå@‚Z$T%ì&Rjû²ªF¬çŒ£~EöS2Ã|Q ¿HT._¿ñ1 ¢eÐs”`:–¼È6C]<•¥€ •Jµ×ë+Л}t}s"åK–u%Ë'V,±,Έ`x’OL,}ÿfpGû}yo\Ý®t€l4ÊCñÉ2Ý7x?Š„|iyÔ9xJsç5–œ‰|-1ÈÖ7×(0Sa³ m³ ¯†íÖ´ÞÅ2ÅDhè—\ƒâ™u1œTjÆÂk]8òg¹¥‚×”b,O!µém©1rŽ•íº¨Èä¡g=/<á±¼0]ý•>·’€|ÊV— o³Û¡¦·xAh_^4ŽÔ©©±&I-³ž‹ü$X’äj}Üý ¤vt#…;=[ô'÷áT¨ô&€ñòZê”Qx­ÿñ* ”ùñÆîŒ¾5'ö<`ÝNCè+(‘°užCínáÛ¡}5¢N`D± 몚òa [Í[zM„©æ.÷ñ0’êbÓ:%øÞ”3^P<¡tqº Åë-ªj`·¬ôí ÅUjÛ-.#,b3z.ˆ¸‚ÎM]öí3];|A€ð_FAÝË,2]s8u5óÉTÆ{^›×DÁÎæBÜåDd÷=µ ¢Ìum-Á¶lô€OLs…‚O`q]™r¨(èz+ч¿ÊÎÕñr¿º¼—A¥;G™‹Þ =åÏÁ6®`ðÓ%£û¡5ÝÚÙR*Ο-ÏŽn¡e6£7íy‚7$ ^ÄØIÒ‘wìdÄ%<ÿ‰wþÞP¢Ò#»xd‹ÂfDZ3мS&LÍ–f%(ÕøsЇ½>t~ëK=JÑlN]?ƒ×‹f̰¬æàRþDTæ`ß©'-¼¡=µšs£ÿæ¿ÊMóÕÕXw«O±œæ,™oÙ¾‚åÕÍ·«U€:øÑ=ÜÛМ8ö<OîCW¹Ša›«ßa…e¥,X>]³ÉgÑ®€ßñïGèþÖWÚ‹–Øs¡3ÞPãÏòþÞº endstream endobj 700 0 obj << /Length 3234 /Filter /FlateDecode >> stream xÚÅZYÜ6~÷¯ì>DcX\ñЕ·×Y8@²í}Jò –ØÝJÔRC‡ÇäÇo‹ºº©™8Èlà[EÖ]_ÉïøÇïÒà.–’¥*¹ËO/ó´=ÜÑÅ»¿àvœýÅȯ>¼øÇ×axÇ–)¿û°_Nõ¡¸ûÁ{}Ìνnï})¥Ç¿¼÷• ½·õ½H¼¾mî}ø-†¼/›š†ô ý¾yÿ^ª(Rç÷?}øæÅ›¡¿“`yC1ä’dÎcòð.JãRÝ?A€Ë^óÇC%!LnFÀÀ§ËA#ùAä²3^„Þ¾È:ûÔ ûˆÿé‚¿föH¬f—Š@²þµŸ“4^û‹Å™”|Õ…kN—É8Hwß6Ÿ.þp.²^ûºîÛ‹“Q!Y‚²ßÕ†…"¾Õ]YèŽ8usâKž²$Rw>— „{Ë\¨™±+øVÎ>XËÏÑ rxY\ü¼9ࢣ5ËŽ–¬›žìŒõ5C]Ð}f¬òrjZý‡hЧ©Ð}4QÄ"ƒ  ¬ój(Êúàš;äÆ^s÷m–ëÝppM &#yc$ë)g‚‹+ruÕœÁu]s*¦Bµ ˜“ÑÐã…¡Ã#·y„1±tØyï½ SðÍäÈ~1ùeÉÂ/­µúÜê<¤ «)m|Úg“+7-½jöN"xþ9¨øu4ý_7Ì,é¦ñ5¯<ž¨OY‰ˆ¼”EáÄ*ÍÞýäb"`Â'bjý€¶¯<ë!.úcÎ¥ÖÑåm¹Ó~³ûY罟õþ¹)ëÞé’‘ IÇÏ—®†ëöË(TÈ’ÔeÅ(1íôÎÒÙÐ{Z}6 ê¬wǦ8b\Ä66ñq=çìÆ¢É1šÖµãÑì®Y1‰sœÒþ¸w¹çtQiô#2ˆ½·=QsÁ›²îÎe‹‰_ïL´¢7oÚòzú–œ¯íšú‹Îi—)Øe´ÊïFöMSõ¥3Dq®X8Ûƒ!3ñ^]ßœÊ_µk%pZ/„ž•˜W–4šÒý±)¶,)M“¥ìÐ(†N“Qô"š 䈴[oízh?ÅwóRWÀk[ZëÚ àZR·lÃÁT¢Pþ1gtò³96’iâ}güQñGý1eaºRÛn(«Âï³Cçï›Ö/À4ò¾ÙÈæ‘`iâöGlù£biÈþ¨Gì7ü@ÞøÙÃ$òFäâ`ñye˜í`ÞÐ+@•eZB·èi­Îzt^‚ðUNwkÙ®Ò¥J¼î-à iM;/Ž:tô­Ç•Âd‰•¾õ™‹?TÉŒºÈ C¯¦ÄP gÌ–‰oöC=\5&à;_€Fc™®RŠ #ïg€Fæó¾Cž8¤#d».qä3Žï«ËønŸ •3Òñ0„¼¾ ûÉ)ê)ZBH†xµË:CcA·Èþ–'mpÔ@·­> UÖâðô'«É1QéZÿp»ùÒDjEUg$x„ŠH8xßôG£i„žcD ×UV†ì ñO¨„…rdù+ k^‘HX~vƒ4ˆár¥îscnÒûjèiÙÒþ¶º* 8F kkð>¢˜_…ÂO`¨uV¹ÈTŒc2²}Y;ƒ£ˆ!©§±]œò™pÔ  "LÓ°;“Q ¼·û Œ ¢x#&­cÙ:ÉÌR­0WFn W›L¾3îÍÂb.“Þ¹ÖY,â%B}EšP\ä~ëÃGmk„z¯Ûrvg°4[£æÀœM- fÝ/3ÌUS^2°¥¬ 7ð L„ Ý%CûÝJ6”@ž+×8™²`ƨ¨Àî¡ìó£nòkÒ°û”IÊžnWK!LZz ¨óå–áÍ<«ŒSô%4…¤ ¿]Ÿµ=]fôc ,^œ×š‚'3€é®#¦„Z;¢a—;ι¢Ë½FÖV;mK¡®¯.ô®êÚÎ Wanú+4î«Xyﯸƒ‰ù?†P€Õš˜Ú40àÍšjz†ŽèÎ.b醋ìâ01¹ôªh„é‡i¡‹Ñ]Ƴ*áÆh~Iæ­ÑÂK!¿ È“_ç—¥… $1+`çÊûoç±P‹‰d>YMküÂÝ~ï®S`6WÑ”V5ˆÕ€½ÚÖ’ Šº\Ø’0‰W ë‹)7 ¤V|X£† d$FQþU†‘÷½!4¶W‘š©¢Û!¹yNàŽn²j yV¡0ðŠ¢ ËÆ~rn!Ž.j&l¡ä+Ç!Yž7-Á?¼%‹ž™.ÎÂ4ÀQ¸Qx…3M­…OÉôI£µáýËb®«·hWQäe­¦7/Ï£^¾Âßt|D €ý% #Ó˜ÇãÛl·C}S"«õÁ7_ Ášü€ANë…<ÏÖ‹A݉"Âå(ˆ±¦g&@dÞQvGM+_3O&Mzëì—ÖxQ õ=‚Dg) E Ÿ ~ànnÏ)êqâæÈÜNb€Aùt 8é;Î, ¨öŽmím3•Þ(Sÿ¦Þ‡#QQL&7¥ýlVèK[2}Ÿ(Ó:Â×¹­Ÿ­Ñš…´[“2d©Z¥êƒ®Mžk*;b0>ù&VMeÈï©î7bÀÍ4ýâ§K¦õǬò?–]¹«.¾»SDýž½¡wMŒ3 `k1|Bªj4ògÄJyßç| –õÇ{(2³jÈæ²ôœõèÔNÆq'`îÕÍCV:«F©˜ŒV-"XùíX÷Ey»ÍÓTÎÈ -˜{ÖuYmÕá<ù¬Æ¶“ìtIõ(ݽrºaÈB~kÖC¨jëÔòˆy(ÅøÜ[„l¥Ï½HK°¼8þ H˜šK[e, T†¢DÓ±‡k;€ç€tU7ö‰ ƒ¥i¯ü«yjÂ`ñí2lbîtG2#Ü4ÿoÚ‚OºS߉5{Ƴû¬¬l©5˜ÓÆ2óMTµM*âçöÅ¢çG.Õ÷ ¹ýÍn¢L Ó­´{¥¶Ä°ú¹ª/hh««1¾Io½ùEͬZš Hâ0´Ùœn¢RÀÂà1|¸î/$Q:d%Ù¼“ø’úþ†ÅE…0méÉÅæ¤¼ø¾;Ò€úÊFÚ¶+×þ% åsfRCpy»€¢„ó<ˆäÒ~ûÍ]"/¼l(T$1Sñ¸[¬þ…ĆtC%Ö‡6Œ8/ @H\îr9X¶egà8!µ"(ãícΣká“ÇÖV…›ë0ÈÆÉ1© [ÄÏÝÂ(Ú”¿bН6Ä0 úzçw:kó£Û²Àúg ÏHÕZéÖÁ<Ò1¶¹•Õƒ[ 6õ´’8~L ûÇ ŽÆÆ«S‹¹r÷}–ƒköfÓ\‰E1Ëç- ƒP~¦ÏJ1 ¨ñ„ŒÁa;z€{hsÓØôë½=&cƒÁ‰‚ Xg¿4]vlžÞX|ånZ¥3~¼eG²ÄÓçòsÒùf¨Jç\"Yžac£¸ckW=O,Ê)<⮺kã™/Oæ9LøÑÝP!ë(‰wÿyµÉ endstream endobj 704 0 obj << /Length 2974 /Filter /FlateDecode >> stream xÚ½ZKsÜ6¾ûW¨tÙQ6Dàc«rH'›T9»%ik·ÊÎæ`4´8ä„‘•_¿Ýh€1h;^kK‡1°Ñ¯¿nˆ_„ðÇ/²ð"‚e2½(ÏB3ÛÞ]Ðàú§gÜ® `a0[ùýí³o~Tꂇ, 3~q»›ou»½xµy¾Ï½n¯!Ćÿí*Rm~®¯¢tÓ·ÍUŸÛ¡è˦¦%}CŸ/nnàKÇrã«ßnyöâv”CEÑ' Œ+ß“˜‡b!r ߪ‹8•Œ Ib¿y‚o5ÇËXG1.å‹a"¤E(£[3Û',טËé‚#*ÙlwÁ©ÔW0Ômpl¯øFã÷;:{^úØwôP7¨«|›¢9òzKßTe­íÚ»á kÜ~fD:;c B¦BupÅâ$ûs‡|umìõð›ï´R0žDóãféæ»-ʇ›ûºì[vÃñhìÝ´=˜]qÔæùÐõÍ¡üCÛ½ã…&UÆx*Üæºë‚îá k 7­Wû!gQÆÝov}}¿×4Øê]>T==­Â~,–1h ¦8íïb~½Ze½¦OªVð¢—M«Éú}Ó6ÃÝžìßê:?”õ=5;7{È˧}ªÍ$ c·Ý<è7ÁW+‚$QâBxú6 „š›éÆ˲Ì-^Q«ˆAq2y MØèPµÆ¸JRW€y ž¹í|gL&Ãt~F}Ê« Øõ}1t½>zR(ÀƒQ;¾ží#Î’Pú·÷í `%ÂQ‹o(° pg¦8:ÓjÌT¢–¾ý2°Ðû<(¼ ã,ñ{â/·ñ#>ºëlË—Á;ߦJ°p Rú‡²mM¼‚‡w=¾ LÒnitB«,v4]Τ§Mòãj¬¦Leò3ƒÕëM`Û0ÏñÝÐ7ˆw¬4f4ˆZ ëeY´9])ç)ó7Õ Ü ¦¢ÜåEpXxïƒnØíJ¯>9X)j¡Ð T5¢«1@ÒA¤2ëô›²ît;%bB@š6/Á Õ Žd à<ù<øe¨ÊÜ0’)uN #ê­óØ­~÷µÍÜ€lV´Þ=¦÷Ä0QÃtÞø¼_²¤·(ÄÊáT!ùYgó*Š—£öº:ïŽ7/Á9(-e£äâÕ[GÊä<\á‰NåÖçV+™µ_fÂ<ÀíééÐa²ë_‡*ôÁàÀÝ¢>G,X41âø×¾Ýé31íµaH!æb¹"Ý #§(‹A¯H$R…6…}?Ø$ýcùNŸ!Ø!ÌàÈ~sš¬¹jÎ9,ìYz,à+fö6êö©)fœŸ;òK¹Žd·–éù¶.üPö{GSˆÚ@Ï–®ÖvöoíÔº­ijNSi àL>³G˜2ö˜ý´B+Å„!wk´âÑ#®¦×+¤#‰ã3M¾8–™êldi"@ÓOª¬møWM}çj«]«õ*¬€ýÝ 6Ä‚IÅŸÆ›>¡$òÑ+–&#È(!Ý[}*›¡CÂ8ö>àQìDy<àøq.ó¾‘v4Çnô9óÙ颩·yûH+L¹Ö›aÔOYÆ›ÓÓx¦ž¿®å¶.W,&CɤOc²5r²„gTJ†Þí8²Ï6Dœ¾ùÝF´D£ÉW7Þ÷+•jÔªkÈCž¤Ú·ƒ€Iµ¹Ý{iS3¡FÖ1š:”àRo˾i/"¿_*F,™J‘²£cÅ`ÅP@õe^…ÚÒ„¿ èJÇe2À,ª¨›÷Ø Àë(7Я^熿'D¾à“ŠVØPó'ó_2æ¿»zX­â€™rÆ¥”U­yÑЙH€Ñ!Gå?ÒC­µÍäiøÌ·Û3"ˆò©'K£lYy àu'ÝBñ”·ýšR¿M—Å‚´ïŠÔìR©µÖ©È¸¬4óªMf,áþˆ½bÓp(·ï¤ÚKëÚ‰PTƒåzŠðÜöBpd©™èÑ^aœ¢å§_ÿeSÁ´ iØ't"¾lųtª|‘¸l'ª ÐXëbÒ¶c¦×—ôùÆ4vi¦ã@¶zD»¯‘ØŒÉXµÚf®0½–ع*¦;@`Óp€º§íб‡…Ù³m >Xç.r@ë6{`z¨yOÕÏÜó|jeÊlÙz5yù—•Œ ©úì”?£J†Ñ<áˆC‘cT£ñn¨èÁrAõþÄÇQ²½®}/ÌX8¥˜ÂöÛíËÊú-E.ÖÓ ÔŸ{šŸ:Îa´AŸÛÆ­®­À´nTØÝò~’Õ ¤öq•tŠ%ö¹6¥Åq@@#Í—o´®Ó›ôŒ”> >ŒÝœ®h›ª{«VXAÕ4ÜÎ4‘qG—õðµL$â3ýìO¶!nšêd®µ=Q=žWcoÂ]FÐͬ6Yv&×—« O8•w³¥G×_¼5ñgÏûw[Ÿ‚w=¿:,poq'¿ËK2ˆ†ÀÌ—Eûs(E¡¸ýæWÓÈÃâý*Ûæýкbk‘Ù>^Á{Ìœ¬3øñ§LrR¹ùe8Wåï‹âD×4-Û"šï1Dqôâl|CãVÿ>”°Ø}”I{톻ÐmMbnkÌ Æ+~N/—€Ô,I±m¡+V¶Œ…jFù¦È€oðƒù­.ÊŽ'F¾TU4zcÞ®é¡ÕÁ Võ&4á¹´Ëí¥Ž‚Œˆ'¥qnwv‚âhŠqçÒ| Ú+µã.Ýc]9§r|IÆž„‚}H¥ Ö?j¼<›—Hæv+´$F¥ *T”™ ƒ GHLJœ¾3mi|vMbÓ–63S£;¿v/$pÅжš4‰Àü:¯°Kã­‰Hö%㪳‡+ 0{ À,=ÝQ×þ¶v ã)ŸS%¥d*üÔÆ_`Dކ§¤ã Ù­ª¨‹ØÜÓôδ,í’•ÔŠd?3çu¯ÛÓï¼ÜL)ƣє°¨úÜÝ&& ƒð,óž;“s1lW‡Ç®-#“¹so˜ƒÄãÍùŠÀ˜ÇnÚ¸Tc žËžymwËï ØÓ4µÞ`@ÖG‡ÇÒ®¶eMŸŸ½¯àxr‡EÍbœø⦩0ùæŸmitŽjÖàñ $Ëóag<­=á»nì}S ;ú‘XHœ5»ÜMbSRƒwº¼„_£çþØoÕ]ÂÍî{BÔLX9q´´Î`Ñæú^±€CÚÅ„¥0·_,hè[,KWj¨J£)æ?ì{’%"9ó=ô/z ÄBm_»×Ów¦Î.ÇF¬Õ™ã@˜L\@!Ÿ©:ýØ÷v=«GL¦çÃtµsˆ æ»½H8ìšÃŒcã´±¤ »E–èIºYqTo±~ºƒ8¿™ÈÆÂï+ö¶Z¹Hɦ‹[*}‰šõ¶R’c×àü±œŸï%¦[ ¯ò zVrqÕö—À¾Â%“6„f0PJdÆ@k›Ïþ1Dz]Ý"zæÔ§°—Xår°à‰ró&ïJÛÕîbûÙ;ð§ºU=úIce5æ¾ùÿU) •˜µ‡MÒ4×pÞ¦5PÎlêºÑÿ<š­7RÁvñ”ÉÖÚ°áT¯Ñ†;È‘AÕ÷«[óˆÏýboõHX'bÞ¢Š“ˆþ]#Vú™@™ŒÎ.·ÆìX“$8š:¹k‡Œ`Çèýÿù„ƒLkDR…›é¸M‰MZž!ÝWPe·Ã¸†ˆ~eRNas Õyué??2¹ÉŸ‹šé?v˜ûŸµÿ$ÂÐÅ endstream endobj 548 0 obj << /Type /ObjStm /N 100 /First 865 /Length 1858 /Filter /FlateDecode >> stream xÚÍYYo7~ׯàc 4\žC²( ĉ¤M€ JODz¼¶‘´ÂjÕ$ýõýfµ²e­,Û’[äÁù93\y„Þká €Ñx¡$¡&¡# )aC+ŒÃ>9aˆçAXízž¢°d‚614†^8ìù@Â%ÐIxk…Ìóh)à7Y¬Å (ªžQyÒ"@š!/y-Î%1‚VJ"iœUJ$£­H™”)0 B+M=RëiAm„ÆÐY7[PZƒih­Y$£0H<°°‹Á)ã0€¦„‰6)öÈ€²µ8eAÙV”-ŸQí°LÈγ~B{ÐG³4ÑÌØ@MÌÜòJ‚Ȱ¿ŽàG`§“çA›ÈÁ R’‹ÂXÇA„ì)s“cÁ¾&ÀpW›dTàl«X oá>E n GXcdzU “%b:ðuH ƒÈNfo§<Ëî0H„±¢¡>üÁ0ÂY1Îb™‚α¢#~D8ÕxÆsÀœÃ%Äþ\T©Ç«..¢‘„P øÐ+ dŽ[­À"r(;!EL´4t"6šac¤Àá :W-öÛnAÞ2›ƃz?þ(²¾È^–J‘½OŠÃ~ÿã“þ³þÇïž>}^ŽÇåä£rjZ•§£|<ûNüôS¯A:ÎÉF”ÍU’/«Áô²¶„®é\­o=ý{19+?w/—7ž…hçeÅàà×—ý«£ëë›ùò3~[žå£æH1ÊWøóþIg{;-6Ù`rv;µÂvzoÊ‹ÛiÝØ¼Ã>??ÛlŸf}³ ¼µÍ>¼_û,iÝnŸ–Ú=í³¤·Ù>-­íöy;(FŤÁ³z–ΛI•O˪n©Ì/f¼ØŠt°@yß àð÷<[!ô† uY1•kzÝý+z-¹»¼M‰ïæàݽÊGSÞþ\Ô— óñ`yo7ou(<ŸÏêr\ü3¨‹r²8¹\jYÃÝc¯'gÅpé«å¤ƒõKþ•)àêç_¨7V:øGóÉåXqRÖE5¯‘¹b‡úoƒª ÿ­Ñê.wTN†ù´^;¸²úzy®—}ø:ÍEönp‘÷2`Ôù¤ž!×GôHï{Ùû|VÎ+«©ÏÍÒÛü¬”_ı·!™“HT8‹¾¡AC¦þBs€‘ýñç_Õ' ¹˜ÌG£“=qŒMÒ¡ºÞ…§M”:¬áASÁf;Bá ü#Tßöè‘ç—–T8§–t'æjÂÕP·ÍMX3“ì]Uûy-ŽaÜG"û©ÅÿÍVo:Ó›VGó«gÏ&“”Ž›æ‰EáÞim×$hð{Y~Z7ó7ÅäS/;(«³¼Z°R',ÏŠX$*ôx†GŠVH;#Ñç™èFa“SŸ"'4Á 8«4Á¸³ìPe2Üb™È5Vþ?ÐJî Iî86€IÄ Ñ‰nƒ%x…ÌXV_W%à u´ýl Øëˆ[Øë Ý5Iwbѧ{Å"‘í£[¡W-Ô-lƒÔÛ.ñüÒrŸZZ÷ fm•LÜÕz/5dIòK ¬TúV/NGùUáÙwt’ðÂ#ãe„±,_(îè-df#ïWe“¸?å_g{2×ZòÃ’$?÷ ùæáÁ(½‰Y¨“Ù°*¦õ£p&\ܼ’¤õüDŽÒÜrm¸'Ø÷ªz‰ qðªÃÃÈ\U¨G–Än#ÓC¤6õéüü<¯öT98™,¿‘:ùõ Ô'çP“Hoäϵy²’²ÑȈ G­Tj‘­gN½ÙˇUµhÍŸ_æÃO‘§mòM^æi§öšþîÚ©5žôoþÎa‘±9E#ðæn£ý&ͱ GWmýîq‡¨nÀ•¶‹¿4üшkhÜìøÃ¿£ù`Ùxñ¾yŒûf8mLÀ wMFoî¸é‹Él~:.êõREêî^m Ç• ÙõqJÚJ§¶su£Nu#÷ ê¶ª¬ß·v¯êF\„â^Ú…ní¦´«vA}kÚùŽvÁî¬{<ívV(u ;+¿1wÅ®»¢Ýµ‘ŒmãÛF0š-පȀᯣ\#’uânàF^×ò×÷¯ÿž\ÖõtöC–]õåüTËqÖ|©xšÏfÙa¿ŸMaìY6ë@çæÖ ~kÕDÅ”üUÞ TÅd!¨—ʹo@¸ÖpŠPÙøg%ù‹±ÓÍüñäËȯWœè¾±˜NÝï™`S7¦ãƒcØi%=йõ$ùçŽb‹ÆZ[º—#&ù發¬Ç£uK§]’ý 뮚}ÅÒ7¾¢ìlönÕNîAf_Uõ¿ªÚ¡jPª«jÜYÕ´§ª7µÛ»âåÖµ Ê> stream xÚÍZ[ܶ~÷¯Xä¥ZâIŠ¥Eê$›¢\ë}sü ™áÌ«‘¦ºØÙüúžÃCÝf©ØkØNax‡"9â¹~çÂWþ‰«Œ_é(b™J¯¶§gÜÎ6‡+Üþã™pûBØÎvþx÷ìå/q|%8Ëx&®îöóWÝí®Þ?ósgšë0Š¢@|*ÿ¬®etM}Âç®ßvE]Ñ–®¦Ï›7o`Q%‰ Dtýîî_ÏnîF:b)?‘`ÜùˆbÁ£É)¬ÆWIª˜ˆ‘ý+Oµìe,Kd‚[…d LpÚ4¾½}7n›½L´öU5²ûÿ˜ Š@¨àîh€?-‚òZuu ‡¶Ë«]1<ík’SX’ ¶øtOk›Þm:æ­›±{Œ©Ü«êò½=qGÏEåMæ„J²8ÎJMÛ†UýÁl|LÅŠ¬D™iöùÖ0Ú}!Ö0Ò‹Òô*1K³§ÉÕw¾Ð,÷XKRÁy[lÑbT`Þ_ÇI—}>X“a¡Z²©¼14@…hPˆ} ¹Õ}µ-Ð'(.˜r.(ó>/ÃÆà´ðy襘'L‡îKû¾²–Þ~¿"0‘±TGãœv'rñê˜%“4~ _‡¿y Q2 o´Ö>…åX³,ÊÖ8®›pàÇç¼ÉM~>úYYÒŽ5ñ4Þ¶D%<,*Á’(ù|ÕS9 ÁGö3çV|™ˆÏÒâíÍÝ7×bYTæ‚¥åéÀ‘`)Ø~(RµóÑܢёü¬Þ;ަu>6;=‚㫦í¹ªiiª;mô½GS²fØéN˜o+Ükr8“v¯€’Cš ;üb äÑ1ø´L玚ûÞ#Ó¹¿ô½(f*^x¼Y =RéËÐ*VÁv„QVI9ÄŒCQUu^4%\G}âúäÕvºpÓUMσŽiÖF"œž"ÐIC̸H@ä1‘µ3Ùvf÷'*ié%šÅ“ôG'yþ‡~n¡“QÔûüT”l¹•Ÿà“à´ @8?ªgÛSÞ@$}Rƒ U¹€½««¿tn‡UŽPq¸ˆš²Â‘©F éÞ¸éAhÑà7µKÂÌ€ö-Ã#ÔW÷nÊeffpÞ˜û¤&b1¦¿{³ˆ€£ŒàEbòkç²Ýˆ ¨rAÖšÝ$Ù·7œT/Ðõ |·õéƒö YÁÈЇ´Ü/âç,™Lp •+QX*ІÖ_/#©KÜSa9‘)“-ú~:ÿ~"™V£ô6‰î1ùõy(:òi Ϙ’MQT`ˆD:xc:¯ÝJXºHæìá.*úÈK²Æ­ÂaUQ“ÃÄÎ` É7#ðÍXÈçÌ‘(îÌ_½YfÂTš=¦kgÊüÁGV ?E—ƒ‹}hCJ8¿Á®o†¤ž¬[Í—í(±D7@_çT "ñŽÞ¨R2îØRÍÏM}¦¯EøEäüÎA„N¤t ô-£ªèUÙÖ\ÑÈäŠ2ß”f–m5u8ú—I4cõT.ò–„ÅjáŠF :M>—?¢®F›xU¢7Æ"¸¥„í“ÉðÙ¡HH¶†¦ö5¡í›¼¡ŠÂÃ(á‡ÙZã¾Ö˜m}¨ŠßÍîâKÙMpÈ!™óí h×íÈϨ#=ÆÃãàx g¿ç³ 6ïÐ.4nO Šdò꺲ÝTÞýJPR-Ì ÂZž–-=žÂÖ!kMÌ€lV•Õ!8õ¡ß°£3hÑ`ÙRYý’¯c7Á6rêfg½Mˆàg³Ïû²óï¡Y2”EÛ ¯ó#b¤Æ#=·Cß’ÂøRSCejé·µê´k\‚—™^›ãkÆÞ%À«X-À–DÌœøå/ƒ²|:Ò)㣆Ú~s2Ö=úÁ•LYœŠÊ•\óËì¾Ú™¶h†-V%e>ÔcxV=ºGÇðÿö¦]Ëî”b™üXÆ«™cŠž˜Ýˆ "˨ÐP¯‚Cuƒp ƒtì-¹ù±©é–mˆ²+cÚgŸu<ÊÐÎÚQ@ætÂŒÛNÍ2š‹`ÅYš.U : ǡðliö²Ås×/!ðÇiÿI7Üð endstream endobj 713 0 obj << /Length 2274 /Filter /FlateDecode >> stream xÚ½YmoÛ¶þÞ_aìý2P1¢H½íîK[´Clâ\`@ÚŒEÇZdÉ¥8öãwÈCª’Kwib™¤ÉóúœçPtÁ]Ñ"cŒ<_¬w¯"3Ú]/ðáüçWÔ® aa8YùöâÕÙ‡$YЈQA›éVåâ2x·û^vË1З!çIð±YÆyÐwí2„ÏrX÷UÛà’¾ÅÏ÷«Lò4ååËÏ¿¼z1Ê‘ÄñÖ+¿’˜Fl&r³É"Í9¡Œ£ØŸ"šéSz)Ò8ÕKiLRˆpÈxyþy\6Ù’E$£¹[§µ.hpš%Y°7jgÁZ*…#M‹ŸuÛ\S%ipXÂQ-iÐãä¦íð¡ßJ\²nwûZZÓÁD»ÁñªÙöGUã†6²«ÜW¨ÇdG–aByp±ÕÞÔk­É"´²‡”š Z0tK74Må¾€»eHÑ€˜¥V†ñ ®nôvÒš%š…²œÄsvYÝ+¢j)÷Ÿ¢$JàõÙ2‹ KÇß46>F[Á‘ªuÃr'ÖŠà6Gn㘑žCš¦Ç¾ÇÑ>ÉhFòdê䘗ç¯Á» Væ3V½è<³ˆ¿ u%>ãøVh3Ýj7KQ{“r]‰ºúK–^ f))’Ì !þî[Õ‡à™pÛ¶7^A£œätü•²â¶ÕZ ±E‰Eg­ìH:äll0’ÆÜ‡5¡lJ4¾ @íájßAH`zÛ8‡ñª©z£›ÐA{ÂKÖòrÒ¥1¶7#yJRF§ÎÊhð¦)uäp“*“d'n1„Í„¼]B‰z6Õ¸I½hLÈʃ^Ýv78'쨼sþìe ©ÆsüÞ„uÕØõ&OUh^+ä̺è•< :¹ku´ l%^áv•Aý uf‰®ÇEcºÓ› u_i#¡â<Ÿ …?è씺©ö{]fo» ìkÌÆ3L(I gîwá#D?øœC òÚÕZBŒ¶"&ùq´µ ¡-'—iz­‡K(‡OÚKÏi>-b I–Ì€*T21ôm¸n›bBá´©wz ¿šÔ™å ̪~‹ÓÊ Ü: çJH-ØWô[ÑØL¹€¡õÐ?0æµòNÞU†ÿ*›Ñ|ˆñâ'ÇRô„ÃÀøDwn†Æ‡°Ýl”ìÃF0Ã|GäÄäxH:ò(ÕŽ›ô—DXÕ•êñÉ”]3£KŒ1Õ#†¢è‘ª)­a1ϬuEtf^ØVÝ×Ò 0 âMu• RÑmÖ a`ÓÖ5Êj+0 *„<ž¹ÃÍR±9—°C­E#»ë'H8]vðÚšR06Ÿ§˜&‰“à§?U»“Ä™_ïds6b Ž¥y|Œi×ÙFôÕDü…ÇÀÄ£ë÷åêÍêó ì)âtRRw: ±>#Ør°ð¯+ü<_”_|À/jØ£eÛ®Ç xøù·ÿãÃ{p2¥µúŸ.=–ݽÏðqT•M£\ výŠ|×w¢ê}:@‘N }Ò#c6^ iÓØwD­Ár-öþì‰#ànãïF9å9¡:P ’çl¤üyêìí`yâ‡êNŽÀv1‰xÈ~ô;:!EQ?§œ=Oã<¸ªZ;ºbËšñ A® bî…IÏ›ep-‰¬Çʲ‡t»ªê SÚ¯Pi ¶ ؇v Ìºh·5ÐbÇ‘&ôŒÿA%O„å´C}2SBåÌ„Åx$I¦h¤:AÅ£ˆ¤YzÒ2s‰f¦ù5¼³T"÷Vvªr d.$€½†0Gy·ˆœêSÕmã ÷¶R£èó~†¦>ÉRóìÙ‰éì=‰_ù”’ÈtXÏŠc:0*ı iÔÒýñ^wIžà÷'#'IN¿QéOºªò(ÄHÄåÅqÊbëÇÒR𦋡‹ï½öe;(÷ rõ„jÀ·yÄ_ ×éEùç ztwRÙºnõÙÁ†8½Ã+‚RžpIAâ<}~\>ÒÖȨmè4bçÈu-ÔÖÁºe¨fXƒ¤ßÚŒ0hþ_@êÝ×1_JÇ×ÒÑ[9W §ì¥ô-(eiù#•;™%¿Éƒ·LCÚñd-¾ž#…UcÖ÷ÀŸdïÛņØu@o÷ÞÝâ)œ½žÞÈAú Um9§Þ(l›úÞY®ë-³­ˆ$vƒ¦µnvoì&ÐÍØû0å8Ø'2K*øœThk!©Ð$LŠ~èäaFnAÀ-ž;¬2üÄåLle½Ÿ6»fÎâ·nQÒ˜0š>h?VÍ5 `»C}nMzu•¸ªýw…tÜÆÝ^†«‹7!Ö®7Uíg©Œ’ìK$§xôf<~L¶>­yº´á†#Ô!V÷–ß¹öôøÞŠæÐÏÄc—£ÂS ÍG7ê†ÕBݹ܉îFÚ=I§øÚy‡ðÍ=;_T}-OíËò©<ýƒöµ`ËÒœdY<ïàþ½s£Oß¹}O‰kâ ×7~æÉËι¾‚œ]•C½–W Ü¿¾f]çXžZ™ëSa 4ìhÍ;ÓäõöîÕ£o’“˜Ïîd]¶Þ ×$™Ì—"£ún¤Ó:sôõ8T¥qL¸«þê« 3Ý]»/—’@Km¿e¿”dEöüöûè»(s=CÓ6áUíža¨çæLÖJžG?;luÑ™´¶crwg´0~‘>wp,mòZ‚a÷”™î †ž*ŽzsÏøš œñLéz >“iKVXÒ ®…çÑHøTUJ÷PG©"¼ˆyI:¤AÕÓ–ЀL^„WJ ò!ìî»S¦ôçLJ℉zn±ß\¿¿0üËuU¢V¶;ØtŽØme'mÑ:lÝus#ei“D¿ÈÿcÚ Ð endstream endobj 717 0 obj << /Length 2395 /Filter /FlateDecode >> stream xÚ½YIoÜF¾ûW4r iV‹‹1—D¶H5§8v³ZMˆM6¸HQ~}ÞRÅ¥MœŒ= Ö^oß«›þÄ& 7‰RA¥›ýéUH£í݆7?½v ýÙÊo_½~¯õF„Afbs{˜u[l~ó®ù¹7íÖWJyâÍÖ"í}¨·2õú¶Ùúð-†}_65/éþ¾ûø&£8Ž<¡·¿ßþüêÝíH‡–ò Æ•/P,Âf£MœFPÑHv}gº×¿šG¦çý6UžÉû¡5”D1'ƒ0zƒ$¾~/B5?Ú×A–e_ÄA˜(>ùS(^ ddA˘¨A !/BîÝš9©IŽkP–Bz7æa+Ï´}¹^}R‹3¯Fº±±#›cŽ(›–‡›‘xuÅwÅrqW bIRwÛí?®Q$Ã@ˆØ-‘ðšxqÜ!Ç5¦ëüSS˜µÓ¢4H´t+ë†i¬P…¥{ߜΕéQÌpõÄíÂò¡êÂk˜‘άүÓ@H5§ÿP¶]O\ÔæÁ´¾5´LƒSÆK)96W< "=Ò}hll<6¨‡GŽ). oN埆‡¦5<a$rV=W'HåËž›ŠQ?¥ jyU5èä¦XÆdà åv‚ΡÕC‹Ázø“„‡ð@ˆÙ ‹´"V@À0^we×vmt"œe«ot<ì;Ûºa2Mçÿ!BbÑéèQŸBæ÷äk‡J½<óÚ/W“±Šgg ËW½à ?r÷Ý)ßwR1ÏOF«Ô±X„?^=£++ÿo˜«ïƒ‡LÒ—ƒG$“o£óåíjB ~s8@”7|ô«²^õ2‘Æ £YfZ"´m¤dLYscA–ÌDÍRª$u¬Eˆú2še.òe£69Á,@äû½@pœŽ?X+·KÒn$m¸&§Ž©Ìɸ”5;††þ·Ñ½å ô`ü–`„öyoíyïZv¨«&êuÇf¨ n㙀4ˆ­ðó€7ôÆf³C‹‘sF<˜òV]˜)Ï Â ”×Ü‚sk  £f!fë4eðEÆÍ9:ɦè6é:GÁ ÿËТRˆÙ“aï¥h ´ ¢(ýŸÃAœN°ÌŃªBóaGÕubµÔåç(ͬd¡G0›¸K,w¼Í¿HBÇÍòt2E ÎFÙöʯÈhiÛ™=ÕžB6û=Ø}ØþöHÉ /µ'9 •¥¨á/™#úõ¡_3°]¾Ç+ïé¶EǶáÄg{7¸˜â°ÀÁn=Ž çÖ|3¤Z€ Ûec8äP$.åAmiè}\kU r¡XüDí l¿ÆQ|³âÕÚ‘~&Pñ]<»àÉtªïчڱ{:íšjUl*yñ–4ÐÓïÓáùn‡O©ü®ªÖkÒX:¹žWÁ¯i‹Oh`³ï²ÐöÕ)i-–Ï|öƵ‰-\“Äé‚;ŸAx‡ÙÒå;>ĶókÓ›U<¯¦Œ0°»Ç, œŸó²õ¡¸2mïŸò§yö­_ŒØrç±Ü•ô4dšÉ6™a•B]¼¶ew®r¶:H V×kPnS¡úu]üŠ ¦3{;D@•ûò/YS\x endstream endobj 723 0 obj << /Length 3404 /Filter /FlateDecode >> stream xÚÅZYÜÆ~ׯäE\@¤Ø›¤_Y‘°H çÁ6.Ù3Cï 9æ±GòçSÕÕÍc¶GZ)±ƒvšÍê«Î¯ªÉ61ü±MoR!¢\f›òø"6½ÝnC÷}Á,]„á‚òë믿I’ ‹£<ÎÙæz»œêºÚü¼Ý§AwW¡"`_]…R&Á·ÍÏ‚¡k¯Bø­Ær¨Û†H†–~ß}ø/¥R2`êê—뿽xw=í#áü™FÊ';f±Xm9ƒ·ÉFe2bBÒ¶ŽYŠ«šãåQ®¸BRÆ#1ÁzÿËD¶˜RÄQÊ2GgN-ƒw‡Š\âeÐï[dÃ}O'.ºÝxÔÄ™ž(Ú­}E?;Ýè®¶£·c³`ÛýÞÝáXÇëm;6UD›;;p(E$R± Y¥ÙçØwZ–FY2ÖP(¾bqÄRî(®ß|í›…³Hªišº±4jµn\:Ý÷á±­´o¶$ŽXÌeCœÎ䦮l†Ž¢©°Áƒ²=žzÐý+Xœõ–ú‡½î´ÜSWÓûºÙQ§QZ3ó Ìäi0DW¡â<ø ßIBÆr"b ›O´­»~‡â&‰ê.œ6ž¼ÌÏâ(ËÝAa'~¶ÅRL4¾iò(žkΧÁ±¸5*å©dÙ§dG O'),4fw£'£Éð Š(‹Àz®¨î¥h=0¬q©MÈ•ŒÒôŒƒhÀy ð–æ76Âó<8êgÙ(¥º?âü±(¾íëc}(:z Ä x ÕÔ.Ϧ«í/(‡ç"–‘˜}@ÝlÁvÛ.ü˜Ò²8ŽÔ̯Ó9%Ì„ŠÎI¯Ð#$Ì1ë[d«8b wœÄ~8MO>ˆkxßSsèj]½ÂvBJÔ ÑôÒxê3^pxœø4-úHoðøfXÿxDIÝ×èí v=Áo£îÉfì8<^¼–ßÉ…øtÁ{YŸDÞ‹ý÷î‹ó(V“ ¶-ªg–úX”xÆL‘öéβ:¸$G»GÞîÀK€«O¼ƒGÃ:xg<ünÇÃᑆ£*C}ƒ¬ÄW÷5(šyCÜ\®žN‹Á(§ù´ã5ãœnJÊ\"ß÷š´Äà" –‘ÁöŠÃèÌrØx*_´3]J6‚TUÛXz+WÞóD‚+Q޳ՄÅžÚºüšŸE›4ßîóÍ¡oi= ›P(ÞN¬m¡,Û®*šÒºhËMpÒŽ‰ÐY¶Î€"2kçëIÕa Òºo^4öy&áñ‚\%è¶Û÷wáG(x”³|­c¸AdµÛ$'IÂîõ¾FŠ| ƒëÉ"p+øØò<@ ò· ƒô àD¥·Åxð†ª4Ò$=¨ÁÞoÀÌ=«e 4³Y–^+æðäâËÌø¹°KdyðÃbä‰Má¯936¬«B•xÀaƒÍ w]a=}òEUÐô,„úftØux|ÜQ—:Z ¬Ï1®| 8`] QN¤ŸÀ¹Ž:\{Ðùù¤f {sæáôÕë×åƒ,¢¶Û½îÛí@ ,¢"#U}]ŒÐÚ°Ä'¿íΛ¶£bP÷DÂ2ਘÛ:D13ífÓéÍöÅß}{D`¤6‰`Q’¥N-’Ø' œœ´zG¿¯á?3ÿ!pÁ‰L#2ÿál‹—xÊû¡Ý4ªñt‹“=I”̦ [cç¢2‰T,§3|\tŽ:\{Ø1ð[3•Š<¸Þw³`Á”Ú[ls8Þˆ’3²‚píSa”š”±(CSêð½4`žJÅÚÍ@¦Ò_¤(Z;Ù+¯/‰$ó.×ÞüªËÁ;-3ðuš·pžø,î°(›Îbjß”*ð:ïÀû,3àƒD]é á;„…ë½}w( "…– ‚ØÀ  æqc`¿±ÞÆgð·’S3‘ÂEô]ÝŽè€D¡ÉÊZê dèøîéq0ÑÜL€AºÀ!4¤©Km ’µ;=˜ ® ½”}ðÒ#ž/©±×á'•?t—ñ÷BÎÆ©>žs@“ç|™tHØe(º›Y0ö.b³Æ|*þ^o1@J‘¹ˆ]Né³uÞ4[7ÍÀ X¨x²Ðœg±‚1HjãUH'‹ÉÓHˆ|-üíØ¡P(<@*ÐvÇ‚2•ÿ9Â}nhd*΃ïÖB^œ³$›ó ]á£"EÄÆÖh¾éZ”(¨g™ásÿØúŠÅŠ™·]Ý»ýüíÖž&ÂcÓG‘BørVàô¬b^)K5we“Оå‚Ë'ŸçÙçM †gÝØÇ¡.8ð”«ÔMò-ŠC¤F)³ðhtkÀzÐB9m H>Å.TTÒÔ°¦„„þ¶è¤õ¥Y¾*Ñ9G9Úô*÷!V7UØnÃKS ˆ+³0f¸pV²X¯·aiÑZø/¯ÁdËÿj®ùr}ŽŒùw~aËkÝýÜ?~zǘ‰ÊP©‹äã…:‹I-º!L­Bï%-±š³ÌÈýÅF4Z›ùÿòf™äQ’N]ûàe)äÓz·ÍT 6?z6[ßÛp‚%ó†Û¬ÒÖð¦†Ää×Ðð‡(Äi|M3 õ&{€WTÎVÎ`¡ 6…óz¹Ò³ R1Àôì÷7XÿШ”R­²OüÌ„lêƒ}€ tÐèú18ý‰:oÆ‹žô‹P- wÚvôãéDCÐ;<§ôý‡)cºLÑ? ]Qj<“g¾”/Eæ|ucÎ{omÒš©˜cêrç 2ö,ûl \É3ˆ:gšð½¶«~s•‰@ÃØéþ+/{!j²'–ÇÞå!ë™×ÿ`À:T±â‹1̵†«à—uü2S9Ÿç`SE³Gí~1_‡ˆQ7¥îi@ké©›’sòHÍj$¸ˆír™šOuJ+û«ðÐa4vŒÑA)[`K8`nV:MÕÌT’ ¹/¦b¶¦S3€_·alÛÑ=‘9Ø%nF;Ó¯co[¸•„¶â?Ã<ÚJÚYÙµADjì#ÞÛÛ*ºL‚¯2 0¢.°ZéÃùx)¦|Ê’D\&濾P"Êçû [¦ºv®P‘¸r¶<¬àææÏÉú<á"(ªmÃï€ìÃìþpƒÍ 8mÊ'µAºI ÐžÔÆŽ­½è•eØötsòrº–óÝI¤“É *iÚÅòmcqÊl…v¾ž(ŽÐÑe yæ:«/TöŠAê=IiP>ßÕÔ‡ Nƒe|ytMÚȇÆE֣ıñ}+Ÿðke«}®ªË™æ»a.œÆë3¸–L¾Bçú®8„wu_ß¼P O">ßQ:.Ö;°Œ‹ÈFÄ ¼Iú%ï‡nε?ci‹6€ëS*~¬ûÍ_WhR;“û“)ÉK5»B|(l1!#Üt‰H{±€øÝ*E÷h‰°*†TVÿ=BWõ`ï;Ñ SFÞÆ}úÁk ¨x¾ÌšðÊK/S`jUT3+Ù«ÙüÝñÔSß°ïÚq·§~ë›êéÝÝ‘†o;°«8Ô„Ô^lkí ¤Ò¶«wuSHss¢é:3|"421¯é1·¿‡<÷&É–L¡÷ÖØc¿Æ@T貇º&òÞÃ3à³äÓôöß/ÐGqáÚƒE|®ãUŽ @æ Ï}m”¸uÉ…ežÎÖÞöO®‚½ÕÑ]¸§‹âö–ÆOióšü¡ÂiÆ ö ù×ï]‡¹$1sq§ÂÈòÖø·7Þ¦1ø©Õ'•¾Ó‡ö¤;/˜T^Óe ×YaÏ"‰l8Æ[BÍ"®Ø¶'O†ÓWu~c>™‹ráî] zu§T攦“ò¢»ºk›pŽnq~ØçòWV´ØÀl¡‡y€I`ßZ‡Ð°à†v·;h;´mÎæjѶ©9_ýœ_û±Hȧ¾­úH&&’euÜì“ÿ€TÚ[QÈ ?[Ȱ(L.ÕS %ôab8㡃n:¡g¡µ£*Ûã8aÇÚÊx`¨ÒD“ºe’p+¼XaKºÄ›ðX»åO§®=ŽttÚÊù,Ð ˜¾ƒB6¥"xSá²ÒHºP! ŸÞ›mI q¨ N–‚>¦’|‰Ž¡·²… àí¬ZøâÌ{꽤¿ÂárVW©»ì’Uq¿òÀLý¬nL®+ÁæØ®S‡ôâ^ð;6™=ÙJ÷é­`öÂÔ”Œ‰$sŸw@64vÝÌ $µy Q]Ú “2qòd/ý3öòn•bÑ:[¼~œ¾{Ã…÷µ~6@ˆ½Ú•&¼£}gÆà}.?Çš¸öÏ 2vz«½¼ô¹ŽœÇý-.xÇ•ÈãAϹ_§·-½œrUhÛråQÉŠó­·ÍceÒ€s´k IfœùÙ…Äå4Ebél @óÑ}@hm@wÓ­ôöºè&øÏ”·HW>”«ï%ùijÕÍáK”ç6ß¿t÷­ÿ6ݵî endstream endobj 728 0 obj << /Length 2608 /Filter /FlateDecode >> stream xÚµZ_œ8ϧhíKh)lŒ¼¬”Íæ6§ËÞiftÒ)‰tpw³CC/†™oU.CC=3™ÛU¤Áà²]®úÕß[…ð­²p•DQ‰t•ï_…ök»]Ñàâo¯˜£óПP¾¿zõöc¯XdaÆVW›éVWÅê‹÷ÓN:Ý®ý(Š<öní {Ÿê5O½®mÖ><‹>ïʦ&’®¡çÏ——0)¤KÖß®þþêç«‘˜óg2Œ”OpÌ äJ¦"`‘ ¦µåï¶l›zOã¸bÜSuæÕj¯ÍAåš^ÝwÑmG»›-ô׉ºt·Ä}ò¼i‹²ÞV÷ëTxˆ%J¼K­iú¸’$”÷ÊGYÀÝ|,&vÒ3z¥ð¾Â}>è[\§«æ§Ñ]ÙíF!¿µ‚FòbÍ<8–yã 8;¡O-Ìý@d›Æ)sß´šF…îTY™Y{û‘…ÑT¼>ã‰ûLaÇ „¨a& 2É¥U‘†Dœ}¹ø6’MöŒDévº:¸ëß›NïßYùŽhvî¯úŽ(?®ÓÈÓªë[mÞ-ò{Àu­ä3ÅLGv~_â8 [A_vÙ` ŠT â¾£w€O§b)â^³¡¹ª*Tm+ç'³€³qgmŒo@½ùÎï_×…ßl|TðG,JGÃR„ ÞÕ®t¬ ϼ©M \93°¢åY„aâ@Èh‡#¬ô^å†Ðrmñ«wŠ jÀÎQed9@ÙÀj6 ´y Åy©*úrÝp"ÝzýÆNq:½À'ãÕ®ÛuŒ;ÃuCVƒMíT½ÕK’I@É(S8„Av$ÀsDü% ¹99ž{SV• vŠa%Ýô ¹-ÛÙ¦p¾ Ÿ: ‹Ú”¤K]8©®ÁÌïi|©önÐiض© ¼ÿòõy„";wû´Ínÿ˨þ½:Çe½Ó­³ ¸HÛìñûL4kþ¾)´[- Wða…r˜~«“¢ä1—€8J`yœË€G/‘À¿ðD•ãß›u{jëÔªÖ¸0YÞjÓ×ä×—D"B°ãxêŠÒ*uïÛ½y aœe£,úºcð€… ²dXRžÃ福²ž›º€€aJ¡Ý«:œ³+p+"áš\9œz[nkÝuèíý(c$[œØô ßGÄ/lQ¼ã–‹lq$"^1 æœˆE Åèn—öM>•0Þ€$Œ»î]B¥]ä¸i1wÓçÅî$ù©°qF$’Aé8B&A—Þ/WŸÿA_®[òe(.‘.pê1œsˆçL.*O°û°3îºÄ¯?,ŸÉâÀ¿{Òq?ø6Ú~ê†Ê…ººpþé eDÙxÒÅ/qð‘Û×fq›pr¡G„&"ØK„ÍUs΂›M#ùðØœLpÈ4zÓÛ‡1ìÇÒSm©®+½|ÈϲtŠ‹‚CsÀÔçºßl–ïÄøl! PòÐ+7ÄBÝÔ~]V ©iœÏb’š.m6/ÄI^ŠÛNò|Uí` FÏ’ùmIùw=¤Û; —&9t“ƒTvLßôI2¿ê«ÎEÙe<¤£Oéž„÷¹¤K\ð¿<åâ)£Œ_Œ3›sXÁبw ««GKmNŠœ1‘RÎWØ<Ö*ÈQ:—eþt§ú¾Ù¢Ò1pH‚ÑIðŠH¢T¡¡gÕ€„[ou­[e“»Ô¥y8.ôFaÜ«º7ÎM ”¤áé X„àÓ  šý¬u¾«Í_‘ ™Rٚزuu§¨22!ñ"áë E¬æ5MØhß©?VÎö0{ÀÀž``—Ø ÑÚ §«òºU¨C +,‚»qÓÓdÞôUA ºö~éÀƒ’ûÇ'Ön£ƒß ž§t¹À­Md],œÍ‘÷Yµ]é"Åg¥IŽÕÐn;õb 'Ò §ž­iþÒnÍbHdK=(ë#’€¢íH?}øçâÖa‡cÈÉ›ý¡Òɶo©zÁè¼´ªÊn¨vÃÁÍÃ@U HR°h¨‘[@j9:|»ïï=¨ÝXDÅ”Â=zSƒ÷¡r`åc b'-’cG#³6šÇ`}Nuª.Íž>IÕÇ--¢ŠCY!ÞPX%4À’¢–Ð^5 càØJSæ¶Ÿ"[ê*’yƱ5£Û»Òh{gæý3t¬8™“µpÔÙ-&€*β5оâXЫ”KGb2SîaZƒÈæjøá~mswz)šúuGó„ñ¡k‹“Îd# $bz”à<TÄI&çê²ýXž:ûÁÁÃ~,éçL×’“@álÎÖ’!{¾Ât̾É¥CÛGe±xÂÍQ0äQX=mT\ŽÂGh=4| ‘’?aøPeó >)¸ò¦Æ€¾í[õH1ñuŒ/;Æ<kÌ&Y¿`¡MY[uöõæÉðj÷ñ¹Œm˜ãRzƒ"l¹/%æmƒvNÛî•åƒyŸ64k¿ÑÚhpCÖ 47è¹tAª£'AV°Gïà©ãŽº\R.W €=f3sWÖGÄôà ^º¥Ž-ä[CZˆ>G†Î ’Á[jç„àŠè¼ï4­RôÍ^l 8×Û³%d<þ¿6§‚U÷¾[n^/WönÝ hUiº¡È^´ÅhVIãYN3ͳææLæÆ#ö1„èeƒKƒT¤³ûLtÿŒ^eeš¡)ˆ¿*™ãÏ:®¥;ŽÔÆýÆ&HÖg«'•ü…–õ†‚dÝt îÏ„vy”ÊÓ- ´.½cÌy¤!‡äËß Æ’ 9V¿Ô®m2˜xÖà‰P¢ac#2›WT45œâ¢‰HÁ²“ßGvå˜ç‚žTK%ºÕîI7Þåá§WtˆtÖ{Né¬FúRc281ðÉo+. ²4†ऻÿSß¶.ðU®]ÝR§JL*ßy "sžeHm¶Ú/ÊVS濤BpJs‘áóå•sà–â¡òØ|™5Àõ=óé ñä„<=ø´ß ;—ü,_kÖ»ljØöèžyôiçùYw{´]½ A{5éý6t’òÎ|©Ì·çéb€»”yæ­ŒV­³ï8Ã®Ú ÿCà;‰W8 endstream endobj 732 0 obj << /Length 2668 /Filter /FlateDecode >> stream xÚÅZKä¶¾ï¯äb °¢E‘zí!@lxç`3ƒÁڵĞQV-uô˜ÙίO=¨W/{§ãdÌAEVëñU{äMò& n¥D¦Ó›âð& Ùîñ†w~#í:ú«•ß=¼ùö}ÝÈ@dA&oökRåÍïû§ü8˜îÖWJyòÝ­¯uäýØÜ†©7tí­Ïr,†ªmxÉÐòó‡û{ø¨ãX{2½ýõá¯o~x˜åˆÂðJqå+K)E|§ZH¥YèÞ þKUOÈÖÇëõQË^húÞ7ŸL1Æï‹Î˜Æox˜ÞîÜpòi«/S‘ÆV=UÓy]‹c^ J>ÞF‘—?šþ"c_*!#¹°_Qø¸ÚùãºÚuywºæ€Û¥¯ÝÝ™#¶í¯!ÏÚ¾Ú®z]þ̲¹’x{­Bþ’7å ÄŽ¯hxëß¹8d¡Yx¥~âPdY6-~뢋 ŒÖä®1¨”ZDZ/„ý0‰<30ˆ2ÏçsäýGìÛŽÕ`Ùƒ`ZÝ1ªÍi—q™Òªm—ì1Wˆõ¿Ç”÷¿:Í”ŠLf+\Ñ‘âL«€àØC.Äqâ=S%t9RˆC¥dÝ›®j;cæÞ‡v8Nä”ÈQ¹oœXWÿ2ÌÝî§O³y­­bèø‚têyÄLÇIAퟎPÎöK:ÍHç8O:ÇÁ$+¿QÇŠƒu–Í |øûmªÀ÷øc‘[*+A‘øÀ¾ž©ª³ ãoí&ÙNÍ_0‹Å® B„6tÏ9 p®¡\ý\=æf§”zi( ¨´ož«vì¿h†L„YºÎÌ.¬†BsCK½1Ÿ†/Q T_R.H.ù\¨ë4IpÖ°,FáÀº>Ûþ§ðõáÎ*É‚æ€Ö?Nõq“×.éTè%žî\t¡UÊ¢ÏS D€ãБ\离)Õ¿Ýý‚ćJÙ8‚fAº5 r{AlËûIš—®3õK* ìßÖ»EEn;Áò~¾(²¸ÿ{å¹Î¿,O p‹U®E‘[.ɧ€&ëªx)ƒ¶mg¾°ÅöƦ¨0C¼iïý[^˜Û íñH%|ksH2³š›ßjˉ °O´Qø†xe"‰NðZ€Ÿ³ñÅž‡6 A"Åú':„´Ê°;Aš‹`8»ŒÞBà‰ð“UNaž_÷\ô;#D=¨í_¡O)Ú±ƒÆ¸üè¼ÈÖ\“a‡™îz~Z~ F>B²¡[<ó¦[£t0÷%Te·7Ý ìÇ­þ£q¢iŠW]êu˜Ž”tQµ¬¡ KÎjÅÞÍðüÃiH©J¾^³£ã-òB:>Mœ|¡V¸Øç¡¸ß´2ë5=Ÿ“z}xŸ1#$K¦r‹CÞ}@÷þ¬ûŸêŽº"7³Sªf‡àÒÆs]‚/K]bwð- úUƒg{×Um%ºÌˆ:~"ÿϱêÌÁØòÁo$UZ08vÕo=íËêx†%€qeç»àiúñCsɹ“t®Eþè²t&ÔâÍx°LÚréBø×–ÅŽ‚Šd†"Œ "î÷¦ eWÙ~Æàσ½ß8— ê{¨uâ¨8lÅjµò¥²†2hòJ`È<carMÍþkvj BOj’x¹BtÖ$‘HÂu© ßçVË vê±Òé˜_ÀJ€ô§ ײmŠÇÝÜ®Ûå>fÌÚY“à•n"-#+u‡…9Î+„vêyç…*T¨l]„¶sÃÒÇy¡ï«8‚øÖ['iªúu”Äìõ>‡3]oãÞœÆX—¡»Ãð»OMþJ/ÕÀO÷å·ŒÁU–’ú‚L!ÞnG+}ÅÙ†øÂ×¥8²æ±Ü{+R¾šÝ‘´œíܤn-ï‡P–ÊÄñ×ä% TA¼œf‚.r‰ªÙ èÞº®ùµßþÄø”£®/«çnú ¯€{ô`ãÓL‰ö[_wämc‰ý=¹ŸEÕ.¯ÿ`¿A/E¾Ä+²ð+·$Zs>¢cÝ‘z>=Cu@@Ÿ•3å…KM”VBQU𮮘–€RÖQåìÉßûK..P[Ùd~¬[èøÔUSÚCR³l›M\5ß^4W*…VúëZ+V÷/—JR‡±½òÇQÓ6~?@tæ]ig'ì2<ž½‹¡vȱlá—oò<÷w»Ý»¢ø†OŒ³yg?ƒp÷a:Nx=J¢mb*¤²^]q¥S´ìíE¦?5ü›­›»¿©góåºvðgÿ[Ï~?] SÉ(3¬¿ êâñn|ìyÄÙ /ºÊ6H%ÏÓE<ÍP|{çW÷S[%ç¦o&BRZív]Î+„½ÎŒPéOuy¬E”žýÐðÒveïï¡ñŸ 8ݸ¬¡¾Ô¸Êðì§Ã²ø ¿y‹é7þ ÷Å! endstream endobj 741 0 obj << /Length 2786 /Filter /FlateDecode >> stream xÚ½YIsÛ8¾çWøÖtUÄp_z.I:NÒI<Ë™™ªé9@",¡ÍEÅÅŽÿý¼ )Ó‰§jÒ¥‡o…ü3~þYî¥aèæQv¶­^xÄmwgL\}xá‹Ü WÉ·×/^½ã3ßss/÷Ï®o¦S]gÿv~Û«C¯ÛóU†Žÿëù*Šbç÷ú<Èœ¾mÎWð,†moššEú†Ÿë5 FI9~~þŸëO/.®G=â x¦Â(ùHã49ó#7Œ’@4N²ÈõÈ5öÝð|'óæ|å;C¿oÚtJ#§¹Ág쨺`b Z‡>lÄl†^ÄbÞ”ƒ¬ö‡çG¥]ÚÔ³ýø¼¡ÿŠ˜8•Úv.l?œ÷çYä´ª¾å¡+Ó‹I'² —æ‘Ðò¦èÍJ…¹­ú¡…ÝhÜ ŒÜm«bz»ão;ñŠÄ D‘Óiañ…=¼Sl@°bäEκ2ýžÉJ!nHÝ  B fÓòûìàa]:ù ˜(†R3Å‚bI#B¡Ó´OHE4™OŠ¥V±P[Øš+ï€Q ÎìjƒÇ·EsMÑ#­ë½ª·ÚºI7!‘£Ê’æ¹göMÓ2ÿ@Ôà<÷¬êÍP²ÌAbÒVw2™á©u«(J¹¤/„<Š@éÄͲ„•þÔìa»xËF*µŒL2,ä‘a1 TÛtj#¦˜¶KfPhÌt܉ì SßèÖP&€·©$‚S˜zó góz’spF‚£Xòè¼EDÑç$ËòêŽR —Ø#î…ñOS\¤vÌx÷P« « z!ßFêâÛQOæüáÅÞ»wððBÇlÏØðŒPuÖÆn /'¡”x=m)¶T¤`-lø9©Ò™±5§heó8Ö1E`÷In "BmCµ$ ʽ0§”cîÍáD$Öt,0öÆåç‚…:(JË™tóH|$3ì<®cªCiû5Ûihù†‹u &΂ßàî6CÞÆX@—\4Ç!5ñøœÔÉqý¦ä˜ ^dFǧ@ñj°&–|ÍðÆ¤ˆ—Ím Çžè/Õa c®a½Ø <ÏÇI|oŠžžílAèí×k¦&`  N¢3­E1<ÀƒC,²¤Ÿ'Á`Éí—c¯Þû^8½cÉ `Æóê ”H—®cüÀ… ˜ÞÆÄGª²G·FNtÒ¢ÌØ”Ñ-‰'‘3ŒìmLì€k(f‰AÀêÉtõ ð\?—‡©WúN•¡Wªk([9^/éçn˜FökÕʲRºSòÓÜ“|~ÂÖ78U¾…Ô·ŒãJÐA$c?üßTõíIC.W@´$_MÛòãM²!ðŒ]y7ì(‰b× ‘àç©ë§¬.ì–Ê­$vã4±Xâyõͯ8´bW6ýz‡,ÂÕrµ'ŽÆk¯é–Ã0q½8|榭ô£mŸ žs9›Çnê'?Â[¤ž÷QöI´§‹ÎnãóK—á~ÔBÒ¥ÿòà´)8Ãü Újÿº×ÐhiWÃräWIýn–σÀ Ÿ‚°Œ=Ñþ{‘zöGÙ'±Ÿ.úy°wc›¶6·ß9I]8—Œq —¿~}µ‚úÿ v›v·wÜßE;IÜ(J¿»éÿ— Pk endstream endobj 754 0 obj << /Length 3401 /Filter /FlateDecode >> stream xÚ½Z[ã¶~ß_1o±ƒ1G¤¨Û6v»d·ØmŠ™AûˆlÓ¶ZYrtٙɯﹲ,Ë @0¢¨Còðã¹|‡yãÁŸ¼I¼›È÷E¢ã›ÅöG½Õú†?¾‘Vn‚³žä_ŸÞÜý7Ò‰—È›§Uª§åÍÏ“›tטj:ó}"ßNgZ“OÅTÅ“¦*§3x.ÛE“•‹4%?ïá£C=QÞô×§¿¿¹êô”ºRa”<ÒXzþÊ1| nÂX ékVûOFÃU¥”"ìÄί˲³žðV‡Òº_ÒªÉ,_R³@œ69ã§A«€°€‰ÂþDq$B?‚•iŽmšåMùv Ãq軺I±M›0Íæ±ØØ)u‰…$vsÀJr¸?QBGÑ•8é# N F"‰.£oÅ®C/|ýþºÖ óÊGð^ðóq—Vé.-2~=uÚQ¢ªyô»íâY˜e; ¿/E¤Â³ð±ðƒk!pÒG œ€?"–—á·b×Á¿> ÝÇÆì6ÆZÿý:çæi³BÈ`€vÍ“¼[­(«õ(Ø*[O΂-¾èÊ ;é£-ŸÛD\ÛŠ]ö^ø4ØýuÍ<­›,µpÿsûkíŸÛß[sÞÒ“DDÁÐÐë]Ž#ß­ñ],Êí¸¥GBþyK÷…"×ठ8¾L„N.ƒoÅ®/|üþºMQdÅš1~0K'±>oìN=_ßð<¢2Ëwë²—9 ý51>q$¯Ü¾“>àôž/`á·b×A¿> }ÝeMšgÆÅõŒ¨H{!ÐxÂ÷ü#kÏŠökÖ\0wí ˳˜«DøêÚ};é£c7ÑEÌØU˜÷„Ob~°îg w&gÈÁô«×óp‡ XU2€;§9Ħz½x  g×åÆë6í¤¶ÒZø:T–øs•Lxa)ôt„jò£iöõ(˜4Ãs'cóʃž7Yn…b©» NO¿v-ðÛ&­ÒzèˆÞ3,Í4”Hý¼ôݘúˆB—•ØÇ‘Ðýºåû‹SžœîÒÛ—Ó\<¸èÿ?¸D„û«{p~èÙƒÃûkL¾Ü?!3yÏÝhàyGó·OO‡ï?£ä³ÞÂ_–è_Øñ\ð×.&љӂˆ?œy±Û“íà›?ë8%jLhäÄZcŒÕ dZåÌ£<<ŠÞ€·üºG^9x6b@¯ÓX’’%çdC-° ʌР\eÈ/|| yÿø{:_;Ôð½,ZümÈÍ;ÜñŸïQxOñ&9L ï‘<`¥Û•¼ @í™üÒ¥.,£´­ªçšå¡;*¼Ù—%_f/œí¬ cû ±÷lKËhò¥tõ=ðÊß ³ËªÍ;#4 Ó„¹P…‰MÝe‹ç¬"3S˜8+8Ìað ° ai= j©À„‘Y€#ßâäNEزö0fGø–»6O+îéH²~ÐæµÕÈ]BÅïW{Ue»Þ X–J`ƒx76õÄÖ@í<­@;5n¥~ñ¤.€¸9gÒ@80³¬xäÑ%ˆÏŸë-±Sœ¨nçµi¸MÁ’œ [»r ÙlˆéŒí†yR™ƒ¶m ƒþÍñCƒì‚e]gV öØ€” ³ªYu¢Im3{qr|–’¸¹µ?™šå‰m@¿Ã¯7Џ©00sÊݶ¬n$e»X”EAtr…ª†hÙÂ4)¡œ·AÎ^¥ Ã]ÏPB1ó±g‰»Õ!D²5ð´œB~CKħåþžæö¿`nÀ¯p0ë*Ýn­çêÔ<-Ö-“w8k Ù{fkÉ«†€5fikÑÒþؽ§¹‚÷<¹†ðµÅi&ûXn‰R&w G%1X˜-¬écZ… ýBÅÇ!çaôÖýþ±…Aœy±0»Æ¶m_¹C:ÌT:™üçå+U­[ò1`b ’ eµ’?×6o,²Õ+÷àYqÌC‘øòÐpÜìx£àÓäÙ–Ì…Í„®'t¯xTX¡ò‹œIAƒ8ÎY°‚XÄI°çËíøÝêŽ0ÙÓ\q]뮳¯|´Î}ÕExÄB{#ÖÔ’\öÂ÷WJ+í•z*0í龞ü¯pºö–rP6<\Ì™d¶ª§ù•ÚPÄ÷j;–Öå?|år„zåwäYa‡°¹ÔÜÝl¨´<^­Þp‹«@¹O¹QWÙ ì´üú˜¤XÁ•@½:Ô=2%|ß+ŒGÔ¬ÌÊT%w à ½©òëoµÉW³¥]¶uwjpðߨqæ¥aQŒ e%¸yâj'ÚíòÌØåy•„ØñTÍêÓðýb0RòŽÜe=˜Mü3Œ'?dUM~p[ŒLx-£'GJ»‹Àrª#¶Ø†.“º Ó»µÔeá—ÔŽß› ô–s¬TÍÒ}b–„_γ¤AÖø0Û°u¯F1Á¾P"”^Žj.ÐCH[/évG©‘P]qogy* \iÙÞhÕ"“½Ãu*qà¯ë™ùšæ3HEˆåXí èÅIÏÛP›SgZŽXwÁ®O>FByþ!Xì±Ps }ñ~(ÓÓÕ™ý`™ŠÁGi w~ûÑä»o¹=o!Øúx·2 ãxòh a/‰æØÁ*ºÁyV7<)%WŒéöA$ª2#Iö˜ÚQ<¥ÿƒ‚gÏ•r7ÔjÏVøÕÞxw¯2wu´âž¥{Ç ›»ý–ü3›R.,ÏÉWÝjôzWr–­.ñíý’½3£Ñ_0gNzpÀL‚è^ÛþcŒ‹ÄIºÃ;E'lôÃÀËìOUk´¦ªÁéjEk¼Xê¹ÊŠ’4Ô>™{ä×vBbÓ0Lc÷HžäÃ>·êè|–S›5=y†só .³47‹†_ð‡%à[ <ðþ›AÁoè7 ê°&‚i„Š€šßlì*ˆj4¶sU•['lÜü20/™=~9)è’¾)IRÍæúOÖÊvø/} ¬tnGlßÞMZ+J;‚ÔXÓs6Ú™½ÕvÃN“•mÅýŠ÷¶—oL‹µYÛlÝfÍÞšmÝ”Ûìîç¡ýâpe Êpß<£6':?<¼v¥w—+™@OM[´RhïI˜jE¢àª2¿·–Rr‡ŠN‰Y ß;Aìl‰¸„.6 æÞrkcºBœ¬íó ¬v—óÿí‹o endstream endobj 758 0 obj << /Length 553 /Filter /FlateDecode >> stream xÚTÉnÛ0½û+t¤€HE­½¥†S´@/‰nI´DÛ¬"Õ&ýúÎp¤@N 8гéñÍFîEðq¯Œ¼\ˆ°L ¯n7‘³ŽG„‡o>Ǭ"¿V›Ûû4õx–Qɽ갆ªï‰mOr°jô!ã_ü IRö½óã‚Ù±÷8›©¶ºï(ÄötîÁ™dYÂbî¿T?6»êGÇŸ$Œ‘×gEr‘c‰Ü~ùiʤ>ËýY²`{4¿‘<ÝI´§Ù¿Œí[’²ÖgmWüÖö¤;’U+kB% Íç(*7¸Z(Lõö>‹× ãB„™( #GðgðJ5ªÝ•ú Žc? hLØÃ®"¯2Á¼`ù=à"ä)a`”»é²qŠ8].²®?;*K‚±r´ª õ?=áEÆ"÷²àŠäJ_–è`þŸÞ|u´î†¹V]£_‰ØOÛ¹"êåë³Aù qó‘¶Èò0K?G{‰¾B[€7+‹KÚŒ;N–n”!:²0b³Òð,YÝ·-.Ú&›3÷©‡œaH3&GC (´7¼¢ŸPIY-»Y@ëIvXŒrK†öe€Hu;‡ÂâŸÑÆù/i¬‚šŠ,bûÉRˆ¶äÔ†ôQaÐÕÌX'i/Ð\BÑe&:,o쉡I6jõ.Lôdè3©€•Sž ÈQ‘Ðö$%°-l œ1qûÞŸ•p¿1Û8Þ endstream endobj 766 0 obj << /Length 2661 /Filter /FlateDecode >> stream xÚ­YëoÜÆÿî¿âà/¡sûàËAQ´ˆm¸ˆãÀRM?PÇ=ÝÆ<ò²äIQ>ôoÏÌÎ.æù›!_%ðÇWe²Ê¥d¥*V›ý‹ÄÍÚ›ŸÞ½àž/ÆxÂù÷«ë·iºâ +“’¯®¶«”s†dສWÿŽ„¸øÏÕ?^¼¹WJ…øÊ-‘óÁžy¶â9ôÄÕêîûÊÞ{¾Ž¦oô@žØcÛÂ"&춹ǓÐm`Ôã‘Ü] E¦˜T™W*XÁ…—ã$³ËAã‹‰Š®Q@÷^!iCœ°º7µ³V\F?_2pÞ™¦!ÖZ·Ýàg‡é‰š‡U¿d¢(ÀyFm¬Õ°[Ýޱ^Ò^ž³$=YܺÚÚcÉ@¶EwÏ 6{ký[ m5xOjîñ*â$Åy´©Zš=özé˜à̶߬7 š%Ëâ,ËE`BùáŠ[Ь 594mè¢>Þw iiR5±Ôú­A7Ýa?{@Ó¶wq×-ÖÍ®dIšTêGCH‘µì1èª:åÅGeƒÉH8Ï䎛ú¡xœ'`&sš$¾}õE/ŠmÔ“_ðgؼ;¢é$è˜P{`¢(8­i·#s̈0Qo‘§ k#óÎ]jßÐè±ÛÎ^±z þÙn4 7•­‰ƒ"ÎAÜ âÖ£ž]Ô_ Â n/RH2¦©®Í‚};½ÏLRþÿ-D– ,ô²”ຠ¹šàM= Ç3Ã÷ÑcL:+dØÚ)Ø™OØ}á´39Æ%ÄEý ƒ4E6ØÞÜìÆØ¡|隨ªŽ}ÐL+‹l.ô½i €Ÿ1j’µàêÖÜ‚³Üèþé(Á§·@ƒ~âñÃØBГ'ä%¢ šõ‹éšæÇ¹ºs– >f˜co×ýV¢À´tÌÐɘdNy ÄŠy’Ù['bK‡¡”‡çðБ‡t] †¥G›Îâ2dtpc!@ss™S¸ÈÑb>^¾"zÌR8 ¿‘2C5bJ©iD:•þzì¢10-YõÅhd?~zóöýç%È‚%²|Œh]õ²À-Ò‘û(}ÓµÛ¥uU `¼˜X¬Çö…F>¯ r#mé@öÏÏÂf9GëÎ\+K¹iò!Vi»É‘}¯†iÐ"Ä(ðßoÇj$÷’ÑΫ©Ë¸Àf·ÝëIÒXÒ’L ñ?€‚œíéÝ…!íœ|)I¢~GOòÈýÁĦ%Ë,##JX¨<‚)+¦(·óVbi4Þ†ª™–³ÜNE#j&ø¨±,NœcÕìÒ‹›–ïc-ݘ6àÒ>ÙYu½ÝK)J|•^f~¾Œ~$çLœ[(#ºìâ7xɘ$ã—ñ2ß9vÀ} Žo[}ù¨±N@çèñ©÷øOP¶W}&-§Mxô„¹Ga¢4Üs K@Pö×îç q;æ¾ê—ú²¬ò¯ã¡µ_Áû2.–„: nÖip3„—œ«»Çö_Â&a@c@éàCü»·ÊR2Á‹¹0Qz·¾îXÂ"òÕéq1-“,Í\»$ õï®nDT´í~ʯ¶P¾÷4KX—‰J4;‚ô<¹ebz”UÊÌ×XH!¤ €v$‘#,Ň4BG½§ ç¼å º¸É7'߀œÒ¬|˜ÅÕ)s[í©´÷(óhO¿×ÈvOô´¯âá\Ø{²ÔDë.½À±GT¬ ¨g*^¯I¡ÌwL·>SÖ—GKžTTÊ!ÀHõ•r ÜÏë|Ñ'B¨âP5ÌðP™•^†y}Ò†É'b¥š«pÛŒò1~ÇU€n¨„ýBè&únïÙ·ºŽÖÕg* 0æ)«áÁbL•¡oN·MÏ2LO  "×4 ZõúJáó}Æ@P¶9Çqï~øÉc¼ €¯ûÒá¿}ï¤9¡wˆoù³û†1­½Uû@úrÝ@”‰a²ö ƒZ?ù©õL¨-äqòÇ —å`bkÚôËõÝv J°ã ¡BdغPÔºÈBS˜­®±a®ƒ?6ý©Ö]j…0³Å´ˆÊè÷÷ðGÁX(„O°ðhÐvßé."äé™Ó#t«­ëíÀàÇãuc6DïDìÙ+¿ÎúKd0óôti×K°z±÷uySá»`oIJmíDÿ-‡>9öÑ”Ê=ß(FñÊI³§è ßéW5àpM2}ûÓÝUÕ°° ÑòO÷7`ê endstream endobj 771 0 obj << /Length 1385 /Filter /FlateDecode >> stream xÚVYsÚH~÷¯Ð¾‰* kt!œ'lc‡”ƒ)•¸6û0ˆÁLYHD‡‰ÿývO·°œÝU¨§™¯Ïa¹ðÖе¾ß±•îÎ\Ã-Ÿ,"æwg‚õPt:šWÉÙÅmZÂíÝ¡°’Mw«dmým_oå¾VeÏñ}ßö.{N„ö$¯j™e:"þx± ¢ÈéûÚóvѰYõZÕj×s<׋#Ûó{ÿ$ŸÎÆÉVèyˆ5ÿÇá ¬(úÂÈ Ð …­+ú®uU—zÕÔjÍ‚œ¾õ¶'l…´g#Y쎉ƒRY³>:ˈZu›JmšìÑÀ†cˆûe’||X&´M™Û–óùhš<~ÀàXŽ 'á÷EH>t½-p'èÚꥇ‡a¸ã!ÀRÄÖ»}¦Ñ%\PE–¥Ì‘¨ñï•$ņ¾ŸÇàásuýïÅ=ºšÜO’GÖ+é{;I¦”c8ì7z˜“dDŸ™1;¼Ë°áN&×ËûêG( {9Ÿ=,Æ}b,BBö8wÓ%qîT®J™±a³ÊtJ‚{ª¼buLÜ;ûo®2Þôúaö8™Þýªyg%wŠêu­K•ÖE‰Ñò[VÄ®·š©ã Ý\廢líU-uVõñ”‹ÛAdA6ý ò°<áP/îÇC>Ôëû='Œ<{Q˕Πª|Y2†ïëÑûÂã¾aÙù¡oTÅ æu¦dejVT&e¥‹¼"Ž4(Ø),ŒAkWôÅ2ØêÝfÎ÷F"6`L 5^æ}!“¡ëÛ_¶:c³ªØ1•«%OVGÝ”ÊDU02_´x¼˜ÞDÿÊÂtغIÕúœ$¦ÄÕOæ)`ÎÆÍžÅ9†Ä7=;ÝËQ‡jçí$Undªú8ìhO¨m–?çÆòКÁ48åÓV,AÌ €€ñ‡Ú&N©vR3NX{š4EY7¹®µ‰ 𩾀X“ûi³ã|ËZ›y ²7ŸL^ZꜲecªˆ´à˜êÕÉ´4Pþ rÙ ÌÞEÖpŒÔQÁDˆZ›´G4f‘³‡êÔEcJÄ ¡ûq"Õ)~¶ÆAÐ5þnÕ<=©Ê d\býP¼Î>Ò^5OÄ*Õ1^ ]WÈ“ÖБÜÏ{KÂQýW‹zm‹Ô¢sL¡úÞÀtÀûø:•îžØ¥»'0(ªš8™~6œ½Òº.HÔuQ>—œG~Ú”%§ö¢Û÷¨ÕíHâà”7»bu£ù¦€ôCÀQó` ÅRUëG-2ö2Eç^ÙRryª@æ gv¿\œÓÈ[ŒŽl'Ï)Ò{êäüjy·ààSúö§‚¿[˜)iï».ía'pABe컹FV'pVÏ ³qßÃpp…“ íÞG 9%üškíÇ;™²ì›º“ M±oó®^€£ÛìPž¸³9L[ýÃà¹,³ýV^ð;¡–P†OXRxΘ´wÊô!¡.–3¼Dá,Éø0ŠßÇð¦ÁÜTZðýÊî!IÓÏT À ¹Œk˜Ìô¶ÑÚ׈©¦(©Ì qƒ7>§l€)#Ž©ÆŸ¨| íþÛàq×w˜Âë»üê0?ôŒ ÞdPÇ«Fgk"iÀC Ìnn‰szš¢C¯}¾’&½ðÐ8WŠ÷“ÄèÜ®Ä7+˜§”úJ‹{ýÒ^S1;„¤~è|S´øø&9õðÓyš5k3 ãÐØyë«ÈTèÕ_¼¿Æ—Ä}÷&‚vàÛøsS‚Œ/nØ‚à™iaÖóÙ犵×)SIÆQ ðäUÈhUŠïþšBI1 endstream endobj 774 0 obj << /Length 2614 /Filter /FlateDecode >> stream xÚ¥YYoäÆ~ß_1oKÙš}ðZ?ä#‹8 $‹À6°Ô ¥iì )“kõïSW“Íj³@ @컫¾:»F­øS«2YåÆÄ¥-V›Ã›„F»Ç7n~|£dÝ®ƒ•½{óÝßÒt¥’¸LJµº{X¥JÅØô«î¶«_"m/~»{ÿæún<)Õú+¯Ä•gwæÙJå±V©Å;ª¬°±2–¯3ë4ÓÑß› £¢¡îªÍàšÇ‹µÉÓèÙ ;nõC5¸~p›jÏO]ûØU‡i=e øÖEltÆ7ü¥‡-©Žž/tÕ{< UQ%£Çž¯ƒ¡ëÛ[Z¨·nà‘ÜÛ;©yæ×DÙ}-‡=´~ÅŒ^˜ñô^b7óçñâMÕxZêsJ€AäH™X¥ÌPwÄõpÀ°«i‡.O.„9a|±¶Ö ¾´nعžl„]õ˜#Q&€xöÐöÃþ…÷<»½ÚÕuǃ÷¸ø…‡ëÏÕái/”x¸öØ4mH¿b¹ÂD]{à Ú5ܮթNKÝíê`››¶¹ÐyôÛàÿÁµ²×É¢¾Muú#óË=çbÔ}_ËO/uŽÍ–Å3‡~‰"îîZÀƪ‚ ¿Ý…ŠÀÉ¡2àÈü¶·À[VæÀ›“ ·H¬ÊÝ5ËGû½{ÜÑe(9¸~_W[ DgM¹†'žwÎóÉçõr«Ê¹.!‘å¢Y@v†]{2x }àïGÇH°íþq1m9g<µYt Â&pa©\ŪX_ŠÝg°MÐý¾ApñÍ`(oe´]’’WX#:a¬œ×¢SÐ<0Ûš—A‚0ƒ Ük¢S^*. ææhL`ä£Ð ÚØØL{UÆI’‹ŒûÁÛ¡ê&H‚€/ûv{h]„è+®O•±Ò%{‡  ß=žÌM:Ö¤d‡8‡± AÇnÜg^E>-˜ùàšm‹8<÷¼àyWËÔäÖE’Ì â6ºzy|v²ô¾êw<ÝïÀ)_ )ÉË‚ž¤#O¢Ä9p®mœÚvÑòŸÖŸYÂâÍõÝ\6Mfý&±,.³nÏ hå§@ª H-@*¾E…@jKÂ¥G¸T—wþ.ýtûÿädûái[F¼´Ç‹÷¡[$ˆòeˆÖ ¥µs b€²ªYˆê·K§¦q®s¿"[úm+Võ è5O@Ï‹X›\@Ϧ0aŒ?lº ýš¤É ¿­ªã~€a%*ÞÓõæþû±î)R,° €029ܞꔥM‰½m5TÒr]½ÚîåOKößÿø™àå7†.ʈPú‡_‡ R%Eœ«ÑYÝ~kÞ©%E˜•Íx»$üK~ƒáebúÐÂ@…· ~êTìñ3à[IÇ„`–z°3ȼq|ïš:\ üŽ©êøñ¸@ÊÀ̺ïXG>‘Ûðê’e#^"÷H¡i'é+0aš’_'ýÛbÚ˜PÙÄ…ðÏòäç5Þîø MpZÇ=ÓáøË”E W½,¿?¢û­…p>/‡¨@jƒBÿòÁáslà©J H7ùáþþ+’¥rÍ‘Z !²úàM=¨Q5’¤s/¨Ði˜ùWæÍgîü®‘'ê-Ú²)˸Èm¨Éœp[…*æ|ƒ ­»šÞëj ”¼I•FW¡‡„CÊèýµ5ƒd¤ž’ü¬”à–i¶P0³©sÎqz Ƹ‰ƒ”|L‘“Hq¡¤ž¦Gàé¤(–JQ,åmÉm)ú¤ø å\7§DGØS~•È>z–À·âÒiX)Kù©‘žVÔ0ãN¬Ï¸*þ<òbfœˆ±“T‰Ž¥ºç”ÓmýêÞÕc¾å‹;w÷í½/Ã|"þ ¶Ñ³±ÂgcR‘¾F9Dz³‹p¡LŒ¿7õ¡$)»‚gúÄÿÅD¬1´d~`uŸÈÚ½ÎãĨ”‹óÍ8ÎFə܌»6ãÍ4UÉ·®zGUCt¥2vzÁTý›wŒ{Y€.$'IÏÀµ`l*)ÚZ¬£Lë†õ žQ•¶[~{ ùÌÆûñ‚£GqRN³¥/§ñ,aOWö°À#À3®¯8פ wwg…¼ny¢²98k¶<)?àÄX ŸR!‹ë©¤È¿ ¼[L4B×*Œ.Ýt™‰ÞÒm”Ù½¢JÁîr¸€à- ·6¾gø·¶yyذ3QCF³õã#ì+zRÕòUç½`XI-0ð;‹F¦ö$Qg¹ì"¦ó2gìý/¿†¨ endstream endobj 781 0 obj << /Length 3504 /Filter /FlateDecode >> stream xÚ­Z[“Û¶~÷¯ÐôÅRf‰%@ðæ¼tëØ®=Mãñnšd’LÊ• ‰5EjHj•m;ùí=€-µ»M;z €ÀÁÁ9¾s 9óá'g©?‹ƒ@¤:™-w/|ª­73.|z÷BÚ~tô=ÿtóâòmΤ/R?•³›õp¨›ÕìÇùëm¶oM½ð‚ ˜¯žÖáü}¹Pɪ³e›—n<æí–KÍ“ó6kržs9‡âKYÁ]öuµ©³¶Æ:’s.~¾ùðâÍM'k¨Ô3…=ŸX•ô5´êY”h!ÍK»*`eÖæw¸SÜÃâ~¿Pñ¼:ðË2+¹Ð´YÝbQb‡:ÔÜ+YxP±4MÃ5eUï²Â ÷“ú¸6)ФÂXø2€%0_{¿²f>ÙÎ#ùU$Bº¾0¤ /IÂùÕš6g ÏšÕ†k³æ3­nÅõëªÆñgžJú 8ò¸´FÚOíóU^›e[Õ÷‹$˜_@’ó&ßíiaÐÞâ¸÷{Z¼áª¿O-T† ûX;á/›fûêИúÛªi_ÙE¿¹™Z¶ô#«È}ú…!¨ˆf;Ѽ&X\ºíÅÒ¼.Ò´T¥k¬&")b«ÉÕfWµ†EÛeK4ˆm^AH6%OF"…ý£nPG~ ÙúÑàwXØC¡È×÷ØÒ¤TËŽ5†­°ä·õ¡o’¸9¯yàem²Ö~ŸMš”“Jc§®?L©4…v=–Uù“/õfr°X$qúèX©ú8Pa¥Ëí*:O™? …ê¬_€Q\NM(¡’Äu[WÅŠ±4P®X-ÙjÅD ¼D·2+y³å²:”¸“­@Óó·´gÙ̯X¶Ýò|Í#w…•`²v¤]öϪäo^« ûMkÍ%ßli~-x›«Ïö5goä7X´Cç#8Ý«I߉…LÔØÖþ n³Ð $d”ØQ޼û•ÙÎp_³T^¨=%COùÅ¡ñަi=)–Õnhà³cƒ54®?Öæ· ªÇ;ÜÊö0ÕçýÊ”mÞÞ¿Í ;÷o—´¿»û_x‚_>›{±7ãøã·U}ÌêÕ÷Rò§÷¦™2 O¦BËt¬˜ïèRQn†ç–œ…jÀyÖÕÃôA®„O,ç«©©c)"ÕY½›Ç”Õaãf¯øi ,f4%`*‚6¨Ôüñ[¬1Ñ:ìúɦešÂ“±†ó†í§4fe¬°Íc›=¢qe|XsMë@ÊwÜÐãý6_rãÊÜåKÛÞl+üüØóÎô-”óå¡®M?‡fÄL1Ïæ7ðy=’“f($ÌMè‡4â°·¾Î C|~s}má±S®õÓÚöh·5mÎÈ% V%Ýn{vì)茅Š{Ȳ £ÁÈF«ÃÓ9Šüù5[@+’¥9r¡Ùš¢@ìH©¢4¶¶7[.ÜÀ€c«õ `WË/¤0|Òž@¡Sõ$ç¶ 1b† €ÚïQ(¢$›Ùäi?H ­fJg¨°;û_^ žã JÈþ8醶ʙÚ0Ï CÇ’ô§bz ¾›NHßl'ÏžîÜyù% šý¡³ÏeA¦Yð\07ñÝ"Ï‹ìáªÛSn¤‘ð}9‚&ÍãüÖõöÝ™ãŽwædP’|Û¶ûW——ÇãQ4û¢ZDöKK|€ k_Ž7ý·u›Õ.+/›jÝ›KÝxEÞì/›z‰ø(Lñ`IÚ Jg:J„©§–d{{ƒî´ýtÐûåh-☡%žHíêÄù‚ØaUìÀ"zÀ¿b‹kƒ¾=ÈÄCH£ó>!"MMæw1PÃÙªj}2.l¨wÕü~w½/“ç¢JDDCw#ȶrÚ'Àj:¯ûtŽ2&ÿý˜´MfqÝkÚU^=ÕíöÊÈZ«ñö'Û xÜ#OçëC|œ ”áFLó:›<‡A¤)Ĉ‰ÊÁ ØÓnO1vbãˆø¼Šºh—똓ñXd-‘&Œ. ^ºä:LdžñzkÙ$QÑD£‘¡ŒiŒ2jŽI±þĺ¡&·Ï’Os~ù\2û,ù•Nx‚“.]ÑZwØCáв¢ëƅΠé ˜i NÀ¥Î^{K{‚Úú! |í•“ñ ÓáñƒPÛ# yÛp¡6EÕ7XÖ}ˆiUõgûÆ;º•BášEVnÙÆðÍ tkT¿b üòÊ~Ûs1xA²f§¨ì;r?ØbŽ2"å,g•óé߬H9…óË™³8W:T5)Oç^ò¨¸‹í6³’õ€4¿Öfs(²ú‘ùá(lîHò“(¡J”µ£™¦=bÂ``Gù3LÅZAd¹<™\–°¡Öi ÷†ÛÖµ ¼XI Ð3Ú¤ÇÂZ…HÖ­|w¿†(H NÈáAÝõeÁ¤µÀh@â ’m C×FãSé R‘¤áï6 ;†}$éTüŠ9º–5€œLó.oòÛâaÈŠEáÓ¡I0öðC{Øû ¾l cÈŸ9É3aµÍîl™påUýoR6­²6ãR^î°»í³°®GQm.˜·‘Ñ4][Þp _2D?*ìíìY=ðR¶C;ö­O2Âëž¼c¸äû†Pš;í².@ß’A‰Â!&ô=Ä8 ÑÖŠái É¦ê{®ÿø _¿yÍ PýÖ^!XQÆêŠk›Öì§ƨ¨¥žN7àÂ~ôül‰ôí_¿<“m’J=:•àº5; ‹H ’„¢é‰±_$Qü”S>-g<)'*3$4E¥ _±f^4ÜHŽNu]knŸŠ ›ëR¾qŒ\ê”ÓŽs"!p¹Ä¥Yu¡‚Þ¼ãÖLCƗο2–B–|üÒg%?íÖt´º¥K@)8®ÂšX+Q©ye' :è¡Î™+–mT¥žZ k à%|ˆô¯xbl€ðÚk.ïÈâËu±b:ü€†õWyb“¯'C…Å!~(—õ>;²/¢¨ £Ä?ö›ç L¤ýXñÈ´û}ÃÀžî)ŽyCi?@¥ŒCø¡aëè#]¾hxž¹l€YÙIÞm;ÛºÜ`™¡~½¢m؃§‰íâ8Åqlobˆoñ´E1 GgPˆJ(;ðûæld=Bø8v÷g¤HÂîôfzà‡[¶#Öó¿‘vc{Átœi‹ÉO$ùð]‘ªÈ¶¡Ð„X ãŸy.p"ƧQݲ8°.eäD@M+FƒÞ¿ Žý‹|=HçŒ^(«…HYØã”ÎõöÝ'(Ýé cFŠRÃzB–ðÇ7××Ä–¯ð!ÿõIÄ¡ìúÆsŽFé N:½Bõ-jªeúæ´þ¦Â³¡håg‚ÈıÜÔŸÇêJ|º´žÉ ¡ëÁ'Tb{{ƒîS*9´c¹©ÍØ£,à¡”—kü¯Ž¥ðIʜ⽘¥€¾CçtþV*®±šâ—nÔ Z„O{˜ Å¥ZÈÓ¿'XóÿƒŠRˆ–#E"ÏõÏKí[’&ƒ´ ¾ (øÌø±¬ŠÂd›ƒáWb1ÙêŽý§µŒ)0¶ÚËêÁç£+N’ŸÝ¨üQéd€.«g¹«ßÞTÎÞn8Çÿ‚.¿x¹Ô~ŸcÁ¿(É”÷ë쟑"dìñï¹ïµ³u¹Wz¡‡¡ ýßæpíù£r6k¹2·OîÌÝX”Wç…-øÊ€©»» E˜ÊÓ?¹¬ì7ý¡„“ܧ`qWÿÝYºüÁz—Éý¡/o…sßÿ«ˆ endstream endobj 788 0 obj << /Length 3216 /Filter /FlateDecode >> stream xÚ¥ZKsÜÆ¾ëWð&ÐæŽ1`R±UŽK©rY%Òe§l§a‡»ˆ°ÀÀŠbùíéžîÁc‰å¤xØy¡§§çëçP^Åð'¯òøÊj-r“]•‡±ívWÔxûý Éë6°p3[ùíÝ‹¯þ’$W2yœË«»û9©»íկѫ}q\w½ÑZGúëë1Iôº¹VYÃE9TÍŽ&ªaO­þz#£¡®eTQ»‚f‰­¢¦%Ç®ÝuÅg­Ie¤Òëßïþúâ»»‘×D©Ï<®|æT260k®ÒÌ© íçëLGø±:Úx¢×ʆ‘p ¥¶Þz9X•íáP4Ûþº@£ii­ŸÛºcçÊbp[?k¢{8{ËeéúžDÝïno‰6ˆãz4pÖõ¼_C‹:wh‡â¹ÚH:ÆFj!:ðr<ÁUôïÆD·Î‹R¦©0 Ô‚D2óŒ8ÃêÍlùšHψzfnÂ3Žh&úõ9éœ@jDÓ—_ò’ʼn°Ê†®îÝÃÞuŽˆ ÈuKmãfœþý†!V쵞‚Ë(ù™ÒÀ•ÏHbNÌs*è,Žk„6©ÂUÀ PÒ±01/óòIR±xòl¾^[‘&ù™x–$­Ð™ZM@<[j,d³&äIDlðâs!«ýÝÞõ@I嬷 x):žBà[>v&à#u<êN “qÈýc *Õ"¶Ó¡ú~3áÿ <¬PÓÚ—+Û¢Z[Të,Œ,Ôh²ë¶=)™V1ˆ8h™$êí=ª½½Ã†Ey㉂ÌqèþÔxø#6ËÖ(52=‚úöËOÞMªDž xI, MÅßþ'FÊê·Xš’ïÑÔÌÍ]2Ú¼©Oü[^æñ.¬:´ÛÇÀaº02;×€±gÛŽI½ÕSfZèÔ¾Ÿ… 5`Jôì˜H‰ÊÝ´ =»—¡xW;Á1‘@€´B§%átiGß?…W¯³j2 Ì{ÿ°ùH›áÀˆÔÊåšôMØ›¡É šR™ špêÔŸCPç1DqLy¸Àï…øHí3¸,hû®‡ ü\ Qs|ãá‚Ôp—èá‚à¡â…ñY½0–ÿr²sèH%E' vÍŠ ™G€÷:h”Pz4[_Ü~©¿XÛWe"ÕvnÄà;¸ØØmíP‰ñú}íÁ‚ÑÍ‘{ÑÑE׸¨ Bµï=JÔÏsÅ~{ôw†œ0ÄúÇ~püáoqãÇ^,I"d–,QujªHÂŽ›+p!x×8VÐÏ´ˆ¼l÷PHîÉÞY>~_>î*ž}Wô{^×Ð,S}óêfþ=º78³£ö¡ß¶ý‚±§ "DjÒ ôðWy6ÚÓ@ƒ¸;Á{1€´§™C1¢ü_çÜ¿B"-‹SÏ# y•§®÷q?lS1b8[ôе¤ž`ƒë¢d¯/åþS¶T)¤Êä(Á ~-¿8bóÕf·ªà339C&RÞj|ÈÆ‰EPë46Êà~èœÈÓО­¡hÛ qŸÌRˆõóÉÿé3øEûùÓ‚0¢¹üs.}fL Q¶]Þ;A¸}ÒàŽ0AóÐÅÊqŠræ@õ¸ÚøÐr1Eiá”%¡ŽH³déãôÓHÇhyÑÇåSF1¸ºq!ðæóÏ-pÐ @=šåUù'J$Æ,L™ôvÃ;0}á8×)ëûýÜU'MNq>«¨ÕéÌÕjIÖ“ÂXÆg·ÆªŠ˜Ñsÿ« û_~D)¶'î‹Þ‡X~´ÛÒ(Þ$~,¶9GñóÞµYïÚKi¢Ÿz^¶îÉâö4íAw6Uó¡ê+w×Z¼L."–Ï~ßv 1Ÿ=¹x3ÛxìéÈÏCïêûOÀÐ0 ¿å-T*ç¡,ôÈ" RÜ82¯y q‡\•¹ …«Ö­Eq­Þ‡™Wî[ÖÆz5Óˆ)#íV™xdŸmvcÄ'@ÅÛ.ó¥ iWcMƒ¸¹¤ŸciN]ö¤ES.‹oÑQÕÞ<½Äuþ$D,r<þºˆ¤ôue262b&FæÆÌ=Ô¨½ÌFÁv…Õ)à9TnúOä2C?²ø÷.²hf~€´Rë<Ë–ÈL™Sj–›PÀ0SåN倾¢~…JYì·´ˆ  ÆD>_Øö‘ .˼A£æ,Ì¥ê|ñºI€˜>OìçE–éÍ@18%Ÿ/ª¨Ü›Ò‰³³\ÜFû4¦šôW݇¸={†áMÇ™Õza9‹“’ó·d ÂŽÆÈ„ïØpȉ#¶Çä“b{Ab6V¸=b½ãÿÑ<:oz¤‰Èìh~Þ>[º|I´>IS)ÈhF‹tdÓÛjÕ†ø]žíPôü{©»ªœ7\yôúžfF•ÄNY4Ô¨Û]ÅMre¾ž=‚F:sŒØû¹j¶TúãýTÇ7$Ì<ó•‘yìM¥6³Ý±ÓCä]o©=:gì`y‡Z¸=þv'&pá: @˜j·ÿ:®ºKp>¯x‚-&SfƳeþlÚØ¹£,ÁŒ¼¦•ã›0Þ¼˜Žë}XA4+.)J€§’gÊGêaÑ mZo üCDOƒ#?ØvT,²ÞU-Ãmx¡¿"ø=ÐU'hê ]±5¡ e¹Ž†ß޲ÆQ’õDG“¬y;j|ÿÓë0ÒácÆi·_KSüqÉ/¸É4>—4ãÊèÅ"eCýcSâM$ ‚ÅX ³ó±j–#'¤TØ}K?¡{û ÏS¬5:I DšúÞ%`ßSjGàû> Âdž†jØTàNd}ƒ¢ <áÁÆsͤò|õâÕ¦$±½Ú4k¸E·¶(û|ÃÄÎÕ—åø0ES!§^ÙvhÒ©R(ÙÅ>Ì$Ûzö½„Dk +§X'Ç·7fìðx_ÕN¬š]SfŸ2»“ÕÕ:¹ æ©0Ržm×]ÜÎ.B˜„3°d*aú€&??›¸°{n„ÍÓ?î’‘àÓàF>V>ù×{ÍU“óƒmN”½BA‚:!:Û–~é M¡"ùâ‹â4^HJŽ) Žùh êÏÞÔ²Ö4É¡ž-¿…Ôgù¾V˜®•jGÿáÚ;æªÀbùXYþäóSØŒÏÅEÿ~üo°=qº–D+â)ÑÚõçZ‘Lµ™¦ª/–%G?ÈÁÁë&Ä>*ÂH¢èÝ„°™DæÍÈ$YèN-¥3Ky¡ EÙ5ãs|¬ÐËìBõ‘—Õ±ôUפßã?òܰ§«Úö_ûý‘Ë„ŸXíò‰Õã. øMÍìÒÖo ò{ˆªç76žz3¾,¯ Yå"ŸÎ{øÀÿ§Ì|o®©ÂPËlôƒ$Lû†ÿ½gÏ+_È8êw;· Ïà ½:Zql!ÞÍ,Îú.ÇÃö©§ÿŠ0†*HÞ¸ûâTáºp1R$¾ï’ÃAÓÆ“€Dþ©å¿1¯‘> endstream endobj 793 0 obj << /Length 2266 /Filter /FlateDecode >> stream xÚYYãÆ~ß_!øe)xØf_<ì'ÛØ›‡,MžÖ »G¢FÄP¤BROŸª®jZÆ öY]]õÕÕ’›þä¦H6™Ö¢0ùf~—øÑîqCüõäu1,Œg+º÷Ý_¬ÝÈDI!7÷Ç9©ûÃæsôóÉ]†²ÛÆZëH¿±ÑÇf«ò†Ý~¨šGš|®†µúm,£Á [UÔ® ¹Ç–«iÉ¥k;wÆṲ̀2RÙöËýßÞ}¸yµJýÉKáÊ·neE!í&ÍÚÐÍ”ØÆišDŸ†SÙ=W}y¬¥&ªŽðµYÃÔø}kmäºÊ=Ô%r ÄÓ9qi¤iÌxºeßLJª+÷CÛ½ðú3Y.´ÕayËÊOʧ#w.i¨enu(S í¥ÚvÐ{¡‰_›”Í´뫆Ær°‰U¢E®³M,µAÐɵëO°OÞ‘N†jKkƒ7NAU×’&Âðµ/`¢{Ï)Œ!C%rs„†»Ö ÛnIT/Å8£«£¦ª±)­Hs ßTHV“^S“'Ì<#Ûîiâ$|ßõ„u¼AGûkו„`x¸þ’HM 7#Wt[d«‰*€©BHÅfññ¸Š)r™ÁõO1È"~Òd"KGTœpaT‚zÇOÓ6ñÚ‰VŠÔʰ ¹F[I mâ™r’8¨ºžºÕ@Úm¬2R-³ò€"{áéòˆÊFôÐH·[Œ9¸R‘Œ9ùÕéÚ|Jð"çª)Ø×ã8ÇÖ #÷¼€ŽqîwüÇ›»kM–ãý‰Ÿ­42ÛͬRçïs ˜mÆÍç ;2èvm€Ðê×ùy¼W²0¢I©¹ŽØ8>6{àƒæêÚOÝ­ãE ›¥ÿ‹çHF?pêÆí¡ Þ•„<™H£e×\2æÁ?¬1¤S¡¤š3téʸ»6ñ©mŸÖx*z¼Û±I\laÇ`1€ôW¨Ê+uêêiK(Ã2‰ß'¯ãòB=GKÛ¨ÝzZ*ÐêhtGŸ¸®Ú¦?¡lAÁoíO8ñQ ­BåVh}kÉñй¦?VãÆ…8b$Bef¸Øª°áˆñŒašx^qô} Ž’¤è[³òÉXØ××^ÀêŽnÙ ð{¦.9ÚÌçGï:`ŒûúˆƒíêÂ.þarèû!ŠÝøÙ»Ýì=O{#­ñÕX´x˜hðJHÉþõó?ût|Ól›/“¥(¬U$ì4³ÿ=©\ä }ÍM*ðzªö¨àÓ;ö‚YPñ(o~Ð*­m±I¦xÕœ¥œƒBê)8ýÀq£ŠŒ,­È½ùÈ2N!£86cÔié;2걸 ?ñF”Üp³€2zS­ÈqÌgçLYeß¼8…0šeÐ)ÿ¨z<#Ë||Ã/Ù‹Êò ÇØÙw¥ÐZp †FomØ™ütúFÚk} Õx×Ù1.Pb–³Q¸0ò5¿¡¡ïoëØƒÄb奯 oƒï=ÆæPJ©Oi‘8‰pÁ°XÃ/$=­!ÙIÕŠø–aÕz%n%Iu ífØY3sEÐq— u›E{õD4ø#P¼MHüo‡‹Ž<ã¼|îö0hQñ¤K>ŸSNknã rtV‚øDÎéâš>µtcª#žc\äÐÇd$å6Ftƒý›$YRßûp½<æÀD+>¤vTqAó?¼¸,oë#†œµ1¹*«F «ãÙò•:é–¨—Îò+À‰Jj~Þ‘‰‡ÄÀÇÌÁ3‰£ÿÂñâÙíéäöZ2ƒw7Y¥ZöƵÂêx¶|åZ·DÉŠ|òêÏ•PINéŠ.húS³GÉ=:{ß´Ñ¿®e²èiÆu<>™‚‡LÙy’ao}Dç…—wLÚ‡ç<¢Õ–!×5eÖ¼fwÔ_FS©†¾¬ùª§Å>ÂÝW}â˜i«±4¯1¼û,X)Æ3Lr©NŽS0ß_¦ø¿¯Ðp½Uc ÑÐw¤ðV­l*¬™ÛæXvMáô5ײÆL©'$ß Åq¥fV‡l—A:“C댢ʀéh‘Ñ¿p§{¼ž9Ÿçù°c8ñ#‡ßN¼"Ê}Ê OÆFgï3¸3¹FØØ³gœÉF½¥e9ÂÀ[rÔ)8ïD~%GZ ^}Y8Z3Ö„»_9oW §Kéðµ~õº_96Í!KÍ©¤Õ¯©Kk‘ªQ[þ½B<‚ÒréÔ a“ˆ|*‰ÿ<, a§¼ºêWso%$aÍ7»o¿YM3‘ãÍ¸Ä OCÆæ7ÆOµôí½æê¬ó¥‚Eš.BÑxËÝ·¯JÒ—\v†{[@šäƒ?ªä˜Çúîì«P.Ño8ÿ8“Ït@>´nÁC´(¸ØQŸ•ð†¹Œ+ÊMÌÜ-!„õóþZ;Ì4±&oéë™Ä¯BÑßÖõ.:Q—ëÆŽkÞ¹öBA̟Ѿò–¢åh=»K}í_©f/V™)T™… ËeúêMGª~♹ٷç3¥™ÐÜ%Tÿ«CJg“YžKJ·]SõgJîGÿ>‹_?†Á©†çà3MXº8Ü”ÏÔX†¡ü [£“ò„ªþR;r‹³¬M"|Úm¨<¶{(ˆ\s ûRÝ~GVæïq¯†«# CI¿wñVÎ3A¼UZ wÔÛч®™á5ùIK#Ç-ÍŽ¹©ã]ô|*éÙßÁ•Qonõw”s¶sõo^Á íÛï ɺñ£‹kŸ›ØßzâÊŠ¢(æ±/3Ñ5$ޏ /O±6À!ƒæqý b6=ü,AUÆ^‹Ïë/—RÈb4Ÿ¦=SŽÑ¤Ž¿ìÌnâo(a¿~)uïRCüsC¨•ø‘S9NLxC íñ¦NöÙΠJ°ËÂ30CŒÒÿ¦cr8 endstream endobj 804 0 obj << /Length 2960 /Filter /FlateDecode >> stream xÚ]oä¶ñý~Å"/‘HEê+oÍõrMÑK‹³}HR„Þ•½ªWÒBÒžcýï/J”,Ÿx‡äp8ηNíbø§ve¼ËµŽJSìöÍ›˜fûûß¿Q‚bèaþpóæO?¦éNÅQ—jws·K•ŠtX7‡Ý/AR\ývó·7ïn&Ji’|呈ùìÌ<Û©Ùž¤Nø{ìHóbÑÑu”7«àÀ “NÄNÿ‘ÚhÛƒí}üyëö¡ÃôµKtå{Ò?gQ©èa”¥úÿm>\Eeš&LS¶lùöäÖíù2òVxwxübÁ p¾ÅvG…š¸æP¯õj§'ÃY²¹Åê3p¨¸#/Š©jqðsÜÖ’°h½xáH<ž‰²Üˆtræç'Tö¬Çä» Ëb…Q“fÁäâñaºê{²Xƒ[ªx‚Þ17ä¦Ê"*ïý‚ÔÔr-bâ(L]ôŸ4'ž–x:Ôœ>â¼ç`„N}ˆ!Ž“¥ß·”·][³=oIñ1ïìøwßõ=¸;ÔòûBtC˜Àƒ› 2’ü5'î°C}ɯ‰.£qÑí;@žCÃYžóùF.°ÔT^€\²ETCì÷?b`’sêE4V¬8‰’ĬBé‹aN%ÅOÈX!¯J^‘Ã=ô ­‰.Â\®ƒpü5δ˜ œšÄ)sÕ:$zúJОðNh'´f‰ý݆s¥ŒtüÎMCJOù"ª–dìrB}·fþÒSªh ì–«T†+´Ý(9ú¸p-®ê€ ðþ :”ÝÒÉ kß夃žž%¤õÒÍþIRU¬^vQ å¥A=J£²ÈøSI¡7rWYºFꀵ~áWÅ/P½l€\âîrb˜’¼° ¸–ñ5†ï·\Z8ñ 1!ù¿ ÷Lìmø¸¥)³©\±û‡GH³Ã‡út »þ°¥#*†:ZO›þRA’F5DË‹˜âTŸëî"Ó¤®”¿Ãˆ<ŠíòÛ£(¼`ô¹X¤x<ÑÚ†ä-J(-ëžcj¡{ž~LÊ`H«¢Mù‘,XzÉ3é]^“R·#ËÎ ×k᩼þ3Ùið•\úõOTÏR¾¢u6Uº®ý )mjΣLvŒvF—tR£·IUði¨ÜÖz˜ðE`ÄÈ2üÜ‚\è·iÁìv4º*² Ñžkã• †jê1  v+Û}Ù¿ô>ϵÛ~åûÜv§­‡Áˆf&ù;(în±’Öi8â ïk×·ˆ¥„ö‘P×°øsI¶y±ehx¨Ï É“€ñ  Ÿ“;ór‰º¨¾ÈrN_,&3WL&\L~@¶­Ï—“Bsotꈎ½m‡}_ŸÇ/UŒ…³.Ôí$͹ȅ_N¨¨4˜$Oæ9É1ÎlvœPÃDóŒV=3-†ì¸:†·Gô­›Œp ÀªFÅÍSWïy±r QÉzszIHî0 gN²à¯ä`ÉO²›ékŒÜq’ô\(tqq›c•4bŒ!˜c„·‹„6Wk8QwÚìÂ3RœÁûn4x¬ ºon ŽæF‚ÃeR31ÞFMéÂ+±–¾>÷|qK¬bz²8k—0lb„ÁFÉXµ<÷èêE˜fêBQéx¥ñûÆo]“¬evécß]î«¶ê0; <ñý» §ãª¢Æ÷Ò—qÙÐÖ~ê4§.®ííRÃê‹‘—óÕ¹¶xœÌ}T~PÎZ¥‰ê_ .)ðc‡Ööö¾·ç#)‡ ³Ò¶’v­­ÚÄ Hq9ÏÎY6‰©Í>qÆéˆ»Âfl›zUY&4³ÙéùËr$Ø[j „Ե˰ÙBÁZ­H§Øþw³  °›27é5>#¥ .ÎfJÿ{‘ÒÔTh–©p>gY0pÊè§Y>÷:µRPhš…ò³‰ïØm@e(ž“¿1p‚A²>©v’™EËBÚj™4w˜¬‘œ™ þ̈ 1c½¿`Û_@&]aãÑÝü´ù2p·4ñÄy|Aœ:7~ͺ• B,3SaÛØþ!œ|ƒhûoäê #õ›T,øñ‰¾9îK\: Sï q ð‹Çò²å‰Ù,)0œ‘`RS‘ ³Ë`›Áo ë~ÞŸŠÂMÅ txäò ®ªþhσô$ ˆg?b¢è¶4Ô=C¨nïà°®o¬dj0g%p¢Ý™<ö.;Å‘ó¶>º`k©Ù)ìõZr%Ø¡‡¾•\­ˆ.2L¶’r"4Y fÿd3á;`cŠÒèÍ|³XØÿóþÔ—Z|sÔ‹/-°ò…/-˜—9岦|M;ôз¾´¬ˆÊ§?é:æQn´„ ¯ùªã‚ËnøåŠ €­pQPW¢­Ý'£ß‰ Wæäs+gÁýŒàxP»_9³TÓ¤*É€;|ñEu ;Å ¦`ð<ªø=² Úê‘ù¸^®¿2ÃŒ=‹Ó´½›‘ØU–3¥él€%ùË(¯~_=l¨Ðš¸U–ó‡P> stream xÚÍZ[sÛÆ~ç¯ØG{:ZìõìnÆM'U›i3“±Ü™´¶ &Ù@ €–‡þö~„K”#”Ü`\Dâ'X0%&öÂhË$Œ!/ˆyC†ÿœÃž61WØ, !¨MÂ~ÁSE¼ƒÖ@,3­ÅÔ†¬cbG–\6.<~Š ŒBhNY¬ì’pšEå•pÖDÈI8ç@\$€ƒ· O|à‹ ìéA"PxÐ$H=xÂ…W³Î¼bQë€7Zo!á@Fø Dî œ06€‹Ižƒ,.±“,¦IQÄÂŽu €„ 4ŒÉY€´XÎ@ d#¯‹ Ç*  a¥ñd5䋤!VȆÈÛ™/D‰%ŽeX•Ï ÐEf!´b#ê‹­!k’iËÿ‹ƒ¹ã?¨pI‚‰…í0{,²¨z\QD íBZÑ€Î@Ñbƒ5£õ¼á‚u–ØXÙº¡Ø”ža-ÙÄBr"FâÕµˆ ®¦'Æ”‚€bx?/’a»ÅZÉÁÀ#d–<¸ )±ùó,øpÌž=›e߉W«(ñBd?ýó_"©ÞOªmY¾™}ýuOsVWxöLdgX&îhÏ4f¥áÌjLÚÝ@»D©`Cd¯É z·#ÃÊÙM=?/:ñJd?~w&²—ÅûN\oúòæÀù²˜eß@Qu-ÔÒ¯5Ë^m½mæEÛG…þÑÅb?¯ß‹W¼é^o°MÞ`®`¥3ݰ|Ïw|<¾gUÛ=VáYÉã°:™»°Ï?ˆ;xäwt$w7u÷)« H³¯H£G±š}SU5–zÕ³ÆX8‡ñxkëžn–=¯›EÑìUoxç9 ;­%B)¢²‘ "“÷F&@r¾½èú%þ¾®~ÆB½¸ÎEößïþ=YuÝæ«,›¿w¹¬›eÖÖo»+àÌòmWŸÌëËMYtÅSÓᘠ-o¢ŒˆÖyIÊ!{$‰œñH˜Ø\Œy$s™l!qßBhª3˜ð{vköXµj*«VO`õG7B—úáBœÓû¬¦©~ʲ÷{뇑Fû¿fÿZ%é¹À¶$JOÈB"2än—ùºìê¯.ÊuµX–õEqºäGŽ6ÒïwX¢OdÏ2¢ ƒ2$Ê™1PšËÕiW°›Ëb±"tkhŒ\Ai£ƒáoÛ¦“­›jýóé‹“MSÿ«s8ºw×ù¬¹Bs§Isyz_Î~ßõnÏ ½™lÐa0äÜêìF;ŒƒÁ»Áà ã0Ï|þq~ž«‰ŽAQK‡bÒÂ*Ê{Âh5±„˼˜¯Ê¢9m»¼“—y·’E·úEÎW“,‹äÎ ‚´P&ÁTµ…¨i7y“oòÓËùÕd!—¤B3ƒŽ8¸I2¥Q8ڮجŠêtYmo{Æá0,Â…aqØ>r‘C¸°ã`lÊí¶Ç†-Ò„ !#âJ$…Q1²¨ÖÕR6ÅâtY×˲8‘R¨€È$i #ÔÒk?N4ëjûnÝ)Â(8ÕÛ,}Œ£”ëº*J¹j>LÆâ8É!’x$9KnWë"˘`ÇÔ•EÛÊæsýÐêÖJƒVN'H͹·Njc¾$ £ânëŠ##£ž¥\_È>¶Í/·N²eQM^f>?ÏÆÚK„­&8Q†(l0’àT.ðíÁ Z Z®»Õö‚Í$ƒÍÛHŒ}Ð¥?+6´I¥Cd“ƒ·'XvÎjiÛÑ5¤¿Ô/kôýäû Ò)˼ƒ ßÎþÞÞŸýoÑxÈÄ¡9¸ÎyH昖þ“âJ_¿ßÐøR·+¯#£¤JI>ƒ©$0KAºþ0IMt§*¿Ý¶]}¹þån]Né±@®D{r%7U®´“+ŸØîÆ¡0òqíØJŠ‹höi„ ãíã.gKõQ/CÃQ¼—›ÕæOçxüqQ_Ue/&„d.ðŒFŠr2õÎVZû;Áç’BM‘„AÔQÈä,Aƒ¬Œß­—õÖÊ!4®ë!2^Ö‹õÛu±8Á]Ýfã…g\‰Ât’Ñð „ õÈxýXØt²Rë(<0f£dÛ4]_ÝDÇüýÑ} qræ^:mwÉiT¯x³?|à“ú°úAiT¨ú„Ûp@ç|‹†ì®$¾ÎùR´c$7Y$ûýs0“Er@91Æ/ù%Ø}t6"N%}/NQêhÆæCŸ¯Æ}[ ijÚ ÃÁC*Âp0‡‹0¤Ó8þ„žJ¥ôP§>ø»Ø_IOWWWn½(úšø¿oD®Ë¼úõx|ÔÊu»ÉÚfžµíJåø€ëÍõ}³G‘“’ƒsÿO¬ÕƒÎx™PÚ›„:°—²EdUº³üIëã¶ã´‰¶˜?;@ªÐKtÅÚ?Òvõé7CƒÅ¯ãÁŸ&…æ÷îJÒë'çßœ¿~zrr¶­úòåµrêçâCËãÛºáá"ïæ+¾@Ýj×Õòh±hôçÜcÔ‹|âÇòÑÆ?"LQQ÷Ú`rÚïŠâä®(Ä£»">ñæ.h芸&þ­ŽèüEÙW«¢)X¾yµàj9¹~¾'épºECÞõ±ï>:M(Š}áóI–á¯-b:J£iÿÕn:ðÕn¢ÛMëÝäÕ¬3F*ǹCI¿ë!\ÒÒ…»õš¿ƒ“°.»&¯Úy³ÞtíÑ®í¸ÇÖBGx4R„”fuš€ÕŸÌ±ïúŽï¿£Ú«à¢2“õ½3Ĩ†‚"Åá~((RîÕ0†£íÂ{IȤ$³Ë „\èí¯&žôWnoŸ^ëéÅNQ«¢,YO? _m!¤ôîÍÚ4Ïßei3¼zû¢H „aÐ5:dtƒ·ð™¤? Êó¼]Ïw•Àóµ!ÔËƾÿâK!@ÒEâ Ðt‚ÚÁq[PfµΈ¿¨N\ä:ÔVKþà°/aÐ Gc‚§Ë—M¾Y]‡‘ÿ#ç²Û endstream endobj 813 0 obj << /Length 3038 /Filter /FlateDecode >> stream xÚ­ZKÜ6¾ûW4r‰°‘’(É9eƒ8›,ìIöä éæLk£–zxfòë·^Ôk4î1°00MÉ"Y¬ÇW%«]ÿÔ.wiyœíç7!QÛû7>üøFÉ<&ú³™ÿ¸yóÍû$Ù©0ÈÃ\ínîæ¬n޻߽ïOÅ¥·íޢȋßíý8N¼Ÿê½Î< ‡¾¬ïyð¡ìOÜêO±÷ÃÇL¹´ÍÞ‡%Ûu{_Áf±§óýŸ7ÿzóÃÍx¼DëWÞg^¿ˆÉâ@E1_äæ„gº·x¢Ü»kèN™g‹ó¥²B~ÂIÍ€Ô;{‰:Cgñ¼ß¼7z¾JLèŽÅâòùÆ¿óä噢0Ð:ws‹ú¸ÅQ«@õŒáŸ×ö _éÜà->áË”Û‽¿ðoÑ™Š ÃtLéOm3ÜŸpϯ£,Ðq¼óU¨„÷â§M¯³ø¢^W6uÇ”²Æ_ã24¤²LW-‡n‡½òþU„ÜlìýD)ïý>‹=z*˜rnZë¶€#Ÿ‹6•½n‰]ƒLz&]Š{ÙõМÏpWxz¼N(÷P|‘ÎÚµª0 Ldv&Iƒ,Š®è¢›íϦoèãš)mþÑäð€®þ5Þ}Å4%?{¾Ðm ¬R÷ì7ln‘÷ã/¿ŠÝ‹CÇ´öζ¶>ˆEþ\éEµ¾t”ª M³W^Ú;ré5S:oÀWJÍÞ!„©8^O8j°jM(У½ŸQ/Šº¼ UÌ~'MÄÛ@£úËÐsû®mΫáªèdPôaË P9ðÄiüVÚÚ(VsŠU>n„ÄæŽi2˜Ì©ó„ωî;§bn–¸è¿C'll3Á£ZYYv<¥˜¸¢žÐ–l9‡¡•‡¥y|Ÿµv“Áé4&ƒÃÝË#Ú+R þ¡‡3² ¡³Ç¼þÞ‡²*ûÒ­#ωcC¢Áf*;°ØX'ÞN¶¶|Év±^ßžïˆ4çRï8˜}âfWM}_v§ÅøJ,}ô׉J|Ò8&qE1v]Wޒω1½k ÞôHâxpýªb>Ý¡mªJ˜W–_ŒU-Ž'µ}žpƒó¥wÔ¢]ít.ÇÊn½ Šw65ž % ’¸qLÀ+Æmç6,Z¹ó3£ê!u´<ÅÈ ³TÃéÒÖ-d'¼¸oß\dðnÙ¸ÔtaŽüî ÚíëOJAEÚ––ÁDÙR?ŽcŽ«#wQ2RÖ<0‡òdåüYiÎÝb«x|¬‘µmåüt3†ÏõN"Lß“g‰Ds¸³|AÒOw<€æÁsM±ŠÚš‘H4‡‘w(j^‚pcÎ=»«ª¥ù0B.xð’¥7ög&Ö½gq(Є±Üʈ›%>½ßšÿ\<–çáìË3løH•DAl¨ÝÒˆ:RO\¡}£u~‘½æläv@­³-È$ŽØ›ýRÎÿëÐõÐúš‘‰2Y«h©„‹‡ŠÓЫÊy¤Š÷Ê\SN'ú¹øË¹g 2Þ@º[Çç…!&4ä‚P?•äwàõ3)7û,òæŒY0ĆÜ;´fú°¡rÅw”s(ª ­WƒÀË‚vA^K“1(NA*¥“õ<ÀÊ£5< ¨hËâ¶²[Z¡1ëu:… Çà÷Kâô›Ú/ë—Ô"3AšÍÕbKû¢@+3ÎÙâ“Ö± \uƒ ètõî_“X78êŒWèà©Ú¦ND±1zYì°—ÕIÊap>oôO GiüízŠ 8¿ndL”á-Ƴè¥ô® æ˜NhÿÀ–ü½ßnÝ$ƒLi7û0 ·Ä¨)Öë§DÛþŒM‡ÅfŒƒet¤:]¹ùSIùĉ}Õ<ß?猕¼_³òd—Ö~*›¡ãá)jÁ›*¶„N{æ†^² AÅâï(°GSàÝ.¯pÏx·…'‹{_Ödk`¹ðp²)ˆ$i:¹iìp¶ä\/Rð’ø{,»%XDÄ­±Áî[ãm±ïÁ†ËÝ¢ê›{ ‹ZÚ;{Ii¢4ÂÄl(M³õ¶~”ÇË÷ûÅ9ÚÊöösªrLâd©;p³Tã1'zÂăö‰ÞN"šq¸=r¸H‚Û£ä‚ÄQV®Ùt†Åü2#T~i¥ÁŒ$LÿʱVqZÍ•RL?–°ã÷.)Ť”—\r¤äÊãÐa/¼Hô¥•9mQƒ7- *Žk4åÈ‘‹4Ô*jHÿ F¯0¡+ÿ¶› Sø×ÄÛÙ­ªRŒz·å6y®.}æ6.[ÎRv³òîøŸ˜óZ#ŽòsÃ¥ØäåKX(² ¶dãÓmI>IüL>õ+åƒiágdB;Ï_ ‡º¥l(|5«0&¹§Àý1r~v"¥$ 8k…Ô{izq¤’7³oí‘A3V5Ä'“!ñ9$>14l@4mî%Ô›®0PÆÌJ¨—MТõõÚi”Mœê9ÛÝ’‡Â³^.ìÑ‘¹™ Ø4ýÒy ’Ó WÓ¸Ñ#å£ó‚–<'!T#,ú;â©][U)™ÇV9M‚(É® (M£ëRSêö‚€ ¨lÌÞòù/E×qDÑ9‡-´<‹¨ùQˆíýp¶SlÈEŽá¨@@‘ú®ªq¦–F:º;ãQ¨·EÝͽWn7šººÄº`ªbo>B›ï>àÒ7¥ˆpwõ×½`gt)a'F¶ftçˆyxT4ß9‰iîÍd Rѯƒ-˜·BÍ‚ô øë@¾\‘£À>bú ZÉ'… ø²G6˜.|—g~‰AëŒïG[´£M¥Ñևߔ¥5ËTD`©ž'+N> stream xÚ•ZYoäÆ~ß_¡7SÈ’a³›Wp”uì$6K†¬ „šéÑÐ;CNxX«À?>u5Ù¤¨Õ‚À>ª«¯:¾ªuߺ*ã«\ë¨4ÅÕîü&¦ÖîአßÿõºCòÏwo~ÿUš^©8*ãR]Ý|Vwû«÷Áͱº ¶»µÖùÃuhL|Ó\'EÍÕn¨›î|¬‡#—†£Å‚ ÞÝÞrË¥k¯C²³}*˜Ì:¾þùîooÞÝMËK“ä3÷”¯o$+L¤´á<mcÅuãn’"ãeba7v}+uÏ_ÜMÝp¹²ö|®š=WNu#£™*Ù ]Õô»®¾ \ÿ)NãúðÎÙ·g‹çû •ŽTÊ»pk€ØpáoØ”QVæ@O„í8\ÆAè£ãHÅ¥£{ËT5|c¶ëZ¹l\~ûú¡©N'»‡}¨ˆà»v°2ðtr—ÞY¹vY¤Œ¯IXèäÛ|òÀÎbÂëËüõ%¥Š U¸~ÿîî‡ï¿ÛÜÈDó®õéºÐAÄ”YâS†&†ÃI eé2›8oÍŸæQæ×ÍÁvuÛ… ·ao›}X7/«Òi¤aZykíZ¼uœDæÊR¥EþŠˆ;êÐ#ßó5S™ô²mDi#Å×òþ†ï%dÙÅ>»¯Q)¸TÒ‘Ï”¤0É>wõŽú•Õ¯™Òê_¸ÂD8úWxîx½Ÿq— •u3„»öò¶§OÝdb"£Ü°›ö‚Òõ󱘶¼œVÆfO&rA Žå¡}ÞÙY6¢¤ä¡Ìɪ®–ºjEöæZ¡æ(RYU÷#4 Ü»o›/¨˜ö£Ý!õZî®Ô[]ÿ Õ¤¶g^ŒžV $@*u™¿ T 6÷톡ŽÕ°òpòµÝsãÌ *ç ­ÂWîÉQxòi÷Ÿ‘I¢,u ²ò#Xu\…;ÛØ;xh$ߦ¸³:°3[  ËÈ!ou¾ oe÷pŽ/ªîL—Ÿa¨ò(ŸÊ+Zı’V7LíBŒŠÒTÏŽ³lµÿ#ÎPn¡dúÅ¢SÒ\ÁŠ5 ˜riJhÃÆ0+…MÜqù~”žϞç3b ÀÇ ¬ä2Ä1-žþ£œOê‰Î-kp‡n÷]³ úñþ\îœ _Ü›2€VQDÓ(É”Þ->À“ÄM&VÁ#MÞ}à>Á­ ×K"  õ¼ õ°È­ð«Ü$LƘl¬%`¢fÅ 3SΓȳ¶¹­Ì—Deqðï-K [ÖÅ$¿ÛŸ4Ê“ ¼~Á¼Dˆ¸Ò>1A‘@<ÁÁ?½>ë7òûÍÍÅ_@ಓ]EW“)ƸÜi¹€§Õ»64 X8¯èÎ(¤è‰OC-° NzŠ4UÇ@‚3pé4»j° üSà·Þ>XàßqMâ‘Ø*Ã>žXú°ê-± mšh m…³cÁö zVö«`áðÄ ÖVˉŸHÜbƒC& wŽ»pØ@ òפwŠÐ6Ÿ"ÎÐ.fÂMÀ±ßry¹l¡ë¦õùC+áMfr²Ç´¤ãf 櫺hBà¾}›ãÃŽÙóp‡ÄÊH¸Áƒ†ƒ1htÁ9 3cä920 ®ç`«a쬰صãåD®ÒͶq;|áì2¢B9M„X»‡bÀœ{&:·l-h’DPJîNmo1ê•­Ê Š«íŒ8aIF <íy’PPˆpFn¨°­¸zéjŠš™pì}h»§­­!`Ÿº?SÐ:e#X#íé¢ÀWÜqf# }{AîõŽ:}–o™ìÈ>CÖ¤d‹Ý[ñˆMG8¡z‡â{äVŽ«tH0Ÿ²1YE_e|@!JÁE¿žáñ(·#Ž`+XÔË`‘›¿æ“^lj[Iœ¤H(|ÿ¼å:êWÖ¼fêlj9xÅ@Jq¢*…cð%—,–‰’È\‡04ø»¥›º°Î Ý}ž‚ÙٵݞËèkðût ÷ÔŽ×nùÓ#rn›-Sp’¹”Ó&$ZœV ê·®UüqsbçįÀŽŽk·üqsR¥nLöuÿK(˜*X¦ BuÔJZŽ…wçj×sq‘FZÂ>]šò}äû¾ ·¶"­oÑ;l¹g8~3eF;ˆéÂC}²›n:t4AvÓí1ƒo5 ë¡ÔùÃ[_’GŽ˜±Ìº…¥+À–û‘,´ýÝeHS¥Dâ@ ­Ï$ß`ž<,¬Ò5€§L™a î«ûÓ“lZq!Í2ìÐè{”YaQYtM¯lÄ)SÉ}Ùüà*N–ìc–ÿ"qe9ä„ FÐ-\…µ­Å“-J²×ºŒ9ÌàoTü2ö·völϸE±t⻿æå$¸…7$óÕÆ+° 3H‡ÞÿŒÊ¡YDó{&çÆDÅ J=Yï?lD9QÚ;-˜O‹s4TÀu錪ncY*¢˜yQ ”ç}ż~Ʀ)Kù\öGÄz LÀ÷ñ8û—LBøö®¦#Í\ ý 5v¸¼ø“t×nŠÅ²ú¡ê† Ah9!TʬžÁø©Ê@?{¦P =I\bÌ£Ô¼¶'Gzä[¢¼bêcXÛk(Ès W×¢œë¹Â6›QŒráÈÀj]aØqâü/ÞÛ l‡rÞTKnNâ¤GǪGD’}”üh¢¢$[%Ÿ0ÈÏV „ äú±ð`.Ìîk§ª{ 03 -·Ñs%•~÷õ®nGa6 Vji¬.àû  «DÏ£Y1k>QuÒ+à`2v[é'<䜱±Î9ž;`„Vç‡íÖfÎ c…r,d’ÎÝ´‰*£Lc>°ˆ2ójîQ¨C|+÷¸búrÁ{nM9A†ßsUO¿R@߆\P‰ïÝ;Ô÷öPÜáS¤qÌ„»–"·óôH‚½â*Pþ“–| endstream endobj 828 0 obj << /Length 2406 /Filter /FlateDecode >> stream xÚ¥XKsÛ8¾ûW¨r •29 ð‘œv§<³™ªÙÙµ½§É`’P¦…¤üØ_¿Ýh€"ÆvjËU6Ý~| ¶Šá­Êx•§iTòbµ9\ÄvµÝ­hpýëst!†#Ê¿ß^üô‹+Ge\²ÕívÌê¶Zýü¼—Ç^µë0MÓ€\‡œ‹às³NŠ–å¦×ÍŽ>>ê~O£~¯pÀƒ«›Z9¶f–êºuÈà0¤lý×íoW·ƒx"IÞ¨R¾®HVðˆ¥œézÓªêäÉx ë~oN;”W€"{ÝÑh#ÜYq•[Em÷²Ù©Ê……gwªw6°œÜ–‡µlµ¼«ª Òecé’2âX€6V¸9è¦us<õa ìÂNÿ×oœ¨Å’ÆÜoÔÍ÷' NV!K#&<éVµÚ´!ÜAx0• ÷ÆÜ/Ÿ!¢²,ýÑ—X°u˜‹2¸Eýx ZëñV]O3°X÷™& ËA6U7Â…Ç5 jKP‚Åjµq;{ϰQOn ö¢P »ƒ”`$̱UÚœ:ò«óYènº™ø_X{ÒЉø‘ôÍ’±¾¬Œò$£#~KFy”ÍîË C·lJðѸðûnœê“(YTÉ+@$/h´.Ò ZÒ*d‹œÊ‰$÷Ê5oToäÅâxì#‹ŠÑþ_J𢈄õ‚Ñý‚³‹õ$Ñ1´™@kvä‚IXœEÙù6Î=Q-‰#‘{ÓlPJÆ ¿Õ5تPù HßHÔc‰Î*ò&r3¡Žgi?ݾÄ,UN3¹Å\0äË‹IDŽ:›ÃÏå8ô´X!ïž3Lè–` éçœaB)#÷)Ãñçу"aXÓNîàoX9éÊ1HqÜ#ëç#•TüO1ŠŸÆªâ› »ÅÐ/TtŽBÚµ½ÛL@ÁŸ"Ïߥ[vug'Ô^áHÒÏØ½IŒ¯'­ õÔ¦,Ö@°ƒ’R¸j»O³ê±5ÓŠŽÆNmy8×ÜÒ±Àão¬6X=uå8I‡ô”ìž]“h¯ß'úQíª†¦»·„ÉÏá†6¼=^´Žž‚^âú-¬KߺIšG¼Læ@7áþ2y6Bð¸ì/”¢ÄmŸ\ǬQá#/Gíõ90üZu³‹êúvzCÖ?ÁiHðyh+Ûåað|±`ÖîGú„3)$öŒ‰¹Iyšø~ ý`rŽ\FËy:²¯ã5±ï÷ÍÉÏÈbfN>2gú‚9ù`Î¥Ìñ ‰’(lI  ž[Þ8µYŒ—6‹á|H³8Cœc|àïà4u(Ê”HQçˆ÷ê™Fz,–0hMÐÈ ¹aTØ ô)L+º†7­dl%,Rÿ‚?=hMÖ-÷LlŽrL-ªÄ-qŸûµ"µ²IHT—TJõ––GèÓæ‰Ü£OkÁ,‰Íؓڜz é}Ͱ .\²(|Oö½ÜìÚGŽgå%´ŒéÈçÑX—Ô<£”VdŽõǧ5˜˜¦v£FYùQ2ã~ǾµØ¦\2’ñ;mj™ }ªk’¬þÍbS P =ÉBúœ6'&UÓ%´9×À-K^étW²b Š|bŒ¸˜ö!7ßBr|©“"’ôµWAGލ—Àå”ås° Åã{…Ý>Nÿ1nPx endstream endobj 833 0 obj << /Length 2923 /Filter /FlateDecode >> stream xÚ­ZÝܶ÷_q°Ö°hñC”ä>M‘´îCÎEÓ :-÷VVÚHZÛ—‡þíá”´ÖÞÓÀ€—ŸCÎpæ7:~•À?~U$W™”¬PùUux‘ØÑþþŠ7yÁݺƳ•ßÞ¾xû}š^ñ„IÁ¯nwsR·Û«FÞ—ÇÑô›XJ©w›X©4zßnDÁpYu{O“ŸêqO­qo°¡¢ï>| ‘cßmbØR™aØÄS‘›ÝþíÅw·áz©ÏäW~Ɉž3ÂSɸ–W:WŒKEÜü˜¤É`Æ_6@!ªîP·cæ@8 ô¸Ÿ:—d¬r&xë5K³Œ6Œ ™ŠèØz·qqs™3Í‘U»ƒ™CY kÀ:^~Ý WyƒäuôiozC'Ñc¤Y¹ô?c¯p*…ã%ýÀSÕÇ‘&ñ- »goÖdȳŒñ\xáTÝÖ°›U!*&µš„oI¶[:f0Ôå%Þº{Wxï=Þ÷Ôþ<Ð>¯ýÝÚ½T|œº;ÁKIÓ“lç,Uú\©,ck| ÍT&ýu_ß¼^ã‰#ï|ÎU–yôC7âií»ðþæ#6­‰Ãĸ/QCtŠ< nõL7`¢nƒôdÚÊMƒj¬ÞUj–H>½ZÛÅ7Lŧ0(›ª,ê¿íü ¨ç™ˆÚn$9J®XX°P²ÿœ†ñ"u-¦}jl&Ë êM9tí›@ept* üüJjng«²ÅëØö½§qàWö#íêv«öžI–gÁñŠ+B ËyîÕã`šS‘ ÈI–ÀJ‹;²PL(ÈÕã84¨vªEô¡ÜH}$!g©Nfñð@€€ÞØõkWA ̘–’HßÂþµçOY"RaÐÿØ‘ŒwucÖèÈ!ØìÇ YÙ׈4ðZ @ºBePHáõë ÀÖÚÑ(€$(ÔªÎÝ“ÝßY”#ª[³+OÍhPëî ¨§9 Hkp®h²¸9¯N=µd";ÃÀmݛꒌSÄ… ½7ør2º·Vëìµ£HyÕ;úµ/‡ ‡­Ø´O‹ð´ØñOKÛ™¡D0 ÚÛ3нÁ ~•`cÄõ¯qHï.½àri€ A™PÑ·p¬z’òš4Í&<˜KóQ‘qÐ÷B„}õªjà»çáÝÛº¹ b&|•&Î#ÀÕ Ü¡„ª¬'àV–èZydŋßjG»Úcá¾NXfƒƒ ÷½Œ3Р¿¶hd>~}<9)ì×­Ç«U äà-R¾0ÁG˜)¦R5cÏ k)W%ªz¦påæàX*5s¢È¦5_ÆIß}>’¸úý J%‘½Ó4ÖíFÓRs °g>W ¸’ÖÇÙØ%>H…iJ`›äêö%Ù;¶Á8Úµû-ýŽG‚•p&ÓbòÒH¥é"ð°â¥péÌ“U`@]ãüÉ`¬š¡U{°Cé€ Ÿ+x#+—’bv§0#UN€âÞ¸ ä8ã„t~äÞŰM`†"ïˆmˆrÀZ[ŠY'Ìól-(ÿÂQØQ0Ô‹qv ‰ú£‰f×û¤ÍÏúÞ¶y¸$hê¾éîÊÆùóà kκ429—Èï*ƒÉbíÔ7ÿ}ËnÞ~óóYÉÁ”­Ëé¼\¬±ëš†RÃá]xó‚e¹+ ¬2@ˆº®¯ŸvvÈ„c¿õYY}8˜m]ŽÆC4˜Š7 ‡Ä6lÁ˜¶Ä. ÊS{¹Tëç^.¦€R/÷óހ«b–÷‹µ¤âQrżæà«fsžU°RËlòÜ1›>—Y7®e’9D×zÆH à%ìÐ /Д>y^8Bs÷uۺʟ jƒ{C,J±Å؇Úàºî+ l…0éâu6§ë’¶'‰Íß¾òýÿxéedÂÓ¹‚® ÍdÖ°”uØ]‘º ž³\Éß$¡‰Xèû³ °•í¶v¾D©Po¤¹%bg²xê»ì†OHJ]W‹C´¦õB’‰ ö.ßÒ^¬ÞƒÏêú5ærÁÒ$ ¿-¡Y_Ø€g¢6VPêê„îeåèXªd–]//°Ä@¢ƒ=c¬ ¹Ëë$¦Äˆ3ÇÓˆþEÑŸhšŠ¥Èö0Äß­Á8¨5nØâ(¦ÎÔÌ/¾Nƒþ z~%êÒ#hH@ˆ\6ù&<_f8–•a¾æe¹X>Æ‘ÿØä’â†Dº¸¾vVï|ncyH”ç¡vµ¬dæ1Q¢â-%Á(Ugš“¡ñõÊf¹|ʶ]½}kˆ€õ¸ìïOC ¸ðÕpÖSX0‰*"”- Àa»ÙبFÎŒsŠà¬ ìþ ù>rS¹#Žuߣ} Ô‰H´~õÞ@S)r“»®?„]Veæ Ë:úû&WA1ÏBA V4¤n¶¬|Àÿ]Ù€*ZùþÀZù¬Z¿š¾³ÅÞÌÎ[ÄÞÌmÿ4œ\iA|8§\ÒÏ:Ææ)+d0¨w—\h¾ˆ”ÕÖªkºvJeÁ™Ög5¤Å{þä˜ó©‚Ï*ØJBè !ç(ƒÎmQÔp´&†Ë°|†¿„{Xdœ K.QÐÑ!ÙÚ#m d”6hÆuéÂÇì+B=[wÒ‚QÅ’É_½ü=‰½~Îë!·‹<ì…[>Ù“¾8~úÄ_]Dï6•ÿ’¥æ/„=‹bŠSΡĬöò"Öv`É®ïg´fQ—²¹°õðÜVÀ”šÖBzÖµîÔuþ ¢Aå}*EXØ[†ó4T¶¾tÌ­Tç81±Xä“6cÇqñݺÖê07Élü‚UtÄÿÊ&z s­’è{B)Zh0–`¨CüR “%LOúv}ýŽ?'±7¤x ëBLίÓ]~òrtILE0èú…ÓÑ+œbº©Ô¹3媷Ÿ¯t“Ò M®\¸;ÌôH„r»MäsôÜ[¶.»$cùTB½¾~ùtîûŠr)‘m¯K/a™žH¿¼˜©3Ê„˜$<‘Mõí’ûï.:>RFu'W0wkÆD~VÛü2×É1úCƒ[H£Oõßä¬ìå¯Áèä×¥zUkGâÿLm“g#/Š)o@wìó»ùuÉõÕÌX>gIÓ¤ró²¤ÿÄ>c.²¦nÍä@sW=þ2/Zf½sÎÚ¯âl%Ï8Z?JNƒáç9¯ P‡Ý7úxµvD:ÿ–Ñ®§ÕøÙsúüC• W ÿ2¢r…¼;~-ýªäú§¯×…ÙÓ>S‚¿ùmº€Zó?fò endstream endobj 837 0 obj << /Length 3043 /Filter /FlateDecode >> stream xÚµZmÛ¸þž_±w8 Ú"fE‘¥»En‘´Whq»ýt¹ ²M¯u±%W/Ùl}ç…¤$¯ÜÝ-¬ù2$‡äÌ3ÏP‘W1ü“WE|e”…ί6ÇW1µ¶÷W\øù¯¤“[àj"ùãݫ߿OÓ+‹".äÕÝn:ÕÝöê—èf_žzÛ^¯”R‘þþz¥uýT_'yÍ妯ê{î|¨ú=—ú½Å‚ŽÞÝÞrË©m®W0dc»îz%a1)uýëÝŸ_½» ê¥IòÂ} äóÉr-¤Ò¼‘àj ”M…”ˆÌHß9Ù,©0‰ñ¯a÷²(¢;ØB´¿–‘Ûæ¡ìzwx.M»Å©®V¹0©¹ZÉ\h9×"K.iñeIÍ™«¥)P"÷/Ù‰’ºˆÞòÚ²¾·¼ƒfvbp'Ý\_<>™Àá*žÓÌ|f°\¹^·ösUö¶c×όȲ04^\_J¡Sý5 ÐÝ%:‰Êoï² ýîÅ6ôöp€Á³³@ÁÛNÇUûecOýL&‹þeÛ†¼l"ÿ«XâæØ'¡Ríx\XdÓe½åʾÜr÷oCçVjjKû׹ȵ‚Ý+!Sɪ㦠ù§q>à}UƒVɘÂÝüÏmÿâùæSûÉŒŽÞN ˆÇ3«ˆ•Èer¾òlÞL¤2˜öw¼+™h‘Çÿ7§~ÁÆþR}B×´3·œ/¢PÏ/ž…Õ¾áåÖCÏ·Ý«¾¯àúýµÇ|5C3C˜:)ÜÁ¥<-ÄØT•ÛmÕWM«˜ œ mà¾c‰Ó<Òî£nhÛf û….^ –ãQÕºzkw¶µõÆw{W‚òŽüd:øC,uÛ¹îeG,HÃq}ó"ƒÉÖ¨Õ£+C¬$,Ã¥>•¥îLÐËxhy848ìâeGUq³À!T_Ã]>VvM†?vëExU‰±›Ñ_ë¦^=ì+ð‰hC¾Jb›kBƒî³Ü`pƒÐÞqƒ!œtÏ3=Tˆ]ع¦ n¹RžN\­·^Òµß3ªÄs@±_N% £¹„KC½ÉK ^à 8Ý<áAï«Îèñ:W˜‹ŽcÇ2r0£C×`ÉßU>W[:sèûçÀ{øÄݰîúªÐê~@HN£’{¦¶ãèn´Gì\6À’, !æcsØ~¬íÃÇE3‘"ÕéÔN`Ö£-k§æà+þ´Àb8¬3fÿÒ*öXާjvMlf¦>vj &ŽÇÄ6àJ¼MjÜ éú–¢–w ÷*ò<$lzi¿Ò9 ½æùZ{:€ým/êëçCˆˆßf‡ðl †ó¿¨N@ý×ßbГÊ8BJ_PZ\$øÒ >¾ `®ªãßæ„WØÆLÇÑmu¬eLZ%—Ø–,DfÔÌΖÖR–s™+àm ·ëlìl»hNèûe 0À¬B{RÝa„7&¦I*Y‘Ío牅M‰eH¼…]f—°ßTg_ka8ßÖlo·ßŽT¥¼/«úÍL…1VéËôv¢ÀÇ—’×ÊqÖùeóy¥™ˆÓliwxó„\ nbÙg¶çÆ’öU×7í#W0ÖÉhÇYˆŒZ_ÀÛ# ·nlÇ¿€„›¶rˆ½u}N„ÿÏæá6õ×ü[Õ§Á©Ò U_®N£)nßðï#Åü+µµ.ø ŸX GÁ'Ä rº‘™p„X:w•C1x2ß(àçäˆ&4€…Œ†Ž .Ï}Dzrã)лѽïÞþ¸è`RŒÜ‘ãy/xtçÑûë\3§•*‡í|ª¹çÑŸœVAwð—Î:¢ ³ò<q–M()D<' §ÖœrÔU#€$»ä&Š÷\Dg ZðPu®‰H³bÃÁÍÓ·®Ðð/ Ä ýÊM]skÚ¥iô›Ý¸iêòè¹E6䦃ÄÄëçYCÁ¯U½ÄPu“˜Àò¹îÐDº›|¦;TYwcXwh˜èµÒÏ'õÁz}!ºu#üHgƒÜ¶w;Ã5&”A‚/쥧+9×xNÙ!­H“í·»a$¹`€Êˆ¢(¼4Åݱ¡)é–F41M”78(ŒÎ•)ïQ ¸3`ºº tjr‚EL†Ì_iPDVNtÒ–wÔÉTô'Dyñ§k0:ûˆ.`R˜ ŸrSe8ñnItØBHÈÆh~Î)Šì<“( cè ÿŽèY.)k¹Ÿˆ„Õ¨•‚f6 D…™)ŒSôðÈÍCG1õiD‡ÁOto»y6ÅË¥0ÞalÈ%ST)u–]µ¡$ŠªU ÊK\d…,‰tKg;Àá¾ÝàÝûËEÏS™ɈeÍ#C‡£ýãЂÄ!'‚sZ˜9!ž™YgËv³ÿOSCæ>±/ŽJòàÁjoÑ©Ôðïæ0ôôî•áÄ¿Ÿ\kߥNuÆÕsSé§¡ë&!Be,µ¶ìбÜ5GË%N¼œ`aß8jíTŸmØq šHzÕA"墽fŽ^ѺР=q6l®jn+”=²§7mÙ>r×z€X¨x¿8 ëm¹u3íÂä\àÇ|Ñ{†Œº¥Ö­¶vWpF‡^,Ø­[ìKv8†xùnËú¶9ü›ÁÚ¿ MYýø,Rù×)fâßÓò*3lðDŠØ=iñËß;ÿ‘ã¯$ûëh…RiÊPäÇzzÚu+ó«ª^ÁÁàŽÕz؆_HÍÎnô'<]´œoÕE&\×Õáù´0=SŸñáä]´‰ñ9aãèÝXc΀"þ[ÍvØX?œÍÊLÌÊ8³â9¹aö•‡!¾Ær¾ãÑP(WbSó±V‰³£éÕà#!~t*koSPÙ”±z_­ØùÅBíE)`Hñ¾¸ Úûáèž ¹…œ]»èŒã&gÍôö… ðÒó®Ì„Qëf5<1~`fwÚP y›ËøèvœJ_u.uv†x·.„Pf½ôP–jþkK•&ÊÃsáK9SRœ øç'Èy*a1@%þ%òo+Šh>QÒ ûw¹ŒFg3@˜¢šÖŠ‚ÖFT…øæßzó–Evî·ç_„ 2,pôÃæ{žÅvö–râ„Õ3¬œ.ƒÜ)+\‚ퟫ]ù4š3rZ¯D‚.Íì³!t->‰RŒž=“ìGyGìW0>…MŸÅ“kyQ¡”$ñÑ:,4å»s,¼á›½nÈ‚a¹P?ºË8 ¿›˜8<¥œš®^òªU‘Bùì9éfµaõoV‹ßi´R޹“%ÿMòôR’eäWñ-²4¸ÂÈÛó̽p{~"ŽØs%)»Ìñ‹+ŠÈ„²sdÂþÎqñÍÊ? h¡ótæ(Î@¬T:”¢?étôA…›ø7Ȥ̛|Þ‡Š^$CÞÐ9±’{k{ä0X–»êx ÷uoö:åºÜÀÊP½©ÏÐGȘÍ(s_1-E¯, ­dçî"Ÿä*R"Í‹³]_³LÄy1ËñËüb§ endstream endobj 844 0 obj << /Length 3022 /Filter /FlateDecode >> stream xÚ­Yéoݸÿž¿ÂØ/•ˆ%RÇ.Š¢ ¼Ûì"Eç-P$VÖ£ý”èIoEÉÐ?¾3R—i;=Äâ1‡sü8ŸEðŸÑY–$¬ùYu|™ÑþæŒ~zÅ-]„á‚ò¯—¯þø£”gE2‚ÿÜÇ^Æ,ÏâY'ça 'Ø1ü¦Áû^}Џ¸·+‹•23–ñÅBêÿL÷»Þ(,/&Á†îæ¦QÚw‚¤#K|FV·!.EòŒÅE¼V$¨µ^×p±>òt3‰Ì¼w%ÙY –ù#|lÁ‘¢‰ë±D<À%e)¨_©u2·Ö‘š†Æ¸9ŽßTK­‡ó8 º‘:U76{j~Ïy€v 40˜ a(ü‹4¶=Ù$ÒÖ–yiö}¸Ã¿VÀ< ^£PYp5¤VÐO!ÅÊkØ4‰¹±;Ø.XÓØ¨ÕõØ`;®A€®§öoÚžvøVeSM9Ô]k—Þê ùlÙÒ‘±ÛõwµVįjÆB,Ì=©ÝjèËVW}}^ã@2ÉpÝ €[Y;Ûí¹m4cIq9.8êÆ|Õý©‡{!©26Šš§²7Z¿C™§ †‰áÐwãÍÁ2pQfM{%àS"‰‚¢êÍEã”Û½ltG­Q+Ǽ־CL7œÄ… : l{£ZH7ƒ¢ÑVÝÑð¡h䫹¹M㦴„ L2‚±‹cYéñ]cÙï‰úŽ(®Ëªnê¡V… DGhêÛt%òŒ °' v•'ñ )ËQ‡ r_ÚÚ0µ¡¿Bã²Á¡°Œfü 2Ü/›A^y‡ÒßQ§n}QŽc*λ/)s'ÁOÿÕ¦p«5û  ²Éýݹ±-°˜±l¶ºI²Ä¤ Q4Í_Ò£äÝl™ÎaâYš3 a*ÄЙ/N#"ô–¦éŒ³À!c8ؘ {û޾­›FkõÄQžELò'‚øË‘—‹LÌÙÂzoe†ÈÙ+{ãR²µòãyìk}jœÏ†–ØîÆá4Ôþ×zš=œ½ÆpD“e³¡ú‰ 0è'EÖè§®FH«‰ãj‚й…%}´‚¸SRÎÙÆÇà5™^©Éæêv_W°dÿ½YäÛ*›ýǯéÊ}xÁÐïÀ£™©Úò¨¼Oæ,›[Z@¼Æ ñbÅû÷}w< xÖ´0!ÄŒº @6µeäóæ"ai:¡Z1Ë»Ù:bQ$gZÀO†·1,ØÕB#6«wvÞ\;º‡‘ÍýÃÅ_¯ßä,•Ù„ß ÓUê9ü&$Ëy¾Â4K#@:Ù*¾½Æì#Pº^Q³ÖôÅ„_Õ÷¨RlîGJbØÆsB,MÈÂå_šªÐMÜò/à7ãñ„IKÛ=b^·›9wsئW’›öXþ&V¡í\­‰ÿtúDäÆ$ÿ7£×Ó*4Rkï³&ÅgÓE•½• „ò¿o2ð”,{ÂüóBfhŠÉ»ÞÇ–Ãë-žÄxÞ¿Ä/u´ÿ¨u=˜°ž^¸|æ(A/ŽiH!^ÌY:¿#Ž B|Ïs´¯=íRu=¨Ç‚CˆT-XÌ Ñ¡;2C±Wø‘M×X5>¾D±V`Ù •±õ:hXCæ•}N&¹Ñ=Í ÖÂïuiIåü~¡ á9v—>츔M¯Ê½ƒÒ‰Ìf)&V.Ú/ÍÙâk¼—аÍ<ÊA‰wOó&Ø 7åhîh¢k•F=å<ø œžy³q@¹ˆ—Vë¹Ë8b)Ÿ’¯½0H½ÈVYäƒ$ÔѾ/hʹ:7j@Yí-àˆ 8ÓY…Ã#æ{¿9<ÁþVܪÀêîbÐTŽªlÙÊ™É4yUM~¥á*¹­»QSÏÉgx‘…KË‚ŸGíõݸH™à|ö²Ñ«6Îd1•v·rn…7g°oYWÑæ-Û+c­r]œ”³àR. Æg4=r7hèŸ-†¼6¬P–^ ¾ ‚<Ê &ô@|–ÌXD¹2–E˨8í³ÈA58-ÏW>ðØÀl Eùç ¹Ÿ@Îà@¸uÑ›ºmŒMî5#ÜÝãW OrÆ‹NTx©æ¨Ã¹yo™®^%FÖŒ%$ýÇ  ô¹:ˆÿÙB¹…  Ñ£WÇRCü²;êdß25²[ac,Ç®·Jß«¡¬MÚæ_a©ÍµÅ™k A?„՜® »«/ :oÖ…ø•ŠÉ -¡‘kUµÛ¤^njJü©ââ­Xq°¢)Y¾7°ç„¶‰Â'j"øŒx€¢Skí#·qQ~wÞ° (.’s¦Ö©T”üµ˜¼X ÃÆBDQîÜ«U?SïËfSkÚC§SS«=I”cˆ|´,ÒMyÓ¬I|'´üÓƒ"èœݵvÀ£"޽uZc"Ïh콀á„Þ9EªÇÏpˆWRœÅyΊ—ÊR‡ rï3|Ító;œ:'M|üœÆø=¼¬ßìH_?ªüGØ'ß(§£~ANÁlR¬åt…³0)à ‘làÖaàÿ¹köÌò”ëþþ„ëñäMoµf#rBøªûÚ&èÌå4èÐ#.r@®˜¬†—(ï-Í‚r¿fXþlŒ>ØL5[ýh’“·Ölå|ôs@Õ<O^˜™’P!à Œ «µ­àHt-ó±tu´„}Ù?XÌd#–,)½mÉ+Ô^xQ¸ÃÖj±tX_puaÁŠì-_hzVÇ„‚”¸(%tž€9»aḏ[W“àW­;Œ<Èn.ˆÃ°­·ùüEš5üÇi„"m­jOSÝÙó$Ý!Iè¹zœÏQgð*pP×ÇSó@chí®töœìf»ÃáÜêˆ`M5Äa±¬™oN—ÁK¹ioþ®Àè=K±,ˆ”B-ÅO¸«4²5aÁRD1ÄFL>ÒÕ¬d°൥‡º*xo*þÜÕ®`ÄE4ÓÛ½IjмØíþì»w4º‚ñØ¢ÃÍÏ=Y-í ábG}÷C¨¦Q E˜¼_[¢ð}3š¸Ë£àƒ­ÈEÒÚ°Š »’à¸ÅÉBðˆêN8g7A5ö½2ú6…:#`9Ð*˜»éË£ö=âñ„= 6¦ßsM~ãÁÞŸüæ…j–tô…tªúcݪ 'z<ÝÖ}×N)3áö¤_Òr ÐváµÊÞm?Ÿ²±s=ÆõÅ£ ¬¥bõr2:•YA:õýÐ zJD¤fmîëòâû?}Wƒïž*Zò8e2_§1ÜËl™/Ô‡ƒ«Ê‹¦±É±ƒªÀoÙN}ÀÁ=}i—œ‰ˆopêDZŠSX6—Öà<wŸ½@Àû ˆ{C%h7AÚoÙìÃ7læÂs€ñß·Ø endstream endobj 849 0 obj << /Length 2484 /Filter /FlateDecode >> stream xÚµYYÛ8~ϯ0‚V"Ž(R×ótŽÍAínƒ$j™¶9‘%CG§{ýV±HYRäI6»‹t â]«¾¢ù*€|•«D–ÉtUŸ¦·Ù¯ˆ¸~ó„Ûy>LôG3_Ü<ùõu­xÀ² ã«›Ýx«›íê£wuÈOjÖ¾“¿­})#ïmµSºó¢ÓÕž¿êî@TwPHHïÕfC=§¦^û°¤Pm»ö9&=­?ßüãÉ«›½( PœùAx aT®âT2.$Ic ãÈkU×âñ°*¯’‚<ƒCÌôúÔéºj?Q°¹yuýî÷§Û­‚=žB·Ë§‡ Éb.Ýú]ÝÐqºÚª‰§€í%^‡#ÒÛøÿ,û–f Ó?ÀüUüÕŽþÐhÏk[eû›5÷úÊGVV ÖEI„`<"*c™„À~Ñ8°Fýæö- æÕ–ˆ¢>‘»¾ÒEÞ ‹É¶H "q¯s·¡¢ž—/_úz§‹¦në]gÇ«ü¨ Zñ2ïrÃr`yåÖ: }È«½2v¾ÓYï©Kò+#CS÷ûµó%Srƒ:bg ²ÜÇÍç%»Eã)wSïúOªaV¯iÌR.€ˆÁ“2šóĶ·â~E^^öhl×»%v’˜I8ô[ÏBI1îµÄYš±HÕòÎÞ6´’"ºQh6…6ÄfÞ¨ßh+ˆñ^>O8˲”$±WDMÕ²øÌo©ª=h}Aðx 7Ïé½ÖjK¶±+ g2ŽVI5¥*+ådÜž-ó/¸éÔ?Æ ÞX–ù]©ÍŸ°0 g2ÜV¥>êîÿ!Gœ±,L~ ­jîÁí~Ô .¸ ƒ›Î¹Î6Aÿ/ÕüâùÍÕß—Ø S‹xÆÞ‹çëTx°âœ…@þçjºÞ÷z‘‹Éפˆ…Ø‹bù3긂k ¡µ]âEFTÒ¿0˜ Î.±Ö½5ž ²8¬]Þå…&ñ qΆ®(d2AÖ3ÆC›ÑŸo·ƒOŽÁ4 §á ÚÇ7~Ćðî(iQcˆ3æN¤”SðK fìú®ouæv¿J}¥A=F µ]:‰î-MÌ“¢(øRŸä‰¢Q9ÜK¶ö£80÷ô‹ñgX8f#Xl[²”˜LgИؖ\&fY<óäÂ^!ï§™æû—ôJË-HÂÜ›WëˆlU7ÓZqj›q>5N×U1•ž{Ò_Š“2›*°„ Ûç{5$Ø}“­[ê­Vµõ¹,ÞÌ ]Q“5ÊÉ&ëMœï××{ÁzBÆ!ʹ‚@š…Ä‚d š/ôn[BIä©c^´E© iAƒÁÔ—?šPxm—7¯@ëš>œezjZ9¼­ôÃ3³„hp‹ ˜0óJ!R·‚›T7¿?=3Þ]††qÌ‚³¿ó&\¨tkØ2Öi ¶A¸’ A_#lø /gìi;òU—%Q=ú {c¤žtŠ “øãÞƒÑ@Vàžñ,lÀ¨ˆ"™pj ´YD&·ÇÞõ[c÷jó£¥N x¤>Q¶Ã¼üt~ZFíó"œ®Ò>âuoø‰Ñ×Û”nNÎNŽ=õáÛ­w“hÊÁD³{°'·`»¯lÂÎ"/Kµx·…ÌX Lcü£?¤[®:MOèš »û"‹X:rsËøDf*#¸؃ã4qW»bã‹©a¡ƒíx¯EtîßB1Áe¥IfìÁX5YzV ¶tKßþdÓÖ&䆢Ղ!ƒÉÅÀà°ýb"HY O#Ûb"¥ ¸°”B$êJò‹»‡ìœŽ*¯ÚaïÎQ&Œ'#Á±[Û‰6òCäO• £Ð=€‡òqJ“ÃDæöK½ }†m—\¢7K‚tjþSnj¾àá’PP™'€™­Täå¦Ú)ÛšRÒÙßM¿Ãå«’N $SŠa¹Ú%.éd€=_ÿT&úu‹)AÄc$ù°Äp¹þ6ªWÓ[fKè–á¬I:O¤~˜}“KSÊ¥ï x/!ŸJSÌøi²+¾!@Z½×ß çÛDëj§]7þè2K¼7NY;(«œÚ¹Aô49ŠR[«[{¡.LdF(£1ǘêÌaÛ1Ú˜¿á§"Sé®T×)\(>ç ñøÑÂïÏg BùE¤E·Ä¸ÕUçÃÕ4ý©óÛþîOð³?­e’l†¨®ü‚8EbÉ{BðBlé…“CÀçê §ü+êjõž0: Ùs§.,häâü2„êíà…{}sÐö€CÞÎÖ*£¹¢£–qdäÎ:dg#œ©¿¤y÷8¶Á"EñÜ=d™R6Bb€Ëþ {€(~ •Oqð»Ú¼þ ”×`Ÿ»~·s¥0Úç¼U,<Ë®ÞïKå«ecú„æü×s¦Ùð^D)JD 9.T3…‘Qr»Jv‘1.~íËÒǺ툂¬icµIüé¦X A¾ú–|0dj 鑈nŸ0‹‡}°•Ø€_ŸhÌTgø5(†ó¶µÂéܼŽàèT`œv‡¹ãŒŒ_†Ö/q…¶órjb^-Ñ_ÌÛÖ#5¬_¡ÞI)lŒ)mxm—l‹ä1&&5!ä‚mãpŒªvM}œ„îAÿ£8í ÚÔÆ'DÕõ<±4z¯éNσ<¾f3ÊÉcÇ[÷˜Í¥:§ž¹w϶ ÄÐ6ïõ½Ñpõlf‡ºò¯2yÞ”dË›_ï|p‡brCgµPŠé3™óE²lݳ+($³rÛ:m¿7eØ…X'ãBûgX\ ò`? 3€Gôäþm©ÀÂhxäª ©-Éž0ž†gо° ýT œ?wAÆ>#Á=]Q|4@)ðbã×¼#Q[ñæ)Å>$¤lM®Ýü¡\°8˜X̽“G| ¢`šýmê‡nŠ\Ü{k¥Þ uI‚­K˜ú·º-ú¶5¸šºšÿ²$ƒ˜…©Xñ0aiÈ¿óë’›í¦/üÂ4ßÔ¦v‡§‘O\ÈÍÁ•ܱÛïœO‘®9$eÇÅÈÜõÆäÞÞ¾¹œ¡ãµ½)z‚Øó.§€¼œ«<•exm$‹“ï(ÄÎõÏ“Ô1ÝÐ>rØCÿ „ÃC§ endstream endobj 853 0 obj << /Length 2125 /Filter /FlateDecode >> stream xÚÅYM㸽ϯð-r0ÒŠ¢¨]ä’Î&@Ù ÒC°»µMÛJdËäž ?>¯X¤,©ÙÝ3‹ž 3æG‰dU½zUäˆUŒ?bUÆ«\ʨL‹Õæø.6£Ý~Åüå°r!ÉäïÞ}óg¥V"ŽÊ¸«»ÝJ QÓIÝmW?2[ÿr÷×wßß+©$ùÌ-IòÉžy¶y”•Òž8UV¤‘)o§Ö¡Ê’àV¯Cœ¶õi¿ež›¿I°ÕÔUÁÐÚ߃øþö–玦D°Ñ}O'_* +$E”KÅûýˆ:| slqhyøÞŒÚAͺ“~zËCÛºÓ›¡ùĽ{2ЧŖÆ342U„GªžEê÷?Ñ÷í…;‡j;SQ°ŽƒÙƒÍJ§ p`¯#{ß#Õ0Î8üÓ°TSŸôwh–,À(ɦ(e%*ÁæfÓ¾½týs¬bü>X¥%šÂÉï.§ yœ÷®{þ=µï¿l#zük]H£2 +k@sâu’2 cÝ&ØG(97Éǃ¶(ÎJë±v8p— €ÆÝè±)x¾¶_¶—á|ìüÙZ¸²“ưÓõØ›ˆ‘ñ¨Ùýòs,¤; ¬²3äcú}L¥ý.NGý2¬Ô4Z©gWí€oì“ñ“™¢è4+ì+à€©Q™ºUÓžìLmWÕS—¥¢¤èãiæ…zܨw'<ÑÄеM£½Xvñ"¥taŸZ‚éj"˜oÍW2Ë#™¥ð~©ÔåOÿ외dðã™°öËÇ"*À X†î[ L8*ÔU>Ô}}¸õ@ôXÌÏùC{ }Q’Èû»µOuã].ŽTÔÞ¬+²¡3*ÞÚŸ\Â@‡Ò"ýr|¢±CÜ´$ðqTÑùò=E¤‰Løù#É 7Ñ¿™)‚Îõ{Ý/–%†Î©™±ö 윺‹ŒäéˆòL~I<•**Ô55˜j¡ ¹tf‚£Â$Už2Fn¹K4:Ð%*æf’˜–@©M27áª#óÚ¦¦ÁWÆ åÚN‘ ™±·óã˜rçZÂPzöp²Y†±‰_ ÙAw'ˆ?Ö4šòB·¿ó†¹I”‹â‹ª‡¼Pžê{ »Û£LRgʨ§Ê2—A0UŸlOξ’¤qø¦±:YÇ/,rPd ™XÎ32ôMci2ž1uÓ|0“3%¿QÖ¤æ¨$¸![R£GL­ÄøÄ¬Ñr05Jo®Q«Ï·©ŠqÉpâlDZßèlŽpvxÂÒ2JGçéÍ¡ýÃo‰k„äÎßëá==þ]úq£ÏƒËø•M@÷ñ<ô<¼mù—«EÌîµýÀgð4uwÀ‡v‘ÙŠ|³pîÆ@Wï.rI¸©6D“"ˆœ1W™hˆ$êMÎ8]}¬:[¯LoK©»ÉéÁÞøîFáh ܬ\]ÖŠ—uÍ /üL9“gQ1qŽ£ßNïá̰íB¢¡߇ý ÏW®¼®‘ÄPé•tŠé~îº[m(zZªP@”1'âP[> ·aLL'ÓfîŒoi­Ê­o\A§çÝôãâ“Ô^%å•G¹`ÛE1¬ô¦†u¬DísÕUû®:¼VY¤„xbâyÊÂÙr¤˜ñÌMø!|ôÆZ%ù˜©ÈýÂó|DV¤«®uIêuÉ„gÇQ£Õ ®:Xs eyö˜óEàJd•²,^µ+=§”‹ ÞV\øP‚J`,;ÿVÿÇŒ—‡±zQþ:œ,.(ùE’¹¥îMÎÊã€ôï¹ÉÏ<±Ã>Zû|Æ]Â23=Ÿ ’)Ôƒæéçý‚l{mínÐt[ϳz^>xˆðk›Óy ˆ"7Qþ T%éópð†©0•ß—„ەǘ°&éæšŸfOYÆJ1] ’·²’‰Ÿ}ë3–P¯¯YKÄ ð-¬d­õás¬õbðHÔyù ž/œæ=v ”(¶ÛšðW5MÆ=ª&~«Ð®àg zê¢Ñ1DmÖ/ø&Á­SÉ7AðÈ´>Ç€ÖèIkâ’¡î:°²ÏM(Ñäòlêݯõ­//¸gœª>ÙŠÆgÝtÌÓKØ#£PÖÿŠÈ÷ô#'ÇÅ«\!““â9²øðŒ]ã¨ÈóÏ„œ”¯ cñp£ŒOç1`žl À´4x ÷ºm.ÿOýeÚÅÃ?Tg¾P#˜çÝ7«|>B>Ë®OÈýPu6nmáIGÞï‹®#V¬öÞ×€0‡Gbáç°›°{#ÆŸ–Tÿ'ηUÇ ¸O%8L½dÔgcW úo¢çb¡û*©` ùÒE k©·O6V^Nôÿÿ“­IÝ endstream endobj 856 0 obj << /Length 1049 /Filter /FlateDecode >> stream xÚ¥VKÛ6¾ï¯Ð-t±¢¨'zJƒ´HÑ^ºzHs %Ê&"‹%y±ÿ¾3J–7j²E±ÀjHÎã›ÇGZü‰ Œ‚\J^&EP¢i×þüõAx½ÕæÏû‡IÓ@D¼ŒJì› ‚£8kíëà“ùîóþ·‡ûÅSǯ ‰šß‰™d/à4+.dB1?½·ç³êêÏ,²•i£E(s2‰HY÷}¨¯ª cÓhG&Y¼6)KžEb6¸šþ¦tCæ/@+’‹”T߇Õ.”R‚pðXîÑ žÉlvü¨»º'ýá¤QHX5:§»]\°Nãß‘€“ô,©y}É><>’pqpfäÇ1v £Œ'*Ç\ˆüÿ—*»ðh·*&ÉS™~¯dB$<5ª™xQ´?^S´ßÍ¬Ž¾á¿iÆ’çEþÍFß».Jž& êÃèk®êÚ ÆvªmŸi§2Cµ‹svÒ¾c—©ÚÖ¬{uëÎN0ßÐo4(YÁ‹8¹ïл¶Ý…I”Q“(eê@±0ÒAl&Ÿ•@›ì«äØÊ;ƒ’–K›+‰žÂ*§I{ÝŒ-Ah¬£M}Ý¥ ÓŽj0Ý‘öú³š1«³©"Þ›mè[aò9«µÏ<ÉxZ÷ƒP9göÐkwõþ‹¥œ(;Ý-9ÏúúJ¾Æ9ƒX:¾QW>•°Fp|<..£»Lö¶×ý[Ø‹!¯íÍrvÔv”=¦Ý]ƒS]_9sAˆ2’¬qöŒRÂz;:GÐè`%­†i˜”¿N@üIUãø.âÂõ£÷5vŽ%B“QÉÌ@û¦'5BF3áÀi{uh}´i:á }Ý"gÜ,Ä2ÈÊ©Uóþ ζ[sG\ä‹‹ajFÊF*j­MS¿P˜3zÓã:éNS.%‰Sö±£ý‹rƒ©ÆV¹·›¼ˆ²ÿ…øˆ ñMOpº‰bO´€`GµD0‘¶ÕƒöÄ•QÁáâsáß wXÜh! ÊOèMá¿gÚ øë¾ÐŠÚw;­ÍÕÔÚï¼Ð8uö¢¿r¼ö@qh½sÓÕ”GÿìÁlç-+K¦Êt†fkç³Zè wIr7ÙÝ^°¢$®¢@ö X‰_ÅYë­ïAÚ™ù MÏDÌ>6´ý> stream xÚµˎܸñî¯èœV XŠ(R¯ä–ÙI°ž¹^4Ýìi%-±¡‡Çó÷©Õ’¬Y;@ÆXd‘,ë]ÕjÃ?µ+ã]®uTšbwhÞÅížw<øø·wJö…°1œíüËã»?þ5Mw*ŽÊ¸T»ÇÓ.U*¡ßõxÜ} t±ÿüø÷w÷¦4I~ðJÜùÍy¶Sy”¨Ôà@UV˜HiÃ×eû0Í’àÃ>TAÕÖ×ñRíU0Ôíó>ÔyôÕ^«à þg ºªí]}xþk¬ÌÅöHöú…À‚¤€7Êe¿´'ÛÕ®ÛTüi~ƒ£åig®;ö<Î5‹;qá×8eQ—º°;ñ·º\øÜÁ5MÕztö«=Œƒ=¾‡i »ÚãtM-D¹q¸Ž Wø|€Ò‘J? naWZ]i\;¤>¶ïò4?´íðŽ\/çú°‡çyõP †'z´å 0p|Á}ÈdU‚®¶–s¶&@S Ž¨Z0β@¶ä‘é(5™?· 1g˜³/BEëºxùʳóŒÌM€'tºdVœÈ¾ ÙâEZç鈆-bAkU¡¦MûÐè,xDÎë8µA¡ãÈ=!E_j7ö {ÙsBUÃAÅŸ…æÂ\EãZWýâH?T°‡Æ šh& žrñIОÁd Èí0Ô®¯H˜™E&r£…Eü&dh11T' O¬PÞ½Á •×*ÙRu@ØiÇË îAáfd“ÛrêÆö c­ãàì𒺉ïëdÅÓHH"è•'/uæ+ÇΆbB[Æq³5“ÄbÇøœáðK†cT¹.xQàøIˆÀq?>5õÀþH42rü­ä¾„Ð¶ÓÆû‡°‰d¢ÑÝg’½Ö¬Ú€ETC÷è’fZ°7‡u;¤QÙ½2à Ü‘›-ÅóP.éÛÆ˜àâª#ƒ§×´bÐK jE£FlƒñoØ”ÊLžç;F•$Q¬'£±ˆxù}SPaLžõÀ0|Ru½T+Ô’0öÀÓ5piâQ$þ!ŠbÅøÕÁDçsæâ¯O48¥º©Iãˆô"pNúÀÀf‰Eoí:¦ê™•ïÒ è*³ïÄU¿;œm߈çk¤ôÈ»su¬Ðh˜ÆO÷Ìw ÕAÞx>£SN3°ògË+É· hXžü(ñ~÷wˆ_#%â1þIÜW"hfþ \QõÜU×3ù;0ÅÎòàhQ£[ò`÷ëüÁ·r¾šM[Çb\¬ÙÌ‘½TœÝ–_1‘»BDMqи…#ÑO¸ñù|»Ó†ñ[03”Z0›:rSš^ÈÓ›‹ÃEtxŽl bÚ"LQ™{[» |ì.¼nY¦QQ¦§ØŒÞD ™\²²ÝB©‹[ô¤eÌM¤ …åP«2*TAIZQ&’FŠsÂ(#ÈëT0óÁ˜ð͸³SçI ‰kofˆo$ˆ@ƒJ ïŠ;‹žnf8+Y³ŒÞœ¢=‡-Þ ¾œ8Xð 9Ïk—ºµ=™\:HNU¯b‘.nÞx†½ÚRžn”€ƒ2 €C:³8ì"Ïö•á!lP:Ϣ ï“HÓ „Ÿî˜êÏ7¯¢2ME\rDd èÃéaoÛcè_½¥: ã…õ~?Þ?nªM%ù¤dvRx1 H«Ç®³ìÆÁä¶Ø‘[œ˜d‰ó{Mç}ŽÁáuà¢äO ¿ÿ7~Üõõù¥VæößLBß§»údªˆ½m”+ÖñŒu°J ›og†ååB«a¥÷™°»䫌9–zà9ÁÎVGO‹ó.è]úÃc=¬…í®µ=.äŒqAÄb ¾û½Ô8Ä¿Æ}±?&Ÿ7Ä’ÄPl˜µ:+Ïd,e¢H&èüD.Š“ÍÅ–‹ŠgŠŒ'X6Ê+³âÐt+š6qµöëí^¯Ž˜3Ýs“EËŠ8ÃòY«YÚžÏF¡:ÞÀeçÉ49#“£ïjëãÚií|G ŸËùެ4F×O3Dj~UÌN¿ã sX`•޳‚ὓCSžG¨œGîzYwíê–¾j,ƒþC,~í^ËÆzÊúÀŸUvºòê¿´Rbë;ŠJ8ÕÐ8ž*}œøÏ^ζõWHýªØûªÕ—¤®]”¤7yÄ|튅ςœ þ¼Ns (úòÆ«U5®Áâ—¸ÔÙe¢ÅÙ,ÈQѸž#Ÿé§™ôSTÑ73“XRåS’„S’» ÝŠ-ªvJGþ·~¥R•ý ‹Q¹Û:N ˆZ8 Û1«Þ.ø[h‘ª¤X²ø‚AwÕAsž³”$¦”„y¥A"WaÁ¸ŒXÌ ò–Á•Ìò–^‹»ƒð{êj»½åŸÆ–Þyl”µÍ²¬%Z¢®Ýè 6?¦.‘÷&ÿû)¢Ôýï”ü.¶jÃÎ>#צ`q;®r(ÊÕ”‹?Yñ€Ö?Ã~±mXŸB “¡kAã7BN¨LFôn§wáˉ}§Sü€`l§(±$Yj0,pÇg¶AF@ æÏ5› €žû¯›Â8²d ~b§Ï›aRE*ο©?ÖÇ(.¦ÔÐN›Ö;]Nyæ è-€X§Ètpb4½t*ä0^0Ê×<–8)Kül/v°ÔÒ%£à$+)rŸæ#Œ™aþɵ¤êãBŽ3€ýµ…sß&ÃmyĎχñ~Zf$â=¿µJ)’[ƒ¡ÉPŠš0‚ ªš­Sÿì¨|þÊKU÷<6>;ÙI¢£<ú>ÒÞÛR楔 ÃI3°O•ã/Ù=R/!Pªt%¡ú´ 8OØÃ^8gËôäF8"qJ?»ö§aê¥=ÛaYCÌ‚Oˆ'š¤O¶Üuࢸ ¬ÍªV—läo¥2ÔWN2µ÷Ê(tm¤4Ù,ì&Y6iÀ§ž)NDe`Ç­ÁŸBÓÇ°Š§Þs#È{n„S[ `œ#Äÿ²ÀðoÈgÑâ4À˜‚›ŠͰ˜çHÀiÔÔ¡Î_FãÒô.œL¯Á hC ô_Æjà– à©;{.²û­¦[.<*x‘Âèï5Ýdw8Û¾Õt[!]6Ýš”?Ÿî÷øCVš2åÜ(6•)?ÚÏïE9Jñ¼Ó…í8(v­Ÿ¥’,J DQV~ïY~w8Û¾ñ¬5ÒÉ•2 pò¡FÚÚ?DøRJ;̼©‚3qO†C0Ò;EV ¿N8Ü;^‘*yŸ?]ä T&÷çWi; ÿÜ™V.óoäåL~Ž] endstream endobj 868 0 obj << /Length 3224 /Filter /FlateDecode >> stream xÚÇ’ÛØñ®¯ŸÜ`¼€ä=iU³eû°œ‹K«Ãb4‚FªòÇ»ÓCà@Á®©¼Ðè×ݯ3¨îbøSwE|—6¿;\^Å´Ú=Ýñà×?¿R`¸€üùáÕI’;GE\¨»‡Ó]¢T„Cõp¼{˜b÷þáo¯î&L‰Ößy$B¾83KïTi•X<¨Js)cù¸l&©îw¡ ŽÕP5O»Ðd6hwaj‚ßËÃÐãJ¸æÈƒÓ؆ªmz$ô–'`ZQš7÷ûý.´V×®Ýé,øXËžWNîPÕp"Ïupj;”HÇNH Î÷ü@Š’ÄS„+ÏÕp®Æö±·cdzû‹;P_ö=íÂ,‹ƒ´ýÀ ¥ç*â‰W&R Ó~Ý…:Ê»”Ä;œÐðsÏI¯ažç«‡s;>q7*ÎeÛ}æ1Й<¹8¤Zv Ýàú’åž®glÏøfY×ÀI’¥Áýþ8þ+Svk3áºXTH#ÿ}îe­ï[bòP¹YÄE”*Žthm]"oÖ˜o5ñ“ cåÉÇgÆÛörúÐ2Ê‹û€,—<Áx9K Ë ¿ínƒ­ê …™ ˜—¨ÿ 9h,Ƈ–Þ9–èõKÈCF“i˜U¡~áÁ^óÆ@Ê'ކ„h²4ÊÁ{‡E)Øß½m/ð¿ï…`YEE’Ë¡%f`Mx/×°}ēªÚi ÇÓ©ìˆkCÇid<~o›™U–EÉúšß‚¾woC¹Ø·áqKb©Ž,Ä 9äþFH¨%üR±|É‘¶z¦ o3ø}ÒÍaë ˆ:ÄQ úŠü)ÇöÙÜÞ•÷¢¤VÀb’G¹^_ék/<–‘‡´ƒÈ*Ö¡¦“‰Áuðª?€g¿ÅI<ßæL¼Êu¤³‰ú÷?n±=àRhÁiü‹ôpôTÖõDcÃD>²Ýò½\Ùñc@n…6'œyq‹6€0ÀÒll× @®]Ç$Ê?Ѩ|á•a}ö°‚#Àx­ü´D2U…Èw‘91xqˆéSÕKÇÝ©´€ò=¡s“Þϕø5:€®¦E?Ž~’×6“"þãÌÖUµ{$¿¯2ˆ |40‹´nØJa! ó7ôðæç­kÔ*ÊLæ8ö|ÆÛ¤[0ñ*[D,•-ƒ-€³·'‘ -4@ï.¤ü‰OåÃ`Ú”Ï<Ÿ}ÅP£´È‚7 µPY%ubãP)øØl­þ" :hô·äÕ5»]‡4`ß›¿piŽ_™Ä/^GÒ RbŽ»òßcÙO',<«,t¯yPÉ$BœLRóïËÞ†0Ö>“L<?š¶ I“-• åÉÌ€ N6)Ÿ^A’ÑU¤f¾ÁÄqd³•£÷ hˆ)S "ßôþ¼˜<"ë9˜…Ò4[©;2¶u4hªV“ÃiªúÛ^‰B\º¼IÄ#áò¬-0Yä-œ ¤’…âÈñ«ƒ´x,1al<ô£˜އ3‰FKy5ºÊ}Ø&LÐ[¸±æ0‘¢[#)™<2ÅËs2zÎeÁ‡´Nüuð ô¾ºñ0pLQèO*˜&mŠ…e›"—Ë£ŠL46çR!À¢F#^zFS"É6w¼ýT6e'Ö S‘å–þ¥I ô‹Dà ´3IVêôÕäFyLåùBG!„ÒÚˆ0S$ÏãÙᮩËòÈÉ”_ì÷_ð¸p¹NKù `¾pvI*È1#'MÉ¥„Í} ‹+ޤ¹ãÿ‹Zw¼^ƒã&ð–àVJtàœ³ƒ\s]ª˜×ç25çJ=Ô¹Ù?x’±ð)Tð–Û3W€¹^Ò\*%—Õ“Øa½]v5ÇÙãÝdöHÄkɪØòêQìÕJ¹ÐvR•PvZà03Ÿ%E–¬úÂÄï¼×°ÀX;6ǯ!™ °ß°@æèŸíPbÖÇR°`]º(nU€*Î#Ç.U’ÜÔFôWizJ©¿;IƬSå Š5'–rrG %…ٹ䲰ç5.³UЗž¾©Ž¦Q'°ˆ•¢ŸVGi~“Ø»bø‘ò6ËÙVÏcÎÀ #C÷Y ¼±H´}õq}3ŽV›±‘]›rm+}K ™Wž«œ¿È.-Ôn ¨…LÎEåœ ý“ü0ͳ௔%õµõ¢¶ QY #\¿³œ-ªŠä±ð6 ’Ö+Ùw¼Cš²“,‘ìÖú, À®`“×®bkˆ+ƒÇ›ò6;ucì‹Eni‰ÂètùP&ŒúpÓUTE%iq§ó"2 ©_ï,zèp¾ÑѼEJ$îK«€¼,J™¬w{ñb¸úKU—ý{JÙàºÝ“,[}KµIU”óT{èoP}‹t*ª˜ vE@2ç’)+&RŠÒóZ%üIö¡åòÑ-c¥åã<›[&d­Âš•Î¥í„(1{IPì€öZ~vå0vÍzÍ#Z™.L†ƒéPÉYS˜ÁI%? ;ûXµ£Ð"ýTž n‘xã.7,OzcðîcM<LëyÒ”ìÚ;žú¦Ž™/É“u£³Ç¹P"Õ¯…4þ—ªqõÔëÓðà•!,—½-Ú’ êÙP’cÃÕ”xòŸkäppí°šœºO¦H·•¦u $òÓŒÕ×ÝVÖ’§Q>g-kP¦¤|[­lÙÚ ‚±W}?Rꇮ.Î7žÒ#5¾q…$›R+-©e~{²\ÚñdµlÈImˆÅFz£ÜÔZЩ´ôtjoëÎzÞ—¼¾b‡+侤Ož[º×,ê è?6 ÝÀH¼36>“«ß„YÄ'¢À“Ôò¼ó(È»ü5Ôž)W?nKß¹hU¾ÎU/†·Éuè¹AZñ»qïýä®ïyäd¡#)}’Åîi¼ÌY™VRº¼(áleºøßÚ„kõ =Ž¥Úϵ—Á–ÜÓ=ÉFRd úÜ5åD£Ï‰>'*ýÊfr”Q:'ï›ý_P?¤0“6°ÿÈinÿ²c·Ão]¾áë³iO_!pnÐpJ…3¾Hp3¤ûáuÿK-bùöÀQ*}9Gì?á'q)ÔeQ5¬äÒ©Jƒÿðãê Ÿ>Œµëjyu® q¶4¦~õ¦$ürÐ^ûõù胷T$mP# fâ=ϧÂĬrE‰lRL]3ØF;ÚjB(NÕÔ„[ž$O~Óó]P»ì‚qg’­/ˆÜ)³EšKÊúat–/7CB€EndIÜŽcÐ-½ÒþI{âÅ7,[áuà råiñÿU“`~BÍóFà´›Úˆq¼q &§÷Ž>CÆfCÞWñÆÙ.`2˶p-yºÖƒ™]¸ZtÓâ@¿²Ø† ›sc&ÒäI(ÌþA<^’/?%‹¾_"áX:iSàÁl,M¨[Wo7.ŒŽtœ-]²žªzS¹²<2óÍ­úw¶ü4÷È]5ðFXÂÝ|$©¿»o­ ¶òu“F…Á#àE•ýV¾.Ðá|+_¿Az“¯ƒZÚ(aµ|÷—VŠ~éSs¾Žå8_cn©Ö¹¡ã÷Qí¡¿Aõ-Ò9 Çõ(æÿ͉äFeþ›ÃL3Õ ì†inÞØ„M¦p4؇c¤Ï £©ã cÿ=‚¡p‚xî1K‹~µ%ù@-S²x’_¦ÑìÆq¶ÿ‰Ÿc?R _D°OÐb%É —Ž1-åï"#ÚuÒˆçuŸ:ý ?JXxwœ.;eYÆÝ»,õhñ›ï [«¼ê›C¥G…õi Jçd1eþc»üBÛÄ_òª&WQ6߯¯÷_hÿé¹Éèä0rž ¢= endstream endobj 873 0 obj << /Length 3338 /Filter /FlateDecode >> stream xÚ]oܸñ=¿Â@"^DQ_÷Ö¤I‘öpÎîCqàh-׫;­´•´‰Ý¢ÿ½óEêÃr“~wH‡ó=CÇWüÅWet•'IXêâª:½ŠÚ?\ñà§?½ŠeÝîf+ßÞ½úîCš^ÅQXFe|uw˜£ºÛ_ý¼;šóhûë]’$AþýõNë4x¿¯Çº}``w½KÓà7[Bt`Ú=O.m5Ö] p¥¹ ttýéîϯÞßy’R¥¾‘v\ùuâ³B‡q¢™øsßÎã/Q‡×»,Iƒ¿_:è.@]™_ê¦áÜ@ååføýZø+ðeŒO g>Ë4BÆ£ î/¿DqBŒ‚_0Öý0òîúÀÀzäïÑ ‹cmË?Op `Þ׸Ûî¦4õÀ¨@gZd§ÀIàÌ.NÂ8åûšËØÌXW¦iž`‡.øp]¡×1 ã­°â ^‡H‚©ÛÚÞŒt:ÎÕ°ÎùîC¦æŒV* Ó¨„ãYIv üÝβ ¼ÛíyßR@iqᶉ`tQwG¡ ïÞXw: FÀæVh÷¢‚MgövCœ®è0Q¹0$Ž8U$>a5°aä!îxv¸T•†Ã…ù“OÈÒ˜B`tÏÜç½/}K¼‚¤$e•€ÁûÛ[ž9Ù= O ™3yvÅ8 œAª<ÔEÂtçaV•©àvÃbcËÓÀö}×<®[þÝ¥¯,™}ÃïQUÊ0V%Ÿð’'À¡k`èÿ˜Ðƒ]3ÁÕõ$×Á–Ì ã„"ØÏ³^ny2Óš4[h Ü7Vñ†Ö4['yX–^Çn`mᘊä°Lฺ=tý‰¡“Øð’î“ Áƒ©Æy›[ÑœT] Kb“Ó* *3Øt{"Ï ¹V)À[^ðÛåtfоîAV¨AG}@(隺•*¡ìö³NЏÅ1á_Žu…—::r.jÜ3‰a÷,͹oSËÓ·aщsýÜ Ý ËxfÅÑ–´u¨tâÚïΦìNTlm‡à£WÎ!ËrôÚ ó=r^[GÅä ðÇd‹¸ˆxÂ!täñZP[`ýÃ<—iœF¨Ö¨(­Ìƒ¿&õˆ3 ¼Ö‚›€ØÉ!##(ÓEp~? Z‹Voú'¼O‘…Ð$»óNÐ ¶‘ç$¸8ÍAÐ-z{¦Ëw=»jÜ4ðŠª#ƒMݺËRs¸XWâ€"bìyû<˜œ(Ø=±_œ#þµÜƒg~‰L4Ÿ ÀÞK—+‘ëp|cÑó(ø±­[p#˜Û®0[ñ CÕNpÆÊ ùÞné¾w‘ ÒÞS%zæØGã¢>Â-É‘néc»Jæ:uÓËtwX8þ™/ ‰£ qHv¬‚{’›E) µàK­ä4ÔIÆ$ßv';Ö'‹n}ì!eε7wô}2Ýv#¼Èç hlø3< 9ÏP9`ýw[u»³õ0Z§£¼ZŒ]* `Kq÷˜´È>šÓ¹±.ÔÇzÝ¢˜ŽÄ+ãèbö_}Tœ@üJ’osRª Uê½ j ç‰Þ×ùA¥Fá¼áÏdÊDá$Eb®¸}3ð@xˆëNhè6tŽ£“bå8¼3KÀÅPI¢YHú•³h•.ß8râYã9FY±™EH1'¥àjaLâ;²~F³ ÆÕyº·ÂÉbáî!6@ÂçXYo:ïX…Qæ3;ÃÈçÚ†G§Ä ÒåÈœˆW…ªL–¼:›aðu†»ëÑ8õ£û‡ËÉ+&Ya·Œb…q¡þ§p”†*W“½ ë°ÐŤ’—ÒTLî¦njHï2¯Ç›ù 0(³,]§…šÓÂín þ{J ½ÛÅlÈŒÓÄ­s›ð…’Æ~CrHY–Ž2¬ Xóöäˆ ´žº3Ø/–£ º'ˉŠiëáÄ 9X^½(% ¯ypëIÞ $Ôx/?¹ö1íï/娞±íIŠêÀu{¬ï%vaes2Îù`]Ò$â^Ø|T0Œp§CÃðä½mêSÍñ5вÒô¯›Ù­NÂ<÷ªð¯Íú'Ì¡B‘o™Øq¼r-å•ðß_Çé¬ ðö–ñ ïsŠ!¾¬… ˆÏP,úrö°«Pè êÞ•U”Rµ4LÛVMǦIIg#Å¢úXÇ%ùyœ4{ìt­$Ñ’´Â¦ÞT¤T0>. kÎcÉñYAbˆÆ½¯Œ)û•üzUô"nì®êcïØÊ‹Ù-êYfé@ò«Hgs•PD¶ƒÅÌ ž8r·~ÆÕR|ûu<6üiíÉæ`½‘9O”÷}wîk3 àÜ“¶*}d\¬±x‡¸i0›+òà@íffuü¬3Aü\,ÏP#±XA¨ ,W þ·“yÒ'^èl™DžXM‘”ô‰³ò˜kbúà#r¶Ä1'Tðe¶À`"…Ì8>`GšK¼dOQ¡%q 7›öa1õ, ©Û cèν5-]I+°¦„ÀÍXSB”jj<íèTÈ<7ÎÍ¡=m¬Pp€ØUw– YF`ìå’o› c¡îÙC/&d¨PR˜‡WÝC[ÿÓY¡;™K§&%&£1«(øÛ`¥Àü|B±+î»>‘¢EKÀéìgvú\]BÕw˜§.»OAÍNàšÙ[ÑoR†tN«©# iZãÔIÕždÎ:ùˆÞÂäÑÐɈgØ4NH€Ô—=Ï;:@š¢kv¿¥ÆÏéÄþÒH&qL’®|ìÄ×Hùpè»ÓF] œƒ6V˜±öÒ/“Ë@J•T»o\o®aUOAÐ` ñþ†GI¸]+-Ľ5n icÏI5Ý H´ïÕ1ïˆ:S »AöCÍÔ%³@e0T÷èàÀe•ŒFoŸxýÞÌ¥rUj* 'Æà¼Ä‡º•¬½ÞaÝâe¦¹ïm¼~ýzÓKäódò c&1 bÓÔÔ‰@èØ1Ðõ_q<Ñ%l æé*ùšö‡ø%Îâ]%USñJpòÙ­&·N^H2T ¦ÊéÖ›—Ž!ÐóK:¾4ü¥E‰F'CGsuèê¢1]Â~ö}öfyѵ q"gaQ¬˜$ fé:=å*aغ|[l˜é FÑ<>ÔÃA|7¬qKÝÒSa湌0æ2޶S¹,…ä9øú¥d®˜ñ‘±{Åð˜u&Ã4Yu-Ñü‹ˆ||ª®¹œZwòeë„A_?]Ù?9×–9Q{j…Â; O¦—” ŠåÑa§ÂF&š‹`t`׿ß̳Ñz¤d÷ÎcÏfĘ̈ð…* mÜÉ6¸]`QèýFrg¥ª³!‡ýíB802~SÑô”ãy’„ËÜWR—Òe5*z¦„‹e3O©€Ì,[ÅŒAYÌ/IPÚÇÑr#,óvÏpŠy™˜my–`–9ƒ8˜˜°›©¼†:§ddÊIqî¢EA`yV€1–ÜÒY¥þ­„Ø´e3e˜”zÞjìøÞƒE<]kÜ¡åí¦­žv"ui¶µuóRÊ¥°­áS=‘¥ÇßoS„*ön?´'l›ýñÙ vZ¤„}”’,vÖæã÷ øàQòÈ×õâ“à'Ê«Ÿø î.éSmeÅ,ÝO´f{ÃüÙ‹Oô½§0w2µïs4O¸©ª]Kiâ*ý¥._%O—"M#Ü_ºMœ¹µvý—%±UE*„æ+¯Ànõn¶|ã%x”¶šR2X¬BÅtþü%4ÄßO7<6r›T¯INÒ2Œ²øIv«¿BòéÔÂ* õA¾T;g<)§žwÉñ6SGž+½»^*)‡ùžN«Â4ÒF‘HùçwŒóÓd°*M¥a•góVØÌ:»~çKË­Ôe mºûÃÛMƒæÇý¥‡Uû}‘ixçÂÿ™àÔÐ5çEm›ù„%—Ñ-öÔXPÒsP½¬ø® ¤²¥.‡v%–"—­U,õ÷ÔÞ©¿¦é­ÙË X~±Cí›'wØT¥ úY¥N †0Pß%r¯š«Ð‰âpÿ`@•Q„ÁЉw$ÆÊÙÏôFãšÉT./Ûª¨&S½Œ‡ŒæÞK`7T}}7Ê 0Žg}e: ßÀmKÃ÷JÐ?nál#]jr¨ADNk?Ûµ ®HÉ¢T~Ñ‘…,ü}”¬l€+aÔž¿R·çcȰūÿ?ÆÌ "ž=Ö'Ì›ÍȤæëÀ½«–)ÛÙ2Å,Ì2/Ío2ÃÚU¸|v-òvâ S”Ë×½sý¿¯¹=‘øE†”Ò½¸=Õ‰¡óÌÿ?S„z endstream endobj 877 0 obj << /Length 2855 /Filter /FlateDecode >> stream xÚ­ÉvÛÈñî¯à)CfŒzÁÒž“-Ëóœ8vž$g 1C”ÄäåßSÕUªiÉö<€nVW×¾ArŸœØp’h-¬I'óͳÐíÖ7z¹øù™d¸ƒä««g{E Z9¹ZQ]-&Ÿ¦g«lÛæõ,ÐZO“³À˜hz¾(Ú¢¼¡ÍêzDÑô·|Þ6¸c¦Y¹ Ÿ–»rÞU û*Œ55röùêïÏίz’"¥žH;B>B¼‰¡c3‰S#¤6ÄÁ§MGÿ‡-Rói€£ñDJa£HáÑ@Çt6¤SyÓË¢nÚ Í®ƒ2¿Íë`^m¶ë¼Íùüèj•ŠtH-dDÞ.áÎ$š–U.<ÐJDIÔ]WkV™™ªè9Äj’¥{ª¯^¾ò'…JtW~;SéÔ lë"oøµ¢gϨ[%=Q$€€³‹\€Òc;½Z1Ð"_f»uëãTi+¬Nºëhö›ëÊË®µ¥²\Ð]qeå°£¦”Ð ’¶$à¶Þtlø<ð€«bÉ¿®x£Ìï[œ©dºÊjlè™ÑãvÅÓl],h ¤£è®aÀßT6mÑîòkA2F)”LÍweÝ˦êÞ*g‰Ó(ð;b¥És2WG,:Ô*_oië×0 }V¡Ã^ÃgÁŠÀo½Ö‹Èô–¥pd(𪠅”ïœU› ¸ó —Ib‘‚3\¦(yÙùýÖGåÀIä V‚ÅØñ[Dêd‹Ê‰À$fœfsÜZÑκ(szCkÅ'i:²ÓKZ£äÐ&Hu»r&§ 䀀àèôݪ¢_Vëu…vrÇ0šâ ri§ÿž¥ÜjO »&_îÖd²ÌψõeÅQ‰¬)Ïvm±Ü÷au?stÖd—´9?¸âÕ&!(àût–¯!t×Å<¸®³yþ4½ý—èùŸWy©HTïî!MÄÞeˆ][m²¶˜gëõž~.z%³ñWÚvççU]¡´`ù7EëT†[wh+P«³Þlãž ó…à¡7Õc©õd²ªSÂW>Òˆ™žo²yÓÑâDÌÌÔ|4[7½¡Ã‚ò_ø„H)ÌÀ3‰åë/ίF¡€vß½yí ¨à§ñ!˜ß¡í@ ;ŸW%!1êàP[4Ú‘i‡ç9¬tJj×NÏ[x  ¶±ó±÷U›w°Gìîú‘ mª•iíôw—ŽöU³zR¶pëü.[dN“ü ¦<‰9Ám¬2„¢¼F;™7… £>ö½{ûþüÍùùkŸÈ"0ޏ3“ˆŽ"’ÑôzçMvF‹ƒœY«žtõ±Eís9ðY5è¿=ލÎÙ¼#+ReÆÒÎÿØœÌP¡ ᢟÏ@}‘yj:ýÏà§Ç ‘#?D5¬“6' 1KÐþÈîJGzæ÷EC%&®¡£š68Üãí¶®¶5¸i‘µÎó×ðÞ)JEjk‚,œÑ7E#e4'!dwGÌ›Q€Úd5YE-ˆÓd£E¬¤¨¨Ìsøõ ÖM Ëêò†b=”6àˆ^w¥¥WˆÁU_‰¡¸`£Í8îÁ&Å!|Y7å†|ÂRc= y&$ö@¶×(Ä2GÏûÊgÇ0Õ’ž­Ë‚Žïuçn¸à@ÈìÚq[ ÌÑéUç„ÿ¦®vÛÆë¤i ¶ŸxÊŠ¿ú¸ŠGéæ¹#0-í_µ\6ù |P_jW.ÙÆÂPD޲©Ó Jõ°èÂBÐRtoPF:목®´¨íC6Ã_Xé*©·sâÚ¯1¤”õžÑçõ&_0(Ó”Ž@3=”ZM Vx"ÔÈ´—²«qõôüò’Pƒ¿àµ·Å"oEºÕ£tÖtG†¦íƒº³\Ï«C¯ÉûSË•œûy³qðE Ãç!a9i½ð*-¸™ô̼>óòã;o¤6!øóM+Sé!>üòþÉ]ÜÐüüþãI4òéh^]¾þ3¨ùÇ_.þ jÎ~üñ©SK…MÆþxqqñÍÌ‹—*ˆÚöQŧªgÿ¢iw‹¢:iBò«Q^\‘Hå ÔÚ$'#S ÂêaÏÞ½z\‰èÕIÊ¥°‰8PL÷†U)Òxû\ôÀØxóOjE÷¡¡ºˆj|c8‹¸¤ƒKpj®h´ÐêÈò¾Ô.»ûƒ%uÁ>46 M@`ÕÇ’CÝ÷EË%?O#æ»Mþà‚.tgEÉ vú‡Îºkº¾¯OÃŒ5ˆÏµhgÁœ¨; ˜ë³ ñ¦%0öh˜šB(?– !¶†‡p7än˺满5OApA#ÜŒ~­égД´€ò$áºQ£Çr1\’30‹ÊÄ‘A•}<ékÝç´ÕÏìØú˜ q"2'IÔÁëÀ%þ€î@Ѥ••Êï¶€zhÚÆRÕ¡Iqˆ‰¾wô=¾ý)óî«Î¼Ö :.) ?°› n«do[.‡ÃKçqjz™3þÞÆ*riÁs«ÅÕ|Eú²¡ƒé°_ÅÓU7-bŸlº6\Ce ­ßÈž¸ë¢Y9¿>òÞ̤”Ó—h¾ßÍRˆ Ï âbþå=¯ ,toË´;¨ÀAʨÁC*Õwбf[:Ë ª¢Õ¢ ÀÙ÷³Û`îÌ1þI7L£ã_Fa€³šNEf3ÎjßlrHÿa‚û×(XkÛ(ƒ¤f¼ûßéÅ5.ø2~ϰ)ŽpM%tN@`¢Ò ŠßBq?Ï·-”åàys4ÛGrïqĉž^ᘃZh»ÏåMNk6åpԈÒZiû°á¦ ‰ t6> NˆÂnáÇ$¦à²]ÓV›â?þ»NW|GܸVú®dÕÒºw˜Úa•iB®2ÁZûx¡••bJR·§‹øìR?l šåµÓ>ì]»£Þc!8Êô«œ.<96Ò@òŠ=£cì‚=©oXŠTGOIÿ .õp>ø¥ÁéTKT„$•þûä)aF"m]ؤ&Äù­âHÄéh”õD¹‹ ]Š;útnb¨¥œ`ábý|ÞApß'ô#¤Ž†—[þ‚R.Š{d;„lEI.é±ö•À§3Ž.®dúÌÒ6»á>!ÕÇœ¨0ÊhÐqÒAp'ÇHûžÙ}äáÖãÕïe1ðÒ‡‡þ³Ãà›šç Ú«ÚUÿÁ¶ÉÖˆœ/ªsŽ*?÷zài¸€>dIi4åo:åÛ-CvŸÆºpN›Ël^¬ ŠD<Gú9MºÓQÒÁ5”»Åm±Øá€Ž×ÇåoÚ³tÍŸ³†ÓRJJNŠ4l%)ã¯c”t«ßÇÚÐN3ühÿâDÕœ>¬™Áÿw%UÇ›}÷ñ¼lUU¿Ó6BuE3ÚÜÿßíÒã endstream endobj 883 0 obj << /Length 2892 /Filter /FlateDecode >> stream xÚ¥]s¤6ò}ÅÔ½W@bóp•8NjSçÜUÆy¸ÚÝ 1`ÖñýúëV·˜ÁkçRë5RKjµú»%‹UÿÄ* W*ŽƒLêU±{Zh÷°¢Æ/?¾<χ‰þdæwwïþþC’¬Dda&Vw›)ª»rõÑ»ÞæûÁt—~ÇžzéK™x7e5TÍÛûK?I¼ßL1ô‘^Þ”4´94ÅPµ À£0Q‘'£ËÏw?½»¹IJ¢è´ãÌsâÓ)ñ"ƒ(‘«TË@Ä’Nð)LÂÞ ¿•Q♾÷«¦4Íà׿‹© *a’ÀÿHÞÊ"€Æq ’#–¼,ýmÛ>Òš DµkK3…íž9"Ü!=å3âÖ@½/’ Ó)mò¡¾…Ò¶‰×å!P‘÷ ¶—ÂËê<_FÚk%ͪ«G¸™-AnäŒß48k¨òÆ<ÑK¼ËQn4Úy®k»!0oÝ1{OÍôDèíÞ®avJ™c§ £Ú#Jy¥ù ÙT´B`bØL¶: "*ØåÈÞö©ñûèòë h\`²Uhå!?pƒ?1û_.“ÔË»*¿¯ Y Æ!Óô‡Ž)¶Èujñ¼:ïTW™’§ÕY ÓìüØ ‡”A8:߃º.'Jƒ4ÔnViŠ:â T¤®ûEÖ…Žf¬CM¶¬[ÚFi 7vÓŸ*P8‹?§Ï¡©~?j7ùŽ[›¶£ÆD- ‡º£Xw ‹Vd‚‡`‘™ÒdÖÅ퇟o¹ ƒ4NÝ4´¯€.#¨HÍÌö‡ª®<_êØ»"Ÿ„ư°{‚É'¬ì3p r¬4›üPÌ5ëæ,…/Ù·P"ˆ”˜ª¢:ô¼xÊ&VEl€§ž³7f“BeË4²Ž#Š<0"qžô´Üw˳Yˆ Ø·ñ€Ê'!c°!ÌŠ½ƒÆSeµÞЬ9vá<&ä.0c=³îÙ†.ÙйþÐåû-y‡Xê ­ÿŠ MSþ">“°yAÂçöu §™šJؼ áH®ÿvnUà†ö–ƒm…-r ꜻ"ÑÆ˜1”söŽ#XzT-gÕQ(n!‰@¢HÿE‰ìòîqÅŸÁvQQ¾IQ„sl_AzÁ¿ë¼@Ωð„)ËùKì…Æ™ŠÌÊÀN"3Š•ðÖðI³©¥ªD¡P(ßqý|ã+6/è0™û£1‘G.sn?Ìä£fpü%NOé÷msó¥Â0ô`¸ÍCA4<ä55ovyÑSs3h!58$Ð) ?ÑežqŸ×yS˜’zæ}ÂAth€µšÆ·D‡géYoz®rÖÆœV+B&VÙJ†`WYöJÅâfû“é %×)RKÉÚŒ&{Ÿ ˜ù'丧õÕÎØÿÚk’Íqƒ’ŽãÎ íÇŸ%TŽíûÅl ð¥`»¾Í)¸ƒ€N˜ H!ßÈ7û&œ"µô²bÅIH5/•®§ Ÿyc3 T“Ò”#cìÈQc)ËæsNŪ] 6{¹¼ßŽ{yGÜMª0=3s–eœæšq•’£T¾ýn±BvZœ¤˜êtXtS&åZ¡5q:ŽCè#>mÒ… ž¾ Ä_²"èØ³ÌP1&Î /¢³BcRî3 £/RVó$¬ ¾Yò™qÞuô™·þ?3|„ј:×Vñ)ÃNàœ3ŽÔ,ÚcZÛG#f[9³æöLSµŠ!ù…xE‘Ýl2}A‘O‘žß¢d¤4*üùÊå,L­Ô§ÄÆij+”·ëf¿Bì)RK,ô%sñ©!æ¦8«±dŽ5’Ç8Y¸ðûßÅð i^*¦…Ø’ É ’³Š¶‡:µØúžU ø± ’2øé‹®Úþýa°EU‹â N£i5 ê+¯3áÃÈgŒ¢í:h1ö»\Êû1ÄAdzœ£ºY¯·‡ºm´†¹‘°¥ó"  ¶Œ6ವw ÐÚtí[ÚÞi€¼¸z™‡5{;Í=–ó—n70®Ú[<úf6rDíÔÂcf•Æ<ÑyæŠ]#Qo5ÌRO¾Ùf2K·€Té1å{‘‘iÈd™“S|uL{Õ4õšÐ7ät‡æÂF{’ð8Sº³-`;D”±ÎÎïö"ÈÐò²ä».ìõ-^ D6WsYEÉ ¦ž„ì½Nªx™%ó“"äÓ,žŽ'æuߎ—PÛÀ6Gì|Ô/ñŽj‘yÿA€f§‰WØËFhôCU×ÔìL^Rkkê=µÈ}÷Ô±—M‹ÕŽ‚:&]ð!_SîQ_ìuÇòS¼èh1$Rg’-móXA{isÿ×~¹Àaç@èè…œš*)¬—]o–6NU]ádßúõÒ‘ØšOÄxýTÎÕºns¦'§È)xú4´VTJð²õòÝ”µ-Kén*qwS)ÞMEÞ-Z ”…—q4)Ub‹øŒ[«£Z¼~uÃ5À3]É’¨±u´ìU }Ñ ç»Þ¾gªòÁ”¤[O;¼”VG`á¡óêò°ÛÓlæØÕIè£xZ¦¦¬úG°žTKïû$޼Žïš °¤=.—SÕzښƌ‘ õ1pa‡®Éõ-ê[–I¨þ´ž§qÎâ-;žFldšßÞc" 1ïU@r_ ÕBÃ>j©¯8nÙ0Üåôè`;¦²vN„LƒHgKwGøz‘z¥ÁT·¤N¾¡T-ÄÕØ AY.@(6XÿS{þÒà}^àðãaOàÑ~ íÌ–¤ÞÎä¶> ?¬¤¼…Ù“y G¡‚Ì:[,€eìj[ľaìÍRY»ž?Çñ¸—8•'WŸ¿ö.Mý×Þ¦¦Ë1¼v*NËB’ê¦zÁtϯ°©êåËvð³bêóµ`£DÜÇgF¶ÃÐ"m· ã%]­Ð­µŠ&Zj·…TùZ€Se‹%~ú’Y ¢Óйje$S ÖÝùµ0–B¼Âþ³wI¿N¥·®lù.Ñ]OÉC“‡Í5}A=6ôµÅ]j‹» :yŸãòWRÀ°À…QË©»tGÀ†sêÒ†:{’Ò¼œR¸Ç,ÂjŸµÚ®s×Å='nt;ƒæ¼¬ CÁ)óÖvT{UiøÑŠ‚mæ8›MËØ Æ5=éÕôj{FÎ1&þžî·ð%̘Ҕß̬ϽÓa‘G¡.ól¢CÐwû`J­u Ê‘¼¤ ¯RLOφ üŽÄV¡Ïj=)äÝ—"Œ¼‹áˌŘ@ï("–Õæù„°ñøŠ^ózö¹üÀ–¯ENo]í¢ß=g”Qª›Æ0œËǶ¦¡Y®ZC®BUË#-+´{äÑÙ‰ªâ;ŒPÉ1ð Ù)„¼ãÖÿnêAZÀw­:;æ)¸'yXt ýX¶ÿ@*xþ endstream endobj 808 0 obj << /Type /ObjStm /N 100 /First 877 /Length 2076 /Filter /FlateDecode >> stream xÚÍZ]oÛÆ}ׯØÇöá®öcvv ´IÜm€ÀÎý7íƒjó:BQä"g(6µE9¢H5m[Kz–;{æÌ×Râ²q†Ùø˜Làl|ö&èþ2îQ6â‚ ‚O ¹ˆkoR$|L-¸ïŒ„4Áô’tZ1¥DL‰Æ»¸›ë]ôÆã¤ñÁãøñ1볓ñÉãáÊ0é´É~"Ó‹ÓYx¨ º ˜àÆg£eÆ1AÖ ŠN‚FT°T ì0$#ÑéÖd¡›þTLtQ×d ‡@íè“l/†„u‹¤‘3#ˆx X˜DB&;S.“ì"{])a0 LÂ’¸ƒ'HÁ~)K‚~Ø*y@%¸ €>”Ñý©2Ü“ã‰b .Ć2t”„Ù‚@79]Ë&§Ë€äšçf“< “™ÅäóEˆp™Kä 'tM˜…&±Ú:ÐZ2ÙëŸÄ$!ÜIX¡è  «Y3Ö"0çiGÐ# ŽPVt‹E¡¢³1‹auaÈdàfÀ²Š&Öåâ^¬PpÆ@ÂD€Kv ˆ`çÙ«Y1!Rbáð‡1t°#¨’)uEŠ”nw’@ 蜳n4Ø¢PåBjB<°ÙÀ@”Ãàˆ€âà~é#"lïÁ.Qä"ë€È4ÔP•9ÐäÙ³ÉôÍýª2Óo—Ëz;™^Ýýºm®š/ßO¦ßÕë›jmÞ:¸¤ûe2½¬®·æ-°ò¾Ø¨L¤`Y) –Bä[óì™™^˜¯ª³ë]Ýüïk3½2Óïë7õ¥™¾0_½ž­g·ëÙêÝækóÍ7üW5^˜·‚M;¡ÿ翦(vÎ,ï‹_Fʤœ­ºþ1¹Ù2°|$wQ/·»-©×ìä/ÔVíP=’܈áÓ¨Ú]p¥vÓñàéëu}}UK3}ýâÂLßT·æÓš;“¼žÝV“és¬_-·˜¹ÑV°©ïÖ×Õ¦‰^Í­WÕÍ|ö]ýqg)FTÌ%À€sqÁ;¹ÆÊ¬ªSuÑ€Ù|úÖ{*œÂ ÄSË<ˆ.ôGtñ6ƒÂÌÉ’+=©q[=bÅ5rw“Xå:"¸Åö ßî¥ÅÕ»j±øÙ‘ûa¾ÙÖë{>¯W÷óåí8Ý”cž­Gú «qɺÐÏq.«Ûêãªã5Àú¨GìÉ0±E”:&FA¬–Çä߬ø~óÀ öüã¡GýéDC]%ø®«”¡®‚‚`ç"©ýäÝgíun¯c{-c])º`5CprV¸¡p@vAN²™ÿô¤– 7ž×>Ì–7ÿZÌ—•ò»Üžƒ¯„À®EC51’=9›‰>§ÃÏ·<9oÐ,òwàÈÚÖç' ¸Ãšæ¿cÛªÂf;[oïV£@Ñ-¨ü`TOຠòÅ4ˆÀ Å’Çd‡‚+9ÔáÍz¶Ü\¯ç«­ªðª¾©ÆÇ,¡Æö¨3l@A’ÑãË,PhhVA7` <1&²²GƒÇ6âš-÷£äiùsQrO†`jvþ¨j=Ë¥Oü{ºXx?ÃÁñO:ñ/ðÐøÚø]çÒØøàØAK}ªh€§SÌVJš[«öJhó,z „û_Nå Ä·%·Úr…‚¨ïé´Rår/Ø74ÍŸ§üaŠ>ÉÊùz(/c·„§•°¶{Ô={2è-Å£bM݃¤w"ZjìJ"ýU(æ.Š©Šh ;(rËÄŒxÇ|.2!Þu¡p"â]l["jë½6`K«îˆ¸G’-éñE´H~÷DÐI/oÿ±ºÿµž­› ëÕìz]Ÿ!¢;ƒ•"ІLRþ[´ñ^Wô, Y™’Ó>’èpÉ÷r½®×M{ö®º~?ºÞ9Û ûA¡s'G¶¸ØÔ^>Ôà‡j±Ú»ÔãˆbOÆ'mÈäŸäR¥ëRy¨KQÛ2¥Ñ§ ä¸9Ëñ蛵ÍSÒÚ0–|ZÂn/ë÷·Uçt/÷ÈõyÿH²þ÷äM¾©9ñíÆS6}p8ØŒÝþ?§ÁflÃGýÖ‚Ű~Ÿ""‹¢Älò5ãÏž–#wÔËñ) Ù@¿êáºÑ\ùè-yQÐY¸±~ó="mXÓ¨æíðå¡ ‘®£ËpGoë+ïðp9}9§õ”¡”-yÂuÁýG'¯/Ÿjœ~šo¶›±ï\“VbÒïè÷"ØRÒ|×@<õnkµ¨Fz„Ù?†TrÆ£rcó²cø9äÓ½Yö–q" endstream endobj 889 0 obj << /Length 3719 /Filter /FlateDecode >> stream xÚÙnäÆñ}¿BðËŽ€¦Ùûi½Y °”äÁ6j¦GC/‡œðX­|êj#jµû¨î®®®»&¾Rð_åê*5&Êmvµ;½R4ÚÞ_qãç_Å·Àí òûÛWúÁ¹«XE¹Êã«ÛÃ|«ÛýÕ/›wÇâÜûözkŒÙ¤ß^o­u›÷û²/ë{lî®·Îm~÷»¾Ã»)ê=O†z×—M ãZ¹To¬¹þíö¯¯Þߎ(9­¿w„|ù$³Ql,#ÿp­³MS¿î—oQè{îTþ ÃEÛ „1´޾æÖ#­¸ó¡¬*h%jÓ¯cÚÚwï*6¾€:ÞüÔô²w,úÐ*;þxí8ª,î*jêêQ08Ÿ«Òw²¤á/ìm+‚¶±‰bÇ׺÷µo‹Þ#Îð% -»¹yMà@–dA–8ÊS›Ðêýp: Ô‚x:‰’$ Páé¾CdÔ¦ìù¬= §Ó âoj Åk™À+~·ÝñU-¼%Šæ‚°ï¶ÕËÚ8Õè\è}Ù!b€?(÷EYóð®i[߉4M½ïÀ*v=‘…V:EJΣÚ%ýŽÇÊïÔt=CýÁ+;/g÷V Ú…!] Ì£s@­ö<Øh4µ|»¹² N6¿³ãv Ç4x{—¬K4€(²IʾŸÎí†éš“ç¾³oΕç©së$Û0Ù7aˊ醋LX „ÅQpƒŽ¼‚"KâèP×Y äh:w äi‡N…áÌlß‹ò!Ú1V"$2dÚE¢*¤l¶y¹É?4lhI¤äûû@¯„3à ²<‹åÖ ° £æÂç3÷@ƒµ»1Ð]W<©g(þJŸ"†ë+3Ÿu \çì‹R6c~«{”„ðäæA‡”6fj»“ÂB  Pˆ ÓJÖwÀ޹rËÇc]€ ξ=âÖƒ8ã£Ø,&²Žž Q$„8UðÄ®9Å3‚ÁÞêyHÊ>€MšA‹zÍDNzÓXÉ®4§p…àše §/‰t>¾ „I]¹_ 3 xLùø¬ààŒIåboî¸óé*KŽÝ“/ꎛ"à GRÓjIxÂúY‚»H3Iák]¤rvÕг÷—ØYbÕRŸed eßùê€á¢qlxµA‡žRSuðE?Ÿ”P&P¶/d“Éq‡éSO÷ÈàÊS€bÂ%˜h£kï5rÙ`˜UÕãŠM9ÝQÔi<; 4)øši< vSŽZa¾õÛ²Þ uÅ7‹ƒŠ“”1npª¬<ù'gÆ$`¢Ç1­ê\Šºº³'¤êÖx”]MþIïP€j ‡OÀS¨+Ö ‡f âW£8n{w–ìçãÛŸ ˆt.Ô~Ÿçu±»%YäRýÕ0=‹‡èàº$÷YÅ+Ñ ž>ž0\¦#q¬ƒ3ù‘`´GypyX*r9s¡÷Q•™¥K°¯)ìá™çÔw¬\”©tE}¯&2¦h_xÃKJX(êp,gcüØÊCvY ’¦ä¹=±‘š¥?wˆã£8_·@’¶—YšU“¤U”æc(K2`@ËU]#­±äbb ßõ(Ô4´‹™L¶gqÞÄh2TsºTodC+!‹½4«V³PÎæB9Ǿ¡ýz#˜×{ ŽùŠsÝC·sâ YÉ‹í¢¾÷m3t<Ò <çC>ØZœUÀBàI[·È¨Kâ©æ•Œ5/ì_ïüj-@¦™ùJA݆e‹g/CŽQjpÛJL7Ç¿ù8æYÈô&óL/ O¦:`ÚaÁj1Nt”›¯/Ý¢pŠú=M@ó÷Œ +ä$›™oƒƒP‰éd]ÐÎkøÁA©zZ®éÏTd[Hÿç>‰A¹ëbg›¾X6&RY2…ØNq«²é‡Ø+ñªL[KÇ”×Jþ[…ÇÅÖT‹T³Ç彞)¬)®Æ~aa͇w_}nGù…ÉK’Y€NÈжcÀ!oàûv×£Lj—$›ÿ*%N¤Æf “L ã&¹tvtq’ÑÅIÄÄ$n¹Áƒ;¹5]`=j2 #Êj REÙø[ ,›ylÐAѽ=C1âY6ý ÄàÉØYÒ×ÜãËP©FKQ +%²èKÒ^úì]a!äD*ài&Ã/ ÖRªð¸VJ ŒÝ\3M…׿ÖJD(t ¦=LÅäÇB>‘Ï)"=É·³\wŠëÓJàT9'} \þQ€:ù2l÷(©O<<¯B;1T¤ì¥J´€‘  ‰1+e)_J‚O®vù# „ÓÏÊ•ÕQ6ýäňs?ù\OºP\„3Dy;½8¹\M7e.š6ªýÇõŸtð0&u)þ0Š ÄÏREuA—ƒ3¾£žG:Ä,:¤,Â/3pÉa+B‚w‘YªýÃsœ6ÿ„™Œ%vŽ2 T(ëþw(…•ß'u७7† ü»þéO+ˆ™žM}ð/AhG i¯)ÃÆ—©šú¦›÷o‚ðÝí^b¹5¼øÁÜ3?qÚf6ÿZ7O¡¹^þŠáÿo•Ó_ endstream endobj 896 0 obj << /Length 2610 /Filter /FlateDecode >> stream xÚ­YKܸ¾ûW «,Ž(Q¢äœâÄ$‡Ø™‚ÍÑHêiÙj©WÏ%¿}ëE=ºµ æÐT‘,ëñUGßð§ï²àÎF‘ÊLzWœßDíŸïxðÃ_ßhYçÃBµòÃã›ûïãøN* 2}÷x\³z,ï~ôþ|Ê/cÕü(Š<ûþà{Ëz¬Ûg&vO?޽OU1H1^Þ–þrS¯ê_‘mäXÀˆYàØx雚’é »Ðz2ñ\óö–çrþ™Úú空eÓèJx³wH‰½i˜ò¦‘³ÇSµùÊ™+ƒ 'bƒS/õxÂkÒ½"¥c¾ÖÐѰh^¢éAWŠ–E‰UQbîüШTÿø¯ÁùË?/¸ö'Q˜J«,ŽÉT¾Ûð®j|”Ô?ÖM…ùcu¾4ùXí©=LU*jÞÿxH#Ïí`çëD VZ+æÄÂѵfœ+'Þ'Ð,éÅ—3A6; ®- 9ï…F#e‚{xo´Ÿ[-ìŽ]ÁÒ¾ÐaK^àäÇÝÿÝÓT*à-¨=EÅʆ֭øŽS„"W.Ýjeµã¥ôY;Q¨(Í6¾K8eb˾ £d_R“*ÏæR»&ÕÊijË~§~ª÷xB•L3¯|Ü„Q°sŽÍ”RÇãS·ïß¡ÒÉì_hʹ²:à˜µ:vNÉ´ ’Ä18¿ïhšèY÷Â|öà?û)°i˜zÊñÆ VL!Ù‘¢+Qv6‰žo­H¦}5'¡Ê²lñßh Z†£BˆT,#V±qÉû‘éaH©Û¢™JôP¤ŽS‰»ºdRÑäéxÝË aG%†ÁÃàrbßâffg›éôé©©‹æUüOßÜõ¥¯Çü‰@ܹ¬{°X à aüg˜ d}âù°§GÈ0*æ8ºÁ@û~C·êÈßB|â­'ü¼sî Îz©9ï…Ó}u¦(w¶E„fü‚Ö7nAGÇß {º(¸—¸Ô鎴¤cXëM”æ‚ȳz¨ pZÏ Zw*Ã"”™PÔVÅAÂÿ&±`çrk´]3tLþ‹úx ÂW’Ô-“_Nõl¬9ƒàW#p–ì… ¬Ú÷œ,»MøÊ•C7õEå/bþ~–äY_*ryŸ¤€Ñ¹¦s׳ )è°Tó&wχ¯Sy¥=Wõ Ö‘$86…Û_ç·ªÎ%¿E&ug}9Ë$rPóæ ņ—I9а;Þ¤vHÛ0ûm&"­N£ùZ‘Š`f¯S•„zmàÏUuáŠHr[¬Uª¯À‹¥á7€=4ÙªøØÃð03父nvSžU:]åoßêÈûæ8(çÐÇ®'`ð™°£âðGB nÃe.a‡wÜIŒ»7¼$ÕÀèÒwOŸ¯B'“2š0]j}¨POÕy†äÈÚ›jÖù.ô$äëV;z¦ž¸äú d§P% žìiRoͪÿßýƒÄênécUh×Úã 2yQH£R<1RñG^`6;ÕÃô¼$´„qVKD pÙh2ΫWéž+eWÛ ¯©Ûj ¯È½ÃÜØï'¨*Ž¥~ªÎy±ï™vÜÙÞï–:‚Z7Ù¢:ÕP?ƒ¦ áÙBš!@ûr‘ Ÿ¡gÞ.¹‹`F€¶#è EëóÑóÃØ,ÞŠ/ü¦ÂÏK_ÕqLõBLîiÙ=W»eͺà Å3 á,ê‡ R/57´G®[»ee%¹¬-çªÈì&[ãà—Tky3U·.s.áÝ8¥4}¡dO_cóO1ÞLJ^ñIõB]’$–rNó¢nêQò.Q°!ÃÁHNk!c}MèYÖÅoo› Cµä7¦AÔsöteˆ ‚h(|’yM~FÁ9èJ"¦Ü~í‚)5©7Ù ?n‡¸Œ1M`¯W#À”°rWü”F+Lõg´ë”K1FÙ)²ÿ¹¯òQXUyÃ#²¬ÿ‰«/õëß2NÍ-½v}Öf¨ï$‘R-P€Áº Äx8À’ ÐTÖÅÔäBŒ£ñüJü:Ùvÿtê .ì‘r£t<‚´Mê&m#ÓÙÕEå<t^²>¸ãû? Ð]±ö(ˆ'Rž&7¢xM¨ú^oH½bê{HQ°edÂÕúVÎľ 0àæ¼e*ô,W‚¬cJÎÄǨ75{ö"ÿOdø4EAZ%aP;½L˲sþYJx\º˜cWíê¢RÜÜOµ²ÌV_òó…=@²$ lñå陋y8uWxιÒWOh{ãêÞe8¬8Wf¹NDepúIjÇao©ûåÍfm†Š9Þúb·°  ÊšÛs÷R4ºËm=§PÂC°ƒ¥â`TßRÍ➦ÖÝFí'=cTêoÎzÔ`ÀÖ$ÚDzÂpryÑ%<®í®Š\PtmNæ»Ê­oAuKêüÍô™PH›Û‹ì>¾@µnžЭU6‰7/k÷*™ãÓ_…Í3&sÄ1…!ðÆf+&šáÝr‹ŽoxE×—2'€¹u ¡SžICèÜ·({‹ ®O =¯åòÁÞƒcßw^1àÆãÜ‘[÷ Ƨ†ÇÔ›/5-—ùºÜ æÇî`ÕMa¡ÉåÁ–Qwä& Te=îõÎK*lHbÁä(IDq0¸ M×Â22 PÊš Q¹š‰¬>¬Ðœòq5` m´÷§fÄG¢±vïÚkxg)á­aåfðán°Ásºj±‘yÀW öŸ¹÷Á¦uñ úDÌîçYÌ«ÝC)öFvÝÁÔ9—ê?šÚ»áF–~W-žDU¥|ÌFź•Óºsµ÷Ø¿`êâÏ1CaàÌ$ÛùÄãôÞÉSvKúO–§›5”ªFþ€2ä¼X9Hn„TŒÝYsYË“uÞ/¯h hh©¾ˆ¹Ú±ßêy÷¤+O,§nÐqTS¼ìêÿ]H9òR‘Ô:–t¦ÕÂïÖ£ƒt[ÎÓ*q’ Û®®r »Ën÷Äo?Q ’Ø~SÙ$…¯H"òr“Dæ¶Ëϯà\üovì÷k«„Dâp1moä+°®œ/†ÞpòÑ f9¯¬ÿö^AÛd±u6ÃQþ F!‡ endstream endobj 899 0 obj << /Length 364 /Filter /FlateDecode >> stream xÚRÁnƒ0 ½ó9©°˜„×IÛ´'nÓBA£D‚T[ÿ~1¥=mBBÏö³ŸŸ˜p°B°LʸP9«OX²Ó‘x Àó"GŒn˜eð𜦠D\ˆXÙ² F¸²Ê†}p•†Ÿå[ðT^'¥IòOIdþ¡ B¹ªbû\Å i¾¶a¤’„ÛN#Þô“®­™.”?êQO•Õ Ua’óË]K‡ê„éC¹wS³=µíÍH”ƸbÆõLáh,ýÓÏÖ>û\]«ô"õ¤qžˆE@V"1¤ää‚;˜³c‹„÷Ã@hâ‚jþBÖâYv&& û³›þ¹£´5”!}ÂäÜíX¹äqíSAuµ»}j :³ìbfßMWX4v@ÁÍ´  OáY¼ù6RJ<Ô2BJµØÌÐ&×[-´ë"Xr‡ øn¹ ƒê0ø9ÖQ AÝôž»~Ø9^ÿÖ_ÄÓ endstream endobj 904 0 obj << /Length 2053 /Filter /FlateDecode >> stream xÚ¥Yk“›Æýî_¡oA)Ãe˜®[IíCÞì½ëHrUª’T ´"FÀåaß½¿>ÝÓíl"ÛåªehúuúLÌf.üc³Èœ;‘gÛà WIë‡-–7/˜Ö³AÑi^®_üëµ”3æ:‘±Ùz7“Œ9¸ìµÖÉì7Køó?Öÿy±X_’žw¦IÔ|b3ðg,p<&Ú¯üP8Œ 2Îmé{Örn3+“¬x˜Û<Ö>Í+\Iëw—‰­?µX­æ¶ç «ªçÌ*ç^`}Êx„ÜŠ z˜ÆÍ£Ý–vפ$ØÅÛ,ÏÚ¹ZZRÖ´¨{ðúãä®zÇÔÓ]]Hü9k÷™6¶8ÄÛÆ™ÛÂcÖëyÈ­‰x ЏÃ$£HÚ=ø&³ ‚QẪKx5´¶iӠĵ6¸ÀÓšž—5I!P E}€Þv­4•¨ë%ÜúEW¦Ê°ï3ì®#ÜTŽ]Ù[( ç°ød*ˆðœÐ•½öï®tµ–?Ñ‚’ñ^ ¢±“¬©òøÑÆÜÚea«œØ`#àÍIjÊÍŸé¶5ÙæÂá>Ùf®3ç´‚ ª–ÖvÙÑ <à”x”ñA¯Ê]~ð~ˆ•–òbü2Úg[üêÞ`á3¢n˜•'$ɳ¨ ­$º¶Ý!Uåkã6+ G'‚"£<èB@$yŠ:T¬Á« _GÜ'ô„îµ)fÕ$1'ê1†ã«p’ŒÂÀ/"JcÕKú¨£»“M@ž2/ÀQéD~DžÞî€ î)­ëô¿]Ú´è"ÞNRŠ‚}ŒçÑ3iÑÈŒšTeÕꕔĕº)+º*ƒ Íèc¥n˜þ=fQkè<¡&B±˜plñŽú=ææˆüi;M1 X¶ÐL="…c4o=0¸b€^ˆÈÚ–:_Y¡ ešU"]=\Qõ€ ‚ȳÖû¬!ñ˜X"«—B‹n©d*ƒêÓ¥Á”aŽ+ÝfqNÒ+ºþö¾#(GÌñ¹œ@ù@5N´¤†_@ð“PC¼Q,˹?€×]ÓÅ9)©Š%H§-m ðx[q‘4¤±éZOÐíûEkÆô@¥¯;à_ ¨šž# uï£v IÀ@äUü Bn©Ëîaßߤº½t'ñ¡Ï5ÒOƒfÚ+ÄŽ  ôéÝM“ãOX8m¶u¶I‰†e’Ç]Ç=bøj ÓüÙ©=ÛSI šÁQ(W›ßX1Ïš–*½=£`¨£ÂOo}’å˜(($ÎrD‹æDÍ«SÎç¨òBé ÈÀþ¬ôlbÏïTLzŽâ$…äe§}Œ§Nóq¹Þt‘Ó%É試IRñªÞIX$o e}Ó-N(ÌœCC©Æ>g:QS\/ÞüSþxežÛIù¹0%Ì÷5å·“-MZè’C¿éÕ&V,òñ³ ¯Nš/n§{0¸ðh¬Þ]TÖš” Ù…µWãÄßGõt“vÌ{ó 6Ŧ:þØ<<¥Eb—;{Óívim¦ék=n¼O5ˇˆ?¥ý$³;-m0SMª÷’nê´Ñ»þ¶ÍÈ|þˆ3xß žëâ´œ¨ Í»‰›~€:”ý˜%¾‚yó}uŸ4³ *U~ÊÊä›1ãÐ!Ü^ÇÜ,xh‡™léÿÚ¿ý¾àŽ`¹¤RXRUáðç…ÂtœqC ÍÐJUW¸ÕT1Hb”÷Î(í=œÃÔ4ëLËôG‡iDCùt‡.@Ÿ@@l߬‹©­q¥4ñkÃDŒEÛ”´{0jþ-°!ŸŽ GÐnã*kã<û+:@ ¿ì»:ÏUZc¥ü}–L!sð•õ0†#—/OP|‹p•°‰$Išzfæ’f@tƒÈñŽç6ãY;rd8hèᇬ<—#ÏeObRgÔ“w©ñAŽ5mZ7ôœÆz\ýÙ*RPô!i‹„K…”ºÍ¶]׺µ]îü…¢¸ti6¬wÄíÉVÃL,"ߺ+[­Ðîã–VKzµkÔÈ‚imá&½hZ…¼8!% ÝÅ“—­_ ø…zGßt€‹§xLç%¢:´>;\Âq``Þk5ÐUøåWÆm s$ï臉 G§=Ÿ†]~x†°¤;ÐÉõbuµ¼}·¾½¿;ߘ¢4çMI¢²ÈõÏ0M©Îàð”Z·n FkíèÉ OZv•w>ðã/4ñˆ< zÁ<#ožK' ãzŸ//®~¾YÞ¿¿»6näãÞTI²gû„ dzùþfeú çáòü‡Å{U„‹7ÄË›÷owk£ æÂ:оÂëåâ—÷·ËÅõס-à¹ÔóÀá—ÕíõBÓ©ß,'¥\¼~½¸2p^8šÖœ mÂÔÎ?:^]ë¡4Ü}(/?2¤ÒýÑ.}ÈS?ë<¤z(†žmWÇõá4Þ\†m‹äGÚÅ¡)+ðÇIýÓ‹íGO‡sfwˆ#6"üG*X[å÷+]åWd,Épºóü£ÅÍÙ//ÐâÕÏóÍÿbë}ƒéËóMCK ›ÕälC§¤ùu]½5NÀ·o¾¥†éÙö¿^¼}÷fñ-É,Î6vw¿^|CT÷g¬PN:ÿóä/[‰ endstream endobj 908 0 obj << /Length 2080 /Filter /FlateDecode >> stream xÚ¥XY“›F~÷¯Ð[PÕBnœTR‰-;Nå\íæ%IUfÅH"æØ#¿>ÝÓ3,`”ÅÙÒƒ†¡§§Ï¯»a+~l•º«Ø÷4HV»ò…«v›ÃŠ—o_0Mg¡= üöêÅçoÂpÅ\'uS¶ºÚY]e«ß­WG~jE³¶}ß·’—k;BëRð,¯´yʼnV¸,(„\Û^U¯ÿ¼úþÅæª¿?ô¼…‚"åÓ’FIà0? IÿÂÛ€(ùŽëGEp© F\B'öbCñ¨ÇÒ(mfmÖÌúõúÝåæ5jXß\®½Äz{ýãæ§«íKäµ²'ã•ÍR‡yÉB1šOãÍæróÓ«Ísn•‹oÝn6Zá¶??ãÆíòß½ÖWnÞ¼Ù¼šµnºðÖnñ­×ÛoÖ^l½Ý,q cÀ[f\ÇÀ5í Ñv êà¹d?µÄm^wk¢ Ò’YôFŠPA!ШÁè÷|ýz¿Ñôä ØÒæš>æ‡NÒ@ôýS:¿Ï‹Â¾éö{1Û°D‘ùÑG÷¹€Æ&çns̪Nôf ñ\/è%ÇÈÈ4*‚ r”ÉàxBk/p<%÷K<=Ð\áᡞEC‚Ýÿ˽̔3°˜âlám=Ê´Ç\ž+>:øYì9^ÊÆzý˜Ë( ^ 0óòÀÏ—˜#Ëå©àv^eâ~Ö.¬Ó>úiêòÔŽ¾¯”'¾Cœy¯*ÇAëH ›@JÞ~¶Ö˜>´ˆ’äŒ×ÃÄ ÓI¬ß~Šš·ù¡-–´Y§ÃDâ&æÜë±À f¡ë§²„jæ¿)´ª=ó3Ò'Ì ýÈIwŸ"½B©¼²ošúNÎg.‹ €¼pV‡(Æå7ÈðQ‚ûÐg¸G=®T«-U„ot”êKF¥„Bliüü)ås)x³;Úiw¼ÉÎÔÉ0èõÝòRg%—sB@q ’ÀP¿²çã †Í3D&3Sæ$Ѥo{‡˜À<‹gYŽf=‹t 0Ý1Â{ XVÀÂÔ1}^T8(ØÎ«Éq‘©:È7 w:‚Ecø4š²^Äz«µ3ø1p(E†؇!®eC¸6t¥Óù£"Mü•Ø™øO}0Ôö€|æ;À”©î†t£Â³H¬ß7Ê:¸gPõÏ <Ò¡D~:SÈB©5ñBOX*™Áh [R/´~Þ“”»ºk¤P"B+þøm®4´ªûÈ[°ulÉxRóAÑÙêëj½{âh»@Á,môáª6!\Y©é¢;ÔšõÐ઒;S°BpÕ¬îé‚E¡[Õ¹¤dŽÇ¼³ý€M}£¢{î¦ u<©žËœ H(õÛ﨡‹ã>¨Õg„Hcì—¼¡#=«”q¢-)ªë†«±hÊ#ÖŸ" æ }XØ}sHkxßE5ûa)cøÉÐç¦@ÛO"eæaÄÖ³£>øQ0dº+¯ºÓÙY«‡HÔ€¿e"ÓŽBÇ Ã9û†ÞÈ6ðXÕM g艟) ¢ e:|Y®²Äñ£W…ÉTcÝÑ{ HCKy ‹ñÇ8ˆ_TN˜j)LÚ$Ô$nò8fÃF#pãROøB%.üsx¼¡¼ÒG‘«­È¢6TïïI:\bš!46ä•~¯9kơƭB€ÀÛþ¸.ºûëYÌä{ï0ÌT=(öF¾×³æ®“m]æÿˆÉÈI¼ÉU?7€©ï„,üè G}WÙd‘ÙIϬ¥6öIÿþw›ì endstream endobj 914 0 obj << /Length 2885 /Filter /FlateDecode >> stream xÚ¥YKãÆ¾ï¯˜Cs€£~ðå{a' È ƒm ÕÑ–H™¤vgþ}¾êªæCÃÙ5èÀf±º»_WU—ÔÝ?uWlï2câÂæwÕùÝÖS»§;üû¯ï”ðmÀ¸™q~ûøîß'É򮁦Pw‡»D©˜†ëq÷cdóûŸÿþî»Çq¥Dëß¹%q¾Ú3KïTk•XÚR¥¹•±¼]q¿IR}hÏ÷]Nn¨Û†$à‰666Õ4Ú$xK•Ì‹Õ8³h²Ÿ¹1™Ú=“¨ÝÝoRý⪠Myv=¯¾4VWXR‹N¸Ò9—Ö±N203Ó7ß®-¥·qš¨Àôë½Î#÷‚íUÕ=?mÇƒÊ O‚Ç÷k·~cÿåã}’Fåé*¯^#<‡å÷®.w§7DÍãÌ)\ßou×›¡Üm÷ÑuÙÛ­é°Ñ™ŠS“Ã*&V‰Ø¼‚}¡Íе'(b‹,útt &Mø½ŽòtjiÒ§{En˜ÿ¯…òq¡¡å' VÕµƒ “F?4kFÙ.õ!«œÛ=Y´Hßr§7ÄhÈŸ¶ÊÂŒfeq¸–Ò6.´ºEøÂŒI§Á ªn†ÍþÔÕgA¥LæÃÌü0êc ÍÀ¦Á=ÔB'O`ˆƒ=É'7ÑwŽ—Š["ì¹ðûÅ3¶5›7fN«qlSÑŸùþãAi#Ç ¬÷‡7±ì>Ð~¹z@`T×Éy.e7Ôè}ÙT¥ 5Þ%bމÛk›„@…y¤Õ{æÑ¥N +ž0I'&ýRDB˜7I`ºtþ}¬÷ ï€!'ÊÍaŸÎ¡ÙjÀ†žÊ+†×¾>×§²cÚ¡ì##¼"©Ju¼Uã9ªþ¸*j«¢ÃÖså.ƒ,{,Þí•d=ÓÙ­®ÎÞ°øÆªúÑ1ž`ö_Ž' %Ï‘¤ôâÐð;RÔ™â>‘>Õˆ*œ¦è‘K/ ~ºÎ:Šc ÉGˆ²++lÑ3í¿«~ SŽ*ã²V¶¨Ø&cöüêý²r÷g|¾7{׋DÈÝ” žùŒ¿.FL¦÷ÎZÍŽ9êºÑ€_1tiåY´¦×=Â$»ÖýÑõ£|½ÔDH~q–/ËC9d–ŽG1ÊYY®¢QùA§”ʘu(“Ä©úb‚g(غ©d¿sÛÉhQ™xJID’"(6Y›Ä$k‚óÛdŽ”T´¦KìË©: Kuž/&0 ž#wgjº}°ÃÓ1ˆÊ¼–Ÿå~ÏVŠF¯°¡/9!©É«ÐÐ(Kò$NåÚÁ3Ý¢ÛÌQ×^ ¤ª>¼uEÈXÙVÈÿq2DŒ5éku!ÑRU“Ñ7‡{*e #”Rp~%Ÿ¹Ž­… b|{e|]–¸Kpi›ãˆþŽKw±™¼¬nàÅ˧ÒÇ%ìíc‰'Î.S!þy^é±)Ò"¶Æ®]¥°ÅõÂOï~xóÚÔ¿]]eÈ¥º€ •/ýLôÃY'3â)7«þÈkðZ9ŠÙä¾zÞ-è™àžëiáØ^^0kÞÖG¥÷Ì ‡iÎÄ]—JÎèKç¼g¶Á•À“Enõü#.™)!ýsóçÕ8šÅ*× ßi£üL@.Î¥#ôã>Ç?OÇAÅE’ø.J Î|ÞØ è°iwä´ÍÜDk`ÂaZä a§\»üƒÍ [p1K±9ZÀvç+}2ÞÂ=³BŠáŽåEÂØÙ­¼” Vï¦ÆÆifÙJ¦`™ü]¦t?è[]È“þFBhš/û)i&ßÈ88– «T¤¡4c1d)|ñ¤¯¥ï×ù> =ñeÀ‹ÓìyÀAàcݵÍÙù+È ÷͵jÊ×rr}†Vc¡A¹–Žýƒ?ü¾P( ~°â¤SÙ÷NÔ£z“ábýe6õÂ7Ž_}‘ùüåë| üý,¯]<«¼gš}ý5° |=UÏmï›òùÃü›Kß(OÄó4šeÎ=S–n&Êx)Í¥Jêù"KÌ÷‹êŠ;>]úˆríÝázâ1÷ë˜ÊAÇ·Ý;«Ü½á¯ã–°@Ù¯ÖÅI<]­žÜg+b£QºŽÌ¸i¬Y&FªïvUÙ|vÅñðÏía»p4~£;Q݉ßa™S«Ï8×í°ÄìtܧƒÓÇ¡.1€¬&‡óv?]uÈIZƒp[ÒÞµo?ÎÍpî®ØÃ¸Îçëë´³Èjj[aìŒM;Av,ùÑ’¶Áà qÏVpð:Î=´c[–'0™,ëäoêm\„ËnÐÐF€Rú_V*ë5x¤±žrÎÛ¯DÛ×½ø‚²\σ’(ýº=tÒ$ƒ-Ev©L@(¼tîà:‡b–êåÔäуs·  HByoQæo¿ô'JàÞÌØWþ¼¹]”V®’0Ñll%}daÅ™åüÛ¨FÀ,Ý‹ƒÞ“€Öè[}´†$)¼™d_Ð…873Ö=æ‹Í*ƒ¢è²³HøžV5ì ¹­æK¾Õ7ÿ½ç'Õ~>Ig'¥Ñç 8vb(ù[:LLõYO§7‘Ýozí:)uO²îmSqy¹iQÈNTôð'znC$MøüиOü~ÓV¡Á ]ý9ôStø+Èw?œÌìx©ZØöŽjݽo(#54>Rá{ÛÈ„Õ^-t`Fé«™mVŠËª…=ú°Ð^ŠùKÃf¡Ì†¡{J\dA±,¹GÎyû|sþÐÍÖð 6<º=Ù¸Hù"t˜å¦ 8Í ö³þ¨Íš&„¿‘dy×Ö& å¸yÕ¨#^Îéª_@æÿýL²laîdÍsb•²¤ÀÃÈH @é«T0b–iÁ¥[Æ’ŸZ'ËTˆ®"7³EÛ*õTiP¿Ñ’0SÇ”ÿàÌøO®PBÉLec‹t홋´˜nÏšPâÃË/MµúAN]«1YÕ›„ ùMÏVM‰Ã5CÝÝ'*ZýË ×úû9ôw§À0µÛVYøÃÉ Û±#+pq*Á•KŠŒ}j7·Ó¬\x¾¹6 ºÛÍÒsÂñÿ‚Ë6Ø endstream endobj 920 0 obj << /Length 2721 /Filter /FlateDecode >> stream xÚ¥YmoÜ6þž_±È—h K_ôÖîà¸iႉá)pò.wWg­´•´v}¿¾3’z1]§9±(Š¢†óòÌ3³lÃ?¶*âU&DTÈ|µ9¾Šõl·_Ñà㯘YÂÂp²òÝÍ«·?$ÉŠÅQlu³›nu³]ý\ÊÓ ºu(„Šoס”IpÕOµª¶Y‡<—"d±þõ柯Þ߸o%œ¡P¸ò‰TYºb22åFª4—’¤*"¾“”IÖ! H‘É Ýá5 v8}n6㓲۟ªY XÞ£ÀËÓƒzX1nÿ¯,e!ƒªé«­Â±JšÚ¹­ñnSÖ5>ÇI\Ekh±¢uXp¥­ëvÍóà¡jö´î?F€t*ç<’Y‚hp/ŸœI”ñÌ.z«Ø-uM–±ÎâÖÝ\¾óí_LÒÜ.ÚLL‹R–ußÒèGêà YpªèIN °ñ*äi Û‚I™ˆXBZÃÙ‡´!¹®Á4<-&*Ä»ª§kI—½jTWm.ÐÅøL.|úP¡¾qtê´bïµ}ôûöÉp°3Sh œÄ£~‘e—NcŸ„Oaè—¹3ÑQ ‡e ¶=iA,JEj´ÀhÙ]Cæo(’†Ö÷y™Eùhü/Z>2Ì£ ‚¹¥uÝK) :U—ƒÚÒUwYW óHÓZïpý¤Ô2ˆ¹”QÎå*'áYöB ÛÕád¹b–›’ª•õ„±ˆÑè—÷Ÿ>Ñè}ý=©yó+º:d¹Wô,É–‚Ë8‰XÆ¿Pp»úÁ—›jÁµ0Iðp¨6¨ÓI´­úS]j%÷så“1óÅ©,ÜTÄã/èÊ8Pô•–—*iþ JÝã3k9¾rÒjk+Ú˜æªqôTÕ– KoK‹ÆðÄ;D¸ˆ\rΚ¼ˆwØ,›?èm›êöü9fB‹¨< ä?à‚öúa #Á·9^ïðœñ(`‘Ë@; Nž{Õû‚‹ÉƉëïò¢!‹8Ë7©»lªÞ|*»aškd°U»ò\›Iu,7=‚2ÝîÚŽÇ…2$*#$‡`iÁÿtŽ@œfAå, ™0VÜjÛFªöK‘L¤]w*õ±îÖIè ’iª]?¤½ö^?ªêò¶6ËfKϵ_áÖÀt}6·~De9 *sª¾Á@!Hê3Í£Øá€”oC‰Ôdðtå,ŸæP'³±Ç‚gŠ."ñF¯à­èÃà±–fÀPÛD¤h¾#êÅ'¦GâlznëùÍ>„°Ýz%!’ÔáûB®'AnÑd˜Lß‘ ^]ö½¯1‹D,Ÿæög!¨Á uèPݮ܈¨v˜J-T9œ;5Ç—¦5€ãñ*ýRÛYü‚<5Ã/±o›/CIˆsMÔNí»Ò’>@æj8Ш<­µ‚¢)Œxån  /sBJH™ ÞáÈÎ ‡NaF‚ÀîÛs·¡y€gIŒéþ¤#]\ý)Dæi”Ç. Ž†{¨o½|FDÂù`¹ I¬ðc©ÆK€ u‰mnóì œR&¾=m< I3joÿ ùÝûE)¦ÁúL4qôcáù¨DxTÅÈ‘ ð Šh!y3Шm̸:ÞmÕ Å„d&w£S§î«öÜÓfMø§¥ ŠøÂ±¼Cg˜¼4`PžçÑkšj£êG´<`k»:©:À™ž_z.L, ïÍäÖP$G#lÀ3[KLi’Èò(‘éJBÔ<¾@“ìêp²œhÒ‚DÏ7Õ§< à ªG¼u6¿K,¥ÐB"h»½{з»á¡ÔPTYäæÓ3¾4ÕÊÛåÙXG,*¨ƒ }álvu8Yî¡€ËMm†a38“Hд«X²¯¯6V«Ý£Eí>š†õƒ.[pöQ;ØÙ£[6L« ¼70cRYšD\dó:@3(”*’ªÝŽ®à͹pJƒ6m|EîÏXüigºU06J<Û‹ÞlK`ŽÉ©såÆg~®ÄRÎËÇ™p>8„´0r†³×â,1ä°ˆ…Þîç@2ûHS[Øx3àØpfœ|ÂôËh.\V-&ö3(Sô1ž÷O“28±U˜°|ÐØÐi`bÂmBZ¾UÓoÓ^—(éÕ…!ûµKÑ®X4Œ±#"ˆ}Ï)cdJ6v'rúßΕÁ.ýÜÙõNáùôŒ»  –iöÔ[Á¨ÀÂ;õHŽ lRÌËMãÒ»Û-ݼ†S¼¦Ì¨}ÞAÉîBÈz³ß}/¯¼µçÂôè÷ª™Ã|½ še:‡;’ #ó\lÈÀêɸáé¹êÄÁ0zd›J U?Õ¾´ÕX#ÒlѼó&îÎF>j0eØ`ÒO«ýÁôsðBÍêTF±È—5är*Â0/7•¢`ðq7ËäIšé–³¶‘I Öù¸æyÍ圪٩®²ÕÝLj®ï¨%|ÀŸaN‘úöHe6,9˜l%U÷þ,„òÕîúú3( \äõ<)é›ï¾£ëCÙ»=õ»n7èŠpd(ý‹§/ý¢«>¦_e_ûÙ‹×c(âY\þß;ßMv¶2 k^»‡d³yýž`*Á5X}SmjÕAoð²i±TI LÖ‡ñ;4f…îÔA5=ðŒM´ï59˜YæˆÜWæú;yfª§ï«’&®¤úÆW\ÉrJ^ÀáÔ%/ vu8Yî)®–›N‹+V`ýÄc[4á´åè­‘îO>TwUU×[}÷özÔûì€4ƒºKêvV¿t»:œ,÷ý°Øt–Pã<¸Pàèt–¶b…§ˆ6]O/ðz(GH£™Ñ”fip¿¼è7ÕÑ$®ìló5srOS»Š4Î 3ÛȨ|ì–—Ý–&¼?åiÄ„K ߌMþŸwgrÊ+ßÐÆ–^"ýMbÛnÈÆ†a<½•¶Wµ.gp> stream xÚVÉŽã6½÷Wø hrH‘Ô’K :A L;39ÈÛ& -Ýݾ̷§¸H–r:ðÁë©øêÕB±…Ûåt—rNr‘íÊæŽºÝá¸ó‹¿Ü±€ÃÄ äûýÝ»Ÿ¥Ü1Jrš³Ýþi'#v9¡öÕî3’4ú{ÿÛÝÃ~ö$ãøi‘oœÉ¨«Ø%™ Œ æïm©"Ì9GºMQתº·ÏýZê²V£7–Eë‡ÇRR”F?G2A…QÕdóÅ›•·ÕçÂèöèí_¨¤MÅ)ºXWé䪯‹++°O–ì9OËbˆÖñþúލ¦(Ç]*$ÉX6!áDöý–GÌ“Œ03pÍóNõÏY@GÆ}§½Öu~1ã„Iv}A—ÜtUxƒMÐo‰Ù÷2 ±:p­s„ÚК#Óõ¤raBÚYnŽš®Qî9 ›qëÞ¦ÁñJâ%¯˜S’$館ü2Q^¶Âà)Éó|B' ŽAÌ$ ±…âúë„°L³¤ nô:üwíý#[«×dï|¿Å#æDä3¨ûBWƒó›£²kúZmýã„ç¨:«Á³®¬ˆbNÊs(»¶ÒÞ­”QC£[Ì&!·Jˆ Nb—Q[žˆGü¤‡Ñ`Sp«žÕ€µåDʧ8 Ó—§B mÈ–¤íÿ3‡Œ“L\sxC4h£TÌ©~ÑuíÏ)ŒQMoì_¨ç“ËiF$ëÂÔ±*(Ý ž¾A0g$Oó+¿6SJ‰LåÚž,&âèÃããMG3¨6A01›»å)!œÎUÖt®)+×°Œ¡Ãá†õ¹÷ÿ®°ìbPu˜s_®ëq+pÄk §3˜èÜþ Uº‚¡:zùY& år-ÿÓÐ5ð–HÑËI—v¢žü£éü¿ßëÜ”íFe“”¥èƒnõáì{ÅãtÛŸ_¶¨k".²ì®u")Q¡ëâP‡m¸ÏàüÏQm¥ž')aiöV;Ã2…~ê½~P–Ök¨Ä,³¶ì·E±B¡²9Ùk¶Éè\~7Ûª”%kàs<F©†ÌçSÜ?tzµ‰§ôšYφ!×â–, ZÌWNüô6'—^8¸)LiÓròîÒEågYQÁ`JÂôX×No»}p× 7^ï/›ÂØôÚ Ìr‡¹ð)ÊêÎOŸPÃ7Îí²h\Ô“4€òeÃÃõ/*æ>8ZéŒ{Ñæ´%™  Y:¯û•”æÉ·Í¿ö„E“ÆîJ˜¦; Ç›_Ô}±-o=û©ö/ì7„e endstream endobj 929 0 obj << /Length 1722 /Filter /FlateDecode >> stream xÚXKsÛ6¾ûWðf*S"Að‘K§vÓfšiçÐi:Z‚$Ž)RáÊ/ùíÝÅ‚)ƒ²§£ hñíûÃJÜñáÃÔwb!X&ÎrwáëÝzãÐ˧wÜÈy è$¯n.^¾•Òá>Ký”;7kGrÎðµ—ºY9ÿ¸’/þ½ùãâÍÍ€$ƒà™*Qò‘Î8rxÌ.CÔ VEIȸI÷žŒ÷µº_Úçåfá‰Xº‡¼ÝÒۛϟѪSÀà a¡ŸJyBw_W‹ qïó•jp't€‡Ug‰´ÕκUÑ×(¸UÅžvð@ÕÑ6˜²àî–íV‘ÈÊ ‚Ñ;U.‚Ømé‹j=Á¨éÜ'c]¶Äí»…”n¶QÍ+r ã2FAïZÊü0íÃÄ8êÍÂã®v4Kêl©n»ÍLpxÊxƒCRÑX*,æ1k¡sxaÊÒ´¬¾ú\¨ƒ—tÓéÀ&ÄÎo ‡¿À:•n^¢³-D~Ùæ.Tu]Õt¾Ì(]›¬Í«òüAáÞB&0„±{§íý­Åºc±ƒÓ‚qÉÉÌÛZew{Ê´Á ÉÝ]Væ{ÀéŠA%dcYQë ‘¾Ke„{ª¦Ot¾7^¢)ˆÐˆžÈZá- òr¥æ@¹¢»‡ðWfOûåÈ! ìË®$ uʨÞÖ]IÖPÁ­µºPMR˜Æ„:KÀ#„ùíB[W;8%X- Õ—¶’‰cF¢¯Õ4Þ¹²‰‡Q/7„†g ¹¯ho¥ÖYW´ êý7Ú£Û¾ZfF¾­6›BÑfÞN±(®¸ÅI{šB´UÐV㲇jŽ"Ù›õ§÷Ãæ©B¤žLRð”ÃQÂâ`è(ð& ¤{£½ÁÂÝUÞd·Ú X4mV·RN*\ª¤L"íAj-–ñ(b©ÏNä¸ÙH7ªµbÆ,JÒ1dר³°©#à `ÂÓF,óÂRzæÐÁéÕx"ôÝ5¶&•rV@ž¡±HDj*DnuW+#_u:ùð q³ù–L&c߀»½]¶·fpð ›:äF×Q¹zZSR°$t\{Kê½k¯µ)ɨDÂ(t[­rr¸xX$¡khMDÎ4˜†ó°…ë.ßmº[¼íо%¸E›yÿ4B=0GÛ¬Uö`qÄ|-8êíò²ª½]µR68Pì'ãV×ÊGä¦×E|Ñ×(¾¬«¢¨0Ç´¼ö–ÆéÔëlˆE¶ÙVu»ìZs…gµ"Ú£Ûd!#7Ë lµW6/ýi¾ÚFý½ìùXÑÆëcÐpùÕ—þ7[D°˜.á[®•9R“€DÐ AO2×pwKga]We›—(JC`<³;B_V;¸¨Vð$ÁK˨ˆ‹'Áâj”š ÿ9<->ÕÃ{E¦æP?ZzkZ –¤G,*JŸ¾Fè‘§È#?d?¥ÄæC¯éËÔ…/|]g»§ÓÐígìÿ8EýØåÆüQÇ=‘€ïpæÒʱ0:Çz„¡ÈðåV5úŒLÍãKQÐ §ørdTX= ­V ®È°T+Zæ¥}4„"–ò¹¤ R:\1Ø&6Ž ¡á+EêÎýÕ†,9G3ô 6Có÷3•ö膘îº I¦)j‘†æ´0Á8¼† ®ôìc#òËIëߟéö~ôœÖÄgeJâê¯#Z­ö*3ûè>—ËBMEÛ‡½6~Ò#Ú’Û½—¹µ*¯fôC§Y´×'± Ø [•ÜM•¼Ï‹(ÑI;ê]^Ø:óýPvD„4pî?Ž@ÈY-¬¦À7f~‡—îÁÇÍÐ4nzZ _ÌD¹€ƒø“aˆdÛ·E˜m!)§Ð諭BÊ5²-$³\»ŸÝ×ê>¯ºæüˆÎ·—ºœ«z¬êko€\ç?cp¥€áî³B í¤©‹RÜT=]®s %]뺙9g¡ §×è‹§î噿…öÛIÖ¶ÕÁtšæÌl‰uø'=Œsð‰Ë£Þ£8´ë+™Mì}Á?T¾ÿR‘ðóCp‡ Ÿ%iÜÿ­³q„…‰tjå¬/>š¿m¢“©â> stream xÚÉnãÈõÞ_!øÒT`Ò¬âãî °ç ™Óƒ M–¥Š)RC–¼äëó–*Š’ééÀ°j{õêí Å"„?±(ÂEEAç‹jû)¤Ý~½àÉêÛ'aá|ô'½ÿtñ5I" а‹ûÇ)ªûzñ‹wµ)wFõK?Š"O„—K?Žïoêy)sO5ÝN·k>|Ñfó뻻¥/£,½D.½ÿǧëû‘†DÊÿ“X„|OmzDmd2[¤yˆ(fŠ_–¾H²Ä –€!ñ~.Mµáé‹në#!ÇóßÔ0ø/ôI]0F_¦A Æø=LÂ+ŸÁw½zÔ¯ªæ•ú}¯ŸËFµfà²WvÒ Ïj¸ÐªzÀ"ˆ“øø‰?1ìOå³^—Fw-¯Å¡ú¾ëíHÍZµª/{¸-+{ö¸o+¼]6ڼ዗ïx’V¯þ«åÿœÇ[Í“öX~¿µêÕøD LHDHÏxmGC8^A=ën?L¯ú3„XÎoõP]:üSÉü嘜» jd³Ñ–ëjàõ4 Ã#¥š¾¬ÔÃ~ípÇG ¢âÔâE êˆÂ )¬Õß/óÈCÙ…Wuí÷PÄë=ª6…76Úþ /T£*ÓëŠW/x¶„ÃÆn¡ÑM. ;ÐÍÀ¨ÍÆ¢¬5l—õf¡”²´Ù{$“ –è!Dæhºþ‹®ÍÆg!GqDibÕdÅh6½94õœ’$ùˆµlë¹·¥¤ïŸÞ(½Þÿ‰ ²½ü¼LRp]>4j˜j ÔETgAì¢Ï7aìm;”}FàL¦Ô ºîOµÌ; j¤Xí·ªEqëLxÆ ± U¯T Ô¢"ðHÛ‘TÀÔé©³Ûæ4ŠÅy¤‰\ÄYÈ2ì gbÙ JâcÌBn’{ð›Á/k¸°'ŽXuµ Ö]·nTPuÛ‹ÝÅT:§ È4#Ä)è>úØ?@ϤŽ”D•U®He¾Smf^€«¯ë î€Êö¦Óhx…šÁñ½ ¤Ìƒ<qœi.Ä‚…ö'à3J8E:ÕB¢`HyÈHæ< x`ù3Là`¶“«ÆÉ †c ž¼ð¢Ÿ´Û`F–©WSÆ@¾3eoT}*!‘…ä×qI$~ !íOÀg´|Šô f€Ì§>ØTVíCþÔu9" χYê"ÄÕ¾ï­7oŒÏ±ðˆN=^ çñ =XJ¯íŒÝW"3χn«ø¸{äÕçÁYLÒëUS -°¿…—ʵ²Pºe%ÄyÊc´]ë_·ëF\ÒÔkl*)¶ù9P é$Æt§`ðÊ0Ür×í{^­x˜< °ý‚§GO”uÍJ 8y욆³ ÕcDTª_ÌèÅiw\íúó™/qºÕ†g¼{9—@³"—Ǿ{`²éPX¬œÝ\ýûjÂ/ß®ïÎlµqvuæ ¢‹¯ vHÂQœJ2‡ržØ¢Þ”p3•Þ5ŒZ®;3ù‘´!&6äϘ²\ÂW*S£XBMG¢{Ö5 w 'lTopb§mAÐ’è¤w´Àâ£ôƒgVѱ@U‚dÈûX)ÚIœ…Þ5d(ªµáx?X¬‚µŒ{ƒÜ\öõœ«L?¦Î†·Á¨-ωÝ30Õ­OѸۃÙõ¾ öB3‡0;Bˆ¼eå`_1ý¾2P-Õ¼†èh™£­K5õÀ¶ÆBŠb K¶,8[‘º^ßÖô4œìJª¸ž– ÞkÌ ‚ hß*Š')òƒAâ“BYBÉùeÑöŠ‹z»F'>2;È&®?Y¡‚²#õóõ2ÏßëE‰†À=F›£ð„!2’“Rœ¦7™ŒEœ%å›™a%G ºÛ(‚ïÐv­jòeðlYŒsÐÛ]£x¾Eù–=XÕÓ~g+Ð úû‘)4e»ÞƒþÀáUM7(þ°!6`¹@ÛCÃðý›Ÿ¾'¤òM„U‘„Xâ|œNÒ L“Ýa6É¡6ßhWªÓ‹e˯=pJáÝzƒ•DgJ ¥UÇ«’/>“öZ[Ëã&å€ÛÞ–f8·ù<ƒ6P×pº­š}m2ñnJf øJ„ø*fù*F¾œÒŠ Hejû›ìXÿ~{3›~CÈl#Ô9û>vDÉ®!”ºå•Ž#D¤•`Þx®!šV½¶²´pÅ *FÀwȈ¦ˆÎx’³34„YvÚÑ`8(rºþ3Öc$†Íׯà¼4œñƶ$½í±¾Ä5£ÅV¸‹Ð‘A[÷°7sp`YؔNJv0¡ˆi¿†ôé£*1u9ùËJC/5G15† Œqõ4ùÚ&ɵªÓtûO=Øk±=²`ñz,„ç2: 0ÜúcŸ‹„óÂùS?ïsø…qôË?ZÁß™r¼”ï}ºH¡½ 3wÞ/«ú×ÙŒQI>2ìw;õñÈÛ‰E6ëCÀȳøØêGvÏ9âL[÷Q ­¢4Ñ‘xl„æ„­òq”Dõ°o:Ú(ÃMÈçrë-4ñ~9Ù¥ž“ þ}í¦ŸÏÀ~c\ÕtãÐʋȟb­ÅQÞµ¶˜%Ÿd¶m;HŸÐù›. ØÜïwïÓ¶úÿ&:, endstream endobj 941 0 obj << /Length 2618 /Filter /FlateDecode >> stream xÚµY[“›È~÷¯Pùe™*ÃB7×Í“×3ÎîÖ:IÉÚʃíª0Кah.›?Ÿsk2cM’Jéæô¡û\¾séV°òá¬2•híeaº*v¯|¢v7+¬ÿü*>Ý ç›Wß¿¢Uà{™Ÿ«ÍvºÔ¦\}rÞÝæûÁt®ÖÚ ü.Ü0ŒœKs¡RÇÔí¾jnxò¡nytõñã…«t‡N¤/¾l~yuµeˆ”z¡°ÈyFÚÀa6\Åiè:d‘n@ÈX;ë’Ÿ»¤IÒ¼÷,r†[ÃÛ¶®[Ôã”@R¿'^STyÍ”«]^ô<,ÚÝ.oJû–Ë>×ðIâÈš‡Þȶ•LçeY U+oC+O,³rÖÀ ´D¬@?À.yWŠ5Y­ÃQ?ýþ}¬¦¶×™çgâ7Wœ±c޹ݢċáâ¼4}ÑU׬7C ·Ò'0ìŒÒn™q-2Ž&^”Ì¥í¦Òýúþ’´÷gz¯¯6ç„]›ª)MƒN.Ü$MXÖ$âÐu³™ºjÐåi–/zÓ 9göÆ< ƒÐš’©Ï®ìÇUg²,Ùg?òEúx*}è©P[ñ;paÝÆ\ØÝeú’úAª=•Ø`›À»p£X9oR:€]_w4,nÛÎ0ñÜVV)¤UèÅD9æq[^ˆiâEžkUm—t |+ïíîÚÒ,ÉÇ^¬GçѾ€–¦mÜ¥eµò‚TYÍ‘S`™–ñ†&‹²Œ!— æ6o<‡®Ÿ'Þ|ÿS@÷óäuN±Nc oTCo¿mùCü€dɵù7{0aÕ,nÁ!þ_aL–EÛ•ØÜ¡}Ö?N¼0Òsp-Z4Ë<•Å')¦`¾sÍyËrª(ÅÄÇgHØý—3´Ík&sÁ&|îòîî°ç1[‘Åj“÷vݺ¶@úÚî‰_Å]…Ù ˜™§|öƒ°†É¯3Ò‹ ¾.ɾ.'·¿c}–íx‰ŠN‚9Ô‰ó—vÀˆ H9¨›|HݘyIú'¦@uézfÛU7·6¦á0´¥2+´ün»¤áï×ê:ò²8ƒk{h ªSKújO'¡{ßµ»ýb®Ò©‡c®B€ëL£ ðÄ|Sõ÷ @]3±½ÆlæünŠé$=LܘÆt9Y×नC.Æ  b`§R«[SׯY×Ty¾ 檖\®ŠÃN°ÁBE™X $VdÅBáá¶*ÿ–IyÝ™¼|â—Û¼·ÔšUhÝå\ûµÅY9ƒ§ùy²(¶_qVžÛë!‡!µw Þàª,e[O„GC 3°Ú kó$¬·/k(Œhø­ä<Œe(š˜Ñ¨%ØQ¡ú_äæ@†Aßî scS¡lÍÅÅ'LŒ hÇ ߎ3Xqçû Ð;¯êüº^¬Ò¼­ÒˆðXõy^)À¡LüóÐB,šÇZ-oÕõ¡ÙÇ•>.úÛúמG”å‘Ïì@¡•%4PýI¢ þ³L^Œ¼ÐGžËãAìeIjÙÎy¢^EÑ´z‡)ª©Ÿp`L"RºöñO:pº1L7ÞͲ*òR/JA8~¦RÇ¡ç'£-Èè¸ ·ó$à Ïàª,ôÂ8š‡Ip%TY7Ö¾M¾t6 ä›ÍJ?蛆ž —6íÀ¬çãVÛs8Å„¦X´Ðw=?Ëiß]2­j–°ÑNÌÀéS˜}€å‰@À]^ó#ˆyþ~‘j§«†‘oÍ«GèHzX®—胃1Çà ´ˆÕ’ßî«|É“à5¨ /…“N¿Ýµ…*t>—‹~i.BöœÔª€ðÄÄcooSç?›[•yQ8.‹¶¬³û×¢J¡§ã’ßIömNÒqÃ8€w8ù\¼gþ3mʰØRø©—Éù.T¾§U8& À0ÆYú™¢pÛj¹!e`CÀ1 '¿9‰Nó˜ïöµ½fãÔªŸ ^/c?³’’]ýñ­ AíO¯^Ø>XG©ÇIls}ì­h¾h錊9(Cí¾÷*‡V`ŒØ ”Í|ÿ4Þò5T^÷­\VͰIw[…x-‘ƒáxßU‘ËdЦ¥ûW¥®,±¶KôqwÛ‹%z~¡zÖâÀ …´\ /Ú9õ’dì’?¸¶Ô÷ƒË¢öKÏ4|6zGrTš:oímo&†‚©áÐñ©¦)+>q;žaŸ¥éˆçY&l}ý”[_V^)¨6Ù,©I;ýÖÛÿ?þºGÌ}9–ÊÀË"HyØ^iü¼VR÷vÛ¶w‹™’åÌÔ?±žÀÍ!ßòs¦&.VËfýœ™*É ¶áíL)êÔ‹@LR1þ5”«ÆÚÜ›úEJn¬;޽¸½YøW¡˜ëtD£íÿ4ÃÜ\öÒºRñ3 ¥¦‚æØ–ÞQq CçÒlóC=ÌÍ¥þFZê–\É5/·^ ÒMí÷ðÛ¿™´\¤ð|sŒ³Ž ¤¯…±o]!ËÒ¿P° 7äDî,“DÑÑ2H§S?p.•t{ññ†`-mȇKiNez–O×¥‡¦$'‡©§°Á†ä϶-ýÇèäˆ|Qê‰I˜'yD‡fÊ•’NÆÿJhLw4dB[K£€owüåÖä°µJ¸Þ–Ÿkù’ª£‹þ^TQ‚ݬˆa7çžg+ ÝûOáJ{‹gJ '\ÉÓã_ƒ’©¬íAÿÃ’ÏkǪŒÍ?ÈÌ™ÊTä|wš¼ðÄóo庵” endstream endobj 946 0 obj << /Length 2534 /Filter /FlateDecode >> stream xÚ­ÛnÛÊñ=_!ä<”B†Ë;ƒ>œÔqNQ Åí¢NÎÊ\Il(RåʼnûõÛR"M'Zwggggç>+µñáOmr“†¡—GÙ¦8½ò Ú6<¸ûå•<Ý+Ì?=¼zû1Ž7Ê÷r?W›‡ý5©‡ró›ssÔçÁt[7 CGùï¶nÅÎó¸ 2ÇÔí¹j¼ø¥Ž<º½¿ßºA˜&‘GÛßþòêöaâ!‚d1Ÿs›\s«ÒÄóÓ`“d‘§ÂˆYþäÇ~­O»RoFLsøWÈÉ&öÒ Ý¸*ôT|A×»]gÝS[Þ£¦ ¾ « ö¾m·n‹ÏË ö7¾ý˜«¡ç¯Èª›+/Íó ÆK•Pƒ«^’À¹ÝºÊ)«šFÎÚm8_Ÿ¦A`ì”-|§OÁ ‡ªmøÀ¹&‘ñÔK¬TŽÀiæÎ]‹ª’Q˜á9?ë>oãÄÑA>éϤ螧ÕÀ[ΠßÌiû¾ÚÕ‚9´¼Äøæ,P>5sªf¤Î°UŽÁk5¥•¼^À%`ã`ø#çíÛNx,ðÉWQÍÜdŽî×4ÔÝX cgp‹åÓ º¢ Ð /ïG îxÞ·cWHó¶nÇ ¹j¡Æ:ëîÕÓqWdÃ+¾K7Â2Ìì| }>wí¹«pÕ ¢$DQ‚3ˆÎ÷]{b `£7 Ä;Ûû¾P¢˜ƒš—éÒ¸eìIÓ8ÄuS—BU÷ ýÂn^Ï¡#ë¿Ôd¬l{3¿ 3ß‹À}¾ÌßÞÿõöþ×÷7·kvêZä…ŸYÙGAäÜä2 „sÌ´t €°càÅÙ1hmߎ(r>Vz‘Bp“47qšz~˜|'*Yl÷ }%2-‰Ò¥ŽÃp~÷öm×ß^Û–¼DïeÙòb±Ÿó2“p!'‹ƒ9/äZ(‘SÛ‰L«€§) l0˜ÓÆ™fP¨å+t¥0ŒØˆPQ`!ïeÑ|Õ§3†Dh÷ Ô²ˆºK§ †Ø¬±î‰§ÄnÔ<ï+K‹ü WöcS°~XXÊ5AûY¦G#Þ3«þÝšµ™—Á!•„9ßñ§ŸþÀaýƒé‹®:óQÀ»à— '+¡ɼ¦½Çèt<)Í «ºç‰Þµã`Oªúoµ ùóP µ°ö^ä[|ü qKŸx|’Í´f .Nc/œíµ®ú£-mkdP¶äЏðÍ£;±ºùQi_c?êzüνô8[‘!ÀçB<=„çî\ä˜öOf* ”‚ˆÍO-ô€X¯ÿ á²}ýÆJS¯?A}Ò¼¾T‹ Ä^¨Ø¯vù3ï€)Z}!Ä—˜jY8w¦•0ìþv‡†ó/S ²Òò÷YÈd0©h8¨«ÆÈ©ý ;Á“‚OŽ¢€¡"(Ö¢™Pg:„ŠØÄàþ•g­!+çðF¢ a)±zÄ(toÖ¼V%‰Æ¡Í1âkKÁBVY`‘$JQЧ@ŽÅPôX•t?€ôãYŠº&VX-¯€h-„-_È:,Œ,ôâp‘׬2+:P¥Îç¨A•0;²ÃZŠžGœÀa%øN£÷@G p0*©fÀ-R_pœ„¹ ë¨û'a÷+¯«Ã±†Êá)šÚŠ{]¸D§ŸìÛ“.z†íÆM;HÌn¥ø'¡yìIÖb.†?·˜,g‹Ï}r?´§ê?t,À'ÑeRh"Ò#Õ¯P8í¨D¢ý /1,!+º«¢§Þör¦eæ5V*pnÆÞ}ÑÖ™¨¬b8¸¨ÇÒð„OW±M`ôO.†>9†rP›*‡Ì*[(ƒÂwßÖÖ4b6Lúµhü±‚’T5+œò4ß?-®ÍqEÕ ÂP˜%.Ü9œ,îEu¾§(›Øë€©yþ‡áÂé`@*‡•’DÒÆê"Ö"A–xyžY'7}ïb‰å™z-"@؈ө4ýr¬¨í9^Ÿ›A!¡ÙºòP$ñ³×c=LÜLS jíÌ‹U:—#ÇròHxÞT|Û¸}†Æƒ%`ŠJ×ÒF_œ ëyÐ…\ºjמÈÇCÓíeÐ.»ò2%=üo7¼ý÷‹ð”—ÇPØQù-[ÒsÇ3Ô÷Æ…™‡6&ÁJÕt±þ·`¶nÜ–ÅÁš/ñ§±M¤’ŒJ¾(]˜Y”]6X¦HPÛˆ€' ’÷Ò©pAIw ÂJ…±Hô<¼>‹T(ü­Æm´R#’ñ•m„«)ÂVÄ âíÔ„vdÎLÂàªõ•½ZžÓÇêxä|ÀÄ“ÚÄ5Y+î¸*ט”åÍfÅÇ9>Û09…R\ñ3¶:€ ‚kÝ¿´eý†û\n‹5·á¡êaA{bU:Ë­|Åc”Š,#h;Œ‰Ù Ú@RÙdh½— Ñç+=~YøÅmÉèå¥6íyŸˆ$3“H\íW;bÐ\réˆ'/“FKV¯Ýi_ÕµKÚtÏk^”^˜L•MÕÛlÛ¸MUs4ÒØK²äÿ 8Éð¸3‡éÍ cÂe»J!þCð“Ý;s° ^¹B ‡&žZ˵8R¬Æ‘ÐK’Üö°ÍBGR!¾QBqʯ0¥ÖÞ4…Ì02†j£9­bq8ËN õ [þRiL[¹4F¼ª¹å8ÂüÍ.wÒ÷¤â@"Kª50pìÈ­ %o~|16ç峜§r/½šÍ÷°&%Ô}4aj«‰99D &cšÔµ¨¥!ͦW¥4ÕCünDZ­©.D&¯wäènú½éXŽ1_)ÊZ†<‹Â Ÿ…ü|æóêS!:})ý}+Æ% jhä”0¸\ˆÚ2™?ï¤DÚiùC?D±¼ óø‚4Erzz×'™5ÓH÷ ÄõÆôŸfÐô™Ug–{–!jÙO? Äü µG”$BÛGŽ~ÐX1xöý÷¿Ð&ò endstream endobj 951 0 obj << /Length 2614 /Filter /FlateDecode >> stream xÚÕÉrÛÈõî¯ÐMà” ±Ã§x=©8•’•ÊÁãJ5‰&‰8(YŸ·5€ÐHS“KЇnôòúíÕ•?u•ûWizy”]mo|ZmwW<¹ûðFÉ9º£“?Þ¿ùÓOq|¥|/÷suu¿ƒº/®¾87{}ìM»rÃ0t”ÿnåFQìüÅ<¬‚Ì1Us,ëo>–ýžg·Ÿ?¯Ü L“ȉãÕ×û¿¾¹½pˆƒà•Èâɰ’ÄË`7É"O…£üå¦9t]|ŧáFr¥”—Çq€7\@‹®ø|ØtÛ6ߟÜckJóè~¼ÿô7¾˜ã‹*L½ Îí½‡²+{·¬»ÞèÂm¶ns4õùÞEWù™ÁEW…žŠ…«î†Yuã68‰`Ò º“À ²È>úÏÎÀi•9ý^&ºïõE±7¯Üá:ÇÃú”; GÝÎÀ¤ ¤Nß>ñ§î§Wv¦6­îåqˆfÛ•ršñ¾rS¦R1¾?HÁÏ>~‚pxÒ Iئϲ—àÊ’æa ä†i=PÁÀwþµ··Np¬‚8^±þâ«è;~ùŽnw§ƒ+ìÎÇì#åÅI´,d¦Ó™Jò·¤,ˆ1Œé¬€} ÜËc§ôŒ·¤1Aê¥ÉpøÆ=YUÙXU1veQgÒÜKÂxòX¤OA˜ÉaŠðab¥[ð§ˆfȸJ €ùq:wæ×SÙÔ¬,V*Ð?fŠ/ŽÒ‰¶ß5(ýïO;”"NòGRPÁ@MÕñ÷‘•ùÛ*޽#øpœÔÆ5s˜?!]U¦ ‚ä2ϳvÔÿaGМ:×Ô¨°Kʼl*ÿK{>.I&†i>¸͘¼ÈzÚž—š­l‘Œ`ï‚…#‹Â}½fF¢f³kæc¬”Mɧ™UAž«òÿ«jó½ÿclª?› +Ïÿ “öea\ÐÔXô|`Ø/åei0 Aæ‹ßƒ ¾Úí‰!¼rà€PØ“ Û¦*x¦ù00‡fO3ˆè ×eî㼉" «@M&"ÀYJÓy(ó‰b|DÑ%k8,.6ŠÈ9àî©ëœ©õº2¢Û¦ï²/Ń¬ËºëNvÝ¡€+(LÔÖ vx,~Jk"Œ"U×à ¢S\A7Ù˜ƒûÀÒŠI¡7ql».t[ðz¸X¡/NlOõ¦/›Z€2ÒѦ-0û"ø /ô7Q^\s\<0$L³ød y I=4­Œhü 6ÙÞ-))äŒ ôÔ6Ü¿ÿñ¬ÿ#£M½d¬ûwî¦9+Ó·YÿÇlz·Ö³¤Ê*!à ñNnq¢9Ñ'\è5ò+Š(GÁ…¹ñºiš;·ÞŽf î Ò½˜—ñ³>i›`ø^¦Ë~Ü[ÿ2xÑÔR2 P¢{º·Ú7—>l—€ØÈàÿ )Û"Z „Ú!Ð[vŸƒæä$ô’<ևń%òÂs´˜¦¸a šZÁÚ!É÷§Á]=«Ý~sñå]«‹Î- ½X „ýŒ~ÞO„Û>è@«ë®çÎ{SfœR†?I 0êÕqLˆ$†•Þ˜éåXXº(nöl`‚ÝØmB·±¹Íóq = ë‚rªb¬%óX4K—˜ˆ¨éÍ &Ò°,&býDF¯´`ð™ÛÑŒ1è-Z®A2É&‚JbŒ=–¼±SO§ž‰S‡³$Ÿ$²…“†”pý2(á­Á–`>‹Kì±±Œ~ºÐ?›¼‚ÉŸÜ__bò¶¬ª !Sƒ¹þTb˜ýmP·ÌT©æîi™uM¤Ò)7®~Ñš›ã®Í®¬kð´X We½ìçƒÜËÕPØ|"Ô‡<,Î90ãHÔÅÙ¥1ÀfuǦ¯žøÄìJî´ån?:MB³ó¾0LŠ9‹ÒXOμ¬só¨{­ìïnï_b[m‘O.X–Ú²%^ —~®¡þµNAhóÈßÄõYuµ—• -9WÅÄAH„ "ŒÎjU&B”½)ã†P&ów4r Æx sï`5ebiìÜ>¬àŒ®N3›%1·È=d–@Ä(sêF&³‚¹.íøÃ<О}ƒÖÄeuèMÂÜùl̼ *ˆI !4ñT˜¿Ð‰²§ÝÑñ…nÔè¼–91_nGHsZ†Hs~n]çWÁþ8Ð&s2¢<„R)z%öô dÌm@¦#ÔꦯdA‘/0ÇiÔàã9Ÿ W ¡o 6§¶5çðš;ëÈ5$N)[7P×¢mêƒ<+† û¿ø±¿dcŸyçˆt÷ïU³ÖÕmýðLwmThbc)L¥±„ØåLG]Nx÷¡N¦¨“ 5)(¡ˆ©< –)Ô é´á×A6@‘N r¦ð°³Õïc:a¡-[µ` °ˆ9uwäLMLÖ‘=\ÁEÈJŽ4P8ÌÈ;8¥øˆ„†fù)$ËŸU$Œ‡’„c ½<<ˆ h”8vF·Üªäï£î÷ˆ&êAà¼ÇØFçÁ„ä•~¯¸n¨îºrW£Ÿ‰‚ø¼\”äuHÊÅ•‚—ËÚ"ãZ çPÖåHÑ‹VM½ëÊÂ,eï ´K=Å­ð}i)•hmSŠÖúhÁŸ«Í¡d‹½<ûÑ´Txg”"á¨y€Œ cNG´Å浬nyUÿÙXQu`³‹‹  +2ìo‚YÍãÇã{nÀ‰µû|1*’ ýà\uó'ñFÍÃ¥ÆÃâõVz†×r¶• jnöPÛN€a³™¿Ï.d.9ØÜP+Q^xõn˶Ú\“oˆœàÝÚ«cEú ³ò”…’'‹Ày‡Ä #â‹ã³ ®ËÃÐéæPXõRT=üÜ4|S—ugWŽ¥‘9#•:Òš…µD‘HlAî;Û¶9ð¬Ýnq:v K‹úÍxhdxp,Aü“C|Vs>fü&Â}ž/¾p—Ýì©#±¬ugPÞqr‰G˜‘iˆa°GQ. .Àñ*Õ:0z6(‘€å©û=··øÈ¹t©cìä³r®~/Á¤ã•Îê?uìymYãè´1<¡öÝè?i”˜‚›"Ïk§ºâ¿™à\·×…8öÀ Ü^K)AØœ¹{X!o £È3É•æ-ªHrÁbYƘG—©&ð}gª-p=Érà:¹YZ§çÑþX©_ô(îvüÝVÊ)ÿQ8»3¾]¾u½«9'Ãäž{˜IðÜ㊅.‡~`óþwHñï7©w¦z40—þ>ƒª{*t\C‡Ù3~+•r'¥\¢ÎŠYóÈ]d˜œ³L8¡K ¼E¸ò¿Äkˆ§[y|ö¤}©jt±¬aÒÈa8>!—›ØÂ¦"$˜](ö¹`zü‹L:HT|Ââ†íÆÇÿ­l.뉘ÎÔÉëÙðú#—ñ~g ù;]Ú±öI:]Íøÿ ~Ý* endstream endobj 954 0 obj << /Length 824 /Filter /FlateDecode >> stream xÚ•UMoÛ0 ½÷WÛa20©–¬{Çum±6`ÍmëÁµ•Æ#þhÑ?Ê´Ý$ Ö J|’ÉG†G |x”'‘IS–Ë,*·gɸÛÞGh|¿>ãŽî!?®Îί”ŠxÂò$çÑj½ÕªŠ~‹M±ëmÓ4M O>ÄTJE>ÙÇXdÄ6~W»{t>Õý­Ë››˜ŠÔhI”ŽoW_Î.W %Ä?’ È×ÙêL2žJdûnW”دX)RÜÛkL ñïXL•dµ î¡¢&!EÓ€¡s²µý‘ÕìrºÖƒ+ûÚ»—•ý™péìä­þ²ëÆßÍ¥ ×?â^Y¸‹´2,KÓW²0£éüD7_:™8†Ôh Wiè–]ßÊ¢eCÕíKR9Ëa‡gé|dzØvmig{jÇ€6©“B}9Ë•fI¶- uO$„ra˜ØþXûŸ´HµòÆöxlÔ!œ\7o¡$Á(‡¶µKËhOf ‚Æ üçìDçÏD%š£&Ì¢ ðp6ϑߕçíu endstream endobj 959 0 obj << /Length 2044 /Filter /FlateDecode >> stream xÚ­]“Û¶ñÝ¿BoÇ› Q‚A2omì´éK:ñõÉñLytB"/å³þ}w±KŠ”)ŸnšñŒ€‹ýþÄÉMÿä¦J6E–‰J•›æð. §ýÓ†¿ýýd¸ãäßÞýåç<ßÈDTI%7»M.¥Àåõ°Ý|ŠòâþóÃ?ß}x˜0åiz#I„ü†f¡7²©ÌÒ®t©„Ì‘“ò>ÎuýzËhØ›þ>Î }øøy´ÃsSßÃÇco<Öí–C¿iÔ9L_Ê HK‘¨”HÎ,‹ö5âÉTTÓ~g^ha¾}MŸv@Ñ íz8²kÿÁ½ìmsŸ–Ñž¶[»mïº÷{"2ËZ;½€\†I8o1‹ŠQ"S:=3[£Z+ævï'ÉÚ\‘TVB¦Ýþ¥e =b*/–´áÞw«¸À|I•`  "l ˆ®ÒM‹¤Š i £]ÝOú¸`ý³«ƒôž@vǶl×Þy‚¨û§ãÁ Rôû 4‹¨³ôQÜǺH¢ŸïË,ê»ÃÄs%*êÀ2h®Õ$zE°4Y2Éÿq›ÞG¼‰³ª9Ø$–™9›!I†FOrPˆøžÔÑÀÿUY¿ETƒ`„΃ÜômkvõÑ |aÝ0º•”#gÆûøÐmÍš ª‰žŒƒq°‚/MD™Ž0¶Ý™Þv}ü=´2I„>ëæñnœr@õ |îUß‘$k®ÁX†—UB%’'™ì@þÞµîD±°.»*‚Òo]A¹d‘Cœ­1D(¸hˆëιMñbÛ':B—*(mÀî„»c?~³³ væÇ5~c°Uš¬ún¿'yâÍðlšŽÞÄÆm!ÀÂÑozû<Ĩ –ëaî§dð¹RæOÿö†¹ûõƒçó™')ª<©#Ît!2­æZÌäˆ<„;xðEžäbŽ9œëÎL¬c¹Ë×´âz¤æÜ×Gë§Â´hI'cãÍô¬0X”xànƒ`=ßAËt à;”ínµøBžû…;Š»,%ÿ¬bDQW?>öæ‹­ñj쇓3·Fê¯J/O¶tp°m `ÏÆ  齂þ¼ Šoh‡ÞÚëÝ–ÖäŒxâÕð×Ð2À/¶-g½ì€ /ÂoÙ¨ Õrý+´Þ’™f¡Ü1ˆûš&…âJ¸¦Öé+©û¢?|¡(¦:w°n{¥s†åÛñµ]¨W9Ì`ð9W©Û1‚ñº©ê|#+3 Š×0g°,¦tT?=Á€éí—U·Ì!ó !k:Sû± Ö)€TKßõ­)5;£Ì£±šfŸšã€ºÝð…ÇÃÉ®ë æÐõŒ‚ ¶Žzõ’£%óàK¥ 8y~×£QçúÍfÜ'!D•/³ÇÎSÿW@“ç|G«}D€AO[J𰘢· *hµ†e‹Œ²iö] ÁT‡véš°Eü¼00†¨ ¸cžäó1y±;úË,X<%d½y¸‡b[¨«Å¶¬ª7o#ñ‹uŽ07õ1”«Bj‚Eõ‚ ÷ÝŽ~çêVSæÃµm·–“™Šçt+,Íó¸¦ö–m ®Ø‡@­Šo³>« z=ì"–½ÞMA&ø 1"ž&Òœx¤s>QcBæ¹›g;úÚÔ-6ÝaÁx<¿Ô‚‡ù/„ î7ާý Ú _‚þâÇG"6ÁêóNÌbÐ#œ^yR|åÉ¢@¦:Ñ›°xÀ÷®v»ú¨•Z” 4™æ³†ø'¼Ôn¯Td¾2³ÍéÅ Ýò7͈¿™? HqÛ‰UEæ«iŽÜܼ0Z~H;?Ù,c¡ÔB'úmLÉDƒM—œõå•ÃTžþYýÊ›´Ã¶ükËm2EËLJaøÁ¸DÙ rè#‡÷H„›t6Ê{Ö3†¢Ä ë `ÅÏLk/@Ït)ߪܺø×—â¬Ì…NÕÂ7€?Ôý@Ö°—Õ<ÃŽý-W þ¸xUùéØQ9öÔãœUÃ\ôãÔkÁÀ›ð³)¥ëº}2ñÖö¦º~U?PÍõÒ|(A³~s9µòÕQ\bȧæëUR3;ÐÃèiqá*…rF¡ƒœâ¿ÀÛ+"}KŒ´€cvý5ª_ìSk†Áø·ˆuyé5å¥ ±á?9ÿùzœwX"?þÍâîRa¿ endstream endobj 964 0 obj << /Length 2136 /Filter /FlateDecode >> stream xÚµXëÛ¸ÿž¿Âè—ÈAÄŠ"%J×O}$×;ôîŠ](pw@™^+K†$Çñßõ<%ëW,æc4œÎoä›þø&6J–ËlSœ^EnµyÚÐàáÛWÜÓ…@N(ÿ²{õÇ÷I²áË£œov‡)«Ý~ósð×£>w¦Ù†Bˆ€óo¶¡”IðSwì×Þ=>Òà`twiL‹3èj˃=»zÆYP—°G\© ɶ¿î¾õn7ˆ–Äñ: å Jpž±l“f’q!IÖè¦Ø‚G<>H§$Š¥ÀÝQš¶ ÍgS\:º¯ú/fG„î“çLæiD^í¾ûïN(cª°>w¶®Ú—NRÄÀVm§Ë’µSéy›$~2í¹`<áãñÏ“/_:¸´ÝÜîQpNúc°Ýƒ9“›´÷°§êÖvucï–¿½“y½ÎPq&áË0ŽY–xÇú»®ö7ðóXE}:Á¬ýfíŒ\°8Ëï´P³<ˆß®ñKYʧÜî¹QÎ%Kd2ò±³ÀtÉÒnŸip¨ØÎœhtµàÞ½²!žÖÈc&25w²siУ6Š!ìià½'"€B«EÝ@Üð·ß“zc²5ÝãNJã;®L -ë mëå!,„¨j º@€;èÂKÑjåH•21Øû`«ýûjí<ž4ÞËáR£lEöYÄ’˜{{ysÍ‘¼&ŒX nú}¹b< Ã0ZËà»ÅáñôK‡$9¹|á8bŸâUwtÌ¡¾¸àÿÖgçN@piûœAŽ{`̯ÁNŸplˆ¢÷f:^Œ’ WŽ0ä"C¯c‰HΙ؆I*‚Ç[µp‡È½Z%ÁÑ>Køß t¶z¢Õú@¿/¿D\˜fUÑÈEû\H©.‚sS£Û|BÚ»Œ—òàý6à¾N¡ð”ò¼½ÝG¿DIÔ‚z<0Ëä צ6R%L)þBì©Ã ùJ\2u*<šÞ!Q"ÈŽZ”È!á‰ôøáRvàK4;Tô†ØTA´ 2Ûû>ó¿ 2¯R½oìÄú[g— ñ|wÒ…7Úƒ9ø("DÄ¢T.RUc*Ä¥T"øA].ÍÇSÎ"oÀ?¸È׭ׇ#õZ1gé„ ä$ÊYwà³®ÝÌy³Tqð]u0¥¸¢›!z§ÁßvI0ýñëŠa!†ôÞ­é± àùúíX ãï\EàBdÌÀ9g k¡œŒx¯œBå@ödÇ̃[7$«/4¡2\WOèÀQDun|r‰©¼øií?†Šƒ;Å= dÈWôÇa#y@ùÐi4)òóá© š0°~5u<õ3] *-‚޳Ñy<ÁV¶,ú|\‹†Ëßü1Jˆ$™ý'{ä/+˜hhÜZ#çxÂÞ•ð KdŸÆ)ÞâÕ¥P­okÉ`h<ò„ñF÷üqÁG{ðÚƒ×QB7µˆ½ØlcöΓ¿ž­’áÃÖÏæv­›}{´g©vaùXå½åÁš--8?ÀB4ÎÞ<¼ÁAæºcÁÆ8àc†‹Æ{CëyiúY­xI+PµAËûÝû¬ç÷gêÝgYÕ`V $¹Þ<¾ÁA¼TŠÒW ï½@ºB ²úpS²„‚v`z:wè}2›T^^˜YM{!:dÛ¶ö©:º²~µ¾t@c¨ÌN $¶-~‹jÁ¢sø…mÊ‹H§»Æ~Æq”ú£SДÃ9=Yi±¨Ä$l/êp¤™n×P¿Q‹†DñãŸ×[*h å,O'ÆZ|VP ]ÝîáûUwq8–ð(k¬ ²ç¿[:ýÿ OÄé4æÁÌ7©Onpž¬©Ÿ}:Qhƒ…>2—ôâ)öpÛz†ºï={쩯a/ñ…š*>ÀÎoý°Ëãt;)©`“ÓjŒð¦ ÇpxÃÍoØ•M³\”d-‘Œý#RTú„øð†RÌR²÷ù·Þ GÌ)®¶õ¥)|“Õ³_y²óš†@è‹»ëÖeö}»Þ“‘«,š2IMÙ?±%ƒüW¹ìy¥¥æ À\àÚq¼Á¯ö_”Øc厃M.×õm$®@ÃbÁ,ø@DsŠüÉJŒ«®ÁÁÙI‹{G34HŽGJBcÆ}á3»f4F[¤”8|Œ^/2pgØö©4éI³æF3(Ö—’Æ×£©hÔ57Žkú5Ÿ5 Íô¤cÁÀW45þ°AMÏC¯§Kj|  Û!¾`IFãÞØ O´­œ3+Ôz¸  Ÿ`Ÿd ݹ^©¥U¯ŒfÒ¿M• èÓ+rraí{X ެ®fÚ2×£»"ðøO(/ ™úeXpoðk|ÿ 8ë-zàð(«+_H÷ŸÐ[—{úpeêË:„ä±¾”#ʰ9xžGܪ?¥éßFÀ£ui[Ý ¢aIYšÕ‡GÄS(᳡‘œ%ñ•:ª0‰“àµ[¤¸…ó?9¸àÈ£låîݫƱ¾†ÄpdÖ­ñØ`ûþXÞXÇ endstream endobj 969 0 obj << /Length 2588 /Filter /FlateDecode >> stream xÚY[Û6~ϯ0öeeìXE] ìC¶M») $¨'hm86Çf#K^]Æ™ýõ{n”e&3&"ÉÃsùÎ!­üS‹2ZäZ‡eR,6‡7QÛÝ‚¿üøF ß WÎݾùæ‡4]¨(,£R-nï§KÝn¿ßíͱ·ír¥µ”úv¹J’4øÐï=íÝzÍ{kú¡µö’ÀÔKl¹Ý7ËU\Mcq¤òu®ÞTyìZsÜ»Mǽ“ë÷ÜÂp׊Í©2T±èåCm]¥Asß,0á`\Í­‰F€Sbäõ³éú*C ¤ˆ×Ÿ•öÏrÏq4›%hõó2M³“Í]'ß^v5w®r=2>Êö ìlm[Ó˼½ÛíW jS ½kDþQC œ>-Æ:T©ÈP5}wÃö7µ˜ûXž" Žmƒ{?¸-;°ñ@äá€ÿß‘wx"5=q§ûF†·ÖTlBèˆÑ Õ  Œ<‰²Ñ3t ÅŠ±ãìì¡zâìÒN1­,¦Ë©< ³R&i] ÁòG”Fð§æÈÒ0Õ£•·­{Xj…‡Ÿ1÷*Nâ0ŽKPyfÞ™o÷hä´Œÿ%×ÃFçÇÊv=÷P 2 v*k€[2æp­¹«,ÉI¤ƒí÷¨y@SØ80€fÀ¤;¦’S@—" ¨$ôxdEÍ© älþ½›óõèÒ‰æ´v©‰4£¨µfÜ)Ö ¸öÑáè Ã}I›vØ 7EÌÞ´fÓû w¦³[™‹nƒÍ(8ß‹Cawcjáf_•Õòâ–  AùxŠÅÀǦ‚ù6Xà"q;¦Ü DJ“|y‘l«{P©g n—E4<Òõ¦íyÊÀ΋Íë##š lÁ`§ˆ×LÃÂ]7Ø+©uFóˆü›æp@?š1d\„xØ4,TòĘ'·í÷ÿÌË猊›°ÞÅ|œø BBàêtt¿úÜÊIæ…òœ¦Ý ˦‚hΕ@­E]°ïðBM í`() ]@{GÆ5=7€”‡šÙŠˆi„›È3ÒWÂF¾QaTèKÝ‚ª®6Ø7øÔT1’Áx·cW@ s”‰„øÕ ¬“9=¬…#°á 0 ÚÈ_lPðñ<6ã"~ùT]Èà‚¬`›¦ïQOSºð Lÿàd[ŠÐ"¨›ž çTD½1/#“óç8Ø­žê#àÅ*!RdÓÊä®oZ gœ:àÉIo®âÑgK'E˜¦£¿tûæô50Òy¨‹Ñ'ѱXé" K]^ÚØI检ÛÞpBc€)|ÆÚºîXJÓ’ñ¸ž€¡ÍО̓#`±ñ²ã×r\ZN’\üš$wr5جy¹j»ç ¢IZú€y;APÚÎâ)-‡ªÃ¼ÍÍšÄøŠT‘Àwè„yR™!?Ë-Wë¦3ãóLã§àA`9ºÇ®· ³¬>Õ[*7€þÛâý:Χâ&+*?@¿)%”žÒ0ÒZûßÁq¥’L{†IËØøþýúãÏo—…þÃ<ήmê)0ÅÚP²µ33SÆ„ƒóˆÚ–ã`FðÎö¯v Í.ñ—YjÜ<#\@»ÿxQÏ ÷e'XÏ…WFÙ\ÿ˜Mïaum†Y‚zÀÚµ=ù]„YüN¬Ä„I>ŠáÏ_änŒ›HIÙïZÓ>ò0› [Ýp<ò]¥íe ïŒà:…ŠƒµõR ˜€d›b6gvß¾.kŠ8œ5ë¿Ìƒñàs…¤8’H_C¨ÕÓ(TÒØ :UâŸ@›Ä[ê+ªÔÑR–Rp"£©æqô$ÜØiYQ6áx„ÆxH%Oa㎠´†¢ºŽf±bá«îD—‰T]ÞA¢ù Qr½úøó§uÈÔÍíÞÔŸ»óé·îÀC‘<¦IŸãvWW ‰pD⅗…ýùΑÖãD!–q€½ÇP^q«|/p0`VÕ„s‰æ‚¿Rš`³ç2·©¸KBcã|á"èCÒA*b»¢òïH=»ÁÌŸl˜å\rÒ¶_,z|þ^6Å—$ÃÞŠ\ëÙÂ2vÏR(‘¢è˜¨„l4ImÕ#³­ß®yœ£)¨ñ&J|æŸLáƒÛTu@'Õ)Ñbí,M&ßò %+ÒàÄd^ 샷§¯¦Îl< ¸GÚ£d§X1œYDº3-s’ðöÔ Õ–y&™Ÿ T=¯ƒ|Å” į¿sœyèüÛ‹à:ji5 Õº u™¼~9DH¢¿ú@Œc5W§çê(†p‰._‘ñ#ÉáÖ媊[ B4@®-,w©V·ÌÅ‘+‘ðù`Z xäë ¦¨y¼s›¡BàìwÜ$?†¯È ´6²Ÿ”ZÕØM#zi º ™M7Ê;›mÇç I-î\Ìùçð>3-ï‡Úƒ!Œ®+âÔÇ0,(Ù# •Ir‰÷“pˆË( Ú~¨páΚ–÷&AqX@½õU¶ìÉu#¢Ë‘,Ç ‰’þ8pÞákÀšÛè,^t¦Y/¡ñÎÕ+I¯þt½Ö¬S%úSü¬¤ðÈõP<±Â 7§Ö_´g wtß*ü£žìJú}fõ‰Y>E¡=Ø´^Ž×s4²3à‰«eýq£ÖîÈŸ¦vûåEdGËÓ=Nt'u/6 ¯"ÆÄ”YË–)>˼ãÛ™;¢ÂsÌ¡´ó3z8p™aE—1·YMÄ™A— $ÕSБT 3û{2Ô§p劯J¼Wbð­k†îêÙ`ÜM^ÿ$xŒÉÙ÷Õ"?‘‘ç<+™xùÚ‹5ùyÆ BBч‰¶`$…/ܾÛ~3ôÒ•ü^L {x% ÆúTŒº|G£(ItøÉã*Ö;¦ñkå’Ž¥Ê ª˜æÜœsÂÓ S?F@‘±¹t’_()p0NúÐ>ßê”ÜvãÜ=Ï2`ÏÊ»TRðs$Ò.‹œz0;ë…Y[{ý3K’é0ËòE‰?6$/üÒâ™Wgî™_Œ®–$µ¼߂˒ûÂ’½•ÀÏeÍ©üþÝÐõÍÁýJì?å…#ÿª]èësv@€éE^ŒèÎá™Wgî™s\-I‚‰$r%H8Nži´\-ÿìZ﬿<ØÉ_¹"9ÆÿFh endstream endobj 893 0 obj << /Type /ObjStm /N 100 /First 890 /Length 2018 /Filter /FlateDecode >> stream xÚÍZmo¹þ®_A _rÂ%93|)‚.—øz@[âôÐ6ÍEÞøÔÈZAZÕN}ŸY)‰£µ#iå&@¹’ó>Ïp“s6ÎäÌÆs·˜P¼Éø0 æÑHÂóL  +øÄ€çú,ã#Æ;GÆ”<¢Œ÷Äø [úä::°yqÎà¬. ƒ”ñ+™<~Æ þPÒN(ûHQÇœGÅሌÅãK(€¸D1Å“ Žg‚8ËC ç„do(ã'–„cP°&ѨøbBdlè½ ©D "ô€Uú!)ŠÇÊ‚!Š*S6$ ¤¬Ách‰DgØ‚bÈ#†ÈA\<ž&‡A` T.•6+t¥îœ èÎۇ¤ì OÙ'H q Œ TÌ•¨Ye§hXtC †ƒyq§-rFTËY<þ0øh4„/ šPtçlÇã ˆp ±3‹‘ÈJŒUIԌވzÃ;De*`EJÄ@œ‰.B.Ø>úÌ#Æ"ád†"ééPzTµ! @Î&‚O¢‰)ë>bbˆ±à¬"Ù$ÝÙƒùä#ªƒ‚ RGUMà“BÒåÉ$=´@€DªŸèM’Y¥`“ðŠt&ex“*4eoÀSg&XvÓA4ÙÃõŠ:wº‘B¬Ë«™á- )2¬b8‚˜‹Byôäɨzù~Q›ê—ñe=ª~læm=oW®‚|1ª^Ô«f½œÔ«.ÞºG©/¦ã§Íyåð Â’©„×#l±ÄZÄævéóyƒ­^u‘']dw߈ìÍ[í¥Ùg«Ï=÷d×û ˆG)àS]R4wj݉ÁjAF ¶È EÞ"Ê(C³Ç6]tÙâùÅ´Õlñfýöm½ÜI 4.U Õ±ï;™Cuì7Œ)>Q׌ªáu9ºŒhÕðYlÌ|§¦ÿ4]µÍò½*»¾YŒçZÂN.jð öF#È:[mí¿4‘ÉøN©»1›?Xµ)›S>w®<عüÖ¹6@R;¥Í:¯®]Òä¥ÁÉGzÉ'ÐPøøwP«CéKt %ד(ïw“4±ËáÛšžú¦':JQ·êmë më…íwúB½¹/‘9EoËÄfÙÞän|Tzm.j{Ù4—³Ú"§V‹ª^­·Ëñ¤~³¾’òtò‡DÆ©›;žB@¢Ñ{-D6ű? Sšs«Ÿê¶Î/ÏÛñ²­/†”Ë`½Þß*—¾|E65‰÷ê I´¥Ð^ºQà«G¦»[èñóPÿt¡14ºÙ÷£» Žî|*jþ¶„ôB)=vñ¬·K”“Mណ¡ž-vMøAYGU˜‡î¸¹w=¤×ëUËtt‚$¥1’„îJUo’%wóc‚jÙܼ¿¬çŠ©zªÞoµKõöRÒ±QpïåÈéQ ý(àÁQÀéä(ðÑJÔBVßúp!¤6–¤àïnžþ3ž­ÇšÖ´‡Ò,¸k)qû-µCCÎY—éán]?Úp°¥úW,[jã¾­:6¸Ô4¾Ón±GTœ~ôXŽçvùx±lþ=»†å¢™TWãùz<[U/O!²ý­½šý¡{³²@ ÐYEÔzv›+z½Œ‘­|U>;Ï¢ßè—>è—Aì~9Р‰hÌ¥½tä³ÕwÈ_ù @‰ýŒá(ÞŠÀ¸íâÉ—œsÜ&«ÿ›`Ó oÊa¯êξ\¿+”bõ…³Þº¤Í jî­ í£8P£Çî1whÄ›<ï¥ó9 8¥ ?@åýˆŒi°7m»ÊäN¿2'õ¿¢8Уª3•bË=ôÇõªm®¦ÿEù}€›r@_Ö×Í.ÛØèKYŽ;·³ö©gMw'H¾Žs¹»%Ú¥ lw¯8î #—ôõÁG²ÿÕÒ/ endstream endobj 975 0 obj << /Length 2223 /Filter /FlateDecode >> stream xÚ•X[Ûº~ϯطÈi¤uWzEOº'mƒ^}HN®EÛltñ¡¤½ô×w†3´%¯I±Xˆ/3ü曡ÅU⪠¯ò8ʤ¸Ú6oB+5û+j¬?½¬çƒ¢?Ñüyóæú—4½aP†¥¸Úì¦Kmª«ÏÞǃ<ʬü8Ž=!>¬ü$I½ '»½»£ÆNÉa4ªÇ^âÉv%¼ŠÚC·ò£Âëj‹B‘ç^®~ÛüýÍíæt´4Š~ÐÔ|aDž]‰$ˆ“,b#²" DœBÅÊO³ÈÛ¬ÊØûó*Þ§;<Â¥ùàQ"bë7…&äÞm#·=5¹çÖNnu­‡U”{Ï$Ù‚Ù¶qo-æÉc¯*žÛÑ·•+~Ð{9°Ž4ÝØ²Ö3v£¡Þ—P$µâ-·]‹Û R·=¼GqáU µZ ’AwmOÒn‡&Z›â@¤dÞV’y»±ÝZÕn´`©îyÄYUX«@âF쎕:’mm¥ZTh6³_Â`dìå^½ÇvéÝÃ|©G£‡Aµ¤ XR$îu»U/Ö‰ð ìÝÏìdP#ÝQËÜ{ÔýZÖÕø•ßV|ГÕÃ*Mxr8 ‰íáá»YûtG’™7ŠÄweqæ­•¬H¡éŒ[›.½³¶B_1fÊf ¥[Vn§J‹fÙ3޲ì0À»LÐ)‚"仼ÅuÁÅ©€ C¨&yáM·7²¡Îp¶ro¯Zen½`õ¹É(!Àñ²Æ.“§µÝ@ ‹QÅom‡ÝÇ‹¥ûgvótÖÿdÊÄ\£¶Ý¾Õx×IŸà‰½èoÆ6*è–¾w¤ÁA·SýUŒÀ€¤L]0‘ö£®kjµ c§"PP~£ ¬ø ’>FíÕÓ‘uÑ‹—5lqòÁÆiZLC8Í'Ö`ofM€nÎàÄE0ªyÉÚêI6Çš·Ï­/aÞ›Ž°ÝÒ:¿•ðÆ–›íYHPëVõ„vVzê㉩`Xö ŒÑµŠ'þ‚YÝB åý¡ëŠÚâÁ©G£v³m6e۰̈Îh/E‘’F©çûµl÷#ÄèM‹Gxy0ß·wsóöú P=zäó¿i.ö‡ßþÀbñy*}÷“?ï»Û±«ˆë·4ø.X/%Ü¿+f§fòŒÀÐ=öŽÙ)L”F+V³,JS¦?BËÒOÆ«¹k T†»v×™æÃ’OgçcGõ]£‚V6ŠLûÉ§ï –ßµ“×yÔ²+¤ :GN¡ bÚ[ý Í Û=iißvõØp;Dè™÷/ÝVD= ánž¹·!‹ËYnÇålÌJÔùT¯2 ä–}ÍÞû}ìW©PNŽéÆûùøëÄ»”g‰‹µÞÚe©eÒ˜æ;§Ú§·xxôÙ™Ž4|ÕV4»ß}x¸3Ô YOb—wfâr˺Â;Vô£ý@ È=ëâ]áú_—ðçPIÅ)„ñ0®Œ¡d}I`‹Õß’¿ˆä2ŸûÛ!¯6ÿo1‡„¢vr¬, ij;ãá<.Š@ iaÿ’£k^¢WÒÐÕ“:×Ö ?tg9{UŒªÕ4óóDJ˹½­Z__¼^s Ÿ3 À¬:-P(8 ôx'hd¤÷Ý\Äð¶kTœÖÊȱïYÏ<Ï& 9uM¡B‘…cŒÞ½â}là©êÃwøö dd‚¿þ…fÊ¿U˜~Á:¢c&ÛæüB¨€ÔuݳUTÍ©Ëú?YFW€‰ Lóï<XÙŸhÓSfní|I{ÊÃ0?\_WêAÕÝQ™Àø¢þ¨ :³¿¶æ‡¡©/Ï—¤"ˆ!L~ì€NûÅ _¼Sâ4 D–Þ)%½SÖè$„sõ¯”Û¾÷ )ÛRÏV2¹­dz’H*À¬Ž_kWãÐýÈŽñ®PÃ Š´Bq¨*Mdnk+®4ën8‹»{<º‡¾ä]m–OŠ¡…ƒð6çwD‘¢åøé•!K­ÂVÝaèýmGƒÏhÖtØ‘¶r*R÷Ì‚å”pJ]ÂJÙ©¶‰4ç(ã™Dhhg¸ÈþÅ$”ÊRz¾_¨JÎ,Ð0÷s¸ï‘ƨ”Æî©0µQ«]ËSôsÊÉ3ŒR>5Ö\ ÃSrøBªbLÝ!p9ÆUÇÚEbO™‹ HíjÍi9!Ò §ôð«ÿäΰ€Ë°\DNWºò|ß:r¢×Rl«kúÕà‘†€3¸K-! Ÿ¸bt)ÍÎèI |ÏûD\”<óR€€·Ý«ßñƒ\|¾§¡¡»)Þ5÷jÕî‡ÃmtIðµOóÕ·¸¨àþ–¯M~žO6-”r¸@¾˜Aþ;Ÿ°Yÿóöÿ(M­ï£Ì¦©… NràŸ—÷«Îœ²°U!‚,9]´ 7Øakýž‡”$:³ öj¬Rl\ز± bŠMhLMmÑ)â õæ¤jÔyÐPSù®Œƒ<3?6ç9ö*†g¥ûc-'¦YC·3¨¶ªôCˆ%ÙÇEL–9dž‹›hºJM1FçLó Ê£Ù1Ñt‘†^;6Ê@Qé¸þ_Aâ\ÙöâWpw±n‡‰ÂeÄYÕºÛk¨$¹·XúQÄât³—åè ‰¨?}ŽðæR‰“Øévf‘¥bëoÖùÓÒ2%h¤3Ä&WMÐô;U­{ÐÏYüc6(g>ßk[Œ÷$$J¶jšE¶¢£M*e\+'µ(ðƒ).Ü“*¹È’~™Y1Çù³Ó'‡Zúb<Ù“†TBò莾’>SŠÅíEè}=¾¥1.¹ÃØfu^Ô­xŽK»núÃÅôÄÔÒ¶ÈKŽ4|­^¨7Ò|£}Ýãíµ®¬XaшUõp‘ +(í‡SC"ýúôÖ*½Æ!„·Ã/"pF¦ÁGôE‰íVC*\ø?Óõ] endstream endobj 980 0 obj << /Length 2132 /Filter /FlateDecode >> stream xÚµYÝÛ6Ï_aô%2±¢D}õ¸Ez‡¢Aïö) Y¢mueÉGJëÛûë;á¾¼rv“n±¦È!9Ÿ¿Îò•|•z«8X*’U~|ã™Yµ_Ñ`óï7ÜÒ¹@èN(ÿu÷æÇŸÃpÅ=–z)_Ýí¦GÝ«OÎÍ!;µR­Ý ÎZ»B„ÎÇöÐϽ¿½¥ÁNfm§¤Æ/ádõš;Ûfíú‰ÓT°æ{<Žˆ¯?ßýòæýÝÀZèû/”)ŸG+.X "ß %‚ñ@œ3î­Ý0òÍÚåN×–À pp)=¨‡§ŒûVø÷Z»Šˆ]? œmWV…w'üNSÓ·DÚ¢T²xQêœT³©Ê¢¬÷Ds¿öcG>ÚÃÊWìq»FÑàdt%L‡ÛL—9 7–¾«ó¶ljM\”5Šcø‰}0¬¬îÀEW0(å³á²‰7æ ΄ åï¤B9ÂÐÑ]Žlh1Ó´­j2+NÖͳ:ÛÓ§Ìì¼_‡‘“í¥¶6[4…ó‡Ì[¢ƒ]å©«2”g&'9~÷B¯*u ã©J•çñ«÷5?NBV a–íZV'×pÍ=gÁ;É¢©'øÂgœ `ŰpÕ‰é6S-2ƒ‡/¹OÌY÷[ðÚ¥ƒ=ñ´'ÚÜ–­¼•™Ê_=8f"NnYkôä îÏUÕi‰1Û/ÜÄl8f«š³–n§ª¥+# ÞÓ¾?f¹¦“{ÏcàˆwscìTåVeꑈr°‰lÉéF4î4ú‰¹‚vª à1õ£þæîÿ_p³»++¹¨ ŸQÐïyGm»^M^ÂÒ`®©–ø†À…Ø’º%¨*5M"dáoYçUWÈŸ-™°Î ™£Žªä;@pq?tÞÊA®™™JààÙAΠÜÔyDGm:€y“hÐ{âûÎÇ:—D´¡d5†9x*ÄDkB¾ ùsÙõíÌ=rÐ÷f‰[?b¡'z)§3,ìè×èkˆ÷¬êìgs¹žwºmŽåÿ³-™uåúB°ØKf8ö`D•=Õ¥!gÑÈÔ¨r÷^>.Â|ê1?|ÛØZâ, C“Ý~ÇS=UMžUîé~¯„ü|ÂÊ›“ܸŒâfBB¦ƒcýZR ÍŠv™‘Œ ÂÆ`=# M†M" ÀØeF!~3O¤¯¢%O~‰B®éC-éC¤ d®È3Kž‚ÓOµƒ³;ÕqŽ)©VhtÙ6¨"ÀL‰ ‹$[ô×ÇEð |€Ä!ö²ýx2õbØ—/Foß^-?í~:w‹ÞpZ„·R}áQ£,m-æGKƒUÓ>wÈŠHÀНãÖÝ©ÈZyaÆq' ƒ7Àˆ-#û’Ý](X ;ž †îù`øL‡üÑæÑØá Á }¼¨¶Ì¡RRÓèí›N¯ã)gA*¦Â-09gâ‘Ç­&žµx>$܉ÒÇ ‹I#d¾’3ÙÙM˜€òü5Ìœ€^±Ø "5{ÞX¦>Cëh Óê·“+·Ê”½8¦Ê†V‘5“š¿¥Ž.bäwBöñyÁ7òHo“ö.PyCǘj>4Õüß b³ýã{ Ûý ëù¤À2[kó’|m8´ÇÊ-šü»ëÙÿ¼ …kyå}Ÿ~ÃÛØïC¢ÎmJH2{‹L¢¯˜F‡G[>I-ywœTXY;hÔå"‚ze&·ËËijÝ!èn{$ët8Á/Kr%Ä“ÙÍÕZ ¦/ñ·tEWˆ›³ké„£éíží„Á`Ú®1éÇLæ¶Q…G5ÑÚ.m±^ÀN˜^TlÔ²ðø@½$o$˜b)ëBQ÷aËf±¤òSPÔüq WÝ@Ó|7]K™¥²>9MONÏ럜ØzûßÊþÁ˜,öÃYÀÂQ%©ûÚ”S‡@îpX]<¹Œ!irèùÓ– ©v[ßgvߤËÓ4]_MöŽmóC§¥r ‰¨XKKro€ôñÚ,ò^¬Ù<Ĥ9j·ü0šé£@ йõñQãí«f hÙb“€vÂ…¼©[ÕT4“›÷âÚ.ÂïÏOZ;S—@Šë¯¦Á“k&ËÏë*Æ¡—&@˜ÄŽíyÒì¤kjéL¹ŽtOŠ8‹/êÓXE/h\:¶Õ {?KÕàŒ¿p2yiµ‘çñ¹9.ŸÚ_«Þa]&®uVáEë{ñW‹Èùáiüµ¶æˆ«gúRRw•ѹ—š@ÁÉÌRJˆXÒ¸ØG‰%1æÁ¹4ýéùlDl¿þR—Çà!I<‹ã‰ Ç¦Ï ‚Ašú—ÿ†5D=†|Âû£…I+ ‘¹&’öPZàÇ‘šT…$ô®Ö€…-‹3-æŸÑ|ÿ\ìű$œ‘nFD/íµ[à€ÔJ½8³LfëXÂgaxÑ/+¤ÎUišhZÖÿÇéOæ¥òº endstream endobj 985 0 obj << /Length 3078 /Filter /FlateDecode >> stream xÚµZ[oÜÆ~÷¯X¸æ%Å™á5}r;u‘4¤ ’¥¸Üa.¹àEk·@{Ïm¸$EYnÓ€v8<3sîç›C«ÿÔ&õ7±1^$›üøÂ§Ùö°áÁõ7/”й@èN(ÿ|ûâê]n”ï¥~ª6·ûéV·»Í/ΛûìÔíÖ5Æ8J}µuƒ t¾ïïíÜÛ›심ڢçÀÉê­rv<î›­«§©àöU;‘Þþvû×ooGÖB­¿P¤|$DmTà™ Ò"D”ž2 ¡”§ÔÖ #í¼¯·F9 Q–÷eSƒqèœËþžGß·g ÜÈèRI E•zJ‹Ž`‘{dÞÕ:t~õC)¢ €C?ÞDQèù~ôŒ˜–Ú³½¢)+ËM‰¡û¾?}uuÕ´‡c³+<ø]ò¢ƒØ3é—òb©ó2SËrSâ4¡X'u³Õ±sæ‡n8Ø+ھ㩶8µ¢Å!/ïªÂNwEÖæ[˜¿Ç™|kǯª Ù !¬>´ÙÑEYA¡ð¬Œ§BæåXÖ¤ÕNYóïü˜úÄOUV†ìPtüˆF,ë¼vãºk+ŽvþÉ?]ALJ9”hÁ7*àßfÏ3x‡I¼ØŸÄR»ò—[n:ºœ‰ÊÄλmb€]Œe_R•RÎÐm÷G‡`•²ãÙæW_xÁO¯Ù±GæÃ± [õî]Ö;VŽVÂäT9ç-yõ`@+§ ÿz(Û¦¶;ð Ì9è…4¾/­à˜/ií'ïˆ8’æH 8*Hû‰sÍërä5¦„Uù€ëÑ›q=,¿d*|¼«DB¤ýÐñRtY| þ‰‚ús 9IB2}¤Ôi”:û¶92ÅD2|,{þÍ3̼‘²Âñl±ƒxÞ e-s]wÉ­²}ñ° ! T„þÎÎ}ì1¥Ûå6’–Žo(¡‰H’—kÙ=ôb[ŠRBÅö~´WH*yn«ÄRPê ¿ tìÅa2ËMht*ç5”GCá#xgP:v;·÷ëT¬YdU';^t ÅÇ9 ¤]Òm¼®+„^¢Ã/=ÿ< Óõê®)ä“ÿPiĦiõVönhÛf¨9=Óp5¢Iä™X͸+82ZL¼ÆìÒ´Ç ë>LR¾ñµó—Ûï¾åTwpðmv‹y¥øÙc’ë¢*»c'^Ê@c¹µ!“†âðnlBxm ·‚9Ôp¬ƒqÂÕ `W˜à ƒ§‰Ð˜"T'‰”P$ÈúŒGt,î2ú Ξ²®³ÇpXþ ”cŽ8®A7+¼ú/Ôp»°2“ÏF”1=@KŠ ’dø)è¼æ rHCT<î–s;t……{°MÞ0_my7pT6L}âñ×™P~‘7—/µ.€´ØˆæFòª/<æKPê£3z ÔÒ“jĤƹ!,h‚’ÑçžJ nÎ[I0CÐú€ ž/¹²"`ÀŒÁà5Rýøæv›à _€^i G¤D’vGL& -fÆp†Câs[öŒŠ`Ö‚}OM!Š.•Q-ÜZïŠV”Êù& ʼnz'µ;!_<ËM§€ç|>{]QÚõå¯:Þ®¸’ìËîÓØûWU”]~us.²‡G0Gž§à„ M`és _ˆÝ õ ÈYl9æEŒå4r„šÄÎpâGÅç·Ç,ï^ñ‹iMF>S‚¾ãÒʱyr‚¬“Ø"k„Ͼ©óÓ=g÷›ˆkˆD‹¼LÂhÍp~Pc?«Š÷þ@ë?ñû»«xãÁÞC[Ùš#yB¨”¦—¯ˆG^IÀßpGŒ™ÿ_Þ4GÀæ»ß. €^R»v‰T(Tjw~pGo¸z?YÄž!Ï›Ð]Ì솉§ƒ9*øÎuk‘l|/6c¾6 Öµ ó¼gm ‡ú9æhœð®k¹£á#°x€ãý^8Hg®™¦ ‹‘N…rÝïVï΀šâxDM”Ÿá¨º©Ý¿?²âhDcuY­í©bòA!z…N žç2þ¿D!{¹ä@>Ôi:wâ¥Ãp•FŸÕkNÛñmÉ ™ú÷;S±÷qÍI°„Ìù]¤zÂE&ªa1#Á±—ÏÔyqžWö$(:kü~ù~¸yF¸…l§çeû¦¨%eM uàìÊîTe“âžÙÙIû.oËSÏÄèñ`çJ =ªe¢°ÿ‹6¾~·–8âÀ Ò1¶N»=y…›w«éàzäëÎñÚ‹GaúXš!&á\ô†ç‘izæ4Á“¢1œ&£Æ¨l|BFí$nc¢_K.Æ(R¬U_tà¸ô ±A¤5‡ÇVEË8L<Ë=A(é0@\H¦“Ù†'‡Ž®eE8nÒ9Fý=¿q#¬Ùû 0 Ð~ÿ`5NóI¡s¸8pÀIš13=“tfµºGoµXwDÉø²íĵ‹ª¸4 ¨&ï×ò­ ð~¦–zq>–aµ©X›ƒ$ˆ ³šEŒüØÙ°b‡x"X¢Ø3Qð_±ò(“¼±ÄƒÚ*Fb¾MØÔød¨ÎÏVýK$‘Eaó–Ò- 2þ±ÕBÏÜgÁ_qí-ÝòÉ»ÿ„5L‹-c=±%<ˆ[t»Ø°ác}q…^°èÙ‰o²ÚEuÒã2lÎltó¨È½bÄpnâ+ÃÞJô9\4×Y h6Ó pêãá·¬÷E[6­Ëל$šÝ. ÌßwÊ=7u!«d—ºée»y%§oE‡/£K¾nè(vFƒ§ˆÁ$N?“ü^.µ‘½ Ã`Ô¨TAÝ…. ]»·Ør²€É˜œªÄ’Í– ݱ©Ë¾¡øxAh‹ vhî¤+Ò®6íé@O‹Áj>¢Ñk°°´E^Ô-.Øü4ôö¢ÊÂhwÃKßÚÝ>%›éW êëpc`¹ëEgð¡,8Jäfñ” õ¾õŠ VU€ àèKT §* nÖ¶ ½DÍ>nIÞΤ_9tô¿pªçIó8æß$óóË endstream endobj 990 0 obj << /Length 1863 /Filter /FlateDecode >> stream xÚíXYoÛF~÷¯Ð#•˜,—\^}k÷B‹–ò”øaE­$¶ã?`›†}-;¨Â4\8âÒ®®Y7ù#mÕ]Yf@Y_ݵf–“"2ÃosŸµäU4§ІôÿÓ ¤Ù™¾Ý×îOÙô°9Puù~Æ‹/<õU¿£;Ð&)ÈœbûÓ샸& õ<–¬È‹·42Ã)ñêÞ¿%×v/Ã@p¸àwºiirÒù™¶Ñmꪠ ¹©KnêδJ+”r%  ´T©]®yÒ³d7Î&½q¯—æ¤F…ÌÔFÏá”ïƒÔM—·œP=Í7M*Úë£EŸfPNšl®WWwZç\ã 9¿õÁÖëO¶´€Á¥ —ÍEª¦‚Dã²§qʧ Eª"ÖP?޾ZC…x½œ‹›çÇVs¢ÀñžŸXªk«BµYªr xÜÇ2¢™Ÿ‰d÷']ÒJ^©½)¹8Q´Û?— rOÌçÄw4hŒÐT\?ThMoËБ¡œ9@†Šu <Ïn2cO {ãÜ^ÓÞg3ŒŒ£ É!¥ø²¥Yßå­®Kx9<-––¡„b`bälŠ¿&Eð™(Òó%˜ éUù›ý@¶ºµ‹j¯—TÄ_1ž »–äÔðŒIz¥1­à,£ºS‘r¼ÄƒÊyV¹ÊDŒæ…÷†"¶~ªÆÔø™˜J%]¨m¦pÀ‘û,ÏqäY˜Öqšm#4|È„- »3Ñ›äs(5º¦3Ê‘eìJN>aÓª¿&ÌÕÒF€Œðé„Ì`Ù/gPŽsFioH† q/ÀW/Ü Ð«Ï5(r>ý<¾b„Í’žØš É‚‘{0Ë]@FG…0Î9Ñ ¬À:#N<ª­Bô^ ¦±‰SJ­HØ¿÷ RBµBp<ስY|,Õf ]Z¸¬…Èeƒõc­Šf¨?—Šî1±? ¦ObâÀIDð?"^BÄ3\84(,–sXÿû°ØK¨`zIdÕ°Ø#í   M“¬aòCF„Œ«©øUÄ¢@7ìràÐf6aS:[F#ãuñ€¢p¬tÚ‘Bp:‡ÈØxûó 1å—Ǧ­«!Õ«ßl_ß䄲âèeÅYñ;¢,˜0Ê‚Ñ VÌPó"G—h OÿŠ1CcÚÑJ`\‰&PKºÃT×7 §yÊÛë¯b­hl:>ÇZšèIXÆÐ«þ{Èe¤x äz=/ùbÁ‚üÚV5§¯BSw¢Ê¬)^][m­Ê&­³sÛÛ6­ê=ç Óâ ‹“ÿzB%a kšÄʦïq .À¦ñfÌ6“_S°rpþîÍe¸ÎQªëG\6ÄatÉoý%÷åÓÛoƒ…–b²>yüvI»öLà¡Îqÿ‡-ÎÆþã×wûÎÃ57üòš~TØ,iA¸1–¨7ÚÛEPéD€5˜"x’0ú³áº„¥øË<½Ø‰ÄóYFüìÁ¿€ï-÷€^¸Þ§S@î[Ö#ÑÃ웦+¨­Äô¤ZZ~¤ž&CÉè,GŽŒÃ‹Š‘r: ù!øjE‘ÇB½É»¦£ÎÇЙ„n<`ĨF³ÆÕ¬ì5¦Ó+á”vÈ?'…Ù5¼ÔC0š¡û €Æ0:(HÀ4Y´†ï ¢ð&6ø“š,Ï3î1k³«‹_X› “l=fH¼ˆ«)çÎ?ôC›þgðØß™ endstream endobj 994 0 obj << /Length 3436 /Filter /FlateDecode >> stream xÚíZKsã6¾Ï¯píI®µ¸Ä“dRµ[“ÝI&[•™)Û©=$9pdÈbE"½$eÏüûí)PâXžœöÒ èF÷×R)üÔE‘^dÆ$…Í/V»W)Õ¶÷\¸þá•’~K踌z~wûêoß;w¡Ò¤H uq»Ž‡º½»øeñÏMùЇöriŒY(ýÍåÒZ·xÿx©óEh«ðÄMÍŸvñæR-nn¸¼e¿oCÇ=ÖŒÒo·ßHC¹«¶Ÿ/—Êú<]x{ùÛí¿_½¹Wí´~¡xØóŒ|*µÐj/|ne, ùc b¥©¬¬(¿¦.mË6ÀSqӪ줭ߔ=×}F%4{~yªºth¸æ¡ì:ù¸ÙíÊúŽ›·U¸ºlï÷»Pã(½ôÄoyéÓõeÛWõ=Wß n@$‹dS—ä™0•>±]’élèá±ÇÅÒjŸ8ë.–Ê$ÊqÓC €õ¬B×]ñöt¡çí’}3‹ÇKçañUùqæ¤T–ä*¦«êuh«¦]ÞõmØ41lØwa½ßryÜìǃՓIÀ2µU‹ï/s0óv³Ü=lÃÕœø`Èdb±^—ËDz®¶Ûrvs\âÓQð'èzÎô"Ô¸– ЇUdWí¸î©ê7;ç—mSÞ±¹ÀKUsÏ’DùRKàòµpÇ/älø„íéP.ð-µ¸Ÿ[½†…äfT¸Xú³«÷T<@ßYü¸æ)Ç0Ãk¥Ù1Ô(ËájËíšdIn.R‰¯‘àl©šÊÔ[;x}«Ðöe%V8ÀÓ8’K? ³NŸ„‚ë/†¼€ 4³rµjZ4@o€§!(øPAO·Õ¥ÇFui¯!à³nn Œµ\|D…¶«šº“FãZ^¥ãÍòD..—ø‹]mIlîZó“‚$ÎÜ}îú°ÝéÌWßpsÕqk¹ío¢—²;tIdË쉊%r±h4Ö,Þ6¸>"eÈgªŽ{‚Ç­zŒ€XM¶Ò´¿wüzØìR’?zÚT+œaïïo¸ù`PY¶²Drô²p¼[µ•øÕw…ŽNä‘`eëf»mpŽ'†)¨z(Ûò¾-6,¦Fÿæ–ûP‡¶ÜJ·¶ªWÅexÏm¸/Û»-;:ʼæçû›+.TÒ ¡=ïVu¡lW¨¨M;‘ÝÇK—˜Söìã,D¿Ž!ÊäLnàMŽœÅ=ë,€å¶ðƒí‡OaµÄ±¿Àl:â.#«³6ðøXÕ0‡ö4c$qV„s‡ëºé¹Œá²–%ËÖÎv%6™g°Š#£$“õý\Wð4¡VÆV¢‹¤í©¬ï¿Ë¦ûÅ^>ô<«¶©ÇÐM ç°F{›dÙ­>¼¾};§9-ÖŠ!¹Òzªnf6ªZ€@ÞIï†ÅChœ c *Ÿë©ªžßVE”|Êš¥¦h‡åv\*zÇÆj©aPt1(ÂËgIW‘¤ªx9§¸^ª$OÔÜXØQ¡ž*O¬# ¤–87fžèçø }"{ðúžç «ÄÂSF©CØÇæ§40¬qrÆÑIžŽËFžÇ‡*€l¤”“-ŸêÇMoÉ4ðk³øî3®±s]"ߨ"}Öþ$ŒÂX°4x/–ãY!ñ¬ k†ï«¡z”ìÈL‘˜<ûªÝŸµ¢,QúÜÎ{?ÂÝø-pÿU‹Ñp1“ad'È}²4ÂEÑóvÅCN´1G˜ˆ¨[0ï,œDÊÂ1#Ja#X¬Ëb,XX&Œ\Ý -m€6É ¡ ;HÈŽÍîóM€Í¹ÙBô¦~Û v»þ_t‚Ä<ìLh;‡¹p<n8ºb×-Ûåc¤š“O•«HËÎy¦¥ Om+ŽÀPj_ïëU϶¯abBØ¡FÌ›˜?Œ°jCÉÁ?&¹¡%TÐÅ*p ÚèŒòk@ uá&›óäì\ð¼¾âgOì[¸Ôf*ImC…—sš2àÕ¨Y:)Ò$t°ÁÒ†` ¿þÊ¿‘Ñ N: G8 ²Ú~¬B3γc¸%Ê.à•ñ ÂV¡4ðe@JQš'Ÿ(m 'ØCÒoÎ~lâ2ÿr¿\΃ØÕˆÆÙ)˜Wö!:ÎŽí³ø|~ì÷äÓs‹Ìbæ1+,@¯?BöBT†Ê:åV[ ›Xÿ©ê;æÎ7耢‚x†µ‡Ì%¼œ¥¹I¬þŠ,Iû¤Ò|ž ˜äL®ŠÆæ1ˆÖ;«U«“ôˆÏ³±k=±œƒ¬ # ýÅ6nî ó_¤:‡í:u÷‰vŽ9ý-°ïïèÐæ™ l9‘– “7~È]@ÕÈã?+låü¼çlD¶ØˆÙ FB%Ÿþaªª «¾AÎÏ —xÐð%sñ%…€ed~0ä°3A® ¸œO2™Ë†sÂ|ðW„mÿ"FŸÇAE gžhüaU±b\.ËÊxY¹Dix£´;ÆNl‚5xkt†Ùø¨#4¢‰šãc¼¤n8ÂIVN¨Îw0_9‰½}hwÏÆ_•šä$Ñ4f~aVŽ¿˜hŠÿP_hæU°C|Q¬1øâÇÌí8›ošj"ŠÈÖžDdª<Ú6¨¡m³†‚/¾Ÿ ¾*Ë{8Fî8}}’j=‰¾4 §a^оXõ iO¢oæ13Aéè3»HÊ¢ïMå°cŽc‹é ž1›MaÓn#DáË!O‰iâsWÁé)Š1†ÜçB.&+¦Yû÷õŠ2fH¾uºٓ­hÒ'ýðªäâ”ta '¥Ä’áI†OA©æ{—eÀšn`!R­ñ¨ÈNz%Ɇ°g˜»¢Šø(Œº~6Qío|Aõ$OhS‹ ÇC+¿pSr¥iiÅè ]Ïï‘ssOÔ6\ò…+«XË ñË;Gw ´Øïª:tÜs8Õ,eáà¹c]‚ÈCÞ{¼âÄ`Úvb®Ã•–x+õHÛ•=·Áífóß>ÑJŸÞˆ¼s*¶qÊ‚Â|rÛÇ…LR³†SS&VmBW×lÄo¹Ì”7’¶4¬TIþk„ÑåŠ #ÔFWÝú£!è½y@=Òà­ë[¹€§üém)¨ÿ “-øïxë:ËäoŸq ïcÆ´{"³ÅŠ™9äÛІq…3R .ÿžØ=†ÄÙ¿Qi áSÐAû†/þ j÷%?ÅÿÞþSÜ@ endstream endobj 999 0 obj << /Length 2828 /Filter /FlateDecode >> stream xÚ­Yݓܶ ÷_±u¢±dI¤¾òЙƹÖé4c7wÓLÇñWâîÒÑJkQòùš¾j?NþxðÜÜ!‚@àn²Šá/YUñª"ªd¹ªObÇv+"~ýÇ“„åB Ï$¼{òüïY¶J⨊«du·=Ÿê®Y½ ^ìÕqÔÃ:BIúÃ:”2 ^}X§e ‡FßÓP¿Å§ nÖIp{KôV«q´%‰mϳŒ{Mã·< ¦}X‡‰ÌË8ȳõÛ»>¹¹›W¥éWn%ï/?ß_’‰(ÉÅ*/e”I›üþ÷8‹×ðy õôöØN6—O‰õôùd‡çm_«öùÆtÏý(ˆ&¸ÖURDI ê˜:£ϧ ß}a"9œÒÿãÔ×Þ ó,’ (DQ‘¦û½©Ñ{0f’÷¦m‘ÊÐÌQªm{¹'‘¤û‰¥zb6=éËÓKk¥Q–`]§ë—ð#¹lÞÙÒ"‹,*cá¿!Y`G5Œ¤‹¿&þ½÷ó‚i¼îˆšã:L‹ ïÓ휙ÃTŠH$òÂÐu8¨®¡eµ¦ãÐRÃn:Àþa§£ÈKÂâÊx?CÔ¦U|2 ¾€9‹`¯º¦w·.$>¬³Œ9ñkÏkØœ²ÄU°É(Ko mmhÃz°¦ïì’éJؠ̼|¿çíÅùåva,pÉ9ú£:[Í‚?Ý)Dëvs_ËT†™µbÙÍlâ˜xÒ‰°={?²ðÆEÒßJÊ3K).–QœVRœuIj1 çHΧ:‚••yðãimôVMí[YÂ!lÎË@Á¢¤KX@s¥|à8®ŽÂÓ[—ÙSaíÚqŒ÷iNÅ¥SÝy‘PÁX#ä~5’O4fÐõØ‹²t9WDý –Ýí]ÂÜN-ñ&ëå68ð@4ïöÃAsQS?`ü@&Á@b~o³xÀÜqÀVrXX¢†K§&³WQ/ÙÁE¤Öj6åYÜŸì‹T§)X*WzðIõ‘ºã„ŽªÚ´z)Õ¦YåBœçÚÛ—¯~¹ùlObÅÕYtäEÜ­KÀH¤ÕjV*Ý”t³2*RqÖgéMÄâtº <Èá£âR¼ú´/’pÝÂ2êÞCçËcŒÄ¼ŠDøÚE"Œ›0žÑtÎ>.'ˆÎ(«ÄÒqZ2–L"q2òXv!£”§—a±7X‰*¼qvU›·_xEÜíµÕ4Ú»ºìÈËí¹Á-=}"íªµ=QwôxÂ9áËvèDa<-Dq$ç½=]Ú~Ÿ‹2äŠp1 açå\ðÿúÅyn iáÊ^½sUíªîÂÜ¡D™¤W•þË:^} ò¤’ŸÝt‰\z iSD’EŽUWH*\„ÓVQʧ °œ§Ðf„Øg„{ÝÿTë7 å0ƒ(fT ¶(úð‚âKK´SÊÙµ{Ű`&ÓŽ¡é¸·QµiÍhu7'} åô96fývv¡ã€tÄ­Ö×mb°X$+ g¤‚Žåó­—ÏÄÚ»ëI÷x%-èÍKXúÛgÄ;ª&Jæ×Ë”Ueù•ËôÒ_Xæõ¤œJC$æ]œ$s H ”×({Óö#ýqOƒP ‡Xäæð¿¿¹}ûrç ©ˆ[;Ò‹²ð<z«¡…qX@€Kk8P÷~°ƒ¦˜9° Ì[I|šÒjãá¾c&e& fh„/ƒ¡”Snã/ÔN™Žõú¢í&ð5ÐwSW•Öã&!¹Í¡ª¸Ô;± ¼ €Ò†˜pÞ1“ÁÑÔÕ¢©§aàŽŒFvC?ÏQt¡šj[ÛS÷‘$kºóSYÀ‘µŸ–ÀQï†qÔÁÖ!3é?(ºÁ˜Þ²ŸÆÄ®…Maþ§|ùÍJZ&ŒÐž²³…À`M©¶Ñ 6Ã.w+8Ø@èæ?7¿®aMÿ¥WXIøk¬ÍÒÙ˜~Áºú×#ñÝ&áylUM²:žZòîë=µŠ¹Ç|y3çÏàᳫ´(R³”n ƒ àϽ·EDTí§£oò,h`XÈì›h®”äRscl q„•ï‘n)¡ ñ-tKÀËÞ€³îqoì‚Ö*Ý·±µ,⨌óK­êxzuêH.µgòßfÏYRFUq©œ2öu8tq®^òå%†9Wp†2[zúþ“˜ÂA–PMsuñ¼íýèœÇðêÑ™»±òìÆ¹ÑY…$0÷Ã"þ-£ò2ãa¦³z|O·¼ÄÿÐú6­q˜¾ïL;ß(_¥ïÇS4ºÕ£~4Éøõ3úF‡>íÆö!´êƒ¦±³e<º}†Ë,¿ÜUWl2·ˆ8=¥+(á–XŠ¥Ê]„ çÐO3ˆù'àÃÉûƒ…Pß\_ç«8 Ï %æ«mn¹åM}ö©jÃ'ùQm¸34rs| PÔ¹ã­2GˆþÓvªeÄÿ¨v‘4˜ÃínèÛ‹b*O˜eÒÆ×=O†uz…Zw ïWLÿÃrßãÀiÐ[D¼fÃ]ÊŸeT!·@xªzœÜ&Ü é>åø+ôËÅV™#Öµ3ªC†í<MÍÌi·Óv¾§åûB$}#éº.$Æžž†æÕƒªyrjëÂÆ Ÿs»ŸóÝ/ï&ËòÊ«ß@ð/ s‰¸È}~Àdªó@6§›€kÄ H KŸ3ÏáH 8ò¬5¨]4—Á f3y€™ˆy9|‹zÅÝŸ~Å9å»…M¹ í> stream xÚÅWÛnÛF}÷WÈ éš,—\R”ßRÃ)P¤H©(Š44¹æEØ¥éï;ËåE¢h'/…a˜ÔŽvΙ9s1YxðC+o± wEãEZÞxí§b·Ð_~¿!h瀡3°ümsóë‡0\Ï]y+²Øl‡Wm²ÅWë!Oö ¶Eü{Û¡4´>½Ø~l1ñÂÙw}ToÕ_j=ÚÄZ¯õó–%ÍA0©-¶5ÞÒäLŸ¯ñ )yq²B£Ø³¢Èþ¶ùãæqÓ¡}ÿô”å+üœ4\D1uI@5Éwï4’ÇŒ7Z‚ “ý^Ô{Á“†Ýá'UÖѨ´±lÑè{ýwí|þøò Ü£¢¸$Ô>ÿtŽhªf4„é¯\õäiÛ_ÐdÄ$t—þÒX­' nLâ…ãGnàùcrï5ØÊdìéð¯G“ÚÛI«¸½ïí0îÉ­¾ï;/ åbâ/-–×v¢hi­÷ÅAž›å œÄ;--Äß„è@šeš+ñ¨B&‡A5\9f¦É¹³E›œMEA[Sü>¼?®1‰_§ÓäA Wô‡ôM_XÖ-·Œ¹šŽO|—ød:w1£ÌÆ —©èƒ¢¤Ö®FZIªÂøŒR­Ï¾ œiÏ DÏ«¶èÃt©Ø£X_ÛvïOÈHe勞v¥¹`’3xÛñº’X[¯˜yÖÝb€¸£†‹ ÔJk}ˆ6˜Å¦c›ùÈú`Çæò wÉÖ`Íù./à·½=ü²Ñq“ëÃçV¾'ÙˆZ?Ê1Ÿ²>Hv½•0ó™ºñ~„‹˜4¤ÚâÁ£ “1ð/Ì?ÄÊ °ŒxJ…¨O‘F!McH™”‰85“ÖB°´1ˆÛ ôKÆá¢(= gëê}–Ma6˜°ù¨[Ëè#„œ fz¥CY¹   ײ¼LE`"¥”*zUÍÀ«+Ô“"26ÌQR¼d3n*w.#ë‹þÖ‰[°.1]¦˜.2Õ‹¬+½Gþ¬ËÖÛYMMOâ-ÕóÏŒŽu©|©\A[‚§¦KÖ¸ýNÆÔHë;¦V}Àæé‹‚h:ýPyÒ“G¿À$/÷j|Œ×Ìì°%VIÉÎhÔi.PF8-䜨FmqÝ`ú»£Ú­C·pŠ­]E%:Þ !Ž*%<7ˇ™^jx]olÕERÁáûæl(y®Ø-ú0=ÅLØ$UýƒacßB°E™¤(RXñôÈ}7òGí”*Ò×gQïDRêÕB-vLÊ}ÑõÿГõA¤ÌÄa„ÝŒrÁ’LI ÀøŸJf‹£W·¸ÑnSTÕúUä/5M[˜ (?7€úÌáv3Wz~»Ëð7°Ž®ã¯¨Kãðÿ]> stream xÚµXMsÛ6½ûWhšC¨Ô„ ñS¾µn’™N;ÉÄêäÐô‘Ę$”¥_€XP„ÌPŽ;D‚øØ}ûöíÂxæÉ?<[z³Ø÷Ñ2Hfiyåu£|;ÓŸÞ_a˜çʉî`毫«›wa8ÃZzK<[m†[­²ÙßÎÝŽÔ‚ò¹ëû¾ƒ·s7BçÃ~¾HÊ÷9}ÔŸØFýÎÛ9vîïõó†ÑrÚ軈Õßïá)óâ8wq%žÅóV¿_½]õV‡‹Å3ÝS3/ø‡q‚’YÆ(ñ}í¢/Š¢ØyõJÛó‘³-'¥~átŸ79«´Åô@ʺ úÓ/ôÀ¶ž»aä|¥©Ðyc–“BÎÃʧP„3w!ßÃúpsè½ \èCÚ†Üüøèƒ%D¿ÖœÍ]Š”6pâºýâa_G,èl2$;mPà<æE»…àË›{e¡+‚µH‡‰·³õg˜c¢x›þ-~Ó»ë.– é0öÁá?]ðdüÄ%ROÏ?PŸä(ÁÉ8²¿µe ˜Uz„òFäÕÖØÑ}ìBBXαsœ'ƒ6m• AùE0ýFÆ`7Uš0þo¹Øuöz6$wnª'ܹ™^_ªuòlpöÈBã"Ñ«*“ŒCc|§"%…}=-/Ø6¯Ô8; ;è~’-©¤µ0{>ñêÌ6“:Y.ÈÚäNÊj}°Æ~c)ƒ•OH%g䬌hؾ™<#M‰ŸYÖo<_MÄN¡¡—݈²¾¹„”I ;*¹$f0Re&Ö9R¬ÔN)$¯Š#D†‰)³:žÂ¾›^„Á2=.ÍÄ*Èì6–TÓÖlSk•» †Ø7×&j€aª` °QÜO†ôŽ%½%vpì]|§¡òiÊSm[Î{zès¨þiì¬ ããŽÁ$'³ãÙµ¶ðYØ6¼gö)ã’ÈÇ?¨ˆvR^9wyªœÛÙDî‹ã÷•ý6ô[K«”šU©VËí …é;ÆEÚŠ¾'€â{gÊÂz² …²>øÑO,ôu-’S¥l45>QÙ§Tvø{-’?ŒI«*¯%é„áFýÆÎ ³ŸêfÍ©\hÖÉ'ðNdýQÉž×»üî·ìš&v Îò¬z ªcÊ×y:+­Ëf­{%—$í+ë¹êÚ&¥-oÔˆ•Tf²Iÿ¼:c¬m,“u7SX|à²FqÚ"{­ÛZCìB–šYežÓmß ªà·å­nXÛPÈrÓó>t5áÙ0ûÜä §6¥ÖKA€%ÛøCG¢g"Â_†È· ªÖÕÆQÎÚíHQ(骟*º… ¢I]®žcÜ×¶ƒjb‰Š<Át'{T|T ÀÚ¾£“N0eåþ5vFµŠÄ اÆ?…öëD,W*M™±G¦¾ÉB“n”sÃÓÚ7Gcr¹8ˆ"N"”K£y?]¬I\ž¼ù6ª±1ZÆ“›-‘õ"œ²²”ôƒ`o)ˆÂŽ5(¯ìéåÊñவfN¼‡²e™-gÃuÊ_¢ „bÈr‚»®Ÿ Ç/‘ýv}S^|wsâòÝíúÅ—7i¸xáåm‰Qœü‡Ë[ŒBlwÿÿÝí¬'ûÜ¥©½¾^i¿ Ò]Ågè}[ÚT&šîÉ\ $àØ6œRµ¢4k&r]0SUÇ r¢9Kª­)$ݼè@d­C²žÅÙ«E5zŸösi7Ṻ]Y3Ñ&„ÕUs(WY+Ý7×å\ØIìÿÖüŸæ_¡”7 endstream endobj 1010 0 obj << /Length 2108 /Filter /FlateDecode >> stream xÚ­XÉrä6½÷WTŒfiD ±qé›Ý#OÌ„íqtÉáÃØˆDµæRÍEjù뉫ȵ9&êP ‚‰Ì÷2À7üø&‹6‰”,Sé&¯ßE®·û´¡ÆÇ½ã~^ÃÙÌo¯ßýã;­7€#!8–ý—ïñ¡í~/›Oì¹ðürk½ñk½ïomuðñûU÷Î ½£‰ ÒmÙ~Îð²ék<¾ˆ.2°n@00¸Å£(r&üéøÆ øª”é$†o¸µÿæç, ®Y"’iÆÒ¶óåD²äõ‹Uœ& \‘b“B!¹cD›¥™ß8,Þ†:Á‡±ÚºüÃx$:¸úbêCår<ô¡±k«'ù~‡0øÿ©ko*[÷k¢»3ÆEæ¿Ê Ee€E€ßx88¶=ÂDG€TƒìTÙ,üð`:?|¬M粑ëoèça 3$SÔèè(ZN(ÏM–›jz{ì!¨ôÖŽz|ÖìÉ Ð¯ü ¸ÿÇ”èË#ûä#h e‡hYF0Â.Ç@hL Sû®‹Ý*âŒ)ŧÈþýÅØË ZÎ1Í~M[¡®~熞\‹ÓËá#‚Ù¡„ˆ?P·¥4éM_³/‹Y’ð±™N3 Ç„Ei*›këoâèyÞ„ 2†Hä’¾¦*û¬'²vôˆéX¤>Ñ»q0¡?Ȱ`¶¢³ãš@˜”ƒ?> -­t〴ꡪê Ä_zÌ¢øyŸ¡*úÇ”…FÖÖüš±(zC˜vj5Úœi@ý« ó|y䤈ũøúè¼X[C3¥õëí@‚@à¯!M»4ªH²Hè%ï˪šªF?vv’.¥¡¢˜† ÊA…u%I/å%AjMÐ{)r¬ÊT !søryqµjpIþúý]ì.ÖsËâìõءʎL´€Üƒ÷¹ôi_ ã8ØQÎO|ÎWü˜ó]bJ|΂_¶œóà›¯éÑU˜}kãÇìæÞ·4)ÛõõÞŒàZç6ôdG3|Ò…VÙö‹Ó8—ÄäŠÀÉ,K߀”÷|m™”©·,‚EG ’“ó öh¾s±„êÆéµi‰ŠR§bUt,£¾wÒØž«Oëg‹Ky‰%OA\jĉšÆPñ¸#öK>ÜZƒ»{ Ç¾tâ|¬¼šÀ—)ä¶E°'ðÉ6kŠÌéyOGhž6‚OhLg?¥c™PÁ׸`LØ—ƒûÍs¼‚aœ_µ¦X¯d Kß ²\©€¯¬ãåÅ<ùX°9Kó¶®IAª\7Ílmò~r–'Šˆ=@ ·*û~Í®P€Œ€‹ N¢Wz;|(¨*S6á¾…7ãRQÇ›²:éË³Ê ÑKá‹nuf“ä$ÓÁw[(œ-UæÊCΉ'¾ˆ¬¾­I‡([cËáFö¦¬|ùÿ7„$œu Ó y>àxSæE ¶G¯.z´]×v½3KùƒvïÕè?‚»ñŸ€¶$¦ß2¥²¯.û°6 w»Š©X»£Ís8€f«¢¢AD‡ŸÇv‚°Ò"ȳSpP«ÚeCƒ.òØqßµäNçxrv¸ð6MÛ›ÜÒ,/e|$Êåbz¿£®éø&êÀY±ëŒ˜D»åõÂñ¨9Õ,ª G/ÎÐ7%Ü•EâIEmÍ¡IÂbñ Ô>¹èn´ahœ¾Hý­‡'¤XÄd$øt”ÿ¨Ã jå~W!ü{?IÉ€Ó—ÝË~zâ4oút!æî2Ƈ~Sõ-µ|‘)€±g‹–VôÍÝVÇ ÝKé~5]ˆù™­°{‰ÿù†‘±œ…(‘qðM5`Ê;t–E(ÅXÞÀåÙËgJNž‹kì1UL¬§ è¢/JëÁù± ǶtÆ6ÿ‘C‡t]A$¸^¬–~ù!üxu½¶;)àÜà1bsQÄ–\”\–D(x–^M$—T]Ýe"ITƵ#(»Ù‘ê/ÅÄ_›ÿ dù endstream endobj 1014 0 obj << /Length 3141 /Filter /FlateDecode >> stream xÚµZmã6þ¾¿b¾à×’%Ùî}šíîía»À̇CÛžDIŒuìÔvvfÐ?¤H¿e”&}9ÛØ²,Šùð!=â&‚ÿÄMÝ$qf*½YíßDn´ÙÞÐÅÝwoÏ[ÂÄåd滇7_ÿKë…Y”‰›‡Í"ÄË~ÖÃúæ§Àd‹_~xóáaXIKy¥HœùJfbnDJ¡Ê„]™T…"V$NÄ‹¥62ø°XŠàþ~±Œlð¦nèæþÖ=Â]9²03ÒàZ  4a&ZêÃýýO÷·÷¿ 3'ª*& ^pŸ2 ò–×Q°¶m±­ìîTlœT>¶–.žŠnç‘-@²Ö²_äúÄŠ4Ôj˜.–*‹ƒï;Z¹hI&ì`e«µÛ ošzO,*¾ÏW<®šzØõT–õa±Ä ÞÿãB&Á nåf)²(LÁÎK‡BÓ~¨w¼`À¬yYÒ•Ó/ìºèŠjëÑ6KÃÈè ÊJ*)úI‡¦Þ6ù¾¥¥ójͯ˜é+& “ɪË}½¶ÞãKC“ 3QõZøa‘Æ o¾­1êÏhi)‚‡]Ç8Õ4¶ywlì|oàL±Ó4fƒ VÙ'0­‡YYh ³WÎØ02.ãž7–.yÓÑU½ñyŽQa,â^™ßõZf2™ºOœRNN†.Úœ¢B‹t¶Ùä+û{¢£,T‘¹J´ã,ígîrV²-öE™7`KPÛ-6"JÍv&h¤ S•ÎÄ{…ÇbkØ&žÏ2Žã ÛYÏ¢*ºä—2É õ}ÑÊœ=(ŽUðq!@D¾µMHo#`Á)#ñí¥Y¨S6™:ÿfØ Å ¸œ!{Và B—»¢¬Ûú°[Ä‚¢ò5‚ÁêB¦Wˆ …2¯!,M¦w]M¿yÑ8‡I ašº+*züÔpd¸—*~iŸ³SÁ¯dbÂ8U—Ÿy oÁ•£(h+”±cÙ--Ó' ¬éPfrc›ºöÁ 䑎pÛö+¾ÚR¥Ó¨R*xWw;ò‡!˜òUWÊÒƒ¼‚³]ÓõcÞ [Ïlû¢m‹º¢ÇÞè“Qš8ùCÞ:¢(Šq–o„ýrdgסGÖRj7“…†¥ÕU¯MüÚ¿@zHg+Úƒ m Gœó„ §¦CSìóæ…n¶u^¶!aìE»œìE€á‰Î2XÎtpÙÙ玶]J†k°JüR¬-ÏËù¡>o' ØËE°9–<ѹ5\ü mŸ‹Ç’…Nòè4]zÁÉjêjO×ü³%*º˜TÏaOkOá¤ePæÕöІXêH¢²Ä+âiò€‰”<`8§ûGVÉý¿¢1Ø87ôâlÓòPSoñ&í _$Üth3ÙíΖ:+¯»Ær¾¸:M Ðô–½£ö†Àò~Ìpìúƒ/Òq•ìYS¶ž{–dϺ-»]}Ü:t‰œaSˆ_‹éùèÌ2Ùò$JAÊ.oÖdŸX@ÔGÊ*o=ë§Àgy•má3ƒi€NȤÍggœ—^ÓÍ’yM&ã˜>ÀzxÕ"© ßRµâá]ÅÒV¾¼+„ ¥I®TÂ(}rª( 'é;›¯éªÅÐír ÞŽ1Qޱ­1_hä9«šâÒm²*úÈôìtÖ£ûž;Á8wz€DmB53Ë<|¨`b9Æ0º¼ÔAY|F±ô°±ûºãëY~“T×í 'Úgš»+¶»þ¹A@^œæO|`MotM^µK_ˆƒ¯³‰Ê—r ¸bÈK‚)ŠUÊpHq S\_T@ÆÏÔ•ôq’M܉ûÙ•„#Ð:yÅ®¤‡]}è9N(A9p‘Š9:¶°Õ’ã‰û候ÇñǶë’œ‚:ªŽv Ä‘¡îcÌ(º)u‡¬p¬Ú¡Î˜¢ DNîŒòy‹{¨Õúo÷†U~˜9„ÎÜ0. >%%¼q{§cãÁ:°©‰’Ë]¡‘HÍOŠ$5ÄÑPÚXàÏB=3Pr¾j¸–_yáwHOG0JŒ(†r\ i`Yr¡0(ê¡gY(å¥ÊªÜ3уWœ¸ q3{˜‡>¸CÅn¾ºAÚ3ÔèðxŒ4t±gr&E¥Òßî}8€ê=“<4tP0Råèœ_ŠmÞ9ƒcCÝ0ùX…iœ]U†gcÕàYI‡ÉØ( Ëzë]G‡Pû\ÊQy l»³+ ÇÞ §éÏ‘Ž¼ëB•-³«¶¨þ¶-ÆÞ-: Æ‹ÆnàØv–»š±ÌÂÔÛ #¯ÊŠ{Îtÿç„$3Џm­ZÉàƒCi!/2ýhi §åÝsÙ^4üV÷ŽªP݇6eÕ–%5v ¾ü–n\"Çuy?}r€!F^œªÚSšW=Uš·Ž°x.&Ò›kÛ@¬œ;’(;‹¿|&JP [p“¾Í…÷Äíl7vZ°+„O¦D‡Ä1Ȃӗ‰Ëõl-¸ë/òf ë»kû,¡õc^ª§ýZ:>(Žbn‚¤Íëé•ëpõPÖÒ”UÎÃßá­òDzß/!QÆŸþâŽ@…AÈfé {Ì÷8/JQüŠåÂÝDn„`–w4î§ØÀâ2‡Ê¢Øßh‚•Çžܬ)©‚Œ )J§àä …*¾ôý x>Õ*Ñ™oHRCMOÛ>^r¤ È'íÑÆþzt0­À0µÁ8 ±íÜ·3ÂóÂß¢ÚØ¦ ¦ë«~Äì{ÒùO ?Eã·ªù‡£B-Œü¸|&Œ?#EIÃlâ¤Ñ½µ§_Òã ˆe¸m Â5>¦÷“—ãlÏ7ü“%É–ÝÕƒ0tõž8œ—ÛÜ-þˆß8Ö£^Ôëߟû ‚àvÿóáÖÀ;*Hô©þ0EH•CÌî‚þýäå8Û£ÿÉ’‚¨÷‡5h”$ó¬xËõ¹r½qBnÑÃVc*8#Á„Yûƒ¸b4Ÿ¶îðÁH2€¹\ox5jœ”åB¸\ #«ºi༰ٙeÁ¿©åúTñö^žR·¢mØøm&ýß+¨`ïŠÑ²+Ž´hM¤Å‡¿hŠ!¼uT%Û@W‡Ð;!ùÓ9ÿð.‚âñVõ¾ÿ’â¦jÏ s$nÑhÇÇÒ´éÅÔ †] #'LÛšfø,ó*=ùÕñå„I¢Ohõ[:ó™Ìv®²ˆ.†mã l›IKF%6þúÓ¡HB36²~üôðáï–ÄæwË%HRcñŸÛ»¿ÿñ;ïZAÅØ>9sÀ:Œ&Ÿ(îî>Ýy׊³0›{À¨¯‹,ø}}bÚ€³Vû¾¹Ð—*@,ËÄ ‡ˆ‡½®ôÑ€ì×cÝYίEå7*¸çømâÛÛ»÷÷gþÐ 7¿Î»œVE¯cºôfrò—+"‰'§v†u™ñÏŽŠmU7ä°@W]û‡óœS¡v@Z¯Nê†ÁIßò†dÄ1iA:íltþ ;U:ÌøäÏåPšjeNkž+Ú²ïþ{¢¨è¾6q{Ãù‹û; BRþÄ™äa´ñ endstream endobj 1019 0 obj << /Length 3596 /Filter /FlateDecode >> stream xÚZ[—Û¶~÷¯Øã>„Ê1iâÂ[ò;vã6Ž{²ë´=I(‰Z±¦H™¤¼ÞöÏw3I-”u{ô@™ÁÌ7H\ÅðWE|•):¿ÚžÄf´¿½¢ÆÏ~"x^ÃÙÌ7Ož¿N’+GE\ˆ«›Ý|©›íÕ¯ÁË}y«~*¥¡¾Y…Z'Á«ëkÙuüêú;‘™Îâ ‹W¿ßüåÉ«·o"åˆ3P˜¥WBGJ§’)Ls ¥‰B¡"µ “T¯V¡®¯Z~ÿÒðüu‘Ï?BF@>le¾¼ùîÍZn ³(‘©ôa¥DPÝÓÄ¥¬B¡Š¨È€lQDB²ÄnîV2:‹ÔAw\‰`¬»vˆPr2¸ÙÃ@Å«¥óÕrXÈ=§m¹¥Œ£,Î'Ú`'  ¶RA=Жk<‡ ;µ[Û‡IžêÞ‹¦:ްÅZöÜ·Xèáô°éÊ턃¦õ×ÒÒU'f÷õ[œÄC5~—*“ †-£ÚÖcø¡º±»½Eîñm[70]x@¹Ía7Zº ¥1jðû´4v@gt.3 'hËϑλÒZÖ¾¤éx 8 #Ÿ[KE$µ|Ľ‚/”Ù.z(ÉÕ2E5“«5$€•¬ÈØ ©Ñh'nIÿÝ÷­Ïo%y¤bù˜ã6 Gá÷õÚNºOΰ±…5½-[0ıTƒùF"J,Ð(QrH»AÎÂplNý€5ƒÝâe´Õç‘ZÃØy±ûvvJØ]Ѝ¦Es˜5ð²Ëó6+|=õÉ&‰2éôèf¶èN9=3Râe¦|}Zêa06'1eÙѳôxÇ,dœ>îU–O¨=VѪÿêÖÔ@Áç¶âyÊ&‰ &g ìÑ”OußµSdîÍít$¦ƒ=¦yÃC5î;¯-ƒäœï2¦ˆW©`AÂDìOá®^¬¦à`xêËlœ;ÜNP›õÁgþjÀé¤Hƒ7£ÝÔ ˜µ@i¹`õ«añTܤSÛ€L40eÎJRõÐJúSÛCiü5Šå0ð Ï·à¨MãeS‚bm#;PZ~Љr–™ ßÜÕMC-bœ<%ö/°®’¨ÐúqæEáô¶ÞÑŠãiΩ=4NrH2dgIÏ,rcµ¼úûŸÞüãBM"åÂÑjà»9úo±cÑÀ¦h=4îPÿ.”«„ 'cûê0„ÛÎkõZAÀã ‚*†ÒDùQ"J§êíuøý;¯¥ƒÚé©Fgµ lïZ*0AûîúmeŽž|Ä2q…0ª…d@˜Ü2…öWÇ`iöÈ™ L.fž’ŸF’ñ‰•QZu•N]qªŠ™Ü|n€ò’Š<‰ò)¯ùª<›*6}}ôzƒLÏ“G#3üs…Èq¢}¬LŽÇßQâ&„K{I‚¨1N3 J£\äK¼Ã"…Œmiã\9 Qœ€ä’€ÕDáñ¸®ñ”ÃTÛ÷êè CïLmI¢2Ý¡¤`3š%{Ž0áÃ’JmDxÉ«LøŠã %€›²™-’™E"RÂDEÙY¤Ísª)¦îúÜû²Ž€䇰,ŠÃFzi2¡ RY ÝQ|œÚ´F;â,b^œð©.ùûö¶ wãñù«××4b²¢âpŒÑ5þ“YRœ×xt!ñ ”1f®O»]Õ‡DXˆ±¹×Æò4ÒÅ"ìÃýJ|¤Á‰1¸±ÿËÊ8˜º\7pn_$3+3ûU:Í¢l 2ŸÃþ©_©c©T/”ún_»8$‹Ù¾°µ¶õ9옂¸i¡BÊ´p®¼åá=Ï\Ÿà jöºó×öD±½75:\Ìø}2%‰Œ£ xðœnk’ ´ÚŽžGxOýÖwÔFCã þ²¿Ç´“Z™r©!M‹™FÆìï°áüÝÃDJGròš í°¼­Z¯"$"J&/üx.eÛzC0­a)‡/FÍãœM˜Î}Z%)à"×—iœ’©êlö¶6' nÉÉ@r˜«ôÌ¥Û4e¤àÿÇL`ÿ”&ëí`ó£\ËävGIëVÀ B Û¤•3÷ö–óZÎU\¤‡‰Ù3@3†6‹ÌîÞÑ&¨De%Ô/$K[÷©N\ë¹æ°;¤©É„788$¢•ý¶<Ñ ¡çôTãºÌâ¬ôãžÆîjÛú+Ðã3.lXþfgá„'uΓ: †îPÑhMMU ~3VGs­'ÒàuÝ£aÊ~¤OhSš~Æ¡vw@.ï@¦k_7„Ëðªny§wGJŸ}e’T¯™¡ö7€$\Cž¹˜45›`?ÎY^öµ×4‹H.¡ûƒa2<öÕ®þì/¦Ñ]Sì) Ñfð픋m-YI”|ûg$óÌMTòÈ qüµ‰-¾¾”žˆ©hÀΕ3ç­¹77N’Z½´tâ`5lJwó†8ŽªÝðÔzðéLdTH1?’þ¼ JJo¼î/ŽòéºÈ†¢Lfë­yå`"É´“Ý@ù7‹#ÿ¹Ð ™š*Í94<)R85[êr¥ç´ô,Í3Å€¢n1`0£Tß0~ç@:h‹‘Øk ›ƒð/Hqº¹¼Ä®=IóYüX(›èÄÇðñ*w¼J[ÿ8™¶ÝQã‰0 f=ðáojÔkëƒ/—õdG@ QxsŽjVAŽly¯ÄÒmÓÅL1#VŠ£MvåõB_Ä|UDÙ„ù×ï_¼}s㣠çiGÕôÇ\ÛýW·Gl÷í”Å‘H]Ü÷ZyYO£é¯.ûÈ]Áãuî/àΣBSã&tD"ìh¬dQ¹dÒs{‡V’éG’Sü£l{æ  +E-h? Á®3/ÆÀkµÈ"• L ÇI?͹˜s‘Hžó eÉ?Ò4YDzB¦¹á‹EP\úGQyþ”¶ã®ü‡ßv©:+TŸyx-ó¨ÈØþØŠxf1K}Ò‘šj¶OëöS÷¡šý± -˜²¾¢Ýè/puS]0€Æ)EÝ)3[õá* ÿ¯BEYÃDðêÝKÉ(ÕÎBÍîêÁÖA¬–Jw9œWi:/PÆàym¹:|ßÎßáˆI/°l×<~ÝÃ#Hÿ?Ý+¦ÿ\±Meøß:µëÍ©)ù Ÿ sáÊWIÔ¶Ø—§æŽÿA‹g¹¸‹Ñæßä\ìJÂÉMåL/)è¢Kô¶ž 2ਞÑ"5çv㧦 ޽Y:ß*Žg‰YeK·[¼q*è½óÉ—NÖ‰kÿ—ù_9…¶n endstream endobj 1022 0 obj << /Length 2252 /Filter /FlateDecode >> stream xÚµY[sݶ~÷¯Ðø¡áɘqáMyj\»q§M:ñÉ´™8 ‰¬xÈS‚´¤<ä·g^dèH·ãѰ‹Åî·ßÂô,‚ô,ÎRÎI.²³òð"Ò£Ãõ™iüø×ÔÎ ab¸šùíþÅùÛ8>£É£œží¯Ö[í«³_‚×uqå° 9çå»Pˆ8xóþ½¹êí§÷†–Š4 Rºûuÿ·oö³Ü˜±g*ˆ3?Õ0YkHiF²³$„ra”ü{_íÇÁÇbhŠËVª T6 )'46ó¤R¡*àoº<4cXö‡CÑUfåKø’½Ü¬¢fÙœãm…“2P.¤)‰.ûZ‚XØÝ±“mÓÙáF™‘¢U½9•ýÖ_Y1Û§‚°,­|‡8Òħ#´çů|R’Çì‘íµ=B.ålk–c¯ÆS¢SN‘¸}—IÙŒ‘Ç·›‡ýqlúNyÏ—&$å³”Qúb´…M «oë¦Ü¡kÓÕw¿ö. u9}ˆ(—ƒ=7KÉÒtãD-LÅë-ZFÉ.LR|'åAáª?Ø–¼+GpIÓÓ!ƒû¸A? ^³D”$L¸cý~Nä¡(½ˆ#ðêföÞí(KNW»ÝéíΛ®‰l½† 2¶2,­=ùÍØOfàPàQî­¯$àOì¯ #PLJq [‹IYê¤ý#¼3³ËIý¡ùM†.°½º2¾vr¼— Ÿ@¥˜d<ÞFì7_©Ú@@%¯Š©}€gVrü¯™x" –t}=_¢"¾ÍNK|ŽÀuè‰áßÁ¸ƒéÿé­_ž:nèôi±Uà|RÃy‹H|sðï„ V½ú2|bt5ÃøBéÿÄòaSöݧZX%þÕtU«þP^œ‡þz(~§îˆ¼“äI]¾@•œñÏiäú°dÕÜèw:½ÆszE€e\hôÆß8@wÓŽaÓ™ÁJ¶BÔ½é^jÌ–€½r»¨KÄ®zV 'y°‡¨’1‰5‘áx´dTgF;é?ýåV90ÏŽ‡]Ùf„Ö(±Yé·µ´êNªé®fU>ÃãOß¿û·WÈÒ”»YaSŒ¸±f Lˆ±ë»Uµl9ñ4 ¦®Ò<šÚ1Ðz· ò[ #û„ßÜo'Kpb¸·Ãù'°fÇ^Y(içÃKiš:Aë±Eú¡¹®qáhwïmÃ^œé ²¨î}®9XÙHUôöýÔV¾•zˆ: ±&Ç­ðÐ$ÐõVßŰ®ŽfYyÐf¬Áa•å GbêŸw™ÐlƒC€”Eg>k5·=„Cƒ,¿÷‚ï3^a§±‹N².( ÍÌCM”Î&¢4¦N™!Œ üÅCúP:³½¿Ö<ækïÅ/¡ê^Ìæ·uc*ê4XUÓHV:4>7T­–&8UV ÒH¯ó&X‹çx/{Ò{6—X “Dï¼ïSÀ€ó4yø„ã8g¢¥maÄ” 9Ö½ÿå(#Ñ C•ÿô¡ƒ5­÷uh}Víêlvuê|ø¹ÆF ³×v`¹)ì™àŵU£Ž e\¶`3—…1  `Y\Ö[X¡Ìù˜$Ûä V;#O˜á¢ð ÔÒ숱Ãê} ·ÿˆS ¥ì ‹ÀeQ>{.dA]hIöF·,{³:Ìî‰ÑN2•Ì0W7Ðè ä _ΦŒÉÉ{D>«¸À‹–:ÛgSÑiƒî­’`fë ÞØ¬—Ò5pS•b>,o(ÔÛl/üóàÉ’MWX#’zŒ’Ržc“F®m‚µf7c¸ïX dLš<¬ø:?ºð£1…b2‹œùãÄ—´1ÎÿóÝ_¼Vxïl»ãÏšrN®¶\•–š.ÌD‚§P^€ö¦ù±Q͸›^nd`á¤í¯½vOIÄÅš8B cEö ’5n¹*ÕØ¸ÒÒJg< 5•ž7nç/®©½LÙ's´ÜLo‘Âx€ÔÏ7XPföcb¬‡Ó„šQjXÓ…°Xàæ+ 1PŠMo\ÜôKüè€ÂËgtal©“3)4­I_Ùè»r,Éx'ˆ ]y‰Wè’8tÁÿ8ûø>Œ endstream endobj 1026 0 obj << /Length 2848 /Filter /FlateDecode >> stream xÚ•Z_oÜ6ϧ0úR¹ÈªI‘Tüt׋ƒî vpwh œvWöÑJ[Iǽ/3œ%­åxƒÞ!E‘Ãùû›QÒ‹þ¥yra¤Œse/6ûW‰Ÿmï/ˆøåÝ«”×­`áj²ò¯·¯~¼Î²‹4‰ó$O/nï¦[Ýn/~~Ú‡¾l/WRÊ(•o.WJeÑÛ›š¹køÑÍ_`Fe’ȈËßoÿþêím87âLqå ¦‰‚§êB[§R›ïš¾!Fú]‰„ŠêòKOSeÛlîË®+îË×´ÄÝÑlQ_ =^ZÅÈ;©gGÊØÂÌ*Íb¥tâuv ÜfÑoI–\kø›ò›3fWK¯¾oð¸fâ¿K'JO‚Lü my×–Ýné•ÄHñÂïG,l*²XejXW]¿´£Ðq¦²aUQoiÏû†Øäìúï;¢ÖÇß’T–í¢èVi’Ç©’'ÂÓá™ó„'èÕŸYg(ÃæHL=8]ÙÛŸ.…‰Jmpñ®¨ïËŽ¥~ßÌ×?#²ÔÚX&2Ȭ+º—eâPŸüàúݲ`Dƒ\œFM“}“Uýol#¶~›}¹u½«ïƒ0L´»L#/ZÔÜ×{Ç~SÜ®~Ù!X1×rºY7𦊥҂®mc Mœ§½›¡/i‰aåW$¿ÿïú2WѱÞô®©“EŸ.e•(ì±.àýîhæÐ¢FÓhžŽW^ÁŒRpˆ»õ#…»—ýñ@dƒV–ªèndfIÀž‰”bß°{çZh/¥ã4±ƒ-`\\2˜4γàßë¢' ¥ý`8\ÁOºŽ8:Ö.ýìõë¶Åºz¤›f¨Ê/hß©§ìišâ!¾ˆyÛk'Úx;Jûiر&W–þʆ¯,™ ´‡gÅ” @~-[{Ѳù¡ |æ(£­ëÀ7lXÍèÞxnR ç3[þp „µQJ?hVÛò®8V=Úž-òècv`×:‘«—Td2¸ö üÁè£kr ºô·Ã]ë¦'bíõÔÑ{pÜ7ô[V®; jÙƒwuÌðíÎ ¬u¤ !-æÊp(~¥£b³iÚmQoPŽÊøpBOH¯@¼{ÿ‘ˆ·t(.û ù0 uo=0qÓ£‡ƒË·ÛŽfPž ²ZÆ ¸6_ùÝÛŸ–í×ÄRØ1à³{v.X2²mhÚ Ìß§ª(ùÑó`k$‰<‰¥UsIL|n’}Hðåt@ZðÖbzÑók»òqf¡@eYT¸ ¼¨œæ|¤ÅÆ|ì8¹}ÅVY©b•±¢o*í©€ó4NÄ‹ò…ü¯tˆ[Šewb~iâðî+Ž0XæÚF¹l¾k‚AžÞÓ™[Ÿ1EnP†]y²5E©c%ó¹ÚØW„•¾¬‰(âÎã%ÏÎ epëÔKðºrK ]M¿xÕÛ´WvGy‰,˜‘I6E¼t7X`³—¯–¤éòÕ„®†@vEG³[G¸œY¤§wp±1LÀĨ|¥ÄÄ]»áê0µŒr„Îãl PßÿüïE¾m¬¬œ¤‰D ‘))Êx‚ÇžHü œŽâG 0-ÑrnI¸‹|MÑÚ#ä«þ¤<7„d}yå¦`Üsì8ø—à‚Cø_å*Îl:×ê,JëÄÃȧŒ@}–Jy#:ÎmÐñË•–£’”V§JÂçžm$B^ÄA;|æ*ÇŽAÚàÕ\¹u´1Jö¾jÖEe¾IT¤@Ì*×$fz…¬jô$¶âD3•ƒÒ}DeTTŒcý†B j_YIÞÖ55X¨K}”Á™)WÇ@Þë*ž¦äŽ”÷_OtèŠÀÇ3!Tf26Ù¹Š±6˜zÁ¶© |Óê$ÊQšˆÊ ºž*¸:”¬Æ×d •Mc„LVûfµo¶åª€Ü³X¦Û È`áCØ1 üB~ê2_Þ¥'ׇ 6–ž ’%?GcrQ È<ˆö@~¡dì©H3_žãd(Ïq2 …!¥ž‰óï—™³”‚ž®·Ô˜›%Xª²ù,7{~šö^2‡$\2d™†iN ¹ 5‘Ïu „n‚1ýÐíʪúa‘m€6r¬ûØÒéô¦=å§DÌ‚°«w|œÍSÓˆ7·¨ªœ¾AtùÐXç¥Ä•`~|bÅÞµb¾ˆs©ÏTŽÕrì^mšûÚýIHÒŠ‰˜uîq QKð"=&ЄÖÍmÈ$„Jà‰ÕHÐV ôÌ4|ò—d¤ðlÎzçp€Ž6±ÉOpí¤¯r–MqbR­$\L$|·Î| ¶4T=Ú¼Œl–.5 ’)*ÅSÉ~â€Cª|’±´„+³Ø$߯ Û#&ä$øŠàv@ ÑsHÜP'‚ãÎnldp‹¢nÚ=$§Gñ=€"ŽAÖ÷4n0%99>õ6ϯŒíAÜÉÛR$5ŠnMÇÇöChöðÁÛ‘vHó¾‰4ížÆž ƒ5[8ࣻ²ªVp\ŸÒ$ç¶ör5ØMU-ëK>𴉱+¿¬/ȹX ­ð‚Žî\Ïg¦Œ­ƒºêXTñصPö ¾õHÈ7ep7¥-ƒ?t Ô´Ný¥Šàäãêš~Çó@³€#¼¡œ6³ÛA°"èïÿ§ÿ‡¶ùðþí’D´ŠõX)`틽¸k|]ÝŒº8 ðÀC-%ìVP,.<@}èÐt°ëR¹?ù²8úÃ{}®áÕÞ=,*f)Åd6΄cêG×–/øqi³Ùw€ª)¶‹f#¦¶µTº@ ÎPé¸Ó¤¿hgýE;Ä(ÅÐÑ¡;C2·`’yÒ+[eX˜³ €¬ÜÒç…§Q{ꎣÐ‚Ö $‡ÏJ[þÎÄ^ä·ÿ:š+ì^w³®ýô£ÅìT€äs_ÍÞ,[Èc•ÏóêJ\ ú®ìÿ QÙu«®èVUaou¬Ý—Õ'¯|ØmüÓpwu%ÏØí°ùê^ÃVê«[Q2ÿβs¶[fíɇúZ1•#}-0"ª‹}Ù-z—ŽõØ4&Æ{|P=‚}¼µ vŒl?óý)‹Nòª‘Ø0Ü…üi—À¶üË]e (lÑSîj þpsÝc×—ûa¡ï­šÍq'LúкРÌMÔ1ö×°¡O¦2ú¥˜Ø4zMx†ÚµøÆJÊ ’C· æNÁ¾†Üp—r)QB ~ؘqѼË[]8@gGÓœ.9'­'pš¿Z°ãÖ“þ2Þ!õC>„ä¼ï†ZNÇ"¦×à?‚‚áNÒ Œ8•åf g|W‰MS£øÐŽ­¯P÷B‘˜àWZ뻀mÑ"œ£è`3¬«ƒNQy läŽ{êý´w›ˆi¢cø„_ms@ÃpEÏsCúXü.)¡*f.3jD@Žó®þ ¨ï¨sW0NC ÿ/†ÿ |m› endstream endobj 1029 0 obj << /Length 1882 /Filter /FlateDecode >> stream xÚÕYÛ’Û6}÷Wèm)×!.ˆÍ“/£ÉlÅ—²äݤœT-F¢$Æ©")½_¿ )’‚FšÉ¸*[~î>ݧ»a<ŠàÉh$(E’%£ùöYdfËÕÈ>\?Ãn_ÃÎΗ³g?Lâx„#$#‰G³e÷¨Ùbô)xµV»:-Ç!¥4Àôã±8¸šNí̲pKÓ0CQ èø÷Ù?Ÿ]ÍÚ{cB.Pï<–w%ÄŒ#LĈ' aʬ˜¿Eq”VUX©*\mŠ[µ wóðsú­‚¬å*2ŒpBG!aHn™d¹Úl¾üôJ’ànL’ …±Á*­õ êÂNÜ­UmGõÚíYîóy¹ýõyLDBØ_j^ïÍñæ×¢@ã0<øU_WìíìVéOÜ–2«<û¯;»*¶© X®ÝF!%ƒ¿á[eòl®…ÿœ«mª% ,PUk ‰$×j/Gì™°¿ùJé1!‹¤Ùô:«v¥Oÿfá£rµ²n‚y±Ýª|QÙ% Èé6ª2µ›²ÜMl6v0W»¬Vòˆ& ¢ðŠPÅVŽoo~·#Tï_ùÄ–qÚŠý¶c·»çZ¡ÛÞ3ã„hù„Ôƒ³7üÇw,Em6”é²L«µï$ŠÉfßß,® !}yÊô‹ñÉR»ãÎõ (çû²Ls½æVn÷¿E˜T`ù.«×vä¾à f÷µq©îq•Úºm¹ÅA¶¼ç„Ì8(`ÅuN˜Úr®Q¯•Ã݃VÊ{aˆ0á¡ ‰L?¾|s3»ž+ã¸_\`“DZYD{ׄqD‚8ã D¨ê„S7T8ŠâðÆBúx wkë„k{5Í,¥€Ž6’»¨>">ŒáÉE×3ßõ:äšóÍåu5ÜC°ãE’†ï¥8%#‹ÅY"ôÈBúxUU…–-˜gªNö.ç¹’Ÿ¶L ã–ÂЦªÏ_[x=-Š;'«‡)`hMv˜™0î{`?R;1`’•eê|a—ªýí6«{1Ã7ju<«ìÒ­ªS(ÁR«ð ªÿ£¸õF&¥ $v¡ÙäOÖ„fìï?¼»þðâÍű X7áa´Ù±ÖBMéלDÐ ¢#fñ9Ÿ~$ÂàÊ| µ&Ü ~~wý8Ýd7°hrZ)FåYw„Ûú*éê…EþtD(¿4!áCF2r:Ç”Áª0eLåé×ÚŽR S •¶.””TNȶ\á J(ïñŒÊm=qqh ˜7x÷qöþãù4ðÔžvŠm|žf#Õšùáº4ÁÉ£ê…c'N(ÔLƒº°µDëŸ/h–Ù&­¿íÒÐ[eÇ@”‚ Š!‘Ǿùë*Ápê#Åj ÕEºTûMíÊe?üã>¤ˆúk}‚E;TÛ;í8B‡äýŽ —âii[{[>MèøAµN¡’÷Š&Ê.@1âœ'îndyî¨F@k4LÀÙ¨Þ þusõïÙ‹—?_]HÅΔ)ÅCÆ5+ê¿R§ÕÓz½Ì•˜y%@µÐBŽ|eµ›L¯^û YhÒtaÖXÕ4™úÎÂÉp(Žº9Ô§;—ò)⇒u¡jUé^WŸž§ªt• §(Nâ¾%­ŠìtÑì'oécfFg½¯.V«Mºô7h1ì¢Gup²X¶ |5~õ÷FP žÜúèòDi}²¸ GXöY¿úÐp°¯Òå~cô¶'z0‡FNÙÊ<éí~µÊò•ýYeõ^éׄÊÏîXWÛÃvãÖ²ø)ùü5ù|o~‡hø?åwLZO¸àéâK–Þ­Jµ[÷B ÑåЦy½FÇGk·kˆµÉŸOAóä`aÃ0æØ™˜9ûÂ-Ÿ‰ ÊEÛ.ë…Ì •nÕ¼²Ãæ›;í]xši á;ài㢠4ŒÉ .‚*6-s垣ôuæõÎq'§IÍu?¯Â‰Ž=J¤ž5yY/C§sY—*«}¦Ÿ—)´Âö5ÒŠÂàž9¡IHZž{3â¦qða Ì&Þðˆ 4mC©/Ü#N G,Ëbkgmû9x&1+VF¿™Ú~æ•8´Y`8 ‰,9¶|nš6}±ô†edJ†&,Áv^`0ľNxCdÈr2ý†9WÎóï…Ÿ„†#)xʉ†Fœ€°”²c ‚¹¨Å·Ø`÷„¥§úØà^›‰[l´Àv¹‡ D…`=ù~Јz€&9} Ët¥¥ò rWfµë´Ü¦{È^´¥‘þïƒ:ÝîN½­T4Ã÷Ÿ¾„A"ú¤ :ÆuùyuÕ®¡ÞEXG%>Ú奿C´šž¨aúš6I¹}|:÷H ÙŠ_P&x†ØüÅ> stream xÚ¥ZK“Û6¾ûWLíÅš”/LNyØŽ·â$O[Iª–#Acê±$eÏ\òÛ· ¤Y“Ýr…F£Ñýu7øMÿøM™ÝR²R™›ÅöYæZÛõ ~yóŒûqs8üæîÙË×ZßðŒ•YÉoîVã©î–7¿Í¾ÝT‡Þ¶·s)åŒË/oçJéÙ«÷ï©eµ÷]ᅥQ¨"›êö»>{u7¬«…x"8ò …Üä,—æ&7Šq©ˆÌýV73»úx6«üo½»…V ¿ZôõÇ[QÌ,ÒSæ“M,/ Pàæúù—Ÿ¾¥M½ýñýÛ7ßßùO&TœqÎÃ'íºzï¥_>ë7vø²de.r÷¡`²ÌÇȶÄìB²Œaвê«Îö4ûÎV-~r3¹bùÅ%㚆ö~ß4u.ÆSÏKbßœÃתð§<ͳÛ97™òåQþCOT¿_¯;oꮯwkGQ6!…$8 ãb`ˆÒoÀ…?R+*Ít.ÃH”µÄáq «xÅš®Or4gZé0ê÷Œ«Æv_Ñ1;»:6XVQ ù¸3WkmµœïwÍcŠ‚¹ÈËñ 4Ë áOö×oÞ½MŠŽTLÆ]½H͘‡ò‘<¾ùåëwIe KOžê‡ŸÞ$™“1®DTí–©‰`–ÃL?ýz÷ó¯éíL Æí¬]¢bà³ÝÅluláf´ÔhMµ«zwy°¡«w KaÔ#5nëm½ búR Ð&»v«àþH¦´™ˆéwu$àuÅdžÍÞ=k§ñ ²Øo·ÀŽjÈWhmSõÖWVÇÝ‚6€µ8•õs--JÚ®ÆîŽÝ‚zS³ï÷8â“F*©}£sØû}¶'¦ë&ŒéGöG7‚¤÷™„îT!Jî¡uë}¬—ŽÞ¨³ln'ØÕÖqGÐ>aDÕú–¥ím}OJÖÏãk í‡9 A©”Jù›àÉüwJš@Á W ÛئIÊ¥3œês\¶œuŸê~KnlG-XÛ©Òïýï&©ê9\U­ñü­ýEònIV˜A¯Üá$%Ârö ÎÇ&_T;*Œ ÿ¤î7XB9ƒ3Ú[ªËÕVƒóRùô´»Ç®·["³ÝmjÜ<7³ðk;?Ñ¢®šåÀ¢æ@ª G®è7R̽îÍ’ªM}ËQæœá ŽÐñ¡nü4Uêþ XˆkVM°, È}呦ýsï÷ö¯[#=}…ç(ôÇí­‰K2a“S&U8î]M§e½t÷°µá±aWm-•z§›ÊYÕuxw\mŒì}?–’»Ï`úêî9Ó¥Hì§…Ý¿g:ó«ƒ+Û¥dØ0 ú)"Œæ!Ú<Í'»)è’o4–Æ„ûyÚãnçïßÉé*eUê© ]n*šÛÑ!+åD¼£’ƒˆª8% z"—_¶v»ï}3ءñ'já»~SõÔ± ¦ +`–§ Œ/B1ëýª¶ßÐ2ËÎCI"{ªo† ‡6,*}o)Á:8éqAzÆ2‚×d„š™¢<’ãý¶îçŽÎeRJŒˆR’De†3‘åScôZ$çt(‡é‚FC¹E†çš¶Š…¤1+šáB¶vÕÚnsõB>§ÇÀ¶¹ß<.»8¶Q™aOTf¨°Z¨ÁU1Ч äEÁTÆŸJ!?!¥ @‰òZ¢dRŠ©ØYxîE½©º v^æyÂnðmì˾ÞZCª ;hëP ¬þÜK~˜Î\˜á´6ŸÁ¬PÙ:,Dß:XC÷ ßÂvq¥s÷%|Åó@’MD5¢iÅ6ß©GùŒT—(ü‰àžSj|Pj0í&3tÆ ¿;7Ì)\ÚXûýF,œõO Å±T‡Û 8f—´0ËóâŠ×À ÆÍ5çc4Íg\†ÈÑ–ärìë­êÆö;ç©Iu—RLÀ#ÀŠö‚k“Åëÿšó N’ázñîEg—,(RÎ -þ&þ›eq‚‚±e°„¢Ì Ð@cE?(Ž c(‘Xõ ,<(ƒ¸…±a GHÐ_MWI³1EÈ@•_pÅù©+Žgžÿrìi¹HaåuM.˜à'h/󸔽ÝQ4,€TIIRLñHkÿhV²zã‡Ë,íª:"Oû¬)\ôÄ‚`SZ/ƒáÍ#O¶ˆ”A• HpH {Ô2~Úy ’š=Öó”7½X£`â>°ð«Ñ>T[U°µöæçD‚+ÀªQÐÿzÉì¶Z$ÅB•à›ÀïB¬G‚¢P£ÙÜt/kp±™Mú<#(;·//˜þäî¢øt¶ÿúîzPV«ú®«kýÇ¢ûø’¬~E?Žiî#Ï4rí$3ú“”IÂ5SfàÜ'ò¿òúí¡§²w%©B§”{Tº¾²ÈfûµT~/ŸÛjgǡ©[#0¾¨¯;uúƒo-]yª1R…¥þGÓ¨Y1Ûå”$/äåjpbÖ›~\é ØDS]¶š˜ÿÅÔhÊh4)Qæ[}$TØÇ"DBŸ`s=Îu]ÞËg $f"&˜,eÇ$XQSœ¤«/äü§z‹Rú]*§oXS;ŸÍé¬PÃÈÄöiïh¦Íb´¬Ù¯/$ qâçu8­š}ÚÔáBà*µoÞãYQ1xöÚå:É?vèÿõ–¾Þùàš³Xs ?µUwÞb(§€ø±žo÷ˤäçf,v/Ð2Š‹HcÜ‚øëá×þCGu@(`]QŒ1f˜8 ídÁªªo@˜\²o½qíd Œñ Û˜‘uÁáC"‰ð#¶í+27sO÷Ô°÷ÇõzxDÑÕýÑÅ0»!oÐÓí$°N_ ØÉ(„xñìS¯;h L”±€{Z}eË+jlö@ŠCÓëBlB4svÈ<uŸ›—þ)1ÄúT{P.*u!Ý ™æúÿˆ‚Ú‡…=xÖ;‰¢K‘ à 0,Á ÔÑuöSDKòRùl…y¸UR5 *òŒ‡âeT”„ø„‰ˆË£XhF@[}¬¿„øð·JëdáNÖ/õ®îë·?¤±¾à.⣗êtÉlçÚÒ>€L>AÛåà\¨¨˜iÆáκ½!6x튉›óÌyD‰¼œYGþäZÿP€Þ/`§‹à¹F1ùð¸_ìü ‡Þ¶»Ê¿ÀÉ) é|¶lö Ä-ý¢”³ÄOG>¥œ tݰ՘ŒD¢ƒ^¯øxPÈNßX¸NzNAåÑ‹î#ûP8v05×qÏÜQe°I%"ÁT~–K^·Õa3> stream xÚ­Y[oÛ¸~ï¯òR¹¨Xñ¦KöaÑm“¢‹-Z4.ÎC6ÀQlÚÖ‰,i%9IÏÙ¿3$u³éÆ8»(ÒP5œÎ÷Í CÏøGÏ’à,âœ$">[l_z¶^Ÿ™Á×/¨]çÃB´ò—ù‹7WRžÑ€$ABÏæ«±¨ùòìÆ{·I«VÕ3ŸsîQ~1ó…Þåõµ™Y•öÕõ[˜a‘ˆ/’³Ûù¯/.çý¾’±Ä•‡†c )I|Æ‚P.Œ’¿2hTûÇ ¾—žj¿I]§ÕÆÈÔ£ßìV«ìɯÕZ=Uf~³(‹EÚšçórû;HÔ?ðîF]Þþ|S}¹½i®ûž£i ªO9¡Òì~®W-ßßÞ¬®†•7ë·7ÙǽÉÿüz«Wká°âˆ`ÚInç½üùy¤!=ÇÿðÇðÓOæ÷R­Ò]Þºä=ë'üOÕ~'Â8æ¾\¦÷Ùv}~¸×¿²bY>6Ç7þ;û6Ë6Û¦kåØ÷ºÌÓ:kþ1ƒÓSæ#¨ÁÍ‘ÁØø?bgŠX@17$ÖÓ²o“6G+¶ït«çܽ¿Äû†ž Þù -ï|g1¥‚L¸ã.pGìG§Ö€lÔÝv€¦4 £½le²yì­v…îsRøÀëÐ&=Ìd襹-ÝÍ¥æ—åR½Ð‚­4oì>‰›iFxRÍ—¯Ÿ?|}ûÉ@íòýÇùç¯ÎÌ€iCÁøÒì9­#bì†rKDèj›Ä!Ê÷.ií5²³#‡UíƷ_>}tR!ÐÒö‡Kº½ˆŒö2ì•nl6VOé¶Ê»b½´ôSLÚRÑ»'¿ëیݸèŽkÜàv—v]Önˆ;åAïuïº.࿲—“eÙ¡F»íà“¿ <õ zÌ4#?u÷üøàˆÀk„S›$ƃÂAS_è].ñOš2;ꬪº„’¶úl(·¹˜N¥°œkÛ8äÌÊ¡£ $Tö|©šr0¯£P¤¥<¼Ôbà ½K­Å®nº ÊìeÅ’ Åøöÿ´ªæ)ÂCŽt6˜ aÉ^ì?Û`º‚Ëfgí6mºÈÖá‚å/þcR쎮@µRÅE÷·ß¿8e°Ÿ endstream endobj 1043 0 obj << /Length 3238 /Filter /FlateDecode >> stream xÚ­ZmÜ6þž_±—/õÅz±d§ŸÒmzÈéɽCà¼ÍŽ=µ=IÜo?R”_W›ÙAF’92E‘ÒË/bø_dñ…‘’e*½(Ob·ÚÞ^Ðàíߟp/·ÁÍLòûë'ÏL’ ³,ÎøÅõn¾Õõöâ·èjŸ{Û^n¤”—/.7J%Ñ«wïhe×øGï^Š0Êđїï¯ÿñäÕõøÞDˆG*ˆ’ç5Ô©b\*ÒðûÓï1—¨¢’2Þ4¨G´µ—ý`»¢-}ÙÔ¨Öóµ˜ïá’ñ„öÚ5 %z.Ä ã©Y'ĺ¼¥2–i¡Q(ɘ⃠è70É{/·<@ʤÉÉ»K‘FÍÉ›±»Üp˜]ò¨-,.©N§*RkÃb™áþœ6üÞû‚ë~¬£2 i*˜äÙJÕ<¬¬`:^Ž"Ón’År¶WhÁ™JÍ T4‡úT—EîîÅýf¸ÇàI3°nš†NʪæNËœöÝÞVmªô-Yð·÷µÛy¥ÐCš ÆM:Á›hó²Ç?ä“SÝS]B@5§jKÓckw.Ü@ÎæJîiÖìH¢ß[ZØ9ÇÆÑp»—hh9?!\Sا¥eMʾó{âþŸ†Õz ¡Q~,·§¼ò¯hóƒ}æ6Rjé$ÓID^yM“¼móúÖÒÄú}Þ³KÄ èç*/ì°êũ휨ŒI×ùÛ Š`¶-»c•£íî@’G·!ü gI<ãçˆh}ûÙ´•;„ˆ^Õ¨AoÛIWg+ •dÙÒXýãdë†4Uà&‰v¿ÚäWW›O!]¤aY6×E¥2ºFCIeF+"B}*]À¨F­ª;’¹q8F‘%H,äiÆÌd¥/ÅòÏ›ÕÇà@eꦆ£,:žzÒ«ì阷µ´”ƒ¯´ÜH0¸É®6z$ÝÒÌÄL˜IºÌîF¤ËP~gA¸æ,jí-D}‡:gP¡¶ÃØÝA“£¨­1\úÒøäãž =´D4ìèIßKHÍ„NÎ#–žîì÷8‰½¶´s>(rh<ÂÒ©³»SD$‘&Êim_Þî7d a$KWn]ÁcR!Œ¡1ùŽ&ÿÃÙ Óm9Êõ{Q¼Ãànjï>9ˆi·]Èß„†9%¿^^¿ ÚÁ@~„š`tSHýüöŸWg7BtšÚaàNØ\C~Üêí/?}w>,à¶ø³ +¡˜fy 3Èhƒ‘®¼Z€å@Ëe‚š¥±ŠÅ<ƒt´â.,–þš`Á¥m èñ ±0ëäÕ]WúŸµ¶;U.ëÄÒï!f{ ¹ŸÞ Aí0lËjrPD‹¼³$ùð~^¢sضmZ†`CþáÒcôzã hÚÖ½€…²ž$B¨SØ_|\¢Y¢ô 5%6|½ó*´ ºÓ ˜ãPzúBqBr âaXUÁÒ‰©|±kH X)—Kßxéb½!!#âÀy>œ,žt¶ëœád¤ 89ä8»óbnòÑ_ÐbçX"Ud·2¸ Nfœ§d˜Å§yLˆ˜Ìù~¼ÊW›àm=V´I6hÕo¦‰Šþ} Z:šG<9'Ƕ9 "aF„±Jgc&À¥(—ßøÚYêL^.ÄÊŽ—í‚GÈc>SºC‹‡¼5…"DÎQ/ˆJ‡€LKC=ò½}BïMX6º&™U¤b2+N _m‘@À Ü‚ôNÆgâyEÙ Ç…mû¼¬+ˆ¨;ZqÙ%¯Gߎ<ã¿v[ö´—w(19+â––èâ:ôI .×ÿ ¬‹ê´E—uq¥À2`µ……`óxŸöø£¥Ëº0m-AoÓ"cN¤ö$Æ—¢%q÷ƒ|»ijÇð`z㣠°µ»à×ï3 yMò&ÓÈo6©õ©-ûü¦²ë]QìH„wYèÛC^xPõ‘ò˜”He üã1”— ?ì—* TíµOÑ8@ Z<ñ@…ɘi¹¬‰~NÁÚL1øÕ×Ê x”…»;Eà–ö3?¤ïy¶¦ik?– ¤Îá¾)í'’)©Wx–û ` ÇĽ?ÑkOƽ좄Ð.iTåÔщ¼£%2*ÃO ^sU[M4ØÔÒ'Íø’¡™²bÚ 2;ÇéP“¾-‹Þ1zA)-p¬8f±9×Áà’c-ÖÅê:FÀsã^«þõÝÞwK`\[òÕv˜ZÿÀµ@àgŠ^ëžþ%5!â„©,]bÝtIt‡Îÿ•ŠÞR_fþ¬™s¬’³é I`r/­®.Œ3ÁÏgèÅV3f4ë"Â7uÙ7íØ´jN=øçß¼ N´â|׈msø«»àmùFõ;k×ÍhàPA› 0höù~ô ¼™¤-éÕ–¾ü.¦Þ&\ ñͽ=Œ»J|K¨ÿ^A"I…$ ŽrèÞûÒà˜ßúë¾ßVWZl?ò$ƒðçO²ÚrŠáç?B¬ Ä8ß N1`3ÑÀ+^!„zè›Nh’ñ„!/:ű3’1.üŽÕ•Žƒ@ Xcøc6KÆ ß6„•å"ÀsT-Ž|!ÿfOU¿–õ–ºKWÒUzN¢Ýº€Ó,µ§:” Þ$—ç{!ÉTƒ—uWn-íš{UÚ‚Ô}ªe¥I;3Ò8‹\¦„C™!øbòöަNgø·ëó¶"#„¶~DÏÙdfb®úË⇠`;ð}ÓõÛ² —|Ló©#â>à°€’ Ð{J¶Òq~ýhwýh‡“ë%$´Ÿ=`ÖIrþ.Jb¹j„Ða<Âù¸ÿµD®~fœŸù´ÉtºêÐ ¯w!º‡0›íÍÀX0 Ð=Ùî¶$¾æ u(<ðDß+íætôE|¨ú‡U c×TÅŽÃd§å²,“lÕäÏ6An!æfKvGoZJÄ8†¬Ç2‹^Ÿ:ë•ã,¬ÍC*é‡U‚èÚyÞtûÍ¢¬X#6ÌÌ[ž;¨¼1õÏ:; Obf´¾OQôš¢Œ2X^øCœÉÆ€Þ–Ø^jÚ;ÌBôþš¬ÿÛ: %±8þòRAU æîÜÙ~³++»94[ëäéýÐxJѪ2éü/¤”ŒA+µ(&ûÇ\ÿ•x}¨Ðç”¶ìêo°Ïbèë$½ÙG{\¢æÇ¼ßƒï ¼Î†–YÛrw‡|õZ3=ïþÈ+S©Îx–Ó–/ZþøÊ¼']©7 "EÉy|Õ Û$+ï z~ðçÝ¡ÖÁtΛ&ë‚S ç§psOr› xãÙªÞ”,¼”b›0c¦©^Ç4ØLë/úTÿƒÿVL]gÍ£7y Ì¿eTþ œ,04X…zÈ ¹L4Ë”v1?ïí±Ì5Ä_ÜÑGÿ–fÝ]×c»Í½0¯ªÎ7"À|Yœ,&÷ÿ× 8ÄŒ‚…HBÍEÚu^ò±ÑÑù&ٕ̔™¶CÇ1WìäPÚ)òÞ.ú8«ê*h’T@%7I–Œ—3ïáË.½¾¬?øï¾Cg,ž­2ßXŸO]M9t5‘g¹ÝíêËÎ’ˆƒ™Õ„Z¿üôú_A­Áí’ù_Ù€¢/ŸÂ5“ë¿ý èJD=§6Ø»§!Ú‰ÖŽP›plõ ú'ʤHt„—ïÿ fî«ìÛìz‘-qä‡öw‰ Ý%×P'š³w)®î÷vút2¹{à=Y¦O1ÿ{~SÖÁ‚j_~Ÿ[y¼wGC_ám»¡Å#ÁÓL¼B]ûg~8†ÿäë¾ g£^Ø!ø?'â endstream endobj 1049 0 obj << /Length 1758 /Filter /FlateDecode >> stream xÚXYoÛF~÷¯Ð[¨¢\s^ ü¤¹Š¶6bMá(%­d"I” @{gv–)¯ìÀ€9»Îùí̬ø,€?>KƒY,%KU2[íγÛlgD||wÆ-ŸŒþˆóÕâìümÎxÀÒ å³Åf,j±žÝx¯o³ºÓÍÜ—Rz\>ŸûJ…Þ›ëkÚÙTöÕõKرŠ/ŽçŸ¿ž½Y zC!~Ð@ä|ha4¶«€©Y”(Æ¥"#‹r_†žßÒó|ß6çEµÊŠó6kSüG/ÛŽöeÈhñyʸ<׫¹H¼/à|ú éjߨï'&…!J€æÃ«—‹÷.-"d2’=—.Qà]ÞTåŽèŽÝÍÃÐËš<[švºŠž«ªü'ઙsogßÜfË Ct’^Õç˼tY$9 Òž+«kšx:kZ’¾ÄŒz`÷6 ³jz{n-±Î½êªæ ‡(Kx a”Œ‡$|Üßæ&š·¸TF„ÃîH°XĽE'²%PËà\{«‹‚t´«&¯;R@ÞÄÆFRbP¥˜T‘09O$ U8—Y’ †'€”H"ÂoÓŸ¿¿k2ð½óÆSÐ\î»z‰LcoÓT;¢²áË”¥‘ˆðÃX0•¨Þ PuþîãË«÷ΨH œW/_;£AÌyϵÊJR½¤œÒb·u‘aÍ›5mçåi3y ˜”â”áI;ïór]¡ª{ªqˆ‡“ÑHºÓ5Îâd88ˬ³H2 Sˆ‘'ž =Šcï¯Áˆ–6°\ásÓ„ñª»uùÎá\àxÚº0­3â³rMDNG\7ÙªËïæ6'ðâ>ï,劉֖.«ÒˆÅÁŽ?ÿøðé>p1¨Û"ò>lH°-f´(µ¶FB¡¡ƒ¦, ÂiLWÎ:0Zrîm›ŒN„YaQ*´]‘¸Ëõ=QpØwDg]õ*U,”C¤ßrár‰ÇPÔˆÿŒ"M1*Ix^®ŠýZ:‰ØTEAAÍËmooh°Ä´5ó!iƒ,޵%ãéØMU¹+íØ&vªÁ¨ eHKcß:‡Úç/凞í»JÕ«S*ÐÚƒ!à"îëÇ1S14Yõ¶ÏM^è2Ûiê‘[P€;´zÖ§šÕí³ÁÛªîòª´v­ïò•¾¨Û^Ø%_L…Âî®Zë (Òº\“T”™˜ †ÉtTìL®~»\¸Ü¸3c,¨VQ@%PEüÐÆpaP‰§oMë¼$nƒ$мí Ŗ{À¶Ô Ÿìþ{žHslqg ©a¼ÏÛ[+¨¢hÖæÄ7UqÐ`R¦Ä4†Tš.‡‘…úW[g+,82ñ™õP>4Q³o燼Ñô¢.ªnúåÐpq—·¹.·*‡æ©uùód¬SžþšíêB;¡„sš®º©V”a´€ò*|LÝ%û/ûiiG6zÜÕU{!B ׷;|áìçdŽéæ|èæéQ7§+–X#„C%Ÿ" w‡^ü´¶ÁU$=´`|oZ<ûÖ<Œß=¿€œC8gP±XÄŸ¬†×1»êÃDàzô³ S„ÙœÐi¯ŒÅ1]Œíï(e ó•n[öâàA‘‡K?FúÇ<빟ðíXè{_¸ð 1ÂÚ¥8]01O¸0yBb—aû‚û¤×è-!·é„”iT9“SÜ£-þ±‡ø-wyGl–Ç­¡*Ž% ïßvì>)|F¯ ©Ç“lµ‘ì•âl/n•ë Ÿ@Û~òò =#~­øet7Š~ÏJHiÃúdþÝéÌ? endstream endobj 1055 0 obj << /Length 2304 /Filter /FlateDecode >> stream xÚMÛ¸õž_á[e fÅ/QÚÃf‘l±Ø)zÈæ ÛR[r%9É`ÿ|ßã#%ÊCgf‹9ˆ|~äûþâðU|Uå+#%«T¹ÚÞäÚV´øçOo¸ÇÛâ&Â|wÿ毴^ñœUyÅW÷+Í9ÃeÀºß¯>f¦\ºÿùÍûûé&-Ä+I"æ3š¦XqÃ× iWE©—ŠÈqµÞèBdïמÝÝ­7Ò¨ì7]O›wÿúéYrÜW¬*Dt¢öý=ïïî>"æ§ 5T±ÜÀ ‡ùu-ʬÖ¡ iM[O´ßÛ¡9´vO»ä—ÁÒâk3>ÒʱåVC÷0âp±ÉêÞ²õFñ*û¥mÿPŒÈš‘PíDìŽî¨Œ¿çr>à ~ïG”ôéøÞpɸæÄýÏ?àQGÚ$~ñ£³}Sín$X÷@ßñÑÒ¯žcëöp©–v_š:¡_ÁS’­¡~í¤ŽUÅr-:Ê]šì±›C¢£FžÓÒ9Ó²z5)-X^ìÆ«`Z4Ù]ç²æÙ ¶ÅkFдӧ,@¡¥\j´iÁÏ*NzÂÅ*l:ý‡=žq%Èxc I¸*Y¥Z»í•¤ž4v4à‚DGÓçÁÖ㥷¸UÁËìCÓ#¨Wå…·¨ãù‰$­¿Ñ¾ñwìí†D¹bªT^t"9ìúfë<]Qܹ"~! ¼åÜ–D‡0yvj¶¨]Ìá× <6¿ç\íj¯;ø=O #„ÂÉ!.‡·øC þ:ŒÈX OðÃ¥ÝÅû]w:Õí~p’äKëDA†Doò Î¸"D+BN“xoô 2}´Ž”˜Hªÿ‰ð&è±;,Nb¸+‘ÝÙ]×îSÞ-Á_e»wÊgŠ‹€´ëÁê4(Ï[QÉÊœ/Up>ªÐ圱(êu$nˆeÚw§+ÜX7×èCë‘ 5}B",34d=îÐ|’D§Æwvð îê6 ;Ç iIµ>Nó…—nÑžOèðŽ$~†¦= _¸&18ÀSî›>iÎ &*ñ’  U鈌ȓĸÚ:qK×ñuiMzr§B0 ©4›—L—åËŒM‰cÔ³cÄŽÏoS¦ZºGÄ£(óì\÷õÉBirŽ ¦ú°.eÖ]ú5¦@ÌÛ6þãrõì/¶Ý9+9V8‚{£Á9Ú{‚ºj_ò`Z×4¹"l&ßÂßp¸lO®VºC‰p÷qœ›X,Ü’§ïi¾ƒ[°lüñ+Þ-|¶‚RRÂGPS㢢Kc¹œOºoc`…±O—ñeUÁŒ Ƕ—CÒ+ –óÉuí·Ñ¶¤?¼Ø»‰†ÚÒŒ®Õ5h?›yå’ZþºNÔP§|åoH‰"KÐ{8ñ{®óü¹AÙ_À_6 ß2¬ÐL˜eÜÃ)žâ†ë¸ØO¥â2óe²‡„|B/Ø:±M ÙÏ6Á ÙÏÂc*! /+1õ>ìs6Œa*× Ã g\à ɴa@>©_ßjÉ´ªÆAjiã@“4J±Œò´•@ØasÛP@‹Ù'cH®3ŠÇÈJB­ÀXCM÷©ð"d=Èé T©º‹k`OÝ,ž\3ñ;7#à"©K¡!XJý:'çLfn¥ dŽXo Hu5|IÅ@c¡Õwo3 zÅ€ñãfGJÇEªÑ8ÌlL݉Áf¾òïI)™“,uI|ý†pšÅ\±#;£K?ýHE†úd T‡ö¾¤ Å¢ƒû=9­ àdXT9+*›òî‡CgÕ®®kÏ¡S´×#¶* ¯SÚ}%(áûcvÀÞDè‰ñþúRÇäçÑQc‰WFiï#H†‘ÂaÐý‚Ê|kŽ1­£€Q!.p±›@ÅÕ¢ „ÆíªAЈ,áq­ ,¥Y)˜ a}A{¡'ôq}émǃ¥Ö& ôlä+Dùœ: í%3!”SS¨eHOÕ©…,¾©ãÓWAn˜ž}òëc÷|>QaIª Î¦W ùþìØ®',²ßz²Á]Gh8L9ô–àöt}sŽàíê™´=ýH“È|y4[8 _%~j QÛħ”jêíö—%HM(0¹á‡v”—áW/nÚ´F³r.ÉÌTA¸L ³iÛ»q >z\ó.Ø»»ém£xf5%Ì¿mn&i}• —M#Ôè±T^õŽâFïøã4Ëþ©ÆñÞÍà0—ÕnrêlöŠ» ض.­âj× þÖ‚æçÎmOûKYéømGÑó›§N9fz~#º^LÜÌ•6smºn¢°tά|þ+“ aç·ŠÃiY-2åü('9Þ`=H“ýûѶŸB75¦ËiñÇÚfx´þìÕ\> stream xÚÍZKo7¾ëWè%9˜"9ÃWÈËm€¢i›ä Ø[¬5¤uœ\úÛû %§²¤T«•šäâ%gÉy|œeI•CTŒGdeIžN9ö †b¼³Ð1:GRÞÊ3«`ø¢ 9ö8‰0žT YåÄ*þ ¬qDTÖì0B¬É*ËɃÀT  Æl0Ÿ”Í”±,ÄÊÑ+NI9c-x„"+g=æ!’sœgÈî° ç 9«<4p„Ÿ³‘Áì õrö 26•¯1ðD Áäóä Œâ2¬#¤ó&)2Î P0GE+[ƒ?d³í"E[‚2ŠÈy¡<¨\øðÏgY‘ŸÏfP2 ])`ÒÛ (Îç°g bGGÉìKØô-ö9,á܆íA°øÎƒHŠÙÈZ›™ËZóAv‚ÏÊæB=_ü g‚ sQ a`MNâC×±¸”A°"(lbŠø"9<ã)ï\q>ƒ åKL’Hóìý^‡1 Ë'#¬’ì‘|Ä6 Às|(Ÿ²|…u3‰l×v@e`ì€ýƒ•5ÌP¬„±æ¬ lD6N*ˆOA± !Èž$SVóÀ6 ¼E#è4°]t6÷,Ðá)ÈL*Šq½ ŠmY(Aµ>#ÄÊ©mÃI…xIÆÅ ÉˆÕ ^².ôîÝëõ«W¹Ñçªÿû*9ÞitN®Æã7½û÷ ßq=iÔ½{ª ƒ.ø†¸ ±… ç/ÀxÄFò‚ÏûϦõÉ jÔ+ÕöøXõ_TõyåŸ.+L Ϫ^ÿv©&ÍL‰ëñy¯ÿ¼šÕWÓ“jV‚Búµ: ÖÕ+Ù/1»7Øf8Å·ˆ5fÎ÷`2©±Ô«nD–•-Ë|¯ÿ°žžVÓùbæìxQ F£dtÈz« ˆ¡\ÞÁ6¸zÛ”e~MÞc±bœêÿöüéüÏó¦¹ü±ß?­>Tãú²šêéÑå´þ ËëzzÖŸ6ó™>o.ÆwÅJ ÑÄÙ²?š·|Ñ‘‡뀣ÓݯˆDa–®~Mfݯi'¿.+˜[a OW`G‡|/k¬£tvn+Ÿ³FÃqÝ]º„êŽÞEêVÝ[šÛnˆ-½ò^í®GØ w×Ã#=¬Ù Gê®ÇöØ»Æä- æ]¹a÷;0¯¶ ¥` +‘§Ü¬ˆ<åbeß”{œ­OÚÊõ» ¨îØmŒ?£'ƒÁë;ƒƒ×wŽžBÃéð¤}¨^62ŠÚT¨8«f_¬•ZI&w h¤áp"œ³Jª©”+XA¥Ðê it<[ùØeœ?Tiµ\xt”÷pÞ฀oiŸÚ˜²SÒ 0ÞÉŽKN¯9¬ÜÄ®ÙΙî¶söÛWRbCŽr¼‡V¾…³W˜|p:¤¸Gp?ÄÙpΆÛãl¸t@ÿâE®óÉî§#mH`äºëHô=`˜Ò­BK­æ°¹­Ulá&O…ø7.œ™Ö Áv7C,×'lö-KœAYc¹/‘=9mqÔå %Êö àQ}qQOYÿí¸ºXOúìZ¸k…‰Ø \jsò¥nü í{wßm?÷ð/jKoû›‘›²“÷o}*9lÅ!ÜúRv²#ø–÷õm§JSÊ`–ÞÐËvŒ~íù×—…ð Q‚1€!1 eBq˜6 ³,Ë“ÓQ3šœ‰0ïFãÔß$W©òsD…DB Á*ÑWÄJWN^J¬äÒ$±Ü¤ZTÖÛey8lNÎ[5ܦÞ\a uÜXà¯02gi]Óˆ$px¿8|燀ÅLÛÁñÕ}ßüH¾¯>Í ë©<ÞÞ@a@tï#µüAd©E­*eþÅ,èòÜ«]˜<ýR‚ûê—ª endstream endobj 1061 0 obj << /Length 3480 /Filter /FlateDecode >> stream xÚ½ZIÜ6¾ûW4r5àâˆâ&Îr°ƒ8@ƒiÏÌ!ñA]¥îV¢’*’ÊNOþü¼…¢¤*•»œÃÄ@š›ÈÇ·~ï±äM ÿäOoœRÂëüf»•Òh÷xÃ~ûJ†uX¸™­|ûþÕŸßs#SáS/oÞ?Ü)6ÇUïw7?&Îß~xÿÝ«oÞÇL–]y$®<;ÓÙéD&Æ3*›k!•æã¤¹Ý›%ßÜndrww»QN'Øi;î|‡7·*K¾½CÒè^x›YÜn™åÂJÇû}sw÷ãÛ}{÷!._X‹ÔÁ´òÓm–'E»ÉŒƒÃªÇª)êú™û»²¯›rǽ¤Ç¾äƧjxâÆ­¾}pOØØ%EWŠÛ–>ù¾Êî5,qYR ¼´üˆ ÛšþŒ§ mØçx8@ æ»o|%º7R i$SÿÝüV™§k(¼ÿÙUE]nžkxpx*¹ÁãT]4Ç[™%|¬Šg ?›Ê‘qÈâñøU6k/R£ÆåÈ­’»ªÙžô6;>x~™Çÿ+ o(™ ™µÂ‚-ÑWûª.€Áçt+/L¦çd_Ö #@VãR$k Âeþj.%²ÔÄ-éJ¹Lšr[ö}ÑU¨j*OÇ ˆ•¥4"sôÈC×âÚ(3Ÿ­ùć²Ž]Ù f«R¹PV¶ò·ïª®Pi­™É&Ó Ï v‡â7ìçIÕó8²íª{R\Òh˜#†9°«–-ƒ†Ùœ`(dM/ÃÀCÛ ñ ôê§Têm1T0D_¡Ô¾ä…=ѨAãûN?âòžtÃ\OŽÍ6ÌnŒ2ɶÝïAÎ@½ö†8\ò ÃTÕà_MlpÄìí["|WÖ¼ ©­Ë“ÍS‹ƒtR·‹i±Fô]¹m›ÝšnkpÝz®ÛkúeBK‹¶Èè)ØÔþPO] £—ÀÆtè0ai×îǵ §0ºàÇÉ};®/nü'jé¡U †v¡†÷ŰÅ%àkUjH£ñ´ Ù 7‚âqgWâñä¾y¦ž¹]ðŸ¾jë°šIE7’{ÿTu;¸ÖÏA E:ñóÓ¥Î]0‰‚™ÇC—ES: Ü&®ÿç…ô~©"Ѷú5 eþ²–ÈÉ÷¡Í*/“¾Äó}6'†™PG„B÷Ptž„ú»±2OÞÝæ*iÝð¦ S›üB!îyÜô×c q ç­Ù)Âø\`0Žößr“•–W!‚ST'á0j«R*êžR:‰ƒýñ~áÛÏÍnƒsÀä¡c"‚º÷Œ`F ¥m6b ĺ€e„\ ôÖ„[>üþÞ'cûPnr +ò@»fý0³¬,Ÿ¹ì’2\ÞÌÎ7óV¸è&ÄýñqU¬H'5)ʦg¿ “°Qîª<{NNq%\¥^äKœð9(l—FïvX» †©x•ŸR“v M©ˆïO ¤ ܯ߄¨–aì< ;øL®‘Bu>?ƒ†*… …Ð "¸È={ÇØ”{d Ž­³D¥Â¤êúÛ¯±O»È–<Í?Ï—Ÿ àËåËË\Lâ!ª0:ø®,ù‚Á’[P-˜Ñ J€ôKF³;nd}ä(¾`㙀ï‘z–ñ´ò—ô h”.»NŸ¤ÈlôºÁ{ƒ•Ζ8adÜì]¶Î ¡¹~—¯7[æ26Ö0ˆSª3X¹ÜFžGÿû÷ÕÛòœ he­.»Ø¸Ë¼P­{gÐèQöà×¹Wl„Q»gÁUcHÊ`l³Ú;ÖZvQùºh•Ê,ÌâîÍ…dB ŸÍ ×.*O³TéÈ.¿×,Œ{)SWofËW2äÓMGPP)Üîm°å“áh}p4´ß!ê$€N^û N2 ì1 †ï1‹Q§æ8€Ê‡pëåiø‰ËÎ’t°a﮼}XüÂåO¶¼¬{ñ~sð¢i€\!š^ÐF€ô¬ŒÈ}ÍùÉ\×da14Ä6Åü³3g²©>=U1ôÛ裘ŒOU]ó0;+*¸_·ƒ@¸Ÿ'ÿèXP#LÃzÄ’_ÇÉ„ÄÄ—û€Âü3wïÝUÙñ¢‡[®‚м` ³óÌvReýœì¸-Ÿ¨?ìÏ›ãé°¸=® ÌT¤S[uOÐÌò諦/;Êžà „rOá<„”2êCœ_x˜ C³ù…¬µÛ¼ì¿×RjˆmÂh”x ©¯ ËZdS¶5spÚÙ¤in„ 7§ȽHmTº¯.9úè캄µ-Ç|tmKㄚ˜òÕáø Þ¼5bwUÜ×#ý¬ýä|4 S*_•p~¸]û°¢µ|cþ@ˆŇ5×ñ¦žÚããÓªÀ.vB´ÿ/&zᔺÀCeÇŠ•udØøüO‡R‘ºÛ–ŽÿH¼mª‘š å˜×˜XNxЗÐ\p‚ðQ]õf™Ì´Ð1óŸˆÑ F·ßWÁÈgF‰\•*{î° „|²lLè0Ô¶˜È)?y .˜3‘´©ú'ž(àvŠÑâ‚£iz×+žgµ”;WƒëêŒÑíüS¯@ƒ”š½à¶¨¹¿^O¥ï—ŒAí™X½T¼DÔq¹£u¹›ã!Ì[TnÀ”>÷5×<*QŽªÏä/îÌùÖK¹£3rñ]?ðè¡£Ò6G{\ºk .Ð[ÿ5W“ãæ)8ÁÉt×ý+°cŒ‚Ñ1FS!áïøËˆî×BµI…›Ììb.êÀÔü”Î`|CÖ9ªM= I¡Ñ˜“­œ†—Ÿ½¬jÆThûT@”Z;>7ÐÌO2€åÖöõsÄA[îÛ¦fj=wಔù{OÕ*|qàŒ~qÃülÃûc׬o‰±i*mMðŦY*ì9•!¦ç)ÅÞ…:»b(×ÎSÿÛ¨ %ãc+£3aoU`¦¨=é&N\*sø¹Ïÿ¾e›½ÿw4èµK;jñB=ãzÌ}šüç© GNpè` y5àüÈÀ–ØmOŸtâËAzR·›#9¥ÒIÓ•’læPžezâ¹¾ÚÀA÷¦øÀ,7Ü|&;,˜_(žyœQtÏsT„ÁûcUïxh–ÑÃĬ‹Àµ å3ò„ \PÑq°g”pC­D µµ÷ërÏ2amv¦’Ÿ±oP” ªÎ]>ª ¡ç VEvöئ`}Üãÿïãs.&_oÌ9+â’ %[jMºûp<Œ¡¶áTðUQWÿ TûÃXØ$ÏOž¼ ˆ(a%VãÑz¬Uz(ŽõÐ/·–˜£Èô%‚é¾È!äó/± Ý0WãU†%×Nãí*ãØ€ „©Ìž„Ê7µÃ7¢¹Üp™ µ-ú’çÊb¸ 6Ñ8B±ÖíÚcÓɯÇv  wÙàÒ-q‡òZÞäÒ9Ü}ÉNÕ,æl€½££˜).n4d„µ@ÿÞ0èQŒÂõôxE ]¨r} ‰Íø´0ÎF«…YmÐ~è’"ÁßQ#–_Ú¸EbMMä-V5X²r¬)¾}^{ä zûšëŠ —.DÔóP¸ PöÛ¡®¶Õ@è:M'Áóô<ÇÙ² Ä™ù£KŠÏ‘2A:É)Âtµ_Ý—'¯Qÿ“T:Üà+|ñÈÎa¦‘­/¢®û9 µ –‡'£åá_ÆŽÔ¨š†¢öâc •¢8h< €-Í Mõ }cqk?ÛÃܸ!ƒc"㇅ü|„_´üW¢|bü V²¤Ãž „†sœ¹äì÷ä¹û2Tã¦XyâªUô# c1Ûjú©ÃBÄ«þ_+M*¯•Ý7wBñasMœéyí¢?ÜÝQ´Ö, œŒ¶ MøÉ‡Ò>QŠ> stream xÚUKoÛ0 ¾çW;ÉÀ¬Y/?¶Ó6´Š–ÅÐö Ä²ãÂÀvÚûó£LÙu» r°H}¢>~$æ…ðc^z±4•‰·«Wáèí ?¯VÌá ä·ÍêÓ¥R i¦ÌÛäËP›Ì»%ß÷ú0˜Î„„©Ï~ ¥"ë5zòÖm]õyB®ÀÍ£X)’„þýæzu±™/Wœÿ'K‹ü‹fÄßÐŒI™Žf°³÷½Í†Å”%¢Ž @•ÅDÛ »¶®u“Yƒ“»ÉÊàFÙ;@gô`2çÌØ6•µjBŒ7í€ ]Á±ì„hó\öÍDBnö¦AÈÉJÕ¾3/š²ßO7š¬ʦ°iyK$`‚2…Ù¸(Vÿh™ ˜M7É¡3}u‘‰„*MYÇjþCNÉhªâ ­ ]6xáSYUvÅ ÈÁÈÑgd[—n¾K׺ÇÍ­vöà͇vKIHe,œ ¹löÆŽ–„9§Š'aÐ!xÐELΤ˜**âYG_EP¡RoG–Ò–·j-­§í—Z‚1´øíØ»2?¹cøÉJÈX˜:öt¾ŒŽµ][tº¶Ÿ{3߀"@C¤¡|-Bwl°| Å…$µíÔ˜d¦ú‚ŽÌäúX =‚Ç;à{ÃdÕù@QPI*$t èOh’º«Èä Êua ¾^ßB‚C÷¿´…í<åªÛŸ“±”2ž¼_¾¹ô¡-ÎÅâäŒ2σiú²mP°q˜AIP0C>Y಺ÇNwNª‘µœz²·SsòËO„«/'µ¶'NhŒóš›*.A5?;—üìÓ¤(Kg ÐËÕ²‹8éL£»wÎó ¥)´«zO¡@†)µëWí2>iC}±91vâØÆ;˜ô´6ýG 1]ðÔ•ƒ™6Ü¿€>¸Îo2·Stú#ø £7 endstream endobj 1070 0 obj << /Length 2777 /Filter /FlateDecode >> stream xÚ­Y[oܸ~ϯìËj–*JÔ E"‹´ÝES,¿µ} 5ôŒIœŠR÷×÷\H4–gˆ)ò<×ïž»þ‰]ïŠ4*YîêîML³Ãqǃۿ¾Ž.ÂpAùöîÍþ’e;GU\‰ÝÝÃ."¡§º;ìþ”bÿï»_ß¼»›OÊ’ä•W"å³;‹|'Š(™Ä;«¼”‘H%_'ò}˜åIðv:Ú}˜Y ú`Š·ú ƒ$0ÃØôÇœ”Áû}(µAÓÂ$þ½±£EöùV¥2OðVPEZD2®ü¥‘X\KDœ.uS‚ Ù.U$·ë_±(˜v­F‘D9ÌÄLõ³é:„‘•Úæã>)íöå«+âHæÒïÓÖ†‡Æž[õžt{Mšûÿèzܼ3“Q’ ¿™tÆ÷ÙGqP›îÜê±1=¯ÔªïÍÈãû}˜À}LVðŠ]˜¤2*”:DÆ'?žšÓ¬ Æ“ÀŽG忺G)G=°)`FáŸ"èöpÑÔŽMVÒ<œ¡íPK`¾ !ªàîcw¾éÛ' Zµ<åËÏîÒÞó㯷Í8ÁvÅÒ:ÆP¤ØÉ"X˜ÑÀjš¢8 7R <ûîÜ yj°I´é¡³y(²(Ë‹oñ»Ó¦3$"* ±týIµáÖy`ú,)=i=û[QVÆA´Z¡I>±÷ÑÚ™„2 ÛŠÉšž×ȶ8AJÀÁR Ls?„)jk½“ ‡ãÇÁ ýi{«jÍnUäQRUW^¥ÑP2{ÆΑYeöäov<XÕi^:“‹ŽÔŒˆdyÜd¯6µÊŽn‰T8‘pÆLãyÁeƒe· Yy%nîЀôy ¾ìÎ7[Fn %sÖL‹à¨{=¨ÖÍ"2-ƒGg¤èµ>ð=WkÓÛæ€ºÆYÕ¶ÎÊ•ÏÄ%xÂŒ M0vËed%Yz!£mù`U¥XžÁ6›T¤‘¬ŠF'ÀÉÉ44ÇÛ”œ ÍR`![k‹œä5–K„ý2þˆ›åÞ¹¬mîÄ’ŒŒK5Èà¦À}Nn¹c§'cËÚ ÒÃw¦Ž~œÅV¡s<íKÜ S%ª°ñ‰±|„†¸côçû‚#/‘1ÖDúÐŒ<5‡Ü†«š#\—!¨9t×=“´FÐÅpìBÍ0ñ‡ïpoU|œÎ|j4Ü?–y ˜Â5䨎‚̱NQALë'¡›>GÞðŒf`ëyÁÉ–CçqëKTý¨õ9ufÚ¬ r¢ ›Hc…”è÷.Îå£ÐK½‡ >ªw˜‰“ŸöÿC£«¿;0½_Ö¡B³G /µ™Úà nfW=´z½2޾f¼Ÿp5Ôâ`·*r38’N6™í¾{âûà cN&1Wø—r‚ö&ÆÿitÉ — ÞéÎ#7wËÐÂ:òÁz¯RDPƒøëÍ™<wÀ]pÏäôñ'þþúrߦ0Ùw9E"<@wâj±ž?+ßTÓh:ª†r ô-E9X¥(fcá @RÄ£¿é¾Ö7\´<`t!iOàãͲ¨Zgzc ÌØ½¸£§ø…k†ÿÖˆ+d¿GoÖ•u|å‘Hgd6.ƒ_p2)°üøã`˜Òû^…ß\PàÂW‡€Å" â'¾‰¨;iÄ*Þ5>¿ë9¤©º6ÃtÓºØv¡!1È¡Do½g˜‡Í´‰3/ ¸€‡¥BÌ?«?¨á)t¬o9R^Á;6¿ìß¼$š9ƒß†õqÚ†ŠÑçVÀVž^åóu£L\F…€×NRD…Ìç~CÂý†[L»Ôή1÷:6k‘xÝ‚ø ªVëtg5C >ÌŽ<5h—†ÑºBÉNG€„dë±F²¥ËûËnO'QZÉ] ÄÕ×:>ž:\s§i¥ìëCIÁX·ЖØéˆÌp¼æG&%lM_ɧ~ÎÏÚCbUø"ÊÒdQ>Š”m¸@rÙ˨wuÌÁxÿn\iœš±¬o\qõ®Sõ\à^ÞHã3úY<èÊò‹÷>üì˜Ã ˜î»fDå…`r°öK®³8À½nQÖ"ÛIˆüË+7ñ=tʽà¯,ÓûèUôœB2ˆM3t¾ñ‚‡»zgùÛÊÀ4½.æ-¶˜Müͬ#zÁvZ‚ 6Ç|gm x0;œ{p*¦b (–Ï…tî%- tI½›o\èQ7-âàÝÛVµÈäÕ*âx†jp ÕÃ`†®²îeãï]GW{B'L‘<0sÐÑ0Åü”¢Aév˲4¸c×quʺÁ–¨¼Tî?lö‘–ÈþY=†.ÉV³ò]žbà* !epûî³mKçæÅñò½UIÄÈnõzv©e“cÈö|ð0¹ëû”‹*Œf•ã`~—,i™cn‚ÆPZÄù:ŸÑ1q|Ii .p2Øu¤ª?ñÅDŠÿüäÂduô™ŸxáÒGÃ/Ÿ›!Î8Ĉãe€ý³†ð¸ ö—8öÂ-Ž~Ù•ÿaFÍý Þ•ü4r‘ƒi#)å2m¸™Gª8n4 ÌÜtÊyP =u`ŽÔ„“­Žn®VöÄ“ðQþ‰„ăãƒá§¨- vÞˆ~ßÃ=ùW®ï  @½Ðø§DœÍ‰8åDÌ?Ì¿Èåo_LÁàrÈy!SÂzü«øO‡Çóx"~s/GTVâàÐX¨3,k¶¢Ê Zè{xÈÕš žiyzЖþD:üËÅ+Ž~5\Ý\`äØE2ó\2ŽÑ…øÐ$%ÀÂI¢<÷R‡PTîø†8…Leë¡™_Tx8f0½­ßDª(.äÏ1Á¶—GBÌ‘»ÑP/óoÀ—8JâןÁOTfÓ³¬³!6ÚašeQYÏ~£¸ª€D\P±¦‘,‹¯T@ž:\oTdׇΠúíiÐÿ ü¿\™%Eõ°|%_žú9_+}^J|òU"¡üirH¥6G…é•Ð×oHáK Z½ø"­4ô¸/øÅ|%aÿ l!æ¯ø­uA¹¡ïÅQ+UEÅÝUU½’ Oýœ•µŠ¯*¼némK½k§Aû~«/pÓÀºŠ?T3øW^kºC*¶L;u®žîfœM‘"ïøûóu«c®ÂÏÓàû÷¾ˆIgÕiyv²+Âûºz»¿âuôÍý#4×|þê4Á\-~?ôõèQ{]¶Æïãv?)’Õ€æþ?Á€ à endstream endobj 1075 0 obj << /Length 892 /Filter /FlateDecode >> stream xÚ­UÛŽÛ8 }Ÿ¯ð£ Ôª%Ë·yk3Û.Z —»@»G‰…ú’µäÉôïK‰J&ñè °0`ÓER$‹RxXT§Q™e´UÔôW©×NÛ…/^±`—€arbùvuõú6Ï#–Ò:­Y´ÚœºZ­£oäVâ$Ë2Šë8"'oç­A•Ö(€Ê ‚|Q»8á%'«‡í+T~”ºÓCÌH0ú ,/… ÿ]ýuu³:Í9fDÎòIH,ÍÎbª`5ŠJP– Œë{ÊJwê2~Æiš­ÖÚ4³1GˆÖ¸Ø*¢k0qƒ+ó£ÑÍׯ(ŒÚÜô²YÒõWR„°À› +pýÀfÞn•±z›qBºßMc ØïÝKõjp_ûÿCÃ0ÎCóxÂ9QƒÚ£0©NI£Ë@Þ3½(‰˜²ÑØc†L/»Å´M ÕÚª@˜—@Ê"b‚f¢àg´€wE«šã€HÄI^pòJš¨NÌJAöÚ¶NÊnWÂ}d5e<ܶc¥”DûoA$~çyìwÜ!åäÔ«µ¶˜ââplî¥çþgpq—Ïj<ÛVÚ°Á—j×#ê†Ñ¢¢•Õ‚³“B+d v)ÓLúÎ_ø`ÕªIyæ|pe9ÃàÞ»{T.³û©—§ÀÊô®S½Áõ“Ûa[߇@Ü(içÉÇã‚_Õ;^@øýžæ©¢[ê:äyÒÀÜàRíêÙ+<Á¹ G˃`Ô½³T“ì‚bœ§F™³°0*Ï$äZœëkd¡³îˆ*'zhºyåÕ`a­U§•áÅÛ˜1FÞ8*>têb°ÓO¬¨¿“ÊáiI+P…"ÿ˜<`Ý>xÉ~¿O6ò¿‹·#ÍiZ‰ÃN¨ž î!ŠeO¼ßkµOð„Û7Ÿ/{¹®;ÑžµDð’–yy^ØsŽ•ÿ·þ¡Ý/ó/‡+3Z@ÏEE¹¿ ëäÄç]qwáÔ£j­Ý]»éD^Ÿ¼Rÿ¥þíIØ{ÀAW•Û%è z‡hŸú`ýôÇK§G¦Fž¦ä“ï¬Hl£`v]Ãâ?”{ÒŽ2˜ÁTšX£9ÃÙ…æ˜>δÓôõ~¬‡®ÚÁLÇf.±!Œsø×ÆÌÇþºOn,‡–}ù0]5tvÑ\nÈŽÝ_3_2¡ endstream endobj 1078 0 obj << /Length 786 /Filter /FlateDecode >> stream xÚUMs›0½ûWp3…"„À>¦·3íä’0½´=ÈX6jøIÜ_ß]­pì$‡Ž¬žVûñžVæA?l’ "Þdë jW‰CÇc@ÆÝ×÷~8FžŸÊÕÇ/R<‰7Ɇå!œÇh.^å>øÉÖ"ü]~[mËs$™¦ÿ™=ßä,ò€qÊe†9¡ª|Å\d”îfÂHp¦»½y«ì&Œd.ØçÙN}kþšîHøöþK{Ý´™®¡½¢,MY¥:2v!80M ­¬iNÞ#Œ8›CÎ,.™ÞÓÖÔÓ÷ÂÑ~=ªìäâfM;,qvèämÓUͼw5»µÏ«†aì‡Ñ¨%@c:Ȭ1³]Žb{Ø1—œú9W@­ç—­§Y\pdßyƺU•}"QÄkqöû•ð¬Ñ1$VÖzÔ¨Àš©Åè0åÜ걟-!¡”°oÔ®ÑzªM…~µ? Q…®&Z¹¶Ñ@î ¦kÂçÑô#Âë´íÄBzwßJ“òDDyË,½¦ÃšiV“é;‹‘³Ë2R¸#NtÄÏ¢ã¢íÝjo°õ…õ=í¡Òø}QWy ‘£T²ïú´3Šê“¶Ê+þ&“ÕÒû@TœêŽúm¾bÑõ¬9õ8Œúªt•¶€!˜êöhdìàd ¬c´›ó®üÐ,!VS÷ýƒ_“ÎL5¶÷VI"›EŽ]Y<ƒIΠ¶<æ~¼n{‹Ë”4”µ¶š ××v ¸w¦É9ý„)‘\SàîøCd¶4÷ÒÏô"ãAU¦1’x"äÉLµñɶ8 ÔCtnâ…àÒÉç)¤ÉÓ«Iâäe`n£çkvut„وŻmI»Úz‚yg y‘Åy.—¨xd/‰Öd¨¦AÃ7Œˆ4€Øü‚X„¦ZMd9ŠÑðÃæÑÙFD@š@ÞM~=GþµÃžeìG¸—Â]Þß*Fö—pyïÐÍÎ;|®Ùš}@&§Z2õzÕ1ÞÞàEZ|q.éŠ 6êIŸêªñxùgú\ÚÌ+ endstream endobj 1146 0 obj << /Length 2589 /Filter /FlateDecode >> stream xÚíÝIo¹ð»?Å;Ê@šÓÜÉädO6<º¢HòØÒDòd” òÝÓ ›dY­’_K—!|°,•Þߨúu?²ßÆýð‡|°R2¯Üáòó«~úîÝûÃüÅÛ߿⡮ »¬òÛóWß|§õ÷Ì÷žÎß4çlür©:¿:üõÄ©×;ÿÓ«7çñ–´Äȱ²È´æÀ-\«1sø_§—jŽûãÍÕÇËëû1s.UL*#ÆÒáÿ¯zæ”™+ÿ|ýŸ×´úäãÍÕõÃø ‡®gÊ ¹’3îä\ö«ù¦$?8æ™BCÙpÛ½«2—UYÖ÷nH~þë×·|þK¬þÅÿÙ/ý á,s\´w¬þÞF´TwYùId³‚79ÍLÛ"ÙCžšª‹dÞ˦óLËáFaJû9ûÝ#ìø\ö߯îåÙiÁ¤qdv©gj¦™)޲£%Gv a'8“<œÆÞÓØý¯±{yvýp¯'8™]*ÇÙ…šÇØÑ’#;¼¾ê”ª]PwJSwÚ]÷ØJžü½ä'ÓF7Ù7á4­»uæÀ¼tš¡ºËÊKGà&§ÞKU ÃzJP“Cõv2¸É´«:Ôàpèl¯or>tzìÐ!&/‡L^ÃRW gte8N;6~!N.ÊãbXñj׎‹­ãb™hè-I*Ç‘äã2èù•˜‘€ä‰âÌk…!¹jHŽ@zKE’Êq$ù¸6Ð’#\ ö¸J É’#„ÞR‘¤rI>® $´äˆ$HDÏ® $´äˆ$HŒcR »›’#„ÞR‘¤rI>® $´äˆ$HôÞ£»›Ÿ’#„ÞR‘¤rI>® $´äˆ$H”e•»›ËR‡Ì4è71)¡ÁT)©—’ÏLjT -9JÉ…i˜µåçz>œvµ ¯ÃZÇýÒ5Å`„~Ra¤rF>"éQ´ä$0„aBKÆ}ƒñ$¡ŸT©‡‘ œ˜a€ä×ÌJÁh[™c ¡·T$©G’k -9"É’^3Á˭̧¶ÙiL•’Êq)ùÌ*χX¤Ð’£ ¥¯˜ñå~æv¹Ÿ¹l÷3O¹ŸYúI„‘•£0V#Ò( bò&0Æ'Ho¸øÐ\<ÉÅÜN*‹X«Èæ£Ñí -6šXÇ$¬dÆpÜÄm3ñ$¡ŸT©W‘hã\AKŽ.@rÃHÆ•ÄaÜ5O‚úI…‘Êqùˆ6`Ð’# \ÀÐÃêRhÆ—ãI0B?©0R9#ÑÆ -9ÂÉ %ï-ã¦íb¿~»ô–Š$•ãHòqm ¡%G$ ¹@"ù0st úCCr’Ð[*’TŽ#Éǵ„–‘€ä‰à¬r"ùW»Ò±Ï•ŽÐ_ª“X3Ɇ_æ ÅF$ëØÂÎ º|Ä}C²’Ð`ª’TŽ3Ég¶á„–¡€äBJß³^–;™/ía—¯[°†~Ra¤rF>"mP´ä$C|| "/w2ÿn§}N!Kƒ‰R²rTÊjfø)„˜¼HÉ…;üÓ—+’Ÿš”¤„S¥¤r\J>3éP)´ä($RŒcÊ–û›‡&e')¡ÁT)©—’ÏLJT -9JÉ+)’+æ-?>n—Ë» Ÿ—ã¸è¡±ÖéØàGÞ_(TwYyÁÞ$ò¬²ñ½Šˆ©ã»ÁÄ:“ž3S<×ýí›óÆd'&¡ÁT&©g’Ϭ¼ÿ™˜ÐR'& ±ÊDûìýªN»ÓålòÆd&Kƒ‰L²r”ÉjfÒÖ˜SG&0±ÎÄõÌ Q0iOeÞ‹Ih0•I*Ç™ä3“¦Ê„–:1‰u&¶g"=5 2yטìÄ$4˜Ê$•ãLò™!Lh©Xg¢=s’6$;!™ÚK%²ã@Ò´”¼ Ç*«Nc¼Œ*}ã®áØ Gh0•G*Çä3CˆÐR'$ ±ÎD:æ,<‡œµeënLBƒ©LR9Î$Ÿ²l¥¥NL@b‰pLq[0i둽˜„S™¤rœI>3älBK˜€Ä:n™×¦`ÒV${1 ¦2Iå8“|fZêÄ$Ö™ô–)¯ &mm²“Ð`*“TŽ3Ég†0¡¥NL@b•‰/ç§'TN"\3ÇEóñU¿€ØYºN´“•£vVƒ,_´7Š ¦Žv`bÝŽ3L§7i=ë.ªoWlx{v#õ0/¡ÓT/©÷’O‰ªZêä$Ö½XÃ8çÉËuóòL^B§©^R9î%â…–:y‰u/F3£—Ë3q™MÕ«q,Ùä+¤È‰Ê:®.EkÆÓ›×œÕžJݨìB%tšj%•ãXòá!+ZêÄ$Ö½(ŬpÉËCóòL^B§©^R9î%^}—DL¼€Äº©˜0ñÒÜþé’Yoš#Ñ„vSѤrM>AYý¨6bê„$®?ùeT£‡Åê “2,±ß ýrè¸dž‡Mÿ›ïãƒHíBÍ>j¤Lqò)(+G5-5 bê¨ &VOAÒŸs` &×ÉNLBƒ©LR9Î$Ÿ„–:1‰u&–3åMÁäCc²“Ð`*“TŽ3Ég†0¡¥NL@b‰á¬_Þâ+cÒ^‚º“Ð`*“TŽ3ÉgVß'S'& ±¾„‘²gnùÌž3Òæ¬ûM{á%DÜ0úãO©6—lù"EN¼Öqõ“а>VÖ/l~ÛØ¼›Ðuª›TŽÃÉ©ª/ ¦Nt@bÕŽð†õË ü¬;mWüžk3¾tšè%+G½¬†W?ÓSG/0±îÅi¦—¥øYw3/x>µ+8Ï„&´›Š&•ãhò šê*™˜:¡‰u4V³~Y˜G4ihž Mh7M*ÇÑäDÐÐR'4 ±ŽÆ w;Ë2=¢¹ohž Mh7M*ÇÑäDÐÐR'4 ±ŽF+ÆmÜAU_ùÚ–3»x ¦zI帗|xõWÂS'/ ±¾1ã[î˰„z»½1O «¢¶iÚ5SÔMÔø¼8?´] £—¾µäRÝeå…"x“Ó$D©¨·ŒkIL^ª7“áMÖ?[>*§Çg+ÜäÖCKX?p¸ª|xPîœtEëüwß¶K/qi‚ö$‘ØÖ{ŸÀ›œ·š}1u$×ÄÆ·Ç‘~8Ÿ†MÊw¯½:ùñæòËÇÛqhõÉÅÍÕüÅw·ïï.>Ïÿøxsuý°üÏþì·´ endstream endobj 1057 0 obj << /Type /ObjStm /N 100 /First 969 /Length 2225 /Filter /FlateDecode >> stream xÚÅZ[o[7~ׯàcú`Šsá­ŠM·u±À.PÄ)Ð6ɃãjoR+kËHûïû (Ù±ßÎÙ}H4Çâ|97©SuÁÅ,NÉQˆâ ã3GÙ„XW|SÔi" ÌNkq±@–ˆOüËÉV—(Ï *.‡ èJ°Õm˜ìJª«¹ ÑQ0 Õ$¨jÀcÁ¿¨¨ ÏbÅW‰À0¡„)&àS¶§ ¤F“Õ¸³Ix¬6¹’EŒ¯b%j“ð%WQÁRJ„}— ÙÜám¡¹:áhœ%8›o€5DÛÚ`=‰Õtñ(¤ÔI‚m`©Ú4’S3$X”rÓ(´M£:U2ŽœF6 xA“šæ¨9šL£%›F…j5D M#¹ÈÜ42¼%M¾ÓØ4ª‹1ƒƒ aàÕØ$†á©ýM`7“¶Ñ:ƒ[ró<•¤4”ì’Ö¦Q\JÔPà¬Ìeðr*ª&‘KÕâ‹0$›‰!!fÌþÔe 0]Ö†BÉe,Ĥìr’†R\ÎÚt«Ë%š.—k6d&Äž2A­P5 ¢ˆ±""©€ƒ£QšFr%Y Œ “6Ý‚€MM1Ü"‰0¸†6S!W9˜®°«Òf 3UeÓÀ$k”dIMÚ4â¾­\²«%7âj-MÃÜc>ƒ ,%8˜NËJaSjÑ­Ò˜S£–Ú²'Ìž>Í¿s/íÏHèçnþó/¿:‹žP}ÁlÎ.?|x=û曽…Ù rôÚÀÃåÙÊ=}êæ‡ˆ™2Œ?„!òZ´ŒÀä†(§4 ‚úüÇóåÉÑbå^ºùߺù‹Å+·A~ñçǾ8~»˜Íÿ–ÅÙê–B¦?›?_\,/ÏOCiiû×â·Óão—¸—Æh–+¿Ññ9´ÍNëÏÎΖ@{9Ô/›Ïg´mÀl~tùfÕžÿyzö~6ÿvyþÛâ|@¯m'˜=Uñ 0$ò>RñsÍÁç„QÏš}ŽÜü‡å‹¥ƒiŸ|tôêÉѳ£W_^ž¬N—g¯‚†÷‹?/ìóßËsûxs¼:ygÂGjqqqzöö+3ÜU¥pÍG¶¾éȇ BñöV„oˆ¸ôVýþÏa¡7ø÷ ‹k‹”»˜ìú $Á'Û-qeÅŸÙbc£["‡–(w´D¦ ‚*nói[ðZÈ_H™Ý9"µUVX}¬\ðŒ PÚóëÏRÍm“æ§çÿþ{òûñé‡Õòk$ÏÁ›Ë·;?@^üð~y~-1î0¬ÔGÛg™¼¹‘sEmC••ö|Ÿù 1Þ->|<8_ü÷rq±zÔ¼,Ÿ0µ Ï ñÕjÏ™Òþ© á[ïã„íÆ éí3²ïÖhØP[å~EÆ:“º+ÉP¬“ŽY}r¼™sYžs™ïa”Å'ë†5úˆ6ý†·.=©WNw Ÿw«ÕǯçóOŸ>ùÅïÇ'ŸNߟ¬wŠÏ%¤ZÒ;xðªÛ®xs_Í|¸Óʧ¥û9íÚzó]ŒrË ÿõÆIšnXTºu½K”ÐêwAº ]è›Lé›LÉ](]èȵ#׎\;ríȵ#׎\;ríȵ#×5²tÖu» ]Ð.Ä.¤.ä.”.tdêÈÔ‘©#SG¦ŽL™:2udêÈÔ‘¹#sGæŽÌ™;2wdîÈÜ‘¹#sG–Ž,Y:²tdéÈÒ‘¥#KG–Ž,Y;²vdíÈ*íǹd_`ÔXp»žÈ>°Ý ˆâ÷fGóÞú~œEŽèœ1kÜÉ©4g@…G±ÝpÎ#Z¦áÌì+AMäýö„¼ÖT`뺓Stœun8×ëü§†‘8#ö¼å„?±«îäL#ùS•|[ªf4I<-'ú^»9ØpJöL:-'4¶ÛüD—âSMÓr:S”û '%O¹LÊ >_ʶ&hˆ>Å:-g±óŒl8¥FÒ§[ÉÅÛ Þ†³àlÇ2-'j€ð6n%«Ç=-gÄgØÆ-ììc™6n5€Ë6n% Ω»ãVâHœ‚ý3oãV”qfÞSãëHœ¨¯Ä­°B“ƒvFû²áÄA{è´œ¨LWâu©îéÆÚ?¹"땸 {Ûî¸cq¢\)ñalm»Ã6޶lá´ [»ÚQv•¨Ö¸n(Q•*Ó´œèLo£–Ñ™hiM‹ `‡œ 'ªR)qZN®è ·™ÂèL$åi9©úö³_çDU*{:êѲ Æm§‰êàE¦¥D°î6”(J…öÒ8œ„ i¶„Æ„ë´ëDƒ‡âºu'¡(å¼§Ø–‘8Q4o+¡1á¸;lElj}.Ñ.h¼ÝJØO¡‰,5e’aÃìFO¾½2ObÓÎ+a3‘Æg‡ûšv—XÉ#ñ•à³qÙ¿’üžˆI#±åàÙÞ 0¶œ™uZ¾ÖÆæ/E÷ƒFãSI¤|ÇÊÓò Ž#ÈÀƧh}bš6ZOk{ Úž:q¼ØïCi ,hauZ>Ëð:d»]1¡Ïš”O±3]çCà½;Óc[ò Ÿex²]+{ÙsÍ£<rÜnƒ_!_ê´tÉn¶L¨ÕÓá€JuÈM8ܤ2­÷áö"Qã‹h¥Â´ÕE‘áœÖëSôQš&éa:Ÿ "•†õI-fÛIý'Å.!‡õI± È4-ŸÅäð>äŒê§å‹hñu¨ž’ÐÞï¹ì+>í’!Õ!ÿìEªLÓæƒ´†Ývø)xO¼ŒÔ›ÙåBàõúÐæ=¹c­ :–u|2úB‘Ýñ’FŠÄ£_¿/ î€ÎB§åKèXd°'£3Ô=R£ñEt,yØÝ9Ú-Í4½¼â> stream xÚí[“Û¶Çßó)ôXÏ„A¼ô1MÒË43Äom´wW±$*¤d{¿}A—C‡:iSÛ’v2_r–âÿ; q'_¤ê?¾¨ÓE™ç¬Õbµû*ÕÿÚ=-ÎøéÏ_q—¨ÀD~ûö«o~rÁSV§5_¼}\HÎÙðGõv½øç*ùæßoÿöÕ÷oÝ•d–%‡È‰fY,¸`¹(²A³ª™ÌëEQ Æsq–üvPü懜/*V…âR& uE®®•ÉsØÃrõîò['ï6Ûmò¡íÖ矫ÀU’Õ¹ºý|“ð’ŸËFã—ÿßgüÀÿ¬*YÅóEQ¦,Kë ltÂ5‡ Ø^RÛ•UåºdiVS•MôD9ž"c\±ÒÒ¢eÀªÝmöÇÄ%Âny\=oöOÉf8§ÙÀ•F%Äÿ70ZYŲ¢"Óòá8-s¦U£´hÊŽV <‚ "Wêi>&Ðn§n‹Šåµ×½ÿñ°d0R“Á‡ãɱÌT]š²K†@y’ iÉò¼%ê=¼$ívÖ”3^e×>Sj*>ŽãƒFæ)ЦìðÊ!>Y¬*ÅߺÙ6Ç&iOÇ(=õeů¨Z# mщ A8Êpä&þ<&*[†¡ò„aU0aßÙ–áË~¹Û¬TUÜš±JX³º’_&G ™))™Ç‘AóúÔ$*;dòY©š¥b\íÛŽÖ†É+&ħyzbÌíS9øpœtd¦êД‡@y¡L”ãªó¼ém÷’lúfÙ­ž}ã²kžš‡*e<½Ô¨Ä¬4w@µÒ‡ãVÂBåµ’¦ì¬ ”'VJÉR>n—«_M×Ǥ?=üÒ>ÜÈSÈ””ŠÌ‡ãÈ y¹D‘Ñ”²@y‚L&ÇÄtOyðTœÉ¬º‘ö<Æöl ­‹ÆÉñF9MÖqËN°æ‚¥Õ˜ë¾ùxD¹f,«‹+nЕÙPWî .šè„Oé—ÄÞJʺ¡#CT6ÑóÊÁ%µò×hº…m¾Î /yéíASv)(Or6ËY‘ñiÎŽ[CÉc×îІ‘zÙ—)±a„jîƒj¨Ç …E›1”¦ì ”'†òœqYŒ =tÍûM{ê1kõ.N¿´n9VÙMù¨•݇ã•Z6SÙiÊ®²Ï)—¼PÙ‰Â67g…Ç—¼”›4e—›ò$7ÓŒ5禫ðÃÍ,j–©L‡±_Ó9¸ü ( Vpy£ƒþ¢V¯ë¬¤fG³ÀÆ\È¢²Í‚P9̡ړå0² n? O·<•cÍ Rõá8Uè/Þ£&*;ªrt*GHÕU°CÑßIfó39ëÓîð¯T¦êŸ¢Ï3– yçS ÿEsFä%“%yœ„ãiebÎ <­hÊ.­åxZ¥*º0ßÓf›¾OVÏËýS“¬7]³†vnwL;¯Õ›—>0ÂQÞ6F;S /¢²å*‡/‡\µŒ ;†¥n›åþ}“9«TnÜð£i[‹ˆ-`޶€G®çk•m xV9¸ä| ˜*lÓ{Vx|É󸉦7MÙ¥w - ަìÀÊp…jþ@n›þ°]¾œ±µû¤}øE½c"ìTw½–Õg™´±•û|ëÔÇ…‹ÆŸÀ‹™‡IÖ=+fdǼ𤠩Ú|›S]ðR¶‘d]²e'¹¦ZÑY“Mµ‘M† S+mÒ¬7ÇäáôøØt‘”S?^ˆß}ý f¸¹Yªã>·–oi•éòÄu‘²Ê× ®7[åw·Y%ÝrÕÜW·ÔšA¥êÃqªÐ_·'iÊŽj <¡š§,·]šêûå­:êWf·ÙÝÄ@¨ }8Zžã-+š²(O@óšU5‚N–ûuòÔÞVËÊ”— ·ãà …3àhÊ\ <—ÖLda }<íWÇM»¿ÏÙhë ®ÇáB›s¼!CSvpånV͸x½Æ€ªò Ÿ‘2ÎÚ2apÖÈ6QÙ •'°ªŠ‰º `m7ûH㧆ڲ;˜Å ¯¨Ð}8Ú?¦ì ÊèeÅÒ<‹@Gkç­ šÚ¢Súpœ!ts†!MÙ1 ”' ‹’I»dʰ?6‡›jûØòRÁùp´$*;pòœ,·óe\×%gBÜÜô¶T²V‡©@8:N5r7R͸QÙŽTÍ*—œ«¢ Û4ž_òRÓ”]Ê“4+ò*𯷨÷²å¥‚óá88háÌ‹ƒ¦ìÀÊpyÁ¸Ý·‚k»éR3(çð*æ°ì–OÝòðCœ²¢äWµÈ;ˆńä©&޳51—ØÒ”Û@y–K– œ-dˆqvlgÚª¢(n 5˜ VÒçA8ÞÄ\OSvàå<¯UçÎ1à/µ ?éô½Y¢ë u}T~Üu¢²u=Tž¸^å ÎÙ4›ÕiØM©§múH/*eyί¶5‡ñ<Û@Åé¢qšÀ×G ýL [¦4e5PžP-T¯Îï=µÇ6yPÅý~XvÜ>&a³æwÞògï€j¥Ç­„…j%MÙY(O¬”pRM[Ù¨W ÍÄOû†17Ku݇ã®ÃòϸNSv®Ê×g5œázV/ñ—a§÷Ný¡¿³Ç’1ƒJÕ‡ãT¡¿í;•Õ@yB5æ³À ûf¿nôYëQ5fP©úpœ*ôW¢;l‰ÊŽj <¡šq–Ây/C5º¼¨Xž‰{ZÉjÙ—¨¸}8ޝ2!*;Üò·ê4ËzZ‰Õ+pî Ž«³å¥‚óá88h¡@Á!*;pò\ªÚspök»év©A§Ú2}lag͊ϲþcbŠBeâÃq&ÐüŒ¢²c(‡L*e,œÌÚ¶Ëuò¸ÙÆf¡3Õ¼±Yhd~ĸBœñÑèì´_ÅK“µs#s²ã ÎÏŒUM*ϪŽ.xaE)MÖæq ¦qY³ Níí–Ý»;_Öd,!bõÑ(Vè1Þ£ÉZ¬ìkΫK>>´t€«:º}“4]×v‘wE©î¶¾Â‰ÛÀO¡,ªóÊ•~ÞP€ð Èð’ÈÓH¦%ã2'*ÛèYåð’ñ’ä++I6ÑóÂÁ%‘Ïp‚.Qu8k7TŒ§m™3™ƒ„_O›Èž•¼RíÒ»=¿Kzã5é}8žôÇLÒ“”}ÒÏ(‡—¼ô4a—ôsÂÁ%‘õ :éiª:éÅxÒëÁLÐ7ë’¾9êI±ÓRT6û÷WºÕÙjÊH%åÃqRÐ6YDIÑT5©@1NJfz Ä‘úÉõžm—l¿Ü5ñMvüóoÆà˜bQáøptJFÏi'ªj8bŽà¬å®Ùµ±Q׳ŸñD8[Hͧ`’‰h$uŒåâ9sÆ9|”6¿žšþ˜,“C×®Ô¿`g>_Å€5†Í”šÊ͇ãà ‘9šªF(ÆÙe)“<‡ìú—}l6[æ,-³×æß8 Œ}Ô$ðáx@"ÓÑ54Ub< †SWSpºF×~|Iž7ë&Yn·È D}›ƒƒñ„JÖ‡ãd¡ÍÈ뙦ªÉŠQ²²®YžY}’b³?F¾Öe·²þÈZo} Òá(Í‘µqšDÕf¨§YUúDË1M}T^ó!ùËÛÿ~‹/Z[j*;޳ƒF"ìhªš] g7lÖ©k„ÝO뻩‰Æ*MŽÓ„ÖÊh³‰¨ªiŠqšEÉD-c4‡C+‘gëùtóâ*¾;sMI©¼|8Î š‡Ô>šªæ(ÆyÉ‚Uuøä<¶OOÛæüglw•žÐŸ>×™gJBåáÃqФþÐT5@1ÎC,«ª€Çé°^¼ö\ý›Ì”šÊ·ãì ‘;šªf(ÆÙå’ëNÇͶO–ª³hïdÁ¡óߘAEêÃq¤Ðßé ‹)MU# ãH3ÉÒŠO>wÛdÝ®úÛÛííÜ6E§ôá8@è&¦ªŠq€êwQ–€z‘̇wýau“ÏSSj*;޳ƒF"ìhªš] g—æþ+a#v«å69¼{ºÉáS[j*;޳ƒF"ìhªš] e'êœeÓj×>üÒ#Lj÷pŒ˜%bì!2öÑ(bèwœ0MrÈÅù·Åpר–ÎÍÖM[j*7ŽƒƒF"ähª] g§ê[ZäSv»ûÕ¶žPÉúpœ,´!KSÕdÅ8Ù‚3!ë)Ù~sl°Ý˜W¸®ÞYlÊK¥æÃqjÐB„MUS ãÔdÊ*9}–öË÷Íí¶Qm©©ì|8Ή°£©jvbœHY&³ ;3bƒ½¯·Æ™òR©ùpœ´¡FSÕÔÅ85=v ž“à ·þø²ÅNîËïïä>‡ÇxE%îÃqâÐ~'NSÕÄÅ8q^ë/ãxâï6‡äØž¤ïd—ÁU­j´e¤’òá8)h›ˆ®j$ªjRbœT:|¶™OIéÉù!eÊH%åÃqRÐ6„MU“ £¤òºd<ÆÌ’rÓ}8­á3—Ⓨ’"(l!ˆ(@8ŠbäKQu@*ÆQT%Ëà›~·ì̦ø×ñéü¡Röá8eh¹Œ.Í'ªjÊbœòðÁF¸¥?=ìô—-žôÀKw¼ÅŽ‚-5•ÇÙA#«h„¨ªÙŠqvEÁR8"ÚØWω?æûŸ¾òך-#•”ÇIAÛâ`ˆªšT '%%p[…'µÙ?6ݦ톃 †ïPf¾*S &St#æ Ñ¦:èÃqaqò袢ªv0PŒ;(«2hàûd«ºÃ_{Wàg«¨¼]4Žx_dQÚ$I {,g­Zr/ưÿñݯëäiÞØGMŽg$‚¤MUç@ O‚á#ëp³„N‚Ÿ_w;ý–'ñš >ψɚªÎ„@1ž \Õr¸cbÈ„ÍòýëÈÚ”¸ñŠJ܇ãÄ¡ýqšª&(Ɖ§p'Åqøü›ê’DÞ%e~wÕÃoŒ£â÷á8~ÈBÆû54U?PŒâÏjÎ*¸õBáß›¶±þñÕ, ¶%!òá(‘9ytËQuà*ÆyTª¿_Wqíá?(ñ‹ãaJBåáÃqЄMUóã<ÊáD5åÑ=ÿëáaJBåáÃqЄMUóãá¡O|ßµ±v‹r‰åéo¼Æ<5wCõÔ‡ãžÂ"žÒTµ§bÜSQ³nZ8õM²Y·_¿Q]ÈüüYúá`Š7üÍq8;ºk–±„&Üÿ…F˜õ榩ÖûpÜz胨£ÖÓTµõbY,†Á@1œÖyö^rå=/Tÿ̼bL¯{iø<Åp¬®ÿÆèãf»û ÉÝ¯êø¥ü·,IáxJ˜˜™-]DUb<%¸XØeö%¥„Ø> stream xÚµZM·½ï¯à1¹pYü(@0`ÇP. `X:$tPäE`ÄØ Öàüû¼bOÍL‚éÍa›-g¦ù«XU¬ÇV£žJjLI:þÔÔG"RÅ?–ˆ+'ÿP >Iõ%ÿ‡ð#ië>’Duˆðp3»Ãš3Z"“9£'.:gŒÄÔæ KÌdÔ ÈÌg4J\Ég4, ±ÏÀÃÜÕg4M<ªs´šØúœÑ’›3z.ÍG#‰0ûÈ’¨¸e½$©¾Hê0¹á#F ã‡Ïè’ÄŠÏèš´Ðà•¦zKÊuÎèI¥Í#©ç… ZÍW:JÒNŽ‚t°óNjsõpS-Õíš*ˆÀ1jª<æw-U-nÑè©Vvä1Rm2‘-ÕîÎ&+©Žæ3`tµá3ŒS£â3L|K}†ijp8àØ†¥úw-µ:}å¶6}o#a0¿³Ô¬`.—’zñ0@;ùî3œÓ¹Îï$uqìhêÚ±Œ…÷jó×–z/ó׎˜¢9w¤nÜ|diߦ’©‡¶{pó¹pÝîsIÒP¸ #MØò@^æÜ–Ƙa SÇŒ0¦‘¬èœkÉf2—Z·Ƙ¸½Œ°0+eIÖæJY“uªà@Øà9£%3™3ð±”¹TßÑBs­ŒÏ…çb‘£|µ¾<ê¦ â ´¹^ÁS¥óÌ$ˆ„Ïný¯ß>=~IoÞ¤û·°olÏ¿EFõÓ.ðÊöaÖ øÅMÒ˜'›càÞÿðüôùÝ×ô!ÝÿðýÛtÿþá·/éLùþßÿzÀŸþñpwÿÐ?<~ùÕkšøü»û~}úúüùa~GÛw~øéçOß=ý–>/‹ˆDDìG}zÆlß¾Óƒß>>>íÃV}=³2ž‰Æ Æ Å Ç`ÄÀNƒÈ-[ ·@nܹr äÈ-{ ÷@îܹräÈ={ ÷@<yòäÈ#G @<ÙÙÙÙÙÙÙÙÙÙNÈ^èNŠÇ@b 1¨1h1è11d d d d d d d d d d ddddddddddd d d d d d d d d d d d d d d d d d äS5øŸDŸ)ywÿîëß¿ÌÏúùñŸw÷ß==ÿôð¼åsùèYÿõ‚GÏ;€ ûn¡‹Èh½fÏ};‹Õ»tÿǧ÷O uîw<~ïEçõœÜ2÷záÍEÛmN;ˆ“ð±|ædÉuÐZ;KÍ‚Í;s’dŠ›œRŽá¬¦=Á…³pn•—ú¶ÍJ;«qF»É©ù¶vÉæÍypÊe­M²¢>Ÿ9;e®·sEè Î*າ=ÚÔÛœõ Nå\]Ÿg-YxQMèœ vΧÆgË£éÚý ΰóÎÃö“)7¾ò-[³5œá[¢<Õcø–F6YìÛà ;_à<Ê·j8Ëp0§ÚÈ¥ÔµœÝro—óõ!×µ®UÁ±"—r«ªYÊí/qBreº*·×ßæl…­Œ’›—ÛSØÊY÷Ê­dgp†/pj?ˆÓ[°«/½gÛ)ñÚòmEØÖ+ß6„-/ömp†/p¾ÚÎàTË|Uâ¥âï^‰?*W´äÁ— -`®;%^*C"8¢ë¥& >dÚ+·GÅ­·Ôv)}Â5·¾–²XV¾2“*ÔËN…?(„ØRæÊÌ¢¹ëZJ¯:vÉFSÁ´–³7ˆ° å|Mk)[ÍõJ2zzÙѯ.¶§ÂǵBƒë7v¹´ÖÌeXùåQG £%hWÊ“+C¡õµfBQ÷+ÈB®–ÖrBÝö«ãš©¸rYÊIP·ru\s)®"ÖrBÝŽ«£“†¹Š¸Í)qz6ŽKv:]Ú;:jêÖ®Ôµ‘ÛÞÑÉqBÝê•R¡:\E¬å„Ò´«£“´ç~;Uj?Š’Ðm]…t¨†ÛgJ=è"ÈÐm]™É-]ÚQAÄ”«¨¥–eçèÔƒîÜ …èrrR©ÙvNN=è¶ÄÆz>ŬfÝ97ÊÌ`<ùãAm4Ê _]ØͶwj¾2+Ñje“‘š»S9ÕÒ³¿¹j¨²F²Ä¯•üäªNœ(/ñ½6VÏ6v”ü=Û7£«^kcpº/ð½¶û9ó¡Ã2”ºÉ‡¤—Û‘ZÛA|~?*´ñáô Ë˜×–Õ3Ÿú]÷F‡ƒCmçjö¨ícüÈýÉ]9¬®å£“j£ó7E¶¦–žé F§hžl;o¿ŽÚ½ŠL”yÌó QÙ9ã }ù¤ó—CºSD£ƒŽ¤Ò6>‘{}ÍAÑR]D–ÍþR"r­}Uç­ÇäC¡i‹Íƒ’c«T\im-Ÿ:î-û*ê :ã%—¼g>ö 8…§¨[ˇ¿:Nþä’¹¶µ|…æûØÉWl÷]ìQ|j„ØÎZ5´ß:Öòù…yßõk+­kùºçÀ–îÚÑ)*­åkȺ¥»¶e¸ØŸ:òûjËmG‰Æ'P»[µFCŸËÚlWîÈ€@Cp_¢Ï|ñpê%”Q¸yÍk•3_iÈ€S´*7/¥Ȱ¡[1Ó‚ÂMm-ßèó«ó‰I.;b¥ÔÈKW$ÀVÌBIw„Ã8(\¤!NÂA ZÆÎýÈQBEªd= A¡á½·¸õ.¢ž4KÝ¢dmÙ.óÆ«®åcO­vÊü´–eËvhéc±?KÉöèÌ=åpP:ð°|j]üfï^ý ÆóÂg‹†f±ápŸß-—-üå—ì‡ÃøjŸw¾“¢eµy ™yó ÔŽpÐóuÝ¿j)– endstream endobj 1378 0 obj << /Length 3275 /Filter /FlateDecode >> stream xÚí]sܶ†ïý+öRš)⋽k2NÇé—íéMÓ‹Õ.e±Þ%Uî®ç× âP'™$¶¤LF²|Äwyž pÂt•«ÿèªÎW%ç¤Õj³•›ŸVã7oÿüŠÚ¸LfAä·ï_}ó½”+š“:¯éêýmx©÷ÛÕ¿¯ÞtÛvÓ®ÿóþ/+Á(ÑaùøWU¡úêõûéú’1äÑ‘³OR+*ÓŸ¤ª‰äõª¨¡\Œ’ÓŠß|Ïéª"uQ—Q¨+ªß¤µ ëšO»¶k²u·ÍÚnÛtÇñ÷ªà×*Ijînå×-éø…ý‰>þw_ð¢ü³ª$å«¢¨UbAà‚3m(° IÑM®¤œÉÖ%ÉY”µÁ±l¾ÈINé(ü÷"ØË1ª¿¹Îdyõßfs<üË\ýOçôyAª¼zêø‹_€,ŤúZ =åÃaSÙƒ€sÐU8åÉV‘rÒW²æDTl”þDz¯¬í»fõÕ±mÅ|y±Õ£¶’eMXUam„ƒ¶r1cgUC¶B*;[ÅÊç¶âê{©ú©³‡Õ?Ó¾R¶’D”6è°™Ô5Ë¢¼˜éýB<2¡Œ”•T¨Šõ%.8óÑ3·Eû0‘á$õx(’,ÆJRH«ønÑbö‰xhÖÃFw]w '¥xé^‹à Õök^­ …šVô‚.: Âg®‰/ Ù&/ •©ì¢•ãKå?€Í'<µ“%áè’FXTÉ–‚S5MeAQ·”ºT-%§„ÑÒ6‚þ4lšÅP©si©`‰m>n!^€ ¥ìÀ‚r|ÉGNxjKÂÑ%Ç[®“ §jÀ‚¢k²Î “ììQz¾TW—ñů?ºuȤ‹‚pÐEgLYrÀTÕ.ZRœ\ާ߽ýö¯‰ÞS’‚]¦Ó?èهwÆÂ¼'¾äÂP©jœ±8ß©ó•”9ᵇþëºWë¡]ßìšëŒ—òJ—Ý~4UÃÌN¦Y¥âùÿ§…:'5³—]o²ñ¹½{Nr’—/v® ͧóJe¥Dϧ}8<Ÿ¶1ãÀ žOã”§ùt¤|fe/=P((Ÿù [‰G™z¸³g6»Ì á â³dÈ‘Êq¬{×X|>Æ&R€t¤ò„/Ržáãa*Ð・ÍB?÷Ù (†AÐm®°Ð}8 =L¿ tœò=RžAg%) @wµ[ï›ìØìïwëcjÇ8¡õwÄÇÞ–‡ù„™ZàƒSžøDÊ3>´$¬e³Ûö5ƾš‡v}lûzvR®Æðâw-_A4ìM`iøp˜F˜Y‚4pÊHyF#/HÅELãp×Ê4ˆÏû›~—dª Võµ•‹!Xö±°|8 +LÛ,œò+RŽa±º j<ÀzXﲇöÐÞì>¿è’¾Ë q">K6§He‡8Vž!Ö»êó þÐüØlNjÈÙvÙýÐoônN··Íê+"Äï3†8ØåàÃaaFàMÎHå‰C¤<ãPJ•Ká¶Ç츾ɺ桲M¯†MrÁ™zþýV) Ðc?.²Îã£Á2Oxÿ‰é–-Éàd]‘gIöü‚Ë%¤ªóØ’êÙu“ÃP²“ÁÎeÏü5m Ñ…Ë<˜^ÞözŦß|Ìöý¶y¯ÜL»/l2°:|8¼¡#̯Lî˜Dªš ‘b)¥DTaÇqê6fL»0ñ0þ+S¢í]cÙùp˜]˜Èôf?¤ªa)¦Ùå¹úYðì½[wÛϺ«ß«o/¬9Úd`‘úpi˜ßù Ù Å©¤‘b©¨sÕ —éø2cö©=Þe·ën3âU?:|‹ä.Wîƒ#Ó„ƒé?ËÅ|ñM'©ªÓ+¦Ó_Ö¤fAqücÓÜ/VOÍö\6¨L©·yÀÒôá0Í0µ‚'iâT ÍH1M³¨‰ÈƒéçÛ`Àò±ùü©R½ä“¨Liµ÷ˆ%åÃaRaÚÒ£¤ª!)¦IÉŠT(óÓ°HøKV<ËÊ7yL–ñ #ò-’‡q’ð¹\š¯¨/YxÜù·°¾Qê“>¥;{ëXx>¦fÀ‡S5ü"Å4@®fž2˜ù™Šw¶¾´P‹ÄæKهÔÔÏK†2NÕPŽÓ”Y©F3Ádð Æª>öYÓm³þÖ”ôàzž¤¤øõß)…Rn?,6å>Nyxÿ\&SŽS5)Ó)§…?aLùCv¿½Õ3ï¦rã®™ú+Ý53%ÔÞ–‘‡… +X’NÕ0ŠÓŒr}ÈC0)ÓeUWPÕ…îÃfhïOe…vʤ½-,à 3LÙpªN¤˜„ÃkIÊ2˜²͸(ì™à/oÏ„Ããr…$„ƒÄÏÒŸ®‘ U5ñX1} / "Ýqo€­±æ,—Ümái;õÄjífDõû0¬÷ÏwÌÉ%#ÿ2s¶1À6Zçj8GŠé–-¨úY 9‡7K‹üK,-N³ Á‡ÃÂŒ¤gæHU!RÍUc%ߢÚÚ[w[¶kšÝez Í¢»(ÑÚ ô‚‹½¬§!UµbÅdƒ4kвž(ë5¿ì®ï?&^Õ-Õåø‹{UÂo‡ÅïÃaü! ?NÕàÓøƒUgE_M ïšÝ½›£¼¬Õ&ÔÚº /éG\‰’dó} ³ù™Pã'÷®èw}·iÔäżÃÿfö?—zM(Y<‹³v¥Œ4ûõæ0?§J]ŠÓ©Ûÿ!§"½gRE]Î@[Ü<–ç¤@¿çæ£áý$cÈ#ûjq²Ó~’sÙä;n´Ðîâì„¶l®õ͵Ҹê¯éÕ ÒtuTß´Ýe_Á¯Þ_ÆIýEr \I‹ú¹½QNÕ€Zï4Fz"Máb€b˜Tv¶XRV]º“°V´ï„›38#Úc¯¿2GœÉQ徊Ë'üR‹Ë–¨‡‰†Éeà&`¤òDtAYåjþàž ëÓñ®­’+WT—cT¾Klv±.ñá°KB`±¾ðá°/BDÜÙŽTž|)§ËPŒJÂÝ^¼oÁCpõÎÛuÝœì¨phîÕ˜±ºê‡Ô¦9½ú-ªË1 ÉY®Þ²X¡÷.áð<ׯŒÿžDrU©jfº Š®lAõ½ròDÂ,WCÒKgò«XÆfé &Ä—ö NRÛ%’K÷4T/Ü1Ußa:šÍ®YwÓô¤æ÷Én†–âÒÍ$=£÷-ã«ãA8ì³p4&RÕøfAqêfÔ†¹”9\ËÌ[½MEd}ém~aáÕ¥ë{%$G“on UW'¯0J œç¥ëç¦÷¸Óå¬CzGdɯ뗴læò„…íÃaØaêyr‡ RÕÀ^Pœ`Sª‡sÖ;SºlÆ?œ×ºõ,_²'üÊ•Må “ òZ$WLp’†#,7aTCMáÞ_°³åÇ®l¹¢í;àEZ<¥#§$Û»Æbóá0·0‘é©jÈ-(:tU­¦¯"×lÛc²È ~rþÜ^í±É@õÑ Ï0»,‰'©i.È9˜ú”r÷Š,¼=V¨ñ¹¼O¿d›H¤|4h„LÚK’ÿVn{ endstream endobj 1398 0 obj << /Length 3566 /Filter /FlateDecode >> stream xÚí]w·†ïý+tI"‹¯] —=±÷+mí»¶4µ²X“"»$㸿¾Àî ’h쓤É“ãÈ–F|¥yÞ|ƒü¦rÿñ[Ý4R2«ÌÍ|õ¢ê?Û½¿þò÷ï_pˆ›ºÀiùû·/¾}¥õ ¯˜­,¿y{Ÿ¾ÔÛ»›L^?Þ-æíöö_oÿp£g>¬¾dÿÙ/߯××Byò“ˆÃl]+ø9j£—j›¯W«öñVØÉ®ÿa¾}e’hůÃÏõ»Û)oøðAü‹?ýµsù†#2Â4ÌpsZ¦¢§Iø ¡ã—ìs¯ä‰²mX%,U¢‹ÊÞdÚšŒ7¦RÉÉâÑ“7§V©+fšË± æÈÕc8ªPД£ ÊÞµdUÍ£6Ëv·XýÁrÒÞ-vÃßÞíoù䟗.=“Öý½;5¯8ÓÏ¢˜`l!'T¶c8Î6M³([šrd[Pölµ`Z¨<Ûõý@týîvª›É¿Û9 ~œ­ÚL Á¹dÂ5:_VŒ üæT‚c8N0M¦2(Ašr$XPö]»lAÂÓéGµl<÷Læù¹§²©äs~,!T¨c85Ío*M9B-({¨’3¥yêr±ÍõÓš†©êÌZ_ 7¤‰Š{ Çq§™/à¦)GÜe[¸Á?©Âß ¼?>´@|Ó¹¯íÚ»áó÷ëî3ë³ïïi…YK2üpÔ$áx’ÓßWZ4É4å˜ä‚²O²É&Ê®íï‡L>¶O2™ÉŸKŸUÏþÉÂ0Cz¨˜ÇpsšñfšrÄ\Pv˜µµÌ(1»~i¥0L(yÍ~¡YB’‰fIÂQ³pã¨YˆÊÁ,%eoc™¬BáÝowëÕ⿳¾©=±Œn\ñl.Î2˜ sTŒá¸Rä *G)7õ WLªZô%Ý2-ÝkjÛ÷|{éïöéX1åÆPS÷¥ 𶃦Ñ”=z¡˜2Ð/:×g\w‹l!5úãöKª'ÆpÜ)¡POД£' ÊÞܯ¶@ ºÛ¯6ãôË-Ÿ„˜¢YÜ Ã{¦ƒŒ*ç1眦\áœiÊ‘sAÙs®$S•y‚32 ¯ SBs=ÀèCÖ¨ôÇpœ~ ¢@Ÿ¦é”}e…+襟kÓµ¹øÁC#|FbŸÀÑÓ$üÔG/‰Í5Á¸«ÛDeˆ.+½d¯ü æ}ª0x¿,|ø’O,•ƒ÷•³ã%7rŸ‚×KÒx©ûÅã‡5ôe¿¢<{¼ÛOr¶?Ýêf2[î‡ ºÓYLU3¡~­ú‰áS yÂ# ÇñAÌàØÅGSŽø ʾtÉšÕ5´–Ÿ·fëz±¶×nlÉ%]ªKÆpÜ%)0|•¨]RPö.5ãÂŒ.‰ƒÚøÐž.;)VéóœQÅhC–¨´Çpœvšx‰îï *GÚeO›k¦-Ïо÷å`ÿèêÁÜωæú²–Uç]0ø4*ü1‡Ÿr(<ê4å¿ ìáWÚ=·*×Í·ón±É.2×®ƒ¬.b‘9dˆJz ÇI§I/<æ4åHº ìHK«˜æP[^.¿[ߺoÌ3kc “•½6ô_8ÇòLôKŽúån0¿•ƒ_JÊÞ/ÆuøLhV³ùv¾\ÀÐìbGÕÈëbGÖIª#ÆpÜ)©QGД£# ÊÞdJ…¶bpBÛèNç4+׋90È*ä1‡œæ[ +ZDå¹ ì!ׂÙ0£ÖvݺËmŸPç>…ù›XRMµÌŽ[&¥‡o'*GË”½e´`² -ÅÎܵ?ù Ñ.××Ó0ÎK™=ΊÆ\ª0[@:©¶Ãq[¤„4Þ\Д£- ÊÞŠ3­8[L»µ7ÄÏŸN} %«ªk=ùì)ˆbªUÆpÜ*)5®¨•£U ÊÞ*’3ε¼|ó&nwí+Ç<Ö”w{?I™«$n@ê{.—0 É¢BÃqèiþñÅr¢r„^PöÐEÅšpà¥=,—gêF¿¡Ÿ-u 0$† x ǧ¹.¦)GÀe˜WL„ó0ð®›Íoù¤}·Ï,îèš)i¯›,$j„17BÊDsÔ4åh„‚²3‚°–Õ¦‰F˜¶Ëmûñ¡íÚìÙÑJ«‹?<RFDŸ„£è(à5€¨З”=zW¢y8Os´´ +Jý<ä] ëÀ‹Ý¬ÂqÿåpæŸcàÞ8õ/P:0 ð‹PŒá847ø 0Q9)({ au8{“eºýyÓ¹&8¿ìc+ÓÏiK#’A…:†ãPÓü Ò”#Ô#åì® ¡\´… !¯H»2î×Ã4Þt–Üÿ> XÅ'ó´H»Ž°×"-³ô9¿$·Ä í3:çGTŽö)(ûš Df,Ñ­f»]œÖÝ®]omßÍÛ0Ë‹ºÂJÖ<ÇÎ]È •îŽÓMOÏ•#Ý#ålqà¶bÆÀF’ïËÅ6v½ïf›‡Å,Þ?,ÝŸ¾#šÝò«ü.3sÝ\µ¤’j‰1·DJ£% ÊÎÖ2¥ëàˆ­?5‡IW=fn`b&ö›ÜĦïÛ^ÞDH‘ü‚Oà·ÌÑdö‚¬£nÜ¿ÂÁ͇5ìFÿЯÊ÷;s]'¤WÈ/Ñ"c4j‘˜Dçi²Á"G²‡]NÉý.5~xâë|ŸÓÍ* •k1_̳‡±„bµºnpüÂm š ÷꛺¶Œ?y0%DO“ðs¿äP€lîêS¢ª¿ú´¤è]eç*m˜hÀϯ¿û1ŽPüL®ÝAw½ëóÞ!‹1‡tQ™á8󔜦Ú3/(FæªqMLÂ,ï`'c¶ç)-3ú:ÑA±d•j1·F êt¶¬·Mµ·FA1ZÃHC#³xÜîfË%r{µÚÔ×1IÖ FªÆpÜ )!²^ ©ö^((F/íz<"xv;Ïæ»ÅO~,ë•û-Ì‹‡ËR3×!7†ñú"ŽÆiÞ0iEÌÝS¢§IxƇ/9Ü–åOOFþþ£=Âßí7ãʬ”úÝ,ø²tå^E|ÝÓ°§xHõ!ŽÑø3œdôôÌB$ÙÄå"@—z^›‚¬^íçÈ%oÂu®3Mù‡òI}¨Çpü¡Nåjš¨ÈæÇ‘ºv=D“,Ž#¡µùЗûOïúm‰ëYwë¢ën»RöÙëByoóYžz ´Ö’ -¨E" G«DˆA¦nAÆîÏ–Ïñþì˜û!Tš1‡™¤aI’ìQâr‘¤ä¬Ç_Q>@‡-¿Ñ8·—ÁÔõ³ßË9@b¨dÇpmšk„-Mµ‡{¤˜/ÞÊ*VAâO”ÚÝß‘þM:«ã:ká*u9ÉuLåb}Þe[5–UOÎáG;$á¨B rý¦‡LTõv8VDì \+Á‚¦Ì ¯Ö#üð6ãEɾ7“Ýáä×°ª¯õ]0Ö¢fºÒdÖc8Îb†G?Ïš¦Ú³.(†Âîo±¨M€è»òûån1uõ½=<| wæwívÿnµØaWH fįÜPc8à7¡âÃqirdvžŒ¨Úã((F®«úБÆ&Ü{M¬€&ÖöMl‹4²Ïñ\8†vÈ •lŒÆÁ&iÙ–&Ùc=”ËTY»q™‚¾÷_(5ûÖ ðÆ7Y8mck&Ĺ½“B Ö‹­È'I8j„ƒ\ äU½Ž/¸M¸ŽèGJg«üǛë5ÈŸ=&ólúÂJŽÚ)Ä v’9;U½Žóvµ`B‚…ÿJ)-›Ùûöè½a÷yGƒ}§M}­ïÜ€Aï¯q$·%I8bÛDzè4ÕzA1ô„¬™4*ÒLoЉ;€¾2nÅi©X-Ó)uŒü‚TJc8N)ÍÙévÌžMµ§TPŒ”„f: Þ̺Y¿íÿyðdåþ³é/øU©¼ÆpœWš=ä©¢©ö¼ Š‘—o—C!u¼¶ñ±ÂnëѵûÆK?SAú¨Ãq¤Dòûˆª½ ŠÑ•d–CžŽ²‹gÞ š_½à T/Œá¸R2ù1Qµ÷BA1x»Qte5æäM´e–_ìÎ@+äŽh€$5À޼ˆªÞ%Åhã­E4€k¿W«xœ;t­Þä¯lVÍEmc–Cƈ+ÙI8º’}!»’MOFêKÑä©?xÐ~RnÝ}xò­Úá:ˆú2ö&Á:$ŽúÈÇhü‰OH¨ì`š&Ù“?”Ë¥¹t­‚¯ý2”þÏ~‘œè¾ïÜø+.†æ®ÒòÇ6Ïù*­ˆŽfè{œ’pÜ SX-ªþRôî endstream endobj 1255 0 obj << /Type /ObjStm /N 100 /First 1007 /Length 2415 /Filter /FlateDecode >> stream xÚÍZ˪ÉÝ߯ȥ½ÉÎxåÄÀŒ…¼±AŒ´ðXh!k.fðp¯‘®`ü÷>‘ÕQ]‚n°ªÀ ¤Puå9™Y‘ñÈbµT±ÖDÄ.´Ä¬.ô$‚§lšO!PÒŽŸ¤µdÝŸèðÇæîH†1Úë$¼R‹ƒZOÔÈQ #:û°Š—‡úˆJ‰‹ãʉ©v—ÓèóWM,ÃQª%ðÌ_k»ŽŠé6™x=q7ç¨#ñ˜sÁ_RºÏ¯Q.äc]ä³o’DÅ‘›&1uäfIju”V“´^ÀåJ>¿Ö“–¹Mm$%ö˜¤²úˆŽý_wö-ó]’Úœ=vN[™ïö‘æ¯5éàl§•¹½'#›#F2žs%™4_Ç „‰úX€š ŸÁd|ìP|ö±Ã’ ™ckªEý{Œ–*ùGa «<÷yŒTÅ÷YJIU}¦‚mªÕg*øxµÑpIRíb.iªªÉR+øjjÔéRK͉ õԴ̱#5cI¶*â¥ÖÔñ°­û¬„$µQ}T¥—9+²Ôi¸ª”½wÊÓ]1§»*BïjêJXŽ€¹Ÿ©jìàßzÈÔO¼2tNkØ)H\8},†NŠE`ÇÁ˜k)~8ÄE¡:Ç`ÞÅ•"~*2œ‡1•b4‡á§RyÃzJSæˆÐF&˜bÍÉ\!û0ßââÃ|æs"ÁF*s˜ŸRs%Õ6‡á'j}¶Ê‡Me*sWÔõÿÜ={vwzýŸß§Ó÷Ow§WŸþñ4ÿÿ—_þuwúáñÃÏ÷Ò››PÞÞ~¼ÿ”Þqn~ŠÆÈúh˜—–«Þù>={–N¯ÒéϯÓéyúƒÙÓwßÝáÏ7ògßçƒ!ÉØè«|Üwâ+š;”òá™5>t}C3Aó&]¡ 5ü ºçé ¬(ðÇtúÛOOМ%~øôë¯oã¥OçŒs_Þ}SÒÎ"Ô¯CÖÿ¸öhüâ+×e°N/?<¾u9§ÓËç/ÒéõýoOéíçKùîŸ÷w§?òþáé£Ç9ÞWûññÓ‡÷÷—#:Ÿýõþç_ÞýðøÛ²'Õÿð]~ùîFûQ¡åŹ¡A<½ŒÏg:™³PCh!ôâå/W C4 !k ×@®Ü¹r äÈ-[ ·@nܹräÈ={ ÷@îܹräÈ#G @<yòäÈ#ÇÙýÆY 8 AC°j-„B S S S S S Ó‚üö?–ؾÜ\ëÈØ ¬9XïÚ,ùb VJX»p ¬ÒUN‘}8­ ž-8­×\躅µ±Å«µfwÔnò|_¥_÷ ¢ßƧXÓ€[¬e~Jƒ³"Ã6SÏ£ÔC(×%ž)}…_ Ó¾Ï æÍY—ˆ‡^÷[R÷YâÊéküߨ‹¯dwyÎg£fi×%ïô ­<Ãpçë=FKדXz.ð ëI$ÉÝnèÍØ‡S‡e϶‚²H–AÇRb+¼®œH6òàƒ—©Å㪠§öÜôú×ä(¥d¤rJéQÀuNÚ‰“9¹|Ne~}gË7R6|µ:sã,H{¡ddôÈ ÉÁõ¯ÉmŸe®œçe~‰SÊNœÕ %¼––ë[Ëu'Jƒ-¯Ï,Uaëo”4H´æ†nå4Íz#ÿÑN ÒÙ̲Y§j.¥]çÜÉÖ"wÏ­mÖ)ˆ¼nø¯Ý8 ‘NÙ¬ÑìýõHk¯£â¹¬^,Bç\oEw;q"ȲñcH2’ÉCb‘•³KtY'ò›\»9ŸM²¼ì7¢aú­e¾‘!ìu>WÎXç—8wº1÷*e¹1x”vÃ¥Ø^|u,÷/F-#a?4®ÔÇž×W`ÿT9+_ïYmÉ q,³â¢W¾æ9§{ðÕnå"²\¥R[øà'©·CõE­çyG:¸ÈzãþLwJ Tgê±ðÁ=ÞÈ v£n–Ó *Bè ³òÁ3Š.Y–Â+Ò o!;Ý~*ÁCñrú<~µqýôUÞ‰Ñ/¢&ž•vìé“á‘Æ’E"bÌfíPë"V²žƒàdð1±øJ'ÆsaSø=Ö70쥶3â ¾‘ÛN¶Œa/‡-»é1E“v,ßÙ¿O¾/øvÛéöKÙæÿ ÷×õØÐ›  ~œ4•´bdVNh©mò‚ªªŒC³Tò €~I iÎȉvºæ ê°×F®¹ôcos¨´,}É$‡X 0¼É2Ö$—ë_²ïä [ååP v,ŸR&Y\éÈTôлjÒºˆä×TUQÓ•à3Êòýȯ¨n\äJÙ«  }9;)š ÅõïWwÒO䵟? j5=4?ë~m¼lPÎrãc¯ê¸_ŠŸ“A¿ÿšR¼×ªå\î¼Y«¾ö’UË™àï¾È•²7­üU¿Ç•ê÷øÊê·.ÅÔmõÛYÎΨ”RTJ)*¥•RŽJ)G¥”£RÊQ)å¨Ár s s s K K K K K K K K K K k k k k k k k k k G›€D›€X [ [ [ [ GODODODODODODODODODODODODODODODODODODODODã€Dã€Dã€Dã€Dã€Dã€ôýJå]§ÃZëÖþFÞ¨;E®‘²mÂÈ ÃÔºI¹´Pöc·rÖY!<ôv¼"\n›«"\nF‡x”•S¢o ,UËÉø~e³·ÒrmýXN"´© ÈËt«ßb§€¹DÛ³Bˆnx;qšwìéfˆJÊ”k¯\Ä`dSÿ´áÕëëì{õ²¨eÛ”–ͱw>T‡LÄëºNï¬×íïµ·¬Yû¦lTgçnˆ•ñ— 'œc+fV(׺Ù[ò·ºM¿™ó\ÕÑä‹ûZÕQœ2ú¡çså\["nsîåWgEmÃi’•­Ò©ÔϾ§*ç>޵·Š³â1Ï¥ƒ3¢½C›Ô;wt³·Lx~°yëÎæòG vèÆåÏnMC³mâ!ä-‡UÏVN¯ônâ!ñ®°rìõ!¢ñÏ»"kÖF‡äÙ—†Ø£M<„d!×^'¾ý/°*GÈ endstream endobj 1421 0 obj << /Length 1626 /Filter /FlateDecode >> stream xÚíšÍŽÛ6…÷óZÚḧÿd—-’¢º™q‘M®­$nl9åLòö%%’¢%’æ @“ÉYDö\óØ÷;"ï%‹Rýƒ…, Ž1DëýMÙ½Û¼+ú‹Û_n ‰[¨À…ùÓòæùKJ XYJX,ßúC-7ÅŸ³_ëÍv]ç-+‚@‡•ýŸ„ÐïÞ¼Xºñ)B™_DGN¾ g$†ô7P, &€˜ô’·ZñùKT #:¬„©¡á>ª©Õçj}j·õ»ù4[öûU½9öÞÇ%’ û“~œ/ ‡ýèì¼ü·ÿ磔#Á€¸`Œá…´Ûè…Þ¥ÞÏèxÈ.3¸œ(KJ$s•MtRY™Q s WÇpw诰¥Ù¿}8µOm€,D pɾÚ)ó sI áqR~ÒŒ’ÊSv¤Êš€CjIímÕùù°WDª&À„3 $~Dw[Æb˜Mzr1áqÌ~ƉbÎSv˜Ê3’€3a1š#9«;µâÙÛS½n·‡ºg¿©Þ”Ô[ýNèžTÓ4Âô[1@ ùɹè†ð8:?‹8~‡æ);t e*qdÈ4¸Ï_L$PßÕ-ùõnú>ã¹ÆqÑqßxiüŽÏ’u®‰ËjÓ”n$okÞUõÔ8˜Œ¯Îy€;Ljsí1„ÇýáÓJ$OÙ9$¡¬,B¥ªÛ‘)É›S]»ínêRNåÕ%— C›ÖL{xáQ{œ‘ŠW ™ÊÖcå`ßF1Rkë¥ï²ú6…¡FDÖu>eªêçOÞù†™M_¦ ¼ð¨ Έ ³A¦²µAJYÛ€ €¥46hW^Ÿ¾™ÃÙ¶©Öí¡ 4êveüû´C ¹IU.ò!<ŽÜÏ~|ÕËTvÈÊ9c€PBþB!¿ ”äTÁFø©C1?˜<æúaûÁG“ðCž²óCBYû@K[Q/_Üþ¨†©2¿ödÙ%²Mj®9†ð¸9|N8nŽH(:èÃD{°ñA·U¯öU`©W•¨ ¾6ÉÉ%<„Ç ûùž>”ÕÎSí'á’RÂ0áýA­ñb¶©ìËîQéSvjÉïSv.û&¹@‡ð8P?½8> stream xÚ÷PÚ¶Іà.Á иCãî®Á‚5Ðиwww· à‚»îNp—ðØ{Ÿ{²ïý¿ê½¢ zLs͹VCE¦¬Æ$jfg’²³ufbeòÄÅX dC¢¢R;C@ÿ#Qi‚Àv¶|ÿ2w;¿Ê$Œ_íílr.+;€•‹•›°¼ÿchçÈ0v›™rv¶ '$*q;{G°…¥ókšÿù 5¥°òòr3þíµ9‚MmŠÆÎ– ›×Œ¦Æ€š)äìñ¿BÐ X:;Ûó±°¸¹¹1Û81Û9ZÑ1ÜÀΖUÈÑdø‹0@ÉØô3f$*€º%Øé¹š¹³›±#ð*€€MA¶N¯.¶f GÀkr€š¬àƒ=Èöc… ÿé €•™õ¿áþãýW °íßÎÆ¦¦v6öƶ`[ €9|R`vvwfÛšýeh q²{õ7v5CŒM^ þ®Ü %ª0~%øzN¦Ž`{g'f'0ä/Š,…yí²¤­™¸ ÈÖÙ é¯ú$ÀŽ Ó×¶{°üs²Ö¶vn¶žÿæ`[3ó¿H˜¹Ø³hØ‚\@²ÿ1y!ý‘Y€œœ@ ›‹r€ÜM-Yþ ¯îaú[ù·ø•·§½=Àü•Èlzýƒäédì 8;º€¼=ÿ­øß‰•`6u˜€,À¶H¢¿ŠAæÿà×Ãw»ô€¯³Ç þõóßO¯ãefg ñøcþ÷ù²ˆéji¨‹1üÃø¿:11;w€'€‰`¾¦ç~ýàý¿Ã(ƒÿSÆ¿|emÍí¼ÿTûÚ¦ÿ©Øõ?@ûŸå üïXJv¯S Ðþr} 'ÐôõëÿçQÿÛåÿß„ÿåÿmÈÿoAR.ÈßjÚ¿õÿ?jc0Äã?¯CëâüºŠv¯k`ûMµ@ÿ,­˜Äìÿêd_×@ÔÖòß&‚¤Àî 3e°³©å?³ò\㯃€mAÊvNà¿.+øt¯‹ejýzq8½äß*ÐëÞüï”’¶¦vf-'ÀØÑÑØéõˆ_'À“õuÍ@î0€…ÙÖÎùÕðJÎ`nçˆô×yrqXDÿýƒ¸,â€Eââ°Hþq,R+€Eúb°ÈüAìÙ?ˆ À¢ð½fPúƒ^3|ø/âyõSûƒ8,êÐkÕÐkí?è5ŠÎï+#ã?èÕÒäzµ4ý/âxÍðz_Ùü±þëy,ÿ‚¯\þÅ”õµp§Á×ÎóZг›Ý¿Ô¯D\þ_‰¸þ ¾çö¯&¿Vîñ/øZé§?•¾º~9þûm‰©‹£ãë3ñ÷-öºBÿƒÿ~“@ w)Òœ)Õ× ö»Q"7¦qÁª­4:&ÏÇ—4ødº/YkŽ7¢ÉCÝË[’´×"‹¤ÏžG-õð¡­‰*m^OãU§vÚ~NâöO‰Öõ#¾gRÙõzvðÒô·†nꔣÊspáAS.xwçÖ+í^×÷yi4dnGe÷ —<òÓçi¦h(}ÿÒYª|“ìøäpÎLÄôXgîè³×73X¹/¤rñ HÞÇÑìÅžºël1÷?>­Tª³9}' $ÐÅ'†¾Æ¢öÛO‘Û÷,+‰ZœÏá\ êMø!¯I@ïTÎ$˜é§ÐùŽò{®›i¦#DÓtB @MCZ‡àLU&mžXM1Tö1û=Ø÷þ™‚X-AÊŒ¡£‹äûñ‰F' ú½”è¤Ú%J#5Fò¬®º_—Dñ²@NŽùà á#Ïó ÿ(Ì”3_î»VF¤ýMlëå5/-F¼î%³w4£µOY .'G•l^!Y(Æ¡ö ­fb-ì4Ä0;ÐÁFxÝ'zkÅ$ç>ÜóS¶!͘¼÷+†åšÍ')¬\êÕ5Ñ,Ŭ'ÝMÁЫáoÍ®øhWà‰ ëœaw5UaĵL G&T”'ÿ¨K%S>ÑÛ.Zv®+¿Ú@¨mAlñÒÕ¾áµ=9ipðÐŽÑßž£L¢×pAqÅ»CèÆ Ûœ(FOÊštP܆î°Y·um•i>³¹=}D€# äg#œß‘£€S$YŠÉ=Ê„O€Í¿:úÐÒ„tUPˆ˜z:‹¡É­p§áÕÆg‰“²•ܘÒ3÷)ÊÁžþ ÄaBÌй>.I_®Ø÷î‚Á¢ÌR§fWk¶FV&(W”Í'ü€ZefטÖVXÖ^†ü †œ ýÔDªfNŒã\9ÿ¾>k3²‚`«¢IÕ;à?aÀ9•Xè Í>Lô=w‡á:r3 QË”^~Pìçöep9ážµáÀžHrßA-—+_t©è\ò¶²Qû(Â%ä?ÖHž.÷'yÅRD•ë29×hÚ9óXv)§ÿ.§‡>6½ ƒ(Š1ÕÀùŒ š%µhîNâý EÔ£ru÷‡ŽßÅìé½Y.<èN©»å¾˜À·Ÿ²Ú÷:›xïÂÂÂüZ­O$;Š ôo*M¹:‘îKýÂN£‹š¡4—Ìß¹ðeºMöSnʼnèJd=ä‚J˜°%àS@°£¸{˜›v¥€É›!¹Q&Žfa‚Å9'M@+9ÌàKû ;ö˲¹E—k?ø ãê”åÇL¯›KRÞj´çз„]Â4WZæuZËÕÓ8Ð.á±ñòÁöý{؉œ¥3Ƹ\K‡G4ÕšQ./~¹°#HGS…øÛlsÓ_ï·ÒÓŽáð,JXº¬U$zÒö!™"·¶Ù6°ÈAx£vìÃïÚâÄÞUrmI°{XÚè1Â}Þ#9.ާ1R"i©ðkZgÖ.›žÒ¼Õ0M “t áb+iBÝR¬^_P›<¾÷†+Û¤‘€?eqªAmÐÃ-ð6ú~¸&üY¡ì¥.ÎóÔ¶òlgÈAàÊò1f6†¡4Oà¢{uµ¦&áýâ‡ÕD“EV¹•Œ¤s . ÏRD©íýšÚ¡ ª{‡EÓss Ðg=XaÂȯtÏoêJ–Þ‡7hpCs}§lìóâ3ž:·J2m& ù%&dõ8}ÎÛmîÉjœ&Hu¾«?·´î¥¡Öþû6œ›ëWt.ýgü$Ëv޽K4™ÔÙrh#JÕ½b`°Ê{›²Õê&êqÏì?|úSó¯' ®åŽZoùr'79èæÔ)8^X¦ù¥¦"›ÛÚÊú+väÛk‘'Qòå§-ÔÐK›çÃæ;{£NyØ !ò­lÇúµÈ5- © 4A È™‘Ø_@ð>êòÒÌÞ¯Ú¶sŸ;ÉÔ…ಚ¶ZÕ(ÝAƒÒ›ÛBŒ¿J ¤Ÿ_Ü¥0ÀÑÕâFòvqЄÌL2êŒÖvnž‘ýœ1,øY­º.ÞÀ%ÄxµFïèÅyÀýP ¹eF€ž¦Ï-“‰¯O6¡|±&úêYöÑïzc–ÓÕëjÏ‚ÆdÑ·;$­7Ný†lLv9¹ù“˜‚æx<úÛ°I½E$Ä8hà¤út*¦i±@KXSfa|[ØeÅT¤*öåWÚuzäÌ‹o<Û‘§´šÈ9Çâô!ÙµÀºê'çíd¯÷µþWtœ–Õ3–ê‹úòâ x&µœ Ã'î2É›ûä÷K10§¸"é‹‚€<?Iù´>}Ÿ«*.m`J|Ò–àŠPÃŽEàóNVN™V 3}¸f%,R ƒ5asï± þ)øVýX #Yge\"3ð¯/“O“ó ¸ºž„Ë]\†$ǰұùަŸæØE™XÁo잪dœ¥2<ö’$õܤÏá7²*^ÐX ¥c¾“1øï¹M²ã&‘ç™ êÖíœ6öe¦ªBìrâæ[ ²ñÒ9K÷5V4%EÊ=8E·¬â–¶Ì·\nöG‡’F’ï?z|Ó4EšÞZU÷—öÊ¢yòÞƒs¡ œ9 Ó—ãb£xÕM’öy.¸ýR0Ÿ—†¬/é¬< &‘ŽM~6¡Ú¼9#“®À½C9Z‘5rK È$\”NpŸ.TŒ/®wÇ_þÈ5&‘¦fµ8mݾh/|ÛØ;¸IKK‘Îýí…¯\ºç8¥;ø; ì #þ#áa¨&Ù\ø…4?=‰¿k›µQ =jõ~?⤶Ï@k)o>1(€ô­#™’yôo†3q®äVS¹[[Øl$²ŠµÂ#¯HDÔgIÕƒäï„…èBè³"lûX 7š#igáí¬J;yýã˜>öª¯|9ÈÁ¸¼˜RÕÏfÄ_µ„–§4Øu}~+kdó¯'çS³ëPþ.êd!õ@E©¶¾i'¢ê÷ÞY½=\¨}h—>F(Ê{¦Áƒ gXQ¹,‘GDf d|‡#»ÞWÁÎTfp±Æ"—ÎÚžù`ÔÀodž#]<3cOR[öLœF‡ÿ· <ŽŽš¡{«.@XZê롌ñÖ<ܯ­ÁQÞ¸¨/ñôþKìv_?·ÇwNÌ(Yþ™q´2˜ ï›àÔ㻡vÔ¹x‡yˬ 1ÒшδaoÞ]d²Å)‘szÅY,Œ¸%)þºMV·×@ßн\4ƒÐ²Béó©FV̶¸\Ÿlâ"‹ %Ã}|çxɵæ”\Ì?X”Àéå¤n·:o³TÛd\2Ny"¾—’ ub ôþ:)¡¼\êòÍJàýcQóØžVŸ)\ü ²Ö…ÚÒ›Éäj&i ×ý ¥¹4ñ +۽Ô#ÁUcÿtÅÎFýáÌÔvC§~È&[=LRf’SkZ!¾TSÚ€ ud¦ÌAWá…—Nˆìíßó»[›Á÷S±h7`Å qG£R}~Ú­Êf3^{<2|3Ë¢ö™€l8I6J‚2šx?8>õ"BB:¢´VŸ•@‰¾­’¬Ó„ñ]jeõ·Ýs2lˆÙB0ü™ªP¢S†ù%p68Õ{†bœœI$F‰iÑ·sdãVO R|SQØ– ¹W  ü$r˜(àY‚t˜u~{Ãv}m\4â1¬ÆÏ—ÍÔá~‘üèÇZyÚ´çÖévÌ«x¢·Õ˜ASKΞFw©#´À"öBCž’"‰¼°Ô~TÇÿfÔÐo$”ïý£p²­¸Ÿ„Ð{çÖ!‡ñ‹ÎI³cbÛ#òÎu¹×EìÏqL[Në4LÁëqf/TAìÞ'†é„ Xqƒ:‡$D.w}Ów¾ª&>e7ŒÐR(þ¤ÉS|';(OÅ?þшÜrf÷ú$âù î·/›qDZh.Rº!Ÿ9½qNßžðNE”£º+NáÆK·yš]å9-ßuJ@)¸ ú™™µëï†î™Ð¨Ë÷vOjB‘¿–Lf^rÒ÷Ö8Ã@— °¦}À¬™=ˆˆL^¾·òüîEz«‚VÒ„Xðpƒ5v«çеíp|‚J_x«}>þ0¥] ã…˜åÕõ@ S‚QeÆËÊ1u‹¶— (<Ã+Óý¹‡l}-*ަò^¸ã˜qD5žùIÈìc%º´²+CwÖêöŒÆÖÅ"8VZQÛPÄr¹¼[-|ÏN<<´.\É«.«Ãˆ8ƒ^Sä„'©PR=Ÿ:›FoVØÅ kOjï0Cã‰' ‰YJŠvË䤀0KU¹*M{ ûœö¢‹W‘çzŠ›øºÈá›?xì«pDu ¨”{ß\hÊj»Í35Yòá“PÑ»]qCäʸ¿J>èöêñ‹†µŽ»&Šm4ˆè †îÏpï÷·9¬†å´âÖ@¶ÿÍ^õQÕ^>îgžÿuÉØo?”‰Í¸JÂg¡\>î~jM|–Ø2†åLÿØöD7š÷ W7hôùb rª…ê?´DxÐißÚ< ä6_Ì!…Ìu?‚¶š$~Å{êÏ{ž”d3¦¤å´ /ôðÔÎ>KרmG™ ŽTÿÞs.5µó¦{nòŒ~Ò|t«âkUngÑKåçì —‹žßfðò(f¡€/+˜ÉkÅnŽísW¹6æÍ¶‹óñm¡›£9óÈzNe<Ä‘ ŠF}úPO- úfé§`T÷ö¦ Ü.ÿ»Ú&òõÉë žb«4çV¥k:Ü&%UTÈÜ!{Pi5ò0PlÕuÎ>á÷ï*³ßkÏÐS,7Txã¯ÅõG^äÞ𘢂Cù½ãTZAæïÏÄŽ´›Íbõ@0Tͦ\—ן–øÞW"ì{7ݬFÙŠŒï7½ó‡ åwM0üˆp”ž%G¹qyt:Ÿ‰7Cô}sŠQAÕ>úÔR§îž(ì£ëîIêLÙ» SUÖû!A3æ¶ó_;ÍØí¢zÁ[Ä-9Ýùs!øPUD¿qE¿Ú’0,[ËmØ*}cÎmïo:–üEºË`14œ¯Ç‹¸íô`¡V1”EñOqíÞ~4·¥°ð=Šb£Ë±P©F›>±úõ =:æWÿgñˆ¿0ñhr‡¦p—o~™ÕËθ%ƒ·_/q2 />W$.ªàœêʆQë¶ ò%`vk{œ–«DL² X_óÓ­šé@Û¾l+¬ôLˆ/G1o)V( ¥ÙYß°ô¨´.Qh>l‚REp’lå'[ˆÂø€‘DY¾ësgéÙtõ'/ánób£·¶.ñ¯κ5ÒUîk)fšOÞÄ#ŸU3ž—#ƒ(Æ7Ñ÷$Òù7s{G6—ÛB.éu7ž¢ÿʲ±j2 òˆÖÄÖþÒ¶ªn­…U’KE4  }OI y<øºxY¾¼T´3Õ0b°um¤Ê$+Ý€ NÔþ– Nf~ºÉáeÿ«ã{¶ÔšF¸)¸Ç¹€ÆäÃÄJŒ_«íC·žW‹ áàWI¦lÄî:˜GQëF/´Š*„Ì–N²FøLRòµË4ÊÈTö‰Ôi6ìB(‹fS?NÜ`M8&ôMíþ­ªlÁ‘°på$tŸøë†i}è†ÝIöA Á<ì´²‹Ý᜛ TMÉ%æSoφÅàEâé7Y÷Ó+8¹÷údïŒðN L'&§¹¢Þñów†z•G÷Wcð#fw_>4•tå½?d»€u°˜F‰™ú$èÉÕuÖ„ƒËý³2,N†Zq³.lô[hx‰´‘ URnÙ@”ê¼hõAXJÌ¥Ô†ÀÖ[bBÔŠZn©Ewj }¬‡©öÔñxaXÆâ/2¤aì8…p§¤!ꌺ’ªPfNcŸ¶1Œ¸Î›NÜ t8ö'Ýf(îKI GÇ® z-룾јr€9‘Öi— z˜ƒ.ë¾UžEð•‰ô4¯HãzíY¤ËŠϯýnõòCBÔz‘?nÐæ U¸'ÇR}Yõµï—½RN'ˆq2(Bƒ‹6¾hŸNöýšVnSP>ëÎÄB8}DŒÆ‡Ñ]>»8ÔTsÉAøP-ó-l}Ã:†õcÁÕ Ñ©Ö=iyýGÉSPºÞ¤„‡‰7¡=m”@+ËÓ¡¸¥‘ ¤ Að^â+ÆÐýïÌ#¤$,vShÿ úU XÍ•ûrÆ*@ز‘\hßnjl ð›šØ’¤·,ˆú2ˆÑ¥I° µ|ÎÊ5 ã ]k±)²wÚSÃDi~S·&•i´¹›e´Îr`Û6’^Cc×°J­+ʺ°IÖia¹ÓZ^ô¯_ ߘiͤ—{Å+ñ’]Ã"‰ ÷~ÉèêpJèv¥tÙÑ$ÿ$füžóg­k¶-YPÝE«î½ï­O‰W ÎÙ§ùìã*ª˜ßnD9÷•uDÏ2‡ì¼yE;çŸ ä;ëñeÇ[TmómUó ¹öµ µ=bºø6d,Šn›$‹lÈ;FÒÇ ä}Ú²˜?y |]ïF3´§á|“ÐF–hÙR¥Lp§>Uü²lä¶Æƒø¾!šÏÌŠZÙØ¢éÈ0fàØ61,©r°éËȉy¨.°?£Öê4Ð|°òõΌˌøF6œNýy*zŠž¦<Ç*¹1¬v‚³@ýC+tN'Yª>}xÀ¨±ýÜ ^¼c«Ç3vZ¸cÓJE0b&IŒ-Ý¿oïíazFÉ)CÛ8 ª¿¹š”V@2 wp‚Q(îRïÖÝÙÆÁш§.Ôû›y&K´ÀÑ%w¯dÝH1΃㠛æû±ƒ«‡Š3í{/_¾³Cª¹b’·Ý4¿‚39QÆ/PÞãìzÕ´¡8;teM^q!Ênu?ûuå²!Í¡[bÛp ÿ «ú”ÓÆU$‡?‘Ã~´x‘ÃÒpÅ¡„T2šVˆÅo½%°k—_ç¨ F¹ C@ß5³³ö¥×?è³?­XzÁƒ³ÔÍnÙæ·1oŸâoÓë1›ù–G•”‡VO“t†ø©}·ÔºßÝÌú?‹MhµsxÔBÊž?älIèék{¨JnêoUåt~L˜=T´ðšçµ'WÌ2á¤g¼XR+:Fó1ì˜#ßC|ËÚª÷#)+ÂoÎ̧õ-:£0 ÎGŽõ·ùmê{¥w¸:JfE<N7ô¦"W?±Ý!8lˆå}‘ï1P¹q-ï~Àaž|"éç‹Åÿ¾£š?©îÇúä~ñq³×Z¹å9†}.ŽA¾NÒ^NÝ*ƒðPŽkx’ªQ²|–À·–_+ëjḑO ƒ‚ ÿ&©0fóÆE³*Å‚:n^îç“EáøX%MöÞ7¤}Å­öBà—/y·—â²fÑTþ²™ÄlÓ‰·xG³R…Ôëd¼…¤ÕŸRý™ –òâ÷¶ÍzÍ 6¤’cµ9ªì}ä³ÒÂug~]¦j&T-Ä û™‰»Pµ ù„;Ôwh§!éÖ(ÛZ'>4Ûšâ>#ŽÓ¼`ÑO~$…[¥,±}1='„ÁGÉǨrô 3S!3FCõGÉØÞ é…m£¦*Ö8qKœsÇ>œ˜Ê ?ÀUïÉŒx2G*΢[÷»}”né*+yæ~ضU¿^¶‚÷>èá…aþ U¨Éèë³ÒÌA\¤Î?g¡Ì®iX5ß~?Ñ—ˆM‰í±Û  ¢Œr7¹¨üEõ7…ÌqÊOæUš~§ÊÙÏXÊòLܧFèù«¹®æ‘5›ùMùŒSܪœ»†ŒÚ¬‚”Òhö“÷˜¤x&‹o£Ú@[Ê¢%°)ñ¦)TÖÖ!”fc¡@x×PGYÆ™6…‰ÏÖ=€ÓIï¼ è.N­h\.Oß°*Ñh5&Q‘Á^6)Qr]ªÜWQÁ§¸&òÜ:w°·‰\QÐò|½†­ž1“Ê Ë$w*\I5H7ˆZ`ïv¿?%5ÛÙ"—`ȹ%Š(={EïsÝÂÊËq‰~(³d¦cÆ»:ëÆQz¼þ_ó‘•+Ta´N”›è{éÑ»7Ÿ1ž"÷ŠN¼ÞÆ=\„ðOQæú7ÑÁgŽ…žóþ‘Rì@B¢UVfP&'jÚoß«ò`¾>|ÿ6;Õ“ £Žº2ÐëËø%d•ßôIòKüð@S¸Ÿ%I/r4'3 ‹×+È|JÅ7„„‡Ö¡.ú@ó¦7ûl.¼â„Ô6ë ,⻉Z¹Ö,¶©¤ÒbdíÁR‘ ž17bõ,/3›Å÷Yý„.ê8”{Ú è¾`Çn¤Š§šÈû·—ï“.'bD²"ê+Ë,bðì½¼ ˜H–<·ô|æýÖòrHØ‹•&06£ÅùÅëcŠà‡š<’c£OEq›óJÌðXÁe œ®¨øWl’x@×f9úϳráá÷]Îdž[™¼v„³¥÷ϸ–wyQà;üe¥ƒnıvvÏÛVÛœ×"žI¾ŽúbOú :BÍè—FÆVúZ˜šùÛÙU޽(u’Mñ™[•&0‡[õ$¯äÄÖ7:ÜJŽ.ÿ1ú®ô­û-ªhósZP³º.¸à-¤ ˆ3 Vãû ðä¶)7êòr§æ‡aIÑŽçÁ\ÅyŽúÏäÇ­ŸÁ–‡‘ê°1 6Ø×žÖc¾›Õ2EzðÄá¾›i$ž‡P%­<< ¿Ï*f¶Ë­éRdz;„ŸO8ûÅ6 F?G4óCi3ø1š†–ߦà£!V½ïI§É :‘d©âóÛÇM# Ù?Œw 2,xð’¢ÏXÿXDß`›úøÍKQú +­™TE„ŸšS»íç–ñ×ãµÞï~&&ÑVtUïñó3„§ìÁ¿$ {¬"ž¶çlFŠâ*–Í¿&•4iÁšZ«Áزž‰£‰°Åh5Èlìôe§|Gà@aÞ|§…ñ8ûŽ^î[ñÞJIÌ_Ú°@c-ÿaÚ‘T*ú›~¥Åcý±¸HÚ7Tª¡‚2IxÖñnÈÚð´ÏÀ³½XIï[¯Öý©tMB“ù [»´r눑¢”j¢€L¬_ó­OYä^S=$?êd£]!Ò&ý ’—v»›ôƒ-Ù^,È_äP‹»ì7FB«”ûg–eÙ.݉j+°ÐõE\Cýš'r96Út6²k~–¦—ÐÃÂd3È2aiùq¯§›lCà Ù¿'3G‘=|›€c$`rrÜo@ScÕæÔkXìÉt«½<`p.ýúM}öžïwgz=h×­Öa?•K3ûÞÖÝ ]PÃ0&Ë[ÓU3ü+jou1ô|ÛÞ,oŸëÍ8½Z>}uWF°wÊËâ>.[ÿ%Ôá=cBÃÅï›Ðá& â |ÆôR"±²6!-[³7ÚÑÑD~Q‰'\lä(€™9²Y“þ„$Œ[ þsŸ«ñ˜¼e7 ¿§ [1=´£'—¦ÏC–ð†/^ÓäV8@$í¦ ! Re)Úýì¤BrÏiÿ¡ db>¾ÜÓýuô­§šjMQ_|ÈMÚOübX¹G ÝÌä Àµœ6ú;µrw(våhJl~˜»¬NßÎéå‰öL7üN$£=jÊri+3æØ§2•[1áTC¹43íâJÐU´T[Åú%iK¼Ö×.l•Ñ““hKo݆lýS( ¯áÓ°¥âù¤Ý߸+ 2ìÁÔHÉ?1Ï‚Öa¼XéE:…pºF§¬²3ÈÚ)޹Y Ùqñ"¢¯azÐ4rß'ˆÉÌŒ˜ûH†KÁ|["iŸõ»i2ט­&"æŸ-ûÅ¥ü<´,¦2З5¬iK1ÐÍÈÀ'AÙß©ƒEê5¼ÊyËEæŽGŠÒ\šùžÚ[º! 5eà+)rô"ÆÅ€Ó]’0ü]–hÚ<|(¤P©i()è÷ìÐé§Ãä‹f¦•Uênò.‡mf†3þÝ(õ¯îƒ~^³&ÎÝnQ%Z:D ½"cÝ•¾ÉéÖ:š‹o©²ZéQ¡ù}•2zõ/­Î@¶ÅºZéqű÷^é;DGͱRÿ5‰:º ïL Œ `è…ׂ=ÁÛÚ{.ïÆ+ŠE£yêhuðvWŠÿNœ107ºJ´ΖÓC¶,_fìD š2ƒßåkþ@JiÄ–`;u ž)Y ›Ð‡¶(`û7c0þä¯1ûyà܃Ç;¬QÒOhÖîÎûI+]8¬Ôô’˜ ;FžiEA›œF×(—¢¤‹M8šeV`Bn6ILM+ÇI¤ŸäfN>$«"oè9¹eÍÖD×¥Q‚O€Ç[>}¶ÌPŽbèYîLºýtüV[ÓC½ïÂ$ÇWh¬Ö&“Ç[d¸i p-*߸}åµrbXŒ=krëž ~SžôÞn]½3¡=:öY‘̈ˆ. Ýž±Ôéu\»sHÏòV_>ô÷yÊá$/Óœ8)«÷þÜJR[aùÃr¬€!’ßy®¹–”Ð_÷›–Y:r6Q»J£Û'¯_RÇå¿W–6»ÐÑ‘akÛ`ûñ4@_ûÕ‰{†›öyi?’y±×þή=Ò£–û¬‡WúHeW)l½„¸ê"REç8c…Y“IÒt;·—Ï¥ð„’㬱zúý~22vnv{eP xåý: Oc¥økA’ŽhùØ<è³ lI$Æ]ÂNùÚ®Á‡=``6f O"Âõm´lç·ó9N%%¬ð~4мl’ÐD—äOµf욟†CîŒx%bd}+Ë2Ù+š[ã;;¦‚äÎ{ Áç¬â¸×ˆ1 ( 0?¶ÜÅ(‹°ß²~ð·àODÈ]û]½Eƒüɲš ~û½G$-°[—¯ ¾»›' ¶0>eLv+–ÇZ-J×'Ýï’çËid•’¨ZkE‘r_îP»'¢ØžKý¡ÕƒŸfD×ô…òK%Ú™nû™í†n×÷ïvï4‘5•€Ü}Ï×\Pçqÿ¸ö9¦±ÊC)¥ŽsŽø47Ð}–9ß8,>N@ç§&á•xtw\Û@!þFìµø Ú^»Œi,þÇžøLùPñAÉq}–3«ºæ óó‡Ï™%¡Î—̶|¢¿*Ü­ƒUγwAÈ ®FWmFWšOü´8ùwdöû®ˆÝ„ >k]•;b‚7S<žÌ†¶Í­$ W„Ì|/¾%•|ÄhRï“À¨3"öë=ç$ä¸=@T I|v@üm¨Ò}'æKª¦Y÷%ïé|ròb|vjW.²¤úŠÞ›¿$Ê9•{4˜uAbÃùC$!Mø±*ƒç]i%ŠotLPYõ*A”EÔS<¢+"Ôr.œf.pÁÒ‚È”®<«Kݳ%ˆS‡–I×+z/b·ð¦ôG¹LL Ú«X×íÇ1CÙÓlε0Œ…NôQày¿6Òvz÷gÉé_––Ö[¤²­5üÇvÙ¯\„ŸDÙ¹†ŸQºNG-jNö©¯ÓòN¼4C±¿Ž‰5ž[)±ë'“©»‘ a+•ƒÍ.ccÍá ’öÑwÁó㟽ٳ¿¿+€è±TõS·ãî 'Òõåȧª†?]R@šPvˆO%· ùM–Z”„QT™¡T6BR»k¾ïDö¡¼ùÐgù)Ol€.XÑu‡,&®0ã´:ËOÏGËYê »Ÿ9–`)µ²ºq[;ËÑ‹™ˆ„S¦Œî§E¾g]¢yo>†â™vFï)Õ{ú5e/б(ÿxpr“I$Â^ú¦Ó"Ì,Rô9±rNɦ†ÛÃÝÓÞHò“ðˆ§Õ×óHá!>"ù~MA%3ófL=ÊänŸÓŠ]Ç`ÈÎÃ>hÕèzЦ=í /L&-ÜÊ,õÏÄŽRá7N”'•;ªVÌ\‡ÁLÎ5x[DÓר.¼³Éú]È ›ÈOWsIß%òùgîtsíg~uç•ÖŒ·¿>ä ] ÍSÃSõ—\Z#ó?/P?í'Ü9|±'œ{Šì'x$åí± eã=V\ ­—s)1aýüu£õJö7K÷ +-Œ˜T ´±2oñ"4Žq-yG†Ï§uzºâ ½¹RŒ™¿S ´?ì >ã ’êP´ÏNBeíŸc’ûvlHœâ3vÍ#ɹü¢ „4&‚\ïÎü¦Õg1Ù³~ÉbÈ€­C¹pÆ·£d* éÖlÔ™;§»ÀçuÒBº$3ã ²ìcUû„nÝ@­‡±CĤÌÀbS´¿ï˜–?¼Ô¥~eqí³«ˆotâKwt¿¬öÑv8–>ˆlg4¢_[W…ƒ·×¬A îûUÁå‡i ‹Ë>¼u±$H#þÊä §˜Ž>jÿE(ÑææõîVW\Ÿ¯,!åõ›°ºUº´Bt °€Vä“ÕÓe÷~°ÝÐ$S<õaÁQÖ3*Ó.˜ºAÅvƒã/ͱK£Œ|×Ãоæjºœ&C-²çž/v³§¯!/=ó»öô§9›jG¾7¿@»ºœ¸òXIúô”èiõœßU-xfœ¢80’ñí²6ó}ñ–¶sÑ)]DªM+–ëlk \ïvÇÞ„í¨Ja¹™qeE¾³eÚ†PyÍŒöšvƒ+Öʹh§ñë¦G‡å‹ÇÈn:é2ž$è)Lˆ):í¢ÓcìCP¬¨$‹´ÕU/®¶ŸìCÅo½×{uµâÕ#ŽK JûƒÙ†ÕÝö÷)}.¾oØ·˜Už7ö1VÌu•rõ9Ʊvøm«qdq±üH.z¯\;9+µ)ÜááçÊhyòÙ«w‘8F”ŽÐì çB܈dçXóŠl&ÈÄñÎçÍI‘=Õ$Q ÙÛ0á`2gýBVo.R>yVòKh\Ý'_ ÿ[U¨,¼ç.£ƒg€é›)ðZl#=YjÚW‰ÁéXóÈõ¶ùG>öóGoÒåÔ|Ki? ²ue¿ *Ã/N53£òGa#[ñŽ]îs¼sv¾ÙŸ·kð·:2Ù’Ýß¹2™²~á´§#ÍÒîI´oöræ6­\ÅÞçï F$ßlóö´k›Ró¿›iý¥5¼p»žŠ÷öZ!sN@nÑ–‚¯,WÐ’[“ÃUÛ‡ÕLÞÔySuIÐ#àÒ©Ãæ›´Û„ÏçÎÔmbx}U·®8t~غ텀 p+»ûΓ$/²_¡}¸šÕ£k/áªBæ×!c`Ù“6Š~‡¢Üæ»Û½‹èâ“w$t ]£ñ1íXß%ð‹ábÖgU]«ª g¼zTròÜúç)¿­wêIcHT³¬ðü†[@>kt ׂ]©N4Õ¥aüwTÇ­{: u?à)Œæ?[ÚÛès!²ˆÆX‰@s/t(Rx¹E½°%@Oɉjɘl*©¦É÷uäKøû—ðc÷†¡t?¦€'ÅTCËí1öV zz´óÕÏWyqhZ>Œ˜FFråð#B{óÑH:îÊÌb„(½¶ÜS g¼þ.ìZ´oå׉°s.ëÊÄoÔøùÞô ¬ÒŠòÓ´‚cÎÊ"ç›;)lþÏôŬI«õxâÙúÄ”‘'ã•îÄùë±@}ŸlóèIkðbܘ†/Kâ•”º qÕ·ÑÙªé€:tlD)e:dÏV"¾*Î…‘ºPíæŒÁ+y’äK͘`é;Hrú6Ѭt´ð¾ÁˆW:gö´ôÃ= Êýƒº?$SÞ÷g‹ï3‘tø±Já“墯Né'OÉ=™],¸¼÷£Ѧ´Ã&ͳ$Á7›ç"Å:ëàÄSF#Á+åq¸û1gy|emMb"ö»~&Íx(ôqÓ›",*¹Õ#4¼EËé»ì6ˆÝx”6u'ËÒKˆ4¯oa)q¦~1°mcŽ&}JùC~+´xðR)˜[½2€ÿ6Mž«2¡î¼¿bùq‚œ{iÐw™l⟦9Âq÷‘!ºm åÙÞˆϼ0Ï»À¼½h|ËÈ.Šëø|ÕQÞMàœÝÆá[ûþ™Ãù¡Ê1WÉ:\¬•;ªÌvR]>$ÿìÐkLßWKÉ}§ûˆZ™¯@gͼד=g²®´aoO3±Ša²¾ÉfVGÙ,÷ò®‰¬ÕçI\ûöÓa±\-xJX–¦|°ÙÀna`²Mú²™èD²'©¯ó‘óadñé— êÏÃÉúŽÄ2”X/`FR<¡:ÅýéˉìB„;²KÙˆÆùãÖ7ÙÕx˜~‘Ñ‘ÐOÆCWô}£¥Ô´?W}K Åy>{/R}¾R©P±]ÐûƉç÷.i2z˜ù] ³hÐÂ<Õ8àÌ…r•¢/P2;>:¬„ãT)×¹ £ FÆ‘_ãM©"Fn>•ê ~>~, ”ØwaƒVªòÀ›êÝ– 21_ ù6—3IZžÏ)Äõ3]ú„±r-9q„ßÍ}￱“ȇŸ¯G`ùfÁ7ãþå’,Uz!ÓT|–o$2¸‡”Ú”ÌNK®¼äˆ7–Þ¸¿ýá ¸UcŒedB„‘ªí7Íå¾qÀoH0Væ:³.R:Ê*’þs#lDºï¥îwaYx#I©^ò™o;û噹Ru6„ÅZ= Ø]2†|ã,­ÏP0çUp‘©‹^ãz Õ›Îd‘YÊÄ!Æv~Bk"1†X0™þÿzé^£ endstream endobj 1440 0 obj << /Length1 2469 /Length2 18393 /Length3 0 /Length 19814 /Filter /FlateDecode >> stream xÚŒ÷PÜÒŠBpw‡dpw îîîÎàîî,8Aƒ»ww îàÜíÎ'ç$ç¯êÞ¢ fµ®îݽ÷@N¬¨B/djo ··s¡gf`âˆÈ k2³˜˜X˜˜XàÉÉU-]l€ÿ‘Ó«œ-íí¸ÿ°q¹€d¢F. C9{;€´« €™ÀÌÁÍÌÉÍÄ`abâú¡½7@ÔÈÍÒ Ƕ·:Ó‹Ø;x:Yš[¸€òüç#€Ê„ÀÌÅÅI÷·;@Èèdibd3r±Ú‚2šÙTìM,.žÿ‚Š×ÂÅÅ›‘ÑÝÝÁÈÖ™ÁÞÉœŸšànébP:Ü€¦€¿JÈÙÿ-ž jaéüBÅÞÌÅÝÈ  l,M€vÎ W;S ” "% PpÚýc,ûàßæ˜˜ÿî_ï¿YÚýíldbboë`dçiig0³´Äe\<\èFv¦Ù8ÛƒüÜŒ,mŒŒAS7ˆ )Œ@þ[Ÿ³‰“¥ƒ‹3ƒ³¥Í_52þÔf1;S{[[ ‹3ü_üD-€& ¾{2þ{¸ÖvöîvÞÿAf–v¦f•aêêÀ¨fgéè ”ý×$‚ÿ-3ºØ™˜˜89¸@GÐÃÄ‚ñ¯ªžÀ¿•̉A5øz;Ø;Ì@e}-Í€ ?ðÞÎFn@€‹“+Ð×ûOÅÿ"xff€©¥‰ Àhniÿ;:H 4ûƒÎßÉÒ Ã?fÓ_?ÿý¤š0S{;Ïßæ1£œ¬¸²²í¿%ÿW),lïð¦ggг°3˜™Y¹œìLßÿ£hdù/¦ß¾Rvfö®è‚úôÊnÿÎÕ¿ B øßXòö É¨~º.;“ èóÿçqÿÛåÿß”ÿåÿuÐÿ/#qW›¿õTÿüÿèl-m<ÿµM®« h äìA»`÷M5€ÿ¬®°½éÿÕI¹vAÈÎÜæ¿m´t·ôš*Zº˜Xü3.ÿÈÕþZ4K; ¢½³å_W €ž™‰éÿè@Ûeb º>œA3ù· ZžÿM)fgboú×–±°sŒœœŒ<á™@£ÄÂÎðf­£)Ðãï)02ØÙ»€\ â|föNð(;€Qè/Ñ?ˆÀ(üqE~£FÑ߈ À(ö_ÄÉ`ÿ˜Œ¿ €Qò7b0JýFlFéßÄEæ7q‘ý@\ä~#ùßÄEá¿è#ˆ‹âoâ¢ô¸(ÿF .*¿ˆ‹êoâ¢ö¸¨ÿF .¿ˆ‹æHgôtÆ¿ˆ‹±“‘‰5ôܘ¹ü–³þWþ϶üW*Ì俈 Dt«Úþÿ×À0šþA €ÿ… y`þO/Ž>êÖ-à]Òä9Ž®‘ó0îÝû%<êÊVÇÃv•öª9džËfècÔ¢u‹çÈs³æqI ]è‰`iÐÏ=Pænngѳ¿¿}ާ…÷=‰a-ôÖþÉòùaÞk½B•Ź O—â}|šÂ[ø EgÑ»¤(V:,ªÈŒH¡‰¿ÅÈ‘­–¸k™·lìûæî¡A HÊötX¬‰Ò¹ðÈ¡Jv'.zNgñÌ ³A>¼³Rçþ ¶WTå\¦S°À µË©"KxZ_‚Íû*è΃ðƒ”EŽ%¼¼Á.¿Êú„7Áø%ã\o#¤ÓÎwœ÷¾ß¿KØÁ~Õ¹VÕ:åW#!5e¶ Îæ6<ýª1hëk âV0i“¶UÏ­EÞHmªÚ«{õÛÅ6üs=YÜNßԖ<ƒH!•úŒî™üÞaNGo3+2ÔœÀ¥ªsO©\˜bÓ]BçgO3Ï’Í….ãŸh}†\®DŸo·†ãjä]¨eù\-J?ÏÍ ‹N.ç¶ö(ÎEéûâ65€êߡ/™ôR£™X}ÏZ±ïw»-YèŽ쵫Äýn~¦íòÂæCÒ4–‰Gkv¾î—2|ªô t^mÞHŽ¥tv™Õ¹ô:ðYZ¯g4‰Ž\&pên'­ŠÄHîÅjÌ“ý…å¾=Î6Ýrïa2‹Ì©6¹ôäz€_»ü×ø†À÷Ï·µÁmâ Im¢Š×Óé%Ÿ8Z ⓸ŠÜø,ĺ 4©=ãÂäïSa¨¸ð‹÷qLÙxó64ÙÊ ÚØ1ˆcÏ5E2 kÄÞKß~.ïlBÕ]šÓÓÌÅÄmMy__•ñ¼lCÓ<7NÀ­EØ@ÏOè0Ây›Ü,ÛúT?´¤ýuHįnÈææá¦"½Í4¹`‚›1ð`NL‡9߱擋¬4I{ÃŪî èLVбY8–¨jhÜBâ#æùðÜÓ‘vs¯üiFº>Ù_è nÏíΊÑij~%3X›H•š­ÆlVÁAÓà“‹€=E'VY›Œ×"GdÃ=µãÃÅ›¢F’»…q—¿ä«¥˜oHPƒJ¡í‰×]²2Ö=Ñì3„ŽX›7Fh¿ƒ—2£ÆÃ!2=\[`‰‘Ô^C¢­EbÐì’²½9`_Ç1£©–!kA„É•P-ïŽè¤ƒ¢lw•NhΞ„–­Žl£¦¥ •´ ((C£ñ®],¢ÚÒ`„^º#iÁ˜h2?<ÿJÛ4ö¼Ô"<%î[Tl?¿‡üiiÞ†Ãv¬3DQV‹„lÀ²B¡ÿUö¬}ÌõìqNI~7ØŠ4Ϲ4­®-üäBi¼'ÜÑ^k<ŒÏ ¶\$ÐòˆCÑ™ŽsÀ‡»·Š /ßF•›oÆ8Š"˜HáØšHg¡Å/'f2ƒ´×•ÌÄ•1ʼn*vÛ~¤1þh4azD_t-ω±¤',3GÇRm¥2u³ŽœOž4*àȾ·–êîFMà8›d¶ßÂÜxQ½´•ôeç÷™ä”Óo‰Wi8G\eÚ'ùŒý'ü~=¬KýˆI ð²_B!¨"z9ןúºÊ¦È-”u’p~•éœE€øu·ßv¹¶þÑSå}yWà“ãfHý¾—A4Œ5wy/Y†,3ÿ.­@Çêÿ-=efݹ/K§íç¬ò[Dba¯*RcÀ¸I-L9ËI|0yà³§¨®\=š —äÒ¹RLû|–“ÙµD±þ³.;{x2éö²–N¨Ö÷zj¬}l™•B}Âz?»–´J9|Í'ºùœFHƒ¦d¯_Ö“ô]5З<¿wùwõãÃ^U°5+ÉxS/óM€…jˆ¶›ò·ÙãV´3–“ñ-Cè(‚Š ²oƱ>·¤P$]21Ȳ5Ç~x#ek‡™ÌÜù¾žR“ãÈ.ɘ)° ¬WnýPÉÏÕ«ÅUÓ×ß:œü³£/]•Ë[<£U­m°ù[)~“ÇX,€6žd:9n`4Aœ³†´%|ä¢wã¤Û“U±‘¤Ì˜æÄVp|pŒ-÷X’‚=–±(îî?|d§ü¬wé_¯Ý­8ñÞaüóâbc‘SµÀ°bœQÈʤl"%=Áüw,´²¨µ;V ßBUp¼}Êô•ÜX»nÒa}þw±39 ”9ôÍkâ÷îr ªqÕ¢ÎÒ©cJ­õ=ÁÞ0pOªM×,UêxñUòÎ?f>?]¢øw’ ¯XD_®’.Òm^ñgï…ã_ÙÊ|Y!‘Ìú^<‡’h.g™F-Q›à¤”®¥jLI6âÁ yœø;õ·•O[ÃnMAІ*Ü?¹¥ʃã#(÷þ[\å`Ñ9cë¼Zw:vÃ_+¯‡6Þ}>†ÅœýÙ¹¹üñˆì±‹”;Ň>oM„@ta¶a’›=†P…^T¨èN ÖÀU|óL¾-d…7ï¥ä퉕&T›¦3Ä‹œþÒ‘XuýIÖ¼ì3Éñ .m1¸šPDü÷Ñwˆt¬èÝÛœ)¤]oFÄW‘|Ÿ¶I‡1ž^F’G\ q¢ŒóšHtÕ­‘$ïtKu 7·çÉnø:©'â‹ðï¸>ófØc«¡/sV1ä°—nã 7n+KÒê ¹ŒHpÕ‰1¶)ˆ<ИÍ÷Š+S­“ùRÂN¢éÚÌía1Õíë’:gUé;âF­*n‚3ù–‡îû3ž¤/¦éoïzÇÎÂPÉGøeèB"îgõ¨>Ÿ­Àsï^±´Lc¬­y‡æìnKd/|…üÆ=˜kSñ8àl´÷ñ`¹S¢uF=Ò¬íZ­=w­ó¸p\ œ×°å×gz_7z<ôWÇØÐ¾*dï|ï6í­])ÏÜ3P_ª¿x‚‰¥†l8ôÕ³¼ÇlIì÷•¢Ù¨ÇùÎï)®`0ÕÎöý™{+¹ÖXl?G]/„¹qFýüÁ˜.˜$\Æ^œÉÔ8οõïm<{ÃŒMB¼Â:Ê{¿o‚{ 6­áuC(Ý´dŒŸ™çù8hÐàœñuPåNÖ‘K‰§%xíÅô¸Ók yý¥8+Þ³9javáFEžœïÒjÉ0k¶¨õ°…aŒn¶“«)ÿ ž;Ë!ƒÎ_XðöâÓi&Ö7òsQ÷ì óݱæ©YÒ“WÓvÈHO‘8¦½_Ï`ŸË÷·ªuÅÝnÔN4ˆºl~Á“{@é˜×Ï¡ž†Zqø¢‹ Ìa­‘$$è[Ûˆ|;óDi]#'|ý@=Enר1/ž©À†)‡šæYé?‚9·ïw¥íØqZºòÁR*/4¬([dL5ƒÆ#¸l@ï©l?…úúƒe68¸ ›vFŠ:ØœžínD ú,XüŠÂSb`@ÕM;µ9˜åk ü%9ý;iµÁ³UMÎ9FüP“pì¨@X5ÈOtwœgåòؾÂypqo×mZ½Ú:¹Ýd(^&EâOÈ5ð¸lÛ6¸k+“íkîÏFð,+K ®¹þÎŽ2­,Èèmv¬$rá[n:Ú ;¼xë·´íTwH\ ÁÖö’=wÓm¦˜oßtÐ%7K«OI—Šü‹Ã€qUÃÛbibäl„1b:ýhÜj¿NÅwæõT:Ü aÚ9,r¾q'rsÁ ®d£ÎÏ+CÖÛQHLyÆ‚Œ:ŠÛK^EZvÝ“ÐJÿkÒPQxÜ á{êÕ)¿)m!¬GE&¨Ø hiEl?*~?®-Š¾Â ·ž-ý7Ø`¨NêŽpMö}> ù™ #yÔ¥o¥ä1ÌP[ nÐÌkænûluœ’·ñØÇįW ò×/=Vy[ lD%˜ËÆëo»-1à.¹â—ž—{u»7gÞWîJ:´Ú‘Ò yŽÍð´-›‚gÛ¶vt?¬äìÄ̤mJ”%ˆªÕ +뵫?ö¦ßˇâ”ä¿eÉ Frèõ— àÈ HcEžíS. 1ÜZw{ó*÷~Ø%c4ÎÛ&7Q® Û´k'†¤ Þ¾LÏåÂÄüùaMÅÕ@5ë(¹ñÅ/(`¼>E±«”ÏÍCíÛSi 7xœ)Ž Ìyey/G•šû‰Øâ“?ÑÔùå1Ÿxlïà‡”i’P&L0´í„´moï ˜¾ë !¸ˆ§dž(µáê{& ŒÈÍM‘üÚü㌷d4æÊÕr¼Â.Áoó¢Få³Âòné¤SÀ_–pûïløŸ÷+7M¶óú¡hm„s¦ý0!¼Bïè÷r:å¡25°04LÚœb§0C#p¢ü{ÕéLÀuÉxŠ*\U•»É1å>öˆžø7OÉf;kyGˆÖ“²!Ü‹z•êZñ4‘Ù¢šŽfSNLȈ!¦P:$î";¿]3AÃg^0EF~}6C^c#é*âÕ9©ð…â à$_jMÛ°fd‘j´Ž ¬,v‡0æNF¿õâÑÚŠG¨ê²é÷^*£ÃºÍÜ+ä‚Ç ¤ã¶9&Ì×vt¬1ÄŽÀʼnªùE‡Ì·âs©†wðM‡e¨Ôû¾y|wÏûÚ Ž04Ü6Yí:ÝT7©kbÛ¡q™õ2Ä L.‡Ô…q¨fç7ósWœÉПm¦íÒåÜw5y3|Fºîs›Ï7ÜqYHÛF¹}ƦÚ96rÙ$j ç¬.ü¤BÀÄ>Ú^Ï]¤»UFTÓõê¤{”n£j… 6¥þt"”Åiê¦|üÀ:ÆmX(Ä)ë§Ik°—Ú©L*±#¤Þï¢)ºaŠÔYO ·À°EèújÕëÚx§&(µ†à¸ÜIkú´è›|dMv#ùÕ4ž9,Øå0¾š&…ÅÄ'ޏ%…Îý«ÇŸs“,µú+¸÷qàÈ^Õ§ÏKùœ™Éò—O³•7’eþ'sÃ[|a‰}ø—ácáä÷Ïæš¿â0o>·hŠù‚Õfž††î5ÐÛ ²ml”J18^ -íKBÄyëâðYçÒžµ!^×·äɱ7” õÝ'q׃£ú¼3(Ä*£¹ó¬ù(‡é„Â%µMR>…ÉðÙ~ó+Õf2¥–Ö…€Ø_^=¶ Í„YÖÇå:?ÛSkxå|úBÿ¦m§6ÉÚc甕ˆ•gíâÝŠ2H½×=œ<^âF, êq@ŸO†™Ž$V™ÍZëjà¨Îp¯AäFtñY°ÖKq[ Ýét¸îU‡}LêiõÜR÷A ¾XïG0‰yÔ d³úbOÁNMDÔ(p˜CSt JŽ6i¡’'‰iÆ32?¢ÏÄõ[¾9HÛr2uBMÚÜ·9x=Hññö¾˜ãUâJ¹ÜQ*ÑØ‰MŠ*0Ø“{+n-/éjù–uàËqWÎê9ôôï’Î¥ÆûÚ+ƒ]QBiÒ•y{~\n5’œq3@ûM¦ÝÃRT>…-7¨Â%ÉÈsÕIøñÑMvå2>.†µQÕÿÁwAŒÎ¾9q•Y4Þ#ÚÊ·ë˜!Gñã]óHÝrõ4’'½P2Áù8e÷@–¢cPÔ[ÙúꡦÓ#gºz¬Ô™öºaV3Õàν¾N:†L¡w ×Ê“AÓÄó¼¥/×;ãù$aÚr#KXÌAüü½Ì†ÃÏxºôm;‡ì÷²~¢´>Σ¦Uß<™aŒË1a4Ù d$ ¿‘öÿâœÞg§wÂFEg#±CšJ‘¾ZF'€NÞü€ÅÃà+*3>¶f¤]4Å“ïnìqÕ~ŒLüÒ«Áh›Ü;Ú5HðEìg;³Ë6¦Ž›ÇÝÒ÷;‹¯Äõ*þR?eU›‹p‚Y<ƒè-`1`Êæªê ?éW¹9ñtl²G\×nµzÅÆ´*ìd6´Ø¢¶O³f;RÑ*± ”\G‡¤-^Sgèa>E8#¥D±§B‚£PËÛ¦ËéëØ`5L$„öí`wB~€Îï÷eÜ[ÕÄq°Ùf$ލò…B JjTqsÙK¾ÐW²-;0Ú%¯:Ó«n¡§×“Æ\8kŒCÒàr0ïÓ³•Í¡x©¨?+œ82Ì×ÏæT£Ì‰p—ô»{°ðge>Ûœ=§PöA&àéyÛó™þpQìú¡ß3F»’LH>°xÆ ÏI+î˜üzùM[ýÞZTaPî2Íò¹(³0]ÆtÜ„Jš:åÏþ¡„®f­ØR¸‘þ!Z§g±¾ª_‰ ˜©eFøå0m§S< Ûq/¶jïzB¼ÉÏO\ ðÂP¾ÍCê¡Â7´c±çû²3ó;ü85:®´z2µW:J£XÒûÙ+­3üZ³®s 8ÔEA*þÑrNŸ+£‘71<Ä}H›K_lÓÔ!œkš™á†qÆ¿#\ Çâ°ù^‡û ×jnsA|K%a¾$|Â(kæ%’+÷‘„¹i~-;ÃP*_$Œ„‹7IHáVÚÃEqö+éjŠÍ˜§ßˆC–\‡þRö¯¢"6oé*ˆÎÐé­ûlw´0üM½ß<$é Cƒ\=V,Åäí“2a¸’çö#>~G}S]}ïÔõB~ŽËÛ²žH0Äà$Y“ÉÊôí^ðy²é›ô4Ç»¯6xžã ô¾ØNÆÌ:Èv*ÈpÞYjt‘9Îí¹Bq. X,Z —ÇŸ¿RÉU5®e #3pÁT ðQ‹yM\j Æì¿Š)¯«lÅÊÌbáÃjZºø’T&} S·G‚K§ÉÓ†ÖKOZ’(æÅØü ËoäŽT~Ìmí0þÀô× êªú4¥<5Œü¥öãÈÖ X¥ÊÀŃš¼ÿ¸A¸ù‘ÆÅÉ%oÞ6~zç5ÃÑW’Ý>2<];ø‡Â.+飓ãïŸF©Øè˜ðöŠ2–鎴]ø™Žn òN× SÊŸ™5u*8¿ç™·˜m¤eñ~ƒ˜ô4 )@ Èÿ¶£(Oùi€÷ví£¹ûTDh5W‚Ø’­ñJ‘Irï™^½pñ]5‚eX #¶ãxÚì°Ã+D†W¤Ó!|fdèô¥lŸöžÍ²&·³â,éVF$ä‹­ÂD†ÝŽq'þpÄCÄÖ S¢§£¤Þ¸´*g8ó„)]4¢tn0sË ­®7†½FàÓ]ÊSζa ±îmQ!»ãQÜÿ~MadXÑ)·tfÞz¨Â_[Ö#’¦ÁE#/‹-°«æÓsÏúIA$ˆöÕG_þ±-aRø‚þ‘ÍúAt¬ y_]?â=¦Ëkn{8š¦‚Í벇Âá}Îï‹oÕu:à’o¥ù7+Zà{¡;<ÙA’¹f §™œº£Áï6à ¬Ó<û#xÀ³-ÜL*óÝ®æiðfµWÚ„Ýüüö O8è¾ÈN°ögÌĤ'ìÅðwa¬( qðãötnÔÑ›Žqç–´Ù1çw‚=[…±¾øj·”Ëš+Ùv)ï s¡+p»3Ç0M؉ýÝ–ûœÓc×n3Èöj›’»×—B­ºéêõ>+:Ã:íQn𛾖DE·M™È NÁ'Û]»€š®Jw)ýcic+oüq®Š/|ϧ©HÖr*;±¤Œy6Ð ÄÊíØÓmwŸüSèìü§G¦*H~V0"œi¶.ÎÙÊ‚YPEEo¥˜]33d§B)šæ#ºëŸëX×W06¤¢•õ¶¬SE!ˆ[ (‘xÆVúïc½^ű¹ý"[Þ^H,Ã>ÔU&ÐDAA°ÜdÆ.C™ÝìÎØïƒœ€"qÔšœ†Y'n9úUÕØ´+‘²B­êyW'ªg÷Òuû 0uÄ®ª¨p©¢hဇŽS9ËM×å62Ç,¡h†h(n‹b6u”x,‰ç°Öe»K¬ÿi] >kú‹ár»ðZbÌQD%ì7úµ šž_JÅxÞ0w*3Û eýø¦àýgÙ¯žÅžT›E¡öæxPDûˆÏd×êåxÍ¢¹·Â“– ÆGS7'žÔ.Dœ´Ù”÷¥æ|Hb<ë@b”ö)åÉ“Ÿ.?ìw:ßK_Ó³&ßÎå<“¾T ~¶h€Ï<ÍŸ¡xÎi–šÎŸ¤š‹)f!$ÑGrH‚-4g*õÙ,¹P|”I@_qQm¹‹Åp ?ÑÏ(&fæùnÂúî¥7Šë°ÀR÷ç·_À˜xµet¹zººÆÂfZ„86;‹`¬_&" £“"A1¸Á_°6éÉr·bCkùò{3 ² èí›f²bÈCòï…Õ—gµæ?kúÎbq·DíÇè°? óÔá ý(9f?tTú¥=tÏæØìÕ¨ýTãKz_[«úÈIx‹–§n ¾U'šøÂP»‡Ï¶t?dŠö蓞»Êm¿©ÉFÇ#$eZRtÇI˜âîÃànút×ìZ?2ò ä,£õ#TäfhQðýý”7yŸSo¢]!Ü!« m—´'AޏÀö§wÆ [5§¶PÐJhàäD3­EŒ9cÈ›þ†P~ö]æ|ÕRX`öMÂ>„e+ðµÆÙ.ÖŠvå)WރĽ´õ#åóMr2q//ÞtáA‘0ì~5—|ÄpG¾ñŸ3|o‚ɪìxLèÖÜ[æà_ñD°Kà=<‡ÕÖ¾iõ9¼ß½¡ÙaûF ×·¸4£¤j³96,½GL>;L ìÞºñY3š×Lî[Ø9;Îú,œ)l‚™xyg*2¡dr•veì®Åªp?’p‰IIŠUóû]<9yŽ,.ôY`[gÆç÷\’Í£—ÙŠwjAØ$&?ÚâÊŽê·,ú3©l?ó;ÒÆ‹‡iï’¨ByqIÂR$¿0}°üþ¥ç†b%Ÿ/þKâñÒÓÄ2QO"mkPA½œœE~ϳ¿¾„§Üñ«×R°’‰¥D&¹ËdaO~ ËU?œxé¬.ÊsïéX¯/—ÑØ«C÷†5a2ÊVtñ‚‚3$üéÒ£¾âL?DW2€˜~0 >Ì¢·¸y,©•NÈ®ZY*r¢'Š«™+ÍÊ5¥¹Æ{A@¤ƒÅJÜ5bò¬Öú£ÈðÔ‰p`/± }Ÿ…<Ù‚S¢z:!)|É&|’9q¥uW>Ñì£ºØ #òVÕÉ™‰-@X„WÑš|GúrÜØN *)ª«šµmÙû͑ȹ÷zPr&Þ”,nø}áüKx/µwL'”âHŽ_r'êþõæ§éû¯ph4¢îï˜Ð¢ÎÜÎní€_ä¥âm¶Kc^¯EKÕ”Ø}-ÐÎMXq™jŽ¡>/Pj#Fî°E÷O!ÑG¬ª0Þ¬h ÷nß§ \'…I,'£NÍX;ÀÑaA†Â6kÝƽzV¾®r3Ìg[%j%{ÓÜkY ±2•æ4ª¢?ò丬iá³µüx†Î­t>^Õâc°BL=ðtRû87õxJ˜ûn÷9åJEUÿ9s¬šìš0Û#I.ù$ü$®z6h`e»=ží‹ëÔ8³[¢ùºù¾´†uȧ«{_â³n\»žW"¥¼ˆ×1ºf½¡.ßðnbï»ú°ônzéö·²ÔXL5©>eK¹ïh5 ¥-mYwR4ãŠmþŒjß¹:qØ¡…ÜH Ó]·“,†6ÑÍ^¢ú‚MHùsù‹Q¿OI5ó”¢ß~KÔHQ]äwXo… WÃòUØ/`¦ÔïñV¿Ÿ¼ûºÚ;Ù,\E“F¶ÙcK·ñp\LK‚•“5O—ÇBÒλ—}ò}ßá>ea€ÂøÂ4ŠÛï¡Íðþ í=%Ž9wâ‚Þ벟v\.Ÿž©^c;Vã:†b‘ØäwþuŠ|VÃmã®0H¨&ó›é*ÐݬýñKY‰Ù ˾ûiûó»§“ù%E£úÊ%™6!œÚÇÚØÓn®ÀxŠÝRñoÄÚÊfG,hwNs3þ«±™0¥œ”djÆ ‚=üãG^»Ä™evä©jV¦ìaíóÜú¯õùR$¦_eÑÙ£Z8ã‘;Y—H=ð™b«4ãþ)9R9È2ÙÑê¯+J{¼ªÓÒhÂÚk?¥Ä?-7_uSÁqË!ùï«·—x¯E—êX«ÁM Vti'EµE÷ á¡VaàXÇÂò<Š2ÑÔ;¸“”®ò½#IÁºuŸcºÇ2I¿ÃuBä5µxh–­w{‹ziûìÈÏœ¯­T² z6{tÏF‰"¢ÃXD|iåS¬ãi(»Ÿlbvýê-—¨ŒÅ³2ñ›[¶Eà©OFR–Æ’WUèXöг½A©ÚÊ®ÅéÁDHW^[Ü}Æ¥ãvÊ2~VhÝÐ1;w™iTìea±Eõž/ÏÈȺ²Us•‚æU™ÙE<ûDèJ–*ï%£×0ßM1y2¹üt¾ñ"óiQM¥"Jx7¸îŸ+[#Ä“8FaÙ<¾¸w‹cyoé}YŸƒæw'Úî….¢h|‹(‰ÄáèÊÂõ|RÍ´@b«¶ì›ü°P¯8D´5 ¾ Cê¼ÁN¡‚5îJFO=îÒéNËFÅté¦7À ®¿Û6gø^]TNCíe6)”`Yí9|IÝšX6Ÿv°ÎýÛ‹ w³³'ƒt¨L*éÛ¯p /Zuu˜×ÝÑÏ|¨=_˜d¸R;f‡Ô–»—p7‡cFŸùµž¼ƒ¹Ï\ kÇ[¿ö~¯6´¥Á7qBþìoVÁÄSbCtjRÎ-å”M€&¾ ¡NÐÌ„Šû†îÛñŒª,˜zËÍŒ o²DEÈÒ¾unA |ÎÊ:Z• •¢=ðX1@¢ëÐ=ñÕÝáÈi%ˆqÁV«­QÎþ„ÜŠÕLw±0ÁýK>>&Ž}~Y–EåKn/§Ÿ±˜Dàf›–c ïG˜Í÷ðܵ†”uG.:ÔmÛšï>ø²Gã$ Ï>˺¸¥D×dGŠÁÁÍ;Ôsòfr¶ü5kS µódõ5§©ƒd®ÑÞá‹}}m¸»AðJfCqÈ£I+÷‰š#vñø)®Öë ò$‚qSV.ñ#çàuCÖ@ þÀ›˜á3²Öy|å É™Þw‡EhJè}œî'õoùP¼ÁêÏÙ‡­Ä9=‹Ð•HRFcyJI|ø!Ýb7j²'êݸÂaïæÖôY÷¬T6fÉ8ˆ»õpô*w¾^2PQT¡_öŠr,ÙGöÿÜ’öA•€w-ÏM°.º†jâO:ãô íBuæqU áÓÌëã§yn£šñTSé½ ûQÐ7Çæõ¬#ÌúŸîù-åÎÏòyj¿ÿ™úçqZzÕiüÚ°»JÕ"%äu†í”VêXqOêªÓ×F£Š^iðTç¡ÒÜrˆ…îåð(Øß1½_B£§‰.2$[M£Ãg„ÀXÞÁ"ÏÜ\] %Õ×–0d=Õ~ ó¬\kÑììo6ÀYu*¼¾ÉÎ$½ÓxÞ•áI½´ºº=»ŸM;Ð|$øD+A¨«Àƒ+ùŠ9¦f±Ø•Ö^µ µl‚ûE•n™»£ ±C³dêT&²!r8œ¹„ŽÚé4\ÚÙÖœë¥NF¡¶°ŸÜc7a½w‚Þ1R€®&8?‹QöÛE “˜Ëû:@5*¨€ÈU%?¶ÊO{;å ãõôÔãf¯ÌgÊFÐq d…n~ÁokÉç4 ñÊp”Úx”êÔ¸Dˆsw~7Y!×B2Ç(q:­¦J ñÑ/͓߯ÎZÞri&—jv£©Ë;»}ŽS¥YDÐ KV޳akEßÚDh^-ö+ù|ôãÖÿq7¦Ãt×] þÞ\Œ‹ƒ— ´r&ÅœbVjöQC™¹ z[↠k«HNdï‡f¸7‹1Ÿñ’©=+§²-ýbV•…X¹|ÙÌR-Ga;ÔR®ŽfèXðd`ZíÇ ü[‹×ߺK™ˆ”É`EÖÁniX/Z£˜‡V%Mþd0Bû\k·²Ý’Ë×’Ðé¨SèE¦Àž Êjuðèžr½ƒm!”sEÎzµki„íC4¦Å:ñVæ7š?Ò£JKæ9ð¸?J²O›iõîën#¦™'%У…Й*gøìpgùü”c>ò´33׬ œš`º9Tú”¶)‡„R¿j¢Ý+QVu†Zà‡VÆÄÞ`übçZ5h:lªß£ ^xF•vëîÝŽomTLøt²ªÎj ŽtkN#`yÆ,Ø~ÀFW1x'HTéSšæ}ŸáNYý‹q2YË!s®²'„èñºN°Sg‰2ú y´ÖrÒšPxrùczœ´Ö§>¼|çgC'¼\^oò.Æ!°C.¦ïü›v#Õ¨]åyèÉü›‡ ÂØxV›Mæ%7,¨ÂRJ4(üˆE+Èaæn×+3ܵ| æÌ ŒÐyC·$>f¯¾×mO 6Qö]k Ûà©ï¢"à»jcUP¿.dÅ¿PeU$]_âf ÇžÅ´Ô±[{}í– \õlg]YѸÝ-î$CîÂ$Ê ®ÒNœ&óÕÉý`\d:Y yYHlÿ%TâDЉKßfµ¥{Rˆ.$bó«´ùý­ž9j -Þûž=H\lë6ûÉ®uÆZUÃõçΡ§c_*îXÕ-šG‡Ø±l¸ï*’úÆ^-?´š0Mæµ;Ó’H4š+ ~†:ñ$¾NAÃïV|·ªØê åàÉ™­"û«|;Ñ4•Âg@'µ,ubbÊdÇ@fsž›ÌÝX8Ÿ½|e]{§gjÑlLÅêGÇ—Ƭ“di§bF)äkÝEô…*üV=WZD¬«t¬a,§BÒûMþ1Ñ>‘0ì:㣖«¼S†O\ó”þ %­÷°`zá5|zk7…9{ªæÏ½{)òËÅP'ćux;¹KŒ (Ÿ§õ=z#z ]6'Ìn¸J߯iþÇŸ#yKæêÉf&´T7l<½¿à Ç16¥ÓøSÑ£9>•¹!t8]¾!óùjEˆTÄ,ÛL=  Ë7"ôÓ=G÷Ç«9å‡Ýûö×äc˰ˆ³( 3׆ŸVØ à·(C¡äÞíÊNJªb—ˆ€dªŸ>÷šÃßReñÛx½¾ÝÙX—Á¨ÞŽ:9·Ã™üI±g0 5?})ûx'X½@—ÖvÕ’åÀ¼™Q¨#Ýp 7lÍ`uJЃÕãígy@8ÞiŒéÁK&ƒõ’kõò¨7¼µî‡â)È|‚:s¿­!ªlÛ̆€kø* ”óù¸7àŽWØI´Éîþ¥Ð)J¼Õð,qB‹†ÎÔxš˜\kspqOpÎU/q½î}¬Vô•7½FÔÚ¼™ kÂ}×eæÝ+\NïeKLOå˜ÓëF½‘ao•¨9Lœ/Bc&©MŸõÓµs”ï•ÉÓdÒÁóTÅܵ0Ïa¬8¸ 1¿ò–ÈDß5Á„ì±Ñ/u«ßÜ­‹ŽÈÿ¼l¸i~«vʼÕæ/“H~É:×ù’†¤*wþö´æ Yž0N‹Úœd¶vS4œ+šY9äÏôaxo¦õ›Ì‡áÔÞfh^Ž0Rƒ÷l)åŸ||À«õ?,?öqúMÐ.›:-G¤Ä‰QDä-Ö™”é¬T}ƒ®»8×zç%#ÛJ¼˜ÿîB1üõc/¬Pò.ô" ¼\ÒÏ­¥ãƒÙ§#¦,óqE“áŠàq¤M_ÜG¥§MÖ‚4…†vŽC§#G7¡Æ_Ù…+Å‹lèœ;–¹ž·š£HEL-o(q¡Ùó/•”’†ì—˜ŠƒZØQ7#K3 –lI ƒ@ã3ŽÉ.œnoL1¢•À í¥æGµ¹æÍD¶ÝK›ªb§ ³Ì6›#óÍe™÷Å´>U\r&k¢ïûã2"#ïÄCÑà,µ¤„©íñËv3ÅÅ‹5IzSß•.ÁÓÖäGn5®>3g Û="øKL¼€ÎI§4eT&ÛÑ‚tE:˜ΛUmy ‹ 5%¼*u´,-´øÜ¯Ï»S™__*)°ÑjlÃ_“ѸîdXú6Ïâ€í›OÓS— Cqó×IUSxmO„+úÊáêùº{)}¶“>¼#eR ¦û]ÊCQª&Qtê8ryˆ37Å}= ›«NÚ° O-D)—záu°Ù)½'òª»-i¬•Ž„CKùnâM@jlš’O[ùtØå0.å¶kC¤¼­›»YÈøaÓ¡¨ `ÝÃÐrÞpå¯Bt±‡luAÁ·£Âò¤:-‡ºu<> ¥~Ÿ?Z]bºxF¸Ä•X­&}A „1ê÷þšæ•ô®^ÖË{±XY™o/ <®Æ ­Á‚$3þŠA¤ hÓ[„Ü;K x, ÞDJOLÈŒR5c;̓ÜN³mhÐ.Ü!–P^[ "PТí©0=b³šÛüØf9ã‡]x!O–®gËîZ®èû.B6?²ÏemE …;ã**7¹öP˜ÛxaÐëH_gÁ³ÝUóÊ%°ãX<_ôL<áÄð|Y5a%œ?ÃÙþ«´i¾ í×zP¬±X°{p²Ó»°Íd6»À§J®‚ïž•`Å_HY¤ûJþ3üü¢w½wüR°Àõ ºØ¬g.ªÉ½(ݼU¹…d™C’¼×XãÈDFag›D_´Xºn´žæCÙCz%SûË/ô{žâ4h^êàEñrü.«ãe(ˆ]3ûã‚@ ùï‰QLîV^hÚyT-XvÇP`ÜfOSˆg..êëF£•Q Ïƒ\©HlB;k¦î%c7C (8l¿²Ë¦HÎ=u0õ fX–¿³V¥¢;‘³‡Ú ?wôù9<-CÿmskÆB>b/ý(ËLsD°Ô“!©¯jÔÌüÝâÓÝÐAr}³'ýl]?—moã§ùöž<'~v:k`IßlJ&±ë¯Î)QOp¥Ck9[0®G ø’/û¢L®7?ËæÙ±cß”VS>e+MóJ¡´ô²tîÓEfõ\ uÒ>¯ÇDr-c*~uüd–©Ùœ• 9GšD/Ø/!UwypÐ÷é±–æ&©'Põ®¢Û>®À&“Æ.²Ûí¹!Úö«‚'W`À!a;¢jdä§õ*ç€T7«T ,‡úq NûÒï*æ:]ö÷’¢RÆ#–ïÏq‘‚o͈íåË£bšÙ%üi—(”]/» ´`sœ„‚}ß+87)ÃÚÚ`ÇoH<Ö~Ÿ™©ö”åzÃYº¶øR{Æ'+k)æL€:(§]3ÍÀKay8«Iü¾œ›’o‹·Ú®Ÿ6†£\a ‡¨QÜ.C ÇPŸó ï04ùL{Y˜Ž+õµJÔ§ÞŸ°HÂ&j3¿,·ËDg×@¤žÇ©êÇXQ¡¼ÒW|5ü©nEµ{8•÷·uGëß#S/qû´VY2DoÛ6!ó7³ù÷¸yÆSg›(ÐyÌÑ­%ͦéJå8d5#” ²PߦˆtÁkÌ-↯g 5¹k`¨âô®°ë¬,‰}Þä·¬y#§îÑœCƒ©-}Ìgë×íÝg”€—ê Õ??åÓTÒtåúÑõè…Üã3<ðäÞ¿±žQd | B-B@Æø¢?Q³Ÿ£{I÷³ä•¨FfŠWðmNôRûÜ[O ÚqCQ •ÝýŠLì‰=¬Æ„Áõ=U`ÍÚoHvQsñ÷l—÷"Çó­´Z@¯~j)Ù Ü ÷pã”Ô32<ô*¶È‹)óOX^«ûNþà.&CÕ÷j%YZ·]ÔYÈWè§u’›jÜ/ç—’·ÁÓ”·ï(zM{Ý'O(*ž,˜ê0jçûÔ H“jf{ÆXúº¬á\™éHÂÆyÚ®ž•r©*]·Ô-h¤ ØþŸ­ Rô4ÆÉ—Ñ•õ¸Ês“ÛB¯pðþæa\ !G(­êª4¡, U»r$CSþý hÅ"i»`Xsgö Ákon¥Zåµ²Áÿ—õ"¤ Hë ¦FÁ ÏWÛjUüêè2hSMº¯a‚Û:ÒRê8´eªì^(ôí;µ÷i­QF£ü, NEæT¬‡š7úKTA‘µWä£=:Û¸ÚœÆH¢;éNïwmÁú¢9cp.]¿bξŽQˆ`Ç3cXÉà`¤ZU9ôh…i\¿9^3/®y0’FË1Fõ ‹zXX‹,^Ç‘7b1éoa–#=Q½­µï»p¯½R+)ªŒ„ó-¶Ï‘˜ÅYtQ -Û |•“Ô㜇f3Ö×û$Ž@irUèÔ•óÝF/ñXý3‚Ôÿ–HXBεÒ|_cÀ(APÏ62iÐ2 ¼—‹Xóf µ¹rß[ ™h«›ÎPS›ãóãèmª^ÇVoÉ+Ë¥?ú”9cèïú»lD)jöh©ÃíïF|û«§¨ašÉcVû{¦Et@FëS3|mø;©[0y­ U‹Ä€ö ŒY%uÀÛÐû¯ª°{Ú0F¸„¬5!³¹j2Ú`Šd Ä„9$OfõvG5üBâ ㎠z~Ìì=qW¾ù'|}Lh9Ûô|zÔ­ý‚f/ÊD :Ië¢ò™˜Èr^oƒw¤ÒŒNgh‡1›²’¼ól‚-XžÅ;6+º‡Ç<ØÏäB»4xeGàꊦŒõÑA›s™¶ï®íwŽ«²ß‰`‹ÝL·í¼®ì«^ýC 0g‡o( 8GΖ\j7 òÚ¸WNÆé‚߯w2Ã’÷ßA ©å`¿¡ötê…ŒèNŒÝ-Á¾{ŸÐ„÷tgÙØ3Nµk¤qÌ$–Gâ[ôÄP©åŠG³®¨5ŠFOjÌ&5‹Ø þˆ»” øä3³üŸÁh#b³j{Ï® ÏdŸ’$’ÂÔMAuª G[Í(Ýž:*¬ifù÷àö¦qaA,œ«ßó§þ ‹òãΑGv³Oì¨;ÅçW&t>kHsê†ÒMä&>„‹.À¼¯ßÝâMgXgö*a~ èŒ!>ÚÊÅ[5²ËWìãˆvjXËcjŽgͧjrÍ8]]xãÝ‘¼©§(:ãmSy¾/%|ë—c]LÎP+¨zuQQ5j«})àhü.Z+[9{b'€‹)bä{ðÁÒô]GÍyÚ+ÍwÓEô!qäBœ]w›±o%9à …&¾4tÁzd[íû&—yŠÄäA=ÔMhoʃEHi\aNŠ9±°ñëûFÏ–ù(EÈp€—né…z@“PwãUpÇg!rDº¢Þ^ËQ¤ ¢f=nŽáÍ”ή’Ô!¹TÞ= p–\=#8ßgÌ7šk‰”ïe1‹îõØ›¹¾Æ“6C¦&™kêW¹ê»·«ýÑ•D0ÒôxŒ Ç¿ŠÅC ÐØn«Ò‘ã…O’¯àícüfŸ¡v-49ømSV5꣎ÔM¦ýõuw0þ&¸Í‘Ù#Õ3yc.¦<=¼èø£6Öܩݡ¤ôÊöz$W6µ¾y°p–ö˜€ðøE¢|cÔÊÄ6Ì<|uíÖt À–fMd!û·²„ë««öiWÀ´Žþ9¤G>´±L{V£ ëC~z>n¶û{g3EÈŽ•‹ÃÆãã)²ç]®yCb6Qg÷[rƒVe@NLð3§Ê2Ô‘{v“±ƒÂŠi¢)¦Î‘r;Mþl}`Ž/Òä4”aKKE±ùíÀ ðÏ1ÿlœ‚lÕyî^"Št‹ä RDÑ. œÈå*Nº|ê%‘ÆDz/šFQÎ)ʇÀI±¬U1èµ å¹B£R˜Ü%•3)ìGJB(MŒ­1°¨’:Í-k{G¿¤Ä¦ý€]êÞ22à +Þ\?}t‰ºÅå=n0[LPUøª™£JºYÎÚ<“dù`[-àù™Ìô£‰‹BÓC6°›zñÿ¿¬±ñ*w"dƒÎvJÐ~“u–çÿõ–šÊ3¶¸GB5>ÿ£‘â_Íàç2B;(EË·»0ƒÚQê«Eõ9Aë_Fp^&K ®U™islºEÜ•®Èç£]òõå½cгòo~<çsŠÄÔ‹°vœ®µ©ôzûËyì½Û‰±:h¼k†øÚ~Ë̬Г…R»^»vÈìg÷(8á *†ì ")P#3¹AKW{º¹‡ 1#DöŸ g•oGß>,Ä>A€  NÏ#ä„Ep:ØdwNJ»Æø°ÄÆ#³ÀímëÙ^Árè¥AÍ[0þ±ùÙ6‰2°F‡N¯ N0#birü^”h†Iaèõ©‘g5LJ€+4Ò8 e%­ñ FSÁ¦¤KÃ:Ëš¢<ÞE$§ ¨V]뀓‡]s0êq¨‘ßhÄYâÝûÿÓMƒÊ\€sËQ}Y=®ú ;Ƨa§•ˆVëã/6OÙ tœ 'mÅá ÍNÃSûЮӔiëБqùb‘•ËT¦¾ß.Ã×íŸ'þ&’ÿ×òÜÌÛåDêtcgšŠ,SÍÕðµ±T|ø>Ü mÓ¯yf${H©ÃÁ} Smyu“XhïB§8EŸÏÿ!¯Þ‡UT“å‹ú›-ð£3B Ö=©2x­Mgy+Å£‡²öW¸’®›ú¹éoÄä›ÜqßÌâðn¥á9ÞB!7»x²ÓÕÌ‚‘ÆàZ€ya¸üÀQé…Ú52ƒ=¯c&—ÞÕÅžKgŠíÖ{ð¢mþ¨&ôœ ~òƒžÇs¶$’˜JÞñä£ë’’k§ÕG„Rè’”ßÙ$Ç7ˆˆBÁ‘"×ÇÓ ª¿¨ŠFäJ¯ZÍC-ß¶2ƒÿÓª!;†ƒæ="Ñ•¹FØò‰=KÑì[¹;?WH†UL˜‹à󪸅‚¤6”)nÔÊù&PL3›Èx\3{;zŠÐC%7œqû†ÿIî©\Õ^ZÔr)ÝÏ“4„¹Ô…fÎy䑈v¬ÅØëåkþ²7ÏÌÝ/¹5FZØ•)뼺ó¡áˆ:æ×{ñŸØ[l vï§K¦kÎô¡Ü?ÁFòתSõNmúcÙwÒ‰˜:5‚‹eŸ÷q ÞÀ›ÐºÖâ®Î]1K}êR•µ¯Ù ùÀ0…‡Ìc]–é _ €”ÚÛ6 ‘k<1øµ•ÀfÌš±hˆ¡¹ÛÏà endstream endobj 1442 0 obj << /Length1 1451 /Length2 6984 /Length3 0 /Length 7960 /Filter /FlateDecode >> stream xÚuTî×?!Ò 0®î–”n„± Œ aŒ–é’¤¥•PR)éVºQº|Ñoý¾¿ÿÿœ÷=;g{{ŸŸûŒƒUßH@ вƒ©¡h!A4@EGÅHEDA abc8ûÛ@Ìa ss‡£ÒÿQqƒÑ׺{`ô5R…hy B"!qi! i IýD¹Iî1p(@G …BÂ܉9TP®ÞnpGôõEÜ€””ÿow€’ Ì #:`´#ÌåúF0BAà0´÷¿BpË:¢Ñ®Ò@ §§§ ØÅ]åæ ÏÃð„£†0w˜ü*  výU› 1ÀØîþ‡Åeö»Á× Cº_ûx ¡07Àõõ#Mm€ž+ ùXû?àÏî„…þ÷§÷¯@päog0‚rq#½áH€=è©i ¢½Ðü0ú F¸£®ýÁ0¶»üÎ PS2€¯Kü³@wˆÜí.èGü*ø+ÌuŸU‘P”‹ ‰v'þ•ß=¸ rÝxoà_óuF¢<‘¾‹öp$ÔþW!PW  þȦyïOÐµŠø IJˆ‚„°G˜Äøë coWØo£Ð/õuþ¾®(W€ýu!0¸=ìú‡Ø×ŒÐn0ßÿ4ü["@á4ÀæGÿýZ ³ÿC¾¦€Ü ` ºf ôëó÷ÉúšdPáýü÷”ªÊj:êj|Õü·UYåð‹B €ÄõÁÿßqôÁð?óøWM¤= ð+Ö¯|¯õWΘ?iÀýç’ðþLuÍ^€û²[Ä@ë/¡ÿ3å»üÿ˜þ+ÊÿNöÿNIÍø àþñÿÀ.p„÷Ÿkúz ¯WAu½Èÿ†šÁþX`îáòßVM4øz%”ˆ¿{ wWƒ{Á úp4ÄñÎü¡7ùµo8¦r‡ÿzbB ÐÙ®— â|ýŒ¸_óØýzãп§øK†]ïÔ¿SPEBPÐ_Ë',&»¹½‰¯'-‰]ázK¡0¯ßÔ‘(ôµ àº\€=Êø×”%@ Ú/Õ’¨ó·$) þ#‰€FÿH¢ ñoé_é@<ÜÜ®óýM¢ë\ÿ’? 0˜ B<3‰‚È„:U‡¶œ¼RbôX”ÅÛK?1,xHˆ~¯:j³”d”õüÓýRµ™.!µ‡N­ºÊN²ç§~ø®Ö°Ôz‹ °¨m:°Ø%Lþ<ÂOö=¾Ã6IÖˆ•k–ªÌ,]ìöKŸ)š¼HêðÞˆƒÌ«ºs:Ù““ú¥š„VX‹î»¶W/ŸkÓÞ‘2ÝY6D¿±ë1^;¸Í•³ì²c™¦›Áv_öÝ)q’gùbw_Ï,ES{t&xí{8šBU¦çÎ=Q‚*ÓÙ¼[9Ří J_;u*ÅmèûR~ª5?7€×tÁ´ç\ÚªK'LõÙnÁl!½¯öF"xT+܇¦ì†AcÒÒæ¢ÜØ}´ 37¢‘õJ{yôº¸2 G¥jTÐVÞ­J¸ ˜‘ç¸Sò‹¸‡iaCôN—¢@áBÑ[yÚi }À˜Ë§Ã5/>;©½[jPó<¢µ–þ©­jCþ´w]¦;w} $¡. "ËM“cê3+ÖªÐwöLÖ×Ⱥ7prw*ö˜°|¸Ä¹ú(&»c©ü"B]µó „jO«|\6Æ=º¶·óÇwY¶ÐP_½ àÑ~?A”K0&Z¦ª”žîH¡jéB_îËUÅÉaŸŸÂ+xÏ ‡Ú9†| qŒxU-܃¥fN¨? ÝüɬUl‹C(CËw°½û1["OI§«!ÿÈæ‹gÖ¡Y ½Ãjé>Õeª …k¦û¹üÉlRD|Odû?c£½¤x&x È× aÔJ¿3õákÇëâÊÂÂüwôòÏÈ}øEgÛ»¯6T¤Cü'Æà²æè`ZÇ’x‘ÙÅÀµ*QÞ«Ú›{cMÜö¢UÇ’Ù>ô³®Þ:O·³žxx¼Jõ %ïwŒ·°êYµ|šr{ÅìpÍÀÁˆMÝI}ïC÷·Yòo_ýô]/µÄ?úCæfQOÒ—r¨Ã‘÷„ñ×K`pQ¥È»á‰Nk5L’§‡Ñê’û¯2Õ÷›;šDåÖ…ÞÔWˆ.!è˜ÌY¡œçмc;~‘Ó¡h[ñøÞ§”‘õéðyï^Žió|3ÝjaOƒÏ†WÞ*zª¡v:›hˆ%ô™:¯bôn8¡ÌóVê¢ð2I²>rÅ¡è‚ô©U@éåÚ`„9›q­µ+Ú܆o­Óyõ~RPbZë&_A¤{Îç¤9³îÔ¡9Í*ý3ó7†o6‹[²ye IÑà`¼—ƶÌlEíÏVn\Ø\·Rë7Ÿ`mëzüv6©˜+1iX?E a¢&wL™™s% ¹ü&»`§ìª 1·dû_,ƒ2ãb>žÝ¡÷J R ÌuõÔ¡Ÿ’ªý\5ñäK0<\uH¹;ÍC”Œš•Ezc=¯+%}îk¨MšљɻðmÝcêe9­,RýJá}‡Ñ ú9÷™àõ Ÿ¸°/\{Ç#yuD«Æ1ª’#ú6Œµ‹µä°+½ïhXÖ¶6é89 ØiG¹…,(D°¤’›pD¼§çÈ?·MŒ–Y©u\².“Nç2DfúKÆnF«[•ظÅÖÛ¬ì2'ìÖZbn’Äsþ¬è‡{/ß4ñcÄ)³*P*#ÉéâG%øýH¬R¿'« ý¼ûh*ç#_7.é% Ë(êû·=Æ$ñÀ1m'Ö¨þðÜãá¢ðæô|ób•äe NHhc:Ò"oÙ{OƒAÃw˜ûDFAgž!!p{ZØ¡b$4ó§6ÚÍ~~Tñ.µçKmß7uq7;ÓÁFÎ3“å¼÷nlÖ•“±”x:3}G¶Œ6)²„8£…æK»»ϘñÛ ËZýZâ¹® =:©jLŒ–ÒRå×ÃÚíÅOc7&U7*¡ãL®y!iYîʰUĸOIâˆ}›òhΗIöλdkÎa¶•‘Ua™5CÃ½Í ¶~cÉãÀ éÅR?”ãUù~z-RÅ ÷±½,¦v ü[üÊT®–8Št¨ÇÆÅÈ9ä.^ÛeÐ'#åL„½Õ²8ÄzT,’<ÖÿÉÚf—D Ÿp³·á$cŠÊP—¬,pßu'¢„Wód>³ï޹1ôq¬ãA3Ú£^‘Ø_H|q_©T¯Â¶€I@ê¢g’„ ÞÀídˆWÎË?t˜H'ÇR‹VdÈ&`o©¼UàÎìøŽ!™`OS ì3óÓ­vÝÀ¼'ôÿÙLDzô¾}EÙšÆDÀÄaäè –w¿šØƒ®aùÓ@;qy¼Ñ[FÇüùJ*Î|Ž›ÂÃgºÖ›®ê“M?^5¸ø3ïÝí8þp0íûËžHZwë§Ïtn˜Ü3K\¿ƒe™ÖOجƒ/ÁÔ÷–Ÿ‹ÌÜ4õ9ŸoY¹³ùéI„¶(!åôÛÇÌó'ëiÜ™ÚO&¸¥ œÙ4èôó=KÅÌ0æ¤ô5¬šSâ âStežÀï£Z':8ïy¨‰ô­Ž¢6¯TUv"~¶%ʘÞöë.8…–69)O¤N6Cï[¶ÊÙß,(ä²ð(ž79â·×& ¦È×—æ*}åt[§Êú²JÁÊgqÌ)•´8g´ù´÷:òÅœÎ] ®A÷2”^žÙmb‚4kzx£Ó>øÜjXˆ=W°¦`ÕàtÖ«pýˆøÎ­¨;®ë€ ̱”ysè¢f\€~×¼E%_ój$Ö£oÑxÿòjû€Šµ7šÝ~“>ú¢¦DøQ\˜Çy燮“ª¦<ÆvÃ(Þ±YE‚¸-Ía/éé“nÝP,Båê2oû Œà¾¯+3lçù´~Aó¶\×—~Æì‰ÇÖ«Xô@· ñ“ð,kk +aúMÛáÚóYWJÛ~->6ÿÔã:ÞÉ´;LÅëq¢$礦vK‹Ùìsž§-©EÓ!†tć*µõ©nt&Že&²·—:,éêŠàÙÝš Åyò.Q¼’å!­ý6öÀýXêµb^íÊ2ˆxz×ÛJäD5»SJpŒj¢É·£ûIm>¡¨GÂÙFWn/ßè ¶™¸Eyë'3ëp|æ°¹Ò!~¤»4-üðyÖ\d­Ô#É`çðdòÕ£³åAþ[Z›„inùœIhi ¤É]¥°¬BµO‡®¤A²oHðÎ5’Ý&玊Àmõg°Wêh”Ïwñ†ÀÊ;@¶Ï<ñê¤Ëv” 1‚T?I䙹‚¥.–£/?IL f,= ˆ´ÉÉq)îîÎ#§ Ù¡ó÷ŸD­Dÿx­£›.»yÅ(hѪ«2jŠoÐ9|óíC=ê•ÔƒOBÂ*z|ô2o76ÚÊ·”>MÛ§<³Q¤µ õ7î±#¤žä*¾ºˆÐßá78Ø|uHìiÓ7ò±[±TbÄcM-?B•Ë\ZV§Ð<êÌO ìÛ|"C5SëñÔrœ˜¤]VˆM6m®•Ó#:ïÖÏ×qq„ãL´âÛ÷Í›cž´Âæ‹ÊeÀ4«'òxš, œíáŸÄk—;^ê¨ä9biÖ¨*#ûC-û* LKðʳB0÷¶°[«Ž½†ðMþ(‘Ð)£éS&ñ~Ækƒ„­y}ΛFíÛNvAT!ÙêòX­½à‡]®dctôøvµ[½ý’r4¤WÈp:‡ÈVÎÆe÷J'_â_“x3>f‚è±t½T'˜']¤Ðx4K‰IZÌ ¼ÏÆÄyaÝY°ï>6Gí¸%ú¦S·@5wðµ6¹Ô±*¹ dn}ïõÕª°n@ÙXÉÙÖ©RËÊ{K¹¶eûý#`3äÅ‹*¾6fŠôO⟬‰¡±©Ø÷8Ÿ¬i™Ç©"JKð¦á,gÖÙäƒlTXcŽXyfÒoM¿*®PuG%G¨×îÒ ¸æ‰/ȳÛàÔ _·V‘¦Ðº²àH•Lôy#5áðäh‚ÌetÙa0¾¬Q-Ÿ¦¡¡92ÂY‡?ÙR„‡½³Ñez®-´•tHN®' cçãé|oÓb–ãC5’ÜlzÁ?èCè…t³¤›èŠ>ÈK0òRÍÄ6¸ÛÒãîûöxñ3}Ê«#þéXyœèØ}°»©gV¤mk‰Ø•/Œ´Öc½“u %zkÃýQKpµ£–M6•Ô­FÅ·êÊ®˜a{4LJ€Ê ÚõþL::#UN•'˜’¿gÅ?¡¨ñ]ðSx¼.'¿ƒ]t§îh%þƒ‚*e¯VÜâ=tÎó¦¸<ùV¶Òc¤ý?xÏcF3ïz¼& ÜYߢMcjpMôˆhÑUv¬l“¼ª{"§Û{¯d8oPÊ!E`’2Uáæ~„j§À¯dd¢&¹RA2Ä­lT9PÂêºzYË/Gè†bÁõw5êè·dZ|aÕâì*‡íºàBÅGlkjº³ãV黥ɸ+©gsµ§Ç€ðÅ7`PDÒBÉΊ]í“ê³ .Ÿ›Œà›"·ßÆó+ög¯è$z¾M¥¸sËý^ÌqªñU£³|›æiægUÁgy¹K«5OøB4^; Oø¿ÿ:6ÝãUqË"9zå _Ŷ%FµË{xpæâ-)õÎñjbKÔCÍ9¾õr¬Ÿû¡o¾£ïæçMnFZ›…o  é?çVy±qB‰ÍF°aðQì%òý®±©ÚÒm—W¶ùœàõé"'¢ÞÌ«âµÌKÿ‚‹úÚM2œ ø®Wˆûö|;ãŠêhRÝ“õD±™Ôøˆ¾¾ßdy?¬@‚†Cµýý>å ¿ö4œ$ &£zŽ€OP–g¨¶-±^¶¤\÷)Ì›r—]]¸ØGÄ.¨¤ÏóCYN˜ÔÚØÓàùŸl~ø]Ú»ø¬!$/p_¤n,JP–=ÆéÂY¬ï44NŠß2Ý5a‹—á8VxMÇx8¶F¼…G}ºV»´¨p ÙhX}¤I·®¬Û¯ˆHÁR‰‘MÇF6 A½gá½$ÆZñíï»^ªñû–¯+=îšé¿Tú>W5_c°Š#©.±V¦š>NxæSÔ©\Ÿm'õŠEl?Åí¸Îª:WxÞ¤]: žIX}ª|ÉQ?jT6`rå˜å—°õ{tª•”Æý̤x l:Õ·WÊ´ ã®LM÷›jˆn;LGÍA:ä¹=f Ùa9”É¥«ÒïÏ+DB˜‚ê0þTÏÏy¢G®Á-CÎT#n•Qß"ßRÈF¿è ûØ³Îæ¬]ÞéþqÙò,‚i‚Y3ŸŒºþ³bx•7l;ò¢¶@&éME)>šäU’ M?å@°zf˜´%¢Á"–ÝI®yë/XyãjÍZUP»´¼›G\¶ ût1¿º'÷Z.ð[Ò‡é 0_•Û;k_üBN)*Ë©ƒ’Ö~Y’ƒ`qË™ I @y´^ÁÓ#a92«ýå²û¹@ «íùÐ@CÕ¶kSš§¤Ñû}´’¡ÍÍ‚%ÂĂϊk´*ë> •*ÖJb+³g†Ù¾Vòë‘5´NåÄyÙ:½?ÊÖ´¬öÄFÖÒØC=ÕPjye<käDÜOÄãMo¿ ]üiÁ"ýv<Ëù˜F`pƒH¯Ô3?-xÃüÕ¶¯Ã.&7µè2V¹k¯,ŸÕf&í†ßVžf‡íèb„){óñp~c<»íu ~ 2no‘Kô·Iã–ƒ¯ÈGóä%’v«K÷[ù†©¼&žôÂÍüE\±8Üû î‡\¨o]ÑÍJ¶í†rÞ 2ÓfpÞ®oûqKY†q'³ÅfƒP—‰¿aNøé%í.csHÐjÌs¢ À¬¬Y'NñûŸ5`ªÈº¯[Kü>]’wÁõx:§z#F !k´ÅßkìÞ·L;tÆF¶nv^„)<íÃ6H¨"zÊUt”7s€–® ë†Ö˜s©Eeš¼WÞ9±oøn:ͨ²pœžöI†¼¸„«I|»ð]«È/rË䉄Ã8uf@»¢ÀÎ&Yjÿ²@’ï‚s\÷R h‚0Ç×Þíò€(¦“«5iËŸ^‹`/uÆä(³-S7ymN´R2ÖGÚõ2<0|54g'aõæüÙí¾Š0]µóܲ֌Týžm_ˆwa;‰dž¤Y‚½Ô(Ûpû3×ÌÀ5y¯ä™,ü¼v§£1SÖд7üJ–Áö0z~Ûy¹ÚÏFÈò/³è{ºe[¹ÉO?1É3"^d[ÅFµ€¯¸Ùjm%Ìoânœ "0þ*Kµý¾å‰-'7[³õÁç6£Jyüdc†RÛšW¯|Ňv•ÒÆ·]œF‡¦T ¥Y-¾åD*ý®„D™êÌGÚ×KŽmÛ'Dƒ#×GÏ'H~xÙž³aõãeÌ¥sÞç×6 ¡ =VeõøHážG‰Ï’°x‘½Aûþ¾aÉQ]à Ÿ»&Ð.ó]*0“-Ðòn`âŽ1ÿ Ç)ÃÙ:q–z^q¾Êö'[ ·Ÿ'«`hfkŒ¡ˆ¢ü‰ÎQ‘h®î¾=*ø€%3Yr5/#sö]Qêã.{l!Pbÿå2NX5q*¶'¿Ç<µŠe®Ð†j«oQ¿ÑsˆÿC>ï»Îã±ã 6ŸäSžãñG/côËð#Ûõ̵72Dr8aÈtOÍQhÚQðóó—Ëåùs„ŠO;ÎŽÕ8騿èµzêç@kUl}÷{ƒÁÆd-ëz¼ëÛ£GêYûâEuz+g‚r9‡‰+Ñ#•{ £/°ÅĦžkºv÷#/¸Ø¥)æ©í\X^¶¿Ãïx;¹ó%¢Ä“lø1‰4SQê‡ú©dèݸjèHÙæ÷y´‹ÇïÇÓýßxz¾±©€§ð:†ž|È{ áÙ/±âín¦þìê´¯hƒÃ?òØ*¡¦ChHÆ4)cÏ å}‘B”é–UŽ™k"C*…BR;c~@o Õ"[Ÿ¾kÈx2QdWÖ† }3ë–SÌ0›:ù:e¡¸’ÛDÑ.dCM0åUïR…Wþ±¨1ž»Ê9?Š3qÂí‹F «[]bé`u;=ްË4ƒZzò"ú±¨«ˆi68㦱?¶b—æôë¶ <'üèƒj£ ¡,”â¾ ö©c)I½ræ· .TËDÉ74­¬Z žß)Ê{LR0a³,ɼžFW£tuLBøö`tP¬¤›íþšÉ½ÙžâÆñü´Ø{˜Jq<3Sâ†ÒŽ4¢ºLvó!•÷Øi˜ÔÅÇ1‡Óo ‘áJ£ò?½ú&~h–ޏéb¦˜yÌ6œŽÃ0±‡y3Ý+ôŠÇáqÃÝûDÎŽgžoФÛÜîMÅã¬F)TM"sQODC±ZV/ªBHk!™ xÖeËajK>Yr}°|wüC3A]ÑFåIëIœÍ$G@—i †NÕÐ6MaAjàG_Òéæ‘dˆ#A|^H]ÌÔ—>kÂü–«ìâ¦UÈmå±xÕÜÚÙ´¨^¥zÎñèGÅÀ—f·¹°n¿4Í` æ1â!ì  V Q×pÔQ­šª8žb£H‚<ý® }„Œr‘9Î܌ՠ_dø¢Ok|’†}£[O‰<îá_Q³ðSE»uΫg>ˆ\¼äÍWa»Z/ýéà8©wú:ÂØI|-új>‰ äœWGÒš+œ¤Q ëSïYT“~DêAÛ$“¶åIž{ïW¯cRY¬réH ¸nR™f“\Z …àL¬>d°Y`œ ŒÏdõÇ[›QwBÈfw´x è"ƒ¼,âYÜCn7ÖK“½è‘¯~„•îTŽÛ€‰èK/µ/ç‚I§Âe–¸¢šß†þ ƒÇOפcœI´¼“brúHbÀ³¿µ­{ÌU±ñÕ?ù‰pòSÏVT0®¯°C£êÉò.þ¼\S½w@ÞÖ§[ ï$KŒòC}à™Ã󔱟¿ˆ¸Ñ±Œºô FêVŽÙŠ»ÀŸ® ¨“•£a·½Ë^ÿL×+/k ÅÜ–I/¿x1¹zL œ¬ð¿,ê[‰>.ò¥!ÞâN÷Ó,5à­}Øðeçè+®þŒfø%O#©˜È" Ú¾7BFZ¹8Èi¾s0ß9+L|: y^RÝîVØæ+Ð+†>5 î—W[ÎÞ˜ü–ªôûhIþ–CØãªC‰9r4¾~½ŒEBÈ|p¹=3&SÖŽr é±¾CÞåÍ·CLöLÂ2špèýrøì­‚-Ž¢˜QìK.íúØãáýH×;§n‰S­ÃåKªR.œ‡–w·v/cM”¥¬cÇH£Í+·1éÚ.þò¹ŽÄEé$Ó˜ )õ9¾ÍU?„¢k‘è&Û0­¸ä³6éÒo-ûžÔdÅ÷–ùžs[µ¥u¿Œ97f“-ÌGƒsHeoN ërŒ˜¥êF”hšî·×Ö_ÖQ³7´?Î Ç5oùTs©[6ÃxDŠ Zç¤ÛVDXS¶¤4zÑ‘yF¬F%é’ï•»uúTU¿µ>±}Yþàþ掟 -úáí¨LveÚdÕñ³¬W z+§8Ãnåî>“ø1?Ü-Êß’­5&Éo(ðº[;Û}k{`HÙ¥ d+uÑèªb0ÃpŠøªiŽf áë+Fëèá’U]í›D„ŒØt?–SD¶M€â³ó€÷ñ)+#Ye…XœžW±ãI…â¤õ©QûÕCH&Cø‚¬ÆHŒ¼ /3 ø¾Šª„bO\Ì·Z¼…ì;\X­1r?kb,Ô~ðËçjµM}vÁÒá5á¶qßï»O˜i'¸ì‹ ’.#’µPé: ¯8ôA&8/â04‡úŠóIé?]«¦ðÒÛxGÜÌŸçÔ‚ñx޼yêp–î‹ø­>¸O½Tçø!nÊ>žþÁ"yy¬ú•sÿ¥þ÷¯«\à‹JŠÍ7¹jë[ ßuž¾µT’±Û*27=]ؤnóËGõ{p‹=âA€…2ço†Ád¿<7ÈÅ+[‘óÜdƒG¶½o±82ºátaÁ42ð°®ò›þ*Þ«/ȯï,mk“MYÙ^æ ZµaLàc1~=óf{—ÊCŠ»ô€ïqh endstream endobj 1444 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 1446 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥Òñãœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ãa(^> @AKKM ñ‚$P”#䯛„Â@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ ðPB@TâÿÂEÔ ÅP‡Ã H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``EþñëÃmPî €q8BÁ“á ³† ˜ÃújšgìXóààïÝøþ]îoö¯BPØïd wrÁ<¡0[€ ÔÐQÖäCy @0ë_@#ŽÉ¹ Ž + àwç €²œ„ðïxH0êŒBò!¡Ž¿FäÿUsËJ0k¸“†B’üêOŠ€€1×îÉÿg³0¸;Ìë¯a…YÛüÂÚÕ™ßuq…¨)þ…`\$ÿñÙBP ˜¨˜0â€x€íø•7ðt†ü ürc&ðñr†;l0C@| 6̉䠮¯ÿø§E" °†‚Q+ˆ-FòŸê7ÄæY>ê0b¸'þúýûÍC/k8ÌÑó?ðßûå×ÕSÓ4Påù3ñ¿còòp€¯ 8€WPŠŠD1/>ÿ,£ ‚þmøŸ\5˜ “ñ§]Ì=ý«e·¿ àú«nÀ?‹iÃ1´…¸þÃr3 ŒyüsýwÊÿ⿪ü¿Xþß )»::þsýŽÿaÔÑó/ÃZWFZpŒ`ÿ }ù£Z-ˆ5ÔÕé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eíþpæßð—Ö¡0ˆ. ýõqÁdÿà ì€ù€ 1Äü!1jCý^ã/‚ÑÓ?ûP‚áÖ¿„'(òB @ž$˜Õc,€—F¡ÖßÔðóÁà(L 3³ÀŽ ùµf1¿3f7pë_~’Ô»"˜ÃSsð¿ìß ‡@< `’é 8øQ}EPãI™ƒ;ïÚ$þ^Ò‰± ïPö3"T—ÒˆÅrœ~zÚŒFòt§€ò3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#ì±x¯cFÖ Š:¬¬' òL]Xºw#n¶ËXÛvésPx߫蘊wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5Ò,,Q;…UC²ù”$νôæRO_ïeçݶu·€µ}ö—(J¥G½ŒŠÂ„¥FsïÈ/2?¸m§PyY©Ü’ݶî*\äN8©Ð>´Cn›³Üwę́¥ë$ÚÉÑT‰{‘’Õ';[ö=Öl¢(¶@í!0Ô"ãåçQJ?`uú2§/X^HC  ÝÕ¢…#fý"½ú¿.oþ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ý™„ÛÀäÈÊ'F3wbžqd¤N¨F}õÖ ‰5,ð‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ý»Š_0+>«Ê¬üNŠ÷Ñù–@P¯ÖÙ'ooü­RWHÒͲhŠ˜EÈ'B³ yߘÐkÈÈ’œë¶²jçéýºr±©’§¯Ðñ‘ÆÕ³žù¡¥8Láo–äŠ6e7:ö¨Š=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaõqúªÝ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïEþVd+xÜÇEåG Ѝ¸žØI£veÞ ò„ŽlyEªšØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×òÚIÐ =­ó°®`‡ÞbÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)õÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ÃfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ý…ï±[¥¹å è¨=M°—¦Ýë Ô›N­ýè9ÚvyÖ®"ÞV´Î`Ì–ý#Ä,Z&¹§¤8E‹±èà…á}Ó冷QOž› -çóV¢E\ۊǯê½È®X÷’{®•¾8ͪû7›ÞMƒ©¥S·gíõžtÍÇ¡d ›ä(å±5†Ôðûë&twmáxÍ ²°ÎXß'+ðJÉ£C ëdîÔßÜYç;±Æ¹m@Fò¸Í!7 w÷ÊyõÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØžB•ªºLÆ·œSãy»:¹ŽDvjøü‚ûq†Õcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ãŒâ·Ï\]›8“È%A±t|ã á—>;Ñ5m Qûçéã??-z’Òã+}äRê*¼^pzmxÖ̳œÓÒÆ!âìxEÄVÝmÊ2ÓŠR§ÒÖ5hÜòãZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºã¹rLIsðT–KXêë±ù i|O¾XI•z€&lC¸òÚ·¡gêXìœOÊ‚ìÌgÆ'[CíêC¦s& w›Š?a¯µI“ܧ üÖï WßEMå:û§þ&‹›ð4½‘ª9R#;Æ~ÃWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×Þñwã‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&õž‡±…­gÆ7q1Ÿœ ¾•‘Ì—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üPŠ7m\âÛô<«x.|~I "Šyèù` Ûϼ8…ã éè¶+G9Þ,KN)ç1’‚…&DŒf }þÂ~p1†ýî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏŽ®^N¼xnõÝž <:.‘àëˆz”/¡– ô§ÛòV Rž±âµôö)îŒY0•çüøåÓýº„Z‘*•»Ë¯”íªy%ý̈»ëÀÂïMüšý3ƒ§lW+*)F Þë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏžL+ÏKAú˜WÏ–öxw¶Ãm—8 Ä5ôÁþ s7.Ñq,àZûÕ¸È 4¬@OUl»úã„!c²©ô'aIð±ìÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiMÞºGI5''xÒŒxô#Ïý£àÄŽÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËÛ,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßLÞm›‘­šAúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tŽç|P_=BõM6Æ¡è:FO{%sýQ†…1Ôäýé±Ý‹1ÙU‰3׃¯ÔC]†¢%øñyTãR~SàµË©‹|¸Ø¨jÒÓEwßœxÐAú"©™ÝFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnãuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîÃK7ì¦5ós­ˆY㨠|{Ãᵑ¬„P+®ÃÚÚ´ýÃÆ‚N¥uø š&Õ—·vÑ U²¶ííi–2ãÓÇ7¯×ßqd{sˆ/¤^å”W—ã ä¾²OÜ,jgaLX~)œ2e$`yLì‹;oÅX/*ŦnZñT,°òöŠ£¡_˜"F[íªŽ|8W&4D¤IòžÕaê3€SÚz¯±¡.4Ínr2Çc‚x'òÌoÙ¿Ür<ô:qµÉë+ã.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSmҽȃ¥1^àtS²tw"ßV?ôHíõÎÍ_Ï”à˜s _ &?£YðÒS¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&Ž¥íÕùãÄl7_y_Ó=tµÈK -RÌ‘,•u~k¼ìp‹S×ó¡hÿêƒRWk5ÃáÉÜçê!)÷F»¬ÂmìÐç_p—Ê©ä†m’‰TýµHãX]˜—¼o¢Q(`áÅíl?éèIì~“ H/°ÇL©Y°Ôñ— á0ö¼Í“OÌöC«<ÃÕv•ªÐëx”R©ïðä"AF´RSÉé#Š€Zâò`íªýœ8ÔH”¹HíŸíÀ=~¡tQûÕï§bãëš!9““üÜBëå]­çþâÖäí ï EÌ5É'm`õêd|Ã[&Gè”×﬽òôn4lãÅÊ|¤Þ ¸ ¡DGŠšÒ•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦ì~$È"!õðòNWÆ…1ë[5½¯Ûã Q^Sj¥›_kdóŸÑXò¯Ê¡5ÔÕ²_ôÊÀ}à¸dÉ Dý4ÚÉM/jÖ²vì”®”bÞìbl¿ðÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèã³®qxÀ‰ì3©C—h5¯_k_ÕðÓëü+¡îÉæÁèÅsjöWЂ×È|~^FkdÓžnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛÞÝÍ2ørÖqjZØùAß§réŸMÕß~91"žžXZ)"»³'즶’(Ir.ò¡P9 òî „’©†.‰6M?%•àG"[!ÏVÉ•¡²Ò’“HNæow oR_@‘7|xÅj(AÙ”yZbEã ùÏ._:tϯc/œöëñr+/ªm÷òœä»í6’ﬕ)Ä[rSþhwXWKôÙr鞘Ù*’¡wÍrµa˜ÒÆ›ý(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËžXÅž1áäy÷ô¦æ&pMOÔŒµ6¨txãÉ„×tô·Í¶\ýŽ¯È¥ý$’ÂóÚi48”N‰ ój»a7gUR‹§Õ‡Þ˜¢7ûqÇOÞÞïƒ<ËŽü×Ú,ÓíÄfÞÂ(Þ÷’rôc¸`ï”\£¡þ›6|iÂ8­6`šÛ>Õr%XœU0$r|ù º]JÕe¡Íq–;òMÉú6%ïŽëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4ðbñÞ´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Ð÷ðݧ—ÖÞx°ÂÚÍ¥ç´ï^O"¨øH$—éžg@©K3²aO}DùãØLÆÄëï=„»|OAÌÇû/5ÑÃ*wv×?JT…o›Dç~2Y"¥–žòÕ N{Ps7˜ì>šÌ¹ÚÓñJPÖ·7Ó‰t-BÃ`3‡/NA­¥Èývâ§9Õ=Œ?{þùÀKPºe|sL…À¼3ÙÄrwz(Š”ú\ ïÀ>¿'äË–ïƒá®ü’O+JÜ Ò6 ÷„.û¥'vä°*ëԪ͓Koݸ=¢éürevy—ÛÕÒßðÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚ŸÌñJútÈcD]0È@³zþ°´ <7¹+†SŸÿ¾OúXã¼-³Û´Ó©ùëÃbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%kò¯‹qÕÚËTÑ.¨p|óÈ×¹J4¹ótfIÖìý-‰i|®ùúЛô…Ì úJØ?Ó'ƒ€’`Uœì˜+Š5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&CÞNÓÀÃ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yã¼ì-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ý|¹“‚{1ËH÷Ö$Ý)¦³”·QþøKœ– ßÍkõZ2Øâuõõëí6ƒ0ÜŠÒ½§¨#Â?SÌÆh-ëÎÂ`±KŸY¼‚öÂÖÑTQòæ@…݃–zþŒ>/·šÁTÉe¬´ù J6JùÇæu¹U¥êëR_Ò])Ò®b;ùC×»µ[ÜGšb†²Ëã…ÜŠ”Ó«3ý]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹ž;¹Ç†Ââòá KŸY§jòYóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œÝsܨ˜¿/ýi<¡BFk›øÝëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFÕc…P¢ûŽRˆË¨lN6J&ÐÓ¤;4@áë\ÈJìsŸ;ŽV¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬þ$FãV~ ™²feDÜ=ì¸a½„ î§Œ<úÒ9ÍÅÐëÆŽÙDæÆÆV¶{«?îœѧ29ðuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLõ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCÝ·Vá ŠšÝ?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|ÀÌÌȺ?õ<µàêVõp>¯$p›ÌË–çÑ&N~ßøÐee«âð/»­Ö‡­5_Ϙ›(®Ñß6Št¼%Óœþôµï »WUzûÛM¿qê:w¬¥4q¾¯òFõfÝ_p"9—ƒÒ±ïRV‡h¿5–/霃–´žI¹‰9UMu1ë°}ÌêËJOTó^ˆ“#LO¹i KiPÓÐÜeÄÖxëñá‘ äÄŠ'ùÂ3:Óž§føõØj¡Ë­›^šL!Å'÷×kwˆØ½‚6ÛßdÞ-‘óe&ß­DjÛÁ´iäU¯³Ž¨Rù¼­ð$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀðé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3ÒÑ+ß´§ï°úPì®MëÒùdòÖÿ¬ììí4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”õZ2 &(3Œ¬ç‚Ÿðz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ãÎòDblñoÉe«(QâgÐÁ"CVVÉ– ìK0]¤¬k+¶íMò”|*_i)Úf4þl¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[õfxާü2ž3JëtI3&c†ükIq.‹é=Úo·ôÇÓÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§Þ˜ŠiBí†üõÝfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LŽaŒùud`3U׎%ùpÿý!*Ÿ‚Ì­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ý2…î÷OÝ¿014ÿ¹:Aì endstream endobj 1450 0 obj << /Length1 2836 /Length2 24954 /Length3 0 /Length 26535 /Filter /FlateDecode >> stream xÚŒ¶TUkÔ.Lw7Hl¤‘îîîî†M³énIIién‘–FD:¥»;ïöœó=ßÿqïp ÜÏ|g X{¬–_ÿþýe–—…#ÈÞû·û_÷ˬ"!%§¥õæïŽÿ=sôø2r°Ù8Y¬¿DÆ þáÿß4*¦6ÿÐø#Vdéàý›-xLÿÃØãÐþ³t€ÿæRr« ý-rNsðÖÿg©ÿòÿ§ð_Yþo"ÿß„¤Üííÿ:¦ýëüÿslê`cïýX´înàPt¯è»jÿ^ZE …»Ãÿ>•u3/‚(ÈÊþß1Ú¸JÙx-TlÜÌ­ÿVËßvÍ_[foª8ºÚüz¬ÁWó¿ÎÀ«en~t¸‚%ù×¼9ÿ-) 2w´øµblœ\SSo$ð%ƒ'À—¼‹@¯¿D `f9ºCàöü–Ž.H¿n”‹À,úËô7â0‹ýFÜfñ߈À,ññ˜%ÿEÜ,f©ßˆÀ,ý±˜e~#v³ìoÄ`–ûÀ\ä#0…ßÌEñ7sQúÀ\”ÿE<`.*¿˜‹êoæ¢ö¹¨ÿF`.¿˜‹æoæ¢õ¹hÿF`.:¿˜‹î¿ˆìiú/b{š:8—ç×ð¬`N¦®`ÅÙ¸Úý/˜Œ©Ûï<àH³ßÜ“™‹©¹üƲüËý_ûß[÷ù¿ˆœÌÜѬ¸)pü²88ü¦úKŠÌ¿9²ƒû·p´·7uùÃÌø;)ØøŸ¢¬là¬@ SWë?l`Š` ÿiãú•ÇÙ¼ùÿVûåäenoêðG5ð”,CpŒåã´ù£ ÿ†œì¿ Ço²¬¿ ¿ëqþrwtÿ³7°ƒÕœÿ7a°4¬½¬ ?<À¶?ê³€§aûËÀî¾û? øvþèüìfþ™ ? ~\ äî`öëlõƒ_#qüÍœÓñ(Ö_#qú} ®á~ïƒþ£Ö¬ÿU¸°hmÿÐ,x>Nöî®ä[œßé/ätýë¹ö¯ Ù~Ý€föÿ©ËÎñûà —럓ÿúóþcý¯3ë/üq‰¬àIýfÈ r:ØüWùœ¿|€\%'8‰+øÕûo«à pµÿˆYÁ¬~—¿Ó˜Ý¬]€ìxºnžŽ€s¸ÿÁ÷ïñ3óüC»àh¯? 8½÷ø='¨Mnµ"ÍMàõˆÖõ‘ 3jˆlû=9ûiÛA·@~•£ÊuvçASÉǾõì•öªë+_ ŸÙRÝ®á’G~,ÿΫc\òƒ*Ï,kšà5œ# =Ö©ú«ë)¬œñ2¹„7Hþ‡±ìE¾zklqwÓ>Ë•l®„”„z$ÐWX#“Ô¾b»)rø³¾¥EKýs^-Ed9¨ ©KŒL»l™56jÑ ¦žZ‘ùÖÍÜd@(Í«~ìͤڲ&c—×ʸ5­ÆÑØnµìv@’ÝK±å¶k­.KÛTâÞïu/€¨ºÖAÍ]¾õÎ˃CýŒ7á©_n›†6ºüµK„û„‰­®(½Áy™Iʶ]÷ɹ'‹o¬v5ø¼‚s%V!hЩ I¹*!©¹8±ýÈ•œóÝK:O4Pñ*#ŠpÓ¦†jæC6ùì$’~­~væåFQ yŒe˜Î[ó]Ìhˆ iœoŸãSÎÔ°UØ%óÈCùj1i0מ'DÑäÐk˜`ç{?‹ËAȹ•CP÷ørýçªE¢Öšè™è<˜ž‘™~•tÍ\6„&5kåùZŠóC¼ç™z$¥_ÍK°£ªÀØÎX*2ò¤I@£@)+K™Bú‹@ëžÃI}ÓÝÜÇ•AëÓ•ÜÐÕª½ „††OŸ2… M„/¸SðGraõ“;.x¼T8X§I.ÝÆoe ÐQù¹Ò[šý]äÝY÷Ø24Å!`m2ðêeܪ>ONù_{Î<˜“R¬:Ÿ|ù²Í¡ÌáA®Ÿi|#û%ÿÓI]Í#nÿ¶y4Ë*IŹ¢ÜbŽ.KåH¼‡/×*Á‡ƒÛ”KŽó`ÆkvBÁèYßuå™–ä öéºð¥‡ä}M#ÅõĤ³Û‘HI¼iÑ¢äiÂ{Ø”Y¦´R«¹dU()íöî+›“ð×ô; ~G£oˆåGf©Ù¨¬>˜ÕøDÜȦ3¸;(V²õø¬¸'¦çFüà¢Ïh¥/FíëF­˜|áý:Vº*Ü[ ÿÏœŽ`xüæ§Á©UŽ[µpÙFÜxïåNãÀ³=i»2×BÉ@¼9³plAùzf\¤H›Í‹l—Ç™\Áâ{õÆ+ǃ€MV-æ˜ob‚"µ—÷Gä,‰]ºyŽ>w”Gw7AT½U_'q=®üd3t,ïYT? ËZ£»ïæ‰9KÁáó5°¢!Ì¥X ”}óæºyÛ¹° ‘B- %PqªŸ{R—1L}ªÉ–ö¹-åÝ'üF“¸I;òÔ&ûh­t_?㻩Œ@Kc…Vð0ŸvÀ…µi(î¤þöZñpß¡W¤I{:¼Š °ÊaÉŒŠe> –þÞ$ã¾7/i5‰Ùòª'˾JE’-TK”N]Ly[ ï˜»\<[´`õ&Ëž¿Úw¸™–âËœ,H .ñ5B4DD(¯Úœc"fW¯>í¦±ö)”™ès ¼Ÿ£"²1öÌTª6æê3qB;ª÷¦âî WPEn­Qû©[6‚ˆ2ëAs„ÔÙ‡FvoRŠô stEÅÙ é>½§e}h‡Ê—/>ã1RpˆXöåw¯»å„ª0sZbñÚbÄþ;Ztïa–Ô¿-Ú2䯔œ¨aá5ãµ·JÅ@—·«d1í¶+ÀLyÝÂëéhEbâ\\ªæÖ j¨¼\y„äÞ!‡žˆB\­“ÜñÎއƘ¼±÷%B¸ªÞ̼7±Äçb'’YU1õ˜ô!ÔÅ5þ”3ŠÓ¯WÁJJ_¾9‹U¯øfÀÌ)(œßw¹|1¸J•oWK‹.¯m4r «Z™I9{͆¡‡§b†4ä°'<Ì*GÐ@pMäµÔÚ½¼Ô­FžÙCZB‡Vpœ=­½UuWÖ‚Ù÷ªØeòæÝòé”éaƒŸOw¦ª¬øŸF¼ëÎZEÍ%#E€DW#»£|W‹¸LšOB|UÁN!ß ±B¶¡aæi¹ rTQ~yˆ‡’DG´¢47/¥¬‚Í3u’èœÕ«Ÿ {.oÈ9Äx)å†syÄ­•ÑBå8QQ‚!ð¤À•ïöùÔ; ·º[³õ4ócÚ [!Ôù,Áò€gBÜ fD›ùïîˆfÙDÝâH<½>¢2EÓ9ìHÞLçú¹^-ëËn¬¢îUåY(N¢ãLúêslfžÞ˜ÜÊ •€DÖÄ#Ÿ—‘û^§““lVð¿áv2(ôô"ÄÒ]—F2Z攬]ÚMÂÅ"Î1^jI‘n¸ùyºDK*Šbß„=yÌj²ÄãÎtáþæxcþõý…ÿ)C Ï`ý$’ckÍj®ô7–4×·˜3ß±´Y¥¼Æ즮¬žb¼´¼¯0'³^Rø¤–8yœw¡f‘„'¤_Ïõ•2¹ˆñ¾£Ä5ëŠW‰³Þ÷º•[ˆPÜ”ò@LØ)Eüˆ–ÿ™;Å_йÿ#É>Xêžy.Fé"ª’íg‘Åse÷ÃdbÆã*}[”@q^òFv(v9´kg1¯@ƒt<ª¸¤I˜Ö^¾õZû`/®jÒ˜T‘£J{ïú$fH eùûöדììm7*¼³¼‡z±®¼4&U¤¨‡. Úw|JŠ¿¹N] |h"³ AùhD¢½FÍÆá‰UfMùƒMûû³çrXÿ¡2¯ÙKÁÖkåâì¡Qíz),ÃeæbïòÕZÄÈÁªÉݯ¤èË—l4ðÎbw”ׯŠ&!…áêTuJ_ä¹ãkÞ¨¥Ïê»e>~Ó½êÃ>Òuú·ÕΣEßÌéF¨Ü_"IAjJæ^<ÇœNɇtN£ËÄÐ|n‚ÔSC—_s£*Ø|IùØ©_JÇÝKÝñ˜k=ÊB©%ÜÓ¥ù±hÚݨÑsF£ãøc5d J†–SÈÃCF MAú¼“;<‘TÕ Dâ+/Õ°ºxjd—i¶Ò ÚÀ;2Q¨)0DX4-Ỗléó}ŒÄòX?QX]ú²Ï‘tÉšFˆíâ úr욌ÓÝqÒ[…¦Oo,»r½:uÌÄ1ñMðžAF '‹öÅ7G`ÒÔk<Ü-kÊXú‘9§Ò-o¹“·\«ØÓEƒ+3ôqT£íe™®*š›~õ:Ïh’´k_s0™%¯!u佃w5Ma”Çàžm÷µvi´B¯š˜‰š˜©ýׯ:ãÜYÝ,¾ÏœŠ%50«ÛÇ‹8'QðØq­Uè ¯K˜m ÃÖúæóÈýWL>HPk}+ßœQÕi¡„“Y-ÙAq“-¬jC ü6Í4¯K|&2­pIÁ0¾<-w# v(?n¸‰*Á2* ‚R¢S…aWðŒŒÃ­p²ñúãùcMH?M•Ê‹E¬œr{»–Èjš‘„>ìÚUuJ'ªÈœ¢ë o̺k(:gŽå‡W'¤A1j¹âÛtƒ‘«µÙÇñª¨ ‘¤e‘âû‚»¨ê W6ðÁNƒ¦å4ƒ?[à½ó+Ðܦ{°›½‚8k’N/€s”(É9a¶×ù{Q°ðfô„«¸ú›NâÖžRà ”:Û(2{…\ŠâÂPh²=íÙT%éà ê³ƒ“§<7¤ö0Ê®gqnÅ4J&¥jM¯eª†Ã=VÓÿk_ïNÏe)Ž&`’|8E7ùpâŽü¤,ÂÝ­Ò©Byª]ó"ÉšæCÒ‡LA±ùYÃWAêp¬7Š‹©/˜Öh#úªá Ö庌[oÔ]ž½M9Š*ºÒeÓü¤¼0±Ä†0e“øºxÑa"œA‰Ë«“´DH·„³zBš%dl#ò16\q]pßz-¥ m3u -LÌÔÔäÛ¥V/Ø÷òS§ÔPì,d|:¾§³œÜ”òÉ4ihÎß5‡Q—¡NxmK<†z€ x°ƒ³¤ÞlhÕ–³÷]˜V‰’{{·mðM½ÁÉ6'/ð:…Myk6®ø<óî'³¥?ûjJæÁpñÀÆké²̪KE×Iød:ÚšOþ× Mͺ½ ±FÈA?f©lGÈe:N¢•e^GãÈŒï£ùw#>&¬Ë5{ä¡}6\¢@¢œ‡/G_¤·æLU'x"i=þÔu&’TE…˜aZYĈ“.h¾gï¨ Y¯H{çÑTB±h2;Òõµ]4a÷³‡ò ©6ùB#kŸû¸VK¾Uÿ˜w5¥Ò=tèû!N²&íDpÌÉt×9xÎú@ÙÚ$«é8sÃéö¥ŠÇÝ{‰Òå™óÜå°ÞEÚjc rð‰”VdzóžP¥ûîZ/£4_äϳ^Ÿì°L=ªxÍ#¹NRÔ Ÿ #‚µa±Xoª %õæFvA‚jƒ5á6¹Ä[<Æ)öЛY‘¥÷Á–ã!OvÍjL™WO4ALX4£êÝ­#óöÞdÜIxù(ºW3âuU}{ F5ÒîœÆÒ™ð· ó¬ÅènÌ1?Ÿ×bGÖO‘Ö8ÞÕ²V"$„üàÞl[–[ñZS’Ü—öAŠœ(Þ™Ì}o‘–¿æç¬€+ô8h…Ù”uq>-e·}»ª‹iã^Ô½¼ÙsÞ>yrøK×cDâêš/>vÁ‚^­z$ꆉrÀXþž‡ný‹iyáàëõq^ý%î/ê;¼ò‰„¡˜½òe¦:”›žVƒIÊ!úëP^ѯœB ¼adiS^Úl18JÊe;Íüý¬I;)|$Ö±5Ç»ß{¶êƾiªÔã;Ùé/ìûÈúõ¼Á>pØùjÒÄýVŠÈ¦ò wf)r·>£ßhëÕ1s¶÷䃉éiVñ7Ô(ýš±( “ï#’ÙÝžD]°‡¦¤¯Pò|¶mÎLCñ±üm‡>í Š<Dmù÷z¡oŸh7§o"\ãÒX@ôh¾h5öÂze>ÑÉCXÑBÍ;ôÊ»;=ÒJŸP‰27ö VFfή✈-€¶µÉ¦b[¤ÐËlþàKÀOàÚ‘–„Ü´_ê—/:èþ“%â.Qßðû5¾‰~ÛE¶$x‚J+Hü âÏõzªMþzŠb,A#· MêæÞ`‡èéÆèG4 42:b§ß¾@ ÷-ªŒû®Õ¾§‰4š,Uöofü^Íqdìdê#|å¶f˜G‹TÍnr ðÌBCyÊ/ÇI\´V‚» ½ ?µÀµ Ñ­Ÿät5ÙgÝAs:v`èïäMHñc0(Q—Ò`Û”EÔ*©vÉžËü½œ ëÖà;™“:ÁßQzA†W×éZf©¨¤kµ^Óž nç°l‘’h²Ž_dš«Ó€¢3R‡d$ yú?1 Gê)5KâNˆC^ÖÜ ë"ǪÁ|º\Ÿ²·}7@jœs;z~ÖýÉi/`œéÕ­™íM£“Ø0*-‚®9ƒÁ%‹l@–º³t-ôÈ7¨eü5(4]ÌK/Ëâ7Õ`ðÚwá„]sÁ§ÿlÐ}Sê£%ôÈ|aØ•ÊjéäûHô·šEï=éªO­°£†qð­YØRµÔ,áFZÃ; }lsuDelID’‡–æŽßx]å§:µ]~¿Ð;÷qõ {ë_Ы0]¯ŽUÄdY>íÐVÒ-Ê~?sªŽÌÖ+H˜0£_gÑ4—ô(÷Ñ`©´ŠøÏüp èñÝnحÖu²?StÇå9 ·ºs²ú™pDΣ›AžÌñ¼>lòõQžƒˆ~4Xž‘pvY»H}K%z´Z´\š&¤¯wé¿nâûˆä ÛÜ„Œ w~ é‘î¦ö ãg©A,IÅ„YÃŒobïÖs(± ÏØ¨T[¶×¶¡­~’nì~ , Xðµ(vòœ %°¹·Ù'sDàuIÕôù ûs©^ªoá¿kд©j8©)©é—DÝ(;>i+s•3Yôÿ¬"!ß™MÝ5"ªÆß‘G®^oâ§r[™ ke†ÝVӬ݅ªßŒ@=@±“£0›bA" ¾C–ä+'ý–£”ú]ª ·órÓÂñöκObÎR¼I†]´¾…4´É0‚f­'NŠØØ—a“ã÷ü|Ü«w[ yGÁÁMQù“´&r½|F,Öøø£\kR°ø.IJ %±ŒíIþéqÃôÈä5úÔB\Ê«h ÛæBF{Õí¯$p¢1MiPzuô#íí Ål©ŸŽ±«ûwÄu¼0“û¯²ôZŸ/)絨=1iß6‹Ä$´-B É5]ywˆÈçƒ8¾fåR/ùüÈ|ÉA½¹¾‹-Ý\s:u:h1â¥@y‡š¬1žõu$¥×À=mfgÒô'[ï+uM~¨&HÿÏДÉ ÔŒCúø}6Ž2ó›ëÊ3¶E©Z¸ŠO9“õÒ5n:´Ê ãžy–\Ù‰‹“9½V{Ë–´šeÎŽ“5ƒÝ#·ã-AÔ¡6ê¥WñÏ8ëŸÙµ2_pgt¡¢7<$·yÍ÷¸½VÀ_¶';Þ‰«(õBþÙ½MÀö˜öÞªê™%Ðé}°½Ã …šèÇånû'ÔÈu7¤hØõÑÅ0!·Åpf‹Ôd±ãÍ…#­~ÓóÑFá]¢Sª}…æZ¼µb˜;tšZɱŸ‚¡°MfI¬X(“ÛÉMßS1"½¶šøSkÀ9õ­ÙàᢇÃ0%žþ9ìT!äÕLFû}E Ù¹»‡#¤ó£‰ ‡ŸÿÎ]ÿ=[‘$†‘p"¹éÉž«ÿǹN¡Š†µ=˜%qùÙͶù‹- Äç2þ’Ý.Øqkj$” xmÎŒšV[FŒ)Î&›nÀ¦Ÿ]âÊ=>ÂUƒLе:s€}ž'³·) Ï@Ýbƒž¬3ŽâüÕ¾¶ªëŒÏYñòa²m&H'G Pû¼:ùІá}“SÖWò¯(Lu2 ,ä!«‰á!7í„óÑ'Îa±r×h ŽFÛ•qÿ[`¢¯o‡}·íޏ‡E)ÎÈÜÒ¼o‚%)–ãâ› S#G ëåzõ“Wd*´âÈÑ”»Rì°LE µÒ9O¶=âvïN=ƒÔÐbgiå X–K—ÒÒvf¡RÎX”›;>äŒÈüØ?½ŠÖ7T·. œSv†¿J–½¯Æ$!WývºGƒ/røó*_µ×ƒÖ+õ ncÇÇî[u+ú•1ž9ŽQ‰ïŸ™y-ïgZÓôŽÉÕp /M85R ÝšnT)üÅòæbF‰"íœúÜèÇ‚ÐJª8»5åôÒ™óŒü›;ß&aƒUiÕiß5(7 9Ô~è“:¯\I7²a¹&x÷þM-Å ™ŸåSz DíÒà4!ôõ馽®À¦MãCТ´2~)à£à OÃIN„³ð²×ŠÇC”r#þh+o×° ½E£2>¨HXÕ%cÊ‘Ú Ê sÀBÿœÔx0íj¼[ BÞ<¹Æ¡ÁƒývÔÚNÿÁ«BzNß×|ie2ÖΧh7ª»’2@0ÂÇ14–?ql¯'dTWãÓ&‚)ä+Oõ¡7Hd_eQúiü²£Kïò¥š‹\ObæŒTƉÅÝ3×’»¹ð̬“DGQMLÍ'éoŸVØ2 vÆ]s;Bwª¢ñˆg™•)‰ †]Ó ¿ûr‡aé9;íÈ4t žº4â4º0K’ïôåW¬E@·jÙØ\%Œ†%Ùvjì•ËX†6 È]KR\âç¸b¾+_–“d“ßh¢|–"ß`ZÿÌåêzn(ÄÇéáCqÆVþ>çiФ1d‡%ýƒ # ¢—ñq\iâ§êÒ’]½=ªGHNÑ÷÷;Qˆ@³yµþÚ-®Á7%Hö‚¼ѧa}Í93z³*fCƒg!Ú”Ïw#€´d±öK'9dqHn×c±€0º m‚Ô°¿Ñ  ÞâІ1ãêú¢të#{¾µÇéPGé¸ „g!žSRá5'/y/Ï]L }\E:HZzPÛZzÕÂÍÞBc3Ú{‘ŒùmŠå´ Ä WrhKy®I4VÛzÁ_ u¡â´ÞÔ̦žÏU¸\ÄüóëÓ±Ô²Ž²bxì÷Äa¯ô“=EAt¶‹Ù\œ°z3†¯Žè¦`<ìPí@5äÈW†y’ÂvõHˆÅ[ÑžÁ Ȃˎ±ÅìÑÑ»Zuç7$–Ìì£Â;Ÿ\¦lÏ=•‡ÚÖpf¯7#›“õ—0å 5g|kj© ñ'øÌ Dx…û°Ûg-RŸÒ`?2zFÿVñÄñÆæºýRð&¡ÏDW¢}ÙmIq%2tl3»eÍä“*FƒÿÓDdÇR·zN¤„TQëÖÎGõNÔ4Õlòs¾pÚM—QWšYû™s‡Ñ±=¼õi÷¼Çöh—}Ÿ£S8_Õ 7Y}\‚¨1…Ǥ c«yõ3D ù³è d->£“¯âö¤Sˆ•@'J,o6SxÍNžq¿x}ÔMØR7“vÙÆ°€wý×ZôØ—*…d†2+í» ù‰³Dý^”¯ZqG☠´÷ù¾°'¥â¬Ip·Í3Új–ôÛ–7äA¬oÅFPw¥+Žt­éö.p‡“ý>A³/wM^ ]ŸÆãå.¶æ1Ý.öP¤ o@–zÆ»L™B_ÑdጥÇsÄÚI³wv'ü¶Ã•_ÏÎ Ï)Äñpb–X»Mæfe£„úùà¢Ì^ëO—i/¡%ï¼èLËÍ:žˆ4G¥JVõÐky©± Èû¾·-=7¹-É«fc›ç+Mžðåœ%f¹²S«8Ž^å(A¨q;ëe‰K…”¡’‰ÚA]²«›qû‹Ë¥Ô‡kæéŽ–(4ŒºÌ…2•XvòE§ÛÓA=_ædÂll|- n•UÞµ™ølÀÚ÷ت åõsµŸúÐ Õêîõ} )iJlrëˆÕØ Êx Ç=¯ÑwN.)—£=аfà\4‡Þ6Hs®´éH èŒ_ó¹¤Xð³®*«6QÌ·ÐíìŽw­ÞaOd /ÊñÝðva¦ºPx¦¼[)*7Ù®ŠMg=¯\•[‡® |ž_…þœì2.É [ëÙ\Ík„˜”Ÿ=œõ•NöûlÞùn Ãm¸PÎ+ГçZÂa'×¶âNe4›¡—M<£|OøT¥ã²K_RŠ8Ÿ njš'‘ý)-ùÁSð³ñ~Q¯â6ŒInÖ¨…º Ñ®áÔ‹ZH1#&a3±iÂú—Æ["r¤ˆ?¬°Õ÷íq®šèlãñÉ4!×§âòéDk êïæì„_c3Yu«‡åbZúñÔÉQâgÄôŸOï¤ú;o¹®[qgáq² ùØ‹4TÍàçeìÙê•o¡x¡Wëh&è$—¾Xìåªÿˆã>}Ò]ƒ´ŠŽ€fæZæš‹¹ÝâÔ@þ&ÏìèíÚ±ó®VûmSLÕmOHT@™ƒz’Šv2w´0–ûÂÚ_Ôˆ˜e.ÄâÍ¢¦šº‘ô¸éw»ž:=ØË‡»¥c–7Nœê~Ö…æZÉ¡¡ôdÌ´§G¯á¬qßTÙ2#?0ÔµaÝcÞL%áÀF…àž¸ð•“„]¯øÏ _ߨÁ/©¿ »ì3 ñ̵htüìÍ( ßBXѸ¬4½ mƒ<¡·î ™^4茋іÀ«h`V©½)û)ñDŒ'ÝjW±XûÍä^ ôå^Å€E1OjŽ5›€m·€ýR0÷Ô§¦]Óš–‹ÑµŸ:’G¸æmÑXpÝšôÃýS©çâçXÛæ>‚O™ŒÒ¶_ aí¯ÔÃï­\d?.¼ßW÷á1É…ïUp‚[&ÃoŠù>Lt_î¶gà%t²°gÕ‚çÌ•g«ñØP@#*R–½kmæWT¶}÷¹3pf½ý ¦EüÚåö½þ+ØŸ3É©‘$§ì¸Š$Â<Ñe¸„š¡_Ï#yOº }‹$”Ø*)Ç;lkÖQ6}t9¨úç ?D]Œ?(š~=áƒ%"mcà™žðŠÚO8®”góʵõˆÌ}é9® ?ÿ±â›í3¿¾¢KÓÅhkàÐÔòÔò“K?§K\Jè<´LB‚kwB Qüæ‚Æn cÄ8…3-z!Öx_˜7¥šd™ 1-ëÌs`ù`ÕMñˆó.Hµ÷iþãHÏ1˜M9 (žv•ˆ!ˆàäPrùâ7V™{)²âx-ÓÂ*9Ð7Vô6…šÿÓy®h[Ù£¤…ãe#ˆÑÔ”Óvq®j'…½¦×üŽŽ ¡ ›m>ž)÷¹_Ê”‡˜ø6ââïu屪hòŸÃͧz\¢à\ÐcФ9SöçÄxÐ[?zžµÀÓµL!HЉ½¾(bY×~… òÒ¯µfàûñu´ý §]Bàc³—;î¡êª üjÏ×ìk‘†Dƒ@¶Z(Žv†Ò%&GI€-7±À-5L7±9¨Õü¶Æ\‚ 9÷®w èû_ŒÖò|\³ÊâlÚ—®}së[hg½îŽimÙÌeé׆+?ˆ®w–Ö¬¾™A1¹au ¥>0´ ¸Ôý«¸ Sq¾  ý° ’oމðž vó&íÞ U¦  àü©¬Ó”ì(Ó I/±#Rvs•sèÑlß ôæÖdΤÜ$oh@zu!(>³/vÛÄ¥(þªUxtKËoxå#žÌãüŽÁ$Â++7MRIT ÞÎn–£ß—šñ>}‘ÜŽ÷) ½4©_ìgùÙ´÷[âLRi뚇ú¨*¢_†f‚Ùv)wÖ÷%-žÄ“[æ4+Úø SsêrÄéuy(±©¿½²1¨YÆ0ëê)¸˜D—¤äJ¶Ðwe§ìÇG±pÔ[çéScÈê^Áëÿи…‡m.”àãˆ%9 Š;í:øÜŽ#ˆìæY‰e#%“6¸+òžÙŒÿ~ŽWÇMm@è±_'š_s¿ ýQeQ.€•˜ &&À8ˆÉÓC3öâ zDuaþ¹¸è£&&Ž¿øð‰.¢Æ2UHíÁðÓ‚%zQÑ„Â^ë½Ùý¶’¼i󞩹…0®Åu­Ëgj•¼T´’QZ>„Ê·+L#î1”kY[™)‘{~H¶¾R {è8¤žÒU&hÍÌ•ïüUܵý÷èã §•¤.,¹$Ã19 Ñ#Có© [ŽØÒ¦ÐI Ü ½CUxA¦H±°ÁAtj—Šßh¸,I =£ñþ ø¤ ˜B bEÛÖ™†¡Š¾ÝÊÛã%¡Š:!’lK9ì$ÿv›˜'äŒÐ ™Åôm÷±A.Ú&Ü1\rǘ¢Õ7Cú¹4—0¾ä±Ÿ'’;Ï£ZtñƒsP`ß–½És-@§U[Œˆof&€I\«åk‰q. ú y?vÿÃáGãŠ;È6%ÓYµ·“É—ž¼æù?ëÂu]ï4øiN|ÎÈÄf§‚5Cª …1žHìûÞä·g&-ã\\ô‰7ÍX„Â>³™ß12iƒµ.سïÑÙþŠ¿Y ç£OR³g–!Y›,%eîL™¯gsN]gZY®£²ã!y7öÀJ;é+Šiüöé\ÛÈ?a_YlyZL`´1™fŽ3±Vœ¥Vä‰ÊøÂ¸ùP Go¬¯,®¹šëå²»íú¶‹Ö¹0-ÇþÓÿQ£Ÿ\ö»Ÿ} :®‚=Õ´I¤¯ÔŠ}n^V®Ö½áp dÐr@¯z÷â&=Z…wvŒ˜Vý0\°Ô,ŠŽ&⹕øÊ/çAÅ®‰í²ó¦k‹b’Ü®©º±ß¿Á÷sxèïµðÿŽ× ?RP:©å`ä;¾²IV}æ³”ÛNÊP,IÀÉ0óÞ4í 鮬dö êÇUÓ‘uÓ[Œ‘±+â(Å…MqS¶LW£}8æê1í›Ë"’¨¯µÞÉnSÎ=ŠDsRm\µkÅÆo |Íòõ Gä¾}ðÄî“Û ±JâmÂ?‹™o-±Á€øÉPMA}ïº>^?Äù1”¦ÏcO{¶°…¸Éä=\ŸÜ½Š˜Ø[à‘UtïÇB˜Ž_Š>êÿ,hÝkœÉ¸ß¹ qÄñÔ‘6Ž*eÒøDg8\ï&Bû Ï0c:T(nñ»áÉÇw)éÃÆ¬Æ~Ð _=zWƒéÒæë$Ì$a=jó¾~¶AÎæ×5s“>Ÿž~ìªÅ1Ì%XC§áÚn<°}x²ãŸ-îØßtÓášt±–øË<ÁU"½|ûažœÛ5ˆØ©ïÇ)ß©ç=_t² f6ÏÙ™È}„ª+ù`K)(ÏB“°0É;°Ö®n½ naz;VówâÈœî%ŒýÑEh˜GÃ9~hª9iÈ$•á¤wJ^e‰ô=­QSH×ähwvÐCÒGT¨í/c*”&ʹú¨ô_ ¨qU™3K¨†–…öAC…7-)˜;†cáQ“ñŸQ¤0R¢(ßrí›P”l[ˤ=¶‚J°¯ÅÌù`20ÖÎaFðÓïRrÎXf[U L[‡Vv_™×µ¹™NE7~\ÂUÖ¢ pÅ€>ìVóÇöúô¼úv"'’8耕ixäÖòc4— K—•*râÓK¦ZB&ù©‡Èþ)Œ ¬GX×ÉÜ8$…±õÂÄ+„•´#Å7q¬ ìHnþ‹aZ>PCØõCö힊J¾hj—'"^šò8¼›B:ÄSÞð!q>HgõÈ*GnßÖÏ>ŸÞW¡O¢Ébb¬cº?müù‰ÎešvWs‹µû:qg Kâ : Ix®ª&t‚ù½ÀÇ%Êlö¯Â]iy¬Pl´f‰¯¡è,ÑKpðú^•çà"¢z{iÇGm´§$ #RgBêD}4¬cºë“ ž‚"‹Þ÷¢NàûH÷žHîãÝ–¬*%²j%bŽÁ*ÁÒ3l(¡ÈÅ×}x5/WåŸn(4Wt"(8º~ĩڙaóÊŸg„… æÚ»³Ä_½ ¾ÓSÀ(K4V¸i€¯mX¡°‹Q¬í2˜¶¬Ê„j˜ˆ\‹@Vp8Îw6c‡7ˆ=¡Ê7P–ŠNÎ -Ò¡•Ì®†?ØÚ•ã,&´›H»_Ç‹]Ÿh´™:rŸ{Q˜GÿedVîX/\$3»RnCuúŒdïåfŠ25OçÝ#º`hãSF9ûa†-¤¿šv@´†!eÄåæs6ÞG+ÚAœãŒ“‰‹¾”þó¦µo‹•û¬Ctí³®NN­‚«èb!7û-^ƒ\¡Î{;ÞØ›Z<;¼w€ÙcØ­ ë·™ž¬+nf½%ÌX«~\RÝéÓ~g³®{IŸ/fÙ‘‹6¾-èSž¿S²5MþND'g©áTõõ(&Ñ g|î$LÛãÀ8ëõe‚ÛïNœÉý5ZáK}ÉRHöغ¸#v– „!¡Œ ¦@_JõQ:ÚErêx\x—ÍÔÐô[àp±KQ‰äÄ…JΡÑݩ᳤zbÚ4ôÐú²¯ŠUæUllw ª’x2äA[ybb½‚»eÝ5½˜å:v ó°ƒóumÿŽýsù¦S…ŒŽc÷BS3£”ëú×wó1 Ãæ¼Ù—›\îû_Òù~Né?æ‘é7¶l–²…ˆ.µ +5ÊêlëßV<èŸä«*õøë]‡Ç õ8®D«àH$™ «ªËkÃEd’?âOê¥]P}Ë®ã¾÷ùÙ¨uWSr¢j;ŸVª‰19y:4sU°f-ò»cäv|!fb³]窠÷úâýÀ‚lo ƒÖÔNa£vt²?É«rÂ’A¡ï‘f,Vèw„üdãyýI!üS7£¯é¹ò‘37‹;(_«÷¤Í<~I{ôó|¶<9Úðá<åæMrb¯Y¿Çg‹óC¯Û ²©§Ô­Ûð·Yj€º÷¬>ñ¯³“-Ö‡täG5;±&QI…M‹‰^rÃ6j*†55 e±nb˜Ÿdá©H‡÷¤s˜Ð×tÝN[^\RT,E/Ø ¸‰ýR qHaºÙA¨[¨ÆT¦õwŸœÍâå§y|±°Ý©ŒÊÕ6Ê}D ­ì\œÃ0½¾2fe2h.ÂE² °;~2Ù¯Ÿwj÷)lzÌŠ”-ë¼ù”ÊH-ᄬõ©]Y(™|jê"˜š_±ò¢Ú“¥ÙÍž©ß*@9ÞËÊoá­:“÷Ƨ§ØàÛÍ\GU¼þ4 ± 2WK _÷MüxVÍ»þúFú’Ü|ª Ö2ßÿfn¡+¶§œ°¹ õ°ºR\Íø3…:\->ž.ÊQt@C)üª“?¯7|ª]é/ઓº×î?SÔÿÂe×^HéµáV+Ôö#ô5+¿ˆzÆ©±†.%?ò×J¸%V"¿3µûÞ9åSºìá8Ø™•þMèfº¤ƒ)ëé ^Š}Üvõ·,9}Q„ºuŒ&J9ŸÄm ¸ŸZRÄh³Þ+‡ ¡ñh^Ã} ¥Œw“Ó¶í*á¥Á%ª5FNÀÞƒ«UüŠÇÖºŠ²£-  à59XÖÈÞ8¨t[Zs[tïg0{‘úÊ¿›.50õ bçeÍæ‚£w­¾iíäÆ c „M§ÏTØþ¬®d‚5!Vºðªçé±å$rZFŒÐUêÙx¯Ú°óïoónŠ¾ÜºìRP¸ñM-Œ^ ÁÎWi¿®k´1C$Íæþò0!ðE•O %²þ垫ˉ¥æ’ûëá#³ ˆÙ§Ê½3È÷;é½_š¥ck·“:rf~™%±Ûµ£õe½ÈÄÖ;Ì\”ïšB€;z";w à¬O›‚œÔ>iñf›)MáUìJÔ¼»aç߈o™´)üÙë  Í÷9„4££]'PõMaQ&®x—I“̺rüM v2|fJqw'BTñÿ:NtAà3êšB0URÈ •¯¢1[V(Ðʰ¨ÍÁk¾ûê}Ov½áOuÕ¢„½ ©ߌPJ§uŸ`8_R†nr¾ñBÑDü¤+8|¦îh¥ZÿŸ“5ãÜœ ê¦|!;ŸÛBÚø—>šµX¥ðR›b¦·oEçαfðšÏ6¸Ï̘üSñ°!ô¦Dœ>!ªZÊOv‹8·®“<ò >õäQMµK¨…ptËËÕÃ,ïݸèüÎ4ާú– „ÏM޼˜ó)2º…t®>´ôâŽIÓ*õÉ5EöF³…yl¡Vã#ÆCÒô&Ãw×_Ü{†\¢ÅïžžˆÝUÔî©•;6_sgõ“¿wÉn5Q¡ó 6¡9U•KÒÀcÉklM ¯E$­¢CrÅQ~±w.ˆR@ÛR\J?RnU)Ϋ¨³X¸ËL-1DP‹²œutTî­ “ñcÓ1!3Ä#,:²ÙB)ÓÇ>û !¨ öwTÄÔ¡…cù$1˜\Ö© ÔsÒy*¬Ê¡ ¼j-°>àX~ãTFâÌ,cŸ…úœ:*,Ï>þŠtv÷^VÝt‘l’ið–•Fd¸}­#®ñ™gè8-Wí¥%²¡%Z7FÀ’‹èðø[â.ÁdïÔ1Têå2õB(QÙc§Ý¢²·ËFL>ï#×qtâ¼èô>è í:3á&Ä HqP†ÝãÜúÎ\j2^ „Þ¦™1}`¿”bšAÎÓ· ÒÐ:øÞ¥!¨½ê—Ìa·ø^òZ=á ž¤š(ú•ÿúL9B$ÄwlϯºúÎÊÂ-,ÉáÎÏ nóTÎslÕi·ùª[Œs)⽚FØÈò1Ó PÂÞ»ml—뤇ŽÈ}FdqËB­æ›&ů¦¶IÌÞH×Ò<SÏF´º×£Òä›k…â?lËFütÿtÃ3¶ÍÃE ÒØ6Ç™Stu@Ö!U{¼2ó©†|5Ý1hòm>Ìãê© 9åLk†7v„ŸÉÎçüL [ ^”Ñy0îÖ[ú:Œ ‰…°ÑÖN´Šìpüõ¡’BiA\O®½˜'ZÛÜóìÆ‘–ª€y¼ÁdÞ ]>eر9 zœDo2ŠYjs9ÇÍŽ ámÓ ­ªKTîbò@¼~›T‡×°Db¯îˆŸ‰ÏK ‡hC+<Ê`ô㘱wïâõ¢¾™÷ë8:§H>á½à)ÅcöTõ-oç´ÛâàQ¯ýl͇yXüÅ|õëÛ… ×ðØê.øz>©¾¦”ó3O0Ã[­ì¥È˜å¦,8Cšrݳ¼$&tvìi£Ëå³dT.‚¦1hjªÔ­çò tÌ qÏ¡fò»a—–,ý¬m½©Xáñ!îœ.qЮ*n£,ÁƒèV‰×qNˬ.r}w$éÈ4l®ôº‚ú ÑLÄÓĽéä?ÙHÙ¦WnÛf4Mu”×4 lRcÒ”›GÄßÕ„·+aIÀ´x}‰–Tà][U ‹Žê]×kõó ôw§½Ujõ¸½RiïrŠ¿òùio¿¿yJgªs»¿§G6ï &ú݀ęvÍM±–Îc¼òaH¢)ê×—¥(ž.Ãý&Ëgï¤VÑšý7(ÃÑ´%tѱ2ÞŠH¦ž1ÍžÎéÑe{ [XùÆéÇk¦n²½·Xb9üvŒ»Eóâ-¾#f_ï"2[ì¢S{Þ×”tózFéÏo‰4>ä¹÷›±°ê½f©·âJ,€ƒO}ò €NuMŸ©Ž° é0ÛX ÄZ£ˆ'og´_m@Q3‹ü¤ø²%MÚêûUΙ›9z•-87ÂV­DHYP]¤Û«Hjüÿ‘›7æþ5ó3n6[S‚‚w!Nfs¹\1«–lNtw&·…ÚŽõ¶\òFÚ‰5Ü8‚A;gá¸ËŠGKø\O;t¡Cíù.Ò½Bé‘ _Ó%ÝÄü"±.wÂÅgNãIþû5Z…¢3ЃÖÞÀч„€VÎm¾Ü‰9XÆmà +¨ÞtêJ¿yÄOh°u‹…%ú勵†vD-×o§tÝÎw~I`™,˜B8“”¥FYœ0ž¯-ƒ¬›rIyNch—ä?°xrpa½¾ebä©ß™G±¶†·6xmס¨}slª6KÇ-Ô–_?¬ªÊ.á‰È!"ƒ*²Ø6Àa5,û´-sÂf;A œÄñx›ØôlðWó¥ÆB|… õj7&í>$ *´ž*©…ž]ưtolî"U(QĪÔv°< f<«öUCýY2>¸`âÆõꎈ)Š}úÍ$[^-0§ªó¸½rvBxÃd×?Sæi†Ö ßüÒÏð­1§³Üœ³ûÜh%™Ê¼é;ßãÐMýëæÛ6ì@h+ß0Knݵ¿ó ïU0ýÕ&ÙYIQöðÜO¹@ r©“õiĦŽäÜk<Ÿ8’ ¤ý6 ]NG“/}!ç°W¼Süá©FLZˆ9ä²»¥¿T £ŽB–S:ªîÅk§Î§Ÿ)Ö«èqˆL¦¯vvât~þnOyl°¬ÈLŸ®ÿÛO|!˜ó ª IeÓvÒp¾z;¨¸±zíIûór„6ãÑ@¬0B Üç¿Ø9vÝ4¨N°ŠüÓ¯˜½(òÄŒ6kËÎWð46ëM°h³®);E‚–à ïjZ¿tô´ÿ'X¦rS=7Ó¤c]œáWÌ÷ªÉ‰ín®¸4rÛI|fáÊ(ß„V\ëª1íñè)J‘ü«Äî•8²-ÛŒ¤´äÉ!ýk˜þST¯­n‹€¡|PZ¿É“º#Î2âµ>Y$î›h -@jQzÞú·uB‰!×û]÷ÙÔ}¬¦3Yw(r@^öÈ!rõOR!³Á¨°]Û'ÅéÇeÁò¶›äZá{Ðúaç~QQ^ QÙùq*'ëñèG«_xvÈ0”xãv#¿ j©I`EUíҪ㽴ý„]$Q«·CeõÝxîñ-n?ÙÓ]¤y\­]lq„;Òõ}°Ðɲ|#ïÊh£÷¼n®:Óz®63ÿ4|jº¢›MëOn6”ÙHxBêÕs7¿+¤“êÔ©\Pš|JÕ3©¬VÇ>Ÿ¥¬º,¦1©ŠÑêÜÆir-4~E²P¬*0¾¿ø‰[]€RföŽUæObŸòc¸E·Ê«xà Ší‡©Î•”Õ/æ:b%ö€>ä8…%nO©èäK3þT‘ÿBïRÐXì)­žèºÄÁFv•Û^óY|–ìÁ*uË‚Z‰ßþš|ŠDCÚðsŸžˆöe‘ÅÛ›òµ•?ë×%²"ÍP*«[7×|öx.×Ön«8îT§.!â%â«”ÆY¦ÉÞ¬0iQËܸ`eh®`f'iâEÍ6 S~Å?9ʾ``QaNwYÞ” !ûy˜o±L¡÷¨êjóº¶x ——ÀIî{–/§†Œæ%†|mx ÖØWsäÇ;Ÿ7ß® ߸qåx$ÂIËÀ¶‹}Áî G© xÀö\KÂ3¦$¤eV3oj³qÛcyݤCvš»­ådÛN¸"GM*¹×k߈ªjKK-–LÎRجatª§?ÌØÄmå¹û4™ý$«~â„ožce,¯ŸÜrÇCfèÅMºi!ø'ñ÷“7YËCTO_‹Ÿ”*&¶²UwõÍ#nÉÌ¢5º’Ç&_éR΄a íä0±ü´SzÊu%kqXÑÀ þH¯KÜKf®›Üž @ߪ^óö—aÉ/‡Ui´ëí È"{pà?¹ðGå‚EÛü5´,¯áÛ²@L3(bº4M Ÿaª=ÙçÀ‹š²¯¥W´,jºõ#Å…0ìŽëøßæôJíÉg›ÑÜneòã±=™ û@¨®‹*àBïr›)úø!è@Ò·ø_ yøÝRÞ/ j þS-'fÒ´H7OfÄÔyý˜GH¢-¤£ÞèÀ>Ÿ@0]1$€€­°z!·:7“é¹²ùÙ# ê/Å$DçB ŒÓÛ Œ™:‘á4³¤ä,L•õÑ[ÁÅ¥ ‹/¹‡(õUë2ø{°Üœß JH™hߢȑ<#võ똥·Þëéèì;eUjQ‰I£oO{†Ä{ ›¥ÕpQÇo# j Ip7ÆS)D—ÁÓj|“Úî]%ü„V£¸ÒeuQ-t„þ­ŸTP›”CRúéœÄÄPJ>e.\z”rLo7‰Æ’.¬èôwºŒ-Êká„6|Sg 3ÉÚo·h&0õ&£La¾ÍiwaÜ|oECUôÝ@ß`/?Wþ7÷bX‡”Ñb>ôjZ®j®·/ݰŽhc­yè>3¯ø =wHKéè¶ô ~ÎéßàaZ}ƒ‡ÁVSp8HSÂÎ; Qkow”§_ñIƒÄQПiÕQPÌÝhz…sÔ®_d«_åçË/úrΆ'¨†¶Û7%3,?7`Ä»z$£oPé¢j¢_oÁGceÄÜ×Ï6œdU46îGblmå34 (ü‡"œÄ1×v0úF<…&TOtÙÔ–íVºdv;Ä4)%5ktlÈm ¨OHÐ;Tgºõ¿vøgÎîèêÌ5ËÆ )Z`®=CàF‘êüŒ™¸ˆqî+{¯5G›}/F0êYñÇ5¶§­ E^Í%ÝÏËl!³—–¿M©œƒ°ƒ² ƒ0ÉDúiJÌÇ‚q Ûƒ‹.û†§ë=9Qe%ü©¿g”»BdÎ5E䯀X&”…[‚m ÄòRèž3©+öz ŠîDôŽÉ-†ܰ´'ÿ¤à‚'éPébçRa¬©ÐLhd=‚&r³VUiýÏš¬•_t{½F!tú«úß(}œ›¦xWÓ=Ï £“Èi+—+hØ1QS:ÒÍð~‹ŽÉ1 ËX0‡Œ-àÊv‚óü8I°¨ Ó­–HmÌúI¬èu ~®L†ÐOí]š6ƒ¶<01’sIɘ<¡; Ýî4¦ŸÜ /™zÑ 9=Y,bbáÂäM£ÍÛ´T»3 ‰öî[Âr]Ðè+oäz? ›xå/0¼™(ùa0RÆ.OwØëu” ¤ e€ÍQѪb‹x„N­­ë)kÎÕ!ØüNÄQÃò0ïÿÎ~€ü4ÄbómJG»\¥…Vº·ç­°áýÈ?„é[¨x ïwz²¤äoß«XB‡¦2,pT\ º£êt烇3p1®ä'Øoèx…ðéàØ±¦ÒþŽý.N3tY¶¯t2²ðñÓ6œ1Cçêô˜`îÇ1§«ÉV„êõzA„äæÛÿåëã'^Ö³¾ãüúb˜È2TIPíÓüÒЧtÖ†Þ··pÛ‚N^]ðÒ›í¶³q1v•Î v€f=gÿ©Ë¶­úRß2óŽøóžì;]‚v0'œJÜå÷kÇ~¶ 4¼MÚž‡`þzã îZçSpöO +tÅ÷3s·ÿÅ¡n¡áW9ªøŒ±ŒÿtüAYŒaîV(‡m¹ÝÅÏ—¯Ö¾ã˜éWðÖ&Š`Ʋ§zÿYcbXvLàÿþÖÁMý¥æweC xû¶}ÿÒ+¼²ØqIkQÌ.:çÐL} ‚süÁÐ)„!º>¤€NéÆ~^ɲ"N‹kA`0xG€PxýðvHæVôƒ'вÌ4›ÈN³´I¼ ªÑC”® À€úS‹Q%Å2㋤™“:%æ t7ÔÃépø.©•Û_û¶…»[¨«p ÙíîŠN³[a—TTsbZòT©tS$gaÿ5šÛøEgu´ÐlЇQËçÖëC1]üXŸ**Ê«ï~Øp"x.Õùø¶½Y¨×ÚO>D8¨“úÐ{5íHºC·{V VªÎ•®HÅg ³Æ@¡™ƒëF)<¸t|rº¯¾WÕ×{8-©²Ø.Å©º‹Ís¸@.¨@Wx^<† >mg܃9š2HÊoȳ=m¼R>ʱÅJëÂbÅ䋉;²GzÁ%£ ‡º˜X×'”­ ¬Õ"¹šÔ§ßw0À[õ ¡0Á o„bä¨òR$~Ž!¿p·—Ú~ˆ÷¯ùÞsfAÉüXÉdˆXk]Ze—{»ß¡O1“?m69ðüné4‘æ\“,äÈ ÞϯÑTì¦ý¤ë[Ó!I[у®š”¾ŽE=P|Þ‡c©—»Ü†iR°<µ•»%ݳhµ]IÂ5\=Õøù½ÏY4ýWTÖ]SÖü¦Æ'Î '~£*M¨ÕdºêS§¼ÃtàÄ[寮œña…æ•òL–0•7¹¶Ð;ÁPKh²ÏªÇš× °¬1¬™²TNÝÑ{ÈkFįÌѨ—€àŽ‚2õb5P î·[jíÞ–n˜> —!ÁÓzDöÝ„,} ‘õWíY©%>s*®Þím—'çÊ”0PŠð‡´(:\ߋޖ$&f¶E€Ã¬ÜÒá´YTSUÈldU)«¡ÐGØÅíìËYŠ‘•»Ö2êg¶Do å8û¡È.ЙXç÷P G„ÒGÕ O¨ÿ«ÕŠ/ŒÛdA¼\lrød`¶dù“†™‡‹χ:‹zßÄ÷ÈûZLŽã¹ày¾Íolri¡Zuâ£ÞbÑWI<Çâû3oͺçèåÀ²…áE¦˜§NK†«)ŽÍÁ'+s›îéëraÜÝ‚‚/¿Æ=Û@VU™Èžã-çžIE3+YË¢¦Ÿ$¦ÙÕeÈk$Þs­ÔpÓXðö|CŽúª¼Ðx•粜€dʆÚV•ßò"2gu2ì°§—:qsÐø¸ Ùæ?êè¹—Ó€kšœÐêjÛt3ådéhüDUÉ€c–µ!Ù WnSáÅŒ<£`T‚à&\v¹T'81ÝÆ-s;Q*€2$b.;Ú Ç!­vQB›˜_#ë É¯¦ƒÃs…Î}Üô·Ë¼Ïä„JĪ‚]Àæ>Ãüm²8³TÕ™Û“ ’»ËÕ…« uö¢©‹¼,­¿³óÔKu·]V“»ýzÛ´IÅ»ʪ‹ïù½¸œóF©› ãÇhƒx,(:Kç\ï‘;1³f‹œE@e·­% I –æµ·ë!yAà/«lîpŸ"~¯¶d-ÒaªwÜ©®>î¸)ÞDðôÜNµßg鯳øŠçÑUž Ô”(º=Àvxeï"7‘â¡t¯Tlzî 1ãꄈ½5åƒôó˲ìöŠJU“ö+ÏÖG ™•mG±Ñˆlóy(À f,ñ“?Æ/V~Ç0égÍA×áý+8R`¾Ð¯v¿4œKrùãÀf¸a²’—d{Y!Mó½…<4VH‚ÇaÛ”"lõîhîêä†Â¶í\­îOV£ˆ9‹ƒ4’JE5½m><¨Ñ’¯9qÉæídQÍÑ­)=.³Úñ ×DÏÖ5`1¹~QEŸ¦ÆÇÇ rá·›‰þ«äÌtáe )z/4ÇVˆyž;ò×™©ˆ'èû–®mù›k\»®üÅH•¶æÝ§ ’££êÁ»ÛÖi›· ‰\½eÓŸñ]ð³Î÷7‘5Á±¨-bD±¯zÖ{mEI¼[)¡>üí°À— méP^ÕÝÙúa¾‡ü^Ô2ìx&4mŸyO4‰½æjÓds›¥=P 书\ØDˆ+—;€5ýßmõ@ž½ÙÑLñ[_‹d‚ÊÆ›ÁD——µóÛ× PiÃú8d¡j´3Á_5Ý:ï¢? #yó:R©dò˜BeõÖZø°ƒb“ Sö—f¯;xä1Åñ ¸1åêäH½4n™©²Ìcã[ø*ÿ?ñQíÁïiò¸# T8X×(æˆì„~Í©•hÀðdàu.»Ï{>yñ@®ÒUœ…|1xèjª»ýʼn Ïè'riN}y3IÞ–}vàœ(ÌÉSØeû”ŸúwÚ.6κ¢´[¡ä%ê²pÁÜÑ,ÜÐ'Õ>B¢À¥=òÇZ%³þx-ÿTnXQ N?2¤±â/ïóù ΖW$‘ˆ"ªT²K¶‚ «…q(fzÓžg™f*ã—bo”VMX×¾ ±%ù¼óåXL—QM©#™ßõ8†°‚Êm¤T…r’w µÖ‚ЄY ²3S¸èäPˆÉ”MòÔÈßmŸË·RÁA9Û”¯Št|óûA !w¶SÊ0]M·ÐQ)ê~il# Ê£§XsmôSd wK:…a‡Er”÷BoXGÇQ6;éÒ&EÂCν×{9´Êíõëöä-;Ïü •¬~Œ!rQ`ÀÓÖþ\¥/Þ·&†N=ËF_×Îâäy´ã"ÚÃð>>¥¾ñ ²AþêyÇ6”»vŠÉž€±ïqßcÖEhìSñK_îg¿¦¸GL·OOÒËh&ðTÅN…3)‚EC@Zœ ¯„ÔõVþcY¼Ž=é¯V¿ÿw˜7'þHø}N¶´ ™¤ø³+ Á1K=„Eù*Iзƹ8è˲j 6G,'Ds g}¬.׋Ô+‚¾Š`%ëÈÓ [Ö´s—hV³÷¦Áºž–6qÎ…æcsø“dø¬²Ñ›¯Ai›#¨;+¼´aŽè8Á:4æ‚ÏÕËìC|¯TÙ†¨gç}@Çi6ß#dƒpšÛ:%òœáh.Ñ‘I¬&{4y¸/çƒè¾ë¦bI—ò-dVÞ°4j<^ Vzº ЉZ­Æ™TRp"1ÿÄ`·MË`ss8 Ïg˜¡ü@Nt£ !;Žºö=cSjmÓ1‚KWÑÇð–&ë–øñCÃdQQ\«{5Eÿ~û”9¨¢/Ë.ÊXÏ#úKu%ˆoB¸üFuÙ I}EÑ]Á¢ÄŸ='ϸ$Bøï!©½ e†õ†O…,”*>JîÇÿçdõn­×ìWX³asŠÃ*•ç{òpyH­×¢Q.È‚$ùj †pÎ)šwn§f;DqAxûË?D©`îp6–GLΠÂow#ØŠ¥.Ðæq÷¿ÿù2qQ-oj× ´“m”€.}^áO´ A1CÂ'wÑXþ‚’ùm'H L™fËHW þª Ëã&Äæ8_»§ê™öJGÈÁÀ×ï1VÏü·×Ý{«Ô¨ÅUDb‰)%Qµ4‰m¯ø÷A÷…Äü?%žKÎüS)ݪ´`™{̓€¯xÄ¿ *§ŠÒ-íÿKõrfßS)kŒË¡z õ„òçØØÍAC/Š;–·Ñ1w;ìþA·%¤u»oót¢°¤òçÚ¯äÑØ¦ä½†qòðD˜à“‹wðõ ò·ª$˶ìT.4\ëš¿ ‡¤é³x(cÏ0 ©7% ªûk†Æ†½ ì3™mÕh úÁ¨uƾQÚSu$ Š>~F‘‰OÒšÒJš¬Ù¥Œ—/fŸÊÜÔ’sЂ.缄³Ò÷gˆt B¾²£Ç”+®$ŸO¢{W©"Ô^v·0…KK¦û³}=ÞMÔDü§ó&Ó®?kO¾³y˜ñŸÅqæ…ËÕ}ƶvÜdHµÔîûòïh·)¿Á¾¥ן6,×ù8“ü <Êk½ýxOsŠüÆ3üÔ…ÊÎò£YÕä_†Rͬ“ìŒú™ 5€i]9oR9¡ Ç&F°Úuäùê*¢s¡¹V¹É‡aŻʔ@À «wh»Äj wA¼QH‘»D#d´„߉?U»>Ð@iÁ#íÁvîáZŸê‘úðC©Ë­ÞóÓA‚fâiáÚÆ¡Ï×¶ïP-9u5•Œ¬ ™©ßW Œ|]?›˜·pźÒòóßÍ—6{àð„P@ü4x[DÞ2ªå –þ«k´¥?YÅi­óÌðo¢û“Ÿá&øøãâ6âÂYë£Û¤Ív†åìî´Ù×!#ÎnêÛ}¬pfìG%Àhçêå4;Ò‰Ñ+¢AÑ ,JȼٹÄé È_§"A}*²ˆÌvêÎÈõZ:Dá3t4äq’ŒƒY‰/ÝÇqÖ êε¬bÁ—*z0¹ïK¶H7 nEC–›Îv‘¢_TªjUÅðŽÇI«!Ì  òqí*Y,¸%R­êü莩Iÿ“„D +ÜÙßÙªV(Uún([?>>«°ë™ºâäc¼ÊšG —l†ˆ\J¡T-{#ÓlËh¸bšÐk›’UaäBZÌm\::#ÇÅ‹åÀ¦VÍ+bárÙ[Cÿ´”·16b•vL†¥ =¤ykx–ßëÀzP}M]Æçê"Aƒ§×»ËãRgðæÊ%O¡•øi ÿB:®\rÒ[Ûæþ™šŽ™´6–H7 ðüŽTE^ʤ.ªÕźµŽ©Úø;)¾üf±èÿ(Ëî’‡QÑ$•öøU'ÙzÄ>GôW<.’œ\œX÷ëOÏÊ>l)»jdŒ>a¶¢­÷3tXÑü€vd}βöETˆ£B?¿ÖÂŒÆ\‡ ’zÇoý ®zC§á<2gÿæBi瓎]Alî«ÀgÔWí¦»m ]„nE5»FÌò8ó4õ]ùãɽ‚/Æâ Ë bd?EGÆ`v+Èša›~Ñøð²CjìO+ýªÞ;Ïk¯+iËZÞ^¾éi±FMtÉ\8™‘@!rHS쥳\SMÔ)ÿ»ƒÊ °üåI|Ò\á­·Å´‰›Qò%Žà~°bˆJìù,]P†àêã{KS#¦{ðbÇ|µnI“ †aNUY0È@SþÌAzìÖ±cŸY5+hœãÖq±nm<yΩ@© P*∀‚¹Ø7‰ö]÷Ä4Cu°Kšß,OÅÖ-pº!^îÉ Ån--H†…m ¬viôRµ6k¹&Û‘4õ÷¤Ý>§4Ì\„ÐmÖnpygÛµs]øZ}B÷kÀd›óëÖt„Z½ã=¡zkÀ°v}5¼7 ï‚¢ãc&  ´f$ÎܲÎÂDR—8£ pq:ذ›¿™«ÄÙÍbù î·¥è^Øìj~¦0…Ew‡ápÖàÀæÃ:Äg?†ÝžBÁ†ŠgòìÄ8î̲¯»0^µêï.Ùð»þW¤‹’¥ß/ '£;4r&dŸ“w}ÏL²ÕÂè_™öG|Rø|GB'tÌ6 ¢³«öî›nTQÇå}L…ÀA`‚M÷–R3{ô”¸õÝü(ò&¡ç®ißøðž.ãÝ âµfЮæ¥*ÖÏyœ#ð@yrFuu©²ª¨Hw¶®:ë’eqÆÖ£9{=ò¦P)2#19ŒqR©¬X8Ðñ« ÔGÓ‘gš§ kgž‘K Gàhúå×Åï¾¼Ceæ9–p¤“)¨XNlzº0`uçýÖÇÅæ½z ¤èÃepé—]d#€mt’¢ø€RåñnŒzÕ²fe[\h¿ ¥cjаžä™hAèSœ¡Ço»N©€ü‚ø7h!­N锼ËF­ûÐÉ~1!¾åò)I: Õ ]_CÝÅÜr%¹LJ$ò¯B_¯6òBnyãmLg¹Yuœ†L]Âþ¥­’¢åð¼ Ó0ãßäáNË{L‚ð8¿ž|ãÞz+¼›Ãöð¯àQ$*ëö áÞ%Ë)+‚µ8ܪážÊà^ƒV碌ð!u‡·uh#COd-?þ6lþ[»-n;F£mrÆêàs¹‹Þµ=pXç[ÜÈ&ŸàC€­öÕha1Ú2'I,ý©ÇÓ[6@ÄHÙ‰Y´gƒâàUPžBì*úèù“Ñ˅ЖmQRW»”ÅÕ‚Þù®8’丽O•*u%Oà<ô:$Ý~Yu–XCx\¾lUΩå#ôOB0‰Ï"¥º#zJØï¤IŽm[”lgdâ•XÙh¦Ž'¼JZD-bpÀP}‹ñ‘é¤SrìeÔ;KÕ/f›þfíÛ¿?Ÿv"ä~îŠ}Ö ˜=Xyz]×ÁŽn¿ô;bt¡öÎöåS79ƒaƒ­Ä‡#v’¹EÓÃÏ ÒZa|)m»0YÌÄû)ÖFÉ\1#šwy}å12ÁÀ5$åö9ÌBïBsDÞvfÄÂú¨ôñQgóµ_X~{ðÌH‡¤‡¦‘U3ÙÔЊóÜ\W=k ¥|)&™èûJ3îïUÝÄMó!}¹ðO„Nü«¤¢*´ì2íÄD1Ô½ŒH°áþ¼Xy ý_Ú†®®‡4íK8>µ[$N¸¾"Yd,”§\Ôâr×|¤jbÿãk7O1¢Û‰u¯ß‚´ŠYn¶n7r¼*àÈ:MC?7¡Ý3#F^]Mûª‚5¬aÙU_â!AÆÉyÝIÆ —¤–¦Â*ÔhïÏjÈ% xùiCaǨº'öÀ2•ÕºIÌRír¡ú¹îÕú|Q—#{Šƒ²q ìiXOƒÆÑÌ"|І>.k9.å å[!»Ñ½A{g¥ÅÒÁ—°¸ñîÁ*¹ÈB—ð+jD`×# Hßóû>5søíhg¯®¬ýŒ¸çÍyáÜæ‚ASÌÈîOû4µch©]a]Uä¤ÒC NNRM5› —›v üÖÚ0P7^þbÏMaÅyö¢ÕgNHå`ª«µ¥´DîÊb„cΦ­_Q‘¬  6ÈPþ¤ÊTÜÄÔÿŸÈ3“™ù®óp–¨£ù“š)³œÖ.u·è[ èÉ›2Œ?K©€C™WþÔ½  5¸'ÁˆõFÛãz®Â¸9èÍMC]D»ÉlSîaדÛ,¾,´‰O„þ•+ó"³ Ÿ¦ZÀÂ<"Þm̯ QuôĤÒW=j²å¨*.OήþÝv§h­ýŸu=- ì„Ý©j€Íy ­p€$s]Ù¥+ ¤ëè¾õì>gëTOaEËa9Õ¨ôHžPÙ­€¯6Ú‚‘ƒùl•­_ïîMy1ª£//ñ\ìNЃ̪šÿ›KÝÒÿ*‰·­zË„)˽½øM+ðœ’O(wëÙÀYèªpm"Z¯ú!fÀÿ’ê<²[- §A ²vLEøÂ£†^FÛâß –ÖÑj¿ç“ôœ|æ `xÐïpÓ‹ÔlVJ+1'´®^Ýçß#æ5+ôД `AïÔf´O·­¦Gâ8ž‘ðÙ*zŠD wH*Á º÷Íëë¢ =Gðé!Äb{§çEü²ƒÌKh£y5Pѵ]œŽ_Xôa ò{çõmô~‚žž„ÌÄß~B7£ilµùºa“pxÓq^²,»‡¨l©‹ÖžY>¡8Ä1&„1Ñ[òÇÆ€ƒYšnüî;ºa£â2×a…=*/¶÷ñ Ù\‡…ôj#;$ª¢ç/r*¥.gO²ü/v~ö/I endstream endobj 1452 0 obj << /Length1 2178 /Length2 17271 /Length3 0 /Length 18565 /Filter /FlateDecode >> stream xÚŒµPÛ²-\‚[pîîîÜÝe w÷àî®ÁÝ-¸»C'¸kp{ŸsOö¹ÿ_õ^Qµ˜£mvîž9±¢ ½°©1PÂÎÖ™ž™‰ *§Ì `bbe`bb''W9[ÿ%…'W::ìlyþ¡u9¿ËÄŒœßÍäìlÒ.ÖfV33'€…‰‰û íybF® S€@ÚÎèO.jgïá2·p~¿åŽ*j377'Ýßîa #ÈÄÈ gäl´y¿ÑÄÈ bg:{üW*> gg{FF777#';Gsj:€ÈÙ  t:ºM• 7²þ]<9@Õäô/±Š™³›‘#ð.°™mÞ\lMŽ€÷»*R²{ í¿Œeÿe@ø75fæÿ„û·÷_@¶;™˜ØÙØÙz€lÍf k @AB–ÁÙÝ™`dkú—¡‘µ“Ý»¿‘«ÈÚÈøÝàïÄÂJ£÷úþ]“‰#ÈÞÙ‰Á dýW…Œ…y'YÜÖTÔÎÆhëìÿW~b G É;댷ÕÊÖÎÍÖë_g3­©Ù_%˜ºØ3ªÙ‚\€Rbÿ¶xÁÿ‘™ìLLLœÜ, ènbÁøWpU{àßJæ¿ÄïùûxÙÛÙÌÞKú€Ì€ïÿཛྷŒ\gG ×?ÿà™™¦ g€1Ðd ÿ'ú»hö/üÞyG;@‡é}ð˜Lýýç¤÷>[¦v¶ÖÌÿn.£˜”Âg 5Ú¿ þJDÄÎàEÏÊ  gag03±r8ß>ÿEÑôï,˜þøJÙšÙ¸ÿ•ì;Kÿ“°ë¿»OõïÅ üw,y»÷‰¨þ ¸.;“Éûóÿó˜ÿíòÿ7ÝEù¿ øÿÎGÂÅÚúo-Õ_êÿÖÈdíñoýû¼º8¿Ï¾œÝûØþoS à¿ÖUh r±ùßZ)g£÷¶5·þ‰ ' ;ÐTälbñ¯Qù—\í¯³Ùíœ@=(zf&¦ÿ¥{ß*«÷GÃé}ÿVߗ濯·5±3ýk»XØ9FŽŽFðï-~Gì/æ÷54ºÿ=ÁF[;çwÀ{y>3;Gø¿úÉÁ `ýKô/Äõ>B7€Qü?ˆ“Àøùb0JýAïQäþ w?…ÿ ®w?å?èÝOåb0ªþAïQ4þ ÷\4ÿƒ¸ßuFÐ»Îøz¿Ïä?ˆí=æû£cóÇú/^Mÿ™ŒÀÿÀwÚÿÕÔ?ï)›ýïæfÿ€)AÜYÿ‚®ÿˆ÷—ÞÎÅñáÞMÌÿß´ø“.û;ò°·x`ÿX¼Ë@ÿ€ïZþ¾SaõøÎ…õ?à;6ÿÈý½ô?‘Ùß]mßçêú÷âìþ$óîl÷_ê÷bìÿ¨ßƒÙ¿)l­fèbcþ·Ôñ¿Y|ÿ&2:ü¾—ýR˜ßktú“Ø_èúØßÍÞß¿?ï,ü‰þþŽ0:[8ÿÁû{rÎnvÿpx/Öåð'×À÷RÝþÑÔwï\ÆòÞãðÏ?¿Gò:þëªÿÚFÇwœÿ~-ßWõðß> Ðh¿üÝ΄7Ȳ>¨ã¾VÏ~wŠž|W#šÞkÙ±Óå &™º&+pÃñN8y´euGœêVh…èÅ븭&ô[¢Rû“÷³A¼òìn;üÒ ÖÐtá±pà >½ªÐž÷‹ƒ·z€DX·4yžƒ ’âWô{·I÷†ÁòŸ!ßw•öj8d>>—ÏÑG«Eé”,çg/b“@;ÓÀÒ ]¸#/ÜÞÍ£åN¿IÇÓÂûœD³yio²Ä<,z®Uª²8õàáhc@Ü¢MÌRx‰¤HúáUZ´:´äÞÆWD”‹H—ºJÂpÀ’YRŽ´mé¯sXîbþ•— ¢ÄBÿ•XWÖ‚aàH¢€YÓn‰î\Çj$8è2Yë¸Sï5³LÅ_ážkx,r'Ö!æ„»M®iòô °æçJ»OžÆ§IÉ`Yn=™áh<z‘Â=a°rŸÐ0Xc¯‹.1ÿ©¡}›ªq§ð컪G,Câ>Ò?¼>ëèr"½P%(1¹Âqü ýÉ!üƒD᥈~Á¬%KW¼qü¯|•*hO¬lHÆ6«=£ÎíÑ.Å*Ë˾€„UlçM´RÌTû½ø]dƒ0§—_Ñ…µ`N—1îˆGÛžœfP§ˆ\|W@2†qɉDYh½â¿»c#“Ñ4žx=­†XQg·ÔŠ=ž "°ŠÎE$E¨¥t¢ãC‹¹?\&2Æõ'ÏF$TpB¸$©°¼Ý¸¶¯Mœ ø†íy8ߢ’ŒíškgO 25MܪÚ4}y±Þû|“•7.®¦¤-X_f¨tãAm¸>ûiõÞ܈#!•Zä¨F?$íû†é~k~Ê"£yV…ëÕ»ìWÙð;1#1hóìµq÷2MAH@P7sš O#r»,&Ö“<rWF^ú9Ñp ¢pÎç»Gë×0eÄ|pËŠ˜nµi1É墟Œ»ÙÅ'¡ß$å5m?ßìDFcºO0òC^‰qfž»’?iÎð¼ÑÀ0(݆w…Í%ÎÈÒÝ±Š¸{ VVA´§#Î…)[Fì(FÅ.e¶ÃäÁ“ÏJÕº;Z'kKøi-ýÇO–¶õ×aÂè¥æ 󠤂ù`K~|æ:¿$)îGbÃ'mŠ|µ|TL­,¥q; êîH=Üî&ÉbÀK]¦ Ï Ãå^àPÞt(_/³û^-½¦¢œÿ¬gr‘¾ omÁ“ˆ9>Ò|Bi§V[J§‰O#ÙP°™¬ÿ«/º ñ/ÅA°©ãS1þ/×SÑH©®¯«Ã${¿n·zW°Úê&JØ0å\´µ›³‘e•í•N¯: ,î«ðÆ,ywMnô€T«M“Á8»ÕpOà(Æk8ÁFí°´bår/Ëú¼+¶.æê›¥k÷üN¹45…ºõ~_À¾ÔäàC_›=m¤§täõÚŒn~RÖu“v…›V¶¿«½Ü¥ò 9Xñ|Ì‹VC>2´ÔÖoó¬On%ä§ÛoŠ/Óžb0¡V ›˜j¾‚eWdÊ¢›ÈÜÈ4Ÿž-½ÄH3€YGGûœõy¬ØT÷®”¸Ïý¶g—×y¥QöpJM";æ1f…½.…ô¦:„HeØÄ#¦‰À£Ä ?ˆÈ—@ø„ô|᫽*╆#z73Lçè‡ò^²Ë<´µý/E×´ý“))·­éÉD«ªð*.ôzØ4h†^tM~TêÍ3íûyDÅt+®ÝýADÄ´ ßµõŠo¨NI4mCA}ä5_’J´†¯åùÅ<ÚX e?¹@G°âþh^i¿Ø¯1YâaUl/žQPõ}œ Òb`üt«Ý­îIË)<èÃVÓìÿ´q؆°YëÑцþsŽõ‚zi‡}‰DAÍ>Ã{Ô¦!_ºþ=ýc¥$ÑŸ¦|ÜúÓpzM˜/«q0ëŸÖ¹}æÎŽÞ +~v:¶º(EäÎE-;2ZÊN_vDÑ ×®W Me8LÝÖÞ«wRÝ~ ­àòØTÇåcûL­FÐ/õ˜ÀÕlÕ8;0©ütëÍ{3å Mû9s¯HO'@ úÍ"2ÁéGaž†—[Àô0KÏ e»ì/K›öt$ezBEÎÇã÷"V±üƒ\ùíü„QeçÓ™ýmdð€Èâk%¡-ˆæ7Á4WE&ÝÏë¶X¾ùgL·¹¾õl”{sk=’­=fðаÙ^@Ü•šv¸ÓlŠóõž ÚÌ3Ëšg;S€`&ÿúQ·Úá~ùhÁ VðñãÞÏUƒ´àtò{HÇÁÌÞh}ÁNõu?™TGׇ·8A˜Š7W±a)VûޝY ñ½ÌùÔ×O?x!*– EõÑ&A#¦·V=ˆôô Qú¬Y8¹òúvâ-½ÈOeJ(ú+¬‚z,AÂ3™<0Æc…Õ¼Ë9/Ö!WýÝ®ÃDêa¡¿b_K·1÷'ÏÙ-0æç!óÈ´PVŽOU6$€8©<ù⊡U3~!•nY’tÏ¢¤ØÂ/7UõgÈ·Èб*ôÄEXsh£ÍƒŸJ†Gâ†qÃeO·oßð”Wi£P/{{ák#;a(.ýJ˜qTÙ‘àwÒ¬û´V\mã6W"ù… ³—KY+ áð3·yxÌW‡eæ á¨FMj¿”àPjÐ`ÃH1 ^H_ò…¯Ç| ¹ÖÃrÉ·º§vpËp Ð~«^Q•Æ“RuŸ‡A7ŽLóæg/C÷€}”X÷ëZxózsÝA©çð3¢Ìº˜È0v›ò\ þoo¦Ó|HF?VU§Û ä—_§P>c)Eò·{%¯› ¯`9øRÂ@É߈ü”1š¢àP³HS\¥QÇvQz‚‹Ï~åQÀ]·Ôt*{IîƒÆÚ³^cNq¨å`pŸª®* •+*ñÂÅIiß1?$eã`w8Cc[¿&š‹°Úä¸IÔc‚T;êú\Œ0$NLâ•/G ÅS¯†v‚0ÜÕá%^ûÑVÜ"¨ð²ÌÕ¿«<쨔°%ãɘÒÔê±V‘Ó)Hsyûn‘DOŸµ-÷+ÔÛ™S ´»l‹n˜Ÿ&µC³ù(?"SØYw`3%Œý¦ìAl!÷ÓxœRo—·; ^Š º±ZC‚µÌáçu?z¨ºÉëcEÞ¥†^&–¼v®o_2“Öà ¦‚½cñZ¥92Gs1¦˜fi Žh1 ›ó©=üHš°8T{õ¹Ùqlm†Ð§—³¢˜Zû`¼Ó`ïký3Þ©»ŽÛEµ6Vè;uaE?!ZqŠ)%7Üb='¶¢®ç)?xø9W(qUÝ›À°CÛç/.NÕ?ü(Yyû†OãâÆs”÷ä©lãà‘IÊ‘Æàqß¾¢ §FÚ¡ºž‹#ÞÌed*PIǬµÞÔ;ÂH& [™Óƒ®ÁÜU¸§›õ2¨I[:¡ŽI'+/î?pNþ A[´ £#ÍÂKiݪýq¢Éÿó [(Ê$1Ѝ:xêc"› ƒÀ¯Hâ“]ÎLJQåi„zž{B]ªkGIõ:)ȱ& ÖÉ/%5ÈÌÉ_–±óïáC»çƒnF”ÂŒ]ÛáñÂfû;È<Îøé·½÷#*ź‰V?‹T¼~› lgdìûµ¶e>kóýRPeà“ăŠx¯-çüàú‰ÚFL„Zâ‘ÙòÚ×âHÈ3î/U6Eíý]!+ é!P%b…ÊFÇø?î7lqz§hùïÁÁ·k\7’7X^N†6o‹8Lîaö"a;64½c],bìSi4-^‰©—Îî-#ÈÆ˜ß{ç¬Á)Ô¿ˆ•Š£.=믱ˆ©ÓÝu² Öר)vz^ tI…ŒJÌã žÉÐØ§È,`¾Ló~'²ñWs/£öNÜU.¶7ƒ£Ñ’OþŒŽÞã„„Kÿžˆ&p¿kŸ.‰Œ ÊóxÉ*ÈØêßU0LZUÜ“iCÓÀ\…d]u­[¼k!qÒlð¹1M+õ#¾ Ö™!wJêJC¡8L$¢ýÛ½ ßàXé’ ØlÀÂ^ÍÃ]Æ.Ün7VƛȰ¤ V=I#‰_©ó·ø½ 6õÚÜ È/w;£­£`³ØšH1ŠT<¾W*DÎÛ·LùYÊoäóÌOݪ[ÕÜö­W›(º”¢î¾²òíÔsƒçê{P±ëI· ç„ Lk$Oµù7áó8ÂÝäÁ² d¿‘·Œ×ÉC[OyÖÄ/ñù´FZçR$$p:áej]nl’}?BS¨¦¶¶r–j°oÙÀMù4:!AöúP!ìÏ@ ‡'$÷Oômn•5«F77ÐŽ+!oèå+¥DF™W4aHÊ´¦=tnÉyÃÛê%6y±¾׳¯ Ô§÷ÞR¿<²ŠüZ2ð„>Á{&Î`²µ†6óŰŠáé!—#áEòÈ\,”kûP‹€vI=~›@JS[m¹|?rò{5_Ò€ZÃ×!R&øäÆ»@]øéQUBk#`êK/“ ÝÇO²a0ª©ëã1'1¿ ú‰­9ì!¦©î㔥)ØÂçJv§B=Ũ~s5nã“Å[)ЧmTÆŸå¹O Ѥ>LÝD³8ŒÊÅæ„IcÙÿÆÛh@ëMÄöÉþpç>f¦úhä宯({ûã|aNsÍ\…ÿô³fÊoã> ED*dѵ…¶Bén¡ºiΑ4ï@%Nù(+ŠÇ’Œf€’YÙØÜó¸J)_ÝcÚó!²b«é̀Ŋt~g`,´‹üIzdEHËN/´ô#gw:w֬勰Ǵ‹:ˆtúúŸë¢FŒ§ÅT¬G‚O‰ÙÀ>Ôj°aˆO$tˆbSt%^Îýµ‚þ ÓînM,Ž9¯á}´MÓGàDœ÷Ž€-S¬~Ä¥nt»±˜µÎºF+J{–å¡€ô®Ë%U¬òjéæLê`h¿ÜÓYï5‰Ú™Ó¦²¥vçªëžqžh%›Cj ¸vôÆCôo ffÇÍ50Ûp"ê,¥œs¿pÔ¥Æîž†©®c7Æ$¯£öëÂøçÍ:Ì0)VÞi¶ó­'ºº™½ÝpììÞôÞŸ§¦JN{Va'Á*´_<"Áj‹ƒ/¼–ð.ˆÄŠ0dX!éñ=Ñ)EƒãNÃèâ‰ñË>›iÉ Ïú¾8|Ùÿþ‰éô'ƒYF ‹í­‰]dµù{ã(iHë÷aM û:ÌøîœôýÀç¨KÑÆ;¯§h…¯ŠÌ>Xßá@تˆV½_‰/¬´c¶ ¦ÿk®`#?¤%ëŒ6âHd–ÍÆ‹×xüÁ­L´ ôÀv'ŸÔZñh,Y±Éij!y®pvjÑ¡Ÿt™Øn·÷Mslü $ržÎ19z?…¥©õd³ ý¢h¤lSjrEõ÷•ˆ¥:ÑJ>a)©'dÕ^¤GìFi×?£™D°¬,Æ©¡„.òNÁŠD¥v#I_J,Ö$ÇsÝø}‚´ÕÌmJ•"H€–èGÝÆÓôfÙ1¦è>ªœmÝáî.CÆjI¹œx`k:U ¢$œ`Î!è龞‰å)”„ª6­Ùw+½‘'“6/‡z´•uúå%â 5¦g‰“Üdöª%²âxqt{ê¿f¯·W‰‚®èm¨Ïsà„àævš@ë)Ï{yŠÖA„~ôPø¦òavS•ÔðYš¦1¦´ZÁqòÏGfúúI# Mã–´A Z>Àb¬=ư*µÖ*£@õ7xÂEuíÚ ³ùÑOBaak] <Ùõ¿ëôcöx䊹Ê^ƒsg„‚hÄµÒ Püæù>H ˆ^uÎbÚ„fJôÈ ŠGüñHe8#‰²ŽF”-㳬X„3v)ð¿èׯà({Îò›¡†¦Pß›[ ¯%Rº‡‹(šòÕìéÏÅÐÍ#÷ç».îÚ,}”&ޝ£á«®cT©éç—›àöÑ$Ðù©Ìºõ(ÌB+ÿÅô˜dÛõƒœøm‚Î9rþÔ¼¶¼| ÁNß>‘6fT7څ̾û\$;•ÌÖ#æ¼-LÈZ¶vE¡RÌu¨ì˜‘Å3-¢Öޤ[¸JzÃgÔ¨äð¤øËÉxâ¢zï²[eu9G8S2TËèßnÕ@ÜÜoUѧTä † wWˆÎ=‰ð†Ø—#~a9w±¶Ì»d[ÏÙŸ@åìMRÛ›_ë µà¯Ë!Øn}n .4òÃ÷HVÜM"²ÓßÔ z¹+?÷9pÕ²ŒN£²^~ººúá·˜yóõ C€J4íÈ'! äΈxÝY½žlc|â¯òëEö˘FýgL f±Ö±k¶íóðâbÑö0¢Ž<—µ×¨» 'J(ü¿>Ä`lOdk4áA`qyÆÛˆª-µð¶(9¿âídëTGho”£¡Ze4zkA(±ì‰òaj§—Î>ÙýÚ} Ô@w€eSéPXƒÈ‡ÿÞ\®œµCÜ ¿ 0Ö2l) ×<*â ÛȾ§ísì”#ÎX±ei*ßG=ƒ]…{΢¼û9üAã:‹Ðo.Å9NM×LΡo•‡6>ë½g4i‘I£)lU0.óê¢è~ú^]øPÊW‹ËšØÅ6ºò±q¨¾©Ÿ˜¢„¥ ;CÚÛÄ0¿0O¿ëx(«brÍ´ø<µ<,¿†•ÂMÅc¾u/iµ~DüˆÁŒ²/áU!4Õ}6Bº]&Ù°€ˆ˜?zÆñW£ÙȺ¯¶²ÔËêž8Jõ·¯ÌɳÒjgQ’õù|>=²{øiÒªm)ŠUí ›eNpß­âb"À„>”[Ù|jÕy¹/Þ¯Û-u9E*ýA›<^Óï­xZéäáØåì›?ï:ç'‰T•áÍg¯c\ןÄúLh„×oÙn“x—\5Ýæ$@E§È®*}¨"]Ÿ«Æóë¢M•˜¶)W&9vt}÷%|²ÆF#’8'×ÜÁï·3r³öqù«¯^…N‰ú·lð¨~m>“L)2eC˜cz›­W'|‘½·5Nn sqpà4“ËznÂ'‚îtÓö]Û ìsJr)î[K”Àf µmÔ=—Oâ#co"­©=ùkWl¶òI`Ëká­1¹F‡´okjɹS­¶FïsÃFOGpã°ì2ÕcÀdúã”s)êõ ·q®÷üÓçÖ¸i?6쪈FíS”gçÅÈ>âùÛ|gŠ?<(6è‚z§m…7µôŠýx¤qEÂiü}‰#LÜ‹ÖU°G¾—_òÔãz:Xˆ´ô3|ï  ”’'“Ok%>"xUµ Â|ï8ÌUïO‘P85óEág´cÃtчn&—›o=è^¯¹<¹ ©öÅîÖ‹µ’þŸGKÃå¨û:‹$½]ë£æU%nPˉw]ŸP8L^©¹}"6Èw?2B÷HÐFX@:¬#þÄΉzAc˜ÇpRÜêXÊ0l$zÄ,PL'`BºE ÍŠhêÖ}ôl˜ŒA-UÔžÝÉŽT¦3jµ]*Kc¾Ø”øó›½¾6'21´È¥æÃö[©©ÂEÞ_\­çø¤ W„¾ €A_ ä8 ã,fk˜ÃÖ5·Ü6“"2“rÁW `‹¢Š@N ÷Ú‹ÆË>]<—Î |¨¦¢ª—;%ätM/äjܵ¸ò²›9¶®z ÒÔ‡• üi+ xÃ&×ñ㦠ûk|LbH‘Šú¤EÙ§'~‹(·qøžó¼é›Ó(Cé§gW®¾¸uè¼ct쬚ßÖ‡çB©ýÜ3Û§ò×ô¾&Ob‰•ûò°7RÀ °DåÏæoÐ0pLÕŠ#H ú+ÍXÉ*’ˆ6ØTÖå{RÃbĤˆ½(èm®-{|ä_¥˜ 1êz¤ÿÎú2UqüÒi2Ø2û¶5¿éÕáËAnŸ¦]í”'š4)µì¡¤òå[ö§ß—XyÞ*sŒ¾:ð§\)WC¡rÖ´±òÓ^źífP ?PY£Cké<öh¾P=®¹u÷¬ªÓר›Â¶JÒ÷©É:›gî¯ÝWzóA³|ë"lYõ~ÈÔÍkbA¢¨?Dd í¬(Çïí´­h9ó$cöäëj´K˜7 §Z޾ ø›»ÀX0c|fßð6@Ç‹:t^–0¨FeJ¸ªßê vÌ:ETÙ© Ù Ø>€32×*GcĘ‘›ÏI'k´q„[JG²5 …º4à*”$`8÷¶ÛõWÞv; ®f4ÃSËêï[œZ'í2>ѓشxa.m’XåUúc{­Èì…¬]÷лÅ|Çܨ,߆DãÛ#¼wÉíøý¸{yÝR¤ðWÄ»K%Ë,Ok.ÄØ£ Y1(»”‹‰G$ýj±¹ÍQ¬<jžf$tCMs½î)T)±#@ëÀ8LCˆ—ÑÜ*€÷©m¼.Æ}[ã]PeýÌøíê:Ÿ°SìFüâ§Qƒ8å@ÚlFö#o’ó#¥ø¡3‡ÚîS9–;%äkÈþ cOF›þS»¢W—6ÕÙЄü)³—žh}“Ÿ³žÊ/oH»y´?#è£×”º[vשŽdGnaϳã ãA—ŠÜŸÍ@GtCžÌ.ž¼®²Á±ÜG†Q£œ†Þ%êo‡Å˜ÏÚ_Ô&ëÈ­i@Ÿ*S)S¬¯XüQÝ6Ü´ÒWåh'$˺ý®@¢ïKýá zF E7Ó>¨ŸÏrhãrnéÀèÁ¤":•ËÁ.óH¥´¬PQW¯NÏ»§ü:Ö8ýǽ›(5lhÔã£R[ÈZÑ/oòæ†VXíÿ ­`6æ_Ýäó@Úùâ 9\ ®¬i­‡e‚GŒ'›]šÑv—èÛšv€¥ðÛ%N¡š’3ѽG HÌIeÓÖÖUœ“¶ýž¡±-®Æ16³ÇLÉ_sæËVF¦>àR®QúâÍb`àÓb—-åTKKÞ´hN¨ümýÎt²6ÊúÃñâHA˜û2;Ä­NŒÛà`û”Y~¤xׇÙƒ;³%A½d˜«fêá¿h窦ŒÊŠìQ{‘ˆB¢ôM#>ÊcÙìqq€}UÒCËSUòö¼Ê…fiÿV¯©˜âKshvOÑyg˜heâßzƒ }êÏ’Â\h¡ÓkúŒ§Æ&µùž`ã[%6Íii…®¯-†aÁùÃ3šxÉ#4R*þçÓ¾*k~$8ŒA·a)!Æ “ÅJ`JÉ^ǘôÈ Öîù¦D„I«5‰PRûóùîÍ|=õÁžôÏþ0„|‹dØ´+#€( Lèw/ÕcÛ)žJϰžEH+¬ ô1Åü%¤›ŽÈ¿´té¸U&ÆJa öHÊ„¦6ka,S &]W#ç&¶† P#¼aµ©Ê ¹ô]Yt—ãD>"òzŸùDÌ{a‘ÕN®¬°ˆ®fjž½Ä®Êö#•Ôù²/Šý=4I@2ß›~ ]#1$ 2/—%4úÖåÒâU5gßñBÐÒô}Ãré­Y !òý?lÑ‘ø|ª¼hBÔøð1íŽê™óÍØOR½æÞúÎ&JúTuæ<ñQ“³¶!jq-m ]‘޹ŽqÐÏ#1÷{ÐÌ~þH&³Q‘›œyGqc{X¼M—¥x´ÅȘdïîãŒÂD¦v «Ó(ýû–"]¶¿œ!¤rò£øM¨™S¹Ý‹T“`ÕÉ]þìøâþëŸÌE-ù>ñÖg€áqˆX"a/QÏ”C5ר¨Û= â65ÇjqGféùÄ~Ðé@çµ?§¾,)¨×èÇÓë#ߣ'Ÿìc·ú¹¦„¿îÔRë `“VV§ü\ ¨"†:Có"ÒV–Hæ_G]–¬ýY]u¼ãHaYPñ‘–îgø 9!4Ù^G: ÍTlW«qDOŠ©Ï’y¹ªÙ¢敼’äóÌÐCçîçån‡XKIó UÃ:fÃÁ'3mpâL…; fañþ´Z ‹Õ¯PCŠqKƒÁÓUîâk¾ü1É«A1ˆ}€óz¸ý¦Y‚ꤳ I½±Û¬¿TxB Û;š v\Ó% ]ó™¾oË3Fj­ñ|¨œ½F¨†TLQ ‰5Òz&1·L`¨vD£ß¼0·D¾ZkM¦ü‡KÞˆtÆÚ…Tsþ,K©K“ 5›apq$©ÓÔ-ùÕ!é«ZÜÙÑ‚2\*ÏN×Ãçüˆûr¢JçæËu/U¢eU•-ÛY\ó¬¯ë$›bš¼y.½hm ZÅÏ~vY‹Àëž³’ö7TýUq>f­]êGõ±Ç …Ê 3ö†rÖðMðÞó3cëpÓÇ1Ù¹I]ÒÆ3œ›]Ig§›}"·•~¯ä.n%½ŽXXÝ›&+¼#Žzœãƒå±4Ølž¼4_,MJÁ_RŸC•‹~ ƒ¿\]àµM‘‡tãš›qNt(ë1æ.2–ÁÆNÍŠ=¹8:ÒX#fv7ykt~²ãA­f)ÿƶ/0‡vµ«™%7ƒ*œ†En“¡­)$µT6ìáÜ2ÍOJÌDø*yÔý<¬ÓÕÑßD£Y®6f¶óAíúZ¦¢ÜCå–(5(EÚ0(¡5“ÌS›åù ¨ Ó¿å#@.`ìûÄ‘Mk@yêýëìCk¼ Ð¥e袑‘ý¤+Õ™”òš¶*5ìýˆW™ää|®l½š²ð‡˜0p6~f6Š!u hTÞh‡ªò5w‹i¸Îãí1…aX“¼Þ°ã:9WòríA¨œýa°*í'ÅÓ«XT`ʆÀÏò-£°öÏÕX`Zpª*©dÛ8Ä8°JÞ3,‚7é@~óÙ'ó4žÉÒÕ‰¹RR€êË„`<%Vâß ³-—/fŸæN‹Š@i ÿ^ Hj¹,}¦eÓ°ÎKym™6WG­Æ'×4‰ë»ÒBØôPþe GHgAÖ¡3ïòGˆ:> ¼æ–½G±»é…oÜFüþ,á{ß‘]5Ñoï"FÂG{…œå؈{]L:˜šå«=FœÐ 1à3 ð9‰:×Aí¢tm­¿$~L—ÎR'‰zŠÒìe VÎ'®ƒ~$ý]¯‰õm$²ók¸#-õóN-9šUãŽm¬€’,N'jl µsklÅ1®2IJ)u“^§CÒ†HnR€Õ7ò„Ï/ŸC¼a¹¢ðÁx—Œ5¿Èᢋ¯’ R ºíð@q@}Åê%nPú”¥½¬C…³H+¹:¡œ> G8 â׊A1a ©â¶«|9Ò,öjÛ†[óz¡(¯­K7RMz±µ¯=WË>!ª°÷\´´gq.©þ¦œøeu†ÚØxÌÆäꈊ3<'KIJ´Ž]~Ní7{_'Zþë’¯à ^Á—Õ›r(÷ƒÐ‘ÏŠ4¶ÒÑ÷±Ùb‹æój$*åü+ÓÑî·ùè/_`‡È¤ý€´£Í&ƨèQŽ˜ËÂÖéÒœ[I·š‚ŠTqg²VaÃ(–ýÊ âðJâkS? ί¸2ѦÖwÉ #æÊâ´]Es˜?©Æå4åÎQ§TÞDsŸ6“9ð¯e=;SCÍè‹D/¶‹H°óŸ­åºÕS´YÔ±­­ðM«õ]½ŒþðÆ4r€ò1yH€2\AçÔ<Œ{¯œª‰û™ýwfï]ã…‹(näÜVRk3zØ,‹öw7¬oÐî?›yn;5lÕêM< (c±±ƒÍ׿ã¶Âlv{Ï=[¨ E÷¯Ô“]@mÄÐ_ Zî™d*뱿 ê±íDmÒ| kÚNÎþh’‡Gg›” 3mÀ¼’×Ým˜WLh´ —ýñ`ší(ô@{e¾¼ØçMg­lA> êÒq죱 ¼n%œE¥5ý´Fð.XÝlÍeî2’F;C˜7‰:Ò§pêÒ=¶ KAf¸…‡þ¶â"ºb"õ·¹n0(ÏÄÔë²Wt¼Ö#HokRüB»¯Î¹‚’oãüZzUA)ª3“ç=dÄÔ!ûÐŽ¡:á0:r]õ™×Y÷¯ªä+¤(òˆì' »±ƒÓtZüÇÊ.)ñD·ß 45CÄ ä©w÷,b(Öuz·7MeÆÓð,­ý,ï=ª[?k¯»#0,*É©•Õ¥óð/#Ã*TÐq¤¦\JGœ„ÊÕ‡Pfó0×E:1éL¼ Y–[ïä»Nùj~Ž}ý¦©„B²º5)âÔZfgç{»àŠÒ“¶ ‰çŒá[§ôªf·,ËëÎÏwG'Opé=»ŒŽÀµe²ôVæPã ‘ »ùv–¿; ŽR»ÛòäM ©ÓüASÄ®B“ž¢Õv±•2Õ\¥qæBbòþ¸ £\rqìÈj€§TFeêõÉPA«ÆÆËP­Yã¡ ƾÂÓØNqŸq0|ðþÏJÙ•¼–3‡¶N옧ùÄå\–Zkp¢ 0YD–¦âYNøvïÁã·£vÜi¸Àî$»Mè"ùG¢CÖì8ô9P ƒ¦<ƒ•”# XK‰LöVÑÒMÚýsÁç ÓQÚðð&ÁéÇp÷ý„¬©pîÉá5üüÁqÄáýÓPÍkT׈ê³ëo’±#’è«ø–Áæ£Ü½Dïy„¹1dä±´¸JyÁjŒR¢¥*2ÈÏÅ%j³†÷KÎx½Øá²á%¦É >†#ö3÷ík}ª€¼Æé¢’XñÍç×?…Á_{x&j_RÆË“š)ËŠ¿ÒŸJT-Tm !+¸ºlúu8ZÖ©œÉ™çWìHk7ÛÔ\u±QóeUÍ#•GJ¢¥Ï§0S¦«\ù!ÏíÆ­ôkùLŸ )ò;ì¹$ÔkÕÞƒZ²Åœl¨´#?~%’ÉE}Ê”³×ìÖ°ßY¿¼mO ÚØ~0–ûˆÑò×¥@,ÊtŒÔêjµ•M{@àr÷ñ›Ì×y‚©€8å´ÚÓlæOt_-i15¦Y,=„ 0f³av*%×H¯€^nBƒ²‡Îž(¦|ˆ!`œ]Ey³&§(¥ò¤¡f47àL'0€ßÖ\CF†.ø³’ #E}zÁÆOxÅ|ùÇ…:•zúKÎE)ˆ[ª—uYU'ŸÃuSVÈåã^™¥!Ð ÍÆô^ªÏBÃó¥Òj\!ÁæË±ä¬ÀÔ%W¤÷lµ¦Àõ0Pݧ±güÐ;“Ð/ ¥¾Þ0&Í™éÄ7¦i£ Ú|Ëëlé4·Ç&ü¢´ÀF>O_GÄH™Ýo×7W!-Ò)’4Ñ&är–QDÔšƒ²6Îv$¿cäÛ–/‹”Amµ&¹M£è™pÑ×v¡¨k|0î>Q:––6Z R-꨼5e/kl(M¡œÌEœzcã}›CQìö/¡tMv?›énИnž©e_é»Ç,­:Aâøp‚€?v¥F=Q»º7c7ÁÀãq¡ÐAHý<¸6†lt½ø[Љ€AÇ  j• Áxg¡ÅC$­øÌzPoVFèt'‰Y` ê!qVqG´jG!´ý ª$Y‹fk'Á+ ‡ä"SÏ[Žã·”f9ù¡eX®!«öº({Qׂè ë€õ웫`Pç«ýÂQÏq£#úù7±;+Ü~s!1wÄo„#2€‡ræ„Nž é$YEÍ7|„ås_þ+{|¿ïæÜö­ž“\ð`W/0Ñf)¢T¬PðÈýG,x<_×xöëzÒ«ëЖµ{›Lo«‚ipðjPÅ­Ýjº¤­Õ=LÄ­×·ÞÛüÔèEUÞ|sêÙ@½°® ðЬÑÎ \ÅU0BÉRÐÓº»Üõ]-L‡änò<ÍÞ½UXÚC¯ÌŸî W7Þ…<ݯ©Ï–J)[õ~ô7áõ-ÖZ:‰ÆÉR©±º3¨t’© &là@K"äL©Aübj÷ÊmØrþ€&·¯2aš†mð;ŠC’”ÏŸ!ò‚gu øÙ™iŽoú¤™ÁÌ7|<¨oŽ ŸGsË5Áߪ•Ó?i•Ï@D6nˆ÷–½V4Ñèð’«+ŒÌ’$ÄoJRîžå«§Dä— ï„wà’;ìŠÇ–*{xY̆†û ¥j}¯°Ò×£ù{êòµ…CSÜ’·|Ti/i$¯÷ùW±–#mcçÂI:ˆ>„•¶[[ýàoÁ¸%¢¹7ökiS@„R×…j:Òqÿ„‹‚n°J½„lQšRŠsÑPM,Ú=Vñ "³’Õ½hØ%·&E º4– Ëñ²µ[k™‘"3{þïgŸœ="°bõÅÙqÖÁîé«ÍÍ̳8?¢K6a¤}>Ër†P•ŽAF”8ÿ¬Ìá^8ðkü­±tjñ^)û§ªVmØåó9ï%Hù^N=ÿ&¦ü ì"E"¦ÛRÍ’wZ¾ÿõ¢{M ã!5,-„~šàzûbåzd"(Õpr¢÷J9MÄ*Ã9Añ˜Úô'Ã,¨€~.Ùë°Cg¬,{Ufb<¤è˜àg:¶žÙ;±äƒÓ™ú¯ÄÕ•çe._  Œ9Úï=ay†É‚’ÇXðUcRóq’‚G,©ÔãÌuŒ“«t±­£8 O2"·EÖÊ£±k²E9C9}¸y¿8Š7¢¡¶zøo^9¨çO`ýðP5®(S»À½$sµ<\´åá—U¦ž/H]ãú²A9owL_?À„+ðõß oé>Ƹ°É2±8®'+á£ÑZi-Õß”¹Õ73ܵº¢º0æOÅ%}ƒ ÇïZú:b.Õ>NDeQW¥ ›Z]£*§ôÃÿwVߎÄV3³=HÙS sUæM9ªŸœlᬪH «Öõ´Mزk?ÈT1UW¶*5Oã».ñP$âÓ?.´ÆLyºc½n´áñlÈ"(8Ãu`Â*·[˜6®È ù “?%b[ó<¿MSQzÆ»Ëlº_Ûëê4JãÒ…±xpÂÜŽ³¡Ò–œÜÝbÖÚz¹²XªÝºÁ‰ÐAþ´e¼m0_˜—¸á-a½£’·™²UÍ1g¯×÷ã„öâ9?Š–¡¶[UCÜJåS^¥ø‰.!}.fn5FÈåp¢s ´å0{"Bk^ÃÕÙÙI¹ÇHÆ1ÿ[¾X­»ð•ÍkÞN9qko a’f÷Ñ7ØI¤¯Ú [ò+)E)®BU¨%ã9š‚IY^¼¿Vã!«¿c7uN©•¦1>gŠO´•—E ëNdÎÐN§ÎÒæž?QKãcó(yrZǶ¯ $—«u®yå t_ÃEP=Ñ7®4þk”¸­¦Ý3)­lHž:.$…Æ„7ò,C@£6~jW_ú”Á€à̾dï ×Ýgèé ŒÇÒ`gkY2ndVÊ¢nrmTPàT¾˜Xêìù= ã lÿ¸43XÊ,­áxw` QÔÉæ>C¡ûrJ«½¦ëÉeüIÝlKÎÀ”°xΫjK;ÞÈK[ÔØ”P€?ymrTýšÎ™çɤ칛Ôݾ4[Ùî‡} äÐë„aqéU·_ŽJ’†cô°ƒGí¬oݱ™5_Ò41‹Ùá…GTÊLúl’_HLÇæ/í|®¶™îš1<”Jî0³;ô[4c áó/nMäDYaN»xŠÁ—ëb â/ƒ6éXÕù'94+üBâ4þZ‚hžüZ­«ÒQ§+B­H§NúLErCQô«fjƒþ²ËRcܞ±íëDJ«OÖ\Õe|"“wtö+AW¦<¶›‡sø–P!˜FáÁI訟s °a]íôï”6qïë3ª|<¨?`ÝMµ"„8Ÿ*Éõ2ßýö¡ðbøqY@YåÉ%¥Kí¦Ì¿:V¨{¹‰Ú [•dàºäOrJ¥'Ÿ>*nsKQò„â|åg5¹`z¸2)P5LNÜP¯—þÐ/R;˸oÚåÔcžhÕõµÞýۈꎽì7oU² CòÅTV¾õoU @¯’‚ ƒšÔJØoÚºIÍ…!™¿bœÄŽê3n1ç‚$î­¶ÁBƒWFtèà-tÚtüJ†¼ª1F,ÒD½D†KÜÍÄn,¡çqå+ôGiê¿$ÃðÏ3m|o޵È1ÇÀï·níu`o êI#ÏóWn’¡;´—¡<0 _/³ž…÷•‹í'Vç|-)ÈPöpbÄ”¾>Þ¥õ¨¢Î»ek0Õ¹=±ìv"ÇRWÄή^ÉÁ¨HØË;»˜Èy€òë¢m‰^Ю á¢~Éí¢6¿ÌE‹¿Üs@ƒ)ûŒÔ.Lü-Ë=eÑaþK×é(ÊP<è‡ýЊU3ƒ@× >ºTÇäý¯Ax<‚à€µô6oÑ%Oz”³ã¡†7 ß“­éa÷mÞ:¡u v–‰Ï#”UĪ<=êÈ!:7oõ™°S×[©¨4™ A±»óŒrÁ>Ýj¾f‹Ã\xrCâÏÚcó˜6:„¡,"”H›Â«Þ!^kI¾”Ĭ‚Ç]Ðù› öã‘ÊU²I8ô}líI“nì5ÐKÙ›´Ê&~wØ™®XÅvt“²vâ ƒâomVÚéR'keÊÁ–ÌPrD‘÷§Ô.ô±`üˆ\›.b.Ë*XªÂåQ«!Óªf&®1í*t‰¬‰cÉ`(|ÖoRêËëÈÜWzdùd+{¡í0S'«¼¼~Ò•nÔåálLÍ&ú½HßTB¯§ñ–AñU ‹.»ÄîG díéŸG½Mü= -òhûtì9ˆ_¤ÕG.‚Ž˜ ©ÒÎñ|*©JEz>YéAÆ,¦òðMNsΧ"EÒ=9èß;ؤ0êœ}rt‰bÚZiùós¨`ïo}1\C_ÒŒ¡FŠð+³êv´ ˜ÆjO“ ÇßI£çU„îeaNH:¶`õø#+¾ÄÌ”ï„æ1MÜFx7óÆŠˆøŠPºyÂMIFSæ™ÜêÁA4rÊBü-«0·É‰&üÄÖ÷`Áàˆ-Û /k¼´Ü”¿OQ£)o“*ñœàµ#°8Œ—sß i¢­¡"¯˜Bô=¾ã¿ÐåÞ~OǵU¢Év¯M©µÜŠÒ£ ¶©M·~qùõ¨Wfü-(5Ný–ö’k®åb#æ}osò=Ka; %߉¦àV$°ËÛCÑ»Ìû¿‡üÕ€ü[¢éP¦» x–éëâ$f,š+7™öùº#íYrkÜÖ0ò¯\Yr´a³Â§šsœÔ‘å¶møÒ”±mÿs¯a”jF§³kÓ¹¼Nr§DßçC¡Eizñ^+ZoL·B+qÒØ»>I[#å4š?|†BãÒš½Ç£?S­„ŽÃš¤ØTš€É(a`= fÕ=V=úyÝ຿ P'êGÍS|ͺ8ýÀ±p„Š[pa¾7 •$”0ÇùCØ‹f³ò^DÚ¹¯p™Ex¸HKfÅ÷Ç © ¡€²B‡"Óö͸¼Þìè– 1"ÂÀMüŸ6È%© ojTó–ßãJ/,€µV½Pt=~Ñ9Ö ùŠ#æÙìlÞˆü´¡BN'}ì~Džø¼XŸ¸µ0ÿÃ&û1Kzzžÿîdõ‘¸H‰ó:!kÅçWñ›ü±hÓbI~°š–0 Z+‹·Á™‡zué¶ü;˜Ðè¬Viäx¸É÷Á"‘™}œvs¡¤2[3¬ÉáPʲ#éjYêôZW#)9ò y­i(*%½Íé¶Ñ79oGuÅ,›§¥nyZd}wió*cÄÖáQ¬¥¸!Sš‡\2ƒœYÉé‹qo’`íµÉVÄ­‡I› ®÷FÛNëÉ“ö2$±Kýl“kÎîߌbZìyC€EÐdvnვýɯ¢tCK˜6-Ÿymà 6mT·ç¸”§pâ…ª†~ ¸µõÚ”†ƒ{²$Ÿ :áøÚšÓbu5.˜"gŒ Í Äú£žÃhQQDÕ«-ùö©—qcSâ›ýK–Ya ô„“˜¢0äîûáWâ©MŒÉÁ æº›ÂÑÕ4ÝÖðõ D7^•œ3#Óp#46ñ:Lzžˆ·_¬¤*}Ñ ^ªÍ·°‡ðuV뱦„72Þ+ü ün5:ÙiØ_Ï0\B^7œ ו­ffçJ.‘)—9–€ðYZYƒÄÍku³áÝgµGö¢="¨iÕöEnÛê°^‘m—çÈÏÇvbi&­dA€i¢\¿œMy_È&<ÿ¥‘ùÞ²wëȼ§ÿß/ŸbÙ`±­eUe]“™ë}5† ñ ¾ÞÔö}æ5Àã…$ÀÑïµÂ«ˆÈ´k³$Ï,wå)ѹÅÒnŠÓ„Ysó„GǾÕ"òM°<­äd ¤Ö÷GqÚÜ«ÛG;æ„ÖÛà/¨A…ñ\…æ(‰¡‰tz² #Uì&?e¡²Ý‹L^_ãßÕBÀ¯£=$x$ò•¸,Ûj§’¹jä#}çÑñ‘nþÔ\mˆõaÁjÅ'ØS êöoR±,îº[÷†7¹ò•]†miÇÿ‰K}š‚pbh/üF<—Ìð ~:UXÁ^ì8Ë9…hâuÄÅ@ï†È°à‡2׎‹ wÇ¡çn'­ qXu•¹` ÃÞ—ûãvŽ42U¤^ÞŸŠ£&æ æ¹Ýyc;t9}øñ747P6Ø×hÏJñ6×P»F¶ÙœDµY3¦%”‡%ݵ>i9"ËâÓ ]A¹Ö…(Ûõ¯íð¹}.ô ^À ÊäÄZK= nå#Î?Â>Ú8Ŧ\kñÿ÷za²"|¼N"Øj_­­‘-Ômƒ@! a<¥ãU£Êgã;¨žzì„'qÊñ߆c"„Èß:'>ƒÚ±AR¯~l{­ÞÐ#¸[Î}’F0Ñt9B÷»Ðº‘ÞÖi3aj“yܦ¥À¨Á㎤9QÖ÷mâ |jP2 endstream endobj 1454 0 obj << /Length1 1923 /Length2 13956 /Length3 0 /Length 15140 /Filter /FlateDecode >> stream xÚ÷PËòÆ \ƒ»-ÜÝ‚»wXÀÂ݃»»kp’@p÷àîÜÝå²åœ½Ïÿûªî-ªàýu÷ô<=Ó=UP(©2ˆ˜Ú%ìlX™y¢òªr,Ìff6FffVx 5³5ð?vx u £ÈΖ÷_¢Ž@#çw›˜‘ó{ ¼-@ÆÅÀÂ`áäeáâef°23óü'ÐΑ fä 2È3dìlNð¢vöŽ s ç÷}þó  6¡°ððpÑÿ¹ bt™Ùäœ-€6ï;šYTíL@@gÿIAÍoáìlÏËÄäææÆhdãÄhçh.HCp9[T€N@GW )à’ F6À¿Kc„§¨Y€œþr¨Ú™9»9ïk ÐÖé}‰‹­)Ðð¾;@UZ h´ý+Xî¯zÀ߇`adùoº¿Wÿ‘dûçb#;{#[­9À d (JÈ1:»;ÓŒlMÿ4²v²{_oäj²62~øSº@BD`ô^áßõ9™8‚ì@ÖÔÈôGš÷c·5µ³±Ú:;Áÿ¡O ä4y?w¦¿/×ÊÖÎÍÖë?d²55û£ S{¦Ï¶  ´Øß1ï&ølæ@g3337躛X0ý±š‡=ðO'Ëæ÷¾xÙÛÙÌÞË~™ßÿÀ{9¹ÎŽ.À/^ÿvü/Á³°LA&Îc 9ÈþŸìïf Ù_ü~ÿŽ w€ó{û±˜ÿøùï—Þ{‡™ÚÙZ{üþç3‰k¨kkiÑý]òŸ>Ù¹¼8Y ¬ÌV6×ûÇ—ÿÍ£dú[Ç¿ÖJÛšÙxþ’û~Nÿ‘ìúwPÿ= 4€ÿÍ¥`÷Þ¹@õ?®ËÌÁlòþ‹åÿs»ÿ¹äÿ_—ÿ‘åÿµÑÿ¯" kë?ýÔüÿøl@ÖG¼w®‹óûÈ۽ςíÿ Õþ5ºò@S‹ÍÿõJ;½Oƒˆ­ù{G3ð0²sþe9I€Ü¦J g‹¿šæ/ûç?ÆÍd T²sýñÀX˜™ÿï}ÆL¬Þ§÷ÎüÓ|¡ÿÝVÜÖÄÎôYcåà9:yÀ¿_õ;q¼XÞ‡Òèþg/˜míœß—ÞKü0³s„ÿã^99L"˜þ"ž÷fú/q±˜$ÿ!.“ü?Ä `Rø/q³˜Tþ!6“ê?Ä`Rû‡Þ÷ûü_âyÏiô½ç4þ‡Þµ˜ü—þ8&Óá»6à¿ð]€Ù?øþÁw=fÖÿ ~góá»@‹ÿ"û»@ {‹÷çwÛ¿Ò1s˜,ÿ…ï²ÿý]·Í?ø>LÿJõþ0Ùý ß•ÚÿSò{b;g 5ÐÌù¿V6ž¿­ Ô?kßu;þ ßE:ý ßsý;øý¤]þ…ïš]ÿ…ï[¸ýëøÞ5»ÿ ß5{ü‰ÿÓz&.ŽŽïÏðŸOÄ{_þ‡ÿ|ó@w  ü✠_å Öû|7†1Vv¤þˈkXmq\×=åQþ‡+¶‚È‘ΙÝȇ ´#ÖÒ·+M,f+ýuïôH^¬ÅºV(3ãßôÞhGNr.¬»²Ú†l¶¦æXg*ƒn×ÂÓ4Øô;³Y’ü”Uw•g0TõÇŒˆàcÑ‘08ÜÜlˆàAm"YmUŸ¾‹LÏ´K“;] $J<¤÷ ³rlõ/•Óm¦ã"ÙË^g ¦íwsâÉN¦)¶»Åqžâ¨®[ƒü©FT…Èø²¥·'.¥.O³5ëPÞ&cCäèQêx¨ômçZ4e1:Ù¶åûâå­"Ïî0¤Ø›lT g!ao?k5G ¯òZ„]9ë5@x³ýB8kîÂÖþXÍB¥P?µüMiljLD¾²”Á4Ç„\²¥Å_ù«L÷¨ÉvÀ.®êÖÐöœûœÐ@ð­Ë:\Ö TWHˆ”^¢PŸ‚„ÊNn%ÑmF#LÒ5쨦œð¨¯Õë@dXÏ5GNê–Õ5C“†¹#¡õöû´4L:Î%¹Ø9X3õ‹ô‚~×4øº±l©òÖ|Xú»¨A§Ë[ç¦åâÓ}‹«Ò`îãrºB3\ò{øJ}Æü(’o¶ˆü©;+_ñ®¼[~OŽ+"CE ǿٚí(R¹ÂØ—]xªÙ‰ÃŸË¾ÈÔŸ—]ÕÊú§ÓTÎ_^þG‘©3<i’áûØráJ«(ð_7!×BHrÚžÁWnè%M£°`ÅÍ$¿¨ÝîÔî“Àì³…Í­,¯!î©É\²8»fzUîõÑÂ\ FóN{®žT¾½˜ÖzU{ôaMKD=ë: efÝ ݯâ‘7ùFµ1uViºé«)2c2™¦S÷c^T,÷ÚËÚÔáÆÁî§I1nQ¡q§Ç5¢ûšÆ†=eƒ¬Rb÷à6ëbX¡ÎßVB›WñyžbKݨ©A Ê‘ÎqðbÖ!o­hÐ2íxÛþ9;*o6>8ÙžnÂ?Þô3 E–v[Ëdð"CpD6ÃXŸÙõqÚ´<8sdú…áÕÂô9_Tó¸óü£±bÕ"+&àƒì£à4Ê&ⸯrQΜ°"nç…°£zÅõbÝ^,û˜tD› g߂෋l«!DMÜÍj«~Aš‰gÃROÛQ =œ …U’p‡§£þ\ÕNŸ†Ñ¥;Ϊe/˜Î&¤KdŸ*A…•J,ŸÚÖçàè‰%ÌDw)K´nÀ"®q¼R‹“†¥w7tüž‰ üiÊ^\ *ÕZ$³ë’= ÏØGÈ+('êPdßÊEX ¤šïß ö3ãcäÕØÍlx­ýd’~–ÉW†P>¹zÛÃɵ·53µä­1c³x|n]÷¹mëÍ8ÊJAMëø)á¹á y÷œ”õ¹ýLÌ]ñ˜jÂîÊlKM† \qàCËé=Äö·2kúuq¹žÌ¢i¼ZæšPx=d†ÃGÃýŽÇal„P‡B›­\Só˜ä¹ä­•†W8߸cŒ ðέDÌ⵫¥Lå—õ…vu±ßT`ÀHÏèögáòÚ‹$GÉY_ü=ÕZQÏö;„d›?±Á4tb2½Q½"P]ÞÅ’¯«ž³ØÜ¸ìà…»ÔÍ¢ˆÐÊrûÀD¸£°~a2i´X’IØaË»z Zâi m;*›b!C‡¦h@®Î“™q8œ¾M–;”4s n;¥‹?",h!˜®E¿0©Bïzþ䣿 P +ÅA—ýŽÔù“öÛ°¤¯%5ÎÌ–Ä$”ë@³š·Œ^]k­Æ4ZâO÷®ŸÚ¿Ýk¡Šyð›(¾(÷¡:qÊºÕÆ§>9E‰á>Á=!œËKF‰¸SÛAŸÁX7§©Õεï«TÖû¡«/Ð÷J½%òwdB:Ùn e(c3^\¼Ø°Ä@jÅj_Ñpbu/Ú.}3þNer÷4ê&ê§y~K?}ÑçÅ=_>9e#î´'Èê@TøFW R†Zq¤‘$A› é ¡U*²·y“÷üA$B;+2îƒõjR”åŒ/ÑÖ¶¹{”ª€È°Bºg.ÒÚøMઠÌ#Y•ôÃ-®ÿ!°PÁg‰Êí5Þ‹á)æ7f# èò ¾ Ùò“6ެ6¢“ö ìÏkrLð´ø üÍŠuöãqŸ£‘f3—<8ÍÓ¼.g¦°ÀðyÃKŸ[« 0~‹³éN„[ÑKõê«ÀÕ¥‹csPÎ*ì?Ê´†mÙ¤‰I#Ã/i‡ôîfv?"^A°[­¢mZ§îâEÐÊæ*ñÉýàÎ’žoÌÞ¡ý1ȬÔ]¸8[¼éгÃt©„ ‡„'Ü"¬F≲%å¿5—b¿:f{»ç®´pwà!íZ÷]lPM¤õj¶ªD;Šl¼¤¹©ŽbD)ôðP¤â2üZ¼á%SnDÖ>^ê§`Õ>8&kÚF…h5–#¸xö½\ìñô*èi`:‚ÙÁ`+ðm,*õaXh&úÄÌ¥?"¨è%ìjǨãê÷¾sgY÷Ì·ä%èÔý”ñ7ô½H¿µ¨Æ\ªææ­g,uŽÍ]d˜4ÔŸu+×o÷Ac˜'rBPæ›Ô3ø©›ƒ„½y’ &×ÓÂ(Öà;‘2šíò¸CDb¶<&SsU;¸M­pZ½´†Çkã©ä÷ƒ<ˆÕ‹Ó³MMd®ß;¸úŰNŽosŽƒ8é,[,Ì‹• ½¤ŒÞ_øü™Ü$ˆÑê÷Ý „RÊØRS~om͹T/í\9œÎ`­ÛðVê±½êDï$é¬dE°ÚŸÐ±ó°æoó·?æš" ‹ÖnõlbøW˜ê[¤%wc™r qR-{æC¤=\~Ø/c?雕ÌòVOTdt:¬™<áÖ—¬a³âtx”ì㇫?×*-ú¹^n|Á­ÀíàîUâvÇl( ¸]$T »G(·î…8—Ц¢ºo‡²¹$”Ïsîq\–Âѱ‡”Üf_•µW¤óë}ŒK€»çÉ'‘‹‘XZÞ2.ˆ²ˆ8‘Û.^­Z0Ç€K°zw ¹¼s+s'óƒïðÙHû£„æO¬¯G© $ÑWâ<ô\ôrRx;Ö†q ‹§Ð_µw>%¸GFÍëé]ëäÍ9ÜÝ>ðÈDPbóŠI“L!Ó .áêú;O‘•M'zM™¿3¬±'"ݬݩµÛóžî Å©k.×4¡“ñ4ðq„Û>óì–löébð¶üêæ÷°c3;ëSTc‡ jCj‡:hOYÁVmTxîøh1ÍiÄŸí‰ãnÞ!Tƒ cöY" ÝB_R<Ÿ·ˆA,ˆ8Gm#]iòGg@U¦0ÜèÛ‚–©Ãì¡5Q¿8×Ü“°O…bDp#.c&‚±H º\¤Iý{2¨LÑy®¹~›!w ½©.¢ñ$|åÖ/Ô2ÏÂï£Ô¾€Šçgù€ >æLZÖƒ&ƒs¹…Y;úU+A‚Ÿæ .\YþF …ëË®wIIlZ"㼕½ñû^ÖZ–Õ.@¸_?˜Dyüíø*€c¬.×XF²°â¶ÔŸù‡M¿§lPx|ÿÂ$̓}½ßGòÉþl¸R*øQKÆó(i‚´‹HhƒoÈ ƒSdÑ%MÐÀ,áC9¹ÚÛ{q'Þ¥~/€5¡õô2c¶ÌÈWsÉšÞï´ëòÏáݳ—MþŽó•¹X(9YJ6$¹Y¹)ª‹rÜÑNc W$ú^4°çP¦ƒ ’°ƒkvLM¼î×Ì”öµRæö\äÞø$kȽWžŸˆÑ*“"•%0m<Šš*É<Åß_ A§Õ&󚵓Tô‚ú†,9UÝo eœ'«*93=ˆÈàÙÇ¢àYm¢Ô`Æà >¢ùö©ºtôÓWù‰iØÔ»ícF‘ž8Q«ž{s‹²àÃþíþ5m(ݹMâ@ÃrFZâü‹þªädÒø”èÄ $)ê7Ï3£ô¯.W=3Ùc˜£î×ýxåmÄç>ŽT»4Æ!­[âr½¡{á“×)hƒc£ˆ’ÄÍÎ=¢Vޏ“ͦjÚYŸ¿d3q/+ú"[g§’ÅÿÀL¿{sÃzD§óò(gT4²A­îp?›h†Æ·ÕŸX@/G^ФGS¼ã|žÃy;JÛ£Ú¦–[<úA×Å£èâ^Tbɸ‡õåªÊËÎj)góê˜Ïuൠ†7½Â6 ;î%s(˹®ˆuªØ¯f ÖþGÁØhÑØí¥”8Çíö::‰ÖE?›Ž“âbY ù˜”'5ïoM÷Lx&ñT*ìòß>?™mY'Ãòz„4ªb‹c-8[}š3cu›‡or®zŽ úŠ˜ñr0œ„}8:Ì'à«7y†ß³b#,­õ<šÅ¢’çÝ•Crô¼I$È4([îô…!ëQïr²@޶.î÷ɉ4ö´ÀÔuÔŠÀetõ"°EöàÑTUDF‘Vtɶ8á/Ïlù¥gÜ›ãÑ<ËÄPZ »·æEüOi˜ÍñÔlk"”ï0!ö$ßW¨rk†p»Ý/)6o©×Ilvß |aR+09­Ö܃ު—Û6<<åÏç=0#Ž÷d]Ûr|Ì–Öÿö‚¤žZŠåŽ¡›\-²D3eš`AkN¿lÓ9dAœ¹¥GçÒk¡ N"Ý….ª×Ì%²iu­bÍGô‘&©Zdpêî§Aû>Š“Ñ=Òº—8+ã]¤Ç" © ÝedA[ÈD7ý…ÓëÙy-IxÎ*ôõÖìLi@wêá(¡êê“·6mî”Ü AgÚ^ÍůDNu×—ùU½âœ X!W'úqûûÐúŒ^¨aÍ-¤.˜™ÿÓª÷nŠÛ µ°‰{ãcld£r€¶¢^N|¥è8ö2vF×Òéݶz!ZöPx¯ ñ.o°úšÒëÐÓ?sO;Âz7úïEÂ#ã\G¹à<Ý?ÓyÖËžq"eß8Ä8×¶Ížµ¸Ï—~³ÃK´™öR{Ј޶F>8¬wÎ7My €Uÿ2ÈŒƒíÀÄYo®è£éU¾@ˆ^c|3:ůGâ×8uo~÷*Ÿ˜Wç“è÷õ‘ óe•,>Ö¬C´jP>9^ íiI¹`Ñ‘bhCíâåõè¹”*”ElÄF{úÞhS>‘OãOq.¥©¸­tÞæn[/¤±úaq{ùûËʶ„7tïË\R¦Ïw‰A4R§DÔUìDé`ß^>ÞJ"çÔ&œ§‰xïIÁîþV¦ôf~çü¢Ñ†ÚŠež¯–?’¤¹Æï‘Pw¼ÜøÚå­ÐGÞBywè«¶ä+솆–Ì&pÐIh(._ºp7¹Šâúj[?ö¾¥‡ ՈקÛwz ¾ ²L²Sp~·XÒ`#$±ïÛ"ôÍÙÊþž0š yv€!³Lk¸6‰½”‚¦8¹óùû‚ººžçN:[ü9Žâ•Mz¥!†çoŽÚ•VH¡yžþ¶­ —pó@ìèÃŽ *jÂ×y3ë« Âb°(G'yæ´‰ví¨a|Ž@Ç»ÿÆæœÓ€$Œk2ikÕÔ^Ž9 ­d04ø¸|2¢[oE½?KÆLp:LE'“ždå¼’U53Ir~ÒuAy>vÁŸÊ‚¶ÁKÙcX—ƒ:® ›7Óãª_³6 åIÎöB¹GÍÖÑà„¯9±„Õì€.¸ ½ÖJ‡ wJ1¬I¢ENöÛˆˆ¸¡Ê*pÛQúe©ø •¾ mÚå×qƒ ŠãÚ˜ÅÀ/®¥2œÔ Þ}ñ›bŠª$õY/Ù§Úô¢«NŽE)ƒ~À3ÑÉ¡YåN®0’C0›-;!12š¥bòP t|u¥¾‚tu9]våÒZѯ ϼ€øÉŠ“¤ÏxÜ&;¾¸µÊ“æ__Ù¡š§<œ’oû²Ÿv–ªSäs§Ÿ÷Û".TÝ…QCJwûàVÔ~ÃÉèüqÚT,ÏwÈxF]ëö„ÒÉay(мϰű:‘!CZèš“s0à+:¸ NmÖ–åk³îö|“Hƒ¨¸^Sçìæ55u4qÍræœ ‡ÕãYÈÆ6>ÑcÕÿpïÝ]<Uç ½Ï„ªGMz4³üÆ ­_ߎí. „äf}»µæ ÷V"Ÿ<ø ë–(üŠ(Æfß;ˆ•‚ƒ@âJÎâ÷ö€ ®DÄ ¢¯så5ísÙŠÍhŠ5SB8 gVª6"ãÝÁíL|H\zžÍ´¨'ðbHh'µd+O™ Bwì)‡Â#C–v©zÄá_ìRßÒÈÓ䨲)z½!ÌÌ5Ú+Ū|.ÁýÖÉÚ#Ñ‹éåuW`fÔXÎP¿ ÄþøóAäXpiìÖfüÊÏf_dW0”¦×ZØ~ÛºîU#&1ãg¢×Ùn)Žsg )›j~Ü‹¼×†C §ƒæ8]ŽÒð‰ø•ÌËáÞËÚ¥‡ðLî÷;J`ƸŽUˆ­ea#V,ƒ‹ýáÐsØ:°P\ÍþÉD·Š0Bˆ‚‰ Ñ€R¶çJbéÖMKBήMD÷3˜ wpPβuÓÒ'U¶|Lˆ€ˆ¼ÁÌ·²µKÀÜUirI=qVyhòqáìS¥5_još±æ(” £þ©6$Âßú… õOh…é »Øk¢EÉèÖåùuð=6“í²JÚ&\44âæ Ìhß™U­–ºFš‘<ðT%Öë:êds§s®9‡ c„d"Q¸MÃó?žñõøFkŽj/(b²MI¹¹P¶ãÐ0£A”ПyçÃÖ8@쬴"ÿNJ<¼)µšrœ…åzR„È’®ÍDðäO?$ÀœRþÄÞ÷ìíÉUEvr2}~ƒ(Æ¥Ÿ ;h1ï-àÌc¯©Â´ŠÚ¨©T?8Iº;’taöQzÓ´#a¼OQýËw—lœÈ½öblºè{T§OÑà d§S“ØR#ºç&Ÿ„Y‹"X@‡ —𶬖Þ ¦á7ûüÚZÌu^ÄiÞ×'&kš¯†±ß½à‹¼tӋܾÂA8*kŠüÂjË’ûÔòSyó0,S#LaiÄÿ£Õ¤âï “¼ƒ¯ŽNbÙïN #¥‘Þ#„Ð<7úR'G#·¿¢ÍÁïÁðé¶7w%ǢѩC“`þÂs R(FžÂ‡‰× ÕÝ*{ÿ;î û¹´7¢Ð©3$U”åfEBB§hyž‚æ ºœt OG¡Žë~qkÎmM#>_r'ÄuIVýù¡¾ˆÉáhÕѸ(^X€óÀzX‚Æé×Y£ªm¬ÞæÚ[ïíÜp|I÷î|ts%‹O#[œF­’¹V1ú¶HG¼3…ä!cª@Ì‹šøHq3tÏ6þ -RoÃ.<ѯ ÷¥PÆ^!\ØSÕÜw+©­ûv¥…þÕÇ{¿Î£GxcO‡ Á?æËÛàÒ¦%t³¥•]xµI\0Æ$’2I%Ì u•\Yá±ÿžõwo“—á ýP’¼RkðØ d€>Jt˜DHj eXºbÃö$R@ÓÑP¥Ý&§Ú¥Ê'Ü»¡ilBºŸ$åÅÁ(JÚŒP±‰ô7f–ÉéEVü—>ø³Ô ŠT ‹=µþЬÆìQêsKc±œgvPˆ.ÃFдߢy#lJ´ËŽ®¬GÉøef^s³øÝ÷‰5¸u8–nX‰–îôðcÒFNþ$€8³"TÁì‘ÉËÜkrymîIˆ4ˆÒ„+íæN{6žþjÌ‚+4}†*{•Õ·½:îc?–\ì[„jrΫ½ƒ,ª²ÎK>ÙD<'Ú–0’èE=š¾˜†ûSïŸøvÛ³îf5íïÃi송íg?]s9W“çfÆV^üœ¿ºM ¢ºÄÖc¸»+é^1TÜb#|`sêqœšõ¾1•à±*tÔ(] ¸3i7OüiêHÏ· üÂÖÝ8´xž2G^{ùÎ U#tAâ¢ÿ€Ÿá÷ïV´©¨-®ÌÅôI&»ûÚÆ+cdAMj­ÿÇ÷NÞ»Áȱ ng› qÏZ&]ú¹J*ö{/E ôeµe™§Ð~F*œÕx†1æü¡y˜¼|ÓîÛÕ'üœ³ÁÁèÙMYµ–„+ ³ >¨Å6UŸ ÞQª[‘&½x7‰nd>3ÀwÔgÊ«.þâA‡m†Ãš;{A³ObP³·!:8_`K0+í@¸×oÝfÒ<VCû*²36È¿µZk›MÓDv%&î™Ñ?创†›€M7Kˬ-@Êæ9 ‰0™Žgâ—ÏRàWîX®0{0ñ÷ðdåë°Žk«ÖÑI~ý€\‹ö6>¦¿k‹p­†(¡5Àl!Ò9ÓËF÷¼v¢ì‘à‘a€Jú:ä†õx*cÒÛ{aEú„]–Í0«þ ²Ó%94;µÔí»(}(“‘¦ì»©ª®ƒÒd|½ž Q¼±?[¸|T¡ôÿÕsL‹^$#|g£7/{6kÂBÍP\-É#’ê\þsý­S±Róè{Ìg žrwïdZ.¾ PN ¨LøIí ªE<<Þݶq§Ô÷©ú4¤–ë᤹2hÇ‚OÔ8sXLç£èwô ¹`‹38èšÒh®øîÛ×½Ò“€Õ£^Öô>9Œ½]ƒ^2*ÝŸ EBkÍ«´Ñá ]ÇGyW”žl¶c{º¿ž ¢\ʽښPpÀñ†¦Ò6^â6T?ßäw-ÌdW æ}-|‹òƲáà%ÓšÛé)p¨½Ö—×Ö!µxR¯½t¬ò ekS³ =Æ%I«;ÕCc&9k³´¡™T?eO'Ú ©Ñ¿võªK“ ”ºCw?ü8ˆæ×cÛ "/=—'KRýñá«Ô4#Ë×ÐÌÆ*X»Ž¹^áѳ5R™SbD·n$y?¯¸KH‚FS³à{)úTOYbós†ÀéBúWËxœ•rÿÏ,òã.ÔkV{„üšû8´-^7ЃPŠÅ9 GãϺæ^^¶ÉúØ÷ØŒdÔ…<`ì¸0ñiu…"N[»w¦o,™½n8æj}YÊÎà¥g–n±ž“Û‹|Õ”®{/{í”›lÓ(‰Ô‚Öèýb¥1N®gj4;_ÊÐ’R¼Wc.tQlœ å¶#‚,ÅÈ48aúû'dfkêd6½ wKɳóñŸXàdt.:ŽsÂðÙ"P^¸Ì%ÙÈ“9-˜œžb3ªô3f²\áXŬÑÇúò,XmúB×x¹ ­èùP fÞ9ê!Cz"Zön¿+¥V}Dbãd(r¶Ë''·XqÔà¼$bu ¯P#ÆÀQÓÝ`@lT/N!þ¥F‹O•3Øð¤‰—óíÚòÅ”›eèÀJV[ŒÑ|úÓ«;m>WC˜h±±µhhÏà †>0<›Äà.ýI14”B@¾mªknŠÜÿ‘(­wøû'—ïaÑ(Å‹¯¦x÷Ó}m¯z”´Â,}E;›AÅìÔ`³ò±\-åœ×«„ý6—˜ÍUé¯On1ý³3*dÝÌ­ ˆzL±N}š¨öÛÓUâüS?€“%^ÎrÞgJC»ÙÞv¡½l–}`W¿!69(utµ[û[1ápÊhÒGW5‚¶­hiuBÂChҌȦs,>Í‘ñoЛ۵Œ4ûA$Ç*gã"WÙMj?Ì­3+•¬ƒn£A‡·e€4¥§“ Ëu‚¸oÍ;iØ¿­$LúÆŠµD:¶'\äýYPT»Ä­Ší‘ðàöÁYÜŒŒgÈ1M=/3-*R½±¥ÊÚo5™êLnê:'±»oeÅ—Ÿ}Ϲ0g&µd™%t´œ>ŸÆš*cŒÊx ôŽ©”WxhÛ$ã8§!2û² ×ÂjÜ÷ñ'VÜ ™gàîÇ ~/«rüí2*x“ÛoØ dG"Á¸M!{d¿”áÌT éî-Ó’ÔŸ†Ï/W5 ‰\ÝZ ¨)û¥é«vÂç9a«¬ü¡Ò®âùoÝ»®=øìÛÕ`³ WP;î?>ûFr0l]¬áxjDÑf XN‡Bi5—ØtAšçÎ2¬ÖHQñ¬’€¥‡,öÑŒ?e·äq)Fì”ÉQe•‹``•KŸÖQÃéEæú‚gK×Gt%• 3UÕÇæwBÉìI‰òè…ÅšTשҽVŠöãKÎ/¦ñ Ë}ð8A‘?Û‚<3À»ï{±«H8g `«/Â4µl°åÛâþZ º6¨ɼä•Á2‘±?v*Õ pnÐ>àùfÁ«‡d[<ù'5_AKŠd@j§Ã›NSåbøè«&µ´UÇ{í–Ð<…×üÞ4tD „¦¹2ûš ™Ò(ïUAßÒXê Ç3¼ZòÚb… °« ‚ö™¡iMÌ• ý&´7}ò«±Gxœ‘^I|£¹`eÉs§Þ«ß0гÀð¡d‹¤2ž¶JÚJBsg5[ú2Æ2«ž>ºMœ niþ—RÌæêtç ¨ÿ†ÐmÊš$Ƶ íØ½ãÅ%ñåW éŒe "qÌÝBž©¦¨[Ä!Ä¢_‘hijÅ(Œýì»z—ˆ³‰n9h­}F‘Ø¿lêˆ4xjÒzmª6:…_»Ñç[Ê“C©ÖGÙ3W˜cݰv°·ÐîÀ4gÂKøAÃáÂŒÒX¯¤¤¯·ŸJj£øc`õ1˜©ŒZH…ázÑÛ±wHgXøE »ß¨Y3í‡X¤øo’Ê.2椇¼ Ãļµ¢k/}UÑ?-Àoykúä…¥¥}H³/fÐè }¨d«$d¿æ]±Ä¿øŒÊB‚ä GnI;©¤%nýg…¢÷J3 ˜òÅV|SŒ½a*|@ãó”j“Ü4†Îì ¶Þéô»öí4å{? ÛìoCWU…’;¤ZQ·ÄISÏ#•„î º9:®ÃÄ‘ä`AP-÷\ЙF³ÛC®YÒsÈd<¥Æ’~¼pyšª Ï©·_ìMŠéj©‘ì q'YN"“¶ÀuR<‹•3Ë–é}1&M›‘ãu¹1û¦‘Ç\Ðú·üú±TéûÚ¸œ6uÒã–$m(z>A$ˆï÷ûÊ[‡G¥wGVãþ†øxq÷l“DZb ù¥¯ß”~èÛaÐ×–»¨L²æÁˆHd[ÄBÏwÆR1Þç«S°>uîYјd øJ€ùûÓÙrþ ZÙ¶µ¨t¿·ps4³Å¶QåI¨/)/sÐÙÄÉ„dWÆL³ˆŸ¶<¨šhD._£oÍË‹¡ÈZ¨4M»#™’æ0B¸‰é’ÉZ£ÓèL°f/q[dÕ+Ãè³ÙøM#³~fÀ‚uŒ¬™b2|Mióm:S¤å¾Àöé§ÆÇ˜˜¬êŠ=ò$N3}ÕO·7¹°œ ºÿeàtEüä ƒíxæ=|Ïš«‰{¯Ù;<|›ÅrÆÄîºã˜¨S»Ð§‰¶mR²¶?s»PÑ¡¹ãÁ³xÙ‹ËÉÎ>Òt²–MúMÜ 0@WT¢ípµ¶üÉÒmžR¦ö÷ê—6‹úw²ÎØTD¤¾îZ¬žC„#Œ&¾ƒ¡nªü4ñ«¥½¾Âû_Úìøš^‹eFæU×+ŽÊ*’‹áùj²£žž¤Ãò^½!T3jÙiÊIúüÀØ<Á÷sõ~ê|~Ë~AËã“kÓ«;6b—·56ùèÂÞo‚ÂÒPÓâ}Nbd½{’9e í r£½ÅÞ¬x¡Ã3me¨€ž;e?QS…J6‚•DåH¹vôÈ}TØFã®-ýéi¡9ÑeŠTÕ[K€Åœ­¯æ³ü¾è‹%!ÿ„“ŠO…a’†Î^·¯XO±¹Ú¬IÌɀƲzSfSJ¹³Eo^‰×^NÏÖ·S0{ÿ(î=ž]6{›EòÎþø¦£A¯…(pÿå˜ë/ÂAÌY~4&*‡­ÈZ/šrº¹h›¡Ôe¢]AÁeÚ¯ôñnW?øÚ:“o‡PRÛ±<£¹5 &Óz7A­t¬ùªä=[£Å˜+ä8,b曕-ÝÙƒÚÇœ[É&Pë?{_BªHäG¾‹Í¡a ¡ÌyXu.S)+u(¾xÍ›]çÇŠ ÿ&<36¡÷1Ðí òb«Úù–Ns5Mïf]#íêåF%&rƒRo3á±÷íW©@b÷ëInIÅRmÚö©KŠ’CâEÁþª;@4¸“yYê3¿šÑÕk°3¶…˜´OÍ“ÖØ²‰ÇåÒ²ï´Ï"¨>DÝ·¿þ2 ¹°C½2U¯@&Á˦xÜZuµ&Ÿ>ANîS@ª+åa\IõdûÄB;žÌÂö|1ƒ4nðƒ_/9-ßÞ}ŽÄÀn:»þÚíGïÁ±ypç J² ÞGÆ‘~L5ÉÌØ_ô@_wÓ—+G€Ž%kFvá.ÈRøwLux]>õ`,›S]BWé‚"².ø!—1´ö$wžÖ·˜ÅøvÊÑýèʆÈHùfh“l~]o¬7Ü,G^Ÿ»mªžgb F}8[cWÕ– mí—ëfp®~_§ØÕ²Û HúAq»ëN¤rìñݺGœËMð¯äê}üà!® E.ôµ5LĹûã5Øóˆ´-èxþBÔXãó¨­ê# ot¢ Ò/Yûz!êdµÊ=î ÆSèr‚¼,”êåV&ì°Þs¢í½‰¿û‡¨m Å%€ìÆP¸Kûõ¾Ø‹ò°$ŠL\#¼¹Œ3A }Ÿ~T檓Ì=BŽgsZÇäø7Cê’?Ù{Òi¨Ç¹oZ'Geë±’kþ,O` m²Á//ry5Ö&]ɳAûìô•°åp.ÀƒÚyW?¢>E-us[5Î]»A±¾³%Õ©*k–1Œ´ûìt8ÌõÑòá¹ YòÉœ ¾’ Õ7ò†¨Uœ<ýMí׎ïNT[C@Š%î„Vç’ÔgÂ/Hsúíwíá‰Î/ÂPà ¤w‡Ÿ i­ŽJgÓUtf ñºJïÔe'ˆ’’3½ÜƒI5‹éã7Ÿpý›ÈõQͶ3KñØüÙ ¿Bö„î~K¦(»Â¾ºïdh¤íT—` ,™\ÖUã’z?û¤]æËŠmT8ô>dsErÅ÷^'jÍýi^½˜|’Ïâ3Ø ¯=ó'4¯æ?ÜNGåå¤%ù娣ð®(uea­¼(ÛekûÈ·+ ‹#uBÔri·ÊF r¢^ÊÕÄÛlë¦Ô÷Úo-[æn¬É‘S±Í ‰Äµ«BŠe—±sõ™°r•l+[ˆêL qŸqëÖ?æú)MÉ>—”›¨Õm,«`^É}¨ÒL ¬ËOo‡úb; Ä—è>H§ŠŸ‚%·ÁDkèk(ËÌÐ<àc†=cXÀW6w‹¢ª¿$µÀº¹—æü\*”„䀛—JMÅ…÷ö˜5ºiBþ×\3cç‰%!ž“²!£s'›9[Ûz¾’¥³¾æÒ³pd*Y¶ù·H¹ä»Xy_ŠŸ £‘´ç0O”X;m"(:‚ d9GÇ‹s"6Iëièœ#:ÒK®Mæ!RfÙ~½<††R´a}ûzvø¢ÏJ9³r G‡¢—¹oHá)ÁxÅl¦߯-ÀgñC<ßÜ?Ÿ3…JÚꕦʅ\VeûÚ¾–{'@îÇ »ñ½û‰Š7}»ö a» 2vÊËpé /esSQ¾èõ§í¦­‚w>ª»È»‰ÐcÝÞ\€†¬ä휆4ãíöTÛýö<Ü~ýþ¸n'‡·?ï7°2çò+êb]ÜØ­£5x,IªëIÕÇ«ÂÞ“E¨¸ÈA/…¬Î„;>:ö Ye1I“ô«'™ÚÉQx ¯<ÎÉŠì „h0õqˆ2rZWHXOmͦZ@h2%ÃågáÛ}¢DCbç…:­6ñ‹ÎùÝÖÝè9ðûCˆØKIóT+¤êOå/9¹«C d~,gŸ[È‹o‹ë?Ë{y¯´¯Œ‡b0­ìPzÛK@èHrìÉ«¤`IbFsÈôÒaŠÝ!§ 1‡wû±ãÂÓ‚;¯‚ÙÖ—`6\a×]S44ver›û V[ïDS³»yÜ¢ ' ôXáE¬³¾ÞEqê5. |M¾“É2ZüJŽ]²¤!P ÑD“£¶ÊX¶ Zo¥]L©]H} ä…™…øçŠ8Ðçiæè¿Ø3¾îÉ eÓØ¹ ÚA@ַܱòwŒª@ÊŒC®±ÞlJ튈ð]zJÝ„phÒë_8/\A› °`]þcšôîø€¼È@o è~šÝ!•o5çê ߌÑ?)l*‰}bÈ(Ø€çðS…Ž/-‡ì'ÏæLÓ\öŠ-gYm­*Þ¬ÝÃð°¼v—×Þ£YeçU‹Þ ý,T3igë]h°8óóɇN|môQ|ž†(ö0ºN`kÃmØw|³äü•ûfé3B±¦4ˆSÉ.EÉðÙpãÿ2Ù© endstream endobj 1456 0 obj << /Length1 2573 /Length2 16439 /Length3 0 /Length 17920 /Filter /FlateDecode >> stream xÚŒweT”‹.ÝÝÍPÒÝÝÝÝÍÐÝÝ]Ò%Ýt£ˆ4H#Ò uǽÏٺϽ?îšµ˜yÞîLEQÔÂÉ (åäèÎÈÊÄÂWTWÐÐ`e°°°3±°°!PQiظÛs¨´€®n6NŽ|Ȉ»MÝA4 Sw¨¢“#@ÎÃÀÊ`åâcåæca°±°ðþWÐÉ• aêicPdÈ99ݨĜ}\m¬¬ÝAžþû@cN `åååføK êtµ17u(šº[@ÍMíêNæ6@wŸ™ °vwwæcföòòb2upcrrµ¢exÙ¸[Ô€n@WO àWÚ%Sà?É1!P4¬mÜþf©;Yº{™º ‚½9ÐÑ ¤äáht€üÔeÊÎ@Ç¿…þ`ü§<V&ÖÌýGû—!Ç¿”MÍÍœM}l­–6ö@€²”“»·;ÀÔÑâ— ©½›HßÔÓÔÆÞÔ $ðWð¦)QU€)(ÇÿdèfîjãìîÆäfcÿ+Kæ_f@…–t´wrp:º»!üŠOÂÆhª¼ó?-¶stòrôû-m-,¥báá̬éhã┕øˆ„ð›ftp²°°ð€ t½Í­™9ÑðqþÅdýEåàçìä °¥ °±‚¾üÜL=wW`€ßŸŒ#VV€…¹;À heãˆðÛ:ˆ ´üƒ¦ÀÕÆ ÏBV˯Ï?¿ Asfáähïó[ü¯F3«ëÊKHjÒÿ“ô?l11'o€# €‘ÀÅÊ àâåüÛŠ©ÍùCUÖÑÒ Àûw¼ Bý7fÏÿ Íö„ðo[JN h~Ï» '‹9èëÿ÷Ôÿ¥òÿö_Vþ?æýc’ò°·ÿK‚æ¿"ÿ—„©ƒ½Ïd@#ìáZE'ÐR8þ¯¨6ðï-VZØx8ü/WÖÝ´¢ŽV Ñfäeâàú›lã&eã ´P±q7·þkLþ&kþZ;{G Š“›Í¯S`deaùh×Ìí@çÄ 4±€ Uú·WIGs'‹_;ÇÆÉ0uu5õA` ''À´œ@ï¿æÀÌäèäR€2 X:¹"üj-'€YôéoÄ`û¸Ìâ¿€Yâ7â0Kþƒ¸YÌR¿€Yæ7b0ËþF  ¿ȃâoò ôâÙTùX̪¿ȃÚoò þq˜5~#M/ÈŸéoâ™ýF ›f¦ævnö¦nÖÿPYÙ@ÆÍ\MÍö@K÷?Èœÿ!ÿ=èÿaý›ltÿ—¥•KH-žM²uÝÊ&(:{ MÍÓ…ó-"eÙÂ[z…œ”YË|OôÍç®: æš“¡9/À˜ý`3;aB±U '€Y$K%¾¤;eu$!ÚÙ~Š÷jŸ¼'Å•ldÜ‚¯û´6ì¾…‚0¬!§Us€~d@„v…T–èŸ3‘7Õ/!:󧟦É?”ß^Ä ””ÒÐçéaí4õNÛ¥^.Yà3ÿ<ëi¨wÑ_»_ïÙ<¥8ÃJŸ\¥ã{:ÓDâ9Ån*Z‡ÿÒM)˜‚&j8½~€?_LòórNŽX÷  Ûæ0ºug@ƒõäìipN< S¯ìµZt‚ƧJ¨Ñ<³^xÿaÊb•úù’>–ÅúsÌšNX&É—)ª–ô»„ìe/—Í& êä³Uð2©Èó¢)œZ8d”V&ÉŽÓ‹øfÂÊDÁœ›Ëç»û²EM+sb^¼qc;ã±XÊÍÃí}kÓÐZ7¹*(õ²†ÇN‚éhæ5o™ çæG˜ð©ðÔ™,æí݆(³úúr8PX^ιÉHjÆi£oË#1ö¶|­0=Ø9Ï{È­8œùS4S]‚Íïš®ƒö2ëa*ü 9ñàëÛOŸÀ˜¥Óùôô¨5~ªŠ+²¡úÁäf–A)¿Ëåv¶)Jªv‡£éB±ë% ¡UdB1¼ïoVÓ5š{c»é]ñÃ0ãq^Iü¶çnÏ€¨¾˜[ÅçЯíô]#øäâõWz÷Lì,“àt®P€gúÁ —/“hØB²L¥E#xBŒ6^¯g1~$PÜøÔ\¨UsWTRö®Åæ>òP. f€AÈÄéEÊâ³Î& ŒïSuµZ\¬/%^ZȲ¢&Æ[yéA/«ˆªv"Šf i±[öe× §RÜKq'TlšÊR kŠûF¡ö·A]饡ðšK+°jßWàÃÀÞ±R  £áÆIhúœ7úN¯Vtñy_6ï‡Z¶³”׺³+¼ñ³s)KV8háÆgtœ0ùŠÒ,`AA% ý\ò4×9|û ‚¡¥™8ÅDâ©¡ÿqÿ¼:aKV¥ør“¦$AÅŠTxå¹rgÝZNŠã´©E Ê%é$Sõ=OI¬ïÝ×Go’’—ÇÖ=_˜ç¼ŠbÅ.FB£0[“ã¾âÏÛô†wœyÞ<úÔg Ÿj6î‚¡YÜ®?}÷·wî#ŠNÁóQ ]ÍìÏñEOïõ”@y7·•"¥cozXˆ“zÒ×¥69t1jK¢aÅ 2+ž4–Èh<'÷QŸÍñ1.¿[Ë¢“%cq2áÛ‡½|Ó «†®ê#^+³ç•¾IÎŒ[T­¡dÖƒf‘¬aošERàËT“_,+" e4ÓÔgÜ]éÞJÀÑ(ÝËæFÚó´¦ð"ŽZË›z|ÂÁtVQ÷ýмT´Ÿ’w¦@-Ù36y]²·ßnD#$¬§ ¤½ÅzŽK€x,Ðt‡ÅeÒÖ8¿Uèá bÐÇY”-–ŠÀÀ1[5RŠú@›#‰³[Ŝffä'A®BÌä>öÓjC XݲnÅU4ÎH ‡ËÕτܡÃç¡”,ÄK/!õOgJâ14s¥s``ŸrY|¯BÎKg2bgúõÅlŸ4J™š:ºù°Ë„¼Þ=Èô‘I*ærÇw\çSµœ/ ‰Ùï3eö/зsôAM¾Á¼xíõìbû¸ €ÐJ´Ja6þ¤mz±h§Ý1uÔŽ¬0ª„`(™éŸv\:៕#ùÔ©¡2nĶH—=}j¼?‡V,ÞãL…ýÞ¬tÊôoˆ’ºÙÓûYí¹ šÇX­ý›£H#KPô“‡£$YäU“ÏŒó–w¿,'9c¹™áŠO¿à]©³ášYâ’<ä º¯¢²™&ŠItcØš3‹»©x§úüålÃ;먜zÆtÈï.‰ºBSAƒ?6Ø#ôÁürð1Ï_¶ n[ÜÒœ½ÿœ ÷L]_<'ßħsÕoY"¤qÜqŸY…´¨UFé´£|UÎÖ gNöІþÆŸ>Îû!Dòz|ª¿.á#v³\Eñ-oHm KéÂJëg×KUÃ}VßßÜ"ð%åi¼,ÒAºüɾܼÄk!ò´M Áz¶‡f¼š K’!dÛ•k`Ô.ˆx×S0Û{hGʃ®Èܺ¤ ýõY6Ÿè3˜#Ýc–%·ÛP‹ÐtÐ+ƒÇIŠS-×cš!rc(–ò…ãµ¹Þ±ÏU&)~2„UA9~‰HÀCa0ÄS'Ç?L©Fû3%ÄÄÞB qM¸³z.âßyŽn²9ÆßfBÐ.&4—mqŬ3u®UŽðlðöô¹ôN#ÕµýäŠh"I®úZ+ç©Ùã³4´=Á-Üœ]»Ã¿°ÆìÞÙˆü~ýÔ‰qøõ›¡º;ƒEßRÒšç®xÒ;òO9+«±›Më­€|í]¹ü#âR~õ)ö‡6Øö`‹”¨€¹Z±oØáóoüÐLy¾MQYx_…°ù3@’HŸöÓîtáȬyWh"~ä`jõ×ã¤Ô7±á}&¶gÂFÜ„žõÃÅÌ“Yø®†ò€x>N›p8͘w‹àäÖõí…>EƘc²¦r¸‰Áz pÜ[Òç5NßÚÈØÀ…Ú¬¦ôCF§TÚÍ:aÒ·Ñ)Ž$t9Xi2äתo5*ÙfUjl·¡ü'y5ýyôð¤ùËE± ëú謑Ìx¶?jTQéKv~Î.©ê˜+º#fB '[²q³s#h³'Cd±XíTœ"ß_ÅXÌ J×d‹qĤÍ}á Ñ0ƒ¹êZƒ¥/Ó_+NïUJ#J´ákß»™}eâÜ& íÖ;â¢ÕdÜ„ü1ÝǜѮ÷]‰®DùTÎ^óVúã f´á¦óѳ» wâÎXD¤ÏMa¦òôI|Õ8RǧkD)àßxmCDTâ âÌrh¡¸Z7Ë#gÒrÓµú Œó} À]IäÙÓõÐ>o_=d…`:¾Ä“wHZlD‚ÙÓÁ™›Ì¾7K¼Ÿ€hD<$[kÈÎ,˜—–讑!‰J=!ˆÃJßeç¯ pfÞ\óEÿžà&ãI¯€ä\Dã¬ëÅf¾ìgºA·oÑÃ}¹ÅÞL@†×~e-ÿ„öM"*œÂû«d;j:Ô¬nd]2û‡ Ðßý>A0Uxæ*µ8íÖ̘'Õü§e°Î¦ Wjåï/8ª¤½¦Ä/JS¹G‡~[sºž³`gi‰0JTÍ$d‘ ˜"Ùýs8v…5jF6rœ¼ŽÆ/Aú­kßÖ»ÊhŽX¥z?§Nž¡Ÿ ¥ê£|%ð‘‡Ns@VËÉ}7Måƒê•Èݪ‡Ñ™M˜ƒ¯Ðå;Û‚4†Ä÷âž¼êþdœÝïÝ+»‡˜Æ“:\œŒ¨Ž{æ• ÅÝãñ­ñXx,"¤ðìîÚ7ÙÍB¿Sª9úUó „£i†ÊeZ-aÖä³ÞxØ’ˆo‰=ŠE_§åxqæeÛˆVïVÀweŸ¥u¾ ×=óª­ a™×k¬(FÌy(ÂèDpöG >ÛÝLÓg(]Ûä³½’R€˜ I¡–GˆÔ’åb}s šÅdÐXã6Ã]¿U$»xûøàǼ,ìÅR­U™…÷?ÚÖ¿¢Olà»]/1&ׯÛKR®ß´;uÝ{جL6´cq³¿Ûì­YàŠÕýÞ¾—ÂÎ$‚þÜIR“B´e­_6‰ ?ÀƵޱ‘öEañB×ü!žé¦†Ñ€Íbûrn§Â+k‹–Æ#y%Œñ __Íø¥Û{1ÿºé@¿+ùú1ú°¸6Š'äÍ?ǘ²©”Ȥ}b\Òs‘,¤<}‰~+dŽL†â9;& ñRˆ;ßbÿòE¼êP<â# ]€Â³nü à(ûQës™àÍ[ö™õf5mGí=ügTñX[0ò“]Ò•eš­jÉJK¤¯›ü Ö›éºÀ£²ÄQ­½@µÄŒðNÕÓË3'î¯×=« ‹nN¸4)› CÖÞø–|%ÛGÛ-ô3 Ó¹äu¹ŽR¡Äö:¦pýJl»ä3‰íÐðJ·HnXtÒ¯Å,Mì"ä4õ¥“—hæ¡‚ÃçÆkÁw}mn.²tYP>ÀÀ–L2€öáRÆrëK9ÝZó3p¹˜ÿ’â*Ψ×è™Ïsˆr™JO¨xá)Ÿpï |-jï‘]½™RCÒØšàêB£¨Ú6rø&˜Ïµã>û>ŠŽQ6QI·!%Ûª6ØjbÝøjx óµhákX£ÄÒÌæœ²ô„`¶&ÔÒ¨è3 ÞŽæ·&"îzÛùȱítãð›ö_¸3ŠÁFÞµ³÷žEÌ0“ŠÅæB5ãb¨|ëwçŸTqvãÌŸ&#p7§Š{ lU«hŒˆ-^>=B°òoÑì³XáY¿¾M «µ‰m³rBáÇp¥õŒwy ¦6ïHÈËO»}ÿ<ºòÐÀeÒÂã×67¯gÓoá¶]g¥'àk”‰!ßÇöÞžþp§Àee%š«}3ðÅà†0—uSçç8AÖYˆõ³5ÃÅîż’ðóëSŽ&耥’REpï ¢ÿ3ÁÚšóוÓêæ‡[n%|r„²SqIy‡霘>©Ïz€IïÈGÜðEOžþFo;´l¿„£”-ëiÚÆÒ.1Æ÷fü2tÕøz-å\í¹Sq_yÖ˜*w8ž_x²æˆû?¢ßkouŠZ‹à{5̳[f´PÂ)`ìýâg-*+Ø0^̯(sA¥ÏË(d)Gì9'ÓZð¾LXt“lJeX{AŸÖ?ßã¹í= ›$uìe{o^²vdQಮª…’g?kÎï«Y â²-\´{`q ñâF\H[ùä›WG\ö§†úÎ>ζ3¥Î"9¨Ù%²Žê“ÔÍcÇ÷3³’{‹÷àØGM¢½'„Ro€o/;2R7ÖÜRàÖàdL{¯”tç·á(Ã-NìER‘Où¤8ׯ„Û·Süu¯„äòÁ›¼5´µ9µŸŽV}£ÅïwíÀ\Èݧóý„—ªðåÁ‘Ú“ÁÆb'x  „ H³È%SémÅÈdï8«'D>})·ðo‹ýÀe`à/ôâz›†Ûª‹¨Úw\÷“ÓfMû°©¶îWϵGÑý2 ¬¼¸k²?ûîMI;ɆH5~1¢›JaBäXFXÑÚØAÕ´×H'óš넃'Ó´÷þ¨ßwc'Ÿ5#&"“$J¡îeÊ€ì-·«‡i¥‰Îó{⌓ÌÙNBÈ|&Ëä1Gü—‹}Ÿ…jÀiE¢€#Ú÷äÏPÌg—†Û× nA4ÌuÀ¢·ƒß¾Ãú%éç n•¨%.l®¯0bú#îfZô2G߸£DlXˆàäµÿØR²:Ÿé'EZ}»u$\;5Ùè¤Mä…á2”õM*.иăÝ÷³ÀËÜ%¬P\¯ñ$õRĺr4õ2€(í>V…ÆÐ12¤–bMb »Î€AŠsH_LúþJ]¯TaÀÏÁµ·ëÜTH¬¡œF£1žC!; &.šù ·Ëš0ÕýIÁ<"¯ UðàÍzƃ˜x1°}î&Ü­Þ<´ÏoN)8¹P¢p-pH„;ÉkˆÉ½°·D {MdoV´¾±ØÍ@ÃJYeÞKG¨*Š!:õ=[î ¿/O¿âW0”ªcU1$ýyµ8lë@ueßH¡^f°0U Âj@'RL; èZ®k”¤ïn@ìE^¨ˆöFGä .Pq±QeèàêuO²sf°¯&¦ÎdEÝôù¼×ws?Tî@Ot;ÜdáT´Ûí;XtŽèí½]|™Ä³_P«u%~Õ7g9«rT•{^Ñ£6X𙤂ÛÞ¡‰œµæ¢¦òWmâíí~- t|KBgƒ ÷竽†RãœpGוƹ” †}aï?ÌŸ±¶žÝŠ• ðîãî#-D’­«ƒ)÷¸øQF¶·Âïèµ¥Ãò¼î•.¥AÃh¡zÇÆ÷v~·Ø‚…ÏNBªÚ~éX#å&L(O›°-ÓvÝ×rÍwêù)uçå'#Ž%E¢£ÍƒÐU|Ja’-Ó©A ²z¿püÁeTŽà^ÏðÍ©g¼oJÜ pUA†-Žõ}î®ß{0Ãi¤ÐPã+úD¦m¾Éê`²gØ+K¸R,NNx„aQßѲðO¨B ëÈ×êßxRb ÎéÙ›US8&ñ­Ìý ÞÖ¨/^2ˆ"¸ MÿÔ‚Gz¬ÿQ»r5 ©ô°*±Ï7bª9üCjHi¥þÉùØ«>íݤæÏsÃï1# =ñï’8N|ÒVø¦ù)=À{¾…!•:M7}9écÅá¯T±é‘fÖôhä:µú>­-«)cóbnRýÆ×# ®Ûà%LvÐØG>ÝŒá!8{êÈÂvgg3dÇ›2½^Ïb÷ë5 {74¿.bàÚJ¦Å­cjèU‡í¢ê=øjLviõ޹®l&Šv[tÞ ì]èòš–1ϸ´Ö5r…€=rWj³^üt³¦åÆy­±‚vÎ)Fö»®÷>¸jÙR°ëÕÃX¬› )|‰n¦zlE8"ËOéïû .çÉʨÞð|SØ.ʧ…n¨Â!µ~b‰„ÃZÜF|ìÇ–že"ß)Ò| ÌCò KÔ±X‰Ü)D=ЪÈá1ã–|ZõbßĘI.Û–,+þ,™ÑGEÐÆßp)v×?>æÃ]*ŒMUÚÝÈTqZTVVŸáé°bÿ6¨+Íæ±,nÁÁ0+ûŠ'gèü ¼ +DÐzl\ ÄùçÓ7nSÇK  Õ2²ÊÛ0´‡uá‰9f»w7¹(=>2¬E,“ÏÆÁ~Ú¸žË=¹R¤Èn±F=DªCK;Gx_¯”8£‰vyk%—jlRžvèmÒq$=c¦gpIV¯½‡:p.­(ã]ä ~íØûß̼7¬PmË8eæ{«ÎÞõðt×W [yÙÁÊ䢴w‘®øjÚ–7î÷8¾áæÉÙÞo'ôþÔ‘zò€ô«ÃCÒªÏÛbD]áK§¶®nú÷æmŽUѽio¯säžQ°·y<”¨lS>xSo7­xF%£µÏö°o¶Ò–[¾mÌE̹F ~å·ùÄ>Ôvìò·Ÿp*hWK´ ¬w˰x)'ªèÁT;gß³Xi6ÃTšÎs§Ì D›lux‡©ìÎ^¶S•V zÞϼ·Ë¤^u-+‰‡.Í öމŽgNåÞ©„†«ßLNu|ôl™)œ¼æªêÛÕ¸†o>G›ØNéUC¼ +…òdÇwÄ£¸€÷¥8ã_Á“*)nŒ64%Æ¡ÖRzì’TqÞwjë ˆT™‚QÔ4FÈU(ÎKÔ/£×ÝÆ_߆ÌTaÉ4ß_Qô£=oTÀ+æ‹ù¥éö$¸æŒжIeÊ é^aàÖ9ŸÒ×4>ûdG1I€0Ó—]æÙ%äÏèW6›ü‘€Z¯ÎÍ¿hþ›ÈÞ÷ʤ‹Ÿ]wÆ>ך9í,ú®6®Š½’>6ÏWœšuºÞœdE‹ÛÂ]0 Â. ~ó€BåwèÔsà_†º‰ô|a8ƒs}”¢wc¥“Þj«ªïoöeRÈâs­¼X Ró‹CbÒ®èS`O›.‹5 .a'jâ¤R¸…C¸ [S4ò„Gmë—µëS·ô‰ØSœŽn†ê|Ã`ı˶¦D¾&¦û§Bß>.ÆË÷¹È™›8aækåkÖìI&†æÁš@TZ¨ëÏ[N º¾õ·}?©lᄤ‡²Ë$h¿]'÷~Ð{“¨ƒ·ÝÊüR¥,V¾cú\˜3o´„3@R˜o.§¡$Œ…Ã–Û ïËÍÓJž9ßb÷‚:uCÅ+ØãxÑýÆ?‚‚Y¸D'¯’Ù§”FaðNà°2è}¶—{Zó.Ëfe†Q!sÝË™Í\<‰2¯ÓϯìSÌEô9f‹Ð¼:æÜUþÉyŽ=?ì¸b“,ÖÖýF}̿ؽŸˆ—¬ž¥a@r^!¼+ÂÓI÷a­;ÇÀ¿Bú³®âþÜö™¸…°Gêv7IÖÏŸ¸:zÐŽÐjLn2†ï×W.S.¡ÓñÈZä“ßã¶pTÊ×5ó“ûlµ×€ÚQwãJ>RJÖD¾µ§£â¬X6] x±ÅWIáWˆ3[s÷ÙÃÙl›z¯wš=pÅNÉ?˜$ ´ž\óTÈÊ3tJ2ŠÔÌb ©vÛ4ýˆØJ²šó£ç®Ûó¹ø:{Ú•¹´®,Ï¿º1ÀyT@^¦n®òCö‰(¡ruÞ•þÇÀ`Œ >þ¥:˜®BkÖ µz  ß×óÃdœ`ß*5²]kEƒ %º8‹òB´=w–/P0Él(f{â'À£J§ÿ!å`(/…éDƒ¨|£/¹ó©Q\&ϲ=ïsDíŠxb–¾sddÏëƒÕšSÛ+MûÑ]j?mÇ8ý¬×ïéFþ±)бïÈ#—tÍ«…“­\LÉO3©S†«\ŽÊI뛽´^4 èT–uòÈœz·j:bjë¾t Ôj¯ ³ÔÒåL-²Ïí£Ó$ÜQ;=Õè¢_vå¹qOå¹õw´¶ÑĶk×2–ú"Sù!ðùƒÒ1Y©dâ¨Çm® +£²ã*}h1U î;?g•»µ“*Õ6BåW*õWMHbT-'Nþ'R|/]d3(³SƆ>30Â÷` íé’µ¢ÖDÙoõFœö­­.©d›…“¼?"gÒá/¨²~|OпÊ.DaÑ%±•™¾îA{¨ÿAGUŠ<-ú¸ï@Z¸/ˆë`¿åóå0Ôf×™q?LㇽU ÄC#Řòvƒªë K¥ä¶Z6ʤH#÷ÂÎËN rŠ%: «ä)ñmÕçV_ÍÂ'Ä剀ž‹s'™ª’Ó0®<Ë™<¤þðíŸ0xˆÊB¥±íì (:Ú)M²å.B”eË×|´Ö#ŸI"Ðð?!M:)ïì~ÝÖ¹¨«ÅݨƉ.¬MCl)*î‹°V·>5ã—)[X쳈 }« ܽ|FçÉF¯%‚Ù´ŽŒ´Z]%€…tÈ÷Ãõ(Q¥Ì;qPV'ímÛ[xõMX•Ø¥þkHÖê w‚=¯¦"¼¸›È3²Ú1EÈd0Á=Ž3f¡CE½[ü9¸©Ä…Öy\këNTkì·b]sK¬Ï ˆL•Ët)ciµF‰cÛ1Æ_6–ˆÚpß•*f’$0]y§BGËþÌ}#+tŒˆ›c¯“°í{«?õ0õå„AÓÄ®¡¿CÊüzå!ÉÆ¦£Së}ïj×h´:š[ñ–ùËHS˜rÑfËUÉsý(f*#æ´º%œýgR5ÈÖœŒã7™îÕÛ#"þ,s7s‹}'â0Ö{9þ WuàaUÜŸã¼–Én†°+nrˆ¶‡!½÷¨Aÿ §üìîÑ‹+~w. Ùj$ë–ÖÅ ŒŒþ‚”tî;÷†<RS•®¯Õ\º‡Vå‚w›/.jé£1gÃð’<'b]Çú¶|uj äRS/ÜR)s4ÙnJB™F]N™Ü»A¸:5D7?]—¦÷‡§ý)C„OV…^ÞNðÄï”o_•:;xÏØlzÐ\$%ZSÆ*mȱZí/JÔáyã§ m,©’QG¶Á‰!lqvT¸µ™q±4c!oyNÆœ»‚ë. QHËïÑ&‹àxBt)æXƾEçY>^  ñ,mšjAö"öx>º÷bÅ|š§Ì Ì*û^W¢sÚ5Àæ·—[ÙÀ—pS‡zY ìur*x³§ D.–#‘Jn¾0kµ]rSW³¯iÎ4ØPÈ˼ŒTXÕ€Ôì6}ƒÈWœY{ ŧ$"ûNÐÐ_«pžtþ`Í+0Q´PžÖ.š¤þ´WÒTV¾ìT@N&«eÏ`èÙ:ÑŽãBmgµÜ3Z×®ÙdFý¼Œe/*¡YlÅ%VŒ²ÛÂv{ àKh‹ô¿ùŒühÕµjÞÈÿyè{H ú'gò>Öi7ä4$„§™¬Ÿé—ÅŸyØÃ±T§MŸÕ +ç8¤sÁÌýÂû©Ü†“$¡?j[›Þ¹¸áªkÙ±(¦Á¸©"ÜÓ‡"¾aVçùncº}[ñn|j†'Ѻ!= o¨v ú–#¡Žš‘|'hp5wëÖ<:ö1GÒs¨{º²®ž4B^b=ƒHk[Í×1 ·Ý]J¼[9<©G+ÝwGn6…Nðì;|üäT­ÅÝœÇú/Ïýðq¤|mAv>²Éæ#ïÍÅ6Ø1Þiµ:~JáÞÞþNDPq¡léoDb¼ÞjhBø•œ›ÄˆO¥×½~ÝÐ’‰*Œâ†w\už®¶pU:1>ÙéB‘z!t¼2"gÀ„§k{§WJn`á[ž"ìûŸx´=ß3§ JÔ§T0ª)×ỦPG®f5ƒØ#(·×*¨–äf«~ˆy”Ê×ÿdŠ5®ù9¼ýˆÁ§S:øÍáû`æ!,}1…–&Ô[˜¦ò„­E¨BÜà‰”®yŽç~z¬šÓUµz¸Šmµí|i'’ Õ˃l¢*!–¯‡³e¤•(ŠYĈ:ädË÷å}ÇZz'IÜäì‹ýhK ÕÑͬèÌLý ªæ;évß÷8Ñ2T…ŠPâ>{,b4AèÅ»•©˜”G–ñ°^Ú@«îíbK‹7Ý ù@+ðåï&’ Æ7YŽ"õÅì þhò쉪.-%šUw¯z†Ì>+Bâxdt°î"ϸwÑK^EÚ÷Q¹µ¹$ovÇ£Û?é鼉¸âêûê©‘½”.ðnk-á>ñ6Ðþ§ÊœçÐŽyÀ›tßSÉ` }¸]Wk ØÐÇ#Kêj²¾ü6éííÆ>&òêSþ¤z͉§Öå7z'®àÝV{œbãA T` {€Ó-ÿÜ«-7¨â"QoȬ'ggõi2¿°2‰Ë¼«äÁÁ|¹ðÍ×a}P&wí§VÇyÞ ˆ‚÷Ùš5µ‘ë~Ú}ÏË»C¥ÂÀú —4ž§Œ·z"h•$:¿g,5ü:+—[Ùˆ¢fKE£…õ®Ä'ålÙ´âN xq~-•&ˆðV±ìË}MA¹Öȉ!M4\´ÓÇb’ +{lêÏ3~Ȱ°{-'Yý=†¢5ê‹öQ«:!–CUO²%¬ØÇÈŸ*°’TŒÀ3—ÛJÞf>²˜SL£à æÔgE©A¯¹,Þ¤kæ°‰†Ÿç9;²:{¼š6Ê2ñ§ó;òOYo™(/?žj™zc¦Ü÷Š[ŽnÓˆÖ(±“¿|Ûª³”jô‰Å‚9#ʦŒ+e—¯@ÀOþBœ ïoè8… b­™[ „ .¡;O¼ñ.ÜV¡ëGÞr¾þvüîÐbì û+d`µ×è Ÿ‚ÙEh”êŒç7ÞžX’õG‹‡(0Aü½nÖÎ7Í}@TIìyVm³î‡@btbÇ/¨ Çw)ÍqÙ§;ìgË?¿½KÁúÚ·ï¿Ö>ŒUñ0RnAoh¢SœWuè)¹èz=õrù«nËó2#^¶S\—r¨à4Ð?KEeZçáFµ¢i¶¨\“¶»Å1a_ôx£ º·)уnÓc7ûÏL‚t'“'‹?./™/é6#è9 æ ¯º@6¨ xàü—†Åœš"ØŠ¦O¨¬ì"'§ô}0´ÈëGfĤø.[Y›M’l›î¼Çì i)~ Êìá §|­þÀD.Ýí`{à“›DG‘BðíŠÕà» –˜ÿµ0æ’Õ[ð=n£3ï FØ`…ÈóÐ0ù`ίUÆ—~¯·ŽpmëÕ–Æo³\ÏkÀGD¾]Ä#$ųõ•E‹þÜ„É]TˆEÙ©-¶Ê}d‡—ß³í ‰ã’Z|1S&"8;uÜ·7§ß lnDÙ+ã<Ò«U9NÖߺqtå[œçAÓÝaˆ°(æMÐõIâ%L MCó4ò¨¨ƒp/ƒcÂ2ñÕlÖÒ Y“œ"€Rrï,‰>†»¶Þ²¦5mkhnæ¤ËBî5ÿuZº¨—]wëÍò^}óØ’AšÛúUcjèuRjU+è4+ðïàÌK"¿Üg©tö–MàÝ„išüÜÄbVZ±M{;%X4“<,üv‚.±å¶ÙwàäüœÎ…¦[ð^ „èÜØ@4rÔL6ºé¥l®mŸöñ}î9 ¶ ÊߢÖnÕWÆÌ¶àºM:!¦Ô'T!‡ ö´‹uÀù’:š+#Åò €Á˜ûW_G-œ1œF£¾ü\Ÿ¼%ûÉkeï.ß\èÚ—ZSF6SƒN@ÿC"ñƒWã¡Å³ꜘŸou°œ/z=Êßý”¯Éb.¾hví+ÓëØ ­¤VûU3’š;¬Ô™Ñ‹}ìPm*Ïbß7Y‡è{í¯¨¾ÎÅk2_Î%ìe'«öÉ«Ì7ÑgQLÉÆî(>}9¥#‰’åJQÈ~[#ïžÊV×ÜŒ¸r¿M~NÃÖ¼{o}yÔ77É7½Q²þ|óìTä+·.Qó³6Øë}YB¡ ½n‚Œ2§mð4©ì+óí(E=€#”Á²õôܵ֘tK-F`WYTuà?&³Ò\ßÉœ˜6׳Áy“žQ~u‡iùõ,þ|²¬ J'îQÂààRnp¯€äNÛŽlk®×-cD›ªåÆÒu…®éMýAØÑ§³”*>uÿ>ÛK­·°Aß¹Eäñ#B6F› œà!ñ³Å3I¸ß¾=ÞÑü§ FîÛ7Ƚ¤ñT`Ê8ºÕ1±´U>ácÖ%2­ê˜zŽ"÷2Ž=rºë‹™ƒZ2ve›NÝ´eyú(Ò‘Gæ?~`xˆõM© JUN24Jø­¤G¸¾ËOסl5„Þá}°ÇÀ|vi5&(Xº ÿüôÊGšØ>9ZA×’Ízõ ˆû¶’m¥blÖnsA͆,¤'„ŽéºÙn]íòŒ~6Ž]H Î꼿Âwÿ3 8é¤f¥cÆÎùUçç–1xLéYˆÈçlnH5ÁMåêOé÷‹#De¯j~»Ãív3 ÑÙé>B¼ò¹°âÈè·:F¸ù'†ŸÞcˆ Qû”@z ØuÚ7³ôˆ­r$0Ú¯äYø˜ í BÏÜ™ ')‹áÊ|+dÕuîo>‘ÊHT©m@Y†Öúd‡×ÈøLXWªÒ|Û7Œìk¡VT³A"Òù“¥\.a7¥·eè½3¬K*I×Âî#&‡0£J5'Í&­ÁGϸ ã¤—Š©òÅ.˜Œ¡±]]8²S+©®Ÿž(‹|g-IËøÖ–ü±r¬ýrNP«Â£™ð®1ɼám‚³ÅaÜ,–ïÖâqªO"ì¬çqâ&Ó¡·š®Nò×Ü.…Ù6™—”<%u,8oó"vͰ "i¦ZpFü§ ,¯ÑŒØ¿2&Ø K†É¿£¬äðž®.£œÕÊTŒt6öx)uÞGA¯CŒ3 8ÿhÚàT®Ñø«á®#¦¾Ë™pdd*bÀÚøijÕ&ç ŽBšæî‹æ»BG¬øëQƹ#®f!–›Õ]½÷O¸xë¥Óè»ažôDËì")²¨E©©ÜÈ:öúš”¯V·³íì¶ÃDY! Fà…¼ñ‚6ÑMü‡ ÷¨ªÛ|ó&”MëNO¶Í>ñZŠq„`pyO MçìéA‘úb& Kmù’²x"¸y™WaL5Ø7-›|ÛPQAÜ]º‘Qµ é YÛ UϊΡe…ÆÅ#ÇeÔ°f㠧榋šê‘_bvÑ ±­®˜¤t¡´´«¨ã1ê“ãÊæ§Á1†š‚»)°(Dd#¦o"Pr´ƒ‚—Óx4-“×s òÀˆú¢Ý|ƒ!Ï^ô¹¡{Vð*«‡Ð<ªQL«ÃàëàŸÈ}TBÞ˜}©ÎPØŽ{êϯb]ÌHòzMÆà‚kX‰@’©áQkŸ˜BSís~ÿ1¬~dðS³YmÒ§¶ëp®91U)‚d‚¹8C¸¨U-ÚRnâ-‘ô]`Z/Q~.ÓUÉD½É²£âþÑ- ¨‹a0< ²Ì"´l®ʇÌ'Ð ÷|I?¿k5x +l·té£õKrÀoDÖ|¯­3’@C&°/*Rnu†A12EûŒé%?¥ÂSÒaÛº„ /î®Ö_µúÙŒjɦ:Ú_Fw»Ô÷®<ÄLCÓØÎb¿êZ”ڥÿ‰~6¢tÉij^é{{¾íµkky"hŠœQ;ê`©[’™£TŠ)ŸqL45Uš¸Ë’Qä’ Ìð¯ïÎ"s<ð¢MhbÚ 8¡¡¼È»3ŽqŽôfy?´R—™â9ë:࿾ˆ¨E½ßôÓ?©ìH`ÿšÜ–ÉSÖæ¡hAôBjÛHñ¸#®­ Ï2¡!RN¢ã$¡nvTdvqqåõcl*+¾¡¬Sóõ"2}"PÑLÒ7Y¢eÛl3Ôaœá<7’²ÚÇ[3\˜!ù ûàÙ ¶JÄrº]ñ¨‰¡¯1Ȇ­«!3¥·¤=óX¥tÄóù‹®!Á™Õa2Pçœ #LÞ™¸ç¢ñ ‡yѰ@WWÜÙR¨«ÜN†ì6Ëœ ]ô<Û]gÞˆðÖ}Ao‚+åöftÛfþ¼@2·5/š˜€°š.O4}:ÿª;æX¼f3«—ïÓú9«¢a´lK⟕­E*ôµ(Õ.+ã`O_2äÏï×v¦Ñ%’¿)¿wZµgò¬þÆ»±¢WlÛµf^¼Tû¢‰M >UäæÏþ™¹ÈÞ½©ÐXi©eL˜Ü„ðhÙ››ÓN¾5f-î;¥t~õ(#NRÍSV,¶¦;!ç´—PƒçØäi V%&osòˆ;Azì®»@6ìvp6agžùúë©7n« ³Cvâ”ÓÊãGiî!Qf–šž1¤yÓ[¢P†²&n5ìM¡Q_ž).8¥Áuö‰BaøŸ§tM™>˜Îî­QrКJÓ£EJÌîŸö™fšpU>bº×â1?º MèppÏʹ Ü«Váñ¯ÜÜV™Ž«.ÆüÈQ¥DUÄä¹O˜«e: i_¨¥`A‰³ÝN¼Õxc5ÑÄÚhá? ë+50ÆóAe¹:  V”$Û‡ÕClª?(ó¡ü¹7eè‡o¿ö-Sí@¬ñÅ@Ô¬ýjs®ÄÄ-›pvû¾ âf²cW±‹Sè2ÞpÚ|¯7ì¼[¨o8Mž-$e…:Uáël"™•d¼î­¨´X^ÏU!xÚ¹·ºÄñùˆŠàe|,)¾«ŽX_El[d¶¾•Å4ÙJñfÀÕô-S~z­¿ 5»~¸ìJS“ŸRÀ[´¦#Ï’¯oÄ”zÃ/ oãòøì†æ­¸F娗/Y8Q´ú ÁÛË`©¯:SåRS5t“?=Žè VÚ_4¥fÞîÇ¢IСӉZYëõavçïcšQœz†uÓn妦Yl[­¯u¸—tJH Fn˜b®c|‘V?¼å<”c hKÒ3±x«ùèے˨‡}tÄ Ô)jàÕîåð¾µÉr0„òÞË„,Ñú⌇ü‡&‡jmL~[˜·®°‚3º £å»¬c N¯hè¨þ\?Ç*HæªÎtÒÚ2|²J»/oƒ½BŒ!«‡`Üï°H``Ë7S§†¼Þôúú²¦xÓ(z9jÌem/” 39•áMªËo 0fD¿ï¥¨Ê„ŠaâÛvÕúF]eÜ“„\è=îÖ7„ _ƒ“ºR¡?Qƒéí·&DåÀCìÆ´•Âõ#Ĩ#Ñ>a'Mj}¸k°ÛʘäðFª¡0²pɑπwý9GÌ£:^oôðIä㩹"x'ó Ñó^_ÃtüuAçýpwÒÈÒRpŠÝÕ»˜{õHw÷® ˜M #-_¤–+^…2çô!g§nòÉ‚óý{Ü6މšyÛQ‡Pš¤T¬ 8ðsk—ëµ!ªEG Wr܈šçÝwÙ¥_ø¤ÝÑFÑr1FFl-LHëj˜¬OhP<øë¤Ë©uìÌm Þíëdív¯Ý éÄ>^¬2¿Ò†(Ãp€ówÉÕŒ[Ñôa„ûZGøl9kõÒßyíê­µuå’c§Yn)㇯jdgôç»ðc+øVe¹×B\Y¦šIÑ“°úë ø/Z_'ðgѦ1®¯¶™áû,"ï´ÐÕµqY°EÒr¦³Õ"¥žjÂçø.4ñΡCõ&ïJ7ؾÚé\Qpåv;*š¨ÇšÀîÂØŠåìÐ&„äðbsÇw¡'§ÿþóò§—i^ÉëÕ( '²~,b”{ب^Å‘ÚöVê@“´MAê%•‘˜Ÿ¼tÚ6'pºÃÒ»,ªo¸¾‚|LŸ  Ô<ÕpGÓXt>xaS;` Øu$ ö{<+SwÁôøˆ›5 0Ã'£¾Ðiâvâ‚ðä¾j-i¿ÓfaçqÕäù@ðæ†mO9~̲G"ÿÝ.Eü;›ÚÅ«ú2Í4²Älo´É5+¾´tdjf¥z)‡t5[’ø‰8„N'eŒÐU:§!Â0žÐüJÛyË3=y‘Ÿ:­ÚœÖw§/òì‹„Iùˆpã´$ø…kÀÌ⛟×ô ˜å¡¸Z¾nÂRÖËnWŠ—Ü#$g ShUæ—‘w3í"ŠaœÅ’nÁ_ éÄO2e±ÉÇãâ°ö„Dl1ŸŒZøæV,¹š"õÏVXTO笎2Ûõø$Æ}´ŽtÑßñ«æ*±àZ——îäég! WçZ`e£eÓ°‹ '.Û¯ˆ·~Z¨bàG ^»DG€®±C؇ªÂÕ`}ÃüÈY–”q‰œw<œ$¨ÚN§ð23›G8̓Þ¼sp~ùbvµ¼Ö•B6|XÔBÙ[àáÍ ô/~ÃÔïÆ»éÄŸ®^‚!`9Ì a“F°óoäU}r@G0K ðHYØp=}aBÎ8=£›Â9u/f¡£Ô&Š€C>^kEUMM¶|7+}ípé?Æ=Á/Aºõ®O nYeHÏpµnlP‹¤³é¢ó4ËûMzûŸ(6º6£/6êS—>%®gí•|ô -Ķ€gæ‡ ËcC¬NŸQ×TH·ÅRûkô£¤íbIÎø äìÓèå` „!ç`V´X87ø8·„´Îe5jßâ$SŠ1¸K¥#‡R'¦O§P~ðTËç§Ô?ÕO]‘p¶¼CJu­=›yZ¢·+j'óë„p߀Ó#¤±r÷%‹"^7åÊ>­™É±Gµ^_GlÖň™¾c–î[M¯ï}Z¥Eï¸:Í-aèÆ¾©ñ_·¶@SÕ|z‡Ô­m;¯Nž•@ºh{ùû^ÒIl”ÏšÉî‚XokO!ŒPC2àoÌ}ñž—ÇÏœÄPc¢‚ȦW—CÖ’ÀG{"0÷cõ(± {\;F|‚ 9_á-»DJeÞlÛdÝæ¨ ÂÅ\B(¥”—Dÿ@%•þ³=…ö°Ýý¸ýé., Mé(gDˆa8H46 ÇŸ3tè’¶C.Ô]Ýé6ý²|=s²X=FÌv|ÓRBÌ}EûŸë`ˆ7ë,»OçžÌr8&3´˜¨=A9õb½ÜKe&ä^JVkåQ¬Ë¬›4èD¾o„`FenÚDÞLW–DŠV(ßʇbr>Æ}*–ËE°Á¯'Štc,îw^žõG%ãU-@_ÞïÓ儬”"çŒ4“V– `Æ@àñUäiO¬NIÌ")r@Ž!êÑ. ˜åPj¡Å‚#áËi™ ê\õÏÛ† Ε ‰Æt7d™$åØMŒ$Št3z€}G’Ú©f(óŽ_7씡ÙÉ]Ã×óa(B‰aùmfÅà$žb*¤º–4{iÕ£,ã”lù ¿ÑB£¢À1)₊´y†Ü¨£-óó~ÛDåÿ¯fȱ﵎Óty,:YMÄA7sBÏd°Ö÷⣗ÜO¸Ìlš¿iìl¿}ýE^0Ý€‹ì~$Îø‰¬¿ž•õÖoqRSÞùÔ­Õ.¤&DðjHë~9ÏÕ’â”$œäå'M]xPÊtµ4OØ´*|ôÕ·Ib,.cÎEßsa‡Ú!7”Çÿ^4åJ*N çÊ·çæÃš’Í*VÒ(’ГQ垟ü}S›”qàrS­ à4ÿI†æ%$\SÓNî8ÇJ¢·y™®æbm.0ã,›²‹†‘`á4‰•‡Éx;tѽ®jË].]u¥>g±BȶáR[èÛÕg*2Ö ŸÆD“Ésߣ¼ç-Jcà*Ô×Ò—ø@mÇG…2g#ëE_GÉO@©€gý_h^ªOús×Íëω ý½Ø9À‘Ï™3À•fZÓ“Û “0¹> stream xÚxT“ÛÒ6"½JH¯¡÷Þ{‘*† $¡÷^¥w¦tÞ•* TéR¤H/"È=ž{ï¹ÿ¿Ö÷­¬•¼û™gfÏìyf'+lÌøí¶5Å'È”(ë>°€@a~ PŸÍŠ‚AþÆñÙL!nH(.õ e7…ÆT@(4Qh¹Ã‚ÂA1)Aq)  JþMD¸IT@P;€.?@ ‡ ñÙ”®ÞnPGzŸ¿œ`.€ ¤¤8ïow€¢ Ä Áº ”#Ľ#<@€¡”÷?BpÊ8¢P®Ržžžü $?ÂÍAŽ‹à E9Œ Hˆ›Äð«d€Èò§4~|6€±#ù—áÂå rƒÐ †À‘hw¸Ä €Þð@S ï ÿEÖù‹À øs8A~Á…ûãý+þÛ#\\Apo(Ü`…Aúj:ü(//·ûEÁ´?È…lфߩƒjІºÂ?õ!ÁnPW’ …ýªQàWô1«Âí”..8 ‰ÿ+?¨Œ>wo?Íu†#<ᾯì¡p;û_eع» ˜À¡OÜ!š*8hÿߘJЉ‰  O/°£À¯ Œ½]!¿¿at þ¾®W€=º ˆ?Ô‚þÀ÷E‚< ”›;Äß÷? ÿ\á ì `Àâ…ãÿ;:†ØÿµF÷ß ê°¢å'þzýëÉ ­0;æýoúï h«èh™ñü)ù_F%%„À—OHÀ') ŠÄÅEþÿŒc‚þÉã?|5áö€ä_é¢Ïéï”=þh€óÏ€pþKV.Àùo¡?ŠÁè7Áÿ³Ü»üÿTþ+Êÿ*ôÿÎHÍûmçü‹ðÿØA.P˜÷Z¹î(ôè"гÿoªä¯ÑÕ…ØAÝ]þÛª‰¡§Aî€V4Ÿ ?Pä/ŠTƒzAì  (°ã_ªù 7ù5o0(b€@BÝ0h/ ð¿lè!;£o$Zš¿Mô ýs_U8a÷kØ„DÅ 777>º×è•(ÀW=•v¯ßbðÃ(´ ]£?Àá†ÿ«±‚@!€€­ AìQ¿l`á?ð_mü.ІÑG ùÍCÝÀ0øW×ÿm\ pwäoàIƒÝÝÜÐü[]èŠþ^ÿ¾. /n–szÖ~Q£HçÉ÷åÎòJgt¢E_”(Š}¦À×Q7[}â‰Òc»ª{óåãÓ~tÜß.F¼½Í ^J×ÈGa¨ö­)ð~?~ëa´CÐ:ŒŠgD¯‘î'2?¶Ä¶äH1›¾ ïÞ|µñ⺹ùPrà(9#aN§C=UÌëÜÁŒµ`f]A Y<"‰'s³Ìt7Ö4½ÆŒ…ÆŸ+µÇÑ|÷^³ŒÏZ\|—Ûß—!|T¤ÝS-VANCá£Åœ7œ<@C™”«Õ„Ä`W=S.OKd¡)v‰`_Âz,¾ôc²¨¿-i@ؽÁAO9ø®~ÀûF÷:„è´l^÷Ò½ÍzŽñwÂ{ÍÉÑŽ¼5¬JlÕvgC™ûÕ°ül*FN]çÂî$¢´ìÜBs¾17 TØzcìÞÅã§ÙI‚BVi²0‰Ï쥀 `Œ®ÃöfóW2irZ6rM,=f§÷áû¼ü§Ïû •æL)ð“­æwíCÝ‘Öo ”Á‰æÙ;½ÛIMš¢gIM¹UÅPµÚ3ˆ.®„¼„É@£ü Ѥ‚ oÞÕp.q‡3ÕS[{ئ¢æ…5fE]–ç\6y‰æ †3'ø\8ÔëG"cÌ`ðîƒ!Í:{_í‘òHÚp‚o,ªÛ ÷v=Þ&ŒZ¶ü˜elÖaÓ/TØÉÒH!“Y2àˆ×z>¼è‘4ÅÛÏZÏâhRª+R·#¿’âÊ=&îA4C-»` ˆô_S'NQx¡—,j} œmü¥N¾5@ëmXÚ¢ÏVOø(>¹1ÁF~'LàÅe²‘Ïsòãcû¯¾‘cÖ¤*ŽŸNdÖ‹|³²V•Ò†·§ý/ßôÏå!…ì9”½—Vkl^M¾R°3J¤ÔÂiÅŸp„ÒlÜÒŽºqÖ—¥ÞûY©0mH.ûã]4@¨Æ.Qo8c~Ìâ&Ç{‚e9ÏŒ³{~Ù42»5ùÑb=ÃÚÄ÷åøÈŠT––°Þ„la {+¸ºjÍ•Ílü¥7DxŒ¹òòÛÜXÝ UpÇ–Bé„­´+wkŒÑøŠ¢GYbJ²¤ Eð…,ã5¼ª¬„ÚÑv–ðñórr+œ|þ¾Qãýƒ ù“é<±ôÙP¢[×å`Ј+|pa­~òó”o¡^yƾ#ò{Å׃<FËÌŠÞ ªõ//Mç×GB»@åÙV'[òS¼˜{G¶¨BXJ¦#‰XÒ~”G·M)ŽÑ×÷u’‰ÖX{̆®çwÞ&Ò·¸‰·¿•.®{˜¾ÕÕ¿î1Ë(éLàMOÕ ‘ìí*M«28³Hq¢ÙÌ“:0 ³z¹˜c룮,ÏÂâY,ödÞªMÿ öt¸ØÈ`‹u£©Eê¦ã#×`G¼êýÙ­b;Ž—=_ºèøZ Þ aÐõØãý#çºèâf?Q¸ ‡W?¼¢í-Ò!’}s2÷<|Ü0Š ˜Ã|“££Qü±UûÓÉqcWæ)î“<ž™°…wZ߇¶âüœ[øä6ºïã®ó)ÔáÉLq®é8NrGkÇÎÊQÊ_ÛÉ/ÖšSb“s†Z„†÷ž;ë™5X¼ÙS›•ÙRò¯Kÿê\·Ðƒ»l´Ç9?5j-4ËFÄT¼ºÞu kÈ!þ ós EL¾Û-¡1üÒJYVèýŒÜ/%aÞƒ‰lŸ' ñE>coªj8þãë9¬dÝþª3ªÔl8Ö•$;bÎ@¹þ«‡Þ·Mu1‚’]Âo¸ùyV ‚…ŠÔ‰oâRyü6k8×[L§—cÔË^ÂÄC´íéÌ(|–Üòmöd¨³ørTˆ G˜ëJ8»îõ¤ÕFìÓø|ªkœó™Ðéyæ×­r‹±_„øû Puϵ1†öáƒËæcŕȗxQuïVhf›×S[Þv `µ#×…–ÆÁ^ÈÝ"†pƒhîú¤<¡Ä¾¤ÃÓy>òã…† —8^Y”åéXÏ~+aögp}e©<´‹Œ,ÚçxS¢¿Ï¯«XÎîÆÉÛ8ûipOƒ©ËÀFÆ Í“Ò÷ÊC4IÇIû³oZ³oIúÜnûb¥¼(Ћ hMêËŒ¸]Š`àÞËŒëwÒŒ-D8U›ìiŸ‘{9¶òßáÅùpÁc+X3ýú G3¦¢³oøK8ø¼Ñ€Ž8i?êà³èXÆðí \Åå‹Çq«ŠÞϰ‹<|ˆO÷µR®cý‰¥vÇÇy,Šû9¢cò¶SÌG>½Á{Š?T!Ž$ú´= Ÿºær Z“…ðOÇD=éÞ©%Ð18ywsuáBHZ±Qìò³”é ô:Wg½É§ +Þå÷/l¹û>µ©ŒúÓh§Ú‡¬TpMmvRˆì½ª·öÌÔ·˜¸‡;*øq6=qz£$Z9ææb³}ÁÍ =zìš.y‹Ïå̙߹¤A‡F`TDf7,¦Ê[Ï$>:SO%Ý–ñ¾ÈÕs'¥ân—uôñ—ôïc¢ôê‹{£`B¯Iš5­"¹¨u/ˆmÜX¤ÏÁhCžâàd%L±—q[Ç3 $q\0ˆWï]±7 úÉ,ô½È8ïd§Ý«!»Ùž«àIU5Êxs¸ì"e²L¾Kº2Ûtb–¶ÏŸ®s”èå¨×ï¯ÜΔ#Âì+ûðÆÉªž ~,l.§Uè#?§²$«w~«ÃNÈðÔ÷ µ­§Ëœ÷Vlçàç2oá ÄjÌÆ'@Ðq´ÆZ7a‚ŠçjË…Õ‹ ‚ºDÊ»_ÕdÊ¡âžXÏà9š•,R~VJÓ•MGZTî™3«³3«•ÈN5%öؾ¹ð²š¤MÛ,]áhøø‡ð³³ W&˜auAŠáFV4¶íJ¥€ëñ­†ãzã”'jãØ6?§I“»à;ä†qoŠ\´ã}Ù}¤e¦ºòp‚]ŽÖ,¡âïG©êwrŸrpS]?12¾?BÉÐMÅ9 àÉ— ¹Ðpå ÚŸ´T省¬]xßç\«~Ì6ï[AGRÊÜnȘ+dG.{µœØo*Uò¼œr‹ÝW]Þ·DÏ;èkÓ?5|ÎzÉúZ–‚ösÈL®ü¶‚0˜‹ÄJ¸‚6h{Š~ ƒ[×_ƒ¾‡6ëkqž´²Ýó•ÌÛƒn®45‚N×ùj¤´$]Qàp$*mOã|UùQz«+v×ÎÏ\¦lÒ"®Ú)Ζ˜↻ºº­ø ua„Oú=Ø«‡Î•—¿ëa4ê* "]Õr¶/#ܵąŸ’l×y¬lwj/˜ùæêN. ËÏ$<-×=²ú.eF#MAêÁ”N’yÛ|Uúv˜SòèRsò~ƒMiù|fãQþ»MHª]¬3«õW¡É²ãæ1?ï^'‹Ö¿‰ r ÒEÉyËVGp¯Û*cuXv úèÝj a}%iWÇ·œÏæÒëc°‹£PĘgîê>ÒÚ"óÇãO¥›Ü¹X¾ÖI_~z–ÞíÑ1|puªP'ߥÚ&¬Æ"fÂ_”ÛÄÁ<áù¤m8¤aš¬—Ý >D~]Ú õBhY­ÌT0¿÷¼Ó_ä÷Í Bí Š’™®—×ñ¼$-nzYõæŠA<¦Î’ýjº¼ß{óËPo ®q~œ²è•º›Ãª N/‰è{Ö„ÈŒ8v¿š„†®¼€´EõŠõY‰¼ŒmÂÂj]/ËœNÔ¨Òеeááhüp/ÇjĪÏó½Ù½pýÙ$Ú("þ¸çñUwŒ,;©Ç2z2N÷7ð~r„lö¶ V‘Ͻ‘ög">¤ø <Í)5 I¨•? X#˜%¨å‰]Þ·õ¢»|“˜\!.×øe*`ŠtÆÂÖ¯í÷ØPÛÿsÑ»µ#w•ˆÜ”h"ÿcö ë^ IþëéÒ¶M[Z%0O j<Á hI;LòļÅ@n îprGSmSJ¾•:›ˆóÀDÜOä$¤ìbYü¹R_\.ØÙìÒ¹¸¨¼sؼš#ôõ7†ª\bÊn“Ò×3z :;§ä ‘0I¤AÖ}:ÚÃôq‡yš¥$ªxíÞ:^–]œ„oŸÕQœKË3Hš»ý‡$ym3ñ”Åv´4±˜8ég?™<®ä'_³˜³T{ ž‰«É#îö:K®U±ä¼uHQŠy7Ò7gð-þDZÉÚ0A¿äçãøL™¬o–‡øóIR ôÑ­ƒåÉϾÜž¨i¸ÅH²ë¸ŽeSb{ÐuçúkÛv¥Í¶ÌøÅ‡ô~l’]}wEåhnmVáÏr}…lºIš!K_ Q% ³8¡Sh[lׯ{ŽtMÕ(‡€¢7#<Κ_„Ì$åìÓýË›$c½'Â¨ÈÆÊ›ÖB§Šˆ’?–Òú“o‰Óøùƒ–”“:1Žù˜ñd”u\³QqgÊåŸ)÷Ùq5’að¾ôñ;AV#½öŠ5òdÔ´I×Ö#goØs,½ÛòPlì^8† ïÒ¸ã>³‡d DX#Z÷8šj·dËÖ?yê}yV‚UHE³^è‹.¬‡yöØŒE«c˜µ—„£Ç†Y¬¿ŒwxòSXk¯ÚÏ)íÊ"ûsÈ<ß㬎ܛRÞ ^‹¹£ÿýpç1Ù^©kr¦oór™¦µrºöµ2–€gÍ3 ÜÊOC>²¾2üÁ8®¬sRtœÔLå•éyçsg C¸ZóRÎmv–°uÕ¹~Ò±‰û<~°]0ÍW[î§q¬öC ˜1,ê&´NO—+q¼cP^SRîv†ITî½m(^Û±¤T<·åÙ|«a5 «öúÌ!æy´&fþZ™¤KE›Q—æm¤}§ƒ‚§•}‰iÖp·åv`ÀNœ Ú÷¯ŒÖÄŠÂ/ï ¬êçxLTÓ7 Ýò À÷¹übܼt9 œ[¤°½–sË2ÇÇ{4yŠ"ørÁyJ4ÃÎHq÷1g_¸‚o¢ìmo3¹®ƒ¨u¹Ë¤êMo…¾›“•K¼ß)ôhH€}Ód¼•lÅËaÌì^ ­·Ê#?î§áñÙb/t¸¯o?Âèþ€¹Á’xÎáþmÈ’YnAø°þ)uOûsë©W©÷¸¦²ø|›ôZjô§/…HŒÊºë‰½Þmíà1Eöáx*9Œ%­¶_?¸nËËa™©€åØœùH·ÔfjzO=R¹ývx;ÚÕ­ÌY— IG¡Âþ¦@8-Ö3zp¾ÑËÆ¼Çµ%àj4p±4÷¦‚åžPƒ;~¦*$Yô‚§w®Yúðˆƒ¢¶¥ô4óó¦m”ákÚ“ƒš0²|§¾3@" ­® ÉRÐj?¹¶Ï#=ŠÂ˜°Í«µs*Õm\Þ5ˆ©Ð©¬.5‚œ‹‚/X <`úù…Ô­ÉœÐx³Ü `ÔÌ»â.C³Ö‚PýëÓñ$n}Ÿ­üàæc'pj¥ûÕò§ÙÙQò„ÝmÙq²T‹{Yõgï¶yEáCšËj1i¹òWïc²V­@Hþz=ÒÜ4?ñÙ$˜ÞåK‡¿55 Æô9õc ^ûö[Ç /Ø< 3â-ïæŽ»ÖLbßÝ('íNá1BÌ7J_2ÝÏ¿6äð™ ¤RÝõe‰Æ½k£~5’+‡ü´ñ졎‡\w¡»ø½É7¯?eœai=ñÏ’t ÐPbÄÌ{“…` tˆV“ŒÂçnž­z> stream xÚôp¥ÛÖ€ Ƕ•¤cÛ6;N:Û\±ítØéØîØÛFǶmÜlœ³÷ùþ¿êÞJÕÊû 9ǘä$Š*ôÂÆv†&v¶@zf&€¨¼ª43€‰‰•‰‰Žœ\Õhmò9¹º‰£“…-Ï¿,DM €21à‡¡¼-@ÆÙÀÌ `æàaæäab°01qÿÇÐΑ fàba gÈØÙš8Á‘‹ÚÙ»;Z˜™?òüç@eD `æææ¤ûÓ lcâhad` 7š›Ø|d42°¨ØY˜Ýÿ'Ÿ9hÏÃÈèêêÊ``ãÄ`çh&@Mpµš”MœL]LŒ´ P0°1ù»58r€ª¹…Ó_ ;S «£ àC`madbëôáâlklâøÈP‘–|¶7±ýËXî/:À߇`f`þo¸¿½ÿdaû§³‘‘½­»…­ÀÔÂÚðYBŽè¤Øÿah`íd÷áoàb`am`øaðgé a%€ÁG‡÷çdähatbp²°þ£GÆ?Â|³¸­±¨‰-Ð îúÄ,MŒ>ÎÝñï˵²µsµõü™ZØ›þц±³=£š­…ƒ³‰´Øß6"¸df&@; ÀÄ`âfdÎøGUw{“?•̈?zðö´·³˜~´aâmajòñÎÓÉÀÅtt6ñöü·â Ž™`laš˜YØÂýýClbúÜ¿£…à+ÓÇø1˜þøûï—ÎÇ„ÛÙZ»ÿcþç3jª(Ȫ©ÓþÝò•""vnOzVv= ;€™™… Àùñáý¿q ,þ®ã_¾Ò¶¦vî¿Êý8§ÿ”ìò÷ Pý½ Ô€ÿ¥`÷1¹&ª]›‰Éèã‡ùÿó¸ÿéòÿoÊÿˆòÿ:èÿ·" gkë?õTüÿè l,¬Ýÿ¶ø˜\gàÇÈÛ}ì‚íÿ5Õ0ùkuåMŒ-œmþ¯Vhð± ¶fMÏÌÆÀÄö—ÜÂIÂÂÍÄXÑhdþ×Ôü%Wûc߬-lMíœ,þxa>¼˜˜þîcÉŒ¬>^§ÑüSeò±Cÿ›WÜÖÈÎøecaç8:¸Ã}Üõ±<™?¶ÒØÄíÏa02ØÚ?\=zLíáþ¸X£È¢¿ˆÀ(úqÅþ!n£ø‰“À(ù±eÿ¡?…èÃïó‰‹À¨ò±Uÿ¡(jÿÐG-ÿÐGLÍÿ÷‡ÎàúÐþCùŒþKì:#;ëãýäSf4þ~tbò/d0šþ ?ê5û~lþ_dû(ØÜÝÞÜäßÑ?dÿÂJ­þ…åXÿ ?jµù?¶—ñ_¡>Þ F»áGeöÿEÖWg»qýs*ÿ±ú¨Ðñ_øQŽÓ¿ðãºÿmüQó¿ð£:—áG ×å£÷?ñ&ÐÈÙÑñã9þó©øÏÿðŸo¿‰‰›‰Üâ¼oeMPëC•0¾+ýî8 bÿUÄ ŒÆŽ8®Ë¾R€(ßã5k^ä‚pçì^äãÚ1Kñ{£•&“•îºWJ$Öb]+¤©á6×$ÿÓ±“œ3ËžlG‡–>«­±Öy“ò ëÐ 56Ãåî\ú¡$ESÅ}¹ù94eà Øxt$4+XP›pz[…HµðÌl»ô'§+¡ñÓB‰ÃÇ”¾ö­þ¥R:P‹Íü£#D{Ù›ô#Ýx²ú“€ònqœçXª€›Ö *C§QA2Þ éÉ+©«hie³&© ð¾dpÑXÒ‹ Xá,7CÊ-]^š±â_‹Iª¬ì”¥Ýee’èü°ð½ °S'A5 Y¨²^rÕCSñºªNI3)t#iè Š*מ¿™§Œ`G"c,èDÚ·}•A2£¡-[ë­L«Õò[{¥àÉI#.Ÿ‰ŽÉÔó ¼8&ÎF%¹-r0“GŸ[)›ÑâAªÏpzŒŸ²í景û{5F"õ$ÃzçáºÃ3« \äHí ÀUž¾Óáäší7„z¯Z6…y5­ [DåÛyß¹o;v{ªÉÆäù‹¡M Ñ®f˶ñ|[%‰fKNvüsfIe‰óðÑ–ž²JSÒ)Ú µ4íJÙ˧4༽’lxP(h¸LZTŸÆç4]ðh4¢œ¢!Þm+`Í5ßÔxñ ú ˆ95¦ÙÁ<} åS<ö¥úá;T7‘“n- “ý°{Ÿ 7S¡táæäÌË+ Ÿ¥XÞ(„&SÐÛíûtŠ ÈÊ·' î|?nùÍíÉýQS”%7R#¾¨„¥uóòr¦sý¥P±òÝ ÚЇ³Ë%[Þ8ÆË;Íúìâty_ ®ZÆU¬çÝê‘){¤´Ÿ¨Øç¼•ïÏbô$¿–aºM,Ès;Q4 pâ8ÃÐðÿn¸!OxÍB†ñˆÏ“a•&?ŠµÊŽ™&Þ¸ž6fô+ÓÉ4»îõ`¹(äÓ~'_O°Ð  Ä`w–ÆZ§˜^3Γ†Í7Õ¨j–é$?ê@¶±²ß‚^–dBª#ÕO©øø}¾-©¨G< HÔ=4ßÐt’&­Ý&ßGŽëK&2?ká{¯QçäD«0'ËN"ÃOV˜ˆÈ"@ȉ‚™eÌþRV~eÍ]ö–7òÖï¾ú—ÿêŸ"YR©Íh>eë¨3ïVËMšamé7Ù÷é1k§q ãθdR}S§¢¡$ïK±ÀMQT<Ûx؈¹>¾’Yjþ¾4Paãû 7i3Y¨Íå§ÒÖt´-wwí@1÷g|qOwÒØ %a×ÆË©B‹l<ºùä_©y ì<1‚*~(Žd,·  Á°¨1´×:§í}Ã.X?Cj¢Öz»ÞÔùuÔ°¹|FÇw6£1ËWl¡¤~ìû¼„×Xͼ– Û2o´ Ív$‘û¥EÔîñ º|è0SGYﳺf Öê<—GARð+OTùOÄS–ŸbãÐE—±‡¦ŒwP;¿äxt³&މáé’S=¯–ºÇ—–V.?9•„8‰á+ØˆØ  e f_Œ r‹Ô ~4{¯ ô*.HS¾)‹›¯ü&"hñµ%±?Ëó¶h鈲v¢ÌˆcyºEúÞS³$üyÂ:!ˆ¥ P™O–ð…ðµ$Õ©“Ø.ä׳ðêùÐ`G–ÐoÜ7™Ç{¥›Q~QÇô´JsÑÚô*þIbÜkÐó/Ì|…¢ÔŸ„\ÅÈòÆPÁ4¥5;Æpé!vU€9rÖ—DGÉ6’¤fwwõœc9¨QÆAA½™GiźîÄOBa:\ð¹?³”÷Äooê.5ÌëzAÆÚ±0’ž‚ c\›úeqä“S+“®r-Z–dr@ÇÛœc¦Õ;ÀŒˆ+Ñ‹#Ž9}—mœ}ó/¿ª×þÀ¯ÌŠ=„ùd,@òey<昻E>L©j<‰Q}θv³fµ›öMd ³òQ—"Púò<`…@úÖ>Cø¶Ýœ¦¹ÐC§YÕs€Šu§‡œ_…ªfU¬Á2/I± ´*¤5WçûT¢§jV$w¼Ðàü qcäÁ-x®[7ãþRMÅû3‡¥zåôèf”~áÁ‡³»OåÖìȱ¼ˆB)é7Ó×ö´)ayLÓ9Í=Á7¢H‹æ‡”½ [5§sÿÜòá¦Wª©NUÁ8ÜÀ”1 Df9†:׆Q ƒà5©ò²·Ã{2Ñhz}3~Íçìγ®åv:û0Ú¸ÌyŽ- -`ÓÅvB¹¬άO+»‘½¬½PQãJjËVRy)S¨Xuø`7mïgªgଵ{E_ü6xò’6£Ò)½ègœ܃1çÙAM¶GÄŠ‰MPŸÅÃ'ÆjX—’‘ s ’z™rÙ“l‰•ø¹” |£!1 B¾Ø7в€úlœOt8QóÊð6§N…mȰÔM»ë00?ÂlƒPšäFQ2íïƒh¡É·y¾ù›u®÷÷HÐÚ9&²ÎcÕ”Ð`š²øÎÊàrÄÙó(Ç#Å}"³l »1£Š6(½æá&Ö;o_Ë ¹‡›Ö”KƒZ`È™dñ6ζ[cN ¹zUsSD=#è1O¹á!ÈIáÚûÓ˜ÑÆz~¡ÞèȪ¡J/{4g-î˜>nÖ8íctP–¤HX¸JR° àŠñi~C¾”¿ïw™ ¸‚ÐLf ¹ÂÁØ$긴«±^ 9ä4wÇšXmhű<ú^4ÛHY†3{;¼¶”é)²`y­p ù„ŒZÕ(nÞ±Ù=êœlñóï¢bFÃ^§¸¤ÍÆ…^G£\— ­/q=¨±mÖ›A:‚>¼1â·Þ|àymbžF1lC+ä~Åö‘Пï(gº7ÚoܱÍU^ 씾 ³¯s·Põ`w0I¨U1v¸z7¹±ˆxGTÊQçˆÙÌO°¾°S°\^çbµ6jiL|zëWâQœhíÔ>ëw-¼ka¼v²lâßГK )¸/uíQ˜n‚ ò–X1Öä…iŽŽ8sØ;'ÿe _lÔ“í{̘{FpihHä+K‹™–Æâ°VfjŠª„Ò¥ A g{€!‡üÛŽ1"„Ò5zæ§.zn¢AMqAzX¸]ÃåsÄ&!RR"²õ .u… úf íB]ð}»Ù[^Züë{ÐQ;IY¢¥i C­kK8ðwºl®ÖÜ3ðþ–r ,›Ž ä•zëË:}‘“ÑÐ{…•äÌ$Iù Ù Uµ!¤öÎ/€D›eGæâõmÇ——*t!ÑP*xÝŒFD`Ãæ»².SaHä˜,íÜs®ÙL¤ö™tn½èþ\Ìôdcß+2¾Dé7ø6ÏËeUì׈ŸbIÔh'"Kß”á«2Ex3‚mÆ œZ~¨yäë»X=5¢ì†®$#âÕsºOê%Sܨ–cgËZëõ7ßÞQß}ÑÙ·Ú׋€As#J£§‹)Ó’VFãw›gžù°^EÊ¿Á^å@Qà°ûu0\D…Í>õ#S±ç¸s p sqÙ!3<ä#U•†‡ç¨ DvŒLNÌ^o™ÛnŽS·râ·v1\›ÈãòªìÑnÓ#÷¼˜.®  ð †ÆL¿­BÒxRoSy²PŽ>WÏ£]™‰ÿ4(æÐz+yûraÂo*ç…Ü =¥Þ°C‰ÌÐ׿k,m<\‘v‰GÛÁ?ã<÷3E•m­¥ujÉóÈfqºìƒ,~k8b£í:ômoßå¶õµReœ_l¢Ð|™*XÍYV¡R æu-ƒ»/™ÅÍ:«*õl)ÚÀš8ò0™»‡_µŠ7â÷¸¸5Øy”ÒŸÓÿ„ýýŽ­õ n"rMjQR7‘£ñ®ñ:5ü²?îLÀNcØÃý¢°5]G1[é½ÔH–A³7Ïù¿ÊèõT/Z É’î7;¢ÕIâ*œ|‚o58D©*Ï'¤2]Ñf¥ÈeŠ[Ö, Xvp]< ØUañ“e¬ßÜïíÐFX'Œþ”<»8ñ{á´ZNE‘½[‚:¼Ÿ„ì7¨‰×ÐÂX¬Yu”žBżXúí ^NqFdz²¶šðKG ¤1ŸöpÝjÅܦz¯|öÚ8»ð LÞæü{½Eÿ[›LØï…jcW ›®ƒ¹‘¢œ»M£BùÆ©l+x)érx‘^eµÞóÑ— Æ|Œ© r© Óð_=4ÒàMÐyöXZnñÉi4Õ^èѦÁ=Ѻ‹˜ÏÍ_CjçÐ+f¯¦AÌùCù.„6jYäØúu;ÀÛçŠlÁt£¹60Xƒ;/Ê~lÝò¹7ºᄄ6†æP¹½:9,›7c(W ~{…Î!kfþnM;2ùÜõ;à{;¿ ÄöIÚ'œò[ˆ®ÏÆÓôY볉’’çñ9úbË•À~$Gg²9.~¾ýAªçäÙW˜ü𤉠Åf„Ú%¨)°Yåbw’ÒcM3“=Þ}¬lwNÄõ]ù"bñÈR×½t¹^<Îá#a¯ºO’ %Üå 3Q¹´Cg{Óš—sŠ[굿ӿ…y«Ñ#¥‰2Ã9¡æÓV~«×©|N9¨¶"þÓYª?Wê\®Âør  ÚogÒc÷ëìÊñÚ÷—>í¡–]7ˆ¤7«Ç§ž‰¥¸ÈêTqÕ§5wœݱAAÈ/afŸV¡Q„D‚=TA-ŽV’ƒÝo!Õ>ÃjõfK fØ€Oý”8{ßÿ} e­hSéÚu¾\j/dKçîÛMÀ65æT:ÌÓç¦VŸ}(«iÀBöî t¥jxY¤p†ö¡×ÔmüÞBhé_ A “X³½v×1•Ò{ÕåU@r—R‹‡d\%#¥&š{6A3”Œø•t’L¤Y¸†»e&âzú!¸‹Þ¬"ˆzEN¶ã”ã4¶¤ðVo'q¢[u%$æïd¼Ë«0_µýØ‘1à®÷XÕètÊIœ0«‚„Ñ”zBK×6^Έ·l÷¥fu[!·}¥´€´cúÊ~.zª´QÆÐ^•f··ÀüìÃ.0i&ôe™}'‰oª›ûu«éwcÓP]-„—ÒKxåBð]’Ãwá¡î„0±ãðæC6‘Rg˜«Îmw ò¤‡ŽýÏæÁ¢DÒ‚˜ï ‚Ý£ñS•³Œ+Ö+_­W)Ò÷1ðЕ}¾i¸ŠäÝÄß?ÛêôsÑJ³»~Ñ‘rA_©iãU#øA|¸¥€‹Óµ‰Ö|Áv•2±J³ Õ{Ëï©•q¢ÆñÍŽVŽ|l•ÿµêIÑRë2ˆêì]æàTÐYL§´U%Q)¨Ü.icÙñ°b±·›)èŽàþrlè6iª†-ûMUé>_9Dm…ž£Âdùp±ù­4Vmð‚DÃ×µÿ¬ÑFXa´ÕOnóf»üUkîË”ÜòçËÂü{w™ŸJ ÔŠ à, Ÿø4ZÍ)Ea?UALâ"¥Ÿ¿×b Û~…š áéŒûÆ 8Ï·J2C·Ý³u :N† +ƒ3á8¯Õµl>\"p‹š0 ¨‘þÿ9˜Íaífë³LñÅ}þ]íÛ~´còìŒx8OÈ‘Uó‹`(Žj ÄÝ“Rá—}XéæçàZñCH™v ÇV-CX¬áªÏ*ý¼³>ÜFƒd…eFFɸ¿æSÚåò ™ú¿t F¦®™÷iý¾¨QÄ)ÐÌJ–ÂK|[ÄÝöä¥4±–6Ò´ Ò¥/„räΧPlåŠÛ$_ÛâBD3(Kn¿ ‡˜Ô” ô岤hzÁÉò&WC—L*ÀÝbëžI1scáåÇ„oSfy+ï"¼‘ ß·YÛsY–¿…9QS뢯@ÜYÜ•|_‹LgÆTî[¸PMàô}ï¯ ø×t@lÆFŽ ž ÃøÕ–.Í‹K‡¨R4›»UdT}ˆ”F! @k¶q`(Ù,±rF¿Nðe9:£@1$B^4¨%óêšZnN\l ¥{eúOEeÄøÙ0¶T;Z•ŸqñùæÙÏipªï¶¯“8ò®X&(ZX«h*]t—:»Â`púJ”daT̰ë†`4 J¼Ä oÑ’ü´iêËi_÷¹¬Æk<óUZôÚ÷ýÆ/V@¡öln_ö«GW¾%<½‘ ¸¯×[J€7 H¥³šÞ·Q£âÞžr\2rjh©®kÞŸÆ‘ŒKí‚%œzš-N}H^—ª º:'v×F’eá‰|•¿šú[è`\…’ª=¯#BIÅç‰>þ(I«íY êhô^$S0ñs7s)q¦…œ8 ›j“ŽTˤ#˜/§ƒ@µæ{\W•Ö¿D­ô·<¯žCþß¼Fe ÷?e®ßO+Ÿ³ÃÞÞZ‹š‹Ãd±U„_)(Ú8)–«Mòü Ç)æžšüö:f…S|‰à•NG[ ©ML(è1.È"ÂB¬ߘSM-Þ.ÕâjœÐv¨}37ç‹Ä,Æ9€æ¾¸7FH›°˜¸Ö™š_‘©KTMa¢oà?Ù¬•¡õºÛ ;Ô8¤ €á5wE{„Úu$Bݾô”Ù\õQR ¸ÙF$¿Ò™G´ùD6˜º€MDTÝ!/ó;‚].Ôq­ýšéžU®¡RQ{»˜ `«XŽ Ã8 )bÈ©$–sWíÝ®8¾-,P¦/F‰-›³çzIàSï)DYÂk”­Yï¦5ª®¬ûA4Ï:L}‘¬3³³hkƒvA³ÇZ•y×R=‡£¨x…KéÒ7´#þŽûýe¨ùpô½·† 6Y¸&•Ô5¶ÒZƒ~eO?ãS†Vu\ù¦d£‚'î7ž]µ1wg&¯§­¨/ {ˆã­û<'ëümŠœDÌ´¬¼X2â‚ÜzéùL¼ßÍéÎ 9 â1@LJP´= ï3­l®¶Ûï©®Ç"—`(( 'tRi‡D¥jf³Ïè l&h;Ðz‘Tµ¸*~êGFPyl½’שtyCÓYŠ0ï† Ì°J– Ht¥ è~©§&ìcˆ½ÓI †á<ÁtH%ÊÎA ¦doêT0ã~{ݬéoüeƒ¼§ ¿Ç¢2L„¯‹­>¦X/òBV…ˆ>«}ÔÍžV€â—Ô˜S]„6âÙ­~¾,‚œ:î‘Kæ»ù_PÄdšÚÍÂ* ?³·øÑæâ~„©Gïl‚ßžØÍI¯“]LkSi—õ\+‚ùjwñ)>±L‚oªÞÚ=j”¢ÍKD ÷ÚêÅPiã…g™ìÛ˜S‡„žÓhöÉG4j"mŸjV4ñ:ŽÄÒ|…ñ0µÜtg€N÷®¬¦Ã)/Lƒuœ¦kÌcÕsÙàã¬ÏÆV [|ä[Ü-BÜ( æû%ã]°N¢±qB”w±g!LŒéܶ ·NžSL“Û-îYÆíÌâ*I±Š:‡|a…0×èq‘\òÓ\:Õì6ÌÛî8´aY²g´]x÷:t ˜ì›¨:®5Ø`ÏNf …æh xûR¢¼´¬ë ?ÃÇJMæ{t”¾]—Å컞m^A®^Ÿ¤Ï)(c¹ŠÕ âÄ(ÔÔ!¼h$hú)åQ97}«éXîè»^£W­^?¼oò/#lÏŽ¥¨n}9"y‡Ò]DæîĹ*肃³›÷¸/Yp ¦ÃñX[•àAFû1~:1h«>Ñ.|±’¹ÀÅtDîFùîã¨Ü(@¡™m0Å;›ŠÈÒÇL´ s ì$«êÙ?`@"é¡/)o-ùz£aa¼kƒû£²ãæ†+™×ùËè´5š+[3æÓÙ`Ah£Ëm²£„ql 4 ¿ûÙTh­íg¯ŽäÝk3ô×j)õ/Ð=·ç3LÎHíHÑqvÚ¿µ2‰v4a²&´d"`ªAcå~­ÒQ’ŽA7°ò|/ŒÌ»é»‹Q€p¬ò!#û'žHÍ’ "”3;€1åèŽ)a“ÏŒÝnº p-‰JâÂ=ƒˆ –U™l<ž¢bà©ÇÑðü¤ÔB¬l€ðàÖŸ2ýâ²]-ž4i܋뻶+HŽç>tð«äb]-ÈìCXHDÌK­;!êRÇÑýÞã`PSR{VÑò#X¥xúƘ±kâ G‡CwÔXíˆ$WÝL¢•Œ÷²Ôh0¤Ï]ˆÓKöÍ8z÷¥¯L4ÎgØ/<Á$\C.Êèƒ}ï€{–Áq=·ù;ÿkTžº9«c1…̳èÀtÈ**õnPÏ+xná.é5B¹æp8|%1‚ £¡fi¦tý4ó›n!î@:û•Þ~R»ß·ì (Õòø‚ëÕoû¯ÄÓQ«u뿦$y1…OÔΖû°|/;š  ”+~h¢¿`,þtžƒ)Cv; û\ÊÃ3~„2–¢ ©q'Yc±âä€óZ?E>Ú:‹¿‰wñàenjÝ«o¿Ìý0]öVq*ðËþ»w)ùMñÎ)²ŒÅ5¹Ó¾i0Õ2‰AÒŒx!Ɖë‹ù£ªî¶Uú ཎœ¶j¾®3ŽÌg~@©oE•ëæÕ Y^èqCÃéÎz$sŠ*TA¢²ƒ:…z ÙUØ&+Füf§ñø_#B‘-óJnF䓉¨ÆqFdÞ‘ÊqNîîÞpŠ`^`îàì}¾Ñê¹ã¸ô(Aðˆccµò/Ãʦâ1KŲýì]SœAæ×)QÏKκë®®¦ôˆìdƒ!_á#q«V Ù#ôãªC¨l¼à93Ïr`^éø±“hêÌã~šÜ”"/û­pšwD‚m,«Ø8Ms¨‡ö.=tÓ„ÜÃÌ£/²TãØv?$7ŒÁæbž]ôéã7æøP$ލs¥TwÁ¹åðKuñUЦ¨g¨wŠs1$„ ¡ŸÅ? ”ç ÃhºÁà ¾ô‹Ë×É4ˆ Ad¾}N.R‰p×è8½D÷jƒ†ásXˆ"‹´-‰«®G„ÑïÚÿe‡‡ÝMÁÔó5ü|b\äBˆSÒ%ã ×JZþò{8½B|.ûòR]pï) w IGP•¥oF÷;ô¶„¶Ø×“ªaÌ_ï˜lNŸ·×¶B7mÒ’‘â§×ï…¿~ -ÌyEà ß4r«L’À8~&>‰ý¶¥!±Ë®™ìÓÝ:Æm;"€}¨0ÏÌbv9±x¯'Ðöh8ç}Á¤QlUÇU H‹d‡¤úÌ|ÕèEu°¶O† >£‡ºÌ‰ò˦4€A¡péèk]µÖ•ݬ&«¢“õU~@ÀöÙ“;È 'ñ+¹ ïWq?û>?J õ%Q'ð IñŸÇ(sb@…Õ½Q¯õý™†œeÜœ=°«4¤øÅO †úŠGév‹ò¡•ß:oyVWsQðMH0f"-®Í’½>¯›-=Jò«& ?*dfú&¯ãuSš¯ZÙDPÜïÂø&¯ŒØ×¸·[t/‘ÙA#Ó¬T^íUÒ+È1¶êÇüa°åò} nKH]ÙÔY2ê4«µwÖÉñCXì3Aäf‰,*¿W"@_™)­7¢×ž„S¿â| º~<žiáM–w`‚›ãvô*$_£ M¦ç‰˜¼%µËçþ åHBöŒyò¥ä§prúÂ2¾û¥Q˜¡¹¦^ëÞ†® ëªtt†æÇ¬ÎåÛNø(u§ÎÙ¹!ÆL°èˆ†Ÿj[à¡JY[+ñ‡wv dWôV¨ÛCÀ^V¬Q‹"Ùž )eF«Å¾ÀÅâX?afõ›ܬk+(ç#>ô›=iÑnhþ[Ü €àù ¥ô=ë®^‚Öº›K®Ž•\d¸Â/Â3TC0[[­Ÿê›Çôlìå{˜á×Ë}ˆ3?·ód’{Iæ.7ñmÓ`†B[ÙX±iQ~ ÚÐ[9Ö±^m}óò^ €k™­fÚ/X ÷ÈÒ4q›>ä,HQ@Ç•¼“ÜG0 l‚?0G²©.毣úù‹Ùþ€´Ñx®X±YŽ°Ê‰d ¥vyuY ¼Õ‚ð½ˆü*orºzó¾Ñý»‡aj‡ƒ<\DOà„«&Í©wªÉÞG@JÄËO&ÅÕ&Œh¦‡ÁR°´A¼f¦_[ãú¥¿†-—£¬ãQ&˜'Ùugà¾pÓw3ìÞÁ/}R»Ü 9=ÑÉh2ýéÞuέcI.-ƒUÑP#ßWWÒÿŽŒ$•¯¡ÖÁ ëž „Xñ Ç4›úmÄà6”“TbX½d‰ r˜ÚÚn/ªƒùæÁjI¸ÐqT3xGóÅ¿º9™Ô–ÓSKâvJ.¥0kTÙ0zþè´Jjò1BüŒâŠòèc2ü\´è+2da¶5ø¿B2í÷ïˤ3i-á7‘öúåÄ+òF:Õ·œVŽ…ªÁ½ú‰òG00k iT8 Ô›¹ô~ûœýšßï|‚ékŸ8μßèk5&¡ghÄŸx<kº‘zŽª $"/“ $—jm]1$ˆ²QE°–Ö !‰4`^ÉhÀËwùÝõ˜¹ýpfÑZ °©Ùë¿ÖV&9LÜR¹…„&¿šùËÙbû Ê¥ÁÄA±õ{‹…µv;C–ÙM¿­yײWèa !ü„®¬«§ bYÏXÝÛ8¬éAikËåõU÷§¬…rŒ-+ C²ü-ÜÔ57xA¢zlH‹ÉТ¬€q•ŠÛmgr1âÉxµX9aU&+©ŸÞøÍ‘¦ðXûã?òuΡž·›ÐýÆ•6WèvhPŽë‹m§½•ž<)X I±øDª ¸ÓS 7°àKÅ’]ÁR…‹¿$á|øƒEé-(åDæmH^c{¼­8°™š ^ν󸹤섋wiÒPRÆW\ø½te'Ay˜ø’’Ò¾¥Bvnœ±z¾ú×áÕÖZ2ƒÝôƧÖपæaO4~i‰:IÚ©PÈ9üuze”äciU‹(²®Æ‹ãŸS¿Í™í:¢z)êÍÎш|î9,”üeÊu-ø`Üg*9ÇŽìré T“¨+az’Ì›Cž¢ýá¡­s$Fš‘²98Iò·T­)š8ã:ZBÞÝTŒ)î`Ðÿrožƒ­vÓ\›´Åúz¯wn t6ÒäR+aÞ'ׇ¢v}¸,^?7µ«Z(å4vÉ¡HºâÿLzJô\ÝèíÄM×qÒCpâ0NJH1z_!x®CØÎã8{p7™97ëŠ"çªD-ô.º÷J•zUÕ9y£ÁqôšÅ R„à‹ ° |ó´²$Ýc[°U2ÝùÌ=œ<ßp1P ªŠõvw€÷Ø)Ü™»èT¦AÖì¼óY&C¤Š¯å'ËåÚ™ñžÛÐl_cr®N¢rí/ðïHuÍêêÕÆòñÒ ž×8nu$óÀ}-âvó&b¦ZêS¤;=¨×*çò2B^½¶\Í„;ô±0ÚY›°…¬&y+¬-¬7;N¬‘+ÔÚú˜‹ÔL)ƒé{fà¸ì¦‘»“’7šjØS@uÐÍSûM³ DWÒJØY¹a´<áðš(~ÙÆpœæÆ*C©cß²¥§k9ï,ëF»å;WÍ.šÌü­ü’iƒÆˆ™_hŠftTTŸ½[ ¿r „è3XuÀr&%‘=šíÊ s~U¡Wd¨~ªmàmüþ;kl‘Çg§8âõ[£‘£ßªk‹'WfÉ>M¼zv¦–?¬’Me½?/.%Õµ×ýpÇŠá¶›Ø'Í‹EF*ç¶=a¥6­`ùjeòFïÙ4¦øÅXƒó8­gY0†‰„o¿ÊߦµA°Õœ6`#@™—˜!Ø™°ÏŒ¿pæŠÇ&jrâ–õíÇ«×óË)MF%ý|5 ™f5²A'ÛÜ%2”¢U¨ ¿–]CsÀ%‰ˆÊ<ö”—ÖºÕ€4Eï®x[m,ïºxnŸ`6* ; G)Ê;ŒkwGWdPg½‘’!ønÁâvß"ßð»°‰Ô<(ÌÞ¢­+9ááz*½R;uË“«¨Ó9–lÓ/¹ñ,qoíD­¦­béÜ­"q4%çœLŽ É5^°D™ëôÕ‹v!ŒÌÅÞ¥£j?@f È9à®Þ&§n)ÿ1ÌÅëe¹?P– †qà¼ÐxúÔØ¯K‰UïC°^y~hæ|± iùêÿã5‹èsä©Ü§zQªHÔwÔµOäsjÑk¶ÓɉŽ,¦?|!JÙÄ<뉉.]ܬ`–mí'Ý´°qÐrm@&ªîº2¿;!yr‘‰Àë·”Ï%tàŸAfó_ì4}í¦”Ãœöú¼Žlš×¦î7)ÎPǶ= ˜É°IæÚ÷—x" ¾m5ßךdH=rÅ'×Й YCÞ7`/ û‘æ1æìO5™%nDví÷ )aÖ;Úx Ù9À²5L duŧñé1ž^“3Pn~:•x‰@«T{•Îa„œ‹+±4H‚Ë’ƒÿe-§.lŸuX†è vßÿùÅ7R€*yÏÐëÞj­tXrR\}=•ñ¸3áO¥([ÎÏÜ^M×7EõAhJb7 [ò!˜H¾­ð]”n Óµ@A(’^jŽ*É8t£ï$/˜°Çy-Ø(ðÁKD2íö‰\%²Èvö€.òà7#CéÈfUÑ‘Sß•-Ф¢T9j"5¨X³iûPgØ+'칕~è˜×gÓ)ÑRÞaë8çbÔ7wŠ+_oýL ø¼ö^ÆšÃ;Å^ˆ÷…]¨áÄ/ޤª z7ä8¨Q°D7SVWý’±ás‘ßhJ´u;¹è7HC¡A/¾À~ËS›’º?É%¿· } y€v_û¶É'ØAº½7!ÆePÊ8ߎ«ï|” ³±_ù[?Y"ú„[}¾Bš  éÐÐÚ(i2½æöhgp‘ºT»Ö´CàïJßÐO±3§×‰>E­n’lÐîl²ýr®Vµ nTÅ­™`!Ç´‘ árH5O–Ñv‚™Ɇ`©Nx]v´Bv®…3ëŸGùÙýgm±oƒ$o,GÄìÌØzˆ×{5ì·¹opH¡@Aø#¬†„³û²]ë1½t5ƒ1B[,*© Æ¢dÍÆÎþ[]n¿Õ/ÎÂ*Þg´›÷E¼ˆü[‘Ü£ÚPrc@öŠ P2ô=ßoÔkáÏk×~73-§Zr/›ì&®Ûg‡TÇ¡Q5¤LlYµdB/”-5*<ñcCæ8™²Æ@>Ž+ôó-üà¹ÈÌ.ô—Á9yöãÈÄŠFò˜‘4 óäñŸ]£’±sH@L ²Ô”pÅ0ªV¬³v!P¾gÚHHA.­>˜µ÷ã/"'c.¶Bhaû•Ó…þyy.`´ ÓN(³xKý¬æ)xŒ©†‰Õ«A´çWd« 3þ›a‹Z8¿=´ª—ªK›â£Ð˜WOp÷™ªõ1/¡cʙԡ — …nsðsÎúòfH¥É Òöý}˜®Ù…¾3±½ù™ð€ùz~2ªÔò†×Õ i—\•¾é™ÿSz?•r'ü¢NR š£š€ÓíºîkFhízWƒûÓ²!Ö¬]F¹ÎoHü«xÐwF_ß&"¥ç>Wp§O¸ì²N¢†èc°ÞmjåPâí@sµ;>¿·ø &9aÿÖð=šž"¬÷qà2 iḃڙî·~luÆù-Þµ ê’Þ9B‹šÐ:%tŽŸ±áŠ2nu›šŸ‰È™žvÈPí…¯–ØO©³Sd9‹qÁ¤ÂðV¨úìzñªÈÆÕ‹‚ B2hU=lD87rب>›Ä"“lšñeø+Íerc,}Œ`D:kýÊ1 ºP´Š!w=ùM¸„Õj`ŸzìîgޱNªCÐbtKSûÖIÑÔ>R#f´™£ÿWó$Ës7ìe²Üjß¶ÏËeð‰7ø»ÙÛ³œ ÅàpgÊ-ô*ýºÆñâªþø¬ÌCÖÌ(†Äw¨H³§F)eAZljîKÃBÏuÄ ¹lV ð²uNý?Ìžùò&C$¢ä3Cês`|dŠ;‘Æp'ÍiwµQp^Äç`;%­7I°-f’ÕÃ1@Ù §ý4rÚÆðÑ£•šÓºhµ†˜”5¾ªÚæ%¶p|ªºÖÀ¤Ödòs¥ Ìz$ù¢5–çªÍı7¼Ni%öª·«ð)'Säh(K–ºßéQ-dzˆç¼+×',ý²l’Úô`ÑC;c»òél¥›3æ ‡Áë¶œ¢ç¾eú¼Ö‰Dœ~pÁ¢Çã—ë5ÌÂÝìÔ"£|7¹\ 9Ș&¤tê± ü!þåhî¤)($²ùrìþžÑoÚJT r£]ç@Õ÷Kl°ökò¶ùÙZuÀÅ>µ®‡Ê1ÎLå@r©×äáé¾ÌdÇåÆz»qªK£‡>pØ0ìÄø¾Ûø'2„‡Y¤›†m¡úbõ€4¿âø›œ1r.Dépu oݪaÕ¢ø]¯ØÉã“Ü«#Ûü¬~zXIZ 0 ξ3뀭lÍ%­·U´ºHpðm`N ®xΊO/1§Hã o]¾å4ʈ)™U| ¼K£ ¦o¸ˆï¢5aº¶‘Qçü®²Âþ„(haù”¯õÞäí¬TšÍʯɩÇ'ǯ+£ï=ýă`r²ra±dòöT¡b(×Ôlp™úò†Ô!’u”c{æóÎ:ÉV£Àµ# u'éZwB¨bßdø ;iz¤ÂæÀ ‚¨…`N¼<ó3çlÔ"uC2{—‘+§£›‘Hip2nÍênÖÊ“˜(`Î^D¯(äÙ•…ÃöºzûÑë¹àå-aÛây ÒáQŠTç  v”1šE ¿‘4 R­³ºÙÕÃÞFІ7‰–“b'ûd+ÓzíiÉ8¾•ýZ±Ë;3ƒM}û§[Í BPÑÏ×±aQ‚*Þ®îáuý5b›s)áÄ&k!7¶‘iÀ¶F7ždïÙˆ¡{èĸ†öWnYèûo›7.á“NK«`V°Éfé„× t·Ó¿-ió½ã[YAkËõðãÛGZîG=zA¯ 3ú¶8RYôÅ’Í »nÞíÅà€LèôN81bA3˜}ûZJ=ëÆÑÆÞ“LšDpÖä+‘z¤„âôŸ>Â&ø´™)?ˆzD*“BÌmuÁ‹LWý$ÝÅp'}]<é±zÊ©˜}­óãü¦Sq“Ê/T- °ä(‘æ……ŒI5r4ɦèýáÐÀ±PÐiÌs¹#lßE´$ADs7ê‘HÙ}E\9k›#ú\£J endstream endobj 1401 0 obj << /Type /ObjStm /N 100 /First 1010 /Length 3899 /Filter /FlateDecode >> stream xÚíioÉò{~E|«'¦ïKB+‘„p†Í’p-âƒIðñƒíìÂþúWÇ\NXT½à ¯Âfé9Z´LÏÛ~ ªèÙ€†é9S¤°>¶s[z±Àê9_`·Cô Î*»Þ)ô@ìi ~™œÑàƒ=éÊÄžr…†²‘èisn“ìy¯Á"3‘ó>.æzŸ‡*2$§w¢|Ü,=Hغ=H©'%E:ÄÂVÞç’/LŸ÷¥èWÄÀÑ £"ÚžÊf(zàÙ²½@UdÕc/Eè~ ­Ù^ s-Ô†*ñšvV>p´¦®Êúõü ­MNÐm°}RžzìÓD²ƒ = d°™õòÈ^ŒuEå~’COn¸mÑÔP3¶À¦œÈY si³ÜÁïœÓƒ<Ú´Ñ\k”r‰£‹ä Û¨7è¬ ¼KDz,5E»!zœütï3]tJ0·ÑÜ®¡ŒŠƒ‹†ÀzZQ7óA +´çࢡŒŸk$£]ñVãý“Ï…|ýæ‘•ˆF‰éùdò®^´7›. ÏàO¼vïÉ\ýð¡Â²%7ƒ°]ÌgLJ%œSȃÝ=!ʯKñn•݃ÑÇrKî•rº\ÐíîG³óùq¹àû?šÛ/OÆ£íÙW–CÀkÆŒaæ`4‡Ýx-©x! q„éNÏCWªj W@V5 kÀÔ€­Wž¼I­[®š5¡b ¤¨¨ã jè¨1ë³®1ë³®1ë³fÌïnßm较;7Ò¹º-Æ»ˆžVDª«Úýð:N÷4\CÝþ©XÍÚÙ}Úȇ7X¶‰’C„Žéj ‚ªNíašÈãôÜPôª M7Vï®!Rìñð &7ïñšNîªvÏjü:Æ5¾·>çì!júIøÙE5šäa´xW…w€½c„ A ¡HõŒ3……0õÞl Áá7”L5ÍÈyä%L´ wWZ€c5VDºoñ¦iÛmÆîÙxdZx½k«‘g˜õÌ5LcÈ¢w˜Xñ+3Ä ­Ãïªxè34íæO¬È(ÆÃû3,ØWaçu4j/ÍÊT ä]1\†W„ˆ+½±¡«ï¨»6¨Åšcµ+ù=öÞÐdT©ªyà 0\­EÊï¶ÞNøÁŸ·†w‰ð"&(¬ø³HP͇dQ`P€æjE‚ ‹¸5­@8)EMÆo0»ßröÿùó?üA©Cv âçø1þô¢Ê‹‚¸*ŽmgÕ®[Aø?+‚°* Òoƒ}Ó¥”Ù:V ]gÔª ®½íHiX?[Ókg:‹Ûgö×.¥¿t¢•ìÒÜ5r¯H#^¶t##¯èTGXW•( 'ð·:Ѹǵòüª°ðà=ÜzòeÌYô6@›Ÿ0,h£.1ŠîЩCæÀÏím,ªËNBøkøY:Œ91)Š@+×0Ù;vDÆ¡ãòXIÝ9uBĤõ³ÜüYn®Oƒ™¡Y’ Iÿ¾§-ÝÿX¨º"ÕA¾wLŽî,ñhÑPßÅú=º¬Ö€‹çkÜxMˆ˜Åy5Ãí*GÏ®³¢ƒ¡®>áuÆ cçdÄÕ(|ñ™yÅëÀTóè*Ð&,-U¼`¸:£ªu&SÂëGü¾;~¯?D-À •©`öœðUH1áÅ\ ŽÖe’!D0y ©ÕÒéJ£Ë‘w*rÖýæJº£_œ]ÑzÆ‘gX+´¯YËïÇs8Ø‘*-µïXB W#Z bx×¹æÇ‹õÝrq<Ÿ-gs¾h6:…7Û¼zq´ýïým­`~2ú¸ŽlÓœî€<îrOü»JŸÜ[ãל æÛ’;£³‡åøã'xLaK"|wGãËGËÑd||oúqR @¸,O_â~lÉ×Õ&ðÀñi4ÇëúÉ{rGîÊûrO>å#ùT>“¿ÉCy$_È×òÉ÷òXÏNOGòD–òƒü0–fçsùQ~’Ÿ¾}*§r,ÿ#?ˉ<•S9“³i)ÏäY9ÏNä9— ¹”Ë¿fò\þ)ÿ’ßäßòïr>û…™ÞÃQÁèS†ÕÏJú…¸ÿtïùó}âkmÖKÑ[”"ý‰gHŠù )n_ãcùd¹OÒ<¿Ëç•L_ÊW W”êûùèøs¹œ”–5ËÑò{qq‘ªŽŽ'³Éd4oƒä)É*V–_ÎGY~=žŒN«ÀI‘³ ž“ïÇÏéùé{8àøãôZ¡ôlr¾èÆÓ/ç³eyò~BËëÞAOí¸+:iíž,ê¶Ð›\j]äõ[ñ²•ÙaÝ( ¾y²{ÿ ëè¨O\ƒœÅKôˆÿsMGZZ¯H icú¤uÍ Ç¥2J® nUY‹}ƒWÙ„±J@׎nMX»È®eíWÇ®Kµß­ÒùôÈÏæåÕÞr£¤ýäh÷éãWhozÕщþ+ü/Žbô­þÁu~,k;Õkëz!Ô7žOÊãÙÙ·ùRžŽ§ç‹ ¬ß(»¿>|öäf÷£þªÒ7 U‚¥^ÖkËi½m»Á„ãÆŠa~¾1.lj Q"4 ì¿`‚±É endstream endobj 1462 0 obj << /Length1 2924 /Length2 21070 /Length3 0 /Length 22721 /Filter /FlateDecode >> stream xÚŒ÷THÓ # î|€àîÜÝ]`pw‡`Á]ƒ»Kîœ@ ¸[ 8ÜÉî¾›ì÷ÿçÜ{8g˜§ªºê©êªî*ru&QsS”ƒ½+3+?@\QCƒÀÊÊÁÌÊÊŽDE¥vµýOŽD¥rv;Øóÿa!î ºBd@Wˆ¡¢ƒ=@ÎÍÀÆ`ãægãáge°³²òýÏÐÁ™ t›™rö $*qG/g°¥•+$Îÿ¾hÍèl||<Œ-ˆÚœÁf@{€"ÐÕ d‰h´¨;˜A®^ÿqA+håêêÈÏÂâááÁ ´savp¶|CÇð»ZÔ@. gw9àWÊ% èŸÔ˜‘¨V`—¿ê®@g"°›ì] KÜìÍAÎHt€º¬@Ùdÿ·±Âߌ€Š`cfû×Ý?«9Ûÿµhfæ`ç´÷Û[,À¶ €²”³«§+#hoþËhëâYt‚m¦ƒ¿¨R¢ª $Ãòs1s;ºº0»€måÈòË ¤Ì’öæâvv {W¤_ü$ÀÎ 3HݽXþÙ\{{Ÿÿ! °½¹Å¯4ÌÝY4íÁNn Y‰l "¤ß2K+€‹•••—ƒr€<ͬX~Ððrý¥dû%†äàçãèà°€¤ò[€ ÿ|\€î €«³ÈÏçOÅÀlæ 0Y‚í‘~{‡ˆAcÈþ;ƒ=ú¬öc°þúû÷›!¤ÃÌìm½~›ÿµÅ,ꪒR²ª ÿ¤ü¯RLÌÁàÃÄ `bçàpqð¸ù¸~ÿõ¢ÿÃ╲ö¾¿ÉBªô?Âîÿtí?ãAø¯/%Hß‚´¿ÛÜ€•‹Õ òÁöÿ¹ÙÿZòÿ¯ÇyùmóÿËHÊÍÖö/=íßÿ?z ØÖë Hߺ¹Bf@Ñ2 öÿ×Tô÷à*‚ÌÁnvÿW+ë „Ì‚¨½¥í¿…»H=Aæ*`W3«¿zão±æ¯9³ÛƒT\À¿N+ëÿÑA†ËÌrz¸@Zò/2;ÿ(ioæ`þkÈØ¹¸@gg +¤“ع¸>li4yþÕÄf{WÈ$;?€…ƒ3Ò¯-åæ°ˆþý¸,b¿€Eü7â°HüF|É+€Eê7b°HÿFì™ßˆÀ"ûqXä~#ùßÂEá7‚pQü \”~#å/„‹Êoá¢úA¸¨ýF.ê¿„‹Æoá¢ùA¸hýF.Ú¿„‹Îoá¢û/âƒXÿEK #dz~ÿÚ@â]ÌÀ`3°³™›Ý¿r6vî®`[sпrNö_bHƒ‚]l~oÇ/'®¿}B"™þF¦@3[ ‹Õþ9‰ÿ@êaê 4Ù‚,\ÿsý#þ{–ÿõÊö·Øäú{>Žåÿg¤4fÿ".E3[Hßÿ›ç/‰Ýï‚ý–ß•â€ÄÜÁÖöOÎ3‘åwm #ÀúOPî_z'7ÈÁò¯?È@Øÿ(5+¤B¿½@,,Àî¸ý¥vpû3,ÄÄòwˆÞò×½úÓ’ÎïjsBŠhååh²ÿÃ"ÿ!ä­ÿ€Þ±ùBêõ; nHal ¿õêþ‘ä`ùŠ âËržü.$´½›é¯“ÜòJ«‰Åá7iˆO‡?V±±Auü­†Äp„¼ìÿ³ÿœlÿHÿ»ûk‡Òúw¦ÜÉÀ¿÷˜RXG[·?ƒ¼±Xœ~'þ ¹\þ:1ÿõÍùKèà 27ý]"È÷·ð?ì8øþ‘þ—ÄśǩÏo\E. ;ðû•ë— Èýå‚8q\Ûÿ&Éùÿ „Õï° ‘ÅÕÊôG«AjêêáðLj·ßIAbþõBs1spþsc Ýáþ„öøc‚!N=ÿ€¨^@Ȧzÿæ ñä rþ›Á®37gÈ®ºþõ€ÜCÿÃ=î@ OÒÒ¼ƒ™@¨u]è§›Q"¦í ¡ªmíT:&Ÿ%ç·;4ø$ºêÌà5矢IÃ=+›’´W"Ëd>‡­ ðám ªí÷¾ÆñjÓÛíH‹Sx“…‡¢õý$ˆÄL";¾N¾ZA6°­ÐrT¹Nn¼h*ùØ7}Òžõýe_ÇÂæ·Uwª¹å‘ʾ0Ek¾7*ž¥Ê3Íš{EçÊD‚@uæ‰>{õs+gò™L.žÉï(šã£Þ:{Ìíœ÷j…»KÁk½W$°WXcÓÔ>b{Érø >%Eïׄ²Yé˜¡ÖÆúÉ|G;Éùõd±ðYm—ø¤Ç^ûµ×³éô¢ fn«›8Ò×9¢-¼b°ðð’ÎWn)ê3Ú G¼Žpf0Wt…WòòÙù¾ôâJ÷ðJþð¸nRß{Dßbiw¥YlUâ1ÜÉGŽør‡·Ë·Ð:£ôu­O¯õä‘ãŒçާzÇ@¹ä‰|aR:vazÕpüU-6§b5_»)¢A7þ0Á²”æWf§ó'Îã¼1½T^ù{oâF/ÛÄÉ"Y.S¬f2k³øc=Ü ´´HÆžœÂùá2ùZþJ¹¯æU"ÓíRGÐãŠá»×ÝÆey÷昔– uw‡BÍ{o#_Ìêe…ZšS´‰#•®p"e¸tY–7õê ÷ óÂû ñˆ$Ç?êNPçFË"÷pîÍ]ÿD}¿—ŒþÊÊÑÆ¢9BI¿2“ Oìaxä¢ZªGØR-M¾´ÞðÝxœ úŒJpK×3zlÅG¡«² ý1âÞ„%ÃJÿÔ1½™n½E¯Ï¡ê÷uᵃAÚÔúñ3ûPÔXÛms|ÄíoUüný>ǯuöN¯æ­™'¢s—GeÈWíw¢n8/º/±°<¢êtÌ»Ÿ“)“ÒÒø”ÆÎÕ¢y”?©ï¨ƒ2hx%žÏG§‰6êÙ''ºvüH¯¥*ÅæJf¢Ûâ±^„t§œèåÀ!.=Ó$ÅU†¡A+ûLK¥¾ë~ÏÐ º¿™àZÍ,T±bÈÕZñ^)øa†GþÊ„ÃH )Gʼnš°¦f³û "ÞðZM-£Lü£ø £j®G>ÊKÑãï ƒb‡¯wWéD>ÔñÓjÓì0†C=‰õK—¡09ÓÈ KšÃÓ¾@c´É‚-٥Ƙ(—¤Èp;o_Ò]¿+59}ƒ9mdB Õ@›T9Cg—vG‚,Oƒ.¿1ƒJó&3Sr]E‰‘_qÏ'RCš] M„Û g]˜élÎO'š&ðëÞU€³“UjïËk]¢œ‹{Û``Y‰ÇØ’R•¦ãx±IeååFº"_-Ü–1ŽœåSò”±O.}A#_¡*%º`Mƒ‡ùµÈ Àyí &Ï{…¥/àßÓl÷˜¬[Áõ hhÄÊ–Û˼Ùn5åcvŒ¸ˆ¹îÍ5ÁZý9¿”øsa@SB걆F+ô¢\—­uçgù»\ÍÎ銖#å»—HT&ÔGÄ>¡´¯äûù™ÅÀãò|ùž2ýLØî’³œžÆ\¤Û±¹Km‘é}Œ—ÙÅæ¶\4¦£¦«NŒÉ2?™Ê 5{¼ýß•”ì¯õú¤/^Â;¹“6ÖÎ+&Â|¾ì¶¼ßŸ5g…a†w8ö§ïëHÆúÞö}¤„ãx3ÚˆÄvRçç€(uD›|ê#J8墸Ib" ÀDÉnõ#ÀðźÈÄ‚Â*1ú²\L{¿ÌÖ鞣­ó°(jG®õâGˆ —ÐÁu†nÞ˜tÉãGب/~É«¬0wñê(÷¦Ô‹ÚoÑû&R!rðÊä]åOÞyƒ½’Ìt¼¢™®& )K‰U•¨!Þ8&;ä¾O•@úªqó]Mä¸ðtÌ®²ÄVNñ O¤ô¬°¹N'mµÕovC•p5û9Ȇb×yÐûù”]›ô9|£Ï¸œYa´:,>Ý/ò¯%i§;I(ôw|ŠñY96©ÃI2÷H$ò]E•–{öfiÎÜ“¡ù¬÷:ôÝTÚ¢âD!otázLì€ÆXD t!‚ ÏšOµ‚ã7ÌÞk-:*l¬ï{6#+!¡Gi…âö~œošõž‡j|Úñ»5õžù$Ëræg¥«¾»Åsò-¿Y7q pú<Î\øÝÍs#9Vý­o¦ÙB…p—Î9³Û˜§…´©ä³‡¶ÀýÛ4Æ.Düb 66ò>ð|––ŒÐ¶û¾åÔŸˆ¿¼BSÒ̾þùޤÓr¥éÍæ‘Ù~Àxo|9M3 N¸}‹úTÚÛûôÝ"íoåOð%KÏZ+(¥©Jnp |ÏËèœ<˜Q^Òè´Ó=Okk¨%A¨=]‘•Þ#hÊ=Ɖ¾fzOÄÞb…;!"Íz¢d«Ÿo×E€ Ïäm"Sá¸Ý7¸IÐÏÃðº]oOO2çñßíkYŠ5ؾÀ^ŠæÓ|”:«¦ÀÒw4ìA^~9â8aõ~±;w¢ëCÉy˜& oàä\‚wÞî·Ï aÂõw0 øü¤òQUWwyÚÏTc:‰¡W/^/†óã›ó9n6H™§‹MÎË©ÑBsë3iÐs’gFO{éB™Ð(6>ÒÂ"W"T(b—«ˆRXÄjPX¿§x! ºNyÒ)¦þ ö¹OrðÙ°„]!𠬊ûʹ°/õ.‹Ã"ägr9~kDã™+F³¢`¬+´wÛÚkî׸Í~÷AÚ‚klÖÛà îÝÇן9kAÐ5 õ€ÝR…mF÷‰< 7Õ=‡VþÕ ¡s?’FɆÑÚMõ‘ÑqVæ„Îê¶otÈæ÷xQ!”?FdáÆÚU ñ±:†Ï[ñÔ ;Ÿ’ö’Úda)†„3²‚~nšŠåLN =,ðú®|•žÌþ¶zj Ð&ƒ‚d?ðÎŒ=b­Ú“Lg'—\˜÷;fkò6ž+%iï:ž0Uëôu’eh¤z'Hß;=4õÖ0²fE—r'q„kÍt÷!´ïH9”ÛýÊÛ­0NÄ41ªìÙ`6°jâü‹Ú¹k—Möè+– v¹Õø &B*›úºùËK¨WÛº¯OÞšÐöT^M÷½Zà‰wÒ™„iˆ|£†e8%%[¥aãy–amiš-“`ŽÀLËÔ½qZžIÌü~ &…ªÐÑ©³ìò ^@Å£}oOÆe£ãf†ÎÜUÍa­WyCß*\e4VÄ'IÊSNA†¼·¯q¼ZšÅ"œQ}„,ºš*^Ó¤núýè¯B¨né£Ð°îÊî\Í]òñ2Ä¡•¼ÍšÚӋ¤ýÇ{Z²A€ö(’Yórb,èÈMCSošÎ!þíI ¶hCYÚÎW H0E\nkBr¤w• 2¸Ð¼%ºß›ñì[°§&}j™‚Ð?ÝÜ!d»>ñSy8JtíÃÍ/–ó¬Oâ]šQ#þúßÀgÄÄmõY7‚ˆ¬±ø’j¿•£;"öá-OÁœ³}p˜’YãÁSÔäEÚc®T¥MErýË‹ÏÊÖ)„UkË; ðÚ Â¹)—RÅ9­”(º²›ÔäÝëðerçºZ磼 G]lÝpæ”r lxÂØŠ CÂØý¦ÅcªÝhħŸ[-Ìš§frœ:ª‘-mý£OSâ¹t«å'…‚Ô·Ï Í‘D" á¹æd\Öƒï¯VpX.6Ú¢Æl´ˆWÝv,·ó¢æO0üh8m“¦·En«;•e×Zy2&Y|âŒ^x{1™;¿òDµ Êë#»Ãâ‘[›ž?¿ ]˜éºnPÏ*ݤÉ!$òö!h=4mü8cf£bŠà?µˆÄšWÛÓ{S4îM´);SIŠªÒ¥Vöz†ñ#ipÉKîžTáÑFµd*ow}Úàƒ"¢‡æuægÊârcæ:¸(\×d­•´h¨Ëít©_HßœåßFÔå½Ò&øÍ+HsG|J$,E· Œ(G°mtÍÎ-+l‚ûÞOyŸ@’YôQs®Õ?Ó˜#R+¿á„ ®ˆSmŸ"–¯°nªñàì;j©C˜\JŒv7u'n«¯¶ímèÁ”Œâ°ÈNø¹roÁÎH¨“vT0þ‚ z¥?›ßŸ Þ”žBQp Ž4ÕkaÚOIÖàeêW´ÕÜ*:“ABäí–©é,n7cµ¥²= /îðÃPYe9>¡älÉÓ[6<@øfXæH Á ÞÀv—¸d¦â'Ï-EÞ„i Æ‘d U¢DÇ ë Ü„9+¶ëzš«’©— FENè‚“´§?¤»CA¼ÆqÀ #d"2cDóÛr R0w±»³–òW¼ü0è8 ¸äÝœà2«5K–4Ïö¼¥éãMvá KñÕ rJG$?]YxyýàÛþÆÏ3×¢©§j*cdð*6`Ákm èí„Â8ÔõC“× åˆ*é¶c±?5|è X5ÇI©†Ä–·s•rQê„_²&¦8<?)œ5$ê4Ô¢.»•H*Ám¿a9â\H˜!¸5ÿ\–Ò¸ë^Í…SsЖÉÂí“°Pch6RÃ<»”Õ‰ç%yJŸ²³‹ Lÿ* YY­pÐg˜)ã[©žÐSSÞ  ¼ê„ï,>»%i(ÞÞ­éj@/³ÝE»ª#ºMÛ ]—\„ªs£áÝFîœ Oº;É9 Ät5,1R_À-ÃÕúáiäiS'"‚#rÊ'a,p3f-sŠÚgŸÎtŠŒ\ÙòØéDçÑ|ÖJnN7ÍBjrãËK¼UèUGKSÔÔ¶ÍéÉvm•ŽñcM±­‡ÃKq`<:ÜŒû‹a_³®½âøhÜi×+˲· z~Yïfq¹‘tN#‹¨ô"¿}CxÛɺì<i$æ0}¦Ž!»)OkpšdÊ9£½”›Zf*QœoÞÎù¥o/sÖé[*þð 9ç§&Áo´å–ÒF=} õþÕž*ûpFòßf ð»×uïtßJŒ&PÜ´$¾Æ¶hæ!MYN_óÃlý 3ºå°±ËñI³Á ñäËsåŸãyÃ'õùÃ<ÜH Ç iì45¼‰`…ħäŠI@òá-_p»ØlÇe|K.ÐÉLÏ·©çåkñ!ýiRpäè,ù Å5Ô}ÝúçB_Ñxo©ïºœ?µáÕ‰eFRå¾gïÓù?ãPe›êwb* ÷ž÷ àæ¨y„¯µJVrSdkoû ÌUÉrŸDÃ$êÀИGîÉß^ºø±¿'ðQ¥ó ”;p…×YÁs¸½WÃâ€ÑÈpâŠ7õ%õ?¼û ¸Ï~ßÅC`*ê÷6('ð£‚ά2÷î=  Œ ?ÙäìyLCgC| i4î9¯å{Yè×WÒŒIÏcŠ&^~ÒE™ø#ÂtfV^~û‘œþÌó]™œWl¤#Æz˜yÆáŠt¯qÎ-ÂI¾9T]xœUO°ŒäÓ…¢Q¶ƒ$Ì÷ùÓDTAs HÕÈp½9‘íóº t«{´—%+ß›â R¶ý¢cƒJÐD…lŠº æ°˜¬Fóû¹Y÷ ¬%Ð^c¢Z»»íkßJðõ«“ãY’ª'Ô´³Ã¦ÌjD}š»÷ùnFÈ(béœ3Ö¤dp TjzÚ&\®ES ô<Ã%Eé¡ÿ>އ8˜Ý-.~™ÿ®*ñŠõ …s:‘KÆ„ºxÕŒPϯ”{ýÙûY#Ar¦"¶×5\ ‰ß11e™Þ<áÍ%Êž@±…›SfbÉñP§ÉÆÂ¾¥¬Lö[Ƭ5™Ñ·‹aB3”Tâ®HiÛ›‡)úMªéº¥™ªÀ6Wº§ïš [*Úpé9ô9¬âl—äÔ‡|±È ƒõÇ_;–îy3û°Øx8Á˜ƒ‘[‘ºii3l#É‹Ý, ›š³hŒPb1q„+FߨØggÖܹŽ"Ò²è÷‰lú ˆ­A¹7çt®PCµ[a>‰GEBA)ãý|§zôNפd×DÎX¬zÔªxÖé|›…\`˜ùbr¨“¾¯SAñºbðt7ô3±HQž ècê Ÿ!»c?­êÐBä1gIrÁñ¡{.Ú7^í³‰0æY9Í])ú´úݼƒì¼–AüWCð¼†åPT´¾ñš^£ñ‘uqUÁS"Wau ¯ºb<ƒ$¿û{¤ÈŠPØ–™²ÓÒ€ï À"O4òsˆ‹Ç (cŒ¸Sà Õ‹ ó uΆ?̼òÁ¹»SmlúIí§°cï–Uðê#ç×-ý±uæ|ã·¦%¯]–DZ07ù ÏÎt›M?Tûl• f¸]¯´¬áyÏ_† Þ!C'M¬Bñ9Ã}{ÕD‘iìÚ”6’úÚkªl>Oë`¨üªgþË웂ÕMVØlÌ«2•B±ÍÚô$zâÑÊÙêAˆ‡¬õûsÀXü¶à‰ù®6¸mõÐZ®‰¤k&?žwÁ³xKLÝôø-²âU±>lC­a¢‘©kzýõ[ðUÎÊñ´ÒÈ„ö©XÜ›d8ŸbóùÀ›\k¦˜J×ud¤4 =¨¨ÐÛŒXuÖIûPÚîõ^Š¦î­…·ÄÔŒsa2ðUa!ÓMŸ¤õƒ-Þ÷áR'”ªty¶4PËb½JO{>,Œ Ñ¢¦äîyóëûÒ_ܽ™1mØ·+kë^å¥r¹ô`þ~FŸ6سÍ{ÚcK`Ú Êì#_rõ¾Š:ï–OV<Ú\–n…§ ®KëÍkg† ×ôÇðºPº5;ê(í1ÕYÔMžºÊzËŸÍAa ?âÇã›(˜#º>=["0$3é7ÐkðG~óóW_YÚe¤Â¢”‘7Ò½èÄáhõÄé#Ôwœl•¿8y—Kph·j”æÒ6ÌŸc”¢èÓË'™Ðߌ3M 3Æ;½*¶é*¸¬MyX¯íò‘ãƒ_FÐŽ¿á¤’èã´ÿiÌнT{—Íóôô‡SÕ «蛋ðÝfã¶¿„ªAsnk¶y‚Ö§erÈ%Ãñ›Œ$údL‰ö]±Œr:f¥íØpXÂÕÒwJ JôúA!´(?¨¤‰öä>"Ou3h‘·.ÑH¦äIh‹uEÈ££Ž_§±Îg|6¾®R?l†qîáµ<Ä›ÈuÒ˜>«ÎPš9Ð’ ’ÃW? ,ßw6‘9}*3[elj²¸ì°>¨¨”ÿR©É^ËÊ3D’ *àÚcWNŒˆ£<_˜eÚPÖ¢žõGº hÐøÞ6uvœ¹ r…I`¨ð†Dì?VS§,À'¶V'”ç½aO8¹×®„¼§$„JÏd/è[Qôk»[R^­Ò‰Xy™õ9( n?KºŽyeÅ7æ–ÃÉpi¯ên3\ë#ì=ôÖ’ûå-8YÒf :q.{Ï{5üí±ÆZâÒææ×ss`vÂSxeŽÖ8Q1ˆ»‰ °»Äf=oW•2™À”ÖT~Ï«žÌ÷þ¸½yO§ºýÛ[µZF]+ò6ŒÐ²¯v*±¡Ú(EöZOk©Éx—¹˜ ©Ò%Ój'si6b ú×.²ñ¬žÙbëæ~f¢ìïÊTÌqhP·n7³ì½Š’.d_¥i ³^D¡Gëœíˆ:Ü.¾­š@|™¼ƒ#½z«®ð\}£òêù%óJËhLœ’פ¯Mžèý›ŠRš4µçœ'ÕÆ‘Ò·N›Šß*xëKJ­´›¶ Yx4Ò\j;ŽíÌÊÅoœ¨Ú­§݃ÕáV]v,Ê@qÙpã"@‰Ð–‚k~Öã9 >Ó™üžætéën•ñ×)¾Ùåë +‡óKK.®ìÃÎ5J8ÓnÂÇüqÙÁþH:_7\g稧f xž¤±ôR‚">ç­ Ø Yl‰Nöx²ÒfdGž´Z7Õ|âž³p™¥€ƒ>6{ÒÓ> wÔ¹Žq+~”çYÙ²e˜‹ÅT&YöýÙ¤¤AV3ž¡¬¾`i©Ô>M:¼FycRø’¢õ;R‰Rÿt˵0¯ð[ªË‰ì-â|÷ÉÍÜ” .ØÌW•ÀÈV1½ŸÖc¯1ŠÂ+™ÁçgX¾z>*e¡õƒé: ÏKLã¼6 >©<<º ©øxÕ±—ÓWmˆˆa”Êy÷9ßž¼÷¯˜âGÙoº—¶öA~E ½ ½LòäÀÇóq¯ƒ@÷p®°¿g''týÐq¯“”Ì÷éjèv8¯ÆÚP0þóÜDÿ"åm6ùúMÜ[Òúý4)þåKPÆZ\4±ÎCàœ¢þómþ ó5÷ÈuVyõQNƒ_} S^½“(ûò,?ï>·]­ÙÂ;ûÓAðè€"‚B2œÆûèØ›,åûÆËÁs¡T ‡ðϳ£í/°»÷Ú᤽#¯Ø¥˜L–Sfqñ‹¯”ëgêT=›gÚ÷8e@êîWOæ`gk“Ì5{Å©!MÁ*ÎBœæ=÷:…é‡`·åį°‚å³7"jÙ¤æãv—1ï¨4ëÒU·]ŽÍ ]<™ ¦+Që¯ðÓm‰E Åš0CÔ¨(—ͽnìÄs±%$VÂi¼³ä£JíÁÜrEŽ»™_ñ©wÍýͨñðÇáEÃñ¥¿Åñ¯®õšâ{mjæ|Û» µÑ@Y4dÉüÌÚ„´pü2îydiy f…èI)¦óÍ îöíßrfO$ƒñ’0­Ÿ ¥‡ ø1Šú<ÇCß.ýJ]&¼¨Zˆê.T›—4ý¬8_Øii]YÙ_Eø±O,àt`ÁÉU¨LIõUp°à þÒ³ÒŒªvõ¬Èš1ï µv¡úÕÔˆÄsô*–>Õ•ÛØä«¤ 7Ü|Ç´UüNí¦!Å­tÌHøwþ€è¤¿c$*­7=ß³?.ë÷k(‹E?Qs¾% M¦ìÜlÁºh'SÄE[”‡Îûx‹‰¡ÿz_ =Þß›öžé6Ý4ЄDážc½”­¢4-âÏÄÜ*ý°Åî»÷ÊwªFkœE)’îáAͲ+%ÈVÿ<-{÷Î3í@¿ÌæÏË`2´Š¬r)q÷Κ‰¶ûkÆÁã\ä×µ;s-´ï‹áñÛ¨ÉáPÛ˜®”ÝT†ð.ÂzPàÅÃäTfü¾53³U‡‡¬ÖfYë¼ÕM/ÙÄTŠÌFrP²J×ôfÆ"x»€/“&ÒCìŸ?Áp>U*úÕhÏþWFÊ9`K|¿åÍ/MûÊm/¬XÀÌ44xBGÅEùŰÏÑËCâ;¡^6²M…f¸ý•€†æé£ü^ø3ŽÂUÔKXqûW$´ž3Â|À‰ŸÝ3G<‡Õs[¨·÷`1(óAÜòi4Í1_%õwâ*Ëu·ÐhµŽ‹G’HÛcOúvÐ;¶èZˆV–=įH‚cêé#ÖëLâm«yž™-ETöï[“jÞìe§ÊUåÕ?2–ÒÙdM*š(»ðAå¢ŒÂØƒ¾Ä=eÃöê²xÓ“¾çËÅ¡›ú¡¶¬éüöw$ë»3‰’Mh|ƒèOY*rƒ¾5%­Ble;­9Rå’9¡{V!˜ˆ”Éï³ /€-Žx-½i?ŒÁlƈ Y4Ï…[œ™#³ñœ{ý~ ÷ㆧI‚È=ш=]GVG0“¸ÙKu‡‰ïŽ¿S[s…¾¦pœÉòÓV“§ØŒ½ŸøL²cˆ²éNÌ¿3÷­Ííðp¤Ø=ƒÇ-(ñÖT÷&ןʵÜÊ™KƒŽ –ä`ìE«ÕÍÞà ± ÒÏ dÉ;¸Œ(‚`´µ}ŸÊA$öNcû Þv®iî]]´Â6&ÕyÏu5]ÜÃÄaX2‡²)ü\åtâ¦4„kS…‚ÂÞ¹q11!‚ܧºo†'.,Ú,ïžå~¶¾íY }ƒž[m[MšYž£°o_×År‡B¡@ÓâçÊ&ßw@‡’@÷ñ=‘é6ÿÉh‰Î>Qö’©ö ¬Ì]«Ve:mµ3Á=Îabyˆ'ËXfÚ~¨n…v–’‚òQ_㓺„bÊií·P˾¯Îê[ÏO.||ßn˜ñu’uÌ]@¤Ry[Ù;°,ðûIàŠ Ž†|¯¯4jk ¬ÉË'‚ShÉØ÷¢¹Ú}_ýoƒGD錖, ¼jÐ+0 ²´ª‚yÓpo´&7© lÒÌtRH31Xƒ}ÛUC3kÒNáÒ´æv;Ÿ-Ñ?;a¡yÄJóÁ0´Î!óf¥kµYw+cÌdûÙ¼TµÒRšjÊ··¯L:%6“ú Þ^6ÕòWì’ tjc î,§ /ýTr/’•¶å³Sçâƒ%Qâ^šfȨ2##=JO€­ˆr§k¯×™m[ëÙR"µÚŽEHlU9rÄ'f«:0@ãÄ©ý…T_ö/©‘Ž’ÞN(L!ÓGò8nÝ«;q̇MïÕîv•K:nh¯ ¯MÐ, ùÏ|šð¬%Þ—ÉlÂf}‚¾Î-Ó‰ã;@ B<ñÌ1|Þrûdë§)„Û„þhœ‹‡&Ú eA•ã({6MYÿ³Ÿ—¦ãeè¾^ÇųæÕTnæ‘Èè"¢¯bѲfû¦áÌCÏ1I:øAAîÇúN\q„òæsBï aÛ)-̳hk3Î20§°ŸÞ«dæ¶*÷Råê“>XJ§ÖvxŠ»HEö|ç«jò›ÝsC™ÞÓ½¯-È"¡Ê‹EUàe»„¦“,2è XÂÉÃ>ùÉ ¿Êí…;B~º9_·/®Æ2^`šÖÉ~ÆáȪwú«6ÌïXÝíGÉ‘éÌK:wpáךN¦I,ªÐB×RæÀ\ÍÎNtN5çh¡ƒ¹Ö\Ø‹Lé9Ón»Ùþ:å€!oü÷£íDýÍ›ˆŠÁ‰NŽgg¸*–´|)8üÍD©3b8­åûoæÊ`æÕ pwtÏÊS¼æø>ñ½ø6ÀÇX+Œ`£%§0×~aáÐww¦¦&×õ*C±ýϺ†©¾×Å" `>8¹­{JêGe1±­x¡ t8GIQ£œ©l ©>p| ó\WÃWªài›ÏÀ|b‰‹óQEdM8ÒÚÿ¹*yL¿…1½q¼0d…÷ºý#ðÎÍBÒªɧ*ñ`zÓÞ¬á6æ\%† ôðùñ Ž«[ºMÉš¾µª Ԛꈼ6×C~J&1 êê}98]àa­À.´Ù…ÎoŸ-*ÎŽÁå\nû'¿“s:öŒýQ6ûa€QÌþùV/U¸ºåJ*âM°s2RÁž Ú ê8š#Œ Áï÷ø‹Ëgd†×•”°?8™Ã ĮĜ¢,]¥˜-Ä{WSâÓ¤P–¯šñߦsD‰' äh>c~Ó¥]é´Ï¿zM1P®€Õ¾Rí‚Z+ýY¾Ñ(‚øHLê½#'9R[‹Öz6‰SÉlSäK<Í‘bIó Þ¼!±ê³Èä—µ?“Iu(ã¨V_\ÖçÓJÚ{GŽžŸ^Í#wÇšÃû3`Ö$.Pûò•¯P\$ï­N¯Itv3åñø€,.6Z¼wxTq£?á[_oÌò+ã÷Q8õÙ,©2Ïé3ÒEåÀe"úUiÖFåT"#ÜŒðÏÒÓ®ª*¾ê[G÷3^ œ~7Ö³¸ß:ÉqoVK²6eð tP/©a-÷i¸$lfáK#õ˜²Wp4Âõsó8¹÷Ê­?[êt˜@.¬eÎÉáWý®öË뾺Åý'ñß…rP>‚{%C<Û¹ÓœyVêQrC"ž_õ¥&ͬƒÓ¡óˆ²3ŠÄºxq?\ÜHÓðT·}4Êר\w5Ÿð˜ù %[—{?^)ó5¾SÆ-޹E&†9èÜ[¨þÚ‰ [Ék¥úasìîrj›)ü] Ÿ{Ò\W}XÒ„ënçiÆ `(à,?²ƒy0½Ô¥ê{4…D>Òˉ±¾î…%–*>Õ5æë_ÃÓÞɯ*„ ãíýJÖ~¤MÄp$ôì•HU‰’ ¡/£[ªÎu½´I¼&)”F÷Y  äÁ¹6Ûïæá{ùz=¯£Ë¢E²O˜h‘ 9»oÑGë[§—Å#K º>ó«‡ušŽŠ¿Ö•MCG·QºQ ýIH:º~éý¯¥ÓñÓF$4äe@‚Ù°^È"Ùb ÕĶRxå—†Q\báð¬Á #1ܹ­"Bb϶]Û÷è*Œ=*¯2ý´KI3JyNWüOv8Dœ¬ŸB:Å1\Þv9•¾Òs2P³â<[&DŸõec2"û2n‡¸_>Úoò³Ÿ;½ò}jöV¾¥#Áï>.ztkQl0 —‡¶W4pË# Ñ{c´$¡¦Ž\ÇT!Ù|ºá±‚1íBßE#0ȇ/IôÉ0I®Nù’Z@Sxè8>Çg<¯&y¶ phcëÛ q>UQïÂ_Π8¥úáƒ.Û¢w¯¦¢ÝåYĺ§YлdìÊ ”nºwæá Ò d-Y~.Ö K!‡PøòÞôB‰XRëvä ÏsªDï.é“ÜÓ•[<ަä|É^ÏBaÈNÅ:®J½U|ç–””»èŒ^µc̸ñz,—ci]¥U³\w#5j¦ãYGªë鮕Ò{jâs°;ª½ï–{—À4´êèÞz¸ô&Ž¡Â|÷e¥x£ó»ÝÙ)9—V05q-²zfz¦e[s¬qú(«ÂÁìIZ ½1_V}î¥fQ›˜o)Q$ºÒNîÌʧu½Û#evâ9¼BæÚC(îq–ÿËoÒ+l\΋¥/ƪ.ÆGTˆ(ŒkrÊ?*Á’PLJœXȘéì°4Ý”Zõcã‚SÎ8VkìÚ'9¥:¡‹Âvåò¼“±[,:^fè±~l•Æ£Â,†«8&} £l¼Ý¸3õØc 3ké@÷(bìÎÚ –­ÚzbÕòÆŽ‹Ä#ñº.ä1wIÇñåNå~n 4*aÞ3Ó´ÍŽ3Ÿ¾hÃÉÄj×öþ VäU§éi›„cåumoÐæP¥ó,îÓb2©÷27°qíÑ̶ØîÌ÷¤úÍpÞª$ôL~!…/Ç¿³­ŒTÿá'½!BÂ}'ãj).pDv‘3"ˆÛ9Ö––±ßÌJäöBëTºCùJÍp‚,áÑ™ÝZ9»¿ƒ€’•·Jã q=1ÙµWÚJBˆœïç;aüË[è6Ùhnz5 Þ„àÀèÇÔL•Ÿgz~DÃæéÏ;¦´Õ|ëG¯ä)´mž=x5ÜIÆÂJùJˆa|âFˆpÓKÌÕ¢|ìï,<µ'>M!…)(2GµÜ°ãR\#²%PV'ÏSJgò£¥ÕÜ7È‚(T†;h¬û¤2#%½°€êî1MEe…äêä å7œZ›mû5\3x.‘^מ “î¸0 Ôz¹S½ â!+D( Xé%O?ãì÷8ò™ómx%xªy¬sò*o$€«Z´ÚÞQHâEÍqgÍ{v„É÷qÅLä7}Œ]©­noý£ >Ñëž Yò6žØ¾Â]—d5—S¼ËÄð$z;±8ÞÛv9Cx.ӄȈ¯<ŸÑ7ß°£*|•ÓªžÈ¾y" QôìwY+ 5€é6Úq{©ÉòvNõÐp#øà­™kÿ1~DS>õzã ¿OÉãþ» ¨ƒÉ“8mÚ×äh‹L4R/3‡üOã¶j«ˆÜk Ç}$œEj“GÖJpµ2Üaøñua¶ ÏάŸ?‡ºš" ¬èhÛT»µÇ¿$öÊPÆÑïÏß•*#å†sÓrKÔF™7ã°uº»x8}!rØŒ“׫i¤¿iÕ„qè²WâÔ?ÍÛÑäæ¹—(Ã# ߤ L}÷úkÕâ¶å±¯Åø‡O†ü‹Ò¦ô“ÑÜN‰&££Ã¡N¹'&-# ¨Îý!ŽOñÒ£jÜŽÝm0Û'‹Æ¥†Š~­£çCøi-ÎwÁÆ:ð«&Œ#…K!ˆ)³Gnêý.‡÷äßÜÙc;Á…Lt Ktƒi_zÛàÙè—哽=¶ˆÖˆ»têØAD¯Á“Õ±öÛ°Èê‚Áç 0hâ/ü¥ÇÖEò}s”ð•ZwÜ©ºxï+M?«h.ÿ˜ƒâÀÃ5€bª1ÏM±u{êoËõ#@‡ZQ¾¶~ðÖIeŠHG7v8òÎoÇXعdÒÉã…‘6™}î4 c†Ò©3íìÍ8¼·Ø³lĵýä‹«¡V5bpç¥O€%Ë„$iç¾;• @ZÁÒîV%‘륗] yN#´¿Ä‹©¿»êñ¶£a£â©‘Ö¼ÿf”wR‹ï’Åït`;msG)9‚Oô¬&Zвlº>OŸnЇžPjº_ѧ„”…;` ×ÜÀ+òÝOñJ)g¼´CŸå^(W+:tŸ="§(È÷{)ÅEîÕ2òƒ.`„!U«†@¬™Á–Cç‹~G÷C‡©FÒG±M9$¼PñÎÄÖŽšuõŸl…¦ ^aQF£(Ø{yº šH´Û®ÉZ„ÎE÷2ÅŸ1¹Ï¾õÌ‘z؆¸-¸éºÁ›¼! 6]Ú¿ÌÓe|±Ø”~LÀ-§›µ–½Þ™×K;L6àØ†Þ…bøüõa>”fCkõ]£Ôb…<éëÜ-  ­Ëþ Ènņ–ô$Ñ<6ÛHSÐþGë‚“áùçU«Y÷q©MCõ}FTæAQRô÷AsÒù8djú&Ãw¶’ Cl7GôV8EÍTw"_¿¿xEâR$®^ž‰ó'3ŒÜˆüùžþa ŽnŽa>b}ò®Ï GfÕVç§/²—ùFÚ&;Iˆ}ÙÇ*¦Ì¤ôö|LœHÂõ&ŸÊ#²ÌL&®³l”1«>¨@_œ­½?žDAˆ²wC©…VÚ7%³ñ[‘51÷W´rÔ¦äΩP§^Ò¶5ê½>´8o¹&…FtÕ/¼ ƒrßú"õæFü˜cl¤o\£:¬ŸH²@¤)C.Õ×)ÏÿµmëZ5¬µ1,BÞK¤QÝ•[öFï¹våëþÞËxî«Êi2¸ŠÅ}N$œÑh•F´vÒŒ«Úǰ:lá@;ÿAÄK½b+áö Ú¢…Ï$Ü6Èä„®Ó4S9”1Š{ ù+ùΗ{ÛMž]œ›R$N¢•é& ½ï¤¿)ôX—{XQŒ¾s¼ßª™F‡ý8†(üf߯˜äõšxEþ3E$Ïí¾ßÜ"s ±sÆÂµ‹£¼ý£ozGœmª(ààõ–/¡œ-«˜ËüÙºPÊØYáA¥¬/úêV? Ö¾ Tágc8ÛD.À0[búë±h“—éJFÉ‹Áì½ã̳pgöž …}XœeÁb…Êùé–IwŸHî·F¯‚|[žíÊ/"ßÞša€;à$ìø±pý¾ë ¿è0^3„<÷~öº¬Æ<%o§>“bpô^Q‘¼g.>ñô-"Ý0”œëç´+šzÍ@g(=}T;ыܾ}¦¾L€‹îWò=np®]²“HXå¬þ'u›—ãs-ÿ0·gUºÄ–JÖw´WEÝ6j¸üïßÚjb*¿õž~m“Wô¾IwLNû˜¦SiËŽÖuç¾çTAÊü¥ƒDKán‚G„}ÕÖÁ¼zi©Š%¨\hkgµÉPzÊqõë¬Cä C­©¡§+Ì@eèöëøk+cÄÅ%%1…šz(J̾›Ä•ÒFç~¯l°„OÍ$à0gêëÓŬ+VyÍma1¹Ë¡ ŒàU+ߦaø¤Iø~\3ú’á(|6øÁãÓY‘©L·Ç2i^½£!H‘~4*j÷¦ãÁrò¡\ºŽNÇí7ÊVy)Ó‘iö^žÊe¹?ÙòÝ“¯p Sç i7èÏZæQÝ\Ý">^Ié|Ø’D£¢‚¡òŒüˆÔ›yh÷:Í“ï]ØâÒé:tPÀ5ÜögS–ÿ·ËÕ+6˜›R†S¾;“˜6Ô¥|áíE̲­›¤îÙ.!%‡ Þñê¨/îkXCA ;V›d¬çÁ—Üc&»®ÀÑcâT®‰ù÷žÖüRèú¥ŠÁï¸ÛßõÞœ¶tN;M ûÆ'ÆvŸMò< QqÀ§‚I3‰pP]c&ý„()8føgÒÄœ¶ˆ†OŸTI­Þ‘öW|âê«[’>:ó1²™ÏôúZ†mîë®VÙÍÉΠqü#ä še…ÈVS3³Ü2£ûøóž6¬!øùî\KDNáîÊ‘Y’GQ=ŒŠ4>_±dæânÛí¸þŸál§½²÷öÌ¸ÛøÒúšC–ÒÚ¤ßYã`ŸÙÎ)¾yÿŒ3` |“«üãŠW 7{ŒÚÓÿé\ãc·Ámm¹1»tEëG¼Þu•O‰VL‹jV|E+G½oƒ· Wƒ~Gþc†ŒÑKŠe·ò*öîÒ0T\ÏòÒ ^oþŠ ºßïegëPª\úú_æzñlMHŠù¹˜ kwÎ.–Ýg+?ÏŠÝ}H¾[ª{w “¦¼‰RNXìµÛ5‰³5¬yWõ^•‰3æ38VÊÑþÆH;û›i÷UTh/Òwo÷ít*ÕÒ#Ï+íSnœá Å_Ü_ÉÏEݦW“„ %n%É”e[ekÊÂDTùaF¹3q1ƒ… õOîöi¿”MBQy¬ÑWßÎ_|i@ýXG”ZÁ<͉/¶VÍ»©P¼H»–É’Épaïú.bÉh.é6¡Ø/¢_¿Z²u—&ë*kx“Jú‰ä F±§Û9§—fÐmM®ß¿#¯Ìx°±…M3òÅ¥æ<š±öˤ„kÒd­ÉÅŸª‘PæåÔ‘[ \ì"$ÇØ(ë.¥v7î/x'úqûñ )Ѭ¸Û4–i–a‡7:§]¬>ÒoFÈ\¼ç~ò½Ezqg›ÃFz¦*êÑcÿ’ðªaìÚš ž X/<²C‰eMÀjD¿ ë7æ)f…û–MŽáÃäè'i_èq‡ ìã¸ñùæwÒ?2ï\I°°f4Jh%5±—0N „Ôû2Ááƒ9V¦»ÚíÎÉÐØk†Ûbv»sΛò0 M}P›³·!vƒF.^³$ÝûL‰^ʚפ•$ÃLÛzìo¤eŠûyµ@¶AŸ|̓–ðÇùTßa¿ ƒ² =þ6ñéñ‘–ýÕOÈûesÛ¨ö­1S›LÄ#:4ˆØ‰ï¼"ò^1fV¸{uìÙËØ´z–µî~z_%®Τô¬‘åžbè;M[ÿ= ÿ¢Š-gÀ2 È#‹Û:à“[ÓŒ&“‡÷™ÚØXóóÕ]ã¿A Q¾€ vikþú5k±·‡0p„*d&)&{XªR”gn…ޝZÈ®¤ÜFh§â¬Bgñ;¬ç^Ô¥4{‡â¦fXÎãÞžÀçÞu0û«}ucÜûÅ)ŒÀú¹2gÆ!F_FǶ.#dRº’ýä¨oº·ôÖõÅÔkú%žó?e„ ã|3H6©ü0›€;öÂD¶¡¬Ð}LÕy©ûp¹=ɳ0’þ2€AòBÙ0¯–r8©òxLáà苈ÀS‹RôKΘð‚O䇟#Öîp# Ø@ÓñÚv®;Þç 4¬•Ž'DÅúBß°°?~‹ –âÜ2òóiÛƒþʹÈÁèíqœ+¹ ?QiëÔƒJŸ˜¡nüÖTeÜò“µz€%r7GaöCR­õ÷>•S8Ç–Œ¬fVÉãZdÒ5Cªs“ì6rVVF¿ÛŸ© P[ú¾ºvGõx8éYþä4É•AÂtFõ¾gÙÚGÒ¾Åé‚¢'ÈZT6h2Üï‹+¬çüO³{¾Ù² ê‰âÙ¶«NµÊºN¢åÕÓêÀ,ì@Wć°>1û‘[EkG«Z¬ aŸ©ÄѾœ‡ÐKé6¡l\à/~•Pªç{ýš‚¬”Ìª?«ÿñ«¦nj¸;òe|W¼vhPÅrÄûGìÜgí×\ Ë­ÜS?o&lp/à%S<œŒ$ôX¢çòñ5K¸>Ùzþð-Øbý`ìáê¿;m1J>žpá{læ:ò.†ö“^b>ü:²z±‡ÌCzŒs69tŽ9Ë­z¢g¯àqÚ6ta´¡7å¹°Ê7B”ÿ'¯PéÄ ‰*~C7yš¤ciÇ  ó#À1]›I앇pjS—LÈã_bÑ­ 7P#¶.Ø@ÔüNrA>ý|ïY]S2~b+Ðíäw›*P-3ªöáL,fxLÒN»=;/SûO>@2=ù6‡Þp9ßDŠª óì6lðqÄsSØUg¥~^Y¶iøëý'dšâ7ɦ÷PGOžž]q›ñ©á¤ÚŽeô_Ùå63×UÁèö¢jx)×¢ì#/,ðäI=Å~›+þãÔ„eÿªz yN›ùB|™Vlë±.TÁ3ëŽxµL9›Ò1~Œî¦ôõ¡sNí×ÎÎ õ”TŠó®üñ« o ë«®,”±+àõ¨=„KYLQù”–¡'hê÷jê·«û…ôû›T*¥§ . rŸG§Mð; ê(õKd:›¾«ÛhÍ€Û&ü€+ ̹õAöS’Kü¡4gU^m¨ Æ:¾<‘U£^¤¿ìcËÈÊG€qD¶M:¾Y3(‡À-5'j[ÆÂ÷³y=B!ì]GnŒ%£Â¯€EÕÌ„UÞ¿µËP&³œaQs£IˆµŸ·D¤Ñß×%sP嘜’'C{R9CÚÞ¤´¹K¿Â¶ ìq ÕfÅ‚¹òäïë.;×½+©Géw$G kêüóì˜ïøýEålp]±YufѨÌ£@üA|X„¢µHd)Àíäÿ,sGªå]&YP¤Ú/ü÷ =::”õF|^>å ¼Zß‹dH>3Uû1=O±`¤4T-¿ž-o #ÂáëŽÑ'jU6!®b¯B›´„™È:€ÿÍÉà8 ‡š;_ö?y1zsìnŠæ¸$]†Aqhîœ2r9&*qÈËÝ|yÊIR.G›6ï ÙHùÝ…líï"ü°u€@´ìøÑó j\¥±Ô¥«ògàIìl=RÙ•s4e_ê” é(ckÿT µè\ObóŠâÈ +†ÜèYñôŠÀˆËŸ„óp7»é6ƒãî·æÊX2ýÙ]êzK4U˽½ÁJ躕i0\â’“â—"¼Y)é“/ƕܴ3¯;'UŠ?VK;g‹bü> YÓƒâFЊ12r;ýô7ã ‘BmÓ1—hÅuw}è%UM5ap²ßî’åëϳVÁV/ää9šÙFDó7¼5¼@½Ï/nGº."W5´Ó%WÜ`±Q“z¡£8ÀhvÛ´ÎùèKO3SÜ€#t"3ãÛ‹¤î’ù›re…ñðå*¤"„¸/ðä“Qm¬Ênüá}Ž‘÷mbŠ|ºæ’Xc·(¶ 1«ÇG.PôïóÅV7Ø-!tíCú?‡ÑlÌÊ:MÙ"ZÌAöÄ4ÇKk÷¦´Ïœà¡èÙZrÏa…O ùëˆf¹ŽÓN.zH2RRRztľk­ökú\Îüâ{.Öà¾p˜ù`™tÆjº ­Aõsn¹dçv=›0ïlðö¨r|ËÛS@è-¢#3Q«¾ÌèîÞŸâû\ÊhNË×êƒÁ6÷¥yïWân¤’A-ZQt¶¹ÿµzF¨èåæù»©ÊظU)@|¬xI™‚T•¤Ÿ4‡W>5{؆Êí©íÊJ!vià T;HÝ}øùÇEøÕO1>,õ°ñOw%_!p´±ÄóÖF”!æ·‚4ìÙ¼êZ–~ •Q²ÙN3lKé]wýHk.Pkå£%Ù6;4óêp .m³¡l²ü‡ÏÓ§sÆ$¨ ·áÝ•‹'óKùu(‡ a:=X¦à²à–Í.U%9A“¶úd ºÎÈ*ý^ú„™°çc)êàýð:’T®É´Š̆ÿ[ή§ý˜òU·“§–,‹¦'ï×¥Ïî\ëRµ®µ0®É°K¢Êà²(s >òRÂÂ’Des ÂJg!ºim¦+îp?'Á÷:pÇ™M–)¹ËÆ@TuÜÓäMŸ„U™Ô?[ùu·„ö¬ÖßY'x³‡Ô†¥Ö Ôà"Gáº0ÀñhÁn!iYnã}ŠÀè† ‡4¾l]Ô¿j.ÔYñ§7yÛZÑ6p‹ 1=Ýã9Ó;V¤Ðœâ NNô[ú(ëÑ(b66}?Ö ¤E¯À%S±¹i‚]"%Óžžè¹o§«Î—á¾D£®ö ûÿš©Ç½"8Z˜?•€}" ‘V÷;fKAì-Ÿzéù"ŸáÂdóÇw¾ìnñÌü0Åí}ÀŸ¤b§þÎèûøxÃD¾ˆßÕ!p©ßصѯæÂõËWÐè¦h˜©’ØóÇ©›Ì +ÇÈyaò©õ˜7@"8äò7¯”Œ{”’@P>TE<0ùþPÌ4÷ Ý·2ºæhÛ 1_hŠÑú‹¼J«ã¼.^`ϯ@Dÿ)ã _¿Þ‹ñª c¤öàEO³M±¨XbtÕ{—KáL|*ÈmÓBk•Ýu8C7Aˆó„Ïùy“cï´ÓåFØnÝ ûÿQ\öšy†ð9¯Ú7[œ.Ë$Ê̼€ˆ°À ÑU¬dP)B^©Gr‹ÀÆ%t]­çëã_Îøcfå¢+¿fîï/Ñ.²¯R^z7èþl D¢‰Ú‚dº¿ ¶Ûrï£$¤Ów‡.P %€ rH¤Ú€½¸ *ÓØ¬ÌšZ”иމLe<…¤ÕãßwrÀ©/¥y%Ÿ ŽÀ\ö|‘õVXÙÙ¶Ð_)[³¼ù¡áÕ;µ )¸~9ù¸‰qAù{@ ÌJ_v ð¥&ÀpÑ[¤ÝX¬÷ÌãÛ! ttg¸zGöòe ©·6 obB7r]È&`xbaל¬YÕyØÇ¸¤éèüjó7 ®­\fž}¥jêýŠ—¿äÒ0¢QçúÒùªÛÚ bQ+C¡°Sþ“w#ÓWV[m:¨>nJƒöGëSÓ`ï üQu»–A×-”õ j ºISîêøO?¾\DÜó Cþ{) Dp:ˆ¿BÐSù¨ÉD °tdki[­¡^¿Ó¼ú ,31R†?O? ÄÃãȊ˹ûo…çL•)P³³›¤‚þ÷ƒ‹1#H•Ôu”%JËÄflzAr5ÒZ4›òчÐ) †UCå UïÌ×\ˆb ´Xe"Qz ï€K­¸Ô`|¹ÿÉÜÀmlèüTüÙYøDðfõèS˜5!Oµû*ÏãAÜ.½£Ë0¬„Êc¿ö3ì¼R]à…U«“ÅÒ†Ri9Æ»¡<‘vQkÈÂ}jí+¹¶}ÒP_>Ê\ÉÊC•3û™«¹qF„2—”u‡¹âoÌèÞÔˆÑÍUØëlÄÚUªð­U©_ÄA…ó¨ˆ>éÇô]Àí´\äÜÂÃGÓœ0#ZqnÅœ:–¿2üñ2sår~Á1¿F5Ñc2çÍýs‹ Œ¤Dˆ™ã‡š½¯òR2;¥K-P £‰‘)FK ž-XIÐ·ÜøÐͯbË6µ€â Wˆ"ib[x÷j´šý†D=×í[Ã/´›0–éëy ’;Ô‘=–± 0ŒòçÕÄÄÂÞ#JkL ½Áðƒ'O 3ü` LU¿*×£@jšÊ–Ê–û±Â,s”Ñ<µwýdvóyü8ØiÖŸå%›DrÃÛ¸"ö¶–ûë{/¡q’÷Bþ.fýôMbÇHÅQ6Á&F™D¼“:`Jõ¦'¬¨ÜaèK—÷âŸ\óéßš‘Þ›©̆ç¢ÄäRòè•yE¨¾jC/P, 26êÄ?éŸqñ$z2]!›ï¨.YKèÅãv.Âæ8uÍ·¥8/ÌØ÷Sæþ %ăChC|¯²>ëƒ!5§æ¬ÑCg‘ÔkûÐ6ð~hS`ðxêPh½ˆçØ«5äaA†y/ÁIPcPÊ·}W˜y„µa±9§÷ dÁ´ÿÈLõ¤rRF÷=k4æ«–‹M(ríMôVúçæÓ€è7cYgþª—h?ñ4CéxéÙ°äñø!²-}<&ø&û—ý*5_|x¦•H¿èÿSV‡q YÇ÷ªºýÐÞø»CèOßÁ¿7§1[ÿг<`¹÷Ú†sÛg“.Ò¶•a`©Í-ÕcnÏK!aø^¹@¿_‹åþJ¨Ñư_Ø á@”쇫×OYÜT£¥4‡i/EÒà€ü iï“?ø¤‚šž¸ÆUP…ëË ^èïj‹ácZyWl@:S› „C‹`¾fйò6(ÿ€RµèµÍqx@÷âJ ˆy>q?øwJ °ó‰*c"kÏç¨óÙáÀED½–¿A@åŒF'¡'{sò†:P`Þ@˜& £Ò«M2dÎy>ò=“àõ½½Šµp3›#YYÙF-ÓU†´V¦Š¾Ë_ÂÝ÷äùÃûg|7­lBùÝkåðQÌ{ŒrLaª¾RŒ»qQØ(8–¦™VŒ÷%r*^ Ìä¦ÑoJêеž–<ù¸Î÷Ãl¡z ßð®ëÒR¤ÉˆÀyш¿ˆv+µ^àØß,,Zã¯\׉ëIóÕÜhì>ñU‚Íх幯š°½Ýëà“üsF[× \§ÅD‘ô¼Êœâá[NÅÞ•¢cö³®b¬àWB]c*"Jé {”×)碿•Ÿaª$—ň ŸÛd×zþ+p­&Ä ±T'¬Î¨ìv…>P9]é ˜0Ðg—Ìšµyé]ä E46pƒE“‘ÕÁì4¥«lš@Ѳº$¹z ÝAˆ0ÌèÛvûQdÿ}ôMm÷"€â^‚<ß~„È£.> IFâŽæ€cù2l7Ïã$f‡Áöí/ÐKÞÁÃŒ7$?ò2­]%«ÎÎé:>çS`Ã*o ¸ËkeïðŸ!`Õ~ï°M/”£å±9 ÄïpŰû|Ǭ ð+¹—¤©f>L/œø{A°{0Çc樨Жt—æ gX±Ü•ú©oH>ð;¸}:lv¯‹r“'„NZi'Qžx¶õÚÊK‚?˜ø££FTï ©õ‰¼—Muª‡¸xÌö|ÍêÐpsƒnbÊ«îÙZ@oˆˆÛóƒnqGòy A³œ)avÐ3ÌçÑJÖ\ÍC‰»WØCgÔ\êb§Ñ](ˆz£ý¤kÔ9—Õ̃)šÆZžØ—)ÖžƒÞ4Ü쮌 ±èQ_òÞóF ‚u¸®É´,û{}ÊÇ µaxùQOæ»Nªæ0{sï.jGcIÐÔYö‘ËüjOØË¸‡çÊ<ì;ÃS+J¬Ý(!·¶Â;L()3ò.†ð?J—Z[ M º ¬ü JKÛ皬`[½Þž¹¨€?©o#v›øÏˆH ¹·®¸_ÁhÓ]‘—¥òñò褪Ïñn@­îçd©_ÐöjzWÐâ>ñD<¯£¬‰±l%/àåcŠkÁ~ChSn&EY‚Qµã»`ïÅ3XY§‰œoÓTƒë¯)‹Üãé©Çœi\úµýÙ§ Yõ ÒÂæ}YQçccÎ~¥HWZf}àtÁdò ÍâÕày À¤œS­ÁE{c‚á§#Í ´ºµÞìn³B„CÕ®[3ôBÕ¾6alàœ½1^Jok‰æc&­töÔQÈŸ*Ñ|Wt’±øQ!rî<숸KücPÅþvœµu™³m€Œh‹Â|ƒ÷¢2„ÚÝ©±`67lx„ô¹­)‹Šº KH´[‡ôO!õЭ‚úl¥ Sÿ° —µXuà&ZΩLJžš*3]ìjl@ÃJ?|xF‹’ÉÄÔûè†]¬àm@Q²»U¦‡¡ÎìîOÁXVß‘Wé¸í;ä¼1‘ã0¨®úy±adRÌ3à[qîÁ^¹ËL2¿ë¹9a@cþîGbGÄVħziguh.ÁOka\¿¹€+v kÓ¥`“ 0ôgG5µö²Ì®ƒöKZUªsc)ÌñjÎl?,ã'"ÃO^»Õº¥X1;àÖí4’ÐÚT묑<åVêâo*Žt*`tÉO?­¢ UnúÝ3 ¾­6XCÍr2t{C€ñ±Èµ f¥CÑóÚÀºÀ«!ß”|¥Nn 9$uÚ€m*_Êö@ˆµ ÖUIçÚ>7FÆ$ÇØÕÎ_r÷–¬E=ÎE•ù%enEr­Ë¡Æ†hL[ ^¹‡éò¦¡6ç2ÂU³-BûL¤ò¥A¸ âºßq›)Ф´™€¢²èßN[T°s8þóuõÜ^t@«´zÎcõŠÉ„ùÐgñR»kïè]l[ƒÜzT¹^Ù¸îâ}ψ^†dNð”ÅõŸ4Ñ?±Úsel[“k»tÈŒÿjߤ’{W€^Ùs9&Ò* endstream endobj 1465 0 obj << /Length1 1548 /Length2 2806 /Length3 0 /Length 3785 /Filter /FlateDecode >> stream xÚT 8”m÷·õbRB -2 afì¤û†P‰ÆÌ3<Œ™1‹Dxµ!ÚED¥E¶lÙòV(J¤P²G(‰PH}¥íýÿ¯ëû®¹®™9¿ó;ç>çÜ¿s#åÕp$š7hA£²Ô°êÀÔÞÅ«`0šêŒ‰tXðŽ@º‚ &D£üÆ0e€Œ™X0ÑžFlØ« `u °º  Áèÿ Ò€!"öê€ 2HS=˜ùø²às~üPDe«¯¯«ºà@D$P{Ë €O$(€3¬à?R  }Y,ºÍápÔ LuÃg‡²*ÀX¾d‚Œ ,´ ì$€Ë­©#€‹/Ä\r8ÓÈ,0@ˆ • ‡°©$À§ÎÖv€¤.‘í–ªÀòp¬:ögºåè…Du1˜@$Òèj0DõÈ,ìÔY\–*@ ’ˆ “Ç‚…à K'8'€w¸Ü“È€è,¦:¢,ôˆ^HÙœJ2¥€T±PŸĉð܃ÑË—ëO¥q¨¡?,2D%‘Ú ±éè]T( Z›-s`ñ óY€6ƒÑÓÔÀ@ä}Ñ ¸ÓÁE'v†{ ¥Óèn ƒÈ üƒe‚@€Å`ƒa¡¿;þ´X,@‚ˆ,Àô¨ˆ_Ùa$/Ùðý3 .°Ë `>?ÿíƒF¢Q)Á¿è‹WŒ67331sغÜòO§‰ „ªa5 M-@[C ÐÑ×ÂþÌâH€–«ÀüŠ´¦’i€þR±ð”~´¬Ôòz(æÚIƒu ¨_2÷ÀhcˆðöûbÈÿ§ñ…,ÿUæÿ®È‚M¡,úQK„ÿã'@”àe¬[6 Þ{¼ ÔSÝÀ¥ÅµI;àß^kÞÕ‡òsÓâ‚$GˆEô]ÔÆ¼kaÏ(t¤1¡…—PÃb0ÿòÁËEô‡_&,ÉEïΟ'šS‰4ÒÂ’ih냌ÀÀJÒÐÖB±ð6’@´:•Æ‚C¸»0€Lc ®TG@ã %K@›ü´ô´´ËO Ë þf‘Ð/‹ÐÔßL MÿijÁN:üÒP) ™õ Å.£K"ù kÂ0…Íü-\ã7®r‰þÇ(ˆlœ‹µ¨VxN?ìÅǹ ñ²•FÜíW]ñ%·£6Ш¡µªv"fRÈí¹tÐ[§(SÙOš™±í¸ê烱3=âï4®}/ñw—Äø{vHŽ5|YX±‚ìݯz I|ûì;¦[cÐöîÝ=û5©$ɱRüCΤq‹òzÕÀñ)ֆХ9ŸoùŽ *¿Wák<+(¥§§)Â]‰K©Ì1Éǵ<¯²V`N7ŽžÞd1<“\Ó ¡ÝWûê†*/Ô›¼addÝv2edGÒÐ=ÛýM@ òÍ=s©¹¨¨ÉŠèH”7ó±ã‰+Z2d—‰’wWØòÑ‘ŒÒÑ‚7VOofkô?3štÁ¿×VñÙ{r@]ô•‰PNYC£Xè„#ªÂp·šùѦpŸœ'ÓWŒ¶ìf§[‡ºßWÚÜØÚ¶« ¥¬†”ÐöÅ¿ Ê…2OO~ÈÈ[q4®wb¶ýÀì%ºqªåíâþzÑOð>NLMl©®ïMŸëB=ãö­ðÞ„!É&¸ÎÈx} ½G%ïýU÷B–™C†b1\)‹ÆïI‰©­Qf y•$Îö8/Ø\üZ샕V9÷zL“œJ?uªÌÑ>µ¬²¼!q¬ú|*GëdÇø‹°›“Œ¯ÎÒÞÙ-ÈÒ[«î„¼Nœä¿Íª®¦ÆO;…«n¯®q•›¼«.òJ&ÿŽÍÈ䚪£cürvbų©}yÜs7y*Õ!xä¬oHà¿+i·MÙ9|Íýñþkk=zÄhôÙÉmäU*yòÞÆIJƒε~kÞ‘·§`‹uäe]e|:M>¸2¢x4ùKHÔ`Ï´Ò…;Y-«›‰Ýk…ßVÙO ÍOf¹2¦^°…ZeìÒô÷F²Ã6d£„ã%v ‘“…AÛæ{/—†¶FR9‘.ΞŒæÊè‹V_ÛÌ -¤¿¶ yK¤©&etänãÖž›šµÉÛ‰ÿ÷åg¶ªY¾‘/6\—3sÔáz¦–^Ó—é![7€«I<8vNæTCUj9Y±ÛÀNûr~Íàh¥I’E‰éý‘{—çð̵óQÕeÛU¾RÐèNÑ(C9¥»©µ7ÆÚG óÍr3é‘mø´3ÖUAQ C•¸¬[(=™ ®w;c#_ÀìÊ}M(–N3Ö¹×¹…i6( ´Ë#;/˜žðµg¤a{ëø#eÇ€š'ƒ•Ùg {úuºSš=W¶=5À Å}»)I†‹ž±z=Þ¶–í™QoTüù@ÚÄs Þ#Ð QÍVh8Ù¢8~í{2`T´…K±tÓÑáŸ[ñòñƒ¿t<Ã=ÒÂW6éI‹÷õýÍq íÕÝR4BÙ4ª´™kÆdP:L0±ø¼¦BAT®A¼*¼i.Í,1Á¼ÖI4¦è Uw»µÄFŒZàq½ôjQ¤`­±œµ¡lL÷k«V–µƒ­í~åÜê‹~x0ÝŽÇ_êí¿’Ïë³áœtÝÇ´Qá}õÓGþŠþ ~ÿx¶yö3þ@›M%ÊFU×|~,p^ÓÊk_åµÙéö‚Zam©b¹u=îçWb@NÙß TLí˸ÃqTjl˜IÉM-ÒA[!Ã_ÒÁcø8ÝOÀ} t÷NÁ¸fA÷Á9 Z¢wuâÄÍW<Û1/V¦Tâs*m7¯9pðe_À9I½°^”‹q[­¦Ò(uúv“YyiÙÖêe…_òŒX}Úú)еÃGpkæ…«øÂcIÈÍgPN‡‡×ןaU)¨ZOW¼úÍ¡úÊî4%µx§súUå"ŒÔll£Ç£@‰U#Ýø²ud?©£ê×;Y¼ûÊG ˜mKÍ|!%Q,o 4÷œ8ó(š§Ç‹Ó…¯ëº6ÉC¾âÌu«ò*ŠÙ]× ’¥P´S½4l''¾I÷[¤Á¬Ë£;i}B¯ÊX_6P¯‡Íwfe«7ç}ÍÉ/Ü¿vý’ÏÖ°&æÁ1-…g/åsâæóÕ³^õ«Ï–w¬s ÏtiöÁ½}újsÿ¼³ 2‹o_§ŸVŠÿ±)Ù »{óädxúçAÝà€ NkFG¾o Ïëþ’ƒb£ª\£Ï]yqÞLøÕ¼À°ÔÛ3BgRø+7KÕéÍä„÷JºfßǦÝtµWÒ¾º±>6©Ïu©_ÅðϳéïrăÝÉxÇùçsÊ×|†¾}»©” r%¥Ë+°ã¼Ü Uli„ùªühž£*™n!Ê™ û«x/“VT™ÎjçÈJ¦Ú¼}zÔ²KÖãó ‰ë·L}ÑfÓÖïè2rw_G­~vþ;£É²Ò%hM•óÆLíþy~›¨Þ¡…°o²E>µÎø«Jóçùù|ÒߺÅ=ÍDónm{i©÷X˜³Ç0c_À#ay9O·¯™ÕÕ:òöþb¢À×m‰;ªÑãjñ•_®á½TøüvׄdŠoöwì¹éWfõ¨èb}&øsH“!“küÍ+@ÿpe‰m®î³;]Çç®o~OºŠ²Pîx-°'qÓC·u>5ëŸ×¬NZs\vM^ÓzëJr§ƒÇe+ç¢×Œˆÿ¹i3 endstream endobj 1467 0 obj << /Length1 2208 /Length2 13428 /Length3 0 /Length 14736 /Filter /FlateDecode >> stream xÚõPêÒŠâÜ%À Áàîît`pw·‚'¸»;ÁÝÝ-Ü‚k¸l9'9ÿ{U÷Uì–Õòu÷P‘)«1Š˜Ú™€$ílY™Xxb êê<v&6$**u°³5è_1•&ÈÑ lgËû‡˜#ÈØùU&nìüj§`g u±°²Xßó²rñ²°ØXXxþchçÈ 7v›˜²v¶ '$*1;{G°¹…ók˜ÿ|Ði¬<<\ »Dl@Ž` ±-@ÁØÙdóhl P³‚AÎÿCAÃoáìlÏËÌìææÆdlãÄdçh.HËp;[TAN GW)ூŠÆ6 *cB¢¨[€þ‘«Ù™9»;‚¯k0dëôêábk r¼¨ÉÈ”ìA¶ÿËÿcÀø·7V&ÖÿÒýëýØöogc ÐÎÆÞØÖlk0[ƒJ’òLÎîÎ c[Ó¿ ­ì^ý]ÁÖÆ&¯gn Q¿øoyN@G°½³“Øú¯™ÿ¢yí²„­©˜ ÈÖÙ é¯üÄÁŽ àkÛ=˜ÿyY+[;7[¯ØÖÔì¯"L]ì™5lÁ. ñM^EH¿eæ g' 7;+ä¹-˜ÿ¢W÷°ý­ü[üZ—½=ÀìµØ ôúÉËÉØpvtùxý©ø_„ÄÊ 0& s°-ÒoöW1ÈìüúøŽ`w€Ëëì±Xþúûï7ý×ñ2µ³µöømþ÷û2Ëh*h©ˆÓÿSñu¢¢vî/Æ÷F6vv'à=7ÀçI”Áÿ&ÁòÛSÆÖÌÀóO®¯MúO¾®ÿ>?Í¿«A ø_.E»×™h~øNàëëÿçAÿÛåÿß|ÿÅòÿ6âÿ7!Ikë¿Õ4ëÿÔÆ6`k ^GÖÅùuüì^—ÀöÿšjþYY)ØÅæÿjeœ_×@ÄÖÜú¿m;I‚ÝA¦Ê`g Å߃ñX㯳ۂ”íœÀÝ#+ ËÿѽîÐêõn8½Îãß*ÐëÚüoD [ é_ûÅÆù`ìèhìÄò:Flœœ/Ö×E4¹ÿ=Áf&[;çWÀku>3;G¤¿ô='€Yä/Ñ?è=€Yô7â0‹ýFÜfñ߈À,ñ_ÄÅ`–üØÌÒ¿Ñ+§üoôÊ©ð_Äýê§ü½ú©þFìfµßˆÀ¬þ_ÄóÊbü_ÄÊöÂØ ~í£µ)è·ÕkÆ&X½š8AÖ 3ç?ÄœÿŠÿÔÿ:¿ü/âx ÿzËlþúúX̦@V3èøZ‹Ùð5¶ùð•Îâ7ùkö¯Wö·Å« ü|­ÐòøZ¿ÕðµPë?àkê6¿!ëk¢0¿žf»?àk¢ö¿Syµµý5°ýŸq°þ+ýßq¼&eÿÚ6»ßmàx­ÓÞÚÅéþW‰Ãï±ù ¹€œþøÿÙ9þÚ9ƒLM~WÁóþ_áÿ¾ë«­ãðµM¿ƒq¾î²í¬ÿ çxm–“µ±“Ån¯ä’¾Z¸ü_Ûéú|euûc^^[äþ|íÇðµžÃÿYS ‹ãkûœÿ¾£¯;üü÷o"ä"-ÍÛù‚-k‚ÛîªDˆÜŒ ÌPýÐJ¦eôZrlwy@…O ­LÜp¼IêF_Ý– ¹^&}ö:j®ƒÿدÒúèýd«:õ£iq·"ïH¤¶ñ-£ºð®÷³ƒ·f€t3d‡,U–ƒ 7ªrÖ[¯”{m_ÉÊhèü•ÝÊ÷rožJ¦£4"?ÎRe›|Ã'‡sf$F ÃŒujÀcŠB¸” ò:ì,O ðà:ÚÉoûüUõÝõvøðÖI¨I/`€c:ó¹Éq„§™Ë¨ÇuÓz?<>£¡Ü³Å²oÀ ÷&6·¬i¦\И&É3!ñ“™'ÅsAˆëš®KÛ„î.¹f†ÄPæƒ[ùÝ3ãä[áV?¸mÀnðóh,CŸüFõ}´£Z9ñ¥àŸv›à=¨ýˆ8­“þÔ2´0¬WßÉõï†ÑÀ22ç»Þö2¡yxtÏ'ôpöräÅž~<ñâ.¸û°pD ruÓbÊŠG¥¬˜@±'ìá—<Œi=g€kJÊ—ábÁ@ÍÝ>ö"›”— ¼®Àó¯ZöaôÛÖóŸ»l>’²›gQpõó«àw ×+ûN3»ÏT‹Ÿi~ rR+Žãûå·$[Q6RñÎþsäR‹‡Ðè¯ÏbCט÷2( ”1ÒR:YÎ3F„(ÁhVðäÓ-©žÍÊÒǡݎÕàÒà—#×V¿a³üâȰæ«ÚéñÏR˜’´ˆÔ“#!Úô¯×~n½*‘I0àÆQòîpa2ø>¥ˆ±çrI˜îfbt<ÅÓÂ)X“w·Ž`*+‚\Õ{Îrru©Sp>Dl“ £7î|¹¶‰E;ä²Oj@µXpaDüî‰EÝ/FÆ ‘4ä½¥@6ÁÔ¨[Ä"âP{~Çr8BëHW(ÁÝ`òó7¸‰•c¬¾ûe^¯‡ìb´ëÌ–BÖÒum)´I{ÜŸ•*Ìòrl´m"jI’G6’P”S¡ÚÁà_‹CúÚÔ¨ '¢î^„ÉœÄefo%¾…­W|'rÞÜóœç±ñÈ !éë¤m;Ó#îpD†ÁüÆAcȲ_ Ìv§~ö&9ë-âöåÀ<”å* ÜLåÏI›ì.Å«RÞ„LèòqñÜïöþzkÞƒéȈ›ŠÁK˜µï²y™Mpµ©×#¾ÿÀ¯}½jäF8Ãò™$|HÆBªJQßc›àͶ²Õøôb³E/JŒôÍžÜ/"•bNJx(ùõ†D'Ã.Ê¡C$¹`ëqf«~„öèó³¹Äà&PÕ4É¢eïò>“ÁP=-×ÎËeG¯ì;öÍ¬Š #‡Ò©2qFõ,ê±=~dŒéÀõè¢YŸÿkêÌ„ŸZ1š&c2£X„…ú€»$*RÂ[gÊ£À¼<¬‰ýÓnÕS… Âx6öÝ´€uë¨*ƒ\« ùÞÒr´7ò¤4˳äò=³È/$·jŽ–è ?ß<{AóÚ¼xeB.màÙ)ëlY¦£†ÀŸqp 8-ý‹Ë&[ãR(ž¥ê•×V‚ 8ô?œ4ŒcB^—‡Åîy˜¼ÌëŽØžÌw‡µ˜K~3 °äið4dJì¾`nùÎ!‰Gº“š‘“—¿²úE„ëFÍ'†aÏ»»É­ƒÚ]ƒ \ëjS_`ßט I«À% „ª|Þî« c%ž™¨ñþâÐ4K “ŽÿÌËIú³¯]²Þé"êKÎà|ßoðj=e”H*„lD4%ÕÞ  ‹ÿ)¹_U<Ë;ç-µ}Í#ÔZðP’€=þ¹)Ú~»ÀZ û€¥ø׃ÁÄòËUV¤þ#ã;8U!ÛAñ "nBÄ@Ö‰®—Îy6¤ÒÙ=QRg}ßf+¬ÉU—ÚvÈÞìP, YiHßœÞA˜¢–“ø‚/Q;Ó9*Y'[ðUï'ü–Ó'¥²XaK©áYÈÚÏANÇ^¼ÒŒZþ{¬Õ×-Ox u©Æ–­Oг°%ºKÞÝi%xx(ßä>( ‚u;åtsó\o@³«+—#B΃ûŽ+~Ylþ7òØ›â‹g©F®a%Z}d³Ðjö·åp™MI”+ÿC¦±‘®°¬”Ú;Ö¹%ö’ò.Ïø§š"pÊÖs’Ù÷­Dç&o¨ŽcÝoº‹Ýí8JJ ÈÚ5"wî°r!oûÖâöf‹J}4¦I´fó²æLÇ⸵˛oX”«‡‰æ^+•šX‹n"¸KÎàØÂ¯d¢úÕñ_,nï¤áz$P†:Û㼂åžW>› SV'"7l,–ð|CÐóÆâÀþÐâk§¥¿“<’å#`ϧ,­Ä…ÿC³>p¢]»mOšR-_ˆbü¼¦veQÙßò¦Ìj±N5ó;––Ø»ÓtsTQ嶪PGNb$boÒìáÚ.ìnßåž46c÷áÃ0ËËúýÕ¹¢¥ÐÏÕ Èa?ï"¹Nå{tæ0ô ÿjF­­ñ¯ _OR§O1 ’Ö°uwdyrçû¢²”+}±¾€ƒããdÎu¶¿;’–¢*)TsŽ¡;¾”’}4…Î4Ûšôwgð f¸]Á=ÉI•”¶•h'iLÕ&'¿ŸAÕÏ |¶¦¤FÁÜ\pmgÒô À̪6Ñx”ÁWóJbãZø ]<} ,)šf¼þ©`ÏðšÉ—¼wÐïjÇ9óD ß“‘]õ-bw©QwL/))6žzz{ÈBü×­w•ˆÊ†”˜4€÷ûˆ&#㨩 m¶æ/»,AX˜Iêh–çæÖ/| Ð V}Íq„>6`Ñ]^zt­QjVh¼X¯,k&sæ”|¥Ö/”d ÕPM^^ø$,1âu°{R^Ì»¨ºÏ<ˆªM§””‡)2ö¢^(í?²^3Iï8‡Ú£<ps&ÃÁàC‘å!±ø1åFŸJ}Tpô9è|Ó‡¡K 1Ìί‹é21>Ù5ÙùÇ$Wèí%1žRcn7iµ*Ì]©NÃG¬Ð!¸ãëDµtµÙι kzAÔ±è6ˆê&k´÷•?4*tZΊߕÝæØSÁÀŸ T=éðZ±úðM:`Ù§k\] >ü úü9ÉŠ,5´bÏöëÃ5Ûè§ a•€X:<,×)ŸYNOv›ÍÅÔ æþë¢ÊÚ²L‚:C´ðKߎƒI)³s<©ã’ØxŽ/ ùåŸ 8免—›õw$¾JG˜Ù­ø»êW}[wñ)ÏLú®À…À”Þ¸ý{;Ñ^Sùñ#‘ñ´”Ïüýn4Çšl$ß[ZäR}~ÊØóJ6—ú<"þgWþ‹Ee,ï‘Á')B«¼Ñ7LðÊ:åýS3$J|E­í¢ªéoiË‹íÊ4«zÎÕ~íò÷&ó÷©°Fºx²„ÉõR«¹BÚšóÅzU¸^[•öNîø.†ÛŽ„À‡wr ¯·–èÜ4Î5Ñ,V¸Ÿ/%Ð8Rkë\0¶–sÑ•]°œ¹ÇÓŽJœ:‹u¸ñ™“³röêë™ÕZ3!nîëFíæÊ˜D›ãÆÌ9¹mªGQ—èŽ6=ÓŠ‡H—„:—€Fßç4¡øvsÞ.4¥.VdÕM À>nuuÃoX…퇼ud¢mH°®»ÉNt7¬Á# S)ךbg O¥±.Ú>B!ŽØòPZ0a”LÜ›ÒgJ|[¡úUYç ÿlõ¶ø£Ò¦8lSš¾xwE·<,© ó”ÁœNÔë.¹Sôëòª<£ùÍ!É sÃa¤ï8°¶Ê•­-¥†4Éæ‹RDrÔ6½-ÎMžÝOå†%voŒ8 =9ò£¸X­ÎLÑœbÜŠ>¸£èfÆqCסx|HIUm€"ÊÙ˜>>Ÿ°†ž%ñ_I ¹\Ýí®¯£„)ª<£ø4DÔmü®Ñk60\‹å+gm9õCSôôçi¼§F³6+²ZöŽƒ@Ó/ j.—ËR©+Í¢}ÃÙ.ö^…§ûï[¾Ý!iλP,k  ¤¨ùg|¦ñÏï,Öë{>í<°å—¦«Ž>'¢C4\ÅÚ½k§ÝðRýR¦­G±.Ö+Ãnô tƬèÙ¢¡AŸwD1oôq?–<]YïÃã&DPËŽˆv‹1¡78&ñ ²´m9©U3a㛡7±²Q†ìݰÀ±;o\cg<Ôvħ(\~èï|¬®qÂÙë^Óe¥ƒ#h(È©Ø9]Ì©Ç\ôB¨DFõ³ô\Ýêij°ÉCaÌ9™¾¹lq9’ ‘2i—œ´jÚK¤®Šu  ôøADÑéŠîð^CÖyç§¾Ÿ'Y·³ÖI,n‰/HìrHêßïW'¢0ËG{>”AδyžEÇY¿-ù¨Oe’cÿlþu•”K ˆ¶Ýù{•Þ¦fø”bö·Å_¾J“÷"gQˆ¡\"JŸ\¦>Ú !õ…igY4=' :âVwðñ€ˆXծŎ7)»‹wTÈáh£Ø×”¤Ý êÙ plbJkOšÙ L„»5(®-—Ü€ÃÏÁ¨^îé( ˔Ǽºào¬ÃK¬Óßx ô4x«?QÓdîZ&®r´æÎéÐèuËŽ6L×K<̲‹l\gÓôñÁ-cØÕ-è‰Ð’.ì:ÙÔ^óÁ{§¬hÔ¢æ"j†KÉðõl.aFþfvç²QàÁ ͦ–ņH}öb¢u@Ê›0u%[g‚Ü÷ äÚ#AÛooÚ~ˆG›± Û8ñ÷f¤¦~Þµ±•6Ú YÀ°™Nm!@š_-7Ž;ËI„Ø<µ4³ÕX\I‰ìËHk6ÎundŽ\ÝëÝm‡¸p]Y]ØXVvx+A©¨l`¸hz¿ïZÝtSHަž !¦øÕá]ÔŽZà6ÀêÍ…y•$J5óÒ°oHš‹§UEnÚ¹õA^Ƹývúk(jŸÓÿ7µ¯àôû®$¬¹Z¬9úúŒ7£T“}0:F|ˆŸ“"*8É>ÊÙÉ«µ&)ΑÄÝX([숟/7¨Æ¦à3~ ®h&T»8Øý¼×*„pQðc.Oû†4‚¬$‰ax÷Mp©ë„"ÞÛ=è6€Ñ¹(¼ñn\7çЬd——"E–×ô‰Ï°—Ç9V²ZcHò¦‘³n92µœœ‹õð¬lcª7úû(ð:¥c˜Ä¼¤¶¹ùø· j×áAiC™ÒÚÚ5yUü-ºèj¢FX•nó!íJ—TM†É8ò*ØbâùñàÁç`¦uAd€P±ÍB‰an|Vi¬u™ízhÃô4–#ºÒÉ Îðâí0%÷yhÄw¸ÓWöƒ?§£†·ræ»Ê¶ò¿:ê>EÕ2‡b Í6%i®ŸwGt2ªiSÙXY `á~»“©L}F3é•I´{hþ˜3i0Ÿ‹7øŒØ›77â}RÝBslj5øƒ°ã˜9{|µ%JÚö ´Ã„ì;·2ÑÓ\çŠv¢Bÿ¤¿ s¥5#¥ê¬ü àìUs)¦‘;I17ˆoØXkE¼ÐÕ#NüU®ŠÍ×›æ6܇€O¶ùL·Öü`èçÞªEOeü1Ɖ*É0ű€ Û?„µö˜¡jø¾9ÑÕ;Í!‹Ô ëG/cshÏÁ rÓˆ¿ðmÚ"#¬·“Ûºó<§*\AÃ⩬­ø¤2† ‚T›Y:Þ;Pž]“hÃñv;阖õBšôí‡öŸW Ü”éÁlÄ?/?¨ ýÂjãçÑ{«á˜`†çì`­)¹¸ŠÍ…³ª_F¸}?ÎÖ/æ°3uÝ5;4’J›‘5¿ÌØLu}'Öjg>㳕ÑêUÏëØÉìO˜”c°½Ûh]ï½òðÚaFlI†õè#¶ç«£® ÈŒqÖ©†?ë×Ã`¬B>SGq† Fû¡­1ò›ÀÉÔy~ÿÀqh~Žmñ¹œ-ý¬D©Ç}íI‚¨ŒÃÅvzö•ì’ `Í=¤?Ü™½Å4Õy™‹^’Ô4hÛêCª²u6û‹ôAXß NýÇ@zƧôÌë…Ð&¢Ó²õÊö¢u¼" ª]÷ËÄÚ=¶‚f_Õy0´Þ³ê*™rS'œÉ³°^6è?ó’ŒnœîÍãÙ@W¿ÚFŽvmƒÏÊH?fKñhE–V7éÓ“äý¢»¸3:%æi(I£Çt ûÙù¤æb¢&Ì©+S?Õ(8ݹííÒ®SOI¦¦Žgê^ ÙÕ„;Z ¶àŠtp¡.ÒŪȺ±<ÖÜ›ÝøF65Ho:PN«¬óퟶE=-òAu[c¿…þÈ@„†‡É„’™ÃŸ<`ï„>ÿ.Z>yw{£°è£žf(ë^ÌgÜf4œÄ8Ù< íÂf—ì )ªÈ·ð1v„"q9U×UÃþ?óŠovl–—`Sü¨ÓM:'멳(÷8LaëUü¾>~ô,‹Š~œa+¿[BHúeIœXdé£ãÕ‡Ê3IH-Ý„î?gòŒzˇJ/ÇÓ—Ù‹6‹U[í!6†'œú¹>n[™Ú,F5xBØÛ=ZªxD^Ø|AHl.ð¥ûPl„=A Pô! !ŠóÁ86Y¶)‰ú…~ø~\qŽœ‹e/QtpSQɹ8}—úí-óA¼Ù®©e…ÍgzmÔsˆRÜ9ÿœs8 ~R>y·Æé&2H>êOg)‘wŽ\a©Dc@ÆP•ÔTÑGhÒÁ»ÖˆÐÀþޏ^ÕdPHù[–²c¡rC¤¯Î¬üÚß)]øR³“S§°X¢WI„á6 ’j,rË8uG4ßÝxtöŒ7GŸÿ|éÉÏÓƒûÁTŸO*½N-ÖðëÉìÇ?+Sý^$”y”Y„y50ºu÷/7qrR‡È-{y YœÓS.”0RÙˆ¼ç!ûäÅÑI*ë‡ (Ñ:.»Öó´EEÛWÚÆ”Ú.kóRZ~–Ðüa¨päp&\Wþir}^)ýëñt£X¥¨õÒŸ†Ð{,x(ÜÍçä.4êmæ®ÃE¤½i[¢h$”ï?ÒÃÊH¶x¨ïÒ˺E·ê…±s¦§Ìeä½{ö/æÝ÷j)Ò†ý©ïèÊUÈ“Y¶ùÍÎ/ô;D5LøBû é~i‡§´9o.*Ý\émø÷9S•€LL’],ˆ.¶ŸkôÎÅvžoïOy„s{ãÑIö2?ò ¤OHÏkix’P§f+ýÐÇêiúé2Ç.zMï¬~ (\z‰ÚHy”*_ ³•¶]M¶3S›^謹XB¨Íeʃ ÍÙÊp›…s[=@žS ñ%u9zÅÞ[æÍW¨_(ZÊû[îÞH¶臥 qRÛEü°ëmȲN:"½“]ÜiâKm»ïÜ7XívazßUðÉ´‡QîÀ ŒòˆÑe3$˜"wÅÍêïê$ÂFQÌÊ©äR²?yHLf)!©¶Ôí9‘µ‘C?Ù£¼0ŸQË3kbnÅ`¥¡]u°¦¿¢l•6„8šêê®éÏ×Ji›Þ1ø”Ïß÷]Ò\8Î{EŒÜh;…UÐq¤kõÓÊQr€<⛑ªºC¾ì4¿¨v=X·NY%méj‹Iæ^ZWr\ÿ®K_Ñp,Å_ÎI,Q,NU."Ù&sŠü™8…‹ÏBÎãûêË]äûŒ r88áB­Êu?ïBˆ.šñƒ »nÒá7Xå!:¶kïW ‘ý®!è“mŠÎÒZ¶Ogí2=G¡ÛK’+­»1G!µËêO׉ O, CšÎØçx­LJO™âôã tcä*ÍÆÅ…·¿ÝG=f-o¸ˆûÌS£ÒŽS8/ùüA¡Io¯sõD\ÀÁÁ=fn+Ê©6.mšË3›íKËòaìåmŒ*gáCØÃ§À\|g-Œ.l¥õYÿôw8?[æ" 'XÅ 6€½ >Ñt8³›NÆjÅÖ¬nD7õMyÃåq~"¢`u7fÜ(u´ ƒå¬@ÊhâË”(¼íÏp^Ä   Šlu $} …QË'©ây_ Óà]çi\^9ÎZ¥'É9)ŽC50f‹õ‘ 4e(õ±·8®Ð‘^û£NùŠíqŒ:1+ó×HPclŸØ™áFˆ%Úz$i~Õ«V„º×qÚ’—›M@G›&ïÑ£1lùÙ£iT‹|ƒ|°ßNQ%b9Rgþ"§±t¦ó¥\4Øt,¯´-ÌÄA œ~ å./X0~¹)ý¢¢¼N›Ç4FïW8xQ±îÁ+66¸}DÔ™mè«ôJJ¿˜³A ó6O#&!:bÐ’y:iÄ—ZÛ÷!3ù,âLqÞ<ðYk¬ºXmmu¡µ[©µ”tíRŽIø\ Æš[\Ý^ëÉNô乡ãåË–\)&Á)j}>è°lo¤±rPšÜëA}ŸR}„Ì+«Gwq¥(ƒZ*2ž­TE™ß`gUÈm=®­y«›ïkޏÔÉ›¢“‹iæM™” 2 Ö¿õT&ŒùNp.â—Ò5„éh‹x+nâhãxÆ—nv̲ó嶯K*Oÿ–Å*U-;ýyÿ[.ñ.6„ ÀâÛ»í‚uÛÀ|3Kò!ÿC¹Éžœf ¾ŸÐÕwÛÞ„ô"ªÕÅëä‚p´«OýâS©ÚÂ!±Pƒ>¼¤Ú{ÆÂæ³6Žì|A ScšríêöQN%K'¼úvpÄÛiÈQ˜AZ&Ü -z$%›í`…YV‹ý‚ÔpL!­' Q]¨©‘^ýÙ©|º\U8Ç×+‡R±žFëuÒ’ersŽ6GÐËú®,ðØôÂ1>LÂÑÁEJ½´5¶/¡$ÿU­Ç¸î¾[êÂd µwªXq?jÙóDy\ û0‡{ ðøÏ.‡í² N*›&=rýa°Hˆi›¯ØIBÖ¨ŸmPO¿ygÌgCö9I¤x¡tÆo[TKMoæ9чƒÈß”À±8nm•*pœÎ©}".V_™Mš©ì\xP›qXkå$c»}WÒòMä‹>ðZ…À¾¨:9¡°ˆ95…÷f/’T>áB\šX‡xh6 ˜!j¶2ÿ&“øKd"ú¾e›ClUœÍîss%¢DtŽ&Æw•1ù•9ý2 ˬ#G¤>RÃ)¹Ì9ŸÌvjì›yŠÈÎo<Ã-‘¤j¶0òÛKTdÕºó‘åŽÁ]¶>jCJÝ‘’gD@{.Ò•óL_[UÓB]6<ñHb-.iª¸è/Å+Z)ÞD'7~~Ó%–DôÄ2Èh÷ž”^ªyrˆ+7NŸÚ¾qµžÁ\xâhhÕPÓ(Ð.ÆÞ!àÈò´v‰F¼Cr›Iú¯¼Z‚N\bµ ],ƺ‰ñáàfñÔgÂhùúÀ$MwçÒÁ™Ï ôº¦†!4õZHmS$¹ ¹’íѬÔÑšýºŒf˜òÇSih °eçî»/{«Ó"/qK¤ŽJ®¿l«js&"Mç…P_ß·39ZYc#@¨e_ RÆíñÄ^©eÁÀä·Ej:±ÔûLÔÓd4¥6eg¥ËÜêÙ6!bÎÍýÊŸx(6FÓb¢r9;&èù*§k¯øù̺º]j똓Q7¸Ü‘V¤Âs²ôøûÂö»E}®pööòâÝ(\bö'á¥#:ìÄ› !0æ'$³„çª#sàX1UÅØ·cÃ[@ÑÔkAÖŸöX#ˆÊžÈP{æ[—£ ŠŒº·î‚âýáŠîS8R]Gdeè(Íý4ß\‡ÂAK‡‹ïR$ª^åµ´o}Ú­ø²çÙ–Ä™U!À/ ™`y($4Kßž5jqÎPÙ(‹ÑÍF÷̰£«#ÇåØé#™ÀÌ…³{Çõ+\Ò¾Ø75-òROISŽ…Óÿ(k¹£‡:Ü 4‘”e¬Í”w4/\Ëíy¦}cJ˜`ò@s‰\ñb+ÞoÌ·þBz»ÿDI^MÈFFiT<Ðê‚¢&˜GKP'â–S?QfÛbOƒèWõBäp‚Ägs\Æ(Õ ÞðS –¦YºzȽÝXÅŸ–:<ö:ψ„ê<ë"[ Y&rkÞiqûžCåË ÂBòGî³ÓJðK4w²qªæ¾ÍÔ®Î/ÌÞ{¼ˆú®E"ÿD…¡àä˜vX>Ý¢ÐÛºr‰¨\±öìÁ­;ä7À††Wb3ã–[Y´jKjÐ=oÆ3ŽA jï½f¥¨y¡˜È1Srµ¾PAœO$‹Ž{8F%>òs•ÜÑ?–¹Ý¾·? ,³ö5‹¾ù0Ú^±Ã¹…åòý{8ìtÅÝÇTDîÿAÄ«þ+Jg ùw—dà‹ˆÏôxØóµ®å¸=‡ª¶E‘Q{ª£÷ÄûìúúãUSq¸ú£Ë…»×ÛÞçŸ"Ãà50~Ñv8}£½•Þño!I)íXùMfäa~dÕÏàÇRŒ>ÃBþ2’› Et–oGlÎòÇA„kJ,ïÈJ¹«à)¸GlkgW™å–±ÐVuqñ±¨Ñ:W£uÞ±Ö†–¾—näИŽÇà[v(Œ. ÅGY˜±÷ ¦û5™‹à Ó03'Ot»@âv}|¸2 ígLkŸ7‘¹ ;&/ü…Üs@îÅ0ñ8Э -¢ºÄ¾êDlKˆŠQ…#böæx¼ÏÔ‡š¤Ð¹¥ 9î’LÉ…|\|lºš2@YªÐ>¸2Wôê®øï.­Ñ £ú[:²7›fj¤u1M$VZâÊK g·ðªIà>¶}È©:øF®ŸåûæMŸ¿c‰/ã u“<OuLƒ<Œ©4]™´²rBÁš¹¶K ÓçG ÈÏÜ95*t4Ía+&ê pXiv¶?zo®§r|^Ú¥Û™~d›Ôö8Ú/3œÒfCæÐº`j2‚¡vv>Ü04L-: #NíŽL͘*`aJËO!£í¢(}Âì½ök¦ÄöcÛ˜Œbâv¹7½û ìTþ<€R 8Aõ¶\ÀðÆÝ@£BÐõ\ ÿýYë„.V-ZÒŽ]–® V•÷!5üø½K²*ÑÔß?ó~%IBä磨5 »À»o‰æ&ç¨XŸ9 “ lN­÷Ô–Ñ9-õvfìOÔÅ*®A”Wa…ý7®V 4G(ú†¦„Î…Ê¿­ ÒVÀ"™ø6¶={1¨Q¸èÜ6³`Õá§ß,™w¦´­O™é‘CФ—¬AS°Àsf|Ž.ÍI Šéç=)—tÓzëu½ÿžÕû„8Qs´ªÈ[J•ÚªB|1q´|ö$øµ…zR2 ›Õ²>ÙxFwòöÙëmݤ ›Ïˆo®í=¶UÊ£YÎDøElßµÉ$† §x¹Ò­û©Â)†ý#™›²g:© ´@‰“¾.ò÷l¢ì%¯J™çbµ©ýçZ˜0çî§}q¦-qº9¨,»ý4Íh¨@§r$jÎüSäe{ÀšÑù´´ XñlÃ"ØwzM¼ÄÞqzfkÈ «kÆD¸­V ?ƒ¬Æ,ÈþQi¥Ë½Ùfì–0å áù-þö`DÕ1z×|ŸÄØÈSª@ÒƒlƒíHQ\¿%´sRu”§fþÛë^)̃Í즮‹îUC[n×ΟÆòÑ-]ÌY“L­¢ã¨ŒD·÷?g!ƒ1ί êS¸ƒAi&#Ë !šÈ¬/UAòÐÉÉ*•i‚åúð0\p½â9‘/”µ´åoË[R³ø]Ü7,!;u>›» ëÛ BHöZ2»'œ¯£O™k¾7s70§Ó€ô©ž¢IcK°ÙÔ“¬GP➈©F‰‘øIáL’Ê5¡‡1&7 ˜Û?–ovïã~ž¸œz+®[ɱ´7›JÝ–ÎW{Œ–Ÿ_¬p„æ°Í? ¥>îú*»ù +\*/¡ o›1ËvpUOö8 ¹î÷ÐL)3y¤ä”zûu6ó™ZέÍnºðèχº¿Ó¢ 9Èz|ãLõ,¥ôÈÉ8@w y•aýRø˜Ò–ÄŠ9<_zÊÉŽ ÕZºvÓqüò–\êÉûÉ\e¡ç›'L6Q-Šå¼WMZ•¤æžów¦Ÿ3®á|׌Õ?ü^º“ü‚Þ`Ãq¹N„ZÊ}çH¶Øsdt‹e'eP«>€\E¼ÍÅé0zs©L}Èu/6¤i™2¦yº”ÓîD-~‰µuÛ=AXüåÍ·ôÎç¬Ð/àü)‘ÚS8ÅV×G5”»‚C‰4ûèðÕ€X¹b b܆0Ìܹq:;L@1Ï$ŸqY¹=¿Î¹spËùî¸,t¬ò,F4)KûÑij i0ЬNœV}Ç%@˜öç• cí¸} ë šÌú]àŒêžI<§ÈÖì“¿™µŒ‘ +3HéÅG€V4˘줲£#¾æ‹‘BÐóSHdάz¨Í6Ÿx d2ç‰ÓÝõey®µëý¬¾ž®À[L]£á¾1šÓaAò Ù¤Saê¡â:§›K*Öp(*gŸÍ¹¤.%RŽT÷ʹ_òº"fmêkµ!‘­±:ßñž"Ùlì±@ôŸœRu,\ô',±9Å’‹7Z·'84Á—ö<¢ô,dšøÔæ¥K4_£#o"R2¦ 8°S "¨ó2|Å<¾Ílëì¶ ßÒ+ŠÚ‹P •»zA’gðSï°Â\Ö´n £ÀÆûÄ´’˜c0 ]:œDÑÖ‘~>Ë ߯aó°À¬pt‰Ÿ˜lAJyF6 g¢¸“ò*CüÞñ=GŠˆýûêªó&ù‚UøV4 6ÙªÖFbEZ<Ãêêý=§w7ÈœR±?ÕnÓrÅ˪͈ê9ý_NîD…U¹ÄÚ(Œ CXl-ï.ÍÅ%_]˜‡á‡ç9+À*¢]vÎ2 HèÔwÂG¤#ÊZ^“7†–sé7[øb¡:ÍÜQ'eÉ6b"MÏ›é>“‡½8gûE×åËû¨²j@%÷˜É@ÁBGÌuX42ÙÀ»‰q…·)þ\n&DÛúÒÆ¿„x)À‡$V×ad28­±k65æP:D¬g ¼÷nŒ ã|ÂÒ‡[µµ.©B6VŸÞìŽhbޱ-Ë –Áêæñkéû&²4~ÚÖ[S²¨3Î"dýžEÑXD‚*s®íÑ6Â!Ž^OK_Èá¸O£G[Äyt04ñYVš'zµ¡?¬Ú^Ž}.6L‹órMVa³J ‚3t=BT$ßL,5æý¢^<³ÄôÀ¬ª “ µ¬"“ýY¡Geâh³©¤º>IÆ˶CŸœnº{¹â|ùáÛžŸ÷©¶ fTrŸØG;``ÒÅÎâ²c°Šx¾ßõм8%Kk£/Gúè° Ü¶›!Àjá|º*hÕ ÀC„lÑgÁÒ3DPK÷2`Y„v`],¡£¾93tògª‚&úðØ¨¹µDIc1¦ã$ÙÞyVØBw*ªAô -<]å׈=â_âÎ9}uRø(øñàËS ì¨bʘBŠ€-.)i;Ë7 âVÛ æ —è×ÇQœÜæ¾^ÃÆ¦:Ÿk³Eª¨‘)53–¾prŒyxÃJ³b}dÿ„2Ÿºð‰ bÉÈ€8‹]IR~Ô4bÄÕÕר·¾žwš‘v§ì…Œ;?¡§rU dœ'‚Ìò„B^K`Érô å%âc¦uú©Ñ€h }O 7Ÿ¯˜Í~ì\Ê–qr¨ÇÎêê"ª‰v«Ã:ÁÄý°”|[U> Ê^[¬ • ‹ÖXeów -5ÄfÊÆç^™Š3)â_²Iª °çG¨é}Üô† óPËÀr&x×7ØO§Û#ÖMŽlª.LBGàtí'ë ”¬mǺ¤šŸ (L[?¼ù°©Ðy¢QÔsF““|Vt”.Ñf˜ïŽöµ[ïjë—’nQ¡yqFƒ}=¤}9KUºãÑÜ–‡–µ3l{@÷/bc€FlÑ4:Œ(¾û•/Ú¡Z4aJ©åSðÔ$Y) }ʇÚr !™Œ••;Ë|²oŽfMÕôÍZCœ–m~ùG¿> stream xÚ­Y[S¹~÷¯Ðã9u*¥û­jk«„@„Éníƒ1˜c{œ%ûë·5ÒŒFc1„ËCbGýu÷÷µÔ² BqDJ!Å´d4EŠ[D™&È}G%¢„SD¥¢HÂ7šh$¢†Ã*à 81bɾ€ƒWJPĸ¶H*“L"‹˜Ò^Ä D ÚXĉ.gÎ;Eœ¶qaØHÁ[. GšÂ\¯´"ˆk#‘¶ qcXÄ­ÑÈ(‹1Yð"( [N`– V‚[Š,ü²%T!!Ò;M8Œ€a¨#‡€¥5;ðÖ*äL$ #à„Œ’ÌÔ#Ž$Àd#Q#Þ¥#W1…¤ƒÙ òWÔÀÀ0ÀdíR¯Ò׊ÀdË€0“­µð@-aàæq=’’b’; ðZI‡å0 Ú½Ò0YBðÂBá•ÜË“µ{%a²2!:¤@“‘” ?ï2ÑÄyA5uÞ9HÆ$àpЃCåHf‘@œ“Y ]2˜ì,$P§Ô¤0ÔI“µ“]½II»BÄsN…+ñ`Ù0'#<å²€ÒµR0Ù•§#Ü€F#§‘ pLV&Æ•Œ€ŒSÇ$ªøÈX÷ ´´®¥Ôˆ†0* AËAí@ 1˜ãêØM •²€­‡´n HÐjÁ`“ +â äæ µ ·®Êˆ4£ß~áñÏÛáÝżÚ)VÓey[-–£úùhroN>¾ÙÝÿø¿íÃñ˜x1›\­ð3¶¶wèÏW½bœ×Ú(«þá׫i1¯ LèoOn÷Šòê:<:'îÝ+ÆØïW“Y9}=¿šÀOªâæ 0Føs°ÜA\O–'E…þƒ_ã-¼wð¼‹ßâ=¼ßá÷øâ#üãø>Ác|ŠÏð9þŒ¿à žÜÜËÕd~‰'«iYNËåt}ãÇU9»,`XËrõ O*|/&Óo«Ùdu £%¾XN¦Å¬øZùÑÒU¿Uû5Œý‹)ž.f‹9üs3Á—ør1›Hëdpñ}=™áân:›Üà¯økù£À_ë%¾ÂWËbQàk|ýóöº˜ãÿÃ3<+V+|ƒçx^Î <_ß\@2åÕ/ð¾¸Å·“e1¯C©G>ÈØ±ì>ËÅ%¾­Wø;þ¾.VU ñ}_/ªâòbæµq=òÆK¼Â«â¦ô¹¬ŠΪ¼Ãž• W×Ë¢ÀÕß ¼Æëù%Ä3], üÿïðOüþ§X.þë+d·eaûb°Ùýþû/•Ü›­¾äX¾ä¨+9ص˜Û2äóKN–Ü$,AƒûØvô.qÕËY>&çý³Ãó;uÎ6Ÿ² « ·²æÙ)kñK«l¯^]Ça]Mºëæ"¿:¦mùCuCio”´«æÅ@åþbÅöÊ4ç:ÖaO—øX_Tõ£ûˆØš¬ ÷á­?ÎOÇ[ ÊV½õ%â$4‰wËåªrô!W®“öžÎËËêzå&S?y¼8CÌ—Óã:<ØýôéÐô¹^ýˆ݈ˆ&ñnDú"z³µ{øv"Ú>ÙÎ’$x?$M:!щˆÉˆhûôÝÞ‘[I‡ûù€d? è„1 ÷)â÷ÿöøõÑø³÷ŸÕH?¿x¼ÿãûã½Ú¿Í¹·¿îž=ÅýÎ3pÿ)˾|¨B»õÀÕ ÔÃÎþ‡½óSPŽÉˆ§»†‰s~öÇ—/ÏÉAž!ùÀ®B»ÙˆèäËû7§uDá·ÓFÍržÄ$»1™~LOXEïÇ;ïÎ]L_òm”qwWŸSÝ2’÷ÿùäèý©+ãq~QuÌí½*Áo°#ì *õâñ4RÝˆØ hÔ?§mD¤ú‰D$ڈ鈨wŠÚÈlP$©_èxrU¬àì´X»“Øž—îÜUÿ`¯­ß——+ôg]€Èï5·öŸº. øÉ쟕¨=þõ$J0ìt¿±Ã§ŸÆñ '6€ÚàÄÖ¯‘»·ðŸÞ‰¦ìéN4U„±ðééÑþå~ìûOOçÈèÒ.­C&&<ý 'Ög`=††gF§ÂðGÑ¥I׉ñMRÁ‰ðœù~‚Œß±žèD…HuÕÁ© Ï&8õ…ñD'ÖƒØ@—%Þ©¥á™új³L<݉eÁ‰?Z!ªÉúc¡»W ŸüNdp¢Bä*<‡ÅhuÈÄ<'@lp裄Ðf ›}”ÚõCIàÖx`Ö¼âü9®ÂVH‰`Í –" ÂNƒg¹òkÕÝ·6À:8§¡àX¢àúÁm€ÝïÊݼÕ0Â/ü!ž„Ìvx6ß°U…e¡/îNúéNÜE¶ß.Bu…b²<¬‹àÅÝa?Ĺ?6ùúÞ;°jÊÝz?€lY $ÃêhÙïÙXW³rî êæ¨ Ç%×ýë«ðúÉãSÓ—Õ¬€Îä¯a ™µ–ÇËâRá¤×³¦­us6Î[7GŽ£â®ª¯ð7±šc’ÃX,ÁÊÅÕüœqX$å­C\©5µ­5U‰uýgˆN(TtŽ]12Ï|È20ÿJô½Dæ)òâþ.Ñ 9$ЋBTˆÖÚGLr “H=ƒÖ õ4G=‰Ô2€%m"D..i[!¤Uy¬`ÍrÖ2Z¬“PRQÛ8Ãr"C¢JÛê MOÝ-b÷—¥ÍˆŽÖbк«ƒ´$‡Å#Écyël$:2¯—€Ti()w¦» š8îxßgÔK§zµN‚\¹|ud^™!kÕÝŠ¤ÎlERE”Ècë\$*2¯È wŒ&`&ᮉÓs§Å w2ê%{+¥qâ]Ê\¾22/Ù 5é,M+êÐÜ汚ÛÊ€•‹K¨ˆÅ±"eNÁZ¬æv;Õ\{,!3XÜD,9ˆÅ,šÃ‹a5b‹ëi±Ø ÷,á¾wì±XäžÝý·qõ¬#ÛÔ­aŠšåÖ@§_29ʼ²=Ÿ4ªBSUZ'>{šË—F(²&‰4§:=ˆ•è‹DÄJT!9UH«Š°vKØd ÌÖD¬{ØÖ4g-¢5¬´ìY÷r2Æéë#hÑÔ‡êûlU¦§JãÄ»4¹|ŠÖ|к«ƒ06‡uÐvKë+—Ž:h9ˆÅ¬œ*:ª¢é–êŠÒDÙÊl«A¶•L°2k ½nuXƒÜ‹$.•ã^Eîe{‘`É\V2²-å u¶ʱ-#Û’æ±¼u>’ȯä7é³-ÛaÉîoÅöê?ȱ 1,C²DN†ØŽ\I;¹v,b;|p $íXäÚ±ˆíXð{–€·Î5`°è5àþ¶–ìüíŽTá‰*a iT¡¬ç4vjÑëÔ­ï3×_DìԢש›ùu.áØsE¿çÒ„l–#;ö\Ñï¹iäIÏmÿ˜Ø¢Ý&Ð8jØê“[³è·æT’,Y±‹^3îéËÓ.Àlq“NˆX®ºØ´y¯i·N¼K›ˆÇ6Í{mºoÈ•kÚ<6mÞkÚ=,Ó•«׿<çË¢ endstream endobj 1518 0 obj << /Producer (pdfTeX-1.40.17) /Creator (TeX) /CreationDate (D:20171113151326+01'00') /ModDate (D:20171113151326+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2) >> endobj 1474 0 obj << /Type /ObjStm /N 93 /First 874 /Length 3444 /Filter /FlateDecode >> stream xÚµZmsܶþ®_ÁÖt4Æ+ÌdÒ±e'vc'Ëi3Óäu¢e&§ãõŽ'[ýõÝvùŠI¦í‡8 ±»Ï>» ,@ö¡…ö¶p%üORûB;W(kàÿºÐZº …0.map\ÊÂ[hë ‹ï­.œðgÚ„ÂyÐ3¦ð%˜5¢J² kUH)`Fy”0¥L!•ƒ)%Û‚Q ÂF:€° úL ¶ˆ+@¸D`0!’… ì`Jö€­<S +/`|¡€¢’à—rðV9{¦Jx«5°-AØ …ÓVZø„m Âe 2M1#@ø0ÈA}ýõؤ§·¥—m%í¸Ð3mÕk»0цòÑcWœƒ¢KOß4‡c7øù¦:â$á^¶'0tag˜P =¦]Å4bB@.€RéÉ)}ÖN¶Ê%únHDéVµ'‰pK‰(‡D”zÍ–GrÙ¯rH‹¦…µ§òv©µ«Øz‚=Íb)GYìŸ(‹r9Þ®Þ„1ä²ûCL¹jËLl-¥ÁØÁ–Z¶•´ÍRàìµµ_­Må'á&‘d?S$Y‘"éf˜Ú ˜fê1ƒ$H­<ÖzÐËÚÉE].h«Ðk«rï$ôJâKž_Bb¾jŽ9dH©5LìÎ#L¢336$LNÖk'ÿå}9„^šUm5ñD,Ù!Åš-1aµè—Ò"ÊU[“¬È¥C¸…Z±…G©‘-±mÑGN;S[a‡ n_‹/žÌÆØfR]BŒ«‹Ÿ–÷%ô9Kƒ$H¿@Pù>ðÊ—«ÚãÀãásÁ–l©U[ã}鿆À;¿l‹´Í‚¶ÒàÖÓ &¬Êqz7c˜2§ÁÌ!‡4¸GVCqKuSi(W·%5íjR8=T8jZ8~Ž9¤«œ¥‹AhWK ²~MÛNÒU.¥Ëé²fÕÖ$]‹~Ù!V¬Ù2“¬Ø¥¬˜!+³6=Mû5ÓâkÖ·ýI«éË…rÊ~¦*¤ø=rÔTC;W³vÞƒ$ȥ樆Ƭfy®=ɃYÊÃЦլMÏlMšö²_CÓV³¦= ÝÒA íW­·_ô„Ötm©IŒXÝ †.­f]ºIìå‘N ]ZÉééöy3ÈË541>š*59Ó(jÌDP–«]Gö'X%Ü*äø"±ì¾([zÅ– ã‹“™Ùê/2Ìîwaá$.ƒäí26¡M®JŒ¯J¬^d0ˆ|¤)%“šë '”Ù~Þ¯ýï«»úXüóÉ…¾‹Ä(Á‰õ Ó>[hçrH¤å)xiyŠîž(z¤å Ü#­~]NŸQ'x¸•ù…­Ì#+O=’òDÃÛ¸¾IñÒó±¼ ¢ËFe¥Š¦q2ÃÄ -PÍ?;uíŦ½Ûoë®>/t ÏO·GÜì(u—ÛºÚÁ4ü²½»«v7? #^5Ç®=<œÃ%l:y±mv5JÔ7M×ìnAÂe‰À­ð1ùÌñËägÓ¢+œáËv·©÷*6»›ú ¶ÊßåM%(—§¶vþ¦®ºÓ¡Ž³lêTîšW ¢”zá=ê¾üR¡'GS®Úí §ã»®ÅßÚëm}‡q”ÙÂsù¯òH‘A# »êÐö@•Ûæ‹ú¾Þ¶{šÿÜtŸ"ìÕÕyaÕ<Å—Ûí^k5yý±=àÿžÿø-èXnëÓÉ¿=‹“¼L'*dUû˜ç™rÆy&ð ‘•˜ ïí¦>S\S¤ß×wmË3rêêVoä¤×ªM}}ºÅàøaæ ’ÿùüâb´>6[¬)ËG€‰Ü›öv,ÛôDæm{So'–²»ÀtÕÆb¨ž`rqÞè÷r3ç}XÉœ÷£ºxE^¦Õ=2¼é$¡gQìyÕm>½IêÀ¨^Q›Û˜Ñý§fÛÛý§,³¼î¿ot9𤑳³ÊçÞ~sÚmx­ÿV?Gé¼fâÄ8îœÖˆÜÈ·‡ ÜÚ †Õùô‡gÏÉ<†Låÿ€ý²ýÕ‡zñ©Þî/.*†µ[ëx¸oêÏÄÅÎñ¯²‹ñ}4"6ØŒq:}üX æ>€Ý´›Óìó´‘©2‘öú×zƒ½Ak.ä»jsÜlЃ·’—À¶ÒÙ¤jÁ ‚OÎ/‡”¶ËOõæ·˜+m³Mmîó‚ZÎó¾Úžª®‡¾ÁöÌÇò—_`KÂ¥ÃÅ5t3É«i\cTãPR·‡ênÜ+•]>ÜÆðatøl2›I×¹ ¿_ŒÚ+pçaPÃkúU¬+íFãò¨1Ix»¤¤½jn?má¿tÀ0¼LèP5¾ì«Ý1…ïUÛñÊ÷ÙqmÁÁ‰NÆèõ¦Ù¤½ŒÏ¯!€'xæ»ékˆ÷®£)ûw͵Jéø ¬ˆí–êVqº_cVŸûºoÓÊdéÞ‹%…Üç]whoN›„%ùDø]ý0©ÚÀñ+Ç("x˜ <ÓÕiîšgrœÜà·;B5(¾W½i«›…¼Œ¦õ¢™ço«fKµöëÊx4µÅ©§ÐµñáPïÛC´š%w§j‹¾·Í®I ”xgMŽÍÛÓ¶kà5ÅtÖ—”%ŽÑÏ=â¢ãÅw¢¼åd×Ï"ñ}ý9n®£³,ÕÛqÃÉÊâJæ™®”þ©ûwQŽB|æSø°gMƒæªŽ_ÊâžñÊ\cáŒÄ;î­M=n„§#……ÏØnh7z—¢>õr©úøþö>ëãS‡¤Uøþ¦{¼à=ç}¬O¡RHžû× ÄiwT:ûBöÇÉLmeQy_O×`ô<þè-·_nëXF´Ë¼‡+ÁÉðmèê/õöX†Ö£}›nÿ •’}UÝ“[£[\6­fwÜš}¤²;Üàé#J·+تCÓN#=þùɾ…ƒÁ5,ŠBxqq]Ó: Þ´é`Ù&…ê¶ŽUÁ»ÍU{:¤ÓÄ ˆë5±ò]6ÿMªÍ_ð®º*"bøŽ{…WbïNÆõ„«Ù$?Fµx8ív¤Ñì(ðÅÅ•Åì?íRž‘®Ž}öú!ݺÒSíèöcL½êð@áãªû\W÷ã‚{öãå‡ú'¬K ð‡x4œ‰m»½®ØY ¯l-Ù•çø7¶‘æPñ-§Ü<õ ®gåIàï«ê:mü}g¤…ò~œ7ÜÓ›á¦ózS“r›w Ë'…f|bÆ IJó~øz`²]f‰ÍïÊb2Q˜®]†6ý=œ‡;lÆR:áÄþku_a:³¯Ý¤7Õ;û]sfâïLKò6eJσ@/ÿT2þÎv醂JÍÃÆöåÒ÷îñ·ËÞ,;çÙ9ÏÎÑg¼øÓT¨Å”~ò`Àžö4°§£Ø‘àÿÈw„ÅcnG¸vã/_i x y`?ŸþNŸ <46956884633B1D0F13566C91CA57B215>] /Length 3644 /Filter /FlateDecode >> stream xÚ%™[lW†gÍìãK.v'qçæäÄ9qì\œ«ss®ŽíÄŽ;ñ%vì$ µé ÁM_¨Š<€„¨TˆV-ªTÔ¢­SQ 4ˆ¢v**¡ªH‰>l©ô ˆËùþ¼|šµfÎ93ó¯µöÚë$I’üÏ’¤=±$}¹ÊD’&É  ³ù§ ³Rw ¬¶d_‹|ë¸$T@h- ¬+Á*°´v°¬ú¾°lA'Ø6ƒ-  lÛÀv°ìÝ`Ø ª`è{Á~ÐúÁ>Z²²K_ã›Aã‰Òj?¸Ü@±ô‚“ฦÓ$«X:Á.°ÇÀ)p™ß8‚Cà0GÀQp 'ÀI0NÓà 8 Î!p\Á% Ÿ¼†ÁU0FÁ¸®ƒq0n€I0 nƒ;`Ì‚9p ôZ²áY½¿›¼ºvõ:˜ó`¹¼¬[@'À0 n€p¯Ò>[*JæÁ]°Á=°–Á}ðâ*3°­ÂGÀ²'lÅw‘È£°PîÂGV2*ìÄ·éÈ­° “ $X¨rI¾^LR-ôàÄGn’.ÔðÂWÃÔ %Ói|ºD_Ú‡o t/ðǧ¯×sÂw)ôðé±tk$S8ŠoE!Vá8¾«øôD$XPN߯G ¤Z8…ï>½ ’.œ!”S|ž@ú…sø2|z“$b8ÚYPª)м¶ŸT 9Ãe|«ðQÜ‚¤%j«ñIA6ŒàÛ„rHÝ0†o3>©O%Ýn|Ð@:‡ |U|„h ±Ã$>j]AÉ 7Á-| ÅóPq;ŽONwðÀ§  „Y|ÒR©AeJ{顜!aÃ>é¡d"u)^“Ê2’8P-jãø”~¤sx€oŸò²‘ v·±P ¾CâÔnpb>)¾i|­˜ ŒÔ$r f4ị¯ShÁw_¦¾@µý>}l%XEZÏa®møÖâÓO¶<åVй¬Ã·Ÿn·P2ò=øÌ `#¾Šªž·PUò½ø`nª§Z¼îcv­ø¨õeÌm`;>D®/aî;ñÄw³P´r’¸¾ˆ¹¨\_Ä·€¹ôàC¼ú]̽ †oß<æ>ЋO‹Ãæ~Їï¾YÌ~ Õ`ß æApß¾;˜‡Á¾%|·1Êk¾Œoó8Ž-ëS˜'ÀI|hY¿…9¨ÊùC|71O’½TÇ3‰yìeß Ì!@²—Mø&0/xb£>Žy ìåz|×1¯’½Ü€ïæU@²—$v} sìå|2u±Öâª>‚©"ÙK @]_¥›$ÙK @}SH²—ÄZ]·¡—C²—Š—Ë˜z±${y ŸA¢ì%E¡~S‚’ì%E¡®ÇW0ì%E¡~S¤õü >½:!É^^ÂwSL²—€º^ûC–¬F²¿ó‰VIÍ|Hö’$®ŸÆÌ€z†|Ôñj쥄Äl${)áYª­`k­„?¹¬ÂgøX?ª«A>  ³¬Á§’µ§ºhoÁw³¬ÇG寳nU7€ø:ðÆì›ð)hXóª›ÍAÌ.°ßF|¬—Õm@=ƒD}ì°ß|¬µÕnÐHv—ëy÷cîU|z^ÖéêЃկ¾s/¨Ñ’PÑë¬ñUèŧ¢ Kô¥z¢>KÎê‡X/ëm@oWïE/QÊèµX2^I8Ò×ë”–YꟴâÕ!p\tæÕapÒ’é#úZˆºÞý(¸jÉý/éÄ'VqtŒYòä[:q Üã–øGòM€[`Ò’gnËwLƒ;`4:Áoèì ¸ æÁ˜³ä¹Lg¶ë9Z‹–¼xL'î`Ù’×ÖÈwŸ–D!ÿÐ’_ê ŠÄì+m:r ±•ùý 2IVµ´¨XòaM>65¬’iÑbI¼+ŸvwÄkmÊb+-ù[³Î¶¢ -ÖXòߟè‘]ècf­{äã9èFRÚ””þ%-ÔYz´Bi±Ñ¬ãϺXí%ñGo–Ò´¥…úIbž0-Ô6Rt¯)­iZl3Û±A_ F“¸*˜õ½*Ÿ–6šã‚*©‚h*ˆ—bÀìà>]§ÆP ASœ5ü“NŒ€‹fCß—9‹á‹)€ÜÅ¨ÙØN]2 •b/š·Ìf—‘5˜sõ‹Y³Ï¤úì]0Ï%zkh^,„/Òt4ÊW±höT¿>F¨÷9‘Xºý·j€Ôµ°IªÑƒÔšÌ¾ö®NÐ~ÔÖšŽ]F¶¢FÏPk7ûö¿u]Øhjt 5ZƒZ—ÙžÐ%;À6°t›½´K¨¯ßzÌ^ÿP>Ú”Ú~ÐXÙk‡A¯Ù¯ÖéûèjGkr­!Ï»‡u‚¥¼¦f{Ðìƒãò †P¾/Sm7[ÆškuÈçÍ>:§³—€:äk@ýnC²¿<¥[ÛŒ©~WÍìM³ÍècêcÕ¤ÎXÚüš|s@Mê(‹–vôr–™Q³œ'G­¼!ÊÞieÅÉ3P±ôÍ_È·´Xz¼O¦:ÆU–žU&]ÝœZÄvK/>©êÕvX:VȇZ¹ÚA”ÉQ&ï´têˆÎò”¹š;usÈ“o·ôÞÛ:Û võa½–~îñý!YŽPy¿¥>Ñ ëÂD¨œYF®niÀÒ/þGŸPã¥N Ér”ÉO[úô×uö, GÊ%²ôÙµ:q QŽxùeK¿3¢ã`ÔÒçß“IŸ“#cÎ8!Ÿ°ôG³º+5¸·íG>méË/訚«ý<-Ák:±hÙ3ŸW (%j•©¥¿i“o5@ʆF¿{|‚*Ñ£D€²¡Ö¯ë“Ž’à/¹—²ñî?Z¡[CŠQÊm–~üc]LF•¼ö’®¹Üié§K:2å^˲7eÒ?—ˆRöZÖòù¥¤.û-k{^>zà’Ä)[Ö¹_¾#ü¸~ˆ×^Z¶[¡RªI=gÙÀN™$S©†ô‚e§•3åUpŲáŸÉÔ¢^áHÍçˆe :1 Ôh^³lqžWªFÊ–}öS]Œ<%£œ’<*Á´e_ø«Îª½T?¹D_¢Fîže_}|“Ë–½ñÏ„´‚̲ovÉ·¬°ì¹ŠÌv îk-èm–=߯ûSÛ³¨QÚdÙK³ú˜Nl³ì•™´BÝ» P÷@ÛÓ½Ðìtï´8ÝûAèÀApà8 Žãà8 Á)pœgÁ90΃ à"¸.ƒ+`\#`Œkà:à˜7Á-0¦ÁmpÌ€Y0æÁ]°Á= Ý–FWh3Žº-{õz÷ê|B½Oëçr¦[FG±ty @Z¶ÒŽêèršm*¡£:ºi:vÖŽÂèò@MtF—£9åÐQú3FǾ۱ÑvTG—ÓS,…ÑQ]®öÍs5½hž«ÕEs6ÕŽÚér4§::*¦ËÑœé¥cíØT;ʦËÑœbé(ŒŽŠé¨ŽŽ)§c£íØY;ª¨ËÑœ²é¨“ŽÚér4§b:F¢Ž-·£vºÍ)›Ž1©cßí¨.GsJ©£N:*¦£ŠºÍ§:6䎸cËí(¥.Gs ¨£b:&®ŽÍ·c·í(ª.GsJ©ËÑœy¬cßíØh;vÖ.—æM¢o4â "rDä(áe¿ÞªëGŸ¾£#Ô¨Q?¢~Dýˆúõ#êGÔ¨Q?¢~Dýˆúõ#êGÔ¨Q?¢~Dýˆúõ#êGÔ¨Q?¢~Dýˆúõ£¶7¨µ©Aýˆúõ#êGÔ¨Q?¢~Dýˆúõ#êGÔ¨Q?¢~Dýˆúõ#êGÔ¨Q?¢~Dýˆú‘#"GDŽˆ9"rDäˆÈ‘#"GDŽˆ9"rDäˆÈ‘#"GDŽˆ9"rDäˆÈ‘#ûdON{v†ž­ g'çuzÆ"ží°gÿëI{ÏæÂ3ñL>=^O‹ãÙûùv°02óëû_φ׳Ãõli}'`üé‹xæ ž}­g‚æ·í€}­ß $-©›,ûã#Ý3³kÏlÄ3 ñL?<£5Ï,Í3<óŒ²}?`¶î†x¶þ0¬°þ(`,⣖}¬Zç÷Q뺭é{]2™’xÆ"žùšg æƒ{Æ"ž9ˆ? ÎæÞž]ª¿˜´yÆ"žA·g’êY“=ûU¿ß\úŠ~ƒ¶cฟx¦žá¨g"çÁyÆ'~ 0!õŒD=ƒn?c®U­•Ÿ57ü–ŽæÌ}÷EÍ›ûù Ý5÷Þ:Z0÷ñu´h•Ê:ºg•GÿÐÑ’UÂßu´l•O¾«£ûÖ4ئ£Ö43¤£‡ÖôâÛZ+kl q2ÍšÛ‡u¤± Ö5ÝÒ8Kó«k¾ý4—Èö¯Âî®ÂÞ¯Rhv­a5<þ[BÿChXð^åñú§ à?¾Êã4ÊÖìZÃjT(xíì+l+l+…ÆÖšSk&ÍkgËX)xíì +…ÓšDëÿ…ÀГ=bEûÁB3ékžþrãm<|˜ü±iH endstream endobj startxref 484195 %%EOF ess-17.11/doc/TODO0000644005071500004540000014113713202324173010504 00000000000000 -*- indented-text -*- $Revision: 4.13 $ The original TODO list (nothing fixed there yet): =========================================================== The following things need to be fixed. In a very rough order of priority. * (DS) M-RET in *S* doesn't work properly with multi-line inputs. * (DS) Typing C-c C-d in an S-mode buffer can read the wrong file (apparently the wrong value of S-directory is used.) * (DS) Maybe S-eval-region should do S-view-at-bottom, too * (DS) It would be nice to interpret a nil value of S-directory as the default directory. * (DS) Add a predicate to control when S-object-list is dumped. It would be nice to dump this only if an assignment has taken place or the search list has changed. * (DS) C-u -1 C-c C-x C-c C-o produces odd results * (DS) Automate inferior-S-send-input to delay sending to the S process until a complete command has been typed. (I.e. when presented with an incomplete command, RET behaves like LFD). If this is done, multi-line commands will always get into the history as one entry. * (DS) The menus need finetuning, and a binding to a keyboard key. * (DS) Need to decide on a sensible policy on csh-like history references. At the moment, expanding such references is only possible from the menu. * (DS) Need a keystroke to kill an edit buffer *and* the associated file. * (DS) Need a function to copy an object to a new object *and* copy it's source file to a new source file, modifying the target of the assignment. * (DS) Debugging support, through trace() and tprint() * (DS) Modify S-beginning-of-function so that, with arg n, will move out n layers of nested functions. Wiht C-u arg, move to outermost function definition * (DS) Rewrite the S-command and S-eval-visibly functions to use transaction queues (so that we can really have S running in the background) This is a big job. ============================================================= Here is the new set (a start for S-mode 5.0). NOTE: Not all of these are clean OR are even consistent. -------------------------------------------- * (KH) Fix indentation for "{" in the GNU style... Kurt> * What I also find frustrating is that the GNU style does Kurt> not get the indentation of `{' in: Kurt> fun <- function(x, y, z) { Kurt> right (in fact, the results of hitting TAB on the second Kurt> line seem to vary). But it is not important. * (KH) It may be worth while replacing ("^[>+]" . font-lock-keyword-face) in R-inf-font-lock-keywords by ("^[RS]?[>+]" . font-lock-keyword-face) (or perhaps something even better assuming the coexistence of processes called R, S, S on a system with the corresponding prompts. (MM) Yes, add "S4" to this list to get something like ("^[RS]?[1-9.]?[>+]" . font-lock-keyword-face) is not quite correct, since it includes ".3>" buth should rather "R0.50>". * (KH) In R at least, asking for deletion of a file after loading it with C-c C-l does not make sense. (MM) Yes! -- this has been a real pain, especially when the file was version-controlled, it sometimes has just been deleted w/o asking ! * (KH) Also, there is no support for an Emacs-specific startup file. This is not really important right now, I think, but anything based on comint and term should support that. (Tony, if you look at my R-inf.el, you'll notice that some effort goes into doing the right thing with output from startup args and files.) * (KH) The function S-complete-object-name() in S-inf.el currently returns (or (comint-dynamic-simple-complete pattern components) 'none) with the comment `always return a non-nil value to prevent history expansions'. Do you have an idea what that means? Is there any good reason to break the Emacs/Comint convention that a completer should return a non-nil value only if it did successfully complete? The specific reason why I ask is the following: S-inf does (setq comint-dynamic-complete-functions '(S-complete-filename S-complete-object-name comint-replace-by-expanded-history)) I don't care about the last and prefer (setq comint-dynamic-complete-functions '(S-complete-object-name comint-dynamic-complete-filename)) Note the reversed order of filename and object name completions. I think it makes more sense that way, because if I have the file `anthony.dat' in my current dir and do anthony <- read.table("anthony.dat") then typing `ant TAB' at the R prompt should complete to `anthony' as an object name, as I can always force the filename in the current dir by `./ant TAB'. However, as S-complete-object-name() always returns a non-nil value, the comint file name completion simply does not happen (well ... that's at least what I think is the case ... but then also, what is the point to have comint-replace-by-expanded-history() in the list of completers, when it definitely will never be called ... hmmm.) Please let me know what you think. My suggestion would be to simply change the last 2 lines of the code for S-complete-object-name() to (comint-dynamic-simple-complete pattern components)))) and set comint-dynamic-complete-functions as I do :-) Well ... what I said was not quite right, as S-complete-object-name also tries to do something about `./ant RET'. In any case, please let me know what you think. * (AJR) Need an AUTOCONF for configuring Makefile, etc... * (AJR) Move S-extras into the mainstream distribution files and as an S-site example. * (KH) So, need a "create-debian" entry in the Makefile. * (KH) MINOR REMARK: Currently, we have American and English spelling together. If we want to change this, please add it to the TODO list. * (KH) MINOR REMARK: Some of the doc strings are not o.k. (first sentence longer than one line ). We eventually need to fix this, but perhaps not for 4.9. * (KH) Btw, why not have `M-x vista' too? * (KH) MAJOR REMARK I: The code for getting the `right' history file does not work. E.g., when I start R and XLS in the same directory, they both use .Rhistory. For a possible solution, see the novel below. * (KH) MAJOR REMARK II: The code (condition-case () (load S-object-name-db-file) (error (message "%s does not exist. Consider running S-create-object-name-db." S-object-name-db-file) (ding) (sit-for 1))) in S.el causes several problems. First, it produces an error in the byte-compilation process. I noticed that you put an empty S-namedb.el in the distribution, but that does not help if `nil' is not in the default load path (because then the current directory is not searched), which I think is the default. Second, there should obviously be different namedb for R and S. (What I really mean is that the setting of S-object-name-db must be a function of the implementation [have we officially decided on using `dialect'?] used. Hence, the right thing most likely is to execute the code not when loading S.el, but when it is clear which process is started (assuming we have different namedb's for each dialect). This could probably be as late as before inferior-S-mode-hook, but I am not sure. (Note: currently this is not a problem for me, because I only have R, but what does Martin do?) * (KH) NOVEL: So I spent several hours yesterday trying to figure out the right way of solving our problems with local variables, in particular because Martin explicitly asked me to do (only to find that the next morning Tony had already done something about it ...). I think it is important to distinguish two kinds of variables that need to be taken care of. ** One group is those variables which need to be known when the inferior process is started (i.e., before the process and hence also its buffer exist). Such variables are *) dialect (currently transmitted through S-proc-prefix) *) program name (`R' might be on the load path) *) program args (such as for `-v 10' for R) *) program startup file (currently unused) *) program history file (???) ** The other group consists of those which are not needed for startup, but need to have the right buffer-local values in the interaction buffer, such as inferior-S-help-command inferior-S-objects-command etc. The problem we have is that there is NO WAY of passing non-global values to buffer-local variables in Emacs. Something like (defun R () (let ((inferior-S-var value)) (inferior-S))) does not set inferior-S-var to value in the interaction buffer if it is local there. (Sort of static scoping.) There are several possible solutions: ** Keep manipulating the global name space using setq-default, as b4 did. Of course, this is terrible, because it overrides defaults. ** Have one function which does something like (cond ((eq S-dialect "R") (setq ...)) ((eq S-dialect "S4") (setq ...)) (t (ERROR))) after calling make-local-variable() on the relevant variables, and wrap the code into a function. To add a dialect, users would need to to this in there inferior-S-mode hook, or to advise/change this function. ** Have a list similar to S-style-alist with settings for the variables, and a function which sets them. This is similar to the above, but keeps the code for the function and the variables separate. ** Have a dialect specific hook, e.g. inferior-S--mode-hook ** Keep manupulating a non-dialect-specific hook in the global name space. This is what we currently do, and not `optimal' for the same reason that using setq-default was not: If we think of inferior-S as user function and S and R as simple wrappers, then calling these should not modify the behavior of the generic function. I think the KEY to a clean solution lies in the observation that there is really only ONE variable needed in both steps (i.e., cranking up the process and setting local variables in the interaction buffer), and that is the information about the CURRENT DIALECT (which I think is currently kept in `S-proc-prefix'. We need to ensure that this variable has the right local value to be able to run a specific hook (or a simpler hook as explained above), and that it starts the right process in the right buffer etc. To get that, we could either create a global variable, KEEP IT GLOBAL, use let() in the wrappers, and assign to a local variable afterwards, or (and I think this is the right thing to do) PASS THE DIALECT INFORMATION AS AN ARGUMENT. I.e., we would have (defun inferior-S (&optional dialect n) ... [NOTE: I am not sure about the optional `n', and whether this is used. I think that users might want to have (defun R (&optional n) ...) (defun S (&optional n) ...) and we are safe to give inferior-S the interface we want because it is a NEW function anyway. We could also have it prompt for all relevant variables if given a prefix ...] and have (defun R (&optional n) (interactive) (inferior-S "R" n)) Now the function inferior-S has the information it needs. It can figure out the `right' startup settings (history file, program name and args) based on the dialect information in the generic pre-run hook and perhaps a dialect-specific pre-run-hook, and PASS THE DIALECT INFORMATION ON to the function S-multi() [or whatever it will be called]. I.e., it could be (defun S-multi (name &optional buffer dialect) ...) S-multi can now do (make-local-variable 'S-dialect) (setq S-dialect (or dialect S-default-dialect)) and go on with the buffer-specific settings, again using the dialect information as described above. [Yes, there should be a default dialect which is used when inferior-S is used directly. Perhaps naming would be better with global S-dialect and inferior-S-dialect as the local one ...] * (MM) My WISH: I'm using ess-eval-region and friends very often. If the region has leading TAB, I think the readline feature of R, does a huge 'completion ...' which can completely destray the whole evaluation. ((Try C-c C-f from within a function that has a bit of indentation, and therefore leading TABS (unless you 'untabified' it). )) Yes, I'll have to 'untabify' things before I send it to *R*, but it's a pain, anyway. One could do 'untabify' in ess-eval-region & ess-eval-visibly in ess-inf.el. But actually this is not quite correct, since I may have real TABs in a string nchar(" ") #-> 1 because it has one TAB which should not be converted to spaces. Hence my wish: Write a function 'untabify-leading-white-space' and apply it to the regions in ess-eval-region and ..-visibly. * (RMH) 5. ess-s3-d.el 63 ;;(if (string= ess-version-running "S3") This comment seems inconsistent with ess-version-running. I think it should be ;;(if (string= ess-version-running "S+3") 7. ess-object-name-db-file ess.el line 775. Why is this EVIL? A nuisance I understand, but EVIL? Does the database get built automatically when ess-mode is installed? That would be the right thing to do. Then individual users wouldn't need to know about it all. 10 ess.el lines 254-270 This is one of the things I put in my site-start.el. I think this is too complicated. I think that when item 2 of this note is corrected (that is run the ess-pre-run-hook before the things that depend on it) then the nil value will work as advertised and the comment beginning with the word " Alternatively," will become completely unnecessary. (defvar ess-directory (file-name-as-directory (getenv "HOME")) "*The directory ess is run from. It must end in a slash. Provided as a default if ess-ask-for-ess-directory is non-nil. A nil value means use the current buffer's default directory. Buffer-local: in process buffers, this contains the directory ess was run from.") ;; You can put something like: ;; (setq ess-directory (file-name-as-directory (concat (getenv "HOME") "/ess/"))) ;; in your ~/.emacs file and ess will always start up in your ~/ess directory. ;; Or you can say: ;; (setq ess-directory nil) ;; in your ~/.emacs file and ess will always start up in your current buffer's ;; default directory. [[[[ delete ;; Alternatively, you can get ess to start up in the current buffer's directory ;; by putting this in your .emacs ;; (setq ess-pre-run-hook '((lambda () (setq ess-directory default-directory)))) ;; Better (more correct) version: ;; (defun ajr:ess-set-directory () ;; "Set ess-directory to current directory." ;; (setq ess-directory default-directory)) ;; (add-hook 'ess-pre-run-hook 'ajr:ess-set-directory) ]]]] * (RMH) From smode.cmt (from the S4 package): <-- AJR: some of these HAVE been done. --> e. Problem Working data will be in /usr/people/rmh/.Data > !pwd /disk5/rmh/smode > Reason: .Data has not yet been created in /disk5/rmh/smode Solution: quit S, mkdir .Data, start again Recommendation 1. Tell users in README to create .Data first. Recommendation 2. Tell users in README about Info item - User Option: S-directory I for one always want the current buffer's working directory. g. Question: S-help does the following: (S-command (format inferior-S-help-command object) tbuffer) which seems to going through more work than is often necessary. When the .Cat.Help subdirectory exists, why not just M-x find-file the help file? 2. S3, Splus 3.3, S4 e. S-inf-font-lock-keywords In inferior-S-mode the expressions below are in the indicated faces: > tmp <- 1:3 # > is in font-lock-keyword-face # rest is font-lock-variable-name-face tmp <- 1:3 # <- is in font-lock-reference-face # rest is in default I don't understand why. >From the definitions in S-inf.el, I expected that there would be no dependence on the presence or absence of the leading prompt ">". In particular, I anticipated that <- would be in font-lock-reference-face with or without the prompt. f. S-inf-font-lock-keywords I recommend adding several keywords to S-inf-font-lock-keywords for S3 and Splus 3.3 as noted in the attached s3.el and splus.el. g. Interesting glitch While fixing C-c C-l for S4, I found the following: >From the *scratch* buffer, both the commands (S-command "source(\"junk.s\")\n" (get-buffer "*S-errors*")) (S-command "source(\"junk.s\")\n") work correctly when junk.s is ok. The first one puts an error message in "*S-errors*" when junk.s has a problem. But the second one loses the error message. I chose not to investigate this further, since S-load-file uses the first form, and I doubt any person would consider using the second. 3. S4 changes a. S-mode.el [C-c C-l S-load-file] ;;; The S4 requires the fixes to ; S-dump-error-re ; S-parse-errors ; S-prompt-wait ;;; in my s4.el in order to respond correctly to syntax errors ;;; during S-load-file. ;;; Without these changes the system will freeze. ;;; (^G will clear the freeze, and ^XB *S-errors* will ;;; display the error message). b. S.el and S-site.el The variable S-version-running, defined in S.el, with the option to revise in S-site.el, needs to be redefined to identify version 4. Some of the items coded by S-version-running differ in Version 4. b1. S-inf.el (setq inferior-S-search-list-command "searchPaths()\n") ;;; This variable needs to depend on S-version-running. ;;; the function inferior-S-search-list-command should probably use ;;; inferior-S-search-list-command, but it actually has "search()\n" ;;; hard-wired in. ;;; inferior-S-objects-command is the same for version 4 as for version 3 b2. S.el ;;; inferior-S-help-command ;;; inferior-S-search-list-command ;;; S-dump-error-re Add a new line ;;; inferior-S-objects-command b3. S-help.el ;;; S-submit-bug-report needs to know about version 4 for a bug report ;;; to be useful. c. Other changes in s4.el respond to changes in S4: .Help is now __Help Errors are now Problems "Dumped" messages now become offers to Debug Additional keywords should be fontified d. I have placed S-namedb.el in $SHOME in my s4.el file. On further reflection it should probably be in the $SHOME/library/emacs/ directory. Question, does it make sense for S-namedb.el to be distributed in $SHOME/library/emacs as part of binary.*.tar.gz ? * (RMH) Rather than have the site installer change the name of the directory, it should be possible to find it out automatically. Here is the relevant code from my spread.frame package. It assumes the user started up spread.frames by typing M-x load-file "/path/name" It then finds the directory associated with that path and goes from there. Some similar trick should be doable when the user does a M-x load-library "name" (defun find-spread-frame-directory nil "Locate directory in which spread.frame functions are stored." (list-command-history) (set-buffer "*Command History*") (goto-char (point-min)) (search-forward "(load-file ") ) (goto-char (1+ (match-end 0))) (setq beg (point)) (end-of-line) (search-backward "/") (goto-char (match-end 0)) (setq spread-frame-directory (expand-file-name (buffer-substring beg (point)))) (kill-buffer "*Command History*")) * (daven@stille.llnl.gov (David Nelson)) Transcript mode is delightful, with one possible improvement. Quite often, when I'm in the middle of a session, I'd like to insert a comment in the transcript, preferably with a distinctive type face like those provided by "font lock". Is there an easy way to do this that I'm just missing? (RMH's thought): I'm writing to you rather than directly to daven@stille.llnl.gov (David Nelson) because I'm not sure how to tell him to do the following fix in .emacs or S-site.el because of the local variable issue or if it even is the right fix. I think the permanent answer should be for you to add the lines (make-local-variable 'comment-start) (setq comment-start "#") (make-local-variable 'comment-start-skip) (setq comment-start-skip "#+ *") copied from S-mode.el to the files S-trans.el and S-inf.el (4.8 notation). But when I tried it out with M-x eval-expression in the *S* buffer it didn't have the effect I anticipated. I can't figure out the intent or meaning of the line ("^\\*\\*\\\*.*\\*\\*\\*\\s *$" . font-lock-comment-face) ; S-mode msg from S-inf.el and S-trans.el * (KH, 010897) Can we combine the inferior-ess font-lock-patterns for prompt and input into one regexp? I.e., use ("^\\([a-zA-Z0-9 ]*[>+]\\)\\(.*$\\)" (1 font-lock-keyword-face) ; prompt (2 font-lock-variable-name-face keep t)) ; input * (KH, 010897) Perhaps one could have an option to install the Info files gzipped (as is default for e.g. Debian GNU/Linux). * (RMH bad behavior) I loaded ess-site from *shell* in directory ~/ Then I M-x S from that buffer. It asked me about starting S in ~/ The with in *shell* I cd /disk05/rmh and M-x S from *shell* again. I think it should have attempted to start S from /disk05/rmh, but instead it again asked me about starting S in ~/ * (AJR/RMH) make sure that font-lock stuff is properly set. (look into file order, for example). * (AJR) Kurt> * When first starting R and then XLS, we have Kurt> ess-history-file's value is ".Rhistory" Local in Kurt> buffer *R*; global value is ".XLShistory" Kurt> Why is there a non-nil global value? > Because of the nature of buffer-local variables. It doesn't really > matter, since I'm ALWAYS ignoring the global value (at least that is > my intent). * (MM) Date: Fri, 22 Aug 1997 09:11:25 +0200 >>>>> "Kurt" == Kurt Hornik writes: >> * Questions: 1. I don't understand why ess-customize-alist is not >> buffer-local (This definition is from ess-vars.el.): (defvar >> ess-customize-alist nil "Variable settings to use for proper >> behavior. Not buffer local!") ;;(make-variable-buffer-local >> 'ess-customize-alist) ;;(setq-default ess-customize-alist nil) Kurt> Personally, I think that most of the (make-variable-buffer-local Kurt> ...) and (setq-default ...) will have to be replaced eventually Kurt> by making the variables local when needed and passing them not in Kurt> the global environment but rather as explicit arguments to the Kurt> caller functions. Kurt> E.g., Kurt> (ess-start-process NAME BUF FILE ARGS ALIST) This is cleaner from a programming point of view, however is n't this much less CPU efficient ?? >> 3. Should ess-proc-prefix be renamed to ess-language? I glanced at >> the result of 'grep ess-proc-prefix *.el' and don't immediately see >> a problem. Kurt> Yes, good idea. Could we then have Kurt> ess-language ess-dialect Yes, this looks like the thing to aim at !! Together with what Kurt wrote in the last e-mail's PS: Kurt>>> PS. We should decide on a scheme for languages (S, XLS, ...) Kurt>>> and what we call ``dialects'' (for S: S3, S4, S+, ..., R). Kurt>>> This would allow us to have a general mechanism for dealing Kurt>>> with the above, such as Kurt>>> Kurt>>> * In the caller function (M-x S, M-x R, ...) set language and Kurt>>> dialect. Kurt>>> Kurt>>> * Then, we don't explicitly have to assign all variables which Kurt>>> should be local (such as font-lock-keywords) anyway, but could Kurt>>> figure them out by Kurt>>> Kurt>>> looking for -font-lock-keywords looking for Kurt>>> --font-lock-keywords Kurt>>> Kurt>>> Hooks could be organized similarly Kurt>>> ... (ess-inf-S-S4-mode-hook?) * (RMH 31 Jul 1997 07:22:10 -0400 or earlier) * what it doesn't do 1. The effect of the second line is to prevent * font-lock information from happening on input lines. The prompt * is highlighted, the rest of the line is not. The effect is to * cancel the usefulness of syntax highlighting on user-typed * commands. Syntax marking is only in effect when the system types * a function back to us. 2. I can't figure out what the ess-mode msg line is doing. ("^\\*\\*\\\*.*\\*\\*\\*\\s *$" . font-lock-comment-face) ; ess-mode msg 3. comments (beginning with #) are syntactically ignored by highlighting. In ess-mode, comments are not picked up with this table (actually ess-mode-font-lock-keywords). They are picked up by ess-mode-syntax-table on line 733 of ess-vars.el. 4. what are the < > characters doing in this line: ("\\<\\(TRUE\\|FALSE\\|T\\|F\\|NA\\|NULL\\|Inf\\|NaN\\)\\>" . font-lock-type-face) ; keywords * open questions 1. I think I want ess-mode-font-lock-keywords to be effective in inferior-ess and in ess-transcript. That means to the user, the <- and function and T and F will be highlighted as commands are typed in. 2. That means to the ess-mode designer that the line ("^[a-zA-Z0-9 ]*[>+]\\(.*$\\)" (1 font-lock-variable-name-face keep t)) ; input is deleted from inferior-ess-font-lock-keywords. 3. Further it means that inferior-ess-font-lock-keywords should be defined by adding additional definitions to ess-mode-font-lock-keywords. * harder questions 1. these keywords are hardwired. They should probably be put into the *-customize-alist. In particular, S4 uses different keywords for errors (problems) and so forth. It also uses different keywords for the Help file (__Help instead of .Help). These are functional differences, not just cosmetic differences where the font would be wrong. See the comments in ess-s4-d.el (based on my original s4.el). (just noticed, the current ess-s4-d.el has two ending pages.) It is easy to make ess-mode work for S4 by overriding all the differences (which is how s4.el works). It is harder to do it cleanly so the same emacs session can be used for S4 and S3. Lots of currently hardwired variables need to be moved to the *-customize-alist first. xlispstat is quite differently structured, so I am sure that the keywords and highlighting here will be either irrelevant or harmful if applied directly. customization is needed for that generality as well. * comments I'm confused? I've always gotten comment highlighting in inferior-ess/S-mode. Or do you mean that it's not done in the right place? correct, it is not done where you think it is done (right place or not). It is done by ess-mode-syntax-table for inferior and transcript mode. It is not done at all for ess-mode. The font-lock settings seems to be irrelevant. * logic Richard> 4. what are the < > characters doing in this line: Richard> ("\\<\\(TRUE\\|FALSE\\|T\\|F\\|NA\\|NULL\\|Inf\\|NaN\\)\\>" Richard> . font-lock-type-face) ; keywords using the typeface for the inequalities, for boolean statements/tests. Not so. The < > do not appear in font-lock-type-face. * Hmm... I think that was the font that was to be used for the prompt. Not so. The previous line is used for the prompt. This line seems to be used to suppress font-lock control for all characters following the prompt. Note that the (1 ...) is in the position normally taken by the "." . I assume the keep makes it stay that way for the rest of the line. I haven't bothered to read font.el to figure this out. * *Buffer List* . text.st 0 ESS Transcript /disk05/rmh/text.st test.r 0 ESS[R] /disk05/rmh/test.r test.s 0 ESS[S] /disk05/rmh/test.s * *S4* 236 Inf-ESS Note that the *.r and *.s files include the [R] and [S]. The inferior processes do not include the ess-version-running, I wish they would. The corresponding modelines are (ESS Transcript [] Font) (ESS[R] [none] Font) (ESS[S] [none] Font) (Inf-ESS [S4]: run Font) I don't know the original intent of the [] and [none], but I would love to see the name of the buffer to which ^C^N is sending stuff. * ^C^N goes to the wrong inferior process. I opened test.r in the same directory as *R* and sent a line. It went to the *S* buffer in a different directory and running the wrong program. There needs to be a way for the system to ask me which process to use. Also, it's default guessing system should have guessed *R* based on the file name test.r. * hooks in ess-vars.el, line 317 and following, some of the hooks are initialized to '() and others to nil. Is there a difference? * ess-source-modes in ess-vars.el line 382 Is this obsolete now that auto-mode-alist has the suffix information? * (AJR, via MM, RMH, DB): distinguish between files of dumped objects and files of loading objects. * (RMH/AJR) Richard> essl-sas.el Richard> SAS-log-mode Richard> As present, SAS-log-mode doesn't do anything but be Richard> human-readable. My intent in basing it on Richard> ess-transcript-mode rather than on fundamental-mode is Richard> that when sas-clean-region and related functions are Richard> figured out, then the log file can be used to re-enter Richard> commands back to *SAS:1*. We will look for all numbered Richard> lines between a Richard> 34 PROC abcd; Richard> ... Richard> 38 run; Richard> pair, sas-clean-region them and send them over to Richard> *SAS:1*. This is NOT an exercise for 5.0. But because Richard> it is intended, I feel (weakly, not strongly) that it Richard> would be better to base SAS-log-mode on Richard> ess-transcript-mode. This plan should be formally Richard> entered into the TODO list. I would agree with this. I'd also like to make sure that we have a means of easily going between linked buffers. Added into the TODO list. Richard> While we are entering things in the TODO list, I would Richard> like to consider setting up *SAS:n* as a unix pipe, Richard> rather than as a unix buffer/file. I don't know how to Richard> tell emacs to do that. The idea is to mimic the behavior Richard> of the SAS edit window where, once the Submit menu item Richard> has been clicked, the window is emptied. No, I think that using as a buffer would be better (especially for debugging any weird problems). Hiding it, though, will be desirable. Richard> I can also see a case for leaving the *SAS:n* buffer as a Richard> buffer. We should consider making it read-only to force Richard> the user to do all thinking in the ex123.sas buffer. The Richard> only reason I can currently think of for letting the user Richard> write directly in the *SAS:n* buffer is to enter the Richard> commands Richard> stop; Richard> or Richard> endsas; Richard> I can't think of any reason to save the *SAS:n* buffer Richard> and would like to know if there is any way to prevent the Richard> user from saving it. and not even that, since that should be the result of C-c C-q, so that we get a nice, uniform means of exiting. (RS1) I don't believe the sas-log-mode suggestions were ever implemented. In fact, sas-log-mode is not a default option anymore since there are so many different applications that create .log files. Instead, a few changes were made to sas-mode based on requests for syntax highlighting of the .log. This feature can be toggled on and off by F10. This temporarily turns on sas-mode for .log files so you will not experience permanent extension collisions with other .log file generating applications. Also, performance may be an issue. Extremely long .log files (particularly those generated by macros that involve alot of code-generation) can be extremely time-consuming to fontify and lazy-locking is usually not an option due to the complexity of the SAS regular expressions. Fast-locking may help a bit, but font-locking of several minutes is not unheard of. Also, the font-lock code was re-written to properly highlight either a .sas or a .log file. See ess-sas-run-make-regexp below. (RS2) Rich re-did sas-log-mode to use the font-locking from ESS[SAS] and it seems to be working. The only caveat is that I found that fast-lock is very slow for big .logs and I switched to lazy-lock and it is much faster, however, I have problems toggling; usually, after I turn it on, I can't turn it off; but, that's not so bad with lazy-lock. Also, a new function creates transcript from your .log, ess-sas-transcript * (KH) Font-lock needs to be more intelligent about recognizing reserved words in non-reserved contexts (such as in "strings"). (RS1) If this was a SAS problem, then problem has been fixed. To turn on the new functionality, (setq ess-sas-run-make-regexp nil) (RS2) This is now the default and most known issues have been addressed; even hanging then statements! * (AJR) SAS indenting needs to be fixed. (RS) I don't know if this was fixed, but I haven't had any problems with indenting recently. * (KH) explicit statement: I have only one remark (one of my usual ones). I'd like to be able to pass command line arguments to the inferior process when it is started. This is currently not supported, and poses some difficulties with an interactive prompt mechanism. (Also rules out my suggestion of using C-u to force prompting for command line args.) Hmm ... Perhaps we should have a variable (ess-inf-always-prompt-...) to get around this problem? * (RMH - SAS) graphics are possible in two ways: a. proc gplot; plot a*b / vpos=25; b. goptions device=psfile; filename gsasfile 'temp.ps'; and then use ghostview from another *shell* buffer. autoexec.sas defines the departmental printers and turns off overprinting. My autoexec.sas file is: libname gdevice0 '/home/public/stat/gdevice0' ; options noovp; * (RMH - SAS) I have another proposal for font-lock in SAS-mode. I think it will be easy, but I would like discussion first. My new proposal is that proc whatever data myfile %macro macname and maybe a few others (including both the keyword and name of the dataset or proc) be in font-lock-function-name-face %include will be in font-lock-reference-face Any other FIRST word in a statement will be in font-lock-keyword-face My reasoning is that the current laundry list is too long, and still misses many keywords. The structure of the SAS language is essentially keyword and arguments, so let's follow that. (RS) Essentially done. The following statements are in font-lock-reference-face: macro statements, PROC ..., DATA, RUN, ENDSAS, and QUIT. See ess-sas-run-make-regexp above. * (Tobias Laatsch - SAS) There seem to be some problems fontifying SAS Comments in ESS 5.0 Pre1. (I'm running xemacs 20.2 on AIX .) Currently I recognized following problems: 1) Multi-line-comments are not fontified. (open comment "/*", some lines of code, close comment "*/") 2) When typing / , " or ' in a comment-area, ESS fontifies the whole line as normal code instead of comment. 3) Typing a '* in a comment-area fontifies the rest of the line as string. (RS) Fixed for /* */ style comments which are now handled by grammar only. * ; and %* ; are still broken since they can't be specified by grammar. * (AJR) Richard> I think of S-transcript-mode as identical to Richard> inferior-S-mode except that the transmission is to the Richard> same buffer in inferior-S-mode and to a different buffer Richard> in transcript-mdoe. So I expect ^M (enter) to behave Richard> normally for lines that begin with "> command" and "+ Richard> continuation". Which is what my proposal does (send command, move to next prompt). What needs to be modified is that currently, it moves to any next prompt, including "+ ", rather than just to the next primary prompt -- it is smart enough to strip the "+ " as well from the whole command, and collect the rest of the command line. Richard> I haven't tried eval-region commands from either *S* or Richard> from a filename.st. I think both ^C^N and ^C^R should Richard> make sense and work if the region is valid input. Both Richard> modes should strip leading ">" and "+" characters. I Richard> think that a region which is a subset of a line, or which Richard> doesn't begin with the standard prompt sequences, should Richard> send it over literally. So, C-c C-r would only send lines beginning with inferior-ess-primary-prompt (up to the last consecutive inferior-ess-secondary-prompt), strip off the prompt, and ignore lines which do not begin with prompts. Does this sound correct (for C-c C-r)? C-c C-n should be correct (comint-next-prompt). * (KH/AJR) I see. This is what the "help(\"%s\")\n" does. Well, we have the following problem. The `new' interface to help() I created is help(topic, package = .package(), library = .lib.loc) This allows you to get help on a topic (R object, ie fun or var or whatever else is documented) in a package without loading it, via help(topic, p = PKG) I've eliminated the help(data = ) part, but there may soon be another argument to search for keys ... If we want people to be able to use the extended forms, we can * use "help(%s)\n" for the format, which means they have to quote special things as they would need to from the command line * or do something smarter, such as quote only if object does not contain "," which appears to be the right thing. What do you think? > How about this 3rd alternative? > C-c C-v works as usual > C-u C-c C-v prompts for the extra arguments (a "wizards > help", of sorts) > Completion will only work with the prompt for the command, and will be > turned off for the others? > If not, we'll go with the "right thing" (option 2). The alternative sounds good. We might still want to quote the help string in case it does not contain a `,', so that C-c C-v + continues to work ... * (RMH) His (Tom Cook's) sas-get-dataset is a very good idea and was not in my proposal. I would do it using the same mechanism that S-help uses to put the results of ?function into *help(function)* buffer. It is a relative of ess-dump-object-into-edit-buffer. The major difference is that there is no sense of editing the object and sending it back to S. It is also a relative of the display of a spred.frame, with the difference again that there is no sense of editing the object. I like the switch-to-sas* functions. I would like to generalize them back to S. I think switch-to-S-source when entered from the *S* buffer should go to the filename.s that was the most recent sender of ^C^N or ^C^R. Here is cook's sas-mode-map and how it fits with my ess-sas-d.el "\C-c\C-i" 'indent-sas-statement) \t use recommended conventions "\C-c\C-a" 'beginning-of-sas-statement) use "\e\C-a" 'beginning-of-sas-proc) \M-\C-a "\e\C-e" 'next-sas-proc) \M-\C-e "\C-cs" 'switch-to-sas-source) use "\C-cS" 'switch-to-sas-source-other-window) use "\C-cg" 'switch-to-sas-log) use "\C-cG" 'switch-to-sas-log-other-window) use "\C-cl" 'switch-to-sas-lst) use "\C-cL" 'switch-to-sas-lst-other-window) use "\C-cr" 'run-sas-on-region) ^C^R "\C-c\C-l" 'submit-sas) ^C^B or ^C^L "\C-cd" 'sas-get-dataset) use "\C-c\C-c" 'switch-to-sas-process-buffer) ^C^Z or ^C^Y (RS) Can't comment on the S aspects, but you can now browse/edit a permanent SAS dataset (provided the library definition appears in autoexec.sas) with F9. * (AJR) REWRITE INFERIOR-ESS (AJR, for 5.1 series). * (RMH) Add explicit directions on installing or using dir for info. Makefile ; for 5.0 line 96 of pre5/Makefile included dir. dir does not appear in lastpre/Makefile. dir does not appear at all in the directory. You did include instructions on line 194 on editing dir. dir is needed for the info system to get ess into its menu. Please include the sample dir (below) and instructions on editing site-start.el. I have the following in my site-start.el ;; (defun add-info-path (newpath) (setq Info-default-directory-list (cons (expand-file-name newpath) Info-default-directory-list))) (add-info-path "/disk05/local/teTeX/info/") ; stat dept (add-info-path "/disk05/local/emacs/S-mode/") ; stat dept (add-info-path "/disk05/local/info/") ; stat dept ;; Here is my 5 line dir file from S-mode 4.8. It needs to be updated to 5.0. The first line is blank. I think the blank line is required, although it might be there only for appearance when the info menu comes up.  File: dir Node: Top This is the top of the INFO tree * Menu: The list of major topics begins on the next line. * S-mode: (S-mode). S-mode Version 4.8 This works correctly in Emacs 19.29. My memory says that when I was playing with XEmacs a few months ago, the add-info-path didn't work correctly in XEmacs. Only the first and last items on the Info-default-directory-list actually got displayed. * (RMH) >From here on is NOT for 5.0 ess-create-object-name-db and ess-load-object-name-db-file 1. e-load-* doesn't ding if not there. good 2. I entered e-create-* manually and it did its job, creating ess-s+3-namedb.el in my home directory. Then I did a name completion and ESS redid the entire set of searching the directories. 3. mv ess-s+3-namedb.el to ESS-5.0/ 4. Quit emacs and start over 5. Then I did a name completion and ESS redid the entire set of searching the directories. 6. Quit emacs and start over 7. Manually M-: (ess-load-object-name-db-file) 8. Then I did a name completion and ESS redid the entire set of searching the directories. * (RMH) buffer choice (questions for 5.1) I opened lots of simultaneous processes. The q() from *R*. Then M-x XLS XLS came up in the *R* buffer Tried it again. This time I C-c q() from *S4*. Then M-x S S+3:3 came up in *S4* buffer. This is obscure stuff. What really should happen? Problem in inferior-ess: logic states that if the current buffer is iESS or ESS-trans, and doesn't have an active process, use it, instead of creating a new buffer. (AJR). * (RMH) * iESS [S+3] 5.0? 5.1? 'single quotes' are in regular font "double quotes" are in quote font This differs from ESS[S] mode in which both kinds of quotes are in quote font. Should be fixed in 5.0 if easy. Not obvious to me where the problem is. The identical S-syntax-table is in use in both iESS [S+3] and ESS[S]. The font-lock-keywords don't seem to me to be the problem. * (RMH) Dumped problem in S+3 Here is an example of the Dumped font problem in S+3: > "trellis.settings" + "x + z + abcdefghij + klmnopqrstuv" Error in "trellis.settings" + "x + z + abcdefghij ..: Non-numeric first operand Dumped > Note that the Error description from S+3 truncates the command and adds the ".." to indicate the truncation. Part of what gets truncated is the closing quotation mark. Hence everything from that point on is still inside the opening quotation mark. Everything includes the rest of the error description, the word "Dumped", the prompt on the next line, and all succeeding commands. I normally go back and edit the line by adding the closing quote in front of the prompt Dumped "> I would love for iESS [S+3] to monitor the word "^Dumped" and make sure the font is back to regular. * On the Dumped ".. font problem I have an answer that I am uncomfortable with. The problem: Error in "trellis.settings" + "x + z + abcdefghij ..: Non-numeric first operand Dumped Potential Solution: a. Look for the pair "Error in" and "Dumped" b. Verify the number of uses of '"'. c. Insert an extra '"' if needed after the ".." and before the ":", thus Error in "trellis.settings" + "x + z + abcdefghij ..": Non-numeric first operand My discomfort is that we are then modifying the output, not just highlighting it. * (BR) Scripts in S-PLUS 4.x provide quite similar functionality to the ESS front-end, and are worth investigating. * (Duncan Murdoch, on IDEs): I don't understand the details of what you're saying, but for an example of a very good IDE, you should look at Borland Delphi, version 3. It has some very nice features: - at any point, you can ask to see a list of legal identifiers to insert. These are presented in order from most to least local, so usually the one you want is near the top. The IDE knows enough about the syntax of the current line to only suggest things that would be legal there. - when you type a dot (more or less equivalent to $ in S), you're presented with a list of fields and methods for the object or record you're working with. - you can point at any identifier and hit a key for the help for that identifier. Because it's an object oriented system, there are often multiple different methods with the same name; the IDE picks the appropriate one by the context. Other unrelated things that Delphi does nicely which Splus would do well to emulate: - you can ask for a new object of a specific type, and it will insert appropriate skeleton code for it. - the object browser is quick and convenient to use! Of course, the objects in Delphi tend to be quite different from the objects in S... - it has lots of nice visual design tools for writing user interface code. * Bob_Dorazio@usgs.gov (Bob Dorazio) on IDEs: I have no experience with emacs, but in response to your question take a look at Watcom's IDE for C++. This IDE is the best I have ever seen! The source code editor is fantastic and the level of integration between the source code editor, the compiler, the debugger, and the utility for "building" executables or libraries surpasses that of any other IDE I have used. * From: Sandy Weisberg Subject: Re: ESS 5.1.14 supports ARC To: rossini@biostat.washington.edu Date: Thu, 6 Jul 2000 09:42:19 -0500 (CDT) The name of the program is Arc, capitalized because it is a proper name, but otherwise a normal English language word. Thanks for asking! > > Thanks to Doug Bates' prodding, ESS 5.1.14 (Emacs Stat interface) > released an hour ago, works with ARC). > > Should it be referred to by "ARC" or "Arc" (or?) in the ESS > documentation (which still needs to be written)? > * From: Sven Garbade[SMTP:garbade@psy.uni-muenchen.de] Subject: Delete forward key I don´t like it that the delete-forward key deletes backwards in ESS-mode. My default option is, delete-forward deletes forward, but ess-mode ignore this. Is there a simple way to change this? (RS) Put this line in your .emacs file after you have loaded ESS: (define-key ess-mode-map [delete] 'delete-char) * (RMH) Stata question: delimiter I noted that the command lines are duplicated. You might need (setq comint-process-echoes t) in the defun stata Date: Tue, 15 Jun 2004 01:11:33 -0400 From: "Richard M. Heiberger" Add To Address Book | This is Spam Subject: Re: change in ESS with edit() in R To: rossini@u.washington.edu Cc: Stephen Eglen , ess-core@stat.math.ethz.ch I think Tony spotted the source of the problem. I think I did it. The goal in ess-iw32.el was to change the behavior of ess-eval-linewise and ess-eval-region to call the Windows S-Plus GUI through the DDE protocol. This was successful. I and others have used it daily for the past 6 years. I intended to restrict the change to the S-Plus GUI. My thinking at the moment is that I didn't do that restriction well enough. I get an emacs freeze in both R and Sqpe on Windows. An initial look at emacs variables makes me think that the "if" tests in ess-iw32.el for the substitute definitions of ess-eval-region ess-eval-linewise ess-load-file ess-dump-object-into-edit-buffer ess-display-help-on-object ess-dump-object aren't precise enough to detect that R and Sqpe should not be sent to ddeclient. This note goes on the master "To DO" list. Do we have one? Taking it off the list is not a high priority for me because the work around of C-g is so easy. Rich 03-17-08: Add advanced features to ESS[JAGS] like thinning and multiple chains (initialization and creation): Done! Rodney 01-24-12: ESS[R] and Tramp bug The help doesn't work nicely. ?chol doesn't pop up a new buffer like it does locally; instead it puts you into a pager of some sort. Also, help.start() doesn't work unless you launch firefox remotely (which defeats the purpose of working remotely for the most part). Rodney ess-17.11/doc/readme.pdf0000644005071500004540000054624513202324210011745 00000000000000%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 12 0 obj << /Length 2866 /Filter /FlateDecode >> stream xÚÙrÛHî=_á}£«"š7©É‹•Äqœql—$W&µ³-±-qÍCÃ#Ž÷ëWS”,¥6Ñh{äÀÏ=;G±ïÛã 9Zï‚Ö«#^LÏß¹‚ø<_D!ÎÈ}±|u{DïãüÝÉ—$¼¥Gÿ¶ÜãQùÖù±kéR×*?ùqh]”wU]¨6«Ê?cz6ùüýìø?óo'_B éØcgì"IøžÚ‘#çë¬"¾oñ3°Úµf€Ð õߎäšà[ ì1Ó¬iëlÑ! ©î÷ 8ÍxýëØK,]7=\Ôu‘Ç#7Q 2à,p™³3<x1†OÅó«[\øÖY¡–Ç#×jøU•)#ü…r¦¨ŽGðÕTó+±N4Kd¦.ÛŒã¦16m¶DÙ"`SW«ZEV®„ øò<ê™öm7¦SÕ*¼ÜÐTþØd §"ϺTåªS+B«é6à,¶ªºÕ)(-c#ϱ5ãÇ*²ü‘×;¡3{/Û£›ËÛ¢[#p ®A˜Է糓o¼àùŒØv„aæ—Ž{ahÍàÞ yuÇ,y®jýÀ«ªkq‘b@¼" ÕMVk’xq±èV¼‹vó/PùXdéß­.Ñd£­>‘¾bÒ¶ìMdt9¼‡^‰?Ãqçüf Š-p _åjV>ou壅»ebâwZµ]­‹”ŒP•bø°@ uŒ·[iûYc¾(Á°ò\±‡xÉhÏtËV¤Eb;`rà5^äW–êÔàó³ÑÃ3,q8³`kj× ¿-³ß¼Á"ЬL+äö¡ùÜ;`ëZóÖ‚«sÞ¶{ùâ<'7"kÙÕu/@¤ŒÐÙòjSìì·Z¸ É‘’ãp±@´G^2ªnñšôª4‰vëš!MV.…‡I·êš–‰zŽØ’Ùþrœ€^뉌£½dhý¤È\«ÔìNìo6¯ÐÝæt–®òˆÎÅ;ÓªN²-~ûÝÙ¼éà•¶ÆGa8¶·Wâ¿Á Ð)„Ñ0jï¥ËÕÌÊé"Õ®òj¡íR·ûüQG£7òc°Ÿò³“Eö‰?[!¥YÊ ¤?ºC§æÛ m2N¬>ò+Æ„ds4—0ïdψ°Vë£ãƒh©ßÔY¡êG†.Mð¨AÞëÇ`alm¸»cm¢Ë!=Ûï}ÏŽïµ4ÏÈ£ö-OÀ²uЙɆ$¿¶u»þŸ½\ï3äd÷ocHŸ2´£æ=’-»®/V‘õg‡z#àת.³{t8°Ã8~#£ûÑí%V‘+›ù9ŽÀ÷Ñííª^í³B)‡ÉY2دoŸèVzä'Táj­Ð M=9 d0ÊX)¾ÅÖC†Wd帘ñÃÔ ¸&µàâ¯Ë¬Ù`f›w½l«7ktÜ=[å¼Lª)ð]; Æp±†Þ«/cèÔ´O”nÝ0W§«²{Q9obd«œ}F+gÈÈsÊqv0‰S‘QÕ÷¤§”aEÕ´¨€¬s<¦üb/Áà†šˆBךfpT-ç¿Û|ö«Î8—SNÅJ`%+B;¨)`öŽB'²Ç}MS‚= ÒÔQÎ8Åú´ÕÅ&×¶N»'|Œ¡ãq£·ò!ØOùØÍ4{D1å:a9Bn·*4Þƒ58{®f'¦†"’Ânécé‚Ü.þ v5%¾³«?DáöSÉ4¥~d*ifU«‚ÚáiþB‚ Çvߘ^zÜç“ £°6æè´X>Ò§›„v'oâÀàî³°£Ë]‚MA°}dúI©ÎÆU[K!!Õê¸CqÇä`÷ü–XéQ]¢ ñ!è"x{¡Ú-±@tÒQ%úè¦í!*P‚Zq3C- 78Ãöôù¦æÈØ 9!7/¸€f¹Õw]Îot+GÚE\ljý+«º†ßžÇE\-ÔŠÁsØõås…í%¾}„o5Øêº®u–2ìO¨ç U €ÀªUyÿ|Ï>ÍZ×{ÂgEV6“¥, Ì$žÂGßdû{-©LIL×P0àïW÷læÔŠ–B—ÄÝSà& áDd]¦w½ìŠ\Sbó<GDíCH1óœØNÆH\›fDžu‰I#[BŸM¤O‚ ù¹^2èð0^5UW/i혨1’óeg"¤´²ˆD¾8<±Ml0~Ö¦7rMu×RE`2L½Èú‰Jª:>´TB¶Öý\I8ËÚž«“ê`¡nÄ™Ý=òTˆŽxØæ÷}*€<‰°Ê/d†D7ñüí^?l:7ó6|¹é åZòú’d,èJèl¡Y““ëéswHSkZëƒÓŒÙVN‰¸XÆS™’ì?°yЕ2¸®Ÿ´yïenQoíTÉüã‘âf'G« ’Z«°Ž/9xÛÓOØ/Oð<(v²†Ÿ[}¦²Qòò2)Ç = —&˜]Õ ¾<2œðàj1DìŒ:`Ñ@Ó/ìX®P¬ÉX‚€!˜æ™NùEtV+‚ˆüÆì'øüŽSÑ)ºÀ§¯ðuÔêäãÅåÅü§àÕüür1¿âüû‚„®§¼3áÇ Ž™ÐüâÓíåñ¡î¿ÞNo®gg6f8úñ#˜B–ŽÞÒé X:nô–Ž4 žï'Äüt}óóâêü)æÓ§QE?D®¡;«êG¶0þÚ~@}p]Tµ9¯[•åÍ‹A22AÒã 1x‘å`U¾ Jz=FNh°¢ß.·SDzϵjÈàmà C؇aQhe*L|¥üúV_òˆþéò(p ®H˜.(2t|ëÇ:ËåXS²*ql‹‹;­G?ÓtMtq R¸¦’¨%¢vK¾çéOwŽ/ç²?Ümd›³ó´Þp͸ÛÝÖ,wj‰)+±hÚ²_rímŽ©ö€!aøCüÀLX·! 5”™° ¯Õ¶ÖêpÅãùDÌ )ß^Ò^Ò§=ÜÛ^‰Ôb0¨eQü!vÈhœA‰H³ÅA­t`ýÈf8º,ˆv•w""Ý#`aÑf¤õˆ£,B ÄZb‰…â…àû¤Þ¥ .Ýr·Ziîðµ×ã ·KˆMã|ŸRr/¯£‡òðNÁNþ¼!¾ …¤ÿzS㳋N©|ø§ƒè€ö!q7oðTÎ= ×"^âRÎ<ãÆ»u|§wÐA ”oðÁÄûdè÷ˆ5ôH†Ð$H•þ I°‰ýË<ÿ,·wþgBý•ã_ þ•ÐüqH¬Sé[·%èûAí.YþšKw]bã Âg7ô-ÓF¼’´ƒpwjÑ0h øVÈ4°¼ŒìÀ™ðÜ®”B…<¹¾‚óæ?»KüÁ—@MP( U/@» õó9{­ H¤òÍZHЪ0ÑDXFØåŽŽ˜œru=—býös(ä_àe~ö¹/ÇÊðsGÿäÄlZfˆÝð:—ÿŒØÀqWüo“©S ?2Õl³Mâf Hã[ø°mcYãÜ}¾Xððí¹öÀ?j=Û Fü7 þà„Ó: endstream endobj 31 0 obj << /Length 2702 /Filter /FlateDecode >> stream xÚ­YYÛF~÷¯ü 0[d<¼X,dÆë…ö N°»±5bL‘ IÍxò°¿=U]Ý<$j4z`ÕÕÕu~Ý üÂE,b!X*“Åz÷"0£ÍÝ‚ŸÞ¼-¾O’øŠó…?âöÃ͋յR‹0`i†‹› 4%ÌÊE”H ¹¸Éÿön–‰ðê¥/’À»=eNÍn«±z¼¦‘ˆxâ­;]-¡Ñe]QW¯`2åÞã’Ç^} ʇ¢,iq¥µå—ÑÀ=®ÔM +i¼ÞЈ!=ý uÞDG½º±"éoEµ©|Y·üïÍ¿~H‡òCÁBEg*ªuyÈu‹¤Ê¬ãù}½ÈûO ‚®¾,Ã{ߺzM£^ÛSÑ£GÄ =sÞÄ˪œæÚz§‰‰· I™‘÷éãûÖRç5ÿôá†æ¬€æ=$Ù´ gÈ`u€%2âhE ç) Aô!“K_EÜ{£»®¨î`ƒXYóAã]Öé¶£öÏËT8åÆS÷@A€1O­c ®„WZØnt©³н‰5q­‰ß«ÏŸ±Á½¢¥¬|@Ú ÝäÑáÈýRE^V”Ùmi·s¼:·¿Y©oí¢î5ÊþâêfˆŽ eJŠEß(/ĉ£öGä3±rÌÔ¨ÄëH¤}vg%Eß²šÆÌbÎDÁþ†Ë¶ëö¯W+ò^‘†H6q_ݶ¬ñ÷Mý›^w¬nîæ¬•ÆÀS8žè-Çz u¨…J#&Õ%½8jD>—CRŸ {¦fwˆÐ£½yü…½õ…½™š½?CzW€)„8o)Xœ$G(‹[ÖÂj¶Þ˜Î«;]é&+W`æÕœÊy±0yJå¢, Ÿ{lG}rl xÁô ´t°PèAiÚG< mÌ6´7&IBø(6r}¿¡§Ëz šÝ¹ YäªÁµ©È YÀDZ°Ù‘»ì‡Sßö¦(覘T"sßJ?Pƒ„ƒuu‡F›üÈS õF & ³¦Fnv]F8í?·Äá¶Éª5’l'I”N±!‡4gMYñȸnÄ¢4væCYfôÊí[šWäU&kM•îN".IÁL`~ ±Â\ˆ8KíÈÉë'¾{Ì´wá|ø®è¶‡[¶®w+½ËÖ­¹ce6–L€E‚ž'™£>•l¢«c¦F²Ùš>b9šÒ%#+rã·ÄaY’ëÌE±ÃÄT§Ä­]úQx?’ŸTeO*aK6\ÝÂöÅžèÛ†êîjd ¹Q_ãqpÓÔ;jÍé2ŠŒAd*˜HÄ%]ZjD>§Ë#¦æùèp­WgÔ:—ëeRÅ8×p‰”·š|ÀQ°‘Á@N°0•S02©B«¢Êõ7¶ßîÿñ†ÀVÏk«ù¹l ¦’ô©t)$`7i3 Œ{A“–Ú‘ÏiR&L@ætTfwÊXaà Uûl!ý†‚Ô39¦ J`5õ2šÌ €†]Ý<ÒèƒÉTFa\D,>ªÜÈa0)„ú€ˆ»eñÕzöJÚ ¹¯–¡ð¾øiÙ4¤¹®êÎŽv[­ÄDBìfíœSð$1ÈÎcµÏºíª«Ï–º8fœm:Ý8_‰ÂŽ1n]åûæ+aŠ£òOÂÈ0ôÖYE£‡VÏI Ñ ÙÚí ¹mÖ¯ ÙÄÜ¡ú#oÐ;[̆&àô®ÆL€­1ÒG’Ù"‡4lÁ­aVOŽÔØë‡  |òiÜ”ö®”•T*v™M2•©ŒÚm_ÏŠMõŠZ€ËòÖe«±y)û³~ÑØÐsÊô!¦d¢&;r›ÂU<±bÑP?ì1þ!g?ÎækH%Q|TEAÊ}QÚóë²h÷³…²4w5¬©&N¯¢`RÛ£ë ÌÏ_Biî¬N}pòŒ¹ÎO´š»í²¯zVs'–úû×ôžã¤ÇÅNÛé=hA"¾¬iÆA§|ƒ4S!ñÖœkWRïÜ'K½­Öšºë¬É‰‚rŽAæ ^ZÀ¯gP“»)s˜ópcy:ª=«øÿûˆ;0ΔW`ªÆ ¤À“Cà™Þ8ư?‰1\þ0›e„ñýÕÉØ8Û}FZ¨Î‘è3b$ö~5`ù`·/î¶}ööå[YîÛ¬p–&ÑD绢*Ú®éÓ&¹ûNÞ÷-wº}^š S G?qŠSŸ5—|&£( S4jy™Gï+älâa_am³j·À‰RÓìªHЙ¡ŽV±B1®# •<”ãÉŽÕômM­ëÙÏÁ9àN1hÊ1:̇ϯ¨Ý—)ìØ÷+¡±¦äÔ3›Á|–ÿv0o*ÐÆÌ4ëc1Keïc?]]¿ýeN"aèŒˆoQͱj®zê÷`óu]mæøJWËdä°⚬ Ü+(‚m›TÝ5…’}B Õ?žjÍffŠ’æ`ð_Kîš5T|± YÞe*m“7űÍãY7Îús†¶“ß¿ÝýðÀ­MUãˆ1Y­›ßNŠÆœi$ lÎÿRøÇ%ÌaÝ–Ð=Áè€òjMWEÌ–=ç*PÛò|¶:…Qjâ`||÷þýP46ª¿{ùmÑi‡£/Ƕq× œà•‡Š™×ÿVìl°J@ó¥3D©ð>àýý¡hÍ‘¡ê Á^»%Œ’œÑøØøÊ2)ɈfjÀ…)JÆ8·³~ÒP¯? Ý„JqZf½ÚEX²šà .Jzİކzx²©Ë’îlô TeQ9hÚ:?ë]ú¬]x*¡FñgféóH„!ã'æð»Ú[´øžÒ'U`ÿå©)^:ÿ;ÈÏÞÁq¡óÖ—gÝux*óŸàÚž55*}SW Ëê•aæ)/Aƒª¿6Ÿ¯Dm@˜É8¸ÔØMÙ{Yf—£ÌÚr°ÑŒLKßüýÕØpݹE&ØÍ4° gjJœÅÆ Ý׃÷þ7÷ü+àøÉÔ+Qy÷çßé‡W_Â’‰f!D*2Ï%îYï'soDPd eZ­àöÞÒ(!Ih˜šHpGkz𡎋[Ä{œGU%ì% [i‚IãJqrôO ˜ØMäb¯†ÐåœT”žVq9Tî†z;ºÙ[ˆu´¥ï-’=R{ü¬bâTÚBn¸±V³°¨L÷OÅSzÝ´'ÇfˆÖ÷¶à˜Ç P¹u¸0ãÐ=÷ЂO«`ò·F‹OM€yñ)ô‘Þ}qW 1¢›ëd¨¨'‹èB»«óbSè܇^Ý:‚¹W|±ˆ£'çã”%\.R…à¢ò-±?PÏé>‘,…céþ !ub69ÿðM.=?Îl<0™ÛT•ÓR]j¨™¨7Þß>ýI(“Ÿƒé{3™’Ù‡‡¢^™é²Ê²‚'M¤ìÏR’#~ZSG,‡¼‰ûþ 4FÃø endstream endobj 42 0 obj << /Length 1435 /Filter /FlateDecode >> stream xÚµWYsÛ6~÷¯Ð#5 )1oŽ£¸MsÕ”§iû“„†"U´­Ÿ¼dÙ=ìd®€åßž$“ü#“x6™ÓÅ$ÝÍÌ©ÜL¸º<#–><ŸdqCߟ¸=ioWg¯ß‡‹ ™yñ,&“ÕH ·t-¨G:Ye“?Ï¥âS7ˆbg]J æ3ç厥Ö—Õ›éß« -Hó&´9ïj-†FŽ*ñÙJ:géÔ_8ßD±ÁƒªÜYö5gª–Ü0†ŽÚ2…çË$ABòk ¯ôÏØœƒ5—¡·ðHˆFTõ~?uAS)µ?pʵ~R°fJ0hê§Â+^d–ºÓ§Ô¹Q9Üß›Q—zS—R⬶¢B†Œ§¢eaßyŽç7 }îpü!¹{ \ŠgÈ& # öR[à;)¯ªS‰¢]Š=âÇ(v5]@XÐÄJKFÒˆ B'±7 ñ…Íóº÷ÈeRµwó»(²RÃrW!ÃÝ–Û«ƒ>.küéŒ÷8¹8lî„e½aÕ¯«-ÏóWÖ±Ûç‡AtÐ¥%0á8z@ö<÷©Ò°©Oî=FÁºxµ\‚‹Î½ jËÊÃd#/ŽBÐyÁI‡£oq$¨„ôqô-Zä-¿E‹ôÑò´Hƒ–ï|JÞ}±’!컽²ZZ¸ü.|O'¬Ah~!—`K$}(Ä'€õAýé”ÔЛûó†#rwUVÚbyóÈÌ‹ÃÁÂ9.‘9–ÈE-%@h\6Eñ~S§imh"ík\€Ûá°0þš‘ùéFëEaëðGVlj¶iª?éu<ž½yJUvÓç¨JPŚ픋áì Y‘=¥h#ÁQ”†ÊbÈó–ãü×s+Íýúñ:=ä”/.™-ϸA6Ÿ’U*Å^5-.-eöC õ² \³fà7x´e_ûþGj¥ønäFpÊeÈ8±¯svÔ]Û=t^×W-ìýyëÃ>Ú\¨#Û1ÇNŒO-"t·¾µÖéÿxvlàØ•uÅÝÞžm»5#Å®aËl œ§À¢O‚5Òli2èÁlù¹Ímܾ6:S u ‘|gÇOm§«:ÊÍ«Ñóï½ÎpVÙ¬úl³nƒzÇ-E—èË{¦û{5ì².ŠŽ%INeoääúßv‰u‘Æ2ÃWË.Tƒ¸Î1® íl¹:û˜@`ž endstream endobj 50 0 obj << /Length 2780 /Filter /FlateDecode >> stream xÚÅYÛnäÆ}߯˜Ã ¤ÙÍæÍVv“5’E  ÛÔ°g¦!9æe¥ùûTuUó2¢dãµa¬§Y}¯:uªº$6!ü'6y¸I£(ÈU¶ÙÞ…VÚ6Ô¸ýÛ;ÁãT$á÷Í!~,åÆŸ­öÃý»ï>$j# s±¹ßoò :ãM’©@Djs_n~ö~ EºýõþÇï>Äñ|¬A’Fý]Wç­E‘÷ÁT[Ê{_šÞÔ[áèû—0oá‚–[nM;û"r™ÿ/;ß]ê­Ì¼¾ØõfGÙMK òä½ij:ZQ—Ô8šÃ±‚v¢©$mö4½k†v§I¶k¶> *u°vhŸò%ÇÖu9îüþ¹8+ÝÑþ}CÒv¨ëiÈÝ5Î-i§»î÷>Ô¿ZýÙè'ÜÔŽÍ`¬ "•H»°Š€Ì• š ‚lëljô>m}áé'8bª¼Û<òtÑ-\ieÓΖBf´Èͱ¨tùÑFÊûdWC@m³i5+1lO‘B|ÿ»¢éþ†W*}†î¨mjrQ™Ž±¤T²0:u=Ø­yd×·º8¡~*kÖº ¶~š)ï'¼X3Ðì]ÁÃëQùDÒª)J÷î`·ôz‚ÛX]FˆÙ w€÷FÈÜ;9èvômêRŸéhµuÀ~u¡¾}Ûœ¨EûD¡ÚîI„~¿Á€Z?®ï<ô¬Ôd®T™Ë@ŠÜi=¿Õ¿ ¦e·ú´æ·þ©)õDK»ønÅýšvm;+õönjæÍ…RÐNÜ2eqè]PS@ ô…X€–ÊPªÒ¨‘\nLÇøwßð ýÌZo®wº¤ÙïOÅŽGn­Ÿ `Á¹b¾2Qe@d´´ønüÕéž) >†3ýCß vxÌþµåi åˆýàvU+q¤é¤[¼4/{*,І¢–AI˜xÿÞ¸5 y2UE­Gdc­ÏnªaÚ6õH7ËÓù\3åÖ”¦×kGU9(o„ Bîè.Ä)¨’+ºƱ'œ(Vy{f›uzMd ÂüKÈåVO’©N ÌélbëØ ŠI™bPbøwäü85-Oh›pLD¤ ½ûqìY­è!xâ‚G]þEʪb…]fÜ”{Ý“éwhÔ£e êNÀ‘; +ÂX†¿M­©Î G9éÂ(b£k5»¼®ôŽùÝ ¨sOMPPË«®ÑéÏ[ëcEµvp¥èùH¾Q<·²µ6&[àÁ[xõÔ^ÅöÄí#}•C;­Ã"ý0X‰€“uÝäör¸ÀQ³ävq\f4L¢¼™ž¢$b@'˜ß íÚ&ª“åäj›º@W±ï5O(èg×Ý‘uG DVsœ÷¢éSÁðƒÑ”#ÎpvS£÷†–ÂàŠš ‡Â£]sÉ*%‰IÉ*³±PëÄtP꘬=„žæú ÎàNŠˆ™÷0À¹"Z"¥hÒ1`Öú‰$g¸îUÔÎ(ò­\eWœ{¶+ri¸a@Ðl}a –y"“—Ž÷óí¯kT…A*27î{8}šp’øß5§§×<šÉ G§À{.vÅAûzüÒ´ëÔ2•cpÀ8'½ü êtÔ"Í@Ã9é °0xpÓ^èÓò-O°ÁNÂ[$ÍÓ+½m;šù:ß]æÇl“hœ“ŽsˆÏ·1$J¶ÜtOœÙànɘýƒîÒgr*N=#ÞäZá)æD<ž§õqäÒzWv¦ëõÄ6`ØZ¿ MOø†ùè8Ô,Üd lì™q#r:ï›h »X–ñ»3Çò”?0Ýì ¥˜™Í±.ÔÑjö9œi÷¡qecn;Î=`ËH0C‹¹<ß4ËÇõfkL:É0ËiÑ˘ɯs|½kµé4ù(Ƕ -‹èq`Ŧ¯9 vºgä| äpßîÏKþb‘½„@ŽHCï•tPH|¬r|Óœ¿YÛQ&A®ÆQ+a@qn}«Ë4\*;x@§ŸÏˆVˆP\I¹<’Ú¢Ç~¨8"g"XfãÛ}¬¿Òg] É|6 Â>ZÀFŽ]ðÕâbg"¯‹;2Ü…nüúûUMËyÖ;êp¹˜r¾Öê³ ™4½åA¨2BKô•˜(J½ä‰úк( ²)¹€Ô|è+ƒ/tžf*‡O«PÛjíø´~9XoáUôT½†/ëêUÙqâ'ôs|Üã>¶È‰ƒÀú|Þù%%ÑéÇÃ|‹É_.æ€9²ZUº€ƒßüêè ã$NÂQÔ²ùvM‡F1: ';¡å†‚|„`gˆç°³6;½Ü¯µÂL¤B™%#5wü*ùe3œ˜'mÞ 6§c(ÆCØZš[¦j0t`kv ªr…öN¯×e3@8_$öÍóÅGùãZ«ÕXž¹¸˜{‰ÕMíצZ>Ï®³1¤Pk‡Å{zNtõ‚ÀÇ ‘­Û¹"6oCC†­5cd‘ÙþyÌå9?´T4¯ý:uq‘‘gt³D{_& (µBø¥ÇÝ3¸aíöa ä“ïkfXóp–Ú=Ô#‰8=Åv©÷ÅPõœÆ½‚0%Šã„Õ½Ù_Þ™PI‰‘0ßDWßò© g‘À$¯0lŽÖN¾.Ãf.!ת1*ÞâUƒe(ûç ©ÌGopD–Ñôç zÃz}ÓT_t«º 1€žN‚f°Ù3l×où}xÚì•§ShÛ‘voü'÷þ—Z èÆ/V"[” :ÛòX͸ãðbC=cJÊÆ€þÊ0‚ðsÏÏñŠ4§:&–‚Ñö-Û­¾ðBxšÉQ§çÇÃj£ ÷iÄØ©÷ äà„éW~_¤’ë*UKø,-šeLÄŠE™oüÕú_y–Ï}÷¡-µ©ÂšÎkTøµüµŸ%‰w3è°:q¡ö9Î  }\=F Âa ¸ è÷Þ’[ú>éþÈ)ÂøWôný_Ozqwðɽèžþ±iÖ½+–ó¿8ºGÁX¾¶°x÷þþÝÍ:´ endstream endobj 55 0 obj << /Length 2645 /Filter /FlateDecode >> stream xÚÅZÝoÜÆ×_qo¦€á’»ü0ЇHµÛHZÈúà ï¸wLjG^¹¤eå¯ïÌÎ,F“‹,¦Ö‹’ò<ˆEtyKº±&Ò÷N~èç-«ïŠÍÄ/Î}‚Gx&xUÇxÎN¯7Îbb¯ÝÒ¯ÁSO$~ æ’zmíbaϬY+j+²þàUÍÿÇ–h;´#sºªNqü¸k€X_̈c¹Ô'—q^¯ÌaWtðÔ“ &˜$.¡Ã_‡º*Y–Q Ï9ÞëúÈúp¸iÇ)'6YµÝÃ) ’&G8¹ßy&RíÕÿ…5CI¹ª‹µË¿Ÿªb„A&3d m¿ˆ|Y9•Ñ<;ßî‹f§ÍÌwÁ~4C„÷×Yìé¢:wf’¸CùJ‰{AY'£ a&—^¸ ”9‰æÛ¡±Þ^ÔUöf Âß[„‰{mm^[PëÞj¯*ƒk_ áÝï5í4Vd0@D`£…(pGÝÁ£|xÓBz0½!Ø”Ë@…(°8Et¡Ûɬ”g ’¢-àØõ5µ”ªB¤±˜CE£{_*ê¡@F}Ý|ZŒRÊ…L|·Z°fá %a¨{šô-Û@4' ŒÝm·þ†¬æÖïÉÂn}³¨œ,ÈD:ËtF´{& ¿7V˜‘«ÅßÈÓä6Ì'í!ªº¶q‰Ý ÃS4_¢U¿ÿ‡à“uMkfXýïarQ„V˯zöú.G‘‡‰'ÚM;tH½L•×ïí@z´™ÖRSò[NëNbªÁ0ã Ì1Krïæ‰.c}ƒF`ŤÇ12¦ŠþŒÓ;ú9KÐæDä” ÖÁ3–ãè‰Ã• NÂ0è[þµ.ƒ3À|ºï9¯*?è~_‰@eñr¹T }ë“U¹s3޾ÒWæÅ•s3_„äd4U½C°÷lreàʸЉw_½^…ŠG†  LK’†;ÃèÔ¥ÙHÈýžÌ"_¬ ìÆá¹¦)Bú®%+))eÞv’¢r#ÐíF™óIëZ2ä˜ tW?Q¡skŠ“ og±aØNRtyBH¸7un˜Vf)Í`Ð>€Ò7 i[v°{¢Õ¢˜KN0 íQº†®MhÍ·âuGKÖÒi®ÃMÁbLXUS«¹E&&~p !‹h´ìLJÝÛ¿ûáÝb˜õÝé©á:hÍ Q’tøuÕè’öËÖÉqêý• ,‘z5é¬}x°”Èf`¦Ø[BË¢’w5KˆÌëù„¡NmI˜p™ébž³f[;Ír¹£ÑvaÜm@«ºt)Þ22Ö@$èûWã7hÚ2KܱûØYÁ«¨Å·[æx]`ÔÏõB]$½¡MuXccÈ‚øT§7í®©~Ó| Õá´ÕàÍg{”Žžlq:,€E¢ «´E«ƒ2,ÃZ{DGÃÆ]øfßêŸû§£~óR[I؈#¿¯$’8ó¹x†KNéÒ¿ÞTP“ý¦¹˜_wºx˜·X̬{Öˆç)v]Õ÷®ËWñµÿû6ì¢h!q¨)‡QLÖ塵ö ­'6)&Q× ú1vÆ`ØÆœ c,Ÿö‚yy‰K6Ã/†{t¬¡±Œ¹àéÉãØ_!!ÑSÛ£âfÚÕ«š­î*×§Þiê!R@gâ‚- %Üg_ùàÕš Öúîlúü´sÝÿ5G9‚K®m†¡Ÿ>0Ž‚¤äz'íÆ…¼G׆|¸é)sÿu­ËWmzþ¹mÞp!nªã—\̩ɹԛå>y&‹ÉSÜñgð;½Ü¯ŽŸÄéå{¡ïºÎ™ë¾ÚíkD»=*¨›Ö£GâÄBÓ@ÇÇ~éµé±úþ…ó³í…p<¡%/¹Àžï_nBìVêŒ×ïÊÒ}ÉÃT‰<•g­=3_ƒfÈN-®M¬'+n'æ®üÇ[†*ó/zy˜_ȢܻG÷”úããO9«)`?í¬@`Ÿ ¬M‘ Lgm@ uš4°aöíP—ôðØ]ÆÉ¶0¢±¡æ®-ËÜœ|2[F-$æÜ!‰8ÏP>J®Öö_?‰ìHÒ‘”cœµžN»ÙÔ~ µm~øe‰¤(ìY¡À3`6è.8!jkø%à){œ{ ŸwŽ þj·[l·,)JÊôÔ‹ÜU„`Å 3€†¢Æ±ôZü< ·!}Q*}xÌÒg];Zx‰D‘gà©Ù´D´Òø­¤ñrP¨Ue×Ö´€X ò°k:E`ÉàHÓ${h›TêÝ0ЬuÑð×We?`—q£FãÄùl:M¨™&`ö›DŽ4œý9­]³Ì¥D’ϸ$ŠH`T Y[™áFæÙ›gæ¬lcyŽÂOŸœ»Žû82<\9ŽÓªÙWë ]KªS×wF}»ƒtæ„1ÍnhÓT=µó°—™°]†ÅÆa$³)¦ª5JÇôKÂÉò 9ý]âP8tõîþê?;±Ã• endstream endobj 59 0 obj << /Length 3260 /Filter /FlateDecode >> stream xÚÅZëܶÿî¿bû):×’%‘zåKá´v‘ MŠóEá(Oâî*ÖJk=|wùë;/½Öºs Ô( Ü’Ã!Erf~ó ƒÿ‚]æï¥¼L§»üôÌ'j{ØqãúïÏáÓ*„ß'YÜ( wîbµïnž½|E»À÷2? v7û]^¼‹SíJïnŠÝ;§°½)+[\¹:PNq8öÊ œ.oËs_B·©y¨ÙãoèôGË„ÚÞq£¬§iõU˜:½éKž:ÝC×Ûó™º`â¹mïcYLßµ{3T=Ãzv¹Ð¯7?À Ý@yAÄ›îz~¨lçáèË7±^Ó B/†“»Aì)OùÅæ…ÌËâ0¦aNŸ™^¿}ûîú׉m±¤ò½–¾o¯ÜTeÎßèÌg8|kslÊÁ#åÓuE ®¯*¸qy*"v¶ïËúÇp_%ΫŽé†ò¦îì‡ÁÖ¹•Õö¼: aZÕ¥+reË‹šDG°Gwoò¾iáƒrÄxyÄLy‘Rãm×¹·­É­[žÌ¡¬Mûà6û=lxëzB{ºŸ[ë§žŽÒåòöþÜÂ/lð©•ÃÈS:ç±ÁiLUÉ©“Ø µœ:•º*Oeo[·;_¹pç6/A4)òA6ÐV𽎻¦EÎ2˜ÊMo G¦µsC× ,£œ¸·oZn<ªù°‰ x@†4TÂOâ  ñK}F…†¯žD?à+Ê×ÎÑ‘àË”[> °AW@ϨÑ$¶.>ˆCOÇÉòêù¾]Øìk ]w›·¯Ú¤p-ZEÎ÷=o 7õ¼±dÜ% ’}Ãl¶um·v憘b¸RÙÜt¹)ìÖntä…™7Ól.h/#°”{mMy8njVx~8)Ö/~ä3´%ÉG@ ¼­$n%\^¨iî~¨óþ3Ú¬bØÞ8ñh:þÞB°ØË F…ÙZaž6ØK²ÚaDïîÛæäVÇm9#&zee*R¼C­Uè[ÛÖTeGÚ‰¬aÀ€=jÒä4ÙCˆÀŽÊŽÇÅxRMnàŽ„©çëx}Ì;dhÚ÷8[ÇÎh¶Ѹ†»1ÛšáhCL¾­ÚwŽ´q>4füéxQPçÀ)¸ÝÔÕ³õæ=Ù L·6ï™ É L¡ ±ü/üÜÒ–Ä”§fà…=}ts·Ot6‡.Å´±^xa015gpˆ[ Æþ·K¯_ßÏ¥D°@BŸWY è‹bø}T Nž%δ _÷ˆ“Ž•GjýåNzS…/Z~¿’3ØN6¶oÍÉŽJѬâ0¶Tq¥Æ€a¥8o<.¨7!ɾN ¡:G˜„q…‰r®ßöCQ6LÅ`(Á`ˆ»hiȳ²p¤oxä¾1g’æ¼j:‹ &B˜FÒ€…ÜŽ‹_3úÒÊ Û,l²Àb#kþX¾RÙ?º°¡›«TŽGú.Ms°ƒ Épæ&zW®¨kNvIYpO—DBìlÛ½à9—®¬>•†KÀ³ej`–Þð¬àÀ¢þ´M£'e`M‹‚Gào2Ò+x¨ÊÚ>MÖÜñ²¦ên‘N$¬xùYê|_ SQ”h«xGÑxG@G#†aæEú ]__o^‹ö°%ûøóÖV!^Œ²ÙMWAÂ*œÔ~ÊW@v5Á:Ž“"Ã8~ïs{–Á²gÚ¬–²Ú'΀¹xÖè»™Šð+ ­­Ã8 #áﳎ+¬q!|o „xÖìí’lJÑ)¦áèadq|bä}Z­›ž}û Fæ"Ç^@9Btÿ»œ¦®³Ée˜]4–FÖmèû©ií—@ù×Ï·¢$u®I{ï(Al8d«¢ãÞ] N“Z51ÞqGp; °*˜Bñº¶aZshëÍùÈ”ÖÎU$Až,SØ=bE¼' ÏÄŽ–±S¤›§u:HÈL׎­ÖšÂ좕†‘óï«n°6ÂΆÍì¼UahNËXˆñ_9ˆ‚÷¥¬€»Ú‚œX{ÑgØ{s:WvËÜ‘we"V!ÏfÜáÎ> O5Ô<^a{Xa7p mÛ u!#x$Ö×I+/&À‘§ôéó:úµ|uª3 O 5XL‘Ч0—:0žLÏí D†VøÇ#þ ‹Ñ8Ä¿ñ”K¶ME%¤õG¸©Ã‘¥.Ï ëVÖµå›ÑwíÁ€\ƾ-Ć0U«ÏÅž°´Zeù¼ègMð¤Y–®Mßù×Ñ"CŽž÷â @·Ë ©Ï ¦sôe6k°iLæ¶¼q_TXLˆÀÊÏrRà1Å9àãi–®82šŒ„¡2ÝËeþ$¹â»;–„ù°àë:Aù… â|`ZÑÔßôL<4€}6]ÿˆ'V³!‹,ªáTo&!È [È ˺¶âÉ ‰"ŸÈhÓq7Èù eÄNQRªÔÎ)YÑ*X}Å…F&£¼:;­"+!•yç¦ )øD\0"eq\ÐâÂfÇ9>;rÕgŠÄ(ö£bh9 ôø’9q™Å{g4¥È ³'¹|³yUá–ÅT‘p"Eê£ÃlVŒfA˜JZ‚)3ÂÎjh§s¹äI=É–z)Ñü€­9²Ôô€húË-Bßœ’éÍ )dˆ`µ ¢æ‹$âóêƒ'z±CÊeŽŸ=rwÚåuF‚€ƒ•àÆBAΒʹn0ü×?þsd©øîQQHöºíÆ ˜ ü쉀h…DKGVn¸:åùê ËÔ©VÎÊî) $¿K©pØDïá©&¥´à“$ë Ǭ3ÄŠç¶*ÎÞ´±¿¬¶ë‰€¥ó[Ò7ì¼ÑoÄä7˜8ï­ŠdˆhùÚ‹/€«t1XÙ¢Ö…]ü½C¥ÝÂË ’¼xblíÂ!r÷vØÃe¹¶L/q›È"/ñW‚¾leGÛEØÈßn~x¬B;=_É#ݼ¥oç‹v›ÖíJTÉÍíaëÏï݇“£?ÁöôæŒZ.™LD‘ ާ ~)f§ =¼RGꨃ×£ÛC9azpþôúî±Ê7x{}NËc?ß„¬ €v<çœì[!H×î$óB-áå_¦>Xy¬á̬û'Š{‚C×­Óƒ ³tƒo7 ¢”í? ¾bBôJ`ì“ÿ‹äAò5=¨[™…áѽ•r:ÖJË ·rÔŽÀ``ÍÀ)A¬æŠÇ)Ð×Ê£Ôw~¦zi:TK„ÐQð’²ôç? b(ŽE9¢>€Òº·eÿ Ï.;æ­›ÚÅĘ:ós=pPBz±ÁQø=à½vk~ó³\#Ù.€qõ˜Ògª³/Þ>Éq/ž> stream xÚÅY[oÛ6~ϯ0ЇÊ@Åê~É[Ö´E‡­œÐ #Ñ6YôHÉNö°ß¾Ã›"yt×zɆ¢ˆD’çÂsÎ÷Ñá,€ᬠfy£2)fÕæ,P£|5Ó‹÷g¡‘Kâþ~QÄO£hæVûîúìõ»4…*ƒ2œ]/á1¯É,+ÆÉ캞}öÞ¬q»"bîÇqìá¶–‰÷‘ìõÈ»y{w=·2´ÕÃñùü×ëï_¿Ë’ñ>~ŠÊ²œùa†‚<ÖÛü„¹–JTfQ¦TŠPz{uõyñë 6Z2PVî|î'I¢uë›FëÓâŽîæQám‚è·Û¹ïŒwZbɸ~¸©Øf‹[)üào˜’ªÉ r“Ä(+žÝš7šX>«(Q Ý+\Í£Ü[ÓveBÕ¬§Ýzs`ÛB¯!-lHGYûôV¹L sT¤c‹‚R¢( =+Ç‚tò-òvó4õ0§óÐ÷ у7D¿j˜ þsÒúfÎܽîF/Ó1-[1íÎ=Э‰– mm¼†¥éú+[HÉm¤Á p€RÜc¦Z{µ¿ZdMnÿ§<û©¸w: C€ß,.>ê§ å\&k›=ÊÚŠè'}ü‰™G6p„À›&Á2ñ,§ã[¬»$ŠpÕ™)ÙxJ¡"/픆ÞrÌ\kƒºy”[AYÄ«E!ŠÂÈ qò{O!áþqµ 7˜äXâÝ‚cstá‡Ù6ÊÖBeë‘ãSB)wh'skââïz™6ª5ÛËÒ`ÂO²-“ì~½è؆þ¡óM~þ%H——ªÔ´5†Cw0;?féKW$òÅAløÓµG:F~/Ç€J"L,°IICr¯£ª„ô£Ò€rnƒËeʼnE¡ÌU/½7ê3V]}nÀ=Äf®@Á¥õf˜Ü›RXu¶¸›¶üÔáùàî~)’×®æçãºæWÝÉíZPyX„vŸ&%œ<(=ËûÓ ƒ3P1.Ë“~½ÙKL%‰”úÍ@­åÈ’³V¦cþ!Õ]‘Î× .ΔªNûH÷Œ×—Ëù;U†Á'KzqÄù°rhõß4eöJ‡þEæ¯Ì`é 'Ãhœ?uuT’nêÕùIX•zo°½Á¹…Bq~þ»ì»²­ùŒß@–æ¯iŒt¨óB×úÙšñáBRɇ4 »Ñm™Æ>nêjIL)ZᙄíLOUTrÂælýÂ-`cK.÷Sž'K§ˆý\Çc0¸ªÑ@.lû§öNpO-”ÇèLÙœ¢yv\s‹;Ú4/mkÅÜ—Àˆ‰ªPi³-‚6zàu­9'¢Ã–S-ÌEQœ¡Öœ€ÚÉíék=ùŠ4£ûEØ›ºú+Ôï{è¹N^“@ÑJÓ^óöžT}g¯sJ_aHûÌ¥pÇœ²”†ñýMnîÚ;*Æüø{ã,z~»Ó ôÞŒ/m²ÈpÏ,ôÖ¤Ùê!ñ¼f£ŸUOUDpý[/tŒåÍ"Ó•Z`‡ÃØ**?DêC„îõ ¸Z-£Ÿn&¡Ö²e\óév.éþÉ…î‰Èð¢oÛv-FUÀqBŠb|¥´ªoÇ#b<)„¾²eqr—õUØÆéš4Be~¦÷Atão½Çš&œÚJ*'š"«û€µÊƼ…V¡[Ži&0Y£“”K.%Üžãr¸ïÆAÛÎß°š¸“ V=ïï6.X~²ˆªGÄ'ò‡€­¢5NÿBDÓd0ȉ-]ª´QëØ#ZÛNE ?í¿àfr-.Ü b”—Ù³ýjò5Þ¹íiSû^ÒdÜdâ®å3ˆh9¸’9cgK͵¼d»Rï¯ìˆDæ(â¡\¥PÒÍFv´>’wQ¡¸ˆþ[¯eI>ö[.`wèêPÏI+éw Ä­·*n ²Ü."tþÇ2$_"LÈ”#æžæ\+XÝWd+ù*yã ^ÒãúÂYz'@I‘Mk¿ü©ÊÕj'…”.Ý9䓽> 3°Õš¿ž½½>û Ahƒ endstream endobj 70 0 obj << /Length 2919 /Filter /FlateDecode >> stream xÚ½ZK“Û6¾ûWh³s*!D€$HzOÎÄÎ:g]š©ÝCÖŽIÜ¡H…¤<£=ìoßn4À‡ó,;5 ô»¿n ŸðÇgY0KÂeQ:[î^z¶ÙÌh°øù7ë¢PÀïƒKüXˆ™?ÚíÇËWó÷2šñ€eAÆg—ëY–ÂËx&Óˆñ0š]®f¿{ÿxröùò—ùû8že,“BâR.˜„‰€½»¸è׌öã Kû5oÎ|Éï7usæG\z_ÎbéåM‘_•Ê|,Ç'’eIh¿Vmë×ëu«:¿íòNíTÕùë¢i;YW]QÔÊE‚€qÂS»Íºnèô¢Z©êL¤lVÔMÖkúí¶š¢™1‹#{Dp왆¡W•ÂQÒÌ7=”]a_…ž%øL$^×2"s*yßÈÓç1“éó$¿pò3žF#ÙG¡ô.º¼Qm büA° Nì?¸öÌØ HÍ.ˆj‡Lvϸ‡ódÄ1¸¥¹;ÇÏ ó²ªñÍ™ÜTuêÔoºš&ó%ž´-Ô\©Ì$­ÙÁrRXn$¬¾8‘º/UÞæt4é*/  uSí`îÑ›ÇÕ’dßD/Qä}Øí›Ù#ÞVd6Wg>>msœüR åâ4©C}8³~ãÅ»KçéKOt;6Zø·ÇªH>W%ÈÑ"¿¾ÏbÃ_d²¿/>»È '¾j„³¬w¨¥]^¹,AŸZ±~º)º­S "bi”ÙÍÎý­7ƒG R°(îåxƒ’É[#–¦¾Ö ªFG÷aÀ,‚hDF^T½§M3*Òñmñ=}þSÖa0ñûËcÛmH'T‡Q8íØ2f‰è#ˆÚí;Ä‘ø"AvKüÙZñU«ÞíQ¼·¸„`\ð““O$ PG0÷"G}Ž„VuõÚF‘öšY[×ܪrOï¬ÙPSµ±š|éÿq(´ ®}ûEÄÆA£þ8¨ÖlÉ_lÐÊ0§\Ñó_ÑRë¹SÈ›ßÐT\J Xœ%O·Žb·×Ñ­nºó2o[Õ¾?K1í\»gœÉàáÝ1Í a—`¬pì–'üQ*S•U·%®&5eIüRÃI„Q¿ü(Y­0üãŸþÝšwe¦#J`õi‚°d’í:ò(¤ÚßçM¾SÎr3Ö‡^1´¶_=ý=;îÙì$·Dݪh÷e>Š#9¢Œµ[IEª|ݾ4ÈÕºmêÉ™ÿmœé—CYäND‹ãøDZ¢žê rXü×¾>TKCB¯uUµ290%¢¿8¹ˆ&øŸÂÄH‘wñÞ¼œ8MÈdøŒèׄ@™òa÷ÎX({×Óß7j«ª¶§¯=JÏo‡omåªÉ)jkCBXË=FŽˆX(Ë2¤LFÆçÛ¼ÚXuÍI(ªTËÎ"¼ļ/n-~8±Ì7n…šÓîQè${Ž5ŠUT£vugp:a*\.Þ~üô†Æ üI½ö°ßë€Ñ^,kíj+ó1a÷ÔC{Õèõ†æMR¯Ê:_YOåBâ]UÞi ZÜÙ·m§r³Ô·`Ö Ö&/Ò>ù¤H¹·Æh¬G=råä%­Ý™ÚýªR ,ž.1¬â ú±ÌQƒ3Èþ¶U#z®ræ•$e2ê³Ïÿæ PàºØÌ± ˜»Ô’B¥Ý›óªß‡CŽ¦è” “\LŠNkŸ: ™ôZÄ’“ìr‹çKjË{Í¥· 8ä&½·xÎÏï6隥hêÊÖzôJûK{¥®îɰ'TcÌ·¬ä½<÷SfH~. €D¹ÕZ5PùhÖû|£7x¾ÓX¼€ÿFu œØ¨(§¨ln]½/–íãÝÑN¢µc$Pôij„¶Ÿ›yï%ºn6þUnü¥Ô•¿ðÚúÐ,‘  â@lªZjrx@,Áü‚~Æ^êV-±à‰ Gp ‹Rï¥?ô [›RôÆsº ‡¥†$‡¯O”&$JHM±øQÚ§ ½Ðq@Utc¢:,… Ì8½×P¦¶Åf«3·îwôw#î¥Q•DwÌN= i?LCrh]¬UÞu/¬xD»òánTâ¬^%dÒ¾´»…ç¾­Pl9m]mZ>§“RÕóÒVÏÊVÏêñêÙ-¡Æ&†º&÷wùÞµeÁ–}Îv÷"Àž þx‰‹#(ÕPnÎtƳH2ßäÅ̤PSÈ{Õsªøˆ3ò?¿:K£m1ÕºšC) „|¼„’Y¯./ÊÇ·Ú™Ú Ü ÄÉl\ôH H€ñ—ºî§+BûN|hœ÷áÛµ¨]g'GâCŒ¬ecÕ-ü•j—Mq¥|“‹X_v’‹¯zøyçï!²aÿù‰Ôsõ=ªÕœšXÅ|„Àã4ö%ßò`ûÚA8i¡žÁÉhÈÃø@csMOEE¿“b'¨1˜z„ƒ[€Rrã¯`Pºû»¡U(Ûí&1J'12oL‚Ì]½j—yYt£»žŽ~躶ö`ȦhÃóW¯d!:Uhûîó=A—óp\ Aš{}ŽmJ YJo¡6@×k|ˆ¹ãÃ(ÜèG]Èáˆúê Óþ&7šöÕÿætÐ8…’ubÕùN«6úÐmU¨6½Oâ°`AЇvÕ-HcAW­ ÚèFƒÉþdúÒ ï²ü„pЦ˜V5}]ÖÕF'køÔ¿ÑÅ—>akvÒ }Xš?CêݾÈq?XYèAñ·Ô$Ðo ¡ AzüÚPRð>¼|ÿhÅúú£”¶^Úµ¼x{á.Ì9Ë†à æ(]ï4 yä"öÖ–_@)Zoº–#‚Ç[ýªÕkmoAÖœ£>E8L¯è Î½nÍDwzöcÞvnÌôûbU<õ“äœ3©¯è¨ëáëKZëë Ì“Ü>Ù²„6®nß¾™Ï‡V*h»¹hÞúÄm‹µ0?ßʲïÊ5OäZ ùQ Qå½ÎÅCFÂs (JŽ¿”ýpÝÄÅ.N1šÒA™–P3Ïì5±ZCb«Å‹›AdAB‡'Mïè¹§Ü}$×W6µ4‚§c•ˆD²<”Y°4|D)vµ?ZîPËé¦Éù””—XWY‘¤ ~Á¶iPÖŒ9<Þl•Yšï÷M½o %fË}çÉtgdÌ„¦rHâ6G™ûIÝY4ÞþvñÓ…ãæÖ”s}ú Îýê7»Ovq×õ9K§Y ÍÁVEç_«#ä„z³)!ꀊVjÊΖµPÕTíC%zš>ìÃ^eááéuM08J¾é}VœqÛÃJ©‡ò¾Ö¡L—=Óº®Xýö¸»ªËªÂ•[V"M"NNµW€€#„%¦tF‡U¡óN_Ô`­ÍZ•+wtäaÆÂ,|Zt-&7”w££]3ŠX§Q‘"¢‡sŸÒFP¦Ù©³«ïÐçü÷.BPeø\Wù×?Ý®‚1?iS_WE×ÛÚQá<÷ÍšÓÎÛòÐ4“n×/YÜmÚŒ‰T¾ÌÊWæÊÚ^p¸±gÄd”œ°GùÂóïîanU(–ªÖÜe†ÞuQ–¦Co–¶zwq¾øðéòÃ?~#ö H(-HБP‹ãhÿ ㎒„…x!ÌyR$®ñš,š4ÁëÛ£nþ¥P7þß/?þêön¨í‡ìŽÝ”$Î&ýîoã*WE – è¨RÛÊSŸ!³Gï1ãÑÿUõìl0"O`„å´S·Ý=Ø~t/âlÕÎ:‚âô!.;:þ:뜹 endstream endobj 76 0 obj << /Length 2848 /Filter /FlateDecode >> stream xÚÅZYÜÆ~ׯ8á"Å&›—^Y––È äA6§g†Z9ᱫɯO]¼fÉ•¬aúîê:¿*®Ú¸ðOmwù¾“èx“ž¹4Z6Üxÿ·gJÖi߃ß'—ØçmìÉißß>{ñ6Ôå:‰›¨Íí~“Ä0lÂX;Ê×›ÛÝæƒõ›«¢›ßoÿþâml' ½—*Ï aÀåEo~ýuX39OEN<¬yyckß·ò²iÓ¢HÛ¼*ol_¹ÖCÞew8Ý'Žòâ~û)½3°~(q|wP\’ŒˆkxÌéÜ6xí[ïòFÄŠï+ª±ê=´w¦ÈO6KÐs}'H”تûh™h½gy••¨jx£‡ºb5ÒïÉL²‰q‘ë€_v´²@{‚×Dàþz5̪Ӊ=é(™óY×°hjOø†»"O_b´öÀEL¼u¹Ö¾¹Ù: ­ý ÁØ{gßÞÄÚzõ=wòsaøÁاWP£k+[f EVÓ¡/9³ó¬Ûç7vàŽ9©ê‘÷•b‚$"&l& ÞG7=?kæÚ©w …iž‹É¯Æ'ÖÖÈHÛTÜx9‹Þÿ_ù®ÑM!I®Ú]†jrä:¦mIÿ]×2Yk–N}ÐWbk ¤õ¡;Ö̆‡PéxÓ…a2“–À”·wÌh͘Ã[³Š†½*¢¶ª›¯cãªs>Ú;Ãæ_TBO½è@Áªëè麋WNæ t!*]„JgµÁ#`ìLš")¹¤(-IÆŽ™ôTä¥Ù¡œµzòº\)§W¥sܽfö üM1ý‚V ¡üþ& l18â'üö·à3taxp›6x6ó=ÿ’·ÂÆt]¿èœÖ­KË5ª,vé5Qÿhìú ¤ÆwDÓÁ,w˜ 8!kð  ¶ßÁ¶fYI8ZŠ!¡²nÉÙFžU‘û††Hã˜"!÷9ù þÍ Ü »Økã>ùøu7ñDäìWÜÍÁ^0Á"¢¦ÅÈ.ˆ ëò"ÝJ>>‚ÁÊñ"¿Ü;û/ž±g1n˜wãñõW“»ã§DªÑXq}IàÄaxm´_bQÖÌ¡Þ*WÅ« îñÂA”ðÀ¶ªŠE©€±G¬Oê…H'P½@<Ä0º°®K ŽÒÞpé\ñX¢¾;¡º’hQ¥»^1³‘ĉã¡q6K×ûʉÇ<ý×JzƒOކ•ÌKO`µ®¸ £™à’4/)*ð`W×d„ÍÜY"ÄïOüùûçŒJwO2CéØñ•×?85Aj5 O ˜ãÇ~áÆ `Œ8£á¤F4•22ć“MK6bró#Ù3´¯fqPƒܰ\ê’Òø(Í µ|[§õe1¼CNš z*ǯh¢ï:^üEª ÁU§/ã_ýˆ—¾‹l0~Ã#œL`k°>ìœS´al14§½Yu(A eç!o¯V¼ùé˜V¿âžd„Hå vO'Š’¯\6¨Ùuzè_l˜ºF á<."‹‹¤%2ŸÖ䄨=°;Çüp,à?FY½fh¸/M|Lî³;û‰²÷i¶ìq½˜Þ,“â= j jX¦‚ì{S$ß…ðÙ; ðY^’NïùÁ®õoxZ—·†{M…¾·´ùIÆàžFïÄ2”um£1åÀÉc:æô¼S®EÔL ò}XÃá]¿s^a!ï«Y8ybt³3KXy!MGr¾q²"‰ Àúa¢­7ÃÆ€xây 3ÕxìŸIF±6?ø’j#vbÙ€õãžw‘¯é`¯c;Žqž Žæò»íš Ʀ8±PÄtXW/æ#lðÃ`ÀØÓœ³„TJ` mytΙÎrÔ¦i˜"ë猥̈́[¸òœsþÐÈE­Ü4ƒ8³¯«Oq¹†PÐuÓ.=æ6ßׯ<®ÿ}k©êƒ½MEÝ‹—œG¦¦è¦ÕY©]Œ;îÞ×¹)w=Bùƒ%äUºŽ¦8S¹ÞµJ#îǰ¥gÅBWO¾†wáåmŵáJ41”LOáZ¼O*YSu{Ìå\a‹¸ÎÖ\aL÷ ¶®Š‚ôжOø¢Ô)±‰:ûÂ~õ°ÌšD16êkÆäásÔ™½ðC'ýÿÿ  ÝWò™µ‘;gIÚ*SÝËô0YIšæòQ!g„ÿ~öåtí\±O¥–F1&‡ï!â}ù†â2–Þ˜DŽŸ ÈàµñÆ×öýÒûýxü°‚e4¤`®þª^›SÕ ž2/,jå;SƒLû×¥ WÚŸl,€J#Q¾ñG¾ï„î°®­ Ðgüß{üÑœ»:3> stream xÚÅZÉ’Û8½û+Ôs1+„ Üúæu"&fúPU}˜°1”ItQ„šK->ô·O&ÜTíöØžp¸€ –ÌÄË— ñUÿø* VI²L¦«ÍáI`Z›ÝŠ —Âm? x~¶‹ ±òg£½¼~òüm,W<`YñÕõv•¥ð2ZÅ©d<”«ëbõÎ{ðäâÃõ?ž¿¢UƲXÄØ• CC@Þ\]½»ü`»Åó!È’ýTÛú:Âÿº?ŽÃÎúÃÔQ ‡þí^÷Uqá‡YìÕšž•®wªÁrâ•õ÷¶¬‚W"õô‘z¼¢ ÉU=üEþì—\xymÚ«z£\kB2Á³aòù÷ðAšUoË{¿Yù¡ YróyÈxD]e»QU•×J÷­k[IÊ‚ìÑ®`ìZ•Ý^5ŒÆ†Ý'2†¡–;ö«}nŸÿ¦îè“·)¬)ïúFµÔb€§ô`EAô+ͿԬ±,Ë`àˆÉ0ý‹šÝ5ª«>¸¶¢a8Û÷Wt–yWý!O7¬+ éÆ%ï8aÃ×f×$¡`Q÷0ž|ƒ¥®ÔhIh-ìNJì½ Ñ6šú7康úç°é”§ ý›ï*ô–TñbÈ ÝSãërƒ£ÜàÍœú±Rÿ&¹„”F3Å$‘ð–Ò)h¨ïŽ}Gå¢lUŽK| †Òv’>¨Ô•e·yÛá)4_öʾ×ô¬ÑT±`„››ÍÑhÈÌ^Wv*mìÅô¤lÖO2æ´‹MÞ‚˜ó >‰…§4vKÕFùË Ä¡14=ÓNú @©°ÚáEiÇØöõ¦3S”Ýl˜áuŽÝ^D±——U¾®ìxvÐñÅeçÁr']“oÔºß9±B°0Ý•öŒç°´[\"+uQ `k,(ùîFDSŠ\³4{¼ò7´Öÿ8qÀâx±«$APA#°%©·&ÔèÍ NŒ99¤™¤ xzg%šonœ &&·‚èØŒà,Îø|7.'˜Óo;ýéš-céäò†ZÌúÂæ¢Œ…IôhsÖóD îèÑ©¨*¿íÎl<‚}'#ĺ­&«É7ú†Ëgtð¹_ˆÁù2ʼ¶ÓÆuay8sT+íó)ô½|Jeeø¶lt=;¸ð  <Í‘¿5ØZÔtSõÅŽj}«šGüßUz°_Y‘ÒBçX~:_Šó!¤“g1GqSö¶ªRäI`t]ÿZIK) qÉ„VMiÐÊan gB† s»»E¯‰.äçoôá0ž–“3ÁA”ã™Bm  ŒÇDÕ-ãE¥HOä¨8¡KAå(NoÜb@xüCÅæ “8™Ë¦PÛ¼¯:8m£8O`F09ÉsŸÏ[`3ö¡ÐÂã|´ìÑÜÔÍø«Fœ«`¡ª¼~óöÅïÿ¼vr²`F5ÑWÐàn¼ÆËƒqÔËËË3n€Oˆ )•Âû½U´“üéÌq‡2ð%Hu“÷¯JCƒœæ~- åœéµªûc"áKËyj%a6êZ{0.F5º‰(V¦çç-k8î_©[e-ZœOJNà_“PdÀYd œy0ˆÕ;$`Aé¨Ä?Ÿ3u@¦ãÒv^u:Áô%ùj€Jú&]ˆY°@ŒÛ]_D`–È“ðy†€s1ºîJçb ”pža XÒ–Z.Œ§J¡ée­;jµoš‰za;!4½‡À³¬vŽyW\ü^ÄK“DûÛ½Æ*H1-1·JýþØWeàÜŸ‚°qw´$=Ej- ~¯¥>¥ Ðñ=¥âÈzÑŸÛKA”þ“öR6t°Û°Ëžè4¶÷¥÷©b™~ìê`Fª [Sí—7–ü°%)„iÅǾ5«8ëMƒáµUI˜j¡:ey V ÀBI§L5–žÓÆ{U©„ŽŸfaÓW„6õÀChmKbg¢&ûÿ¿È„‹}C,¾à§@®>Íd@ªÃ<žš0<šÙX’ŸÄVâÈ }dH>ÒJ  ·ãQÓHr;'fÉä0Ä3ïJu4li×a( Ôë²²/¶ô´PMCfrK òDš° 8ÉX:tcB6u¤š B±plÔm‰¹"S³ûÞ[†¤›^ƒŽœŠ9 d¶8ôz0ù¦Ä#/$h lŠá-Õö6.¶°-s5BµQ=Rt£Jyï…7*¿!W"æÚþ@ß]ïíxVZw`»8,³z‡KÊ­tu¬`ï‘îÊnï´"nf#D7`Ëþ¡¬uãtá¦|<“£‰+Ç'‘¥˜2]®±ýCî̇ò0a2 ?ÁÉ dB¤?Ã2\AK“l¾·aÀs{Ê¢yP:&8¬«UšsŸ÷XÎó#$ÌÛi®eLÇsø3¯|'L€°1MúYa‡2‚(<üF÷ô¿ ˜_{}ô;½ÛU “Ý,KÂ9¿u‰JÎcÁ…¤Œ^´Ó§&s]P´¦ÜÛmBabP±À@p•о!€2!$6ð5”i&Ëßb„:d] mÁQT],!±ך•¶–6¢1h/zŠ@þû8Ý!§‹x6!Ë¥ní(/1èÑÄ6óú|Rîç¡¶;Hùx¶U{LÕ¤JœNÜ€5ˆ {°4þ®CW-µÜíþÇe8˜ÓOœ¡‘ÕXÉÂr_ ‹ÉÍîLÎÃ(HÄÍbà„"“.¨ÅüªN~ÏoÖ=::tœ€¢bÈ™ÌlЩlݱP¤4ûKy3œãßøû#“ ì ô`޾UÃúž{jΛ]?^£]‰aÐìä{8C'‚ÇŸ¹äþé ¤ÎBý!7…„r¸o€Ö¹m°xòæúÉxÝ« endstream endobj 84 0 obj << /Length 2967 /Filter /FlateDecode >> stream xÚÅZI“ܶ¾ëWtåbΔ AÐ9Y²•rRI¹$%9Ø>°It-6Ùá23í_Ÿ÷pz$Oy)•ÔØàíß{ÝEð‡îÒh—pNR¡vùéEdFÛãÎ6Þþíuëgðûä’0fl.v{õþÅ—o¤ØÑˆ¤QJwï»TÁd¼“JÊÅî}±û!ø1¢ÉÍOïÿþå›8Þ¥$•LâRʈ„È.úöÝ»iÍb?š5­ùê&Œi‚û‰Ç›Ë4(k÷‘\~Ä"¹¿Ò]êû¬ «²Öe§½çD”ð”ßôwYoOx¸aIu¶“gCWÖGè$Q OYîÆûÆÝefFŠ¡¾uCz?8 çïBK¢p•rBc{ìCÙßùb‚(‘~DÐ}Ù•ûêâ£' KèôÅÿ†¬‚[pŽWõ ¡ŒMÔûvŒIÂ’q±+Ö²©Šˆd’J{é'¥/$»"}A‰Lâ_)}FD´‘>žÒWFúØ™¤'}l¢ôñ·Õ¹®Q]zݺ™;mç¶9ûå­‘I”¤L9pܲ"ÕVVe]4xƒ?»- ŸÅíú6ËQ!òñnÍú†f'eð5\*ƒýM$ )è ü5­çêQY½‡^s°¿?‚'x§+÷eSÿÅîbÒÙð•m±ÍVWY¯ »Ù^éÈ }±ÜsW\1/oN'Ø«#¿9»>G9…“kâ@”•¡%~e•’p¸çBY;pù] Ê¡ë×V ¶(7¾ õeÔV<ÔVÏ¡ŠO‡Þ‚]ÜúÎá |ÈdÝ(ÁɘcYYùùÍiJ8FŒgéç[¯bòˆ$Tm˜þ®©îo¬NâÍNewð$^R„Ü®š|ƒcvXg'¿`)D”é~K™&¼ ‹²c0¶P@ÃÏ&aÆå?‡#ïþû/O„„»Ñ™'>º ØZÉîÃï¿yãµý˜5ñüOˆV×Õ_€’1 ?`C‡¦µÌN8ë³c¨øÛµ-nâN·Ú uv¨©!†¹–^ïe%(’ rmë~s®-¢ÔHé¹8 3y Gᕱ€ÝýD„“ŠÄ’ÿñý[¤ëAg÷^}M…%“ƒ8fú@.‚¢«Åß8êòÞ¸Ó¶Cd`¦ÚãprÌŽ˜À‹³ªraÈ Á›ñÚ€,P²BJ_:S´’ã`pñFr9.¾kÊ\[ãq¥ÇïŒÓÚù˜ {÷71œTVÙÍ¢ ×4؉£8ê `ÓîSœ}i'?Ôeß ú§D¯Qªècz‚‚†]¯ÏÞ]álN'U9 µqÉH?‹‚#údF­o†~­{ÛÒˆ>€/ÛE,d[&tÀ'ºÙ#ŸÂ8<+ì° á°¬ë C/3zŒÊMüã=(Ú*ëÜžH\äî¡JC·¾F଻/ÿ¥ìò77Šƒû¡ÕÝÚÕ¢4¤_y…“4M ¥âÏ’¡ZÁn ®p2£WíMŒ.þÉ>X'ãÕ±£ì%á÷úâ÷1L%µØj¢°j«ŠQäÝ1R': ÿ„e7Fp9eçί{ÉÖŸMÂroDP$šáÂÞ„f@OG …d+—–‚vO„¾s+Å×aá 뉜[ýW/f!IºÂI ÛmvíÊIJâ(}Æ•åòÊF]yâ ˜þ:ÔWŒž*ö$ šr Šát›ýϮ²î›Peî‡Ã²ßJB{Úb…ùNÍìö Ëñ¦öÑšD;¹G<Îp'9mL Ik$ž£›­¹Ûãåh¼{$4â 8º!†ü$@RA¢9g]ÐÐxc,ä÷sŒuØb»'ÃæÊ'·Íã%ÎÀ‡P×}{ñ›5'rNë1XâåÁ•…ñ@©Ÿƒ”•[[ä„Òø†åó3d‚bÎv™‘‘u¶NŸêƹ陵Èl"þåÔ´ú9W’O_©Ð÷W}B¥ÉH1à—u^ ÅÀÑ>¦«½Ç¼×ë5ØÒ*&ÙÔb(a”m®««æì7×D,s-Ä.Kifüò¤©ÆÉ2gYhEïϺâ”P®žÃúÅÞ—+&´à}ét¥ÐçVç.WçÂj‰ádȈq ЄïTõHÏ-~õþ¿’¥ÀÛ4q¤²ß&ÁäDÑé.5ÆS¦Ä2ù(”b!B¬õ¡ËÛr¯G¯žõá¹×îµG‰¹¸7Rá¹W"ULTʽÁÕ1L_©ê¤³1 í´€2Mz—õ~Ç”^aɪFy-ôA†2YEÓz=6#TÎÆèÛEÁй°arHä—óêJ[ôŠ( ¾3Ù¨˜cvºžËVö³½qQvæÛ¶ü`G¿S†¦þ¢óªc ê(WAàí(ɾiª¾¼‚̉g=0×TÁë¡ë›Sù‹ö¶ l5ÙäÂï¯4hTð¤û»¦¸¦Aiª–LCe:Ê “À^ÜYèˆðÑé&n&M•§-ó±zöÄu{%gJËó߯¤ÆSe1-ôI¸—®D¶ʪûìØ…®byÈj®„oÉHªü6(¢k6(HÓ§TÅ…˜H´% Í^×NˆqŠóm¹Ã”œbS]*3’-Àš³:gÅy‰õÇÜ.Ú`æÜ¡B |}0Åi\`ÎtûâªcgLJ±F¾ÁF±Z‚£†ÄG (5Ã,«ŒqPÛXP³~¡•83f°®f:–|H4á›ô²Ùc!:øy,´åX?À½B#Ýßc* „&R¯.ãÜ!*¯{£q ¡<ùõ2´ÇÙ\ 6º‹X&bkŸu®hºH þ–¦À¢‚Áv[}ª «)‚úÑ)ƒ€¨¦Ú¶=bl×™~ê*æØ¨:ÃÉ(°8Èòû VÚì"´ÃbhW®f¬Þw&Eb>;±ÜÕNHóÒr„äçk)"åsZÓçFÝxðjèí±¥ûmuUÚ”>rxá/¸‘„nÜà#(jUW^«fDt(k¯_d‹±øÓ`.Içg2#?%\ÍÆ>?3„2Áw‡+°@¬½…KZ»²µ3â(¥X¡,%G7 K%&xÆ(ûÑÁlN‹Þ~ò)ƒêK+ñE¸§ãó‚+0‘–#–;ƒ¦µ¶8lÞ)ldq˜kİSL2p%"çnàØZKv½vþÇ×çRͨôs_f¬O¤±±Óoi)Äö9O0j†ÜYel¢w¥[T…Ø2~»>k{ÛÌìA¯Ø8¯#3€Ž…刧·L¬üŽ¡ÙlçHÑŒéŠ^Cˆ©ì—mký\•}œk‡ºv;ðÕ}ôç¼Ö±ßáµ.Á» q¯£af}i;†fè,li„‹ÈÒ}ºüårDØ~˜q˜íá3•›˜ #¡œ ̬+Ì;G ±%R$Jè&¶,Õáˆ9€Øâþ¿;/x…Ü‹©xtrÖøíå«hߢæ7#aËÖèÕ.uIÔåB“˜‰™æ•δ/&»ˆZÑá4RŽ ŠYù'½'‘ ¾o-&· RÌ—²Ýܼ¬Há°¨¶l€\¬?Ï*d!+ ÛlÜ'g|ˆ\ ÔlØBŠWŽK²ô¦ Ðù ¶l¯@í9>=}¹9ý1݉-à$¤N¬i?cñL`ƒM¹—r»¨c3näI{ÓàýÅ¡¸¢˜4:¥ûl–ç­Ë”ßÜ(ØåˆM›Îšƒ´_<&©X…飮MŒÓ)·bãÐ?™÷þpJA>'«‡5/¾}ÿâÿ(²Ó endstream endobj 88 0 obj << /Length 2994 /Filter /FlateDecode >> stream xÚ½ZYsܸ~÷¯˜R–NL.ˆ‹äVíîãÝòVy³%)•Û‰Ñ0æ:\ûãÓ €×ÔØŽ”²Kb08úøúëà á&!›ˆ± áñ&Û¿ º·¹Þ˜Æù¯/B;Ž3 Ÿñ¥6ÛÏ—/¾ÿEòMH‚„$áær»IbøRld̃ñÍe¾yï} aôòãåoßÿ"Ä& I% i ¡ƒ˜Ao..Æ1³ùÂ(ˆÇ1?Ør>DÉ0Bµ­¯nÒÒ¿)Ú⪼÷ÎI‰ "Ø„ýQѾôc^®ÊÒNåøÌ½¢2ýÛô%½üS7æ«zëÚJÆ$rm3®­$a ÙxÀÀ YŠÔgBL€üCÐäé…êsνßÕK?ôn͉ÕÍK!½´ìÓ®¨+säCÚuª©œç¦,2f¬êÛ´è\ 308ÜxZ½ò[»@šçŰóºÚ|ÖeîZ2‘‘l\±(]ËQÄḭ´rÎDÀ†ãLÎm'°ëqÄ Õ¾rMÇD ‡&€CQ“1H^€&Y‚FÍ„ëÖÁÁ‹$eêеÎUÁð¢è œ ØjsŽ˜—š³e´=ÛôßÝδªÚö¼¤‘‡ †à2×ØÇ§©»ïÐÀpp¡ dš’{J¹㇨“ˆY1}…3 ø]žNûu—ek=·zÄÄáhåxòÚUëvÈDAB#ëâ¹òÖìêé3á™ìU…ˆÔ›Aæ¡kîÍ—VIl)v3´Qå€qÌËêýÃ" ºˆ“Õœ‡ƒ ®ûÆHȉL$D<L ˜ ¢pˆŠ„}ƒ þxp«6Á”Uÿï`®0Ê 5í»zËÒ²´2kwf@ud(MS7­ûø,L<£0ªÍÀåð4 DÌa¦g;¿«ý¢Úª¦¨þ·YS:ÿªßBŸ#)Ä $­=ÀÑIì]\#¯î‡gÀd#zäu1±çµŸ¹½ö?»Ö, _¸6ÆYFz9±h¹<”žÙºùJo KsÖ¿²ÊFP‘‰ðÞnMQMQûþUv À…ý©ÉÌ »º-‚ÜNÙqp¢";YBú¾n;# NŒ{š¾¥y•Ðöf€í0ÝÛV^¤¥Ê:'á`ÝÒžSó»0·´?0ç¼|X«rÂŒ=~“éžû;U:‰[’ÉÌ‚%M¼ z©ôö®Ê®8àv±GO-äâZ‹: taKK¿5Á® Z¯\FH!îJ:¬ðƹQ8ŸèÀ ¸DÚ~²;Ñ×ï[ã;`¼T »…ù6ª­Ë~b.yJïÊû%‰Tû4kŸ^ïÏ?®­ K}Ä»{*Ä«tp! ¼ðÒ¦H1Æ ÃåTw÷~£\ËJ°0\`dâH¨+0¬dCÌ%ÖüaL–¶hØu»S2½Æ) ab6!ƒF(l0&t¡ãRÌ+Uš##qØ‹ Ã.ÿ²ÆøFš”al:ÐÔ{—¨€Û±c¡ƒ¤ÚΉ»2ž§ +†‘$Të‰-ƒMüôM™[„³¯*§J´E®šô ôgì™ÑØ¥U¦r JÌ‚™W‚[ä–SoW乪Ìô¹Ú¦€æ‹ f>÷ªÛ™MèŸÀ0ËÔÁÝÌfçºÍ‹öPê„ì~Œë•?›˜F0áw6Ü7×½%LÝŸÛNÙl®k€‚£Ûqf’ÍÍáÏ?±; ¸àë“ÆQÀ5¯}B}’yøžqG7ià”Ï-ÔHóä!Ë*C;IÒŒc&^÷Ãó =ºè¥šµkY>ÈÚŽð³6º>ëk¿vS6q"Ï—K )WÅÏàsñcôoՕߪ´Évn»Ûwñ³„/Ï+ €ÜP$뢺u+´ÆO+!Ž¢Ç”àœ[.Nd6½ñ9XZDØ’HmÓ <³K;ÿ¹%uà¸iÖšÛ ˆÏ;3C~ÞÚ1! ;0Z÷ 0>°˜ÜÛ=Б4E¤&{u)$ój͹Spë£H^¹ VÉÄÜ/àl©Ó¯Y@§¢ÃZí‚t 9¿õeᜋ‚°e¬AyG€jÉRÞ˜‘t,ÛÚµ"7™ùº ûƒ…ºlYpØÈ)„€.$}Þj—&ü¡çL˜Øú7…šL¥ñ±Ðè¶¥Cíåa&¹€Dˆ"ƒ‡ˆy]{:yþê`  öÖ8(t*ƒà‰“Øû)Ç-Jâ}ªŠ®1Ͷ? „`µó ®ôºo!7.>»ù H‚0fËÄóƇL “¨ºqÇ0šdÉ auÃí 1ox˜ådCÑŒ0 ëbÁ`¥çàÒ_%T0£wµ&ª:{«›º¿Þ Y$*¦6fxØ»O‹j$¤G‚M€²ËY<ê¯+™!LçôR,8WÒ#N(³R~– 3}›C>.S@ ñÄ:#‰bíOèx)ò±ÜY팀F‘øA5ÛõÕ'|8·rþ!KŒ?]Ž–D~šÞ5kŒ,u¾ˆÉÑZÍ„*U‚ßùÕA3§¼Â9Ž3šMùοs,`k²'S],°ìe+ .il\·…¶eõpJuG"°Ok^ Ÿðo5)7†Ì|*üÔw5†"î˜kjbƬ‘%ôtÚ RtaiæŸûÕ;¿í·ÛÂ)Ï´M$A 4Q¨ª70Ž0 ¨8 ÃEÕªfª(Œ%"„iª8!$`R£yœd'?º&tŠ–§ç°w87n a0"¬\›ÖS){Ý"Âo¬¨¿×ÄçãÊŠÇÁBátÅ—«»W6bCè±ápYg–EÅA`š1ÍùEÕ¿qîÉ\òé °¾@þeóŽwXgÑ ’el|ºàHøÜ_“ãS+•Äê/á#½3O{›SÛñˆ .üa!Â)Ëœe™ûFêˆ,/g¤OØ4× †ù,§“|éEªË`“¡ñ3ÈBVf¾ÿ¹·ú—âNa(‚$~øƒ[Ÿ:%F}rž<ñ­ÇZi•IHšŽ-ùÝXNŽ[Uá¥)§Îo‚¢€yØ¡S¹²-¬‘¨ñÊè`klÃÝȬ¦îŒÆË ¥Þ)@&—ëØcZ‰€qùˆËÿ/b®Uwj…tDR òͱ³,îÐЇPw“$+ëþe]]%ým£Ôg íÉâ/$ÃüÑ»ýg¾B;õF@FñîШ›¢î[dúûCç2€.²ã™N“™‡bDÞQÚÑäÌ݈Êê*O[\?`@¬µN0cë¦(ã 걜‰çok±m¤3·Æ8áà÷ì™ ÷±2_2A¥/8qN†@ÖålBÄé‹ÿX‡Öx¨%ùþâãJŸ‹Q(vLÿqÒä¼-8L ïr§V^Ë`Sí®> 7µ¸ƒ3•]Ýœ €ü0G¤A4ÕñŽ ÆL;Ò73ð¹SW¤%p¨Üt¸“Ÿ 9z}=0+ ànÎcG€®ã¾~u*Õ>2ä >í‹ xk¨]ì­u¿ñ/ãßuÕ¯/+B€Ìùû0ŠV/¤¯tko Þæ¡RÊnMÇiøLóüh¦ší~»‚2Äôˆq¢Ž`¹Õ@ò”6Ýšžb¿—ÙÂxw)Œ˜‡Hjµ5{Á/J8ÅÆ“ žå¬'ôá|²ò]:\ü+WÕ°…¬ì-×ÏmE€DGlaÚz«¥—i7Þòëïÿ´¡`…4ì ŠOš0Ë ž_¤-ùÄ´+•MˆéùÙpílé꺰ƒ4Ï0¶¼Gµ¯pØ$à’=Gaeq¦7w‡²ÈÆ——Žkdy‰¥'ÌN¯Kg¨“¹{=öþ}0ë­JoÔšLÕëm_i‘¯DwÈ7þšÂ”ôZZ7$1íüÚ4{H{š6«WºÜYC.¼·¶¥>Ã-…èî«}Ú™ägnyîË1¿÷™ [O&ϾÃ!/Þ\¾ø/…m–7 endstream endobj 92 0 obj << /Length 2861 /Filter /FlateDecode >> stream xÚÅisܶõ»ÅŽ¿”ò„0A€—û!Í!§ÍLÓŽ¤N;û–Äî2â’ Ëʯï{x×Q<¶3ÏâxÞ}A|À?¾É‚M"ËdºÉϳÚî74¸úá·pR„ðûA? Ã?;íÛ›g/_ÇrÖßÜì6Y ›Ñ&N%ãBnnŠÍÏÞ›€'oo~|ù:Š6Ëâ0FP²º¼¾þùêí6;RH¡ƒ+» _Ü;6­¦Q®Z½*šÜ—ýFýAÛÓâùiœG,î´«µ 3pî òæÂS¯°—•õ/:ï˦f¾ÂûGOëus&Þ=MÜSwwæC][„›ºzp£Üž¦ú W3èzÕöˆÓÆçQÊb)` ™f`p+Á éuºë 2†Œ¥(|Ë`8‰%)ÿ4²XÂS÷ x ¥÷º|¯ ÂG }ãwyÛTUYïÈ `屬‘M=Í·`#tK³¦¦_æÞ»‹(öT5¨þ,uR0‘ˆ¤îÇ¡*Õ*…R²h‚µ^7Õ;DÜÒi˜h[UÙe]€È æ5îôoVuAƒ{ÜiZË©Záô]¹ŸÞµÍ¶ÒÇnà(a!ÿ2ôþÝRMwVϺ^tÜvVä{U’ˆE("Ž)“ÜâøÝAÕ{ݽüIßÓ÷¯/R²ê‡Vw´RÖtàd¯Ö‰gY–YâÑž, |Aü÷ƒF3Œ¼ÞرôþwyTyGk•Ê‘–[£ª¸Ð5GM`»Aóñ-G—×À”k·úס˜¯`šIä³=e0¶Ÿ“ìWh·ø;].Á1áZ`MÜòËz°8¢q€|‘¾—‰Ì»9ë…ÎËŽ´f÷eUÑhkn×4iµÿ zc¢0/-8™% vRJceOvˆâ8oH§Kó3èU¬‘½Æ4꜄i逵~ú Ì¡ž¯J«õñ_0Ùé¹GMGFIŒÕùÈëQ÷(‰4>¬¬Ôî©Lêöå‚lÊ‚h,§œ]“Ãä"ôjM.uf‰œ>»×[ÿØ« 2ŒƒÑ`Õ9À²©h£w#ýªÉoÏÍC>׃e'¡'Âùst q‚ 0Ü4·´º!d2”b÷‡‰„z9‰Òß#2„ÇJx:ô „‚WF1¡C•aàMä6%%y†ÉhDTæ}G0”Æá–‰¸ô*ûV«êù:ý˜yÈ¥¯ü0íXØ$áÂè©n ª&ŸVuä*¿£º@¸„tÃãª1Á- °N¯ u°¾³²_‘㣪‚ö¶ƒ:`nmV&ÂigjKX(h^cMôIÊ`åTôgÜHýè—v*?†D’1‘¦ÇÚU]ƒørZP~ëüÔ=‹ÚžÖ(Åz°åàèݦ¦Šp¦Ø ®œ^7¿0Àta#úªüVïá6ÿ…¿Šq³$¹»jãÅ»õRT𠜆8)FââpqrÄâ‰ßùÖT1 ‹ד)ëÉDvŽà¦õ98¾S­Ú·êî°‚ˆ¥Ù#+{i6lá`-°r‹øã)””@ Ôïz}·N)`Æüã(½º¼ùâB¬ÊZŸ´¼H‚Xš¿h¾\R‡ã@f6kv.—sºîR5.Û®d©Ú6{zWyÁ˜³=!Èš]SÌAj—¼L`¥ëÁýé•'¸¤ƒI‡éÜNWÓÃ0kñ˵ƒ"H ¯ÏÄžP&§±¢«ðŒ€ÍˆÂtèƾ¬±Þ©Q•pʼnû“Q›åÒ.× ÍˆiÕ„!\žÂIr³ˆ<^†íB÷P¯êâ Bú<2ZIÂ"?²‘4 ´ŠdjIìÔ±Ä*c¸iÊaôžL—MôÁõ©HÅ€„ZC·ØêKm¾Ž0ESÿ¥w)¾£‘©WaSS‡> stream xÚÍY[Û¸~Ÿ_aô¡•HE]·íCv›,º@v‹™)°@vd‰¶‰‘%W”f2E|Ïá!eÉCg“ SÁDIñrnßwŽÙ*„lU„«Œó ˆóUu¸ uo¿[QãúÇ+fæÅ<‚ç'§øI­üÙjßß^½~—$+EX°ÕívÅ ÒUšÇãñê¶^}ðnÄÃ:Ê=Ñ—ÍÚçEìµâ‘ۮőAþ²¸* ïzà^ðôˆ®¯õîK|§Å¨g³öñE˜Ïʺu°öÓ(õÞwj0ÛuC¹ižð…{Ã^œo‘M[p8Q¿¾»ý ®ë3°„n°—»}tØvs9÷º->ác»f^µö™7@ƒ.ýUÙ4êÍÕ÷¸ž9i(šU¶µYîH—éË¡ëU€Çxý.çÂõY¤ oŸ¥AÈèl ºŒæÂ@pw­šÒ¤·77®ï¦i³%yd,·ó¾[ûqyå8t~ÕŽP\qæIE϶Û þâÜ+«A>¬“Ô+QÓø‡Ÿ¨]‹m96½<îE‹†€W§Ç.DzÂïïõš;A»ÀÖ¨ßu®˜¾¬­ó8N¼¿ =ÐUÓùUÓ4HÓÌ^U(åJøËS8$Ä"°÷pÑÐʆh;j1‡[Qȃˆ¿¨þ’¼ð®Aaê½AYþ@mÕ½µR¡°/ñÊ^Ð (U?›-y§EØ›9(5”=Ù=Î* éUkl_öp{mÔØ·‡å\ívØam¡Ÿ¥‚xÊÊ?Á%€,ÂÂÞy· Ø%6>_~‘\ˆ àñI(J´dåÎz/j®ê™c ù¨œJèX‘„$<ÑÚÐ §8ÚZ¹¤eQÀòɼ§Uý­lD[ܶ¦AžÍm[{Z‚ŒB¾Ô„~?&} y²,È““A;® ²âùE¯]«¡Óód¦½0>w-`ÈfÐzþ 0‹Z¥)§ëåì+ƒSðVö»ñèz.…ì0_/¾Êç?C<:/RÄtã-Ä›ÎĞąõé'<Í4žBÏOaj/º~W¶òßÂ`Ô´ˆh{IÎ&LÏ£öæ¼ù"@Ey³ÈžøvC¬ŠÃÿÅfܹ®§A’N_ᾎµ²£ ⥡þM<ˆÐWï]k',`!³k«qs°òs«0åAøUþ™aÛaå°g|W5]Ì}©< x˜>Ø2Hð ŽŠùšÄÊK:Èâ ™Îy(1öø Ï:žL(¤ Ð,Ómi΢ÈÖú#ˆ¢ý¶HæQ†ºW„æt@­»fŒæ ¬Â ?KSÀ‚A‡¾]{ðúÌÎ+òdîz[Àß îç'÷{©l¿`˜-òrï¾Ó $"Šzt.“Ìr‚º$SÊFˆiBƒlÆM&M t‘$ÁXxÍG/u—ÕöZõALXìÝ½º˜ûühÛvªÊœx š|#©Îã„"žƒ{Myó¤ÕqD HœœXYÊÙl:I¶„LµiŒ§ÊêìG@Å"h¿XZÅÞ‡kÈ(£‚{7úy7C9”˜e†ÌûildyGýËD{”)FU²l4ýwÉ/Kƒ"YT~õ|Pˆ¿ïº{wÊ™9›¾Ræ83ú†'Ö΋¥LÏ@hiÆ$¸!Nsœªi¦8ìa¥7ðJ¶Ô¬•ƒ¾›ÊoŸÙ~в¾»ÚÍX”ܘ÷ù@cjmd¢§‚’)w€ ÒŒ¶T§s{Ç*ULïi¬4½â£U§©•åÜû¥õâ0™à“ørY‹ÑJɱ qè4¨ê³ÕÔirG f–Ž ØÐ~vtì×<ÏIQ|q(ú 7Cê^Úr®m–éZ±ç@ìÒâ±Ç†K9L®—0~ŽÛ4ØÁ{“mœilJ¨­v¾y9÷B%*gÉ"6¥³Ø”ƶäÚ¶` І5«À!zEY:Kjr{=\RG-)XõÐX þëÒŒa_¶f ÐUýôª9ïÂÆ, üÉ”dºVü¿”Š NÒy´ÖéÛzßm·J ~+ɯœ©K–˜ÌR[}%z¢ë­¦«liˆÕ#ˆ*Øcj© %œØ#ø‘`É»ŒtÌ™ êÈ*6bÙf™6÷BªÉª—sÛ5 ÖÀ-ÄQðXÚ=³»S¼¬s”íòŽöT[C¨ýƒ»úÁ@ÚgY1È&‰ï/>=Uw•?®¤rÑ£%šÅlý,”íØ«Å/=§è„ýçt˜0ûËáÍÍÝ…ˆSDé Ry? N¿vÕè™÷þ†ž×kà·ïèEGl×ÔC&þ'5Þ‚–tŠ|äÏ”2 ý“³B”ð XTT©ü~ز÷CÌÏq@æÜç,ý¾T„)ž ‚ó- •Uy¼ð;L8φ²r$É íXEš›±g'ÔëïGà ßÉbÂ}êý„±Ï¿sê9 Šâ%+¶±·)•¬,C1P¦õ7«ßòÙÏa þˆfB•#øÚF6’üÙy àÌ@d_6{Ç»TÄuóó§‰Ëp4#dÜûã©}¡> stream xÚÅYIoÜÆ¾ëW Þ%#Àl±nF.¶a ðræç@‘=FR`÷Xr~}ªzá¢ôhly ˆ[³XëW_õÐU tUÄ«ŒsRˆ|UíÏbsw¸]Ù“«_Ψ['8ƒã³K¢„±U4“övsvq™ŠItµÙ®Š&«4„r±ÚÔ«?Öbšÿ¹ùíâ2IV)R–âRÊH 7b»èýõõ׺ÔåŸãÒ™X‘’”S¿öõy$„X—õ_¥e}q.Ö÷C¿¿×xÎ×Û~°'{hïûóˆeëZZñK­£¤ ,OWM ‹Ùª}T™Ç$£ù•©Î#ºîÛsºþxúXíùº+÷ÒžUm©v¸ µ~hôÎß&² ê.8áÿºƒAeÐ;õ®å=ø®»Zv•3¡ï¬öýê[©ÝÝû²Â7ïΓd]Þº›¥R½P¶l›-^÷»|p‹Òù"&H"R¿h_ÞÉ(–ªQ”.‡[©CÒ8#4Ó²mÔ}PÃS¿ê•5\÷ÖG7‡¦u¾Ô;çõ]ûÉ;nЯìê†Hât½Kv#¡énBĺ¶ _)‚: Á?yœÁIA8ͬ2ïvew+Õz˼~yžóµ,õa°)È× &¼‹ˆ¾×)ŠÂ†)M¾$LM K9P¿œ-5‡ÄÒr(+ÝØ¬µv²½ƒÛæ™KÃR7}G‚F¦ ÷Hü'VV€ýÞšóÑÔÖД7­ å+¥£˜¦ÛÊ¡é‡èzó&Râ:Ú6m°(§$ccÑ„Ããòƒ½¤T¿­wfg$ÏŠ áÐ4n‡rø ) Òs(ÿ®òµ‡ãðBõþç ­sõ\•®tn,Dº»&^Íß²;’ьĔ½Ïû)‰¡6³9<u”ĆTaÖCORc娇ÚõO>ÖŒ@]DëÑáú“-²òñCœÄÎ ¶pažʘÿ°Š®ƒŽÎÍÇ(‚,ê`îJîËáN“ž¤sl‚†CòæÉ›F·ò˜\žÏõÑŸ%×-Os’el ´oŸ/›GùÄËŸ¬é÷kîoMhËP JÒbÌ©T¤Tå ø@8™ŽÕ+‡Á³1h6u *œø4Ɉà?€È¼ë‡AVÚX\‡ÌMrŸ›+Ûº¯‚IÌódj,J®%Û‚Újí8XÑìŠÆ^ä9-Ã^Ú ó˜bHÔî/¦$+²ïïÅ_‘ñ!Ô¦e:æ·õÙE7­gv†õY3·²UòúÅÃû±’ :ëñ6ž ƒéñóÿèÑÊÇh~”ƒB•¦æƒ‰Áj×<;{0$a¸› Ø»žbz$qLh\¼,G€2Ož„âé 0ëc²hVåméaÇ4ò<ÕÔN„Í^u¬Ó“$NþûFïL €5LÕä‚F©ƒ|!©{¶\êp½€¬„?Ñôʾswyн¡]~’*[åF‚íàùÜNÒu«‡tl¢“²vag‹¯"õ/£ô_›·”Ao÷¬JH{\di6>ØGv¥ÁÆ; ÞFœÁ#êÏ_iG*H‘ µyó68šAuÒt¢†G€$fɼìû:È4þ)î]oul{ˆ†ÓÛÕ&†ÁZV}²çµÜ–‡V»¸²”½@Á͈i$þŠèšSx°§?Ø SÆåØ#r¶VÀ˜tÈ'%l"ÂÇ\B #][€INmâÀ7®ì¥í_prí>] ͽV˜³4Áfß´å`æXXcF^X‚FD‚ŸH"˜¤ãþ•þ«vV Âx±ô¡™E㬔>7+0¿3œ§¼‰|£¦‹¬±ÁdOÀ1¶0<”W \œ¤˜Ù4wEy.ÖoZ»…d­PRa0”-̶”6&tú_äÒ¬H ,Sç¢EÈÃ^ÌÛã¸Í¶›·»³1tÜV‚ÙÔãA›`Ù&8°Óe›O„d„Ô¶5Tó ªQÄTº¾G"&m×>2‰yÇæßùÒ|Ù£E àX¸]XiGù°pð©Íôþ€Å†×>Ÿž¸®€ Odã9â<ÎI²µâòÎÔBH(K–2ßEM0 9ôæt> 9»º…¸™‰—ï÷e¥·6#†ŒÉ˜¤t‘Œv¥8B®¬û¿[¤ÍÖÄ –å§ñ¢ ÙTÎXrÀÞ£í¡3<$ê·[&(¾‡ÙnðóyJx,fÝ“`°,º>T˜Ò¨IÓ LSéÌ@ ¬i&!p Ÿúšg‰9¡SpS3ä,«J¶#›Z³‡’ÕžÙj!˜CX1•¹¹­œ&™™së°ÇÿÐû  ¤ôªÔN¬Þ•ÚŸ¹[=|Š#î›+ÏÚñÜñtcVü/˜;Xö½Éq.èNÈCÌ*v*;ã¸ÎJíxƒÌ/¸$tžƒ²·1°€ÒIž[ÊeàîËÇËÝ^€šÚÎø=otýFÙúÁk lÀ ÔB}êÓãux‹Ï ô‚Ï‚«–¬ŽìQõ{I|bú ûbò$äÃ-}ú8<`Çò êÊ8ù*NÊ'…6RLà6Û ´Xÿ,vL {Ê1¼:…4aDˆü«á Í'&æñ Å=W¨  NÊ—Á1mYä…ç:…7mšÕñ&&3ÝðmÖí÷²n ÒLç)bez*ƒIYóšÿÁÇ^šŒý ²¾B¿Ù™F/6NâAÉí¡uêôöhøË‹z«…yã~'²Äv¨Ýn™wëõ³ßþ·¸{e§\÷;J ]˜‚Û x„ VÊ„ûT1ñ/(&à(âD1}F-Hã/Q `Rײ¬ç;.búñ¨oëo‰ gï7gÿúÍ…¯ endstream endobj 106 0 obj << /Length 3105 /Filter /FlateDecode >> stream xÚÅZK“ܶ¾ëWLùbn•HàÛ•‹,+)¥*vEÚœl¸Ì #9áC«Iþ|¾Fr»+¹ì¤T¥  Ñèç×Í›ÿĦ7YEœoªã‹P¿í÷¼ÿË aÖÅ‘Äï“KüDÊ¿ öýí‹WNÒƒ",Äæv·‘‘òLnÒ<Don·›Ÿ½²ß‹—7¿Þþd|"™ßË_ÂDÐ%KB¾a AÉIŠŒw¼ÛÝøQyßb[ø-c¯ø]Û<ØuMÓÝÈÜ»¿‘™§¶üöŽÞœÍRuÏ{›ºUüj<(»ÎÇBu(iý§ºë×§LmE‡²Ý«íw†ó•„bÜ…ùNÍMo ¼Äû“Ï¿CwTÁ¤Æºké* ‰0r\—å$¾ZPæÀÛƒeøÓM’€@]Þ5æ†Ã¡›šíê¶fB|ÙÒì=•½‘i·3bh·ª%Œ%ñnöZ¶LŸ„:ŒÃK³¯çߺå95 þ±Ó‡nÍ©~ì>|½4¾º^Îâ4fðK(²YEP¤2Õ’ç¥!/zûáÃÏïu‰, ƒLävQb*—K2XqaW¼ñ+f5x„šÈ¥] á‘^¸2-®áim Å,5÷½s˜h¥Õ/½·‹M+%—;ûI&¼w¤•"Ó[ôàn‘ê—açQ…±%q.Û®s¤¤¡]EBpÉ7d,/ò=?ÂñB°Fp`²êŽÇ²ÝòCYUê¤Eއ-‰xbC§¹~?¹º˜¸‘L.\L¬88؉eÉÙjÆŽÏ8•è´çúQ•¥ÉÚu ³`PÆôßœor2$?™÷nä×[Õ¨Q™5¥6˜3?P€2ïu|“I¨}6#ŸÞžŒªmëvÏS÷õx0TøÅ ó}w<ðG™B$$7šG¼kyÔ+8$~"9ÙÃ(> Ø'MŠ(!ÊbÌ£ñÐ Š†ñÌ®~[š•8 ¬[º²Þ?µ›³¤ã],CýªºÄ†õ!D£¡¨"3LwZ´KRX¤uš1:¨ÛêkŠØØ)öÍÆ®ýÑÎ}ÙU_ŸFëÇ"nÔð£ÓÒÜVnúß´š-TóÇLsÃcœHoTO£È;–zÙT6ü|€f)NÓØDqÒ(mêUÙ÷:Añ´V:MT$-¨[-¹Q™6Z<(6„=´Îœ!dÏYð4²üBcZ4”Îkæµvüö rI0Å ÔœÍÆíV™­;UŽS¯ÌV ¿E¼ËpÐü†ÒŠ€NðöÃhÓÈþzçKEiNòÔ[ÓBoeÀ{èºRwÓ^O°ô$¤Ãóä˜ó,âžWfK2…÷¶Á«Ð%­w?üÄ-®À[HZ–5Y¤ìÔ+› AŽMÆù†-~«¾¹à€§L1ýS|¯voÊhÆã˜žT¯ÚÊdó 3ì÷$ŠÒxËtb†Ê‘VÌŠÖ©¾j&›Üg¤e5û{»ÑÛfkäöEHºžßÀ—âäÂv§°Âû¾GòšÓ6KƒÚÌ—0]¿¾½²À‘–mÕ®œš±LDyè}PÊ•(£9*0,æû ŒU®e1ãœX_ºHúq˜Q¶òE¢«iú@t÷~×úÃùx×5N¡EΈž<#’D.™fâåÝ]¯>Õ:<ùÃH0Ïu@šI˜Ùí,CF¤2 XN‘ ¨ã ÓÍ=?Àj8y6'B^%ÏjÓâŒA: Œøáb·0-_1AÍvóc7*'|Mfø2|¤ÌŒ{ŸÊº÷ëÑxôåùÎ-ƒEv3²å¡¾«ÇÙT»äG9J¤t}ãm=œš’-yÀ¢èÖ_pZF‘Öš©"ˆÒÙ¶øP¤Û ³Gþ6Ìù…X[‡˜¥‹ê‚r%4¶  —ðÍæhSÿ•ü³W-{e"Œ©§L°¾±™Ì–…S»uß;Žà[Ño«1¾k;tW"›}íöõ÷N$ÍprV³Ø$Îã¥Ó»­Ó8”)ál›­)a£EQ7𠃮%¡×“†¦0Ä8̽zÇïሽ2›~xzàtUDë²Ox¶BÔL¥DОCR~âvu?ŒþXÞùP¨êý™'ÿä”}y±€én©…ñì9£ÛmÂ,Z}’cùQ[”³¢ŒòçTÉ¥†Xh˜ÍÂæ'mȉ˜@ü`€S­5õ‰$jPpés@”²ì*„²³Ã£Á¾¢ðŽª"*ˆ¯ _G¢j}ÒìPë¦ìùBïXªx\]‘«Í¯)ÄÕáê ,&÷Ÿ²Y†A*ç¤ò¾g JE|UgQDH„•Vcê@d*hF}>×s|À#NǾV[Š´IÂŽº‰›I˜ÔQƒß1ÜKô͉üF³T ÅÐ4“° ™´Å ™YÏÎ(,ø×¤ú3»Ù笺8XBT¿ä‘HÊ.Ò‰;Ê3ªÁ*ºaž²ýú³<ñBƼƮ%C©÷Ôj@1£jÌé_‚ºÀv2& .Ý1e ;fX–ËÓ³ù0첶ϯÄf3ÜJ(­8e'!¢S à9¸+›†×1ÂÀ`¥cC'cï émך…F›‹—HÐa6ÃÀ‹¿øå蟺ºÝ6Ï @³Ë0øº:>óàC*ç¢+/¨ª®ß– Þž­ô ª±mAìáÐ̽)åM;Hz&K«¡ývä½w¤V.]® „I[Æÿæ?58.ÖÆ¥$y&%«¸0 D<´1®ƒuò@^µLŸ:^^RoÍ«p<ƒK‡J3`È$¿Ò¨zwç †ùE™.ï•xHŠè…]Q^x?MÔ‘A &E¿úÊ40Š,â3½‰LšÕ¾7^Z¦ÍÉ•Oaé‹~éëÉÖ‚‹”ãNºì^ÚÂXúâííåÓ€A* , B™<ó‘®öËùCź›wET³pÐwOß½zU}ŽË ë÷¯†n7ÎM¤UN7T½ø¶§¢3·áü_3;ikGm'“ eÅü  ,†M¯6»w1I(ÝÈ8…tã0?½n¨Îxå@w@à½Wø_èÿ‘¶p%=ôÿ¸Üb’®y_¨›w•]oqµ‡i5Ÿ(VÚ+ÝE1l:Œç;<­;»Ú_,wˆ©PB¬ƒKeQáÝzE‘9ÞkRÛK\o"Õie)gw[¦ÒÙKTÕØS)ÿ½I1^šE×_°†ç›àÎjõ¸pžÖÝýSU£“¬ÐÀu¦[Ú@|•wD_b΂´‹d »Œ.|hTŸçsèjz«¶„Û‘nf®)5ÅH'AP¶„{Üi¼oçe„ÛX\ARM(¥CÊõ‰âoŠ$4{YÇ/¸ Á: »Ó´Ói\ ì\šv9miëJiHA˺½uÎð“8{¬ìê¢KÁo{5ÏÚ¾o7®¯æ.7àœéÓ冲Ëz#@-£þ‹Ü›iXS%•ëN¯ä¹ÍØW]eK­Ÿi 8KO¦óE²ål¸Jéì1EDÑ•ˆvSOZ±½B,>–w$žmjþ©Q¤aáý¨­q!ojk*$¨Xˆ” ‘;mùúÕòÓ’~³,‡èy8£:¾ÔMI¡gûz°Ýâ÷ k+yéxj[2Ûƒ«Z… Óçº{òÒÿ3D+F£|—GBb|Qä_GŽgÂØÓP7A&ÓÔÍ€øÞ^÷É2aàÑ"'½´MÓû‰bî&™–´ñ$ݲž¿’³¶þ7Õ•«;t-ÐB&@^ÕÁÇ]U»õ»ÿéu›÷ ¿¾Vö»ç¿þ’/üËK‡ÈÙùFnÎaymº_ËñùyŽ©C€R›Ç3j‰®Ìiì(Q-p¶Ñ`þò!¾üaȲ w÷c¯UJ'Ìÿç2¬5RI6¯è»ÏNIè ˜ÏûhšƒTê À@SL#?묭îM*¡oˆŸõŒ4¥i ÐÕz‰®ª1p§'Yî}Ï­½¡sz+iq…&Æ`ê7g¬‰WfæÖ•:üþÁíï]óiù§I³‰Ñ׿¶n–ßÛ’¿qc¿Yï—Py½n™>ï•ýcœéÄß*;¼c`ùl4ŠF endstream endobj 111 0 obj << /Length 2973 /Filter /FlateDecode >> stream xÚµZmoܸþž_±¸/–H‘Hê-_‚¦Izwh®Eb\?\¨,qwkÅ=½ØçßEIk®º)d)¾s8óÌ3CG›þE›<ܤœ¹È6åáE¨k»Ý† Ÿþö"2ýgðûh?flã/f{{õâÕ‡Dl¢0ÈÃ<Ú\m7yñ&ÉDq±¹ª6¿y_Â(½üýêçWâx“yÂì± Š:½ÿüù·O¿Ûn‹)y¤Q6õ{mº$Ë.i¥ùÔCö½?tE)¯Çk¾”<áSﺿô9ç^«.YêÝÑDZè*©­cçI¤Y¶Ø¹k™6¯v½ñ#OœgPH‚,äÔö‹4«~¸Ì¸'‹aìdo޹näQl[Ù†¡sõ8Hæå?«±+å¥ÏòÔ«Û¯²jÕ¾¾ôK¼+\u—î¢ÈP,ϼ²h—ã¨Ü/æëäVv²-eO”é?ìM¸þøžŠÕØÕ­Y¥Tð›y•Ô¢ áX<ˆâÈÜáíeœxE3¸Ó— Ÿ$ñê@—¨„Þ=nPPç^¥Ú‹Šûnñ&%Õ Š~§cÙŒîè ¶'i–¸ÍL_ÇÞ”p+1mÅ9~>‡þ¬ÛÕyè8­êEƒ·Ì¼mÑïáLp!bï×ËLxEW×tivÄ¢ ‰—nût#>Í?:Õ cͬi”p9°×¡SQûaOÀ¼k} iDX«ŽT–e Ia¼¾†¤‘Woéw@éeéëîqÚ”YµÁ~ö lÕÆŒ­·Îãg˜¶˜ö±[­»®³ÆQ «òÓ´‹åUÛÜSi«:S0óõôù%ŒC-:ºåë£×Vpx.àâ·ÅØ 04zIMî£d50˜gûJk±"á¶“ öt4uÓ#'bífd‹Âdçë~)ô£ñ¤A0~ÝýÏzðíŒnû‹ã5f}g’Z'è’ø¶c¡oòFÃÛÎéhÓ`J,­’·²QGÙ9Id~ÕZ ² \gÅ‹Ä8¡=Í'×ÄYÀ’hö×Épúªî¶Ñ‰áê*þÑÒ¬u:e¢O©+eKþ¼S­?»µ0?ñèê‡ü.17‹…¶8ÈæEâ%€xýd:+„‚a ô1¨Ý®‘f¨jOæRhØT¼«‡½Sû“(àâ!°U¤pƒóæc,NCô>#ï_{Ùº.€gà„¿ù’aQ˜Àó!Èb}@ŽìMƒ T`  kjPO½Ju8€(ÌXíG°>P"mQlØOVhX0`ÓuI4᳞–?;u9õ“æ¢×TkÀtË=Š)åÞ_*\UIªÃ§Ë§v½+11(4µæÇB“ÝeÁŠ¡¶’ä@¶³jaÉ)öT{N!xô†‰Y! âg=Ý‚jma °{Bâ¹b ^j2¤g÷‚!­Èl¥{z+µD‰ÂxœAÂjåØu³€âÔÄ#ÔëÜV"!ÆöÒÃ^Þ¯B+Zg;Qi˹ân_ßg‚äÖ|-ÄJá‘ÚÀ3mñ.̭̋Øþm)c'w°œ“² ©󘢿Áb¢í¸AÔœ;µ*j´Q*”ͱ‚T²"½zéÚ: œ²] ÈI£ùÒÊ‹ODÄéÒýƒæ#z€gmá.È^zªíeÑYòß°1 ˜WÒ_hªTªÛ“Žg,QœÚ|a FosÍPg²˜h"Šf?AŸ¦}T/u**iGP0ˆW›íã$ò¦ßRµ=8»Iï ó,Ãteú³ÉCQö¤*“*D¸í…­#À`P§È3z¯eM©#¾ŠÃàsŽãl[1rY{²ëî2Æ™á¿â†”¾Ü­eÂkj ·93a ÏDé" Ξ£"7çÂ#»ì „–ýdžK!ò¨F“Ÿß`íØØ%b‰R9„ŒF\&D7¨/Û¼F;¿§òçâ` ƒ„™USéÙ%¡ÈŸ†ýhïÿPiŸu ‘®± 8J§N}âåÕöG­þAUÒÇ©žÌ¿f~Ä7@5ÅŒÝJ dy&OÀZ0~ lß"€êdʉ寮’¾¦”ŠOO¼êZ"˜¤›¡Psúº?6ޝç:Ç/òÜúu2R5Ná,ð‡ ˆø¬û®ŸŒï§LÂdê‚)ñwü,Žgì @E¤ì9zå+ƒEoë]+‡¡"ãˆD‹ KæçÄWØKä”®Ò¹-Æ‚t&K ƒÒœ“°aàöLt¼0ž€Œ³V/ >g9€´8‰sÏI}•Jú¯tùˆ± ŒªhGXÂ=ÂUz?^}ü;Õ\we@‹à*RÆé*°é1-gàË£Äy¸¨º3ã¬Î8v¾Å3ÔþîIÜ>U{@8tiÕ×îö§aâO6–0uFð\<šA‰ƒtÎ^ôÎiÂÅ¡œà0—ͪã nœP0›ñäÙ©HLZ”c?ìëD i¼ …ÀÏòl©ZŽêˆÔçzÜnÝGŠØj &ÄY¨Sº¸…Vµþòibf¦ì$™xâͬ^ˆZŠÓ.ˆ ~böƒLõ‘­C¨‰„ iß^’ö ë7¤j"÷ÕÂð€ÌZ7=ÌL| §À'ãhÝ1¿º O*ù9â%&Øÿ›v± ,2ùß’Þ-M‚FÃYÍÃ`-û“ Ç>0L¾$›–}CûÞ9ú·j7öDŒ*Ai©J"ždZE¿jícÎN¶²+4ËÑC Í£WŸm®¯Á·K Õúq9ÍÂÓè¥'ž_z@2G‚ £Ë_pIFqjªãT+èÁä[D’’p±ãÅÖ$Ê/¨A; ¨Ÿ¹?†ÊúÐz±S_B`sS_wÞ z–ˆcF.Õ¯äØXª±©hÀÐÝ»¢fØB1ö›7‹=ažà‡Àe0˜&üþ o÷¯ñâ ¹é  Ÿ/Ú>¶Q¾B¿§šÄàä”N’õ”Ó{Ì`W^@§;ï­œñðe•^ï:“&9 1ñ]„L¸ü¥M³ôCAô€ŸwóD‹ÄËÖ ŽMÂïØö ý¶(…Ï„:Ù3.S=E? ÇwI¡Ó详$ù3Ї:ø ÿ´"w¥|tJ…8íMO½tš ~?©ÞÔ¼Õ÷pßП|ä&ß…ƒA0=Œþ®#Çcó÷aL‘¶ØÐÉ¥fX:y†n£7‹îÛõ_&L¯ÒÆ.£fî},º¡6žâc!IŽÍôR~ŠabzÄmaU­Õ/Þ_½øO¯l½ endstream endobj 115 0 obj << /Length 2318 /Filter /FlateDecode >> stream xÚ½Ùnä6ò}¾¢ß"#FàÚ xïMç:v+™FGòcìi×Ãè!bÍ [fGÚѲK¸ql!üÛ2R_†‚§É(7±ÊÁË¥©k"R¯LXÀ0fîMk}ˆÀmJ¦Å¨“%Që½ýw8Ñß#Ѹýj¶½3tYÌó8Ø·ÍaÍNE™²" ÿ?(6ˆŒ»§8\ï¾[µ·áÞ‚¯Êv£–R(èj e©æ.ù1(©9BðwMÛ­Qã’èÑPcRÊ3ѯ`…*üÌÌ` ;p"òÑuÕ5„ÞÖi§¥‚á!xZé½óéB*’õº‡ HîIžÿá.ÆËÉm|®¬‰êéL†Ï&¡||ÑÍÐ[DýŒ©G·óßÚ4aRÉ×Úç9Ë‹QàhZ”yDÙ þ£%Ѳñ ( ˜=ú@E[•TTÁ/!ðñÞR®'-it\4ù=y‹gV¶¡Štn°/SQ²Tnë`©÷ª¼é/i‘)KD¹´”¿õmÒ_õD× °c|rÚÖßåDeœ±?T8w&ÞÙÖlAÆ«ü¥C·ë— ÜDšÁûïMuŒm½3_ÏRšÉqg»c¥ŸÎR3 D|h¿Aw®Zåj HHjÀ(Ü…”ì]mœ3ÝkX;½ô’=gYô)¶®ûTuŸ/!â`êR‚ÑmðWÐð·î/\g\ühwîu¶­1 ¡#Ö-—2áÚO³ãPc~¼{Fc§2Cðevñ%+{Ûêg¼kÆßòèËÚqÍÑ—ÍEvGšÎ‚ÓÚ‹­®»ys©@þ‰)‹ dŒÐïVc+TÈ%¿P>™<-¸ z‹0}‰29Wó`ý+I(¥‘–QL<èî -¨)€…uæ@«G †=p‡<”C*]Zר~ :HõåP³!”ŠK¬(ˆ÷]Pûp4È‘­VpXñL©û])hòt^Eù÷ K9Å´{½5rͽ\²$k=Äï÷õ5™Í ±}O3’‘Ì9“§Uñ,OxÕ8¡Žœš«3ìB™Á§2cªK}"žˆdg‰”óbõ èÎ þMe ¥‘ÙûÆ„û ´%<ÕL¨h*âKƒµÕ¡Þ”×û· D\þ_Õå©MÔмDÿ6Ø>eÑî©Ö(©üµ@;C?+[‡•õ,Û-Öóˆú¿ŸÚy¿„‡€'×û5õrÓ½k°ÅÆÚì‰@­fRÈiX«òP,ùw.Û*?W*:`öl|c¸31> õ"|Sæè® ï±ÚcÆMrfܦr @Ç–°Ð³2”l~"¥Dô“Ÿ´ðæ¾Ò­¯Ð„Ÿ¶íûŠn`Åêu kª |µ‰Ó‹ùˆXؙۧY9 ×ëŽ\±l2pt|Æã1¬(\n6G (¨waîU5s¨½„<çœE¹¨|Ì"kÈÁRËyiŒ¸½ÒüâD'($˜5ÎQçzžéài\â9tûèký-$ÃÅàm6õó¾3YH$#ÅtòÝÊ›ÁዉȹA°dBއÀWs¼P°Ãè™É˜À¬q:÷Ų,VåÉä”T–(&¹Zªl(c: ­¤wŽÝ¥z®», Æóôòù]:Åaß!A0m?£߉sUü!üŒ¾§DÍŠaá{Šù¼`M¸A=¼ü/S„¦X”‚'–ráÉ¡§ô|göº¯ÜŸc® /•ß|P~ºþÁ(èÂ6«À³†¸ÃÁ¡©vá„ÏQ¸hzwì!ó¶0Œ:³¥acœó<º¹÷¡=DAßÔh‡<´lL˜T=ÑëÆjšõüD¨o‡VÚÑâ`ïî#˜Uo)¨Y—²Ϫ'­ù¾wð¬?uJ:ppà’JJ´RâÌ»ƒTˆë<|…8ï'‡…œÍhÄ£Ç\ÇÂGwvª6=Õ;ÅHÚþ×õpßoê ºÊãIqú!ã3!ðS€Ü¿¡˜í¼+©¢ôBG¸:.¦yþòóP\̳l åÃø 7ý7¿˜^ŠÈ[á¿Ûd£Äh¯YI¶¦†(»õ_šüG 4ÏÑ VÓW {Æþ2‘ ö49÷ÕEMÍÄÊô̓múîY5”L”+²Ó:s †{m¾ºç0'PªO^Ή/?Åê"gy’Öák3*J¶o~¸yó?Ûƒ endstream endobj 122 0 obj << /Length 2681 /Filter /FlateDecode >> stream xÚ½YÝܶ÷_±ÈK´E‹"õåEáÂ)$Eq¾‡v¸Zîž}l)Éw÷ßw†Cj¥=íùb8…/I ‡Ãá|üfŽo"øÇ7E´É„`…Ì7eó*²«æ¸¡ÁÍ?^qG'E ¿Ï’„Io·w·¯Þü˜Ê X|s{Ø9|L6i.rs»ß| >E<Ûþvûó›“dS°"S$å1Ka!"¢÷>|¼ùm"›±ËxîéÞnC‹à§vçÁ M«j·)o’9“¼ð›nÖøæ,/¦ãË®9Õz¨ºvÆE=˜JÞ&IØ¥OQ­Å#Îò$öœt߇7¡ã§Ãn÷]a«½&A‹(ó›á N§Ýoã,P½—æÞTà[d± …ÈYûC.Oh§j÷[ø ‚ªÇ_T꡵¶CmÝ3’`ùb¡{‡§,É{²µ+Åœ%ç÷"qÒ`ì«öˆÃ,8™-:¸Y” -·XWý@¤CG¿ýÐí· }6£ïO–.+U–´Þ+ ”©Ô®Öýk"TnCw:Y]¯÷´âÏÙÀB®Ò v’‘]mBwÒ5§K-΃̸=FfQP ô;½NÜåq¸#±p5¶ sàs{§=•tây Wg‚ÙùŠx#üä4‡K'е™)ï={4z5쫾ìF£Žzÿÿ1ž/Í}ƒõê{|9ƶDíi:tôÛ¨¶:µ4Í—ÆbWиú·kÞsÉd\̽öãÖð¨‡Õ¸#~úÝÛˆ%‚¯qu.,9K3±pá~ý

TÖ4Ÿ‚úG‘Y퇶£Ý ·Õ"‰9סÑue^c¹ {hN>‚¥šè‡“¹É¢p¼’úäåÞ=iíK’Œ—BÙ‰ýÇÊèF“®Ö¼ÍJ•ÇîœLÕ(óè'‹ÀH+$Œ+·f#üjôñC{Ͷ³\úwüëÚKL¤òl\aRp¸˜?œ¿vGì¬O9™;ŒnŸñŽÚøÔä¨`ÍÝìÙZÁŠda@aµjÚt&$w±Z Ýõ¯¦ÎüyÇà)„ïT|]€úøaÄpî[@š‘I Æ9@ü|¼‚EÒB>‹E–Åsˆ“B þ P—ŸQÓ˜±$ZE×46Ñã Âü£jÅB7®-0‰#1]Ö«X$,ʦ˜å0¥ Ár0ÊÓЯÝ0…rÚ¹þZE1Ã9Ñ^ÔXy^¯ÚˆHpo¹ðﶪ¿#1óçE@Î ÂÓ»¸#Cc‡á»GZòÖj'Õ@¿àhkˆ/KɧË\‘ €ƒˆ’™:-Çé qRW­ȽŽ;½w"y È­Ø»ØÀòØXø°òða h”géÒ±æï¿‡øTÚ³V_‰³ø G'@L êš¦|ØÏÁÀ}±¡ ¶ÜA~ÀË`®Æ\ñ8q"Â~iâ¾¶ôÛµŽÙ'¨#¬õ¹˜jTýûbôŠßÃõó4þJ¿i!"%%#{««‡Ç£vW¨Œæ“n|Rè×%–‚‰Lü©Ó±ñÂçYžM†ü÷°$ÉÙn3ó¯ Å^]ºj÷î’ ó$U3–j°f{íµrΤîc¥" ~ÜŒ8ƒH§Á}5ÜѨíÚ°À7•Ù»ˆŽ ogÑNôƒBÈB“ï•Rán·{[–ßÓ…qU÷L€êm(;@\#Ñ èh_{˜’(–q)4ôðg¿ÝTóùBuTTÁâšéFˆgºÿö¸ýeÿ >°h‘½pÑx7{Q&èKS¹ÊhOëðWå››N qÓµÓ1|º'þÚ3âòa¶{%nƒZ (ÈyVŒïy*Y’ÇËg¹ï̾€AÂÏ6j®MŸsÛµŠ"+_ddŸ VXB‚™qtOPàÁéS–søx‘ ¢ä¬€¬–Æ€20b‚¶ÀSã[¼Cůˆ µ`@ˆåó¯Z«^{'3“øjζ4UßÀ™Êl GÝ;Dz69” Cdâ’è«÷·S'ID1 ¹\ëù¶“§gä¶õtñºL½¹ZÃù›A$‰­Ö™ã¥<q`«x¡<žú©<f!Y!A™1ïbT2 vToëÈŒ´@%ÑÌñ}€Ýw>©VÅ9†.Ÿ.ß7ªtŸÏÑ6ÙñiBáËà-ýÿ×ðÁ ÆÙ»¦Pw!¼6<ô5«™1pu^¤îQ츎ä}Êðî¡4ªrÉâ”鉞šÉvµ#ƒª 3lÈœ"Ä7š?ní̃ª… ^×@¿u% ,ÞßUT„ú“IGTDÒ3-ñ®O¤‹±_>Gå3\up:¶0(\¼kÏàäá2­+o¦#gÊûé€ï·ØÑ°ˆN‹…·ÑŠj‰V(—^2ÜÁÐòïJíèJOèîKö>°²×äͰäŠÝsh½±å­nÉv(*¯†Ó,ô0uB¾»VØLp’ ûSç¨[@}v©ýyC 6È<¸y‹ƒŒÄ!SÛ«ÓÚôq8ÏW[2Ñì|Y\ _¹íÏµÄØŒn@“s4oW•“ Tcoß`NKSOBw]€tâEÞžq6p#Ø*§Z‘¢ŸÞ)BöÙÑh~ ³¦&ÌÊnò4JÑÙ`8s±¿`Êà>èÉÖ`€ÆÝnÆúº-ÿ³£^\ìvaUåðk4*9ÏnÅvM1çÒl„"—“QUïº{VM¸X+stk¥êïhqßµjÖ"´0 ×) Ùn!*ÉV#zÅÿ¸½Sí,,[½Öp½š‰£ËÌ#J¿â>UÕ.ûÊàlC>—~‹)M à™¤v>þ*úiÈŽqN]sYtŠìÙŽ¾«e·¢Æ2 JhÛÐ/U"`™=-ÑÒsÄ@‡¿9~îNM,¯$1ždˆÏ©ÇhAÄ46`á¢ñ´f‘÷Zu]H8ãø)¤ª~$æ¶âÅ ·r@^°(“Ïò‡k¦ñ¼Y1!¿KL7kYÒkÅÑËyþEeV-Ýuz—íÿ{_l$ Ë‹ljž"2e‡³ OR&D=€> stream xÚ¥—KÛ6Çïû)t´šâ»'o€Mi¶ÑKÓƒÖf$%z¸’Ü`ûéK‰ÒZÖ»( X‚ôç ç7Ã!…d~ØQÈ„€¢Ò9%¨~š޽Ù|ÀŽÏ\g%.ó<ÇíX{|x÷S#PHaçøÍQÒ¼d—0¡Îñìü±ùаØþyüôîc]-ö€›'Ȫü4Í®éI':ÝzrS[—ºÉ¾UW²IõO{“ëXû…î½~:Àú¸ŸÛ8q17RÿeB—­kæ‘e”ÖI‘øqlo/~yÚzbÚ‰M™õ'"m „r¯žˆ‡› RyÖŒ·.ãÞæqëâ͵ ³¼ Â2u±ìÉûžŽoùÁ¸rÁL ¶J«u;â:™=wk¿ð l û¬(¢4²iøŠjˆò®΀ ÞMü(.³_^â(=qö¢wAõNY2šF“·|¸2!#+ƒnÕƒ°Çk„/òndëxßÄÓ¼»~÷Ñ©Z ¡ŸŸ-ö/`‰?ëè¥.P:·ï¦²PÙLöÒ'á®ÔÉ%Ö Ï×ñõ€Àx6T€ÞJ ­zÀa4L àj1­lU:âÉÜùýõš—–îs–§ÑyÒ\€INteìèÝÞ½äÙw}*!˃Qæ’æ³È9JÅʸ[õ òqäcby#[‡ü&žFÞõûÅÏMÏmÊÝ×vĶȧ[M=ô‰^ Ý¥_Bâ—!è2üNá8{CAÉYøÊ*ÄJ­zÀ`>c@ñ2üF¶þM< ¿ëwŸÕ]åœêW›Ç¦ß.~î_|Ûñçz !½¦°£wÉéçd·!¦Ky|–>“@ØZ­zaœ>Qfá-n¯­lý›xš~×ï¡Ô—P7µÿÄövºè†Yvaì‚ô:Ùeï‚,3 f–üšþÎÍ ¯ ¿UŒ’§ d‹ä[Ù*òñ$ù;¿¿G¥GºíéQý±u]è2"ƒZÒëßQ¹PìÔ”¤œ?Bz ˆ·6îV=ˆ|¹ fOY$nU뀿i§ywœ~޲T7ߌ¦èó×…ï%eêIõHǵ ó×ÿÿ½DQ½%ÎEü/œ ª endstream endobj 21 0 obj << /Type /ObjStm /N 100 /First 813 /Length 2082 /Filter /FlateDecode >> stream xÚÍZ[o¹~ׯàcû`/‡ä"ÝÕ^´ØXÄ[ mYžXêJUÕi}¿33‰ci½ÒŒ”Ä€!j¬Cò;ÏC)£¼"oTP6yÅÊ;£¢ 1ª¤"y•U F‘S9E*2Ö*JhCQF›ÑääG´Ñ)ŒA6²] ,?…à”EËÇ á’²¬(§ +K>Ž,~rò¢ì "˜ÄYec„†H˜Ä5h!„¿”’ò˜*g¨"S'«¼W@FžÑ(….œèâœÉ М7¤‚E‹É½@ÄøýDutqÌÃxÑxð{Ì~Ä'%=€hI1ú眠z“ñL€¥ÐÕ[ôcá £@‚žÔ² Vù˜Ãˆ= á $‚º`)@ =bjB¿(B ‰ PU òó@$„Ì#¨ý“¬ ÈJè—@¶@Nˆ!cÜìàel0YdÂ9A% ª0L‘€—ÕÅdÄ  lð²ìa'_0V„â„uã,`Ð1/kŽÿFÂ$DÐÝfƒAŠ“å‡IEu&bÐ ¶…Ybî 8²—Ÿ0`SŠYŒ 6‘ Ø"<$‹QI´´1h²b«€š)€2y˜ašÄ2–$EOà>eèF -^0µLà‡@_v" ãÍžiôâŨøù¿ëR?MîÊQñ}µªËU½Åpð¢W£âU¹­v›i¹?hþó×òv>ù®z§^Ë?X´ÏöÍlÐSٮ㷫U…q^Ãñ W”On>có™šÏÜ|¾}ýõGXš¾£â»js[nÚyÌÁ2­Õk¹†AÃ8XÛcdÆ3Œ£¦Ä»ÞÝÔÍ8™¯~ÁhêÅ U\«âo¯þÜ~ün9™/êê«MµÝÎWóñÍb¾º½[T7¥^•õïÀœŽ'{mavÁfaÎÖ;MâuF§äû YNÊélQnÆÛzRë夞鲞ýOOg=¹èuãñ¤@Qdž`úq·©õŸªÍjþËøÕÕzSý 3èjs×’w¤%¸b “~€dÑ:×Ò¶.׳r5¾[í†!‡ ƒ„$ÍE>;á¦ÀYêd³œër¹^”º¼Ý ³£vQ’OÐ)JäLÙ Œíz²™¬'ãåô~Èê5QãaÅßÿñO dµ[,Þœ%â‰4‚Ê)D]Aˆ!kÂ,鱨K¢Få—ÈÔFâeÀw~ÿQ°$èRü´©¦×%ˆE$ûá¥*~.ßÕûae/Ä9Úq6 q؂õ¡ÎvM Ú¶x]ÛØ±kÞM½£R²^RIR)À°8Ó‰¶;«ëõWEQn·zs†?cÙ<'Jñ“I³dNã5»ÏŠÂšÔLýŠg« ‚²˜ßè&îN—;ñ¢â®\•›É¢øãõuÑ¥¬Êಖ ®ej y>Ö¸îæõlw£§Õ²(—“éö œ ¦¾)A’dS,Í’,a6ÁÎZ°‰³|§×³õ7×ø×¼Zýᶺ_-ªÉm‹’`°œÎ{á =ùgP¨K±)µ“"µ­ë´I½ô?ó»jçt·®óª[Öeu;;/o¯ðTm‹þäÁæ±%x“`Qåêà³€YûÈMÎgÄÈ„”—.‹ì«\Ý?ƆDãÌÑĶ'‚L/“²Å€å'RÖÇiêQúú²ðÛ­ß±Kç¤2P­û^Õúƒ¢þx-°'Â^üމ…àáÌáIÊ>Pð4}Ø™ú_£RvªgUÁЗÒ—Ó÷X„-’C~²úyÐí4³zàh(aŸ‹à†qüosq\ÉË*–‹K§*ö±2”<·ve·¯ ÓIÊpØS†íW&¸§>Ê<âܽ`huâØ»¼&llXY‘±b“â-%„7¾HÑV¬Áì¶X.ÞRä·¶&%låõEJMÙhжg–ÿ4àZâȱÎ,/Qf&ÔJ¾y¾¾‚Ã^Žçü¬¢Lä}[Ž~˜-G×sH(ú²_ 6j:pUÞoõ¬^.ö(ŽáYQœÂELÃb_üD¶sŠ.ù}%“¦dr—Tòã:íü•LJò@%ã³2Ñ|PçÓêñì÷ËtÑÕûÕMÇ%Ž ‡ óåê‘ +IæàaÎô”C¨çd°døð¼Ç÷Ñí!qÉé™@‘óþ e„%eCÔ6§¶ã¤Q‘õy 4}ç'ÍÛŸmõ¶¾Îb²««+ÔëEY—ý /ë½&,ƒóA3ˆ±!høaj ää¤ûÈÞŸð‰‹æ&":4–¡Ž@æÙæ`¢ƒ½°äÔóyí†ÉðÚÓrÙ¸ïñ.9ËnÛǺÆjÚlHy‹}Wnî*ÈsŸ1l®nvwÛñ9g „=`Ãó൉ØqeíX®zÈc4ؾ\ÍÊÅújSþ{Wnëñ™ç.„½UÁ–‚–{šç!ž†"kO8Ü“q9kŽŠÉž•Þ9… ôîÎÙ;ýÃ{±¡Žá¶äÒPÇèNø¨=Ylîf´-u­íÚ.evGˆäB×r×}•!gƒV®agn‚“«0šB/~¸1¾“ÉÖ|ÐÛ6¤¥(p>êåÜÒjCñ³¹·(Bò(Y.CiC ¹9zÿ·":@¨o ÄeÛ¾uB¨‰.}‘«#¢ 洛 ©»YãtÈùR—N‡›EpòN.üÀl<¾«"k4ªRá N®>ôB±^ìùçÿáÜ:æ endstream endobj 152 0 obj << /Length1 1937 /Length2 12583 /Length3 0 /Length 13777 /Filter /FlateDecode >> stream xÚ¶Pœ[Ó-Œ»»†Á݃»»»ëƒ»ÜÝ!Xp'¸;Á N4¸»_Ž|ï9ï÷ÿU÷ÖTÍ<«{íîÕ{wïg(I•ÕEÌL’ö®Œ¬L,¼1QV ; %¥:ÈÕø·Rèìr°çýAÌhâún7q}ç)8ØdÝl¬ìVN^V.^ Ïÿœyâ&î s€@ÖÁè‚@)æàèå ²´r}Oó?3Z+ßË"v@g™‰=@ÁÄÕ h÷žÑÌÄ æ`ºzýW~+WWG^ff&;&gKAZ€ÈÕ   t:»Í P4±þU%@Ý äò—]ÍÁÂÕÃÄx7؂̀ö.ï+ÜìÍ΀÷ä5y€’#Ðþ/²ü_Àß{`ebýO¸¿Wÿdÿçb33;G{/½%Àd (IÊ3¹zº2LìÍÿ šØº8¼¯7q7Ùš˜¾þTnQ˜¼øwy.fÎ GW&í%2ÿæ}—%ìÍÅìì€ö®.è9ÍÞ·Ý‹ù¯“µ±wð°÷ùX€ìÍ-þ(ÂÜÍ‘YÃää”ÿ›ònBøÇf tp°°°pq²€N §™óáÕ½:ÿ4¿Wàçãèà°x/è²¾ÿ ø¸˜¸®În@?Ÿ;þ!°²ÌAf®S %ÈáŸèïf Å_øýðAž=–÷Þc°üñùÏ“Á{{™;ØÛzýCÿó|™5äŤÕéÿªø?>QQO€#'€‘ƒÀÊòžžëýÁï¿Ã(›€þ–ñ¯µ2öž¿Ô¾oÓÿ(vÿ»hþZÀÇRtxïZ €æŸ&×gá`1{ÿbýnõ?—üÿuøQþoMþ¿IºÙÚþé¦ùÓÿÿq›Øl½þ&¼7­›ëû(8¼ýÿ¦jÿZQ[óÿí“q5y{KÛÿl"ÈEä 4W¹šYýÕ+Ù5þ˜1[=PÙÁôÇ¥`deaù_¾÷Á2³y¿8\ÞòOð}nþ;¥„½™ƒùÆÆÁ 0qv6ñBx?âwÄða}ŸDs çŸ- `f²wp}_x/Î`áàŒðÇyrr˜Åÿ0ý…xÌÿA\¬f©Ð;SñôÎTúâf0«ýƒ>˜ÕÿAï}ùz¢ýÄÃ`6ù½ûLÿAïÌþƒ>¾Ç|¿Mìþaÿ±[Ìæÿ‚ïjÿ‚lf‹ÿ@Ž?ƒ›ó¿üï’-ÿßã[ý“í]³•—£ÕûÅ÷ãÝú|—nó/ø®Ýö_ð]¼Ý?ð}™ÿê}þ˜þIöÎ};üËý.Öñ7ç;z‡ÕúþÊavú|ÿ¯ÒXß•ºü ¾pýg'Þ¥¸z8üËý^ˆÛ¿à{!îÿ‚ïâ<þlïʽþ‘öÎõ:ÿì¿ÚÒÌÍÙùý^þóÚxïÙÿÁ¾€@O ÂÒ3¾ëúÎûZBÆÝI9Ê]­ ZFŸ%ç.·GØTÚ¯ÙA¿œoERGûÑV·%hn„—I^|ŽÚaÃÛ“U:ž|ŸUgv;~Nã M‰4 Ã1ª ÿö}qòÕ ´lï‘¥üâ䯢\€yïñMʳa°be"ìÇ®ÊﯜrˆÏ³Œ±1ú¥ó”ù¦9 xd0®ŒÄpt瞨ó7·sySo$²‰ô~DZìÅ>ºlq ÞkUêl.½øøºxÄ73T>¢ûi²¸‹>e%1¿s¹"ãG–C¾%-Èiâ“}RÆs)gÈ ïÁ¤èÍó0Ër¶Õ4›RPQ“4Àù„R–IY$×–åü^ȉՒ´ÁÍé»ú>ôŸjôÐ3£>HŠL«]!5S¡¥Îëªô‰¯òçæZ<®¬çaͰ\³õ4•S½¦6–¹ØãYwËNc$üz¬»Õ/å4UiÓ†=橦*ÿ+ Í™ñ#2Òs`ŒÒJȨ́Ø7-÷µ“à#rwFáªÝé=Óùm;õ2}ÃÅkßl«*Â`ñ¢MXÉu”$aÅÔ£rýöèæ ~?¨ô2›8¦{°GB†ÈÃÜïæ‹o:~¤d›ýë•NبԳÀˆrnˆ¼37¯!D`u>¹§Æ¨T8ÁÅÓ˜¬DYð®.ÃWmeÝ IœÒèùî,åJçé¨û”ÀÒš©5¤e¢Åó¯Àä{¹ézd²{o[{ÜLµÞ#ÜNÂgÜ4ßéî.¦‘„j9Á9=!tãÆìNbge-:H£÷XǬ;ºOöÊÔlÏFp0Á|¬ß weÉa>¬ÄåeÁ&Aç_)µµ \§ŸÍ£irÉßkøvðZagÅ…m§6ç… üðŽqr¤„9M‰º6&¤ˆãÉûß_Ò[–YéÔþÖš¯•‘Éaûy@¥2÷Û„Ú^ˆ¥¬³ ±ŠŒ õÌT²ö‡èÇ åü‡ÆìôhÛ58{MÊoÃSŒ¶gâK}á9‡ÉþžPœG*éÒ+%…!.z·S®i»XS)ž»Èå²åËn•ßFVü¬íÔŒ„yÁ¿7“Gfʾ%H\3Qæ¹Mÿh¶Iï™{*»’Õ¯‡É ‹Ï,è"Œá‚f5p=§„dN/úq/N4Bó¤\Ó¯Tðñµ˜=ó[¶7ªKúïrÿtïl€öCÎîfäQDD@»Í©DWѰs¡±þÝOÅw’}©£AœØ Ú˜9 ‰üÝKÆ»TßïêcíØQ}ɬ‡œàISöø¼òpä÷?fÝÉ¡ò#æ>Ü*Ç23Bc_$¡”~æÍø ýýαM—s/ÌŽa}ÆÊ(Ë÷öŠ„'Œ å%‚ ªOˆúZË¢AkµfÒ-2>q@Ö%й¦ÿ=•»2lÎçfåô„¢Z;ÁéËg qdÛÕR)‘cavB´ãlœ™q ƒkYÂ:×g£">±o›%|gŸcâ…;áÀ>†Ù#ö«–íH9€ÞÃÐFÂôÏuv>‹»”ÎH‡ý¥unã¶å#ÅSÕ’4M›‰/º–!Ø/Éê[‡Üâ…ßû-RÙшZöŒÙ¥¹I§ HÍa̸÷ð—P…|Ù[m0­Ï™}Õùî¨ÿµ¦ zš¡wð¼gMº&ÁòÒz²é2«°ì©<’Êç” 4NqŸRxÉýÚºÑMʧe³ K`…´At=í X£SÉJ&~qd“$g/Eó /¯ÉÌ…uŠY+þ‡QAë§Ù ® è~ V“ Ê‹ßú?V6|5Ô:_o¡#¹8Obóè*ðR¬v;?é]¡H§Ï—CS¨î{±„ªÙ•¨Ö´PMòïúäŒàÑYÔŸùûV»êüLåÊ]FTì:‰‚nqyk‚œßMXW‹ ÁÏÍIÓvnšAg¢.¸gëü;éÏ9Ÿ5ªbMœ‚ ×›(tξ\¥¶wLp³tyeÒ‰©¦o6„õ>eF7óphóîžlœ×{–Ô¦ËþýaßÔoI¿Ë¬¦#z‹ÊË¢O&¢BDLè,£mMB†OkÎfâZ– ø1„4¥—&w„ÜÖÌ„«ãßN2n2£ç®™å ƒÛ»`¾eè„ÿðWêMâž8Ãq0UÄqam±kÄôçµçÓÍ ^}JÀ1»ÐcÙ©øêÑDi·|[ðqê“~_º !ÒÁ­=¹`£ršq ì *N˜Œ…¼vì­^ûpo3ŠÂ/¨ôÔÆèï¥%âPʶ†šŒœþýû­hp!‰mszXŽ¿ÓJ²{µa¯<9˜ÁÃ! IEÛnxk?o¾ oËßüÂ;ôûeA88Ḧy„«ã€=0`«ojÀÁÀ #EV#ë{æp@å©ÈŒØÀ÷· ybòdLbË7žnNMè¼õ"©!„Çñö£! ¾L<>to#¨ÚË8h/°ÝÌAHbuv̵1XJ‚®{ƒû±¥ÆžcðÐ8ÉNZw´c¬äKÿôIœH]£óÅ òF3ÿ.míÅ$.¸CþC/o½Ê%7ã3ã‹ßRøY·JŒ²þV¿í`ˆgí÷¬'u ‘ÍÀKÅeî^¾D‹AËãk#Ÿj—×B=œö k]X$^šè®àB9ÀbÑ!t¾ë‹âz2ä—èQf¥T÷›êŸÛ4Ó^<~7úõ¨ØmëçÌaT—åÅŸaÕrC •œN=¥S·öÉ,Wâ Îp„ 2{–•BX¸5~’ðjyïýQ]\ÚĘü¬-Ι ‚þ…Ç3]5[dV=ÆØ=|729ÆJP¤mÊæ9`ûSBýX-UgmR<+øÏÓ‹K8º>«}œ†Ž¡¥âóÍ ¼›~°‹0²BÁ^~ª|>Og~úö!…EÏCêv3»ò …ÕP’ ®—”>pÏcš'…ì‹)¼n-‹ƒ¼Ëæ^³ôLux’CîRÂb›­LO¢TîÊC->¹5uI‘†òvÑݰ§á«˜•=ù§†‡ãÑ¡„±‘‘W·6 %Úìκf¨ô› Rñ¨à (Üõ£aræòjB| º}Ê¿÷%W@úËʨëmµdÐ4±éÏd;°sR©Jœ{¤£5Aô ,‚e©$ÏÙB…ÄâFO¼U#Îïâ_@T¬öSgí;Bü…ÍCw#[44ä™ì±Ýo¼åREØÇiý¡½ø2o xO‡áš¤?"/¥øè>ºwØ&AÑ!×ìÁO j{p·—ò䣃H œqI-b_éÏÅ8SÛáÌdïì¡Ã°H+ùFÃ#¿H¨¤–øÅÁ-ÅBž/b9Æ‹{PI¹ ídW9ÈéÇð²'QÖóæ’#†âð Û–ªV˜×k ®ÀÏh°ë~zUÖ>ø,Ä·‘šOyÌ®CñZÔÃLâ…ŽT-dsÛIHÙ»»~w¸T÷Ø)u Wô D I¿¦rU"ÈÌ€‰-³1XÉÎXfpù‹Y6“µó‹íBqŸ±E®TñÜœ#Rtˆ8ƒ O‰§4‰ŠüY÷NŸ ´Ôßé³2„Ed@G“;¼œIÑ`òÙÃ×øÁ!.¯^ô¾9¥ iô$¢õÄ~ÈGü]uNž1ž2kH´LTxWš°GÌË,¶ÅǾq‚–K“A)Æ 'w©êލ›ºWËæ¶Ô‡¬àú¼ªÑ•ómn×ǧÛg8ˆ"Ç‚©0F˜ÎWœ¿\ÒC‹ùFŠ’8|]ÔÖÇaíVêZ‡s͜ŠHz~°JÀÓaÕ?šÝG¶¯Ê`p/‹œÓ'÷üh¡<# ¾xy©L1¡óHÒ(I ÕÖC&ðomÙ Ãw¥RñÁhL}V…=½MÛl ü-¥þõ’qpxðï.™yÇh5óœÚ7Ÿ˜Û{dèZGì€=ƒp ìo#¥Aü{գޡ%“§b{iéà§‚F°7)Iåå’W`kÁOE­ß÷ø1Í`çµ.ÕVÀâ$Rk¥ÈÝ÷ãX(,D!‰ßXÙœfœñ¯›‡î] +w7§v¡fvšzôöØÉ¡B²]Ú3 ñ¬Á[3FlxÈãseNÊ8Npm<´‚ä ¿À×N.mzïb‘~ÀšAò®F•úâ¬GµÝV¢ödtäV¶e!ô Ñpš2bâÒDòÃÈä &Œ­ð’qÅ_ÙI¨k*©:-h½’¿˜ ¿ Ó¾¤B‡¹.…ž« &»|,ߣ`™C†M÷›#Ÿ$cŽSd\öïY"ø°y§§†d[|[YØ‘eû Oì-v˜ÌïS‚p˜}qwËvscR4î5¦ÆÇ“ËØy™úô †µê<¼eÏ£Çã˜GáTo»ù3u{핎à³è5i8ûZšâÒJçCH7ß/ã¦!cÁ|¿…ÂéŽâ¡\»wN¹ _uN[“;†woÊ}/ãNâãúpí÷“«ç%ÙX§çEö:½†áF‰_Ó ôÝ*ÛžH®Ãºž`,ö¤¸Ùq—ÕÂÙî‘tqÅà–ð|Q €j*mõ@HåGÇj›ãìÛ{=¨ J61×àô^ÍU‡Tëôô¾°~òY RFqøaSš)´£= ÓÖƒô¼HZi•ÿmåûTÕÎA…x¡‘Î-[Í,W‘[âùK4iáY?òüª‰NÌ€¸õïøé¶›í”æbû‹Å®å“{RÁ–ÕEPÖRèIœþƒs6D9åÏ–3‹. ÀWBÍ’;½X‚¬Ïù'³ é=iB¢&ÄÒû³wìËçìV *˜ÕÏà³:âz­:«î„ÎmŸÕ´Ú$Ö[S»£mç™y–4c&ó"=q°Ä#´eµÎ"äÍ0žæöÂåE>Å1ž’²TÞ"ÿ@!“½¹í„¹X׉wƒk+{Öä.¾—‘£ˆá›42&³šû}sõ†Óýu+P ÅMR7¬‚Ãû â”g&ªÙSaw"‘Xªó»)éõWÂÕû–£`Ú%޼~VVÝæè# UÙÃÞïÓÚpÄú’é¬+Î ºo ®P%H¬JèµóQÑ©«Ö>½¾$w*(%-ð·ßïôœúvœŽ/àI’bKÏßë^Ž•f´k Ücà³}ûI@BŠPªL¸Ù¹f±Žâø…‡¢¸eº?÷mn„ÂÅPTˆ„ºŽñáÇU™žÍB¬P¥”Ýéû³×wæ4¶/—AñR Ú†ÂV“ˆåýj‘{b‘á ‘Ò¾ Ù]ÆÄŸé4…O¹S %Ôãñ¨r¨õæ…Ü<0ö$÷ÓÑ4ž©±3ðV˜$%i¶MO ²U•«3´W°.h.ûx¸of(p±ˆï ‹œºÙ@ßë…¢j‚€¥ôXû‚3Ö;>é©Þ‚E˜¿Å «ŒpNJ”t¿éñ‰D´Oº'‹n6 ë „îÏqíu¸ö>Õ@ó=XJòŽiò#:¾²7Äé#;Ê%üüxSðáû+RÒÔVBXÁ‹`/ו&s|ýj–]`|g²5QÓõ- ]¾(½¬j¡úÇ-anT»g|¤¼ÖËá?úŸ€Û-G'‰~ú‹>§%9 i_ :„V ¸ëæ_¤jv¢ÍÆk^÷\KÍüh_Z|bŸ5Ÿ<@ªxZU;Ùt’ù¹ûBå"wŸy¸²‘@W•Ldu¢K·Ç y뜛ô‹ûåÅÄŽaÛÑÛ£Ñʸðã›Sä útá>Z↠­^³Ï¡Èž-›8}Ø:÷u-dF©I>¢ëÔÖ¥¿t¸L-Kª)¹Â,÷À3jå ÀÙj\?E>\`V倅jÏÑ‘/›4UúáýJŠ¾Ì»å6C6…3ðù%¨µ-ˆÎE–´[Íãõ€P”­fœW7Þ«ò¼cUpû~MG·ë1ö“û-˜Ðá|îI†FpG™Ù²›WGg‹Y¸s„½[3 òªŽñ‡$V: „Fî¿OÓçÊ0/ÍTYFÌ™:n-Nv[±:EøõB·‰Ûrûó„áW¾â¸ŠÔÛ _µéþ,-Ò´] fÁåh6…’Z$Õg°É;àËʲxòh©R1”A Lsïßy²°¡¶ô?Ša£ÍµT©A™½·>éEA;æ("žHíÒ `ùÍ»¸Êêë`Òö™gH/y:(76O8á3xÁø#¥ƒÖ]Aô[ÐüöÎ$*54g‰¨¸UA±¾¦÷šÙpǾL;´Ô\˜ÿÇb8žRŒpj óóÁ1©Q`pC¼ÐbÌ.­ÿ4Õ:@¦‰>ù-…¢t?âÊÖ³ëJ]ÁÙáÁ`‰Ý޾»I:ï×ÈTy¨;QȲ˜¾Mì&›W3Y”%µUHl¡H¦) låò‹l­v„¿V”|ó4™¡«gÞ\7zÅjbiíXW·ÑÂ(ÉÃÏ&™ÐQPØ>Ô/_•¯®íδ;mß«2ÊH5¡‰vBPÂH/ζ8½í×;_‚°æKm¨õˆ[B\ ¨M•FÅ×â¾°Ú?öëù¶¹áŽÔKK0æÀ÷7@=1ˆØ4sûÒ£Ôš’WÃeµõ6Ãf‘ýºŠB¡ˆNgŸJŸeÃ*·`2 àÀÆ Õ„atBÝÒڮΈTNAý”xÓ4«ÙT ;Í>".ð«¥ìò÷Ø#öí&²¦Ä Ó™Ÿ©OÓrè2ñ,XvÏÃìvÞƒ>)¦qîYÙÔô,g &71_O¸oyìPÕ|NÿÕcKIߢC¶Kh'›à‰©Y¤¸ohξ˘ˆl®ŸUùߤi!¶"&ºÃ#K¤Œ¥)Sò*iI‡c,‘Ej"Òâ®$7ù·!ˆ +ë¸$O<©Xã…?šiÏìOF|^>!EÃJW‚9# SgÐí‘P7wÑøî½ƒfÌyÑrêY óqÚcŽüÁ¤”¤pâûMÁ7«ÆX¸nj³ „ šƒ¦«†îªó(Þ²¢ï­kR8¾{–™2"Å‹¿^Û}}¾#Àk½É7i$‘¿$ÃP}[ñw’¹VÎÄs1(B‰5¹ìœMõ¯Ï(·+(Ÿ÷dd&˜="EáEë¯AŠœ_m©½úEðX#ݱ±iÇjTp=b|¦õ@IRÞh$1`ÌÔ›÷2õ#p¤‰áog~þE fe,`[ž °Ô‡Æ£ÕñB•ÅpÐçc†ŸÁ}-uaÙày;ï´ iëÎáXëtmZ™m¥ÖI’ŠŠsue‡ݨ(\aÉ—ÄŸNähð2øåiCÕÝçÓJR#hø[>6X½D8d 2ÏÁÚ‡Š*Ñ· dvuž€ú¨SYG˜µ$"ÏÓdþG#f) éÇÒ xCIçÑA±¾ÕC9* ÉÂS±•â!!H/5æ–íqX© lC³Þæ1*`Á\îcCÀ~KcÜÚ€acj$:jÏ+´6º´¤-~y›€á°ƒ ¸¬ˆì9»ÒDÞÀZžK0ÊOuä'åK[ý¤•Mb m| êˆÇ›ãg >¥¤å}zÙul%pBk™e¥VÒ']¸a ƒ¨õ—XŠOÎv-á¥áŸ¬²F*Š_êƒi½x)§×6Ts(@›†§Àˆ C•[ÁÑ—k›Ú¶B ¨è‡5pРš—×Ý$%½ÆÚS[Õ¥œþÀ"ÞªËtHu—.L]¶$çck†V›Ñ 8Ú½´äA€¢kT(uè]꛹r¹8¢ZÐY³…ÝN©¶Uô‘ÆÃö{!Nä” Ÿ’4‹µ}:‚àx™‘ău*`ásåõ'-nmmK°“ÕMª8ôY«™ÛÍ×£rõ$%PF–ÑÑU… ÍTæNÊ{†~h Wâ,tÞl_`.>œ5í9•ºK€?êYnyÁEýHÁlºßÕV+*¾á/0´4™åŠÐŒ±>Þ>7¶g¿ZÇn¾RûÅę΄ S¥‘šÁ¯n0(ƬaÓ³3GŒþ¶oä³ñXú‘ ˜²1z°õjJ$U¿t¡é;Zõuÿîw‚b?/–”vÔïRB¾'Wˆ:çM…öðþM¨d;– ÉF»H§hDåi¹‚lÝV/çõT•$rÎoÛ¿wK3íd-ú™2 !!ävf»t„´d­­övw´´Ô OK÷ÌSÎÜHÖ½²º*CÞL)K¨E¤ýàZ‚¡»q1Å-öVù ø¬u¡KøwnÓòÑUáðañgš*›vç Åg}ûÈè…ùêCèØÓOºh°xÍÁ7õL`¬ ‚—šu ùQ•°yÊ´³hï’À5ñ± ª°ó?º?@J}||5üébEè•çÚo9²Û¸—klX޾Z vx;µ7ä¥]#µÎ3ÑA{¦¬9“à 9™òtLYòâzèX>¾‘ 2MøyÓ­Y,øÍß 9Û< “zÁûƒ¤ÒÊ1ö…ÚÛÁÃÕˆ {XÃ2Îú/!ó 4Þáøu(ðþœ½gb]¶I?9˜]Žý:†^ºt•0ó‘!LyýHí_±Ëà5ÖЙžÙš(u¹?*mj<æÅeÄØçôðèÒ=É%DJ®Óî>9øa”uüMKçÏL ãã¼´)ë!G°v’¤¼AÔÉqðÀø°èײ¡¤¦€¯AQ›Z#ï—ð;PÀ¦åzŒzsê(­¡ä *‡¦ÉKï µoJɱ£Üfÿ¬­^oµW¾Ÿ|¤ÂuI$Ð+Þšƒ“=a›è<+Á„„ÿJÊi^ÃÞoZ(}ëÃVhðé WŃmÒò^¹%ÙèO#ìno5ˆ`*I'ä’K¨xìgäVa¤0×Ú¶ ŽÊ"’á9¶O,î~„ÀL+r­o2¤7¨ Xn"®#wøÁ§¼BÑÌ–äâ#à«)€•[§/rvwzø¬ ˜9{ׂWMמÂçÓ¿+vWLªö£ÿL/½ÒLUÄÜ"˜ÏºÏ”)€ç©ˆT}èj®ô0R-Ù|æCóAE”ÅÂ¥Br>çè¥Kn ª~è)w>ý•ÿù—cöÌEŒÆ6ÔrmoŠî+6Ä¿ór¶¤ašµ®ñ¤Ô‡>h"š^ÊdžÇ'#ƒïÖš¢”f~2ܳò¢ Ï%‰þÇê㡼psÇš¼(@(žÅÏ•´Ë}ýe¸ƒ­·Š³O×#ÍD>_ë!¸Ýf:œ¢ßFù®)5Á7!¸U7I3$3QÈÔõ_ÙB¿ž MiøÇe|úòÛÀºÏ©¨ÕѤÏ4<ò°!Ψåru„ÑÓ>—ïSÅyˆ‘j&ÚÊǶ„ â%ŠQÑ€á¾H ç¼±»}›KyûEàM U (a0šå‚ôÐQ¸­é ±å,ÚQ¼±eÀiøÓ©–í 'C¤±y:TäõÀ†2H×¥žubéõÐØ] ñë‡ÙSÕP(ØÀºPë}ת«·Ÿâ ª ûý]º>LBTQúÚ±sÜê?ÙÝk =›n(5Uë†'áÂÕ† ‹^Ii (}Řd„!ŒˆoçÍÚr\bç(Õ]&Ö Îñ„~“ X ØÇ;UqYÏÑQqÃæÜA`jÂóîºñy؈[¡x8å×% ð¦÷é† ‰3‘Ó*×DÞÉÄ}0å”®PÛÑ~ðCnB¤ÞÏ( ŒÓÖÖ2×ÞR=¶Õl/zšYYJÂ5,,€qUžÆ£·.ÚáG/A¾hÅq7Õ†\ÙµC½(>ûH” ÄXÔô–Îçm?¬Šïc,SèôÔàå_;˜ésRxñ-4õóÕ“Õ Á,­Ä_«€ÏØ(&zE´Ažé-õ‘èwšƒ±-/ž jzçwÎË;KJ&N?½YUý´÷H¶A$0ì¿pÊ„C _«—èæ¾ïK0Ve`TлÈJøŠ…†‚[Èq œ[p5ik«²Ý±7„Õ€Âý\‰Öç·™iöø¡[\Ÿ{3ѹ ëöš‡ýÕWD4˜pzäÔ‡zÞóŒ>« ñ˜´áˆ­%ä-ÉŽkÙâl ;è\…:i"R­ ­qÏîü§sÉÌlé!Ø  ¦¾6ð˜dü_•9 žbQ§àâÈozŸkáj¬W½ûÆ‚›ºýð‡órýt¬Ýî¾½¤¥WÈ OIŒÌhíšKé?ÞžqQN©suü椦͸Ð);bCã}ÐpÑøÀÂ}ÖU¼ØDÙŸ„?Tg¢ÓdÑ‚rû$‰ªòyzŸEŧ•QÛî2I"Û·^ñI¿T ÖÎíI¨:Êsf심Ù\n-÷ã.H@ÌívS¡p†ò“bjªFQí‘Þrå+4›¹¸1`K_L­cŸKç›EyšËµ½¹0¾éfÑÑÒ¯&Á¬É¾æÎ¬¸­›U4lÝ UpÏ1Ã[qì.à:uðW±„ׯE°Ãý•@K+g¹þ¡-¹ΫƩ ÂÕ¡ëo¢'ö­çÞëN½\l¢¸ØžÓ«°k/º¹¶Ç®ÑÖ¿me Ëäú3› ÊX>z“`Ú ~+€S~©LPß_Ø$?oBe!È&ªÅi¦ï«þr¯‚4êe‹Ç­DpÎ/kŒÀš0 ì’Kc©ä5yâg• å]ÔÊAÏŻ؃Nè¹,ÕÅÔ²ÊÄ]g.‚µ4x+È ¤ýbè¡ Úâ_~%¥IdÖ"LêPýÑè<ç®}—˜Í°zá· Ö@¼Èú;<kgm©ÜoZº_'â—ÒPб¡cèj½Nù¦î×ÄŽ˜Á™)ÈáAº°õ:Ïw›æØj’•¸[aÓ.}kèjÒKV²t£vý‘’©ËÕˆžÄœÍÇû&Öô#¯÷ˆ½y¥ÝÜèO9PêŠWýåI-WîjV~¢‚¬¿º%G;_í?^ÚãÉwçƒ GcT|´r¼s··ÁE20h`ëì..mžÓ¬þ4€@âV“ÄÓðÕŒï¡}ߨâƒ:÷ÚÑð–œ3B¡„åRt vЬ.ŸIÓ·¸A\¹f H"«Ê*h£WjŽà×ýåmh.%ó%©)í{Ž¢q÷Ø Ô4:•¿€1ÉsYó7n¹˜—ÈŸØg—Ȳ;ø5yªMj¹|[ =ö’:.ACÝ.Ô8˜˜ÄçQVè9C¬ö~íä;'ýn-®5YÉk[RÈ$Û”°ZÕჃlÔ­öç-ýþ£DâUõr«SØ­Ù 23µP²wxÍÕÍm°¢{G‚ªŠ.8Æe˜zèÔ©þNx6È´í·†Òµ®{¦ïçRœ÷[ýaÈHfô³WÓ/ ‡K¿RÔ;£*¡¸÷Vr<V"PŒêeNa„qÝãü¾/ú„LþÄ#¨ÕãtW8:*‘—Åý½b²ki„ϦÍO|ÈÁ qo¼ëŠ.x~S3 “Ù(1Ãw:í“mèãëm¡ _]¦=|{$/gÚ/ࢌM^ÇR 4Å}À̲L0ž*ßhø4dÕ¹çf6"fÃÚè$„‘ˆó-ÄZ<˜;ÂHý˜®çU±‘ãcƒml·tGêz— l沬(tB I~ZmH •BB{‚ŸX›ø:Ÿ˜~ü–tŸd„æ?ÍÜö÷o¦š”ÄgéøÀWB¡ÒaK[Ç)6ž1H(ÜÂñ‘N“uæº ó¯Ü+À$Bó‹Ø,NžY®¢3$ñºž1µÜd=YÎô<Å[Ô7ÖâRÄ×µÁs¯ˆÉdsî²:7ä¡’þÀÉeíû¶5DžTðÚ£,ÒòŠFÙÚ_)¿¨“è¤^Ð$×wÄkưxb]ž¯ñíÈuNˆ{ÁXLÒ”«´ÏZ“qø†£…Cmµæo1Âì6Ðp´2›¯«¨!§ñåÏOŒ¨Ò+ì~1[ð)¾žÈ¿ çÛÄW"‰°ýâ«8¬Ôm°4 %nñ597 °óͦ#‚«Ó] ª$ÄúI~­]ç‡k¼ää(²yÀƒÃaÌ+Q ˆcÿz+ͨBà©®jœ„ãCë^ÕE²Eïè­ÔØ^;ÐC|m x ùF ”iï…¨~eZuñ²Îí­x Õ²0E¹.á{~‘íÿü´AKÔ˜nE¹/P½³øû¥ÂX>N¸j›ÿá•w¢5ÎPumK¦8 +„0Y¿ûkxoö‹Kdvh -•M§±€ZzâòÒ¡>)Šbç óòêJÀN¯82±~¸ƒ*:×ìM¹NœåÊ´B@œì$Á«e'ºÎvC¡¯Z,g{¾)ëÖ¨ÁærÀá…›sâË‹º5VgkñnÔB˜vTe–Z¿/-Ý…SEø×¯FøÞü¥ ¦¾…ÑÔ´/ì N&ƒ¦×ϺG <Ú‰éy ò€¦ {ª4G3rgjtÜìøâð=ÄF£=óf?ÀU«Ë¿mŒ›a:Í(óTC´Ðš×lZñ±eó¯ïöt㟒ÂÊ×ۼዕ½”²=3|ÎÿxÐó¶vî> Û 6²*yŽ 6¥4æ45®üØçû»ç#¤}}³þíÇþ"‹]­+*¶Aˆaäí)ëê;õ:ßöÚýx+ò59¹¦‰8„û؇>Wt NHàÝBó´i6t.ï'Chóx¦üÒªáO²¤KÆŒUÁMäç“æV[Š3±¶ùT<Ê\yã=¬¥•$ŒüÉ|/¦ËdŒDÖm1¸R"LþB£\V²ÕÈg_ê’½r› ¤•Ë4澜%:g¾¨"·@„Ú¸S̆ݛ²>Ôà–ü¦8`¯‰Ô¿yÚÞùð©(ˆ]Äà3ÓTÞ[æ•g®š¥cÔþÅÈ“ñ¢Ê–"NÈâë\»„k©1Mo”`®ÌÐûxÒeÃŽÛæHiOW™Ï ̦ßÃ? D@Õ“Í«ÚÐð™œÑlîåb iªÔ¯¬‰Ô‡ŽMø§ÌNÂ7¦ž?¿Ý†XÒ]È“ˆDJ<ú†„˾qáîP¼ÓI` ÅCN$Ì©õ ŠqQáÅ×ÌÝ“B”£\®Ïe‰÷6e¡°º:ê.—ø“¨I_£Nšñ1/³§(;2 væ˜á8Ù¨fø¹X†ƒ©-ióì7È¿¶mŒ\Ek›r$`M[1ï˜Å'ÿ¸hVÀn¿y÷”áîöÉ‚‚ÄiÂ7AÜjln¼AC$âëGåµy·#û'"rbÝUïzuèWò0=CŸOhW¼¦‰2ç+ãé<œ-mœûªŠØ/Í3ûƒ'^zÕäI“³ ôÉf«ã¾]¿"¤óÖÛÎþ¾E†H7øÏá Ñv·NyZS8‹¨WY#ØÔ‰,YBŸ³)âU[¤»OmÁ”RÄCV§¥Èzk:ßê ‡wj2…=…•<¦3G‰jê!ùt¹‡¼ ?äRX±Œc”»Úf'ž§e‘¯œíj"EmÓÓ±_Iî)TL¯Â´‘Á5ªP±¬-žš:­"Á ü Ò£J]öÖ(r3obdä äßÓéòXµé6»ÂìòiÂcM1«®V‚Ó™ºŒ’ô†ý‘¼+ýä¶Í˜“k`s¾r¶Ï-“´â2oltyùº7qræ²1(ûCB ¬ª5 ß þ,àŽ¨ÝJ~hZÕº®þŠOüø;Ü€K Ó÷ïTè,º—µ&üpËÄ>[gµ^âƒ\‚NÙ;ßô¦Õ´CÍB!ÒJ¾í\_a}qN‹>¢EéM´7 …5  üÕÑ•ŒA4»êhìéÁN<»¥ÉNömó^xz#$!é­õ׫„[‹ÝYq¯Mò„¢z­¢6µöuö>w–4§/|ÔêŽ';sg¯P=ã˜T²³jÓQšó¶‹LñéaÏžx “$ü”‚–³.Ïdïþ©Ô›üŽS0VA`ÄÙƒBŸëÓ{ð%URzˆW¹ÔÓÕªk×[E~Ô¤‹jVE¢³ °§ž¤¤ i£õ± ©0ºÿ³wijý‚ìålzBvù–µîL¹öìÏÂlŸ'ß¾>ùðãþßÄãS¼Ï„F ø)éDÁhª¯;°j{ôùUšhW ¾âøe\ší9¾ãéWÎwìyø‡¹Žˆç5´Á4èú*•Ÿ"¹™¦ÄæùÖÍõ´ÕÓá­©ذòæ%0ûëìuàö± ÛÖZ6#ÜJsˆ«âŠÚÂD°^¯éú 3yv†ê¶«¶²tú©‡*åô‹”©¹z}«ØeÀÕgšÞ@½z[lùœ~Ïë“f8KÒ€76KÐ…[º >LoñV’Ò"’à{ëÞ{‡ª8¦ØïáørÉlDúU¤K‘y&ÔO/‘y«\¶Ö’©îàIÇoá×G'ŠÓ1(^=Æ(w²R%^~÷ïÒ³.ç-¢-ÃéF>…zä#Ñ˕⺠’ÏiDm÷óëYŸòÀØwºS-¹·²´¡ze‹£îdktZÙÑtäªÁÁn'L‡$Üù©è4_z‹_sVCûšã%’RáÌx‚ÃòÃ"ñsy£7»®èÞkt6ÃÍ9p·’}‚ÿêlS TNè›A¤}4.¶³Uå¢Z׎Úg²;âмÄy]ûʃ‘¦ãFŸ„JlúÓ¬¥]Óbl;Õ4¿¬ žVZ íBD,­øYcš/gžhb¦O™º/ß|U¨43Smäúµ¾4]W(â bDZÆ…ÆÚB‡MÆÆÒûw®f^¶¾ÉÙÉàâ¡w6óID½éŠN›¶òèÓòU»ø·'Ä}»f¸äCípŒEæd(¹/ë,èzÌÝ,®6B÷\± @2°² ùwn†éN¦÷“Ä2eÖþœxu·c1h*è¬èH¸!Ý3•Æn…b–‹·É[ewÿR‡d÷Dé°b‹ iOÇì´¨ñ;m“@&?eßÀxÂ">=e&Â;‘Óéä&Oäüå{ÕǬh4z¡o bQž¿+ù 'ʽÒbü<£ÊZÙO˜^|¡·LJ='ÝÖ=/`ÞØÓþZÄYªr?=˜åÓâ!"Kß—$Ï «Ä4ÇÂ?•[Ñ|Sv zµí ªO‘+x° R*dRò„wwqÕˆ”ƒ[ûvV/kzåJz¬ëßä$¹†xª[úc3õy* »…̈½âC3‡ÃÏ ÷Ìz›©´£Ça1ŠA÷Þy‡4žvC(ú¯ÙË´1o‰ÆÚå«(¬N]Á)ÇüÒ ?ŽÅÞ~Ét¬¬É  Á|~nYãý2ñQ1l{ïhê®èy Ã÷e›w-É´òÒEýæ±|»äè`Ϲ1NÐd›ÀS 8„gûnøTê˜~l¶Ñ2’n^Jèóbx“¡´‰“š}8Î!½ßجÌË5$û5J³ ç„…RÙ~šªX* @Ù䬙l¥æHÂb¶s­²ÙéIh=áôåØÓ6Ü®|Öì‚Æqý€„ɼÔc×ÿ[Ûq endstream endobj 154 0 obj << /Length1 2085 /Length2 14129 /Length3 0 /Length 15388 /Filter /FlateDecode >> stream xÚ÷P\kÖ ãîî4îîîîîN7.ÁÝ4xpîîîN<¸ûåÌ™™œùþ¿êÞêªîý,}Öz×Ú»7™ª“˜¥“9PÚÉщ™• ¡$®ËÆ`eå`feeG ¢Ò´q³þGŽ@¥ tqµqräÿ‡…„ ÐÌí]&iæön¨ääw·°qظùÙxøYY쬬|ÿ1tráHšyØX”˜òNŽ@W* 'go+k·÷<ÿ¹ÐZÐØøøxÿåsºØX˜9”Ìܬï-ÌìN6@7ïÿ A+híææÌÏÂâééÉlæàÊìäb%LÇð´q³¨].@KÀ_%”Í€ÿ.  imãú·Bà äæiæ¼ ìm,€Ž®ï.@À{v€†œ"@Åèø·±âߌ€7ÀÆÌößpÿöþ+㿜Í,,œœÍ½m­ { @EZ‘ÙÍË`æhù—¡™½«Ó»¿™‡™½™ù»Á¿¨›¤ÅÔfïþ»>W g7WfWû¿jdù+Ì{›¥-%œ€Žn®ñ“´qZ¼÷Ý›å߇kçèäéèû²q´ýU†¥»3‹–£Íw œä¿mÞEdV@7+++7øô²°fù+¦·3ð_J¶¿Äï5øû:;9@ïeým@À÷_W3 ÀÍÅèïûOÅÿ"66€¥…Àheãˆð'ú»ú¿Ÿ¿‹À€õ}üج}þ{eô>a–NŽöÞÌÿuÄ, rªâr: ÿ.ù¿Jqq'/€/€‰‹ ÀÆÆÁàábøÿoU3›ó`ýã+çrðýM÷½Oÿ¡ìñï ý÷‚Ðþ7–²Óûä´Ý•‹Õâý‹íÿó¸ÿËåÿß”ÿåÿuÐÿ/#iw{ûéiÿ6øÿÑ›9ØØ{ÿÛâ}rÝÝÞ·@Éé}ÿ¯©ðïÕw²·ü¿:97³÷]s´²ÿom\¥m¼€–ª6nÖËßr­¿ÍÞÆ¨êäjó×­ÀÄÆÊútïÛea÷~ûp}ŸÉ©€ïËó¿)¥-œ,ÿÚ2v.n€™‹‹™7ëû(±sq|ÙÞ×Ñèõ¯)°0;:¹½»Þ‹ó€œ\þ:Qn.‹Ø_¢¿7€Eüâ°HüA¼É?ˆÀ"õ_Äà `‘þƒØ,2€EîzÏ ø½gPúƒÞ3(ÿñ²XÔÿ ÷(Ð{íÿ"¾÷(fÐ{ó?è§Å×»ÎÂÉþ½Ùÿ‘üÕsËÀwîÀ?öïyþ>î?ï´@ Þil<þáñ—ÚÉÝåï&Vÿ€œëÀ÷þÛü¾´ÿ|gïð²½sýCë½lÇ÷!ù‡þ¼Ó!绳Óÿ¨ß¹9ÿQ¿×æü¾€Nÿ¨þýÆòáðë?*a{çêú'ý_èü¡ws×÷ÛÖ‡÷Z÷¾ü,nÖ.À4ë½7O§8¼—äþøÞ À÷‚<ÿ@ö÷xÞÊy·õºüìVÄÂÝÅåýAñ¯›Øûþüÿë©z-V,ÂlkÃÚï¿‹z2íN ÍQíê¤Ñ1ù®¸t¸?¢À¦ÐUg…üt¹KéE[ß‘¢½]%}ñ=n©‡lMRk{ò{6ù¬>³Û†°<38Ux,V7@ OĤ)ºç÷òÁO;ز¼Kž*÷ƒ;/Šj>æ½g¿ŒWÝ@ÙÚxÄâ®Ú^5·âsÙ,ÓG­8Ãàâyª<óìCí+~*»ä[ò-^>"öˆØx±I¸Õìg Y׊`ÙØÔÖÞ¡I°DêÎLD¼…Ú6•øÈ¡½FN'FnOñì ›I‚«Zçþ ŽOlå|–K¨È Û‰*{dz_¢=IØ ­LçAäAê÷2~þà_À,M}â[ èçevó<7ƒ_3/ä“Nžû ÿ©)G¸¯ךz'šÓ`D#f£lÖd90¦'_u†«0Þì„Á K?Î@(ØŽ×ü”ïòAyëSþzl*²j,¸÷ б¹ôAs×=lÙ²Ì8ó)Ö_¾ÇjLá)†‚]#ÿ»Aòñ@¶¸9†Èx…xˆSX-Ou‰™Yajt> As¤Õuñ*1ÿdýLélâ¡eµ¸e¢ßŒ\Ùôi¸¬±g”jUùBRòŒ-»œC'© ;šy|úªKž‡{©jžX0M_iä7yƒp˜ -~…rÈö×T¤íPŠLá&}Ûž[ëü‘†4­WÏê·‹„çzÊ„_}ÓÛ†[:ÊÌE´Ú³†gÊ{{D¹½Íè(Ðób"—ö&h®=¥JªMweˆŸ¼AÞ%[‹]æ›è}¦|îÄΟoU·‡¾+»»,Ò) ¹[—~Z™–œ\ÉkíQ5.öÇkj&…îîžGøÅT2é£E?±FÂQ±p»#[ä‰곫Ʊ0ÛFв¸5Áœ<ƒmáÕZ†Sà÷¥Œ€6#CP_0†{9ƒKam>£|ŽÁç]¦#œ®;ÐE¯")†©kÄ"G¹4GN{!øzq7Wç­%Sݹ!‹¯Z_?“ØÁÏ×),²&!x$DÎÐ!B,"À1=ùh÷é6ŸÕÿ¤ˆ”éµ¼•Ò¬Òÿ·úcâäSfe7*8¤xí(Íêið—PM(ò3K‘…ΗPÉ´¡ü^ðÐÑGõAZCÔ’°ÖIÌ|¨þ•Ù®ŒgJçsÌ$²irâõ+¾º8u€þ¥iÖz‚ñ0OÖ }žÆ¡©“þçN÷&ç7,Ê•dmI}¦êÔžªôyU…Tç†j¤ÓüæÆ¼M÷»¢óE•ã:6ìÏdÁDf™Ô<œ…¡ûÐq‡ë³]°ŒB­ ceÚÒ¸{ßÇð‡xí­›@ŸÀØ·aï‹9Â%ü4ËØmiºUîBžïâ?Ï+6H§œÈ±äŸ¶±À^L·}‘xRbÿe:ÎåR¥Å_€÷«®pøq³²s"`óÕ"cIɾd3“ Äg"¬zTí']Xz[) ½¼—†™Ò˜» Ç™ÔNÌë„ЂcÇ;~À·CÇGf” ¨2.×®@ÇØ ƒâÃM•ÉaÂ2 c˜š„ùÂ~ßžàa³÷0™ÍæR“Rúûz@X¿üt|CdêÓﶪ>¸ÃA …PRõz&£$Š»•ðsòß7!k©n]ÚAï„åû4XZ>‚â}\K®EÁü ]Î2è6.L²øs$]‰L˜ïR$ò·ŸÊ;›Ð —çtó°ðZSIê«2ŸWìé›çÇ ùõˆ˜„‰œGxnSš[Ÿê‡–õ¿IÔ Ùß<ÜTÄ`´Y¦³Nð³?¬È±†:Öý?桨M2œÃòqhû:SÔ>Ú/ËT54n#ó€‘ B€{`ØÚ+¿@ž•¯O ;††ßó¸³eq™^XÍ Õ'VE£ãüZdPqÖ5‰r p¥Ä«ëS ZçJlx¦u^pØHù‡…4 9üö¹KQǾ§$ž{†4ÊåôÅ ïwöQgÑy8Da‚o .13‘ƒÞkHr°N*‚.iÚ›ƒö >d6Ã1g/J°ºiåßÿî .Û]c›÷d"gଣÜ(žm)L¢¨Š*Ðë@´KEW»A™Œ0Éw$!šOD\é[ÆŸ—ZG¦&ÔÆÆ÷ {)Ÿ”æo8ïÄ»B~Ën‘Q ZQ)²¾Ê™súx=wœ[’MÐ ¶*/p.Ï`è€0IJ$ÿÄ7Úk‡ùiÑ!˜F `*9ÛcÐq8°æöôCµÚ¨òðÏGU“(ú 7Kãç*¶ôå7HaẒ,¸òcq’†ãCáÀNÅÇ@tú#⯠†6çdØò6Y£ÆÒä uPGn”7½Æ8Šÿm´Œ6·§Y8î¥Cm„‡ 𾡱âÂ>«ò‘ú‡Œ[²5zžwE•öI!óÀ‰€Óg“òð/!r"‚\EЈšH>®Åõ'þ©JËAeä<_:ç!OïöÛ.EüàõVÄú^^&úåz˜Ò‘ô2KFqä­ì¥(P¦àcÀ§·9k3Rg¸öeKâ¶mΩ¿E'õj"7[ÔÀ–³ÿþJüì-i¨T®Á'»|®ö±}!Ût-SlülÈÅ™B±³âm®7UO‡½£ðK£È˜¨>À±%½R‰@÷‰‘—º€Ç yÐ’òõËDc7Œàeï©®À®~¼b¸« Îf5_º¡ °pÉvKá6'àѪ~¦óJ MUT5QñÍ<ޯ▚œ»Ká#Š"©ªîØOs”o9ú³wþoÁ'tT¸ŠË vÔUÁÛ›Zåùz­„j¦zà[‡K`NÜ¥;’zy‹wœ¦=Žp+Íf­ìÉÒßLS2ÝCד{ B·;–}½åÍ/ΆÃfŸR E×È$œ{My~è I‚çð½8håûX%lúVäïÊÐ6g§Š +ôRU£´¡Äà ÐÖ28b$_gá(è¯xºMåÉgáé©sbÚW§ ŠÙÛtL%’o$uÜãc=ìµîÆR—æûž£¹ˆä›@›OvNù3p›/³,.w쇠Þãð—ÆÊë¡ ˆOÇpXs›[‹¡¼G”]ä@¸i!Œ;bDâ Ð(,/5>.g ± £4¤IÕ“Pª¯øfŠR¹-lU0ÿ¥ä-ŠÜVºM×òEÉ…`ùHªºþwö‚â3ùÙozC&¸–Xôç©Q$FŒî/žÔ n ®73²«¡¨Ša̧Ä‘”÷"ÜXóüf–¤Ÿ2]uëYÕ;ÃRCSó­Ê[¡Nº ‘–ow|Ÿ30ŵЎŽWxª˜s¹JwðÄwÔåéuE|fäxÚd˜;ÔÄ^èlV{ÅÇÒìR„R#~Ç1ôÙÚ#>V·ÿ58«Êø%mÙªá!:[`sØè¹?ëMñb™ñÑ;vFå:ú3 Óø}?gDûél÷ÒŒ½µPds}Ý7þñº-ÛW›LÕëOȉ¹pæA^—m;&wm߯ûšûs½Ë#Ê’B¿_Oq¡Î¨‹²ø‚ŽÕ$.üË-G»á†—n–w\êɪ!9Û^rfnÚâ@ªNM'A]Js Æ4Œi(§Ü&,k:¾ÖË#g#,Ñ3Gã¶ûuþ³¯'ò‘>ˆ3®1 ¿b¶mqáK6ê|2}?ˆ‚©ÏZSÒÅòû(kÈ+þð&²5þÚŸ<”HÜž0HDB7«90­ )†ý¨Ê #¯Š@+À·MÝW´áѳmüF ÝIש˵O(d ©<b¦Œ¶\[Jõ‘ z{цmÝÊCd?ˆ“»Ž'Xöö3Î1ÙëUƒòõKmþ¶ 'qIÖJ§ù·Ý–ànyÒ—Þ—{u»7Ôg¾Wžj ú1ò‰ùšZ¶DÏvÚ*9JäKÔeˆ«µ *ëõPªy{3î•ÃqK Þ²Ðbø ú ÅÉÊp•E‚ä±cÎöi–Ęoíº}U‡{¿ˆìR²˜çïPY¨×Gl9¶“Aчî\fäñaañÆ®+£º›hfe°5"‘RŸÒC •©‹ÝåünÂÞYKÈùÁ,q5`Ï+Ë{¹«´ö]o2‡á!ðŽ Ñ4êÃ×÷L˜˜QYY"´&˜ï(èÌ—kåúD\‚ßæÇŽ*gGäß2ʦ§6ðûöÂÏû•[;ÝÐ ,öâ¹3X>áwL{¹ˆÊÐY:ؘ:m.ñÓ˜‡áѸq"½ÚŒ–Aà†”ß*܈4Õ»©°”x{$6O+æ¸êùFKÖSp"Þ‡Júš•Ú 4Q:¡YŽæÐLL(H!¥Ò8'í"™Í‘Ü®›H ã‚³-Z¢ <>›II¡¬s’w}48©ð‡æ â¡ZnMß²ca—k´‹¦©,ö„4OÁ¸õÐÛþŒXÕeß-í»\ƈ}›µWć€IÃ(jLT ÿáƒèwSœh<,‰Øï§Œ(Üø«~—ZøµìC¥¾÷Íã»{¾×&uD1ïÃmŸÝnÐM{“¶.U±žE]¯@ÆÌêvHWQ”€:¿Y˜¿âIùd?㘡乫+˜…è7‚ÜuŸ×|¾á‰ÇNÑ6Êï76Ýν‘·Ä)ûð½hÞÎå"@. LêS‘ÃõüE†Getµ9c¯A†WYHðÖ0š^¸hSÚ¦ ‘"nS7Í#)Ç¿i‘D|€.ƒÉ^Z§:…Ì/1í~7£É KäÎz2øEÖ mú`÷ŸÐk>׿¿p¿‡¤}'<.wÑ›9ùV«ó=§‘êjß ìr˜@K—Úz"Š;aY¥sÿêqs^g’½Æxï>ÅG¦úä`£œ;;Yþòâ ê0Ñx#_~b¶2½%ç–ÙGx>O!y¶Ô=MhÀºùÔ¢+åV“u¾ÔÁh39ȱ·W+Åä~±q* N”¬K à˜OÖ‡|ý±­L…³¡cì9‰÷#4¶Ï7“Zª2Ž?ßN€}Hx‘A$^RÓ$çW”‚°°šY R(µ±ó*ÄŸúô844ç8WêNìÔ ˜Š›v\ÚdkŽ]SW£WŸõ‹w+ʘ¡Œ^{Œpóɱ­éÆ}~™ Yì2ûõ޵àQƒŸ‘>ƒ(,˜â³P½—â¶TÆË™Hë.n§i'ÕóËÝ-R½¼`2 h³˜( úboÑ ]ƒ\$´XpØCK î6y±’'™y–3DÊ âOdõÛþ¹È;APJ uˆbMúü·¹ø=ÈŸ?;ùcWI«åmðÇjÄá$5©ZkÀâLî­z´¼dhØÔó–ã­žÕsß%ŸË÷µW$…º£†Óg¨ öü¼Ün$?ãg†<˜L¿‡£®|ŠXiЄOS$Tæ«“ b0›ì0Ëcy\Šh£­GxCè‚{sá+³nžÞ#Þ.p옥BT\óJÛv÷6S¦¸P³Àåv| L50ùÒ[Ùúê­eУd¹r¬Ö™þºª†nðäÿñƒb …Úè@©U “¾‰ûóÍó¶±Rï¬÷“ŒeË"Q17Y-‰Â†óægÆŒGçÅI?×QKîªZo6Xór,X]Nh™¢ZŠþSž™}Ž&4´ÏœäŽÈ“b©òW+„0)[¤ØÌàñ’ àcëN!úߦ <ͽ®ÚqBÉžÃzuXRzG» ¿Hm¶³¹á`Iàz!pÄ*-œ3sß-OÝYè$«×”ÛTÔlþ†òÈîÂd ‡ [6_Í\ed^åá"бÅ}]³ÝêŸ@Øz¨ò+«¡Å­}ú˜#ç-ƒ 1;bÉu\XúÒ5Ýq¦ÖS´+rj,W8*¢¹}p†’±=vsÐDbxŸÙ/œN(R˜‚~–½5]\ØÏûrñè*hDÚäF ·½”Ëcm1‡²³]ªª3£ê&&#åða¬Å³Æd>g«>#Å\ê—Šú°¢™ #Óã-šl‰hçH™à€»ë@¶£±­¹sju?rHž·=¿Ò‹bwÒþXa°ú•”bÊÁų>ø.’Ø ÇT×+oúÚFë±E!y¤”º¹T©J± C– ¼ÄJú:õOáDî Ö`9<ë˜À0½“³xͯd…lt KªÌÈ#ÂJXÇ3i.^PíxÛ5w=a¾Tç¿ÝMð#Мk  ˆÑÚ±¹ L9ŽÙ„ž˜WÚ>Y:iN¥S/mvÁÉ ¿~ÿap$:ÔEM!Ík³oÌ—Ù(˜æ9 dÈc*¶oêϳÌÊôÀ<þ%^ ›Àî¼Eb@Ž‹s…g»d6XV»:tµ }åd…Á¬ A½®4]ZrúZ€1óYÑxލ:½bV=dµ!¿«v%çj`}å-Eêó<µáÕ¿¢Z¡¢³£,¥‡ëþ`…#ö ·éöňhaŠXOØãìœ\¨¥âl»@X–¢XàC5ë…e,(äG{0ȱ6…ðƒˆ_ŒJ{ö4WoµPábÖd©Ñ§»hDYÈ`«Çœ(ÓãÕêÒ" 3ܺg‚°–6 ¡Ë¨&âkhOc–òèÈs`.À9þbÇ›YÆÌkÓÎÁÇÿM€uOE/ÍëõnÚ½(¥ñK ·º9âïØÐ7`øއìvbë#Z†u#÷£t™a‡Ð²þ7+Òè0ÄY¦|ÚAâ#zäß8$¾8“?¶¬j-«]ñ*躲«Ã;P®Ô¨ëÌmšMöÃTâd¨h1é±Tª¥Ú¸ä“F­Oš`î[yNYŠ6Èu:²Rz®H‰SCþäpî+b ö®T :+bAêiS»ŠŠz¾* ¬…Æ2?E yäŒO¼ýÈleq ½6½ÂÄ¡ù ÞUE(9GHž,[Òk"_ôÅ«‡™ÿþŽ‚ìÊX‘¹i9 ì&D1I`âÄfÍêÜß{9Ha ;³%3¦t-±+á3B‹ô—±Å¡ÒÖæ$ Vèö| ‚£qïHÓB2Ñ!Ä#šüD‡ôukÌïË$ÁGâr]Á…‘»]£ßY C\Lì«ühoRô1×ÔĬ‚ÃÆà]˜Ê‰#=tú æÕá•ÎÒQè¤(1/;< zêI(KZºäM<.Öi€ÁZõ~]]„éoíõX=:;vöÄHhâŽ-ä²bÈ8ÖÀ—¡Šò@FÓra5Tüêp$Û£¾æ–ÖÊÖ ìíŸSþá—üP) šPT¥ÄÞqYz £à ÅÄŸjøíµfiõu+œ· "7X¸£~9ªåÒø<‘r"7ÖCôâLPF§=qì†Bðjõâî·ZV³T¬`­KlÞ9ôhaç$?‹Õt@y.ÊGkXïHÂÉfVëœAŒ¯ÃCí'˜`[õ–KK«_7á‚éŽoØ€v•\í`/z…nÝ%SŸöL7'w®%Œ@kªj7 ƒÂf$„ sx!±/~Ôxa\ëf`tú”@áæ$üzœ5,C!‡è·¼ñë7†Q iìÒB?É/-NÂ¥øV¶HNñ‘££ ²‚ às¡ì¥ *>ìΜŸÇЦLßÃ2¼*±¢Ü~©5¬Œ!4¨í¤¬Op«AÂië’ŒÃY\-•‚¸ÆIƒS†}¢'ªL²xôás3Þ »ò+!Ûжö ÏÑ4„âhï•ÚV×0c0¸vÄYxÕXæ8]so>  FêS)²5$™Zôöîꯑ$œûºÒ±í<¹ÍíK^¼qõVCrS˜Å@_œ:¢ÆŒT¦b±àÁy”áÃÂKO0©€ojÌ_J@¯´ Þ­Ázh<Ž©)&nçÆïÁ‡S‰Ú¿Sçô®òˆÇqNõög0ÐÔØïF]>>É}šƒ:º…ÿT…k5K%h,ó‘ ‰9¢a–tj3e£žb!¾…é+¨{¥\'e6WÅoûŽ!À¨31¹ô“Gy⺱×i›6Ã23''ržy«Ó!–úkýiÃoõ¦ßÛÝK8ñ òÓ•Íé'˜¤ù¨UáÏQt0i±¢*·Næsü›ª&zuVkB_7$¥ ,m¶^j"ú^\%݃ž›íJ?kšñƒ}ôŒ5–>ŠA¸îj< (ÄÈZZ&!qZ£,iöcI¹ÙGm}OŽ‚[Pãÿ5N2qâò+0²Jp-ΨEŸ…l]ßRþåøbQË)–E‹P‚@ñšÿmª$_¤Hcçnó*æÚ©:ÈZ¹íüw¡;o†Šx)î2wšøjñ"aTíªÂ H¼h¸V.‡$I!¿—XjécŒ¬˜¨¡ e¤é(¢DÁ0U’q·¶GÊëC›(n´Š´µ{_®à/FAÏ$d†ó¤èŽËJ3?á¹åPŽçÂo·Êâ,õoFæ’‘ñÀªYLwt ío»h©|v‘ê˜@ónŠÙÅýBìXòbô}Ëùµ¥GÄMÆ>Jìr¯½„FÙ¨í‰h0ù*e½à`9wp±µê·5“ 6Š]Ð2ÖPCÀû¼::«3G¸A*Ùªãaʦ^šs÷sïO£Ý¡Ê£ó3¬4úöÇñ#…¾_å‘¡·tÍÆ§òsýñ5°CðõÖËâIq?(Aàüt&¯VìŒ<ûxBÆú-ö Ÿ=-Ü6- ô…g¿,/×ú%ºî)¦dâ¿ÿU>&Ú Þ%Š }ðX¼öÕZй:sC i¨}ût&íQ|Å™ð”J˜•®R‚Ö,öۂ컲Õu¶QÈ\ßè‡ç¡÷üÞ)%žS =7 ¹ÒeU“ó4!X*‡õw›WqR “xðâÙò®3 Ù#gÓ¼I§>¡N° Î#Ý“QÏ'óèÊÄy»Ø¥ê`žä‡p(û éì°Î™7é<ñ3G"¬ìuökàÏ 5ad¬‚´–|& +M¼^~§9æ!¾0Ó*IŒ Ppæ!Óc2‘ .×=ç²)Á!ØN.ú¦ ä…¹¡ŠvœÙR Ôb‡šc¼mEôTûQ†8vµ^‘¶·LŽžgdEOxå&+ÞGM=Ø SXÖWì Lä}7F›ÊUcC¢Õ¹Ê\&Ûz*„›Ï³Ï"nGoå½Ñ”¨h´{3: .É$Op†X„éD·çŽúüµÏi¬C°ºò(ž÷ÍŒ¼¬†§ifë"YV!&ì8·º}‡–µôÎ0…¥5“tI=¬„cQfm¾¬ÙýçiŒ|1öÇê9Ç©P$Ú£ƒ»¬R8L?c‰{f½Y4oû2¦h½"€šƒvÐ$Û™‰rfzBÜ B$Enå¼¹§2_­=¿êS¶ñ6sÿÄ­¯.¾€j¤•zòóp¯B¦lÍgÇ Ü OÒÇ ðƒUù©zfÉëy58­ýäy¨õ<æO;¨ïýt¢¿ß‰ÿ6 ñÚÙuJK NÚÔ)þÎfÌú£UO+`6W1uíIwiŠË!æËu3ieQYÄ)쯗]_Ñùè n*m”¯8½…ÚB{1U¾<`ûcØ2P‘)‹Ð0ĵÖÎâ¼àŠÁAÖEja\ ¯<¿i‰Jò¨`YÏ›ØRשޏ¡·¯Z)DžÅ(3ê‡ØgH’æ MF^NVêg¹&b4 –‘¤ÔG>`e™¨‹ÏQEd ßbƒôE£†M©‡ ÚDAôiøêZ(®¨‘!PWQ1yXkLÊvÖ‰,ÔW·xw­=*éOxßNÔ°sGÑÇ&µÏ&š(AöC¢¸—ÈCSÛµ]X¥"¶Âi¿YGñ¯`R¢ÊeÛ„ÅÍ~»ü3a9}ð¦ïŸÉ¸´ðçË€˜UÝ÷EK¨]_êú}ŒðdS]) X}ȶç"8%P;–|Šñx¥ÁBx†‚f .4øFLé@YE‹‘m›hé7w½Úò´åÝš ¸-BáU.;Œjèrp$½ž?Á ¤VŸºÅH‰>ˆã®9´;nÒ…Ç»œ« ^TlëP±w-$v§ÇˇáÒ )YèL‡¦’¤yã7P|ÉD³·\z€Ï˜J¹OïGÕl/çfTÌ$œ6¦± Q|%6]Pwu°´ ´Ãj%rc ¶<¢è=†f¹_N^m¶ÃÄê6´½ÓôҷJ å¹µÛã[ŸK5ÇLí¨93ŸŸ°¸—¼‹'p‡¾Hyn›ðJŠ=‡Uež^‰•n·JªÇ(®pUâ©ÂÎF\˜˜®™~ ›|°¿Ø)!mfF·Úü¨ÿcU±i¹EpvËmùy¦ Þ?^¡\­â‹0ý€–ƒqŒ©€†1i*9®²´K±ÙððzŸ Ž_Ü•T2L#¥ú%œçïß!Þ&ºõ^ŒäF2ÏÈÃúðlÆAšgå‰õ×2ëÇ¡pV—¬1½*]'¾ø[kt}u®´¬9ü]ŧßœÆQ{ý$0§9)gõÏ^’)Æ$ú¯”6ªLWP~™ôÝhê,=hë —,˜Óx¼i™ÁGe[IjçTf[³±cRŽ=¡„¦vKþ%êþÎ ‡„•®6G^7'Ü–s»¼LûÐA`H R3ñ7aÓR–'ƒÖ™Øy›Ã,«FÛšF¶Ox.¦ôqˆPÆÆ3| ÖùÙ2czsQ«¯ªÅE8Ó£Þôj„<2šÇ‹jòkæ€ø`‰¾íG§ÆÙïðžHØ$’ˆçôU;ÃZj<':äÉÙ@ïBd£a¡h÷£›²ÈÄïÁ6 Ìãåª ©]rUÈÙ³MÆúÀ͆†žÊ¸}:™ò–â>Äo{#ÒC, ެm¡"ŒV¼5¥-¨¥jìàåê®ÁpvKKj±vÃÂtš&@ò]'ŒY®^¶/aÛŸúàž"‚¤~=½ŽL¹· jnø†|Û®¹àº®ú}ŒEÐr9F&¯‡«À…^I8Döõ„´ãÜXíTì·NÇL3np{JÃ`MÙr$–zë5bG×­0?PFÊâ ?Ù¡|3Š'«' ‚îs"‡ƒ ‘-"Ž1?mçpËaúô #ý¥†jô-†.ð)Ø.x3^ÛþÑ–L ý1nSð$Ëpžçƒ˜£Í2üõEíX‡«™™¤ÜSú8’2ݶƒ>>`›¸…rF-5ÞÅQª %Gò£líw\8ã÷¤[%ÙvÒÎëÿ¼¢ CSN×÷Ù —Ò°¯)tÙ®ÿ¹M±aý¥-TT5™LBظŒñb-oz¦µ+nY÷.,êù×A¹¼´ŒVÏ•œÑ­\ 1TíT=ΰ_l ÷a¨,äíMÒ.}¢ÔÎï×ü–’ãSœ*ºôU@Úll]‘2íe ¾ ~&O#ž™¯œG0ä¢î¯^íÂðš•5Š õÆPUhêèiìQåw˜êä´oãg¥(€Á J=õsÃé#‹ÃgékDµT7ŒÌ–Ñ•SKðøõ(ô~ Ê´âûYÆàqÿð#§ à€Ťԃ_…)]Œ+O*w6_u}"†E979ù[°â+Ú¡ð” r )¶Ã¥ÈÔÓmŸZ–Ûûró!Q1ÅÍ®Çþ4³Íé a„¦%³B—+úîöëôÏk]8?˜F†ºw$Øé˜]gr¼ÑÐÏžPôd´ÕÏPï÷æ3b% `bj<ò|ö\bZ8DŒƒ²RNš Hñ"¶c4ÅŒbíÅa€ôj}ðÂa²Ít‹ó£h¯öó: JÐò{¢½9†Q/e‡ÝE9ÚºÇ'1ÉRÇðÖä·Y/ÄWâvøØ§ÉϳIŠÎÛœ{Ó™è­>Â’º¦èÈÆþÑt‹£"Ò‹ÅŒñô&2’Ç Òè±8{i·¶MgÁ˜çö%7W¥a’ßæüÈèWÏ[½JÖÅ´g¢£ ÎW¢ŸIµÃ:‹6Ù §£õ= ÷0 9NkBi‹ÓÓ5ˆb{Ö‰_uÒµ7ãÔ Ùûíö ÉV®ÍÙN¿Š\Ø„|íŒÞ8ÕŒ}}{ÜDÁ{ù¾kÜ´›Ÿ*º&|[¿›h={²^Xo¡YDi.#Z\gðˆ¸BÝÊdþå׳tŸŸ‡r*rz mÆÙÌŘ(†3ôÃl TGð÷@jå­G¡{ÊXÑ‹¿ ‰öéC¸ÇÊ2TêÐÉ9‡ÉÊF´¼JhPvi¥·íü Üal+K¿¥¨îÜ4hQ³<;¬¦ÿ£Hbÿ:ùÚ–uÊ«^!ªÒ\– ¯ù–%Ýë ly:´ýÌ¡M­¥4½qJ–eqÍÝûkkŒ«>®TTª6’–ïÿÚ‡T­¼£|.÷ŽM&=¼O’nŽÑ»²ÈvÔÃŽKU(8 tóñ1T(éÄ0÷Y× ÈÙ}|"4 yz‹µPvÇðP‚HïšWý±y~×ôå×IZ›·^÷Ov‚¯ÊII_wºšÀ_'ÛtÄA:x?–Í·dÉN¾gÙïE¾,”Ï>ÿ–µ9ØÍ‹ŒmÞ%EÉ㊃ö\ÿ¸IsVXî=à`öá—f¼l^”J ®ò…uÂÒ¢L1Yò¢9¾µq½GT•‰qx¨Ê“VÀ‡à+ßx)-]çœÊ‡ þŸ#³h`†¡ÚÞÒ,“ `×”_–·¬¹3ó#2èxëøBò#Kôã£k¬FõÚ¾½Êó=3ô0¦DQKN'ž ˜i'âM·ÇËÆ&Ùæ 1—r•OHÔ¾ÁÒ|§8hŽÂO¶®•¶÷``aˆæwÛù_T’’¤6»åÃ`ïRµÎÌlj Rñé>Áµö1¨{ØCÈ:çïôqÑUla¢ –¼n®¢β‰Õœäî½Í€ø!„ãÝM ÙÒ|˜©$XŽà¥¹u5s¾G¦÷~a#¬lL¨‹²#ýp‡Óh¼x¢I„KËÓOŠ—P¼èF†&=­®cÏÉ$³ VÚ ^Òý°¹El=¢;ñÊ‹ëŒv ŒnØ+w~¹c„蜳º‹7¼ÍÀœÂh.@á•Søð/õÖÐ.šš€Çk@²vFž`¨JÁR^ÖUò;‘mT}OÔÖϱӘ fù‰ªÅòs·Ë÷Š6±^ —À÷7¾=‚q«3 Uhô†¶5·(ïš4lÆkW$z&pAFà çËôΔ†1#è÷ØQÿtSY– ߤŹÖ2Xü˜aðtáïöÑñ‚#çþk}(,=IòS±QSÌ*k&‰ë’H±D?aq÷ÙëηœP ÖVyU×,™uÆ×¹~Ü»õ#0öüƦ¤PбnkxTkX=ÚOVažÿifÂà>Dòö¾O ùfZãO8vl´MÁét¡à‚á“—M]\3þ{‘çôÏ4É«¢U›¨t1å߆XqQŠOK³ðBCYQöáßkÃÔÚ¥‡¤v ®…¯ë¯t¢‡»ùX¿\p=T—vš@Vnðp?Y2†Ñx®uèX~â‹ÊdÔ8oSJ«:„sЀÓÁ«ûÒ<1Ö^ü­#¶ý\oEUxl·`xRálø^ÙÞä%ƒ©£àÚ(q¦ëª+Â.ë¹Á‹e9Mv ¸èƒ|( M|r Ý£#j©0Áeƒ(„©xÂ5ñ÷Ý·?EˆBi$ã3%R‹U¶XBuï"ë}l  wÜ2~]0Ha²M„FgÒ|qíôn”åˆ"½”ê²BŒá®µEÅx¤q;ÁŠ †ÓhéÄ–ò]U«Øõs ©Ïm ªh`ö=q1OŸ9;¨˜EDs\XKýþ¶åLÔ©_ ]¤¶¡š£§HABB°Î`¤h…PK´ìÔ?ËÏRÈZ|—ý¬¨qö¡ Qoßa0…Ë”.Mz='Ó–÷ö`qÿró ÷Iƒâhòj ²Ö: ªjÙŠw£ð°nÍW‚³Bs·<=÷¼ŽKñÕ'´a¡¦½‰´I]g¬ê>Øž"úá¹SfÒ£Z@…Ôv›B>iMu Ük™ÙÙËíQ£²Ë[µ!þôóW-ÿÓnÃyšÝçy§ØÌ⥧j•”lÅæ5šé)_÷r¡˜¨¸ó‹YnÉÇ>{Oøh¤ÒöûòSO†{”š-Ôæ)ÏÈ9†ŽALb—»LCÊåka/°õ §^WiÁG9ëâùõ¹ek§dÇÓ8ô zäÞÙûC—Ê祟T2åi»¶suAo¶½Š.Õ†¹~ÃÇ…!{ª4ç‰|*weØQ ½a‰s·q›UMú‘Ýds©g´× p“á~°òÄÔ×[¬ÒÊjmìL«ã¤ñDi-Ø.¨*g¢T›]4¢»H"éŒß?ûøœ & ô…(½~²¿`å9×§¨;…inF° Ê”ÓBFC“¡˜? THçÑújí: %Êgã±Ýi×Ba¿š¡è„‚gæmé`s‘ùñû"µé„&¬øÈ}éjl×›x;ñ·Žìc'•®ž‚ç~â¨:;;ïç÷œÿÆò˜j®~JãÄò»;i–ðk.Äæöù=[),•Ú}!KÝÀ¢AŽL¦õ|È*ò5߀ƒþ t FÚQ„š4±Æ,ùj>)ɬ$tGdßõWqéóüŸÖ^ýh;뼈žPPo‚è ‚.Ë…v—RÞb‘¿z‘ ló³OÈCηöÈz {Z²¥Ì4eÜîYÅi+«Yª±qÞ(¦âÛ£0Úgôƒ–ˆ[&çC1´“ùQÒhžÏôÔîI‘Ûú#B**ßAð?sÒmY)Œ³pr‡äMÉ¿?Y¬<]‹ ˜ú.]bÞ>¯t(’‡‰5*M«ú±ÈÂtÈà=;›Ÿ–g1@±žÖUóÛ*gv5Ö„ñ à.[ ró>GµâùDAAç~ÇoÄ+šæ#üb`yr©¡À_s¥hëöèãö‘Yó¹PUâT/S5`pãr¾NGë~QjQ Î_¬];În£›C–(_ZÿºBÞÒå™›‰M{”,’NüLáJ§«Vq§ú¥'ƒºˆ:,4J’œ®×Ùßµ§½ßùù§,¤[õ—uþÓˆlÅñ–‚(Cc—…ðT56Óf¾Pî5SÑ$3îi—®TnnYHLÚ¾×-ÌêÝ¡$ÙǪz>¢è ^ýAs£®í¶*9ÜÄóë¿@-ä_.–ù“C/ÿBc/Vúˆ³æ¡t%½cXXXœ×ÖÃa$T‚$Å/“ 5íæ[yÙŽßõKc‘¢>Ó53äÉ­"&9-‹tŒú'FÂ/1I|‰é»*?¹‰œ×:Fqíšó}ózŽs,HÒ¸%;—5Ð2mâ-mO°©ÂE0  üš•.ä*ÏëÛ 3B;^¬éÓ-2r+>ä‡Hð¾6%G˜à ãé¤:ÌÑ3¼ ѧ¦ê¯27¢ªyœæÿa³›nyŠ»+xÛ׺‰Ï¥ÐüÜÄ3ˆ‹¸ý®¢¤à¢Ç1ÏO²×ŸÂ¨¤ïh+ "zètÌn–ñ%ƒ½Hh³œ¢\hN*u¼}ÁïwHOÜæ:rŽ*¸ý&Fk8!Õafž¬º“v#ïü­(Ž­`?£ßOŽ-ø(Al×0VŽ'áùgNÔé•HN° ¥iðAŠPîëðY#àÞð“¥Ee 3”ÛÍ—ˆïöPÒ—:ÏoÛý—Ò"åý¶Ì"" žÿ}ô³ endstream endobj 156 0 obj << /Length1 2765 /Length2 24258 /Length3 0 /Length 25811 /Filter /FlateDecode >> stream xÚŒ·P\Y´.Œ;ÁÝ‚× ÁÝ݃7;w îÜ5@àîîNp ,ÈëÌÌdîÿW½WT5ç[{É·lŸn*r%UFaS1PdçÌÈÊÄ •Wae°°°3±°°!QQ©Y:Ûÿ#Qi,Av¼(ˆ:œÁ21#g°ž<È ãb`e°rñ²ró²°ØXXxþGäÈ 3rµ4È3d@v@'$*Q½‡£¥¹…38Ìÿ<hMè¬<<Ü ™„mŽ–&Fvy#g  -8¢‰‘ @db töø Z~ gg{^ff777&#['&£¹ÀÍÒÙ t:ºM¿(ÙÿÎŒ ‰  faéô·\dæìfä€6–&@;'°…‹)ÐP•–(ÚíþV–û[ðOm¬L¬ÿºûÇú—#K»¿ŒLL@¶öFv–væ3K @QBŽÉÙÝ™`dgúKÑÈÆ ¶7r5²´12+üÅÜ !¬ 0'øOzN&Ž–öÎNLN–6¿Rdþå\eq;SQ­-ÐÎÙ é?1KG  ¸ìÌwÖÚäfçõ0³´35û•„©‹=³º¥ƒ PZì°é·Ìè àdaaáæa@w æ_îÕ<ì²þƒ3ðñ²ÙÌÀI},Í€àH^NF®@€³£ ÐÇëσÿ"$VV€©¥‰3Àhni‡ôÛ;X 4ûƒ›ïhéÐeÏ+€å×ß¿OïÁãe ²³ñø­þW™ÕDDµ„uÞüñ¿g"" w€# €‘“ÀúkȸÁ>ÿu£ddù?l¥íÌ@ž¿Ù‚Ëô?Œ]ÿÚ–ƒð__ ðÔ´¿‡\…“ÅüÁúÿ<ê™üÿMø//ÿ·!ÿß„$\llþ:¦ýëüÿsldkiãñxh]œÁ ¯ÝÿVÕþ½´ò@SKÛÿ}*íl^a;s›Ëhé$aé4U²t6±ø{Zþ–«ÿÚ2K; ÈÉò×µ`·æWËÄ|u8Gò¯# xsþRÜÎdúkÅØ8¹FŽŽFHà&ƒ'À‹¼‹¦@÷¿†ÀÌdr›ÀéùÌ@ŽH¿:ÊÅ `þ%úq˜E~#n³èoôÀ,öñ˜ÅÿEÜ,f‰ßˆÀ,ù±˜¥~#v³ôoÄ`–ùÀ\d#0¹ßÌEþ7sQøÀ\ÿEoÁ\”~#0åßÌEå7sQýÀ\Ô~#0õßÌEã7sÑüÀ\´~#0íXÓè_ÄÖ4²µ/ϯ ð¤`NFNà‰³t²þmV5þÀI;™XÁ¯(3çßröå¯Ù¿`&ÿ"N°3 xÄþÉñKbkû›Û¯Ùc6ý‚C{çüOV6plð49Yüž‰_6.àþ7ã_Jî&6F¶xçkö‚mÌþ€¿ åaÀø7ädÿ]cý%øó—:ÈÅñh`ó? ØÿoÂà&[xØ[íþÐËþˆÏÎÜên¨õ\Y›? ¸ìd ¾…™{æ›ÚwúwqÀ‘ì\l]¦æ0øUÐoŽ`Ÿ ?¬X•Äþ÷18†=ø n÷ŸÁà`ýGúß±à'?KÐþUA‡ß-ü…\€N]HÿNÛ/!ÈhjlóŸ0ì¿þ×rýsò_}ž¤ÿUfýÕõ?zÆ .ŒÓﺜ€¶–ÿ`Î_:@×?:Ç vâ~gþ›,¸ÞN6Î'++˜Õï°à—³³…#ð1ÓÙ ô‡؇ËÜn×? ˜™Û£ ¶vÿ‚Ý{üÁEôüMìÉèøw¨ÿ\è&.Žà¾9ÿõÊï×ÿ࿾@î@¤¥y _U]PÛ]0‘ãÞø»ª=ÍT:F¯%Çv—‡WðItÕ™Ž7ÂICÝè«;â´?„–Éž¼Ž[àC¿$(·þô~4ˆS™ÚkEZœÄíŸ(8®ï#A$fTúæýäà­áo ÝùU†*×Áåí+¥|¬;·^I÷ú¾²•Ñù=åoÕ\²ÈeÓŒÑêQzþųTyÆYsøpÎŒ$ô˜îh³?nf0s&^ÈdâÞ ùœD³zél²ÅÜÏy®U¨±9uPèà“@ÿÀ¢ö9H–Á[ð*)\í_toá/$ËAeHYeDg:`˨¶T‰´kê©u]ê`ÝÍMÑõcí&Ô–6a8R(âT·Db9ײ[I:ÌDÖÚn4ºÌ¬Rˆ—y¦ë_³¨ÚÇ~Í]^?Ö††ûoCR¾Ü 5 ïtùh ö ›»±Ò‹[èF¬®ðf¤À–9Auj¥±Ñ–]“Þ>Âó{|y dÝ.`aÑy Û9J|Æ™ëý=Ƨ²ñB¡cscÁÆ ó}àK —‹ñ×”‹‹ vqÃÌÚ¼ ñ®ð¼õXe¾:`ãl`óÅf%.“X©™\ü6çâ÷ÊBiÉž½…ª¡½«{žOLg•ê­9?)“ïžD2Ž4úŠ÷òܘlß”—‹èã‚4î/*ÝÂD†b¶Ô¸ƒòÂ;Tür:Ó$…#¡Šnwæz_Ÿª‰¸’Û6Å¢iª½{Øë,ztc(“£¢)\’ï“=äõ^z¿(VØCPã'„þ£É­®]ñŽ%}-†*óÛ ôkƒö¡&ïÏ„"Dªjwù¯=7!z¦ÇvÈG¦v(½l*õŠ9z›|œQiÐ6qÔä ;~éWïh£"žÍ"š×ÕÝ„–‰k3fû'ƒ£0"¯áÛÙY°ÆO¤¥4™ër…o°_æ²­¶=³„Èb›ßU9éÕ­cÿà.§×© I¹!&¦~„8ùí‘+)gÚ]2OÙn œ(=‚`ײšj>1›|a IŽ ¯V7;ãz§ðy”Y°V‚ÉF$Äÿ ö`]lòw,%vñ<ò FÞZ ŒÍçIáW2hÕL°K½u¢2ã2ÎeÔ=^Üp¹j‘^ûkLöLvÏÍKÍ%\E2—¿’X0w£àLŒuû®Fé]ýâRæßOAFž2ôýÌŸEÊÊRêöÂßzh{ÞÐt¿˜¹>dq±ž´Qyè‡ÐØXS“!8D`(xÅ|Œ‹l0š «›ÔqõÖ]‰ŸƒuŽäêóÄÄ2*WZK³£¬ ë!ûÏtuQXËtÜ)çʺ©Ÿ|Òùg_R*½ ‡s?½/_¾q(r¸’ëfÜJɯ9¯¯~ÄéÿfIȲAR~)/s/Ÿ£ÍR1ëêŵŸ8¯w×€rÌqJ§`'xw ˜¥6­-Ë´*‹4D×Å€'9,ëe&ª#"™ÝŽDJâ±Bû*B–&¤‡M‘eF#¥ŠKZ‰’ÒæçáCE3cÞ¦n'þñ,pl(òn€@vtšÊ<ѸÚ3ôVf” Áä+_ÁÖ‹ï¹îŸ–:ËEŸÞJ_„Ú×Z>õÂóu¼dC°÷“l"® þÈÄí–Þ…yŽs%µ`éNÌDïõO;8µc·ö„om”¹¦ z¢ÍãËŠ7óB…šlîdoÈåL§«vˆ@Ǿ»¬ÌQƒ"ï„j¯NÉYâ»´ó@ž÷”§÷“·~T½•_§†pַܶØÞƒÊz6UO‚Ò#h.y"¶gpx¼¬¯“MJ=¸n:—×$¨%Aørvœª—nÔ¥ŒÇ35ÕÙ’žw%WÁÄmÆ-lo•ˆ€.kWÊb:h—ƒ™òs¿ƒ)Â7Ð×ÒÃÀ¸ºVέFUSzùá˜{fˆ·^& tü`‘ðМà‚ûýcP”á/B„[ òíüG!3<.vB© %#×)Oõ1ƒšœ1ì~rVRú²ÝhÌêXù7Æö~!|^ke£ˆþ•Êì¸|‹ymca3¯P1«™³7-ÚÞ¾-Ÿ' <é 6Ïy§÷nSˆBbóAVâN-Ïøgj\‡†Œ ­yUWÖ²ñteôyóAÙ\ò܈ÞÖÓ½‡2+^ͨ/ œgÛA£°¹x´ï¤o}šïd“a÷Ê3® ¾òÓ~ï<±\¶'ÁûŒ‹2GäˆÂü²@W±ŽHyInJi9ËgêáEs¢-;.ÈPÄX ÅÆK~YĽc¥±ÅaaüaׄëÓ6ùÔûwÚ{ 4KãšË“{Ôù,þ²€gœtfKDË¥iDãlÂnQ¤·½žÂR…s9ìHL—º¹î-ÛkάÂ.•eY(öÂLºŸTÙŒÝߘœK ΀„øÄb£ukÈ}i䤾»å|o¸íõ ÜÜ 0µ·%‘ô×8Å«ÆVp0‰s V[’%o·.ýhI…Qlš°¦ÎX Wߺ0]¹¼9ÛY¢x¸à»`øà9Ô0E…j­ÞÈu‡dIu À˜$ÀÔd•pŸ8›=HÙ˜?ÛÆE7ºkxüh\ƘʢxÿÚÓ?¥ØÞõ² 5‹$$.íf±¯„ÉQ„'œÇ®Y[´R”õ¡×¹ÌTèõmÉ[ˆIk…ÐÙHÙÈܾOG³ 6þ´pÈ‹Q WE|›[…¦ÏÝ?O!ã+Ñ7èÛ"øû‹ò’vú°‚°Ê :‹xø%cQEÅ ƒ5ó-6Û‡z©p”Æ% AJí½ÛS(Ë>¶SL±³·Ý*ñ,ðœèD;ñ„BÒîT’¢ž8.kÞó*$ž :ÍüHl"‚3 DÉÔ'Ñ\ ¦fãpÃ,µñDþF9˦yŽUç¶Ü¢ÈcüòiB±(kxL³‡^óýs‘¡GY”r-bØP¢žrR7‘}Ùª¥î÷è}À©Á'yÃÀ‚U*µz…/²Ü±ÕoTÒæOt 3µôaj;}Új‰Q #oµC•®‘Æ% ÕÅóO®ž£.fd;çФ¢hê u”…ÆÑ¤—6©>í¾$gvê–Ðq÷Rw<æZŒÛe¡ÔjÓÌ®uVëùN£åøav#ÙÎÀ. ZF.6Y©n?wd2©²QÄKV¢qcåBß:Ãx½ÛîÈ÷ÔP®úÓ{„£õ<È–>¯Ç0L×ís¹Õ/ßò9®YS)?`9Ú ¿œ9%aw÷_]Úél@Ó§µ¾+½vúqÊÀ6òŠó˜GF %‹ôÂ3A`Òü óùäœô žò¦±}°¹“Rª)%ã”ÞMõølµ¿ýWÌf4,ïߌ†·LC½ÉŸß˜xz”¸’mÔ‰xV ‡æ„\³ ºÎ¶!ÀA]µýXíÑ‚4úDþ–`®À)y%ßÜm‰ áŽ{OQ[ÈCõ½ï÷਴Ê{ÈüaE"Yr–+9ËýAS„DbÊÚÆÃY©ø†‘nX€Ù’;‡ŸTp.Ž÷¼æcߊ$é<6º6»È5çÒÕã·»-)=Š™r]¸;Öäñ´SN…;ž2{6n™V‘§«F'fè³ˆÏæ´×¥î8Ê ¯œt«¶ßŽ%H:õ5ûó’©Pò¼ç¦{°õ¨¢³l$ˆp:´ê¾Ñ,‰”ëUÑ'Q1²ùzì^o» Å[Ç)_\ ³ñílû<+¦µ­‘èCÉOf«‚à;¥Pœ–Er˜oü Ί²TLé@¢µMËE6:_6ÿG"»Å]g9QÖ­^ça ’CÜB¯Ãt¡¿ànä¤'«¨ê›NâOJ¬=¾¤À!(U¶1dör™dùåá $Úï3”¤_€CÊ{̶ö œ²ÜšOÀoºž•Åu£©äÊM–™j—huŸ¯}½û=×%pØê€)ò‘dí¤“#ˆ{òYHi„Yí½’™Yª“BñêæÒŸïD–F¥ßù©Â±Þ^_Í|Á°x5ª«"gQ¦Í¸à«êøìaÄ WÒ–,›ä#å‰&~S:…§ ,Äé¿¶1EKˆt—'€œÕØ4$&eš¾ã„ãˆྚŒô©[`yr¾º:oÂ:¥jÙ¦—:¹ú5ÿþrzÍ%ð#ÙÔ®„g†aÓ@“`þŽ´ „ªu2ÿ l[ü ÐÕâ-––D±ÞŽFm{ß•Q¥0¹‡GÛï÷™7ØÙ&äŸÜ/`“Œ'äŸç÷˜Í|Ø7’3ŽGŠv($K“1*÷iÌä¦àgÉ´4ÕŸ|o›šµ{£õ‘ýf¨¬ÆÈ¥:Î#¥^†ÆbÈ î?Gò„Ö_~ˆÛ–ivÍ{Uçÿ~õ5å|Ú ¨… ?g*þIëéHM×w¡„Jü,Ät£Š?Fì4á&!‡6 MÈyÚËX8Gˆ¦â×+† “vÚ^V+†ìÞ6P®$U†_h¤mrŸ>lÖ’ï5<æý˜Qê>ñJ̇¯N=7not ì¿hq¬h m˜Õt–±c÷€RùÖÅc•Òñ2yí*ÉÉÌÇÄ¡ç g—‡/ùÓÚû¹¬¢»Î“Wê •ιtß,y¥.s;ƒ{Wh« €Šþ‡$Ï“p¸.›½Œ’¼a[ß{=³ƒ3¤tô¨bÕO];!HQ'=wôñ7GD¢=¨üÔ¶›?³¿Ã¯Ò:Þl³Å–‰¿Ãeœaº%±ÜYZýèo6ødݬÂtœñãÉ•ÆoÀ– “fLu§[¬utÉÆã‘ Ÿ;7EûǼh}eŸía£þçjINÉ ø»Æ%Ö¢ŸhÎÌQ³ÈϛѣÛH›ᵬ•va?Å|ìáÞ|3+3ç± $y(éƒ|/t.o¸¨?Ý"){ÃÇYWà6pÜ ³+íèp.\Ân&°¡aéRá×½¶ÛsÙ>u~2©íˆ~H"öã†76zÙ”^¥z ìŒrÌXö‘›nû‹QYÁЋí ÝÙb—Õ}|Ùx‚ Œ^5ÙR#-Ê]7ó¡„ÏŠºÛPî‘DŸ<`¤i“_Ú¬Ð9åŠË¤;M}¼-H;)ã<Ŷ±Ô'º?ºµjG¿iªÐá?ßï(èËdýzÙhóa ØI4ièr'Eè SqB†3¿vÐÞ¯¿ÌEtÆœí1õÓÐè"³h5B·z<ÝpºcT<ûS·aì‰)Jžç7ËK9£ ¸£};×ü Ÿ¶gê“ÊbGÿÊëUµ N©çUdÒ0f¤@óþÛS2{F¹)êÁO?¡Ïe † %T݆Éùgk_‡œÊ¿¸Ž´öëë=†ÓÇãÌ?)o•(›¿YiëXÊQ F/«#¶yN]™™íÆ|tiÈJãïÁÒzðXk.«˜„z oƒ4¿yáÔb{ßý‘£D*},?cá2]¿kÒAªËLU?½òE¹-ŒŸä8¡ë/¸J“²û˜ õ¥¤R˜›âÐK,D…Ÿ™ÍùI¾oàúÞi¯Èï§5´Öu¼Ù§ÒÌ)èí—‰§Ÿo°–Š´ÄOŠ“Ñ™Ž¶È;'{(èeVT¹_u.k“V#Àž[­ ’PO/ È ¼)ÿöµ¥sóÝd…¼=J.×:UB5mŒð×+øUr)/ãÅgû‚47'·=÷$ðL5$åæÞìã:áTH>lê37—:4ôÀ Ý@ZDõ¡UÜßëVx‰•: ¡°ß1Ó3rä…¬èø5- wåÛÂ^ò‡^|·€›§b2sÞ)_¾h¡ùL‹:F âõ«  ›á?A¥~ŠOTòრ˜i“½™y=§–ÛôJâöAoŸðéV6š„™/ ±ÓûH ¦×€*å2Ëõ¢Ü÷4™J“¥Ì>hÌçþº9†ŒýŠLu”·ÌÊãt…ªÙY&žY`8Oñå,“ÄQcÝ¿›Àý}M \›ÝöyNWã{?›¬{hNPºî~Þ¤:ƒu –ei„^­‚r—ô¥ÔìØõ$Y§ ï©Ð¢Ä9޾ 2¼ªV×K-]«Å¦æ<œ;‡Y‹„X“Eì Ób½¾*ì#i°›Ïr˜ŽB³8Τ(äuõ-²6r´ ,°Ñ³{ö悽mZéó¢óéó³ö§a,ž„¯A†{Wt ´z¶w$V|ã@h¤šú<:—4²YZÐþêÀ#ï†ÁO¨!¹"ziÜ™F= ¯E„svõeÏþïC.»™fУKÁ?”6J†éÄ?†½E xT/Ì|p£«º0ÇŠÁq˜åÝ4µz]ØR½Šfï0€\˜ÙæBelŠG’…–äŽÝ¡¨ôVž …úVö°йôtòðùÔ+7× ŠQÈëgV6gÛVÜ-Ì~;¡ŠÌÖûŽ n^·Þ´i1áQ&Soµ—´’ø×ädßïñÍnĹÊuª?Cxßñ9§ªsªê™`TƵ›A–Ìñ²!x"IcýãÇL¤ÔÇ å ÝÕu~õ.-^b˜€åA“77T›µˆ§ ­«"ªœaSiQ"Cæ0$F+$—§ÞˆÍ%ÚèSD¦,!ý˜¿,#Ášf¡êžRäX•p™$M`/nïê^ýäô¨ø9Û⤔w^5é©ö®æcĦ¸|ÜÂûôA‘ðíJLˆ÷ßÙ¨ø•[¾mû~ƒ¶Ðß"Ý9=©ùðiàõò€—i‘½ÛT „åƒåÇ1aLÝËÎsćKõýÕ;%ƒS\ÿðF5@›²š½r¡‚ŠnqÄ­"¨àIS‘«ŒÉ´«’Pˆ|!å@XŸ° o_¹jU´‰Êyut>¸•ö›ê›fÍ.TÝf¬<ê1Šõ¸”Èkã$2_É{dq¾˜2ÒÁ4…”i‰6œÎë]SÐݽEŸØ¢¤h“»²ÝöÒ¨ß.Ãè+ ]\QjTÄÏ}9–9ÞÏÏWÀÃçÀð׌‘¯«Â¶H«Ã¶ËæE¢ Î2eZüEH’£(‰¥¬Îó/ÎçF§nÐf–{à’‰"Õv„¬š  m”£”Þj~%pjJ…Ò©§moo,bK©9êêßÕòÀLeé´>_S.i6R»aÐ4ù Eŵ­@¼’iúáÑ!$›oÇÉð5+—zÕs ;ú%õöæ>ºtlwMDÄþÂ)Zà¸EŸç5J8j’ÚDÖ×ÑäF=—Ôù ì)£-¶^"Uu>¨&HŸ· ä©btÔô¸÷ô±Gžl¥&·7r”ßÙV$jáÊÝø ·K6¹é^U”ô,¡°äbKO^/ê¶Ú˜µ¤V¯qvœoêœ:Ÿùj¼Cn£^%ŠýôŒ½]Ç®‘ñ‚3¯ ¹ã*þÇäÛ}ã'ø›íù¾G<úJƒ€Ovo°=ª½·rŸz~Õîâ¡ØÎÞáŒBM8{JyÐþÄ 5zÓM)|sz5BÀm:’Ñ"1Uº½r‡`¤Õmz>Ý)¸D´O± ­Ó܈¶–bÍQ+€ú_3´I­Š dpÛ;ëºÉ‡¦ÕVŽøÆÒš­IjÝûç›ïJª&~lb“Y¯4ÝbŽ'TlÇlݯyÛ¢Œü’oh60FCå\»‚£Ý—! rD¼á6¾F!Κîq˜=ÛÉÂ6ìf˜äÓohÊi‡-Ni\K…g]ŽÊrÕé Çâž©3¡%¨ÿdÑÎRÒ½’Ù+u½–-7S ¯¼Ó·4áfºKÄlèìf¢¬¢ÈšØÜ¹Ø¡”«²_•1Ãox÷%>SÛÛ:Á“æÍgS?«ÖÉýM”ûEH×£Á™¨0~S ¸Âábü‘‰o6m²Ü°TH¨vâ_†þÜVšÛÜÐK@•sÁ‹pßɧ¶úŽ¡©BÀíÈœO¦”~Õ‹ªÐÓ‹áÏžåÉìƒlT»´Û¿K-ªò]ïÇùè)Vp ”Í8¾~µÚâr5Ñø…­kLzÁ ¼€ï@}~ÏŠ†zL${¬ƒtúÊQV’bž')ŽLœÎgãØÜùÎÝX8-Þ6ÝÕ!{DQ3µÎn¼ò(¥ìð+÷u½oMg2 Ãm¼S8‘Ãnè‘«>’rR/„eaÞ¾ èWŽrU àáštï(|ÄLò9mÉóa§Õ'aÂ:LRŸÃ×/‘·ªvH-çPZ¾H>7ZŒ ˜#X¯ùsâǧ.l"Ü\÷dÙ[)ÏL‰ÜDã˜cŸu~äççX>ÌjÕ_nàÂã—ç›—Úø—=ÍöÕ´¶½}_KÊ{HÝÛ[è=BWik×k<½yÎF½¡aׂdžÎÉôð}4½2!g²‰*Àkf7†ñäe]~íö¨{cÎ^(†±”n±¼&€”N]1é}»ûí4iõ|ùL¢õY `=~1† O c®Ž|Ô_dßÎ?ý8]ÃxÔ_óôYa• ¨¾†Yá·îÁ?×$L&¼Ý_Gþsí{ ðuÍ©8úmv`MÉê>åç—ϰ(¦Ô›Êjîb×hÓÚ6Ý„¯©ç¥‚ИF,Êlú‡·‚šVgP»br;s;Y{©kó4°Dííʼn´!ø$áwG^yÆ;#îºß9ð>,¨îs:\ý$n½úhûÊþ•1çcjx«œÌ7H‹ZÚRŠÌÍwíÕl¦.¦y¹bþåoëÛ‡jåT~øç^ìËÒ&Ä2^LOŒ]漢£Y#Éð’v7/Ü/QS¨ß|@“ºÛ‰w4Œg¦˜¾äÌz‚Qõ˹’Ôð¬!jhˆ+ðY… ªKu nÂs y‚¿f|ªkÙe“LU‹ó¯ŒŒÓ¿¼¬æúVIO•®<ž³åsˆ“ •0Ü4üvì¢>®Q@ÚðF¦ŽÐg+y}@kù=>?l´S8ߥsH‡I!ïöuÖ*ø7âà¥r»XÇùô!ÝAUï¤2Õb^øÏSQA³#¼f³túã ¤G*ò Œ;ów"˜§Ù¬L¦& ·ëÜñ[½(‡•P}¤~l?Qùù‚×t#—Æâ&S¯" Øç¯zD6±±Z_¬Þ¹ÏtݯŽHÙ¸ëßY!L;lŽm».°\SÉ-s ›`hW:°j6Ê*ð)V5¬“ñLö~£f3â®wâÞ1mJ&¬‘}sÕž%Ò3Vñž=ŸNRH§à5IdT¯ªNÊçljŸnsÖò$.V@ ›2—Ù¨æÂFq20v€,›¿•˜1ʵW´è½=¡Sh z ªò÷]ó­×®¼œÄÔÄŒÜ4;B¢ëíœùìQ‹s½ùÜ,ðß.LJ„SYüÞ’» çÜ1¿ÊÎÀù‘ôÝ`aÊñÕ¢«H ?WS™}³1–\oÑ(¬âìCcþÁýÁ$î!—‹½3¨(¾`»¦o«»OÑ|rAåÁCþÜžâQ¿Æš:Ñ3Ä4¦qÙ¬sWúÏÊMaØÄœâÄü±µT×eEÀpÝQmøºÅÍÎýI:׽軰l8q ae^A"RÂt½nÝqœW"ºNê^åסÚq÷tyn:‘c)’¦Uç½ÚT))2¤ÝŸKÐZ®ŽZmžV®»„¶Z½³¦®þ³¼2…£·åtzŸ·»eeÔ)N‚äæ=:sH=b’¯Háü‰¯…ÔJÛîÊÏÜÞܽñŒÄºï¾žË ’WïB‡õçÛêCÀ7ÎA5ý⠈ݜ¤¼±Zì6î”ì#ïØeÖj‚¾&ņÝÄk`‡>a&-ôðôm™€$×O‚o‚¸Þ2ÿ©.›Íæ”%ó€]ê:Ó/6é[$îW(,cû'@Ï…Ç ËÓúã7ÍËU)µ¸{ȰlÛðç ó<r{½Èð‹Û-œA+Ê-TÚm(ÏÔ¯„2Ÿ‘yŽ#^Ý7+žœ³Ä~C—Šˆfæí ©–ePÇ=Êæ(=‚.é°¥1@¿355Y¼ÅaÁ;Ñi…´á݃Kíà.)n6@§Ž¡µÈQ³ˆ™ûFC„ÿoܼ٤9v#_¤'"UëÓ)‰Û(9A.&ñõÅQÑŠ1æ‡hm òÛòá$<¦Ü]»³+\þîÀËEW¸,”è7ïRF{qöc×Dß•[Ø–¢ÚL,Ÿ>P'ü,Œ˜TCP9L°{’GĶU«+¤¡H0œ®)T‘êgñ‘áOíZX}œ{t“ª&F4™Á#1ì‘ô6cëxø*ûÝs"oU$C¡K(Ä@c¼ñôÇv”zzc {ñ,ÚlŸ#©3î6µ]ÅRcO&á\'u7=„Ì¢ü mMo2â JÓ ôÒÓdH!±ó× àÛY~>º¾þ÷ÒIP5î¡e¨žkd?aܧäXyÈYx)ŽëýË[uI®Çveé®ê]Ã(×¨é· zûõ Šœö®X=ïôÒ{ên·ß]™P‰žpÙ¿2?LhÜïÌÖ-ˆ!² æ€AB÷‰W…Kn$íËöèëç×vy#7ˆ¼«à†ãVK2ÑݸMýÜL–£é.ñbܳÃQeޤîιà«ùFC“Ù¼B°—Ax¡Þ¨E½íº%?)±EËÔ#Ôf„ˆŸÞB'y>¢­ 26Róõã¡ä;F§"3ï'iŠªXë¥0ý¥äõ†eÏ0bãHF, 8Üë´]æ!ß³UŠÖ‰4EQõZ;š1D:Ï¥Ï/~ßól_Ò½«ù†‰ë‡ÓŒï]Ôk½”#ÁjÌAG'šB°þ6}D@íÁäË‚q軼`¢zŽMF—U?-Ù =Õ]O5­Ý7ÈESþ¯~£ßjÔÏ'O—îthFÐLËäöº’Ô“Ì&8‚}q»vì¸îìê½ÌKo‘¾êê[h);‰²‰¼§pàqå æ¡ÑÔI_öe<´k %¥J9 t…¸?׺èXèî—çËDè4@¨´37Ÿ×NÔúæ'R®ÏÅ"1g¢²¿ÑŽ’dó”.k¶žÒÿ.KÝ“%Í %enXÄ;Pݪø“ ·~zÞø‹¥ÅÈÜWÁ Dƒ›«˜˜£?8¦·c{mÒú9¡ÙúnT©üO½"Qfþ³{r<‹Â_›¾õìL,F˜fd´¬\é3€~¼…õ,Æ´Ž÷›x«'u‹`‘±µ·Ù”Nõ½èëÖUcÖ—á¸K>£á9DEë¹Y‘š·¤_1oÚ¤> ÔeWÄa2d‡ ¸¹kÊîǧ:rÁ,ôçn|DøD«Ã±íe"Íw`o,¿¹—7Ò¥ž4CBíß–7OÜGò%à;s¼˜÷DM%Zö à9ૼµÛwX÷:£`órÒ2×ôÑÄå~ÆtÓ^åöÜ`Zß^‚"3Á"øí@ÚÛC :îØ½á,t.”ê¦(ÌÐ×[(DÅ{7ê¹ÃüÁÖªû3|œÍÔ¯æG› ŠrLykünÚ¶èâf¨ù“–æÃ£ñ@ʾëÓ-¯;;GãÙVF6ø¬Y «£ÜÞÕæ ÜQ'èÝÃvHúá£E54û5Ýa.Ý=|OIæåpÂáûòáÓ& Šé^áÈKn¢Mßòʘux¼2¢íZc¯g– 9t R<æØWÆêJ&ìÞTËO6‹e¤Óiä['}ÄŸ*: (¾Mü¬@ÉÛº×*t%…>ê-Ïñ1Wˆ]¾6{u%‡c¡“Ch1±|baÝI!­–è °8K ‚â¨/}Ìöˆ`WÊ6óîi±^7Š&ÄYf¾’7–<öGªÏ—BÍu)‹'~Þ•(ƒÉ8‘˜Ñ”ozqDå “ ¡!€ÌÙ-jçÓûV3·O“ʃ¡@2oöÙEåqþÐèúsÉÑô'ú‰Ù¿~?À—P=+ÜŠ%Mƒ*´"…]Ú~(Éje‚-9dÌÇ5ý}635@êø°Î‹DDN‘Gs‚qR>b‚9Ð"Õ¹lrŠ-¬n1Sª«Œ«†ÊêŒS]ÓÒc¾Q”©ÌÅøA€^«¥ê#‹LÜÜ~K£ÊUŒcsoÀÌóEXÙõ!µ'Fƒ_Ûwx¿sqçìsêì˹ósìG4ê¤ DáÝõºyäø AIñ ïþÏ´æDWµ×&­~† ’‡AÚÜ™=®|_@ϸíqak^ßʪ´†/³¢èÃÊ‘òp²`¢;`+Z†sвÛX»\Ëàa©`ô与†55Þ—Ï„kk9AòaJ¦)ÕÕ¨![ 0Aìù6ôäº:ZØ¿Y½- Qà» l_±môV¢ýt&s°”|(¼Ç±›[ãD<Ú÷ƒìO=™É½·eYÑëÇ~HÃë ‰;à4ƒg¿á`¬3IíVôZ´cËÇÂŽä>³Ü1!ŽŒC®& ùµ2Æo'ûÛŸ¥™àØÞ⇔³ùéքט>”ã#<§‰¥ÌàÏ/Ó×ÝJSçJؤ'ÚÓÍäHž6]º)£x£Í^aÊ<ÚEWÄï®s“KZX{Šé?—À-ÚêßÛ{˜òg8%mHYÙdÉ_s{[¶ê¶¤õ”fÈSŠ#Ù¬êǨmk^0¥4¡Yåôç˜|Ò¹¶»–)©žts BtÙjQElÊJϲÃc&›~¿'3ýhã¦ôa¿¤—ªìp+Ç92HAgz¹yµU>œÜhOÆ·Ö_½íƒLýGd»º)#(†vøà³Òò§á7—,.pÒ¨à[2s´j^{ Ý·Ö˜ Œ&š«œµÝ ÑÀ‹ÊÏs?g¬˜‰’?þ„u+¢hjÎj¿ ínŽ`Û[‹ªØQ½A­l/®éò¥YP]%!ØgžOõ+48ˆàÐV>Dó»„Ê$]¬v ÿtþãþÌòcWÉÕÑ!5U±ý€ÆøM/žÔˆm‚ô›+ ñnîSo'Ôã*¬'±¾F@‹­aý„~•ó<<òa`>š¼+§„¦Êi–­9•šÚ«oÝÅ=­)„4ÿ²ŠQ¦-¨û\aÕË“¶FîZŒ„ ÊÏÜîž²cí²&G”½‚ÉÓpƒJcáûÐÚdÌCá¤P€T1uLЃ$D(/ù'tñ é¡j@Õ‰lÜúW( ‰†Ü0x]ò@Xq«‡}ª ø•N:(=¦½7™Ø2×lòz»¶®½Q‰žpðfŠSÌÜUž Áìü)C»ç¤ø f:huê­kQ Å%~öê´=×÷šÞv,§Õ–[ˆÐ#ö#vH#hü?¬¯n:Ù¦œ][X:òÊ2s6Œ¶F„¢båoWŸŠ _ìÐq±²²&Í‹,ñÈ!é©ì©PÚ›l,-wÝ¥¿´H)Õ!²%‰‹@ uA}Ð>¥˜âú‘†ÓÅñîÆÃÊuP‰€®èMhŒ1Gû^ñ õ{Ìò -*;ÒÖË5êïï>´¢®àâ‰d…«²ÞóÈTÐz ÕÚ€teÅQ 6U½ïÒ:¯-s“, oß&à^u­yEk™³^?=òÒŠ²†ë^˜ú¤×…ºÃj©N„¾¬[â6)àКµr »8Õ¨*BâÊ^`1l¿×urÕ­Y9Ès^E6WûŠw¤¬ãÃ;(~)êwL¬o7Gsa#Hc/ Îå´å!«2WX0TñÅL05yPgŠÓ ©Îòµ¹6>wçÙ'0â$\¾ìŽh&ÄQ×3ÅXÊ7¶Æ‰h³9@ž!k¯QꞪ ¶œäq,L'{‰ËÄ'•þg6Çê½DûYãìEðª g@椰ý…–‚òlû´yTQëÚE,"ñ $omo1º¿P붃"Ëp}ër”;¢†½»÷%L¢¼ ‚ÄÔ[ŸíJ0ª §ÖÌ9!¶Þs`‘R>¹s†zñ}„$ Îì*JY›²ÿ,Z ûìsKú†v[Òr?hLß…µf¶›Nd“AÔís:¡ö,Ê¢7¼¦su7ynh¥w£icñ'ð]¯õJõçièv ¿\žMâò…àûZ‹–e• q®WÅ@g6½ýÚ« úU®f»¶c÷ŠíÍ7ao,ŒøZ‘JI Ìá$ëuîê§ãw‘b²•+‰‚RኼsXµ5F&A®¸bø ÐxŽu6a³œ°#"Cø¶3†µÑË7x"MôóO‘–'ö=Ò>¦„`$’¾0D‡öçX‚Õ}å@?ßm˜s‘žÕÔƒüD:°…ŒÍ¯Œw ffL„è7©(kt–ß]Ñ´ÏþñN±<ˆ=ÿ*Zð^…÷Á.ˆCRd Š^¿‹!³„ü)2©õ#Á[GÕš`¤õ¢K£æáû·VÉâ>‚ÔÙô@Õ±@O‡€w¼Ÿ_àu¶Ì×t Ÿ¹H’U\ëjxRY†ÐJÎ^îczá–«aŒH7ˆ[AÍ0¯"5*¤Q’ÌùWD0Ϧò1+½~z+Jâԥأ>æl¬‘HÔM -×ï?ÜŠ¨ψLXìmÛ¶‹!÷U–~·¥Ùªˆ5,Y˜i{øŽÞ¶ÏŹ«'ÅÅ©Îõ ë²Bú.s¦Ð‹En¹y>";¶ÑøÉéÞío»¡ênòNµçq ,§Ç)!–Ÿóñì×µ}Ñ~(¯n-ʱ€¨Ê«÷…Ê»ö<%È™“yô‘öÅI—4$ RX 3Ë ¯›E¬:6–Å*¨Öl"yæ©Dôûq'DYÒºÅü%‹RcÁ3šê½»ö»èxýÙKVÚ.oˆPö9••4SOù*´¡:v\Ãx…oe2Éé²ÖvW’£2m¶ž©ä¼e;£ž9ªé;¥…St5 –Ûƒ'rÑ—œÉ~çÀÇæöò½9…=(Jü~5®¥dLùá˜vÄ…ï´iö[ЙU¨»õ¥3F¨ Ì>ù‡0ÔsÎÎî)¡úY‚KcÊwA<ýOÞŽ¹ȯt)(Šìn^Ýa‘Q†ï{':ÚÌP”Üdx/ùjÁ5OÖÈòø•UâûÊž³Å}ŸHÏŽGóÞ¤GŸ9;É-ò+/y•Ï^8Š¥%ȪÊKs¾†SáE¨AW2ßø9ÿsäÜØØ)Iªìã?a3ý¥²ºƒ3¾4;*÷E/ÐêÈìë®rA±¥ž¦­zvuëëv‚õ¢dz[§ h¹+žèx µ'¶Hü×BÝe'rŒ áÚ(Ïl…¼Íh½ÌÛ£”ÎI*{’·ÃSùYÏk}Ü ª)gª—ps3‡©Qt…€Ö[÷oýû./I=…©Üly†ð‘ÛŒ+,HãH‹ÊG‡É3®è'vqNójwß#´´²çŠ×9¡¥C5šÀG|ŒO|HCª33zè¸>>•  |7j¡÷Ƥ3í›ìf‡ú{•”Ч€³§Rår6l˜þÊ⇈/»Òz8ñ¤p×÷›É:èþsƒïùñ3g6Ó¹|­âÎoû±ä%´NÊ8 Èê—¶×”Ú„„o…䆻6xuàßÇ–[¬6ߨ½ e”¸6à|[¿Á~^{bÔØëÑu>‹©ˆ@£¸ü0szŒP¥_#P®›í-ª'Sïþ…$m,d²ßéúL-óƒ[U°oˆ´þÚkÓU¥ß{¾ÃÖVÌê‡S›÷+Éa½ë*yœnÊï›pM_Û¢k3üni;íÃe;ÐÎëÆúa.Gñ½’˜ˆ¾íÑ lP/âç±nZ¬àĸà%d|ÙfŠz#[)º…dÚí]Pg®Ùõâ’Z<÷WÆ`Ÿ`Ff[W¡)ÕÉ&Æ,//Y±ÇÔK‰¿ ÷J÷g¾Øðz O\"NZâ¾§†[@²—Òè—Pþ¶Í§ «ÃƒC'÷är2«1'L’L+5·¾"W >~ž»o}Ëlé´ €×æézéÐa­[ ¶N9ÄþûO§ipîMEÁsaŒ±D)éª×lEuA~œ²+ŸU‰(P ç“Äc¯1IìŸ*¦B?7¾¡Ñ‡°&¡—@|ÑDY”@H›®uœ–YCÙ7aß{@!Î/ÜÃw"!ˆG¾%¼yDu>Ê—¥tb„•ç]ö¹Žé;ýà æ)äé˜îºhU¡"YŸNø¨õ.QÌnâ¦Îï>ÏkÃ8ýh4ü5,¹?~–«7j˜¯€‹Hc’³¤1ü{O6ìñ‘ [Ä^[ðolš*T&YeŸS³ÊÚZöJ€ÕÆ’ñ( w×"(7º5_ÿ"FWA2Àëè«d¿ÓPÀuBL@ÄZÂ9¥ö”Š®11¥ä.Ç ššýô3–åD× F+æøsÖú¦Î6ü ̫"'Št+Sqtq¤ô(„òÅ#†Ë,‡ãÑ9ò2…ú=9 >V„æ,ûjBIcV,±áøéËJü¸›9V}òV _AŒ{³F‹kEÅ[*»4ç—; {µcâ3øû-èW/¼‰-L¦0Oãl-\¬"F”¸®pyŽ%È–O¦†ô’¸ä¤y޵5¬dל8ÕõÒ}½y¹*”c–ˆYøáVhl¶ŸÖ¯k âïðo§öײ#Q”³8%:˵Ú±š”X> ú ÞÑ… vñ_¹òÄ_e—'^ð=ÜÕrY*ÖékT"|Y¬†"E”ü#¤c̲‘M0ËÎ{/’ˆñHDøÜZÆÒ^ˆ×' CóWðq\)êúj¿3Ò=¡ºº%òõ;°ocº¹2ÕäÉ Á°…`ÄO#Ôh_ôôãàŠ¼.‚Vm"ÔjÞ ¥´'+6ØÚ1œ“YäX `!CzEÿr%w5L”œgÙMÉVº™ŸP®!ÍÀ²zÝEþ&ö~et?ÎOï¸Éô b®+Ò-§ÿÛ CrÄ`d}{y$ôzBDѯÇyVßÝBÊ?ûOuû¼”˜Q-cA®‘qnÆùœ ;0„;‡š-òˆöÂZ¤™ç­™®tÉF”ÈEP ‹Ô™å8½¸J”5H 1®þ„¿âZEÙ²`q@q \OE|«>°ãbu†£ ºþé©Î’³ÖÙº¤…½¦Â, £?zï’C³¡½øYUeîÊ•áðJú½~ódRw}Aø{…}ÿ;ËŽŸed¤ XpÞ½S¶ã¼¯Kr4\êæ¡¸Æ~J5¹Œô*ŸqGÀÕ×DSzóíÑõu€¤Îjçëtn[üFÐOýÌûº¾ìöµSFç*ñQh*âMn@¹D±x±¶¢Át1nÏ}ò0ŒnyA*^Ûyõ‘5 Nê)¹c½£‡FOŸýnÓk ’c~uRT)Ä=‹‹ 3 áLuà~cOí ãÝ“áü¥l”@x”³,]€ZäæÛX¹nH´c>"ÒMø«÷hjw8“5¨aÄ{?_dû††0ìjBÌ“ÍqT®·Ø?Je©R"‡ì¶Â‚–Jù¹ðÒ ‡[ ê'‡² øœ)f ¼ÂacQ„rñžâ¾õˆeq Ñz¨ùqé¥ÓûüøÖ¢"ËÝ|PaâàŸh¥åC£ ¤eFö‰¤±’æ=ÅiÄC ™ñúU’áN›4ü¤Wª“î„õâ7憾Qµ 䡨“o×nE þÏåçšMÂÐÍjWŠÅó¨dúltº)¨í‰ìóÓ¼jÌÛÒüç]DðVH8Ë6Á!ïðÇóÐ-[ÝxUçíMž1Å…Ôrë"i‚cã…K#2”ʸ«Ô4 €Ð”üû-ŽþØ{vAXÈjÕ\Z¦ ÁY°bŠÉhOoÝØåXLŸ`> lø—oÉ„ÄP]4D«éu2?+!ñUg·9^óíʹŒ5Q±Nò羸°r†‰£7ûçô¥ñC~î³i'[K`sr#WV IÀ\q§’S¼[$`Ñ›Q;û˦7Vë_9Л\£ùæåCg¾B)ãÂ׳M¤¡¢»:ÓæÂß•¾¿ ›Mæ= €•Ë„·,µåï¾KÉCÑT$W¤‡. -¿  ¯oø!³¹q.Æ“:×Úi}WNèq|uC®ôž: :÷0ÂjßvèMn|«Cà^×ìê— Ö6‰Xº½Oè!æÙ$Y[xl±‹Úïh ýÑæÆZ»$¾ÌÔ-:û³£²\ŸÞÁ$à²_ —aN)’G[ é)rWq[£BÄùÄnQ7IçXŠ_¯¹«/‰&„h¹~Ð ,Uõd :~´'±[áfzsÜæ£¿•eÈc<'0ø‘•ñ|ªZa¦K*%‰ÿºØ‰6=»°ªˆžsáb(xqÖÝpmkНK¤$.èûD´ÓZ+GßW:ïK+¹ZÃqZRoÕMdä6 ØO§÷gŽÆ« úïéöš¶£bc—5 ’¹x gOñýËEl jê¸;¾‘DÒV̯ē-ïi‚[£!€3ÞˆÄëÖ±ãÎðFnsx©el –µ‘ÍÄ%Šå^ªÉ’Ôžk˜VÕoý(©'ãlѱûžëÓ5h_×gô¿ò7ö¹¦Oó}ˆë€£?[û±PhñŽú/+ý¹/øðÌZ^oöiF‹(dÖ¸P‰¾ñÉfÔý}X8÷¯ï”–ºÆXží>öN–¨·Òqb(5Þhm@pOÐGU'XõáÃ6¬N8\° ´îڌŷHÁ® _+ìW=9j\ÔŠ¨'k"*4©¶ë²sÕ®:ú~‰¬ïU Chç³æÅ(m [ˆc[, _ñY™Þ¹Á]ZL-¶…=÷ÌVLeîÊ ÙEý1¥9ÅãÝqíá–CkìKˆ—|áãT}˜8ÏþE.Sh¼ákAð—´àZÛŽ#ÔÕVN+lxxÔ &ß“žØü8ápú‡FÎ~—(áä²ÓõI¼™ ôp]ßþø‰7ÊAÒ} 7U¶5ßðõµùHkçGôØò? Þë¬Ú·„îç°/¹¨3)Êâð^gÖiŒÚßl Õóœ%ñ™ÆbÅ¢†VƒþOá"Ý‹ö!•HáÞÀ‰ÒxãGaB„¨¤Y¼·ª€úÕLÿŠŠÿAõŠïK×\Óðk³‹uƒ« Ã"ºbû& t}è*d€®±ÎÊc£‹Â…¶ée¥•¦ÍVu§ѾäWØžFÅI%,ãËw\ó«¡Äf¶T™ÀÛulªAÍ/ûE-Ž‹ß8¡;KÇáóçNã)÷n¼›ê›kuÖPEú—AG½¢ï¿zäåç>Ëè0ðë6½/®ÝZ÷U×ÛåAĨÐ/ÂãÃk5"¯ü¨EÍz^õî 6õ¢g““˜"}­Ûµ†(¡dÌ×ë–²&÷¼øŽ€(ì‹þõͶ^ú âØ; o¹/‰ÝI½³ükŒ©ÐÖ«#ùÐ{ãÊ='q“b¾™* ‰¤c\7ûä5:—Qòì'L«TðH ¡ Í­¬µ‘…éà„‹ð°ÇÐ÷a Òa5<Ý&E\‹' ~ℹœT6äÛºÉF¦O°ëøX«¹dõIm\¡„ç•o6®‚èœôrŒ÷ ¦S\•ôD»êŸ*¼•xñSHìÓq¼Ø ”’­Œ¬*+¤MN0£ïô›dJ’å1q³8^FÚ…!|Pâ}œ:ïsµp45G¼}ô}sU´@pô¡£ç8²³KÂî+‹”¶LZ9ðœZQ’Α„ýËB >+•ʤ^Í´#/Ê\i‚J£ZÄpR ª b­ÿNSþTëîvz9½þ/Ý4Ëþd5TdQÑY-gØuØs!uXAïkk„•X°Á¡?{g~lÚ¦{JÕ «Á‰0áÙdœZü˜”GÛ ŽÆC:ç€ÑÞ öÔ 4IQ,¢˜PlL”ñ¥½ËÌ ÖrÀóúò€u\Ø%=@áDFbµ$Ç(‡'ë ‡ŒÕÍ  öÙ9ëÑà8ÊÄ0CÑJasÔ‘o4o]æ¬),²Ãó=8’ êFZ®¼§ëDö‡œè/ið áj| ·#¸{šS8|2é æ²¼U%¢ktð‡?·ä Š>nU¤Dª®/iùî;Ï¡0Íë Õè¾5:<Æp…,i2¼çuÁ ­äõL‰ÔêdÀZ[¦©š;Ai’í®¨z±#õ¼¯,ïGÐjž*E¿«Ïú$—£æÊB=Þº7ycéBýŸ‘ÏDÝ 9{ºÏÒ êñ­?¯†„n‡Pr[PŽÀÄ©jâbˆ¦Ë†"Ü ò ösˆ%v ‚làª/yRíÇû?ÕÚ_‚jQ½·œCâÝs%¦«¿‰HzQ-E›: º¹«È*Ò©~µç ¢q&ûËÒ ƒð®ÜPß§5_¼Wø¥zóá)ÔhiªÆžž°Mp{Q“!#>@x»æIq'‰‚Çí'¯3áÁ]Íÿ¹}\-¼­M³ðÌHÃöçaÉF¦H_tS…+_ÿ6/ jÄ&a…ÒϘ›ÿaØËE%ÚdpôËÜW¡¬JÅw_½æ¬­ô™Ñ* á¡‚*@¶8Ó˜²`EðÜm­©JêÊxžæ±Q¬sh˜}ÇÒçg€ã€PB1ˤ²<Ë1N°÷áQÁAè¥yË`Z1°ÍøÌT!¿ëZø ÈkƤ›¯W8l~ >W©>{‡úÁ:a“hÝË졾½9Ýôº²ZN”X™¥vœ7‡ÉßAß&xÃ: 'V¢¡Œ¥‹l’m îÀÏa¯ã—ŒÑßy=`ð•‚\dؤä@o§/(3}¨áÔí®?Ιd¥ÂYxßþMá󾄕ã¥d_îŒ?¿Ñr'W¡ïœ3õrW2Á.ÒŸÖàéh ¢Ln_‹ÿeéR£BZ¦PùPˆ"’Zæ¸Îà$9w‡o®Ñz¹½wžã¨q!¯£þ‘ÈÐo.€¸?À6‚ýÝ×t—‡y¯w,&*4Q ž¡ålŸ‘@9ø’ f* àúI f펻˜f,°™'S­Ib1BRwª^{Aø á-^ñ¢J%·É“+j¥‚A1w28V¸øà®‰GR#?"ÒÎGšKAqdð‘‡\é1"¯Œ¾ ²¡×-Wâ9æÒ ãY¤æô«¸ÄVƒ΢¾›MÙæ&±÷M›ª&¹oèUëÿ¥·b Õh<)‰‚ä’túáÞŸEø·Q³s=ľ€¤!÷éUüͤ=A’Á¾{õD$!ó%ž1KÃåÍ»a#±+øWyÌ26aÏ-Bø„·8ÀD䌘G‚™/!¼ý‚ùu‚hÃøá\Ö/Û@­—Üœj.Rœ9W± ¤³¥($$\ L)Æ,€1úžò¾L“jý­c¡dÙY8|öd‚‹ÕþŸS@GÐ4+èâ[ïtá²Î¹t å”A¦VŒd_’˜f³9¡kŸfPû»Cʘ ÍèyC9ô1Eðˆªktžaâ°ÜLª¥*~[_ô:G0ŸGú™Ì 8írÎÂ!kБdž‰ú—“{t¼p9“©Ô‰CØB蘨«ÌwªÛýÀK›'»: JD¹¸Q!K:©¹W…3’û4E¾¾TáhôI£iaîëFÅî”ÿƒÚÿ,iO @±ùhgÞVøŠ_rofU8Vûß)ŸHÑ}‘”µþ²7 P=ìôˆ¬?×a”Úy_úŽ7°|EC ÜB  ŸRV¥ÄäG¤±*,~Å®›3HkŠÖ@¾ur©ÎŠc>‘`¸Î²Þ§_Ô£sjBÝvH|OǾ'&oôŹ•²Ìë\Õ3Re ²øqá¾ ^æ(öé&Âvï\°jJèuã}öFY9ü1JR}ćËαÒòɱ oæÁ$~Bµ«ñE]üÌ<éŸN"áêA’#MÍÆÞ¥Êb·gcv1`@8RH"ÓÑ~ÞDcëÔÚ”ñ‹^~Ó0³õûXb$‚Œñ^ ƒ¤=œ‹/G7Á7 OÊ;ôÄ!{õD¹”ÑlĆ íPFÔíš•š6e!x‹LšóqJŽ9¤Jµa”ÏÙ;>é¶úAQ`±0Ùå })jM*ÏTÑ‹ì„ÀÀ”. v1»4y5¸Ëšó†­{„2UˆMOm†yHçU³ê]sû'ôCéÒ~³óLô.ñÒõgþ€EH4®tlÙ5!v›–™±okÒW…Çöwß^Ê÷Ç•þ§¿é³d£‰3àç&”‡š¾àyç¬3o~´Aç6¬=°;‡[¯€¤EÛK¼ê › (ÓE'B¯œñ‚òÒcr²BÙ°iÊæ¼_xeSoÓ§Æh>sõäùnWåk°Á”žuIdGÍÕ¬w:3'ÊCË:ã =£4Ç:DÙÇ&©ÑÚ .d9.‚šÚZ^þ¦p&-unce/£nËÐ%©çÆí]‡5-ìdlÓÄxì~usµ4æ’UW¶Á’¼ß7†¬} ½|Æç¢P¸Ì9êÜô*­Å€8)íHM!ëùšƒÌ™®c›Ô‡¿=Žf‡"j]ŽbÖÅ\ÝøÓµ9į‡Hö·Üþ@òe+€‰cpcD‰sÂN¨Š˜Nyp·÷%J$ò ¿]êh¹¹‘ÇHOh4]-®^í,œÔ˜iÜûÔ±}¹&a®>=™›Ú[nnn´PpȬ n฽éû3ƒ„î¡j >…†]žuw¨‰Ö(VF¯°Ñc× ¼–Þ{s¹ÆP#¿º£äöÿÏ* GMbhyäf`áïÎŠÔø_²—-è!ä›óÀ¹š†PèkÐHuwT^@O9p‘·ÉÇD†?sõUûxˆ3÷@iÂüÃÖ7)²J­è2‹Ê0Íç)‡Ê¦C¦‰tœW6•!hR0l;À¯V@Œƒ”o<ÓÿÍ,ŠÐ*<+ð'Iþuºã6>’•}H¬p«¬½ò¡HÖf-o»ŠÖÝ6»°Úc\¬ Ytвìk÷$Ñáô3¶â6ç3.¶«öÂa«,HÓB«^í4q~L·×Ó€2 ³ª£K˜~šäÌê^¨‘娮öÒì"?ïÆ¥S»TrZˆŠ¹ô©$<—3“4mS%ÕwÝÑ¢.@ƒjØ=~ÝR$©Üʾ^yÏãÔÎÎràЋA±Öûv$ÐdäÿüƒfpñwƒFV¦îì†;>bïO¢=œ}Èá®Æ ÈÊÜG(‰>`©tTU¡I;€«2š„®ÞÅ`-FTÞ³ŽŽ3V|`Çôuþ?›Rú~W‰y¸ØŒ'ÌA^½ùïý™£Ø·‘UG¨¤ îÈéÖ›lð9 tŸucÅæ]lÈšÒ߉¤ñ´ MÚiÕyösè²›vaæ\7}³2¡.ÙÚÐZÒØ-ˆKçªKW>ôøMuN ÅÖK¶…jì‹:ŸG [+ý"8žžLdÉ&w‰ÇW¤-psˆ5—ßblY?ÿõ !‹) hÿ!`ôÃ)Vci®=Ž·x±#R.fíÔóóéYb•F9‡a˜=ïE‹¼DOB=à ›ÃÃd«ø%ù6öžª ùÖ¾0²—=\î_ÞZÔm¬Œ±MúVOÌ ËÖºrB,ÚÆ¤SNu6 hõT @•|“\Í‘µäÆòh‡æ^îNã!g]°úfÖjáæ¯›oŸi˜2œ,),ÁFF8†ÉÃM R‘¬°Ö`;QaP¼ÉÓ2¾Àgg«±Ÿã¨%¨å‚6N(Ü¢ÉmżYl&Û…-ftàc8è­ËJ¹WÇ6 Ÿœîd:þ(ÎæwQ뱦}F¿(¬Ç›pP,U鵯i¶R7èÚä_2ù‡ÇÞBõ-d[.šÄY0U|\î8ÏiŸ#MNùš™[ Þäú$5ðµ{§S…Eøó·¯#j¾KDx†Iט‰¹ÛYá–‡‚|Ãÿ_¥ÿ£=<ÑÉŸÑ- ÌáX ÖwÉSEU.ø­˜‘È—èbòØ§Í }þއÇ©i“±Ü Ùß3.»ƒ+ê^CÑábÙøéÜ$4Ÿ)aGì½t¬å”ºþÑÔô-$šK¥—wÏǤ@ ùbÇ9,ô]ÿkÎÂ.ÙøbHF ÝLÓò•1‚‹?ÏC`ßlhq"—Àëe­ÓØ–Q…¢ª+•/0Þö¨+š¾LøÑ½©åß§xÓ¡•gÖ # ÌPYk1è¨gãLñ†‹NBèr`=8¿ÃOøöeÊÌû#Ö¥|¾0‹‰ÿdZÂKБê.ŽÝÒLr÷á¯Ò»ó©³(>Ùaë_#Çgå;`D-¥ÆÌÐõn¤Ô¶PxŒÛb2':è,¼ÌFù:`f{ —Ïü ÿãH¦Èu~è÷üb¯z‚ÊYi\•;‘i¨¾ Ýf”\³Ð¨bGÄ´AðÊ.ÉÙrˆóàúh]¤nŽlU“ç  53±c} ¢@6‡ Ö1Ê(íM'¾Ò,Þ¯Iƒ_1pÃŒøæ!$ŸFƒƒf¹XŒD)â8Ö³‰übqâí=Tôç&š+Ìædl:sÔ É¼…™ÔÓº¿l%l;¯Û!/¨d}›Øª°Û{ÛÔ$=J¡¶W6Ëã'`?ûZÚõ©!dŠzå¯?;8¼«#Ÿ½o¯n3Xõ$£Aks—3Ð]½v<êТíG–'´Å¸änžbÌ`ÛJ]Ýä1¢E`˜¸OܹÇêfæNLºZDé¹É™Š¢Ëí)ô:—‚×ßæñpU8ø L\&VâææþÞö+õ™¦`2»2hqïýM p¸ÊHëkIz&cÅÍûxÐ¥âW"ø¼? ¾t†~â!UàÏ_ü‚4T¦±¤ûQ&éÑÞ;ÿü€íîDÇ`íb‚³ØXÖFMˆ‚±Ô"5Ek0Æ?“MY¯·*c¶  Õãí°U#ÈXr ùì öœø¿øAÓYðêH g #ý Rç DAô#}\F×»gôü¸»?ÈéäB”cJ Ò´šË{i_:U¨êLªà¼ÞùxJ(„ žÖý7÷‚Êï-w–Ù5–ÀuD‘H‹(úqÀCØì °ÛÇ ³¾]3}À c¿?¿ŸjÓ×â(¹ ±zÝû¹Ð° »é,u&^?ÿäÅf/]ýˆ‡?­µq§›Ûå²7¡µêcÙ‰;ÈìûÄÒO*Yð–'¤h(˜Ãt —•³ìˆ$N›SÂ}[z;h2Qà%ú‚Ц/›Ôôwµ²_®\Y hYå×£˜Ê/p€­ÂÌZfŒoó`åÜû‰)B¸ˆ@BÓ1Gf‰r®}iPp¸‚[LÊ.s%§«¬0 -^ç2S0ñšìHKP†¡(󧹟Á©ý Bï.¨L¦‡-gLbì%šKIq­´˜Uˆ7NÓ¢;ÌùÑè¾IvÒæ™Ê>™{ÄæÍ- wÊzJâ¢z´!h-,o ®Ÿòg+·p•HØÚÓšf'íôèâf˜]¸Ü+á² ßykåÌýH™rRhÉ=þÇßF˜ý®Ô1#èX,± 0-á\ìIÏTøw‡¼­Žû.rš—\ÐÌÊ…–*"ÒŸbqÙ†|aSiÐHŽ–õ ®·.VFbí0yƒE1¡°þuÐoüŽ+¡±Äu ¤466é)jÕüß©édËF­ÎÈ¿]St?$¸¹pŽFˆuR;>°Â ϶¿¢æL¨¯< °JÔæKŽ©%å»é~â:µý<›*.dÕ“³CŒ93çÙ‡¶aÁÉW,æö´ôu·ãhâO tã&E€’ÃAYÝ;âýŒ{ö09*b$ ¹Ä$²z‘k¦«ôK!2öÁÁîÏšiÃífyƒ”èïÒ‹¤$²’WÚÀsí+ëz‚½÷g:µBòEš¾o¸1íÑzx–ø‘¤ß[è½öÉå¯@‡îëíí§¶†ØûøêFvïÒZ¬;˜A‘ùÚÁñÆdI(þwCAQðÖ½1©E4ÿaô—¹]ÁùË0Q]ÕZ•Ãò4šyÓBæ€ Éä›r|C§¶#ਆÙ2#Ip žÖø‹Ý-µºY œŒ¡±ï^0æ+«N4™Øœ;\$j2ý¿±¿Š}åÚg£èl––:Jü,ǼB3ƒŒ·aJ=ÐIh +úK™´ìIvõöbúÇ^:~“ Áò) ÈþÎÓåÕGj,yMð]Z¡õh§<¤gØ:y4’çÏSÁ`:O× ÞWv-rŽÁà !y­â˜!‚•çä|"ï™ }uAE=±¨ÕZŠ»”m3-"pËÁÚöSŒÁ­áNç}€°¹³EoÓª/z­¼<ý÷i/”²5=‚'ë1N*Ç MÜi«©¯6¼ÖÙûEæÙÂxuÝ”O`Z'Òöäü)ÊŽ³}ƒãÝ C=—Û`“ð $…A8  _âx*äõxtåÄT?ôTA–>…’‚¥ùë.¹u´Úõxá$k,zè?¨ÛãiFl’ QqÍûk—šÒѨtSФ¡ïUˆn\«cè[²˨½¨'ÉqäÞ?¡ äáÍ~0™øÓïM:å·ÒD8š² î—\¢5u9ͯ‹Òvßô©Š{šòS?û¶{„±HE”È j¼œyâÈ=Èœ˜a:»êÿ,¾ÊÜÓÏ&RÄ]`UŸ.½:9lªÎw³.òVkŸûÌw¯ž(D¶Ë2‚¯'ƒkæ —.{ÊÆôÃüKOjȦB‚u4²-m/KêP„ØèKW¯•gE½à´¥*ÔhM§ïB <Òñ6G!V¢Ž¹frÍN)úúX*`#Ò4 ±ñ¶#%S™Lœ‰x¤ÊÂcÁrrU£„DšçÍz1Ï|ªN¥lP4ïýøgûë&õR•V,ÄêÀ¿{ýhë÷em •A| %/P:ù¯ÆÌÞ”~öA—¤*ËPSŠˆôþämþÑ CÞróŒ„ç]0vèË e}5¡É‘F<Ð y… ÝÑCBÁð{Õ´šïØÏ_’_~Õ‹¹Th6ìÍêeÀÒŠìµ#ÊÕ|Dz*²kh1Ú5/Ðt&Qò?eKÔí*ŽåŒœfH®ÁÐ>fúé„JÁFKà_‡v<ªAV"SÇÁÊqÂŽý¨ÌZ¢’p±!${é–}OfˆBG›‡MòÀ&<ŸÊùÂ3ìX@GKæ1ˆãº›Ð¿Ar[¢Z ´à:ÅŸJ}¹@­¸õ·$µ¾‹úãM•ñS£ål!³ïq‹· I·<ûp°5ʵUIüEü-£ì’lÑ-ÈÐË‚<Þ•.4nŽj"ؘº9Z|LFd‚ûäèhÞ“xfBÄ OÆLÞ¶æwx]·\!É«×P ÷$,òíC °×áÛ{Û¡k¶×Ű¢N„’gM9wÇ}2 lcÿEjTaz´ýÜ14Bõ€CFÁ&A E©õÞ_YOB¥I`Ýq6ÿ¾ìkms¸dÄå1›å`¨bü•˜žY‹qúbð|QÈî`@}÷lf¸ Û¦d‡äj¢~Л`<çÃg‰¼ÛZÇ1S€H«{WÆ…0Í\}e­ÇUéMȰ>y 0¿‚å/ó|šáŒ·¤¦¯¢c¯‡t”ÑÃ+N GœËCÿì*e‰£ÜîNχÐNDZcv¦ˆ»Þ\»cºÒ-݈ݫ!¢™f‰L™û”yWÁÑ‚î€ R¸|Ú…5n­V‚šàf¬Úâ9f‹üçk~Eb½Àe©9ož;VtÖʈ3Æ ‰ÓS\Ž'w–ˆƒUkx ­YÜ}Á–^´vѺ‚3ÿ?ðN4kÊ ”/Äi‚lI£çÑW Ÿä`VÂ\îtú樗5@Œ¿«aMµÂG+y ¸ý—Í <™šK†€œç´—Òá˜ràà Ø>Xì7=ÔXmÆHeËRwv&xZÍ`¢A,“"àe„‰„©ÄÐ &~¡+…0¬@ÖÏÚ/êÜëºÜ“ƒtøc˜¼’‘‚skdÕÈL°Æô''šdF–“@o¡?”À)r¿ Ûw@iˤgZ#‘ºpþkˆèïÜDL–ÍÁV|°ûW…ð endstream endobj 158 0 obj << /Length1 1559 /Length2 8316 /Length3 0 /Length 9337 /Filter /FlateDecode >> stream xÚ·PÜ6Lq-®-%@)î®Å‹{±â$@’PŠCñÅ­¸[qwŠ+Š»§|´ï{ï}ïýÿ™ï›Ì$çÙ}vÏî9Ïž™0Ðjh³K¡ y(ÁÎÍÁ%QÕVáæpqñrpqñ`30è€ö Ù±tA08 ùC2G<ØdÍDU( älàæp ˆp Špqx¸¸„ÿE„ÂD²æoÁ@€*@ Á±d Žn0°µ âaŸ-L–ÌnaaA¶?á) li¨š#l@;ZšÛ´¡–`Âí¿R0‰Ù Ž"œœ...æp(ÌZ‚™ àFØ´@pì-øÝ2@ÍÜôwkØ 0ü/‡6Ô áb ö`Kþâ ‚`€‡ÝÚŠ*uGä/²Ê_6À߇àæàþwº¿£'Cþ›[ZBÍ!n`ˆ5À l¨Ë«p \lsð7ÑÜ}ˆ7k¶7·x ü)Ý /¥ 0èðïþà–0°#ÎÛÿî‘ówš‡c–ƒe  Žý»>Y0 dùpînœ_®êñø²C€V¿Û:;r¾†€œAвsLØÿ±Yƒ~...Aa!È rµ´áü½Ž›#è“û·ù¡/G¨#Àê¡ Ø ôðƒí7  `Î /:þass€`KÀd †`ÿ'ûƒdõ~¸Øð†ëA~ܮߟ¯Œ„BìÝþCÿsÅœ*ÚêjªŠ¬·üo§´4ÔàÁ.À`çáçpsóð^ÿGÃüwÿˆU„XA•ûpNÿ*ùíß`ú{@˜ÿK ú \€é?B7ââç²|øâþ–ûŸÿ?•ÿÎòúÿV$ïloÿÇÏôáÿã7wÛ»ýÍxP®3âa T¡³ù_ªè¯ÑUÁÎÿëUD˜?LƒÄúAÑìÂ|™Ápy°+¨FXÚü%š¿ì¯›=Ò€ÂÁ¿;7×ÿøfÌÒîá?(ó ô0Bÿ½­Ä ü=k<üsÌÜ ûáª?Àƒûa( ×?Zpr@ ˆ‡ÀC‹^+( û÷½ 8-›þ ßpÿ¹œ ÿ@§ø^>§Í¿!ÿrs´yx7þÃx°ý3@Àiÿø0œÐÀ‡t°À‡Xø? €ñRbÝþÀÿ:Kgìáiø#Û‡³úþó@® KìÙ)¨¥h€mU@óe…Ôöõ>¼Þ“÷g˜zkr”o75ýdÄ®Ny³Ãf¤Ú'7®–‰vy îëìôɸìL¾{&…‰Í~nF³²øÁæ9J$~½ WqæÙPnk34ã…­Éëµú]Î$'˜ÉÙœŽ×¿¥n¿{Q_vQjsˆÁX»Ç‹<†A!$Ä‹‹Ð"•ÚR&])51Ùªø~"9²K-¿}•Ô3ÈÿÚ;WÄö¼’ôdgÏQù,uG"q«S€JÙl0Á°Ö)GqÍäwÖàËdÒ~I/š¦¸6z¢pr¦ÿ™à~,*øJ…ç³0£ dªI_]™¤wMµ'FÕ.ìð‚´O¯ÁAËì*¦úùkƒÆpÉEÛíS„qŠ'ïœÃÆî—䆯ý˹õüjÇçK4FÆG¤TK À ï9§8©Pðó¹gR ÄJ¿í6@ú Ñeçn€–ÊçBGÔ¦ÆÔ÷ö¡ê„˜>xàZªj¼¤|µÚø "bw0©ñC*fEÚÁ˨"ÉR»ªädì¾O+¨KA´ué-·È ?Ù®_ÃÉÍ1å¬^yéü”X¯Þ¢ÅØâ ù6°0¿„»©£tÂx›âQºÙÂqú’:BdÂ}q¿ôþٰڣܭ‡lB>üÖö2%õ'ÈßtÖõ4EìjØôÍ"s'[9CJN çDÂVä–ÍÎfk¡À)Ô"Ðõ .Ò%<8ú`¯BfK߬«°ÿ‘ÝǨM¬•Ï‘Š7‹t5¥^Il;íL¡Lß²(°âQì@ ¸c8–^{ìîh´Ðiº?Á!œìýùôË>òðn9ã(µ;Û^xç™Ôo÷8WØk¹ràW«ê²/¨V²yyi˜LP†«ÃRZ¡Ð$š—ý‹†IØ`Ö$Ø7´à·ø¾$ù´ ”œÝùùHm:…±ì‡ÉˆsM…íæÕ!LÜ%þ_Lrt;!I4um?&Ãýk€|¹ ¹€¼`ƒYzh‡bðAhòF Nfvò³6u¾Í—8Kþ,ãÓ]_—iÞY‰rˆè-û)§´^ýª–¶L:L-Ä)[<¦lˆÜ\_ ðÔ›t˜õß»$¶ÿì…ß²zon§¦cpA ’N¹­»Áß8¢ã¹m=”@rUßc…žÚRâЯê(1"«÷=j:¸DY+)´gû.÷fª+%w‚ªZ«"Ûן}çÚl«íz'Ø)Ç¡Ëà#%Ð:2~*~u¡î?­Oôž^ò(rûj¬7iÞÒiÐ\ŠæÝ÷Ç9£J$̵0èÅY·&·ý±2[s_ ?çù…ãë®;ÓLX¸ÕöR¹Q𣮔óžñãÉEÔóïÚGÜ?·@_²©BA:Váψ 3z¤„Âɾrê5ÙÒËCÉKÒQBNoFæ„[‚[v ǹé‰ÑêðË3•&v&ÎãUv^YÁ[Xcv©³›žNT[–wÜ–ü©˜üý´B (ˆ•+ñÚkXJf_ùØ2QL®Ê¡½íkÔñT2þÜ\­7ÁO[ã:$XcøÃµ-OøIƒ—f!\@Ù¥:&án.Kyƒuƒs¤ú*\Ê• Š~ˆaߘ¨S=Õ‚¼¥UZûŽXw†­[á>V¬-YÆKÖ$µà8>¾sàŽD5ˆ43¤9e 뜅˜^Õm½cgó©ŠuµãK¾3º£ä5ø´_ŒC;Ч„"®÷øß„bÁ(ß»-ͳD7›Ð]ÙKÕ¼8B1Ü_”3Ó‰_?às™Mµ9.c7Kf;p×Û7-{cL¢a78ú¬nAìÅ»’ ¹8‚ƼR&Îv$7Â÷½K d#;ôûñ\‰E%£åÅUÜô‹Œk´þÑ9ÛÄq‡útÑØ¸H–¦Ýñij®Æ _ k¶V!añ®Jœ Ë}ƒ©Í•ð°Ÿ™·LÀR,ߤ¾z“ý²ÌME<‘oiYÙØMPÃe_ Û´VŽ h®/—KÀ¸¦/S¼Zb¡tÛå¨Á(æ]~³y°ßDþxFZOÞAÝaÇ#ÁnÀ·•6¤P6Ä…ö+×ü´wzNŠœøˆäÉŒX£úgǯѯ#ð¾%‡ZüȿچO3ÿšOùÈ!ꉭxd¯ÓÇñX6Ú¡3kÁ8nØ£G¶˜Òˆ5"„×I35§÷(<ųi½Ÿ92‘ž$4¿Õ³“Ëu—ffºXÆ2Üð©‡DžÍ¢œ¡!ªR%”ª<1]Ÿ¶ÎRÕϥљ3û-oå-Å:牎1•d“¤ÎÓˆ WT‚UßÕ©Žk„#óMW€«“ ]ÇwŸÙ:íØ2v¥D»aõ—þÌ?«%#@$áj]´ ”ì_÷Tñ/–Ã*¨¯OL>f“U_Áâõr ÔÏ‚ ê‹pœÝü{îN²×Í…»ÕŒôHaàX>$Ìb*‡:›â«z næÑYkÅÇ8ZÆq;Ù[€ê¦èÚÍJ¡ä\û®é¦Ìx«î;Í'Ë&t%MÚ‘'ڙߓçÚG¦Ž“-ëj;5k×zÐI€ Ñô ‚éÝ”í+1¦ÆIOá¸ì±ï‰! Kذv|Ò¶~«*åÀ3YHŸ°åøIÙ:eC3–A7‹ÙÞÒ×¶ú„ç—ý£Â¸å³6ßžÒ¿­lì•%Ûß;OßS`µm®š¡–-¸û8|yì]%5¶ò4Ò ×gÝM# aÊ£yQÙÜœ~¢[оpÔ?‘ÌóyÙS£ rÚ ˆØè‹{³úžÇqŸ•O˜'kM¬õ:«ˆ')S½ÚµBâ[ 4±IŒï$ ½`œwÏBI¼:‘8Γߎ˜XåOû‹”ï—n'·;}·°¼  ¬Í_ çy’ÝæVdºõ$(P÷¶ZcÖgàíiβe1e›P·†ÈKPg䲆¸Ëéö‡âA×÷šÍ›Aˆ™B×µ`^çEÓ›ü'X¬|Á¦ùç©{Çæ…4»­ÅIb& o‹|ÐÆQü~ØûÙ°c2O%g\e\'7а5gfŒ=À R­«¼JÕ³5Üz»; ok˜Úú†ç×nÂÚˆãS9a6A6ªìu{³hµÙ§èŸ ×¥?¸†…O垽ɜ‚ù]œß¨è¥Å£2óè
‰ÙÇ0l§ÚÎö|zàh7Ë¢’óé_,ÞÏ¥ V уƒÍ—ѺúóµC ÄôÂu¢ü¡[á Ìü•Þ\#‘¦/bnP^«½‘u>´€¼V´íÖ TƒÚõj·mm&ÌÅÒÜ)\íÛ^V<ÙÃİz-ï—dcòJ.‹Ÿ2—]6€&]g9Iãû‹ªv¿²I¬áû ÓæŽ=Õ³^9Á©)PÃÄ&I Vòä{Ž\ñò"©ÝÊxp¡:bª±v=cœ¸á³Jý~èÂù»`ÛL›w9ˆúßÞªN,ŸN&¦^é³²#Šl¬Z‰O›YŸ~x§?IɉUHŸµìoóönÃ3??*1–Š£*sáQ÷vÌ–‡½m¹3ëK§Œ°/T´´=Âã|Ff®§Œ)az-6¬üH»ÌàVéÅ©ÈI~¶ÕC+íx8Xªxm ä¾·‚B×ñìå<‰è&ï38‰€Ô¬s¢„)éÿf|¹§çì$EŒsí¦χ惓äo…æ>ús¾èlï:Nþ 念rT|%Å\èl£|fûª.ÎÅÎE]W†ÿ‚e‚¿Ì/Ö縎/ë‘&›,Z€<«–{ÖkÜŸ¢èc§)ä>ã/´,­l&´Y”KR¬ôQ!U|Âb˜ <žŸrðdk†EŠ˜ÅÞãô•ºZ þ«ñò^S½ˆp‹LeíW“ý¸ìÞa=Üjîå–uVìžÈCú÷ÒÝèÃÒŸTG'’3môµŽ˜‡¹gS„/º?ÝœšUFômõ­@iá'èÌh™q°Ðd÷–ÅÇÓÅ|ìBMgÀS`ºw²2Oúä|Ú5™6B:ìzÖKUÔBsä c`¼vÚ`¶j^•SéÞ ;ûHtÝ/î?2ŒûЦ‘Ñ%c£kêÊ›¦¾öJã´˜W÷Á‘ì˳Oûš@SEštqïBvM€ÌêáVÄ¡nî@XÞæz8ÚˆN9 1!.DÆŸÑgà Q¿¸¢¸ßMÜd\{!©òÝÿh ŠµCXÝÙ57;È–c“Ìë´Ìj7—¾rº'ú¶ïøm†eR1į”<ú.e ñ9—gk<ï]ŦcUöÈpîÒù‰‚ÿùÚwbzZƒS†^Þ7põY?úhŒç# L"?ô]SþÞ&0’ýð®áÄ…ðŒ…\ev½Ô+‹Ê²µ¨r¢±“C²âq™Æn@ÔÜF|ÂýðþîÈo0Ž|gxPTÜÇxìðIׂƒ¤¢Áíp*·V¦gG:ín rƒT0 MåàŽ=õÚød 5[…åsôý}Ezòmtññ³ðñ“ˆòYP“òö5P[ÊCEf’÷¡ŠJDø[щ{Ö=lwš{t 1ŸÏNzS£ˆ±ò5!ÍŒ‹æ3HÍj8&ú ­Èž=ºáõÑá>á,Ž×Z™íƒ‘+&°[r ¸/ŸoYvs·P=šv#ýûu°+õ Âÿ8MÑäQÈA€nB™+‰Q|¹Ôó8ðƒ ‹5Û¼Cû€# Méª1«+ظ‰íŠ)Žn=·ÖX"ã™C³SpO®·"mÙ,;¼³—™h¤r˜"¹s¨y3ö›r¤g®1·"ª6z‡¹ K'ë„—€Ç-b)OrÊ.ø×¹Õ¡FŸÑøÕSiO(9˜hê€ ÙçÍ-¸µ\Pì O2ÁIÕDéKù"·Xå³ÌUòùûC6#ž½ÐK]‰”¬»î‹q!Óæœ¡åލ°zM?Cuãô˜R™¯äóäÉ«xkº9¢ŒDi¡…"ï0h¹ ó{"Õ>ÒWÄùŽ>Q“q0ÛÂÞ½Ü{)ývXËÝEâ5«{­ò~à3AP ^Ú…©S$¢ºeú˜ú°É9o:ß|ß|§Jë0á¡s¥±f¿½óY‘üxÅ€©ëÕÏEIîÄ)Pk­î­ïQ´…CM\añsx\̘ö]¯ÿø¥õÅ/ÕØÌÏÞ±ï>]ó’ÞõÒÇDYµÉ”õ«ÆÇˆ·ÜÌ©qeÏ–uŽï~ížáð1sË™cNc;‚ŠF³˜ßÅ0)諯iµ¸BjUwôÍ®ÍWqhÝ“Ë{¢wßMÅ¥xWÊ÷;ÑÁc •Èc}ºEEJŸ!(Òá£1žc½ÍœIbˆ¬ÜáºêâyáO¶UqŠ‚_/ñ×=f\D[U툇îƒEÖÙÊVU‹s=æ¬F)ˆvèê˜Nî:Õ(Ws£{ª›_Swß'áUÈÕ&9¶»áÞgãršñ1TÚÌèñRÓ:ö¬Rû¤¯¦U~NC=Ü&Qšg1[#ŸûH¤>¶þºrFWר}=‰7æˆBýÔ!©ÔŒÄýT¤BçÔ è=µu¦ÉD‹WP²±/jøjÝ–ðçi+ûÓê<¤t4\•Љ ¿$ð¦•,jDð`y5`L0LŸà™Ù©öS‘> Üá*"8§Iþê`ÏTšÆ¸/:Ó?#•ž]4©‰”°]Ëf~vlNÿ™qëÜ6 UŽßb—ç]šñ€+ê-…ó§‘Kë?{ºRÙñ *À ×ÃòÃßËÆ7ó×u'µh ²DiG¥F©¸òrF$²Sµ/»÷Â(|ÊhZϼÜÏÄM뺆„yF%D®Ó[d:ÖuH^‡‰S]–ð"Òëð$)-Ç v m¡E¤Ãè¦ KñÇóûCFµvL[ߨ¸ž 2‘=ÅRJгC,d†—MŽÑíw¿89K æ&Z£|Ñeö9p4T3s²ë­IÅÒ0šûs‘»›L¼m]ìÄØú£sdNÄ3èKͬäX ƒ&a´šPŽìè·µM±_HˆÇ¼zcö ©ˆË•oàawá'ƒ8ÖÂÏÎü‡ÈàÕ¾Ä/ÙN¥\A÷ëùÍcžE=zRzò>Ó§\„ºÏ³/6Ú±¬D[çû:’  ´m1¤§ÝIÉ™i-‚Ö`ŠwSxy7„lDëèÎ_öêœ`K#6}_ç )’E¶ä‚òÊâ´hu¿y(ßT'åž¶óÏ*˜önŸíïX•NQdHâ9òBø¨ið9‰l­pãšÐcÊKMÔË‹XÓJWñ–r¿¸gúÅŒûYƽ¦pBE£—f^ìàúò‰­qÜí<þ¼'íf}®,ö£jÆÄíVËûícmWI ‚¬Xʃګ~7䩊ús2U»ÜÔ‡ñÛ^îˆû5n±¯ò/Ž&‹#aÐÕF:¦T‘œLEs·O •E[ì;ÝïåQŠ—t‘:E€ÖÃ0Ó ·©ˆ@o¡˜ÆÂK$äûÆ<&Îb<Ð;ó¦Ñ>{¢oq3ÑíNÎß³+šä£gµ’»Škà¹ØŸÏ„/ybÝç«f¶k0]bUo‚qey»ûÉ>RàÐÂÀñ©bžî;:¯ß/*œ Z½Ñ;ÿñÕYÕ]’ê–Ù¨Osá…ÌÝ\ùpóŠÝiηq ¯Õ(4«ûÙ ½èi'S«Q4zNV_Ëÿ{L:dÒ ùê {Ôíž|´¾TÂʨFdÖ'³&]‘e¿¡¾ Ž˜ê™)¤/«Fi?ü*%`•¿üÄKzžbâ ŒÅM~öiª¨¢ut*M½‘H½bü%ØÁ£Å¸ÞòÌb£-å *%›“¯ðJbø r*:\'ÞÎ]) Ç•Ÿ|ÜÒiz׌»Õm¼wð ŸBIâN•*s:„WÝã.ç[ßT½£F”Öë|Ê’vž.ùnR‹l+óVÿ"öÚE@?ùãš+©=‰¹‘s‡¯§ï†Ÿ¨¡Ù‰ÆÍ9­çÍß=*då'(ÞY‚ÙÞ¬5åE»òŽ7^ÿÐÒÿt]7ú˜E6?Üåk‡åbl}/¾qKly5H­ÙÕˆ÷xA[dO´¨-YºI“!5Ö±³GW@ÇÓõzîý©DŠæ„N3~:)Á;ºýêÞ%$¬5ÍöÖÑ(aAÉ®G «7 s—ǹ^Rre7äTdzlyÚp¥Qr&ŠªÓÛ7÷½Šr¾Â eö8øACÏVrä •gCUîÄ+ÜV@3–5ÇÇÔÕjD#w…å8d{5 ¼..¨ÇþõÃ]Š•Áø›ô¦·¼¾Ò›x¨9µãnGFã0vµÑ62ǾiVbSòÙh(¼SÕÚ—•ÎÕS±}2–XŒXzºÔºc±°Ð{Vv3ã0‰ÿ Z(TµÏhe±2¯CçòcEÜß®ÑëÍÊ4‚ê#hÌ÷Ò§_pOl¾ëéøö Ïg¤_è. í$>£?—6¦ê#~æÆ T“0 tc­†%ç¼”yLß“F¾Zýõc¨£Ÿhûº+Nþ»áqYåí@7Üå­øù*mé8nçÓ…òF¼ÚXVNâíÑb<ž7hµàãmX¹b&MÛ!6«_Šg¥Gê{ø Ç®E…6Xì…FNI$ Ì*]±‚i%ÚÃ#Ÿïµb‹TT„ã(®n~HÕÛÝÀ 6Ì–×ÈûÌüNX(¡;¦ÞË2g›š’T²0GãÍkÊŽI`­ÍÑø­÷örH´ÍÎÝ€üšq­©TÔEjÌ™'¿óìvÓ8õ!­À•Z’žÄÏi4„íº!]‹LnßäWuðâBÔ¢„ jŒ™ÄØrîî»øè§F÷z¼5-G‘G“DûFÕž¼&¸?…Å冧"/U?ô±‘TBAÙ“QSÎQ?wÄEëµÍCBßaâŠðÛ¥0z42çLÖï<…îjQÚNdæ¹²”rc¼rDý$9l×èir¯2&üÆ«´·÷h²ÇXÕE+ï‚=´ñ¥½¿­×Z§V1¯¯üà |Ã[çYS»79­õ:3Wê &xÝÇpºßL¦s„ÄeÔ;°˜¨;ÕÚ[Ën V/¹d aSL-Žz™«ü0~5åÈCvŸȨâe(xºÅ~Ýñ% ‰}/bjS³@?þn…Î>u,@ÀîÖ3~î3ŠŒÛhºØVˬ½ƒÔ¯X”©C‡6Ѽ”K#p:Ôî[ÚÈX AºÃÛ?Òæêl£$¯ ~a´ “8Aýe6ü+Ï=Ýs¯àê×|p\µàèL*ôögo^H`Øðë1ÂþHõI?“i­zü[Y‘¨&tHyvñ!M-þ2±S²RšUËØsn±Ø)d6¡Ê\Ê[àìÉcQ‚6Hà¦n‚„f½_‡ ¼„!£J!Ïþ†)ÙWXs0•8pÔœàˆ™ÌoZ©¶5ƒmãT07gë=ãj“ö$¸¯Ñôza$H†»¢ ÑbÃ+Í›.Sÿ~¿l©ðÕÞS›éYØí®DpÔêIºB§ØÊFõøÉ´õSf'}dÜXï|÷òØ è×£°’ë¶V Vø”9ü+£ž‡!s17Y¡m‚Š”¸á~âã|!qìÐáï¶×àîF³c·Ã,’úˆ“CðËäò›/xÇ`1¸&3VIx!W2é]2:ëôäÑ/7Uy &¾èP»b¼¥>¦¹Ðb¥³lwÔ åYÐ5á°üÃu¬‘På+c/ ™¹m ê§ÕŸØwùd{ š•=dÓ?)ïŠ70êÀkJ¥ÅБ=ZÇBu=îS±' $/hÜR“óÈ@Ívšû9ÊûÆnQ™ñ­Àa@9_r=Í5eÌ4-E׬v!Fl[QœH>ÿŽY¾“sÝy­n54¨=ˆR¼MLð…Õ‡½Wñ–+äèõŒ.Ï|%`#÷Ä´­õa2ù‘Åî`73#³äm+Ù ‰(ç²Ôõ_Ë^ ˜‚J5ó®¶nYÞuººŒ=C>WôF§?ï%•y˜ÜI kÞ•+¦ñOEœSÚõs=•bOdïε>1xQ\²ä,zQ‹Åêa¡ê> F™¥ò &x~“lK&“Ü4t'ª±p‹`AÌ^¸8âñóõ8]³Q„û%zFi²y Ô«¸\}mhCÊéÒ=À1 NHò5Â4‰"¼Æ;®bV ºÖëouVùeëˆ<¤ÉM}Ïáø*QwJb djhd´ KŽp…!_Öš¼@R…:J.ûB§l‚¾Å7>Y·$T‰Gð‹C žÕzð¶pÁdÔº¿ÿR:ÉÐC¾Àgì™&FšñO.½BY)%1 ¶O¬AóÆŽSƒ^{ ØFhÕóš™#ì·ˆËÄG¦Kw¶ŒûRÓRúC¸á. à[¼ÐÔ´WôuBÉí3b´ï[7» ž'GLØ%^Ï¿öEäG<»èÏ=1*óñ.sóz¹ t¤ÒqI¾|ÅÇöå-·Ty¡ÝWèí¹N®N&®¶#µíÈlãP1ÿJw}A…¤Å­Âõ=Øß€ªŒÅ'Õâ _¥ðemT ÎM2.]m mñ€•÷&VªÜÍ¥h‚AÞõz”n“iàEìeÊJ×Ä"T±‚¯‹–׃=A'l¢‹­÷´Évi ¾`û‡"­_Ÿâ\¶"O–ðüÝc ¢8ôZ‚Âõ¾*ºï]4ÉkPO–g*ª’¶Óùßhdô—Þæð%æŠróLm’+lSgmØr¶\îŽ+ Û›\‹H’H‰è MžÆ*4@*Ä•º²]T,/F£,Àå3ÔBŸKÒŸc¨è„áúˆ7íU~+YÜŒîrè;f—Ì)6e8OÄWó)åö÷ù°ùZÐk˜*·fŠÛ‹¬Úª¥¥ùø²Ã|—9‘_5\†”“8±Ì¯;5¶;˜ÀzÈÍ;®É‘?4tBi§_Qi”±†Þp@ä†w®+˜Œ™È¾;¡“ª²½Õ­w¯„ºãOXZÔ Aƒ4xQwˆ×pÊ—úê Ûgx³°—Y¤Kx"}í8 ò"ò*ò¶yñƒý™ZõD¾)ê¬/ìh‰€ÅÈ%¼Q‰ÇIho-4—c˜‰lª^í¼5ù¥„ ÙG å/ÒåâÜ3ˆ³jˆ¾$püžÞPI‡ãåöxëO:„äÓÑ`{hp\Ž¿fXEÉÀQK”ñ@‡Ër’Â}Qf¯…E°GƒÝ”q¶Jüd9|d”ï”t²f÷Œt9¿S}ÚˆÜkÔ4(CZ€eÓÆýÒ¸–ew?eÿ䩌&$Û8"V»oã/Q °u݈ó>«‰øÜ–ÓV0gô•Oj©iŒNá¬ý ›Ë4ó't«©ÂWß”0+Lr‹üùÆŽ.3.´óÿ?Ö endstream endobj 160 0 obj << /Length1 2074 /Length2 12817 /Length3 0 /Length 14075 /Filter /FlateDecode >> stream xÚ¶eT\ÛÒŠ»»Ó@pkÜÝÝ]hÜÝ5¸»îîž‚K€à®Á yäœ{OÎýÞûñFÑݳlUÕªY{SS¨j0‹Y8™¥Ý™ÙX€ü % EMM6 ä`Ù‘¨©5mÜíÁ4HÔÚ`W7'GþÙH¸‚Aî¯2Iû«©’“#@ÞÃÀÆ`ãægãáì@ ß \ù’ O € @ÞÉì†D-áäìãjceíþzÒÿèÌél||¬ÿ\±£“—£ßliãhaù» gV-G°œä¬^EHdV`wä}½X° ìmnÍúûMgð_J¶ßâ×:üœœ–¯¥€l,Á¯?H~n O0ÀÝÕà÷oÅÿ"$66€…¹;À leãˆô'ú«lù7~Wo€ðuÙÀߟþ½Î™…“£½Ïó¿.šUVSWCKŽñŸ¢ÿQ‹‹;yü˜Ùfv7€›ð¿TA6ÿIä_®rŽ–N¾¿ó}mÔsöüÏ Ðý‡'ô€ÿ¥ìô:À`ÝŸy7rÍ_¿ØþOý_.ÿ_Ãþ;Êÿyÿ¿9I{ØÛÿeA÷_“ÿ—ÈÁÆÞç?6¯#ìáþJ%§WR8þ_Sðß,V[Øx8ü_­œ;è•bŽV¯£ÍÌÇÂÉý·ØÆMÚÆl¡jãnnýטü-ÖúM;{G°ª“›ÍïU`fÿî•kæv¯ëÄíu:ÿR_©ô¿§J9š;Yüæ;7äê òA¾;À한`ï¿æÀÊâèäþêx­0`éäŠôûj¹¹¬b¿E#n«øÄ`•øƒø¬Rÿ  €UúzµTúñ²XÕÿ «ÆÄ `Õüñ½úþ ^«Ùôzžù?ˆóÕïuÁ8ü±þÝ-V‹A6+ø_ð5 ËÁ×,¬þ_ÃYÿ þÚkgë×Õ÷ÇâUfó/øš©Ý¿àkªöÿ‚¯¹:ü¯4dýŠã5’£‡ƒÙoöXýë„×Àêô/øš°óŸ”^C8¿®jG{°¥ûéëý8¿²Çé_u¿>”X]þÜÒoävûk¢þi%÷o¡“;ø‚qðýGú7Wÿ|íë¿àkúnÿ@®W¥Ûë’ú'£×¾¸ÙƒÜ¬ÿåðzڿýZxü ¾vÎó_ð5 ¯?ðu[±zÿ ¾¶Èç_ðµE¾Áÿ္‡ëk£ÜÿZW¯ù/þë!{ƒÍ‘V–œÌÞÚ6½íùÙ Fìż?Å1À­u÷âAΉo¹ËõI™À®’˜³ð–7=ORuÂZ¸ÎZ 2"‰X*žÇËŽO¼— ; J6šèŒ¥YP™ånæ 8@”GùþXÂgXö‚¢úNZXbK# 7ˆô§þá‘‹ 1Yuq-¢ÊÑ=ÞCè7Yû@5~¸…±>I mhd&²ü‡¶Ù{Zy}ä¶³ص½X¦‹Kƒâ¨\A 2HîM—fÄz•<ü}“ج{Dû ?2•ÆÐÞ0•ŽýXQ„N ¤z#äÊ£†×ðø”V&)½t>ÉÞu+¯bäì%<½Àð– %ËÑÒ+ä´ÔZö[‚o>OåéX0÷¼,ÝÅ{¬¹6sŸM©öaÞ+Ç âEʽ‰”XÖ‰™¶:– ël?#¼{±OÞ—æN66i!DÔ{\LqßBC Ö”×®>Ä<3!úB«HöÏ›*€ ŠIÎýgèr&޶—p¥¤5 x{Ø:AÞi»´+Å‹üæƒsžFú—ý5u>ÍÓJ³lŒÉ•º¾g³-AdžÓF¡bµ„ÏÝo„R0ÄŒf–! ŠÈ®æåéÁµ(Ð0pmŽ¢Zw4ÙNÏ/P†æe!:õû!^ªÄ>ÓùôÀ×!›gÖ 1ŠÜÏÁX|¥¥1_6À1$²XŠ>ÆÐ Ëä5šêW®1ïâ³W¼\6OY¨ðüi“Ï¿B–J×C_NãÕ  ¢µ²ÀÂÌa£úœhúS4Ôxf·÷†13”R´Ò’|òoÙÇàÃèGCSåG"šŒöšÀMÄqã`—— õBš0×™«’ðIvœY"4Q! æÚÔ\ÁºØ=+lZ÷ à‹5GÚ™ˆÁQqhiï[›Õþž«Šv_'gtâ$”ŽaþQë–Õh~a”…š@ƒÅbÁÞmDñMV__'ðù‚‡‚¬z‚>ê¶,‚kË× Ûƒƒë¢‡ÒŠ“ÈY E+…Øu Øü®é&h?³®Üš‹±®ýì‚Uf(__ŸVóAÍHB‰­À.7³Få].³MaR•Û]œ]‡½ šÑÏþfu=ãyÛMï:¬F¿”%~àzîö ˆˆ»•†~h`î{ &­¿0"¹gâfiž§s„Ú<Óg¹}YÄ“e+,!ã£uz=›H #À&gæ*`íê»ÂâÒw-6?#Žäª˜„Mž¥-uϱÉà|ëÁl_Ë`%ÄûÞFÍÅ5«ô¥±Ø$–#gk„\´Ùž—W¾Ü(÷vö䊴=Wõs!”EŹQe¹ ±BZö:|¶ŽEs5˜œ·Xÿâøˆþ9 û¦©¹Eÿ–‰á<œœX^ä|,”¹Z„@åF­Ëgyœ|z§öözö²ŒÈ©=ôËաݶ:Q>¼ob?{ö [à¹ø¤Þ÷½¦˜e5ô4V ̚DŽ›# 96ô„£8+/}h“U1µN#d±lamËÞãìÚ‘TªŸÒ<ñå› ¹7"Z>B‘èým0×úih|æ2Šl:ß)‹Ê áàïØ¨N ÑE0ðãÀdt}Î}g׫ºC„|Ï›?‡[¶³TÖº³Ë½ ³sß0¯rÒ#LÌêý8eñc ZÄ*„ J~Xö4×=J¼WÅÒÖJ˜f!óÔ4øxpQ¿%§ZtµIW¯jE.²úT±³n-/ÍyÖÔ¢ ã€rš©v‹™§,ÞÎÿîË/o²Y²ç_­û¾œpO?ø”Ä‹\Œ±„Çà¶&'|%2ž¶î8¹ò¼y hÏë?UoÜý‚iº¡Ü|úæoïÜG•Bà£ú5#°?Ç3½×SíyÂÜVšœu¢é~-AúÑÀ ”Ö0äÈŸ-‰Ž ‹Ú¬ìiÒD2£ñD‚ÒST ë6ÇgÔ¤ìn-‹v\ŽèdÊEÓ ¯Ž©æ#Q#»ï•¾IÉŠ_X¥iplуa‘¬igšIöÞ—¥:¿HNTÆx¶©Ï¤»Â½•ˆ³Q¦—ݼçq'LñY½†/õ䔓弼öÛ‘y‰Xÿ¾Ù÷êÉž1ÉëR½ý£ªX!a=xï‹Û{Ьç¹IÇA;@—I[“pÂVáûG¨!uËÅâ°¸ýKfÿ"c;gÌ$ öåK¯gûÇEA¤V’¯Tf: Ë%;•¨ŽéãvTÅ1eü#©Lÿ´“’ÏþY9RšªÆìK Ù3g&óE=ÎÔ¸ f%Ó g‚á7´ÍžÞOê÷¨õL8°¼&Zí{Ž¢À ¨ÅGG)Šˆë&ŸYç-ï~9.Jæ23£UŸ~¡c†g£5³„eèUL_%3ClN4Өư5EV ;H¢ScaœéÍ\ý;ëÈœ:ætèo.ï4õ„§ƒ†~lž8q„@øåb_ÛâšÕàûô…fdrÀ“aâÙSßë;t×ö£+²©<4¥ÚK¼§Nf{´ÏòðVÔg‘æìšÅ5V÷Îæ@Ô†õ3'æ‘#¯{FîL}ËIkž»Iï(G=孬ƿoZoäëìÊç“–hLsÜ´ÒÁ·[¤DÌ׊ïá¾]¸L<ôÃ0uäÝ›¦¶ð¾a÷g‚&“9ë§ßé“]ö®<ÔBþÈÉÒê¯ÏõÆÀÔ†ï‰\ÄžyvÎ;OvñCº:Ú=òÅ}üYà sÞ-’CCX×Þ cЬ çdu/ôH“õ2ñ„·ï%ÖÀÚØÄÐ…Ö¬ºäCF§tÚ÷u⤽±iÎ$Lyx ÔU×ʽjÕl³JuöÛPÓ¼êþŽölvWîNÚƒŒ2Ø WØ`Lâ¯Â“>9[#IÜã³ U4Œ5Ë¡‡ánÝ,‹˜MËM×î'2É÷‚t%SàH×Çø¾}ñ†ë˜Š£ì²Øˆ€ ±g@07k0OøùªùXˆb­>;³(`AvD²»Z–,2õ”('}—é­@E€ûëæš/æ·x7YOJDEçB:g=/®0ó?ÐÃEÏÕG3#"Qç…­ìÆždd $•÷!Nñö[˜™P³ „Ñu©ì.`÷Ÿñb„C©"³×©Ei¶àÆ=©>­@t6m¸Òª|{ÆS#ï‘>+Oçþ:>òÛšÿÐõHœ?GO‚U¬f&Å$‡ÃÁáïœËĹ+¢YóÑ<1ÆyúB<· í·®Ez[çªð  5j]˜èý”:yŽy!œj€ö…ÈG6ÍU=;$÷Ý µAh¨WO«j,Vg6q¡b—ï\ Ê8 ÿ³{òW÷G“ì~ï^¹}ä4ÞÔÑà²àdd ü›0¯lž½Æ‘ñð¹Ýµ=¹Í¿3êyƯæ—HÇyм)ÏÒÒî\ñÑÉOcnP1ÈN¹…°†â6“Ul~tÒãƒ?Ùv¸€žE²©ÝoC/QOL1ñåvŽ%–vÂÃ~òŸ‚K–Ÿû?\§*ZÿÔÕm‡Í÷õû ÞûuZ\^«óîóÔäyœ¶ÕË•0bW=ª!Œþp²ò-Çhi¤N¾Öâ™þí/G8ÍSª|å@̃2’Ž+ç™ÁŸbÖøzàåöÔ2pžˆbâáÃvÝÛFHa½ŽJÌc<ëé+Fx!È_%/vD°"1AÜͫ˩rÓ_×C4ÆÞ̧SRg¨^¥ÕgM>é_C†-‹úÛ£YôuZNe^U²j÷n|SñYŽ×àrÝ7¯Ü*‘}¹Á‰dÆ^€!ŽJ€äø…Åo»› z‚ѳM>ß/.ˆ›’h{„H/[.Õe°FcXL7n3Ýõ[E°sH„p K }ì!ÈÂ] ×þ*»Øþ£m}uJoƒØíz…5¹~Ó^œrCÓîÔõÓÃfuú¨¾‡‡ãÝfoõ"wŒÞ·6Èý0 ì`oYu É–µAé$.â;÷zÇFÚ”âÒ”žù}Ë÷jfCv‹í«ùr¯¬-zN$8äÕ0æGBu“ç6\ï¥ü›¦Cƒ®ä›_ù;`8¶Å¥µ1¹ oyæ”MåS“àâžË4pÁ›³ç¨DasT 4ϹqAÍçü…ûç)‰Ê#‰ð@†>•gíÄ9ÀQî£ö`©Ð2]"Çìz³ºŽ©£Î>áªÇºDŒÇ-åé.ùê ’ ÝV•T…%Ê—MzëÍt=ðqi˜ÇÖ~ zBF‡(d§ÚÙչχ›ž¯PñKnNøt)› CÖh|‹¿C`ìø2è^ñ¹ÜDª2ázP¹ˆ}!5Ì]ö™Äu¨aX¢4*<í×f‡ew s|$›yß#òà@´º¾47Zº,ªbáJ%Âúp«à¸õ¥œm­Œûº\.L¥¸J0ë7zæó¡]¥2+ÝAy*Äÿt¹³÷È®ÚL©&klwu¡SRëƒ=ì åóÃì¸Ï}AŒd`–KPÖ«@Jɶƒ© 6…Ù§Z7¹è|©g Yü–Å,¹<»9¯"óY([‹ fy &êË‚¯£9QpÀTÔ];5¦ýƒ^Ü1aÓÁ3OÆ}Äè»vŽÞóðYVrñ˜\˜f|,Õ½~wà·3ªÎn\ù3¤îæÔ±÷ão‡ZÕËÃcŠVÎŽ‘¬ü 3š}–Ê=ëÖ·éá5#7qmVO©ü˜~FjÀ| à[YF€…«É;öò“Àm_!¼È­82t™´ðøÍ‘æõl†‹-ü¶›¬ô$"BÍRñqÔŸ1½·g?Ü©pÇØØHækh¦ ¿gã³mê>L€‘䜅Ù­™.w/”EžFÙs´Ääß(+—÷~Gö":T_sþ²Úªj^t¸å)RBÁ!í”ö€$¤rdr¢û¤õ“Þ¿ðß.yòž 4zÛadûŧlYÏÐ7–t‰C17˜ È2Tê·”r·çNÇN!ó®±Tìp>>óf-Γö~bÜoouŠ\ ç1ʳ[a¶PÆ{ÏÜ;åg-&'T?Q$ ${ImÀÇ,l%Oê9/Ûú¾¡TDl“•âFuDgÑïŸÂzjk@ãe÷€¦¹j/åËKÖ‰( \ÑS³PæêgËÙà{1‹F^±EˆrL# ’.müw+›¤yqÄçxÜaªëìãj;Wî,”‡™[¦è¨:MÝ“çè'²\YO¨‰Òž 1¾Ä3éÄ #ò‰<‹’Y*•ÑVœB«ê³èGÒáã©ðI ßɶø|&&/~°7è­­†¨š}ÇM%% yÖŒ»:`Ûáç× 1L¿ C+/žêìAßýi'¹éÆ)c†édΤ¥Qíƒht-{Ít ¯…D'<Ù¦ý†ã~ß!Þ|¶Œè ¨L²HÅÚçCŠDWP…©îÓ{¬¯“ìùN|ÈB&pò„3qêòÀ'E± päD• hÈŒñ-y†õüÊhû¦Þ-ˆŽµÜA’8´÷ Þ/É y«X=aqsmb•Ûy7»À¢—5ê»;Zø†…(^^û-e«‹Ù~r”Õ±ÄKø­c‘šéÉF'l/$(—á¬=éØ@“bßAÁç¹Ë8¡øºP^I%ȵe¥1úœrÍáiRdhm/äê„z8 ÝÃ]Ö¾þèôƒÕÚH>?^é‚€‡¡µÄuj¶P.ã±hÏáES­Ïù¯o—Õaj“By$^—jÁ›u̇° ¢áûÜMyZ½yéŸhΨ¸¸Ñ"ñ-ðÈD:)MªI)½p·Ä˜ {Më忯jï‘Éìf¡Iᥭ2Ê„«)‰#;õ=Yî‹Ð –¥ÿ¼—P4’ ªeS5"¸^úŒjë@}m‡ØH¡]a²)’àÔc’(¥t­Ô6J1v×#÷Ρ.–GycbqÒ¨¹Ù©3tñõ»'9¸28¾&¤ÎfE~ïói0pw?RéÀLp;Úr)Ùíö.9GI@†÷öÞ.=OØ/ª×¸’¾˜Ï+Õ䟖Gõi }&©¶wèâ„æ¬¹i©ýÕšøz»_JŸÆ“0Ùa#ýùê/¡´x§Y®'ª¯’•SÙ†£Ç:ª}›c¶{÷=÷ ªÇG–­8ùdìU®ƒïÙ¸Ò“«) EŽês¿aÜC¢6¼¼uLðåZ™+Ê‘d—¯Fj¹Ú&åq‡Ñ&OÊ3zfŸìë÷pÞÕ/+¤7q®õ ïíØûŸm0*WkƒÈ8cáOÔà躼뫂¯¸ê`cqQÞ?OWzÕ‡åMøýšØpóäjï·“j8s¤ÝÖ4zhx×éCC¬Íþ¬O«ï+®%dF€ÐrµŒ¶5Wj0î|ÎÿãW-çÁEû’”AÃüØ4«úiaÕ–Žá}–#ž ¨˜ØšÎY"¶òhåªv ^Õ _ õÓÀáéÁ¤>·Ò¼× ?Ö¯ºQ‹G‹è>ýݾkìØz™`.—V Ùo«YÅç¶.rÂñheßï°·iÝ€°óûBu©Ô–íz#ÐŶ¤ý8ÉKç ¬Œf]g ® m߃KHéëô¿(œÐ*_3žÍgqZY¡™º–v‹¨%—,ï•1 ˜x·RÔ´7ÌbhiQEÁ*{÷íE‡Çr÷v%LÜ® ÁQÞ ~(¢.\Ò$G˜áÛqžÀ0œ›ß›g}«ô.Õøû@Þ >õD8_Ê™`ƺ¨a=5oGfȰ£7\—ïšüi!0“ýLF®5||Ÿ…«—ëp¦€m%Š›ÿ];»ð1\!ć›Ušb;IÆc[g¨X“¼•+¡Ú$dCy? ‹ FO0÷Gº:R%¢ÂšØ&î@îBœÝ©í¡¹í¼ñ*ÕK/|bbl§]KPâI€ö !Ã7æþK‹æ.4M½/È V: Šâ‘q_S¥­HÆâ†Y½d Pºp}·j”p+„ÛÐ@}†ñ•^…^{cf™žÞ3üÚ­[UÈj$õgâ\ÑrÏf¾iªOÊ_ø­û>9O‰'¡))Ñ48cñR¸Ç§°ÝNy¬õ'²˜àÀÞ«æ˜0Ã]íd ©2>CßSEY±¾pNƒè·½Ø-û… ä'È,ĥܱø¤É ;f›†ÜË]˜¥¥²‘¾Ï¦3FUy ­£ä­±}ÏLÔ«vˆ¹¾õnÚþCãi »6§…7ˆÎzÖ„µ§=œªôXŠF}« ƒ ’¯"j¤*™ÀqOJ,cû8ŒK ëÔLIOz…*߯²ì{´çŠy¼gHú]ÚçÇqGÈ ¡\Kþä‹¡aX'¤xŒa ˜ñIõ,N,¨†4\#À"uæ”nâÄ…ÔÁ-Ì¿[JäØUêÊ«²ºêý=èšgý¹ëûbLҼ„/Ì ­œÛvýÀ7Yfàý.„ë¥m!¤9Iš«÷4\ÁIž„kÄT©a£Ä¸ŽÂSŸ0¤T:£6ÿ!ÕàÂ2K¢ãO•@Ò÷Ìl¼|Tâx)—@–/ÒåU\œî8"h!õɹߛà[2ÊhI”ˆ1½”ç¾aÎ/R®2oŠæ|ê0¿Ç˜Hpà~~LHD9‚%õË ro aš¬2¿ØYb&l°4vgµä7vr€ñHÅ„B8zûBAÀ"ÃS@Ö }&á—1 pçͺ;lPN9‰qדê7F¾€†ÃÔ’ÛMÜãÌfàæíôÆÇÀS¬“}ëWiÊ-Ú06=ßMß]+²èe³Æ¿}VðoQ­4ùÜLÁÈÖŸŸÚ¶›N››zéñÄÂaheitG¯Duÿtôi†—g”‹HÀ(ÆýÁï̇´Åo8Ñ(4¨T9A=a=Á ¡øé‡Ùt¶—DüFYb‹5!\Åeƒ äek|u®_ßûU,bð\pxL¼S2ý‰èîúR6¼ËTŽ! êøÍKúÈ×Us¯E¾+PØ!ùÛESÚÌÍÔ§‰˜”/H|8€ÿZ¨N'Ø%\ü`aØJT-”¶ó¬{Õâ@¤øM?M¸~›xó¸ý(U?÷˜3³)|`aŽ$’ˆ&xäÅû®[¿xÙ¹jª‰ð)Þ—‹ô}3vî”æNRÏ9±4¿ ä\ˆ%7Ilq²cøTßÒÖT<{ÑeÒNÅÐGø4&„ ùýÙÃ0Îü ún<9ûÁ3ŸÐ™Ùc¥•! &!†{ká·x Ɇ·Š°Þ1‡å¹ñ¦í.òÙY’ņ­è¶MeÊeÆ}ŽA„Ïšväãý‰|ŒÇÏoçSfa˜U™[›ð†Ù öÇf”ÁIp {šó“û¨Û Üä{}¿ $—ïÃa¯0`Pª‡8øŽ&¯æ‹Ÿ?ޤß:©%ÎgA0ñáAvDŒU Ä¥!ïIuî÷Qñ‹w,%pÓ ·6}7wkåAdÉNé—bžBS|igÍ ¾(ë_HÛáH‡¿þº\qI•9na€õ%%ì¶ý'ÞÑD¸ "ž}ÇsÐwz…”Iü¨«•ì'¢+ãÕ°H›È'raR‘c¾±ìn«ŒAÖ¨ª-š|ßž•*Ów°ž­Á çÖ¼ÈÅ¢­9]cÙ©ŸvÊ®¡T»õ×»Ðɽûu± ñ´ ÎTÖ™‘®pöŽuXMâ Áòq¶Â——E-·uWC!l>˜ŸºzÀçEqs*-™D³ÅóEºË&ï9j±)µ œìR.à’YxÃwc76‰(‘’î'¯##ï°IRnGÉ¥[˳%Œ~i 6 Åã,9I0pfÛP`91J&ç#‚‡`„hmÚÉ}«A/–åv‘. rPQ²^3Řº¾†ÏCÏw˜Ô)w'ƒ ˆîs$#`ÃLĵp7ó|ïS¬º¹‚< I§@›«­N447ÙBmW\7sC?.ˆ·~Æü¹’¦—O‚Hz^ÿþž}ókNa7»¤‡Öîói…ìø*ì]—¼Ö#¡¹~z7(³HÏ¡ÞȤ¼sVzë“në7vá_úæ¼rêYÜz-»osPÔ:í\’n%x¬Øãn¼G^bð»â-i²[(®ŸÉ‚I<*º¼ Rwð*¾µƒÕ-öK'^ ð¬„TqpC¿=ß™Dt‹9i¿‚,™_È1— šÝó"äêàçS×7uÚ™,aššyšÊl›ÊJ~1öÌ:jÇ¡-#œW>Xg6Kú¡>¨æÏM>m^ëû/Àfç`mŠ|ž¶áIê·ZBË $Ï™?ÄŠ¿Ò\+ü¼|'l`kžiSŠFEã—b~œüQÅårb!0úDD‰CG 2ÔÄßRá“l»ÙA/«iHTI4å*€´ãä¡8Ïe~¢ ·õúVˆ†¾x¹S£Zî0{h‘ð¶{w‘µÅî%2Õ<ÂÁ*͸‹÷®B2¢2—„®í¶{9ÕÈ&ý ”Îæw"ÙÕ7¸IûÐwÝ™˜Ëk–ìž$[Iɼ=ÚIRŸ?ØAO­Ÿ`õüW”ÌÌÈèìG©©?‚£¢p…&Œcsxº¡­õC=®>¾Ë}ç|lËVm&ýåjNoE[¾ò‰{!Ë¢‘¹òîÍ¥5ԄߎGvmM¹LTÎÖ}›ÎùQMo…Žmõp¹ÐðªTH}Y‘ÌE«ˆëÊnDÁx~›Ë]:¥Ro¤Å~#,YäѳMFAûÆw3Ô)þ‡ô-H/‡Ü³[ª•_½ý‰'Æ\PÒ@,ü5B÷§ž»Õ®ý1éû^¯}4TheÃËvÅt>~!Úæd‚áVV«k2(¸Ðï î+ûBünpÒM~® ŸìÏu„x÷ dÖýƒ«E½¤ä$¤E –µ­7ïÑVÞ‹^ÞÛærG {bÓßÓš=O  ›¼*‚¬à×ö4uäb–[å M1u"Vb /+`Ÿ\­nh?x“¼gt×Ñ@G ˜2\W>ÑÞ\4¯{(ÙéD€?.'s멵ê,1yÑ!+a +¿¸‰` &Žk혾ƒa8sCpÄ‚Vâ&ìÊ‘iŸ¿F[>ê©Eâ9’s Ôº®)çA¢s5ê$–p»Ä)pû–%zuÛ=èƒpÂ#"6·mÂ0LVh¿‚µ'¡M¡=e×bùù³ò¸™!ý“&ÒäíQf0ýuçÆ!÷옙µ"7µhÁiäü†£x@Û9]¡oÄ>®iiþ§$ú ¾›ÔCÖžD¸±¼¹³]b¬X‰/;oQpõ‚ Ç¢6׋Îhò1½3õÙ‹ÌÑšoõÏ#W²mZ»èî‘‹{*w­¬§;‚<úF:ÇÙ›ðëR6Ï#?8=“_¢>Í…ž%õ 9‘3BMIj&¢~DO–YôÙˆxÏÕÐ5ÑåÒjŽœ©Ìõ¸!×v²§^ºIS2$àî¡”ugSb¦×+Lº§Ë(&ßÓ€¦»sHÁ9ÓÍ£ˆ^ë 75© ¼c÷VÃÅÚxÞ zw4½&*.«r)[‹€Uyø#T=ý& g÷ÖuÜmo_wÇÎŒëb;ƒ®å>Gžp—}UÈ(óÍruísƓƊÒOrHb~§âB_“s¬žJŒÇ…©ðZáØr£7Ê=ù׆+¼ûªˆ ¼w׌³¾ÉFïi2ÈŒ3Tš±cÆ+´è ‡á ˺ßÙÿR\,®hbê)üP&vcëÚ5Œ_)Q̇óå®O¯ÁqˆBÁ½Š™l ÓƒÖDH¡@ŒË6óªg#šž½Å+MF¿4ñ+)ÑLRòWS—`›M‹/ÄÙì€ö™–‹¢åxÅ—•EB k ‡•¦S[¤ñ͇½&åŸëP·¤·}g©ìU K¼üO¢…| ý6ùˆK¾lrÊ4åÜÜ3yâÛè´ :éã|»€‘MâRÈ ·ÕAâ';ŠIk™ÄêÈw[N˜´Sv†øïbTŠ’6=*—ÎêF S '÷1›¨”¼+ü$hŒ1lÎ99Ä´ß”¿*®.ÎC*½t#Šbÿ ¥ M.×pi …û€ÙÕU¨ê­ÜÛ¨Åv•G;4[HvK‚Eµˆ~,/|1­TYË1=»€Ô€÷nªÆéÀqÔ“> ¾ÄÕIeW]›o&ÌY‚«?Ñ56ä:¹ÇW)uBlæò –2©ºÎJÔ'ÙÙ“-×ï?É~›[ñ¿±­œõ!3ÿYDòµ¤Üt†YüØíõƒÅÁÓVQ¶]×ËÑ"UÞ«x;Hõ­aõèˆ3qû³òÙ¥G'ª}ÿrt×£Â~–o–Ÿ–-²M:¨å¡ ßIrÕ\ Q5U CH‘7ÔoÐ 8·ŽÊæPºÎ´P¡©ÏbVÌýGuN8råqFų̂$4kŽiØÛU/šIücÐ[&M uÄØBh§ÐÊN§j©‘ÅŸŠŒ“pŸÎ:<§R”G¡„Ž b\¾&jÎñÌ.Wò•,Ù¾™õ¹+˜¶ŽhÿõtD6½«+hDñ%áÔa+ ø*Æb$'q9õæ™àiù˜]üpTNnvž&|x¯=Sá!Õô¥ Â«1.é}=IóÇ ÌAzÉgô}Q’÷Å8D‘Ëx=œA+(M!8Ûƒ”Ê~ê“iüuµÂ#×EÏØ9¹4LgX[ò;4¦?ü0Œ±ñ··½ ѱZO6Tìmø¯©oºWÆ;ìà\Z¶lÓ¶x³_Èë5¾,²ï4G­§QlÇ&o奤{²Õ¯Fˆ•Ȇõ5a-Ê‘Chä–9~½&Ã(HÏ€Jý,ÍeyzÙù–œ5èËú6»3ˆ ‹p®üÙ–¶&C˜.ã~HÏm pÂýv¸­ÑƒLÊ›5³Ü•ûl=Ö…;»5É3~L {†8Rú,Ò€ßÙÒÛD±ÚÈàš^EÌ|­zùíÜ1j¡`ªÉȺj“°¦Q0—._†Öé³?s¾jçz9ÛºãËö (Iص¶%aþfµy¢°†¸ÄhZ™Ñ㘿ч»—×s‡ÊÊ_6|bköÀ.tmQûÈêGæ j ¸û}¡ÇaÅ ´þ¡ìBÌÀßÈ&ï×fKŒ”nM|B‰3ÃÔ¬dCùªW“fŠž|ùíNw‡Î7eXº}Rã .œ ”Þù?ÌÚò«“`V?Í-^ÄãÁðÝSWÀrU¡Ì(Àâ[<—Âv0VÛ~†ó_ JPa»¶’&‚è„ ggS 6 ãSݘò¨5N ¥¢ʰŠÉƒ+—u$×[ó™E7B# £5Å“ö7$oÉ­’¥·^v²,B¡fâ&øÙôû䆌–‚úý2Ôq†®öžï€³y¥ßgŸä#åéUÕpíwçf£3ŠÃ‘ªB‰Œ·ù*+†½Ã«DˆNBôNäBߊ 1\5¶ðøº"_žgÝÄ>&™¥i.[ÕÑÚn[úÙ77z5éHA%öÁ4ôQÚÍuÕNOHâß>†7Iľ“xÏP._ÐæW2p•°‚¶Þt”ÉIüÑE“=lªˆðºÈáÙqéZ^7öƒ¿pz¨v.TQa‹ÆnO‰FHEï÷l*xx‡,–ðjâË< ”Çc#*õùÆÆêd8D/b»‚—!;œû“o…öQqeùô”¦NhûÞîD¶Ñ”“„¥AðáÙŠŽ+çlÒ#mŸ¼%Vƒþe5=®sö‡daËWÄmË/{™ шÉÒ:úc;¶2ÜþrSH¬¯¯{âUÂ8"§ÒR³‰ÄËÃiB£–_n]Ó®bо~×&ïÄþº÷Ð[¯G¡®E€Êñõ³ÆÒdV\Øñ¬|Oô)BÇÄò/\8`Ï@µ­Þ8=Rµ”+¥BM,¹Jnò7à v늫)7IêñÊ‹‡SO*wÙ¹'ßNæÌ*£¹-~sŸ‚}ðHu2P•Fåþ/ mnÙ¢ÓXŒóA~¢ÃoUQZÈU”/0€[†ù©‚¸XÁ€}^„Îwé¼›j(2鱫(tÖ#wúöé,QoƦµ]eF£Å–½iöÏÚ¥Æ[d‚H‡Q+Y¨(zòÐ8lÈýgW£&xN%9­ylJ˜$J¹þÇ+:ËIÌC¤u±P]“E*ŒÎ²Î\¶e[_­hn+‘©·[ãÑXÐUòÇ\ $‘Þ`òH3ÊKšKs –©ÜÞ%!Sˆ|Ó›h˜€ÈäCŽ¿püô‘ÂɆRÌÓ—)ru>+Ý1›¤UéaàÛv°&Ù›¼iõ§96'žòÏ,@ŒÑ2JÙoþä9ÊÞmø”§û ‡ùéašUÃÔCE¾0’±þÊpÑúà¨]6©rs롘©]Œxÿ;”(eùx¹Äœ9&S}ØcÒ4Fc’˜÷¼íãÞ0¾xP©d¡*αfÑmP m›‘`*ôÚN»K—Ì5úÛ'ÐÒòÝK-¸¹ñ>ã1Þ/!AÓr£š÷ÏË &¹E¦1CˆÁ;B·»=Vr¾Xw©•ôpoE¿Ò¿ ƒ§ñžD.Êàȱ?•täY_Ñj –žmVrÞß:¬’‰TP5Wïf³Qe8Ð’Ú.›fæ'€\ÔÎÚ]:Cf¢Ð$Gü-³Ì\¨á7«»oLÍ^ç¡ò+©D«èƒš‡è&)¯×ZSvØŽØ¢­Úõ·(a'ưy¬´†ñþëNÖKT’[s!™Á\ÐèQ§µp™“µˆ¶±iZJ{‰’ôÑý/n˜ˆÇ¼y‰Ìª­8_&åá0J¸))˜Ú^†a¿=tW~>eŒòkÊ®öb›­ùè)Àᨵ *_r%IØô¾“é>}'’kOv«v‘ÄÄ É áçÞì*&àÔþ¾$Ø*$YVy ö ÅÂ;Ò_XÊézÿu†F9ìJÀþ~ä»Ù×¥ÆRj=ìú#±OôjvÜŠ‰ÿW¯ ×À9iZÃeˆû÷¡ GÂ;7·”'DÅúêC˜^çïÙtÀþ“Gaíµ¿Ô+õi%3 ò°Øð¬±ß&Q`gj•û$¨Ö¤ç*1+Žš’ÔʦVÓ ±Õ‡•P¸A‡–¬™M¶†:’ök…‹4‰úI;¾&¿ª¯"íÎÆ’hÔçà–08£äá½Qk äFý,Š4nø\ úe¬Î”K4¯\YýË¿KHrHKY’P¯.g6”“G3êÓû¶ŸáZ~AZ±B1ˆDnZUz©óïšÆ*žîLwïåeú|‡¨Icn&ð»ô§`HÙÃ;÷•ÈúùG:eilµÕ`‘º/#C~¢VI=ˆòÍæȈ`Ñ‹4Åu•êCµoœ(ùš4„¡wyøTr ¸»±ØðÇß—. ×Õ_Ìàz9"ÞǶ­ Æu†5nPiu¿‹[%é1h“Ôïè4 =vŒ|¯Iá Ž|z‡.'Ì Y³r ®þˆ ¼·úGÛrlP“–G,:°Q5ÚaæÜ µnšä‘¢u¿où­eþ°oR·èÙN‚.Ô¦- 9Íûó²²–f ¯:cK¦ä«C­{$ôûd1rÑûÃÅœOiXÍû£–†5,p·åªÑ•—P)Y0Ý£=² Tq ‚‘²RÓ¼s‡õµšº×:»gibH¶’`¬ìõý´-©Fiïš+L+Óe%À•Ñt..kÎçBæD¹—#Ʀs¿¥¯Èƒ›çŒO±Ùî¹r||û­:Úãäîà“:¤#Æâ&g&êžY]*:š¾Ú{é­µ«!¡BüÖ¦ùb™Ãåuøì,ª]£­CÐÖ5u÷¦´†ŠIRRig×îI5ŒÝŽIóa”aXÚ;õöÈ!·ñÑ\¨Ø´›iiøŒ¾”h°7ºgþ2QŽ(ˆiêÛYÖ3öXÝ髲#Öîq†÷ÅD‡\p•æûôC>óE,­Ô—(Õƒ¸7«ZmÍÚéÉ»šÇ-à­‡Œ¡í­0õ»š/Ú4{ ›zư/¶¤)Dçd¸‰Øäbã¾ÊQØÃ¬öê(å]>I‚ê¿Hßžýí‘[e endstream endobj 162 0 obj << /Length1 1398 /Length2 6092 /Length3 0 /Length 7054 /Filter /FlateDecode >> stream xÚx4\íÚ¶ Zô}ˆ^gˆÞ{ï=º1Æ ft¢×è½…½Q¢‹DA” J""$ß$oÞsÎ{þ­ï[³ÖžýÜ÷u·ç¹®=³6;‹¾¿‚#Â¢Š€£øA@I€’Ž‘…€@!vvc( ùÛNÀn ñBBpÉÿ@(yAìQh›²= ÔAÀšÞ0H•‰I! Pâo ÂK lïuè4p’€] ááïuvA¡ëü} às@b|¿Ã î/(ØбG¹@ÜÑÁö0€ … üÿ‘‚KÚ…òôõõ°wG ¼œe¹ù¾P” À‚„xù@¿FèÚ»CþŒ&@À0v"ÿr!œP¾ö^Úƒ‚!p$:Äîñ «Œ4´zø_`í¿|€?› €þ•îOô¯DPøï`{0áîa÷‡ÂNP §ª-€òCñìᎿ€ö0$oïc…Ù; ¿[·¨*ìÑþ™ ö‚z H(ì׌‚¿Ò ·Ypw‡ÀQH‚_ý)C½ `ô¾û þ9\78Âø÷Ê wtú5†£·‡  êé ÑPþƒA›þms† "@ QQâ €ø]0ö÷€üvþ6£gô@xœÐc@‚¡NôA ÒÞ@yyC‚ÿÓñÏp„‚Qˆ3Nðïìh3Äé¯5úü½ ~K š~ ð×ç_wÖh†9"à0ÿñ †…ж¢ÿåTTDøù…$ü¢@ˆ‰‰‚ÿ™Gßú§ÿˆÕ€;!µ‹Þ§¿[öùî?áü3—.Í\€ëßD·ŠÁè èÿL÷ß!ÿ?–ÿÊò¿ý¿;Rõ†Á~û¹þü?~{w(ÌÿÍ\oZ:´àÿ 5ƒü%]ˆ#ÔÛý¿½({´àÎhFóƒî ïÿe‡"U¡~G}( ìòkþ²›üÒ ‡è#Ð_Otø_>´ÈÀnè§MÍß.ZCÿ¬«#‰MHD`ïåeïO€>kôJB«Òâ÷›ÌA8… g 8!¼~,H è€Þ#4ÁÑöß& @Ð ÷Fþ6ü£ØÛË ­¼ß¬@wò÷ú·Ì!?˜`y–Št}ÙuÙ @ïËÿag}£'.Åb(Vűø$ÐE7OmÖSÑαîîx¶þRUôÌB=ϧËI?«¾‚°µ,õ"†ÊЖâ1ñè·Ó>g“#‚ÎyJ,;n‹ìsª#‰%¶%gºÙÂu”X¿ðî³Ò›ä; üœ”%‹•¨PØs€ùÈ‚…m5faEšDîe™ãm¬a2uƒùšt¡Ø•@ûÍË2)wluõUÁðP¶ðI‰Ö@½h]4-e€&KáxÚ-Ujæ $‡¢È¹RUf +m™{4Ç–ØÚ÷¹’áÎÔaïg]¥°;z_·z7!Dd û×Nl·ó¿ ÝmK‹sákÈfSd¯wÄ8Ëù\/ +À¦fà4õ¬üÔ™CTT^Xhc¾mMÀ}!l³3}÷Ò.1/$d)yÿTQTÆä1îdööZ:@AÇN¡¯¥Ëâºá=~OàëÓ!h9s:ül¯íU×XÌ1‚í#ÕlXŠywÞÁà~ê ‘ó7d¦<*¢¨F­ED¯-wraò\ˆaQ!¶~gšÔy‰¥iÖdSa’bc²Ecí]Œ]| É(…Ð9Rb ·OUŒÏÞÖŠ¾~"Þ&“) |¸2}|KÙà0™´qëŽAÿ·Û6)^Ç‚Bx6ZE=\ì*t95Q÷S ­)×{гaÇb kEŠ?LBl)*Z9%~Oúº{Öò¹È\¡)ö,.£w6dËöékÆîÃI 9/§º93wýÔ[®Î±)ÆÔ$GX#Ë`5­É"J«ÃTq&–ÃöÚ]gmx^ý¯ZϾ‚,/¤îo‡yØìµè~öø^í©¨ 'á\Š’ÞªÓ åÄ&Œ5 Q&ú*NNd?Ý.´Àpqj%؆Éi½¥.9°d{ÔOÖt¥æq|>À°JÑÑÈ ¨9¾À* Wÿî£/üî½ ¹žè+Do㧇»ÖfžôÊá:í8±÷×+N£ÛÈJ,’ç_—˜ë«kßmÙ µß©k¯B¨g€hüfi)G÷9{»¼iƒ:D—çWfºÌŒ†y*'åG¹íÉs˜gß92¶r`̪?©­B´É0 ]@ϘT ¾”×MóÆÀˆ”.­åe+ý\x‘ >Nóˆ^§©»:GÌMÁ090ÏZ,ë§:›ÃÚëj÷èmÒ7ЊH­j½ÑÙ$; Ïçžß½ûÕì‡-jÎL*·÷õ—œoy®{Õ(ž×swLžm}ýjl/üAµ†•Ùs*î‡]K[:‹JS7S¨ì¯Û”jbykº6ýƒH©cŒ2ÂÑ”½âÓQx˜&×ß”Á,•QÐ(3þN–/rx«¢¦Çеæ[kfÍŒáÑmC¥Ì¥2ìeZâ9y[¾Âêñ’n7rêD'Ø®‚Æ¥¾ fuS®ïrE¹£Æ¨z€øB8Âï{ Sühءј‰¾F“S ÖdÕ’.ŠðÓ„E}Wñ‘à¡O_ò”eqû÷%¦6mv½bùƒ\õˆètré5}Î$ͧã+!>©ó|Ãlͬ.&:rgMré< ‘b>Ä‹42+ú dð–Iº|©nšˆÍ±pfœñ‡&q§Žh¿AyLD»wd3Q-Plng–8 ?R°ô*Í0à)Åé©ÓÇÀ˜i2e—wgÒÛ%¹¹›Š™ãû ÁW/‡— ‘BNœJ§þk› ¶#ÏæžÉ[ƒ™ÄÓátbžœ´;·´b¯ï»éÉÐý¨‘_0¤U¾ƒñ­ê#T­Ñì¸a¾Éå!ÃóIJ|Ë‚sxqõbrioÎ Ñn³Èö‚#áÃé‰5™8,3yû²#2²O0esÓ†;ÅøÃ`¨=Ñ)æFí§åé¦ ê°n#Öb©ä½Ìko £8‘“\QE²•øJ®ñ^]nrãTkÔÌE…µ ÎHp`ìÌð¨|Ñ\ï#†<(ñ­›*°ý¤|te«yîý|`5‘nU8Ægvä·êÇ…ŒöÅ ÝRêðíµ¦o·'G"zí«ò¬Ïöäæù1NPŰôRÑÔŸz±>ý¶8†_7I¤l°ôX <.ðûRè/Ú½D/ºú¤Êšdíõoû,1I¸ú“%Q·¨§ù{HÑ).nÒ]i@Ӓdž‘Öµ«ùjJr¬ìáAÕ2_–½Æ¬ ÑÄñ2Cý=¶í’?»ßpv'©Ü[Ú+s䬸ÐKÏßÞJøJC~Àþ%)8f¹—>aé ¡ûxTýƒkºÁmbñ©—gˉàñÓ–)å2fm|¾¶zÙ›­wg§­…Ü9_q= yWÀþ™CeEù·(lu^'ÜØñË7áÉMqnè9Ï ¦§Ï«PF•£¥$Žr«æTØ\Qƒnºf-/T—¤÷ƒ›²>º5­ à®q½Ÿ²Zb'b*\ߺGvb$L’|„¹G æ^Vݧ5øÐAUYìÿ˜"(=ù­3ùgÞ‡)¥ELƒ*-à¤7Ï—±Òt†ëΩPKQX×ê¼èe}¥æ>ºŸvYÕDƒ ˉ>áZ·€ŠhR^&dðí6pm·›ÎYW«¬…‰…k9Ñ›Q¬yÙÉ|Wc 䬾?m®(çê½;Ùý™6@ð]SërÀ¬öÀƒÈ ö8å[LÃ÷ùI¾mUŽÎÄ%¯¨aáùÂ|˜²ögƒXÂa­úüpÄY×I7§ô´E÷:„ÿ$xIœP$–À£"r/Û1æK)")+ÐZ©Z–í–*~€3Ët,ÏSDÆÜm×ø7üºßÃŽ&Ê&ê'âÉCZ¾Ϋ‰<  âp…øØÇ“ý„Ú¦qÏ^ý¼¾t'¢„ÙOY³S °–Û¥tVÙ>3xe¡Ûöxy>”Ä4†‹‹LÃñ0HÆb˜xÆýe‡¡Ä¸ø£üܤUTâVSó:Þu5¤¦  ©V{ƸÁì÷"ùÀ¾ÊÌà#{@äÜ]ÍçíKæ¥t%ýÂ( à`ÏSì¹{qC–é÷J#”塚 Oóð¨Wå©©üÚ¸–ãóÙKoÎq.¿SJ6‹å$ÁSOh.ùµgWv¤+O’gbM›Ñ s"‘j@"Ã>ÍUŠ—1ªƒÏ=ýV!Íy A‹g?Ì\«sÅ´•3`ùÁékÆ·ÜøðOçSwšæ»2ÈrSV´'׉5>Ÿ|´Q†VÞX–K"¥¿kêgùB¹fs”‘u盈iäÓŒIü¾§~XðÅõlÌÏ„<ôÿ™~½ ýœ=džÄ— ¦¤àíé<Œ¼Î ¡| |}2A®5B"dJ£ábù_ç Ó>gÕ·d/1†|T­¤§m–d¡ 6:â1X|!„.t´½Äú¡O Û î'Ÿ4cÍò ›Ya?m÷fC„+6 ¨>ö*2™ž=d;–P)é Nq•!xd-¨Ù{è{»Þ–DDø¢Lõ“ó\oÓýÇŠ¹{Ûù‡ •5äݞϧŽÇI˜×_®ÍÜoÁgŠ)M™þz¦ït÷ ~í)ß‚ÑP‘èÙV×m†'^¥–©«}>vï »Z¿'Òœõ†ø]¨±ý,¢,ÛŸ.nŸ¼ó:ãE%Í»©Õ‰Ü pCc^j¸Ìݺ>'š[Ì<ãÝÕ8‚»¾8ƒq†â\òËËòˆÀmÝòºîÙ…«OeÍY^¹gB¾ŒÉO¨‰Í~²Îš*©ï]>ãF3Ÿz[Úÿ²@×›È>w¿¬²{H |ø3&J·¹l0&ôœ´ÍMAÃ:†›Fç’$¤Õ¨dç§EÖ2¼….<'7yž£’Ç&‰q$•ó,A²y÷šãÅhôúäPiöEÓ ÝQùÏýåjÞ 0q]h«tñCN÷C¤t®ÉÇ0 ÛÌ ƒ®·_·9ËuóÕš?oÜΑ%ƪœxéjÝL?6—Õ,[V> •ѽŒºÕí'bL ô¤q°à’e]çÙ{Ô3:áVé/|‰ØŒ¿Äx=Sßê'JVöÝl¿´. %ì¦O¡:p|¨’F5V6ðÈ7l™v#—L€Êtc×…UpàÆææÆf}ÿ ž ûìÔV|UOÚ©„m–%2~ú]øñy¶3Ì þIºÁNn¶ÃF%• Çé­–Ó' Æéž=ª3âØ¶?æÈÒzáop–¸k%rHIÏ÷ℹŸlYBÅ^OQ7<ýÂÉC}ãij| ~‚’¦ŸOp;Ä“«r§å.Ÿr:k¯?ÊÜØ,¹ô¿ÇµUoÇþ6°šž´‚¥Ë€©@È\÷k?sÚU¬á­÷zôYeý³%jæ­³žC¢ÁS¶+¶ç2”tïà äöå…ÁܤÖÂÕtYÄûó óì<:Áê t¹Ë ¥”ŸnäÜõòè¦mQºÞ©’Ñ‘öÆ‚£Œ¨Ì#5΋M%«¬nì:îsœ¶Ìyd%Üó\íWùe-wtt:Zš"‰<‡}8ZëÇ.”Ö?ëb´j?@6ùë{¦R#»:¦.õ ñò?®«*6y”ݨúÕäRŸµSk2:š·¦kÖ¢"F!¬áÊ<ǃ:ÒÓçi7K9»áJô‘sYhð§$Àìž}ý$e7Oµ»£0§.ÙüìɆ…:£(½e³S}$°Í7bÄÐÆb&–˜à ›jå›,uååS:9\ÿ™ìvJý5vU™Îðþ‘aÅœóåób5­%}—¦‡ºÍ–mØc¶û±¡JxÇÆÔk³Nø»øÒsY ×a·ìU@ šœ]7«lvÁ†ø8$á¸oC¬*CÉ6u…ÜœJìOÞšbÂCH÷›O|6ö{ÏB´VÌ tæÖ„å“«tN¬¿IšÑJQ’ù0§D‘æÜ6ß”º©Èœ†WaN‘, ¿¡!%WÄb\ ¸óI}ˆunb½ý,"MfÆ<þÇ›4‘æ—ñ¡^¡:(Y™úhž­0%¬ž‡6Dݨ!z¯ÆbgëåPyæõé-«³‹¥¢Qí0̃ˆbýt1ŠóÜ[-@JËùþÛÓ™D&©Þܬ›¤®Þefõût_UzØ$׫Ñ)˜¦Ê*j"ДÝÅÁ<ã}§e0 ¤e›«™‘9û‚ü¸vá‡Ð´ÞX¬fyí{-ª·*ü¨0u0"Bv\bº9^ÕÄ[KVö¢¶îå5£X|“ 2<ïÙBÕ°ÿÁt\ã¢%‘k5/çMœAR‘×lÉ1Ù A É-½ñx3WÕª·—Ä ³÷‰Šëqt|>¬s¹Ò *"¶ÖD_¦Jà_Žò­'­‡ 0_›ÝÒ[J¥‹u'HxšTwŒohÙC3ƒÐ•v½·ƒ÷ƒ3|w° TG±DüR*˜™ä8ÊJ'ä1xKr ’Ü(w½Eñ ÷>“V¬s vÕÐ^iÕ. …|Bqm`žÓþœ•}X+ÈÎ@+ø}É«­oåè‚ô8âàSŽÐ›Aq ›…ŠÎ]:E0oˆJ/¯á¨Hy,Lâ̼]_vî|†¯¡º+)×ÊXJÁ12Ñ›» )¹[–½¯Ñ“ s3»r++©êÆ7¯çŒxþ‰±œº€„ª_Ú¤âù¢îЏ6ÂÑu¹H,L#K˜{žîKÖ ŠÓ<Ó‘J‚WE¬ñXw/×1A´,0£q,²Î0û"<(Î>æ²äª ê?S•CÜtÕ'‘Ø<©cÍïsNWŒœ09´¬ÿ)éLJÑÆ Y¯*]ø[/âá¦ox'Û‹uaâýŸE¶z8vo˜sØ^®Û…óKP–}Ði‚„Ê-õŒîÏ6´Üb"=tÙÆ²Ž/w8îÅ¿ùع_c»/$=s9‘5Ì‹Mzˆbè¯n°œ*hŒ¥Õ,þQ¥'_Ê®“ª¾ö‘UÞ²äƒ=oE×.è°53p¢cªJ5ù9Éë¦ñAÈLBÖ)+¸ê€túr°õLÓZ󳣨µ:º| ˆµ¢yçìSÊAÑȨ%Õœv¼Kf’9U÷BDÌjýGú=ö\õ4+ ¾Z¿É 3d=Òï¨L½PZU‹lk;féöÄ‘KÅö¢Ów£0ÜùÖf\ŒøÍ'cMjÞå|Ñp1&S¹ýÎW÷Ãã&{XµdÛ¥žÈºþv¤ï€ítœ 0žEkM8nzœÕæÃÌ7gÏÀF'•a.)V™cNàE|75äÑ¼ÒøAØV<¾Þ·/väcxi9më•¢4JYZ7JX‚¾ Ý)qkÞ½a{fðiFIû¬ä4µÚ/Çÿ}O9c”jÛZþm¢‡¬‘Û*é²ÑA­RvØ$C„>ßÙ/™ßÖ[p¬?‡C0ãYÕ²Mè\×kp"ýãQ>~ó’ÞŽ©ÔÞüm)Ÿ;²¦W?uàÝíÓ‹¶^‚Õû½çõ=Ù5®DÚ«¬Å¤‡KÛã”Ïå,ïkíTnš;Þo¹òð ¤úí#“ ‰‚°O-þȦ^¾Ïl=C«Ð-B‚€«ÆmkWãÀåUJ‡{çù·,óü§ÒæÙ°! Ú·y‘lGC…C;®¡(ùÀ™Ûþf²½Ç±Û²W©õ»þò;C?ÛM6®ð~¿RP—fKû+:ˆUÁX8ü’;ŽoËWżùœ‰ÇïXŒ½Òí½½o…Ñ?¹ÃšrÁéýi,ˆŠEvEø;°9‘f ë©Íü³Œ»Üó¹ü/ô’Ûô®„H +û›Iü^íà1Ç áù*:O§nvÝÝtæ³.VÃòŽÏ¤Ús4üç­To÷ïÇyxUºé¾Ç‘ï‡p¼|"œ™‹C]ì ²3†qï zŽ\®-¿¬f½+ÔâM£I¹ä\n@V<8á¤Ã£ll¯øšó~×!Öà9ÝÙqƒŒ¼ÈuèBK€ëC‹Aººù]€B+ÀJ—²8>r÷zë‚Ze—o b*4K&£Cƒ à¦äÓ˜¾/•œ¥3Yši“Å.¾Jg%é50ëx¡wóu&õ>^À÷pÛ©+8£Æ‚ãzýÝÒÒEòá¾Ìy†ÅÝÜæóËWÇû| "ð1uÕøLÁ¹ë×ñ¹DÖöHf]ÁŸd™AbK©0Ý«Z烠-U}q¦¬eµ‡Æ@¼.|Ž[§Œ=¥ì¾ÙI–w fÜ¿4Ìa;Ü©"ëOç5D¼m5ºb¾WtcÀ°B­òy*ý~î[µëÉYä»Ç´}dû‹½8Äîν|þ.û+1–ñS{%Ò~AZ*Œø·þäáX‚Ý"õ¤Sð埞¡›¾#ž¯4¸åŸÆ­‹—¦æmÚ£žÄq®ºŸmÊQâç7´­‘Å=x¹[p‡…Aãp7¹ùù3U­Ã¯ÑV« ð³´Ž0™EþßáéÄÕUën¬Ñz’øw¢/}· æ°|â`N1ÜV­ñ’¦Ï_˜—ô!2ò.B÷癟R.“Å›žF÷9ˆR~KNºß5cé;ª+'Ã5>ö‰ª¿ð¢ 3”šˆúä’k±ñyåÆëüã6Ì¿ª2•Òê~ǽ£@¥É0£/Ù´YŒWSùŠÔ‡%ï0»tcçÎÏy TidƒJe‡B2ð¨,Oou;é» Ý ]\–SdðÍyN{¤“Öƒrf–ûvïðζ4î%ëЬaÏ«Ópã•WÓÁ[ä{÷T¬”NÆ.K-í %¢"‘wª_>£«ÌÞuÕaIë˜ ~Ã"›8Ú>-­iWVAG Ò#Æ¡¥/à˜¦|™{pv8žüÚ ê endstream endobj 164 0 obj << /Length1 1880 /Length2 14391 /Length3 0 /Length 15558 /Filter /FlateDecode >> stream xÚøP\ÛÖ€‹âÜ]wwww—àÐ@ãÒ¸  @°Á]‚ îÁÝ=¸»ÛeË9{Ÿÿ½ª{««èõ sޱªjr5MfqK's Œ“#˜™…M ©¬%ÏÎ`cãdacã@¤¦Öíÿ‘#Rë]Ý@NŽÿ²tšßdRfà7Ce'G€‚»=€ÀÎ#ÀÎ+ÀÆà`cãÿ¡“«@ÊÌd Pf(89Ý©%œ½]AÖ6à·<ÿyÐYÐØùùy™þtˆ;]AfŽe3° Ðá-£…™=@ÓÉ{ÿO:!0ØY€•ÕÓÓ“ÅÌÁÅÉÕZ„ž à Û4€n@W %à–*fÀ¿[cA¤hÙ€ÜþRh:Y=Í\€7=Èèèöæâîh t¼ehÊ+TŽ+ýeÀøûpì,ìÿ ÷·÷@Ž:›YX898›9zƒ­V { @UF‰ìf˜9Zþahfïæôæoæa²733ø³t3€Œ¸:Àì­Ã¿ûs³p9ƒÝXÜ@öôÈúG˜·c–v´”trp:‚Ýÿ¨O ä ´x;woÖ¿/×ÎÑÉÓÑ÷?dr´´ú£ KwgVmG‹;P^êo›7â?2k ÀÍÆÆÆÇÁº€^6¬$Ðòvþ©dÿCüÖƒ¿¯³“3Àê­  ?È øö…èëfæ€]Ýþ¾ÿVü/!²³,A`€9ÐäˆøOô71Ðê/~»Wà=ÛÛø±Øþøü÷ÉèmÂ,í½ÿ1ÿóŠYµÔee´%ÿnù¿J '/€/3'7€™ƒ› ÀÎÎÁà}{ðÿß8jf ¿ëø—¯¼£•€ÿ¯rßÎé?%{ü=t/=àc©8½M.@÷Ï ²q³Y¼ýaÿÿ<îºüÿ›ò?¢ü¿úÿ­HÆÝÞþO=Ý_ÿ?z3½÷ßo“ë~Ûe§·]pü¿¦ºÀ¿VWh rwø¿Zy°ÙÛ6ˆ;Z¿M43; ×_r› È h©[Øü55ɵÿØ7{#PÍÉ ôÇæÍ‹íÿèÞ–ÌÂîí-âö6šª€o;ô¿y¥-œ,ÿX6n€™««™7âÛ]¿7À—ým+-^3€•ÅÑ üæxëÑ`åäŠøÇÅòðX%þýE¼VɈÀ*õñX¥ÿK¼ÜVÅèÍRåz³Tý/ñqX5ÿ!®·yý‡ÞòéþCoQôþKüo:³èMgþ½e°ø/q¿é,œìߎð?’?N’Õò_È`þ 9¬Vÿ· ­ÿ…o%Úü¹Þµñv¶þ;ú› ô/|«Ôî_øVŽý¿ð­V‡ðmCYÿêíÀêô/|«Ìù_øVŠë¿ð-¯Û¿ðíîÀÿ·2Üÿ…oexü ßÊðü9Þòzÿ‰ÿ3Nî®®oïÖ?÷þmÖþþÈ@/ ⬓…`¨mMhË]•8‘'óö(JßEÔ‚î–4Ç®z°¤Ðý%g^ô¼xÇôNôý:æ!Gñkƒ.›ñš_Z´îB] ¬•ù&“ß8¦ðá›’;ÇŽb{»)§£¥5îi£Æ/Ï+±)z<&—ó홌}Y!šÆÊÛ ›SxÚú#d¨Ñ˜hx|>>Nd¨ÐVñŒÖJ‰jñ©é6y*· ±ÑãD™ýû´Þ!îß}‹¥L 4¢ƒgÅ«Œ‘Ô½.BEÓqÀõV—4þãgºà«–ÐtænÚ¢”‚™ò[ãr[1òÖrýëн)Ð’ëŸ)ÎÖ߉gy™Óþ6dh—*þµ¤UàÃÉM[ÚUV&‹%,ó©gþÌÄQh K†¢ŸRõÀD‚±–[RæTZÓP:V½šæ¥ïû„Å»¡è×X“D+Éf FÄ·xÛ9{“•à1pµv~K7š59ZÔù#é!e°N>±ÏØÉ°,?('eø‘µ…–µéfë!Dõ A·åC¶Ó,ûe_îP´‰ìÇžYÄ®ÈoÕfÈJÎfКÉÌÅEø¹Ö»õþà‹æ 1_š¤’qý©ëLÓHyÄ¿¥\7Œ ÕÔsÓ&ñP„Ñkh­ÔG|Ÿ§ê#Ðkz²}æ™nÊk‰võ°U|R™ÿXŽKŒ±S˜Xy’ïÇÚ!ž®€Ó5Ñ(ÍöšÒžZkª/µW Z ªóÕOˆ¹_ɲtÔãE!Vö8 .ÊÊ9yJÝó!‹‡FMý1kÜòjZ ~“Vlæ%ó_·owWSŽ( Ã[±˜c^Lý*Û$ lF‘%Bn8,9Úú3M¡H–G„¹øUš0“O3T©ehÛ;SÏ^:f€Æì‘å"„CÇÆ$`3 £ÝŸÑó dÐýäs¨ó²àXùÎFïE[°€¥×ŒŒW¯’Ê7^9ÍgW®©]k-éÚ¶0I4¯ç‘dã+œ1⌒MEeá£<×8¿‰MÓ¶Ë$®V‡¦q}v¤â-âWÞØßÝ“´BR÷¢°ú”¸¸ bSEÍvjº!U±½Îërr¾èˆ,Ïz~£÷#»8Câ'²§eˆó´K':m‡‚‘ŠŽ{Õ勯íI¬é¼ìû2¯±ybe~7šú~^|já¹ú+êÄç,4Ÿ„<NqêC±ÏvÙ±“dë—“–¬APeF߬/{>s Ýô >FR¯%:ŽéÒ…`s»Ëã®ÑL®ZæÉ¿Ë·Ò­j—¥ÜÁ¶pr]C™_ì—|ƒÕA…ú1¡¤z]Rùeæ‹éó¾Íºž›¬8Eí&õ.Z|ßH Å„ÍI³ÐëX^^ÌJÊì$J¢4x­±±¨02Œ’$$©uæôO gÎÜ%e Ó®‹äøüçi²%ß Ym&]f½jù)!3Ax¶þñã½T÷Y[=H(ýí7–%ã:F•õ%yúÅ"g EŸ¸FÓ¡†lL¬‰Ô­¿æïšÁƒUÖ“ñS4Q@J1œSõ—¶d`þöö6Ìó«BäK£ûzS|ÎT÷¼b=Ÿ(e2ͦüüšQÏÃÃ-+ª„îJÉÑp ö#–ñÒ踭wз<¼æÓÚá|O狎°²6*_ÀðèÖF 6`éâŽ+‚6ˆ{Wä·½IÐv~S!ä…ñn¾É)“>ßI«Àm»¦óllì;nžåPVHK|—s¡°ã (œÝ9rü–°HGàþ„Cdä‚OŽ ÷ÓÇw˜„ùȨ“—LCT¬ÇhØ—VEY<9dÔôÔƒæ+| ¶%Ù!<ð d§8é?\†¤Õ™%ÉPFÜ’¦_¥>T\ü0,ÖàÄÀy°!×_=äoVþ¨^7šÄª3cY»Q ‰°ÒÅø"±» …óý^—€&Dþü4x™XþÚ9Süºˆ¡©Ðͤ [Õ½‡Atqc‚–_…¡mW¬Ë1+K³¶+d´Ñ¢*1Ѳ.R:œ¯w†¹²ðá=5®›ò~ª¦,Ïá¨^>>¸fž¿ à­Àë5B¿þ0ràZQD£ž4Çö¾-}B\Ùè›ÕŒÞŽh½—i4¨é.mçÌQ[äáôCî2õ`ã3ÝD‡–h7²OÇ ›7@¡Hò?ãùɘF@϶W°ÝZì6l9æj,‡tÈß|t®óiŠûp»k5-].^W ¨WõLžØü4'ð7 Çùùa.nKƒîÕK»²º€ÚXËp‡áIǨgáM3륇˜m£ðè뺉R’XxÁm©g·Êd#\¨¿Ì²¥ž BSü`Ô‰gtÿÎé(õO3åb‹îìÀCÖÜâsssÒ@EFœôt—Õ2++ õàØPôNSX DÇ=l%´9'Ö¨pZϘ]$„rc]¬Ü/f5Å#êÏ£6HP“¾ ÙŸpÐ×ѱpBçëÂnÛ¬_òÒ?"=¿†´‘×XסÑZu‹ºÔz6G‚ç2s fÁ·×4°PÙLB”Ïô¿õS™|Rï{}¢ÇÛc`áw ¿S³“'åCôg×WÕ†ëR8»=¾8\™i¸²¯mº>=Ua‰IFÐ!g6 €ë7^5ŒÙ ãGÁ˜§¾3íhÖµ3kE·§RVwäëkÂ~Ñ %êsˆÐ›Oç‰tíïÞGuËbĸyÚ¦ &Ú•©!Yo²žá× ÃÍ¢]Þ|61Ò† Í®ïLò9 KDÖ:e¢Ò)™àǰ9Y2Xûq÷ŠNòˆÅý»m­¡:3¤î2\y¼6)kg1z³q⛟ùίHãç=Ô³$:Ò^Ÿ¶‡¤¸ÍUwŽ7¿ß¡8ŸÓûÐ]>jUé¯ÈÈÍAÕ_È⢢Ñ)_²×šg 6›âuìÜ„í=ÌWÇò ¡øüj~u¶šPûžM׊ÐÐøËÃãd\W¡ê>è´j>€´ÅcNuòW ¦¨~Iù' ·\Ë^?íe…­”üÐúŒÇôëNèÑ™ÆÒ¦7 ¥ ûËò ˜[D'¼§AVŠ-µŒnÍ9R>Ùnç½°Å/õ\Œûmm‘Û"âŽÎZ¬³ 4z¯±Ó+9KZ±LbZ!a‚žeH/·%ÓY'U¥>¿Z¦ŠÖqÇ|€3·Ð+v Â>ýg×f[÷r¦3¦TxÉ7\=hˆcÑë˜r ²Æ¬´`ÝWÝç‰Á§ÝQwbnó^hx|þ'•ßÐ1u4Óßý(3–gyÂ…w#Xý~HèqdMéâv{ЧÙý ÕRÓœ©lµSã³"(k-Û»¬lkAp)²þØØmWl7DY#‰¡J™^ˆš›?®VÒTAáî’^¥ì#§œãƒú Ì$N[W'Á™¨TΪC5b]/ ægÁf$.j‹?µÇÂZ ‰™à Ö­Tž!nè„ *g¯Žrû€_ ”N“€ú^Z>ÎÍWz‚:÷º•†Šrn6, •&²íDää+ÐEnÄ&ß«MôÏ Xó±—åΨ寬"M0‘)Â6 g¹?3òKObrhõÀ7þÚ‘¬;‹Umz^;ƒU9u‡r1 a}/!t&¶^Ë¡ÄÕgÜÝ6Säe÷ŽÍÖqV–úû¦PÈ»ÁëÐrûI«!"‡ÎëÙÍ bÛ¸o¹{G»b7ç1ƒ¦÷m®%mä¨Ú9œÜ&,*³¹Nž>Ï‹¨ñRa°þðÒòTWWâ=<ÅZh¾8/Aä Å'̶ÝÉu=ŠSï5r?qY`tŠêIoTy8¥uÛ3LeöÅj8íE’òÝÇ|’GÝsÔu-ž¯Õ„MEòȘ%hí’ç‰wº( À|_Übr¼%ŠmÉË9&(õÛÝêûs­Û-«‡>Å;¦ÐZqmÒ «qJûËôjYºÜ]®/WîT©oÌòv ÕšàìvúyrázøÓ”qßÉÀ© BÖŸÓ‡ª{l1>ºú«´ÖêŠÏ+~šñÈ/QXýÖT"Ë®ðèÁâ‡wa>š  ƒå”0ïëXmÕw=Ù²¢™ÐåJý'¯»sçpöjß?`ÔÃ.•:‹92yvsÍ⎸A ôz©¤ÿÈÄÛQÔ3ã |@Dˆ…v{ÒÕ?ÍÒx#z±jê6‡ öæ~£Š4÷-†cÝ1ɬ:^zYÉ™< ª zËi'À²®PRГμ‚áNYJ†‚J:ÈÇÒAž‘^ß¾ø {K^­ KšûE·áW ¡74§ Vo&ñbÙu&~ÉßÊ|U<Ôd¿hMÝR0ãÿá³¢Ûá–7ôeÌRª AOî3ÃÐr)3Á¶-žÓk™Úñ™Öц¨¨ZôðÝAÛpEžÛ„£À-2n-¦¿Ä½•ÄH8ÑÅÿü»q®!‘m ®ÆŽO õ)òûrØMªK²ø@Wâ2”ÔadÓ>—ŠD©;ÂEǦ7mÜÇȹ¼éWÑŠ‚ØdѮᄉïÓ¬ËöËïíWh2v± 1#5ât=%Èó®núøå¹=õä<°–kZµ)úSÉ®BÖ?©àw.Ãb6q]¤‡­0¬Àõ\ ûdióÄ91*Q¬?WݾÑ4×z „`¸û—¹¸Uw3©ÿ®’ù.ªÑ&ë`–Û~· Z'Üþ&êìýthâ5n¥§ô9NCý6_ -\{™™§¸´¿Ðô“Q·¶/ |F®kEàÙwÒà ®2ܤ´qµÙýl0£?¡´¤z^˜ë­P®žHOÜ¡ ÍA%¤×ßbC+ùN•´ fœ5ã„ìµWÜñ=ÜD¸@G|/à4ß.ÉËqÇÑ…ô0öc¢Ïi­±mÓþ"±×§)sÑàùòÕ0.'äիߪ Åg·ù7µ/»1®)ÓSRБáý|¤vM/¢øZi0'Lê…ú»ïä›÷Ck%¤÷aÚh\[ ÌßáV©jö N¸Èð[ü¢¼+,³°H!ø9›Öf©ÔŸoÎÖ—<ÔŽýuÕ¦×`î¬F#[¡¨ Â0-[Š$·@°é+(I ´—·Ðs`0eÌGðäΦÑüΕvH¹t$€‰aÑÝ|Ö”†Bô÷æïs¤é’ø!* ¦T×L*QD ½>×=’ßãäÆö#£ )ˆ_§M ~¿ïòG5ÝäDiËeåXŠûèFOoŒU¼ sº)I^Î`ÇÑè¿Ðá÷&÷UöÇÅ7î‘Ys‘MÔpÙ³vöêi@3ŽûÉ[™‡úæØŒ"Kç| 6âyïÈ”îÇgDú]2› ¯EbRg€‚A%¸À`º¡ ÅúË÷UÓ:ѧ¥Ïð™jáQ’H’¡Íß..é•f¤¥Ñ»–'O 55G!œÁªæ‘ïJ ¿Âk ³.<^=¹ýšè½îí ‹¾©—‰JÖªYÉàÝ|z·ÌbvœL'I>¿)eÞy@<œ']âE¸`K}Ü8¡ÜÛuª¨ûœÀ~‘³š¼›ÃªokËfá侸÷êV@ 1[hBú½¤ûs C|w×6‰¶(îé®  ¤¦‡—ë¼,88•tK#¨ÿÁ)Õ\žKÔåøŠ:F÷;-åÛ³XMðßxbë[ †ªÜÔL›EÏ¢ŠŽäÙê,ˆlß-qâl3´> ¿æ#ÔØwL>qž/_ ”mˆ’¤oeõ¾Mgßlf›6n¹“ూMhÚ‘Zj* 7ƒS²3E2^ÛðÓ_¬J=‰ÌDüL_Ÿˆ¿ȸíÊÞÖK-NgúnùŒgã¶9ÇÍ œrãM8Y:j%[޾ùýÇVùÚÔü·3É+LŸmTÈ9§îN‡Ì£ÈÕ‹t6ªy˜ê€!½¯ió-+ÈÞ•À›tö0ßàþE‚C$pNDkú%Ú'…r àŸìš>Sb+§‘. ¹DÝÒFƒ9> 5&ɳM˜ü ØÀEË#`†ª«5ýLµÃÓßXî1°©C´vÏÃ7’v”gv—SòÃ!úÞ’6š*’o¾Ô•ùXŒÊ—ž}úc_þÃa‚Ñ {6&t*ÆA‡³nFÌ“ðèis¹“O”Ôö(å­ï=Ê|¸ë1áf—y.œòNФ`s »”÷O ½®ø×ãliú}b躯ë3R7½PäY _´‹ü•¯sb{£š°tXyíQêš̱H—`YFCßH®¯E¡ cåÛß¿L5S“¥ãÑm0Q«±Ã„rÚ‰µjâ¸ã;« Æ„e’åãòù©-ÒOaç\ipë<‡_Tú¯Ã1&Ÿq)éÝäDØ™;í³­ÊäóVWMa³Tâ3ƒ˜û®˜”º5×¥öÌï°¦Ÿ4{öÆ„(Á3 ò“ƒrLÜNøîÆë~ã߀šÙq#4:q^©Drh{À‚Ÿ¿Ýö<"¸%Tûá—wžléÞ‘ ›~'Nk†ì•-Ð)„Œ±ëœÀIÞxùÀŒ=8ÛꉊÓFY°zb°ó ÉE,ö³Îyý\2^[ï#3cþýçP¨ÕûÒQß9;a*~é™ ÆÈ;A¡ ýäB¶¯m?Ñ6™áL´ Ä£Ú²¹*#PùôؾçM‚7¹=S \£e~r/ˆï³¹›eÑÎl|Í$öHá~ ×3•P)ºùÚEB‚æ§SÌáÛð`ع ’¿$Qóœí± í4÷:\”¤°nà"ýúlâˆ9ž÷ÝPAy¤Äþ!³"´ †¹Á¼¿³1xØ5íèÆù™(œz_÷ŽpFÇò”ÌI N쩘êªKövD°0ö™w¼oVtñjé¥'Cq–.¯ÜÐg†+þûÛ\?Æy•™CâÃ4*X'ΣU'z]iH¦Oj„×sdJïO ôRe9.~úh¶8ÀkÐUs­L… p§Û<ý¬8ú0 j áÑš)fR0‘c@al=E=U‡¬)F/Í=݉&«¥—Ês»wëÇ nd:I.g¬+:®µRñkõ³'åÞ÷h¯“nt!Ü”Â2•ã×¼^\Áµ,ãÔOqYA#}öÕœ_ÝÉ@FQ+–ÙEŧŸhÅ7œ¼aY±,o°ä¡¡ÝÎJ]DTÖ^tWë3§I¶a‡|S®À6‡dcENRQ‡&LVd=Ô2 ­oIâMRIŽ£Y†:vL÷ ¦Šw™³ˆEíyØÜ+º]ŸKäå[µN:z«Ö‹S+q®O䙬ø8&ðþ¥[vqUYÚ^Z¿Nðe®ºæìS¥"ÌàïßOÏ6»»;=Çúušî4ßx’¬ â™~¥Šªµéæìjɶšœë/*@,Ø@Þ]3µ>œ¼áj&ÙÎÉ1ÜjO:)5!êN§Tm›@FûÈö@êœ+a`Þz{²pCÖ¦"$ —:ä ý Ï#vml8å2[Â0)Xyz&)Ù.éCj%âúºæ2•$ku€‘°Ã_U 2@WŸPô\2'ÂÞì^)*iXè1’°Xk>Àjœ$KëqëîÔkw[ýºu‰þ—r#”ÌÆTEU'Ùæpjû¼O¸Œ3ŠœðÏ©æÚQtyWäæoa÷@[kJcØ‘"5ÞsŠîos¨žŒ RÞ2…Ãâߤ3!˜djŽ·ØôHij»˜ÇFtòó±TmBŽs’p¶¾êUMNyÀJïÑùXLžŠùåÕ,Ù‡ßC°Íé‹ÛÝT[ÔD,yÈ»; ˜]½<6&¬mìbÄi«è|œ¡r ßèiÛ6®5wúÈt®qD}Ñ”ãü‹‡CĹŽ=]Ç®d6àùšAï›]N h²ó,«ÌÎ$7¢Uþ“ÏMŠ×âÁÓíÕò>VWʇèŽ1B‘¸ÚÿâúrG¡jÃår“’² ä™jˆH»ÆhÄàîûìúçÚ±rù ©Gî÷É?YŽ T°_ñQ&«p©µ€ƒ±)ƒú¾[1Ûà ¤§~ô’¼B~Ì)¾JÂó­h ëDèÏ7àlí¹Rè“ÇøÆ4~i›¥Ù{ƒ1MÏ@ä„;åÑ~êæ¾C‚4Äœei/å†$•‹Ù42‹=Œá)N{ä†q5æXöÎ ÊÎUí:ôË ß—iÍ£>.[H«eI¼ËïwåÈDý84(¼Ð°TòÍõÛC¼'"#»ïÁ«Å*üè–Á;6b)Cá`æYœü3¦o)¥Üñ<¨Bckå«N4ùö?gu,È‚– 6Õo/œ–³!&¿æØ U,~Ò=žF^XÞÉÕtA­PlÀí}oûš÷Q%ðè3ŸÖjŸ¶’Ž4œÖù‡ÈÜ•q;ÏF)m Š Fjíì×)0,8· ª›»/ÞÀé“äebû&'úVW’âñVj|Ž6’T¤Æö.YÍ ÊÅë`ÚÔ“µºËD—§‘ê³Ùßý XµëènW÷LŸ™5ìL½ÇgE_‰/œ=]ù¼©ãy¯(HOá^(”$h²'?´Êucÿô­Ò† ŠŒˆ…Ôy¹ó¾qYÿÝ)Ÿyï<Ï€vênÚ×-¸ÚÔyƒ†9O’»ì4rùbž)Zú©´‹÷ñÅ©õæØ]ÛÛ—'Så¦iÓ¶/tþ_¹q%OÝñ«ÆM¾y4—g…üB¬l°*6ûÎë´À1¿ÿí·`(ºvH‚ÀÐ|1¯BôÚØL`µ3g\6ñI‰½¿*²r¾bﮡÇÔ? úåÚ*Œ"T™5݉…Õ;„¶õBäæâð·Q:Šg‹ p`&€•sŒÎ×(…ÖLÓ—ÞòÑbœÅ¯ nþÅl„3y¸«ÐjüØØF™\Pz ²xz ¿!,)ÃÐÿ‚÷ž?ÂLÑmêb§w§* MWÊG‹u8Á‘t(6>¿Îïȳ¹ýÎ7«®UŽ.6cÅßÁ†²7€O ‰¬EÀÎ*6¿r#Êè.'ß ´lÏIü:£'#+ˆÙc>f³Ð°.É*ãŒYA‘¦ÂuEßž=à•9§uUõªàŸ&–÷k~$º @$i³ ß»ò93‡ ª\)#jÞÂúÿR o[Î<7ÞÌ™VáËÊ_öŠ¿¨&!ú/cu|Lp®9Ôž-ø Š!QáÅQ÷̱§Jáˆ{­ÙjR—¶Í¿åÓúA¿ 1½!’ðóšó§poñô^b¦g6ïR*Ï>Н¨`ø³á8¸ƒ|\³ ä`¾¬ŠÉW¡E–ꇪ'½4÷`~`©òñxí÷£žÛY®ŠÂª0C^¶ù¼ò ÅzíÖb°ÇVK÷ÞIÖù<Š ߸HËÔ¸ÁAˆåâü޼ï4±h…ÑFˆ÷„IrŸ9Bsb ]á¼ÈxÒκøs䌢—:1ÿëó¤9’G¥ó½ Èt’ØoÂ(‚å`ßqíÚFRiÖö˜dyظO±$÷ i¢ ûÚ{}ð½×X+Úe«á6¹7;P¶4¹?e'‚Cíè»TÙË5œš*&T,áÃW~®ÑÜE;í´ðçhÑ ¸FÉÜß1u¹°ÅÄÖE §©%ÀÜy`ôXÿu¶Þ¬•%ó³4ùU;s§?J;L |Pw¹ ït_Ša„©½‰.l†Üº¾ó Sïºý›3îŠb…àY¯ƒÄÿ¥b½ˆVDOK'G3±Ô]䄪ªŠ'qBT8ÈíY™ÇvÞ@>Êw؆k_äÈë@P¸ÿéÀwAÅ××kÇÏ ¯@+¦Pömæàs·ð³|ëå×oÛ‚Sþ4†(œ^­ëØòiýº] 2܇Äéû™“#?±ÌK¯_ýQ•¸3.”ªCqV¢S|¤§£ÕcHžÏص-Åxm.yì÷–²csð¸-G%ž|T÷Ÿ”®:H½-³ÊÉçNDHXâã¬ì-/§$L¶¦æ:p|ú³cFÛ Ñ϶.ÄÃïÊ‹{”OÆÑ±ÔMåu4%žÖ ,m}š ÃNØh¦±EšÂT4b+}¸çJn‰$ÕÝôÍ 6Ÿ{±Üå.|¨ØTÿ"€7Èžçwzâ9ñÓí§žSåƒÍƒ¦8™È#Â÷zšøÐ¶Š9¾2ŠsçEÆ›¾°ÉYÿñô±8@dC î ‚¿J|~ÆÖ`Ú—"ÇÜM2zZöÝߦõ¬çÖ‰®_Ùo›(ÏÔCw¯MU©ŒJÅüjQmæ3'€¨?WtnYUÅáúž”y†b§÷Ã@®%7×…º´n‘ ,IÌ–5éÝÓYÉ ñµšhœ^Æ€UV(Ò›Ï7°¨YKÚ¸N×$ cÛÐrÕ#êÑÅ¥2¾'¬úLâ;å†LËX³‚#g m÷ý…y–ö‰|'D| g-^#^ƒ¸U!V[@N;Š!Ÿ4’ Ÿ<œ´4Äm“ªX{™Ñ²EI"Úëê\ºœ0Ꭹ þAõ·^zñþT•†b%¤Aý>Y³*机ºø×ÅK'´| |#jR¨A~+ã©¥NV|«ŸMï&#ò¸š¸jwRŒ*¨~§:5 åÜ]¨‹£G®êK0Ìæ'ÌLxóÕôD¼LÃY ¢ç+–Ó[LÅc¤cL3áóoocÙºÆÍ”óëöÇ埰'5­>‰@KniÜ9Œ;»p.±ÅQo̹,HqŽñVgš’¡ Wcßïl-0oóÇ ´‡+…ß%ß/{v÷ð&±u›uEícAzÔñ†h¦aËâÇøŸÈËòJH ãV6^ˆ6HÐuÄUÛ³:œŠv<ð,ø‘èU\B„ôÖˆžsç|ŽÞc¢£åòßÅÙø´Í>ßÓär4°ÁÑ)ÄÏJ¼žê—åD>œ|zP© Óœ°@NMLC\Uyu¡@ØõEfÓ™ð€:éGf#WfL—ËŒ¬£XÎåÓﺑÔ3j¿Ã’8&÷7¹TG7êké'£C¡{û1ˆ´êOi‚ZšS®é‡8"YƒoÚÀµüüÓáéÓ–ˆ4Û„Ü"–Œ™ÖoÃSÒl½ ÃD\–5zÔ-â¢ÐÛ…Þ]c½N¬bäáE. ÂX¹8š¿ÑôZ~銂¿~ò]®!­#~ÜÂv¸s¨@³”åj4vaOæ»ñ”¤,4-T¯pQ#“/aØ(]K ØPá`:$®2ECK&yr†›ûîì—LìÐ<ë>‡¼cê³Æñ¬ Ï´?Õ:üô"ßk?!Ã]Ã#™í†>”…©LG ŽJèßy¹QψѪ÷¤X"»ý^dkÉ!{sa¹„NEÇ«šúµç“!‚Cf©!Lûç©Ù+˜Œ†3/F=£÷^…K™ƒY˜'±Â_Å¡ùD6öÜ€¶d‡×@\ÝíÛ”}ů™XV{ëYŒúö³£ê D´¾ƒÆª &Ärý©Ð çrùobi4Ò-® -^Ìu¥·#¼)x±“}.“á׺îe:œ¨üF”ŠôçÌ-ò<ŠÞ×á÷ H/&&CLǃÀu:ˆÃ¼g ‰úEyÒõ^Wx ~-Dük"Aì †Jws ¿Ÿó×ÝS„3i} 0ögq¼ nfGR{òE(nË!rØßWîšÌH‰Ç2¿=;裧VTÂÉíèt1 8ä6ÊÜÎþðV–ï’¼š¶MÁÔ™Ceƒ.S@ÑrÄ’]’ÿ’¤ÙÜ[º‰ªŽzÃgýôSTƒ9•k} Óó¥#¾ˆ‘ß”¾ò#G É|k΀F޶ö/R)µ»1«Ýî,Hù_š‘!È(5Ÿ=Þ;ãb×—’§%(" tw@#Þ˜íÖL—wÌ11êp o‹ZwG.æñ@º³g¸ª Úb l×êLt.¶Dˆ`ú&=íZÏœV)©6&êÑWî‹7X8™¦>BQµ² # .Û©šM> >ÔÁÇ"êLqv?¼Ažøˆ’# ½0Ju·r^0¾S—÷¼?Y8Ò†_æ][œ#øP½ÀõÃð#ÓYOà>æ];ôÒ`b!qU_…„ÂHg-0-‹ Ú};ÐêÌíKÇ÷–9ŠÎžxZ¯ ä(%cŠù¬þƒ©y›B¿Smm`Úá"uCHDô܋޺QŽßÝnEψuk¬p÷˜WŠ$âIs‘bÍö1:bZ×%aÒüxRy#lbì‡*üŒÎIò/½ Ï'‚6hOŒ“éÛÝßÔ<ÉêÃë¸Itw™å6š5<¿¯/óÉ­ÄüHêüB’âö¬ìöÚ¢v¢æÈi.‰Šn$õ"ÕÆ>„/±6uîô}@<1çñ=t™eîUrBœØj…‡XyGþ¸AM×âEr^ÇÜ‘Ÿž&u2Z/û%ì÷¾kºÔîG¦üŒÊ\âã¦é¤è*Q‰²»Ù…c.1¼ÑõGd¸W”6>2Ñõ™˜ê4LR4àÃå-¢ÉacÚWáq¡pEšÓʨ-AIk8wž(Ð/Ì(ý$0YDÑ…ªw]pä'ÝÖf×ýN_?OŒ|Ï‘ƒÆÈ:w÷sP¸p`l/:„~Éþ똂ëIœ +Po­àE.á°Ý\é·—W ˆ?å„( KßÉC÷þÔ`-²iÝNK%á>ÀšÈ~W>*…hr>²@Þ}q'ëÞËü³’Rïhœh›êwЦlù’š[oÕ¡MmN‰qLé¶™s«¨AV^(èì=»ò®Jô"áŠ~²Ji™€Vt‹}ûiü¢ïê»vC3ÓH|×U¯&Þ8ã]ç<[ŠC=öñãW>˜Åƒ)˜òʱ<¹1k‰Å«+::jœ\/ƒìJ ÓŽWU$%É~uð8¸)9†lØ}£pÏüÀ$£/ïK9ÃÍ]Œ;Z§U+3>É=³ôë>kÎrº àÏc›pÛô]\îäxB.‡‰=†XŸ‹úw½N°9ÐékúÎ RØ™e²ÅaÝ~o‹d€Âo ¨}òj€2(ÄDÍ/$t’ÎQ}èºM‰ød,½f]-2Ó3-ÆÔB2HeÐCn£À‰1`j~ÍCgcïŸÊ¾vEšeÈ%“œ(Ì 1´æè¹™“ãÛÉWíþ±ó"fv=‹ß~5ov6½ÔbŸÿ0MÆ i‹Z¢á 9J?mNÁN½ Ò °~àÏùþ#9ÿ(KE|”D©bó1®ºL監Æ?¯½ç…S5]}EDÏ=8/&a¦0­ƒÑ é«É—Ë…,5WíW\ä„bçìâ¦Dä½/M÷¯¿JÃ'¦§jÓƒŽŒnTÐæ\®“äm‡.Ê`6e=Í+—»ªQ6P¼>½ß§ê$–{ÕEš3ºoŽç!åi–È]ZN4{ä»J9+žJ4^Vu†=œ3`5«‘B†Š†‹¯Ÿ™ ó¡xžäÇ7ÞÈó&Ï\;†²ÆÒfYR9%v¶÷úiÓ'~g¤®£®·,üøKÒ>ʤËaƒŒôì®Wå,ƒ¨{ŽU"ê9?;P{ŒüúµûGÎÙŽP¸Œ¾DÑ Zq¬}ÉŠzê¥ÆÕ 91™‚eEÛºQ$¨I'3$©Z93lZýøðµ%£G3¯i4aѵêXšhYg­õ̹293a0üw‰ð )RPƒŸù „”éë#ÐJñ(‰¨‰Rdq1MÌÈ£’÷°‰%Qçw@ 8}Y5É÷jÙdÂapùÂ?2scͦAQR(bœ®Ê'Fpê*ÿ†Ñ¨ÔT¬ï‰óMNbÞc…œWjL[\ŒÑÿ‰E³ŒE{Ú`"oì“[5–¸D'¥YÆÈÚ‹ª Ù¨N(O0¿fkv§Ù‘ <[ y€ëZÅÁ†S 0­ìõèýØ€lˆ$?Wh2zŸ‘dÿwìWËtŸ²˜ÂPmö@ÙpÌ™}Õ›ÝóÀ3_`KÕ$¤ÍFè›ëõ|y”õ[w.¨!í Mð‚$]î+[Ðç·0dÃøß£\IíƒLSF1]Œ’ºmLqƒ…«½ˆÉäf´¨ø?¸OÁCÍ1x«ôzµ¼$«¨zޛߔîÛ~6F×ϦêL8U<ÖuKèTŸAže°¼¢”˱T,e•Qè¡Ø|NÊ(t…eƒä„}´÷@÷¹|Ë…°qìÑO•ÿmžŒ|ׇaËÐã³z¬ë bÌ2«z‘¦,$lãW2ܺIyò2%k/Î8z·ëدßP6aF“ƒ ò‚‘ÈKJwlmVáÏt.uñ¡â$î}è ±£°}ÁàgÊ1/J5>¨Ì-BH"3Ù¢ _¡§îðj8ø³§;H/$$ž-ÐÏ£)àM¢*·hæ——_´&ÝBã)ó9ߢdÌÔ¿“ÄKÓâç£ øé!:W]Þ—úE®­HÒ^ÊßfOÀ’ëEíØ½)d›˜i+†´åúôíH¦ÅMÌNVà}Å·6H“ZÄhË ®sí-!rlMæc5~s=׆¸.7¬^QÞ†ô$­Ñ^¹Ôk‰)%ɾ ¢Xq&‘°ÇNr‡Ñ^p:M£%K“Yï©´ÐïZÙ^"P‘tâ÷ÂÖ>ÏC;0û*;¾ª…HÏ‚›•^¿ˆ° MÓƒh. âEo™Ó­-•ÛÅîwו˭I¡¡f¢aAàkÌLüÀ‡å3ÁîpµÓѼäcIö‡7ÜCÑ!öáÒ õñ/ÎÈß{`’ÂÙ&8C@° ;Ǿûxòªš ^L¸ä:¶À§"=U8 ÚÅ٥ѩ»ïºž"é Ó¢¤È þtNŒmã‚L‹:¨­ý®iÊþ›ÔD¹Âz$›½5ij¬~r#Õ~,D˜vÚ¾¡7ü*æ€dzޒ0"ôw¡S-¯;çi(êÖè½ Ã­ö;¼^8p²uf¸.t7Ø1^߉uû=—ÐIŸÿA½š÷R¡Î5Ó¤ƒMxƒjÁ¸¬cÉô‡ÐÏ$™~ò§¿k õBy5.yUn˜ÌIø)Ñ…ÇŸ‡Z€<§ª?c¶PwHVVÓ{"6hq³ë‡e †™r“hå¢ñ.pæ|”©;…tÛ-EÆÆ+À–îØô/¼l¯ð²’—f²¨4¨fG—Ûùn„ɦÃS£iÍu†R<ô#L®¥x¥d­8„­©è<$QÞ/¢}{O©ÒVnìãP3m2É‹¨øÊ‘^ÚêðˆCv®Zì `µ‰ Ç0TM¡™”Ÿ–Z…“¶)6 –ÕÀ¼ì "Ž*$‚òM¾JaÆüXÁ =¤a›“ªÒ}¬Zes¬ÉlC^–cËbº Mdë!g*¶ù…_¼Ýq™ zWJm«• SÒ9ûvñ[œí²DV¹"ÝgQ½g(‚ðþ”2cu‘ÄxÕh¼éö)’TcúCæDšHŽ– g/"Ÿ°«ø9™Ý=G±æØl(OÈŒ¯ 5¾¹(w± ù7g "’)¤ªeí‚WäÉ`½Æ„:åÍ‘àóyöœ-¼±'±Èˬ§Å%7fÏñ{ø6†ä=ºÐ‡Æ¨Ÿ[ÌŒ¾û„Þ¡£R÷ÀÎ-F«^vÞÌ‘N'>Ø“žÞ¶¸±ÃRÎ Á…íà37Ÿ¢ŠäàΜNo.ÌQ è‹ÅYäþÜ Œ‰•€gÌu½õosžnx95»ž±[.Åþr|Ââ8L1½ý_txwÎÞ#;êêöt,êmÖäÇ»Æ88X©©9Û¡`4¯xî:†=&úÎß+i (vl©69Tö=¾¾Mç{² >¯Ïµ̦IpeÍþ-¿QœÃdvßù—^vCÛÚ;s/Ñ1Pˆ¨»|]lQ<‡ÿPðy³‡jÑ›gNåÝ Nv Á¥y4ÎlSë™Ë½£5²4,mbÜXè*cRÞ‘;ôÄð > stream xÚŒ÷PÚÒ cÁÝÁÝÝà$¸3¸»‡àîÁÝ-¸»C‚Cp ÜÞäÜsOÎýþ¿ê½¢ fµ­îÝÝ{”¤ÊªŒ¢¦öÆ@){;FV&>€¸‚š+ €……‰…… ž’RÍÒÅø_9<åG “³¥½ß¿,Ä€F. ™„‘ ÈPÁÞ ëj`e°rñ±ró±°ØXXxÿkhïÄ0r³4(0díí€Îð”âöžN–æ. žÿ~ИÐXyy¹þrˆÚ,MŒì F.@[£‰‘ @ÕÞÄèâù?!h,\\ø˜™ÝÝÝ™Œl™ìÌ…hî–. 3ÐÉ h ø]2@ÑÈøwiLð”5 Kçÿ(TíÍ\Üœ€ÀÆÒhç rqµ3:@ìUy€’Ðî?Æòÿ1`ü}8V&ÖÂýíý;¥Ý_ÎF&&ö¶Fvž–væ3K @IJžÉÅÃ…`dgúÛÐÈÆÙäoäfdicd 2ø+u#€”耨¿ës6q²tpqfr¶´ù]#óï0 c–´3··µÚ¹8ÃÿÎOÂÒ h:wOæ¿›kmgïnçý_dfigjö» SWfu;KGW ŒÄß6 ü™9ÐÀÉÂÂÂÃÎ:€&Ì¿ Ô<€)Y‹A5øz;Ø;Ì@e}-Í€ ?ðÞÎFn@€‹“+Ð×ûߊÿEð¬¬SK€1ÐÜÒþOthö ê¿“¥@‡4~¬–ß?ÿ|ÒM˜©½çó¿Z̬¤ª*/*MÿwÉÿ(ÅÄì=ÞŒF6vv';7€‹— àû¿Q”,ÿÎâ_ž2vföÞÿ$ :¥ÿ&ìö÷Ðü½´€ÿ¥hš[ €æÏ˜ë²p²˜€~±þö¿\þÿÍøï(ÿ¯cþ3’rµ±ùKOóƒÿ½‘­¥çß ¹uu퀂=hìþ¯©ð?‹«4µtµý¿Z#Ð.ˆÚ™Ûüs–ÎR–@SeK‹¿fã?bõß{fciT¶w¶ü}³YYXþ´\&Ö ÛÃ4’©€ Ýù_FI;{ÓßKÆÆÉ0rr2ò„gM''À›´¦@¿†ÀÌdgïr€ªó˜Ù;Áÿn)'€Yô·è?ˆÀ,þñ˜%þ ^³ä?ˆ›À,õ±˜¥ÿ v³ÌÄ`–ýƒ@|r€Yþ±+üA vÅ?Ä®ôâ±+ÿA v•?Ä®úØÕþ »úâÓøƒ@|šÿ ^ÎèÄÊJÔÈÙÄÔ)Sà?r¶ßbаX:[ÿ9(¥‘ËŸH ¸ÆÈÃØÈÄÚÙÆÈÙâ_ñ9~‹þ˜±‚°Èz˜ÌþŒýù6ëè|LþAœ N{ÐPý“)Ço‰­í¿jM³é¿ ˆòOe\¿‘£+h!ÿ€R7ûCÊÄÌÒíçoµ½«Ó¿@&æ"‚ôæ¿Gà¿M@iý9P{,<,€vÿ²É,ÿA°úµÉú_T÷ŸŒ¹@Úü^ž?zÐ)Ùþ [’ù_T {™ÙþO2 [ÐËý/5¨‡?j¯èñ´ûŸþp°þ-ýßî€î\f è‘ü—)×_2Kû?=à˜ƒë¿}Á`vüSÐoä tþëºø'6Ço¡½ ÐÔøOé  þ?ÂÿÉŽ÷oéÿfÇÊ ñ¯¦°‚ŽüOœ¿Ðí_=á™;ƒ^§ÒU÷æ™Äÿ‡tï3»X8ÿ5, Ósq·ÿ—(†ëŸôAœ}q6±wúw @ýuûÕãþ¯%õø±zþ ‚ÚçõüŸ ÔÄÕ Ô.—¿Þ8Ðíú_ü×W ÐhÿmÉÞ„?ت>¸ó¾V”ÀqoJpžrO#–Ñû›ÓW×Gd˜dÚš¬ÀM§[ÑäÑ>Ôµ]Iš‘ï$/Þ'm0aí‰:ž|ž âUf÷:àWf°‡¦‹ND‰àÕDö}^}>XC¶wËRæ9ºò +`Ü»¼÷h,_]Úû°_Ã%‡ð\>Ç­¥P²@™oœ½ˆKíÂHK‡~á²ps;ž;ýF"Oï{ÍþÅ[{‹-æaÑk½R͹O—ò}b–Ê[ì0EgÙ»´8jSp9‡…– lsbÄg¼›ôŒOG^‡ÅÆéïû ߎæÍ~D¸¬=UCºz‡äe\z3ww©÷J­Åúû#apwáNô¦ n±0ŠžÞûÛß n´NnäNÎê§u¼ÆtÌvààw°ÖZÄÖ%^Â}1  íóôøYe–QÔy÷[MŸ:Ì{ì{¨~ª©vp×kPžÿdŠFnN_ÿx"Ør(tµ fô©µ%Uƒ0Bñ3BšS‹ùû®€výPÑaQ~Ø`"86ääñ)ª¼h„>ŽÃÅ»[¤¨Ð)(¸Öf-áŠ:UY”ØbÏ£cW5R}Âæ*ére zŸ'ãTç•[{ÞPb+¿Þ”ïèLö'~Ó«%÷K›ÐžïÕ^ñ󩉪«Р’ЉŸ?ˤBoÚk_ä'ã%ìQö}ðíŠßìîŸ5ºY²b2x™ŠÎû>.MÒ´n·­|?ä;:¯Ð2OçaÛºˆ½¯UŠ9!tº†Ää´‡Qç`æÍ"ÑãÃ%Rq{”ͯwÌ\Óeá3=Ãt_¢" µ1Z+·i›es«¿F¥±æ¹>ìMÜRpñb+5€¿þ³‚(»1µ›àûbú({œ”œŸ vènl5nÑ5…'%eä&þ˜õ¸(é1zËPͺ~ßú„ûÌ}«A-ÍÉe× ’ÎBÎá‡Õ81™ÎâíüUösY·Ã‡¯Ñ,&àÒé ‹®:§HîZ_ûS2rö²Ù:u\fæFÇR¾F5f [üJh5ÎÚ~¥ûFAáo:ôÅ0‚ ‚’ù™/•,0ﲌ6¦ÌG}öçPÙI”ôC†DS‘Ë=ê‚ij_Iž`efçäuç'z‚æ¢s+î^ÊK‘·TìŒ4Z<ðÙðq5f°Çp|õµ©£º»¸6Ö$ÉéÀ¹–õ¤ÙV¼þÂz)}áÆìä쫾bGì`ý,Ò§(:Vs÷»¶ž|æâ¼ÜVön‘ŠÝZn¯U#¯ãYVÂ#ÚÏ-L[éב’ZÔí#åwÇœáR&Ÿí¬ºØv¾.B/™`ƹ³"F?ßO²ûçÊè…eEôz¶ÖóÅLü@2[Ê/[;ŽLÜ;¾,~*53?¥ìvȰ¼$Q"¦¡ö.‹]¬Gv¯xUÝWfRóH¼]ŽÏì4°MOõìûßIUù‹-–ÚÏG·ÇŸaèCõ¦žkçB#œ|{£NŽ« EWòž•JûÜo´©1ðt?ÍϹžU¤l+º0BŸ÷qyÌk}¬0!Ó›$ ×]_ >WÙ ž ¿¶v·÷¸2^ïNE%³\ü‹8”~ ç /ù/ѳmzáa±ŠƒµaÚc‘„z¾ ê}È0°W±Á÷åˆxŒN jù¡É‹ØZ–þP(Áb ÖÙ¥T¨Ÿ¦*$É2]/;¾im=–þB›Õ7$k¤I®š§†¶M$B£F‘Û™G¢ÊEË’ÜRVdàS8ôŽPeϦ‚,Â¥›»%Ìx±¨­Mí¿zxóI ›ÉÑ"­ÿÝAîÕ“M Qy©ûÄ7Åju‡Éêª_; ¼uÐ? 0eÍçŒÝIwR':ÆÔæ’Àª$z Gù4Iõ>Yå»w$¾•AÁDQïõnYèC÷!ª©ÅÊTØIÚüh.@û:™psןgˆ¾~»´æ»¼ .%vßD¦„ªÐbmÛ¿­øœ§Þ=[YÊ|ªôøN žÒê”Ð;˜WnIüÔrRŽ· ÛCzÃmGòyÃÀ“8|/6ï[ûsDÆÃ¯œÓNjãqãuG†é[&€Rbí!Ïà6œ¢¢ÝöÀû«w0Ž®“Ä-ÃuK I]¿zÍŸŽL™!!˜`ìÏü辦 o·w¡Œu1îÇ›àYÏë}íQüåÀNiR~z‹âÏ8+ì ÐsšÆ}ñP}Я²ÐÁÐKõç¾—Ð<}gívËU×|^µŠ#ýudÍ)x´[c >MW³/z·óåjÑ~s©õîpÂéU×~ã•,Ï]Zx_½íÏÁû]hËÐϱk’9°hÛïÙc'%V5Ä'ËŒ—d¹R¸Gó’ÉuDÌÃì½±ä3“»ÿSHº=CÎ1ykk¹&o^3Xsógp›#Ÿ ªNÿ9\d…#ºÂŠÛÏDÝnäkÍB§Üê§&GŸ&û›a*À¨[ 0ÃìZQfÒ§X£2Š56†*^aJ¿½}\C,KSt…¦ç}ûŽÂÁéù…f¶ïus©4©¯'‚¬ÊklÙ^©Ï ɧÒDû•ÐK¬h?H¤EÛ_”d½ëaKĨ葲G`,w D6…• þ6 £Õòó„ïïÆ¦,¢Vzó¦zJ/CÕ!xü§½ò6ºäC…ü!qžùˆå"ù«oó5Þ('4“‚o (VÂøpŒGyv¥ôM3Ħˆ—dUhÀ¹tÕèÎ8H³¢g=µÀ ©š^h ª`kÎÆ0*”EɇÌâýÕẸ̀Ƞ„w©¯š%T *]’Ã'z¥lòþÇ¡`\Pˆ—´ÝE'»ÀPEY’¦ã×Èé«ô—<©*ëÊz„†wW]JVÝ©_ñ«7¿ïÓ7ÂhñgœË?¦FÒ–ß§¥\÷nÁ”Ë^j}¼Ïäi<íaí}6%—•gÅÆPhÆ Ì4.™øÐ‹Lø³«Í̤ef>שñk ‚€¹_ôÏÔxN­¹iÁÕ½K½Sx‘ð"ÎEiç­À§›5¬¡cæ«öÈ ë„ë®ûæ?>%½äG.£úRsØ$Ï$í‰<Ôt(Él¶qãeN3{ÇéCyy2š:Mâz ™ä yDç–Ýœ]º¼^žï¹kTÍ.Û¥ÎÅ'ðòÆk;1nú2ob­l ë7¶Ï’_××_<éE°+3_EŒ¤Ô©RN1Ïð…8°ô”9ïP ¬èt'€J2 š§·!}øYÎ]ý.ë”#uåûCÖ–eq˜–áfpEO‹>Úñ—B|]K¶_;A×Z»À†g€ú¾øŒHhªVa(A®„^ûø¦­kvèד¯Òž$“šq“6Úb›_š{ÄÇ‚Æs¼<èF•#²X"ì¢ú™¦ã‹mdd¤2ûPÙÔ^ªn¬6 mš‡àãiy¸Q‘ý°)nS¥þÂý±`GÈP£ø+¼šµ*œ>gJ7b:2 hâ4Ï£å+^EÝwiCœÑ‹ë(Œº‰?䉰zjÌ•ì¨y°FŸGÊ«ªIqð%B©ù‰^CX±a»¡YcŸ¨ñ®´‡6„¥ó•·ÜdùSÆþjs")d’ܦ¬2±-4Yïø©oJgÞ5ê;¢LÓü¼þôØËù¾!ȃjg4¥@@bgšJoS¡FæMlÉUkàæôQi» <Î :å 7°Ü"hÓœ9Ý£#¿Vqölh^MøÊ\üóC@&¹¼¯– ŒœNàÃ`8C×ühÚOå ekK; 5ð½Ä¢8¤­Ãp—)¥ðå¡ ›‰Ø[5o:]5„Ibʱï{yŠyˆõÂïX’RðÞÎ^å/“4ë¾oÜüôáòWƒ«Ù¯øKj8E¨‚ŽáQ G«òËtZø±˜“Œùzúœæ|QôáY¢§‚Ž2.*é™$qÞ%[§w>ýÜNõè×ï(ù®d^›6h*Ìßë÷ 46øÕx(AëûËíl,àáôni=j…HŒ'’Ý·&Q` ›µp§~ÏØôEkKÐÿa~ÀþœE½C¯ôá¾ñËõ¸ç•êJX‚K$cºÂOüLK²Ü…µƒçUtAÃ#Já ìpµ4Ùwžü!ëïo¢íÓÜ‹ùŽB|Dg–Ø2bx„0GvöT¿Õ5ÄÏî#ï%µ­Åq«³¢J(=–&»]’sDë÷†I™Ub¬Ó¦$Ü9È•«â¶Ù6,YÅY(L–£±çãÏ¿X-Ãu ‘¤ A­kq(÷ðËÙ—- Ïûƒ(­;¾ì± ŒæV –%»k” :;„Z¦#g¼±±ßÉc‚ÀÛS7ž±¨oH@n:þyÍ%®ƒ'fTjC>’é…˯Ýñ¥ÄíàX—<æQ2à7ï’ß& =}ßgጠӚ$¬½Û¸NÉxãÞ–C åûc>Ê´†aC<Ý´èî/׬*<É¢-PNÔy¥ Ÿc/ ±½ô3 I@3ÜÔ(‡¤ï7¼ÕâOGŠÜµ%`û¾Í-ÚÓœ…W¨¤‘Œ˜õ¨øL· 8U)ÓŒ¨êŒ6*&£Öµ¸àv…þ xØ”O§ÒaífCáSeywÊâèpñþƒج“ý®ôã‡ð†t7¯ËƒÌÁ  `ø·KŽXÃÒá `™ñ]Z»pÅGê# ,bÄ>ºíIl¸á|ð¿H…=qñ_Ÿ«“nXæÈœ2œ3§TÅ«÷!ûæ<ÇŸtžôH‹Y)j9å“6ÐÐd…^±“dÎÁXÃLɳÐeyÏ©Òeb!CÈëÓƒæ1›Í&tbhàô¥UXkRv¦¡ ¾Ó*Z®éÆÊ-Un&Âæ ÖœÚööë˜?Ks‚æÌòB!ýp6ÏÞ÷ -<¯4L†3䢿U¦íš[êAHò`´C¦å®…+2:@— Lí±±YB–>ºŒÃÑ0ë ˆìúð‹o‚é9qí.jÞ k´2@tŠGF€)aß~þpúY˰ôÀPÖ@¬f‹Ø¢dÁñòƒ‘””éjz˜ ›n [^á®røçA¦qwR±‚^ª‘·±½\¦Ì¾Ý¬z°}+û¢9Ñ{Bïb´O¼J—#‘0ÚEõcÊ>¸êã’½ÌÒGݘU=Ë%5ó‘ÈhƒMí&ƒS«PÂêÂ×$΢šRjEw…pJzI>·(øˆ1²`ÈÖùòŸeŸ¶Š=°ù§µc lïꦆ€ÑW?–‘;oY: 1 àkÛõ—f²ï÷Eg&h¾Ô™­Ø?cu)NUZÞr›^×*ßÕäRCîÈò™X•³š±Á+&4ñ±‹‹Çñ+¡Ž¹‘ |Âiæì^3J˜ÇñÆ||Tïˆh¾¥ò•ß·sÍ.þ„û…c5÷£ÎÄ=SAˆñq)…ËmEë1S³ïèÒð|¯Éìs÷ L·Ó»µÖMì ¯¥_a“`—)#3…ë`¼NиMdYÆ.ÍécižG3åKùOz)¸}Ks B…ë»,9h7ŸH”‹ÄZ4舴ÅG‡2#”rŽUüáNXŽübqÚ§–zÚ¡÷Tƒë8§’ï}¹?Â. acìͤÃi•¯Žõfi HÛÔløSç¤Oóß. k—³3¶€×r—sÓMâEñ®ž„˜Ú]¾ |½ÞŠ,ùLíÁSaÊØÌ-³­èŠa1T¦:4u¶¹ó½N YÈÙUb™rGk#• :nFúÛIQ¬¥ ÊxjÞ¡_ Ž/ ƒâøQh jV¯1ÿ@ÆÆ­ÚSù×·gÓ¨ybÈ@´v¯Y÷ü³`&_xSjŽ4UyNѽ³ã‘³µ*e9¬±œÛ.¨)œè3]2^Âö¹iƒi7m©"å5&>, íÊs'ÒV5˜ßú·„._ÇOÆ7“1…÷t¾™ÂQ%3_èvàQjqÆnù¸ kn¬ðm3Ó ËI›¨‹¡º1ÙÛ<0tœç?* Î?çáØÅ­ë§;·òåê§*x÷óJ&¶`ÎBLðÌ®‹íº|× ?iÐp^…cOðíC Ø÷Ó›V}™õ -F<3Kº |K¾¯uïûFˆä~Ò?ÞÀ°Òýai7ªQ£¿2²|¢ãKE{ãŽv Kã¼%éä6#†Û;VDk®0›Äã÷÷3\Ä YX4³o5–E¾×|Žœdx]‡cðº{ÀXüêORÂöF×µÒÍæ=Ũj{G²Ý*ëéOË…!*3׃5Ÿ—ÞªOÆx•óD.ÊÄ®º|\Õî|£C »Ðð¾`Œ?$ë‘BÔõ©éˆÓ•©tÒÒ }íö1™ÊéñÉQÙA°O38;òXÞZš=ÏÚÁ¿­=ü^ɳθøñš!Væ§Ê LT”Ûœ2ýªS!¦ZÿKó“˜Y‹fÿÕÊÀjr%üá¯ÜKûÓ=ê†Öf ²‘#YÇô…w²… ÿž ÚŠišð®v'íqz“Ÿ—j{Á*Þ>¤:HˆM1äl¶2áCÎJöæYêMR!€6Œ7”¼âJ?GšÔ¸»lî«4øÅãomÛëê¯xØ<Óù¼*ì1lè}êQFúœcijÁ§£ö™ó®#q'ú³£ÄØ®€ä—Xd—òÔ“s.?Ús@æýÙiI’—Ÿæ©‹þ¡u¼ø·=­ß6Œ«XÄq'Z2;ôó¯†ùÜ+Ê> &µÌ­28Y›üäKã®55ÓüÒ®µ/Ór,Œ/“sñ˜Ëóš«;ËŸZê¡™`µáý+ù‘÷élè•Ý0®°á+‹C¿¨[·¼°@ϱ2øc—ÓCâ½AJ sIãQ Õ—;tÞh’²Å·(Aì ëªÈ‚¨’WÎi_Ç;t'ú‹‘/‚L>¼ý*Ä]>j©¢ÍÔ¥äW­tØ–÷1È:SÀ€‚¾(N4ª–t ŽQœòWÈ/Îì-¢¬M2TØpNOgˆå#aòû˜ùU^ƒ0½ôÄlJ8¨õÐóƒÛ×y ]®G±vŽe)Ë8Ò® £êP‰¬B2èÜ`t6øÌªW9ž$•H/f–fùð;DPPkÎŒ-v¹Ì]ïöؽ•¿d3ªˆPÍ ¢ýXÙ®¹ºš_€µ¨9?½Ô¢¢ ŸñÚò*¼6~DkW²ðÖéS2h>‚èÕoTýìèÆ´ƒÐÂc5vQŽóM«› }ÌðP;vQßðЇd¼ÜXrÐKÕR\{˜0ˆo°L+Òñ+4sc}8‘m¤©FÚˆU©¾õÆô¯Z\ŸïÇÊïµbÓàìÈ÷¯ÇHÚ£BÌÉÜÙYÄ;}Y“îW¦JI½o–ƒa*tbxþŽ) o¸¨šùÊ}ûniÑr„šqŲJê÷gapþP ÅAuäyÊOY³»ÐJ.nÍhµe¹¾ù˜9ç¸Z¡6ź¯&•š±\~!(ÙiB'Íσk›ÍÜõÕ8\¡Ðoc±ûa6NÔ-ÉþÐð•…!TmŠaç§ßÔè7)>O@–+ºÅ^&ë ¥‘±Éá7¥ÂÚÓ;ÑÔ¾ÔrÜÌ)ri"ö}ø-Bn4Êöö6ðË»BÑO;Ãï¨Y­ZëUv¯] \Ñõ%REŒ”ÄÙŸçÀÛí™ý)öU®œ‚IéÚ§ñaV¼ÒH?ÒWÄ~xÌ´‡Šú(œE³IôKÍ"›;„º„ì'«Àˆ8ëfÖ¬+!Þ8ÐHx¡Stv8=ü\îASJ4.Ž!Y0&]Ù__Ož{¡¸.RnWïªvï¼âÚÏ zGB%ÛÈ(õËBì•Ø„mzªâl÷i¡/dË^4q_†wΣV¨¾Æ„ó,U¸ì£\/¸ÍV߉%ä¬õ£5{4ƒI(†)#±iñf})º]ãæ¨#‡f‰·éÖìá^Fæÿ‘vì+ò¡A3e¼™Šý Ùµ‘«ÙÞéyð|¤&×X¹îÎw>n£iýAŠsÿ¦59rEuþ'Òtâ\½Œy'¤ƒmoqüI]¼žc–TŒ=E“¾˜üÇØ8Ìcv6c€¾¹åU«¡øÀ€×&ã„à¬Îüù&x_仳€ ü%t^:zÒ[.SºUž³–¸ ‘€”mÚ‚þÁ.©¥¶þýè´¡ÆÏ`Oê¦`×=@L³/ÈçKa[öäy3‡åݽó}>ŒE|nƺç{O¾o_:Înp‡Åø ä°ÁÂ2îÄñ4¿]Ôwñ€-2…eT<ÙºA¯–püœ¨”S 2¡òQtœUݬ=BÌ0Pã.EÕ"Z>…ÓÃêMëž/;ó(ßÄ=µÙyâ3[e˜YÃÓŒ A›æäÝõÒ3ýGßÎb9¤7Ÿkï!¬eþãs1q~Â÷ð_øß!Wrx¥Me&KΈ0vñt‹²ï²!64K›z ¾²øa”ˆ!-ç¡L¦ìzÕ©ßèª,+Û.lórx»üÐpÝ¥ÍJÏB©Ð€_ÙªÞ~žÒÁ½á“{1Ù¹¤øõ,mÛ,¡âXk'miFçÕ2«Œ2pŒ‘jaj¹éñW¤ÿ:ö\½Œ,֪–è+@£-´ÈäpŽ=6Tß¹.bu£]žVOG˜~r—‚¹uàÇ®•9½áì·®Áñð ô[µ±·Œ¶B}?Ø£÷ü9À| Hq½™#iÒpŠ)íç¸ÃO[(&:µÜ‰Hò~@ØïŽ ‰ý,I!JCr$UÅx”+XÖ“Z~’­)(¹·\–j{Ad!Òu3-N%—¸¾×“ ßá¨&†)aî»]/û¬­ëAC¥a ¼βAXmÚ^7Á.ä|vó´›#i<¦Ô¶rÑâ,ób#ÏØ †ì£ËIÿË´3öÁhÌÎ&ZÛO7ÜGΡ¯-}¸Gð•ó,Lǫ͟r·ã¯µZöD >d嬿 JÀ“zw²êmµpDËò~1å. ZʾѦïG.¼NÑfî3\âAÎÄÂëè ~;zÝŒØëä,‰^V¨ã'ºàîv¬†¿²©TJoMî-2ž†þ¶Ç§R…À†ÄU.(8ihäZ­Ò¦µ¥]Bdl(¾{Ê«H¹ˆv ©dÉÞáx¾Áw¥hrß ¶R­I¬Æ–MðÇ,ªE$}DleSóI»z°î¤$DX¤®Cœdûöc¼¾fPM¾Hòà_Oà[_>2û3±AÿLb£ý[áÊ)1¹ÞöPiê— %o¦u ©­í}S@{''vò¥«™ÎÃ8â£0›§×ÏÀÚ†%<ÒŒ˜ïiå¸[èDm ÊÙ‚ÞËlHFæJÓ/I‘€±Á*‘I²! ħ“ünŽ7u¾_ìc¤¨äŸõWŽÝ "Ý'Àû‰úÜ+xJSN|¢|(]Nóѳr$¾¯z§þÒ|Û?_ÔWƒ¿•u‰·ÎÔÒ…’ׂ’xŒM¯ÉöV˧ùˆD¿éÖ&ü£.µ´½›ŽÕ~TªE¤$û-ÖaâÚP­NÐ~šåÌÂåüðåõ ò[N\ø$oµ¡ðPÄËš.~âl¤ÿ‡±%ÜdùCÞ³ü$«„Ó5±õ_ú^øyOæÀ×ÒÆŸò6¶È*nôi È$"_áº}ó0¾.]Âåóa?êä§ÍÁÓÌã"B”嘼Ŝu ~ s›´ˆr;¨HA@°*ŸÁj»ý £ýb5‚Õ‹>ä%ÿÝ©§ÿ&'.¸n¤‘K´_Ð{]ð 4ñ¥‡–†Ô4—ƒ¿Õ•™£^Ñ`öi†¾Oº[Ô«>0)öí®Óãm¸Ãtøgd T¥>¸‹q=D¯Ã·ý-Z£ .fôªy”½ Î,Ž÷¬UqÈŸ|KV½Ž ²º´‚~ZJž6ý,Ù³”ªè`°†ÎH?¶z•¤ØÌ¿i÷·˜='†D=Ù0©˜>o·ûùν£õ‡²­óØï"¢vœºŽGD´/?¶)ü!…Mù"#‡\a¼o%>d󥔬S@äó¾c<ß•w»cÒ‡<ê(•Wiʹƒ7u(©}¦¦kZÅ…,ÿRTªŒ·Z^C3/æp¿ëÚô䦉 cÎ 1w[y?iu¬ØÏ¢Ñý%mZ¥¥ôˆæŒÀ'mØý”$ÊJÝÔžåU® ß_ü`b"ÜÀ— š#èÛg¨=YòêŸq¼ô›{¡—=Â/[eL‚ZëG–ãÙ8}öÉJÖ}…„Ö^$›öÂT]–èFWC.÷1›@x©æ892–›«å”Lq­¨óÌ,»©¿x9á±û]!ËŽ?~0/)ûIµÛ¾\ŽÊöDîwÐå«8–l–o’M;æÙ‚¬!;O³ƒV1DdÍ+L. ÖܘLñ-QXö á}KøwÅÄKµ„¼ Å0ø’ŒkEÀo,ì)ª¯îžÓž»§¿Ð^¥«Éà¤QYwÇà®@ÎzíD±öæìçÔU”Ñl2‚ެ×qF<Þ3¾˜ìuúŒéþ7Î,HSó rǸ oaàB3å1ÅByœÀžo:ê[]kç@'êWê·9‚°mç'ïmš;¤==N&T…^Ÿey$òd‹Ý¼UÈ󑲿·ÔÉKÄíŸ÷U,ŒÍ…~Ïpo6½]êØÏ'eBÎÂR^J´ â|Ö××Ñëo /B„*‚™A’³Û·õlàúÎû6]™B޽ªÌ+Úï»ÌêØ,¹Õ€™È~Wxïî¯åw¿à‡PŒ-¾ü ÌÖ¦'¤d!e@ø¢‰2-ª/ZHÉ/„TýõK.Ô<²ˆÎdЋIi.½ìàŽ>t®zà¶^Ó _;j*Çî%õà©°ß«‰–˜`·î‘þu7—0ûó½se›Ô rÙù¢—ZK'Óiî°âMG/·Cy>´v‚µ•wÕõûŠãS¹…ÉsÛ%|!.:FS — éx‰¡(JÑêg/ÛXù›Í/*luí£¼YË'CVö=ÔjW¬[è¯NÊÇ<4Ý)zw¸@aÚ¬‹±ƒ½wd8»òQ¨·äf4C26üõhˆÁP߃ÎâU»¬ýûú,‡£9’…Ù-áçÕié¿Ö' ؈n¸«Ûö+XÍ•WU\ø –ûO±ãxyh…?ჩ®}E{<×)4Z¬cÌ¢T:i@ç ®Å%" V€@ðýŠßMT_%¢ª®LÄ\TqÃ?[ý I&ŠQ;‰ŽŠæîÔ‡Ì ~üúKn—fT%æp/{†&ôg!]ÚØŠh¼ûWU¢¦Ï÷š›KÝZ±ûhx× "CùšÓ£{x»ÛA­ÈqΫ­Q=`mRkø(CQß Vù(ü:Ul˜ûø0«ü Cz'‡zJsÖXÃæ¸Ñ$£ñDRzºnì,¼¹ºR ât™Sä¶ÝöÚk¾±Ö„(À‘´žÆSÆ`°)*Ä“”|8‰¦Ü>9mQÿNù}Ï‚OßéýÈh ¿ü°ý)F¢Ï:Ñž§ ø½ &ÂN*a˜Åº¢¦BùÌtŒ+Lþ,Þ¨[@ŠÕA¼ýÊ)eá ,m—³‚Òn5d/UŽjÓµ«¢ä{3µ4ÌŽÖ¡û‡ïU¼½¢Q–z4ñ‚0ò€/™–Ûå 0?׺Fw7¶…Ø&.ç³#YÙ½Éw»‚g[ÖxðM^Ôì‡å²?‹è…»¦0 Ï¾ÿ1º ß„…Gˆ} W):¸ŠÂ[‡‡CÛ/©ì7(ßãf/UyËËú,Qžt™FRÊö!…«jA½ÿC¦p¾ÙR;Í\â]yâö0¼±RÝ£4žskl4άòúŒÁÇZí/ÄÝXpŸÐRsp1TÐcšÑS gˆ”žXôfD_ùgÀ$º½*š&zðŒ2§¹ž)I½&ôæD(¹Èos…ˆÞ¸¥Ô5a1’†Õî`åVE’Z˜È ”Ï<œ¬ç±Qz(è ÕSU:oFj¡ÀÂÇשµk`á® ¨Øúa(0 ®é¨¿í¢hro‡OìÉ4m^‹Ý“ÍÈ&Øv‡¦}‘'Yê÷ƒ rs%}Èë°+dÏÀí_ăVYÌÎ’gH“HȧݱYàÔÈ=8h+Ⱦª‡5íñ4Ã’ºêµe¸ã@†MŽÊ‚<óA©;¿ÆXŸŸŸ0>\ûÞGI9Ђ£ñ#gü\ˆÿÜw÷+üÏ0ΈÄÖ NöBnrÖé­Oäcœ‹–\áúÄ#¦|’Öà]ÄB°„]¶»0뢦eî¬7™†m¤\=E_™û†¦”~@Â(ݧtòÅÌöÿZ°îsʾ@Б: Ô ‹ìk?(PDí±ú²(‘03À‘}¿ºá”0c¨9æ,$„jóÁQƒ#LµZ(ÿ‚èúS‹^*\Q©]hR:ûá+þÕÄ£.Z Ó¼çÛ™´vhbš]U02šÿRÂâfÈ—G¦N ³©DœãI<ñOš79‡ºÀ¿Þñ½\¨ \ÿ‰o KÜ5«&^"-Ä}ì€"ÅöC¹äiá'Ò 2L:¾‡ê%ˆ;NÄ‘qéÖò u‘o\Êü?åÎàËý°rL ]>S8a_¨k R:þ’|Ù­\)øÖøåßBþ ÷þȨ—£¯— ¿UßÃëšû'IZÔ‚Ä…½’v¦—Mñ²3vàŒ¹ž¼ÅdÊQ÷Ç›|8Ÿö R#øYø.ü‹ÅNQ1!‚'1SQASFÆ)óª4”Ý7ÚpKûïâEÕ´Õø}`ŒSW”©Å,çÃ÷b_UÚ·µn¥YmÞ+„E-Öd–ÁÐ>áóHtœ–gÔø-õ}ØHÅ>i6U`<ÞGáyªNuMÂ3Ñ]Õq[”Ȉd0QhvÅê¾°Ö˜{†pŽ(þ8ZØz{eY~{Ç®Ñ]w“r_¶+Ý:Š+æ±í^tÇ3ÃC>†ÿi²ö¦Ç(é ìf¿E‹{ï‚P®ÇEaüÞÌ"‡ëµÉ¥D‚?oÄWʳò:i.?‰Ãª|I}µ]"› ”°‰í£vXÔíÆò³AïT8¢hÁ–¶ø l•/¯¹ ¢¾ ³ã›xùX´#RýxS•¬Ðü™¢#=› '´T@Ñf„ÚÕ£2Ù㔢Og5ý8ð 3:¾·EErT¤­‡ev!J6€Õ‘ó¢x²n[×ÃëþÔS®Ë£XÝ'ªk×á´p|®”ÃýCßf¡µškCý "ÉÎÕ ?Æ~’ê96D$fr§1#ÔüÇá'Õí~¶X€V·€bUŽ‹g f7êóŒÜƒÚ“© ÌŠánšïÌirÔÏòžö<ŒOeöŠk¡WûKyî9à蟅ôùWßG#üÚf6K³#î©7Ì`Ç1>zL÷Ëy”/q[¾f‹Èó¬_ÓÞ O~/p¬¥ˆÃ€'õ3ƒ•Н—1­ÊKƒ+$£Z=x¬n¾ëž6yžî{*5 ŒÖG¸ †1~-oyíµþÛ™øíû3˜ ·Çf÷ƒæzH‰Ùz`@»ÖÊ®•Ÿ”H¿3j…]z+dµ}‹ xÑ„b[nOáQÀY!#ró¥°’’òÓ¬æ¨}åÒ¤ûOÞÃ*äESûIíÓ·Î3•ïägÞ)—^9„Ý`ìëòŽ|yz+ãú„ï'»Ë>ÿ3W”ÖÜ«sø˜óEº§÷‹^òò@k‡69ÿ‘Ï¥ÁРLçþçZýœ¯®æX¼é.áÛfIYcCªXrqM‰hËßÙŠÌæmÜ ´ ‚ j ì Na" ›ÖH–vêý†b«÷(ÂÌÖXå£G‹KÖL'ºËÉ‘á^ØeWk_òC+xšŒ:!?0M•Ðéö4QÞ¹&þʦ•´f‡Éºø*€ •"Ç~òTŸÿD)ÁB²2ÄYR%†ŒÕ,D;&û²£^† ‘'0Îú ú¢Þfyü3\w>ó †@sÞ†FÂߨb’ô@é«@ïþÑ {x» ü—gìP:Ãæ‘W»‡ŸëyÑà]—‰Šn-QÍS W|œ‡ÒSA’'RÝ#Ÿü•»Èƒuq\ZaaX‚š–õ8ô{‹¨•ÖV˜=²Á~‰à_kNè¢ßÀð—=G¢ a,%î¶çÜãPX(&U%VÕÄ2ê?Y+“,ñ!DÅæ·Œ¼¾lž¸çhhɯ¡&¡å”µ ~H?›Ûé–ÈV¬Žaœ7ËY²ÃkZ4º9ä9R|/7Cô9Å¢ÅùBYú¬V¹åõ4m˜^–d‡­4I~c5ªVZçÚêpå" ƒ,‰Ôòåù"me×+¯g¨ÍW‘ÈNø¥ˆÏ0®BÆ"íÒºy} f¼®|öËþCe`¨jÂÄtÀÒ„“˜ìúæà*þã Å™=ï‘Âeõ¡¶£Ã±Ì°¸®Ùû²¥²ã,÷¯PcQ”(+¬¾%å´ÊîU³ËíMí&ªPeÓœŽ½ÛŒ×Ô¯¨²vÂETØGú9÷…oïYýů=÷5ÞúiQÞ·W×JÆÕ9ÕÁÏ®ÃUªÅè60 S| ú‘&_ßcÔuæ …Ã‹ŒâØn¼‘Ž<„æ A?X±&R/`,ò¡rÇv€"€m¯æ¸ñpê T<œE½F…Ã5ÜÆ)éóÇè°šJÚñ¤Ïïç&3Þ_üxÇÇ瀂ðÌfœéÔÛ­›¹*⦣ÿu7æá½oå¹df­<#Oð¸Úš–ôübi‘`òøfœgx‹‚M†î÷a•.†uðâzcN.qÿ º]™Ânû4$ý½Ã¥$–„‰p –ë×ÛÓ‡wùÏÐ7z–Žä³tÞæe¿¶g.n¢®ìÈL»ÅNÓ™Ô¸n›Û~5Œ<„¾Èì ¿"aë_öåYe~½%´p —!n…÷°Ó'sî1¸òMjî#_•W÷õ~ø®¦e\ßð°Ç„Vɨ&>G~iÜÍU…y‰|‡,¾oUä]·¢F“ñNðÔ:‹—d´‰rK÷úlœ=’\6’EùO]F3‰ÏP©…TFòK¡^esþ5\H8!þ#Ì÷ÒÆAÎï!F…°J¸†V̉c°Â™÷X·{0eBI‘  Œ­ì¶†ŒêSý+ìÖŒˆ´m}›C÷ªWNô8_šª #w«Ü¾øáà!†D\k…At¾SŽVpÌf3?Ž]?–uh)ßa„–Ewéè¾yJ¬xšð©N Ý&ÉŽ|ýU‡¡ñŽl™.åq7Ó„ix8gÑÖÝ‘9;â†_7|®i ÆSYqņœ÷2G…Æì’æêkMaÌ*3¨/*?)ÌD¨Ü™¼o0úÈßÛÝ“)!¨2Ÿöë—Qó-PžGp ´à}Jiéä !6‹PÈóÍÙÜ“üÍ*˜™4 6ÉWc.‹+lÊIpªå7PÛÁ ddk%!áƒÅe$ 9^< J+¥¤_úLÓ+ÿõÚHëÖŽRÂGL»æ$5+~–ÞêJ%'èb¶“V,¤ðx;Ê4d§_8´—{“Ш8CC¶Í‡auÿO¦ YôI⩓ȱèWž6l]ÑÀ½“9]˜%‰G¹j!8ê¶ë¶­àêC…ƒ ‰‡²ñ ×£€N4efù컓Mé,OEfcdAp}ï~t}¯ú6ºWÁúvíjª?À7‚Ïd}‹m,‘åŒ`˜Eãíl IO.µ¶ò}Ÿ´4™Áshb?{éŒqH«µÏ¡ä8kz"”í]†ûÅC䨎½LPtr®‰4ûáˆD›(E˜'ý:ÉC݇Ù,«Fñht¾%¨žØ„8² ä‚a!Ѐٵ0à¿›œ%ó{IÐ@Ù¸^Ì·”ⶸe÷_b,94¥#8%xëÝ ¡œ ÉÔÃÕädG Št6öQû®ƒÁÿï6ŠV}¡Kѣ趑²º×¾YI3Œ¡JJr?Ì#ÕÐÀÜ%¾÷DGç¨\ºÈ¯[9ê0<Û våe‹qéB ÎzÿOØY×£àûià¸+6ä¼Äw/S“G ÖA»§½c1N©kfga!P?§Xå )£ƒÆzç#¼ßWiŸÇMDþ ¢¼›†ÌÐÖ_+=¨Mš ê1-;ÿ·¦4úFh×^ÊÙñq9ÉZo!ÑÌ @Ðâ¿ç±|ºõ¾Ò!™{ t/%n¾³#âˆèeýŒIñ0Êãy¶ÀŸxaeÙ<ïH"Çâëb@.çé¸=Ì2C{öõº›‰&Jø÷5?¶òGG…᥇®ò>b IáÿÝí95xÏáöuî ÊÚR–LÄCXµÕ±¶ÄYÍtyvÙ²—¨Áút#@š&ymo‰ã÷ÖÕÐ%7 à”0‡ÚëñH«[O«ùŽA ¤(±!-Æ‘.?|®ÐÊ{1˜óž‹m“ÔLc)ÏÇ„Z©ÑÜçGÉìÄ$n{lŒ%‚òÓèP<Ñд¶cט٪‰©–ò¯‰±!½M—M…ûva'z*¦×2ÒoÜTøðÁˆf¨&5žªÆÉ;¢Ú^o³87wO²å2†4—ãœï 8ÎÔàf¤ §l  ÞÙì.dö:“ÝhqFûÔI6fpY•S0ÃùÍ' ƒ¨< ̽.qÎïí¶2æ¡Ø03=,ÚÅ.§‘Ó¦zD o¤õå%À4¸¯ãüé1‘`£t}-ËöÛŠRr€ògtôàU‘–s]™ñÃÂÍà—PŽYFÚ”¹ä­æ7¸]k³¤êŠsMå"¸©¼þ»@ް³yŠ{IÄJvÍ¡õêÁfjq=¤c¹ûu‹¸" s:We«=bÝë­]Ýç*yî¾»eUÆñÁùª·²X̵7§”9µèuäÁ¨N *~ˆà- à@Õµ\RÅ­³u¢òô …¿\²xÕ ¯ôÈUõnẠI´ =("àN=á‚pÙø`½¡Y/Ža§¢1Ë•y=(Ç©œv7´Ï оƒXÑ%™|jH•‘…b(‡Æ‰â±Ë®·L C:ÿ’ïž7ÂC§/ôaG©@™TöŽ>¥¾D²³VÔvà‰,UcÃ5âˆT‚˜xþ ¤òÁbÕˆˆƒÅîƒ5ëË'ƒ–Y.¡ÞgÕ½·ãSµ0ÌÈ‚¡àþ—Îs;\‡©/«sîLÑ›TXG5•XT**åÁ4C’Å/š«þ†ýKˆWAî·—ø¡G®z‹®}ù§²B¼§Ø«ÎÙÉË͇—Zêu|Ĭƒ'¼C‹Ç:å¨`,‡ËIЬSþ¤wžR+£ÖëH° ̃ÁsêþæS]ÛÁ7oè¼:udôb#>ñiÂÛ7²ÐZ0Úùè p,™à¯¥ T0À·¡hjB‹ÍZýG* Ç )Ò;\"MÆÒùæf¿óW§BÅŽ’ ŒÍÉ]CÂ9'}"¸²¢[Mi¨¦Ì'Ÿ"ÒÌ¿ì]Çâl‘Þ>SáEuÖ¾‚ ò|U4y‡ú”ÿ|ñº°,¡!AèÂ,Æ'–DƒP¼aŒjwÕf&œ L§+¼Ý©'%²#úútçþ%Ä$¹Fwê.5R=¿f.l”Ù—œO÷<¡1%,ðÉx­J'èêð‚ä¹§üoåùq›Fr¦©Vןè ÇÌq£$Ž`+àGÚ¶NºïÊûÏØ;5ƒ¾¨Þÿ(g[0eh3Òõ$¼FV2©·yyì&}-Û4±£xú ×y°*£+Û©B])Ò=o³ä=VÖ^½·*­{Q~m£5ulÏY`¼TYÏ BŠÒ„nâ‹ö–`·—3¹'h-žÅ°!…¼À¾á_iU|ÏÙ~£„šüa‚ ìf{ƉÄ?Êéòí¼ô½h Eì4ƒîÏ¡!nš"„Úߢ <{{{lØgˆ Eá`0 %þ+i­(H…O2Aeæçós endstream endobj 178 0 obj << /Producer (pdfTeX-1.40.17) /Creator (TeX) /CreationDate (D:20171113151328+01'00') /ModDate (D:20171113151328+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2) >> endobj 143 0 obj << /Type /ObjStm /N 44 /First 377 /Length 2590 /Filter /FlateDecode >> stream xÚíZ[sÓJ~÷¯˜GR[x4÷™-êÔI äà'N –ÅŽ[ ’ dývÏŒcY¶¶ö…ªXškÏ×_÷tÏÄfB‘„0¡ “ð†p+¡ÌˆäøæDjì·D%ð–’(‡oE³q7P“†0ÍÝ€IKxâ[á*~•€P ³#Bât%ˆpœCAÁ:+C¤ÒØâˆbØ¥QBÁt-ˆ2‰0­`qD¥ Ñ$Zm¸…ID[àƒ˜* ¦,ˆ$F$ ƒ!F0PÃ(#ƒºafë dã‹“Ä&€T"6¨d‰å(R;(XXÃ$Ä T´Òa«ÀÉÖh5`ä8<¸Dc—&UbÆ@ÁòÁ£Gzv{“º_e3 eu•UämöHÞ èi6iÈ[ÆØP÷rÈaáôUL ™e0j¼¸l¼”Q^|YäÑ#BÇ„žŸ‡ÇƒyšÏšòŸ×YQäÅtXeW¿OËr:˰c8)ç{ä·ßð·"ií @ÄÝPp¨;7LäNˆê›¼X|ʛߧ÷CbØÐ9p(™ Ñ_¤åC—ð]Ìò²ÈfÃëêv;–ǰ–p°ö)¡oþ“ÃR,f³w_£•:æÖÇ•Eãi‰~é')ô°X¶¸–íè^¾ Óé˪œŒ3МЗ=˾4ÄK~«”B?ñO+ÄPÄ'7f~Ÿø^ØÁÝM,r(åPúºá|›ÂÏÂ:0 %–0P%6óÖÓ‹ð ­JíQÜÄŧßîkÜ­ïÃ7P©Ò ôð -"DÄÔÒ¨…¶ ¨¬*f¬?Nh6ĵÒSC\‚=ûc›Ÿ¥ 3<åQ>ŽƒKøÝòðÑ E¯í–ZxaÑ­rË~¾uͪ|%#šB­#„c Šp^^0H«7(ÊþùnðÖlP¼2áªô=O–¬ì‚0ûëó?ûÃBAïU,xö?ƒœöÓè®äÐb¤‰ßEÌï mÚàŒ;Îlõã„ ÙW£Cjp<È¥®%ÉK óã p`sh¿ß a¤:‡rÚ-šù•"a3­°·u -xÜÁϪzWmí9ØÊCÐe~[x\m^¼<Ž[O&> ?B,gk˜¤Lùëý¼øBD|ô½Á~1Bz¾}»Áb”3Ö³èŒ×ÎÛÁ·hLæ|Í»»’QY ²|Ø1mVeIH*:  qNŠÊG=_ê($í*è®ÅIŒrÿ8)c´ô®â’Õ¸Þ8ù+äü?Bœ²-î|îAýuêùuêéìæ•O`e|¨|H¿ß3ȉOÉÑSá^¨CÔþ‰u¸KñêP#?ÖÂl0¢°4ŸÁp8Ú!Gp³Pp!…›5šÈ(Ð%Úéa€UœÏ¬*–­pЋ6pI‚;*äfp{Åð„õj\§ÍF[#%µOÝÊsïß!åBú5q<¶.õ÷­N m|‹&ŽX ýR!)}y5Ê÷†BÙ?ßµnxÇzœÕ“*¿iÊ*ܹž§sè9>?ÿÇáÉK }–Nk"Àƒƒò yûXxȽ73†~ ÷Èýz’Á¥ rØ€¦7O³|z U«áÖ—…¾‡ ;›t–Oö ¸\?n²ù+dô"N÷×i…׸ô1ýƒ>¡Ïé :¦gôœ^Д^Ò …ûç<¥W4£ïéûrQÑ)½¦×·7p‰§9ý@gtN ZR¸¶Òz“UyyE?ÒŠÖ´¡Íç’.è'ú™ÞÒÿdU¹ô;ÊSo“ë—ì~ºž¿<8~t]0¾/%/þ·ßŸÃ—ëåkŸÐCÏÚðvLGôØ;ö^Ý17+ Ïœ€ü埲‰yä®Èº­ÖÙ'`¹Î¿ •×U–}ƒP¹ ¡g‡û¡§}þ'“¥ÿ%ßâS|ŸºM§`ýt>Bÿ¤Ï"©/èKú—§ó} ÎùHNçÀVW4­à­þ¼_VéäCÖ̲÷Ͳ\yú—Y9t0KV\¥õ5Í>.Ò;LféM…9õh´Ùçÿ÷û{‹ù%àɧ­íVYá¡øRrg⋬nr€ôqQ6ÙÕåÌ\VÂ`_[µ‡Æàó<(´ò’z†šlúÊô–-þ¢wñ—ÑøÅó“cð—ñ蛋qq‡yè–cú=f‚RÞ¶È ˜‘çv]S»‹¦OÏ.ÆçAÓ³³>]9n—:¸¤8ÝR•±5U±z§*ç¼OÕonÜ'qlÆæ­ayÍ%×Üq»nu´–cµÜi_ìÂïñ›?F'Èï›^v0ƒÿígøt£Vô‚[íâIL.ù•I/¿— Øz çÅ¢^×k§uöד£óÐëì¸O/¡îvˆ¼×Yé¥m¯^Ëúì.¯¿nåõevzß—Òoâ^Š g™rÍ‹ñx´ÿ™éÝO2l'%îµ¾/Õ,ÍfšY&™ÀSZOò¼ÉgWÙ*ä &È+aO\¦ÕN)Çg™õ“À´ÊR¾™YfY]¯Ÿ®zÒ ’±ÜÒ7³E½-·|-“|-,Š+ˆ “²Êúö~Oi}é`‚ƒ´Îüwݳïšßø¯äP"=Ê«ºA»¼@»Ãéž-»xÔ݇G±Ÿ€§s4ëÂ1]8¸'ZpD Nòàt3ÛÀÃ{Í%žÍüÜA¤Y‘Pkˆx ‘î"»#êf´.ž ‡NÚpT úoé¤îâ›Þ«zÍcºdðÝñtƒ}φûŠõÝ­[xÜwçe:ÍjðåÓÅê&ü¾ÜO~–_Õø ­ÿîRø Ad¨ù$\œH8%¾ûéá YÇ¿LøÎÔ„šáe~Xº h]øZ®cñ–a,Ö™üÖ ¼—–ˆßUF²œÄ£Ò† $âïÚðc°=îG<`ɱ,–¡ÝªXæPv±,öˆ[Ž—P޶¡£|ž7Q öl.¤öðÿqªÆŠ‰³‡¯X±Xѱâö0n†  |c5 =«qÐ…Eoz˜eUl…™*®hÂQ™<,ZvWAiг± `5Q 5QŸýEs]VõžÿmŒo9\ThÝ%29‚CŢʠWÆÅŸdEV¥3ì<.Þ—Õ<ÅÎýÇE '©Ylõ?ÆY ÖÇlÀÁ9¦ö«¿Â[‡ùåpH©3X͆†“4ŸåÅòºA-xú<û¼®Šêf7eÕÄY‹©Ÿ¤–}y•ÍA}hæIýlës6´7é%`lna•è•Ðt·þâ¨Ý°`kRwôÝqËÅ`¿â ï¸ oßr›ë÷ ‡P c˜Ù’HS°]9„ý¼ Aaü]¯bï ÆZz^g/ ˜ v?Hú/#mYÆ endstream endobj 179 0 obj << /Type /XRef /Index [0 180] /Size 180 /W [1 3 1] /Root 177 0 R /Info 178 0 R /ID [<70650C601352A0F056E4BD97506433B4> <70650C601352A0F056E4BD97506433B4>] /Length 466 /Filter /FlateDecode >> stream xÚÒÍSÍaÆñûzꈎ:Õé("¥ˆŠ·¼ ¡¼T^ònÆÚ˜±de,ÚÏï7¿sEDüSD)i©Ja*RDE j¡+`5T—ëÞx¹VVÉmÐè­‚z(*~þa9wrl„&h†h…5°åA_Ï¥.­”`-”¹Šå¼žc6B‡¢³Þ?ó€×ȾçæªèRôüõ^7l‚-Ыêö`3lƒ>ÅÈ'÷¶Â ô+&¾¹7ÀÍ~øØ »a»bzÎ+»`öÀ>VÌ7xºF`¿âÁ÷Àa8¨xôʽCp Ž(ž>sï(‡QÅÂs÷Æx¡.ªq8¡xYãÁI8 ŠÅ÷NÁ$œ‡3Š¥1ÎÁY¸SŠwo=˜†ËpQññµ{—`æà ÌÃŒâkxå*oå?ï\çèonÁm¸wáÜgÏÉ!“™Lf'ñ†âLjh®UZ÷‘ˆf2™IB˜ a.ÙÍÕpý~ìåF©}ÙUIšqÕ$½_tÕ,ýzáªE©­àª¬4\tÕªôpÒùËd(®Ü Ä'©Ü$'“¦ÜJFCéó÷øÁXÈ endstream endobj startxref 182739 %%EOF ess-17.11/doc/ajr-talk.tex0000644005071500004540000003237713202324173012250 00000000000000%% Given in Seattle, at the National Research Center for Statistics %% and the Environment, and at MathSoft, October 1997. \documentclass[semhelv]{seminar} %% comment out the above and use below, if you have font troubles %%\documentclass[semlcmss]{seminar} %%\documentclass{seminar} \usepackage{slidesec} \usepackage[dvips]{graphicx} %\usepackage{html,heqn,htmllist} % LaTeX2HTML support \begin{document} \typeout{ } \typeout{If you have font troubles, comment out line 5 and uncomment line 7} \typeout{ } \begin{slide} \slideheading{ESS and Literate Programming: \\ Tools for Efficient Statistical Programming and Data Analysis} \begin{center} Dr. A.J. Rossini \\ Statistics Department \\ University of South Carolina \\ rossini@stat.sc.edu \\ % \htmladdnormallink{http://www.stat.sc.edu/\~{}rossini/rsrch/seattle-nrcse/} % {http://www.stat.sc.edu/\~{}rossini/rsrch/seattle-nrcse/} \end{center} Note: \textbf{ESS} is joint work with: Martin Maechler (ETHZ), Kurt Hornik (TU-Wien), and Richard M. Heiberger (Temple). \end{slide} \begin{itemize} \item Thanks also to Bates, Kademan, Ritter (initial versions), and David Smith (3.x, 4.x). \end{itemize} Recently, I've been giving talks which focus on Computer/Statistician interfaces, like this one. They tend to get strange responses. This is not too different from the applied/theoretical Comp Sci situation, where journals focus both on software practice, as well as on theory. Practitioners from both groups are also very confused. So for today, we will focus on one area of statistical practice, as opposed to statistical theory (methods/mathematics/data analysis). \begin{slide} \slideheading{Introduction} Topics: \begin{itemize} \item Computing Environments \item ESS (=\emph{EMACS Speaks Statistics}), and its capabilities \item Literate Programming and Literate Data Analysis \item Links between ESS and Lit Prog \item Future (planned?) Extensions \end{itemize} \end{slide} \begin{itemize} \item Outline of Talk \end{itemize} \begin{slide} \slideheading{Computing Environments} Computer / Statistician Interface: \begin{itemize} \item Command line: keyboard based, minimal mouse usage (SAS (old style), S-PLUS 3.x, R, XLispStat, Minitab (old style)) \item Graphical: pointer (mouse)-based, ``point and click'', minimal keyboard usage (S-PLUS 4, ViSta, Minitab) \item Mixed Interfaces: S-PLUS 4, SAS, ViSta, Minitab \end{itemize} The \emph{Interface} is dependent on the particular user's practice (note the repetition of packages). \end{slide} \begin{itemize} \item Importance to Statisticians. \item Issues of efficiency \end{itemize} \begin{slide} \slideheading{Computing Environments: Design Considerations} \begin{itemize} \item keyboard entry is faster than mouse entry (eventually?) \item mouse entry is easier than keyboard entry (initially?) \item At present, keyboard interfaces allow for more complex/powerful methods, but this is more a function of current software than a design limitation. \item Keyboard interfaces generally require memorization of some commands (at the minimum: those required to find others!). \end{itemize} \end{slide} \begin{itemize} \item Not discussing using keyboard as a substitute for a mouse/pointer-based interface! (i.e. keys to move the pointer, and to press the pointer buttons). \end{itemize} \begin{slide} \slideheading{Emacs} \begin{itemize} \item Text Editor (not a word processor) \item Fully Configurable and Extensible: \begin{itemize} \item Communication with system processes \item Automation of procedures (version control, file comparison) \item Language-specific customizations \end{itemize} \end{itemize} Currently, comes in 2 GNU Flavors: \begin{itemize} \item Emacs (FSF/RMS developed) \item XEmacs (derivative of the above, more features, more bloat) \end{itemize} \end{slide} Some current modes: \begin{itemize} \item \LaTeX \item C, Fortran, SQL \item Makefiles \item version control \end{itemize} XEmacs features: \begin{itemize} \item Embeddable images \item mixed fonts and rich-text (near-WYSIWYG LaTeX document construction) \end{itemize} \begin{slide} \slideheading{ESS (=\emph{EMACS Speaks Statistics})} A package for Emacs, with the following features: \begin{itemize} \item Mode for generating program code for statistical packages \item Inclusion of statistical processes as inferior processes controlled through Emacs. \item Interface for on-line help features for statistical packages (via calls to the package, standard WWW documentation, etc) \item Interface for generating, documenting, and reusing transcripts for data analysis and development sessions. \end{itemize} \end{slide} \begin{itemize} \item Discuss the README \item What are we trying to do \end{itemize} \begin{slide} \slideheading{ESS capabilities: programming} \begin{itemize} \item Syntax-based color and font highlighting \item Access to on-line help facilities when inferior statistical processes are running; to WWW based facilities when not. \item Connection to statistical processes, ability to switch processes (i.e. different instantiations of the same dialect, different dialects) \end{itemize} \end{slide} \begin{itemize} \item to improve code readability. \item on-line help, split off into a different buffer. \item connection to different processes: \begin{itemize} \item to compare different results \item to get different help information \end{itemize} \end{itemize} \begin{slide} \slideheading{ESS capabilities: inferior process} \begin{itemize} \item Syntax-based color and font highlighting \item Searchable Command History \item Separate buffers for help output \item Log (Transcript) of commands \item Debugging assistance (of source) \end{itemize} \end{slide} \begin{itemize} \item to improve code readability. \item ``Splus -e'' improved. \item split up output by context (help, etc). \end{itemize} \begin{slide} \slideheading{ESS capabilities: transcript} \begin{itemize} \item Reuse of transcripts in different dialects, for different sessions. \item Commenting of transcripts \item Comparison of output \end{itemize} \end{slide} \begin{itemize} \item One use: authors who are targeting a number of dialects of S, S-PLUS, and R. \item Readability \item comparison of output among different statistical packages. \end{itemize} %\begin{slide} % \slideheading{ESS: examples} % %%\includegraphics[height=3\semin,width=3\semin]{ex1.ps} % %%\includegraphics[height=3\semin,width=3\semin]{ex2.ps} %\end{slide} %Discuss example screen shots. \begin{slide} \slideheading{ESS: future plans} \begin{itemize} \item Improved support for current languages \item Additional support for other languages (Fiasco/SPSS) \item Inlined statistical graphics (XEmacs) \item Object browser (partial implementation exists for SAS, eventually for S and XLispStat languages). \item Language independent UI/GUI for data analysis. \item Language independent UI/GUI for statistical instruction. \end{itemize} \end{slide} \begin{itemize} \item ESS as a general purpose statistical GUI \item ESS as a general purpose statistical instruction/assistance tool \begin{itemize} \item Statistical help via WWW \item Download similar Analyses \item Guidance via Literate Data analysis \end{itemize} \end{itemize} \begin{slide} \slideheading{Why bother?} \begin{itemize} \item No real need to have a unifying mode (both too much and too little). \item Different languages have different syntax \end{itemize} \textbf{BUT:} \begin{itemize} \item Common, generic interface. \item Improved documentation is important. \item To this goal, want to encourage documentation and revision logs: \begin{itemize} \item Revision and Source Control Systems (not discussed: SCCS, RCS, CVS, PRCS) (automated via Emacs, or manually implemented) \item Literate Programming (discussed) \end{itemize} \end{itemize} \end{slide} \begin{itemize} \item Why 2 topics? \item Single common mode for Literate Programming, Literate Data Analysis. \item Revision/Source control is extremely useful for keeping track of document and program changes. But will not be discussed today. \end{itemize} \begin{slide} \slideheading{Literate Programming: Introduction} \begin{itemize} \item Introduced by D.E.Knuth for developing \TeX (1984) \item Intent: The task of programming should shift from telling a computer what to do, to explaining to human beings what we are doing. \item Remark: Every use of the word \textbf{programming} (used before and after this) can be exchanged for the words \textbf{data analysis}. \end{itemize} \end{slide} \begin{itemize} \item Origin \item Goal: a means to document results. \item \emph{Data Analysis} can be thought of as the implementation of a particular type/style of \emph{Programming}. \end{itemize} \begin{slide} \slideheading{Lit Prog: Example} {\tiny \begin{verbatim} \section{Introduction}\label{intro} For regression models with interval-censored data, there is generally no simply means of conditioning out the nuisance parameter. This nuisance parameter is generally a function of the baseline cumulative distribution function, such as $\Lambda(t)$, the cumulative hazard function, or $\Phi(t) = F(t)/S(t)$, the odds function. However, with right-censored data under the proportional hazards model, we can condition out the nuisance parameter. This simplifies and speeds up the resulting estimation. The main body of code will be the simulation routine, given by <>= bag.sim <- function(beta,N,nobs,numBSsamp) { <> ; <> ; } @ %def bag.sim N nobs beta numBSsamp This can be divided into dataset generation and analysis sections. <>= for (i in 1:N) { <> ; <> ; } @ %def i \end{verbatim} } \end{slide} \begin{itemize} \item Basic example of literate programming. \item document chunks start with '@'. \item program chunks start with '\verb$<<$' \end{itemize} \begin{slide} \slideheading{Web Processing} \begin{itemize} \item To get documentation: weave a web (forms: tex, html, etc). \item To get the code: tangle a web \end{itemize} idea: don't want to read or change raw code (and discourage this!); documentation should tell you everything. \end{slide} \begin{itemize} \item Not WWW... \item basically text processing. \end{itemize} \begin{slide} \slideheading{Statistical Programming and Data Analysis} Is there a difference? \end{slide} \begin{itemize} \item Why literate programming is of interest for data analysis documentation. \item at the most, differences just in the intended use of the code. \end{itemize} \begin{slide} \slideheading{Requirements in a Literate Programming Tool} (for statisticians) Program: \begin{itemize} \item Language independence \item Platform independence \end{itemize} Statistician: \begin{itemize} \item discipline \item interest \end{itemize} \end{slide} \begin{itemize} \item Language independence (examples: S-PLUS, C, Fortran code mixed interchangeably). \item Flexible and platform independent \end{itemize} \begin{slide} \slideheading{Relationship between ESS and Lit Prog} Good: \begin{itemize} \item Documentation (using AUC-TeX), ease of programmability \item Ability to test out real code (dump straight into a running process). \end{itemize} Bad: \begin{itemize} \item Not fully automated (yet!). \item learn yet another language (or meta-language). \end{itemize} \end{slide} lack of automation implies that one needs to access a command line to actually produce results. \begin{itemize} \item Current Links \end{itemize} \begin{slide} \slideheading{Future Extensions: ESS/Lit Prog} \end{slide} \begin{itemize} \item Templates \item Software packaging \end{itemize} \begin{slide} \slideheading{Where to find} \begin{itemize} \item ESS: http://ess.stat.wisc.edu/ %%\htmladdnormallink{ESS} {http://www.stat.sc.edu/~rossini/projects/}: \item Literate Programming: \begin{itemize} \item General Information: http://www.desy.de/ftp/pub/userwww/projects/LitProg.html %%\htmladdnormallink{General Information} {http://www.desy.de/ftp/pub/userwww/projects/LitProg.html} %%\htmladdnormallink{http://www.desy.de/ftp/pub/userwww/projects/LitProg.html} {http://www.desy.de/ftp/pub/userwww/projects/LitProg.html} \item %%\htmladdnormallink{Frequently Asked Questions about Lit %%Prog}{http://shelob.ce.ttu.edu/daves/faq.html}: Frequently Asked Questions about Lit Prog: http://shelob.ce.ttu.edu/daves/faq.html %%\htmladdnormallink{http://shelob.ce.ttu.edu/daves/faq.html} {http://shelob.ce.ttu.edu/daves/faq.html} \item %% \htmladdnormallink{Noweb} {http://www.cs.virginia.edu/~nr/noweb/intro.html}: %%\htmladdnormallink{http://www.cs.virginia.edu/~nr/noweb/intro.html} {http://www.cs.virginia.edu/~nr/noweb/intro.html} Noweb: http://www.cs.virginia.edu/~nr/noweb/intro.html \end{itemize} \end{itemize} \end{slide} \begin{itemize} \item Where to get it. \end{itemize} \end{document} ess-17.11/doc/allnews.texi0000644005071500004540000000015613202324173012347 00000000000000@settitle ESS -- Emacs Speaks Statistics @include ess-defs.texi @include newfeat.texi @include onewfeat.texi ess-17.11/doc/announc.texi0000644005071500004540000000525613202324173012351 00000000000000\input texinfo @c -*-texinfo-*- @comment %**start of header @setfilename announc.info @settitle ESS - Emacs Speaks Statistics @comment %**end of header @include ess-defs.texi @node Announce @comment node-name, next, previous, up @chapter ANNOUNCING ESS @cindex ANNOUNCE The ESS Developers proudly announce the release of ESS @include ../VERSION @c -------------------------------------------------------------------- Emacs Speaks Statistics (ESS) provides an intelligent, consistent interface between the user and the software. ESS interfaces with R/S-PLUS, SAS, BUGS/JAGS, Stata and other statistical analysis packages under the UNIX, GNU Linux, Microsoft Windows, macOS and other operating systems. ESS is a package for the GNU Emacs and XEmacs text editors whose features ESS uses to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages. ESS is freely available under the GNU General Public License (GPL). Please read the file COPYING which comes with the distribution, for more information about the license. For more detailed information, please read the README files that come with ESS. @c And to clear up any possible confusion; the name is ESS, NOT ESS-mode. @c Thank you :-). @menu * Latest Version:: * Current Features:: * Requirements:: * Stability:: * Mailing List:: * Reporting Bugs:: * Authors:: * License:: * New Features:: @end menu @node Latest Version, Current Features, Announce, Announce @section Getting the Latest Version @include getting.texi @node Current Features, Requirements, Latest Version, Announce @section Current Features @include currfeat.texi @node Requirements, Stability, Current Features, Announce @section Requirements @include requires.texi @node Stability, Mailing List, Requirements, Announce @section Stability @include stabilty.texi @node Mailing List, Reporting Bugs, Stability, Announce @section Mailing List @include mailing.texi @node Reporting Bugs, Authors, Mailing List, Announce @section Reporting Bugs @include bugrept.texi @node Authors, License, Reporting Bugs, Announce @section Authors @include authors.texi @node License, New Features, Authors, Announce @section License @include license.texi @node New Features, , License, Announce @section New Features @include newfeat.texi @bye @c Remember to delete these lines before creating the info file. @iftex @lucidbook @bindingoffset = 0.5in @parindent = 0pt @end iftex @comment Local Variables: @comment TeX-master: "announc.texi" @comment End: ess-17.11/doc/atouchofstyle.css0000644005071500004540000001672113202324173013417 00000000000000/* 6 January 2007: - minor cleanup - add CSS3 selectors */ html { margin: 0px; padding: 0px; border-top: 1.4em #000033 solid; font-size: 12px; background-repeat: no-repeat; background-attachment: fixed; background-position: top left; background-color: white; } body { margin: 0px; padding: 0px; font-family: "Trebuchet MS", Arial, sans-serif; color: #171717; line-height: 1.45; /* something smart Eric Meyer said: no unit here */ text-align: justify; width: 40em; padding-left: 15em; padding-right: 2em; border-right: 1px #000033 dotted; } h1 { padding: 2em 1em 2em 1em; font-size: 2em; color: white; text-align: right; margin-left: -10em; margin-top: 0em; margin-right: -1em; background-image: url(../images/logoESS.gif); background-position: left 25%; -o-background-size: 100% auto; background-size: 100% auto; background-origin: content; border-bottom: 0.4em #000033 solid; border-left: 0.1em #000033 solid; text-transform: uppercase; text-shadow: white 0px 0px 10px, black 3px 3px 5px; } h2 { font-size: 1.4em; border-left: 0.6em black solid; padding-left: 0.3em; border-bottom: 1px black solid; padding-bottom: 0.1em; margin-top: 1.5em; letter-spacing: 0.1em; } h3 { margin-bottom: 0em; } h2,h3 { clear: both; } h1 span { font-size: 0.7em; color: #EFEFEF; } h2 span { font-size: 0.7em; color: gray; } h2[id]:hover::after, h3[id]:hover::after { content: "#" attr(id); float:right; font-size:0.7em; /*line-height:2em;*/ color: maroon; padding-left: 1em;} p { margin-top: 0px; margin-bottom: 0.5em;} dt { font-weight: bold; margin: 10px 0px 2px 0px; padding: 2px 0px; border-top: 1px black solid; border-bottom: 1px black solid; text-indent: 1em; letter-spacing: 0.1em; position: relative; } dd + dd { margin-top: 0.7em; } table { font-size: inherit; } /* so that the font-size is inherited into table */ small { margin-top: 2em; display:block; clear: both; } pre { padding: 0.5em; border: 1px gray solid; overflow:auto; background-color: #EFEFEF; } kbd { border: 2px gray outset; padding: 0em 0.1em; background-color: white; } kbd:active { border: 2px gray inset;} img.left { float: left; clear: both; margin-right: 1em; margin-bottom: 0.5em; margin-top: 0.3em; max-width: 45%; } img.right { float: right; clear: both; margin-left: 1em; margin-bottom: 0.5em; margin-top: 0.3em; max-width: 45%; } /* link styles */ a:link, a:visited {color: navy; text-decoration: none; font-weight: bold;} p:hover a, p:hover + p a, ul:hover a, dl:hover a, table:hover a { text-decoration: underline; } a:hover { text-decoration: none !important; border-width: 1px 0px; border-style: none; color: green; background-color: #efefef;} /* navigation menu */ #navmenu { width: 150px; position: fixed; /* f*ck, Opera 8 'loses' abs positioned content within fixed */ position: absolute; top: 0px; right: 0px; padding: 0px; margin: 0px; display: none; /* the TOC script will make it appear */ text-align: left; } #navmenu > li:first-child { font-weight: bold; color: white; background-color: #000033; } #navmenu li { line-height: 1.4em; padding-left: 3px; list-style-type: none; background-color: #2E2E58; color: white; margin: 0px 0px 1px 0px; position: relative; } #navmenu li:hover { background-color: maroon; color: white; } #navmenu > li:first-child:hover { width: auto; right: 0px; } #navmenu > li:hover { width: 298px; position: relative; right: 151px; font-weight: bold; } #navmenu li:hover > ul { display: block; } #navmenu li ul { margin: 0px; padding: 0px; position: absolute; top: 1.4em; right: 141px; width: 150px; margin-top: -9px; /* 1px between list, but with 10px padding */ padding-top: 10px; padding-right: 10px; /* so that the box still overlap; helps with hovering */ font-weight: normal; display:none; } #navmenu li ul li { padding-left: 0px; } /*the links should fill to full size of list item */ #navmenu li a { display: block; text-decoration:none !important; color:white; padding-left: 3px; } #navmenu li a:hover { border-style: none !important; background-color: inherit !important;} #navmenu #toc li.h2 a { padding-left: 0.3em; font-size: 0.9em; font-weight:bold;} #navmenu #toc li.h3 a { padding-left: 0.8em; font-size: 0.8em;} #navmenu #toc li.h4 a { padding-left: 1.2em; font-size: 0.8em; font-style: italic; } /* for IE: with some scripting and these styles the menus also work in IE */ /* Do not put complex selectors IE does not understand in same style declaration!! */ #navmenu li.first { color: white; background-color: #000033; } #navmenu li.expand ul { display: block; } #navmenu li.expand { width: 299px; position: relative; margin-left: -152px; font-weight: bold; background-color: maroon; color: white; } #navmenu li.expand a:hover { background-color: maroon; } #navmenu ul.ulhover { display:block; background-color: #CDD5DD; /* background-color so there's a background so hovering works... */ padding-top: 1px; margin-top: 0px; margin-right: 0em;} /* -------- Requires CSS3 Selectors (O9, IE7, FF, SF) -------- */ /* well implemented by http://www.askthecssguy.com/2006/12/showing_hyperlink_cues_with_cs_1.html */ a[href$='.pdf'], a[rel='pdf'], a[rel*='pdf'], a[rel~='pdf'] { padding-right: 18px; background: transparent url(../images/icons/icon_pdf.png) no-repeat center right; } a[href^="mailto:"] { padding-right: 18px; background: transparent url(../images/icons/icon_mailto.png) no-repeat center right; } a[class ="popup"] { padding-right: 18px; background: transparent url(../images/icons/icon_popup.png) no-repeat center right; } a[href$='.doc'] { padding-right: 18px; background: transparent url(../images/icons/icon_doc.png) no-repeat center right; } a[href$='.xls'] { padding-right: 18px; background: transparent url(../images/icons/icon_xls.png) no-repeat center right; } a[href$='.ppt'] { padding-right: 18px; background: transparent url(../images/icons/icon_ppt.png) no-repeat center right; } a[rel ~='external'] { padding-right: 18px; background: transparent url(../images/icons/icon_external.png) no-repeat center right; } /* faviconize script needs some styling */ img.faviconimg { max-width: 1.1em; margin: 0; padding: 0; margin-left: 2px; border-width: 0px; vertical-align: top; opacity: 0.5; } a:hover img.faviconimg { opacity:1; } p:hover a img, p:hover + p a img, ul:hover a img, dl:hover a img, table:hover a img{ opacity:1; } /* -------- page specific stuff -------- */ /* Sortable tables */ table.sortable span.sortarrow { color: black; padding-left: 0.5em; font-family: sans-serif; } table.sortable th { vertical-align: middle; cursor: pointer; } /* CSS Exp style */ dt span.expdate { font-size: 0.7em; line-height: 2em; color:gray; position:absolute;right:0em;} /* -------- various media styles -------- */ @media print { html, body { border-style:none; margin: 0px; padding: 0px; font-size: 10pt; width: 100%; background-color: transparent;} h1 { border-style: none; } h1:first-letter { margin: 0px; border-style: none; } #navmenu { display:none !important; } h1, h2, h3 { page-break-after: avoid; } img { width: auto; max-width: 100%; } } @media projection { html { font-size: 1.2em; } body { width: auto; padding-left: 3em; } } /* voice styles */ @media speech { title { display:block; speak:normal; } h1, h2, h3 { voice-family: female; } p, dl, ul, ol { voice-family: male; } acronym { speak:spell-out; voice-family: female; } abbr[title]::after { content: "This abbreviation means" attr(title); speak:normal; } acronym[title]::after { content: "This acronym means" attr(title); speak:normal; } } ess-17.11/doc/authors.texi0000644005071500004540000000255613202324173012375 00000000000000@c ---- KEEP this synchronized with the @author entries in @c ./ess.texi @c ~~~~~~~~~~ @itemize @bullet @item @c @uref{http://www.google.com/,A.J. Rossini} @uref{mailto:blindglobe@@gmail.com, A.J. Rossini} @c -------- @item @c @uref{http://www.sbm.temple.edu/departments/statistics/,Richard M. Heiberger} @uref{mailto:rmh@@temple.edu, Richard M. Heiberger} @c -------- @item @c @uref{http://www.ci.tuwien.ac.at/~hornik,Kurt Hornik} @uref{mailto:Kurt.Hornik@@R-project.org, Kurt Hornik} @c -------- @item @c @uref{http://stat.ethz.ch/people/maechler/,Martin Maechler} @uref{mailto:maechler@@stat.math.ethz.ch, Martin Maechler} @c -------- @item @c @uref{http://www.mcw.edu/pcor/rsparapa,Rodney A. Sparapani} @uref{mailto:rsparapa@@mcw.edu, Rodney A. Sparapani} @c -------- @item @c @uref{http://www.damtp.cam.ac.uk/user/eglen,Stephen Eglen} @uref{mailto:stephen@@gnu.org, Stephen Eglen} @c -------- @item @c @uref{http://www.ucs.mun.ca/~sluque,Sebastian P. Luque} @uref{mailto:spluque@@gmail.com, Sebastian P. Luque} @c -------- @item @c @uref{http://www.google.com,Henning Redestig} @uref{mailto:henning.red@@googlemail.com, Henning Redestig} @c -------- @item @c @uref{http://www.google.com/, Vitalie Spinu} @uref{mailto:spinuvit@@gmail.com, Vitalie Spinu} @c -------- @item @c @uref{https://github.com/lionel-, Lionel Henry} @uref{mailto:lionel.hry@@gmail.com, Lionel Henry} @end itemize ess-17.11/doc/bugrept.texi0000644005071500004540000000121713202324173012351 00000000000000Please send bug reports, suggestions etc. to @email{ESS-bugs@@r-project.org} The easiest way to do this is within Emacs by typing @kbd{M-x ess-submit-bug-report} This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug. If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer. Note that comments, suggestions, words of praise and large cash donations are also more than welcome. ess-17.11/doc/bugs-ms.texi0000644005071500004540000000333113202324173012255 00000000000000 See the file @file{README.SPLUS4WIN} as well, for more information and details. @itemize @bullet @item (RMH) system freeze and ctrl-m, a solution for some cases. Frequently, when the *shell* buffer freezes while running either COMMAND.COM or a DOS or Windows program initiated by command.com, it can be unfrozen by entering the key sequence C-q C-m RET into the frozen buffer. What I think is happening is the coding-system got confused. Command.com is waiting for the C-m C-l sequence and it only sees the C-l, which it knows is not the end of the line. When we manually give the C-m, followed by RET, it is happy and completes parsing the line. For example, from a *shell* buffer running bash (with ps in the path): command.com ps C-q C-m RET exit C-q C-m RET command.com /c date RET C-q C-m RET command.com /c date C-q C-m RET @item (RMH) Changes in ess-r-d.el for Windows One of the design goals in ESS was to make it almost unnecessary for users to make modifications to the ess-*.el files. We have split the R function into two clones. R-unix is the old R function. It uses the starting argument "--no-readline ". R-microsoft is designed for Windows. It uses the starting argument "--ess ". We detect the operating system and fset the name R to whichever is appropriate. No user changes are required. M-x R always works. @item (RMH) msdos.el Start an msdos shell inside an NTemacs that normally uses bash as its shell. It should have been easy, but had many parameters that needed to be set. I am sending a copy of this to the Ntemacs mailing list. I think this function should be merged into the Ntemacs distribution, but for the moment I am attributing it to us. @end itemize ess-17.11/doc/bugs.texi0000644005071500004540000000276213202324173011647 00000000000000@itemize @bullet @item Commands like @code{ess-display-help-on-object} and list completion cannot be used while the user is entering a multi-line command. The only real fix in this situation is to use another ESS process. @item The @code{ess-eval-} commands can leave point in the ESS process buffer in the wrong place when point is at the same position as the last process output. This proves difficult to fix, in general, as we need to consider all @emph{windows} with @code{window-point} at the right place. @item It's possible to clear the modification flag (say, by saving the buffer) with the edit buffer not having been loaded into S. @item Backup files can sometimes be left behind, even when @code{ess-keep-dump-files} is @code{nil}. @item Passing an incomplete @Sl{} expression to @code{ess-execute} causes ESS to hang. @item The function-based commands don't always work as expected on functions whose body is not a parenthesized or compound expression, and don't even recognize anonymous functions (i.e. functions not assigned to any variable). @item Multi-line commands could be handled better by the command history mechanism. @item Changes to the continutation prompt in R (e.g. @code{options(continue = " ")}) are not automatically detected by ESS. Hence, for now, the best thing is not to change the continuation prompt. If you do change the continuation prompt, you will need to change accordingly the value of @code{inferior-ess-secondary-prompt} in @code{R-customize-alist}. @end itemize ess-17.11/doc/credits.texi0000644005071500004540000000562113202324173012341 00000000000000@cindex comint @cindex authors @cindex credits The ESS environment is built on the open-source projects of many contributors, dating back to 1989 where Doug Bates and Ed Kademan wrote S-mode to edit S and Splus files in GNU Emacs. Frank Ritter and Mike Meyer added features, creating version 2. Meyer and David Smith made further contributions, creating version 3. For version 4, David Smith provided significant enhancements to allow for powerful process interaction. John Sall wrote GNU Emacs macros for SAS source code around 1990. Tom Cook added functions to submit jobs, review listing and log files, and produce basic views of a dataset, thus creating a SAS-mode which was distributed in 1994. In 1994, A.J. Rossini extended S-mode to support XEmacs. Together with extensions written by Martin Maechler, this became version 4.7 and supported S, Splus, and R. In 1995, Rossini extended SAS-mode to work with XEmacs. In 1997, Rossini merged S-mode and SAS-mode into a single Emacs package for statistical programming; the product of this marriage was called ESS version 5. Richard M. Heiberger designed the inferior mode for interactive SAS and SAS-mode was further integrated into ESS. Thomas Lumley's Stata mode, written around 1996, was also folded into ESS. More changes were made to support additional statistical languages, particularly XLispStat. ESS initially worked only with Unix statistics packages that used standard-input and standard-output for both the command-line interface and batch processing. ESS could not communicate with statistical packages that did not use this protocol. This changed in 1998 when Brian Ripley demonstrated use of the Windows Dynamic Data Exchange (DDE) protocol with ESS. Heiberger then used DDE to provide interactive interfaces for Windows versions of Splus. In 1999, Rodney A. Sparapani and Heiberger implemented SAS batch for ESS relying on files, rather than standard-input/standard-output, for Unix, Windows and Mac. In 2001, Sparapani added BUGS batch file processing to ESS for Unix and Windows. @itemize @bullet @item The multiple process code, and the idea for @code{ess-eval-line-and-next-line} are by Rod Ball. @item Thanks to Doug Bates for many useful suggestions. @item Thanks to Martin Maechler for reporting and fixing bugs, providing many useful comments and suggestions, and for maintaining the ESS mailing lists. @item Thanks to Frank Ritter for updates, particularly the menu code, and invaluable comments on the manual. @item Thanks to Ken'ichi Shibayama for his excellent indenting code, and many comments and suggestions. @item Thanks to Aki Vehtari for adding interactive BUGS support. @item Thanks to Brendan Halpin for bug-fixes and updates to Stata-mode. @item Last, but definitely not least, thanks to the many ESS users and contributors to the ESS mailing lists. @end itemize @emph{ESS} is being developed and currently maintained by @include authors.texi ess-17.11/doc/currfeat.texi0000644005071500004540000000313013202324173012510 00000000000000@itemize @bullet @item Languages Supported: @itemize @bullet @item S family (R and S+ AKA S-PLUS) @item SAS @item OpenBUGS/JAGS @item Stata @c @item XLispStat including Arc and ViSta @item Julia @end itemize @item Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia) @itemize @bullet @item Syntactic indentation and highlighting of source code @item Partial evaluation of code @item Loading and error-checking of code @item Source code revision maintenance @item Batch execution (SAS, OpenBUGS/JAGS) @item Use of imenu to provide links to appropriate functions @end itemize @item Interacting with the process (S family, SAS, Stata, Julia) @itemize @bullet @item Command-line editing @item Searchable Command history @item Command-line completion of S family object names and file names @item Quick access to object lists and search lists @item Transcript recording @item Interface to the help system @end itemize @item Transcript manipulation (S family, Stata) @itemize @bullet @item Recording and saving transcript files @item Manipulating and editing saved transcripts @item Re-evaluating commands from transcript files @end itemize @item Interaction with Help Pages and other Documentation (R) @itemize @bullet @item Fast Navigation @item Sending Examples to running ESS process. @item Fast Transfer to Further Help Pages @end itemize @item Help File Editing (R) @itemize @bullet @item Syntactic indentation and highlighting of source code. @item Sending Examples to running ESS process. @item Previewing @end itemize @end itemize ess-17.11/doc/dir.txt0000644005071500004540000000103713202324173011325 00000000000000This is the file .../info/dir, which contains the topmost node of the Info hierarchy, called (dir)Top. The first time you invoke Info you start off looking at this node.  File: dir, Node: Top, This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing "q" exits, "?" lists all Info commands, "d" returns here, "h" gives a primer for first-timers, "mEmacs" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: ess-17.11/doc/ediff-sas.gif0000644005071500004540000003445513202324173012350 00000000000000GIF87aJ÷0///?0 / ///00 ?? 000???@@/PP?@@@@O@OOOPPPP_P___`_P_`_``@ooOP_```oo`oooppooppp¯P°/ÿÿ€€p°°p°¿OpO/ÏŸï_ŸŸÀð€€€ŸŸŸ°°€°°Ÿ¯¯¯°°°¿¿¿ðÿààŸÐРÐаïï àà¯ðð ðð¯ðð°ÿÿ°ðð¿ÿÿ¿€Ïà€Àð€Ïð€ÏÿŸðÿ ðÿÐÐÐßßßððÀÿÿÀððÏÿÿÏÿÿßïïïÿÿàðððÿÿÿ!ù,J@ÿ¡|" ÁLȡÅJl±âĈ/ZÌÈ£Ç5Šì²äÈ$OšLɥ˕/UÊl ³æÌ˜4oÚÌɧÏ?u í ´èРDMʩӥ³ìØÁb‡\ñAAŠT©¢â@UhÓªU›%ËÚ·pãÊûvEZ»hñžÍ{·/ß¿{ëìWpa€N|¸1ãÇ‹#+žìXreÊ1[Î|¹3çÏ›CkíYtiÒ Q›N}º5ë׫c«žíZvmÚ°gy2µ·ïÞ$d²€ñãǧG»û·óÁ¡H¥ª÷‚ïÆvÛ¦Õ΂»w·ÝÁ‡ÿg.ž-øïÛÏ«W‹ÛvîÛðßËwO¿½ýøõñߟ¿??ýþ' ög`€"h`sÅ!€oÁ × ƒÆ)s¼=!Òièᇠ†(âˆ$–hâ‰(¦¨âŠ,¶èâ‹0Æ(ãŒ4Öhã8æ¨ãŽ<öèãsjø oÙÛ "yä’FЍäH6ÙdqTN%¥“KVY!”V2Ùe•XfIe”c~™¤sd‚©ä‡Ošidš?Æ)çœtÖiçxæ©çž%iÅŸ€ÚÖ „j衈&ªè¢Œ6êè£F*餔Vj饘fªé¦œvêé§ †*ꨤ–jê©•ªªmIÇhtÓ­ÿ*(ªÂZk·¶•ë®¶Ršë ¿Þl¡¿2:¬®‰‹+±†‹ê³ÐF+í´ÔVkíµØf«í¢²Úêt" ëTÝþ¹í¹è¦«îºì¶ëî»ðÆ+o¨å²ÚÖRå‹ï¾úúYn[1ÄpÀJpÁ ܬ³ó6ìðÃG,ñÄW¬m½ƒò«±¾RùÛ­Å ‡,òÈ$—lòÉ#c|/Çï뱬(Ç,óÌ4×lóÍ7«ÌòÎ.Çú/Î@-ôÐDmô¦:·ÌóË«íô¦á÷ôÔTWmõ¨IóÌ2Óª\¨Â^ vØYŒý¨Ùf—-vØiжÁ_Ú¶Úr?ê,ÃËöªw¤w3 ì¢ÆÙ5ÞWnøáˆg‘µÒÿs(G.ùä”Wnùå˜g®ùæœwîùç ‡.ú褗.y¨§®úꬷîúë°¯y³×9í·ÛÎî»ëÎû゚ûð½¼ñ¯üñË'ÏüóÎGüôÍS½õÒW¯ýõÛgÏý÷Þ‡ýøÝ“¾ùâᄌÖ=“[®éŸ—¹ü<Ð_ÿäöÛ?äúßüÿóÿ(9ýårý³œáºp„ ýG¿&P€´ê"°:ªÎƒ|7ÂŽPué;_ùV¨Â¦ð…è‹! a8CºÐ†4¼a w¨Ãæð‡8¼ÊvÂ!Ÿu‹HL¢—ÈÄ&:ñ‰ÿ˜‹§HEØ‘‡Wôa±¸E-rñ‹^ cÇØE2‚ÑŒbâÏ‚ô¡qí@g¨‚ 5ǶÔQŽx¬£a<JwÌ£åÇ?òq{¤à(¬ZI­‘w \àtåÈI**\Äz$®™¬FIÒ’›ää²4 ÉCI­’š$&™J1‹””´ä*íF¸ÄÙò–ïâtÚXD÷},b‡tZ-á5LS—ÈL¦2µ>Æü0[¦4§IÍjZ3^ÍdŸã¼U¶„¥-aݘÂÀÙÈkšóœèL§5³É¸mšKðŒ§<ç)O]†Èp¤§>÷ÉÏ~VÍž rc–@Ђô Mÿ¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽzô£ ©HGJÒ’šô¤(M©J'¤6”B'BeZPšÔ¦KÀéMj…êT¥=5hPsúS¢Ö”¦ƒ;*EtP˜õ8+ͨL§šÓ§"§¦M}¨M©ºS¡fµªý©Sà Qœõ¬Wí*Rc:Ó®òô­_e¨Y™êÓ¶.5¡fŪWõêÖpÙ¯Í+_ã Ö‹u¯/Õ¨N‹V‹©.hd#;YÉBÖ²”½le7«ÙÎfö³˜ -gA;ZÑzÖ´¤=miW«ÚÖ¦öµ¨-ka;[ÙºÖ¶´½mmw«ÛÞæö·¸ .oo;\áúÖ¸Ä=nq—«Üæ&÷¹È.s¡;]é:׺Խnu·«]çºÓ^Ï:å®@¹Ér†9¬D/%c¹HS~Ò¼°LÖ{c)œ`‘—½äÅÛ}ýÉßþú—SµR…6ôÝj]vT‚=¹·ÿ:øÁðÏÿ®GøÂΰ†¥ÅÎ¥A³iÝ$§Üv0rЏ¼N±ŠWÌß·ÌÂ,ޱŒg,coíÃ]£±ŽwÌãÿÚ¸q8žU‡Lä"ŸóÇý 27ß·µÕlbò“Ÿ<ÎFIÙÉPVÔÜLÉå½) Y’*&¯ŒLæ2O Éí{ãÏÌÌæ6»Ùhh~¦/eØùÎ(¨3ž÷Ìç>ûù/@A Íg@zφ&4žÝçCû¹Ð‚t¡%=é@šÑ‘¾´¡1mçMßyÓœ~t¦A-êE‡ÚÒ”6µ¥êH+ÚÑ™žt¬e]êZÛúָε®wÍë^ûú×À¶°‡MìbûØÈN¶²uçÃ|WÏ{†ö²§Mí\ÃºÚØÎ¶¶·Íín{ûÛà·¸ÇMîr£ ÀÂçšÙLMµ{Tï–ׂóÖ,¿jÞõVp˜;¹ï7û›dèÖºù¬BÒqŽƒÌ#û8ÈD2Ü _”Á!þðA)\ÁêeåÂê›Þ…¹–èeÆÏ_DÕw¿î åÆ?Žâ¿m<¿âÕx)UNß–ŸR(ÿ·Î­Õlïüç@zÃz®äwÒ ËGOzÚr.ô¦;ýé‰"úœA õª[ýê¤âLÿz©f‚cýë`û¤ÐO§ hO»Ú×Îö¶»ýíp»ÜçN÷ºÛýîxÏ»Þ÷Î÷¾ûýàOøÂþðˆO¼âÏøÆ;ï-u¨`•šR±"Ö¨nì`-Õ§Þt«A*ågzØÏ~¨¨ýçK/TÕãÕõ˜éZ [ØÅŽ^®µG¬í5/yÀÒ>±¦o½ï3ù̯•ª¬ï(ç9?üºþÕ÷»‡+YI¿yÍ£^÷Í'¬b{Ÿ}‹²~ò†%ªèÁÊØñC4òO¿ú•ŸÖõW”®î¿üçOÿúÛÿþøÏ¿þ9ês±ûÿÿØd7`ÀÁuù€˜€Ppkö€ÿ8Xx˜¸Øø ‚"8‚$X‚&x‚(˜‚*¸‚,Ø‚$¶q "ƒ 2ƒ rƒ6˜ƒ5¸ƒ4؃8ȃ?èƒ:(„@8„Ax„F˜„E¸„¸ƒƒ!4…$€'`,@ `Ù!ènÑ…ãá…oх܆`È„Hˆ†JH„l˜†m¸†n‡p8‡jX‡oh‡rˆ‡3È ¼$! X%ËÑr$kâF‹€t±ˆŒØˆŽH‡w‰y(‰8‰–X‰˜¨‡šH‰›x‰˜‰œø†l„&¿!%x&h’Eò‡¤˜%È!`Z2`«Hˆ#’&d²%P"‹¹X"koRvò%§È&­H$'Ò&Æ%¯È'ʸŒÌØŒÎøŒÐÒØ£8ÖxØ˜Ú¸ÜØÞøà8ý×0øf3娀èèt÷Má%I™I''sž4r5ôFrÇr­_ö¨r_–Ié8W·ŽÎÿÑŽTG ¹F&u]çŽs369eæÅy‘×䈑ّ¦‘ëæ‘"9’-¶fÎdS—c$¹’,9O ù1$v03N2bnN[ö517#F79)6$¦“2éM'&Nc5ð%rûsëEs—$J÷HrK9^HÙ’V‰8/M?-[94çøŽUy•bi5Y¹*PÔDt9i©–¦³–:ny–”9q)—§“'TEz¹—(TF~yF™F€9˜‚Y˜ht˜‰˜„©˜†i=e©*v9?% ?“Y?T™T™˜)™›i™“ù™›£™É™•š£yAŸyš¦y™£¹D©i™’´é™™I™¬Y@¢ ›žùš¤)›Qä›#œÂÙAÃùAÀÙAx雯YœIÀ?ôÓ˜‹™˜ÒÔ ÖɘØ9שٹ=ù©’c9žä™8ßiv))d¦òníÖž”(ìiqï)Ÿ‘ŸôiGóÙoö–o.ן8×eþ©_“&ç7ÊÇŸ –ÚŸ_vŽLWžlvž8Žz¡J4)dI‘™¡ ¢ó²¡Ü$¢&z¢'ÿC¢F‡¢,Ú¢PáR¡E^.Z£6*/CD$0:º£=Ê£:Êu.%yÉ÷QÑ÷{ U¤ëg~±·Nê|¼§UZ~#ÅXH*}WÚ|¥w¤H{%Å¥º7yæwV·|aú|¥¤&e¥•}০¸GyGª}Þ'¥z§…~÷‡§Iú¤~ú§€¨‚ª|l…R|J|éǦƒº¨(e¡7ú¨z1k´Kéf€!I*ºŸcfú¹  J €³ŸöÖ þÉ©û©¨ú4j!Žšª®úªYg’ì“déY¢ÚdPÖ•°º«¨ª¢4Ê«À¬™â«ÂZ¬ÆJ)Äz¬Êº¬Š’¬ï¢«’¢«Ð]*oʬÖ*©w’´ú &0EI”@Ù6àê(89“㊓Þ*­;i”ád®hƒ®õèòš ôU,S rL•y­üZ*¾*mw°æ6°[°Ãvm›° »° Û°û°ÿû¯}&°Ûi{±Ÿ–±‹¦±¢†°‹h‹±°6²Š²¶±;m$›²¯f²%+²{mëh2ë±{³8›³:»³<n«ê€­Ú¯Bëª?žêY*ö‰Ÿ÷ÙGð¹pJû´L[ŸN µî9 Ê©jµÆâ©i7¢Z z“© &, Êo¦ª©f›CKcEk©^·¶p›ªÉZbt;“v[”M·z{‘κ·~[£}û·‚{¢m´ƒ{¸äY¸g·¨‡ ¥e¥P%Wb¹ŒZ¹MZL¥:Ë=*´œË?ªÆ²\˾LË\§ÁÂ<ÌùÄ\ÌÆ|ÌÈœÌ1ÁbBŒÅ(Œf‚ŠÑìÌ4'¥8Í.ŠBòÌ× ŒÍ ÍØÎÊ<Îä\Îæ|ÎâH©Ýì%&Ôü&µèÌ·Ø%óìÍñlÏe‹ªøÍ!bŒùœÏÚ<ŒÏÑ€MÍú¼%j‚Î ½Ð ÝÐÞÈÌÙXÐÍ'=Ñ}ÑÑ8ÑÝÑýÑ Ò" #üËÀ&ÍŠ[«+z*ùê”y«JP–0M•ü˜Jì¯-rø¸rù%_'ýÓ—2€…˜ÀâY*b cë+W+ª zI_ë i«¶R½¯@]Õ’ÒÜZÔÐò•Ö)\­ _mÕbM(<%=Öhýuñ›ÖlíÎz«¹J‘m=×C6·Þ®íjb5¡tÝ×)«Úêl3êׄmuk]؈½s‡ØŒíf‹ÝØMfÙ”Ýc“M’VÙ7zÙÛ2­QF®#3o –Ùš ¸€=«‚­ÒöreâÊ“Iw6®«MVeŒre±-­=ÌÔ¥ÚÔ¡ºµ¥j,ƒSÚ¦­¨-gY=+éú®x‹·!V“‹R®F©×éÚ®µ½®ÍMÝ×=bÖý”ój¯ðI÷u¯07_úš·õêJÂÝ¢œ-’¤Þ(ê«‘ßò=ßô]ßT:T”—|¹ß¨SݹþÍààþß>àÇÿß‘©™䜨éà¶™–uù? ‰?­)›´™žšáùãáž›º©9%¾?á”âÞ?)›/®Ax™œ'tœ­3œÁ©œÆIãÄ©œT<›yà žàNäB^äCžäH¾äBÎà AA+>— @äâTŽå¨Yš÷AN„åYþàæ$æ^ŽAuIB%”:y©ßjî:5çý;Anäv®äGžçwÎä{®çxNFX]/ö=èó=â„~èrÉߊ>ãzÉçþèŽé~.é}^é¾~©î½é)–éo«.ñv)¡*£þ.¢ ¶¿Í)_}`§ŽêÿÉé·ä錴SõTÛ´ùYµPë(Ikë¾^ê½­ÛgËÛNíÛg{ª ƵeëH£Š¶Ç.fÊΠiÖ°^3²®Àëq ÇG 7qLëíÛ^q‰ì†îáÞíÚnrÿ¸îß]¯ÈÞöEÞ7ï|,%—róZÓOÞàms#÷HšrT™`õ^í"SÖxÖ¿ðú´Þ ÿðõtÚ'iatK“v‹0ÎmÞ¿ñª*ñÚ4ØY&ÛòÏñ&O3ò*/M)¿ò.KŒD}´/_óÓÿtíZmó:LB ž3_¢;ô0?©÷$¤wôHŸôJ¿ôLßôNÿôPõR?õT_õV¯v´kÎû¾q ¹“»õ–û¤²»¤ß'Q°ûRœû¹Ûº`ö¥;ö$åºm_VgöFZ÷®kXiºpÏPYï|“Û§ê;¾øK¥öÛº·Ç¤‘›z‰ÿ»DZ¦Í ùkO~õ[{Ó›{|¦f}÷k¦žß¾t*XÐ;÷é{§è›|d WòËõ¥Oø}5¼í›úÝ¿­oø×Ûú«·QSÅ÷™›÷ õ÷¡Ïºm:ø¼[øîKúïç¥åËøžÏü¯g½Ì¼^ꤣ¿½™ù‰¥}¾‡?ûŠüØÿK|ȥſ¼Â¾®Ï|嫹¸¾•¯»±KþR¿ÄßýÜgúï¿}ôþöŸ§‘eÇŽ&K D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–¡ÜaEæLšYlÞÄ™SçNž=}þTèP¢EEšTéR¦M>…UêTªU­^ÅšUëV¤4½Z±ù( /~­Éu*µmŸ²uWî\ºuíÞÅ›WïÞªhg†…9PðàdÍÆô –+Ü›ŒÛ|çc¢”!çtŒYsåÍY,7îLÙòg¾¥MŸFZõjÖ­ƒ&V|ÀlÚ† Û-mϘgïäý»1o¡µGŸü;rm›+ÎÜ·óè½'÷¤îZûvîݽ¯Ww–Ä ã>›8üzöíÝ¿‡_þü¦ãÞß_ÿŽÃöéÿ0@$°@…²/?÷ï?õ²ˆ!›"” -¼)B /Lî@?1DG$1AÿTÐA¿2ä‰Cqâ2ÒH¤±FoÄ1ǶLDñDÑÒ1H!‡$²H#³âñÄs{ðH'Ÿ„2J)sL²GüjJ-·ä²K/¿«RIþ˜\ñK3ÏD3M5­ ÓJ°ôjM9礳Î:Ûô‘L íä³O?ÿO+áL PCE4QúÝп4¤0' 7„qRI#±'LcäT 3õ ÓK-¥°TLθád\î³àƒ 9ìŒ 9Z]QQ]wõ’Ñ+õÌBIa܉S2vXe? *Ya‰=öTeƒr»Î.3ªÚë@ó);^¿wJ_—L¯LPé:·Æ\Ãe·]wy7E`½«{ïE¡^|÷å·_ÿ8`&¸`ƒF8a…f¸a‡†8b‰'¦¸b‹/Æ8c7æ¸cƒã}s^šôÝ—d ~Áà”Uvxå]Fùda˜f™oÆ9gwæ¹gŸÚgÇ,-“ï=:â•—¾—f—nz_›mj¬¾Zj|Ÿæ—ê®·Æf«±&Û^¦µþ:ê ×f»m·ß†;n¹ »Ÿ° ¼ïÎÿ»,‘gJ:ߊ_ üê” oq© WÜðÆ ‡¼ñ—Üñ~!7íÅ1ßóÇ9¿8òÌ3=ñÃÅþüôÑ#óÒ+Ÿ;vÙg§½vÛe¯;0ónó»è¯n>xá‡'¾xãG~öÜw?¯wÄÊ|7zé§§ÞËc¾0çýÛ ïsúÞ¦ð½'?|ñaÈ‚|œÌ¿|óƒR}ôÏ?ßýäh]Õ3êd­Î9áøþî+UY (ÊÙß­@@ê-±òßÿ˜ªTñïÞ’Ž3XœuUσñY^ö‚žçí©{à[_ o2¿°P|+Tá ‹âÂôۆ0<ж€s-ëE‡Øbs®rÈCžˆ&ˆ=4âu~È-&öPˆLLâ+ÓÁV‘=u# FE-rq‹YÜ^“ºCCQQ5fÄ ­¸Æo ÍQ2acå8G3¹ñop¤cõ¸Ç@5ÉMƒº£bž%­h Ò|Dd"¹;ú.N²T† õ©IE*‹Äd&5©–F–0X›e(E™šNro”§De*9y=Ý1„¦Te,e9K¦„ðV¼{£ i¹K^öò'!ÿá+ÅèKbs—Xìb¿˜L¤%Ï„f4¥9MjVÓš×Äf6µ¹MnvÓ›9Œ3„“šæ<:— Î‘°3›³É<¿ÙMvº3"öTˆ< ‚Ïà“œüÌg9%¢N~ÖS ëD§>ObÐt¡Uè>’PwFté¬èEºös¢ ±çF'BЄ:T#ý'H%Š‘pB„ ç hCeºR“‚´£ÒT¨<õiQ‹î³¢Æ)gm‚ŠQŸõžB *R}J“¤4¥KU*CRÒ’ÖÔœ"iR™j¬^t¦5…jU¯š’Œzµ!ÍêYµÚSš~u¤©TÍjÖ[¥U¥y©[ÿ튔‚•«wE¨Rj‘–Îs¯,éjIØjX›2Ö±…,H{RŽjÔš7lfEr˜tÖmÁg= Zц–´§mjM«ÚÒ¶µ«…­kYûZÙÆ–¶·mnm«ÛÚö·»®oyû[á—¸Çnr«Üâ6¹Ë…®s™û\éF—º×nv­«Ýêv»Û¯w¹û]ñ†—¼çoz·›Kc¶×½ªfö„ ½÷Ö×¾‹Dæ2õËÅ0Ò÷¾ÿ°ãëÊþš0ÀFpõ¼;ŠÐÁ†p„%ó‰'¼É2/÷¸mÞqž÷Üç?zÐ;>oZù;äö6OÉ‹Íï‘{ØÌ>ò3ƒàÉàn8ÎÏp˜sý&IÞɹ…>v²—ÝìgG»›?.ߣÓÛäk'0ÔYP€€€@Úõ¾w¾÷Ýï¯u°?xã™ðÆ‘;à¿xÆ7ÞñW7‰ú³·û[?ýË=”3ÀÛ£=é@$¿„À”À ¤<ó+=÷Ã>Ô«¿Ô»=øc@ôS?l¾ô¿,AøAç@dAÞ!í«=$9ù£À´ÁÄÁì0 œÁØKÀìÁ½ÑKA d¿×»?û‹¿„=ös:Ì¿ü?<À'œ¿( BdB„BôËBôÂ/Ã0ÿ”@óÓ¼(à 3Ã3TÃ5dÃ6ô12tÃ8”Ã9¤Ã:´Ã; ,°=äÃ=Ô%Ä@4”>$DÅØ½É›CÜç)Ä>ÄG„D>iD?ŒFôÃBÔ$5ŠÄNl—IÔC›x‚Vb0LœDðàDIEOdE]ÅØh¥Ö»Ä<ÌÄZl XÙ'r"ÉÈ! j"$ª5ÂÅ ÚŸ_Æ\|ŽVTF^yEQ Ü[6˜hÆÅkáE)b•ÂF:¢(*kÜ nÔÅÑXÆr|—i„ØEi¬EGT‹cD¢Ð¸F]ì–"BFx¤ÇKÊEÿ±Æ{ÔGlHsH:™ÆQì5SlÇ?¼ÅîQXÅz„ o$¢”È9AGfÚ/eBHM|Ç :#ŽD mT œÈ‘Ü•iü#¡ÅS$É•dI1I1Ñ”LÈ–¤Éšt—<É‘I´ÉžôIíÀI˜¯Ì´ÅŸ4Ê£< ÌIò`G•¤”i1$RIF¤¤Êª ¥„I¢tÇC*¤)$«Ë°ì ¬õÓ?Ô@ÔA%Ô?í8ÔDEÔEUÔFeÔGuÔH…ÔI•ÔJ¥ÔKµÔLÅÔMÕÔNåÔOõÔPÕQÕR%ÕS5ÕTEÕUUÕVeÕUS?ÔÓY¥ÕZµÕ[ÅÕ\ÕU[-Ô^õÕ_%TWÖWÖb%Öc5ÖdEÖeUÖfeÖguÖh}ÖXÕÃ]ÝÕ(8ÅÖlSlÍSoíÖmåVk¥UpmSsýÖYM‚ˆ€BmW`…W_•Öy…Öz¥×{µ×|Å×}Õ×~åWi¥V+ W]×7-XƒÕÓƒe)S…uS†X4uXˆ}Ø8åÓw׋Ũ$øWåØõØŽÙÙ%Y|ÿ ؉-SoUY3׃mÙ‚mÙ4X55W˜MÙ3}Ù›eYœ¥ÙÕÙ‡µÙ”ÙŸEס%S•ÍV…eØšuÓŠµX‹íS¨Z?eש­Ø?­Ú«ÕZ§åSEÅÖ‘Û’Û°%Û±5Û²EÛK=Y”ånuÛŸ=Z¸m[¡W¥S—[Ÿ[½ÝÛ¾•[ºÝV¾ÕÖºE×5%\Á}[½ÅÛ¼M\ÁÍÛÇ]Ó­•ÜuT©¥ZvÅ\¨•Ú§ÍÜ>MÛÏ=ÛÐÝÑÝÒ%]SEÇ  ¡WdÛ½mܾ]ܶ Zȥ݆5ZØåÙ£ÅÛ¥•Y–]¿½U˜^¸ÍY¢õÙ×­]¿Y2åÚÉ¥ÜÊÿÅZ«•ܬ}ÞêÕZ¯5Ýì=]íåÞíõÞîÙÔ=H¾lÝò5ßž=ßôUßÈÍØöµÜBMÔøÞù_úµßúÅßí_·#ßõõ_k­Ûÿ`õmߌÅ\x½ßÎßVàf`ŽÝ_£M0¥à‹`¶›à Öàÿºà¸ËÍà,¦.¢ÿ¬Î&R"aj1á ö“.Å 6 2Z ¦ ^ ñôÑ_ŒŠF#ÎaÎ`á?qaóXÝ)U ¢!Râž`Zb£@bÂ!Ê_ìFÿô–ýüáy4 Öá"Ê (’ÇþDF H~ Ò2ž¢ Ž’!n¾Š$vb’â)~b* 9”žâÂã!•\áPòP0ÖÐ.ÆÑÍ€Ò+G2"!}ŽBÞ¡ Éfã'qc£ƒã8Þc>~Ÿ;NŸ(¶cO¶á:ÖãOžãoŒdÝQ5þÇ/^3†ÈYùâJcE>áËX"bœÇ]–d3¦–J†’Šä¢a&æ"vÊ1ÂJ¶ en fÆ gæ ØïˆŸaíHá4òÈh>‰¥iææož%oçqF%q&çs%sFçu^$qÎRJõ v¦çCqg…g ­ç}¶g#®RÐü`A:ûìÊå烖u~H„fhŠôg¡è+-̆¦èêQèŠÆhv¹èŒæè’4âó cžèŽ&iVÉtiÊ,é•îç“&E"ÎÈÍdé™â~Æ×ÿ‹F‰Višæi‚´é|ã€îé¡®“KV9–i¢Vê31ê§ꥆj3™ÆÃ«Ãp%``¬Öj®Þê¬þê®k¯&ë±6k±Fë°Vë²Nk¶^ë³~붆k·¦ë¹¶k¹Æë¸ÖëºÎk¾Þë»þë¾l¿&ìÁ6lÁFìÀVìÂNlÆ^ìÃ~ìÆ†lǦìɶlÉÆìÈÖìÊÎlÎÞìËþìÎmÏ&íÑžl«íÔíÕÆj`mÓVíÒŽmØ~íÙ¶íÚÆmÙÎmÚÖíÞæíß¾mßnàÞíá6îâFnáNnà¶j¦ åök×îêçfÚ n¶è¾îêÎí>níÿo¸® %¨Ëîî¼¶îÖþîñž óÆëöVléÞjHlú†ïúFëôæîÚÐêõîoð~k׿ê[ÙïÙþ6ï÷¶oµÆï±~î/p_ëOë¿o¯l÷ná6²–ð¬æoüñÔ>oéVp ÿî÷mŸnq'mÔìîvñú¾ñÞ.ñê†ðp¯ð·qùníå–lãøê[p×òþ–ïò¦nÁ¦ ?o±žr o×ï°¦¶¶ðÏï0q Ÿðor¾Vpçñ†qÏñ5Wó ïp°FqøÎîï4os:ïñ$çò²~ó=Ÿîÿ6kA÷ó ¯p&_ñ%ÿOqEÏñ(wp»~swn+ÿsØÖó¸NóAíI¯ð‡íæl3çí[Án@¿tBçt ŸkR—ó7!/oÓ~ï%OòMr3/ñ\Çìó®ëZOð3Çòà¶ï;Opïs1?öQWõôNñý.rÊÞqúÆð½þòèNöl_õ5/v;ïOwpH/óG·îWOt"WsrGwU×ìj'ñm_vvó]Gu·ÆpÇñ×öp7÷y¿ò`õ-ÿõM?ô1ø×÷ÿñ@wuŸu€§ ÿõT7rçóm7ôhŸs†ÿöèÞujÇóE¯u`p‚wn`çõsïø,÷voGlgŸwhïójÿGó‰Gt6§xd§ùž·øñŽ÷‚úwúL¯÷8çqŒßy8?òOõg/zž×k›gúÚŽqy/ô¥ïuœgöNt/u“¿kQ—ërÏ÷ ð{ò.ÿqS7x…ÏøaŸú*çr÷o_wò‘§ïV{ºgoG7x³_ùáæp‡çûb§z¸¿u7'x27l%·r¶÷øI_÷|wwò¦{»¯|í†qZ±ô&ü~çs³_{ ý¯o÷ÃWü2‡õÕ|§?uà6Ëw¿Çô‡Ç÷¿_ôØ>ø¼×ôÄßk‰—{Î{ OúŠ|äþå7þäw~æWþæïú•ü´ßýÇ®~éüË×þè÷þç3·m²ÿ~èÿñïþòGòWÿó_ówÿôgÿøÿö‡ÿùíLŽêü·d#VÄD(Ÿÿ%ËŽX¬,lÈÐJ–ˆ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²léò%̘2gÒ¬is¤Ãœ³Lèó§Ï*|¨ó&Ò¤J?Xêô)Ô¨R§R­jõ*V“:F|B(PCn}˜•éY«MÓ²mëö-ܸrçž-»0bÏŸÀ Íkwç͵Y,±°áÃ{$ÌX0bÈ‘ £HÙòâÂ)J®Èøðgº¢G“.mú4j˜»~uLø§X¿Fg#¬x1îÛ˜-ºv›sïÍ¿w7æœÙñqßÄ—3Oíü9ôèÒ§Ç]Íó+Ø c‹–MÚY·mËš‡k =Ó|xÞŸ¿'ÖÝþ={÷Ʃӯoÿ>þü­{Ív»uN…æÖ€#(Rzžé· ƒ :ø`]³qÅ #p¡…^X!€šU›rpõ†Òˆ'•!Š)ª¸"‹3Y·B1Â8£Œ×‘åá]-ê¸#=úøci/ÖH#‘6rç!I*¹$“M:©Ž;9eŒ²u÷$–Yj¹%— Ie‘V"Ù%™ešy&ši}9$›bQ qVÃDtJ$'œž˜&Ÿ}úù'k‚Y%QÚ9g‰Þ (£:ú¨Ž‚²­I£›´åiÑ¡x^º©|zú)¨¡Ê%é •NèÒž¢ªº*«­ÆDê¤Fè*­µÚzkU°Riꇸúú+°Á®¤k›…F),²É*»,EĆiì•ÌJ;-µ«:[#¯9V»-·Ýòy-¥ÐŽé-¹åšË$¸„Þí¹íºû.„é˜-`ðÚ{/¾ÑÉ+ë±ùúû/À£ö;è³ëŽ0 + Õ¾ô.ü0Ä¿:p¬ù¦Äk¼ñGÿ ‹‹1[qº’¦žÈ1Ê)gá±Á ·52ÉÁœZªó©|s¾,_l©¦0‹Œ(§YŒ\2F™Î|4rÎ|‘ÑŠrºôÓ]ö[zS‹Ws§Ë‡‘Õ8{-­ÎÖùì4ÙB/ÒØ})Ôj»}§È%··¦ÁY½^pò%Xœz!¾÷5àå†ÝoÏomvÙm;M4âŠÚ©øâ™Ö9ôâ“ó­ {ñýÙEëqž9拎ìàWB®Ôé)bØè­ [:’?CEw'»~;à°ëd7a(øþ;ðÁ ?<ñÅ<òÉ+¿<óÍ;ÿ<ôÑK?=õÕ[=öÙk¿=÷Ý{ÿ=øá‹?þñºÏÀðÿè“¿>ûí»ÿ>üñË??ýõÛ?þùko¾Cêï?þ^ðå p€ËàôxÀPÀSàñ ˜@R°‚¼ 3¨Á òï!üÝï×Àä„Ô+¡ñPˆ<²…Âsác(ÃÒ°†6¼áò:¸¢€‡ÕC ø»6P‚E ‘xÄ!2Qˆ¾ƒ ƒÇÂRq|U⟈E'¢€Š ¢•ØÄ&‡f<#Ó¨F êÐ <ôá µØÅ1ÊqŽ\d`_ؼ(ÚqŒ|¬# §ˆG..eìâ éhÇ?2RŽD"!×(ÉIR²’–Ÿu²‘Ø|ì|éãžCyÇ0>/ñŠuTä ³ØGFFQ…®$#! =/Âò”E4åEIÊ]ö•—ü%0ƒ)LKf;þÿádË<)<8Óz²lf÷ž ÍiR³šÖ\_1ý›•…w̼&Îq’³œæ<'³©Í„ sg§Â<ã ,u®³³’'>óÉ*zjÓžýº™íBЕtM «¨Ôô©Ððó˜ÜÌ:Þ´›ÃJsYQU-TémV€K[nµQ·•UßHƒ%w¸Î¥IqŸ+Ý颋bS—;{EÝír·EÑí.xÃ땠¼æ¥ÏweG¶¡I8ç}/|‘’^¦­·lñ½/~e2_LÁ­¾œÍ/€ŒëV »÷$¨€¬àŽøº¹]0„#lòJ¸ÂVƒ üà s¸Ã¾’&5RØ­z¸Ä&¾È`ÿ³á³¸Å+»ª1OªUK¹¸Æ&¦go¶¹bó¸Â Ý‹Š;ùÎÂ)Ö±µ[ä% øÈ>ÿ1™,åüÚö¶½É‹dÀ%0AË\ör—·æ/‹Ìf.3šÉ¬æ1³ùÌkvs›Óç7ËÎv®3žé¬ç9óùÎ{ösŸóè? І.4¢ ­èA3úЋvt£éGKÒ–®4¦)­éIsúÒ›öt§3êO‹Ô¦.u¥±LêUºÕ€ªY}jYÇÚÕµžµ­i­ë\ó×¾¾5°wýka»×Ŷ±‰­ìd3ÛÓXöspŽjX{Ù1\vL³Ë €e›0‚& ƒìqK›Ø®Q‚k:½í@cûÚÞ&·»Ñmçw#šÚ[À¡í-ï{›yÝZο½ín}gûÚÚøÿÁñíï{ƒßh&xµÞoq§ÙÚ'3Äë]pNÃúÍ —uoÔ|ñ./\Üwuºí­ï‘Ÿ:ã_¦·Á÷ýiU³{Ì,‡ùÆ«}æ•Gœ íóÏ#¾nlƒ¹ã9Ç3¶ƒîm¢‹Ù5p7›{óðÞ¼ãÖúÒÎnª7=Ýç:·‡Îï„»Ùâ†ÞöÅoNñ—S<è…>¹ ľh£Ç]ätoº¶ÃÝæ’“\Þh‡÷Þ×Lw¾ëï/¼œ/òG=ïßôÝÑ k·KþãYüÕwÎçÈ£\Ñ,;Èó¾ÛÚå¤Ç<çýìo{å¯ü¹ÿxÒ3¾ðŸ³Ã3q» =ö¦†¹Àµÿõ¢ÃÝçŸÿzï÷®òÜ|øyN÷×ýrÛ¼î ?|õAOûç×Þß–ï÷èýy•OÚì·}öoøë_ÿè2ǺóÙ®õäk¾ìLÇ>êq^{Lë>ý7¿½íýßìÕ_Â9Ã…\úÅÙÚÉ^ïeïiÊœÝÈŸÆÐ]àþ œò]pÐ\ô% àA[6Ÿã]ÉÝR´ µÑÛÜÓYžÑÅÉIß ]É_Ÿ9FÏYàÄé ¯ýÝßA` ¡Ç^Ú_ö™Þ¼íYê}›¤)!ö¡_žœf V¡á ái_v!¤q^~Ÿz¡™Þ~Ú2¡ª›ÿRa¨&ÞúÙêéY´Ù "ݲ óY]pÈ_ÕÉažàä¹ Åï Ôb»í!üß &"Ú]ëAbðI·uaþížÉ¹áÏÅ_æMÝFñ½ ÒÍßÁáÞýaàÔ1Ý(êõbú%>\.FàÊâüñ .¾bF("Ù£ÒQ.a¯5"ì•¢ÝÜÒŸ4ú^ש¢ä•šöaØubºß ±¢76‚ã!Žã9š#7ªãªa± £´)ã«Ñ":^£²#>¦£>æYæã:îc=¤? $@¤A$Bþ£BäBdC&$CäŽMEšW& Ff¤FÎØU¤G†—“±G*ÙG–ävýa¤¶˜$KNWHudKÎdUU™•9ÆDÒ¤NæS1m’JÖËN%>ñ“cY2ɤP&eë¼dL’¤R>eàdÒ†L%U^Èv¬Vf¥Vn%Wv¥W~%X†¥XŽ%Y–¥Yž%Z¦¥Z®%[¶¥[¾%\Æ¥\Î%]Ö¥]Ž%T¥^î%_ö¥_þ%`¦`&a¦a&b&¦b.&c6¦c>&dF¦dN&eV¦e^&ff¦fnæe;ess-17.11/doc/ediff-sas.pdf0000644005071500004540000003127013202324173012344 00000000000000%PDF-1.3 %Çì¢ 5 0 obj <> stream xœ3Ð3T0A(œËUÈUd˜™ê˜(èêY…Œ JôƒÌ\ò¹š. ¯endstream endobj 6 0 obj 56 endobj 9 0 obj <> endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <> >> stream xœíÝûyÛFÖ€q¨ÊتÀV‘*p¶‚p+ظ‚PÄ©`¹|Vr*ˆ]Aè "V 1bx4—3gƒÛàýýÁg`.Aòð` ]üùçŸÍWçóy·ÛQ¦L™2eÊ”)S^uù¢ ï^½zÕ  ÿ„w?~œ{$(€ð *Ï»Û_¶m¾]ÁM(çÕ¢L™2eÊ”)S¦\ºì„wX3x÷æþßoß¾ù÷¿ß¾|ùê|~||l~ýõøÛåÏ/ÿººzùñ‡÷odF‹u˜;Ö¦L™2eÊ”)¯«üt¸iÔ...žžž’¶o~yhûzúõmR-Ox÷t¸ü6ìsÓ<6Í˦yÑ4§v͹]Ú´Ã:üx:>¼>è;¨LÞN'Í–Çãñîî® ï’¶ÿ;¼KïÅ3÷î—ݱiv_¾|yxøtsóöÕ«ËÇÇóååî_ÿºm£½—/Û¨ðr·{Ýnüå—ãçÏâÙ˜.ν8|Tn?µ¹P¦L™2eÊ”×R~úõíçÏŸÿúë¯&¦µúð®u{{Úòáá¡ß¾ï’z‘æÞ½þðóííMÛuO»tâÕÕ‹‡‡ïÞýrssÕŽðòòÕÅ!žf4Cº¥‡w:]^M“ZÞõ½t»m:æ1¼û™¾ýôþÅåÅå‹WÍ·Øî|>Ÿþ:}|óËÏçû¶ðúÕîÝ»ý寪o–Þ-ãweÊ”)S¦Ly-åŒð®Ëõ1™¢õúåßû¯9B³3ž³¢½xöîåqÿóþº¹üáë”»¿#¼ßÿýéñÓçÓÓë×o^]½úýßO?þ׬bM04ã¹~‰w¡ºÛ‚u Bk•-1Ðk0${§ ï|½˜É?³@x÷<2½ùôþí۷ݳÇÇÇ÷¿½Û¿<ü÷ôéÇo?½ÿòå˧›ÃßÛ­e¥åB»>´êC=oV/TÅ: r/ÊÁ}útÿøŸÿkй ^c-ãkö.µ—Èß½û§|wÛ†„ßÿ Š»¹díæþ@™2eÊ”)S¦<¤ù»wX—gáÖŽð *„wU‰‡wÖŸÝ{xxèþžrè¯-k¸mºdwú/lÂöÙ;Rp0ý0ÆOô€GGUªÇ~¹ûç¶“æŽMê¨/1K£ ïäš‘!Z×Ü ©£¥}å+wdÔØÎ;˜ñª½G£š×€… ¼á]ÞÂŒ.f­XˆœðκršqeMû²yXßxè+ß½HÚ7ÚoïIƒiá»ÐŒ5BwÀÃpcƒÍóƒ0pÇ3ftaծྔærª”6÷Îú²´¦Çé¿§½_´Þ 'užÞywŸ6¾ÀÎ[¥øž& 8iòÁ‘BÁoœÀKX˜Ô…Y]s"‘ÏTlhöî6kξrbÖìáœxKOjèf¶S$:Éïî¸~ƒR¯µ¹á`k „wÃã wábûÐà5㘙‚³ŒÁÈÖäõ¥Ü økm®"¼lDÉð.éÊÝû¼k”Bxwë›ÿ7$Ì;8Ñ]¸ãÊ£‘ºG©¯5á`#f»µÂ|j~éš óâ˜ÛÀt7ïBaGB±H“»§V,Òø®Z ãI†µîð¢Ùq¡}a¡¦ !Zu÷"ôZP™­ü× ²5àlá¶‚s°[ ï6‚ð *„wUyÞ]__?==]\\x///ç-@UÎçs4úúüùón·ë·—ËWWWÏ»7oÞÝÞ”õøø(¬í¢¯ÓéÔFkšÖ‡ÃÝÝÙ;€Ùh²w]x§™Jwÿþý{²w³Ñgï4á]» Ù;”Ô's€5Qν{ýúufx·ÍìAIAL’½IAL’dϽóþ7¦õͽk÷³+tûܼkÝZýBói_Åäm3´·5ͨ¢{mYmÙ\ë=bcî7Æé­ÀfåeïÚØ®+XÞʲwfÐàí̵rÀ!?ÍXWpÑ*'…ZŽ)Ô²»ïMî‘ j„wèe̽ëc»Žá­iî]4ÎÏ ïBY®!cÎXj¿eÇœ=l¶)5{gÅv>Â[Sön®ð.zqV¨._ù+¼s½MxÀx¶ûwïêÈÞÉk' ï„í‡YÓHÃÅY¾Ùô³¥æÞÉu½Õõ“W OËÞ£ Ÿ{—4H͘5Ã&¶ ·õ¿{gÞjà SúµÑºMø¢djlg>õÆ:šµî)[Ž^V¶Zv/¿sCê€D›ÎÞYêK·GS¶Lê€$ʹwÇã±Ýr·ÛõµBåÕ̽sÕ(TÞÕ÷¢06Mö.t¯gÈj²wÑ‹•«3Þ­±e¶I“½kã´››ýãZ³wÐdïšÄo5Ù;€ú½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª,"{·?ÛÇã~ß—­§]YxjÕ²ðoIÀv,%{'Ägí*s¡û´yð¹-Þ€íXDö® „eÞUIO¶fAÙ;Â;€á6‘½ãâ,ØŽ•e﬙vnÅPxGl6bÙ»þ¾ŠŽ÷îŠ~Uô6[«Rw`S–’½©;°)‹ÈÞ ”ú³w›Bö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dï€íy+¬mOéÉF@Ù; á`ùÈÞ ïËGöH@xX>²w™öÇcW8î÷c÷2j°B®Qc,Â;Àò‘½¤ ¿ÆŽ½’º˜`mϺe¶©ì´àøS›*¾×÷`"{—éøêqeðãµ¼Ì~GÕÇe+º«²{)8ª±›ãHiv`]¨Ù»L„w«@xWª)Â;X‘­gïÚ˜¦+X‘M·¼_h>í«˜ÌêýÆÞƇ´<×YWåzý—«y•­ßØüêõ.ô®µ.ØE[ñŽÙ ËBû"WtûRÆýîÈG)Ô{ÿæ *é8‡ŽªµdÔ#©ß£Ô–5¸:  V›ÎÞ™ù*7we-‘Ÿº-7Ïc)}SC²hãíQ”ü m(ÂZ·…¤¨NèZ^%?Íë"´}ãDlEêfgM>r¤#©ß£Ô–5ïÔj»Ù»ÑO4¼)Ìu¢BßµÑ8cH`‘=ªè–šŠÙ7(dï Pwàq–72Ȥ‹³7€-ÛnöŽðNßoô¢a#†wBÅÃ;w`I¡CÁ¹hîuÒÐÀ–Þ 9’Ñü\v˰edï‚Kï’è³wòÚi»¤pGßlÞ–½ë—¤¾ŽedvHš‡‹³jµÝì]“2SÍšKçnï>mtsïR[žk¢ŠÌÍò~Ý&MÞRŽÊ›%ÒrH÷–]W?Há8 ï’ŽdÒ.¤¶¬Aþ@­”Ù»ãñ¨lp5Ù»Nè>Sw­7êËÞ@Jh<»å¹öHf]Dó^ÚÓ¬uà eËšëÂn4c®òFÞºò忍þ –QѪ·®Ü¬uœÝÍ”WØ‹IëÚ´†f´¬Aê@Å4ٻЌ ÕdïÆSåß›Fõ •%ïà’ÇVܦvÀÖh²wmœvss£\Sön$„wÙªÿÒ]ì.v`€Tšì]“ám={'_…%zùµ&×dǶ©ãAö *dïªBö *dïªBö *dïªBö *d者ˆìÝþë´=î÷}ÙzÚ•…§V- ÿ\lÇR²wB|Ö®2ºO›çŸÛáØŽEdïš@Xæ]•ô`k”½#¼nÙ;.΀íXYöΚiçV …wÄv`#‘½ëï«èxï®èWEo³µZ u6e)Ù»ñº›²ˆìJ©?{°)dïªBö *d甆ÉÞN§6 ÜívÝB¹|uuEö`6šì]޵њ¦µÃápwwGö`6Êì]­ÉÚmìðŽìÀ”ôÙ»ÌðŽìÀ”ÈÞT…ì@UR³w···îf]ìÀÌ2²wV„×Çv Ù;€Ùåͽë#<3¶kÈÞÌ.{î]áY±]Cö`vÜ9 P Ù;€ª½¨Š2{w<›¯±àn·ëV…Êdïæ¤ÉÞµå¤6Ÿ…w§ë›† €é< ï¾\ßœ>›Ýîé|¾ØíÚx’2eÊ”)S¦L™òºÊvöîËŸçyãM agïþü´ ØsâòáúâðÇÓrÆC™2eÊ”)S¦œS^oöîp}yøCºÙdš‹cí˜ÿ~t†Ý-÷®ÂJ…^ëeÒŒ6ãןØÑÆõuÍåÙÏnâ¯é?a†÷¸´OEy>Οv™¶ÐxÚµßÜÓã¹»¹œë8ä•»ããóÝÍådÇrèÜþþ>ÿøØŸÛÙ¯‹òü4ß5æy2ÍùП“íþþòñQØ—Ôñ¸ŸBûúºn;Öq6_ÇN·ý¼ÇÙ:ææõŠ»OÀêîc¿Ü=¯ÌÏaïq¶Ž§¾®Ùoj]¹ßÔs`öÏïk7ö÷‘un¸¯{ô½ýL[ÛKß—÷ü4ß¿æ{pŒãæ}¢ý ãO-çgïæÍ ¸¿Q¬%SþˆY]OxíÖ•ì©UôôØš°eãüÊœødzìV¥iÈ'CR]ý‡’uœçzÓ¥~ŠšOåSE¸>Í9É×ä6SûÕXæÇ{ôm2e§CN¤²C2O€ÔOѲÇ-éS7ô)1p<™sïú¸RŸ–ýí¢ù}æÓÝßÍ¡¼…÷w¡ð;{ióö¬Ì›'°Öº¯]ôXYuC9'ýïwlB.Ä=þBÝå¼.úߣÖû«x>Cè7š£òök-ÞSÊ}OúÌÑÿ†圼mFëÊ9ùwywlÝc>ñ9¦ß_9£9V¡×Nóõç•üÙ›ÔïðŒþ»£H]ù|ûûHŸOÊ87F:‡õã/øL:þ¡ÏØ9ã¼ì`Žýc4Ô©üsÁ’¦eËrÝYDsÑì]¿Vn*Ôr¨ú1ë7® 龿ä<Šð#5éh¸é±ì~½èÇ ,’½ó ùí Ü£¤%ó8ç¥$‡“œñ)§Ù}úG?°!ýjcnÂß)ÑwJv]Ít:)›é“!{<òÆÖwVý›úû’@˜$ô;|`ùsïB¿¥²ËßÌùw|©ßÑßCÑý ývw÷ÈÊ)jö7õwƒÛŽ•ŸÐϽë¶4ó1òï ï6ÊßaßBìw5þ¤º«(»yó|ŽÎ)‘çÁ$½¯õýZÛdç¢ï͌Ϝ¼\¦òsC¿ÜÊņ^ß)Ï1w£Ÿ½Â{-:OT3÷Î[Ws½(¯ßÔs@sn ™‹¦|ÿÊ﯑¾¢ïÐçôÚZ¨ßè˜5ïeáûNˆ†+÷8(óÖæ{P>Ï5Ç*'{gÆ¤ßÆ± ßO……æÚF ´’.Òä'¢Ù;ï–îëþ½V‰Ì™Õ¾wBÈuWGÎîx_}R-Ú¯;}ËÃ'Žž-)ŒÑlœšJ –Ñìì2²wš”í'µœôêéWß wÙ‰mý»;:*ÍÚlߪ©[Oö6eGåm*5ñß û2íä̽é:zÁß÷Âïæ¼ßCÑœÄræÞ ̱ y>åo è6I¹–¼ñüeynVôÞÒÔßÜÞºÊyxú9RIû®ÿüIj¿ø¼½RË™{7K¿CΡßèë›T7ô9?ûÜ;}N}ʹwÙÇaÔ¹wškƒÞí«Ôì2s60ê,2†Rٻᙿ‰EsuÂ̹®¦©F|éCèûug$¤Žaùäì]Ó$œÞIG#úFVÎ Ò÷CÆ©ådö÷¾>Û·´ì]èiøÜˆ®Êu£í éW#ï{¡T2/4€Eeïî`Á!éG5ê{0{TšíõÒæÞyïæZÆø [ཎOy=[¸p÷N¾Ï4t¬ÌZ]ÞHÞÆoͱ éwøwü½à=W“ê†ÎÛìûC³ódî¹ÑM9oO~•›rÞžû™S6ßi“Œ~‡ÇQký¯KË–-g0 ±”áÂû]æÇ{FÎ[³âÿ9»œYÁ{‡)S¦LyÊòÄsþ¦ÏSFs· óñð}Dù{y¥Ù;xeþÝ;Ê”)S¦L™2eÊË,? ïÞßnvMÓçï(S¦L™2eÊ”)¯­ü,¼»¾¾~zzº¸¸ð>^^úï@žóù¾>þ¼ÛíúíåòÕÕÕ³ðîÍ›7B÷„we=>J7;wÑ×étj£5Mk‡ÃáîîŽìÀl4Ù».¼ë¢5Ùýýýû÷ïÉÞÌFŸ½Ó„wí6dïPRwžÌ= ÖD9÷îõë×™áÝ6³w%q0HBönD$q0H’=÷îöööááÁjm}sïÚýì Ý>wïZ·V¿Ð|ÚW1yÛ mãmM3ªèE[–E[6×zXƘû „qz«°YyÙ»6¶ë V„·²ì4xc;s­pÈO3ÖÜFô£ ÅI¡–£C µìî{“{$CázsïúØ®cFxkš{3†ÄsÃûP–kȘ³–ÚoÙ1g€mJÍÞY±]§ðÖ”½›+¼‹^œªËW~ç ïÜE/FÞ0žíþÝ»:²wòÚÉÂ;aûácÖ4Òpq€o6}çl©¹wr]ouýÀäUÂÓ²÷(èçÞ% R3fͰ‰íèmýïÞ™·xÔ~m´n¾(™Û™O½±Žf­»GÊ–£—•­–Ý˯Çܺ Ѧ³w–ú’@ãíÑ”-“º ‰rîÝñxl·Üív}­Py5sï\õ „wõ½(ŒM“½ Ý벚ì]ôbåꌷGkl€mÒdïÚ8íææFÿ¸Öì@4Ù»&1Â[Mö >dïªBö *dïªBö *dïªBö *‹ÈÞíÇöñ¸ß÷eëiWžZµ,ü[R°KÉÞ ñY»Ê\è>mž|n „w`;‘½ka™wUÒS€­YPöŽð`¸Mdï¸8 ¶ceÙ;k¦[1ÞÛ€XDö®¿¯¢ã½»¢_½ÍÖjÔØ”¥dïÆCêlÊ"²w(¥þìÀ¦½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù»Lûã±+÷û±{µ‹ ´ç’ù´=¯æ K@ön6ü;öJêb‚ñ,Mw¦NY€…#{7áÝìï°ÌŸ½ë¯?†.wš(½ÛÈ×Iûµ}/IÑ’YÑ;¶ÐhûU!—Õ¯·‹~w¡»V®Û8×7{}ÔmÐ=í76Ã#ïBïZ³)MË!Þ1[Ím¬åŠîØX‹Edï¬ÈIh¼ñŠ\Ñ •Á–Õr´w·7ÔÞ¯»GÂSy´©q§{™™07+f­u[HŠê„®åUòÓP y£`Fógï]XÊÌ ‡\©ŒI³0#§ì7´vÔ+¹¡x(Ï kå–‡Œ*º%gµZJöŽðNÙ¯{6){ª½8ÛˆáPqÆðÎá` ÈÞù-3¼Ë>PšºQúì¼všð.Ú gµZJö®‰Í½ÓD-šŠy‘Ö>qî]vx'÷ëÍä)§âEëF™åš{'ˆn•h]w ˜½ó¶C†°F ÊÞíÅ;g{ÂÝ Ñ;gCÛ„ìw°ºW9ß½½{狼~›À²Þ–÷{c5uÑ?ì½GÕ]ÛŸ[©-k® Ë·Íz#¼¼~X²¥dﲯ¢Nfƒ\…µ¤ÄÖ2N, ÊÞM±»¬b«@ØÀ¨æÏÞÉ—Vg4äª.LÑ˯  EdïPÊÌÙ»/^„ú&Åá|~œ3{׆wÞ0îâ‚ð Çãã_ÂÚ)²w„w‘½fðÛ›?þóézîQêDö®€ö«º}Ô[wÛ'UÉë¨xSýÈ;ë P’v¿àa7Û\ïÑ,Ù»22¾­ó¾à †©Mew½ÌP&iTËܼÈÞ•Ax7FÅQÞjµÑì]¹­ÿÚö~ËWQ͵nõèØ!áÐxƘÝ*Ö뚬·}s·¡¢À[=»wÀú#©|}5çU´GyTæf¾=`ÃÙ;ë«Ôý 7Ÿz¿¤­ F_W^®¶·‘ì1ËG, C®8ªè¨õ‘lÔ¯oô¼òÖRŽ*4LÍÞ5Ƨ7Ѳ×Ê õÃv$oTÑT?à…„w–訊Iù¼zW€(Möît:uOÏçón·“ËWWW«ÉÞÞ¹ÝÕÞ¹»\$Fxq6uT„w€:h²wmx×FkšÖ‡ÃÝÝÙ;ÕWòÒ»~IêÕä¤Àq2£ZKxÇÅY€L™½ë£5Y»Þ­4{×$~£7bf¨ìÅÙf„¹wæû¼£QœfTÍ8sï&ïˆí}ö.3¼[föî·ç7EZïfÊFܵÂrïÑaÿ§Ü³îfBØ! ØÚYýÑ•0ªÔ#©<7¢ç•üê[m ]ÞÛÍÞÁ‹ÌÐÂñ¢6š½ƒ¡˜?{j‹ðn2ò…W°.3gï./ƒá2Ìœ½ëÿ-Š8ŸÏófïïJz||Ö’½X²wU!{‡Êµgšùô©Ä-Ùc´©ì´àøS›*¾×÷`"{—éøêqeðãµ¼Ì~GÕÇe+º«²{)8ª±›ãHiv`]¨Ù»L„w«@xWª)Â;X‘­gïÚ˜¦+X‘M·¼_h>í«˜ÌêýÆÞƇ´<×YWåzý—«y•­ßØüêõ.ô®µ.ØE[ñŽÙ ËBû"WtûRÆýîÈG)Ô{ÿæ *é8‡ŽªµdÔ#©ß£Ô–5¸:  V›ÎÞ™ù*7we-‘Ÿº-7Ïc)}SC²hãíQ”ü m(ÂZ·…¤¨NèZ^%?Íë"´}ãDlEêfgM>r¤#©ß£Ô–5ïÔj»Ù»ÑO4¼)Ìu¢BßµÑ8cH`‘=ªè–šŠÙ7(dï Pwàq–72Ȥ‹³7€-ÛnöŽðNßoô¢a#†wBÅÃ;w`I¡CÁ¹hîuÒÐÀ–Þ 9’Ñü\v˰edï‚Kï’è³wòÚi»¤pGßlÞ–½ë—¤¾ŽedvHš‡‹³j¥ÌÞÇæk,¸ÛíºU¡òj²wMÊL5k.»½û´ÑͽKmy®=Š*27Ëûu›4yK9*o–H?È!htÞ[v]ý …ã<0¼K:’I»Ú²ù?µÒdïB—ŒBÖ‘½ë„î3u×zã¡¾ì ¤„Ƴ[žkdÖ)â½´§Yë†Ê–5×…ÝhÆ\å¼uåËÍQý,£¢9To]¹Yë8»›)¯°?’Öµi+ ÍhYƒÔ€Ši²wÍ׫®777ÊÇÕdïÆSåß›Fõ •%ïà’ÇVܦvÀÖh²wI±]û¸¦ìÝHï²Uÿ¥»Ø\ìÀ©ÈÞ•'_…%zùµ&×dǶ©ãAö *dïªBö *dïªBö *dïªBö *d者ˆìÝþxlû}_¶žveá©UËÂ?—Û±”쟵«Ì…îÓæyÀç¶@x¶cÙ»&–yW%=Øšeïï†ÛDöŽ‹³`;V–½³fÚ¹Cá±؈Edïúû*:Þ»+úUÑÛl­HÝ€MYJön<¤îÀ¦,"{€RêÏÞl Ù;€ª½¨ Ù;€ªh²w§Ó©w»]·P._]]‘½˜&{׆wm´¦iíp8ÜÝÝ‘½˜2{×Gk²v;¼#{0%}ö.3¼#{0%²wU!{P•ÔìÝíí­»ÙÃÃCW {0³Œìáõ±]Cö`vysïúÏŒí²w³Ëž{×FxVl×½˜wÎT…;gªBö *d甆ÌÞÇæk,¸ÛíºU¡2Ù;€9i²wm9©ÍgáÝéúf„a`:Ï»/×7~:_ìvm$ÙìvOgÊ”)S¦L™2eÊk+[Ù»/žç70„½;}š;Þ\jùp}qøãi9ã¡L™2eÊ”)Sö–«ÍÞ®/H·¢LÓ`ñaŒªí?…ؘ»-ÝÍú4`v¡×q™4£ÍxÇ 9iCuÍåÙÏnâ/ýçÏrzœ~Ì2y+ÏOó]cžÓ¼úó­Ý_Ἲûvöù¬ÐŸ·B]·ë8›¯c§Û~ÞãlsósàÎùäwßãý6ír÷¼2?‡½ÇÙ:žúºf¿©uå~SÏÙ?¼¯ÝØßGÖ¹á¾îš÷‚÷œ);¶ö˜˜¯×÷~‘sÃûyÕ¿vÆ“‘½³âÍ&¨Ü!Í8æA‘ß ëÊ ­NôôØš°eã䨦ÿµê±[•:¤!Ÿ IuõJÖqžëÝ”ú)j>•O!÷ÍpÈ× ä6SûÕXæÇ{ôm2e§úÏ«±¯¹¹ï¬ñ>Í¢­…>¯ÌÏãÉ™{y3~C,k~ŸY¿³›oqý?Ç÷ùïžÐòF\μ=s„Þýºó 7Ò ý¶åö¬ŒEè8[í[ã´Ž¹r¿4ÇÄ»_ycõuìã ¿óæ3„~£9*o¿ÖòÔ×(š{pIvŽÊ›sò¶­+ÿŽwsÝ6æqvù4ŸÞ}‘÷Wþ^ЫÐk§yúóJþìMê7ãüQ~§„>ÇÖUæFú>ÒçÞBçsÙó<úZëß¿߳Ѽðy¥¼†-’½›7yº˜-ÿîlÂA½°0Ú²\wÖä oª ´ÖjDø(¬õnSêiêT˜¤LIÒ¨Æãþ¼“ó(ÂOç¤1»?7³ûõn ƒ°|HöÎ{4„C¤ß£¤%ó8ç¥$‡“œñ)§Ù…줎0°!ýjcnt‰¢èhR]Ít:)›,³¨?mŠ÷Þ¿m¿/IOÑ¥~—¹rþîœÏk»ã³rlöþ‹¿ãKýîŒÆãÂoGù·{‘ýÍ;ÎîÜD37fÍû åá†Ì½³¶‘çYc6ëº}Éc ýöö;dÌã•ݼŽy> ¹ ï¹ñ›ÛÊ3iúÕüfÍþÝ/̧I:Ródʹ;ÊåV.6ôúNyŽyÏù³Wø^ˆ¾_4sïBŸÑ\H^¿Ùyšó2³ëz¿ï¦ù>оw¢ß Â|Mo¿Ñ1GÇ#_ÓËë×ûúŒòæ›…ó<é5ªpî]^ön`.šõYÎ!òN‹é—(3RyÙ;ó×Ì?Kœa«„t°q”Ðï1GÎî¸nš`&À»Dî׃¾åì›X4‹6Kö.iùQòwïJÝ÷Q0v~z~ÝÚÍ]5±û4Ÿí²s ^¸pi÷N¸7Öš[ãÎYñ^û—•·}÷¾°èy%ßë®UÞÿ8¤ßÿ¤pÿ—»_Â{¡Ëÿy·qßSÞc.üm3¡ÔߣîÊî˜5÷tkö+ô~‰~&Íërg0ËÇYówŽ…ÞûnÎ)t<ݵIÇJþ¼’?ϳûþ]#/xÏÕ¤º¡óVs­©øwŠ÷ýuß Â~ ›0·¯ìûKîWóyU Žªò¿V,-[¶œÁ4&™æRýXHÊpáý.í㽓‘3F}ªýŸ³ É™ ù]8RyöÜêǼáfP¦\â³bÊ÷ÑôyÊhîvc2ž~Q¯\gö!Ö=;ÕüŒ«u¿Èówï(S¦L™2eÊ”)/·l†wïï?ÿõ횦ÏâQ¦L™2eÊ”)S^OùYxw}}ýôôtqqá}¼¼ô߀<çó9}N'}ƒWWWÏ»7oÞ[Þ”õø(Íïû6ZÓ´v8îîîÈÞÌF™½ë£5Y»Þ‘½˜’>{—Þ‘½˜RvöîöööááÁjìÀÌò²wml׬ìÀ̘{Peöîx<6_cÁÝn×­ •ÉÞÌI“½kËIm’½˜2{§ÉÛueûÏ“½˜’~î¦5ÏŸ5&{0%þî@UòîœMøÃ(d璉½ÓþYc²wSâïÞT…¹wUQfïº?k¬Aö`NšìÝ ?k €µ#¼¨Êßáþj..íR.îÿ5§g] endstream endobj 8 0 obj 11979 endobj 2 0 obj <>endobj xref 0 10 0000000000 65535 f 0000000384 00000 n 0000012650 00000 n 0000000325 00000 n 0000000188 00000 n 0000000015 00000 n 0000000141 00000 n 0000000432 00000 n 0000012629 00000 n 0000000159 00000 n trailer << /Size 10 /Root 1 0 R /Info 2 0 R >> startxref 12705 %%EOF ess-17.11/doc/ess-defs.texi0000644005071500004540000000117013202324173012410 00000000000000@c keep all doc macros here @macro wkbd{ARG} @w{@kbd{\ARG\}} @end macro @macro wcode{ARG} @w{@code{\ARG\}} @end macro @macro wsamp{ARG} @w{@samp{\ARG\}} @end macro @macro ESS{ARG} @acronym{ESS\ARG\} @end macro @macro iESS{ARG} @w{i@ESS{\ARG\}} @end macro @macro ESSVER @include ../VERSION @end macro @macro R{} R @end macro @macro Sl{} S @end macro @macro SPLUS{} @sc{S-Plus} @end macro @macro SAS{ARG} @w{@acronym{SAS\ARG\}} @end macro @macro UNIX{} @acronym{UNIX} @end macro @macro PC @acronym{PC} @end macro @macro MS @acronym{MS} @end macro @macro initfile{} @file{~/.emacs} or @file{~/.xemacs/init.el} @end macro ess-17.11/doc/ess-demo.jpg0000644005071500004540000017564513202324173012245 00000000000000ÿØÿàJFIFÿÄ ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÛC   (1#%(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egcÿÛC//cB8BccccccccccccccccccccccccccccccccccccccccccccccccccÿÀ'ÿÚ ?ÛÖu¦Òî¡·ŽÖK‡›;5ÉàxükHC™\ECâ;ðüHïN}"Ïò¡ÁwCÔ«?M³ìŸOš'þë®ëZÇͳL›‘ÿÂ}üú?éþ5Ssü'ÐÿÏ£þŸãGÕ&Áÿ ô?óèÿ§øÒú¤Ã˜VñÜiÖR ŒŒÈüèú¤º0ŸðŸCÿ>ú?ªL9ƒþèçÑÿOñ£ê“`ÿ„úùôÓühú¤Ã˜?á>‡þ}ôÿ>©0æøO¡ÿŸGü‡øÑõI‡0Â}üú?éþ4}RaÌðŸCÿ>úT˜sü'ÐÿÏ£þCühú¤Ã˜OøO¡ÿŸGý?ƪL9…ÿ„úùôÈT˜sü'ÐÿÏ£þCühú¤Ã˜?á>‡þ}ôÿ>©0æøO¡ÿŸGý?ƪL9ƒþèçÑÿ!þ4}RaÌðŸCÿ>úT˜sü'ÐÿÏ£þŸãGÕ&Áÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0ŸðŸCÿ>úT˜s ÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0ŸðŸCÿ>úT˜s ÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0ŸðžÃÿ>úT˜s ÿ ô?óèÿ§øÑõI‡0Â}üú?ä?ƪL9„ÿ„úùôÓühú¤Ã˜_øO¡ÿŸGü‡øÑõI‡0Â}üú?ä?ƪL9ƒþèçÑÿOñ£ê“`ÿ„úùôÓühú¤Ã˜?á>‡þ}òãGÕ&Áÿ ô?óèÿ§øÑõI‡0Â}üú?éþ4}RaÌðŸCÿ>ùñ£ê“`ÿ„úùôÈT˜s ÿ ô?óèÿ§øÑõI‡0¿ðŸCÿ>ùñ£ê“`ÿ„úùôÈT˜sü'ÐÿÏ£þŸãGÕ&Áÿ ô?óèÿ§øÑõI‡0Â}üú?ä?ƪL9„ÿ„úùôÓühú¤Ã˜_øO¡ÿŸGü‡øÑõI‡0Â}üú?ä?ƪL9„ÿ„úùôÓühú¤Ã˜_øO¡ÿŸGý?ƪL9ƒþèçÑÿ!þ4}RaÌðŸCÿ>úT˜sü'ÐÿÏ£þŸãGÕ&Áÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0ŸðŸCÿ>úT˜s ÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0ŸðŸCÿ>úT˜s ÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0Â}üú?éþ4}RaÌðŸCÿ>úT˜sü'ÐÿÏ£þCühú¤Ã˜OøO¡ÿŸGý?ƪL9…ÿ„úùôÈT˜sü'ÐÿÏ£þCühú¤Ã˜?á>‡þ}ôÿ>©0æøO¡ÿŸGý?ƪL9ƒþèçÑÿ!þ4}RaÌðŸCÿ>úT˜sü'ÐÿÏ£þŸãGÕ&Áÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0ŸðŸCÿ>úT˜s ÿ ô?óèÿÿ>©0æøO¡ÿŸGü‡øÑõI‡0Â}üú?éþ4}RaÌðŸCÿ>úT˜sü'ÐÿÏ£þCühú¤Ã˜OøOaÿŸGý?ƪL9…ÿ„úùôÓühú¤Ã˜?á>‡þ}òãGÕ&ÂÂ}üú?éþ4}RaÌ/ü'ÐÿÏ£þŸãGÕ&Áÿ ô?óèÿÿ>©0æøO¡ÿŸGý?ƪL9ƒþèçÑÿOñ£ê“`ÿ„úùôÈT˜sü'ÐÿÏ£þCühú¤Ã˜OøO¡ÿŸGý?ƪL9…ÿ„úùôÈT˜sü'ÐÿÏ£þCühú¤Ã˜OøO¡ÿŸGý?ƪL9…ÿ„úùôÈT˜sü'ÐÿÏ£þCühú¤Ã˜OøOaÿŸGý?ƪL9…ÿ„úùôÓühú¤Ã˜?á>‡þ}òãGÕ&ÂÂ}üú?éþ4}RaÌ/ü'ÐÿÏ£þCühú¤Ã˜?á>‡þ}òãGÕ&Áÿ ô?óèÿ§øÑõI‡0Â}üú?éþ4}RaÌðŸCÿ>ùñ£ê“`ÿ„úùôÓühú¤Ã˜OøOaÿŸGý?ƪL9‰!ñ¸žEŽØà('õ¤ð²JìjEÓâ Cþ€·_÷Çÿ^±TÕ· ñé”Åýsæß·`Î=zÓök¸]ˆ¦Aþ5KMlþ}Wþx/ýü_ñ§õšbåøEõ_ùà¿÷ñƬÓPÿ„_Uÿž ÿühúÍ0åøEõ\¨_ûìQõšaÊ'ü#¯üð_ûø¿ãGÖi‡(¿ð‹ê¿óÁïâÿY¦¡ÿ¾«ÿ<þþ/øÑõšaÊð‹ê¿óÁïâÿY¦¡ÿ¾«Ïîúh(úÍ0åøEõ_ùà¿÷ñƬÓPÿ„_Uÿž ÿühúÍ0åøEõ_ùà¿÷ñƬÓPÿ„cUÿž ÿY¦¢Â1ªçBÿßb¬ÓQáÕç‚ÿßÁGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡(Â/ªÿÏÿ¿‹þ4}f˜r‡ü"ú¯üð_ûø¿ãGÖi‡)-¶¬ÚγCSK©þµ¯NJÃQ/=¯ˆ¤bÏmj̈ªdþ5È£O©d¨¾'Žv˜G fˆÄrT½zfŽZ]ÄW:øûŸýð”rÓËkâ5¾[á_hP@9\r0{Õ¯d£aøJ³±óþÐÿ…c#M?[ºÔ¬æ½6Á&ì«#=ý…5ìà›@wšüƒþºIÿ¡µs1—è € ( € ( €1nÿã徃ùSÐ ‰˜É©´[î”*©Yù{õôéK@*C¯A ÔË;ÈÈÄy@Ns“F€m£‡@ë¬23EuId\*¶ìùæà z]]}šÝ¢ŒJò,Lù'êz~”¬€n™|×% Aqvþ÷zQ`4h°vòÈb´ºódf¸e<€z ,ßÚ[í¼Øà“$åó àô4h-õX^ÜÈ‹;ÆŸy›ñž• zê±4i'•0WRË•  ëî(Ð ±¶øÕð˸g ÔQ u‰ä†lãÌ™Q¶}â==èÐY]†Hâa&öAnNãæ÷çùÑ 6¢$‰®@‘aI;{.ÀÇ<ûŸÒ–ßW·¹”GÉ’ÛGLgúÿ²hÐ 6—Iv…Ñ]@þðÆ~”hýhÐ ø´¥–yå$ª€ç<“úš4Í©F›Õ£›t@´€Ê€'®:0éF€Ge©¬ñ©)#yŽû áÜ@ê}(Ð *42åËêÂ2åPFûp fëùQ na´÷s€såcϧãF€&Ÿ+™ŒsíÜÊäõéòç·½¡F€c\êrE øÛ1hÝ•P•^þ4h·º´H'·ˆ¿žƒ®8Ï×ÐÑ bÔSò¥A#2«0b3è}n(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(О‚ ZQd0£@ zRÐ:/üƒWþºKÿ£€/P@P@P@bÞÇË}ò  ɬ¯'9uóéÓùš š-¼rù±<±ËÙÕ†Wפ *…PpMAuj. 0–H3†ŒŒóõ€#ŸOIÕCÍ0`… ©ºž ñü¨m,"´lÄÏŒcŒž(ÕSM:4dd­dˆ‘´c¥2ÓLòmLrÏ#±ÎÀØ3Ÿ—ÿ¯@ G‚8üµ’_,ýäãõâ€&“N…Ò5 "ùhQHnpqœúôf(Ö–4Îc“šŽîÕ.ãErêQ·†Bt4Ó¡+——)œ¸l3g“Ÿ©úPo©¶Ã˜ÛïÝx ü…:;5WGye‘åK°ã‚㦀²ÀĆw'«9É  ²{POm›v 9ä`äcñ  çLæI ±>c2ã`ñÓP—F1‘c‹Ãñ×#ùÐìÐY¬üÛ‘:Ï4M´)WOp}M/ÙOÚ¼ï6R3Äd£ôÍöqÁ)<ŽÛv.öÎÕëøúМÐcgEfÿ€ÿ*š€8íE´ÆñªÙlKÕ2 †e%s³¸Çfÿ€ÿ*š€&`Pž”´b€:P!hPFhÀ„øPâ€Ò€æ€ s@Pžq@}èͽP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@É÷¨þFŽ0Pã-ý(‡Úfþÿè(Ð?äW‹ý×ÿК€-èò Oúé'þŒj¿@P@P@J/øù›þü¨j£kâ ›—¶‰¤ócm¬ ãŸð  ´­^×WŠI,Ù™c}„°Ç4~€+Ü^CnÁ]¾fáT äúS±.BÃ4Œ¥ŒF½WœœQ`LzÏæ‹’nĔР½¼ŠÆÕî'$F˜ÎO'Ö€1‡Œôcq4¸Û¼þé¸ÅOuâ}2ÒðZË+ù¥¨ygùP«]bÊêÆ[Èä"sæ¤mÇ_¯á@ãñ^”îŠ%p$`¨Å ==è[¿iö7ßdº‘£IØHÀíí@ÓÆK«–NÈ–rWÖ€þº šBÎ2¸Œò9çô  (5[K,êP˺×k6ò¤p Œg±  Z—÷Z;ÝO!\–’%nDj~èØ  ¾ŸSmkSµÔ®VfƒÊÆÅÚƒ*Oò  ±¹¿ÕbÓ-îå³Äᤌ|Çæ Ó“úPè7×-=îxÆIlX/œHË©ÉR}ñ@ ¦^LšÖ£§]È]‰à-ÔÆÝzvŠÚ € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P}OýJÿ¿ý fкüŠñºÿúP½þAiÿ]$ÿÑ@è € ( € ( €)Eÿ3À•M@Ÿˆ§’ËPYt‹¨ÍîLêÎ m€ý7zPYgk ¤vð&Èã] g4=T–Â&Ëè¤þògê:S!ÆîãàYв\„qÐßê(CżäC>»E!ÙÐ2¶ ×ifíar\ mY yçé@~²ÖtËh,/-íVÖ0Ùur\’IéÓ½NöƒxÁ5&Í`0ƒ»æõÎ>¼}(•¾…}q³ úÅW®$£bÅHé‘éÀ  ÚßÄ7P¶Ÿs’[2yO:3dÆbA4¯¦ëjÖrÙÚÚÉocŸ+Íåò_¡zöZ÷@hZ d¼˜22;FsëÒ€š~¡ÿ ¦ éŒZù2€Ü†äñ@ £i6þþʼ ­åº·}æcýEKáK–ŸDŠUY­‡’ñÿt¯>ôŸ§Úx† næö[K0·f?3l§å 6ñ@z¥ìw‘ê:\qKuåù’¶¦sŸ®.‹§\[Ms{zÑ›»¦Ö<íPŒõúÐm-ëÄÚ•ö0ªÚ)†Ç'ñŠè( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( €#“ïP'ß_SÿR¿ïÿC@´.ÿ"¼_î¿þ„ÔoCÿZ×I?ôcPú( € ( € (  QÇÌßðå@Ps¢iLÅ›L³f<’`BOé@ÇP@Ï” 9E5S;UWqÜp1“ë@ € ( $±ÈΨê̇ ´õÁô Ð@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pr}êDûâ€+êêWýÿèh6€%Ð?äW‹ý×ÿК€-èò Oúé'þŒj¿@P@P@J/øù›þü¨jÀÔoõM;[‡íQ&›1b‹,€/ïÔŠ‚æ[i÷RÝA泃&!á##$Ÿ¥K-ö­.¥¦[YÝÀ|Ût–|ÇÔwp{Ø{PP:uÍ5Õ] ¸ÄP?á¤Xõ}UB¯ÚW  eI¬x…bÔæÚùZ|¥I1ó&1òãñÐÖ‡sª¼¸Ôä…¼èÖHÖ5ÆÀwqïÐPá  7WŽ&ñ¯–[þZIŠv3rèI -n’I½çŒã=}…%a‰{1` ŒÃ'ñÅR}‹Â‘b0 ¤0‚ sÚ4k‹uµT »a ÷MVÕuiuR;)­ã·³%˦HrG¾N~˜ iº¶´/ôÆ¿xM¾£¿dh¼  æ€/j®Ïâ€ÌÇÈ@FE>ò]V-v8ÅÔ1X:où““‚\úóÇã@ Ðîõ+ÝVý¦š7°†VŠ0#Á,¯p9¿@zæµwa:[ØX5Ô¥ ­œ…:óëí@hš¥Æªf•­ `ÉwêýwqìEkP'‰¥Õ-mEÖ™9  «í=/¥µwžxÍ´¢P"}¡ÈìÞ¢€%¼·k¨|´¹šÜäð‘»éÈ"€3lü<¶W2Ï¥}ºfß -ãü”Å🷿…®®oŽeÜËÁõ/ó  vúJÛÜ[J·WÈ‹ÊÚÅpãœnã¶{b‹Í q’“)Y0=0²c-í…¹`ŽåOEc>”+Ð0 OšŒHñ–oLe}Æ{Ð4^ÜÏq«¨,Ó€$mÑüØéüb]n¯§7¶ÅåH€®Ð1€GÏ^ýèáËtM< «¬éä˜[+’8?/L qŠö$Ô4÷›S°¿‹íY?0`ô¢ÁtcøÂy.Ö;8´ýMÞ)üëxr¸Áà7ãé@^çC£F"Ò­Wlˆ|¥%epp3»ßÖ€.Ðcœ÷ Å¬i+«Â!–ê⿉"*ò9¦(; 4ûÉn!½º"g.ñ1]„Ÿ`¼~b R5K‹·%$8?tdŸÔÐÚ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P}OýJÿ¿ý fкüŠñºÿúP½þAiÿ]$ÿÑ@è € ( € ( €)Eÿ3À•M@À 8 %µ £›²Õ$ºŒâIREûÈXåsŸð­W<¹{HYó=|ÎOÄš¾¥³4pê7q  …I˜º;f²–ç©„mÑM’ø?UÔn|MgÆ¡u,l[(ó3òžÄÒ:T € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (9>õ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5p¾!JÔuˈï 6SC´$‘³6Tû¸Çãš‚,&ð*Ås*â¶ É[ ·ôÍhA¡Üè76…b–ø3o'z•¹ÇÌGJ~¡•.½x¾# výœ±eqê¸Éö  ´½*ÓVÑo¬â_ôpÞCF+rF1Îy  Í7KÓõ)ìô©,̵2} ù­òýp{œô ×›JÕõ‹¨îÄVs[7—æÍ+f\z(é@† Ik{o …’9ò;p@ü{Òž~>ü–$Ä“ù¼|¼÷Ç\Uý£–^É[Ì›V‹I:©M‡R*|ÀÎ@#Ê=OAÆ;V2ø^ðÕˆ4 DÕü=%½»}·21-ò°ÎÜôëHÔ_°Ùë³Xi‘[í{Hã7NÒ6/ÊÑ|šëu=RÓC²Ž[âˆ×b–íÇò  rÜE ³\JÁ"T.XöÎh‘Ó5í*/jÓ½ìK «Ç< sН«Øé÷š×ˆàžu–1¸ŽDcžn?:¥•¼zÝ uØ“ÏpĆ8ä`œ ôª‡Ärã?‚þE?{Q`r¸‹‘þé­ìá©¥\æ_ÜÊ—ééÐPËS€&‰$AÅ=UQBª…P0PRF‘"EvûÌ~¦€-•¬ï¾khdoW@MT¿²Þ ~ñP}*âÒÜãÅR•EdcÜh—^ÁtªÉ$YùìyªæW9iЫ¸Ûs ‚ΈòA”. úc5›Õž•%Ë ^YL‘Ä ZÛLÇçg‹ Œtâ‘¡OAÒ/ôÛ»™n® ™n¥m‰†ÞÄ~œPÔ°Å2…–4‘AÎA­2eHÁR8ÅAýcÏú¿?ôÉ€$6Ðy 1—mv*2ÃÐúÐ{Ë8šÓdPG¹?Õ€ múzUEׇ٘4lŒ+={Ec°É#c|‡¶3Žþ†­I\à ³²hæ|CábïV–k{t `†_O­g-Y߇ƒ§IEîKáO êö>"µ¹º²xáBÛ˜²ñòŸCHØô±@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pr}êDûâ€+jD—øÿ¥gt  tùâÿvOý ¨Þ‡ÿ ´ÿ®’èÆ  ôP@P@P@¢ÿ™¿à?Ê€&  ÇJ( € ( € P+` a@P@ € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|Pn³mupTÁ|¶È È1«n8÷  æ_žšÜøŸã@:,~_8ÞmÛŸ˜ö  Zü‚ÓþºIÿ£€/Ð@P@P@R‹þ>fÿ€ÿ*š€'( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|PM\3ZŒU·pÀtâ€9½2and7÷qÉ8UDÆ}Ï€6ôù"ÿuÿô&  Zü‚ÓþºIÿ£€/Ð@P@P@f´Âåb3µp3±•JŽN  ýÓZ{nÇj¯÷(ö,=»5e‘wF¡†qA¥ìô¸ý¼¯k:ž|¿ÖdÚ]ƒûP©úÓö"uØŸÚ£û”{úÃk—(Þ9+»>”{!ûv/ö¨þåÈ_XbÿjîQìCë jk¸ÊÃÕNhöCöòBÿjîQìEíØ¿Ú«ýÃG±aõ†Ú£û†bÃë ?µG÷(ö#öì?µG÷(ö!íØjîQìCÛ±?µG÷(ö"öì_íQýÊ=‹¬ ýª?¹G±nÃûTrbXbÿjîQìGíØjîQìCÛ‰ýª?¹G±aíØÑ­Bfòržg÷w þT½– «I«ŽþÕܧìX{v/öªÿpÑìX{vÚ£û†bÅõ†Ú£û”{öìOíQýÊ=ˆ*ì?µG÷(öAíØ¿Ú«ýÃG±cöì?µG÷ È=»íQýÊ=ˆ{vÚ£û”{öì?µG÷(ö!íØjîQìCÛ°þÕܣ؇·aýª?¹G±nÃûTrb݇ö¨þåÄ=»íQýÊ=ˆ{vÚ£û”{öì?µG÷(ö!íØŸÚ£û”{öìFÖ#RmRÝlf—²­!ßÚ|«4{!{ivj`ÿË3G²·}CûOþ™š&Ú]„:ž:Æ:+®Ø PùgúÓö"öìûn4E¹<Ãü;†ïÊdÚ] ´Ç÷(tZZAý¦3‡4{uÚ܉5ÈFYEê¡Á#ð¥ìµ°ý´¹n?ûTrŸ±böì_íQýÊ=ˆ{vDÚì š0çøK€*^Í V“W%:žú£ùÑì…íØjüŸ±o`uÙ×!ˆržaþ ãw¯J=޶µ—aï«Æ˜Þäàdã'ÓëKر*òbÿjîSöBúÃûTpÑìCë ?µWû†bÃë ?µG÷(ö,>°ÀêƒþyШÝÚãöí+°þÔܣذöíì2=f)wy{_iÁÚÀàÑì‡í¤·ýª?¹G±búÃíQýÊ=‹nÚ£´fbÄñ ?´ùÁŒþt{"½´­{Õ6Œ˜ð>´½•ivšÄr(hÀu=Õ³ü©û öín6MnЬ…Ÿ… Ø&d»è‰?µòÏ>ô{»LOíQýÊ=‹n/ö¨þá£Ø°öáý§ÆLgZ=ˆ}`?µüó4{ öínDÚì (š5sÑYÀ?•/fÚ]÷Ö# ¸ £©cùÑìƒÛË ëQL›ã*ãÕX=•öZKt;ûTpÓö,=»ûTpÑìX{pþÕ_î=‹ÖjîQìXý»íQýÃG±aõ†Ú£û†bÃë ?µG÷(ö,=¸j¯÷ Å‹ë ?µWû†bÃë ?µG÷ ŇÖjî=‹¬0þÕܣر¬CíQýÊ=‹nÚ£û”{Ü?µG÷(ö,=¸jî=‹Öjî=‹¬0þÕ_î=‹¬0þÕ_î=‹¬0þÕ_î=‹¬0þÕ_î=‹¬0þÕ_î=‹¬0þÕ_î=‹¬0þÕ_î=‹¬0þÕܣرûpþÕܣذúÀjîQìX¾°ÃûTrbÇíÃûTpÑìX¾°ÃûTpÑìXþ°Æ¶¤¬s°ÑìCÛ±¢ çaüètX*åFIïJù7Mn«’B 9üèö!õ†R6wg®¥'ýú_ñ§ìEõ†hXÊ4ý%,É2mÊï#îoþ½L©Y\¸Öæv44?ù/ýt“ÿF5btè € ( € ( €0õ<¡<„3 p«’~‚·¥£¹ÍY]™ «£8Qg~îmÚµS1p²/Jþ\eŽ{ [z©ö‹…ä ~anÒm¤çõ¬þɬ~32óM‚=Mš6I+Ÿï<î?Ê¥&ÒÔ»ûÏCN÷R½µÔâ±¶¶ŽUhóf ñÜûUs=‘*1jì·c{5ÄR¤Ñª]!#jœ© zýM5&ô3”RÕlVÓn.Y¸†òÖç+Œä°ÏšQz•4¹t©êÖWQ”†´fU2±?/®h”ÂŒ–¤šUõÝì“<ÑF,›ct'æÿ¸ªnÄ(ól%µòÜ–Ä1íýìE3ôÏZ\Àáb« 8ûÿþ6?:9ÊözÕƒ¢°dg`Š¤Ì­ai@ 435}Q¬<¨áEyeÝÇ…Æ:þuœ¥ÊkNÄ:n³5ÍØ·¹…U˜e^<íúTÆ£ê9RI•%×ï†ç[ha\d-Ãoè>”œÙJš4.µIíô»kƒn ³`2öBG|v«rj$F ÊÃ4­Rêîù m¶y{‹Bûˆ>„v©Œ›à‘bMY#‘Yß6ÒFV݈?[‘ÏK…Þ¡$qÁöhçœü‘Éò‘ÆI>˜¥Ìú Au2Q®á&µ{»T‚o˜3¡ÊÉòv>à ¾mM\šÏ$¯öX¡0© c–ÇqDª»è¤­©,Úôø³û5žö¸ß˜ÜÊGoëMÔ}R]HÄæpÖq x¤Èwœ–Î?1IT“g Ø»&£}<ófÁ °Âæ6gle‡\*µ)=‰qŠÜ½§Þ¥õ·š ©«)<«¢ª2¹œãÊYªßb^ˆÅÔ5›˜.Ú Š0ŸÇpÅU½ÁéŠÊU7…4Ö¥Ý"òkÛ?:uEmÄ|‡ Ѝ¶Ì¦”v.Õ“ P P P P P šeË ŸÄi¸å-à óó3}ºVWÔÛh˜úÌ6ÿÛ’b¸™M¾òçïgã õ©’iîkKU±M´6štòÛJ• ª9ÉŒ0})¤í¹œš¾ÆJÛFÖj.öÎîC‡žP|¦çצ*Uú³WÝ#S]I%ÔíÒUžKAJ[Œ°oR8§;ôdB݉|? qËxñ\I"åG•(!âÆx ÿž*éëÔšº-…³†9|M©I"x¼½ŒG+òv¤—¼9;AXMyd–[T‘%’Ì–óR\œ|¼qš*_d*V°xz£–塸y<©s¾,v Ñ z…]¶!Ž*—³ÞØÉ2ri5j›kHÛ­Œô 41¥ñlæDV)²ät9ëYiÏ©®Ôô#ñ P¾¡`³E<ˆâMÂK8§£ÜªVka<7¸^]¥±X®0²Ÿ™[éÔS…îRJä÷ðÆž'ÒeT $žnæ–ÂqD—¼‚tÙwU ö %u ä2ûñïU-ŒénKa)žÊÞcŸÞD­Ï=@¦ÉœlÊÍ«F®Ê,ïŽ ìA¥Î[§rioVxæ0\¸µ",ˑܔù‰P¾ƒ`¼KÒÑ}žê.:É%Àác/A±†WP(Ò~áÄh ÁÔAYݳY¿q;5mZ;K2Þh^Y#ù^Ï?•–äÂñWÂâÅäQL’l—‚9ý Í*lª«MM uDŠFCizÛN2°1ñ«s!Bä²ÞˆíqÃÇȱãê:ÑÌ.E{Úê+q)O³ÝG…$™a(?3IÈ9,diök®½¾•Ø(‘Æåv`Ô¥~¦ò¢Ý¦‰Øä¶¸¥_<ÈŒ®Acÿ=i¸é¸”îÖ‚øTmÑ‘zâGûpZnMGïlA-´2ïôÛÇ(Ë9ôÚ:Žý*d¼Í"ÞÉh\ÓZ[6¹ŽfuþRÏ‚N?LU¦Ò3iJZÛêk<˵¼MßÄð0Qõ?…Âtì…ŸSH&hþËxøþ(àfñ£˜# êÛM£K5ÊKx'cæ6$ëýjdô½ÊŒ}ëXÆðä©iu =ÌL.aù”J‡ÝǸ51m3Z‘Ml_×íâ6×Î7H¥€çœUOteI¶š6§†9â1Lѱ¹HÎ{ÿJ¶®µ3M©hdøj5H/[·Êš{—U»'Ô–Þv‰­on>há,§QTç¨(]Ex²Ú¼â „ÙŸ‘¢!ÐQÌÉåW±jÊò*}’ùwe­Øõ¥ÌW³D—z€µ¸ò½Ô¼º(KÌQÎÌ|‚kg˜C:ÏÈñ•cAÞŸ3%Á&W]]¨ûø'›vÀüisÙ“Ý_¥´ ½Ô™Ps%‡çëG0r kz·1Èâ ˆ‚v’2 úÖ…+‰Á-Êé«« ;ñžæÙ¨ç³,]ß-«*´–æ‹ãò£˜.÷¢áÄíí,eIúÖš“dÊ).­2¯ØïÆH6ì.bÝ;]ß-«*˜.%ÈÏî¢/®(æ%BâÚÞ­Ê;n#ÛÚHŠ“ô£˜n+^0Hûÿµ»9‡ìËw‚Ô¦è.%Þú˜Ëã§\tëG1…ÂÎð]— ˆ¶ã™£)Ÿ¦hæ)Á&W:º†Á³¾ü-ÚŽpöe‹»ÁlˆíÄú¢,G×sXJ)ìw«u¿ÜG·´±ÏÒŽ`ä þ×@qö+þ½­Ûãöd×7ËQ¿‘pþ`Î#ˆ±^œJnV‚bYß­Ô¬‚Þæ"I–"£õ£™ƒ…ˆ°ˆ6wçÅ»Ræ³,O|C´2yƒ8Ž"Jý@éG0”ÂZß‹© -µÔx̱­>f…ˆßUDvF³¾%I­»~†—9Jž„³_,6±Ïä\°“ø"YxÏ#µÂäk¨­ÌÆ1ouwK Qùš9„áb95TIY>ÉzJ’ Xƒô4s S&mARÑ'û=ÉÜÛv‰q×’? 9˜rj6ÛRK‰Ö!mwà~iaeQøÓR¸J6ª"”§Ù/Xâ[v þ4¹˜*w&kÕ[%¹ònoùf";Ç>”s1{2²êBáÒ1mw,¿4•^¾µ3•Ñ­8ZW:]þA«ÿ]$ÿÐÚ¹çgBýP@P@P=×úÙ?à5½ÜæÄ'} Üúþ•Ñhœ×ÆU‘J°È=h{ve+¤“Jû-â2¦&ÏqÓ?•J^émòÊä)¡F aî®dŠ' ‘³| Žœtâ’‚E:rytÕ“SŽôÏ(hÆÆ;ÑʯrTÝ­a#Ó<©ç•næýöIû¹9âŽU{‡;µŠë¡…¹iþÛtdeÚN…Æê]X±{¥‹ÉÖG¹™P˜ù=AëMű)Û û 9lZ]“HÈìX#}ÕúÒœbÐJ\Äz}»‹«‹Éã1É6ÕU'$(<Ñ­ØIÝY÷«vfjèLúšZ¼ÅÝJÈ=á3T ŠÁ‘@X¥¨i±j»º4`³çxö¬åbã7+m.cœM)hÉ!xÁúР7Q‘?‡a• Mu<»º³IüH¥ÈR¨ú®´´¸²‚ÔÜL© òØçÖ›ŠjÄ©´î2ÃFƒO¹kˆ¤³.ÒCîxëD#ÊŸ1£»Þ®È‹Ëb¥õŒw­™dŠH‰*ñœzÒqL¸ÊËR´uKèîÞîâWLá]²¼Œt©PWÕ¸´‘ðý°fØò*³ÚgÓŸ"hÅM (ÚK«ŒÄÌÊK å€ùT¸j £ì(M•ŧŸ1Ži<Σå9ÏùÀê4ïa룬[Ä7w‡9`œc4rv{î‹V–QÙÛy³`ä—?x“ÜŸZ«[b\¤õhu´Ú/,Í$§ûÒš"¬Lµ(Ýè‘]\É4³ÊÂLeNÐT¸)=MF•‘nÂÎ=>ØA»($åÎHÍRŠ]H”›èXȪ&Á‘@X2( E`È ,ƒ"€°dP ŠÁ‘@X2( h &†á5¸."BñIŠ\vÁ$ÔÖv³¹¥î¬6çGK‹æ»73+2yxSÀ_JR‡6£WaÖúRÃo4Bæf‚2[•Ï¥5º‰É½lBú KC-õÜ‘!k89öúQÈŠö¬±w¦ý¦ì\‹»ˆˆ]¡#|/â(pD©µÐ]?LŽÀÌÉ$’<Äg9ô¬ƒÞ ÓVA¯PÝïFƒ|Ì@qF‚´»¨Ðv“ Þôhò4hůAw{Ñd=Cqõ¢È.Ã4hÄ®ƒu¡»Þ•îÃw½7f%pÝëFƒ÷ƒuä¨Ð5>ôh&¤ÅÝïJÈ=àÝïO@÷ƒvzÑ {Ì7{Ñdgž´´¤ߟš²{¨dãïQ {ÀzQ ¯"9ÏȘ¨¹Mi7Ì®kèŸò _úé'þ†ÕÆ÷;ºè € ( € ( €3M¼WùÈpÒœ]„âžâÿgZÏüªœÙ>Î'¼Ð㺚أ™¡À‘RÚFÛ‘‘œ/¥òî/eÅË;}.úÝgµHå‰ù òî7N=‰ÿ³,Ïü»§åK‡³ˆfYÿÏü¨çaìâÙ–óì=œCû2Ëþ}Óò§Ï.áìãØ¡u6‰it-¥Q瑟.8ÛEi.áìãØuƒhÚ‹Ì¶Š®ðãÌS)\çCG´—pöQì\þͲÿž G<»‡³ˆfÙÏü¨ç—pöqìÙ¶_óÁ?*9åÜ=œCû6È<„É£ž]ÃÙ þͲÿž ùQÏ.áìãØ›d?åÝ*9åÜ=œ{Ågj÷Æl•UpUú†Ï¥òîÎ=‰¿³¬¿ç‚~Ts˸{(ö&Ÿf‘³ db;}hç—pöQìA§C§j6QÜÃnž[çÄéG<»‡³a×PivžWŸ' ‰>RrÇ â—;gq¦ÙqSç—pöQì/öeŸüû¥òîÎ=Š7‡Mµ¸[Ql%ºeÞ°¢±%sŒä(ç—pöqì6ÒM&äÎÅ-°xÝHòÁ$Ô¹Ø{8ö+›Ý*Ü=®Ë6Æ.^7U9㡼Sç—pöQìY¼m.ÛÉaYf¸Ã);ÀÁ<€qÁïG<»‡³`²m*ðˆ4šõ±6C'àhç—pöq+}¿F1•·-d7'À?Lt÷éKž]ÃÙDZ«Ÿa4k$p£#€ÊqÔ|òîÍþ̳ÿŸtü¨ç—pöqìÙ–óòîÎ=Š7ÒhÚ|ÑÃr›d‘K"¤Nä×îƒK‡³‰î¨NZaäu, ÂꤧÏ.áìãØ›MK BØÊ–ª›X©Ÿ(4s˸{8ök6‹wrm¢Œ‰‚ïÙ$Æ@ÏÌr(ç—pöqì_þ̳ÿŸt£ž]ÃÙDZRýt9î¢Ø¬p ÄÏÎ@þqÔQÏ.áìãØŽÚ]êàAþô‚BywgÀtÛ 2`AG<»‡³‰’u?, ?&ÖQo!OO½·Ô¹Ø{(ö4â²ÓæŠ9R(ã*J‘~´sÈ=œGÿfÙuòŸ<»‡³`:uë~Ts˸{8öìÛ/ùàŸ•òîÍÓlü°OÊŽy³BÿfYÿϺ~TsÈ=œ{/æÑ4ÙV+¥Ú컀X]øÿ€ƒG<»‡³`°—EÔ¤’;EÞÑ…f ¦è~`:Òç—pöqì^þβÿž ùSç—pöqìÙ¶_óî¿•òîÍöuüðJ9åÜ=œ{Ólqþ¡?*9åÜ=œ{öm‘?êò¥Ï öh_ìË/ù÷OÊŸ<ƒÙÄ?³,ÿçÝ?*\ì=œ{öeŸüû§åOž]ÃÙÄ?³,ÿçÝ(ç{8‡öeŸüû¥òîÎ"eÙϺ~Ts˸{8‹ý™gÿ>éùQÏ.âöQìÙ–óò³`þ̳ÿŸtü¨ç{8‰ý—eÿ>éùQÏ.áìâ/öeŸüû§åG<»‡³Aý™gÿ>éG<ƒÙÄ?³,ÿçÝ(ç{8‡öeŸüû¥òîÎ!ý™gÿ>éG<»‡³ˆfYÿϺQÏ.áìÐfYÿϺQÏ öqìË?ù÷J9äÎ!ý™gÿ>éG<»‡³ˆfYÿϺQÏ.áìâÙ–óî”sÈ^Î=ƒû2Ïþ}ÒŽyÙÄ?³,ÿçÝ(ç{4Ù–óî”sÈ=šìË?ù÷J9äÎ!ý™gÿ>éG<ƒÙǰfYÿϺQÏ.áìãØ?³,ÿçÝ(ç—pöqìÙ–óî”sÈ=œ{öeŸüû¥ògÁý™gÿ>éG<»‡³`þ̳ÿŸt£žAìâÙ–óî”sÈ=œCû2Ïþ}ÒŽy³ˆfYÿϺQÏ öqìË?ù÷J9äÍöeŸüû¥òîÎ!ý™gÿ>éG<ƒÙÄ?³,ÿçÝ(ç{8‡öeŸüû¥òîÎ=ˆßN´ü¨çaìâ"é¶›‡îò£‡$îì­!PÂÙN=(çaìàgÁ6<Ž‘C´gÉÚ}èç{8èÖÐÜhqÜÉ™Hc»Œqü©9¶5­ þA«ùé'þ†Õ%è € ( € ( €)Eÿ3À•M@‘]B_kI¥ßÁläA•‘">ßNh_Áíh4Hc¶—2«6Hs÷¿ZÝ  r 9nôÆ»»kvK•hTËGÈšנô SEžÖÃÄZ´W As<æHžAÑû~¹ª[;U—Haö¸¼¡$±Ž¹luxÍPÔ,t½?OkÝ2úCz¸ØVä–ç¡ïÒ€T´´¸ñ„ßÊðEui¾Tó «0ížÝ?1@ ºZêQjºMµËËmnQ­œÊO—&S9éþ4^{[}Z];O·ŠO=a‰®?|w%\}A"€'ñ ¤x—NkKÃk4Û’i<Ϻ¡@‡©  ]7@±³I¤ŠúYm棲¤ž¯žÇŠ¡á³§éºö­½Â­°y{¥t$à“@uHmõ UíuY 6ÑÐ7`”àn=yÛÇç@<3¬~%Õ^ §žhÑ#‘¤,c‘žøÆ? ͶÓá²ðzkpÍ/Û£`ÈþaÀýæÜc¦1ÇJ×ñU•ÙÒ®¦r|Ù㌑&ÐPäŸëÍiè¶Ú6Ÿw%¶0id@å|âü3Ôã­mP6µ¨[i“¤« rßȾ\k¸+ÎO'¢ŽMPŠÀɦj×â;»ûèq"ÂÁ•H GáÇá@Khþ0™BÌ-¼‘>ð6ãzÐŽi¨ølÜ'–±[ºJH©òÀäýxühk ߌ¯ç„¤°%¢Äî¸+¸¶qïÅV¹’ÛUWÒ쮡³Ó }“ÁLœò«ÏÞ€:›xÒ hãŒþí*œç€=h¶—–÷¨ïm(‘QÊ1^™=gêV¶žh¿Ÿ 41²#–À†9(Á–v²èÚuèææÚ<†û ±$@öúe柨jÜHÏæ‹lÅDd ð}hMWRÔ.<'¦Í Â+Ü•Y¦/°)ô$zô 4n4ÍvÙCYEÆähãºi7÷žG?wtÍxí±¤ÛªÈ±¹ºk689ë@éò_Gâ8¿µoḅ퉷•D'zñîh«ŒŠÇñ<ÑE¥$ФÍ2qÒT&€*jwÝx‡FKYVIGw°8]¸çø TŠ÷R×oÖsm"Ã&#Š{¶ËR8À¸ÐÛ[Iõ ÞAyp·Y»xCÏb{ÐF;íS[¾K²”†M© ÅÓGµ{ƒÞ€7<'s%­œÐj°0IˆCçn@O§4ï Ý[£j€Ï^þM ¸ç¦1@¾Éa«jš€Ön]d‚m±@Ó”˜`3ß­gê2ðÞ½mo;Ígm$KŒå±ó.åÐt  îb±±²ŠÿMÔe¸¿wURg$Îw´   å´K&¿qò¬¶í ‹ÊpÈÜqžÙ#ñ  î£}öæ2gs&ŸænyO-»ǸY#”Ò€2¼?¤[êIqú‹¬P\ȶ°¬ƒp?Þõ=±ô  üIáÔl4´™d¶KQŸ´LщX2Hî0ã@<(·67“[K5¯”ûJCÃI³ïgõþ”ÖÐ?ˆ ¶²]HBÌ%±ÆúôÝ.Ö¬´-̺šÚ0Nì†*¸€8˜"Ôî köºµ[€Ió¤¼etÇm¹Ç»®_Åiag",÷B&\„vÉ=O΀1ì£òåÔ¬§x’§¼…`¸gPáÆIëÀZr齦€íw1kó²áüÓ  .;c¥u>_&ÚþÕYš;{é"sd…ãõ4ÐP@P@P@P@P@P@P@P@P@P@Ÿz€~ð  ÝvæÞ8<«‰Ö-äó`ãýzæì`ÑtéÌö×;pÙ”~¼ÐAáòÂÐr ¾ü ¨æ‡ÿ ´ÿ®’èÆ  ôP@P@P@¢ÿ™¿à?Ê€& H°MCíëk»É>hò0J’ÛM³´¹–â tŽi¿Ö:Ž[½Z .l­®¤…ç…dhI?Âø  è  wúUŽ¥³í¶É6ÌíÜ:PÚi¶VVæ [h㈜•‚ht *ÞçíØ@’õ š§¨h?ÚâÝÝ,rÛ¼–‰“9Ýœç×Ú€4VÏìVË™ €G21ùç@t=m>òîâcµÄ)`›H,AÇSÇbëÃúMäæ{«(¤•° äЈ´Ë8lZÊ+t[fÇB_ç@‡…t@At?¯øÐºÎšºŠFmm0RIó“v>˜#[GÐ#²’îILl.•PÄ‘ìUUc>´{ûÃû?ìeì¹Ï•—®-Εcui­Å´rA6#ô °Òìtà~Çk;ŽNÁ@(þ§jR¬—¶‘Ìê»An u Óô‹ 0¹±µHL˜Ý·¾::C£éÆôÞ›H¾ÐzÈG4=ݬ¶íÔK,/÷•ºôÛ[ ð$QcTc4@øWC?ó ‡ðÏøÐ‹ÀVÌÁlV&Ä;rŽ8ï@ªYYÃm6ÄŠƒÀúP䆼´‚úÌK,MŒ«t4Ë6ÏN£²·HQÎX êht=2ÞÞh!³‰"œbE†úбi–PÙ‹Hí£ãþYã"€"²ÑtÛ <ËK8¢sÝG4¡@5 2ÏRU[Ûtœ!ʇÅ#évRÁ l 5#…#¦(àÀzP=CL²Ô‚-íºL;CvÏÿ¨PXé6v~Åk9ë´sùÐo´m?P=åœS2ô,9ÿ< ±kgœ"hR$£ZÙÁhe0D±™œÈûF71êMA}£iúƒ»³ŠfØPdÐôÉlÖÑì¢0) d @Åá)’hôø–D`ÊFx#‘@/tm?Pp÷–‘Láa@µ;Ím2Ð%º¾Ð ¦q†¦G¥>ÇE´ÅÃZ[­ÑûΉŒúq“Ž1@m Ls;5”DÜË‘÷ŽAçñÐƧ‰ ”ZE¾ü¸Î>êò1úš…<9£Çp.O„Jvqß9ÍX].Éo赌\‘3½ºU•Ì—6öɲç{/VÏÿª€ ÿ„J7FäØ@f,X¹^I=MiÐy  Ñ i_i?`‡Î;öóš±{¦Ùê¬w–ñÌŠr”ÔÓ,ã²k8íã[vJÁ¯‡t›9Òk{c•U€9­Z¼Óí/ãòï-ã™=f€c¥ÙiÁ…´p9;Z¹@¯´û]B1ä 2¬?Ï¥:ÎÎÞÆ¬K@’Gõ  “h\÷"â[PAÝ·Ò€$½Ò4ûõAug¢?»¹z~Tðî’”XB'–p:®AÇæ(çBÓ ¼0}Š/*/ã…$ä‘@­¬íí^V‚¦ròþ&=MO@P@P@P@P@P@P@P@P@P@Pr}êDûâ€*êQÄP4G#nÀ. ö  ý°ãþ=m¿ïØ  ´|1Oºý?Þ4kCÿZ×I?ôcPú( € ( € (  QÇÌßðå@PF™«êWZÅՕŬ¥³ì®wa+Ç|àPhšÕíçÚdÔ`·¶¶„”YU·^½¨B×[Ó¯&òmïa’Lãj·4>·¦Ç<°=äK,@—By\rhöš­•ì =µÌO œÝï@§ˆ4™&òc¿…¤9ùAÎq@jú½¼¥¤z„×EÓ"UÝOLzšÔy(ËÊÊŠ:³@!×ô©çòc¾¤=juι¦ÚLðÜ^E©ÈÇ‘šµiwìkiVXÏFSš›  gÄÚž¹¦Ãq=µ½¸µn%$—çùzPG …œ’ š}døƒS’ÂÕcµP÷—d GîO° ðµõÆ¥¡ÃutÊÓ9`ÅF Gô  sÒ€0¼E}«YFd±†l¨Yävù”óÐt  M2g¹Ó-'åå…¸Ç%A4f€ (#^Ô.-¾ËkfUn®¦¬ÃpEîHî?Æ€YºÔ–êÖËNDVœ9{‡RËÜžüŠƒHÕnÿ´n´ÍCÊ’[xÄžt=g¸ìyéí@¿·5Cgý¶&ÓUˆò~r±¿=¾”¡ªjóck¦ìß ÊòŽ1œã¹äq@ ¦j—QÞͦjKæ]ÇL¯m!zzç4Dj:üúyÕÙ-m”Ò©Ü@'«†€7´›ïí.Úð§–f@ÛIé@r;åWUÕîìÛZ´x³Ó, òþy{t?•iͨ_ÝiÖ×z5¼3‰Fæ>Ü _ _Ï©ø~Öòèƒ4›÷08r?¥jîô#ó  š›Þ‹_ø—$o3ó€sï@]ö¢šÁ´¼¿´½Fˆ·î„0ãë@×õü—3XÉk ½¼¯Æé¹¥(H?NF(ßö¤šŸ†ä¿ÓO—##˜÷®îTœñß8?]ÒoF£¦Ûݨǚ NH=Å\ € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P}OýJÿ¿ý fкüŠñºÿúP½þAiÿ]$ÿÑ@è € ( € ( €)Eÿ3À•M@úå­ÜW¶ÚžŸM$!üÈW¬™G_NM3VÐf›AµÓí$d쥂œP¤3Ð’h&×@™îí¾]d5»†yc¨’!ÅZÖ-¥»ñ%­Ìº=Õŵ²2¶vì@-Ð{Эõ”2èS¤zqýüC0 #öà‘ÆG½(N°Ô¢ž’+ÓÈ—Ë)8 a”’1ô  ~&û]ü)oo¤Ý;EpŽdÂm`§œ|Ùý(Þ©Ö¹¡\ÛEo5œ¬É´mÃzèh¾¡Ú„–èòÁ#}ÉdØ3œ‚9ý(kIÏŒ­g’ÎIaŠÓÊ3•]¥ù;ºúdPÞ†âCVi­d†9çó#/ŒŒv&€7èŸñoÚnô¹ôûK‰ÞUR=¡GÍœN{v  M:wžÑL–Ó[2|»f'sÁ½hK[k™õæÕåàAiöq\üÛãéŠÌ¹mCQºfÔô«ób‡)mŒ†ÇFc¿“íÒ€7'Ó-5‹RêÚHãNR2Å;s´Ð4ÿ éºmȸ´‰’PÉ‘›¡4›ek{¦hgCû—QÑ'L¾lžI9“ØÐ­¬rhÚ%¼ ×M Û>ü‘@¼ͦ‹…Õ”ÐIâYÂímÎÇŒxÏ¥Mwám*öîK«ˆË!ÜÄJÀgó  3Òm ŠÊÊK˜# #üê1Æ7:ϰµWÖVæßG–ÀØHòm]䲜mRsÐòhö¯{¤ËuÙIv’Ï$Ñ<À Űù#'°õ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5—Që*1*¬¤¯Ò†˜ì÷$„À3@gÃUÕ˜…`HëŽÔ ã¨P·X[5ÅÔž\IÕ°N?*«¤ëvz»Y—dF+¸ŒŒhšŽâxí­äžfÛj]Ž3€MPÒµëbyâ²g ).Wç¦;ö jšÌ:cFÅÄ’g oæÀêQùÐÚv£o©[ù°8tq†Fîv4n€ ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (9>õ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5+ô2õHìa—ÍišÚvèè=:âºióµn†Ð¿Rî›%ãÇþ— ÇèU‡Íõ¥gQE|,™Û¡xÖdoˆaº³ÔÕâÕ.ȸIìë.ÌaO ãŸò  Ÿ ÛÍ‚Ë5ô÷M( D­„òþÖ€6h.î[äJ|ˆ;²|ÇüGåOC)^ú“ÛGvÌÖ?37w'Ÿ®y ­:©îã·Ç|1¤ñz‚Ð0`ŒŠç|6Ôu08îlÄPŸG$šrµ°o0~õU‰<8ÿΗ<Ü-d¸ö ëasöf¸‰gÆ|²ãv:ôúPcU°hÞE¾¶+7‘(;r{úP¾©bž`{Ûeò±¿2·=3@¤É$>j8t#!”ä@¬o®.mnghTì–E…PòꤟC‘@ô½nò÷[–ÆêÄÙ„ƒÍ ìÌn(mWSº†î; 2žñã2Ÿ1¶ª(8Éúò(úN¦÷=­Ò¯­±çF¿tnÉ\×@iÚƒÜÝÞÛLª²[I·åèTŒ©úâ€4( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P}OýJÿ¿ý fкüŠñºÿúP½þAiÿ]$ÿÑ@è € ( € ( €)Eÿ3À•ME›)\]Mq+ÛChîªpÒ3mQôõ­chÙ¶k-I´«°·4¾f;íÇ­*•TÞˆ'.bõffrš¤rèz”²ÚFLzò—hæ9 Ù=‰"€648éöGÌ9¸¼éŽ1ûÂîþ£·§@×÷‚èH¯HÏþ4îg(ëtM¸ž9 h±ŒƒÐý ÕŒ].ÙX€ÏSþ4ƒ½Š EMNá-lži#’E_áw1ü(“ðÄ:cî‚M2ò;™¢1Ê歹8g>´fX¢oBÒàø‰dØvê9úq@g{»ÝrÎ[…/ Gµ\ìUÀ'ÔÐ=Jé/ôVÒmt{Õ¹Â Ó »H$oÏ <Ðø£Ê—WÓâ¼²»¹†'žb‰°á‚‘ŒPŒØ`Ëkcr­öV·7˜ sëƒ@…­»ëZÚÙO¾'Y[å{žÜæ€'ðôSOàÛË# ‘M¶hǘ¥rX§4± 0]Ú3÷¡O%ÿÞO”þ¢€0­µe½ßØo–mÖÙY ?{Síï@¨–Ã]‹YÉ=¸·6òG’ëÉ`qߜƀ@Y®5OT{y`†ïÊò–UˆU*xíϯ­If<ïê¯ÜŠÝ!lõÜNî? Ý € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (9>õ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5L)jÐzS ÇsqÓjz‹´Ryˆ¦U!O°Û@Q/—®XíeŽIúШ Žô€ƒÐƒ@ @Ö€ P@`Pq“@ @í,`²3y WΕ¥`XŸ˜õǧҀ'ãó ¥.Wµ²‚ÐÊaR Ò“œ±  P@dg € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P}OýJÿ¿ý fкüŠñºÿúP½þAiÿ]$ÿÑ@è € ( € ( €)Eÿ3À•M@ç—Pµ™ŸË[ˆ à/ £úÖÉFKMÍ,šÐ·i{Úf ý@ê>µ„¡ñ+ÓEƒP#ÔŸ~Ö²éRm!Œr´¡UÀ÷úPmâ™ãÒ?´$Ò&XÌóB>öqÓµX¼×®­"µoì‰K÷U%O\{ð3@€#¸„OŒ³¨8å©ëž£‘@:"4Ž«mæÍ$pËO6VrOV>¤ÐÏ›;«¸%Ó&cjAv 0÷4{G×›Q¼6òØMjZ/6#!ûëœgÛ¨  ª«q{OåŒÉ/d^M·a!kÍ5ÁHâþì ã¾IúP Ü?´í?çºþFƒ˜¶)f€9Ý̇ÄZ½§Ú.%†'`šf“nP“Ôžôº¯‰%Óo¦¶dÓùQyåÕ€S@ Ó|No/ma›NšÙ.•Œ23=(Þ´ÓͧÚ[JèÞhž@ hÔ€FG_¼8ï@Ö±-¶·o¦Çbò¬Ë¸K¼p~¸ë@ °×e¼Ön,?³å`}¯)`@È${ãÖ€6膩«ÚiH†å˜´™Ù.YñŒà~4–:Í–¡w%½¤†S†gQ•ç¶}}¨B€25Ýb}"!*iÒÝD]Ññ³ë@ô˪޴ ¦ËKœÍ¼2‚;q@Yf´ñoò9¶»·,ˆ\°¤gôô  Ê( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € (9>õ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5¡N{+»¹˜Ms²ßøR. æ¶Œá¢ÔÑIGbí½¼Vñ„Š5@;YJR“¼Én䯑'1¬èúÞ§uƒ-—ØÐ>È‹:ä‘…-ÉÞ€%¶†k-­´Ë.ÂòA%Õ´ÏŒn–%cL‘ï@ ‚+x–(#H£^ˆƒ}>€ ( € @ @=hh € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( äûÔ‰÷ÅWÔÿÔ¯ûÿÐÐmK ȯû¯ÿ¡5[ÐÿäŸõÒOýÔ~€ ( € ( € (”_ñó7üùPÔÝ ÍBkYšxn–ÖáÎIÆò{}ÜÖðnJÒZÇÞVh¹¦Ü]N§í6Æ X߇jš‘Œ~rd’ؼk"C_¾Ô¦¿‘4MH–‡å–n¸ŒúîaÏÒ€+ÛêÚ´¾Ôn¤¾)wgrɼD‡*ñŒc©<Ðø_V±‚ßP»ÕÌNko!ªñóC@ Ò꺮©{ ¶¦ºz[8A…d.1÷¹ÁÁ  -Tž=CO]LIseØ…1Ï$méœÖ€1íïõËÈ´Ø`ÕvÝÎÏç/ÙД@ÄoéŽozÒñÞ ÷Ki¤jD]€ËۆΈ±J—Ášõô©¨ÍæË¡3…ãýš{'ŽÕWO=˜K@k³jVz­¬°j˜‚y•>È!BÀw9ûÇÿ¯@ôö×otÛ»´Ö˜ž`K³&àGAì}­+_ßÞiÚlVÖëéƒ1n¬X¹ÂŒ{ÐTÓÇg »˜Ó'n÷!>œÐüc9ãÖ€9Ý-Ôx»\!†?qÎé™  šìú²ê×IeªyÅbnÖ?!‘ÆÜŸ_Z‹L½Õ£¾Ñî£öˆuÙŒ~J.ß— drzûP•™òË%¤|ÀùÈõ€4Ödc€Ù?JT‘$ÎÆÉh¾|yÆî~”ÝÃÃîbó¥, &í¼9>ƒ'ð  ÇNh†h÷cw9ÇCÖ€$ Ðѳm –Î(†µ«.•l³Í–WÅvîcf™¨êW“s¥‹X€ûÿiY9ãŒ@§§“.¯pšÐÓÒËp*Éæ…ÈíÇlúÐ"Ö§“]m1¬v oóAùÀlc¿¥jùÑîÚœãô¦T ·Ì{P¬ŠÄ…9ÇZ¯Ô’^´"Ü„Ü%ÝÔúmëøÐ–pƒ,p(©*¾v¶qí@'Œ¶Ðß7¦(å€\“Å"È­À<ôé@ÓF­µ˜@ ûP'Œå™"xôÂVdy#&p7*}ã÷{`ÐC¦ß ý2 Ý»TŒçaeWÈS’(†•ª5òÝàû;[Ü4wï€sz±=Ô6ÂK+Qw&GîüÀœzäÐ}Tm^ÀܼC  oÝ‚:àP÷•#8fÆhùÍP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@G'Þ O¾(¾§þ¥ßþ†€3h]þEx¿Ýý ¨Þ‡ÿ ´ÿ®’èÆ  ôP@P@P@¢ÿ™¿à?Ê€& &kÛWÅŒtÓe!¶b±-Àl¶S Ð{«ý±asá$°¼’&’Ö@ƒj¶Ò6¶Ò3@LÚv™'‡ØGž÷UÁ‘J§¿$u  Úõü7zÕͽ̖v&<¶¾l“ÝGOJ³á RËMÑïžêä,m|1Œ¨Á ƒ´túPü=®i£ZÕ¿Ò”ýªpñp~`“Ò€ áká^âàÚÆ`½¼²q÷Qõ  mt¨4ß ÜÍ~65ÑI&û:mÚ7 (ÔÎÛIf²ÛÁ´Õʂۘ¥N{ ÅšŽŒ€Å;Ãý¡‘`”%•w«zf€5$Õ´ÝWG¾’Ú᥂8˜JcS¸¼ã=ñ@M”–©5”6òYjÈŒC[4s Èî:‘ëž´éÀPm]ôKå%¼€ë÷OOzãõ9¼=6ŒÖºm²@U o4FFq׿€.xÆ[h—JƒFÒ ÎJç÷cïvÿv€: ãJ¸¶èþW’ å¦Ñ»JÒ  _y°Û[ÞÂÁ~Ë(’Sž±–_|àqÅG¤)ƒJºÕ¶f¼ rªz•9(Ÿ–8 "òxnmÚágµóˆ,Ö°ØóîK‘Æ;Ÿz×Ö®t·Òô¸•cœ$ îªwˆ¶œàãÖ€7ôÛ- HõKA AØL¹Éƒžç¿ZŲ×4?\\ÁqV¯l¨ FB–Ý“Æ(ï‹u4øËÛGot¬âêhL›Œ uõ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5N: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@Ÿz€>ø  úŸú•ÿúÍ  tùâÿuÿô&  zü‚ÓþºIÿ£€/Ð@P@P@R‹þ>fÿ€ÿ*š€%Þ£ø‡yé@Í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@Pr}êDûâ€+êêWýÿèh6€%Ð?äW‹ý×ÿК€-èò Oúé'þŒj¿@P@P@J/øù›þü¨jã¦RœÐ½PÕáÔÌ0´–¶JÍÄvþwûÛ¹à ®5-LxRöú=R)ç‚s¶UŒ` ÇÊTƒÍHךޟ§®¯y} ðlV{t‡¦îry?΀,½Ö­«j7–úuÜVPÚ>ÂÍösŽx'¥Au©j–ºf§·Qý®ÏÊ): ùƒ7pr3Á¿Ö´ûh5+ë¨åŠYDmj‘ãnN2¯lЯ_ê°\Å Ÿ™ ›Þx óJœ÷銂Ã[¹ƒEÔo§¾P6")Ò8 ¸rGë@"Ö¼Dž]ËGy,m†xŽTòpÀäã¥tºÙÔe°C¥Ì–Ó—™°0¸9=(R<ì]Ç-Žhh I¯áñ.Éï–;)T´0˜ÁݵFï›·$š¯á™õ[뻋‹‹ã=‚‘æ…ÛÔqÒ€:Z( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( äûÔ‰÷ÅWÔÿÔ¯ûÿÐÐmK ȯû¯ÿ¡5[ÐÿäŸõÒOýÔ~€ ( € ( € (”_ñó7üùPÔB-µ§ÕRæçÎå“ÌùåÚ2;àt Aá«æ5i¼‹Œ“˜v!9ÉQÛ­G…lÒeyn/.#C•†Y‰E#§ݨú‡†íïõ½û]弬¡È—` }VÖ´ƒká‹«2Ù§–à‚Û¤ù™Ž2ä“Éâ€"д1E5кˆÆHû+\oŒqŒ€?È  -GÃÖ·÷&äMqm;KyJ 4ßøFìÿ²ç±>. ™e2îA$Ÿ  \xfÚçK¶°’êëË·%ƒyŸ3Iç× j>ƒP¹Šá®®á–8¼­ÐÉ´•Îyâ€,Yè–vvsÛ ’Ap?|ò9f“ŒdŸ§¥QµÛµ õh;6ÿw˜ãé@5mÓV°ŽÎ}élv(I"*Ž€b€€9Á¨ê-ök}4•‰²—+rªH#æùO>ÔÒé‘ùZu¼b/$,j{·lã¦{Ъ( € ( € ( € ( € ( € ( € 3@hÐP0 € ( € ( € ( € (ÍP@P@P@P@P@P@P@P@P@P@P@P@Pr}êDûâ€+êêWýÿèh6€%Ð?äW‹ý×ÿК€-èò Oúé'þŒj¿@P@P@J/øù›þü¨jœt € ( P@P@P.£¯ý†ôÚ 6öåðH0 `@ž¾ôsJÕ-õ8]àYÆÛ$]¬­é@·:ýÛ_Ëm¥Ø-ç’»=ÂÆ>a‘·=zÛµyd¶î#JÊ 9Ú}3Þ€%'€9Ù¼ce Ìßgº{xØ¢Ü"e‡P~´¹it—V°Î¹Q4k Vê  ˆ3–uç¥b`ÃŽhÀ†#ÔP@þ,³²–qä\MkÍeÿw>´µo:Ooë² qžÀŒÿZx‘ Àu$öÍ:€2¯uë{jÛM¸IC\¨1ÈÊNqóë@ ¨kXêö&9%¸K* Î“ùP—˜€….Äó@ X’pÔô`O6?ùè¿8à ‚=E‡}â{{[é-b¶¹ºxFf0¦DZ¿¤êqjºdWñ+$rgºŒ9ü¨Ø–2¤€sÖ€@u ϱB$òžL°\'^i7bdìQþÜÇæXÝFŽÁC:àdô©æ%T]Vh#:¦70éšC,kÖEõ44ˆ§ ê\@^Ï:YI%Œ+s0ÆÈËí ÈÏ?J¯¢ê„5Õ²ÛK› ,›Ç@zãÐІåÉE êÃ*AÔF8Vú@ @ïî…”×LŒë *H&€1añl , sewi äždÂzr=h Þ¹ÆáŸJUuoºÀãÐÐÝHZ_ÙÙ„ß-Ù`ƒ8ÀP ?•9õ[8µa$Á.C*°#98àô&€,O7“ I´¾Ñœ/&“ÐMØÊ_+Áç­Ñ‹ï 1Ö¡LÏÚÜ“PÖ¾Çgi{äî¶™ÐHÌØ1«t8ÏjÑ;š'sU~í€ ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( äûÔ‰÷ÅWÔÿÔ¯ûÿÐÐmK ȯû¯ÿ¡5[ÐÿäŸõÒOýÔ~€ ( € ( € (”_ñó7üùPÔ8é@P@P@P@Ïj:Å…‰!7<¸$ ò±Á&2:ØÊ€#ðôÉ}¯köͺÒO-ñÅWž:þ”¡'‡½rK¢û!ýçÞÇ?®:С€ã¥ ÷MyÐÔb‘4ÍG̶’ãÙóÂOSʇÁž:÷  ­J{kcBÔ.ì£Ètp °_mP® 4‘q¨i·W'>~ø§Ž&‡*Ã,¨y鑆ÅCk§ióÝhhóLÑ]À|㽿xËŒ)öŽ(¤ðLˆ¶·öhä‹k·UBIعù@öàÐHÀ•8ëÚ€<úÿS‚ÎkÏìËÕ ×$Ma<;–WÈ †ÁÀ4¯â9‘KŽô½¶™'c’vðŸ/n½(—‡“LŸì©Kx¬˜€û¾Fߌ ÞÇõ â€8¯­Ç‰,-¯dhã6îK¨9Rs´ð=EVµì$Ó%Õ&QÝ ”‚XÄD.>¤ëÍdNóO3I5’Þz»J^>8ÆÑq×­nM¬Æž´Žô}¸ÊæÊ÷bpÔW“ÁoâãŽKuDë‹q)Üx#;ÿà_­O§éú=ÐÖ'‘Ý…´òº ÌT(;°;ç4ÖèSÁq¤Ûµ«—‰Wb“žÜcŸ¥_n”ÁßÞZ[k:‹XjòiÓo"hÞ"Èã?0À4}îžO YÉ< ea!oµ<±æq·o8'®=h-aПÄõ"}ñ@õ?õ+þÿô4›@èò+ÅþëÿèM@ô?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5N:P@P@P@P@ ÀQÇqýhEp(Àô àP@'$ Ðè(O½ ÇlPA@öú-Êx…õYµ.èÚ%‹É ¶2Û‚äuÁï@4b€Üt ŠZ0:Ð`zPÐ@qÞ€:q@Ú†sy¬ZÞD¤Vî!ò‡<õä~T´(° -p¹Áô`P;@è1@Çë@ @ Áç(8Ç=(E˜ Ò€ §sa ÕÕµÓîóm‹ÊŸ\ú ·À  ƒÒ€ 9À¥d$’ا¨éÐêKwŒq¸“bÓ>ÔÆ]P@P@P@P@P@P@P@P@P@P@P@P@Ÿz€>ø  úŸú•ÿúÍ  tùâÿuÿô&  zü‚ÓþºIÿ£€/Ð@P@P@R‹þ>fÿ€ÿ*š€3_ÄPÇ«0Ù^ùĬc9<€,èúºjöí4V·P :Ýî99  ( € ( € ( € (“y†&ò¶ù˜;wtϽ`hW:ƒëú­¾¡*‹ÊÂÄX Ê“À=;f€:*†ö²ÙÍqŒˆ¾>ƒ4ÍE.¡»ö’Þj &…ÝŒk2v/gÀN:ÐKg8º²‚áA ,jàŽ£4ë7É#g›—~qŸ|P•>¥ÿ DöºŒ‘¶ªáafØìt=èöºÚ’@NkuĆ]Ù€1й`í&nìrí±'ÔŠäîµ»˜úþ[¸á¸¶˜Å›ÊUdŒól'%Žx ㊿â[Éä²ÒžÚ[ˆ…Ìè@Ä>Ö_j†."™åC>¡ö„ݘo¤ùñÇÌ®;g×4ÑÐ@ J¯5='þ®e‚³Çmæ0ˆ…$a‡~‡¡ô ‹J¼þÐÓ-î•ó6=(ÙäP-sq«Å®[Cy, :mXÆAoâÍnj#P*¿ÙæØüþ~ìcÛmgxBêæïGyn¤2H'd’x Ïj͸½–ïY½[½DiËhû`O<Åçzï¥Y—UŸRðtwÑ3C,ò"æ"T¯ïBœr{f€#Ðnc]_ÉšãXŽB§dzƒádÿt¸ ®€ s1I{®\Þ¼7-l–sâTv]îû㜮};P–¨=ýµÀ˜(šÖv¶“oÝ, dlšÔ=(š íB[‰/.å°·‚R!heh·¯«ç‚=þ´—ˆ§Ã÷š•üJËm.ÄhAÄ‹žzõ  º-Ãj·\Ýë]˰+oos¶6Œl<œãšv±|òx–K«é¬­ã€:43y[²G\žh߇5™çð¼·÷€·ÙÃàŽYÕGS“É  zMÑÔî ¸»Ö<™˜«-½½ÎÔnŸ)Rzä‘jìTÕn^ÓM¹ž0 Ç2äq öâ€9Ö¹¼Ó´û}lÜK2\˜Þhd°@ø8xÇ'×¥u´ŽÁ˜ôQž(ŠÒõ×eŠkÝSìŒßêᶜǜÊIô=Mnk'TÕí¤·[QËçp“ßâ€,Ý\Ï„÷0€ó,À`H'ä ã¬õYE½âjW/w<ê¯nÓnO™ˆÆÐsŒt «RŽîæÕOÚE¼=ó”§@P@P@P@#P)§mǯ]^M¤KÆŒ?ïÔì »sï@` ¯ [«I­ÙЬ¨P‘ØŠæâ²Ö>Κ)·ìq|†éßïÅÈÀP8m§©ãŠÖ½[Û #ÒaÜB¨‘¤„rÏ#µ^¶iZÖ&@˜ .£ lr(–õÔñš‡ö!+$+ _´/læ€6uÙoÖÝc°±ûW™çÌ ³c¯\ó@ƒ%ûY¬7ö?e1"¢þð6ð3Ådjºv©®^˜_O·³· µ®YƒI"ÐÈìh[P:•’Áý™kÄ»Z"û[ƒ@4›MFã]}[P·[Oôsl°Üq¸0lþc𠆀 rkaªé¶Rèvk=£†X†NWà“Ò€7ì­›¤Çkdh"Ú›»8 Òd¾—M‰õ(R+³è‡ÉÇsÛÏëZ›YŽh42(v·ž£x?…nÝ]_ǦÅ4uËßša#ž{â€2|#©g¶·Ú‘w”Kæä°ùp?}¨ºÊj××2A‹mÔ¢^Lêp¾ E\[KýL··Ò¡†á!ݽ¶³å²0}y=h¤Pêú®³es}`¶0Y±p<ÐìäŒv š€ 4Í}Uѯ¯›n·p^?™ó¸_%ÏRxätü¨KFÓŸN¶¸,AšæV¸€ÈÙhsj“[HÚ¼ ÁÈECÁ_^¦€0uXu«ÍYÌÚ\—16"ˆNª’݇~ÜP¡³ŸZЧ±¾±û±P¨’À ŽƒŽEgfj×·š|VÖÐÚKæ™ã9 ßjŽ£Þ€-]Á©éúíÅõ‚_%Ú(o˜#DWŒdõÏZ“EÑ&ƒB¼´º+—…Ù‘8îÀëÒ€(gê×ÿÙÖW|VÐØKùÂ@ÁÂqòÈÈ9æ€:ñ@u+O·XOm¿a•CzÏë@ôš~«}i5¢EglQZᤥT#@3ÍmëêQEöd 3´€I¼ãjw=E^uß!èÀ8Øô}Wì6ú,–P,ÙkÕ`p7oÀ^lPæ½& ±¤VÚ•ÁÜÂ@›}:ýh#¶»Ô¼7-¥Ôbã1m/¿`ŠÈ†ÛZ’Æ×J—H†8¢‘\oR6«gp^ Ð­äÚÅ„Åg§¥õ°…TŸ0#zöÆ(¾³½ŽïQ¾½·ŽÙîÝ6§8 žIIÍnÐ@P@P@P@P@P@P@P@P@P@P@P@Ÿz€>ø  úŸú•ÿúÍ  tùâÿuÿô&  zü‚ÓþºIÿ£€/Ð@P@P@R‹þ>fÿ€ÿ*š€%Ü€`°ãÞ€( € Ž;ˆd‘ãŽTgŒáÕX§ÐŽÔ!8 mîà¹ÝäM»ËpØ>‡5ÙdHÉ#ª"Œ³1À×4­íµØÍµÄ3Ž™‰ÃÓê(z( €h¤Z¦Ÿ4Â(o­d”ôE•KÃ4n€Ò€*JÄÜ}Ÿí–Þ~p#óWv{qœÐ¡@  ?Û:^p5+2sŒyéþ45Õí¥˜Sus º.:[[Û[ÀM­Ì3…ëåH\P÷–Ép-ÚâœÂ2ãv=qÖ€sghÁn® €žG™ \þt¶÷Ö—D‹k¨'Ç_.@Øü¨ÅPi/­#¸=Ô 1é?‡Z³@Eqs²©¸ž8C6Õ20PO§=ø £+ t`ÊÃ Ž„PQÞ[K;ÁÄRM.Šà²ýGQ@Mªé°ÈÑ˨ZÇ"œ2<Ê>àšœ\Ba3y©åI}ß/y Û^ÚÞÖ·0Σ‚b6?*ž€ ( € 1@P@( € ( € P@ P@P@P@P@P@P@P@P@P@P@P@P@Ÿz€>ø  úŸú•ÿúÍ  tùâÿuÿô&  zü‚ÓþºIÿ£€/Ð@P@P@R‹þ>fÿ€ÿ*š€9c™¥>ЈnäH£EP¾_NttPhŽÒ QðyÔ§ê\öþ±J–ÆÒyÓÖ€:ÜIw¡Ù\LÛä’ XúšÑ=(ÎüA®XêÒ4—ÄAnvÅ–üÈ¿ÇÀÇr:Ðö¡®Ç¤xbÊT ®-Ð@J’3´r}  ÏOjÞ"»÷F轪´’á¾wn?7=ÅNú¤/u “NÓgó®ZDk¿˜•ì?—ûR=B-D† +÷•e‡8ÎÖùéë@o-ÓK×ôŸ°£Çpì’à …ÎHý褠€ ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P}OýJÿ¿ý fкüŠñºÿúP½þAiÿ]$ÿÑ@è € ( € ( €)Eÿ3À•M@h’ïM©¥ïË9H¼‘Îhù³Û¯JŽ×ÃQ[Åqmæî´–ޤymÏ;³“×¥6/ ·š‚öì\ÛFÁ’+fÒ>ïÌx _謺…®¡ög‘äà}MLš'‘¦5µ¥Ç‘4’y²ÍåîÞøŽÒp3Àâ€*XxnîÊíîUßæ¶éGÙÀ-Æ:犳wáäk©.¬. œóÌû|Íÿ8úP4ÿ [ZC{·Û+4x*ùÏ'š¥?„æΤd1а‡ýõÏã@/ý£©ãðË 6ŸâÚ_þÒA‹;êy<ÐVžºµ¹i“Vûòo‘~Ì>bO=ø  zž…5öׯÒU‹ÊÿU¿#9îhÞ•¦‹s$¢yÜååÛ·wAÓ8hP@ š5–6×r8 Œã"€9Û Híî/ÌöHr`1mÏ96sךé: eÌÜÛI«º9«Phy\ßùÖº²ÃämÆ: Àæ€4õ}=KF:hs xP§°oZ²–ÿf%Œ¿ˆšl’Ü<¾}Üß~m»KÃ#µW Åw¨›½Joµm%¢M¦?/œðAçñ  ÉW|L¹ê1@i¶Qéö1[GÈE·÷ˆÏé@h €0îü:·/‹€¶’ŸÞÛlûü üÙÈÎOJ×’kV·*”Ø=†1@tM4iL+'˜"ÝómÆrÄôÉõ u½"MR%.þÎç÷Aó×Üzþ”zÎÛì¶P[îÞaSv1œ f€34ÝK-^{ùoDï,{6ùAp2ç=±é@]øvi%›ìš‡Ù ˜³4^P|–åŽIîI  ÇF´8ÓaS ÊÄí;·×מ´›¢}–ì]ÝOö«„c“fÍŠzŒƒ@ôP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@É÷¨©ÿ©_÷ÿ¡  Ú—@ÿ‘^/÷_ÿBj·¡ÿÈ-?뤟ú1¨ýP@P@P(¿ãæoøò  ¨b¹‚Wxã•ã8p*}éÙ5 œq@úM¤wZd3Ê÷ #‚IûCŽç°j·o·¾1#9SâÙ¹Î;“@h € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( €#“ïP'ß_SÿR¿ïÿC@´.ÿ"¼_î¿þ„ÔoCÿZ×I?ôcPú( € ( € (  QÇÌßðå@QwÐ MYt{ëÏ-ÇŸ}„ÛOvð8õ­¡Ì·ØL½ i‹þÖÿŒœão¯ûfÿ€ÿ*š€'( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P~­oqpWʼ[tä'æ€3ÿ³nÇ#Vþý/øÐÍ "ør5˨WùŠã?1í@´?ù§ýt“ÿF5_ € ( € ( € ¥ü|ÍÿþT5N:P@P@P@(P@P@ P@P@P@P@P@P@P@P@P@® ( € ( € ( € (  ( € ( \(P@( … ( € ( € ( € ( € ( € ( €#“ï~ˆ~q@5}æÛ°W'‚F@àÐ9¦6¬n%ûwÙÖ8Z°/Çgµlèò,EþëÿèM@ô?ù'ýt“ÿF5_ € ( € ( € Íi„7’ oò«ŒyŒªO‘‡Û×û¦µöO;ûHÏ#ùÒö,_Xí1ÿ<ÏçG±aõ€:šá£Ø±ý`?´—þyøÑìX}cÈ?´‡üò?˜£Ø°úÇiùä1G°búÀ‡SQÖ±äÚc´dþ4{/¬ ýª›±³ŸJ=‹+ë°QW¬d~4{/¬ 50FDdþ4{XûLÏ#ùŠ=‹¬ö˜ÿžGó{XûLÏ#ùŠ=‹¬y ýª›±³ŸLÑìX}cÈ_í1ÿ<æ)û/¬öÿžG󽋬>Áý¦½Ó٣رý`_í1ÿ<çG±aõ€þÓóÈþbbÃëý¦?ç‘üÅŇÖûLÏ#ùŠ=‹¬ö˜ÿžGó{Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀiùä1G±aõ€þÓóÈþbbÃëý¦?ç‘üÅŇÖûLÏ#ùŠ=‹¬ö˜ÿžGó{Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀiùä1G±aõ€þÓóÈþbbÃëý¦?ç‘üÅŇÖûLÏ#ùŠ=‹¬ö˜ÿžGó{Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`C©¯üò?ŇÖ<„]Q¤yÇ\=‹¬>Áý¨™ÆÎ}3G±aõ!´Çüò?˜§ì¾°ÚCþyÌRö,Xòí1ÿ<æ(ö,>±äÚcþyÌQì}`?´Çüò?˜£Ø1}`?´Çüò?˜£Ø0úÀª"òÑ=èö,XòÕcoº™ú=‹¬>Âÿiùä1G±búËì!ÕFZ<\Š=“Ö`]Qec${=‹¬ ý¦?ç‘üÅ/bÃëÿiùä1OذúÀŸÚcþyÌRö,_Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀiùä1G±aõ©ûÉêM?bÇõ!´‡üò?˜£Ø°úÇ¿ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀŸÚcþyÌQì}`?´Çüò?˜£Ø±}`?´×¼Gó§ìXþ°ûº¢7Hóô4½‹¬>ÀuT_¼˜úš=‹¬ 5E=#'ñ¥ìX}`_í1ÿ<æ)ûXí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀÓ«F§ ¸úš=‹¬ 55=#?Å‹ë/°iùä1G±cúÀ¿ÚcþyÌQìX}`Oí1ÿ<æ(ö >°ÚcþyÌQì¾°7ûZ=ÛJ€Þ„ÑìY_X}‡Mð=‹¬> V68UÝô4{Xòý¦?ç‘üÅÅ‹ëý¦?ç‘üÅŇÖûLÏ#ùŠ=‹¬ö˜ÿžGó{Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀiùä1G±aõ€þÓóÈþbbÃëý¦?ç‘üÅŇÖûLÏ#ùŠ=‹¬ö˜ÿžGó{Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀiùä1G±aõ€þÓóÈþbbÃëý¦?ç‘üÅŇÖûLÏ#ùŠ=‹¬ö˜ÿžGó{Xí1ÿ<æ(ö,>°ÚcþyÌQìX}`?´Çüò?˜£Ø°úÀiùä1G±aõ¨«ì4ý‹¬Ôí4½‹¬õ‰nöˆ¤X”uÊÏê(ö,>°Sò®çé?ïÉÿâèö,>°[±™l4¤³$ÈW+»n3“õ÷©•7r¡[™ØÐÑ8ÓWóÒOýՑЋôP@P@P@šŒ‚!<…Y‚…8E$Ÿ ½=jÊìÉ]V6 }’ôdã&Ýø­›1tÑGUº¾MrÆ8aÜŸ¼Ø¸ü£9íøÔTm= §òêjYËu"·Ú­Òt ûóúVŠ÷ÔÆJ)hV˜üAmÈ·„ÍõbJä:—¬#¤ —мž#¶Œ\ΑÉöE| ƒéI¯x¨µÊ6ÐMiu}p%žs}±É!Ç_ ¸ÚRI‹\¸û ßMc²×gózãÜgéO›Nb]5~Rƹ<°Ù˺Ínm¶üù“oÿ^ª{\Šk[Q™lchc¶.ØÉösOtM¬Ì†×n€XňûQ“o‘æ|ØÆsÓ¥fêj‘¯²[–õi¤‹HûS(ŽxJÉ€sŽ@#ò$UÏk“ŠÆŒmæFxÜÕ'tK™Ì%åéñ™äª€Ÿe2ÞY!óÁõö®tß3:W!©¯Í<E¡TupÑ´dÌX`cåZÎM#I6’y4¸ÖhÄb/Ým9Ü®iS»DœZÔÈ(R \å..oß[·C^d©œ+y0ã? úÖ.÷:R\¥ï³ìÛÍ30F’\{ñÅUBi¡žžVÔîàŽY¤¶LÇÁëz`óS ZCª­î¯ï"ב$cþ©e¶.ò1»Üb‡&¦Šä:·ùIæmß´nÛÓ=ñ['sµLA@P@P@P@P@P@õ Z >æU8d‰˜p '¢*È«¥DcÓ衤¸}¹ÆY”ôæ¦Sr-&?S½YmD(MäI»wv¥MêÇQhŒÝ\ì×%V–÷Ê6ûö[“ÁÎ?ÅD·5¥¬M aI¥[‡™%ThÒgË Á'?ŸéWÒ2›M¤cbáí®oo-nd?3J¤C׳œb±ÖÚ›{½ i®Ú­9¶l™M°Ì™åÆ9ÆkIlŒ©ÚìO†/p~Üó®@ &D‘ã?xzÓ†áPÙ+S†»ÿ KÏúäj*|%ÓøÆé¶‘C¢G[£DŠžrTdæ’^èäï#Ÿº“ì‘ù‘]jäJU<Üùm†#©àô“ÜÞ×±Ójvñ\ØL“.å [ã‘[½Žxé2ÿÈ ÓýÏêj`슫ñ¥Ìí¨<Ñ–³gƒÆúÕIêKZ\·T@ŒHR@ÉÇÖ“êb.µvóÍošÏ4Lm|¨ÈÏ\V~Ó[:ijO&«4/d³YûCì`ÏÊ·õ90PNå‰/$‹Zy7#nÎzöúе/x‡t¡m®]ÜC$ãO\,ÁÏšã®8æ¡Nåºj%é’=_JÂ}ÉÔ2îúçúUIÝ\ˆ«;é·jÓàœðd@Ç>½éÇaIjG.¥R´fÖñŠœe`bãŠNV…ÕÉd¼TµIÌ3ØùLX}E>mË©µò]Hb\Æv“™!e™¡;”ãË©•cjcñ ÌFê壷TtVrA$zVi{åÉÞÕ»‚-F=‰tê#|‚Lsèj䮈ƒåe? ‚4T^OïùÒ†ˆ*ë#'Äw°êx–â%KU ¸ffltñÍg7©µ(Ù\éâ8´øæ¦]‹)KÇlV¼ÖF.R£Ó¤bÚíKnxõ8¡Mƒ¦×Qn5‚S[]¾;¤ Ãó9´¦ßR¦§¨È¶0›mðÉs/”¦U*cÏr? —"£™ö<ñ$S¸.$Rþc¬:½.V¶´_i ºÓíwJÚ´Ây“oÈA ž^朠Ǿ…­*K‹]õgyr…K?Þ=¾˜¦›H™%&M«’* KÕ$–·péMM±:Vê:ãQH&hÚÞíÈþ$…˜ÄQ)XJÜInbºÓçvóíÐ)Éu1°ê3I½GÞ±…¡_<ñC-К+¤Ü›¥ Ñœp§¦+8;3j‘¼likvÞ}­æÌÜ ˆW~OMõ\–·"›ÒƤ‘$ð´n2¬ ‘ìx5vº2½¤cøz·½Õ"‰v¢J AƒQMY³ZŽéW7ém&Æ‚æCŒæ(™‡æ*œ¬DaqÖ÷©pŽÂ)ãÛ‰"*OÐw¦ž‚”ÊãU˜²^ŒúÛ¿øRRÔ§MX±wz¶¥CAq&áœÅ6?*¬Lc}Þñn#wXg@½D‘•'èZjW A"Õ£fZ^Œœsnà*Jw)Òk©5Ýê[0 Ä›‡X¢füñNR°£ÂÚí' D7 ·´‘2“ôÍ%&ÂPh„êÑ© Ú^ñénçúRu¤ßR{«ÅµÙºäÝŸõQÇ×NVb˜–·‹u¿l3Ç·þzÆS?LÒRl%²+Z0Ä}’÷Žÿg𣘯gerÍÕÒÛ"1†ywvŽ"ÄqÜ nZÝ…¥â\î+ñ•ÿž±ÏÓ4“¸åM¦@uhÃûîzqnØüñCzÙévK=êÁnÐ\8qœGb½:ã§ZnM BîÂÚß%ÔŒ‚ ˆÀ̱­ lN›DÚ±ä²_gÔ[¿øTó»•ìÝ·&žù Š'ò.IÎ"HúUÌJƒØ-o–éÊ¥½ÌeFs,Lƒó4'qÊ›DoªF’2[ÂT‘•·bãŠNm RërY¯+h¦0\0“øV&,¼g‘Ú››±<Šãm¯ã¸“`·º‚s$,£õ¥±Êdšª$ކÒðí8ÊÀÄÈQÌ5NëBF¿UµYͽÉV8Ø!mï$uíO›A{7q-õ¸™c[{¤Î~i!eQøš®‚C$ÔãI ›KÆ#ºÛ±ž*e6‚4Û&7h-àCpC‰‹Ã­>vŽåq¨Ç;¤bÚí eùžU÷'ЉɵcXS³¹ÑèŸò _úé'þ†ÕÊ÷:úè € ( € ( €1îÿÖKÿ­©Ø…©WÒºŽRŽ£§µëÁ,W ÐnØàg±žµDâ層%Ë£Ø,4ùmYåžòK™\Kp‚ˆÅ§«¤žÈmÂã>ÚM{ÃOݰjgÛ%Šd ¸‹…‘FxôÁ¢poTÂKFˆ£Òš ˆ¾ÒÍ<Å‹LWžqž:v4½›¶¬n¢¾Â étÇ‘‡Ø:œc4r;rÜ=¢ææ¶¡¨iWWÛÓûEã…Ô+F#N}é¸I«\H­lIk§ÝÁm,'PwbFæ06×ëÅ ]AÎ-ÞÅ3áÙšŸÚ$¿™æ<±ž˜úÔû7r•EØ»¨[I>˜¶ŒæWvEwÆ2³§ëU.ÄEësAT(FàU- å{‹“šc»°u IX(ZP¦ ¤@ô¢Ã»F~©§É|`1\˜ /¿…ݓڦPo©Qš]Î’âê+˜nž)°¢b"\zŠ—2•Ef¬jg“Žõ¢Ks;ß`''&˜¬€( € `PH€ ( € `€( € (¦@ÞÂn,§…p ‘²‚}Æ)KTTtw(ÚEtúaµG{g„ˆƒ”Ï ÈÏPjReI«Ý•£Ðïb¸’tÕ¤ó$Æóä¯ÍŽ•*œ“Ñ—*jÖ&ºÒ.&Ôžö-AàvP€ÁÀü}óC¦ßQF¬R³D–:\–ÍróÝ5Ä“ìË”sÛñ¢0}E*±èŠ‘xuÖ8íçÔ$–Ñp‡nêzçÔÒämÚãöª×H¹¨éoyqð]5´«*•@zàwöÍT û“‰n‰4Í5lFiZi¥9y¿áÚœU…*œÚX½TAKYåÑîÒ5.ÍTdŸÂ¦Z¢éé!šlq£¬f9m¥Xü¯Þ. c8úÿ*Q»Vì¥r(´†}>[KË—¸WmÊv…Úy?'4½›î5Q-R%ŸÍ´Ò™$2ÞHr¤¢Ç'Ž*ì-ÝÃAâÑ­£‘ :® ‘‚94 ´ s\zXºêr]ý¦B¯ŒDzŒSåiÞàæšµ‹µFb8%H}(~CR]Qk¢Ý[Þ›íG"GV•|°7ãµf Ó4•XµkõM?íéYŒ2ÂáÑÀéU(ó+ ¨½Š°h÷Ý­Ôš‹ÈÁHl ç‚Ó©öo¹^Ò;X-tYmôÛ«CzÌg9 唞¼{ЩµÔDúÍ¥h~To%Ä‘€j ãpíô¦Õ£`OšW/ÙÀ-m!€ yhòQZ-É©ØZ…2H¢ÚhÝÌ1¡Þ­Ô· «:É(ˆ‰yµgìÝïsUR6µ‰íô«‹{aŠùIJNei¼°O#‘Š9%ÜN¤o°iZLúkm7Í,Ÿ,Æ'œæœa%» M>ªhq_ƱÆRßûåbR[Óš%Ná ¶4-`û=¬PîݱBçÏáV•‘œŸ3% AL ×¶pß[´.T÷î§ÔTÉ&8Ë”¡‹6ø…Ö£-Ä0°uhŽ™5õ4ö±[!’h·-z×1êNŒOËû vŒðühöo¸ý¬{–pË '¸k‡îì¸Ï>ŸJ¸é¹œ¤žÈŸðÉ V zµ[/í|„¸hC±QœOåIÆêÅÆI=Jwš\ÛÀ‘\$Ý!P\ñÏ;Ô{'ܵY_an´{ËŸñ6}¨TãËæ^ÿžhp—qª‘["Ìvwkdð¶ í)l¬Æ1=1T¡+nCœo±NßD¼‚y%U}Ò°i3 üØ¥ÈÓ½Êu"Õ’6€#©ÐÕ£qTšA¨P…Qaj¾ôX5 P ‹¡Ša¨iº c `ŨP…¨R 5 ,…¦@+¡@¬Ã­Q` `G7ú±þòÿ1YÔøY¥?‰ú'üƒWþºKÿ£¹ßпH€ ( € ( € Íkx§¸—ÍMØÛÜŽÔÓka8§¸¿ÙÖ¿óËÿ4ùäO³‰0Óm1þ«ÿ4sÈ9"/öm§üòÿÇøÑÌÇÈ»öm§üòÿÇøÑÏ!rD?³m?ç—þ<ÆŽf>EØ?³m?ç—þ<ÆŽf‹°fÚÏ/üxÿÌ9#Ø?³m?ç—þ<ÆŽgÜ\‘ìÙ¶ŸóËÿ?ãG3DÙ¶ŸóÇÿ4sÈ9"ú ý›iÿ<¿ñãG;H‡öm§üòÿÇòHöìÛOùåÿñ£žAìâÙ¶ŸóËÿ?ãG<ƒÙÄ?³m?ç—þ<ÆŽy³ˆfÚÏ/üxÿògþÍ´ÿž_øñÿ9äÎ!ý›iÿ<¿ñãþ4sÈ=œEþÍ´ÿž_øñÿ9¤‘ìÛOùãÿ9˜ù#Ø?³m?ç—þ<ÆŽy${öm§üòÿÇøÑÏ!rG°ŸÙ¶ŸóËÿ?ãG<ƒÙÄ?³m?ç—þ<ÆŽy³ˆfÚÏ/üxÿògþÍ´ÿž_øñÿ9äÎ!ý›iÿ<¿ñãþ4sÈ=œCû6ÓþyãÇühç{8‡öm§üòÿÇøÑÏ öqìÛOùåÿñ£žAìâÙ¶ŸóËÿ?ãG<ƒÙÄ?³m?ç—þ<ÆŽy³ˆfÚÏ/üxÿògþÍ´ÿž_øñÿ9äÎ!ý›iÿ<¿ñãþ4sÈ=œCû6ÓþyãÇühç{8‡öm§üòÿÇøÑÏ öqìÛOùåÿñ£žAìâÙ¶ŸóËÿ?ãG<ƒÙÄ?³m?ç—þ<ÆŽy³ˆfÚÏ/üxÿògþÍ´ÿž_øñÿ9äÎ!ý›iÿ<¿ñãþ4sÈ=œCû6ÓþyãÇühç{8‡öm§üòÿÇøÑÏ öqû6ÓþxÿãÆŽy’=ƒû6ÓþyãÇühæaÉ?³m?ç—þãä]ƒû6ÓþxÿãÆŽi$Cû6ÓþxÿãÆŽy ’"fÚÏ/üxÿògþÍ´ÿž_øñÿ9äÎ"ÿfÚÏ/üxÿÌ|‹°fÚÏ/üxÿϸ¹#Ø?³m?ç—þ<ÆŽgÜ9#Ø?³m?ç—þ<ÆŽf>EØ?³m?çþHöìÛOùåÿñ£™‡${öm§üòÿÇ.gÜ9#ØOìÛOùåÿ|ì\‘ìÙ¶ŸóËÿ4sÈ=œCû6ÓþyãÇühç{8‡öm§üñÿÇòHöìÛOùãÿ9ä‘ìÙ¶ŸóËÿ?ãG<ƒÙÄ?³m?çþHöìÛOùãÿ9ä.HöìÛOùåÿñ£žAìâÙ¶ŸóÇÿ4sÈ9#Ø?³m?çþfÿ€ÿ*š€'( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ŽO½@Ÿ|P~³mspȼKu Îè÷dýr=è,i×Ùñ6ƒþüõèCB|5«—P¯óÛŸ™»P­þAiÿ]$ÿÑ@è € ( € ( €(Æ@¹›?ìÿ*›põ  à u 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õ ¤uÝ×µ":îÐ^½«YÙyqO.×fÈIíì=è jÂ$g¾y¶UYÈ=½áéü-SVNßí5]пäŸõÒ_ýÔ~€ ( € ( € (“é6nÅ™f$ÿÓy?øªoö5—÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñTcXÿr_ûÿ'ÿ@ö5÷%ÿ¿òñT¿ØÖ_Ü—þÿÉÿÅPcYr_ûÿ'ÿ@ö5–1²\uÿ_'ÿ@ö5÷%ÿ¿òñTcYr^˜ÿ_'ÿ@­­¢´€C•Œ@,OS“Éç©  h € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( € ( ÿÙess-17.11/doc/ess-demo.pdf0000644005071500004540000054104513202324173012225 00000000000000%PDF-1.3 %Çì¢ 5 0 obj <> stream xœ3Ð3T0A(œËUÈUd˜YèX(蚘›êEL , *ôƒÌ\ò¹h Œendstream endobj 6 0 obj 55 endobj 9 0 obj <> endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <> >> stream xœì|Å·Çgwï½)$$@!j€Ò$t¤(Ò‘"Øhн‹Š T&"R¤ (¤w‘.ÍP!!Fz/·ìîûíN²^C‘ò”ó{¼¸wwöÌÌÙ}ïó=³gf„ؘdkžMUEI²,›$A`AÉŠL“˜& 3ã@8TDYeL˜ 2‡ I$‰D"‘H¤{R‚+2;S]UÅ©€,†U…¹ªL¼iã9ºq f‹yÚ)Å]U\U)KÕH\Ô±\Ô€<®š˜âvµQ%1M5¥(6?GnÑ%cÝæï„K‘ñ’$º¹¹šL’ìp0&Ê 8T Þ¥»î«ZgÐ1íªª ú˜ ª‚¤èQZPöV‰ Þ™6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2x?¼6ÿWEæ€Ê@mÕ $Ö0Xtèãà·`Ì[P5(æ›Þª‹ªšѦ¬ÿ‹ÉUØQìj)fIÌÌiÌá+ÈÞYyißÎøXˆ¸àåíj²Ø22“Y³>\/‹Š« —*°˜ß ˜VÅœü*U𽩠n&KU»“Ý‚î:÷œ Þ‘6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2x?¼6ÿgU ßËÚ¼ ë£á8/Þ|¸³"PZöÔÐZÌÕ‰_TU“¢UÄ [Ôq[cu½ÀÕrc¢UÓ¹4Sʤe$Œ?JˆK,SÎ=+':"ò¬ì°Š7SÝTtƒñèÿœB!ˆõÞJ‚" A†Õœû_" ÉàbðvØ$ƒw ÁÛa“ Þo‡M2x?¼6Éàÿ¿AA±0úµ©AÛ‚ªLW-7ßTA°êCë@q³Žû¹z8!j)C†qÕTisö"Œ0OUU–!I¢ ˆÙÙÉóç/"Î'”)ç–‘sY=ÚÊTo°¾jÊq9ª–ǯG-‚¤ÈZH^ Zµ¢( ·ªªÚE&ËŠ¬ˆ®%OæùÎ.qÑ’¼ –¸è}hð?¼ó –¸è}hð?¼ –¸è}hð?¼ –¸è}hð?¼ –¸èhPmk¸ï`zVÄL&ÑE–™],‚¼óïPAÑš´#Ü,‰v»C‹Hô€ï°¯ã¾ YŽ,‹‹Yvh´DÅ&hŸxtaÒ†ãy~þ½ZsE6 ÅÁÌfÙ½TnóVUó¬ñ ç/.…'–ö6gæ$†‡%îØ7õ뭪२Y­}.‚¨(ZÐF7¹8TU`ª ˜DW»,ëm•Ñ8­=wÿîý:s¼6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2x?¼6ÿgÕü8@[áFKµÇ¡"K’`UÌEƪ*ëæt`g‚ȇj5Knàò¢jÍVSJi#új®‹‹« gf¹¢ä‰Ú :V½e<5Zþ©G–›ô6$»š»ì¨SËcô¸þ®¥ÒÌ›'\¿âémÉÌN Ëܾ)å›o6«ªä/—)£øUðö¯TÁl–v1)!7,,Æn-®‚ÃaÎÉ3‹bYYqWEUÐxQHÓæ.H$‰D"‘H÷¢´”}-™ÅUPÍ"SË•U[µ®æp¤ –¢“ydYõ¬~ðxLLlLÌåV­ÚÚív“Iºº°"¨ùá„`W{lLÚ©ãQ"óñ,íhÙ²‰h²J&›Ê¬z8îçר7ŸÛ-KJjòþ½g%µB­@×±“ú¸¸&/øyžíéeÉÈI½p>kÛÆ¤ÉSVúø¹·hWÆß/öá65Ú>Ô²´Wk.;vøÂº5»c¢¼|MV«Kt”zåŠË•sz†ÄD!¨Ò~˳ÞH$‰D"‘H¤;Dª(kyóŠÓp?«MÛò¶½¡ VI)zª.@\E-÷Ýfÿé§ù»÷ì^³æ7›ÍÁ{®*,)ª¶&m¹9¹Ë—í}ãõ‰Rõ¶ík¯Xñ¹ iƒþ Ô‚ÙºùFE•$-;Èfµ­ú}ÇóC' JP`uïÉÓž6™’Λ/\¾îYÚ+3;3üB®­)ã&,ìֳᓞ2‰qrN‚ÕšâYÊ¥T©rªÝÍÃÃG2+Vñ¨I,“šRêÈÑ‹7!>~æ¬Yv»}ñâ…ññ‰éii.\àüê?…-8ãê&Ö¼6þÊ¿²Úµ Z¾îݤäxÅRÍ´¹»î²*‹ºe‡Ã“٠㉉‰s.\´ð *7©SÛ¤þ®æÄùó—.ñôðËÊÊ Þ¾!yÊ”5•ª)­:ø;äì+±’“BÛ·kìb¾[ëÔ®\Õ§|ùL‹TÞbö©\Ã'-3nõª#«I9´_ÊSJ j9QˆT“ÀräÈììlQ/&ƒI™½uË&_Žžœ˜š°tùo«~ 3±vmÛÔ_±q`RâÅäXkVNü¥K¢ä]µš¿YÛWÈÈȈ‰‰qss«Q£Æ•+W6nÜöóüƒ"k^#°âד/eŽþùç|Ü÷ÍÊÎîoý={ú”½²)ÓlÉ´ÉIžYõêy?PÏG•sU$ÑjÏ)ã`õ*S¶Gß¶¾’‹¥üÙ“®Ï<ñƒÕRo“)Vu˜ÌÌO2Úл·ÊËV5èß»© ÄŸgUuÈ áˆª¨yjþz¢’ÀL*¢!OR=Ü}ú—Y°ô•~½~ز9•i¹J6ѤÍLwU5ƒìµ™Âš}Id™UÍ „pGU½»"Y¬ŠÝ“‰vA²«¶òúÒ¢|ê¦(™þ£Z]¤R6ªñ£IyzÝ'‘H$‰D"ýK×Àý˜Øøân„ÔÔÔÅ‹s܈ˆØµkׇ~X¹reEQøð?$;$Qtø–÷üjì·± 1¿­Z¹fE„I}¨M›º+6JLˆHˆÊ‰‹¿ðõ”I©©Ž>^§v-DkÖ¬Ù°aCß¾} ¿ióŽùWã¾–ÌãY.3'õBDäößó&}PßiK„ÌÒ¥lZ& ªZÞÇ”“g•L¦œÜìÔ„¨Ð3Qž¥Ë7x°–"åT«ÚÔ‚?ùð++/¨¦ò~©•|ª)Ž2&‹5>)9îJž¬äúúZ*•±Ye[žËùˆ(&˜ü*Šþ~¥Õ™˜ž*+Ú74’È<–RÎ/µ¢¯EôhÓÞsò7/<ÖuÎÖm«Tóöòvu8’IHŒOKŒ³ûUt¯PAV®.®»#ƒ)Þ¢(‡‡Gdfù±5˜‡§$Û¼%K^BBlb¬»Ê\uˆ—µÕR…Ìšµ*»•b’ \¼›•PÁUÕr ºÃ-·g&:‰D"‘H$é®Õ5p?6.áZwð|gÜîÏž=ûÓO?õððвÓyIÅ”––¸tÉÜ>½bõêU+.HjÛ6­ë­Þ<$)ébbT®]N‹¸xáÛoç–övnèýû÷¯]»¶K—.`}OOÏ„„„Õk6,^üWaÜ ÇåŒÜİÈÐí›2¿™ð—C4«ZÞ½dã«TËz¤³ÕªîvN¹„…OO»˜’˜›áPÍͽ܅ó9) þ¹Ùì‚£¼¯åËñ]«U.údT³Öu.ÅÄN™´Òaw}ëÞ êWHHH-íá=nÜogÏEŽý꙲e_ߊÇþJœ5mÛÙ³I*ÁñŠìR+ÈôöGm›6®shwT¥*¥zt¯Õ·ç÷Š$¾=¢§Ýž{áü•fÍëF\ŒÿfÂÊN~4ª{dXnrrRp«€¿ÿJñpÿý÷=3§¨Q«üûŸôpØÕ°3éÍZDDFNŸ²ëèÑ8}é"ÙdÎëÕ«ÅûôŠŽ ¬¼ggÄ÷3¶„_HeÌEÑp_¥L‰D"‘H$Ra]{t_Eî<9G֬笿iiiÀ}XºtéÅ‹wìØñÓO?Mœ8ÑÅÅŰ­*æÔÔøŸçÍ|ÿ½Ïãb—¯Zµjù‰=ôP›z«6NL¸9Û¡¤ÃjttúìŸf=r¸R¥J½zõî[,OOO_»nÓ‚‡ ã~tX’giôÜä°Ë![7¦M™x@‘$EuHŠ·¤føUºÒï‰ÀªÕܘê“uð`Hf²Åŵtèù WKé2å’SY饥¬ÀLMƒ+mÝýê?Oœ>‘ܦCPƒ&•§}}ì÷Õ'G|Ø+0P\¿þÏìLKèÙ´£Ç"fÎz!×}&ôBn–ûö-g|Ë×hÛ¡Ž"ä8x¼j5Éß<³bñÙ—‡~×½[ƒë^ëÛû‹¡/öïÞ»þÖM‡…¦µl]ëÁàŠ_µ777ùËq}æ}ÿ÷þ;\ôΘO6vêØ¢Uíýö}²ÉãO7xûµïý´ï³q‡è6yìÁÏF/Ó&«²«ÙúôÀG?ø°ó῎^ŒLÈÉ)F†…fÈ*p_qšÑK"‘H$‰D"èÚ¹ûœì%I²Z­ü@ËI‘$p¿ÉdJMM]´hÇ}ž»ÜŸ0a‚««ë?ÆUKrrpÄ{£ãuÜ_qÁ¬¶k£áþ ÄÄ‹ —sd5]”„ôteÊÔ‰ìÞU³fÍÁƒ·oßuøcbb6oÙYD2Otø%Oϲ鹩a‘a[6fN™xP11Uµ™ÔrŠ’Z§vλ#:Z\2öR{vŸÞ¾íDrBeAµØYž*Ú&3-ó§cî‚¢´nSuýÖ—ölÿûä¡UÌ]l{w%ìÜq¢y‹r|ôdje¿übɦ'Ž2­ZûÏš=,ätÄ7“—ž8šØ©S߯MýMîY÷Ÿ¬T~ò”§öÚ°ÙÝ»Öûuí°þýG>÷âÀn½êmZ{éØÁ‹{–M‰=°;þÁàÚŸ}Õõ—Ÿ.í;°}ö‚ac>ÞöhÏšÍ[ÔÔΓCZ<Ö¯ÑÛ/-^4ï¯Ñ_õ{kD»i“Ž|4r9S\´ýÀ„,‹%mÈàGßñØ#a&-<Ú*Èþvmu UŸ$ è¸OÄO"‘H$‰D*еq(Ïá¾`ƒ[…C??æÉ<7û ËÌÌL[¼xí±“GZ4  ÉËË8p`›6m@ü999+V®+"™'úâYOOßôœŒóQ[7ä~=ù°* Új6Ї›)»~£ÜQŸõ2›r\]*/[²ç—Å;­öÚÚÂ5‚¶0(:¦âŸ(ŠI­Z¬Ýôò¨¿_ôã‘ÖmÚ5itàÀE‡œÓá‘÷øà¦u+Wª3~ìú¿þºÔ@S÷ÒIýúu>b›½†1W!.îÊîÝ»]f}YLooïöíÛ{yyá8##cÑ¢Eªª.Y²¸¿cÇŽü±î Ì’”ÿó¼ïG¼ÿ)pÿ·UkÖ,7©mÛ¶©·róÄĈ„¨ŒäÔ˜åËÛ±ýà3ƒ<ֳǙ3gæÎ›žž>lذ-Z¤¥¥­ÿ}ó‚ù‡DÖ¢f ÿäI»[€û û¡žžÒ³³Î_ŒÜº1ýëIûUÉE_¥ÞͳLLçî CÛ»¥½¼kÍø~ãŸ÷ Š¿¢MxEä"ªÚ`¸ÄÂM,¯z ·Y?KŒüëÈ©î]+åâþÕØµ6›íýúzxg„]ˆhüÝ7›öî ýáÇWÂ#Cê× 9I?~ýÞ?ΈbY¦ª¢ÿHûF|ÒÏ­”²|ÅÚúÔxfPûÇ›XÉ¿Ñðž8uòï¿;?ÚÑ$”þfâ¦ù~ùÕ£?ÍÙwôÈÉ3_;vA—n-[¶¬óTßÙÞe܆¿ßçÌ™˜ÃCíܾ\Y÷1_,‹ILmÙ¢ýŸ{ÿ:>ôµ×¾öFÓ ›ÿjóPP\¬cô¨…'Ž^To½GV}áN¦­å‹øU2xç¼6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2øÿoPg`ß É$°6-½¶l5òò‘¸¤ŒÓgß}ç=‡C1êñ«X~ü„ñ5srs²2³.Z¨áþâ%/]ܾ}ûäÉ“»wïn2™œâ”­yjø¹è/Æ}uå¯Ëwm\Å„&mZÖY»é•˜¤3II—®Äd®]±ÝÝÝåñ'ºXL&—ãÇïÚ¹«n½º]:wILLܰeây‡Möö5kTÿu_·Ë æ÷#"==Ë¥gg‡E^ز)qÊä?Ѥ*SÌ•R{÷u¼wÁ#%]YòëÍ#3südETóçç1Ðß"º:XòCª?þd{IDæ²~Ý¡›O"Âiݦaÿ§š›L±cá?ÿ´VP¼»v­ß£{ &ˆ‹~Ùóçþã‚Æú®ªÊ\„tUÍhÕºÞS•,6Õ¨ìÇ6„œŠ8¤{“¦fAUÄõ«ìÜ~⑇›ôê|`ÿß‘±Ï<Ýgý†mµƒªÔ©SsÎŒgÏ4¸O“¦šUiú#[·íi÷H«~}^ºdßý‡Ì.ò‹¯ô«YË×bvý~榑Šâ!2/ý):Xþf[âö’‘AúÿÈdðN²IÃ&¼ Þ›dð1(ìٚס­ß¦/†GON°Å_IZ²d‰(Jv»M ¨§gé'Ÿ|¢ti/UUÒÒÒ/^Œ,Züóň¨ãÇO,_þ›,+ÎÛëªb6äUë÷ëß-!-æ·å{V,» ²úÚÔýmí›Iiç⮜“m¥ÙÃld{¶Ä<øÝ¢¨o>Ë„ôô´åëW/Z°ß"´«]³â—“ºº”ŠXøó\!:<ÚÓ£lzN&pëæø)“v+’¨(¢¨¸UôÉèÛß§W·Fžî¥Â/F®ßðסƒ™1É•Љ)¼qÆø·¶µ@Y3T–£5]•AûØ!0}ã[!OQ­¢ ©J)•I&Á&1‡ŒÞ‹Zx¤ ú.À*b WI[3W²µÝÉô¯dÅd6y*J“ªbU“ªZøÆ½¨K`-¯ˆ!ÄPѪ™TË1AÛ½KÕ¨]…RZº3+,EUQÊÝ$¹8”lÉì°ÛÓr‚‡(XdšàÊ >Vèéû´'‰D"‘H$É’ˆÚ&º¶V-}W¯yýäÉ©qé.fW௪2OÜWTæö¬yÖå+–»¸¸ÌþqÎÑÃeddK÷¦E³U»:,L°ed§oØ|dͪ0)¨uËšËW©×Øf Ün·U-f‹h³;b㬇'ŠÌ¿^]ßgŸïzðÈj‡œ¡hP¹kK{ 9‚dýg‹.Y–$ §ãS¬ìH°ˆ«Wó™øÍÓ&KòŸ–Q‘ç½½+¦¤¥‡_ŒÜ±9}ÂÄ]’è!ªîyj¶Å-ÊÍ3®r%¯Õ}™))äïȸKž6[`þ.Tª˜?®(ªhÓ¾khÓvMÚ^·š#Ú%íŒTç$ë¼.kãùZê¿v»š0hꪔ¥ÇLL7%i¦ðOÌcBžfAû)å[ÖRnDmÒð?-Ñb†‚ÛùqÁ'­j’þñÅh¹VÂEo›M›j-p›ýk€Âá>‰D"‘H$ÉEZ›´ SSvAe‰*èô¤ ™4ûÚØ3(Ô¤2OÆ*B9•e05™±&èkɨ<ŦãñÕ’VͤV ªãýÅø>.®i çÍ.^<]¶L¥Ì¬ô3¡gÿØ‘5aüvI(¥¨&scR.STÙ.Y*»$™|{MEñR™è”·‰z³²õ3¦‚mä‚8T°O-?¯}ÐÏ‹ÆÊT…¥kü¯òòü/þYõa{Éi©‘ÕüÎiXjÁUVPبTµ'„ß<I0 *ùÿDù­%‘H$‰D"‘ò%2}ÀÚªèl)i™7©ŒåZ…Òz.ÉMIµÔ‘Ù%UÖV½W]T-ÏÜÂ;Sõu#‡¤Å€e-QFÕF½ Ë$Ù™‚ón5Ù„©}%ó•…ó.F„y{ùæä¥=zìHί‹BÑ¡¥µÈ¾ âÉÆT7AÈ‘ÌÑŠÍU°×PhÑŒßkÆÎAí²`ä3Á€`ÕÆæµ3Æy-TÐ±šƒ¸ äŸå ÚX»ªƒ~~"S~ý·nD  Œü¤ê”dÏ¿°8ò¿'ðè‡ @a¥”nÁš_@û abb®*æ ù‹úgˆz‰D"‘H$I“¨HZVº”§ €[TÌ’j™5¸Ó ¸kD‡Ä²ûÚTUfÑæœŠª¶t 3i©1"˜6OD¤ W]e} »p ¥‘I’PªrUÇs/55™²Î[$\ºíáágK ?Ìe»®=ÕÕMR@È,WÑBOA´11F”K‰re»%^õ,ÕX¸Á$É®úòDV>”®§Ùpàf:mÛóI]?¯h©ö*O쌿Z?Í_(„¾G|c4òæF=AȬãõ–ð@BUõµAõ傜×÷‚¾ÒŽâ¦Ý.äiv´j¸¯j³ `ÃE³‰3Zn‘M/ 걉D"‘H$‰¤IÒpSVD ÷Å,Ên&maÙ¦Zo>/DQÜø’)©ÜA˲"ØÁ,0W¦-ŒéDD « œíW±«y¢äaÏs5›2]Ý3­YÊ‚× ‘‘—<=s—ò|}m^‚Cv˜L’"ËÚ¼¶f×'æ:D‘oB¦M;²þ³Ð(¾=äÿ—Ý”èpÈ&IÃ}=$RõùÒ¿¿èFTm 4A„¢¢õ_Ä›|lÚü Ô+Š‚>G[ÛEÙlVueTœW“¾éšÀgx =³7nR¨µŠ’¶Ü‘P°ª+oßÂXêµDm:¹6¿œw£ä5 ù±—v/ŒËÚ¤o}Ö¹öpó JzE½ Z]úw‘ªÿ,ißt‹ú ­wÚlxÕi¾ Bbü_ ­*áýÔ«æWýO"‘H$‰TRq¢ÉÇ]mú¨>ÙVU ãèIŸª­=cdªÈ"èÃë)2ùm¹FYÁ¤V&[ól?Ï[ÜôôôÌÉɹpá¿Êê@VˆM ÛÓ/q\+)¥ܨÃý?Æ9‡9×høO–™>7Ù°Ã'D})¾IF3n­Ð¦3.· çdžø”íB-ù¯½.RªUªŽ¯Ëм‘Ý7 'œ«cº7œO2§7Íh’Z‚hÇxå q¼3î;ïbí ú·ã)“H$‰D"ÝiÊËËûù矯‰ûÈÌf3_ųHú´Ûínnnøû_ù‰/TÄYœŸáƒÍü'_HЬVB™L&›Íf¬|„.à'·yua”᪠EëqÂêÈu¥èëû¥ÁK¼;νfŠFæææjËŽêË6Ý*å@¬V+þò“Æc5ÖlºúFgDþO2ìW†²X,èÿÉ/Á|i¦÷;‡ƒ~ÉœøW·™¿Bfýs º³&}Œ¿$±‰D"‘H$Ò= ëà>Óù ,•ðûï¿£4  Ü ÄOKKóññ‰‰‰éÔ©GI>ˆÎÙëº8uâĉƒÏ­Zµjܸ1¿Äá;<<üòåËÕ«WGEMš41S¼q޶›6mB§xÉ6mÚ4jÔÈP7†™9éòEOwîÜYµjÕ   ôŽ¡Ñ0^†ßÅkçƒÊ%Ì A]»v;wŽ×Þ¹s瀀chŸ›âýBÕÛ·o¯]»v`` ÚÓ¢E wwwÈŠà@Xæô£xosû«W¯Ž‹‹ã½óòòêÕ«—‡‡ g Ç·ðG û©©©û÷ïÇ#.Uª”ófÅC9nOOOß¼y3nçåáÞ.]º ÙQQQ8/O·nÝðâájVVÖ† RRRêÖ­Û±cÇkÅ–…„×õÒ¥K<ò:ÉÉÉx£P‹ñ*rÏà*üã­[·æÝ7¢©ø*E"‘H$‰té:¸o¤Xœ9sfΜ9 4‚“@ÏÀ¦ŒŒ ÀܱcÇ>ýôS^˜ƒc ³¢.\ˆzA»|ðÁx€„sôܸqã_ý5hÐ 4 ŒDaŽÅ…2a q`ݺuktt4"c躱.-‹½ Tàô¼mÛ¶zõêùûûïÝ»·ª.V|bð"7bÐ?gú¸2ïoñÝ„…±cÇ‚ª«U«Sàì=zÀÛŒò<˜Z¿~=ü‰àG|…b...F~ GmÞ*V@ðF>L1>Ç]üCÇ–-[BBBŽ=Ú¡C???P2 Þ5ÃQF" ?‰ž"âúꫯðˆ}}} ö_+Ìàêˆ?ÿüóZµj•-[Å*Uª„ÑA`½>á %%%ñÇZ¥Jœ,É÷ uGŽ5jªƒMônîܹh-"ãAó6¯Y³æìÙ³ï¿ÿ>w&÷¿TÂЂD"‘H$énÔõqŸi•¶oßþúë¯s䤋cê©S§@Q`kƒ8‹ÉqÖâÅ‹›5kÆô\N]œÈE]€¹ƒ~ñÅ0ˆ*úõë×®];>ð_¤A|?ú裾}û¶jÕŠœ>}ºÏO<ÁQóóæ½ùæ›Ã† kÑ¢P\as°"; ³‚œ{žcŒp_IQÚóÐCuíÚÇ“&M2dH¹råxº·ÆÃ›áÇ0 eË–ÖÎ;#þ1ÆÝÑ<*#ÇyÎß¶T)²ü‘qŽÇó:uê„ Ä(9ûn±Z­Ü9<û·DDD|÷Ýw#GެP¡ÿr‚f;ϲ¸V¥ û1cƼúê«AAA¬ ûûï¿çÍ›7eÊØAÝ»wƒì³³³Qòã?®\¹rXXØ¥K—Ú·oÏDñ¾E³ÿ~þ† IçÎûá‡Æ0ÆùA£jÄxQ?ùäãiâ*^ÚN ‘H$‰DºKuÜ7ÆzCCCAf¯¼ò +˜? ,ËÌÌLLL}ÂÃÃCBBpœ‡` lÙ²o¿ývÍš5 DEEùë:yò$MªQ£F£FŽ;V©R¥3gΤ§§ã–òåË£ !ÑÑÑÁÁÁUªT¹.)¢ÀgŸ}ˆî£åß|óÍàÁƒ=<û,à{ß¾}nnnmÚ´ñòòBПà~þã?àðÌÕ“qÅÉxÐß~ûíØ±cK—.ͽ›› ;x”Ü'0›––¶k×.Ð0ªC|•0yòdtЦ§]Áh[1™ýx °ˆë­·Ôñ¬}4îÅ£ÄyÐ< ¢/ðø~âĉ~øaÅŠyê" WW×ë~9îãYŒ=š¿?xmà:TpWJJÊ¡C‡HÔªU«Aƒ7nÄ£‡o8À#D\xQKR ‰D"‘H$ÒÝ«ëçî3XÏ;Y‚¦¸eË–ÅÅÅÕ©S@üÜsÏíÙ³'&&”â</FÀ}Ð*h xð:ƒÃЀÔÞÞÞ]ºtÁIÀ1@pРA7F£‹4näÆüqÀO š6mè¹ÿþ¨ ‹ö£XÕªUÁ²ãÆCǸtéÒ¶mÛ"@EÀkÜÈqð÷ßG@à[ð€c||<,à4»øn¢.Ô‚Æ£^˜EØ€¶ÁÕ_|ñÅûï¿#p^~ùåy󿡵/¼ðš5k@ç/½ôX( "Çy¸ôÁüòË/ѰaÆgá(\ª[·.\×]ktßÙ9ðäŒ3Àî0‚G O"HÃÃå.mwëÖ ”ÌÃ- pPP:8}úô÷Þ{ïœ.4¬zõê:u*S¦Ìµ²ªøÄ\¼ˆ»Î!„ðóóãŸqð’À¥8ƒêóà*J"0¸ã b„sxøÌÝëæØlÞ¼yÅŠ½{÷æ_0bccOŸ> oóÌ%¸ab!¼çÏŸ?uêÚ'7iÒ}dzFïp‰çD_‰D"‘H$Ò]ªá>qŸ~÷ÝwqpæÌ˜íСÑ#G*W®Ìç#˜‚qÔëïïσ%ô}ÄÉ·ß~Õ¡;#FŒ€å  &iÞ¼ù„ @ð¨ð6à855hûúë¯ÏŸ?*Eô…à‘GÙ¿? »¹¹]×á•.]ºiÓ¦ˆaÜÝÝbÁáø‹“ˆ²à¼š×Å}¼!?üðCË–-y~nG/¾ýö[pÿW_}Õ«W/¸åÏ?ÿDƒ'ÜÇ+±{÷î‘#G"’ù믿ðê3q ð“H$‰DºWõphõÆo+c¸dnN™2¥^½z|æ(X'®_÷Ò¥KaíÚµ«ñ,jàˆÍ\·oßÎׄîÿý÷ß'8ÁŸÕÍqØ jd:zΚ5ËÀýÌÌLk¾÷Þ{ çï¿ÿþ…^hÔ¨-9qâD```ïÞ½ÑD#éééèEçÎÑM~ËСC7nü믿¢z 6-~L x ®íÙ³'¬¯`  Ÿ}öÙ|P¥JDŸ|ò ,£Fôñ¡‡?~|ÇŽáœ>ú¨jÕª|©S@3º–EûkÖ¬ D…ƒøùâ6%ŸvÆ}oooÀ8`!MµjÕxV_‡çÒ๠2œ:u*b 7+ÈÛ¹sçž={F….K8kÓ¦M và;OæÐÃ'}„1ü14p¾Y³fhÞm„»víB—Qa^}±¼m×õ‰D"‘H$Òݨÿ€û[¶lyóÍ7%ê Ü"¬7nÜÈɉ°y¥×Ø@Ö¦McµD1Àzذa8³yófÄθߡC `ñK@rÜïß¿¿û`z÷³²²^~ùe4ʼøâ‹?ýôÓ³Ï>Û¤I“O?ýôá‡>~üxíÚµ{ôè*–,Y‚ØÖ€õh'Î÷Ÿ{î9p6¬íر‰¨ÇÅwMåŸ`?yî>ÆŽËG÷Q)ZˆG}ûöîƒGÑÙòå˃û øûû£®óçÏ—+WnÒ¤Ih0‚`.B¸®Æ-ˆ—®û° îãLjj*ŽñX?àéƒéá}ÍF,÷"6øñÇy¢ÿu]G"‘H$‰t—ªD q¤€û[·n帓Àå5kÖDEE÷»uëü‹ãRº.ÐöuY ¸v¯_¿>_E±jÕª@çmÛ¶]¾|™/À¢ïر#š‡ L™2<ò(³øi©° Œ«T©h˜/Ã;ÀYÐöܹsÑÁ>}úà<0ˆaP/Bޝ¿þº}ûöTàp'bPxÙ²e/]º„¸hÀðáÇ L¬P¡À÷СC 4hÛ¶mñ݄ǯ•+W~ðÁyc €ƒùóçãöR¥J¡ Gw¢ÙýúõkÙ²%'Äh?\„Ÿ|×­ƒ"@;ñàö~ø6p­B™’ Qƒ°gÍš…ðÎDùÄÄÄE‹5lذtéÒx¦û÷ïGx”h*ÏÆAgѼ"/¼ð<ÆÖîÝ»‡Ê#º"‡{„¨¨sçÎèŠáÁûo¬Zµ 6Q;¼}öìÙAƒá*BÄxÐBÐùÀù[Q|wí9røÎ×)ÐÏž={„ c–-[†ÇŠØ ÇóÂUÍ›7_»v-â%GH€—ᥗ^‚ë(wŸD"‘H$Ò½ªëã>‡ÈððpÐR=Œ1×={ö€Å›à³aÆúhÏž=qK³fÍP–¿ûî;Žþ@ä}ûö€ƒƒƒ¯KŠ0õÓO?Á?ü#|Å·/ÈÈȘ3gºöÊ+¯lÚ´ XŒ6î›4iòË/¿¸Q°uêÔ©YYYè(-¬ÃQQÐÇ… "Özë­·jÔ¨Q’˜>ûxúé§=<<àÄ0ÙÙÙß~û-ªîÃ,ƒò{àîÛo¿v¢=à{ØGŒ—Ï—‡RÅlPÅG÷·úùòè<†Ž„††âC½ðêË/¿Œ–ð=¹ð|@¶k×aÚV’íq9sFÐZXÆ1b'øïLÁ½ÉÉÉxd0ˆ×‘[ÅŠgΜéïïÿ£§ï¾û.zí¼†,‰D"‘H$Ò=¦ëà>8 <$éâøÅw¹26‚åÙÕÆyVðA€oqU’ê]\\øZï|õwcO(Έ|aMžêÃÍL ‰¶ÆÖ°\¸Ûç½À]óæÍÿ½óÎ;¼/D>”·ÙØG–÷rssÃOçÚyÃød¦¯y]ÈæCÝÎÛ{±‚ɬè8wß— ?¹8F«p€òx"h?_CÓpŽ9¡â*ÏM7¶â*¾%†Oøê“¼R`7¬åææ;ìòUüù&8‰’¸Ê]Á÷Næ[.ð®Y‘±ƒ_ºÇˆ øj°flñpy¥Ü&ïTIVæáuñ}øOþ°¸‡a»ýÅy4ÜæÍ›ÇŽ‹†ñ‹Qçi›-‰D"‘H÷ª®Ÿ»Ï±ŒÏ°4¸ó4øŽÆ¶SœžK’ÁA™ã +˜çpÏÐä›^ƘÓ>\üj‘|fÄFcÓYñÛ·oÏÈÈxüñÇYÁQÀ>¾¦ §F~ +ØZ‹/WωÖ0b~\ò Y¹Y^ Çe~ÀÀã¾ú¤±‡.Nå¬Ïëâ~æ¼…ççóS÷ùâqsôÂy Æ{Ê‹ñÛ _]-Þ$Îëü9rwñÏÔxÈÁn,,lõêÕÇ÷ÿþûïÌÌLÂýüiÆ|Y~ò&ûe¬óƒ`®È †W4&˜:¯)I"‘H$‰Dº7tc¸Ÿ­ËËË+99ùêÂ\ùb'çÏŸŸ={6`~ݺu¬`áþ?âä-¬‹o ºßðX;Ÿ*Á»¼–ív»±gÓŸ  î’H$‰D"‘œuãû¸ $ j¿º°óè~BBÂÊ•+Q~Íš5|ìøÎÂ}Þof‚ª ªóÅüËú/á_?osÖ?pࣖ-[; ÜXï€ò»víŠíÔ©SåÊ•‹,ƒ‡·{÷n<¾iÇŽýýýÕ‚mŒI$‰D"‘H÷Œn ÷Áë|êíÉ“'‹,oÌâ½råÊêÕ«­Vë-Kæaú&¯ÆÎSÆ‚AÎ3 Œ<økŽ‘ëýUí¿*S4ć&ؘ 1ÕŒ#YçQp¨YP,’I°£?“$Up£ði¿ ö/¢óÑ÷½{÷ÆÅÅñ­ ~øáüœ5kÖK/½d„JFËeø#g!œúóÏ?ÓÒÒøÖW£G Û²e ˆß¹û6](=nÜ8üåƒú£Fzùå—}||ø7ž_DèO"‘H$‰tèÆp¬Ÿ‘‘a±X@íÎ;9“*?Ü_¹r%ʯY³æÖà¾Ýn÷ððàCà…6~2rЙ>¹ØhzV pßðƒ¾º'“UEôV2Ñ¡È6Q¸’‘š™•àãSÆì&2U:ô Á„ aœY%ÛÓ½xôÑG÷ïßï¼À´iÓ^}õÕ"qߨœËHû1rî¡øøøGy$44ÔØ ÿý÷.]º8ÁßË—/£^€~óæÍáF¾QÔ‘#G†>tèP¾oî5ýF"‘H$‰Dº«t“¸üøqNù¸ˆ¿páB:u€‹|Íüˆ®ZµêVâ>ß—Ô@RcCS¾aj¡Ý¿®Å¬ÿdâ¨N§ðOÁ QÉÅT»-&-94<âÔ‰cOvëÖ¸Z-a8´{U3SExMËröÿ_±øA~ž^ ³Ùl܉‰‰³fÍzùå—¯Æ}#œ2¸ßØk–+55ÖñLv`-==}Û¶mˆœqumܸñý÷߯U«ÖŒ3™>!8pàÀ¨Q£^zé%??¿Bñ‰D"‘H$éîÕMâþÉ“'‡8^îÛ·ï×_}þù烃ƒ]\\øò0·÷Ñb77·¤¤$ÜÈ‹b}||*UªtöìY^+ÊÀÏ\/[#Gßè¸>f/ØÙ,&Xs£³3Ãâ¢9æáRª¼g©®mZW/ãã¢ßètÜù+‚n…©ù†xrd*÷y¶ŒáYü|î¹ç–.]:}úô"qDŽ¿çÎKNNFHL÷õõ5†á™S¶N¢p×®]ñ06lØ€£RÔxåÊ•‡z®ÞºukPPÏÛÇFŒ1oÞ<¼¿ýö[Ÿ>}xÕ´…‰D"‘H$Ò= ›Äý‡®íÛ·Ïš5 $ =z4ˆ”µÇÆÆ®^½úVâ>Ï/_´hÑ;ï¼cd´·k×îÓO?Ý¢)|mÿqãÆ½õÖ[×¢V´ì‘Sº öYÐ8>Óf‹OK>uàØ1‹[¹R^Íë6lT\\J+¤ éÛ%òY1Ë-Pt3‚êdÙd’®‹û…„ö4¸?cÆŒW^yåjÜçJ:uêtðàA†× Ph€ß‚Ÿ:8p`Ë–-;wv¾„Ø«uëÖxxZuëÖu^wÿÑGݽ{7pÿñÇ¿™uH$‰D"‘Hw”n÷Áî{öì™9s&ˆU>¼bÅŠ8NHH¸Å¸£¨øØ±cË—/?þüÖ­[«T©òöÛowëÖm̘1¿þúkÇŽƒ‚‚úô郸_ôÖ¢3Aµ|}Yv)95".&Üßµká>‰D"‘H$Ò=¦›OæILL\±b_Æ(ªlÒ¤ Êó•yn}2ß=*""bÚ´ik×®î÷ïßazÖ¬YµjÕâ‘ǵF÷uÈ´±zÆN…EžŽº›š\£JÕjÔ®âíU³|9³––¯ÝËZa•¬Š°~ߟ{χæ™$™IfY´Ï(‡`ÀѽUë‡4ra%™¬ûïÆ”÷ñwóæÍ111(üðÃ^kW¬À}Ôˆ’8I¸O"‘H$‰téæWæ±ÛíF¦¾©`Nžlƒ[Œû.ºøÖ¨¨¨I“&mܸ1888$$döìÙíÚµã q‹°’ßa-‡'"..6#íôå‹¡á*T ¨P±N@å Ê~îà`Ù®ÿKÌÁT À/Jââ¢ÒÓ¬¢( ¢Ea& öûŠ ËÕ*T¨RÖǤÑs‰ç1<‹F÷—Ç[pzçÎ8ðûï¿ãÀ9fî·n݇ öþûïûûû-GÉÝ»wÿòË/ ¸zå‰D"‘H$Ò]ªÀ}Ü^UšÍæ'NYžã"€œïª‹*Ö¯_kpŸG8 ?~üÑ£GGŽÙ¾}û)S¦>|xΜ95bzZ‹Åb)ºC»éj+íèCý}›­ˆ´Œ —/ÇÄE_Œ¯PÞ§nšµ*Tõ­¨e)²Ec.¾Á®“ßþSŒ3ÁãxèС@í™3gò•yx$c?/¼xñâÈÈHôïßÿpv‘óóãÉ<ܺu+B n›ÂcøöÛo§M›†“6lÈ¿,Z´èË/¿lѢŧŸ~ÄôçM¸O"‘H$‰tèp_–e»Ý{­òÜxnnîž={òòòø®º·÷aúôé-[¶?~|ÕªU¸e„ ÁÁÁ3f̘>}z¯^½š5kÒmÚ´é5Ú ÞçýÎÏb„AÛN76-ùLxXBJÊÙóçjÖ®U¹RêÕÊzxYô½wE&:o«õ/«º¯ ÊFÒü’%K._¾Œƒ5kÖ;v¬wïÞè¼eË–mÚ´qÆ}8ýÑG…+ñÁSO=å<3àÀß~û-11Ïfîܹ—.]2dØèÒ¥Kýúõ9Ù§¥¥÷á÷ÇÜÏÏg@€„òð$Pä׉D"‘H$Ò]ªÀ}‡Ã6uêÔ .\7o·ÄÇÇW©ReݺuFù-˜ª;oÞ¼×_ݘ۾}ûÑ£Gñùš•8‰`Ĉײã¼Í–6*¯7•é tÊ8!Jv@FêñÐócc£.>Ó³g½êµLª*©Bþ²;üþ$6@ÿšéCN‘s_tîÜy×®]ÆgY[ÇÓ„.Œ9rìØ±FyÞ©Ž;îÛ·e–.]:`Àç¥ña^Ö‡„„ð.C<­ ý4ˆ/Œ Ï ö?~ü÷ߟššÊ›Ú¿ÿråʽñÆuêÔ).ŠD"‘H$‰t·éÆr÷92{ölçtæ4ì¼…Ž£££-ËúõëyÎÍâ>ÓS…Ž;¶páBžñ‚ŸÕ«WïÑ£Ú–åÐܯ_¿N:]3#¨Ð®ºƒüLÕ7àDUd6Uµ‹Â¹¨˜ B[7m\Þ³¬YÏ×TáZ£û%OÎA;ÁÜgÏž5üeôàÞ«W/¾úˆÊ”)|g±çž{.88Øù*Lá)NŸ>=**ÊùY¢³Ù ÖoÑ¢w=¿š‘‘1cÆ XÃIØyçwjÔ¨Áƒ„é‰D"‘H$éNÕåîªç6›Í¹Œó1_'&99yÑ¢E€ûµk×3zo ÷¾îîî®®®`\ÔZås[ ­¼Ég¯^kÝýT¨ãÜÛåÊŒYµÞ¨°"ªŠI™¢|ót¡£cµ@E¥_NÃ;è¼Ö´œG÷‹Ì#âÆ ÿ8d†Çø]|åÔ'‘H$‰DºÇtÃ+óÙ===ìÎeœy.Ihhèwß}‡ZV¬Xqk’ypÉ¢ËàWƒt9îI,<[ý qþ“»oüƒdàM*ËßpW§{E_XSÒ°_ÕoÔ–ïTô’E¯ê=ñHÈýBëëóK¬(š7žÓÕéõœ×yšq#yœÉ†‰Qt!dâÅœ¿H$‰D"‘îÝîóy¡ ~€eHHˆQÆÙOGù„„„ß~û-//oíÚµ·,wßÅÅÅÕÕµPº¼Ñ8Ó¬gK‚ûÌ ÷™ñ’jTe-Šõ¢¨Häëùp76ºï<¦^ˆ° Ð¨?ïßÝàêÏήw¾Ëyýç«å¾*á¢$‰D"‘H¤»K7–ÌÖŸqß9•߀𸸸uëÖ¡0_™‡ÝªÑ}777šQJ"‘H$‰D"¯›ßU×(Säèþ•+WV­Zu+wÕ%Ü'‘H$‰D"‘J(Â}‰D"‘H$éžá>éȘÀþ=ë ÐôçWÏTfkë:]]ÀÙˆóREÿƒ>’H$‰D"Ý"Ü'ÝñgoLö½zYÏBSùó-4Sٸʜ¦ó­˜ Ùáœ'¥7D"‘H$©Hî“nœŸ½3¯Z&èê[œŸ²±^Ãáà«8 WíRllYÀ/qú/H$‰D"‘ ݯ¸Ï›*:%äŸV åï¨%ð#¡¨[I#úéééx¨‰‰‰/¼ðBµjÕ ‘zllìܹsÝÝ݇Z®\¹"·ˆŒŒœ3gŽýC† AIg#üÒ´iÓ¼½½ŸþycÑÕÿioI$‰D"‘îÝ}¸¹ººšL¦"GŽ ­ÁM#J°kø®è‡ŠÊ+cf•I²Êd¦*²`–d‘å“ ¹Â°ŠÿdA³©/ÌÏ·ãÂáþ/AÀ[ËùØHF7ÇG¬ù·1’í|¯ñÓy;­"3[Œý¹˜ÓH¹áçݾœsåZœ/1§Íw¯Þ÷—¤ÝÇÇÇwîÜ9**jëÖ­>ø /¼téÒ°°0¾ ÃÂ… ýüüvíÚU¹re£a|;0Ïš5+$$dþüù|¯4€þ믿þÎ;ïxxxðæñ&ájÖ¬™¿¿?j¡Í€I$‰D"‘ŠÑ݇ûh1pßl6ús7ûw û7úV¡þ ?£È²¨m¤Šü6Q‹»Ÿ_¯juoQ™$8t‹:î+úN¬ƒ 'ºï  IómÃA¼Ùv»gªÂnæ´…°a“‡ER;sÚoË€f£%΂óüWc‹bDV6›'Ù;çßò-“~úé§o¿ý¶gÏžü1°ž7µW¯^›7o6Ú\­Z5÷kÄÏ àµxúé§ùÉäää;v¼øâ‹¯¾úª——†6Œ5jåÊ•ø;dȦï |]·“H$‰D"݇ºûpvÝÜÜ\\\ Ї»\{uvø?ºº¿|]Ya¢`Õ\AˆÏË ¼~9*öÂ…!=«_¥º¨¨:îkŸ$WôÑ}g¼XÁf»ÅA¿±þŒs¬‚.©ñ“CöÕŒK¬à#€Á¸¼§…ÂV0¢ËxTÆœ×1u5Kë©QØ9 0f„üã 5àÒ¥K]»vMJJÚ¾}{ãÆ¹MT‡Ç#x~ÿý÷ *8îó/ˆ(Ö®]ûÙgŸ=ÿüóo¿ý6ÿzsþüù:ÀÎ;ï¼Ã‰ßx¸'OžD­ZµB]xh€ŸD"‘H$©HÝ}¸£¡¡¡Gå< <­W¯ÞC=”˜˜¸aÃüD$6hЀý;áäŸnë<.¨ÿp?OÐW²Ã$Eg§Ÿ‹‰MN>}ú¬9¿€2eÚ5nXÑ£´¨Ý¡:$UÁ¿BAR¿šoH-Hì7û|Nê¦M›¢¢¢Ìf3ZûÈ#Ô¨QãðáçNâ`ݨQ£|—6oÞœ€3=zô4GFFrçvìØ1((Èp=çrtÛ¶mqqqü<Š=ú裼R<†uëÖ¥§§ã§»»{çÎË—/fDDD¸ººâäÃ?\³fM9,xxxàçÎ;ñh`¿W¯^ŒŽŽÆ8ƒÆT¯^Ýèظ ·¤¤¤  p¾1œoL½={ö,š j‡YctŸ‡V«µS§Nx«ø“åAªûòË/—-[V®\9´³N:Ü&.?~¼eË–­[·Þ¸q#šTŒ·I$‰D"‘îgÝ}¸MŸ>}ôèÑÆà4XyË–-»wïîÙ³§Ífãç'Ož<|øðk%óÈZ¾>ÂÒQ\‡ªÊ’p%;#:)þüåË'Ïž-SºL`Å* «Ö©V&\* Ô.¨y¢ §ï¨=qGÑÿÁŒŠ,‰’ \÷!ô·{÷îûöíãnš;wníÚµGµgϾ: 0}êÔ©>>>ݺu;qâŠ}üñÇ€uÀ9ƒþ裀ò¼è8€¨=~üx¸Ô¨èµ×^kÞ¼9‚ÐyRRŽå°àéé‰@"66FΟ?Ï×ÃyóÍ7ßzë-ܲ}ûvD/¼ðÂüùóñ ¼÷Þ{K–,A`À3øGŒñÆo°‚Ü$DK—.Eí ð/¾øa»*ÖBãñ°Pµ1ºo¤ããA¨––†7ƒÇëÃÂÂà üDQ«V-Ã"¥—^zéòåËãÆCìw±x‡“H$‰D"ÝŸºûpvA~S¦L9|øp5š4iÒ°aÑ#G‚Y¿úê«3gÎÔ¯_Ä úg×HæÑqŸ‰ø•9TfXlZz|VFHdØß§Bü||ýÊ– ¬T¥EP›Âdñ€â‚;ñrRÒ•Ü,» (ÙU4ᔢî+ V//?ÏÒ&Î’Š§}¾¶ 8õܹs{÷îd?~¬¾€àÑñìÙ³Ÿ|òIC0Æ]­[·öóó £Sè> þÓO?ÃÑÉÉÉ:u‚[ñ×ËË˨ëÀxß}÷Ý«¯¾šžžŽˆß¿?<üÎ;ïüòË/‘‘‘íÛ·Ç-8‰haÆŒx3gÎÄCrssÃ%T#¸„J;vìèëë ÿ#rÀsíÓ§1ÜŽH K—.x¨;vì¨[·.O*”R qwÁ]¸Ô¬Y3ÔHü$‰D"‘HEê®Ä}T Ôâ£MS§Nmܸ1Oÿ’~öÙgûöí3fL¯^½ŒDó"Œ0Yƒw¦eãÇ¥f\ÉLûûòå¿Îž*ãåU©|…êåýZÔrš! °&Lªh“…ßÿüãPØùnG…g†xé믿F#;wî ô‡·qçwîܹtéÒ~ýúñ¼<¯Ë—/wëÖ Å–-[nñtüBƒî·÷qFÐ8—`³xŸ“H$‰D"ÝŸºûpBÅ@ÕE‹=ÿüó=öØÊ•+Ñ 4ˆüÉ'ŸÌ˜1çÁš|ü¹ûŠž»/‚ú:s4ì|‚5;13³Q­zMk×ñuw¯XÚSßîÕ¡ˆªÂv…™\þm×d2á9‚Ëñ2mß¾½^½züñß¾Ñ}m€gš5k†=<<Š÷9‰D"‘H$Òý©»÷aMÁUÐç{ï½W¶lÙü xøðáŽ;V¨PaöìÙ]ºt1œ)ÚŽÌ»¥Í®µ Šƒ‰ÇBCB΋³ IÉÉuk¶mÔÐËd (]ÚâЗ锴YºŠ¬`(hÿx?LŠ×]‘çßžâ¸bFGæÎ;xð`c5!Ái|xÝÙ¿ÿüѺukÉ`w6ãÇÿàƒâââzôè½aÃà¯óBœø;tèÐeË–ñÀ€ã>˜ݨQ#¾¢-¸»`§E‹è-[¶T«V ±€1è¿yóæ(ƒÛÿüóÏ_ý•'óðŠP¼ŽÖîØ±#((ÈX&Èx ø{úôi˜î#, p^<áÌ¢#x]ø4_þ}o¢ ø fùDÃ2‚ƒƒƒa ¯D O"‘H$‰tßénÅ}މ¿ýö(¹gÏžÓ§OŸ0aÂæÍ›'NœØ·o_¾H¼Á¯Eõ›wK[IÇ'0Af*þ…_I¿|)>59âr¤oùúµëT®P¡F97UKó×Ròµ\}* %ƒû«Å— åÝäkÒ/Z´èÉ'Ÿ,²©ð  öرc€Zà>ß{‹éÉ<ßÿýرc?úè#<©S§"ìyæ™gpÞßßßx$`ô/¿üÒËËë³Ï>kÛ¶-Ç}07 êmÒ¤‰á%£9îÃɈC€û (ùòe¾¼&Ê€¿q¼bÅ ¸Ú¸ Ï!Gzz:¢ˆzõêzˆü“Å©S§:uêäííÛÑH¡`ç^qÚèÑ£ëׯ0Ãl6ã|jjê?ü€·ä‰'ž>|¸¯¯¯ók€º€H€pŸD"‘H$©HÝ}¸Ï—Ÿçx‡[æÌ™³`Á‚x`Ïž=€Ñ}ûö¡YÆùµ–cç[ârZÏG××å”íŠ`ã33"S’.&'üyô¨wÅ 5Ë–kW§N%Ÿ &j3qõÛ á¼AøŸœ?à µjÕªfÍš¹¹¹è Gaxjüøñà`¸»}ûöS¦L©[·.ÎÏŸ?MXXXÆ gÍšÕ²eKp6 „††ÍáFã±ýñÇQQQ(óꫯ¦¥¥7w”a°sçÎ(‰çäââ2bÄž*ã_|ñŤI“àä§Ÿ~z̘18›gΜÍ£UªTÁbT³AAA|]QáÙ;hŒp% ÕUªTÉØÊ—OxöÙgãââ¾ùæ„´2‰D"‘H$R‘ºûpŸã©››O]P)x±zõê_ý5HÔl6}»fÌ`t ÇJþUÚ~ºÚ6[ wˆB|VVDü•3a§ÿÔ¯w*&Uñ‹ìæH_¯ËjµvéÒ,Îô¤y#—?GýÙgŸñbàÝ®]»=z”;dÆ @[”äKdr˜^ºtéO<Ÿnݺ5)) áPبkذamÛ¶mÞ¼y:uÁâÀnc/Ví êèС?m¯q©F m<œ9{ö,Þ€7¶hÑNF](€«M›6üƒŸððã\EèÅÛl·ÛQṉ̃cÇøá;õâ‘ôQ²^½zƆbZQLž<™ï(ìçç÷î»ï¢X·nÝød\£åÇFíhÍÓ%‘H$‰Dº–îJÜwwwçLb111cÆŒ™;wnëÖ­·lÙ‚H€gò¯p_ý÷Y-©‡o‹«¯¿ÉXlbRd\TÍÚ5Ê–*ma‚¨èQÁÍî£Ùè<ïpÄ72nÖ¬YÓ¦M9Cƒz×­[‡NÙl¶Þ½{W©R…éœ}êÔ)>M¶{÷î|¿*ü]»v-Ìrk(€hÿV››‹Øù´£ ,?ùä“`k~5ÆÆÆÂy¿~ýàj4599ÙÕÕu¡˜ÑòT¨PÁ9é¿cÇŽ)))»wï®_¿¾± 0þ._¾ÜØü‹Ÿgúø}ÿþýo<æAÕëׯG8„cŸ^½záq;ëó÷ìäÉ“Íu!2A ‹™ØM"‘H$‰t?ëîÃ}Þ=9ùz¿øâ Àþ>õÔSB®ÓïkôW´½rµ@Û:KqIpˆLÖÒüe “XAªúÍ'óð°¤ë9:óÍhYxHÀáž/Ëã<©—_5Vì1’éó{¤›â£H¯øU~»ód_ã#‰‘dÏ—Î:tèÏ?ÿä,Š † âïïÿÜsÏ£¯ƺˆ¢ù²¢×VâÑ˪¨Ê‚,«‚™™µ@ƒZ‘Oѽzežÿ$çAý"ƒ» 86À—ÿå“_o)ÒŽa¡å«ã<‚^è ÿÉAŸoúk 9¿Ê âdJJJÇŽcbb6oÞܼysÃH¡ØÀ°_(63ŠñºÞð9»Æ¸¾ ïé‹·¥E‹*Tرc‡p­H$‰D"‘HìnÄ}\š1cƨQ£®ÆÓ–-[îܹÓÅÅåúü§þ3U· ‹ÿœã>*çëUmC.m»-”Яß4î;'Í_ ßÎç«Îgœc˜*4ÜþO· n4»ÈbÙ¯®‘7? þv^N§©üxÀˆ¾*V¬h|Á(²F ó<†œ rî+ˆLìvûÌ™3ñÚ ¼…Ƨ‰D"‘H$R!Ý•¸¿ÿþ-[¶š‰‹ã€€€×^{ ¸£Þ Ý  ½@œÚý[[‘„ÿÖ­­ˆD"‘H$éÞÐ݇ûÉdruu-”¦bd•üýïåü øÂ;WèßñO ÆTcã%¡'N"‘H$‰T¤î>ÜÇ%T Ü¿º'FzÏvéæTäè>»=3hMʘÓ"?$‰D"‘H¤"uWâ>XŸo«Th >À;HXA8áœÚÎóÈ‹ÌA¿ÛUä¼ããI‘å^=Ç Pák­#t]Z&¨øŠþ_ä<©ú^z%H$‰D"Ý¥º+q»¹¹ý/qÊy ©à´&oÀ½v|å¾Ï̹…Hí¼çƒé·JÎ Þco‰D"‘H¤»Q„û%ßÖhO7•¿÷˜•'ÌŸ/œÔo¾³Æ"¤Æw’›4xGÉù[Ð=Ö5‰D"‘Hw£÷¯/àp°cÇŽ¿þúËXý³mÛ¶íÚµ»-s¸3§ÿê_ò/T%8•d…Žÿ1$qºX%%%-[¶ OÈf³¹ºº¢ƒƒöõõ½% ü–žž¾téR«Õ ³>>>7oóÎQ|üÿ±wVß{æÆ‹ –iPÂ0QETBEP»00±Á‘Qùƒ (Hˆ"!K‡°äR˲ñÞ»1óÿæÎ{—Dz ?çs}ÜwßÜé;ó3gÎd=:--í–[nÁ;s¬³£      ð_ÇñG÷©®ë û$a8‘8Ù»|ò}ßÔÞÏ«æ¶þÉÇÜÞu×]C† ñíøï»ï¾7ß|Ó/-I2.÷-⥞ïlíAáÀ5£ÂÁ?wpÉ)nÚ„¹HÅåÈ“éjT§â€äF¤R$G‡y熉Ã4âÌ}^ÀªU«.¾øâÍ›7˲”,YrNãÆ“ËX䜯äJ ûoipÇ÷Ü/ÏÊʺä’KÐó¦OŸ~òÉ'“„?Ù ¾§ ån–©ûE.r:Æ¿¹dÉ’Ö­[§§§Ï™3§L™2¾!µ¥XAAAAAAá˜àø£ûˆ\_:×/r8”ÿ™Ì%Í’Êxÿ:™SN5Ù¶-MØþùçuëÖáÁqãÆ?þþûï—t_Š2ŒOïüó­ü=ÄGÀ\÷kWóC`š«‘å6¡ËÖ¯ÌZ÷û9O«Rº\d¾XÕ>•ÏQùC\8Tâh]q4Êž={^~ùåX,&é>2oY–<éÖ¨d¡ÀéÑ!Šê$ï[õ4;;û‰'ž@ü?þxûöíÁ‰%­—R ,«ËïRriEJz‡Èú?ŸÍûŒ`Ôä74jläÈ‘è÷Þ{ï< O V†= Ç ÇÝÇOàúHÛgö’QIsßfZrî"Ân‚ªJÃtŸÀƒ”²ä²²œ/¼ð‹/¾èk÷}µt2±KVêÙæ{H«æ™à®Îûý÷u[³6oÛ¼sÇöëZµ>½Æ‰©¾}OB±¿Ö'ñLùË!‰§Ì*„œ;v´hÑŸ>ÝOÖp'?âóu_H®s_îV¯^}饗"ð´iÓêׯOö_“ñ—DŠ,ÝîªÈß"ë3Rð û· Ÿy½bÅ °Y³f}ôQQGAAAAAAAá(ãø£ûÈ1²òÃ?|þùç>­?ùä“A°ˆ¯ ©)))­[·ŽD" ”Ò˜ŒóÔSOíØ±ãòåË „ø¥ÛÜ9çœsþ¸ðþjIÈȸ>2Ý—ÂÃàÁƒ‘¾Þzë­kÖ¬ùñÇ‘Ÿ¶mÛâsÒ¤I¦‡»ï¾»V­Zœ¨Ý_µj u…Ö9ñÄg,C£à¾”©j׮ݽ{÷íÛ·£AÑ;eg*Y²$êí„N8TÞÿ~lܸ9A•}òüóÏG6ÆŒã@)î¹ç¹XäÓýóÎ;U!×…ÈÿÜŽd…ãÇÝ'Þ©º#GŽùCÁ`¬ ä ìJ²ó×_=''ç•W^ñµ³íÛ·ÿøã¿úê««®ºÊ§û`ç]ºt9ÒZÃãHî¹çžóydi‘ÖW\!eŒË/¿|óæÍ‹-B`da~úé'dµãé§Ÿ®R¥ÊX9Þ§Îkw)‰RòóŠ•»£K×oÚºeóYUÊȨW¹rõÒ¥M—SÙÌ¥†iy¤ß3Ó'º´ÿÇw—›Tˆ šNåfýЄ?^Ì­[·‚îûÚýä×]wÝ—_~Y¦L™-Z@’A£fdd ÔÓ§OGx¹ÊqÓM7=ûì³müüôꫯN˜0¡›´8¢Â³h»ùóçKþÙgŸäК7ož››+;VùòåqSúÿüÝîÝwßEOïܹ3î@1bò|Ûm·É}èeÆ–.]zÉ%—@ü Þ›¢ãwÞ)%@ÄpÁL:UÒzâmt2dÈøñãŸyæ™Ë.»LÚ>)¿‚‚‚‚‚‚Â1ÁñG÷)øSffæäÉ“—/_þé§Ÿ‚M‚S6kÖì7Þ4h'ØhV,#Ÿ={öYguå•WâfË–-³²²F æ îxõÕWƒvŸvÚiGZkÒ}ß–ý“O>Á}ÐJÈÈÉgœ1sæÌüÕqî¹ç¶jÕjÊ”)Èá:'ZÜb‡æF#Mœµ''ªQ¦‹5®é”Q× ZîÕ]|nÃúªGÐ}F‰q˜Å,B÷e­ÊÉ(òE]´bÅŠ{ï½÷ÁDði0ã.]º ÈeÊ”Áƒ ,­¿à‚ ä.[ˆ kÖ¬iÑ¢ZpÆŒ`ɲ£ *Û¶A©Q™½zõºîºë÷ÑÉú÷ï^öÿÀ ÎÃ!Íx}kĈÿ.„=ÉË!"ªN8îÑ£:ÀažÁ, ‹Ì Ã Gá¢>щ!.‚èû›F¤M.PL´x·nÝLíÓUPPPPPP8†8þè>(cZZšdiH`Ù²e`ÕK–,ל)h‘Ãð)[Ö÷ºƒÇ-•E‹!Ún¸Av3štÖ2Bg†sûí·¿òÊ+Çj“±‚‚‚‚‚‚‚9~é¾´“F°¬¬,î/¿üdtåÊ• ˆÍš5ó#³fÍz饗"‘‚sÎ9_ýõ5×\Ó Aƒ‘#G6lذˆgždÏñE|ùûZm™.â|ñÅ»uëÖ¿ßÉÜ yc„ üq»víðÓc=Î ÒÿòË/Ïsÿ¨Q£À_Ï>ûlÄ|0þ †É…á½æúÃâß¶¢Ê6¬Ë-(8¿q£*¥ËV/[¾R‰i #}tj”Åõ“¤­¹ñO$û |ôòË/ïØ±£ä”H4wöìÙ=öòÖ½{÷x fÍšO?ý4²iäÙgŸEÐýAƒ½ð ·ß~{éÒ¥“S߯aÄ1º\ãáÔÝ4´BÑdþÒ³·nÙ™½s÷ŽÆ 4¬U§j©2åSRmãrŽóÑZ`ðRc ¢ Mv‹²È0Ê–-ûË/¿ è=(]›6m²eË–ø|î¹ç@sƒÁ „Ð}A§À§}ÛPÐÇK/½Tš•#Xß¾}ï»ï>_K=|øpðH„DÒ_НÆNNèå—_Eøo¼qôèÑ~IBÛm·A¢ I'òÊŸ¤v´ø¡‡ºì²Ë¾ýö['Dbp¾7Þx_yäðEÈ„ì!÷°’ƒ(›™Ðî]øÉGrŒšC‰Ã…¡ŽEÉO+W®ÞüûžÜÜ=[²;^quãšÕkïí¡ ËµqãÆ3Ï~ ‡ÃS¦LiFîÁ2ƒÁ`£F:tèb¯’“uéÒ”]–<ì믿~ì±Ç–.] öy°ø?ùä“Aƒá¬ýñÇ÷S”ñµ×^•/¶²PÔ®]»¶iÓ„þ‡~›KûGr4ÆŽ+mú‘« óxD¶~ýúÓûJ|mK|îíÏ•GnE Y²nÍêÅËZÛ´zŲ‹îXjôwíÚI ŸÅäŠs´:TxïÞ½çÌ™¾{â‰'âÊûôÓOCT;‡ÔT©R%` ¾xäù矇üàM¡¡›5k†RϘ1C7&y¼œ–/_Anîܹ¨pè *[½8ò¿fÍš'žxýU.\sÍ5è¥o½õ–¦qãÆè¾ÿ+V´hÑeÝWª}…c‹ãî#Ç ûàôR7/UãÒ \šRHk²‘ ~Z´h()xx[»víðk± ,ÙlÝWºûíäà æd-²´÷]µð$”nâ)õÿ@ï+ë’’ø¹Y‰3r=‡ü`Æq‰Ø›K9ѲJ½÷0à[¼¬þ¥‚_êÈ}s|’ØÉ*ÃàBnŠðõër•À¯·;w¾ýöÛ£GîØ±c=Ê•+çÇ,w @ZøòË/!rtëÖ---íØêÅýåob& Ò㟌_·oßþî»ïŽ5ê™gž¹í¶ÛHb©A1~…c‚ã’î#aé\ŧbRs,5©ò(Я1cÆŒ7Næ~Æ `üåË—?çœsN9å”çž{î`‘ûNæg2!_}àƒÉI}ß5$Á }Gr¡ò€mÛȳÌjñ%;Ô÷i¾¼äÂk¾4¼§¨æz>wŽlóéAà¯cüA¿h¾‰¼/ùâ I˜Ëã&J*‹ïócéOIîë:ujÆ -ËêÕ«„1ÔÉž={fΜY²dÉóÎ;¯V­Z ÍÒ'ϱ‚ïuÇ'úɼ߇ß7/^ܲeKÈ0³gÏFö͇ÝWPPPPPP8&8þè>ñ<óƒAÉ2%‘J¦ã2m§ïÝ»·¤¡É.Yš5k6}úôƒÑ/߯K²úÖ×Öÿ1–’I³¯áêwF"”é„›ŽKE0F‰É©k}ôëÚû4\‚ØâÌ\Ä!¬z(gžz_xÕôlúÅ¿œ;àú“Üw=ô‹~“oúM+êh¶X|à&ã”»ÜÐt梬Q# y™….(ÌŸ9k†ë¸-Ï¿°DjúÞX¤å¥-ü²ÐAcr"4ÊDÕ¯_Ú´i•*Uò7iðÄáG™@û©“â:g¼àÞâº5z®[·nOß²ÝWPPPPPP8&8þè¾4‡Ãüàž%ýZ¸pá‚ ü0¾•NÅŠ¯¼òÊ£­mEå8¤ÀqgaÛ%u@ÒÕa”%¤^5 †¯Q×s˜/œqz‡c9Þq¸ÿj-±W̨‰’*V!X! JXÐÒ‡±µ@=‹&ÆðD!eßLš²wË®‚b–ŒòêB!ô¹Ë/¿Ÿdÿ=¸ÿfó˜ƒ-)(((((((üÒýdåt%4IR·mmk‚ƒ·‡ÙKI®—“Òœ˜¬h@ ¦‘(%aBR81¼L'6!?Ýg<¢‹²…±±]ãQBÊpvÄï̳I§¼p ϧ bL9¢§ÄˆeгB6ç†h©Å—'ÛÒr¥åÂ_JR< ÿüÒ}’°99ð×ä-³‡¨˜¿¨›;±Å¬ýûœíëtn»zHã{D8n¦ï}âZsÓ§YFåªÄt_#®§ûÿF’ëC¸ eJMBMK-s¢9«ì“˜T¬cECÁ™‹€º¡éᎶŸN ¯ÏŽvÄd)¨(Ftc¿­Òh8ô“.]º”+WÎ4Í#õ§yÔàoÛý׿PAAAAAAá?…ÿAºŸ¬. Ùä°ªço„Ðî»Ì¤.Ñr²fÉv¾ËƒºN£¦-ƒˆ\qÏ„ºÕ¢î½uÎlh„ W¸äÆüähó$NLØŸZü#„Å –pM·HA€ ް껽;b¡@DØòaàƒÆeÄô| LÓ]’QX8¾ÛÃÖ¢¥ŒØ–)ÄTãûYÅ ' úß|óMÆ ÿà4b…düÒý)„OÆuü«o£ä K~ 1Ð}ÐwGs4ÏžðªI(®9cÝ©âðžÕNmlÁ“A9ÕèÑ*±\‘×É–Q‡6¡Ú}£ ûDsè^ƒ¼½iå+/jšµA!t—\|[Ó,•Ú“;ýîǬy‹ ±mƒëORI}ºÿí·ßž|òÉÅL¦        p Ý?j êmÊômycãoßÓ(è>h±­»šg o 7Ÿ}n€–wÈSÕ42&w™pµ¯QW'ÚÑPïû^ðt:yˆ:÷γ4È-LwéN¾³eÙœX!£z*sl]‹âBlŤ&£¸¶‰[*7gÆÝÙ?/¶0$êÎÝWPPPPPPPøËPtÿ(ÁÛ–êj„jŽ¶Ý ¯o\4‡F„\QÇàÄtIÀf›W­Û¾v}šµRÔ+Éõ'jÔ?9`jÄaŠâÚ1ÝGë¢Ùl[XɃÚ´i#½ÈºœqÄ)®Îi6ÕúoÍü)Z@s­Óç8©Áºçe§…#\DãQÏ?©“ž—3£û#ÖO¿QáT 3=F\N÷õ'E÷þþ辿•ÓÏ_²PÄ”ßß­+¿-VfðRò½ï'ûÝO>FÊ¿Yć̛¸·‰“j\gt‡®÷Ù°ä{a\K³ Ó¨­Ó'årò¿DÖø/+ÜÒþŒ»n ÌçN¨RÀt„<À…b_8µËô€³®’3/sâ‘+Ãøµ82ÒÊ•+[¶l¹qãFY´2eÊL:õŒ3ÎðKw ÷ýxZTQG^áSßÍé[›2¿ckÍöy·öH-]úª·ŸÏ©Z6bmM¸<àÒ¨n§æí™}ç£aÌÃ5¦¡ŽØÒLŠD®è¾‚‚‚‚‚‚‚Â‘âø¦ûþáYÉlÛÜgö¾%:B:Ž#O>ò$?(3,6øÏÊû2€ï÷݇&‘Eüò¸%éÿg_¥ˆ=ªÔ¾jøv-ôÎï+~ …å û–®í ë)ŽüiÁ²÷GíÉÞUã®NÕ.¿D×øÛ•O©£é1‡\—‰|j$‘ŸdN`uù—-!ò%I¢È·÷–-[z÷î½uëVž1c†išàÙ7öm{ütIBÀHˆãØ¡\jÚ››V~içvDV½Ð'oáÒ“¸¹ô5­¢ K7Ò,'Õ!¹¦›š—ûÃåÿ²<ßÛ©«‘"g(º¯       ð§p|ÓýdBO<²bŠ Éé寒‚ËÃb}jžÌ†“¹¯|Ä×îûj{ÿÂSJ~BExp²lˆZ…Ë —rw; ¾ û©.jÔ2õRù‘%}úm7¡QçŽ'wí´5L3HßJëéFTwÃŽH9b Á&™mË<øM%}Aâ¶m)Û$Ë0‡ÞnëAVÚæÍ›[¶l¹}ûvI÷ýv•²¬ÿ$cé“3Ž´-Ýå®Óô7²–NåùeY(ôã‚ÿ{°'©^ªÅ;¯±JUófÈqA÷ tE÷þ)ßt±|öÙg>×”šõ6mÚœzê©27?üðÔ)S‚Áài§V£F –L±I“&-Z´!–‚Ä÷ßð¸ƒñµAƒ7Üpƒ¯¤ÿüóÏ—.]ê[ø ä|Ò¤I2nvèСV­Z2ð„ -Z´¯œp‡ŸÑô´+[_ºÿÎú•’î\n›†î²Z9ÑŸúö_5yB¥;;Ÿrg·ÂËh¼wɓ掽qצ°Íá˜G»¡íõ+W®\¼x±¿^ѺuëŸþ9''ÇoªÛn»­J•*#FŒ@ÝÊŒá³U«VçœsŽ/Æüq{ûkh¿æÍ›ïܹӧû¨d™Ê¸qã–-[V¡BÄŒ6F7JKKCu}=u궬v˜ê$p}‡[Çiù3–^À%™?>Ð3X"í†>¯æV¯º=Å„”j‹*º¯       ðOáø£ûˆ7 !íY³f=üðÃ2RÇ úŽ_ÁÑ_z饫®º ©¾õÖ[Ï<ó nV¬X±råÊóçÏ—ëÖ­;tèгÎ:K¦‚Oã?þxÓ¦M+V¬ ëäçì³ÏîÝ»÷)§œ‚¯ ÑcÇŽ…„ 5ë={öD´÷ß¿LBD…‹/¾„ø7Þxÿý÷7oÞ,$ bT®Ui`¿~§_q¯Ý7qC”ˆ½qظ¬?-yf½j]n 48ݲXƒõ ׺ÿòËç/ý%äp‹ÇqÇ~2R²!ÅDÛ¿ÿÈl)))“'OnÚ´éÕW_ýÕW_É…ÔLß¾}ï¾ûnI”s‹3ʸuëV”hÇŽ’îKu¾\+³GÓ¦§§×«W/33µviԨѪ•+ ss-hÔhØä‚vÝ~Z]Ó6õ½»ó&M[8hD¹3N;½çý9Jq¦2Ý⎢û ÿŽ?º/©^8Þ°aâE‹†eYÒ0˜4iÒðáÃAï¼óN” q>ÿüócÆŒÁSMš4y衇@Ö‘oÜÉÊÊ>ãŒ3d„ ÀÑ/¿üòN:ñÄÉ»óæÍëÓ§ÏÔ©S/¼ðBûå—_ž}öÙiÓ¦µk×îÚk¯­_¿~0\¾|ù×_=pàÀ:€y§¥¥áYÐßuëÖíg%ÏÉ”/§ 5¸ÿ[}¯¿÷!ŸîësÂÁ’ÖÂçÞÌþbÂ)t¨zgÇÝ<Ãäz˜¾^®áŽŸçmÞ»õõžO-]³ö™çžëÚåÔ)$™3gvìØñºë®ƒxƒ|âÎîÝ»{õêI¦Y³fh­ï¿ÿUŒüÿøã·Ür r^£F ßöæp:Çt?ùW$zûí·¯\¹²ZµjO>ù$¢}á…·Œ%ž{òÉŒªå_zþÕuë77èuëâ³ +4ÜЂE“ïîI2J´ÔǪYÒKšˆ0[Ñ}…ÇÝ—–èééé’LÏŸ?¿_¿~Ò˜¼±”ãN=äþ½÷Þ{øá‡/ºè"Q0~I_ýu0ãÑ£Gƒ¸ãÎG}ôꫯ֫Wï©§ž:ýôÓëmûöí÷ß?h4H3ÜŸ;wîsÏ=‡û`ÏW^y%ò3gÎ\#ð°aÃC²Ïœ#F@6HTYµlÕÂe¿¾ûÎ[×vÀߪkº$fÒÒQgÁÓodOœT÷‘Ž'tí@ÜòAW3ùoVl|¢fD5çÇ)Sxüñ2åÊ÷yý ù‡òøãŸtÒI²=P¿(QÆ Q:uêÈ" ì¯½öd5kÖ$‰e?M÷“7ൺiÓ&T,„Ÿììì–-[îܹóÙgž¹­cG’hÝòʹ¿,¼`ð‘ ÏHã%Í ,]üí­i¥J6úf¬b…74N£St_AAAAAAAáÂqI÷C¡Èý¼yóð<Ÿ>}:²"ÄK3úþýûßu×]ÒÈþ7Þxâ‰':uê„À#7˜öíÛ÷É'ŸËoß¾½4ËÁ§Ÿ~ÄÝß•Ë<¼ôÒK/¾øâøñ㯸⠩òä‘GÞ|óÍçŸá‘â!Cºwï±aäÈ‘¾šAƒ-Z´höìÙ«W¯Ž× !:1˜ÁÞ}§ïµwßïk÷CŒR^Ö! ž|}ëW“ª=|Kõ;:¢åBlîé[±Q=#¡NŠë~5}Úc?Q±|…õë×7kÖì±Ç­÷é{NNÈ7~úæ›o¤‘2ùÎ;>¼C‡þeïÁ!Q,Ý—[å–¤Éç»ï¾+[¶ì† @÷Ñ-fΜyRݺ{Ý‹λxá’å~ðF¤Ùi,=Ÿ†V/ŸÓùAš‘qɇo–/Ÿ®‡ #ùšÒî+(((((((üS8þè>~Ý_°`Á3Ï<3cÆ pÐÛo¿‰ƒA°ùY³f!%I÷eø~ýú=ôÐCwÜqÇ| ]Öàóµ×^ëÕ«èþM7Ý„Áàß~ûmpý§žzʧûÒëÎsÏ=÷Ê+¯Œ;¶mÛ¶r+H<î Ö E¤¤¤@@y^xá…-ZH ®áô÷úë¯?ÿüójÊŠYsfÎùìËϾûv›;ïí¿aUÂ'sÂf(§pù‹ï®ÿæËrÞrjû›^š Ûûæ ëj¦e°@,6`ðà¾o½ÝºÕe?ÿü3* Bȹçž+é>ÒEnGõꫯžsÎ9ø©fÍšO¦Nzë­·B0¨_¿~r•úH’+O¹Bâ{•?è7oÞ<;;{Ú´i§žzªï€HÃO»wïÆO â’î£* }5¬_w,ïÊVWý4oÁ…CúZŸb‡ hÄY™ùk—žÔÒ->x-¿r9=grq¥ÝWPPPPPPPø§püÑ}¬tèС÷Ýw_£Fz÷î ^+ÓÞ²eK—.]À>(µûˆ̾gÏž’îûŽáÁ×ÁìG}óÍ7#Ü7’iÓ¦Í×_}íµ×>ýôÓÈ¡\%˜=kÖ«½_›ñ÷ýÞês}‡’qrK#é6ŸûLŸ_M®ÿÀ­:Þ¼•§¢%õØåÔ3ynôóaÞ}ù•—^úÄã=W­Z…ÜBÒ€|rÁø ‰üƒpgff‚p/\¸Ì…^™¤V­Z ùˆ¨úÍ›7ƒ7£€ ×=HbyÄwTŠö“Ú})Y%764kÖ,77wòäÉ•+WÎÊʺôÒKѨ‚‘×­›ë´¼¸õ¼ù‹$ÝXAÓt´ù ¿½·/™Ñ´ß‹áZ5mq—€×+º¯       ðáx¥ûÆ »÷Þ{O:é¤ë®»Îg¨à¯£F’N'Áæ›4i2gΜ_|ñÔSOÅF׬Ys÷ÝwÏš5ëꫯîÕ«~B^_xáph<‚g¥Ñ?>‘·±cÇN™2DÖ²,Xfà»ï¾{þùç‘gd8;;BÂUW]å—t ¸mÛ¶uëÖ•{ˆ‘CÐý9³¿ç¿æªÖO½7x\4WÒý0çcajlþföúÁ£Ìp°þÝͦ繚^‚Å^/×ð§Q£Wn]3~؈õ[·¶¿éæ§žxrÙ²eÈ-Dqd…F‘HÕòꫯ"·3gÎܸqã¸qãð«o›ä³d´Êe—]¶xñb4*¤#D"}˜ÊÕ4í€ÐfxŸ¬óm·ÝV²dIÈ (&Ä4ÓçŸþÈ#àÁ=zÜsÏ=»wÚèzGמ=(›vÉE­æ/øMÒ}à ìm›Þ±yÖUo¹ªÊÍך©%\pzMw8Wt_AAAAAAAáÂñG÷‘ãp8 ª ’=}útÐMÿÀ¬Ê•+׬Y\_ûôéóðטÝtÓM}ô²*ܺukÉ ‡ Ò¹sg\óÍ7¸ÿË/¿àÓ×mשSç†nÓ­]»vrðR±FlwÝuW¿~ý’‹=zôèW^yeõêÕ²Ò]æ…\ÔC³~žÔô±ßÿ4§dXÒ}ƒ¹¦n0ÆÓc±ÌçÞþý³)ÕïëTçþ®ù\+Mì^áÚ÷]~ù‚åóõBÛÑ‘a>þ‹ñ ñŸ|ò‰Ší˜1cÚµk'÷ƒ—ƒsÏ›7×7IHDò°-’äsÇŽ ШItß?; y†œpöÙg# I:´KZû࢚8qbóæÍAúÇÒÕ«W‘àW$-Z3=}Ö´éUÔ¾âÒ+}cÍÖùâ¥s»=i–¶öZ¤vM­òÒ£®Òî+(((((((üc8þè¾$¦ÈÍO?ýâ›\pý† N›6 éì6mÚìÐ÷= +ÏÌBBï½÷n‚wìØ÷ýHÀõ‘]yÌ9í´Ó@j婺~Éz‘Ê”)Sß6mÚ$ŸÎ‹ ãsçΕúryÀe­Z•HÉøt˜pÀ¼îžÇ»…ñ­ºà»–ckZj@[üÄë;ÆL>µÇ­•»wÌ1Í’”õ.YöÐWm]“f¹évk§Î™™™ .”[ ,Ë’æFr‰|ýúõ)))wÞyg5HÂ"سgOÿþýsssVùpjÕª5bÄ]¨¥*UªÜ}÷ÝÈÏ Aƒ²³³ÓÓÒïºí¶ô*å† úpÕæì½­Îù½n倥¥ÍϜ֭§]9­ÉÈ7i¹Ji1ˆ.רÒî+(((((((üs8þè¾ôÌ“l‰îß÷ô÷’ú¹÷¹,Iâ¾þþÔ"‘øõ=í$'äÇ“U²©ŒÜü*õâ$a /~p 7ðmÜì—ØªFTØ®ÐvNš¶¶ÿˆÔÊ•Nìqk¸ÑI)”xžy Ë !ÌXÐ}î2)BøUäïµÅg,›8qb¯^½À‰_{í5r„ô-R ’ ø²˜²2¶bk^BŠþiÄÉñøRÆmq¦E(}{óªÉnnJ>Û0ðÃMã¿.ݾŠ··+‘R!äèQÓB®´û ÿŽ?ºxÃá0è¾42I¾ï}ž8'ËwÅ#9·ÏJ%ÑÇO’—'W‡/*ÈEù²Ô­7Ÿzgçp@«Ò)u #ª1LTˆÆ¼²„™ ®Á¼'Mš‰Dp{÷î½qãÆG}´ø¢‹.ª\¹²o씜CײÏïe1e´Eª%~T~0_¼‰×¡ÄulƒPnD)y}ò™AÛ^¹eîmw™%Ò.ú ÷Þ*eDR9¡ÁX€)º¯       ðâø£ûÈqÐC>*Ig²>ž'¹™—÷ýM«~V¤uŠIréಈ%O²$@Y*¼“sâ‹Éjâ?mÓ û? ºOR³G6IÌ2‚öšÉS §Î=¡ÅÅå¯j2ô×+6¬o–æ' Ö8ã~¹dÆvîÜÙ¬Y³•+Wʬ&K8'NlÙ²e‘}º2‡ÉÒˆo¸Oë®iãd™'YÄŠ7?ãÂë×¢šþFÖ²¦E~ß¹¾ß@^6µú=íhÉ ¥òB–F B1ƒiç{sçt}´`ž ûè>JJXròŠî+(((((((ü9t?!áp8|0Júï#Ü%¶ ‚ÏŒ ÚoòE¬0¢é¨¨8PfÂ)××9Óü€QÅ¢ÏV©ß `Rj;ÄÕ‰¦s]œÖ•(´”+"‘Ș1cvïÞíß”Jz!mÛ¶•ö<ÅZðÿ@2!H [ºÒ6¬œéF÷ͲшøUGÖ*(ÏÓŒ€¬¸eûô{*Xø[в ü0]#nQºÏ²eËNŸ>½~ýúrë°"ý ‡„¢ûG  ûqB.ˆ¬žmòÖffæï¶4=ªq+PL)(ÓjÅô{ëR=h꺄›¨UePáDð"¦Jñ„š{©t—Ô?yOÂ? îýiâäƒì tüš¥óòrw† ®ÛÅÓÖÓl­üÞ¼‘=œó[fÀå.[(ßgÌã/• {̘1Cj÷¯ÖWPPPPPPP8VPtÿ(ì5FxˆºÓBƒ¬ŒåíbŽÐ×SâW.Ãå©)BѪ¥®SÐ}±ŒX¾÷Lßà‡Ü>çïGb_ƒKÝ|¢eEòv»<ŠÌèÅt2ƒiAFÂŽ½eÅR’³'èÊM&Ì–\?"âuSÓ4Q–³Ï>;==Ýßwq4Š£       p5‹Û©+~r%Ýç º/Í{”n_AAAAAAAáïÀŸ£û‹/~õÕW·mÛfÛvòIµþù­à÷Ò1 îìܹ³Aƒ ûþÑ«ÿIº¯         pÔñ'è>ùå—_ƌʛ› оgÏ|îÞ½Ÿ¸ƒûäi³))) õçw^»ví¤ïDE÷ŽþœvïÞ½;vìKÑ/]ºô®]»ð™““#¯Añe„Ò[zff&˜ýµ×^«è¾‚‚‚‚‚‚‚‚‚ÂQÅŸ£û–eî§¥¥áqÃ0🸡·m[^#$¾nÞ¼yôèÑË–-?~¼ëºøIÑ}…£„?½U”,=''7}?<Éüè>ˆþûï¿F'L˜àPt_AAAAAAAAAáhàÏÑýX,²nš&X»|69Iô3»tĉðÿõSuŽ>þ"ÝÏÌÌ”Š|²?ãW—l|Û¶mŠî+(((((((((ü-Ú}~ødíþgŸ}¦è¾‚‚‚‚‚‚‚‚‚Â1ÀŸ;U7îÝ»¬{ñâÅYYY °,Ëu]Pt„ÁE‹-®¼òJ\äää€î#¼¢û G‘îKÖ>cÆ 0~Çq"<å”S}ôѪU«âzÛ¶m_|ñ…¢û Ç‘î/Y²Ä²,|:uêСCqQ®\9pý3Ï<u]ÏÊÊš0a‚¢û Ç‘îgff:Žf¾gÏž¯¿þú«¯¾ºé¦›š7o®{@ä»ví7nœ¢û Çݘǃ;K—.=í´Óp\ßu]é™Gó((((((((((ütQƒÁX,F<Ï<Šî+(((((((((cüt_Æ&óàúpéþºß×g”H/,(X»nm©’¥«×¨0„¹š®›)< CáòœÄö½+ž¸ˆßãEï”{—¬~(Iú)‘Pñ‘<9{É×\ä_á/ÆÛίIþAUør)òþq‡ù‡¾È#?Â1Í‹‡ú#¤ßÉiÒ¿œtŒ+6Æ¢YŠÇq¤Kzúø‰Èœ'g/y?’ÁöÈ@ž±âêŠÓÄ|ÀãË|ƒÍÙ~¢ßx¢Gyáø¾©”«qû;ÆINÚUämžh}™šœCBR¤DihR(5¥*(ÄÁ/(Èÿt?oožpÄùÛb? g‰Ã¶¨çwßeÉtüÿ×4ÝY’éþpºjýÆR%Òœ¼=¿¯Y“Vº|ÕZu¹Ó‚@@sïjò[ ‘"%%ÕŠäP0¸ø¤â­Ö9ј÷œ~صt¬â¦=íà‘ðøðÎe0o|ÔcG0wr/Ãñ‰AÛ7Ih.!öaç\¡p@'ð¦DÇû.;ƒÏx|Ö‘m…Þ¢YÇ0· Çxõ¸@¼þ"&Ʀã?‡)–KӤϢ`^øMäºO‚T 5ûÓœƒ¤ˆáã(Êc0ÑÇ9e®7Zz€÷)Ô&ÃÃ-&ÑjJ:&ßÔšx»D0N¼˜ŒŠ§4îU8÷I?MT£+‰2§†È!cñœ‹4>ÒŠ¼;bÿ-@fqYw)¶®L¯øÈsÌ+zŽ7I™G2i¹YLÿ”]a²0¯¿poôÓ|aÄü˜¤ø¨G7A÷Iü5@ ¹#þþ"¸!þ¼-s.rçzoAbÄŽ÷Ù¯©»¿¥‹È¥vÊQÓbÞj‹N¥ ð߃´…áœæàókš §hºÌ]×E#›7mÎÊÚ½½Ø˜ÁÉåu$Røí·ßF£1A÷©!ÞKJó÷îY¶|ùƤ«ßTºDŠ¿gõºu)¥*Tª]!4§²AñtŸ³p84 zÀ@Œ;z’ˆý™Qöž« rhñxz\uàI$Ú¾ Qü›œgþOMÿ$©YBGWÑø<à]$D6Wé~þüÀïÌ@ŽT·_l:X$ëm‰þ)9K|XH%|.ózþÄ}ž sTÒ=ÿ»ÿÅÁW0‹oM8ör‡R»¸Ü,^בµÈL*žs©’õ4.rù€ò}’Ð?=HAÓ%ÍGL ,œJšiÓC)ÓþRæŠÉ¡¬´µÎã]…Qîî›°’× Â,¾ŽïTÖ<&²ƒ,°ÿå:?pîNÎ9‰w~¹,K½þŸ\º* ¹¾÷éhÄï‡É«-ÿ˜Ð¥ ðï÷„{^‰øìü`Ð = êÒJ‡ñ«W½÷î{Y³»9£Ôô¡4£ÙÛ²«U¯6ñ‹ñA^Þh~ÞâE ò <íþïë6–,‘-Ì]±îw½ô %ª×qt± @é>º_$zÓ¤ºæ©m“nê’±iñ©Q(÷¹éþtíŸêCTÄó8wÔ¼ÝMÜ?¢¨}-˜¿˜y íþ7àé-½î˜˜ä}–˜'À[‘á’ñ»j+Èòv=¹' n±æ|Ÿ”¾ÿíƒÒý# ìiee÷Œ ß®!>JpI{÷ÉF¢Å-9‹§å‰ ‰ÒÑD‘}…Ê­aøF ‚˜ fGRLMhœ¤‚ƒ&·ñ\I©œÆ9œx-Ýoœô3Àþ@â9ºjs‡ÆUß'A.¬a¬#œŽR:ðn\—‘ ÈÌSkSêÅÄK*?ü™”'¤\ž(B1qÿMS±‘hqù„'òï ܱè·RNe‰Q½ˆ|È7EAá¿*%xJ¢Ö!myÄ€0=ÕFF~Y°dذaŽãzq+rIâ?ã,`Nnpr»o·Ž8xë ÷þ¾<3–·gä°iÖÚ%R "¹™ë7Ø¥NpËVͱ3Whêiñ»u}ýľ;\ÍÕXÌ`ŽÆñ¤éâŽXZuŠ×Pƒ¤È’ôûU K >ÞðêÈ6g.ÊxØÄѪ´©`õsŸˆù ÅW8Lè ÒŸ+þ—íÃ5oâŇ+jÙã èÏ:wñ‡¯. ë,+^±u×ÖÅ"€ƒ1D³ ·x^Âþ@ÉXG¤Ý§žù CçÅè™ñPÏP–%:­È€'› ýÖ<ÇøtŸiŒy”£ ú½­Q[ǵ ÚqƒGï?²#²¸£»4®}Ç?¨< ¹5]7ä3N¬˜&CÞÄ»éhºWºgS…ÛI¬5 àø Öä\“ÆM4OR@Á-Vòú{@ã+ûgŸŠ|?è\ØŠØZ0æÿ&sBÌÂM›†:8Rðâ6 ›è<. “VoÉÊókak˜X¼¯bñAü ýBsßr »^ßÃ÷T'vàäÉRü#Ë6)ÞŒÞ`ã½B$Äuä9/4Ú[ö[ïSˆ±òM`Þ¬íÆ­ðD¤k¸¤è›Â]ÆMNß²WAá’ãû.t¯ ¾„Ká=µ½˜{ù '*x&„n€V™‘Ü‚Ík*†4šŸûÑÐ!tÃÚM%Ró£9¿mÈŠ–®œ—^euö^¢éqCÃüœ€nÒˆ©À…`И‰+F]¹G“‹®éŽëÈÝÄEdθnhNñF™ž]¯L(ñ >1×RL·FPKšÌÆà‚™éð% ¿#‹YÓà"jžÐ¹°b‡r…Ç!&:MÌŒ™è¼P…õ€í€Ükoù|Á5¸^êÐb„W…ÿt×$ßpmbsaû@ ЉikøŠW¬y¿QR ¸xCýûÔ³t4MÓ±Ý+†é¾À¶mÃ4åµp;&­”9.‚1Ä"†W*O*ñô™ÌWôF°ͱLÏ=†®j„,æY8ଛۈ’Šìapól‘ä°ÆQbÂÈyÕ©G¤0rcLµ½½Mx„zÜ)®ç…€qÙȺfW¹»¿(Óñ*‚ù&Džk5Çqôý¬‰â3 Ê®!*Hdì^PLL D £¨0‡9‹¹a:nœî늛¹º·p+ŒP¹o•ÇÿºyˆQ˜Ç›)ɾÜkŠÆµÜX±ód'ƒê¶ÃEÃ!ËÜÂPɈÉtpä@7JtQQ‘¨&fˆ]rHQ 0¸¶0Mn[u)_Øé‘I!aÖ ŠO[,¿k†CLU¬»"NÙÜ—ÿå¡kÊ—€xÛMÓ°mÇ0Ä;£‰E6Í]‚¬WŒØ}—¹¦n:è§T—âžl#Eãàý[mÛ‹fãu1CäÑ£âo Ë* ÿ<ðž:6ß½iëo?^qV£@$ÿãaƒéïk³32Bù‘œß²Ö ºŸVemv§AO‡pøêm¼üA7Vä±€ØÕeD™Æ)X0¸®ƒË04ËrÂá@,æxáã‘c&Æpƒ¹6fÅ0`ù>Áã BÊ£ÅÂv^À)´hÈ6Scâ1a[Úý#SLæhêF æ™ÃÛT'7'©}E Ãl­;BõöÃh´0Íctµ 1m¤”.ÒLÔ³.X‡ËÔrÊx­MÃà±HìÐcÝ̳ „L!2A[ iˆ‡#x”k†¢» SHé“ ÷½I #PüfHfcxZ\xºŒ'R`°,;%%‰D5Csä>'×7…G +Ÿfà :fª#ö(áfºÏ¼ÁMÐ>¿4‚õCrA‰Ì@ÌöúABõb{ƒ½ A€Rl¡˜7=òçx{^ H/¦™šS¦»¨1¡ø¡&2̆ØP¢>›cÞ6®ä%`Ç„ã­ëro ƒ4jæÌJ1Å8Õ£T³tÓ „§`u¨(ÎLÓyÔFŒ¸©›žàijÝÿ›é4êSêÀLÑ þ`îÉ\ì~`ÅíuC 󨛪»'ô3 >Ẩþ¾ˆ#…ÁU!æ!‘jbZÇu½_Ä– ãžëÐE; 5ÝÜëZP·u&d‘Â0~1 ö†5×à®#¸8z…îpÈžP ÆkAìîý«ÅÑ…Ž’‰xS¨×O<‰EÝèŽÈ´¸­EÑǸÎ,‡XèÞfÐ"†£¹ĸíðŠw–X,šo'dˆB¹Ìļ̂©Ìü~ä›B‹_©SPPøÛÁ0|:6Ù••ýÛœ+Înˆæ:”®]·=##¥ ²sIÖï±R• R«¬ÝVHãtÿpרՙn.ÿnæìÏ>mÞöúÓ.jQ`1l˜ÜÝÎB¡Paaa HÞsÀ¥'Œ8†áÌ(7¡h+Œ¼­ ó¿þlá”/ê6iÞêúQ=$t,kä| açÙ\/W«Þwö i%m€ãmz:\å‚góÁSitáœi3>û 1®×htjÛ.Ý-#E†Hƒò"CÔ3|òA½u&¤ê b ±£+gÓº/Þy›îÙ&×°EËm®‹Â…¿uSãÂÜ.•l^ýÛ'C†Õ=»éemÛ»BÀ¶HÚßÍà¤&t:¶­s'™ì{+Ú ™&+Nå¸$=`ü6kʬ1CÀ¥ÛÝó`‰Ú"FjèH¶A!x€3ÛŠ–X‘ žu¨·1×uÌ­°a/öÉ!YK×^Ú®Cã¦Mò5ŠÕv]:ìᑽ!'Ì w²W/„ÂQ‹µïrw…S›]¬93¾¯–Ù‘¬º su!6Ré0Äu0H‹Ìf(Æ5Ï’‡hÜ ÚùÞˆýžV¸Ë“]‚r•:t¿¿DÅjù6$ô€·gÏ ²è¦e‹>2Pw£ºCCdT¯{ÓÝê%*X$€yÝ{S~  ;@½ Þë]¶ý6çò³±ü§«×m/•ŽìÊÌú=RºJnzÕµÛ":S?Àeƒ÷öâz;Šq溰Ùe¢žZ°g+·óp¸mÇ[gÌúqëÆß¯îÜé„:§ØzJrÓälÝ8îÃ!‘ì z0,‘veûvß|õuÎîüv]*W©ø/^[ÊL¼?»W/x÷¾Ûܼ¢ Õï}õ­²ÕO²T±TêZèš¶­YòÕð÷øÞD3*V=±Y«+¿ü|| @ÚÞÑ]+}‚m5f¥ëdî÷ß}Úó1âì¦$vBýÓîy{˜S¢ —ÎÅX{¸t_8õ´IH³~übð¸·^›%kœ~ú}oõÏÓS=‹%;{ÓºIC†ð=9Ìp]§À/µ…ÑIý λô†[bnZ :r[¼²ÄÙ¼zÅ {»‘œMàžçÞÜõÆ»*¤G¹z4Ïž$äF×eÎ}¿çýM/nuËýOï0R™™‰9„I ’º7À%ÆI3(#û„(ê™v»òÀä®ZêÙ°ËĻڌ0ŽlY:s™5#óÿÆjVD,ý‚L ž}éç´ººÐ%©táê†B¢bš‰Ñ BIȈ~÷íäÙÃ>Ì[µ!î{÷£Š§^èèZ ï+'q‹ó„¯â¥.„=ͳtÕ¼ÿ={zéñ°û¦?n£ Ô‡KX€ê)b4͵öLüèõK—n€[JôÖ×]>{î̈lÛù”R)G رò74¦WüÛ½ñÉWθòêFeŒH1—¦"w{¶|þáàœµ«7®ÌŒän¡+Õ¯k”ªpC×{+Ôk\HMð~*täLì’#ÅŒ6®n‰PNNž½4·2˜P¸yóµ·5 £¬ÆÂè«—5jhîžÍ<¨‰eX›åJ^që]eª5ˆ Ã0-Ä£©¬`Í’Eï?ô)Ø#z¨•[ªFî}‡—ª~‹aBIGý™ÌòèÒ_øTOË¡n2_ºöɾ3„—ªÊta£$$R±ÄkŠŠ¤$®”=CäÇÁfz*<É+¼Î ñb…:1ÕºÜk1±½Gô'±†Â½—(!NHÉ‚y›(H|þõ×½ùš‹Ž&ºÃì"Ó{T RÌYä&6+ˆ} šg]%¦BnI~o½•ð Ž×ÉÖI‚ x«`¢Àˆ×–»âYâÏõl´Då ‰5ºÏO·EGóä3Ñ?ãò^‚~à*jz[Á¹˜µÛàâus½Zõ6ùhñu!Êt¨YãÞ»){ŠtÉ¥É ׳<”›öy\x¶‰Þ–&Jôø&•øÎî(×¬Ä 'w¡ˆrè¼´x¯ä,á)€zˆ4îÜ5Ñ Tî¢ Mß=.÷½9€ˆqÌË–‡ ™Í÷,F⻎˜ìÔö4È ï"-¼füë¾EΣ­tY~Í󳕨¸ÿt a•êוߘÂg‰Ü·“HT°E‘[WÈÙþÛJã™7Õlê} ºÏtÒðªT†!qï¬]¶—ž4Þ¢çë&ØÞ®Í[—|wÙ¹õ¨½çÃGÒ•ë·•IOqòwgnXŸW¦êîU×dG,,¶½`—)‡f!ý‹ÅÀøø© ûN®Û±mÛ3?îõð)'6:£ó´öÉá|³×¾÷þ¬wŸ8¹L7£Tó[´¼æÊ÷y89¢Ò­z¼tÑõ]YÀˆY-–.z¨Î=;H­œ¦›®#æv¼L£H{~_½}회ê'•¯YÏ%µ<*fˆ~¨kÌwฦ©»ŽtÃŽ²`9¨J—˜Ô4\ÃqõÝKgÏððÎmÚõ…Æç]° ÀAœ8÷%ìmObžÿ`L¾ßÔ‚æ½D`²Žîm¥†°U~ë¼û®æúý‰Ç;1¾;݈QØÃs×væBÑÔÔÛ+2'lâcâíEçÆÄB4Û6Åþ;Aæ©aÊ}`² ¡T‘ ’,̉)f¦ ƒf!.JÑ}4àªP7,ƒ¦Ú¯g‚©Å÷íy•&6gËižDEôàúà ÄqÝ€z.× êNAnöÌ©_|7ð%L*ÝûŒ4ÊÕ´…9±#%G]èœ\1 »S4§Ži^tƒ ‰aTéÁBn†0WÆ !°1-‚™BìY7]ˆxZL·„YÄôRHDB’ã&GêhR šâä…¤pÜ=†·Êrôp|µ‰®‡®àâõ1L•£ ø*Š})Â0ÄT›Œÿr‰]šX¿¼?ðÛñc´¹¢UÛÛC%«EÒ‘ßW¾w'+kÚíÆôTÂbšTÃÊ¥ºÛí…w*\r»eð|²aÅØþý2žíîÑM ®¬NÃFY6F#…Ýßy¯Úé—îåi)n4²qÙ'ß^ûË4o·`íÁ@µ:µ·lÌriÊ}¯ ®xÒ¹±€ÎÍ\ÍI±õÐÞ•?ìÖÞLOo~ûi¥+×?½‰–V®Ð¡¡p؉䈽cm港mûu¶îF]Œq)¥*U©ºiýú”Òåy{H¸f£FCF‚‚Üœœ5™ËœUó§y½RÃ3oí÷©U²\Â$Þ01Rö) lÄäÔZðéÛ“úöªÑ¨iÓö÷h¥Òëžu®ÃÒC®í‘ «{à~=;Ë5,ñÈ6„aµAÊœscçËÚÞë𒎉W#¦y;» öænþuÆŠ¯Fý:gN“öw^×½g~°”-Ô+Âðãÿ½[°=‡’4â”'Ô®°mǬtŸKU¯ÔçÞö¹Ë7• ';1+µëÕ¯Þm Ï9¬0lC îΟún¯Ÿ§}Ãtãò[:•?áÍ›W&½méÂú\vóÓ}ì=¨sGH‚Ôë2?ÙÈÇw"EÞœ ¶gŠà‘H*x]ÞÒÌþ÷u¶ 6L¨– 1&T¾T÷7dÔm3R#Ï@§-Üi[ÖâÅ¿¥ÆöælÞ ¦9-bèÞÇy¢“hÜ;uSŽéù[Š&È¥’À rï^×£òBxVǦ[Œô”%‡x_Åna+&–Ú˜ÜU§ÞË3oבHQÒ\]LÓÞñ 4î-‰'.§_žì!Φq¥|§•ÜóQiç;·m[2§õ¹'êöÎáÃFÑUë·–t?'sƼ2Ur2ª®ÝV`A¼ \;Pá$º€·ÁK,YŠ]j¢o s˜Ç–g~?ìÁ»î¸ç‘ú×ܰEO)ᄃDÛ’õÛw#__<}|å:Zt讕©R©J¥ ó~šùÉà­«—œ{ÅõÍnìžQ£Z.d²<žê9²¥gÓPÈ'˜Y ì ÍÀ €‰QX ò³M7ÝŠ¥Úz®–žGš‘ZðC[œŽ9…©`}‚Å¢ÍB‘Q³t4ª‹·Qh¤b#Eè÷‰^ÖÚ1ú…nsg͹è¡×.¾ú&Hª÷4ѰxÍÁ….ÝÉó|KJÖ. o,3;45#ø¯è^ (<¨yŽÐ} &(4ZªÀÔþg‚%£™0\$á†LSª–¤<`†ÇÀ1û¢œè¬ðÚ„®Â%1ÏQÌ],È1ÍŒé!=„IÖ8V±±PŒÛ<€1ÚI¥ÂÒ7†ÎCµô¨x«é¿CÈbãŒãAa Âî:fXW,— ‚á¸'ì;C!=Íß´vÙÐו¬Xûî>#j{çÑÄ(pˆÌV4…É´¡ˆµž þܘ[‚ò›OYÔA)iB$p¢¥ðƆbõ8 ¥æÇ@0"ÒqGsbiBŽq„ù²˜?ÀöI$ŒØnšžbˆÝ#nÌ^SŒâÔ9BsëÙU)dÄB“;…–M)‘çÍLå…ïáhÂpÄKìêꀰ¿†˜áfX…ƒºÞ±nùÂŽ/½tú…WXÓèÂ6Ý^²¯(ˆ 0 –•¿3ó³q³G|˜Q£Ü™7ô ZÀdÑ• æ,šòE°\Ŧ7Ü~i».–,‚`¸Ã$eØÞIï¾ð͘ÑMÚß~ Ý7\—ü-ëæ¿Ó­ÛÕwÁ AÁué¶ Ú4©H—Qšá /D¡<ŒòRÌ™4²ßGZ»öžÛúªêg“Kh0`ÎùxäŽß~5ÊT¾³ßð’µO\úó´pî.–p›6¦ïÎÕkozƧûÄ'Ab:uŒ˜Nb¾~8þ)z¦øcÄ׊ROÂÔ õЩÔ=G€È]ÌAuT¬Wéq–G¤*Í“*"L‹ÊSG}úf ºÒæB ur1T#ÈHHRÌýÞ¹…"][w„P]tTêmo·?KøW•޲ÁÀó<߬Z¢&E¢H1èxœ5ƒÖ©·áR9 xZh±E—r ᳟ì®X'Ð$¿‹R1oˆÉcûUˆÇßC±tQŽæ Ì;«‡zÕ%òjp ¦®§7dQÚb©N*ø¥œ<ÿÏÞ{@Wq%ë»OŽˆ(rÎ9çœsÎÑädãÆ6crN Æ&眃ÈAd„’P–Nèܯjy®ïÀ]Ëþ=ïóÞL_¯¹ZpÐéÞ½wÕWU_}eˆœ!Ÿ-²zyŠñüïftø7§s’j÷Ç!$ƒ/ÕHŽK¤Ø‚ªpð8¢gàÝ~¬ýû™ä$¶°›yÕ€ MÏ®"ÅMÉiT>+wÕ'cîŸ>Õ~êçͺõ¿#[,K pðá15ÿZ3~¡€õ×Î&å1ŒbyÕ°üå0Ré±ü»‰$†V0¹Åš¤€þÛÃmþô…@S׌)YŠ/;cïömY©) DZº)ºZvêQ$*²èÔ(8Ưº=™©{·nTsÓ%Æà-ÖÓdys¶ì;ÂV¤œÆ‰’¥ÈÞ×ñ¶ló¨>Z¢IHõ4áÍ:w‘òWÁÍF£ë¤š€Ç­'sléC®©£„™ñúQÌñý;YS3,3¢PáÊʯú`¤#¢Ô„E[ØÐ¢pŽìÇi¾äçOŽîøU·PmDeذ¢Qú аL{’ŽoÛh¹3]UjÔ»xö´©yËT©Y¤dÔ¾[%§e3²x¹ú]û~bUtwòó[Ö>ŸŽn],S¾j£6ísÞ+ÀÓˆŒA˜_ÃúúKXäמØAÎ eä7ñ÷îÞçS1üC|†li«b&•š¶õI.ä™ÿl}’³Ë`T§/óÇÉÓÞ¿Ùû«¿UoØv±êäÍm%=˜?q,þä9kó•« ¼H«‚â™ÿþÄ—÷cú~ôM…¦Ýh†Kvwñ”ž¼‘ÝbД*m†ˆÁ…YÙwïľ£ëçgf¦ùaeñj4ƒËxtmùÌ‘ŒwÀðá¡FI¬]ÊÌytêȶ—çšòèEËòU®Í«Å!Ü×9[êÓ'ƒ\ãÿh(%JìDÄd•ÄY¯ÞZ=¢Mx¡¢F}P¢Q7YrzÓÓoÚtjóRÆ>yÞ*GñŠ2Ír,›*Ër´i¦Þ:¾dB¿ˆÒÕÇ-ߥ:C$CÅ#f·ÿÜ« ¸äÚö%‡|U®I·á_¯É ÐöK&~Ý'€ƒṖÿ^‰šå¹%›¶lvÝ{ãܦÕç*Ú¼íèï~Щ@’£4Ìá1zîåßžÿyC½>ƒÞ÷ªy^Ä]]=~ü€1SË÷ìíáì kn¥_‡ÑÌËã‚ÏÓýw´b掠s¤˜fX˜s1Ð[û My5’ºãP1ɦN¦É9·ïç½ ¿©Ð¬å¸Oç¤ ÁŠD‡¥ÌW‰&5*DB@þ úØ™M+î?¬Ù¾cŸuìÈáKv®Úˆ3Êpì#&a`Ñ ‚™X$²& U uL1+’@)XN§£?øoïŸBc2Š öJö]Ø´îâž ¹éñZjܳoP• i(n¤¾>wnÏ·ßø(sø¢å¥*;E†õxXÞřʊ™½ã/E÷ûd‘é‘ìCKLY9¥kZFî„ùëó•®©°6‘gX5 ó¯¾ûøùä•¿JKhHÑKÑhVeù·7…  ,+@Y[’EÛÍæ}‚×X2¦Zå8·é á3´»×Íx_a¹‰}¼îûù™99S- +SSá]†iØîMb9åé“5Szó6zȲ}΂ÅTÁ¸d,‘DPžŽrXòË;VNž/òm¸¯2A øÎkÆók‘“Ü;,>ÍÊ& ûl¼ËC &á·é¤Eü©Æ¢Ø·]ó'òI®ñ.VãýÀÓ°ßåÑE(0D:<8D v.bö‚ßÎîÃö@`@ pW¢Ž{F#F¿eåóDWM‚yüŒŸ´CÀ¢RÂ᠉Ƙ…ù~¢E”G¿A쯵¦ß=£AJe¢NI~ÌCûO1yL¼?ªñëk¸Sémes?ŠdñY+OªL'NôËòÖöï#©1Y¡™~(ŒÌaC"Ÿ€ß‚pß_ñ o–aãù™<°&¾h Ô ÍÁ“@¬ùI¿…^¤òÀ<&û9 œAŽá'°Õ2ˆQe‹!Ä1™×¬o¡V¾9ì4ÞTySöçˆ Ö“¬—¥UX ‹(Ö™ýæô¦åñ÷oÄݼ‚<{ŠqæË_0ªDܵóE*OX¼… +J²™™tþà®·n>»M _`Á{`hí¦-à nÚ½Û‹¤ó§12“y^,V¦â“˜[`ÀB vÈÿ2æzEµ…D6è;ªaÏFÆ«3û·ç$ÄÞ¿pB—eÂlvF–(U½nX¹ò ºöð€×a!>aE¢Úb¾£„Eò¬ «jnbÜÙíë•Ô„G.`ƒêc1ë X¼P¯÷€®“feÂ~Ö9ÇšŒÿÚeYîÓ?­¿µmGÙºµ \  kI¹ ¸BÆJ¼¿dêP¯Û3kÎòÀB%Ü›™öºy·þÏâbs23*U¯^´Œ¥kiñ—¾?ÊÌ}S¥]ïÎC'q®4ÇÓšïÂÉÚì®Þ° çŠäy)7öú‚ÉClzvóöí*xß޵ÀìÔÛ×.¦{•rÛŠaQAªAsY÷eŠÏ½´nü Á8nÙÏ\¾’°÷ ½øøåo^Ä-ÒÁÖ°ÇÀæ}Fyxr¬sßÜ>wPU¥†­ÍàHAÉ!°! #j†šzûøš)ƒÃŠV»l‡å ¸Ïšœ†^ã뀡Ÿ×hóÚŽ¥‡|]ºQ×Áß®s cø$õèÆÚ“¦ß°hÒ„’5J¾÷Ùj÷èw®œ]½òÎõEš´ôÃ"Ž Àþ"q¤@Ã{pÕwÑ›×ÖëÝÿm¸΀¬Ìôø½s¾u§¥7;¶dÝ”,šœêïª"<ͦ|Œe(\å×\§iÝòÇל†„LƒÇ:£J`¢AçbD„Ųnø ÇsËi”M£.ìÜpxñ×›¶óÅÂ4ÎAXež³1–¢Ã+`8Z×CeÿºEÇ׮Ѝ\«Ã¨‘.îŠÞ{hô‚Ū64M_Ž–¡UE@–0fè½dÈÑþÁXº3ÎcÝ %Lúê~Øð§ aQyJ4ËÇr9¢éðy7Lœð,æB­®­›÷œT´D<½M{*f§>:}BÑÜe·`ÂK#ƒ”{!Ø,eýä.ñ—/ôû|aéö=(ÊeÓ)€û`€…\ùÒÅŠÆÕªÛÞéÌúr¬fY™gŽn»öãrMf®ÛI‡DR4,¿&è²…Ù¨‹Èö¢²*@`¯šBHDÖÝÂá8N9‘ ÃL Hi¦ à}i@î9¸ElæFftC5Rk±ü¤exo –¶`H†—‘›…dc»J†Ñy:+þ‹Å¸CG}Ü¢°WU‰VY]6x›BÙH¶`: Z­ƒë¦ €`@hÌWæ~æøl&…"Ò|Ï& ÑØáñ5´„ø£Œ­.^2á¡ Õ ë§ë¦e÷Ç Ä ±(# ¿'„`h åôot,’gpì‰Åê€8Ì±Û ,‡EJÃ?ÝŸw·›>ƒa|ð°))Óa‰®šèÉbbÚ˜W ¸wV¥‰q25T[†ÿÍ‹»à ÛýL#$ Ñfx™‚üv”-QÍ%-d-ŸÃÒ|Éoîßh]·,§enZ·‘~öìUp SqçÜy™p?7(2>!=ãù«+‡vˆ¦çw!ͫۮR:áØ‘Û$£nÏbά›6­I›ÖgÌróA-“WÅ:uïÕ+·-ü¶J›nC>þ![pÁcKTÎÚ&ÄŸ>Þ÷ƒ+uë­RâõèÓk—<¿r^PáÊ5j4j¢ªÔý+—è°‚­‡ /Q^¤¤Ïn\I|x‹¥=oœrýv¹NƒÏø …]ÕIéw.žL{sûì‘äGÊÔnÔkè8Å öoœóèÖí²õZ©T¯N›Î|H„)Ù,Mà]*žŸæ}zçØþÖc¦6í?Næx'{oa‘‘óyÎïÛãIzE«^MàI”E’¯Ðbý–ÂÊ–“±Dš}þÀîÜ׉6Ó$Õß/«øLVåU¶(V©®Ê€ó¨†6óª/'îæüãxÃÛ¬uk[@0œg‘³¼ï™ã's³<Óæ/¬PÛ+¦¿|²lD;žgÚwêd³;}«Ð¶,¯~åðvJË™¹S·ÏÐ>“>Ìá4dRÿaâõ®w]´š±|òèäëw'̙٬•̈«@mIÆË˜Ó{Þ$ÖiÚšs¸®:ìódŒX¶§D…ªö÷£Õå)Ó“~~Û¦KÛ7™”^»a}GhtÍájÑ©Gh¾H“¶ù˜]Õ¹Œø“¿¬¾¸çžc«7ê`:œ>Ï9ÅvíÛ…öÁ&@IS¡x„û -ä<Ž^ûÞ@1È5fù¯BDY*¯Ç t @¡’›ytÍÜëû¶…ÖjÐXáƒÜ–Ö¶uKÉ& A9´ ¼”Dá< ›j¬¤[GÖMYºú¨…[Í 0ÁTp>¨Oõ'à>‹­Ä†î—iÒ}ÀßVùD‘1}ä£2¹r´{÷–OyO¶*Öh¦ÙDÝ’³ž<ˆ‹¾T h™†£&–ëÜ; ˆ›Ìƒû&Àý9Ñ?­y'ÜGœŽLd_ÌÏ?î\<¯Õôi zޤ¬`ó’vCp³”M7ÒžÅ^<¼Ñe IrXåó7ÔœT¹fݨº </¨ž„ûw®Ÿ:f3 ¿!MY˜éóq\ùM‹V­ÞÒ9A®í^¿oá§U›µþù’t!„¥|X¡Åb«Š2œÀúÓè“G\İl‹QS רvpé—7¶?o[Á* àÉry/`w^QîE_ˆ»uC÷‰Ll‹ô€GcMIjØ¡KP±â2+8dõÖ¡ƒ/âò¦ŒYc&L  ÀÎ×ëÞO-î½F{~÷zÿ_oÒ›¢$ìeÔLLôpšAy9Ý˰NFã܂ݒ7Méwél¿/üî»E^¥CatVG98ÖŽàC÷Ó¾s{7ݺޛ”R³û ö#§QÎ ðµjfêÙƒ»µŒdÞ̳6~i‹tBÔì3$°`NSôœÌS{vëÙ¢aðD­Št$CXI)¼Øªw)¢0¯:8UOzyuÙôq¼"7ìÛ»f‡v7Î^<¿iµ¢ø&¿>¬|=C´£NØ–ëMìã “{I6zØÒ=Ž‚Åì:Â}@TØÄLÁ.‘ “vÐÊ«{—–L^ ÿÛpߦ©©O]†õs%`1`1ƒ mÖ±/:yÍô¤¿9±o›éÎ TlÛÕY¼'€(…J4éÔE`L3î”7çvm¢T÷?|#¼ýåj×lÞÂà}™îÄÄ3÷hZ6œÙó¦_4JgÄ«×lÐÌ+ñ2g¤ÅÇ?°GT}ÄÐÃwj ïeÅR5ëV®_Ÿ4×™ ÏŸ<Ø·ƒ³þñìûh±rÃæ¥+U58þñã˜Û1çÏÚpìÑŸ Ÿ7P0WªÛ¤u± •29†£ô‡W/Æ^½,*ò”0šÀVdö¦ ÔoÝ&¼d)…e –}xúhòÍKþýó÷y&¸,‚£yû®¡‘Q&/êªzåÌ‘ÄÇ·y]fh‰$éQ ¢ ÆæjÞ¶³X¸D–¼æ½p`OƋ碦“!ÁxMNUXí iÞ©·œ_el”¡ßÙµ,îØÿr¸ØxZ iÛ.¶ |4àoÕsöàö¬×Ï0L59?a?ƈΰÈfºxÂòA(kf¦^8¸WIO [ó`“ÑX …‘ø‚-{ ¢lÁÈÅM¿|`³œëÁXE3üc&,<ò–#_DË^ƒLÉËéNI<{`§åÉÁ†?•§uÀ÷Û(ÞѼO?="ŸÃ2½¯ÎìÝMyÝ$¶ñ·#§„¶´ìÓÏ Á¾ÓÇÏNÜ/P*­C„Hšsý5†âƒwìa Íæ(%î~ôÑŒ&³¿‰›aTÀBŒAÙ]õ»ö¢‚#$ËHxp÷ê‰c`²à,“ùw´¿É[e),¢AÇ.\P~8‰—Îß¾Íh^ñ×[Xà£"Å9X¾lÑÍ›T¦Œ¬Ü@?öà¾Ï“ó21'$Òã*”’uÿâ¥-3ÇRFÆ[nY(7èƒAcÞÓ°û‰·òZ¤QÐ?áî™åc'Âái5ë#™u :™šqjòµ+vÜoÝeèÇó²… xA•µöýIÏOŸî3ë“r=ûç°|!S>¹lÁÁõ+#*Õì0|jÉ:M4бSʱµ ŽoÜ4ú˹åš6óIN¢8Ïš@qÇW}zÝú ‡ œùµ{Lýï’V)=@ X_ÖýËg÷nÞ(JÝû €ƒzdóú,E8ùƒüåkê¬VB)1uƒ·}7ãîÍ]Æ¿_ðÔ\œáƒœ%ÆäyˆeïüIï%?¼MinÔ ´H;1:Ä”% þ|vÅ&-iIÐ3“Μ”òàIÂScIþ‚¥°ö*vš0³y÷ €t?Þø{!ðÿû¯=;íØ¦…—÷üd符-Z Î`ÕâxFÑå̉S¹9¾j-;u6Þ^´lê‹øE;K©~óƆMâB#ê¶ï¦H7ïa2’ë¶ï͆÷¼|ðÃÐŽ¡.±jóîºMÌÔ²u;ÊàŽœ¼CsuZµ åT¯]ÉùzÄÀôø§$fa°1˜Ò0NKbÁ¢3/-åÍQÎíßzéø®¶CÆÔhÒÊbަÓ_'úõ§{»¹Š–{oÉVÔ-ÉJ¹´cÃ¥E;W½S'K“mÅ•séè 10¸Öà±MûôWâï/š>^ó*ÆOoڥˡÝ;Î|ý©£xåÖ£¦4oÜ(ùúÙ¿MŸ^ºÚˆ¿>´Û«×uíÓ²K/‹·CŒKúó›‡6.OyúºYÏ ºuÏâ‘--¢«§Læ9$°" D†¹þØ/M à›·hž+ØK·i_¢p±‡wbcn?,S¡fÅ ^Ð0òUÞþ%ÿ¹þø%¨éËÆO¸uâ¼ùaÍZ+t€ –•UËf½º³búìøÇ`|(pj–‡çÙ¡‹÷¯ROgÁàë˜q15l˜Î|syçOÇwoQs“qø`Þ^»C·výF Ê€Q²,.PÏÖSãlß½o?Ùž¥l|­V-{%„•q[N]Ò¬ÿî[„8j™d‚|5¾#[W]Ú·ÒU$2’رGÏÚÝFÐ!…shÉÄIæ*VViA£éä›Ç×NèW°tÕQ‹~1‚B9K&r%ÜWæ!žÑhýúö¥‡|Y¶IÁ[éE¸/ÛðÖ¸¹¢ÝY1õ=wÎS Åø9Rû4 Eí0xTÉ=Ò9—H²ï~2¬–ËôZõݹÍëêõøŽV]KPpx˜óÓê}Kgwœ6¥^ï÷#Ä佘½´Xδ–qóô‘Ÿ?ÿ2}”éE…øçF `[Ùqøï´iî+‡÷þ:ûK ˧1 ¤ÖŽ@†k3ir«¾ Ö:œ{c÷Š=ó?©Ñ¢í /V¿‘B%3×a)8Š À5Çz5#Hv.›{qãÒÖ={´›ò©Û&îšóÁÍíg-ÞXµ¶"ÈXbVU§i¬ž7çÞ¾½Ärdþ®¿ßw”è?÷‡Rõe›”K÷®ütê£s'ÑÎë ±Ò,†“"O³…&-ÛÈÔ(eËMß>vⓘë=–Î.Ѩ›%Ó€3ÛjªŒªp:+ª ”è€/bäl–—,}Ó¤>q—Ïõýrþ[pÜ+3†ÎÜP–riÏöÓëV{’“‹6j1hÚG\DqÊp¿~¾ìýÉÞg÷¨ß§áÈôMøÿc–\‡Hý¶ÇaÏ)š/úÔ±cŸM Ì·²E´«ãÄO:ôêãÖ!nûåÈâ…øÛ(p4>|³Ácë=ý£æ{¤[”ƒ§¶­Y½q "“ð0P/ND–'ŽøâËʚȀÏYvÛ¢/îìX‹ßbùÅ<Ú KñáS¿_R¢J]µ$]üÕG±'÷P–8w,rP(qÈQùfÍ]^¡’&r’æ^0srüå HûòcŠô²v.´à´9‹"ËTòœ¡Ékgt~y÷FÞwýèÂHbÑJg/+\Zü¬º¿Ÿ<"ûñmʉ‚€ŽG….õñÂrX)8÷jÊËEïONòï?¯ׇ?0’«P©–oƒócB3åÎⳓRòîÍú;ž-RöëÍ{¼´È°ì›§gOAyÒ)Ý÷¸‘8Š·S‚ó“u¿ðÅÊ»h3þÆ•…3&Ü'oÜò“&¯U€hü³u„"…Ùf^?7æ$JóPº }”?ÁWÏÛé°‚S®*ÙÚÍ“ýr¥åb“ ¿MÀ?‡Šç‚##§-ÚHäè“;Ý·à{rXÈYFÁ“ÔÛØð2å&ÎY(„…MplÝŠ#ëWS†7ïMù¿‘)S ÊW`È­›Õ ¬œ ëî¿ pßó"17¬ Ç•?áUJæóçÑG3o%>!ŒªÑ¤RÍš’ðQ‹écúËÛÇWNœÑ¸C§æŸ|®RvÕUæÀlÜ_¾oá7ZwöѼ\!–ÝÊ\7crÜés}>ü¢TïÁ™,©úÎ,ýþÄæMz ê8á«>”æy§–{nÝ7'6núåå›¶Êå ÄߨD± üÕÉuK+wÙú×>V"D0‹ô<`_?«ÉvJ»wéü¾W9xZ`éÌ\o‡CË·i—ÉÚL‹—à 4â0…‡ð‰Ýùí´{û×t=µÖ™²(‰˜×fL-ÍsvÿOÊ3ZõМAûTiÎÇØj·îR¨x¬–ÉYïÌJyÁ$ƒæˆ£™˜¨ªV¯QñŠUu^Òͼy@ñ‚—ãKx:{Tw:÷5„’Èwƒ0BRÊKöVÖ ¢?e‘š<¹9GVξzô¥x(–æµ[wr`Á5·¶‡T8g¥=?°â›˜£{ÛnøÐº-Ú9ò ù+5jn,¤ÒvNSD5ãÄ®M¾¬TœñH¤Éàÿ8\.ž mؾ½= Èž³lú˜@Áœ¾lk¶°Ø”5‡áK³tbG[þâc—þÌ…r'=_1i¨òâ!ÄŽ*åÀ¡Ÿ†E:”å” ¨Ð`ò‚ÕÔë¸ï?˜ÌZÌgk·!a§Ž<ùÅ{¥Úö<{•¦©Y·Î-?,¢L…¾“¦-Ÿ968¡‰ß­`"Ë{P0ÇâsêÀ–/敨RoÚ¢E©«rXà$*œïPæ¡8FÇb¤éy{hí§YŠv§d“Æ¥ËWõb©ÊµJW­¡³œ‚ù/Žz«Ëå?ןº_òŠI#^ÞŠ;÷‡ðVmeÚéÄN E£ãåÝÓ»Së4oÏÚƒ®>,{2ÇÍßQ¤R™ƒƒlò `JÍ`^7ÔôÔ“‡÷™9i‚îåTß•3'Ý™U:÷l1b²#¢n›æ±ë^wFêÑ£G O2«›¦Ûsûäq]óÕnߡŰ tx ìk'ÜýßÃý±ËáW’ñÛqtG¦%ÑJvâÓ3w ¿d&%<>Œcê}&´è5„ɈˆíŒ´nÙ4†NºybÍ„þ÷oÕƒBYʇdY3‡t±H‚O§´Û—\ðeù&]‡|¹R–x‚Õõ\Á¢Ù¼{{Ù”QBV¢uWÁM¥ß{üàÖåð %›\­E… &úƨ†Ža¯A›îC+gŸÚ²¡^ŸÁïÈÁVPl^½û‡O:L™ÐpàtŸÆRnìGDa0ˆZ”´.ÛÍ#ŸGò - 줠°ŽŠµ–ªÞH£8IÏ}ýøÆµ³G"‰$ZÆ Ї÷Ͱ6ª\K§DvR¾½{ñÞùWkÑ¡ïWëRÄ|v+;Dq_;}îYB|Fó-þ8æÖ‰—§^;Y¦\¹È†mw<íÕ³K'Ž)^<²pTµfí"ÊTÍa Úàž3/ØæÎJ·~#^c®”p#à‡z]G¸òe EËI?yhš“Ê#¿§?^/ºrÕäÛôj /êƒø.ýÅåŸVžÚ·™Øfmz !º}øg-'»f·-O’Âòc*œ¸TÆÒRbcœÔÛ!qC–í— —LÂé(¤¦¢ aྜxïÒÒ‰£Ãó~îéy÷øê©ƒ¢æA¢ I˜!=Zõš¬M+T§s7:8ܸ;îù僻Xú9”À|E´ïnÚí:M§=»ql/gåÄ/)ä,)4ï,Õ°}OJtò4ãKO9³w íIåHîŸ ]Æä¾a:öÕïØÕ‹œ0Ê›’raÏÏ”îý‡ow^ªz­æ-4ž‡£$¿>`'¥¦+Çàh€¬ÂØŠVª]­A ”ÔµôWqçìLì RGbT<´³lõUjÖC. e$<{rëøö­±q2ÃWnØ4ªRç 2ñwn?8w2Pñb-Ž{²WÃü¨Þ¤mT¹Ê”)Àv}xíÜÃçx¢J‰52¢HGqH±A‹¶ù‹•RÿÞ…£‰w/û÷OÞÔré4Ó´CWÁR:ï` íúéý)®‰†[åœØû_ €œM{HÓ¶Ý >„ÈJÐ<çnÏLxÊ£V* ጚÑYq¶hßY ÕYÞÒ›¶¤%%kýnm-¤Ûõàƒ#1Ur.Úê{ &Q{ŽÆ– kkÏW¬Yû®¦=ÓÌI¼xd·'#™¡$KØ·:à Aa­ºödm°JvÂ…#Û}9„Û¨ÌošMð̶ÐðF½†k¢ îÇ›ò2zÿVÚß”Nzq4ŽS\-{ b‚"œ›’âÏØi©TvG¨iêG›"#¶ìÙ× Î[Á÷êù©ƒ»í”Ó<þ|<¸0„‘¦Îækб/DA¸©§w®ßÃè Ü;é€&¡Hã¡í.W“ö}9g¤@i/ݹzî¸`ÉŠÂ~Þ?M~­34²aÛ”+?lég·/ܽrž×rE²±ušÓâ…ÜIm+[0²u£jœžûóÚ ôÓg¯B²'û.áîç|ù:ˉÄEJ{«%ÈoYÈn†ˆPÑTž|²ñòæÉÕ“Æ4ìÒ§ñ'ßë&¤)8m v™çv­?¸ôûò-Û˜õM&ë2í6%}ËGcOŸê7íÓ²=FfÙìNÃw|õÜèU³vÐeæÜ$6ËsféG‡·lîýõ¢ M;x§ep’i’®mýÒOs®™W¾óþ3f«¼‹ˆ°€7ÕóªÛtŸM÷ܽráЯ[ ÙÇa3×iðÐ" åò€‰Y›f9,ʧéŠÄÛ,mÇçSnÜÞn´C'ÒŒMÔQÚÝ?ç œ+I[ª%à»&ªgÈFexe•!¢§DgÒRW1ùÏ`€‚ó„"dæÂbÛ6æ¿+¥ü'/p²Þ¤gß ï'(¹õÔgƒ#R-É'ØÝç€`RS`·©&ݶǀ "¥àaô”»öl7¡ÐòxnžšLN!MÛ(0ÊÕm ­ÊªæS–NÂ[¬Ù‘hÙMA‚ƒjófç>0o\ÏÀB%ÆC™žœ°îƒ ZÂÃúõ›hAe°êf)‚@üâð—ÑTdÙ&mº:RŸ=e #JÓWmt*y`ûÖ³sÆnÖcàìuË%]=òãŒÑ¢Jô5qý‡Sm!Ó­S"Jy%‡a‚yÔÂä”'g¯új^Tµ†¿Ÿï‘D•AÂøAžæYZW‘J‰üa¿XE³Ö|Lk侌=°s»ÅÚ`Ã?¿q*#.6D‘šµ;Y¬fà Kà8küS0¿sSüå*Ðÿ —à{³|ÊÐW7nþamX‹®Ÿ/Î7€—ò"fÅ”A>Yþàû5ÎÂeÜíÍJjÚ¡Û“ØØŒÌ¬Jµ‡-k(2ãI>}˜øzÍ;0R ¦d½Y§Ýpa×&wnÆÐ…«ŠÔl¥Sõæù½ ÇF¨Ý¢½æ   ™ÎI9¹iÍ•½{TŠ3oaþ ,-€brtÚ®Y‚÷QôŠ ¥`×{Kî—ów¥Z8…©Ý¹™™×nÉ—¿zÃÖ€h9–ÕÓ_X3çö‰½BH©qsºŠ— hAÀíX5&S¯Ÿ\=¾o‘ÒUG/Úª„„°´ HpÏ»ZÆÿ‡ u6°ãäÆöÅ{|V©i§!_­òŠv$öš¢Æ2 kB€á{rwÁ”‘e«íõírNµ'^»}hÃò§·OVhÕrØ—K2˜0Îr3à†X B%{òi9W~wl+¶êöø îsHCBé–eT,ðÅþpÿ«vÓ§Öï3Ù0CÆk1D %~T‰(ãÈÓÎø[$Q5ûÛ)‘J«-¥ñ?’Á#~©y#šf F¤) ¨™7v­Ø¹èÓÊMÛøjÍ1Øfú‚µ´¥Ÿ}üüÂåöÌlÜ©ýæE‹îmÙ@Q¹˜ã †Qx-]´7“oЪkUc ·§©,8lÒ¢|ÅZäq‰uÝ5‹h@ oâp:ÒC‹½­vôæ¬Lq /ÈH9Sk¢Dæ;M¾FÆœT TÊ”‘»nJtž=…tVðêÍ!€A™8ð)JSä5}’nUŠUJÐx€4 Îšþ®Üê?Âíšü&SÂQ*, .&ö£ûå"Y¤Ñs’b°˜ù2ue|€È&„I¢)#"b$Gà¯âˆ°æïuiþ~aó+G+ØQŠéÀb]uЦn"5Ž!Í'Ë+D^·XÁbÁ (î® _¦±ó{û ™(¥ÄâHÀf ]€_ wO†þ÷ñðŒÁ|„0¥ †brÙ’ˆ¨»A¸û¢l!W„±ÐŠb™€(0©ì‘D9C"à‚B9ØÄ‡/:Ò'øûc’J)l §iŠ/õB|â£üÂY&é=à5ÂïHÆÓ¼JŽRÈÈ‹Œ„#ƒ#H'±Aû…Љø©sHЇ@¶ÆþÖ(Lú,Ø“3x ‡„²ùtªG•úˆ¦éhµxÀ:CáP$pÊ{ýD$ŸJše9 M‡¨s<ÎT„‡24T>†(‹c¬ATJESÑiÞG‹ àZÚ´£Êì¸Îß è‚á9Õ0Vä1CÍÃp3š¿}™ÔDš4Êqxn`½†HúaLÔ['Ó(ý½RšÄžÄ„ä{×ÛÔ®(hî-ë~¤ŸÄc«®–'ÄY8ÃUèY²WÄ9 €…þ((…¥}syåÄÞõ;õj:k‰ÉZZ@nØÁ‚|è×-™Zºd·Á£j´ìš"³obc~;3ýñ½³¾-ß~˜[°SÙ‡ÖÎ^½¸^—þ=?œ“h9ˆ…›÷??¸yÃðo—–oÒ!›vÀvÁ< gèóX>·J×þC?˜í1-Ô`/Ó"§úÂYùɵó»6mðfåö=võþ+ A0óã°R•PˆS3%0X«pj8¾û‹O.8ÜlÚÌÚÃFˆšWL”¥ú¾LÚð¥½>²fÉ£ çzôèݰsw%8¿›T­ÓªO°ÔëÑÓÓ2ê4l.мòÍsÇè{µ†u‘SÒRŽý²EK~sñŒ&pç­ ªPGæìTnú½ƒ¿qÙËÕï p)™ÏOÿº™ŠO¸õšêrŽ]º(_ÁzÔ[m©D€ò‹“Éñpø˜œìì%“†0rZiŸ”nÐ "NÁP­ÌÔÃ[6\ÚºÆ5}Ù+_áôì¬#[ÖÇÛÕoøˆ2Ó(³ªƒ!ç)#'å <V¨vúBÜÝo¦Ž41kÓ¯‚«ðéÝ»O~ÿ^ÙæÝþm xÓ+§ -Uzü¬/nÚrýÞÃvCGWk×™r8 Ï€wëø–µ7o?nØox‹îýtV4ý­…9Y1Îj¾ìâªF–®ŠÚ”ŸÊ�fN³Wφ††–­Þˆu\?öË«˜Kñw®%=Þ¨çn>ÍÂá ŠÖ_'óÐÿ3ÜÿñsZö²Éý_߈;ï§ =)Þ T³Ë%s†ðæÞâñý¼>müœµë™–*Y¹œÏ»àýññ÷bú<¯Tóþà|Ü..5J3”&}G5ì:ˆuóš÷Þ©}ûWÏËÊNñýª¨ú]eÙï\0c,ÈGN¯Ø¦·ÈÒjòÍ#{­X++Ìä–†U®aPN–Éq³ðìʃè¥SJA®ñ ‘ÌCûÇТÑj%=}²|p³ÀBQíFֲ̬;DžrÚók‡7ÿeï,5qÁ¡Haƒí:Út/-W™WN¯ß§H©*£–l•CB9Ô …0@°ÞÕCòî 1$V ®o_¶wᇛ¶ôÕŸ÷C!s º’wΔ‘«ïý·¥²Êêô­}›÷ÌQ hdÛQ³J¶è)2ŠG³dÖ „×´0-kÿÊy'ÙP¿w?€û!»Û8&3WT#1³âÞ¸sÁÜfS¦6î?Ùò ÿú]ï¾Ì¼J6I%ck †­ÿÏÈÚõ}?n_øy¥–m†|±,“’LŸK{³âãž»Ùù£êtípÿøÙ—¢uQËbµ¤æ$ݹÿêUT£¶mÇ~à*QG5ý¿|ao/‹K”ÜÓ;6žß¶Q~“X­}Ÿ6½†•®äÃÌÆ½“»÷,üZ7ØÉ߯Ž([¬±ŠóµP#{þÌñO®_éùñ—ŽÊ´Ýä ð±aãi¯/éúéG×­+V¬˜+<“½\e*¸YÀõ*Ë‚ P$uèç÷£þÀms~yS,IcC:‘‘t~çÆ3‡vU©V •Êð6I4½™¤©Ñ¼yéb½N=Z ž¨ØCðÅ3¨¶ê‰½õÃÔÑb kÌüÕÎbeYÃ5<2¼:ÎÄ\cúì<óàÎí•3Æç}Áj3´X.ƒ½+€ã†r°É­·áôÿ½×¿µÅþÏõ/~i8M•2SžeܻخF9NuoذöŸ÷Áô¼úó’{×.wž5»H…JØÆ«Ð<óỉ­«îŸØœ/´jÍzð‡‰ã_>½W¥móúF:JÔäuæõég×΋½^ºjý㪷ï'&3.fÛߦ%<¾_¶v³î£§,Sùôñ# ÷¯1÷)*%öî³;WÂJ”.]­¶aÙ ÊÑfÀ`Gü&Oß¿+ûáÝGW¢3_¯X¥ýàað,'×Î~üøI‘JõÂËÖmÒsPpá’ jX‚™{ãðÖ ?®)Z¸dƒÑãl«ñ†$´ñÇðÿ‰ µ¿--'îæÂYã9§jê6G€F‘²º\æ[7ïÈ^sð7 ‹W©Ÿõúùâ‘í^¨T·ž(p8±…àä»rå†Â:§Í[Rº„³Yñía·ñUê·U Éíþ§åܾc†…ûæëÅë[ï‚û¿Mß Á¢|nÏÃ3»­™ËºËU®Â LŠ.çznŸ?Ïx3¤5ºök5p´`wzSÏœdx3Ë×®³íˆšÇ2©IÉq·cœÅ+˜ñáÕ­ë®ÛoˆB³‘ãÛ÷rjïîs¦­X§ï{í»uyûÌüicì’£y·>kÕžÿí7†â«Q¯fî‘kM'½I~rÿ~ÉFÍßûäk7*±J&‘àÌyxyùÔ¡ŠÛÝtð{†Mñ°.ëe¦†}T «=¹ttýÌQÎ@©Fú/Ñ€5Yöñ£Ç/Ÿ¾jÚoX÷³,Ѥ†}ÿ·v´)?9»÷Èò¹AK·;+²lYÀ*hf=9¹aÞ탿¬Ô¸=NÓ:gúDC¼uñTfzêèoiÖ[ýüÖŠÉÃŒÔd>0¤bÝF‚Ó ÑÜÍó'M_ní®ýê˜"…—MU¾stÞ´aªÛ-…¬T½¡=ЖãN½õŠiH »iØg¸R@¤(žÎö²ÚàÕûÑK&´¹&-ú™+PÚ?ƒ“­£©þztoýˆæºa8"ŠV®Ó˜áyOfjÌåS6‡³Aßéµ:u¡CC,JUš½Yc&ß<¹n|¿ÈÒÕF,ùE e)™Æ!œå?þ–-E<Àý£ ?.Û¤í ¯Vù„@ ¶-ÑG†€ßLxu|튛Ç÷† ¥ê´Î_«) æ—/ïÿyùƒã‡ŽÈ*uÚ+Ùªg¿\Φ’‰R÷Ù;Wÿp}ËÆº=úõGà>5:îs&gêÞ܌绿ú$Èfk:bTp¹z¦æ`Xí¯·!ýܧÈtðW/¿:s #îê‹Û—Ë*V«…—uò–G2Ý®\OKÈéúÑÕ;wg ›Cçeì^nüµSÎyzëò«„IJ Û´;=(ª¼I‹o+ŸüÙ‹FŽæÌàÞKsèî;çOìß´.íÙ½R•+G)fJä½+ѦÏ]§×èš]†Šûä®­¾Ä'v=çÞÅ3ioRJW¯š?ª‚› ¨ÝupD‰ Í«ž¬K›¾¹°o»îóT¯Y=$4\eDŸÅÑœ„ÉZ›«Ý€´#LálÉÑbã[ÿãå§ü38qÂ:ÀýÔĤÃkçÅžúUùêõ›Ø ”jÖgçÒ5ùÂÖ•zâýËÏy|ZÃÞC›wí}`ç/´îE±òô¤‡çOÒ‚X¾I+ÊÊš´MªöáMJ8óËf^•EðGi©×/µ9¤*u2Ž …‘Ø |-»õ  SQ íŸyýË\ÿÖû?׿øõ¿îYJ+÷îùyõŸ1³fÇž¹T ÅË˱”¤fr™ §wm9ºyV$XŽÒØ.#GÕîØE +âå õÄò9Ñ[V`¡D,צÛé…º}rë3°C…¶ úø›º›¯\2ÿîá]¤ Ì$ÍÒÿT»Á˜Àq VEV¬Ä³Êª¯¾x~ö,í#S0[óáÃe–Žþñ;J³D ¡cgÏ/R½vÏq†¬d®ýrÖÃÓ'zO˜^§Ï ÎI›œÀü·òÅ‹ÖÓjZRÜ-m+ËÉ)؇DÔ’hÑÖsô¸¥*†+o„f¿zºxX{Òˆb¹[@4ŒäzŽR¼|xñÒºhx.ëùý¹C»a5Pw #Qâ)U Ž4j¢T¸H`©’†=äíÜ’•7þ-¯ îJUQm”/ùéí»×ÎÝ´–tÕpù ëЭז•ó5rFU÷í®ÐÖÔҟǽ¼½mñšåh^0á¯-:²d™ÑcǺíÁº(.5IOK¢x{TýæS¿øúøÁ=ûçN±Î‚õ[Îüò+ˆú¿?™2̈åG|·0#%Á—ôì—s”ÌllX¡„Â5êt:\r……ŠÒy;’•I7|Öƒèu³Æú²³Z×vàx`28ÞÁgBd$X¾œ„Ûç7|<žR³……,x ©jÇÞ [v°Gä+TH³Ldýü¸ûÿÖ΂2›/}íŒQOn\þù×[tÊeBLÓÁ¼¼è\I‹§L]£mg£t©¤Â +6â˹¥wV(&9þÁê¦:åÜ®½»ïÛ³=3+ å›mŽïMªÒ¬£Û)[’Ö³îŸ]òá„@§£}×î{~ÞæNƒêWß±S«µèì‘ÂTÉÆ¨êfûX£ñúýèE“Ú]®©‹7r‘Åu¶BÆV(k“ûhõ{= Ìß®sǵ«VQ `_&0Á¡§¨Ó:Çâø€Uál‚á/Lk ·N.Ÿ<°@™š#ýj†r´ÌEI€?¾Z: »N¼¾}ù±•kÒfø—ËUÞ|SnxSËxü`É´ITV2…Cy5z ê=q¦ ñ@vBôÞíG·þJÉfÁj&}û½*8 ,‰ì´rv¬žeë¦:=ú÷7ËËëîy{¤ÐjÂýË &Œì1vR£¾C2-Ѥ%ö¯Céÿ÷ýD)°;~Þ³n «ep¦Çbi•q ‘·|ŒKNÊÛOû¨n‡žÊçaß¡f_Û÷ÓÎ…ßÓ”jÑÅÚÇÎ]U­¶ Ûå/·J±8E's4Í‚qd(Zvg¾~ñó‚O_Ü‹Á[k)H¢ÍÕoüÔ’M:ùl¡6ÝÃä¾Yòᔤ‡wH¿&6Ec]†±Q”½ïìÅê4÷åNOûi\¯Ô×ñ`š‰r7Ki øL$ f@þ‚Ÿ.[O¹ÂÞ®Ñì=–ô4üÁÛöKÕ™þ.hü‡°7¬Ø»÷|,ã}m¨ç,RqÂwË‚"‹æde,>2÷Ù î„f#¢Ê ?aîÇ3P ‚ÀˆôX*'}j^² _¶¶PÑ"ÉqOCሆ…­¯Ä)÷òbDÑ ß.)VVGñœm—úç®k‹ýŸë_üúß ÷iU7²Ý^6±ßàqêv˜-`Y'àÉ,@›¡ø2R³Þ¼Q} C32k†Ž )ä3“åy°(ÉsSâÖQŠ(V8J3 9;-ýÅCkz *¼Xygp¾”qzv2k(4Žà-㪲–‚˜ß”œ%«P®Ð@ZIöTM~@2ι4P,ÊCYîÔ¼a‰˜c •*m8‡X"Lu¯üìÃ{gOw~ÿÃÚú*Œ“eœ³ô/Íå!}¬(¦ãô]}Ë’ñЉd6ðQ%J±6»Æ€“`Í›ð4†Añ,K›ð'ψBñ¢e>>€“5)ÎM͈‹,]EIWÒMzÏ‹”*§Ú2ÃÚõw ¡ý¯ë÷Ó qÃ1àj•´—¯bÃ0MÖ˜/4_þ”gwàýéRHdé gg ihîÔ7‰e à Ç{5#0($dAQtÈÙ¹¯·EKBPþ"¥J¦$½“â½ÊQ,RLóæ¼xü@`^ p•ª%1íI}óô. ‘ôW؃‚ƒÃÂyÉ gÓ•4O†h˜Œœ›ôø.kÈÁù 8óÓh”VÆù§HPàYŽS2“3ã ¦b`£,V¼–-0_THÁ('ƒdžö;Ç\þé÷ùïì<`Õ·êýq W¾÷ñ‡¥[öLç"yƦêÙ Oî²j‹¢mÕ—ëS<>°—¨ÝO +j8»åY\%J:¢È랣þèýÜg±íÍÒݾgñYâ"Zå –©¬!/ØxûÑÀ™jH–\ z{W¢U••XðÓdP NÞAéUØ@BXT)‡Óásg%ÆÇ2Øæ‚³H¿‡­ƒœcM§C -QY•B`óóÖÿKãÿ­-ö®ñ üNHK{‘s¾Cí ¬’ûÏÌî`„sÜgÖ|÷øÆéFc>(ߢ‡È|&Ç“!gø 2bûÅe— §±r ÍBûÀ¦ÚÁΰ‚ cÞ²|1¶Z,ïÁ±w¬Hi6S¦MS‡}0ŒP€Ñ4Žsd1¢Ìñª&Z†ˆ‚榃…d°NŽ;ãpÜ´†Úa¬¥šg·©šçÐê•1»w×nÛ²FÏ>®‚¥)çD^5ö_»òH4LCÝ„PVË24ÀªrŒ©«¾AÒ—†zlŒÄs–á­i€fEø;aüó¼qè–„}T2m¨Ø7c‘ß8éCð¡ Ëò‚ ÉÌÛ¶Ìz·ÙóÒØg§T9iR,*p[”òЄ¢¡Où‡>’ñp™‹Žsä`ñá•Áo1t‘6xVEY\S2,Égú8ÉâI¾Lƒ¿†‹5$ìÆyÉÇØtÅ´ã¸Ù PmZcpä£@ôTŒ¼Ñã,©C & lJÑôB ¬Àî áˆøD¤ŠÑ -ûyŽ’= >¾d1– g›ŒÝ`ì*¶[³DœÁ$Cyþz«î¿µóøÎÓLê½»~˜¥k¹-'~Q´nÁçÓÁzp¨~nè2 PãJà ç"ò¤qÌÀÙN†ƒ6_Þ¼}`ÕJ=÷eòãè|L]²—9Êãáa‹rü†û¨3 Ý”nïY¿÷û™‚#$¬TB+÷1ÉÍ»§J²†*"ïÈYc`û‚YÃöHamØt¯á槪›`7Uó&%î™7;-ö^NfrzŽyßÃÁíc«.á‹Cœwï¼/y—Ø}Æ×A¡%áèd›™6ÆùÏ…ûÌ༼œN*•TžR]ž–gà¸(ŸDsª!hHE\i×,°2«O3°6xËéB¶$,PüÕ„]¾8# 5·ýÃuÈà! ¾_âxZ×`÷ÂÝj`*iŽ6e‘V]·s<ìLœÉƲ‡Mo:¦Ù ’¿àhyÒW‹ŠßDâ e5ì«H¼Ç]ÍŠ´Ž3‰ˆãþÿµDl‡õ??ßŦÆÈcÁDý{ƒ¼å´ñº'ƒSÂ0€¢U‚mÓÅÃÝçÀþ´°Š‚DQ<5:gÎ…‹:Ö€° `b/%>‡¬# {Q"Êb4>@¡E»¡ ÿûÿ¹þsýÿrýo„û˜}Á¾`GôOËŽ¬™Óhú7µ» 4ÜZóP‚ö²IX HöÀ–jÝdÁ·r(­lj4ʱI28gVc~›>L3¬f  x•sš8pPÙ5(®ÏsDTÁ¡àè§)U·Ü(i8³Æ ÃÏX§² ÁÓ‰à*‹)4¥á¸= ?C*¾úìÕ±“ݦO©Ò§—nÙ%™¡9S¡ ö'Qþ\8vç:Ke13º¸: c(6¥ë~e Ú¯WÀ”H š‰ý,  „?áÀäkþÙA Ãêžfš&™ÐÛ òÁ,Ëèª þê&Î?8ÎoäèÿúY.tL£Ôú9œFÜ¡ªº(b3·_r¥à?Š 7Ñ« þ-üK|…à %VçuVS’Qvg†cE ')*¸„×5ÿnœ ÉP~ዌK·HÏ" b9XçéºÊâ`Hž’ECPÉÜŠ  ˆxà›D~fTüÇèÿ\t"Bj²ÿóþoí<ÃaÒC_;käÓgÚ|¶¨J«þ € ˆÕІMA¨ kOIÈ©à`ƒ}€ cÁëÕ³a6TÇÁ˜ ²ðñàìyË_´uTXÉ 9x¯¦\·8~v¸"±ÊyYöBäÌd»YØ’œ›§ÖÌ%»s)Ö)DÿÍ÷aQåܱ/kè±£h8r‚Jìà³bèÏþ”td[k¬[ŠS=Ξÿåó¯(#2S‚+4ûÃn‡-„£=¹(BÃIÆ˦iª–àºòËò£?ÌBim!¢Pµ3ç,ÌáTÓÀ(ʼnSgi•Ljœ$]Åm/ÀMqáîq\ ú.ZÆ›ØGË'µPZW©9``ï÷>r3d´ŠÊ"]‘9öõÆ­Ñ©uû™ßY>‡C°d>"ñ?žlþŸç-î¾Àâñ¨#’²ŒE&ÙÚæah6*’í²Dÿ/öÎÎÆêÿãÏsï숴$´½,-–•ö­h“¥ÕÒ‚J~ôKþJHQ‘%ZÈž%„²%Y›±/ƒ™¹÷>ÿ÷ó|çÏܹ3sï…ÎçUãÞçžçœïùžï9çó=kljŒu8Ö8#ÍHôÓ²ÛmG¬íßÙgìu£±G=Ç?ûU6œÖ6àœM)«mI=_F Æ/à9f 1þ”×ë‰óáàu8W¤8ט:§•`“¿ø®Î…«ÏÑ ¯ÇkŸ(b÷‘¦³ÒÞ6g¨Ü> Úãì'rîk÷;®GÄ^ýÅÎÙùöÐs¦H Þ>&†zoÁÍðÄR Ò¦³Ï8Œ±º°é¾çˆïóM0Ò|¸—F‘ ûü(+Æ<@U X‰>31=&Õïlä& .´á4aNão9àç´zÔåµÝÏ“{ÂgÄú}žt3ÎS,ˆÍˆ±opN§²§ê-{€Ç¾ÃãÐúXçÐ}¨¸“fÄÅù}öZœ/Ýœax3|–™î£9ó‚N¦{ýöa¡þÚütþÚ·¡A_Óc2ì‹­¡¯DlßÕ}tÇŠ%žm)%+_dVª@ð"éf†u4ç…0[“£mÆ Ÿs£hœ/>Æoß0Ò­XFàHŒ³c–vÞ9ÎÉžw©}R×ÑÀO¢çhzjRl¼'ÍJò$ø|ΕØ6/ޱ•eŸ<å5bÌ 3ë·?&ƒnÈë÷ø} üäÉ.§¬Ú—ȿҿÒëâTÁÅíKxœ^ξËÝ¢´7ÂÆó0ÃÏrÞ¤o;j§°iy½ÎÅäѹ¢Ú>’ÊgoßMóÇe˜‡-û6äDº¥Ëž÷Ç$føíÛÆãÜ{»±o¯7’<ö™§„I÷A =ñ¶9;Ãs‡a8%=ï"ñ{bÓ¼IÎb{òÇ^ËeÄÛVi³IûèRYº'6àÔk»?9ï¾o<8qiæPúaíÍ<¡GsÀ´‡«½…bb¶-šqxÿö¤Ë$W¹Ô‘]ÉÃÞØô˜xŸß>]ã·ZV|á {ТÏðQ¨GíÅöŒ ^OñĘ2èO7âý&4ÿˆ}t±7–_)Pl<Íöw=±¾_LÜ~YŒ'ÉgJ·ŽâÚz¦z“ +öŒ}›·,ž~ÄÀ;Nðx*Ö¨k*î‹+ ¹‰÷˜$¿qÈöCÍ8ŸÝhÙ”ß>€ÇfQqUè¾m£Ð}ßQÿ_ɬü5Æ·;.ö`Fñrç_ÑÚ4¼æ‘C6!Äø²—EN ‰òÇñoZqpõ˜mjüYEÎ,^±jµÔ˜DŸsiU|ÀŒ·¯¬õ5í 1¼ÞŒtã?vFŽOòýÖ{é¶]ÿ¼ø©û6.ŸžJkpÆùœU©öa£e_'áó:·²Cñböï:´èǘóÎN¬Ò(!ª–žžpØÂîGgBÎýéÒ†ØgÓÙ§<87Åø(žø ûö û$JûZy3¾ÏÂÿ?œèMò™ G‡â½‡â¼…Ó^æ}¢†e%ÆÅd>”à5Òìᣨö8ÐÖ)ªÈOh‹m6#o(N4 B‡ÿ NP—m§mbLî*3L:s‘ºÇYlüß~Í9îVÎph¦3Jle6†i¨Y§iVB²Hm‡¶5:—ÉûœßÌjÓ §tËwJ®KqAä‰îʧÜâå³,îtÆÆE ’éÌ¡­`ª´Ÿ™½@æö)¹ÉÙQ°!°*y+ók¸N%\ [Wèò¬Ì ú,¡í+©I̬ñ˜™ÿX™N¥“7;°cfˆ!›„ƒ_ïÅ¡àN^Å*Ä0” *Lë‘,Qœ‘Ö¡™ëlGÎM" jFéBê¡¶4 Ä„ e‡)Ó¹,•Ïΰ¸ÇY …ŒÃ:6+Svî37‚æáÉ42UÀVfÁ9í$"f` ¥tÆjMYß,F`klÄ!Œq†T3ã7dh×ã¶ #hÊrå^Ž€së–ó“½ÏÀq ¥a Ø7ü˜Ž7n8§j;›¥f''2œÆÖ9ÞnÓÄt€:[ZÖçI†ír廣 ™p³¬`#³òÉqÒÈã±áÌù™UÆÖ³Ç&à·O¶Ç†ju¬éȆ¨MÈ‹ªMVpÿÿ±"s XfÕœÃt–’Ûý–k'¨«yñ?«pJÍ:Ö~ûדٴfY xI©Ø¡» iy”ÍØsÌjfôXìÎÝÉÁvÛ- ‡^?Ì Cfãik|c›q¬ñ4ƒhfË–i`¶YfN5XÎò%i™m¸=uìöצ»w° —u©®ÙÈ\BrÊf´“Qèð·ØÑFîôïa„üûO8ª€Nž^ÏÈY‡ÇÕn‡o±-ËçŒ1Û‹‡Ía/•qjk $+br¢}a +3ŽžðnôßL>ÝÊ£‘0ÇH {_ìq"ÇÈKvÄϡ€Ž_’ha SQI˜£„iE¥Ã1¡Á µÃŠ“G‡9!ÝF… H‹}2I^ ’yÁGm5̱€¼sd@äˆÚÈ£‘ði±ÃJxB[›h#?‰úëh (ZZrBQPM\XäÔé;—ÓÚ·tû|yÒ}ûn?×Û°Ã •·×¥†£û–3¼@˹bËãµ—pû2|1ñ…ì3ÕRwÇJiV¯†7ãÈG#F˜›þø­h±3I_µv£ÏØgúIF¯}³[FöؽoLllŒ³ÜÂÌ{’´@–"9; ““•„9Y[•¨$Ì©€þ~Ú­©D%aN‘ˆiE«Ã1¡Á µÃŠ“G‡9¡@z”“¿æ„“Gò‘ä„FU5<¡MY´ˆÊÈ£’ði±sŠü„¶6§Yýè0*Tá Â9ÕÝNôèÑ£¼Î\†»ÇÇÅ›™šŒ´´´ƒ:ËYÂêÐî»b®]»fÙ²eݺu?l/}M43Gb|©iGRÿoäGæ¦Í늜Qô`êáßÿãÌb%Ë•«àó[±1±_º×F,ŸÏ—˜˜gšq䲆††††††††Æég¯Ÿ=øðá<C÷ì{{¹'¯=pà@RR’ÇÆ—pV™2´¿k×®wß}÷÷ßÿzÒD{½¯ß8šzhåòeS 9ÊÜðç†3Î8ãHjêÆß/Q´x¹ .pÏqNe;ÁhøãâãcccíåDyîÄ¡äQî} øýöt‰½YÈ4] ²5bŸPký¡|ˆâ^™_ sˆÄ0ŽÝB"+™íÀ–œZaf&“§äY"81x¼Þ€ßg­)[²ì¦8V@™vc_•`Ú–&K¸¢T”cÖ–å$*Ÿí¸Ž}p Å ^ÃkÈ2OË9¬"`z¼öc'˜=upžÈBP{u¬³4•SÎöÉK~¿/&66SiÎêRgJËë¬)µ%q2!k掭׿>ŸŽ~flRClc £%{»¯ÄòØÛ+dlj3?g†9Ë´à·äfšÆ-wƜɹp’†û6´Éö ì®%}ŽVÿAo?‹‘[²E$SÃÎöÓsu¼à%<Žh²„S­‚Vç,̶Ž7›Væi0Rkcyeÿ“=ãœi±¡Ë9£”¼à!Û.2ÿ™ÇU -g߫ڜQIæÐ‘@6#è"’䄎Y†E”Fm/y³UäÒéç,It‘Ÿ8;Œ¡CÃ* ê 覜ðqç<‰a·¦Ã‡R­¼Î\¦%K*”¤6Ǧ=zpÿ"E‹¦$§„5 }¨—î† †ŽGñåW_Ùɲ“<|èÐÊ_VìOM>òcsã›Î(Zä0tÆâgžyáe…1^{IO8a ‰ ±ö.Þ,;ˆ¤ó·™V8äï„•Ù̇±¹€súfLÌɽ4Ù=ãcfvjž`îìlŽÂREÂî슀çX:Žm8ÇpxøO¶§fI=âDm â\®ˆ‡i:,E8·³ÁÑÌŒPÜÛñdîJ¡p¼öÊ3;Ñ€}”Iæa¢NFü~+“{Ø&nŸì) ²=éñ%ö1žÇ6˜à¿Øqx‚ÍMAÐÔàFG3ך›¹'Ù nmç›ã¢üÄRõÀɱÚèê07§vX‘,Ƴk´@ ¸-=ãE€|2jtFFz†Ïwe+4¨ïèÍÌt!l§¢ ÀÖ­}+‘ ßuÔh'½déÒóçóõÒK/»á†ëŽ?õHÄÄPˆÏç÷f-îàæžˆ”`eŽž†vˆ¾éXhü3᯿R0òÇScìÛi­B…’Úµk[¢D‰Pª@æ\MæN4<#NÅ‘JáQËI …aªòõù±±v€“„7K¬õ–|çÓE÷erÔv‹þïZCCC#wDG÷ƒ+òÓÒÒàwåÊU9Ó}›qýõ×_ãÇ÷ù2¾üò çf ?IJ=òËŠU‡¦Ž1ÒÜüû–ÂE‹¦NÝàÐý2å.pN¶³âìiÝ0'¥ÐÕ$&&¬[·nÖ¬Y^ï±ÎÆãýjÕ®¸úê«Ý’ŸÈ5á!óäóÇg­]»N=¿âŠ+Š=cþüù7ÝtS©R¥ò%I´h¢ŠÄPÛYœQo{üv4kÖ,9yç´iSkÔ¨ÁHj–È…Lßxc‹3fT©rù÷ßwæ™ÅÍ,Nбð°Ãýû÷;ö¼óÎoÞ¼i\\l>ü"¡ôÁ©©©È¼xñâwÞ츞ž /,÷裞}v©V­ZÇÅÅ ™8pàÀŒÓׯ_?hÐ;»v튉‰­T©Rß¾}n¸á>;ôÝÖɾ}û&Mš´yó–:tQëÔ©õÚk¯5ir­ifŽê9Þmò´iÓþøcÓÛo¿šz˜Ç 6lÛ¶MÕªÕ®¼òJ¸‘ ©4”ï Ùôôtr±zõ¯?þø£zñåx¾zõêV¯^ôïß綾^ÎÈðÝ}÷]#G~.¾ž‹'Ñï¾ûnݺµ:f6xAµjÕ¾êª+í9CON4ݵ†Ä²™>}:­‰<”"æo½zõ«V­R€bG3d v°iÓ¦))ɲo©téÒüe—]ú· ^Âã@–©aqÂqw¿øâ‹Ê•+×­{•sìZ>}-idˆ099å›o¦Qae†š’””ôÃ3i1êÖ­k¯ÛÌJ¦ó!yBZTAÞ.üiÍšßÒÓ3h(ì©¿L;·œs*ŒæÍ›•)S¦€&Ÿ¢Ú€X 1çyôA‚h¼@zÉ‚[Biä'$¹„ÿ'óœ,:ŒÕ8‡Enu–V‹f62ºŸ¤èþ‘#‡9J;¼bÅ/Ù;˽M‡&A÷w|þ¹M÷é ìë&íëg<Ðý•¿¬<¼ÿÐGÿ7Âücãg-zø°3ºæ™\p}¼ðæÐL:dÑ3f Ô ·ƒÎFÆòE¸‹/¾xðàÁuêÔá¡ôQÍõd}ª³)ßÝÝìäÓO?}ë­·6lØ€ ð<\‘Ë/¿¼H‘"‹-š={v5ìÓLˆœjvØýÐÊ\Ïz,Œô¸òW¤²/1¨0ÁcV³L1Kö€·ÏgOP²W¿8ÃùJâ 4û ¶×¥KrÊ‹„ùòË/+T¨ðÄOR©7¦¥`ç†þÐCñQÅðøÏ¾4ˆjBrË—/Ç9ùꫯn»í¶?þX”©ŒJÕ)Ã86c ^´”— 庭.ÄwÜ6$ qu‚Q pÍ5×D26Œ•¢[ ¨U«VóæÍ#uÇUË4Œ PåÛ¶mÛ¸qcg2!FL×t­,W™SÇ¡­îvP-;w·ö!Æ>Ÿ´0’Äž={(e¦¤¤¼÷Þ{þá‡.½ôR^ÕbIHÍ>¹ Kä"’jÙìecA«Œ`­w×ô¿ª¢)¨âV¥¯RWId.  ¾òpóæÍõêÕ»õÖ[ißBÔ¢Z›Hê©dвÿþãÆSʯR¥ ÆL#Ù©S'lU¥Z“–=;RèFÖfPÝ}öÁs™•Þ$*w‰‹0b¨yJ®^éÚµ+оÜëŰ%QìSj߬Y³0r%‘µÝS퀲4F$q+V½%– JP5Ô’/eTÙUaŽ444NcDL÷MØ—j7޵·êÒ¬­\¹RºcZ¡äää… 6jÔÖ¤Ú®]»ÆOø¯ìµûÒ¸©‡­øåzð‘ÿ÷æü;|ø0ÄëL‡î®0¬(´È¼üöÛo÷ë×ïúë¯õÕW¥ã\½z5,­T©RP½›o¾9ëz9¢ROHHˆê]èÑsÏ=7bÄ4ûØc‰$(E@¿ˆöû￯]»¶êìý΂~zòå .õQÔ Â-½?3Ï5‘q/€öTNyN`™<ðÀ–-[Þyç&MšŒ$FÅC2x×]wñ:™ÅhÖ¬Ù9çœóÁàpJ©¼»Å_"ué­ñ‰›î#Ƶ×^Û§Oªn dš¡b_ýµ¢û„ä!.ÇwÞ‰xRdŠÜˆ)ª5 R²äHØE¦˜´$XyÖ,¬Y³æé§ŸÆÙ#Ý[n¹EŽ=§ ŽÎ‡+®¸"Ïœ·Uø—.]JÙñ÷Í7ß„E‰í 8Syá…ž}öÙçP<E)G!Ó­3#söÀ_¸paÌCñiþR‰¤¼0Nõ®P:*– | ©VÛ¶mÃñ rgtÿ2 /õ×íuÒMÊ¥r)ö‰Î ö#UUä$9#ÈY #É’‹ïÁ_ ó‹q q*Ï\šiL$³HBª~ISË"›Ø‰·ýÃÅ_ýuq•„T#Hmó4rÄÆBþóŸÿüöÛo]tE‰‡LüPÿaÆ‘Alæ£>’VNÆ&DÑ‚IYˆ–ø@ë-+q¤e¯IT-*UÌøÐ¡C‰œö&ªˆ¼Ë æîÝ»ÓD<øàƒ÷ÝwßÈ‘#1ì6mÚ<þøãTI2ÝÇ/RÚó;PÃ1–3Ò!R¹ÍCJVæîD“"žPyé¡ä³»4Õgɯ˜zÈp††Æ¿ÇI÷—-[&† Lë Ïâ ãç§¿þúk„ B÷ÕÍì/Ýÿ¿|Ð}K&í1cÆtéÒå†n˜9þ|¢•^I "ôO›7oæ!lþ‡¶yB± §!Îë®»ŽÀ üiûöíBwŠ+a½ä’KBvBÓµ/"$ËäŽ'gŸ}v¯^½† ²nÝ:Ø <øÒK/%æ«®º …@4_~ùeL‡¼)R„’:÷Üs¥·#G¼`ÁºI^”·¤÷"ÚÒ¥KÃ\Ñdž±tä°.”ƒ=üøãåË—7‹‚ÀÈÉ`… fΜY²dÉõë×óU(~ÅŠ%ô‰#\¨*rb¬Ä¡àAhÁÆÓ°aC¸O/^ܲeK"ÿüóÏ¥ÐEE~ø!ÊÇë;v¬tçB2ŽnºÛÀ?¡šýðÃØ-þ¹ÃÁ’Ý'Q¸vK»÷Þ{áÇbo/¾ø"—]EËW84¹Æ€Þ¨M·Þz«Î>‚VBâÇÂÉ¡>B€$6L ©¨ùH‹¨yæT *SY¨ì˜4……% m¢Ñ h%Ë¿¸ˆTa2® <õÔS¼.öC«„±á¿ ß¡r!Í™ð¦Õ¬YS2‹[øÌ3Ï ¹bv•*ö""Ñ ) Á¢"_§OŸŽß%YPþ¹Ðtê A#h8lµD‰X|Wy&(0T·Î;¿úê«{÷îÅ`0Wê`©R¥ˆŠªDùB»16ÂPš4âÕ«W§d©_X&ÑReˆÖž,u´‡‰¾öÚkÒx¢Ú~%ãâKSyQj!üd"†fŠDåP6C*š ¼èU«V!OÙ²e½®H5jÔñ~ÑyžBµºãŽ;h(Ȥ™&Âp¼„¡8xrûí·cÞjVdùòåÏ=÷œŒbð?×ñHñ›o¾Áã•R@ó˜5‚&N^GKhU©£êE,~bE 4×"O›TÅ*£û¯¼ò ÍVM›‰;Më‡ûMSFãCœj®•W gFù¥8ç¸R/ÄÎ1r”Ï‹H¢<Ïq!Ú¶mKÉò -$OP•Ÿ¼`ÛógŸ}FguVß¾}+W®¬ÚjM÷544Œã¦û´Ø´K4þ4ΫW¯&Ó¡C‡»ï¾›F˜¯t”_~ùeAÒ}~’@ádͺ´žø´‰´†0b5Ÿ¹:ú÷ïOßÉÈͨQ£"ÑÖ­[Ó÷<îúëÎ=åÆéÑ&ÍôÓO?½råÊ+VìÞ½Ûpú~¤-S¦ Jhß¾==ú¾}ûš7o›AË—]vÝ-}¿DX©R%¸2}Ýs½zõà2^Kе_sÍ5›ï¾ûNè>=}™ª[·.2 ;iÒ¤O>ù„V ɦÆÚ"$,“ç0]zǪU«†(“è©°Kƒ©#'4ZFÎÙxNºÄIÖp]èb‘¿páÂô…tÂH0þé§ŸŒàh¨ãÄ‚¨ ‘Œ‹ ³ÇˆÆ& rLg•Îý÷ߨ0{²ƒH9#•iÓ¦ÑAªÑÖ9sæ4jÔºO0rÄ‹­Zµâ_Ï9ç5@ˆ3€½¡(d#]² _ÄîáLj¤»‡)bÛ(tßÄü™–;òŠZ€”#N#Â@›(wÊ… B¡c„’/褃,^¼8JÞCaÁ\›4i"ŒŸLQ'!è8PãÍÜ…^õ¤4ÕšÜ%~!#6Xt_ ‚Cˆå@÷kÕªIfE6r‡…P¹XýJ©ï¸X0'’ ‚?ÕŠv€ÏVp¹ƃ¥uéÒ]A”ÅÈ%ƒ”,€¯ ESsM¤‚m@=ñ·©2pMX•Ø ”ð]‚‘¨UTXBb îÅ<'ñŸ)¬””b3œñoj ÕÏAØ9ÅA61Zj(u|éÒ¥âq!$vuÞyçQ¦˜4Í‘c& ñcÏx¶R¿dþIh—y.ƒÍüd}b Þíׯ­.öIC ó†,â~ºT=Zæûî»J“+5ˆ`äÂp­#Rmmž˜|VsA¹RK.pŒaÌ­ZHqïܹñmðyˆ‡JD3ES)z£ñD9TF\x?¢~üñÇ|vóÀ·ArlXÚ%¬—†kD0ú fÏž=Ô1þ^|ñÅ$‡ˆHj+—,H#ùš LN´'³|䛤hZÅ¥!ªaÆÑˆTj%EOëAåÅŸ§ ¬‹¨P¿b6xÔ)»Y³f$‡)¢jº¯¡¡a7ݧ¡ €rÐ+²9¤¥½ñÆi”h‘¾øâ‹¦û0*Ò9r$7.¤AšEzwšÂÇ{ ®#ñäÞdg-/ 7¯têÔ ¶ù‹n@ 'Ož “¾í¶ÛBÆÂÕWçk×®ÝÔ©Sé‡èd—|1â³Ï>{öÙgée 6wîÜGydíÚµ´þ/¾ø"´¬lÐÐÇtëÖ jBÇ5á+]8a t¨o`°ÀîÝ»Œžuþüù nÆ®]»®¸â :x ’®±Zµj$·hÑ"´J§ˆMðº¬ÐB!Ø÷ßOŸäβAn`*ðƒ—^z ¾b8ã¦ÄC™RFCg̯¼U»víŸþÊEf )«œÉ•L2H§ŽY<ôÐCt伋õÈÑòB –EµÖÀ0 2E/8`ÀØúÄGºöÚké¶!gÞ¥—…Zñª5ÖXö-·ÜB Ðk•(DDˆ Æß»wo¼Pœ…#Zw «¸¸(CjÁ¬Y³`x؆AÉRÐ( Ph=Ì•<Ö©S‡ò’â| û}ûö%¿B1Êˤ dÙ TŽ;1qâD|ËÇnEBÜQ*–ƒk*ëCp1(\¹X±b‘çÅ¢FùôéÓñ …0‘Š‚î#³é,£‡îPdd Wk¦ñc)>h^´,¶¡ZaØ,Ê…T1*Á.\ÈOªð`4C0êTÛî¡zâQPî¹, !iïð !sòPWx'nJMÞ©¢…&ЇÀ+ĆÆ`üŠ JYОõ7•RÊÔâ—^„§d!—d„Hø‰ºÃ™œ¤Ú’‰–+WŽZ/γ¬Â$fÌe" ž M™¢æ6lØ„dâBŒï¾ûn¬‚6‡VzÞ¼yÐJÚ-γáb“4ãxõ‘/W£eÃ\± Ì•w•͘Y79 :Z0<ÊA ª¡øHØ$g¢!Rᥒ0ØÍ õ‚Ž€$IîÈ/z& X:ä—ê òSî8ù0uqÄf¶6j=Á¨eÔn1Ô‹††;wECŠJkÔ¨![•n½Ý=÷ÜCÏ‚¥ 9¥(1?éh$1`>“A5ºÃL÷‰yÐØRú(Ÿ~—çäˆ6 ɱCtE]Ãòiç‘rWÞ¦¦ûFA¬ÝçOH“RªT©²eËÒ"üb7ݧiB/`ü¥oþßÿþGǬ2FµN.‚d´Å°“HV„tþ´¿a·² ¥{¦¹‡XÀ?„+ËP?-Y²äý÷ß§O¢Û€ÜÀr`f¤³Ï>[úTO¯ ½ 3ƒßO›6­gÏžp;Yu#ÖÃB(/Ê^‚o úlÓ¦ ç‡~xçwòdôèÑØ ¶$k·¤fmp@Ìhw"B/šüRÆŒ#¼\ rCJMFu`n$tŸÆ“†.c‡Ô_ˆ¬å¬h'QØÖ­[±aê Ù'~F¹“)YÊÕ§OŸ¡C‡"34±L™2„‡SÊ(ب#fpW+TZ† J“U(‚œè¾h’hv.µ@Úü®¯¿þš*Cxb£ S7aÐ5ˆ¬,@â]ûî’/¿¤ †"0$Ãß§„dC÷©§<|ã7¨ïTd¾¢"Αðÿe.…zJ“‹Ø'Ÿ)wŒ“†ÇÛ€LÆᩒSÈ=•”úË”Í HBCMu†¶"mÀµX-FR+¾r/P¨9¹Cÿ´ˆ§ž«YYi:œ+Ù»íÝ»—R&˪aG ´?~ê©§ ÑâS‘oºé&YϹG3ôÔAºãŽ;²î˵pHÞ¤I“è]è«d´Ux-Ý<¬…FŸn ^BûþÓO?}ûí· 64ƒ%‰ ²B–¡h;vDÑpntH0h§ƒ¡â9ý7]‚ìñõ8GÑ7oÞµ¿ð (#~$$cNBæ¤Ó•EðxÙé>±ÑQÁà‹na÷îÝP $9§@Ú €ž• Ò Aâel˜ &A`˜äF2…«C?“+"¤"újÃnTCã²¶ûå—_&P7ºù¢E‹¢mE”‘S!#(îV•¸›î;‡]®FT ¼ûT¾GXºèÒ°jÕ*È%xá…’#qGÍàÖÏü™–‚•õ ‘œ2ºñÆ©²Ii±‡G}:‚])²Ý[ÅBø cxë­·Ô– oðø&©H>jÔ¨[o½Õˆàè‰R8nÜ8þ¶lÙ›‡°Nœ8…@÷Ñ[Ts5‘Ð}Ì ›¤)Y©kj_¬Ô2j5…4@ÈA§X¡ì£^ :¢‚2òʺuë°ŒGæsÜmœ\”%‹ˆÔðtßpˆEÉÊ1ìPt+ÑJ•R•0ì­Zµj8˜Ÿ”£ª¹˜%dnΜ9¥K—–M‹/&ÔÂO²Ù!¯P^øð]µêF9Š"?¯ ®‘!P¯ª PLôI-Æ´ä@*™ÓCHø%®EH ªv?#ÿñÇ‘™V…ÝW•K} t0\r-ÖݧR?ñÄH"á¡ûΛŒ,®cmd»ù»ï¾ )7ƒGÜÈ‚1 I5yä‘GT‡•\¦e”{#!û÷ïß«W/©_’®Z ‡ý«#ªÔ!Kª Ó ^<(~B¼åË—ÓrÒ>‹#>!]$Ÿ¶W ¥Q.3fÌ%mwß}7þ->$ JK+“±šîkhh¸qü[uå‰{‘¼jÓˆÖ}2OÓ}^îÒ¥ »s°¿oÿþý 8p ­-ÜÅø Ád“« EB„ÉÉÉDH_+ÇV(`e=ÏaÇŽC#èõͬçu"v@o]ªT)5wáJ“çÐéäèÌè#Q !EÃ#¸)Ü…‡rB‹åœ­%"  N)ÄÈvÞh.\˜Î~€‡~øÓO?¥çCQ²L_†ZE*„„;³¾}ûʽH2LN¡À·P | ©(,4L_Ã6 ymß¾½Z»/¢B›pÕ(å*Uª@jeU®{x;»a[Ácõ®ó̦å:rQ-Ö…Øè±Õ¹RfðØ>81F'†šÁµæ¸+ðï?þF"kTP¬—Uv}µö€xøéœsÎÉeàSAìR(k÷)žÀ;ñ¾h † vï½÷ºaN%«ÖN T½páB Fm/æWÙ% jÛ¶-ÖH½£Xñ*T¨ ,A•;!€,£fñå·îÝ»7´’¼S• ƒ²nºyn=d¢ÀÝÆIqcx/jå‰ì¡½ƒoá@*·J\Vl›êF•?묳”ò*Imݸq#†„Õ¡¥š5kö/ ؤÖãàð#6¢–-[%î’%KˆŸ–„.ºè"Ò¥]¿~=’óŽ\·nÝð”h‹d}Ž*i ñ¼˜””„?L„eÊ”A5b ­D]X”Œ+Y&xG;vDíªVªƒeTQæYU¡û$sB+G•‘Ólå' ?Štá²4#x_Ð}¨}0- LZ0L “¦ÕEE²P¹U"Û{gm ÛÎ;ËOžà1£ò– ˑϹ¹;¿bt=˜"yÁ¶M×ù˜£r;–º Û¸eäB+Qaº´*C† ÁÙ¦ ¨4Ñr&’Ož<…@÷iÇd²—âF- ©ßsÏ=t”½sçNä§uî9©b¹ŽûÔÐÐø—#tŸ6GÎ~\¹r¥¢Çî¶QZ3žÓþХʸž"´ÇE÷ g%7$ì“O>¡3€¾Ð1È+‹-¢=¥½£ó¦_ Dvœ´’t*È µ%òÈ_tƒîA‹L“M7†H¢_šl:§¥K—òž @¿èZè´jÔ¨¡æÁa3<¡õ§ÿ¸ì²ËP–ŒîÓ%Àæ+W®,ÁÆ׿Ôõæ›o–/_žlBé à äÀó–-[ҷɸµ:Xú¯¿þ"é0d'€t{â ²ð¼eËHyJJ Ý'Õêé¥>üðÃW_}EÁd6N×Ûo¿MŸJ_…B÷y«~ýúçô ò%fwA ˆŽôLÒ-­Y³î…òQQáÂ……^à?ÈÁ|÷ß?~KžúmïÛ·.ž‡çÜsÏ…§ªã/ÔH'ì|ýõ×É8½i¹råxˆ{õêŧo¾ùfB¢Ø÷߬dÉ’sæÌ‘õT‹/†úÓ7£<Ù‡ ¢Œð äþ¤FôÃN7ñ‚  ©Q0uÊË£¹½©"CidSvËj%F)¦»îº‹,«³bÔè>_!Ó>–I¦¤›ÎÂ0œÏµk×âðà›EH÷‰öƒ/!'óˆþ¡ÔÏ<ó EÿÁȤPîìP¹—T„-ZP¨¡Ô,)D|* $«»øâ‹ ƒwѯ_?ø(Ï©îâ¦%š={6’ˆ½œ³¼h(àÙÄCi.X°€Z)ûH"×C‡…n>ýôÓH«¤‚Ð#? éÒ¥ Þ©:OöÏ?ÿÄàW¬r¦x³| *ŒŠW(ÚSI™Ñ9E€®yä<ß~û ù#¤œ‹ÒzàFŒç(SÑB!ü¥¾“nÅŠ±ZQÄ@E8´EüîÞ½;6éÖ3~)„Àr•uUàºPIeÀ[è>ÑÒ:IÍ•â rÚØÛo¿Ærbj.Î- ïÚµ«Ø|žBÝ‚[¼xqd£©”ƒMeý=Î J–piî(Zц`”‰äØ*’KÖ(GzZª€LR©1r)ñU«V¡mj÷ã?®@à£+¼¹¨1B—[yz² i¬Œà‚©ø?üðƒœýâ‹/Ò¨R ‘$k´„´Ò´ä´óxìp}rŠ&¥^ó.Ý–F˃EQ)z:0ä$ÂC÷‰ç¡‡¢©ÄÕÙ³g¿ÊN¡·ÙhhhœöÈݧ}£;Ûè@;69ñŒ¦o„ jˆðxG÷iÂð3èÎéSéãéŒ!Í´zpG:zDD¸)¬"ªÆŽ¾‡¦–¤éÌò½U—ÜN:õ•W^ùùçŸi|ei/—-[Fƒ„xÉð^Ó¦MÑ$/³É€f.ü©§ž¢["³A9„Œ@ÎdÌR¼éºècŒà™˜È +­U«ý4Ý9d]zG)i’Þ´iœ†2 c+]º´Ð)z)4)£APv:ŠÇtަ†$Q:·Þz+2Ëá?&ˆéø!µGûöíe³züøñð¤ÄÄDº$!ò#FÈ–PÙ1LMI‘ì‡ÜÑ©ÓÓËVÎuëÖA÷K•*EŸ-ËHy¾úê«„„²\µjÕÜ•o¯=‚|@&øJ§.b[ÁSI ÊÇW†R¢L$JÏ IjРò˲i™;BZܸ ~Jƒ“QÊ|%°P:X2:6*n»í6âw,’/Y0ã¶m¨ ÎÑb'øü'ªU.`ÅŠx¿ʧLIòro>F@5 RðHL«S§N$!“?ØÕä…^ÀPQÁ0]žQ*ëa,gÛ1Òºp;=‘ĉH2ôI}$]4LœˆJq“tÇŽqÞ ¯PÌ\²,öI‹Câ¡dìV¼>É¢Ch±°:lµQ£FT lÇL]È*öÏ£}À“7ƒÜ¡|^‡¿Î;Wv¹œwÞyÊãÚ°aÂcN:tp¯/§]ÃMB˜±cǺŒ%{ìgík¡‰–Ü‘º¤Kå“ 8ÇãŒa4jò ‰iäüYLK&…p/‰GŽÏ§>ÂGqª¿ÿþ{Ü´ãD 4ƒèöõ&%%I£îã=" • Soݺ5±QpîR£B¡•ØIà/‘ òH‘‘YR¤2RR´!M©QGdcºLÖa!¨‘Mæ…ò4Z”ƒbIŽ"@r%~Þ¥ h±Fj„xéHHc~Î9çÈB2Ó9Œê¹téR“•<Ë—/';ÈF[y`$RÄ|P;U¤g"9Ìž†”†W¹ô)TgœôððÃG¸ý@€]MŸ>(A Ž&—/[¶¬{þîiôèÑuëÖ•Z&¶ŠmãâÈaƨyp«èÎh]åø|TDÅ ¡]¢Ã8Q2R¾¨K6[SúÕ–¯$A¯LrÏ>û,MÁñLSkhhœNÈÝØwƯìׯŸœ[Sxù@«EkFÓJ¯Q0£ûÒÃ$èÕDš3!g4Ž0ìG}tñâÅ„éÓ§Å9èøi%‘žn’Õ» çÔ\‘Þ½{ÃEÁ“Lø@[Ïr.R%ƒ¦cƒ•RÜôñcÇŽý믿xn ¢ ×WÎfG:u¡8’(”ñˆ9ƒ\d‘‘ìØ±ÃÍõ•CÑQ£û’ŠŒñ“eÒ­R¥ B®%õªLQì5Š…@%E C–åL+¸¢Wh‡0Ë/¿ͨµ+ÂV©HDBŽJ‡Žö8)@<²fN æQ°`öìÙPùU$!˜=e$%a–ø*§²«D­` ‘« ŒœÞ¸Á+1õTekÄ-ƒ¤’â™ó¢CåÍ…”¨Ñ}Z¬ZÄ{æ•¶mÛªIŒ@p[‹é¬>"üöíÛÕò}ÞVgÎx‚;)‰Y&Fˆ«…øjq޼K¹ãB¸§21EŒ„ZÀgÜì_.SÛyÎöwÌ)11Õ•)S&ÜC<ÈFº²Þ©xñâx°=µ=Z¶êâÌøá‡Ð\ÚFdÀÑ%·ß¹0‡AŽ»¥ÚòœœbÀD^ªT)rAäÐqjY‰%ø•Dœ4˜îÝÆÂ2åV ª0žŒ“4> QA²íÚ1K\t¢•û¤Ånå Õ¶àÉã®®-(îî Bê©(Är¶SSƒ0Üw·$) /Âõe„BâY±b…Ü3¥ª€ˆJ¡×¬YÓüDø/¾øB¶PKaA÷åje0fÿJ–Ï©Ö]Q ÊíQ¾upÞ¼yj‰AÇ6$-Š•â^»v­ o9›Cˆ‘’¢¤âàÊŠ†ùŠÒ³R•‰¿‡»BÓAb'¾œjp444þåÈßè>í=`RRRÀu[¤Íܽ{7 ²yP-mÐ}:!¸jfÀu4¡éÚLUc'-¬D’ï9P¥ÍµªL¹sp¥è¹4‚Ãê2º/‹5ëׯ/ÌI-ªvoœ¥›ä/}ÞK/½DŸÝ¯_?9K^jKŠ! ‘ŸÔ`¿êêrÉé:^F4!OòÔ§O™¡†Š©ì‚{UfÕ`ž² Âw¥ÿraiÊdNœCåÔÜ¥ç Þh£„ û¢\ìV‘û«ûj…ÝqJxêÆ;ï¼qÓ|Û›[!£›n²ïJ4ƒ+B¼ wÖÔ¢çhçbØ*rUй•»ݺ‹ —…@*ZYW#m…;›ª¾+ktçÔ 2ãŽÊp¹d9U·‘»Å“x¬à®_qÔù«Z0MÁ-Á+Ãä‰îÝ5fÖ#/¬7Ó®Jê¶p¥I¥X5ߪ,AM÷…dG‚«w`­w×å¨,D¨8P‘«†(¤ ãn7”ygÏ !P’«Å3ÑžýåVµ»åW“{!:Ã-åš8u—‘ŠVýäŽSå׮ʎ;Ũ¼444NWäƒî›ÎÔ:d'þìUOg8k_‡J`Ùk?ݧ]†ëË ”››ºB¶\ghD».B}Îw+©Ä¡ê«»EiÕ[JÅVpÉ[o½5lذ]»vɹ?ü°ÚØ*ZBo¼ñă>îܹ³E‹¥K—&0¼ßÈzêKX™Ý|1Ok°\kR·oß>hÐ dH0&às÷îÝ|ðÁ’%Ká(QØÌ*Y÷}»%Ì“O(êfd½ò3—\›Á›ÜO¾Ì‰‘ÍðBò«âTÚ[±bÅý÷ßßµk׎;Êáß¹g-'¸Í^ždwtÝΞ[`#›þ Ýy•„¹¶JÑ­–œJʯ,ç.˜¢­*wr!Ùt›´;°MŠ‘Cf2»„Ê R¯x\ˆ {ì±Ç¨òguVÓ¦MË•+÷ä“Oª æ/ ±p÷CwÖTü9Y¦z×ýU… qÅU˜T[”gõ ÑOØÏJ #œMfwn —‡àŽÐÍ›C¢5²ùê•h<'áCŒM œ=#ë0AN­®»hBŠ>{ra_7r®Yÿ*äƒîÎÉJO‘f+xÄjþ¤Š nÿÇÍPCüI÷É!÷1y‚gœ»Iª\¥rA˜<ô/+°\ǃÙNû ¸® rÏöDUXnOØ Þl`¹N_ qÅnY¯°öL[ëxÓűҘ@| ÷aJ’œÈ≻¥ÌUykhhhhhä‰SîŽ7‚}zµjÕ"ñµÔ>ò` ¿þú«éœÞúõ×_W¬XqÖ¬YE‹ý{è¾Ú1uêÔ¶mÛ¢“~øANÄçùöíÛ1­Í›7cÍT^|ñÅðÑš5kÞwß}†ÃY 5'?~ô}Ó¦Mß}÷¤R£F>ø J•*J0òNÍ…SEgÏž íþä“Oò7ºÏ_Þ]°`>yQ«¼p¥Þÿý«¯¾ZØ?Áƒ¢ÿæ›oP  ó£—_~ù†nP‰Š týõ×ã9LžñÂàF†Î¾aÆðK~Z¼x1ŸÓÒÒdåLïÞ½Ÿþy5rìž÷·\w X®åõî…(2¼š}‘uÑ…RPÈŠùiΜ9Ð&MšÔªUËM\Tr_˜•õÆ5Ê«þ®™ ÷Š÷Ùy64úª«®‚k*m$&&B÷yèqÝ…!ÜbÃÒ®»îº-[¶ð¹xñâå+®¸"’H_óPj09(©Ê#4bŠóð÷ÌÏÈ ûºuëž~úi¨gŸ>}Ú·o/’$''÷ïßäÈ‘III>ø æŠHK–,7n\Ù²eŸ{î¹ÿüç?RâË–-#ñññ£Â'LÃ~饗ڵk§ŠláÂ…Ù%JtéÒE.(˜1cž ‹•k×®Åz'NœX¾|ùÎ; ç+B” ‰ÂÕ*ÿHr7dÈG}7ì¶Ûn“ëØð¦H¨p˜Å„øLÆÝ‹d û£G6òµ[€n¿ýö±cÇâ>5hÐ@–Ý“(´žìÃøÏ=÷\YÕ¦Mì´ªV­*¯Cè1 ôF6E6ñí‰ 7ÛÀ‰R6¦×óhhhhhhä‚SîóÓÊ•+_ýuäU±bE 9Ù¶mÛ¨Q£&L˜°|ùrX< b¤˜·›Ë `IÂÍø qWÛÁÍÁj±‡¢ãFÖµé! •FD!ËBV0«™ ¥D÷ñšjó±z¢JňxÁ’èýã?¦äçÈ‘#ð×={ö|ÿý÷ù£û†³ZƒwíÚ5`À€Ï?ÿ¼qãÆ_ý5ÒFE÷%û°Ï1cÆlݺUoÚ´ Ù*Uª<묳þ2'º%²Œþ­œ¢ß~û ‡ Q»uëöä“OBúyˆ¿öÚkãLJ O:•_·oßþÆoL™2¥k×®8T¢}ï½÷zôèQ¹råW^yÖK0Ü-(5Y{æ™g†o@q`«o¾ùfÍš5eH›ø©0;v,S¦Ì‹/¾xÇwÈà:‘8ðÇ„ìöêÕ+ò´³gÏ&ѽ{÷ò–,àAáø0DŽWƒ‡CÒX ¾Þ©ØØ¢E‹(M~Å«1òE÷ùûå—_â;Q‰_lì§Ÿ~"]9€®^½B¿ço›6mä9|Oàþûï/Q¢|¨~ýújôŠ+pTœuëÖmÔ¨‘¼Ñæ›o¾Y¶l™,Y®R¥ |‚ø'Mš$Yºë®»Î9ç!ܹá[óæÍ !Ý:uꈲÈíš5k”WYä'÷(,éªõÐP" ,Ç’Àj×®-Ü> &› /¨Z"ûõÖ­[ÃÜ+òs/Bx¤ÑoÞ¼9T â•ïÑ}ÃYÆóÎ;ï@j‹-Š/ñÐC%''GN÷³ÏºðFˆÊ—/«+UªÔßF÷Q‹Ük®¹fæÌ™jo(ƧÇJqJ—.­üC|ƒ{î¹§^½z<çÉâÅ‹»\¹r¨Tn>& yéÛ·/þ~)á)âùóçãN`XžƒD…Æ^}õUð<ðßÿþI`ö6!yWŽ’=*={ö|÷Ýw_p`d;†5'àã]P:¼ë ^‚&É­_¿~Ĉ÷Þ{¯r&EáC‡ÅoÁåÀ|ÑýÁRð"àñB÷1`2Õ´iS´—~ÓM7I*€\ŒZöÁ ›ªJüÅòq–>ùä“:HxM÷544444rÁ©G÷‰711Ê;vìX˜ý 7ÜË,\¸°áÐýB› Ð¥KáŽPFh©,_¾\ ƒŠ+ÂG  G½{÷†c¥9àaË–-ß|óMˆZ||ýôS#[•Ī1{±v÷swK¡&Ä@m…£Ζ|oÜ$ê n9¯ãJ‘SÙi£V¯á&½ôÒKB÷ÕZ;žãl?ùä“EŠ!€lÐt_CCCCC#œztßr®Ù{÷î…¦¼üòË·ß~;ŒJFa¡¿;w†¦À$xBÂ0uÂÀž{öì©D„x½ÿþûPŸ»ï¾NŸœœ I:tèÿþ÷?dHJJBDh a*£F‚”@ý‰yøðá>ø ‰ò5!!½@˜àjÏ?ÿv+¢=Èëo¿ýviÒ¤ìË´ÔR.9jjŽ1’wÞyQ ¶dÉ’F]|ñÅðx¬H–öðÃã¼ ož3g¹«Q£ôKSey…ÄcZC† q¯QÁcÄÓ :aí$Šeâåò ±¿þúk¬K­SéÊT@§NxWè>^(‘»O²§ø&Ož[mÝ¡û8iÍ›7Ç"wÐ}å¹é¾"îR‘°_ýµK—.¸‘üÅ8Q‹\0óùçŸ?ôÐCfð–·Î±®®]»æí·ßÆñ„qŒÕ%ÇC÷Ÿzê)|<Ù”âV#aˆß/¤ô‘œjÈbC*Ôøñã/¹ä#H÷i&F&($9M÷544444 §Ý—Ñ}È´`÷îÝDå½ûî»ï½÷^˜PÅŠa`POYÓ,Œ9âããC2) Vph=…U»víð #²àX݈$Y‚µà?|öÙgÂ< ß°ÒôôôfÍš½øâ‹²èBvÙJø'Ÿ|òwÞá§Å^¯—)SFÅvt¿zõêV÷R%7Ý7\Cû+V¬èÞ½û‘#G*W®Œ93o¹¬S Ö¬Y£–ñ¨ç| péÒ¥ù€àbNDŽc¬²–oº¿aÃÒUž­zNZ—^z)I õ\.ÌiçÎäó pkÕªeé>†„ã-H Òt_CCCCC£@pêÑ}âMJJ’ó+eŸëwÞ a}á…Z´h[0`€fB8 Õºukx’ábB"+,ºy’‡Ð}èÅ<ðÞ{ï ‰‘qtµµQ Ðó™¼ÁæùŒvx ÏÁ}Ø‘<úè£C‡ÅCxî¹ç„JÒиæÍ›Ïš5kÚ´i²L\Þ’}úôî˪eƒÆ£/hÄÈ Þ?úøãCÝù™gž1"8œÄ}¢(Ÿ÷ï߯Öî×­[×rÝÞª„$0,ꆢäʧÛaa· ,0‚ƒÊVðÎ×"EŠüðÃUªTQNˆèSî]’Ø,×¼îÂ%˜lÕ…îÿý÷Å‹jë–ÿDy ã” t*©4 èþ¶mÛºvíJ¾Ú¶m‹[xþùçc„êú*Ä[ºt).O >§loÀmãE¬tĈ„„îßpà øŸíÛ·÷ÝwÕò}Yvÿý÷c0b ¼ ×衇(}¼ˆ &\tÑEFðÔ&3xO­›å‡èGÙ,¤X±b$£Ì†=cÆ (u§NÜ~‚¬Ý‡î«“yÔ¸»*))ŽT6¬¾*ÓR ž={Μ9·0¸Ê|¦&RsÑŒ¼ˆ±½æ`øðá¨NeYâlÕªb£OÊKoÕÕÐÐÐÐÐȧݗÑýÄÄD¡»wïþøãûöí{ÞyçÁ ÆŒS©R%9¹œä>£I“&ÉŠnZµ‚ªò°iÓ¦†C¡àpðrø¯¸Pç`ÂSaØpA8Y‡ g‰Â¦M›xoƒš<õÔSFÖs6{ì1ØÜÝMÊ%æE‹ÁQÍÛo¿ ¡Wl¥:uê Æ9眃²à@ .„ßȪ’tذa8’hžCàj™‡”“Ðý5kÖÀ_IËÌvÍ_wìØØä‘êß¿?Šu'D€Ÿþñ¬àIšØR3ÚhÙ²%äÒ-i=ñÄ„/[¶,lX6³f?­I–-[†BÊ•+Ý—‰%ù‰»S‰ÈGŽùŸÿü§“ÒϺuëVü@Lô­·ÞªX±¢¨Ârm}Fud f,ðêQìþÙgŸ-_¾<¥|ñÅódïÞ½ÃÌjÔ¨ñÍ7ß`ó$á~õÕWëׯ/ û„pó .%îl+Wó0Ê_2"8zŸZ†äï¿ÿ>Ô™´$†±cÇR^ä‹T(¹eB¢åvÛ½{wì\®Ù"!¹Ê:Bf?{öl;¢O­ÄkíѣǞ={ð3«W¯NZË—/§",Y²ú.'êÊ\”Zµj¡·R¥JÁíÅÔÜqÇ8?„ÇKqO#hhhhhhhdÇ©M÷E2ØöM7ÝY=Ìœ9“_e`^È+tÎ ›Q7øÁÃû“““á40<ìâŽ00lÈœŒGÖ­[·W¯^jT’'p£>ø råÊçž{®œÛÃ_^\½z5tM8=>DMhÙºuëp9ˆð /âˆãѼys!j×]wݬY³jÖ¬)#Á²&ZŒ={öÄ€CCÈ>ÿüs”õöÁùx>=pàÀmÛ¶A ‡.‡ŠæÉ®]»ž{î¹7¢%\ˆ#GŽ:¼œÔ!šr¨\¾}ûv< 6Pöx(нjH¦>„n’\ê†Ì 6DBØ­Ûe’+¨Èˆœ° é©f óÐCmÞ¼‡À¢`¨B¥œÐÑ}Ü›ÿþ÷¿”o—.]z÷î­‘S¾6wî\¾^uÕUq%9ìÊÕT<Á²ÇÏ»”x¬Þýõ×_;wîŒo&aäÒ84 ç]að¨û‡ÃqÅëÄ(zôY¤H‚af(‘İos ÆÉS-Ä™’’Ò¯_?Ä£¥\Ö¯_¶G-«h §6á0ãö€2ErªÃå—_ÎWòHýŠJŸíÚµ£Ú“e'^ñop@- ¾5I®cŒZhd`íÚµTÒ“Sg×¾üòËø-÷Ýw¯P¯õ­º¹ãÔ¦ûÂJ§OŸÞºuk>_}õÕÓ¦Mƒ / ¶0û)S¦˜ŠŠ—ª]»6BóüóÏ¿ñÆBžÌà5[kÚ´éĉÕ"Mjˆ"/cpâ‡~øÒK/•µmÛ¶‹·`D<ã!b“…·ÞzKöð„I¦T©RjÒŽsÞ"'Ž (²k¯½6*•â±Á9sæ(½NS‚»‹ 矾œ—àWS ,™êÔ©Þ^®µšpƒ¡Vâ|~öÙg­Zµ’]7ÑnÑÐÐÐÐÐøWáÔ¦û’äääÙ³gó™×a$îp„`ɪ¸µ;?W^ye¹råŒàÀ3©KHux9aJ—.­vǪu&P[¡zÂõ…B愌òäÇ„ÌAñ…¨©Zä!eØ[]„`;vì6Ã+¸ —\r‰$J$sçÎ%6x$?5nÜøì³Ï&Î%K–¬_¿^ÂÔ¯__2å^„¢. ñöï߯–Ǩ5<õêÕSL%û†WQN(œ¤‹/¶Uî(Qˆ6!©`+è­hÑ¢n©È>J¦ìàÓbOîžhþÛo¿E6µ@TZ¤HbÃH¬yÂ:’®œõÔ¨Q#Ø­Ø?‘/$§,Á{—­àVìøøø%JÈ슗†RäMgß*„UvŠ[Áò™`óæÍ£dyH‰_vÙe§„Ù¾};†©É%ñµä3q”»•çj–@ð ç­[·B¬å+‰ÊŒ›Üã¯^½Z¶X(·™¯äÛ‹\Ÿb‹-ÂÃ$*#¸’¨ ñ2c ¶dNé/]ºS$ÁíAu*ãVp[[´h‡ï¾UW/æÑÐÐÐÐÐȧ6Ý·\‹§…š„¼e¹6\ºÉ¢zQ}9`Ä2$Oð Õì™4]»rÝ4TÈ“„tÇ6°¼¯JiG}PþƒFmXt{Žy+U„Ü‹¤¢ Ùp)•ln©ÂƯ†½Ý{jÝ%!yö“d ‡óÙØ›šlÉ^F äÙ¼yóo¼±vëÖíÑGÅÒTÒ!¢ºŸ„èÓ–µû'õ®Òâý†C‚Cte¸ ÆýPÅ•ç£" yyöšb .DÂS4²î7²vö‚V&$ÕÄ-‰øco¿ýö AƒÚµk×£G¼\Yù¹TÿBœÚtßÈJSŒpç“(F•}dZåMé";oË…L¨1ÑxrÒ¦;~w`á4Šé†pJ3Ò=0oDÃürR…Ûo É~H˜ìï†V¾DHA¨!$8ÄË®(ÃU'šØÉ‘AS¦LiÕªUƒ f̘á><>—ì‡eê!?åd~êkXO5D¥ u´‘Ímp§˜=9U«<á.ñ°yë]gﮞümܸñœ9s¾þúëæÍ›‹I„ ¤¡¡¡¡¡¡‚S›î‡¥Y!C‰*ŠÍAî2©†ÒÕW#/ÒoºÎ ¾ÍaØòÜUoWå$Cî,Ü w0·Tî„òôXrJÈ=‚ëæy!¬=wêì.ŽcÊé•‚…¸Øá„ Ê–-{óÍ7 [^jÚ'$›ªôC6³FLÚ]â9±ó¨T¡"t[¬®Ä³×#‚ž;Ü©dŸ—È^šaMÈÈZ­x>nܸäääÖ­[—+W.Â…Lÿrœ&tßÍfBá8qNœ;,ÿÈ>λ²²g†“ÓOîø­à¢+¸¼ÁA+¸o!òCÇݪȉ\f*dJ!„r œ§&Ã&§Tö•„{™“láP#Ça-Ä-^öØr8ìzN1ÍÉgÈ.Uöš­äs$’X®;Œ³×e÷:(3xíÀñȦ¡¡¡¡¡ñoÀiB÷54444444444²CÓ} Óšîkhhhhhhhhhœ¶Ðt_CCCCCCCCCã´…¦û§-4Ý×ÐÐÐÐÐÐÐÐÐ8m¡é¾†††††††††Æi M÷5444444444N[hº¯¡¡¡¡¡¡¡¡¡qÚBÓ} Óšîkhhhhhhhhhœ¶Ðt_CCCCCCCCCã´…¦û§-4Ý×ÐÐÐÐÐÐÐÐÐ8m¡é¾†††††††††Æi M÷5444444444N[hº¯¡¡¡¡¡¡¡¡¡qÚBÓ} Óšîkhhhhhhhhhœ¶Ðt_CCCCCCCCCã´…¦û§-4Ý×ÐÐÐÐÐÐÐÐÐ8m¡é¾†††††††††Æi M÷5444444444N[hº¯¡¡¡¡¡¡¡¡¡qÚBÓ} Ó§Ý$ïsªPÑQ‹ª¢ )ÈÜÕIT|  ‰Dž„D(aBbRRüòÖqdKCCCCCCCCãxqJÒýØØØ„„ÃÅMOZ©tT°SŠBÇ%Ú={öð¤pá”×ëV<‰Ççóñ.ñìÛ·¿%J”à9O”ä|fŸ‘‘±ÿ~>NÁ-ZÔã@Â`6544444444¢Å©G÷‘Xó.Ò|JŒî )?r’ý;wB»I"==½W¯^K—.>|xÆ £‡¿”\rr²Œëí3ωX 1I1Fìуþ¸x#&ÉkÆš~K˜¥eûááå|2¿ß °\ÿ:©ÛÂØ¢§ù2|~|ll¬×k††Î‚¨„Þ±cÇ<°nÝ:ÃQý¦M› ýS§N½îºë¢"Ü2`ƒ¿ýöÛ‰f ±yóæ"EŠÌ˜1£zõê†ËÅ"$an¾ùæ}Ôè>%8`À€«®ºJÆø£É‡††††††††Fã£û–áÏð.šqîöï3fY_½æyUo)(i¤ñ^oŒá1¾Ã(ðšéžt¯aÄqyª@-L—t•ô’a!Áp_ÆÄÄä©SËð™¸VÀ´<†é ¿e¤ûýϯnZøËÒ–›\P¬xôØ…áö¶£1å‡v·oß~íÚµ°säD¿>Ÿ‚ÝÏ%ˆk5”uÉã¶mÛ®¿þzH?^ ñPÒÅŠûþûï«V­²FŸëׯ_¶lÙAƒ•,Y’'îÒ¥KBBÂ!CjÕªi444444444NN1º0GÍ#%Ì’›fìšôî²ÂFù¢g*}…§Ñ=ç¥6<…ü3Í2âc ç6™Î0<–áɃî#(,9==]1`’†ÖóDe¬pá²ñ4ï*(!`¡Wà Û7}†™øLcõú‹~Y~0-•ôîjѪ|ñ³<Ý·ÿËAå‘ó}Hùºuëвá”M×®]—/_ÝoÒ¤IXiÉ2¥.ÙILL”üòYVÛ§¥¥‰çÀÃíÛ·Û¾}û²Ó}p×]w-\¸R¬^½ºì ¼[·n½bÅŠjÕª½ÿþû2! ¡¡¡¡¡¡¡¡ñOá£û¤î5-#öPÌþ¿~òÏüb}|ÌÅK%«œv}ç‹|ÅôBvÈ8ËŠ d،ٛ§  4~üx‘˜'-[¶¬U«ÖK/½$YB’¾}û6jÔH>ç¡Q[Dˈ1ˆë°€€/YûÛªõëN=phåŠ\^½|á¢I†-•cX¦³)»Æ OÃû®)ˆ#GŽ\wÝu ,˜6mZÓ¦MÃÞ³g$~ãÆ„‡”W®\™Œ«ãtÔ)?|†”””ìtwˆø“““gΜY²dI™!ÁñX´hQçηmÛÆ+W^yeäYÐÐÐÐÐÐÐÐÐ(pœrtnï5=…“¼FFšï``÷šÀ®Ÿ¿¹£D‚uÆù¾Kš¾äÖ³ü †/&à3ý±†gä±üA{öì9dÈ´´4$†ß{ï½û»ï¾[­GŸ0aB«V­"ÝG+ÃcÏ2Ì[¹zÝ¿<œºßÞªU/»¢r¥3’ •Ž/\ÍŒ@ŒqÈkøˆ?\< ÎB¸¾ŒÍ£ë믿~þüùS§N…އÝ }ç'Ê >>~ÆŒuëÖ…«¿j¢6ß°aÃÝ»wg§ûüzÍ5×`ø¥K—VÅ/Aäk×®ýî»ïˆ9âLhhhhhhhhh+Þ{Èòíñï» e©oç4sÙÄÅ+dx/I¾´ué‹•3òXËcÈ"u9‚¦ÿþמ={V®\¹G‰‰‰cÆŒ)S¦Œœ7ŸËè¾dž_ç.\¸&u߯¿’¦jÔ¾²BéÒç)rNB\Jñ;;p=ΙAsŸõÃä5üé5’‚Ù³WáÇxm4¬\¹õ•uääû¨Î·‰„îfÑ¢EiiiRÍš5Q»ÈrL~ît4nÜxÏž=2º¯ôÃM÷54444444Nœbtß^ÍcY1‰Fl|BÀˆ³Èg±1~#päàšøÙ£ÿ<¸ºØÎÍ{®ºñ¬ÒWû‹UH(rQá¼ÖòØ£û"1‰BR ôÍ7ß”(Q¢páÂ}úô¹úê«åÄ•±œ"‘¶îؾ+#}ÁêUk¶ýUâœó %ÆÕ©T±f™2ñþ£±Ãkú<†øöÎ>ªbýûs¶d7!!¹©viÒ‹4é½wé R‘"¤ ÒH“&yAzûû¡÷ÒÛ ¡‹¸ ©^4lv÷œ÷·ç1Ç•–€Åçw½{7gçÌ<ó̬÷ûÌ>gFÒ#N‘¤è„øÔÇ­~Ó© ä²Ú÷Ù²…ûüëE®x޲‚ûBx­×Ïë]¦¸_±bEÌÂ}í"ã>‹Åb±X,Öë#Ã}´`Wôn&“»Ù é’M‰Wĉof‹U.ÿ':wéðB=Š˜<ò-:¡× sf‰0´|n³Ùð Ð9r$º ´Ý¶m[¿~ýú÷ïO™ñÚœÏL­!z¦OQþÆý¸DÙvô?—cĆúe3•~+o‘ðü6Ig’AH&YBOl6»Î¤“u¿îÓºeEÝ%Sz5¿æÏXݧ4´3tE÷¿îÃ04„ìСÃèÑ£i#NÁ¸Ïb±X,‹õ:ÉÅp_Ýyßâf2›LÙDº.ùŠý·ä;Ù®M0›þ; ¨. „A¬Ž‡a7uÅ{üœx^ît0ÚqŸ–êAáß}÷½J•*Zö¿³å ò¯¾úêÎ;&“iРA¹sç¦Ç|#YÕ½{÷Ðý¸¸8Bo¿ý¶v@>2Ë—/GD¼gÏžÚß3""bÍš5Ÿ|ò €ÐÐЗê‹Åb±X,ë•‹á>PÚªK÷´úþxEweï£Ô;öË/çÊïW±V>)Ìž«¢»bŠÙ. › /hCË †ÂÄœ={öÂ… E‹>|xž›Ïë‚Õj=räHjjª––C C¥J• §]Dé ÆãèÑ£BàxåÊ•}||´sµ¨FèðáÃ(F]FâµZµjT^d<±€ „¦aþ4™L•*U€f)ñ‰Åb±X,‹õ'ËÅpŸèd›Ñd4¸›íŽ•tšù®—¹Ê¼V~Ùf_'9Ž·U·¹ÿ[˜•__• ª—芬¾êTY,‹Åb±X¬?A®†ûŠ¢—m:³‡ÎÝòlŒøGzù·0-©ÿ(²úìï];ÿ]RDò«|/eØÇ¸Ïb±X,‹Åúóåb¸ï؈Sèа‡É »žS†>eË • õdOf‡êþ‰¢5}Åñ¿jÒŽŠûvÇÏp¤¤wœ! –ã„‹Åb±X,ÖŸ#Ä}Eg6=Lz¡XU^Ö9Òu$==#+$:ºÖñÐ.%ÏÿîÄøWWî‹_p_ÝwSV—õuª]:*ô·þüÀb±X,‹Åzƒåb¸O¡awwwÇæ7#˳X,‹Åb±X¯½÷Y,‹Åb±X¬7VŒû,‹Åb±X,Ö+×Ã}È`0÷5Ë\…ûÉNçmìYÏ“æ+L#*¡NVípz¯9Só']SÈynÐ)tñ‰†è=UH5ð‰,‹Åb±Þ ¹îã#“*5hW±óõ‘ÍfÓN:£+븮,TÇj§+ªPŒî@é¨s 'èDa¼¢nD<ÉÃÄb±X,ëÍKâ¾Ñh4›ÍÚŸOœûÚJsaåßkÌk.Z‰2e |5lØ0:Õ³ aàMTTÔ¤I“òçÏ?|øpçù@ìNÜëÖ­qãÆQxP¸pá¡C‡êU9·•’’2aÂoooÔCëú¨Äÿ7t›Åb±X,ë–ëá¾Õj…)&“‰ÖkA~®²jNv=aóßmËë.ZÑ¿xñbÓ¦Mò;vìÈ›7/®c²~ùå—111ý¸¸¸Ý»w—-[öàÁƒZrÝ 'cFMŸ>5lÛ¶æF@@@Ÿ>}ŒÉ£Æ DGG7jÔáÄ®]»÷]"zd±X,‹ÅÊŠ\ ÷Ƕû?{ÊAIW”K‡£ó¼•#oÍlЇbÕÛô:£N¤ %MR² ٠脬·KBÖ‰LØZËwN ×rBÄoÓ»³òœ€]†1:Ç™¾ŽÝöÕefI{,BDÿ7î‡Ûß—-RÔ/{vÇ‘[ê®üzmã}§QpìÓÿ2À©Å<Ú08GA´à-œ "pBàáü‘ö ­‘S¶Œæª $­±ö)eÂÐ{Z;w¾Hj:ùD´AGÉØØØqãÆíß¿È!íÚµóôôħÉÉÉuêÔ¹páeæ`’•+WnïÞ½^^^¿8ßn§¶ Ô«W“·£§¸xûöíU«V 4¨ÿþƒAJ̽o¾ùfÁ‚üàƒÐAÌlÆ}‹Åb±Xo†\÷e«Þêî³/uïבކσOSÙws*Ùmnž:YgSœ’^¥l;`[Òg‚û H´®Ák6UÔCºùúúšL¦'ý|¶p¾ÝQD–¤vEüd·[ìöëwbþsçûG’ÓÒÚÕ©þ/•Õ÷t¿½=Ãå/ñ{|ýðáCJ€`-8>55Õb±P k6›Q !!ºàããƒaHOO§4w0%Êk¹ìø•P<åàÞk蟘˜ˆ&ðSÁÛÛá 7>E£¸N-â F®&L‡…š%h÷Â`Š"´]»v­zõê°4YA½ƒ'Ož„åø3**ê³Ï>+S¦Ì0dš7ðÌøôÓOwïÞ ˆoܸ1pêÔ©Ö­[Ãà6mÚLœ85‹Œ ¡EÕªU+T¨€x€&.g[±X,‹Åz3äb¸â³è Ù$áau³ÝWî²ú¿;ŠÕdVÿܦ=rÉáBþ _¸Ù…AJ:½¼_Ü7 ãÊ•+‰hñÚ¹sç‘#GÂÜÁƒk«× Æúõëg)¥N°ÁzIÖ‰d‹å'Ù~úÊåË7® "{î<¹ß)R"ÜÝÓÃñÃca_F!ìÏð8|(eus˜¸¸¸N: Rׯ_8tèÐ'NPˆ†–-[mAºãÆ›;wîÕ«Wé±Ô±cǶjÕŠVµi?ÔyÿþýàU¨3äI“Š/:G[àæ3gÎÀ?µ5kÖÄÇÇ£üÝ»w1v˜._|ñEÍš5ÑîÙ³gCBB†¨Bܯ_¿Y³fÅÄÄ føFI-ÿB±C‡a,òåË·zõjÜNqMAš^ÇŽÃ]eË–Ý¿¿†ûT6×®]]€yyòä¡+pËöíÛÛ·o_¨P!¼A/´æ0M›5k–3gÎ… âú‹7†b±X,‹År!¹mº47)»§ÙSNúŸÅOÑJòMû¶¯oøZüÓÍÿËW?ûÛmdÅè)ɱzn™,Ó÷çÌ™›<==aI—.]FµuëÖ¾}ûÂ$??¿+VÔ­[—PøÅ Øñ£Õþ³PN\¸xãÎmñ8íçÅŠ¼óÖ[’јݜ-¢´¯<²¥?’mö_Wñ]Ð÷Ò¼ YMñ×¶k׸Ÿ˜˜óàÖ7îܹíáá. k õF5nÜøüùó(ãïïo2™@ÕTÆð)q3Æ¢k×®€æ´´4m8èI ww÷Å‹W¨P¶6oÞüäÉ“h4W®\S§N>}:ðš–êqŒRÇE8³0€ •$''Ã¥>ÄpÓaaa6l@ ¡õqÂÌÎåË——,Y’R€´Ÿ(0;räåí·ß>xð óê>>…C $$$œ;w3JÉÌÃ- €sà혇p#Þ¡C‡3fðFœ,‹Åb±Þ¹îÃ`½’¦só1˜Ýe4#ì»,~ŽQ]’v¬ˆ4ÚÝD¶GZ¼õïšÞö »0f–”4;vìªU«š6mÚ¿ÿààà9r¤¦¦Þ½{wÇŽ'Nœ;wn“&M`›–æþ´hýoÒ¬éÉ:éÈ…‹ßÇÜO—»ÅR¶XÑyòø¸ýŒ&E6T ÃSŠU§ÛtdÏÝÄd›¬ÏðšÞjM×ë ¨¬j‚5ŠÉJ€!ÔµðØØX`}çΣ¢¢ß¸{"""*V¬ˆ×C‡3, ÞÅkLL {öìÙùò壟5ºu놋K–,©S§n<}útÛ¶m}||À¾pˆP' FtÀ€Ç‡¯€éÑhdddÇŽ1| yzŠzÖ¬Y y 3¢…uëÖÁªï¾ûB ø‡~˜’’’7o^€hq†®F­G.\¨Q£šÞ·oð´> ¦:™£Õ}L>Ô.2©S§N¡Úüùóã ¨sº® x÷Ýw)qâ>‹Åb±X¬7F.†û’"ÓMR6›ä![ñ—0ëeÅ$ý,)91àÑqwÇãS›ú„{(ÿþo‰ê·L\@‰ï#FŒq‹Åb±X¬‚\ ÷…¢“¬žF‹Ñ#Í.IñÒ[ :»Ë)7Þ0ç²î~ôŸVmVÃÃ=PgÊiÈ÷­V+ÚŠˆˆ˜4iRß¾}GŽ ¸ú÷ïßÌ:f̘áÇ § ÝŸÉ‚”^‚’“SyÿÙ37îÿWçá•Íl¬P¤PÙ\ÿöTlFaP$!ë%_èl’ˆ}”úØjÓg<¬+¸«ï}Ífusɬ¬î“mp+X622rÞ¼yàu:‰ Ÿ’a"ZÝ?qâ"íd†Ó§OÃÈ·Þz ­#øÑêŒû,‹Åb±ÞP¹îK²b4¹ÝÝÁ ɪ?ã.HÛþßï‡æÿÆ'®\´eöì¹…>ÈnÓÉŽõÉüŒz~ë(..nôèÑ Ø!C†tïÞ}ÕªUüq:u.\äuÞ¦ó,Hù<øïƒÔ“eùè¢nþpÓÏË”MØÞ)ZèíBÅe¡3½;‚›c—NYçYœ²b~ÇÏŽŸÈÊóÁ„ã)))@gðô¶mÛªT©"œÎ Ó6í£1xÀè%Jh9H 6Ü»wïúõë[´hqÿþýŠ+¢QÄ<ùòåÓ~Ö@±´´40ñÙ³g7oÞŒ7¸ˆæÖžžžèÐÐPgç Ž"žFqóæM7úÆ(îß÷ãããa3æZ/[¶¬6诌ûd'¦ªE£mÚ´Y¾|9m9šžžl ãèâŠdèFÆ}‹Åb±Xo¤\÷ÇŠ›äf4º‹ŸEÒùŸ¬¸®< zøà±©øëw®àþoÅëßzAKŽ\‘…Ýëa(åÌLœ81""¢K—. ü¡C‡†‡‡Ïš5«P¡B´wdæ¾Ì0QVìŠãÁCbê£äÇ?¹výä•ÿxøûxeÏV©pQOÉ‚à/Yyþû’È2sÒY³©©©`ܨ¨(-àuz¤UÛBž†çîÝ»(“œœ|ðàÁÂ… ÓÖõ á&Mš¬)™wæábŊ͘1#W®\¸"Ô_0úöí‹7nm„š###*`·nÝŠØ€b'4ªmèi±XZ·n Ê?}ú4oÀñ˜L0¸Ÿ˜˜H\Ž?+W®¬Í°óçÏãz@@Àž={iû í‰[¡ÎHtM—.]‘âz’˜¢#L§cÇŽõéÓ5 ˜P'úÕ«W1¸èżyó*T¨ Í1²áJýúõílذA¸Â©m,‹Åb±XY‘‹á¾,Éué¾" ö°å̦Ö8ýýws ªÞ.ŸäoñÏ箘…Íh“ô²6+:ÇÓ¼™q›v>Ttt4ˆÇŽ>>>@Cߺuë2]ÑJ@}»°+’ÐK:EQâ~NKxœvöƵÈKÿùW6ÏP¿ÚåÊ…ùù÷%”EÍYÞpóyJHH8p |X»vmXR«V-`7jÆŸ—/_._¾üÂ… `©0fûöí0¬zõêóçÏ÷÷÷§¨ bªà:”=^^^ddpp0Â3___‘q°îñãÇ{õê•3gN:ü ¡Åõë×Q úYÕÂxX…e`!œùv«,‹Åb±X."Ã}»NNÕ[‚” ëÿ÷hëìÿΓ¯jÇ@{ÀOþÅÜôvƒ¤—“Ý&Ò`§^èÔ4ƒ2Y˜'»­V+ oòäÉŸþ9®Ô¨Qà[´hQ²$븯nÄiéƒù%¡“%ñ“¬ØõRŠÅ’˜”tóÖ­ë‘‘Zµ Ò „#”½ó{’}úÙ)RdêÔ©hQ‘±„Àö þ)S¦ÌÚµk_vÄY,‹Åb±^g¹îËBI7ؽO[œˆ¿–ìèë]À(»[¬úŸÜ„ãùWñX8N¸n÷ Y\ݧt¼1“&M‚YíÛ·Ç«–ÆóR¸¯n©i9êùë¤t\•Ä¥&%…ç4’Ã8Ez©¬çþRÓ1ÀÁôŒ,ì¬ə(vøðaÚ£x ÀõññÁ{ýÇ…ºÔ]¾|y 8Þ`t1BgÏžÅhÚQ3ð ìëë«…ÇŽKJJ"pÅb±Ðñ[*hßR”9}ú4UŽ T¥J´~òäIÔl6›ú¸ Òd‚©T ¸|ù2â4·wïÞ°°0mz¡ŒviÈp…òòQµjÕ´ü2299`v¡0âråÊ¡ô{Žó&KlðÌ[±b9÷Ýg±X,‹õfÈÅpŒf´[&½ÎÃ$«3*4;6ºQ®Ðs®Š÷ñÙ“¶Ñ¦:ŽÛ·o3f xêÔ©%K–¤'YA“™úñW/dæ*©›VÒ^“ÚºcãXâH㡆¾bÅ ­´O ^7n3%ÑC½§N2™LeË–ê¯=/õ{‹Åb±X,Öë,Ã}YH%S6£ÞË$ Ù¢^0(:ƒÍ±Ì/;ð™0Z݃S@FC¦¸Ÿšš ƒhKJ¼¦§§ƒüÀ|îîî´5»xÙmŸÄ}áœÖóËÏʳ2{X¢( Ó€EÛøÿÇ}mß'Z™­WY,‹Åb±^_¹î;@^6¸¹Ü= Š#é3ÿ÷y‚Åb±X,‹Åzãär¸/Yçf2º»Ô­n„º½º˸Ïb±X,‹ÅbýV.ˆûŠãÐVww7å×U}çİX,‹Åb±XOËõpßfsì°n2¹Éò¯eÔToW: •¼#TÏBô'éOJR±´MèÿØÖµ|­N%C´ùé+o€ã|š˜Vÿ»é»®hXzž„\İX,‹Åz5¹îã²Ñh2Ý»n*j2¿, :ÚàF;æ‰N¼²X,f³™¥òôô¤7ÙÁ®tàíG$œ@ÿi&õïm6¾———ö îï´5 ZÌ£Ñ7Š?a³Î¿^Z׬V+z‡W|Gà1ƒÁ•bZ‹Åb±X¯ƒ\÷Á?Ù<¼ÜÜŒŽmxÔ+z½°ËvZû¤µ[¼éׯߙ3g´¥ý!C†4oÞœV¬ÿŒM'Ÿg ÅK¯"c™üi*D»uë "GsâÙ³gRë¯6pšÁx½~ýzïÞ½ƒ‚‚fΜIÕºº¨_}8íã?.^¼øüùóÁú.4ÉY,‹Åb½&r=Ü޻͛MÑë$½AÝz_.”Á!«B›6mzàÀZÄEA«`»¿øHW-û6àL©%ÛüþÊiû|`kÍš5Oœ8c±XòæÍ»oß¾ÐÐP´òÊ;ÜÓl£\—Ó§O7hÐ3gÛ¶mÁÁÁoÀê>X³fÍW_}r%ö%¨Õu> JÃD"`üùÜ$ø_nqྫྷ¾¥C¾$«ì8L¯CÄ®{Ožyšó0.=ÝÒ¢Fòÿ× Å.É b'À¾bŠÁQ^§ÈŽÍOÅð¬ôr¤{ùòe¹——×ÁƒCCCEÔҧν&OJNz¢°ÈøéàܹsuëÖÅ´AáçççìUgnÖˆZÑœœ)7£-êÌÖ†X{ìøeGœšÖ’¸œÃªßùG#GŽÔ«W¯pá‡öôôü[žäf±X,‹åºr1Üwì½i3x˜ŒéIö—úïEÝ¡ÿ»à™­@Aÿìù•’íƒå‰ŸÜ,²°™„Þ$›@§Rf$|óÍ7°ÐÍÝݽjÕª… š={¶¶.Âk£Fºuë>|øæÍ›OŸ>Vúöí¹ÿ~ \¾|ùg®1Ëô03‚ZØ·gœø«½HTìû.NHIzðCŒÛc{åÒïøä ò3¹#ž°ë$€ði¿SÉûøGVÐ7ĈéS/ÙÓ§qŸBŒ><Œ™ЧOŸqãÆ!âÊ•+W—.]¾üòKú(?räHÜ¥-´ÓМ={¶zõêùóçß½{7%î'$$ †»wïUW«VmРA˜p ÐóæÍ‹Ú|||2,Š, œÂBíWâò&ž=C—.]¢ßcÂ#\Yºt)猪0ýà­\\§NóçÏà ¼×&''£|… bccïÝ»'ÔŸêÕ«‡#$$äéší*îë4ÜWÛ‘"ÛFþç‡㿱YÒ”­lt/îæn2aìlBÖKi: Fÿ‹×ÕÄõ^(&ZÕ‡»t/GœOã>u£ä=qâfB¹rå8€ëÞÞÞ`ÜãÇcöÀ'˜mM›6>}zŽ9 :‡_¿~()”ǧÄâø³aÆ“hFâúúõëÍ 4Ðò J”(P áAVRqÀúhSyâĉˆ=êׯñÂu ͬY³Š-Š`,ëN@Ðóè·¼/^üã?ßS.tìØqÉ’%Zùøøx|O¦¨úðÃEÆ6JoÀ# ,‹Åb±þ¹î ;n7ýŒ²"tVÙhSlô±§Ò}oØö—‚ÃCŠêJÔñ («¦4Çò³Î=Sœ9s$ Xß²eKÕªUÁŽ9sæœ6mÚ‚ š«ªR¥ ì=zôÑ£G[´hѸqcháÂ…oÞ¼yúôécÇŽ-[¶ ×DξвŸ·ûLÜê³³7n9r$àÞüôÓO (0þüsçΡ‰6mÚ‘Àø“'OæÍ›÷5«ÿ‘Ôµy¸+MR’-–KׯÝIú1:&ÆšþsåwÊúeó(šƒ)YFE'déaÚÏß]‰LIÃ@~ƒìHÓWÓd°¾(S¬XN7IzYÞ|^2xÎ2dœŒ zމ‰™:u*®c úõëj£äîÝ»ávZS‡?1„Š+†Û}}})<ÃôÚ´i‚1DG²R¥J!‹‹‹Û»w/Æ Ð-äß¿U­]»6--  Æ+X° ^áùš5kª¬;ø¾cÇŽk×®a¸1[FU¾|ù#F`÷ß?þü•+Wv¾1‚:„¸Edü$¸Ïb±X,++r1ÜG VI˜ÜôÙLz|Ê:áHÖ·)rºî®Oüwé±Çýçp|P¡cÁ´¼õ²½U)›È,™G;ñêöíÛ€é={ö´oß>wîÜÀý9rÌœ93<<œ²½###ß·nÝ3f h›–¥7oÞ°¶…ÑßÄ{FWÑoooôñeqŸV÷ÁÇW®\æV¬X%Û´i³iÓ¦eË–uèÐ"Øî?ouß*Y#ˆ]v$òËvY¥?~`ùùÀéÑ) v½p7ê½S¹ H6!™LÊòWtâ±"#L1:vâ~ªqª¿èE’¿©cæ»=¡çåî ÷k×®””tñâEøâœà>^£££éðç^ŒûÚþ¤ðÞÍ›7›4i‚¿üòK pM`¼Ñ€feM˜‡1ÅܺuëÀ…•+Wþâ‹/`Ò‚ ðçðáÃ;vìÃÜÝÝÉ0€>®üñÇ@=°cýúõ'OžììS­$ê„úôéóÉ'Ÿ8ï8‰W´¨·Õ·oß­[·Ž3¦S§N”úL&Ó;wZµjuãÆÕ«W7lØÐ`0 AÀ'NìÕ«—Ùl9r$pÿÛo¿­P¡a¢óÏÚ€HNãëØÜHQR§¥<~¼ÿÄñÿ¦þæ•tÆ*•*æõÉægòÈ&`úÈ$쒚ܓQ›ôd½/ví/‰R)))˜d0¸(D‹Ø¸O¡‘¯¯/^ômÛ¶EÉÇ#pðð7ß|S¤HL#Ä`ÀýU«V|Qžü†b-[¶D ¸ˆ§mš"xÀè èÞ½;Àµmܸ1,,ìï=¬  ŸœœŒ/@ïÞ½aÉܹs *4bĈ͛7÷Påéé‰ùæ\Á &!¦BP*~T—Åb±X,Våj¸/Ùdc¢—=ìæ>ËÑ5wu?f³X’òó®ñ^~¨˜ü%ÅM‘L²¢²¾¤èÕ](3q 2e °t˜ÀU¥K—Æë½{÷€žsæÌ©^½:mê7a„M›6á=z>›1c†óvûÚNí ò%K–à#P¸\seo|Ï;GôØMKKCC Wò#ð®gÏžxÝ·oœ“'Ož+V¼óÎ; Û;v"Æh×®¢‘iÓ¦•+Wñ@6‹+ÍvÅn’M’âÿ÷¿ŸmòÑsg¿‰u÷0{)–Ú+ ÍcTÔcЍþ{e:¦¾|øá‡§OŸVÔó îÞ½‹+¹rå"d‡{陇>ú¼ סƒË–-C`P»vmL¸òÖ«W3¤X±b˜4Å‹§µyTˆé…‘ªQ£ÆâÅ‹Q›ó#Ñ(°aÆnݺùûû?xð5¬]»í¾ì6ù¬N:ÕµkW|ë0‘`Iùòå1ʈFà;†ùߤIL0­þ|m#Nb‰%úôé£Y ˜¦[©“ãÇŸ>}:½}ûö_|ñ(“¶€tv+J4håÊ•øsÈ!ƒvîmÖ¬ÙÉ“'µ]äiwò†Ú´iÓÈÈHºˆ£R¥J@Ãí۷㮩S§vîÜ\8sæÌ9rÀËùóçñ3ÁÚHÉŠ£!›ÐÉŽ4)ñ§Ÿ[mÇN|wÿný5Šåɯ—%róêþ+ˆ&A›6m*[¶,úríÚ5ø³óáÛo¿E%0U0C@ðEŠ¡½ç!„LÕªUCß:äíííÜ}´~æÌ™ ¤¤¤T¬XqéÒ¥ HOOwìBô÷騱c­[·†±-Z³hôèÑtzz„!þòË/µòGŽ©_¿~áÂ…ñ_Bå·³X,‹Åb½X®†û Ôͤ˜ìå丟³yš}B ²^‘6IT²9ÎÖ¥¥}E§¦ód˜˜„„´Œ¶X,ÀwXr÷î]@9ÁwXX˜¶Ï#^oݺ5qâDÄýúõîÓZ¾s…6Ü»w/11WsæÌ©õˆòËÑ_8ÂyÉ_¨›÷ÓÚ?Ê…QÃCÏn‚hÝÝÝaà%ÃÃÃA·¨?66×AÌ&“)k[4*²=]§×ÉŠÇYYðè;9õÇÿ¥ÿäçý/O7“ήèÔö¿2îÖGGG'%%i„ª‘:eåΖ߾}›¼É€+`ߨ¨(¡îQS°`AFDÆŸä”Äè †‹/èðlݺ544Ôù÷ ´žšš:gΜˆˆ”Ù¸q#›ð÷&ó ›W®\A—…:ð-ÂXÃEäØé‡ù¦•ß¹s'ƒ2eÊ Ì£/!³>‹Åb±X¬¬Ëåp_'Y=ÍnŠÑCvìÈã8ôÕd• vG‰]²^PŠÊú¿Øþ{üã-Õƒ5Ñ%à&^—.]:uêÔjÕª9Ø­uú{[ú‹¤8Vö…ôK þ/ŽÒi©;:§\å—Uþ×Q4á0igÒJ•*-Y²„ž«Æ„£Œ:t@¸è/Z´è+‚û·Ó‰Î»páB§N`ö¢E‹J•*õ÷¦!±X,‹ÅrE¹î«&›Ý nînB± ÞîØªÇ±8­VãU’À¯êº¾ºæ€ª/tfÒ¤I{öì!_DGGÇÆÆ†„„äÊ•ëÝwßíß¿¿¶Ý¾kȱaöþ×W8ýñØ_ Zá¦ßIÀÄ5 Û¾}»ŸŸ_BBF$&&Ÿb^ݼyÓd2)R¤X±b³gÏÖ«ú»ÍÏDÄú°ÿðáÃ7~çwÒxzz¾þ ‹Åb±X¬×M.‡ûÕt“ÑÝÝœM]Çw`ª,ÙeaסQEç8?V]‘V‡ý]yç΂›Ú·o¿víZÊ!ʤěž={"³r`Ók¤L†ûu]Ïw¥<Ñ`&EFFÆ%JàõîÝ»uëÖ½}û6 ì¼¯ZµêÎ;Ífóë?RÚw)55õÒ¥Kø‚ k.6ÇX,‹Åb½r5ÜW$Yq3¹ÜÝõŠšÈŸ®´LÆu}ßþûv•ÑD‰:çÏŸOHHpî!Ì\¨P¡—Ý|ýoÖo÷å›l>#‡Góîk&í¬bZ§‡%(¯===ýìÙ³‹…× ƒÕj $h~ýW÷µsÖ´/}£^ËY,‹Åb½nr=Ü×ÛôF³Ñèa”+ù Tõ9Så)®—^[R}¥¼ÞpÏb±X,‹Åz5¹î ½, &“ÑÃ$«Ù<ŽçJ)= ›ð°X,‹Åb±Xÿ(¹î;>±»¹™ÜÜÝ•_Í•uŽÃv)­™yŸÅb±X,‹ÅúU®‡ûVÙâáîa2eSÿrdk a—Y/÷EFÚ7 íp/^¼ÓÑŸlŒv¨–fåÙ¿š=ΓŒrÙ]bcM‹Åb±X¬¿K®‡ûB/›îF½I€Z!éûV¤o`Ü'ñ[­Öøøx‹Åâíííçç'ÔQü[,ÁT¸ÿ>ì¡gg CXX=Aû²¤N‘Œ†ù—#G¡Î6WzNšÅb±X,ë/”ëá¾Í–îiöv3¸ Y8pßàØ‡G–¬ÀHÆ}mR‰7½zõÚ³gÏäɓ۴ió·æH½RçAË–-/_¾ âÇûðððU«V…„„Ð|z)R§-PÓÒÒš7oŽÙ²bÅ £ÑH‘ßÕ‹Åb±X,W–Ëá¾cI߬÷캴GéFƒÞœÝM‘ɤ¦ñ³2†Áf³ÅÇÇwéÒåâÅ‹_}õàøobšP“&M` ¬Š‹‹ËŸ?ÿ¾}ûræÌ Së/U!…1ÀýºuëâöM›6òö”,‹Åb±XÏ“‹á>Z° ½Þ#æpâ¾Ug‹(Y±MÕWèý¡W­³+êI[±ƒô“zÕ#SÐòðÓ^ ,sçòööÖntª§rn tNnÁô†n¤v³²*OåQòîÝ»˜ׯ_ïÚµ+Œ9pà@HHuÙÙ¥ZòկݮyLŽ;v´mÛ¶E‹‹/6™Lœ¾Ïb±X,‹õL¹îáÓ„ä'yÆìIØñU¤—È£Ë.r–u¯Ó1PÎ&tžŽtžtÙb0Êt²®¤Ó ]&«Ú„˜xMKKƒ¡Î} ärwwwr>EØ_ <þ$*…<==Éfg”G?ÓÓÓµ q—Ñh¤ò(FUY­V´°£B”'/£P¬Ùl&?ÂÝ(£…´ž€mZháܼ©S§¨ÄߪU+ ¦aYH¦Âlxž€ž"\AC0C;¾ÊËË ¯ÉÉɰ‡òïa0ŠéU½Ø·Oèòå˵jÕB… Õæ yƒ C+0‰ÎÏò÷÷G»(€É62Å"##K–,Y¡B…ýû÷ãÎÝg±X,‹Åz¦\ ÷…" ŠÁhÔËi†ÿÅÈ1çÒö­Žò´søyzç××ìþ–âŸnñüÑ& nŠ—ÁæXð—²-[²‹/†A¿iMQºvíÚ£GâéÏ>ûl÷îݸح[7ñòåËiÁ»Aƒ#FŒ€ƒDF&:jƒ[g̘±}ûv­6`w¯^½P ÌŠQ ¼ åÞDDDܼyt®­j>¼E‹x“””4dÈ.îÒ~ˆ€zöìÙ©S§'°›B‹Å‚æŽ?¾lÙ2¼¡”wÔóá‡Þ»wâ x{Ê”)óçÏ¿xñ"…¨|̘1;wÂ=íë+eÚäRLBÖ[%IÖIõaÞ †¢9˜²„¹Î®Yz{{oذ¡\¹r¸úD1”Ç+0”òavç· æááAü R?vìØ;wRRR´ Q,W®\ýû÷oÙ²%ø¾aƇF+ j¼‚ª°K—.…³€¿F£áGûöíñ~èС«W¯†¿(ÿ…ázà8XtÞ±cÇ'òòqKïÞ½×­[7räHð=h˜²eâââj×® ªFÔ€®­_¿~üøñ0Ÿ÷QϼyóÐ_ŠR`ø#çïï߬Y³K—.!Š€åžžžk×®Eó²)4Ï\ÝG…˜‚ï¾û.}:ÌÀÜ5hÐ XŽøÅlОÕ Àë‹÷ÿy÷µgQ?>B§•(QAE•*U‚‚‚€þèK||<Èñoß>„”¼tøða8­L™2èã>‹Åb±X,Ö3劸¯˜ žžnzüáÀ}%]’Ü…lø9*ýÐÒË?^óIyh/U7,gƒO!áªR& '´ÙËòåËÁ²0æúõëF£‘T¥X·mÛ¦á~÷îÝaô_|1`ÀJv÷7n¼k×.„ íÛ·wÆ_Pû’%KPœZºtiâã¦M›îرaFëÖ­qeèС@”™8q"9žAüpåÊ•3gÎÀqÎ;Á¼¬ã>­¾ÓOè,üì³ÏÜÝÝÑe4Ú©S'z6·ß¸q£aÆx³wïÞ¼yóÂÐ?@sÀ0€pÞ9‡b Ôü‚½53Åý””” . ¼Ö«W/00p÷îÝ(‰H C””„÷Y,‹Åb±².Ã}Çn;²Í`òt3›„°Kv›ôØ”|Y>²êùžçÕ›wrWÉQ¤‘gŽ"Fs°¤Ó?–tFI2gê ùŒ3À¸€o€/1>ºxñbDDˆ$JVõìÙÈÜê\´hÑ!C:Ü'.?wî\ÿþý1³fͺvíÚôéÓË•+7jÔ¨|ùòjá£qãÆ­X±"99‹/.2éçÏŸ¿sçÎWXÝÇ{Ô†bÓ¦MèŒ÷õõ3gNÑ¢E‰àQö¬_¿MWªT ETúŠŠ;v,üã|F/!>¥þÓS/Xà1îƒÝû‘‘‘¸~éÒ%ð}pp0œŸ#GŽèèhÂ}=ã>‹Åb±X,VÖåb¸/ a‘tÙ„»ù±Î/']þßÙÑöÔÀ´Ÿôæüɵ۾e ±eû·AÖ;ÎÛuX+Ëz]&›E¢­Μ9óÝwßyC ‹O:Þ½uëÖ‚ Þ{ï=³ÙëÖ­Ö>ÜÛÛ·£3(zǃÈM&ÓÕ«Wûõë‹bàQ­¡]»vM›6­U«V#GŽò’ƒÐzß¾}W®\ jÇÛ·o3fÌ'Ÿ|BœššZ¿~}„¸¥eË–ô@*=X¼téR8¼>zôh籡äþ.]º€õgϞݦMOOOZÔÇ+º‡&Nž< ƒ;vìˆn¢/F£¯B‚‚‚¨•{÷î¡×111ˆCo=zñL‹-0X£Ó( · æÀÀ@DM4‚š1xMHH€—pËõë×- †åË—çÌ™“öÅ]ôìDÛ¶m1«à„:.\¨]»6ŒA$ ¿ÿ~:u¥¬ZµªJ•* šR}ô€5kÖàÊ‹G™Åb±X,ëŸ)Ã}EJ·êïþKºµMìXm¶ý+{%gQkÍNy­Âè)„Áñ¯¢ƒ-YÍãÉtï¸`Ò¤I cjÔ2Ñͪ€¡@se­ZµÀÖ O˜ —a$® 0NUoÙ²¥råÊBÝCpŸ”””––¦5„n¢ nF;·Ž Á{öìIOOÿì³Ï$À³r÷{ôèÓ’6eÎøûû?|øŸ"º7mÚTÛ‹“†dŒ¸âüùó0q%»Íp8¬Å•àà`„.&LØ¿?íÁVæÏŸß¼ys2ìÚµkxŸ˜˜ *„˜¤H‘"Ú$P2ˆs#ŠïÝ»%{‡ò98@·ÐVEhꋯ¯ï¦M›BBBÚµk·oß>\åÑ‘‘ˆ”`gÉ’%1uP®c†„‡‡¯_¿a T«V­@ˆj9d6È,‹Åb±XÿP¹îKÂæ¦¤šäЇïÝø}áby*·Î®ø(’÷#£ÍËQÂ( ]=W×àXàÏîÃP¸à«¯¾úæ›oDFÆ T½zuÀ1Àïg̘÷`qtƒlûä“Ozöìi³Ùнˆˆ¼y/^¼¸T©R(€îX,–éÓ§oÞ¼Yk¨mÛ¶}úôA¨@gci^ƒ†ºsçN¼ëS –~óàÁÜuåÊÚ–X¶iܺu Æ À”)S6l¨UHOõ˜­ƒèûÔ b€Ö­[cHhy#ºpáÂiÓ¦EEEY­Vê×äÉ“i‡M´ß¹sçcÇŽÁž­[·–/_}|b¼ñŠˆ¨k×®111¡¡¡‹-Ê—/ŸV†V÷?üðÃS§NQô*2žÆˆ/[¶,wîÜ;v¼zõ*>*V¬ØòåË1>úè#ŒPc„?cccấK—,Xyûí·aÒ¡C‡Ð_>U—Åb±X,ë™r5ÜWtúÇf³šny$ë=„!»dw“¬’ð…"Ë’ƒõe!é¡Ï"î}¦¦¦ÂÚÎ’Ñhôôôq‚Jš è %±øøøGp%))‰(<00P›è?11ÑùT]€>zJÍi‹ñÚXtž. ÐIºp®ÈHÄG»”¢CÒ⟟ä…¾¾¾hËù¤-JÝéÖ­ÛêÕ«Ç7^^^4< xê2­»ûûû£ãd$%ߣf:Ÿ¢‰½{÷"°A÷ÁÜùóç'«4¿‘¯`,¤¬}ŒàeðŠ¹‚!§&´ |¨ã¸Nƒµ>¤cƒÑÊ’¢+0u¢fE;(O÷ìكХQ£F+W®¤Ã3g‹Åb±X¬¢\ ÷Ñ‚MRÌF773þÔÿÈ’âëxßqIµ÷÷ñ—x¹s_]_„òp ü ŽŒŒ\°`°ØyaþÅ÷"ö°X,3„+ ¸{÷î¤I“Ê—/Ÿ;wî'NðýëEñ⓺uëâuÆ ´*ã>‹Åb±X,Ö3åb¸/KòcÃÏh8›ÞK/ôzE/)¿¾¢—½ûeAÿ[ÿ¸OùýpàǼ{÷î)S¦ÐÓ/8ËùöŽ;ž,6©z¢ŒÆ>-è Ú¦,Z´hË–-f³]BëÍ›7ïÔ©uøÏD€ˆ H:eÊ”3gÎ|úé§åÊ•ûS[ÌŠÈÛdÎ5jÔ¨P ÁKcÇŽÍ›7/üFøþt%DðÔ:Ç…ÑS\!þÖ6Òb÷¬l4”QxŒŒüüóÏ+T¨0`ÀØð÷ž&ö‡‹bEçÐŽhpž'-[°`Á¶mÛ0'Ûµk‡¯À3qŸZœ5kÖáÇéFÔߪU«÷ߟwMe±X,믔ëá>>^¸»»oß¾}Ò¤IÎ.\xîܹøô_Ý€Òþî µk×¢þäääÔÔÔ^½zh^lðï‘^»uëvèС3f4mÚT¼«û„Ý`ô‹/FDDDEEi?¹PÎÕŠ+Ê”)ó‚Åx*Œ 1hÐ ÜNWŠ)2sæL;wîôïß?11‘ŠùøøÌ™3'wîÜÚ¿¿´Vú?ŽÈ­^½z_}õÕ›wLïÊ•+ÁèZ¼¤]§ jäÈ‘ 6Ì´Z­G Æ ›?>þÅÇŒ󼑅¸yófü‰h凊yòæýrÂb±X,Öë,×Ã}Ô ÓoÙ²å³Ï>ÃÑÑÑ ÿ   ///4¤Û)CCüvmX³õ™Ìá|QKZpNP³@·x3eÊ”iÓ¦õìÙsöìÙ´8J ŸÚj±ö§sm”µ¢YEfÐ «óÚª–»¢-ŠS=p>ÂH¸9NûµÎµ=Ñ…§ëÏŠèmPé õ޼A©MxíÚµ–-[Â3ß~ûmHHˆ^ ¿··7en<ÏáJa~ ’Ù¶mþÌ“'O¡B…–/_n2™nݺէOŸØØØ›7oâ£wÞy×µñÕFS)r¸–G¤Àåœ ¤­s;Æ+Ê ~C£4ÑŸ°VV­QŠv´OÔ¬ ­šky/Oä;9·B!¥sB‘³çµ¤©'êYË;Ât>|¸¯¯oΜ9ÑM¸_¸úîÝ»ø6.]º´cÇŽOÌÍNúÉÅy&X,„g‹-7n܈#4‡köhE[ä–Q£FÍ›7…Çïl°–}Gå+Ñìqþ"°X,‹ÅzY¹î4›ÍfØ66mÚÔ½{÷Š+8ðý÷ß2dȘ1c4þ{øðaBBªw"Ü3!6ú§Dm(>>>))Ikˆ@&j=—2²–:h¨_¿~_~ù%ÕIt‚Ø}’p ¡†Uän|&†7µL•{÷îá L©ïþªè@gµTxú"œV÷µ…vpûöm4­.aZôôôÌ:ñ¢¡ž˜˜ªZÏ•+—ãĵ!\öý êÃ?Älÿ……… õñŒ#®dÚ"Y˜žžž˜˜‚ø1êæÍ›{ôèQ­ZµU«VuíÚu×®]Ë–-ÃGÚ÷cï5^Ã*ztVk¨wïÞK–,Á×mÀ€#I}Ђ,×zä9 $¾)ˆÏñÅÑ®k½>xð %%Eû4GŽ>>>"ãi>;™Åb±X¬W“ëá¾¶º2¸kÅŠ}ûö­T©Òرc6lزeË9sæ Bb£éÓ§Ïœ9%›4iR¤H-ùp3jÔ(Ô#2ÖÅáÐÒ¥Kûï|ôÑGŸ~ú)=,2åiÜ' DùÎ;>|èCl7qâÄN:ÍTEPfÚ°aCñâÅQl‡vQÏ‘#GõFÎB½zõãt@{èÔåË— ^ñªjÞ¼ùëø± h©ÿþW¯^Õ®£Júo×®]Öi ‹ÁCßïܹC]CÀ–(Q,K;#!€cQ,99Æ€Ñi¥s},Z´hVVdÉ-h±V½zõòäɳvíZ9… ì÷Þ{ô¹fÍš2eʃ¤Ž;‚©rfάY³Ð(<“Ú·oëÖ-˜]§N¹sçj1X˜²€ì·ÞzkÆŒdºÙ¶m[¼R„ƒ)´páÂ'ž !÷ž|x·nÝ`í–-[Ú´iƒûöÛo1µð'ÀE°yÞ¼yøfÂù¸£é‹/¾hÖ¬þ¤x_:˜ŠÉ†Øßz¸nݺhÓƒ¾YYÁ}úÝDñeÙ»w¯ÈXÚïС¢Ìè,³>‹Åb±X¯,×Ã}|ÜÄTúÉ'Ÿ€5A- hÕªÞ/Z´oˆfÏž †HHH€·´GñÑ矎$€F[_ý5 kìEèÀôÍ›7W¬XÑ9/èiÜ'ÜAý6mÚ„»¼½½Ñ¯Ñ£G#´@B•ü°°0xûí·Q¸K—.Ç×|Gþ…µ@àb”AÍàž3gÎõÇ pçÊ•+kÎ+и=55@é¼î‹÷ 0x·gÏžYO‡À €>¶hìå¢à @¾æ õw P# Žã£àà`ú‘Á×׈À +-gñ÷19@ö¹sç¦%ócÇŽ!^A®^½:<<½Fw„€ AÛTZ[àÛÒ¥KaáùÄÄDØW«V-¼Ç-(vÄ]0¸|ùòëÖ­C|ÐGýè/z _µnÝ =1÷ðzÚ»wïëׯk¿œµ#¾Â,Bga*B²-Zܾ}pŒ†¤Œ†`3¢â`êï¹sç®àvçVP8E"Fð7nß·o_÷îÝ5Ñ€Rt c€ÚZ†X¦N^°`B>|MHlܸ©V­B =z8ps¸Q£F´f¢&8½@ýp&¬Âë7ß|g’1øº÷}TQZà‡1˜)êCóÚ?÷éǘÎJÙnÂéß 0³=+O³X,‹Åz¦\÷ÝTá ˆ ØT¡B…õë×{zzîÙ³l=þ|ð1ÑFRR(Ü H–ù˜@?€”­R~X…ÍZ^ ¬ ;vÇŽuêÔÑr¦Ÿ·ºOÞ_:D5hÐ DÀV†šÁ‹`8paDDD¯^½ˆ¥PíÑ£GQUÕªUa³Ù §€§ÆPV4ª½ÿ>pï»vízäÈð(HrzœU!¨_¿þÝ»wa0b \ D¿ðçþýûá¶mÛf%µ†úrêÔ)<:u*âÂ8!ƒ>tè hܸ1pçÎ4 |ĈÀr *Á{´îœûñ}æÍ› ñ=Bé+‡ ”B@øÍ7ß wGŸ‰ûôC‚Xø_@–Ë)À aRRR¤!˜‡£žÈ^c±X,‹•E¹îÃbð+¸5öíÛ7>>ˆ7o^ÚàåÎ;9sæüâ‹/Ú·oOÙÀ÷Áƒøá‡K–,ѶŸøx.2¶0Gɨ¨(Íqˆ @6°ˆƒ’ˆ´¥ýã>ýVšš Ö'¨¥t‹óçÏñaaaãÇáe:È6•| .¬x lÚ´)l†ë4h@cñGá¾PAöĉÀ\ ;±K—.@gø$((ˆüi÷ÑGíØ±£P¡BÀM¡.xöӧO#ªA±½{÷†††Rm„ûÅŠÃä“{D—¶M§fíópenß¾ KΜ9‚FýüüÈá0sà‰Õ}üéïïøðကªá Ü?~üx•*UÊ–-»mÛ6-$êxÅ·‘V¸PuèИ‹ â'›i%á(ƒ`ìŽ x&îSOÑ;z¸sçÎ'è"âU«ˆ¶nݪá~ÿþý!þùçàxÊÚ¢¢$bô1ÓÕ}z¤eË–ð$ªÂÔÒ¶7¥Ý?ÑS¼)Q¢ÅEŒû,‹Åb½‚\÷ñÿàð@!'`† *„¦ˆ"h!<+iZô°5ú‹x¦k×®ˆè¶lÙB;,‰ŒP=‚ÃÁߘ“p#]‡g<㛌8á=˜Žš?>zJ?ѯU™0íGމÈÿ¾ÀÜÐö–Íã[0lØ0¼¡^Ð “1Âa°0uéQ`ÚùÅ0+V¬€O ,¨<çè‹Åb±X/–ëá>ÀÄ9~üxÀ±ŸŸ_¾|ùÊ—/øFùëׯR¯]»zhþ &€Éð@6]¼x¼uÿþýÐÐÐyóæÏþ?{ïXEµíÿÏIÜ ¹$ôò§—€HP¤K•Þ‘Þ{Gºt¤„*~ô¦<½Š" RÕ?½üÎ#ÔÜ÷®1¤œß'gyöƒ’Œbâú^ïa2³gíµ×^{ÏwÍìwá~i†}„ܾ}ÖÕ€ÁóÈeçÎB²¹„¤GˆØî.3äöëׯ÷îÝûìÙ³ c‘šØíÎ/$òóÏ?G>¢a5#k´4iRxxxß¾}!;wÛ(P€ÊÄ$ƒyséÞ½{„ÁÁÁ\5¹\»v âkïܹ³g. äÀ}Q#þüÂn…"sª»…ãÊ¢øGêË“ _¾|ò¢ ;eÊâ´C^·;v ËPR,³wï^{¥Á¼‘O-˜o×â¡dMAÜe¹K¼ƒy„sïØ±ƒ[îß¿åÊtÃUðIx¿DGdÇë2eÊ$3%äcþ#Ûœáx4„òåËÃˉ|îÞ½ËI¿Œžâ˜Ú¡QPeDhø ± Çòñæ -É\òóó›={6Å—ï$´Gù4„VxH‚ƒa“ƒ¾ú꫺8B¡P(/†¤G÷ Õ9r$ìDVö¨]»6ypþ›o¾©\¹²0c.ÈkE!.7^±bwíÛ·OäAÚòåË¡Ëè0zôhH˜½ ˆ‚âCY&ï5Û¶m»råJcQÀ¤‡9 8P6‘:uê´lÙ2¨$aòåu¯åæúäs=pà€™%)£2 …¨1"=L þzôèQ3Å,ž#gÆ?tèP¤‘…¿ÿþ{³FTW«T©’'O3ÝÓf NI‰¨BŠ)£¨á‚… ‚4Ë6ap;b-HžY`GLÍÕýû÷C—ÅžC†€ýõ×Ðk<¬X±b[·n•­»0ÅÇYG™“„Ý»w§¦p)üg÷îÝð~ ~ä{Ž™ŒQ¦L™={ö˜±1ÄB$#[I)ä(ÚgŸ}†(q_6¨§Ùf‹ºÃ²@> ˜”!PgL‡rçΞø³L‘[pTØ¿å±sêÔ)™øk–ãÄOpK¢;J„X,ðÿ»0dÈ™‘,ßyˆZ·nM…Êr¥Îa%å’%Kºví*ü[DÑpÐÊx5Žif¶ PTÁš5k¸‹_"¬½téR.µiÓ†»prXµjU"j"1Yn¨yóæDæfœ¨r,RªT)ËÕ¢‰‘èpfNJ+‘h8ä…té`…B¡P(^ Iî[®Å.¯\¹"¯S»o…AŽ?îå^ì<þüBæ8“#GŽ pþáÇß}÷å"—P“L™2¡(¹#Óž)¬ Î}âÄ Ž!vçÏŸ •uM …#ò'”š,ì#Â/\¸0lØ0J…âÀ¼›4ä΃oLˆd???,@bô¥K—,Wâô”a*ÒðPÒ¾7pΜ9ñ"³‰¬x™ŠJ@È/±„Ì<6ó:â5¬ärûöm|ÒN¾qlÜÃÌÍ1`èlÙfªÑNICuЈµd»1ÆhÜ"+eÈ@2QžJ|ðà]¸¡û¤'kY¨Ôø3틦-±¥X ùV¶I–Á? r'…B¡P(VR¤ûBËìPx‰ýO3©ÑP{J3ÿÕ,Ôó«y™iö3¿Å®$¯×F¹ÂDeŒ5%¬T©RÏž=óåËgŸ—iLÛ%Ý~µP&ùÓŒç6EøÕñÍö»~Õ¤¿Š÷îW2)ÂBXÏDv­ìv{±Á<Ï–ýWµŠs^Tr¸glÛ-Ç8æÕµ™cm>MÄÉÝ|QùÕ‚Ø¥Ù?¹˜ öª´›È.üY3Æ)rœª·Ês#?ë`r !„‘lr4™JS2—â4{2Ó4ŒnqÜõYó>k“ÞÌÙ}Öà …B¡P(„$I÷ÉX¦þuÿRZ¬Ù¸qム+¢œœ÷u¡oß¾£G~Ùj* …B¡P(þ^PºŸ8Q ZèÐ!Q̼u¸VIïÙ³çËVS¡P( …Bñ÷‚ÒýÄ…òàÁÚn†@ÈÈ^¶š …B¡P(Š¿”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"ÙBé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"ÙBé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"ÙBé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²EÒ£ûhœ*U*òFzÆåííͤáWÒ@¡P( …Bñ·E’¤û~~~ááá÷î݃Üó§œ'?BËôéÓ ×6P( …B¡P(þVH’tUV­Z5vìX2 H¿ÜÂ¥† N˜0x@ÎËkþßg"…B¡P( …"©"éÑ}„r q={ö|òäIêÔ©ƒ‚‚¤$OŸ>ŠŠ?~|‹-Ò¤IÝ×·û …B¡P(Š¿3’ÝGc(>J/\¸päÈ‘+Vœ={¶¤?{öl×®]}||¦OŸÞ¬Y3‘‰ü†……™øùùùúúRîL ¤`ËI”.]:Rò'“/ÇÜËŸáááQð'E0¡…ÓÔxøð!òæ©R¥"™äÅ<”þþþO]àw! õ$ª™á˜Ø†4)R¤À²2?¤M›±’©Ã…G™LI€ò$æ<’&$Àü"ŠH@2 âýât¢(É/uÇ/…’/*òu…òb.Sç W( …B¡P$:’Ýæ '^¶lYçÎ6l¸nÝ:a“H;vìÌ™3çÍ›ï9PRxùöíÛ§L™b„´hÑ¢S§N”ÍҠêU«+¹Ë/qÂ’%KÞ|óMä6lÛ¶m$&_¸2)…‹¿÷Þ{C† 4‡›r~êÔ©’^@‚V{ Gv=zô8qâ‰ÑùÈ‘#ûöí#/(r‡ã·Üô{QŠ~ýú>}š4bì‹zöìIAd 2¡à ¸pႱՈ#ªV­Š4™Ü,ç?~L.—.]B™ -ZT""ÒÄë1”‹ÄèÙ·oßÈ܉9r}¡O—.]¨P H0ìòåË‹)"áÒ}…B¡P(Š?Iî#V •„š·oߪ+Å¥ÙÕ«Waÿ÷îÝ›5k–`N®\¹rÆŒdöèÑ#£"ÁõÇW«V-99{ölƒ’Ýç’¬»¿|ùò: î+ô¹T»ví ÀõeÑžµk׎1âöíÛAAA¹sç6*rͲfÍ 9&àÌèÑ£'Mš”1cF’aN<˜B^ºt©páÂéÒ¥“3ݺu[¼x1D:ž-[6±”—“«V­Z½zuñâʼn78&MÏž=3eÊd4¿sç\÷îÝŸ|ò ä˜3UªT9xðà„ Z·n%KƒÂh2`À€>úHÞâרQ㫯¾‚ëKT®\VÀ¼yó¢sXXXŸ>}>ýôS$Ëg@\§üø1ti 6”¸sQKzÄ’ïÛý8®³oß¾víÚ½õÖ[sæÌ D7‰îÝ»;vìÃ?lÒ¤Iš4i<¨P( …B¡Ht$yº_µjÕr‚—ó=zݯ_¿¾$†7ÃãÓ¦M ³—10ö"y{{>¼Q£FXN¼hÑ"ˆx´ f¦lƒ úõë‡bB÷»víºtéR¨3tܾT»yóæ_|ñEÙ²eëÕ«·sçNÊÖ´iSB“cDD:#íСCD–‹îùå—ëÖ­ƒˆ›" Ýïß¿ÿÔ©SE“‹/Ž9òÂ… ÐqQOÚ´iÓ±cGJ÷ðáà *\¹rZŸ"E SL 8à$ñA…Ô tŸ3f323Ã8A/àQ€ÚÅÔË–-{ýõ×1>ìŸÒ„lذ!þüúF_¡P( …âå"ÉÓ}è&]ø+D³fÍšðÚîÝ»ÃïI¹fÍšQ£F-Z]°`A³'š9s=àÇòZýúõëwîÜÉ”)Sîܹ¹ºk×®‰' ÕöíÛáå’u·nÝ–,YÂïàÁƒ³eË&'CCC‰V¬X±qãÆbÅŠu¦wïÞ$˘1£ÑüÖ­[óæÍÃÄÁÁÁ–‹î! ?‚Kcè¾Ì-F7TÅXEŠI“& E Ø œ¸ãÁ  t¿oß¾û÷ïçÒ{g=­i._¾,ß°‰d¹Îž=K­Mä¼,àã±çXbL*²V­Z8ÇÞ½{OŸ>=hÐ Ì2gÎÌHL"["( …B¡P(^’݇ªBO!âsçÎ…‘¿óÎ;ãÇO›6-´ZܰaÃk×®õëׯQ£FðÎÀÀÀ:u†jTD9ˆòÁƒ/^,Ã÷Ç7a„–-[vîÜY^{£´ŒÝß½{wÕªUE+‰… RòöíÛl†0cÏž=Ü>f̈¾ "jݺõúõëGŽI¾Fs‚éÓ§Ïž=»GdqáÂ…¶mÛž:uŠRp  ¸‹Èáý÷߇î-P=Ä0'Ož„Ê—,Y9OŸ>õõõ¥ÔÄ$ü°ÑÿöíÛ$ã—, .l2Eä`Š&œþþýûµk×þþûïýüüdì><™ªäÒ¥KØ„J”ÉáááÛ¶m{õÕWe%Ó„ T( …B¡P$.’Ý—©º«V­êÛ·oDD„åZf§lÙ²›7oæ–åË—8 HˇC }ZµjÅ]Øî{àÀ;wîPH“#ÅDZÿþý›6mŠæõêÕ#,Û!d<1 Úrý-Zé‡@W®\ùرc¢›å¢DÓ³gOB±)º]¼x‘€AÌb¹gßþÓJJ$,kÀ!sïÞ½o½õ–l2зû2èÛo¿­[·.'‹+¶fͬ¡Kñ( …B¡Püôè>§J•jëÖ­ãÆãX¶Ê‚îÏ›7OVÙ?~üŽ;8îêBdd$ùmß¾=$$Ä.gìØ±Ð\ÿ)R$o¹ÇâËÚ‘°üÉ“'Ë¢õ²¼L÷îÝ/^<|øp¨6¡)IV³fMb ’‰(ô¡Àpî9sæPl“cãÆÑ;Ê+öÎ;C¸IL)È¥FZ,[¶ÌrͲ%f€Fs’»Ž=š:ujÊÂyѤ_¿~\å¤l³Å%lH¦DçÏŸ7U‚p„“#Êþ\>$N tŸâ¼öÚk²ÝX‚†Ú›ý¶®^½Ú®]»#GŽ>t•(QBä$ttB¡P( …"Ñ‘ôè¾lX 7 “õdÈÚš&MÑ€òÀz9Fc¨°(M²ÇÛÙ'|]Þ@ Ð  ×'w®B߉dÚ®¼ÌîÒ¥ ,Ÿˆ¢G„§QÍÅLòš\$ Ó, æ²y–¤DÿHÈU¹Š4tà.òŽYdû^ù.!s‹ec]ŠCy)ÙrËhŽXû~)7¢¤””4H{òä‰S6¾µJ÷eÔßµkOæÌ™×­[—+W. Œ …B¡P(Š—…¤G÷Ñf,ÃZ̪2¢¢Py©,üUÞ@˶P–}š?E‚áèfŠÜh/¿¬m?`À€7òÛ©S§ÀÀ@Y±G‚#Ù„võìf’ó&¥Ñ ò’o MA$#{AäØè'S9i¹c»†vɦڞïFURÞºu‹zåøöíÛ½zõ"~˜>}z©R¥ ýD) ˜•þ …B¡P(/Iîs‰Œå]øŸöòXFó6lÑ¢Eaaa²?n×®]áý²–¥åWN ¦²\ѳgÏ;vPjŒÊAPPP–,YÖ¬YS @‰.ôí¾B¡P( ÅË…Òýø!Ãx88pà§Ÿ~*¯·aÿݺuãŒù˜ð7YtRv4£ÔÝ»w‡îˇË=È*00pݺuyóæ•êSº¯P( …Bñr¡t?~F&ï­ù…ÚIiºGU…}(ÑÍ›7©53èß òÉš5«¯¯¯ +ú;ØD¡P( …⯠¥ûAH­¼Â—rʱ™!ð7áµfâ0{™0`fÈ ~Ì —­²Bñ 8-§ƒìty¦Ã툉výáûžÍ¿®¯UgŒÃuæ%ë«x.œR]±Õê´bb»(×)/ËÛáüù‚üßrÄÄ&uü-:j…B¡ˆ¥û …âï§‹zñ\ž_/gŒ—3ÒŠáÐÛ²|,/GìyH¡í匲¬”J÷ÿâpš–#Úõ—‹Ö[>Ð}‡Ó–Né¾B¡øCé¾B¡ønÊõvßM ]ô>ÚõëËÿ]i,+Ê{=åÏïŽUüüÔqÞ/Î8OÇÏŸ´6 ÅßJ÷ Åß±tßúù=ÿÏÿY±40Æû\ðçÓ%ˆqDÇþÀî®øÌrש·‹â{ÙjØ©µ©P(þ¾Pº¯xAÈ´]³©åöÙw,Æì—øˆˆ¸~ýº}›ooo*=EŠ&ñs`²÷0rDùóÏ_"ɾI‚ýLœ}!L²ßï·fÒˆ=wsU²0SÌÿ²ËFÙ­df}È%{qÌ<™D™!㌱¢½b¢¬hg쀇Žã"‹q%Úíe9¼-o/þrX)_C¤\ºtÉL òõõÍ™3§— ¶*6È„ieöÍI¤ÖŒËIןP3S€3¯ ÅßJ÷/ìO-†…… ‘çqªT©òçÏŸ&MY½Ô<õ…PË;wîìÝ»÷ýû÷œ€€€={ö”(QÂò`=räÙq×Ì—/ß¹sçpŒàà`Nþq¥þ-­L°ÁïÓ§OOŸ> iCÏÌ™3£¾ ƒ)T¨•Hä[­ëêÕ«ÃòæÍköM³\-öÊ•+Ø™?³dÉ’;wîß]ÊćٜA‚Cʂ‘‘‘œDaÎܸqƒš J´u]cgtFÿ+æ¿/Þ»ôï˜0}'\Лÿ,GL¤ãˆIaù¤Œò)¡`ïW¬”>>ÝÇyÞxã Œ#~U @Z •ørY©<*.^¼HonBV* RŽoÓê-[œ™P7‹Ož˜çôéÓµjÕ À!²dÉbäp‰g¹Tw¼”¯‚^¼x±Y³fwîÜ q;îuóæM~qˆ‘]øŸó)ƒV±wïÞ¾}û>zôˆ€‡â@ú1j7nÜxíÚµ(ïíÂïÏQyРA×®]ÃàÕ«Wǰœ¤uP ½zõ¢u¡ØèÑ£»víúûsü# ”îÊ•+л={ödË– ^‹=ïß¿ïÞ=.-\¸°uëÖV¢íZM¬øÓõðk3¶Î:ð¿ŠöÎôÏŒiSDÅ8£¼c,ogxÔOÿýøß‘¡‘3ºL+“ýu?Ç?þüѳAïè,W—ÁUäp Dÿ[·nq/7b½ìÙ³›v/ç3#³‰…Ðe |“t S§N…ô/^¼¸]»vò‰”˜ÒÉŸCÚ(/µF2”Ì›7/ŸÅÿˆñ ¿üãù+G<þñ_óZŽÍÿJ±§>>+ÒÇŠ÷ ÿhÃ̯Ξ˜Ömb¥Le^ñæÁÍÄ‘¤8xÞE·†z’‹q&Mš4Æ Íü ÿ¸óÒ­ÅÙ°&S¥JLJ „‡˜îN>p᥸•’#G .cЙœ”ù0¦SÆUnܸ!oÇI ŽM3h>Þ¾T2ýî»ïêÔ©S¼xñÕ«W‹ð 2á5jÔ ¯G>‘2¼ ýñ(š­’[ÈZ¢ô89’xÔ¨Q'Nìß¿ÿ”)SÄDØðÈ‘#t) 7+\¸0ÍŠòÒÄZ‰üŠq¦ŽŽp8žZÎÿ8³)ä?'¾š-8¤Å,¿ˆ4ORÿw´ÃÛÇJ±xû¼ÝßljY³q»·:¿âH'Š¡*QĻᄏ}ûv¥û …"ÙCé¾âý¡È%J”€óíÞ½›‡º>QÕ…aÆÉtCXÚ¼yóŠ)b¹'%ÿªËIÁIòäIt#œ€¤VªT ¾‚¶ëÖ­›6mZݺu'Ož,„“˜îÂ… ƒ¦p¦}ûöȇ»sK“&MfÍšõ|;˜9ÊË–-ëÔ©“°mr\ºt)ÑÂThfœœ4iñ „èïÛ·oüøñr/W9.[¶,mPAå,X€þbøT’ì°Õ gå.LñIСC.Å6cˆýÐ{z8ýÑL¾„)îÝ»wøðá}ûö%f1QX~ÅŠhH¾hBvó<~ü¸Tä$q™0P_dêôrDÞ¸ÖvùàÐß_ÚvRÀ×®†=ô‰ŽÌâ˜"eÊw,=zù»Íz¾™¾$µ/݇éâ3tˆ–«Q`ÌÙ³gãQ0o±¬ ±3õN8Šõ¨tû|V¬ ‹…ÙËM‰‰n”0oãÆbsçÎ5lØŠ†oÙ²M¸r‰víÚ…ûÉÇ1š ‹CúExûR3æªbÅŠ4«O>ùDn¡P(€'â¢'ŒVø°4vbþ>úˆ°ß¶\. £ ý|’ÚM>XáâÒ4mFÔ÷ßO«ÄnDð½÷Þ˘1cP`#ÒŠJãðŽŠ¶öÝØ3tÍ€yŠÏm¶ØñÔñÃO?¤óÍä›~×kvøÏºo×iXªI*‡Ÿ·ø[—.]0]=X¼n£P(IJ÷/Žk×®ñàO—.ÝgŸ}·ÃcÚÕþüóÏßxã q xö‘#G ’°óbºjÕª¼yózž£Ðý-Z8p€\fΜ)„±ò%'7gîܹÿ8xðà믿ίåòà£G¶mÛöâÅ‹E‹E7HÉùóçñN¨E$€òE¶lÙ`ºwïÞ­\¹2Jâ™ÖoS"y³KÙÏœ9ÓªU+<:µpáB˜+|E^ë¦J•ŠòÊ'‚o¿ý¶iӦ¤%\AÚ*Ñzôè1qâÄxM!1M¨[·n!vB[Øl˜ÐU‘O+7n<‰”Ë—/‡O§tA$È8(.Á5ëÕ«'¥[½z5V…`¡Š™÷ýüBñ±9£Fš?>ÚR4x¶iíü¶k׎èÂŒÎz>ÄtìØúˆbC‡Ey)*ƒ‘èzä½x³fͨ`ÏÈ—éJè¿Ð688¦¯/Å.¨ït¦pFÝýñz»ƒïFÞ×°{Pš¬Ë÷m¾}å‡Q­‡ÉZ4,2ü_‘ÿ“9Õ?ÓD¥öJá/Ý'J$šÅ‘°@v ³˜38<Á—à”™˜‘¸÷vn¦¢’Œ»0/žiÙFÂüÝQÛ·o‡=BHgˆûµiÓÒÏ-œ$_NâWÕªUCI¼‘ꦥHMaO"mã¼'¯·…%Ó]UÒ¬6mÚ$½4…Z³fM¿~ýÊ•+G³BøÙ³gihœ'"ú%1A¸T%•EÃù Sí‚>Tw»Ž9’V`&ì¼wïT¯^½h§„”-š·H›.mÿ˜¨˜Þ)vý°½ßêžE •ü ú˜ë¡?,þÏy½köª\ëIäÇQRdHèM¼Žâ¯]»¶OŸ>Ôoñ …"ICé¾â!cyK•*ÅSœÇ¼ G‘Eî TëŽ;Ê”)#³xñƒï¾û.Bl¡ä×Çع'3t „s\¿~½eË–ø ‚ÿÁo,X S8O…ÖÃæ!£B÷-×€]h7æË—oß¾}PÕS§N5nÜøáÇܸråÊC‡ñà‡æÖ¬YsêÔ©râ ˆ;¡‰Ÿ³"* ãG½¯¿þºwïÞW¯^Å,’¾N:cÇŽÅÉE7xÆ®]»àj5r¹b4l2cÆ š9rî¯ñåwéÒ¥;w®Q£FëÖ­¡\]|ðÀ¤I“¾üòKxØ„ † BsâôÒ/BPoðàÁ‡&G„HXBㄨÑ©2t“ÉЋ/†ц± Úb1n\±b·@˜ä?Ò¶nÝJv›7o.Q¢„ *žÃäÑ߸q£¿¿?öC½ÿþû”H^ö[®—è5ºyó&‘òå}?‘ :üñǨ'Äc7ËùÔíë´Bÿ}«ÝŠAþû|!ßW,GÊË?†¦ŠJ9µÝ´r9Ê¥´RÄX1ÞÐñh/‡wŠxé>ì󫯾ÂÔì´iÓŠ/N[À†o¸)±hHHHõêÕÑc¬Êïƒ(µ|Ü ½¡;ᓯ¾úªÌÉÏy»OÙå«BŽ9`öfÜ2€4úR™è‚{äÏŸôèÑ$“ɵèF¦H^¿~}‘"EûZ>~y½‹=rüWXø‰Æ½—¯5îxšÒùT¨ÏÏÙñK€G¡<9ÆSÇ …B‘Ä¡t_ñ‚Àþp/ˆWPPŒ˜·\ŽÑÀÈwîÜ Ý7KCžá.3füì³Ïì‹ç$¨yÆ[.÷"À0œ9áL¯¿þ:D0oÞ¼B4CCC+W®ŒGAG„Œ‚cÇŽ¡i¸J„Ë‘†Û¡ï¼óκuëÚ¶mûöÛosá>~ü8W (sBÎsó¸˜ÇÏl ÎG.0~ì oÇ‘s9r¤LBåjóæÍH.rWXXDò 톹z2Úrµ^è~×®]4hùF`ß¾} °óìÙ³ás .D,–7n6¡­‡9œ¡éQƒ¤‡úÈK_”ùôÓOçÌ™#ãËI™ã$-¹víÚR¡q_=FŒ@±0!¶-W®œ'ÃÁÍPr2B“AƒQYò'9»wïN\A׃VÄ3°^Ê q”Yh‹‘¹ –‰ÂÐÍøg XÎgt*§uÿÇÛÐýsOÎæOñèþͨG^áŽÎsÊe+Ÿ*ÊÛËáÞ–ÉŠ¦®Œñ£a®\¹ð%:1úGh÷÷ßOàE2A…”}YƒHq q‡çU-ZÔîc„£Ü ¡‡%?»27>O»ãª¸ŸÌcÁøxÒ²eˆUáд8???Bk‰1h tÁ\ÂÎåË—_µj•|¢‰Çt.—»rå -ˆÚ¡ #€Qغuëâ0"GŠpúôi RöìÙ“øp3tæ‘€rl0Ð 5hÑÐý1cÆXîn!ÎCEÌEßrëÖ­E‹­[·>c¦ìÿ_¡Ìk×ï׳Ϯ¶ôû´?t?·ãÕ'Þ¡a?Þ_wLƒBÍ,/ÇS¯¨Q¾^²O²<“h88°Ò}…B‘ì¡t_ñ‚·ìžÜ2˜GƯÃÀd0Ï_|!ƒy¤¦ ûU«V…sÈZ™Æ]T‰òv_˜ôãÇåÞóçÏÃ>ïß¿_¶lY(/úX." ëºo¹½óĉð›üùóùå—iÓ¦½ví,ŸKzNr/¼¼N:›7o&ñÑ£G«U«FlÀU™ø[.gÈ7´Oæ°âââÃÈ á¸S§N“&M’@¥fÍš%K–„¥¥I“†‚ˆ«O™2eèС#é¾`Ù²eD7^³fL_†—Ãï¡Mýû÷GÔÔ©S @ÖpP!‹áˆåå9 êÃ?„Ò&çλaƇÊ,R)W¸ ›6m‚j‹ ¬¤D&9Üû+É Zˆæ[o½å Ý—·ûÜ‹ÎdAO!“ž,XŸ£™C—ëÕ«‡bï¾ûîÉ“'þæ›oÊLbaªžX;7iÒ$~»¹óüWø èþíˆÛcêwMŸ&ÛʽŸÜùáæÖ£Kg+íå»õ.?^ù¦¼u¦-¼÷Þ{è¹eË–"EŠ\ºt©eË–]âêZ<äìÙ³ØÛB”¥”ŽŸ¡{¥]<Û»Qè¾y»Ý—…ç-·¿ ÝÏš5+7Zî©´/^Ä¥ñmN'Ð °'Íh4IƯÌÓ%àüä“Od\¼Å´\t•hk´iø Þ‹&¦Ó–‰´÷âÅ‹ˆÒ$í{,H;ÝçªÄŠïÑ£G[Ϭí#yá$úè£ñãÇ÷ìÙsÆŒžŒ¬,_¾œ@–iÃÛ¶m[¹r%'3f̈(H3DàÀóçÏ'–¨^½:1· ¡qÒ ƒƒƒ©šY³f¡$µ}ûö–;¾‚ÌÁ§©PâÑ áòÅ€ÐBH$ç%^"”*S¦Ìsš°½2ªoß¾‡ÝšSè>Ê RóæÍ©¾7R 3»”"Ìà ØÖºo¹§êþ×ÓëmþÏ {ÿº¬Ý¤‚Å»ãˆzš9mîT–_j„ÄDÓ‡Ey{y{°ê¾t|xïØ±cΜ9±á„ ¨h"´õóó‹v¡E‹TIÏ×nhöBÈ¥gé>þüìØ}ËM÷9³—ŒÊ:|ø06ô÷÷—ñuðòFÁ’É‘¶ ÄåH|÷î]œ&,úã³[¬óË`ÅÌ™3ÍÔ bHüM&×Jbèâ);±¨åŽ4œî]x¿\ä áD´Q£FA÷ŸíÛåùÝÉ')ü³I£&ÿ™Á/£oŠ”ÿ ˆØ{sÏÐÕ®©ºÍ[‘Ñ?üëJ¶äNï•.Ú':Òë§TQ©­/C÷É®[·.t_¾'( E2†Ò}Å‹ãܹso½õ{HŒ¼ „ÝBÝ :sçέU«DG\'£Êy¸’˜§lúôé¹zôõõMÐØ}*]¦ž={â.S!L… .)R?³Ó}xÏÞ½{åÍ"ä©wïÞçÏŸ/X° áì!D&´Í›7—,YÊ[­Zµê¦M›p0è~åÊ•  [(,o”Ë墢¢ä ¡,GÖ%„;v,Ê´jÕ æj¹Xò¡¶Ð&HÎÏÉ%K–pL2ø"7zòvŸ4d„ÌAƒaH•ð§Û·oÃ8 ?¨lF] ‘Oüi„b 8",ªqãÆ„0{ˆ5Ù³g—& ç®{÷îQÌ•"E Z+aüŒ_È•(_ 8CJl[±bEOªUÆd£*Ž‘óäÉñª]»6ç/^L؃;¡s³fÍÐäÌ™3Ô2YC4©,Y/hÚ´i˜Ntkذaüóƒ0y˜fø•ð Ý–{ôï°…m&x¥˜Óáåç“ÂË;µ#Æá;ä'Êéð‰ôòòd“-ñ.~‰~!¸ônD)„CÔÎÖ­[‹-j^l¿ñÆxïÇ Ö1ú7nÜ6lñ$Å¡]¼ù曲{ƒHþî»ï08þŒJ“áÚ”ØVè>#­O"Øp¯^½¾ÿþ{ˆ>Ò å^b·:uê >\’‰•p~ꎂ¿y¸‡NN-Ô¬Yý×®]+”]&R›B¢bŠyéÒ%”/[¶,Nh¹!¨-+¥z=³G2·PƒÄu=zôÀ!e<žD¸¡ÔÉ“'ñIl{ëÖ-›˜=y………!^Ž4ÂYÕþþýû°‹/Bîå^gÃ/ÑöU…É6®o¿ý6Tõ‹/¾€”ã„-Z´€S=zîŽÂ-ˆ+Ðö·ÞîËøJ„[üe—ÿàÁ R¯^=H?%¾…)ˆ…8/( G—1ÐJá‰ccjØ$a, X @H˜L $nA¨$FÈ’%ˈ#dJF3ÛI ºsç SÀ¶mÛ’rÒ¤IðK +á,µ„ÝГ!¿|ùò“'OF$›[¨\¤ÁòᚃCÖK—.íÉ cñè>·“>wîÜdJŽ•&L˜Ó•؆:"˜Á¼bÉ». ?lÔ¨‘GtßùôFøõÛfø¿£}£2ÿ3Ã+¾¯üóÇö¯×/W†¼©ÿ°"^Þ§—3Êícy{¾ÍØW_}Õµk×T©RᓲúªLÅ!„Á› ¤®…&eƒŒP¢D B—B… 5mÚT¶NÃØø Ï‘[2fÌH؆•() o§öeùQëÉF&—FDO]®\9œŸz·÷ÑØ“\¨¬-[¶xò)UáÇ'Nœ@¾,‚õ'ž” œ”Nÿܹs}úôÁ=?h餔FG ý[ïѱ-Ú½cÇZ%%ñ™bR""\SÏš5‹òÊÒ™T3Òr¦pþËùïã7NÎþÏÃ.¦NŸ*ý?Óg {¥r‰ªJ7û‡3—åå´œ&#)éÞ½{qWä¬^½šÈÁÃ*V(Š$ ¥ûŠöïСÃéÓ§yÒ›3Ôà¨Q£x|B¡)ft2)-›—p•ÄóçÏ÷d­tùP'ƇZ·n 7…âEöìÙá…P%³”‡åúøÁ}ôè¢ œéý÷ß7n|Â4dȈ„ØrFX¾|9ýôSÙ ÉT)93qâDyÅ»páÂR¥Jy2v_(þúk8â÷ßàÀ¹ }ÇŒ2C³lEÑ}ȸ<ðøñãk\ }ü J:­è˜ÈÛ?Ý™±qÖ=½aý„RXÞ¯D¥íѰgþ,RƤòqÆk§WL´#ÚÛòIЮº×¯_§Ppú4b"[1ˆ´‚S§NÉ"<2n^¦Rž”ønCÕ¶5oÞœ’ÊüoûD ˵U¶ÅÛåÍ7Á*Íײ#^¥ê¡òøÒ¨8ùìiÆ¥ísÊILS%SZ«‡ƒyðXü/’q;üÜÊ%Ú™üâ;[Ll`áxúÕ…Ckw­ûÑ÷ÇŸ|~бb^ù1eõR5•kæëLååŒÝ<ÁépZ?>ŠýwãÆt •*UÚµk—'‹Æ* E’†Ò}Å ÂWS 2ë”óÂf,w= p¸Vû–@È€=k“ɰs r„ŠXÙÖìÆ*çÍ]–›1˽¢›I`8–¬çcvѲž™Ah .DGÔzgÞ#ÆÉTÚ†áÓb@ÎÀ¤GŽ ‰AI7Ìr%’£(i8t\DÙ•‰3EÒns,E¸áˆ†½I¾²—°9o " Ø”|~m ñ•¬‡p»i£¶y‹,7r,³ˆp6lèÙúñΧ^‘?Y‘V4ÐÇ⯠fïíc¥LiùZ±*IJÃG´WBÞîÿSŦ7´lERßsºæÎÊzÙ W¼ÑN—L¹Wä8Ü“wî&/ãx&½FbÜ<›zŒÏn1R8•ÝÛí$CÚÄR.¡ærÕìÐü,¤BW¯^M<ðÆo7›RXîxOò2úÄV7vÄ81O­¨ËùÔŠŒ&°^V U™2Ú×G–Þtp6:VŒ3VNhh(QÓœ9s:vìH^º«®B¡HöPº¯ø½Š0cá¾BS,7?6tPÎÛùeBó²~ùì·Y3zØé^–^8“ñ ±Údx‰ât¯±# ³/ó[°'0Ų‘-£¼½,@öZ¹rå²e˪W¯>sæL³@çoÁìɧ-[#z6k»Ic_S%NÑLé$Yœ’Ú£»é<©YÃGM.öZ°Ücr7EÏŸ?ÿøñc̵iÓ¦ñãÇ÷ë×OÖ»|>œ1VŒ—3ÊåíðŠ]lÓ颀^ÑQŽHoËÇÛ ¿÷н/׬¿÷µGq bÙ*E<ÄÖ/ØAY¿ŒMâœ4€=°·ˆ8‘ž]Ûçô·ö”ö?ím9N5Ù³3wÙ{ƒgaBˆÉ“'Ãø{õê5cÆ “XLÄ/ ̇wû5ŽCô›³kýÔØ¡;^ÎØÿE‘£+^ƒþ[ÄT–3:¶¤2-¸~ýú6lpx°ç€B¡P$u(ÝW(^&ˆŽÖ¯_ßµk×ÈÈH!ßmÚ´Y¼xñËÖë/ ùæÐ£GèývË–-ÛîÝ» .ìÁ½®×õÎ_üçôqÂø½,×G §;‹=ÒæÏ€|¡?'è;wn³fÍÞ<ûîçúç$BsXãÈcÈNà]Û'8¹»•Bl\ºmÛ6âÃ*UªŒ7Îúå’  …B‘,¡t_¡x™ îܹóÃ?4£5êÖ­û[CœØ ÆF·"ï’Ó¦M»dÉæÐKÅ÷Žñã&‚®^äç¾D{”—3ˆ+""‚¸—ƒ.ÄçÏO‡ež>îR•±ßiÜ ³†gxüøúúÊ@J÷ E²‡Ò}…â¥Á¬D‰ÿË`hY_RVçTü¤s —ñýB1Z¼«ÆÎÖ´"cçnÆx[®¡:ÐþH‡åã´¼n‚èpH©ÌŸ3âÈ>ôÿ9Û\ü/œæ_§åˆvýãŠÝ\ó­~áïð’Z®/;26Ϭj†) E2†Ò}…âeÂŒž·OPþá9ìýŽ©£cù¼Ó[nˆ†ÿñ‡Ó¡tÿ%ÂLl°;¿GÝ»óßâ»È½Óµæ¦CÆeÉú›ט~×ÿë*’—çóL …"ICé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝWü°ïâ)Kò?zôŸ3[Ì&tºÌg•E¸CCC9ããダ€õœ­| ì‹Ó[îeÂÑíþýû~~~iÒ¤±¯Ôaß3‹dá.pŒ¯ÆhÖ8ç÷áÇR:¢ì $ɏВ´³8ºÉˆ¬ýýýÿÇ6k´GDDHÖüI#¢é™ýÅ<© §"[h¹´dšdÚ´iãìâdvX“6ݰ†½±~¹Äþ“'OH/+! õÌ.iÒ¡@v¤Š£v“÷ËnÏ.iO…FFFúúú¢€ì¯,Wk£å80„……=}ú”óØ ×5Œ ™•j0¥&ke.{Q[6ó¢˜}á|¤qÙw¥0› ‡ôf/SkV½±r(‚ˆE%Š`¹'Ÿ˜–¯Yâìð£ f÷½T©RQ­v›Èœl:ÚWã¬Ê/ pLq9±'IŒËY¶†,2ñFŠ {’8((H6wÓgŠB¡H–Pº¯ø!Ob|E¶Û¼råÊ Aƒð¤Å‹gÉ’åÅâ<¸víZ§N„yÏœ93sæÌ–{Üç OE%ñ~a§Nêß¿µjÕBBBìÜWˆ‘N9rdÈ!53fŒ]¦Ù•bž9Pù äÉ“GzXœ–V F¶\ J" õråÊe·‘ߟ\Àzx¯É¢`Á‚óçÏG˃À›»d3,øô×_‡#„øçwÞ?~<5e¸rœíoŸcy ÍpÏž=“'O–`ߦM›Ž9ÒrµS|Cºý3gÎК†Ú°aCËõ2|øpȪMXGBmQKÄ8@CàXÊN^uêÔ¡袜 …"YBé¾â„ ž¸¤²x_¼x1_¾|°:ˆ‹›=_ñ*¨OçÎaÌòvŸ6þP¾|yŽ9<ñ óªû¼}û6âЄ 4ظq£î“ Êû$Æ@2Ìãúõëü9oÞ<{1E&ÊàÙ}ûöE=˜—ðmèT­Zµà²æ ÀÑ£G+W®Ì-<#„K]ºt‚xò"¡@± 6@¡àºÌuÙ²e˜Nˆ¦‡üŒR@˰’åâ—D5÷îÝÃŒ³fͲoPJb€Ï>ûLÞ³bj ©;vlŸJ}\¾|¹dÁ™€€L‰‡â›7Ó*T8~ü¸0cÓÝp@èÕ»woO(¦çMè¨k x÷î]¡(œ7oÞÙ³g—*U £™M^Ÿ/J⇠.P¢G?H ÃÉ   ÚÂôéÓ_{í5¤ Ù*OŒA°qãÆ Sj~Ó§O¿uëÖüùóÓ”0DöË/¿”Ï R5TªT‰¶3gN }%ÒØµk¦#¾zõjj€œ;w¦K—Îò€î“6Ìí=zô ¥`rDaZ_íÚµÉQÔð¤"$RâW"mø4]ö½nݺõœ9s(Ñ¡C‡ øK£Ã¥K—8OK‘¯f[®Fep9š³ \"=¥û裈ÏÑSÊHCÀyìáR;áááH£F"Šf«P(É J÷ „» 0‚Keáj0ˆÈÞ½{ù•` AtÊ9èØ±#çiÓ¦Y.Âtúôi€‚ N˜0¡téÒñ>°…i¡&Á/Î ¾|ùrݺu!²q¸/ça“enä—?;uê´páB“@Æq \¤I“&Äï¼óüž6CICBB^}õU8ìJœöðáÃUªT)P ÀŠ+dÄ‚h…ÿ<Çù_7oÞD ˆj.ÅŸ?þÚµká”P+xd¼BŒÝˆI¶mÛ&ïJ¡Â” ¶l¬‘KÇ?pà€p2€ :”{í¥›€R£[æÌ™ $.X°æJˆ‚M¨eºˆêÕ«9rDÎÛ»(ìT(¯fîE!鶈KñœmôèÑY³få$j´oߦHÜòÞ{ïÙ‡â|øÉøýu!»“ò»ï¾ƒ¡’K¡B…¸„Ýð!¸Ù²e“±(ÔQ4;lØ0);})ÇçÎ+Y²äºuë2dÈ ßh2uêÔ¡í¨#Ír‚#BöÐnÈ=ãϤZµjƒ–ÖÍÂ-‚F84ò%Zódl˜˜åÌ™3ø$¾Á½-[¶DO¹„a¥-`œ!C† < óÌ8þüܹsqSMºó˜¡‘bì†IîK–,პô Dâl¤œ2eJ¹råˆ$Å9‰µ>ýôS+„¬7öÀG …"‰!IÒ}???ˆG 9e̘.ŃÁl›ÂŸ<¤=‘¬øsÀ£®qùüóÏa-VÂG_À¶+V¬xñâÅo¿ýº,'!Ù<é!Rp—Ï>û Zæ¹@ãµSHL½zõxð?G+üÒu€tÆ"ð@½,Y²|ñÅ!"p6a LÒõÕWäU¤H¤A_`Q¸1žÓŠ´DQ@°ñÁ&-Z´æDÓ%ÓO>ù¤ÿþ÷ïß_¾|ùû￟кº†dh}Ïž=…îÿª’Á‰7H K6iÄn\­Y³&Äš@ -/é1$rüøñ‹/nÛ¶-É`r5jÔøúë¯wíÚ…mCCCE̘={vûøõßéFp3Ü[íÛ·/Ož<2¤>""J½jÕ*zÀ;wV¨P!ÞqPòº݈EQr÷îÝttò‚Œè"ß}÷]bN<°D‰xáÒ¥Ká¸ÅŠã$òÑÁ>Ĉ4t©èöøñcœŠ»¤ì„¬Ô)FF>:cNRÑÄuP|BÐ;vÄ©>³ð¼'ì_%LM:5=-ñ¡ØœÁ‹Nœ8|ZŸÈñp>6\¿~='\Ÿ{¡ø”O¢’ÝUqËÛo¿#ÑÍ\©j„  Ïœ9³T©R~Ÿ={–‚ïÙ³/%J±×”ùTÅ1Ê0@"IÚH¼š+ E’C’¤û\Z±bÏyÝÈoùòåGŒQ«V-ùàΙiÓ¦õíÛWbþ¥ðÑ}y g‚.@`9ž L,º/nyìØ1˜+þa™ڪU«?ü0wîÜ ýâá ìtß(LF 4ؾ}ûêÕ«[¶l™P™¿Ÿî[î/´\8ÌŒ°MƖܼyºbKB÷IY¶lY߸qãàÙ39I(5hÐ *=ä_¥û–Û[èd`½P^Ô¨Zµª'1†u¬$ßFð§{þ1ì_‚.BÄÂ… ˘Ÿ×^{Íßߟð¦yóæx5”?_}õU« ¢÷„¡Â•QlúôéÂ\¯]»ÆId¢_¦Ÿâ`úëÆ7lØÐéšïëççG,a6—õdÔoÑ}.mݺÉtÂÄl ¢ûG¥!  ·iÓÉòÁ!W®\⢦BŸC÷%YSöË—/*Tˆиèjˆ%hYM›6µl_ŸÈýÑ£GçÎ#%nyüøqš–ÄãÕ\¡P(’’ÝçÉÇS0„ž'Ù¥K—¸«E‹<-xðŸÀw׬Yý6lüót +W®äÆeË–ÙßîC41šÌ{F7nȈ,¢}ºO&{‚ßz»/ÞBg…&ÔòæÍ›k×®í¡¡dÜ¿¼± ŠßµkW¸þ›o¾)sp!¸4“%JàÞ;w&æ¡«EH† ¨» *Pvì#3\¡ì\#Sœ…ñ"ys/tŸ~";dÈLĽDsæÌ!|rºg»¾ØÛ}±]‰Ï;G8 ·“ Žœ„Ôâº0~ȼ9Ñ6Ý·ÜMŒ²@zh8Í›7Oh¦¿Ÿî ýæ Û[¾|9õ+@‰”8À f0q~=.\¸0nÜ8xªå²äŒ3>þøã»wï~òÉ' 4øCóĸ—Œ$ßwÞyçèÑ£;wî$8ñDšé‰è!Ç2u®%-X° ¤Ç= û²©Œ†ˆˆîqþüùø?*a|ZîJGlÉ8‰ÿ¿•+WN:@LZ²dÉÛ·oûùù.\±ô¿w¢&|¸xñâÄ–žLÔ~ÝÇï½÷¶¢õyN÷‰ÒOžAôàÁƒêÕ«ÃÃŽ;ËJM.°œªU«âH–@B`ÖŽ4gžu-¡qp/¨ôWÖœ1º™ñÁ"gëÖ­p,H9,Ó°·÷’Þ÷êCD¡?æ$Ä”_h}³fÍV®\)·ÈØë)RÈŒsËE}&Nœ8a„:@éîO™2eÈ!°„[î0ùE«Í›7›7èÆDöµetœ¦dL Ý1bô ƒ˜eRŒe #„oMŸ>RelãÞy€» ª£G¦úäô®¶jÕ*è>M[’ÑKÈâ˜NH^xx82çÎK­5lØ0±ìFu êòåË2V­d¡ѺƒõÑíÞ½›ƒ8”T|&ÎðibvJЇ\¿~}РA”…†0mÚ4¸¾Ynˆ¦H‘"þþþµk×&ž¡»#ìéÞ½;9Ò=R_$†ž@r´hÑbêÔ©1®õã±UüÝwßÑ4¶mÛ&“zụJ•¢Ï%ý¤I“$"%ð“½$3Äýù@ùÓ§OS/èsèÐ!™Û-%Ú¾}{ݺu 0”©q)Ž1ˆ×3‹ñ“9”‘óØ™JäA@䉒Äo:uš3g޽ñ:\KÜíàr4@Óâ$ÁÚµk¹{RL}4Ïy'*K‰/]ºtüøñBòèôƒƒƒ YyŽÅŸ3IQþ”·ûÔòþýû…î{2hظK5 ÐnD!YÖy”±ûAAA{÷ÝjHÿ³«šIûöí#hРÁúõëí>cç¯zDH]´h‘Y%ÝL»”e¶¥¼º†I3*‡sËâƒ1îÕÐíLhòäÉLJÕÁ{=F… 8&5Äò^îý†(/–\¾|¹å˜‚8Ýðrïue7‹@H<ôKÔ–r‰Ñ$½H#Ø k Ý7—_3ýî–{±Õ¼yóüüü.\X³fMá÷f(Ë=þ„?{õêEJè>õ’(#1Ì×hwµjÕ8À>o½õýT4• =…jC÷ _ŸÝ”-¯5»\I¨°k×®ÁƒÃAK”(1kÖ,œVvÎ2[oÑ¢E‹+¶eË–Œ3J1 •¡Ôx;m'_¾|è€ÿóçÁƒé?…¼’ÅñãÇ Gðç9rpžùÍ7ßÌŸ?ÿ† dáW’qÉèl!èäîÉr¢b2~ÿÚk¯IëæOôÄ‘0Ñ_|!îpo]g|gfW Ú±džþøcÙ¯•ðyˆ—ÌGG…“Ap!”bþüù‰N÷!ÍcÇŽ}ôèòaKÂ,ï߿ߢE‹Ë—/ÃÔeI“þñãÇwîÜá :H?ûºÚ¼˜7QЬ’n¼˜B¬Í1t; 6ŒÖjÞÈš±1¶ M EO8®GDòÔÓ5½xe|}}Í‹púr‡Ï­[·®Y³f‰b+3h‡êƒIæÍ›—p¢`Á‚²†{ÿý÷‰<é¿Ê—/oÌÂÕ›7oâôŒÄœö N×¾H&0`€ì‡…A *ät/O$•Âï•+WpE:±¥K—Âûe+¨Ï?ÿ¼}ûöŠh!88˜Þ³bÅŠt¬„Y²dÊËŸÐw"7‰{éKNOM›.]:‚"yßO·É]­[·¦\4œ 2xâoˆ¢‹¦à§NjÞ¼ù’%Kä.¤a‡Ñ£G7lØpÁ‚§ ϤȔ…?e,MœDˆB[§k³¶"EŠPö{÷îQõÄœ§øÒ¾Ìã€ôî.‹ÉOx ¾ÍU“qÿ$À— ûŸ~ú)«ÿþ–˱ïÞ½‹me†~¼ˆ^ `(ÝW(ÉIîË`$BG:ÄÃ>Ožzô(,4åÊ•#2tº–%±sÈÙp:EÜ÷åFh¼‰Ç…ðOÈ1‰áD•0¢J]§™)#o¹(,)¡ª~ ‡€p¯=|ø0$§•á@dVË–-ãOZE9rd¢Ó}šmÒ¤Io¼ñlI',jÅŸ¨G›²JY¼x1íHæòʘŠ8tkÈF¤”ÕÊGEiw†1“ îŽÍ‰ (c×®]ûõëGu@¶dဴe¨Ã¤íرƒø•`ihKgÿ;sæ rd;*!y3gÎ\»v-öç×ÃErâ…Ä`²b=*:Ãûq¸2ª†‡‡4èàÁƒäX«V-’™• Œ`Â3¤Þroá [mÒ¤ þÅJÄ¥2¹VÒ`yû.»Ã"Š˜–”tx»,;CÙ h ð«.]ºÀÚßyç\‹‚˺û4„Û·o—.]-«‘õÎ;[µjU£F B>Rž?¾wïÞPá*UªP)hëÉbPÈ‘i';wæ 4€aCÄGŒç¿ÓµmÍÝ<ˆrq zü ›‹ŒûBµ¶2L޶CŸ©‹€€4ÊNNpH^ÕªUà 'p@œ†#áù´n¤B|øá‡Dõ44ãÕT(Çδ}"óßïB …BñWCÒ£ûòÌØ¼y3>wñØ£7ç¹ -hÚ´)ÏÅÀÀ@ÎŒ=ZViHtæ¤ðæm7Ñï¾û?€üñ'LÒãÙ°aƒ,qè¹@hÁCÛ¶måµ½¼Æ[`Wø“l-díßzë-®V¨Pa×®]âv×BnsïÞ=n ß‚@pc™2e L&å•+W %$£$Ãc!úH«X±"|—™‘"€ô$úò äEcÛA¦ÉZ £Ò´iÓªW¯.Ó:Mb’Á/I¯Z¿~½(i·ÁÌÉrE8p,tÆ&$ UÚW.‡TÁ5É‘vŠ…IƒHïÄPæ tð‹/¾­ ú(CJ"CX)$÷bè²T·™N Ä‘ò¡zÔ]¢ÇödtòäÉ!C†\ºtÉŠ^®Ít!¦°j»;уUªTéæÍ›8!,¶P¡BÆžÒ9Ö©SZɽ3f4Cw˜ºŒ‹÷JðIx)~ÅR´hQ›bÅŠÑ¿I+ $ Y'ˆA ÄŠ ê#™~üøq °pâBç[¶lÙyóæåÈ‘ƒryb7§{’ !Ò ÞeŒÞ¡}Ñúìéq~âZMž7‹THñOŸ>MGÚ2_?±\  .;WÈœ=É”ÖÇc‚º¦¼}ûöÅÁ,×ó‰æFüOóáÀ,Jbž[œ$ Å–‹îËaò§—#A Þ.þ¦P(É Iî#—§Ý¦M›d/Iòà9ÁÆ®Ÿ‡Ÿ¼Eã$Wy&éÛý—á:PÞï¿ÿÞ ”·\.ÂSyÕªUfA¥‰îÛ·úÆI qfÍš5ÎZ{GåÎä~æã‚] 1¼óÚµk–m¬9Y”*UjÍš5„8sõêÕ–-[B÷Í$W9Q^°`aígÏžmÖ¬™¬œH ˆ¬|ì„“”@h ^–ÛÛI WΚèëîK¡ÈnÉ’%2‘‘L¡YpJ¸iêԩ㘅fܸq¤©[·.ÜÑzfãÕ‘#GbOóÊßðo¨\Ḭ́„¯ÓòÅbòDº†É“'·hÑBÞГ 5 û–ûe?5‹é dTº“:âÆBúEˆå×Gv¤%zc—ÐJ*”P[M:588’MGdÙæuà$ö·û²išåz9À˜´§mæ·ÉˆÐwåÊ•EŠ‘?é1ïÞ½‹“ÐÁ€I™)S&Ù@JVÒ”½¨8€éä?[¶lsæÌ)\¸°}MR‘väÈLFÐÑèh2ü3Æk 3ÂMö<–î—“UªTÁ0…Ä0¦ÈNל`¼š@%IcýÒ‹$k~1,¦ëß¿¿4ƒPS–f’Š&B†îK¨/­Cü™J!0cy¢lÙ²6O#’I „‚Ý»w‡ëãK¢’ÌÇ1cö±‡[£G¦îx¤éBœ …"Y"éÑ}Ë5››á^–ëùAJÎÞ¼yÓ ¶æÙ#à/òxæ€':`9)\Y¦\CÐeÖµ‡ˆqo¬†F(&grçÎ-2ío©®õ^p0˵Ò®ej/€|ߺu‹dƹ% Á|ÎðxXÂ;wHf¾ÈËHZ… m7ïM‘&dšdPl`Ÿ`†YK¾†–à´bœDÿ$eâÚ‚Hë w´«æ*SÚmS††Ç‰}|øð¡Œœ6#éå» ¥–{-×Çr´l3k…¨A^ÍkTîº}û6=€™=‰¬aâoLGJš|1 Õ*c`,ŸPHCq(¯¬âÂÉ9rÈûu»³Y®Ø?Ç`™he®šIƦ˜Iæ^þD¬l †’!dôiRY^®ý§äÀ´r$^5Á t”!ûqâ^yÿõ$/Ñ0ƶ鸇.':#Š|%–Å…ÌÄY“2Ú‚4»¬_N›§’z¤9PRŠƒLÿÌ™3‹Ù¥{ça#3Iìöä6íKž7(FM™HÀht¸'ûr‰ â±dº&˜+W.,§B …"Ù éÑ}ºi¨y +’ylòúÐá†ykh=óVRñg¾â¸yâZ¿¬ßQ[óŠÑi[SÏœ±~ÉùœîI–Ë#c~mQafÁPsÕ¾¶¦å~Ak|É3HJûÀw/ÛN÷æ©f\™y×k)k·L N÷ÂAöºÈŸvægJmîu<³È•h_ÆÇÕ˜hŠi7”=~pÚ¦í Ænr‹üi¶©2e1,ó²›1—YdÆhkj3ŽÝ¿œˆlle×Í^ãqŒ,¥3TŒ{©Y»‘å}¶P|{f¬$aƒ]¸Ý>"Áúe;Š7R² ´ëcBb{±·–{ºvœ 2Q `¶åª¸*‘pœÅŽŒo˜[Ìw9c22·ÄiÂEØ•±ËÔç…B¡H–HztŸKd, –'úÓ]¡P( …B¡HNPº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"Ù"IÒýT©R™ífì›S:Ý»ýêê׉zïÞ½ÀÀÀ¬Y³>'ð0Ëiß¿Ÿ[0JŽ9þˆý¿"##¯^½úôéS˽ uîܹ©³DÏ(A0kc£ØåË—e vŽeƒ4ćì‹sÇ+Ð,ßqñâE©qdRÞ|ùòy(ÄŽ¨¨¨K—.ÉžYÆ‘PÉßß?W®\ÏêoV=e;óæÍk_·›ßððð+W®X®=‚‚‚(¦Y_œövýúu‘lVdAJÜébÅ),­îÎ;bÆôéÓgΜù…›‰ñí‡ÊþMVÚ¯¦àø?)9H›6möìÙírhûT¨YsÝܘ1cÆL™2Y¿\‘ýÆô>"“Öd¶ëÒà_¡P(Š_EÒ£û–kËwÈ #ÎFôÂ` q¶ÂIDÈö4ä;uêÔéÓ§wíÚõÃ?4[»?›^ö‹áêŒ3¸…3ãÇoß¾}ânÿIÁ?~Ü AƒsçÎq,›ì¬^½ºbÅŠ‰¾Ïh‚€²Õ¡C‡Ú¶m&q'!š!!!o¿ý¶ìd)5o}ɶ¬øÌÙ³g{ôèÁ1ÆçÞüùóÏœ9³D‰f7+AŒÔ²eKÙ ×îK¥K—Þ´i“ÙC— Y³fe³ÁEÀÎï¾û.NlßW ÏüòË/x÷î]Î7jÔ¨W¯^4x¼û“'O6lØrÏ-²Ã—¸1–éÔ©îôGìõC¾´ó[·níß¿”p…‚=:Mš4Rð¹Šø<7âxóæÍûøã9Æ,X L¤$fëôÑG+V¬Àh­[·ž8q¢¹Š¨÷ßß¾}÷λ×fÉXÓ1ÂrÓ}ê“}ûöņ"èÙ³§ÄÏÏï4 …B¡øÛ"éÑ}4&c¨Ø!C„$ — I“&“&Mòóó3oúX‹L(l~±“Œ~•¢™ôóçχZ=|øbÔ¥K—ÄÕJX|úÌ™3¨A ¾{÷nÈh"æòRˆ>­Zµúæ›o²eË&>ÄyL‘3gÎiÓ¦U¨P (QA¼©kŠF-Ÿ>}:UªTbyÎÀ&‹/>wîÜbÅŠ —õx]Íš5¯\¹‚2örK•*7åŒlSJ‚J•*adyû. ~X¥J2•WþòÍáàÁƒðQÄRXá¬xóæÍ öCI€(î%GÉ\|rΜ9K—.%j­W¯nœ Le8M€èzÑ¢Eðoš^ãÆ×¯_/ d ô3#GŽÜ¸q£4þ®]»biJhBJèþ¾}ûФ~ýúƘ\ò÷÷§O¡V7oÞDyâ:ùŒc¹šö°aÃþ{×&E±u»:ÎÌfX’‘¨ `Ä &PQÌ9TDPPQ1*ÉôP@QQTÀÑfT²äœvaãÄÕÿ©®Ýf6‹àïúê|¸ÎÎVWݺ•ν}« f-¦t'$>°Jøw æÑ}ä‹u=‹Mœ8ñÞ{ïíÖ­–±xñb0 0lð†k¯½ÖìçáÔ`Ã~žÈõÁ#~ ÿ 1¸ŸR*mÀ—µjÕòwƒ6A_\q šøÞÄ÷µÃ™ÈŠŸß DP«¡C‡N˜0¡oß¾œÇð$îpE‰ü¤…B(ײرcçô~ÈzãÑù\TΠkð×ùóçùå—ÉÁ<~|9o?Ãäw ¨ w™sÕí½ûì \àîÝ»/_¾üµ×^;õÔS¡44ò‡5rÇw$‰Ï?ÿ¼]»vÒ¾_AT<ÎÕ5iÒ„ëUž>}:˜è5X#¾ßw ׯ_ßµkWèü›o¾Î¹Û6ƒ/Ž"е`;á{$C¸ê ”è›øùÛo¿!7ï¼óNÛ¶m‘ ú /€ñ£ÑÇŽ‹§P0Wô°®|¨òÑòÐCñ—A땦у>xæ™g¢ûAfn3ƒî>-¾~á…V‹îCH( öŒX˜—èèãUW]ãÍOÃÇ4cæÅ_„‘†_16o¿ývŸîKžÞ 4(vÚ´iè*€\>Hy?Ä”qã7" *Ò£GîÝ`E@4:À9çœ#¼ûQóè>w©¢lÐÇ[n¹åüóÏ÷ÝwyÄ21bØ?,ð~ÎÃ"fÍš²Åù‡äE-#ªÄÙ-’dàñ7ß|ó•W^áã!Ü7ÿòË/ŸrÊ)<`œæ7ÞàAHƒ|† V.èœûòQÉçž{nöìÙȽþúëñá‘Gߺùæ›ñ8 ’¥K—âK&Ô‚“Kî…LÀÌsƒ¡f¼`Á¾§“‡‘àÁÛn» ÉP…d¢lšæé§ŸþÃ?|öÙg`QÉRqäååÁÒ¸ûî»W¯^ÍÛ‰ç†`N0ª LÚøuÿý÷ÁÆP}îáßµýé§Ÿš5k6cÆŒ6mÚpsµ'LPI<[¢ÿþ¨N‡PP²“~¯@÷ƒ`hýG}=„·øñÇ?zôhN‹%OuÈü¬³Î¯0*@X¹~`½€Èr{w¶?þø „1?üpnŠ [°ÒË.» ½K*ûº‰·h.¨pŸ>}FŽ S‡¨í{öO>ù$:*Š@ïâ6§GÓÀ@ÂPºîºëªëÝGÝ‘-4v×]wA è¢W\q…ïÝçUCY03Àõ‘ cƒ?ûõ뇞æïºÆ̃/W®\ùÉ'Ÿðè^½zÁ0€]m`wêÔ ³ŒØÓN;Íß*Àæ‡A÷QúUš€€€€€À¿5›îƒ\xá… œ~-[¶ ¬t릛nâôqÊ”) n±X ¥úÞñTà+Ü#ˆd æ õàÊxœS¾ÍÚêܹ3Ï œ ö€ay‚³ò`ëdiQ ˜úwß}Ç+ázú …]»vÐÃÒ@AW^y%˜ h ºÃ}Æà…ãÆC¡Èá‰'ž@½PÊ Aƒ>üðCd‹ÄR©Ó¹A]àR`üÉ¥WE÷9µÚ¼y3gÆ„sqn? :Ȇ—ä@yIyÝW­Z*†ÖiÞ¼¹/ÿúõëÑî`Ÿh4(O¿ïŒ9ÃþK†Øàý¨Q«V­&Ož| 'T‹+¯]»öì³ÏÞ¶m ;vðVFžPØ'güøU8ãŒ3`´lÙrëÖ­øz†ê.¹äXkiii¼^‹/îÑ£ŒO<UCïì±Ç öË/¿¼"Ý—¼ÞŠ|à 7 2)¥ƒ³å´Ý÷_b@Ú>úzƒÕ¢ûè0è«È Ý„{æÌ™ æW]uh7OÀ7©c\Ã(…î¹çt<ômôj˜»œîûSæn!UAA$ä;¡ÑóaKà/Ì­ßÿÓ}~Á” ó:„A%稈šM÷A_‚Á ?ŠéQ ØÃ?ܳgOä ÀÌxlq§NØÏdöìÙ (œ+ó˜ !ð6POðPúõëƒ>þòË/Ï?ÿ<ýqÇǵFQQ¾w¹ãŽ;`K”Û$°dÉ|¿qãÆáÇŸzê©ÜõŽñ8.~‚î#(&(à?þ8cÆ Ì“)Ž1â…^8p ˆçšP"DZ¸p!o*Gãdîܹ ˆ<¹ô=x÷ñsÆ çwÔ‚§5j„|Ú´i]¡îK—.}衇@j÷1Œ~_ÀcW–/_º…tèÐa„Š ¸P(‚q¢¥jž ƒl¡˜[Ðúrkذá¤I“`˜ùÆÃ¾­Ë ò î ÷¨5²E€ßwëÖmêÔ©\64Ù‚>ãÉÑpàаÀøaRJ^ ÂFÏáï10lÐaÐÉ+õîCx˜sXþþóX2 å0ŠF•ìÝwKEè 9tìØ‘¿y€®ÐÃy(T‡&†UVŽîKž2a`L½óÎ;D\oÿÔ<ºÏÒ axøæ›o®]»6Øm"‘@vß~û-¸ìرc›6mÊå<òÈÈ‘#9yåÎl? ösÓM7áûヒÄ+W®ä ¬„Ù¶k×¼Ÿ C’ÿé´žo¸äò#¾øâ P¨K/½”ïDäåB0ÐN÷0˜ï¾ûî­·Þëâ™ td Ͻûœý÷¿ÿÍÍÍÅ÷àͼt?æ)‡Ê5î¿‘8묳¾ÿþû>úÖ Ì×g^^øÙôéÓÑ$|ÃxÛG#Uöw(ºÏå¹ð çÍ›Ë <ÔÂïܹ¶ìô!-À×ðž3äoÊ$àÜP×çŸÞ¸qcô?˜ÇM:Á§çq,¾c˜ð7oønïùóç£iN:é$äɯHNÆóij0áÀõ‘–•¯anžAÉèȰmÛ¶h;0׋/¾jG·LîÛø C& : ‰¿®ðª‹tM0qâDþ ×(ò‡~X.˜‡ŸvÊ©³OÊùŸx7íF󡓃ˆ£^H‰Î†LN8áŒÊ–-[ò˜¨Ÿ~ú vÑõ×_Ï»"Fxù™gž‰q‡‘ž\bò åß?úè£0Ý¡:˜¤ðÔâÅ‹Q:*?¨‡+tc ƒm!è¾€€€€€@EÔ<ºï{÷ñpŸ>}@%yìþ²eËð믿þúÊ+¯\{íµ<°a/Þ¾}{<&—,+ºéÚµ+g¯{@2|¿mÛ6ð0~¶à³Ï> ̆äñ$ä – :2`À€1cÆøa œvëÖ 4qÊ”)W\qçœÇLš4 Å=÷ÜsþAœ`Š »o¾ùæå—_î3P0û»îº‹FƒëßvÛm«V­ûLMMEÎr–,Y²iÓ¦Q£FQùFß”ŒlÁ´>þøc|ðYç²Hö Ú µ£¦P;¨~°Á— ƒ‡rÈ>2ï}ïP"eddðžŸ6l€‘=ƒ+uÔQåÈtUà[uË…„ª¡±`ä #A]¨‚ÿ½Ç÷óÏ~í¸}%•r_©ÔüòË/a7sÌ1h~‰—-¹Pô¥Y³f]yå•°6A|“sNvŸs¯aÆè*wß}w¹ŽÍé~§Nî¼ó΃J÷ÑK!T4zôhX þft˜¦Ÿ~ú)†Ò 7ÜPîßJt“n±€Yˆî{ðÐ2®:¿Ï C¢ëò[ÃÀòaÑ‘Rp€'Æ(èׯ~õÏï÷;°ß™‘Æ ƒo¼“T—.].\-a˜£#ñ^”°”`üýöÛ˜ øgjÝç¡, ao¼ñèi=fÎœÉ ×?í´ÓòT§N$Û‹m×®¨ƒï¤—J "ˆïá‡ίí„[¶l©W¯^Ë–-‘¸òSO=UPP€dŸ|òÉ™gžÉŸå `H€”£ $£e/…½ä’KP[°p‘ììl~ÍæÍ›Aß_~ùåqãÆîsU‚ŽƒžNŸ>ýâ‹/æDgãÆ÷ß? <™¡) e}ôÑà4øÉ Z±b¸#„ㄉßÙŠG~þùgü’_hH^¨8È}ÇŽÑ~ø€‚?ŒTå^zé¥0˜‡« < E¼öÚkh©ô¸t0ièÆ ¸2ˆ5?Vh¯B`´ÔUðˆy=øwÞ¶AôÁÔÁ­ýÒQ©_~ù½ÝÀ-½¨¿u‹/Æ—Gy$ú7¯8ÅZ ¡éƒÁ „\°`ziëÖ­ý‹ŠÑ³'L˜“ïÜsÏE2¿ø/srrrPë?ü «ÕOö‘ó³gφ9‡ÖDGýë ¯ Ðj£–0FçÜëׯ¿æšk ¾‰ÅO =`,ð‹kÕªó€Çùç5¬óñÌ#e×®]Ë—/ÇP‚mŒþï®èÞü… ÿ6lT$?~|÷îݹBÐ@Ð0t럆„/1^ iÓ¦î÷îÝŠºï¾ûÐ? ¡mnÇJÞ¶Ô 9Lž<¹sçÎâdЍyt_òÎDß±cXÔ3ÏuêÔž={ºàzlÖ¬è&þýúë¯óÓoºu뺦Â/½ë®»'?#¬2@þ“O>™[“&Mzûí·QÄW\1zôhÔôŒ3Î@½@ÈÀº@[9åzüñÇ?ûì3¤¿ùæ›ñ8ˆ4¼!ñ%ª_Ÿ~úi¾åé›6m Œ?ÁœùF-`{ C°ˆº©Ð$(æ×ÒaN<6ƒpCˆÍ¯)€ƒ G<餓Àç :ißÞ'@«P)jeò®ÀøAn( L”Ûo¼ôùóçó·7guÖœ9sü˜¾AÚ@nèŽèHüV,<…Å•‚¶‚¼¢—£8°a|@‹ø™Cÿ¨z,¨< åí‚Qk„{²¿ùæ$€nay¢“@ÃÈ¿gðkúÛo¿]pÁøÖc¯^½þºÂ«Ę5k:9TáÀ}êè¥0l`‡  Éû›ùÖŒpõÕWO™2%y;×Á+‚|`€Á¿ÿþû°cÑŸaÐ6nܘ§ä›ËyeAßÑè å(£kР·Ðh° 0–ý×,è0àú|?ZâaQxÿ‰'žÈ«€ÑoЙ!­t®'ø FÒ}0T0•þýûóÓE°Æƒƒ”ã°êÁƒóóGŒ0cÆŒñãÇçææ‚”$×ìÅ 6 ldâ‰'žÀÎ9§ÏÈÈhÞ¼9xsÇŽñ§›nº‰Ÿ3Èo$åÎ`~8&>pg??{ŸÁW­ZUPPÀKäw?…B¡¹sç¶o߀¾LŸ> Ào@†à7 àH†|^|ñÅ‹.ºUàôÃç¦rÎÉÉÁ¯È¡sçÎ]ºtAqœ?A6ž’g‹&LàÑ`] O<%—œ'@5! þBàžÌÃ…á7mqçºrê©§ÂÜB]öýeºŒ(„gâ—‚šÂ$ㄞ“…ÿþûïA"ñM§N@Ð}RËÝÒè{h2h{åÊ•Üï‘3Œ±Ë/¿|ìØ±°¯ðlr2¿\¤D¿½þúëùJ¼ÇþñÇ0,óòòxVuëÖmÒ¤ ý!C*e¢‹/F×…-|PQ¸Ëœså 6ð°®ììlPsŸ°…’é>C“° P)~¶&”ÃcØü4ЧIƒnÃ{¾‡á]ù±R~zØÀ0!øy¯xíÞ§O~”óóÏ?¯_¿]Úß”ÀL‚Ýuë­·úû.04 »s—êE2¤áñ{‚î TDM¥ûŸ|òɨQ£ø¯à'œp-I$ _}ô*f–‰¿òâAúýƒ8¹1"ÈoV"Þ•C0!’»!É'žøä“Oò³YxòñC™“«ŸàåW]u'+±X e=ûì³ &Ü :’™™‰R Ç—^z©E‹’çs¡ùñÇ9×DÊ[n¹Ú™2e ~}衇zôèîx÷ÝwƒGr9¹fÁ@Ù¡Y”…úvèÐ$šôõî·.ÿ «†ogµòÅÆ#hH0¶“N:‰[;åˆÝ_·aáŠ+ÀÉøY¨Ü¿* ;ŠoÒ­È÷!Œœ{î¹gÙ²eÉßCŸ š0–’-×;¬“oŒF}çF€M°mÛ6h$˜?…Çs rãw9¡³¡u@4‘œ‰ýÌAÓÁžùÀà,vùò弚ܼîºëzõê…ïÑÍ*­ÎŸþ «šG[TºÏí.|˜9sæSO=Å#pz÷î}ã7¢šµ\éo¼ñ¿§uÄ@ówîú𯰀¡‚‘Å?# ú!j-•};Ä_L›6k ÏÞ{ï½={öäæÔ…o o¿ý–¿ “<‹²õíÛ£Ïȳ°°­¿páBþ ®_¿~_|q Àƒ{ž4þgQóè>òåwÜâ{{,ùÜsÌ©6*†d‘çºÆÓû™ð¨©t-D„"¸Ã2¹|w,W”Ûì+%‘Ô€©ô„{H‚BAª¸#â'Ä#=òôχáÔÐÏ2s3¿<˜»ç‘F* ŒánN4~r—?ÁO¤ÁŸü Âü­¢<°æ<^òäå¬<>ÊYþ Ü—JÐá¤Ÿß–ê †/ÑÜnÒ6ûR.÷þr÷¹ßC8ÛFnþvdþ=¿ûõ%Þþfëïï õI?ñ.YKÞ-Ê"yÛ x‰Ü™r“cZðŠå¿rÕñîǹ5r“F>¼”JÏø¾  À—íàÁ-=òÒ¾xœÊÓ¤{”¹Ó_ ÙPG¹Ÿ¡ß…û3o{4OÌ{>º«¯(±Éû$ïØÐdãé¹ÂÑÿQº@oeüä Ê;Jþmªß ü›Póè>®À¯‚âDÊÿ •Ò\ÿ8Î8ʺäý݇¤tw Ã#•zC9ûw“ ©ŠOø~tŸˆp/&)=»³R5ùòŸþ)“¾Ø¾$œ÷''ö“J Ÿ¼&óÝäÍ£~E’‰2?¾ÒòCW|!H\DrÑ~‹ø6)EEÉ÷!çßå¼ø¼±üJùéýr}²G%o±M¦òþ÷þÛ’r:ñýIî6œ¹r³3¹×UÕŸ“O¿9¨ži_Z¿‚>Ïö;U¹Ñ‘ükÅ*øÞ}ÿYลX%'N¶?ý¾³?ù@žä“M¶Óü‘â‡QIçz2jÝÇŸP0wðggþYì•–èDA÷ËøÔ+UD9ǧ û5‚îK~pH¹¨›Šå&ÇÒüóQé>õè~(‰îó‚÷“…£&|Wââò!X ¨x>‰€€€€€€€€€À?5Žîã/¶¡@J)Ûw%Â×Töñ>|Þ¼yM›6ånþr…¡Œ… >ñÄþµ£Â»/ PSPãè¾äRY7ô`PßíÝÿKÎ}éæ›onÕªÕàÁƒ+½Â ¹à‚ úõëwþùç ï¾€€€€€€€€@ÍB£û$Ü0´@P•\G"2£ù®ì‰¸Ÿ*¸í¶ÛZ·n=`À€rtß?ðœsÎAš‹.ºˆ(¿€€€€€€€€@MA£ûàø»ÊGU™;ßᇠÉDV8õ¯>n¿ýöÃ;ìÎ;ï,w'í$ݺu»õÖ[{ôè!•½+T@@@@@@@@@àŽF÷],'t…ñ‹ëRYÕ·\ÉÒ¤ÊÝÜvÛm-Z´4hT6.ß?¨çÜsÏíׯ߅^(îñ¨Y¨ytß’=³0n\·+33ý°æiªФA÷’Pã辋\U’þöë¿ß}Ç3]ºt6¼G0ÓjÕºŽÊ¤ÛŸ`A÷þ­¨qtŸºÄRHÆg¯}vô;»vY;r7tZ»á#zg¥%Z4¯ Âç8ñßÇ{¸Ýø·¢†Ñ}ü…j!ÛÑ ŠÜïæ®|ê©i‘°‘ŸïÐ.û‘GúÒXnÐ0H&²‰Jˆ²WÂ/è¾€€€€€€€€À¿5mk¡UÕ)uÝx‚DÃdÞ7›9ÅJ„ò 6_vUÇ^}ÏlܸVz†.ÂþíM‚î ü[QÓè>sÚ»š¦êª&Õu‰KeêH»rí_màþq‘"bÛæmý¯¹°ç™ÙJv–¡ï¾€€€€€€€€Àÿ*jÝw r- 2t9CrdâEêKÄr Í-Ö- ÏykùóÞj×ú°ŒÚ;{÷;ãºkÏØëX‚î ü[QÃè>¿fË0t]ÓeI¡Hç(ŽMrvÄ_š{ï°±ñ°ª(r¿Û®ì~AëÌl¹V–¡ ï¾€€€€€€€€Àÿ*jÝwe×5Œ€¬h•¤„IŠó¥ïÿ»åÑ‘¯Å£F$¾óÒ+Žï{ëÙ ¤§¥iÄ Ü—Ýø_EM£ûLàD ‘“k._–ûóÏ^}u¶nd5lØèðVÁ/Ϊ-ÕªmH’Íb|ˆâI¾¾/è¾€€€€€€€€À¿5Œî»’K‰¬Éi3ÞX|gÿg5nzüIÍîX·ßíçjrÉ%[ûpÔ~º/ ðoEÍ£û’&7mþ7ë_}å£SO=©ßíǹ* 45¢‰[u’Qãè>µI,hdªrP¢Ì‘ïPWÕ]—ÄU)@¤ýáâ‚î ü[Qãè¾k»ñPJšªèD" Ó6 Íum"¹*Ñ%áÝHB £ûLb—è† h þ¥Ñ;Jõ#öw£ÿþÍš5}Y×4í?þ¨*½O÷AôÝøÀ~óìܹӲ¬+VT•žÓýÜÜÜÙ³g º/ ðÿ€ýóîoÙ²eæÌ™Ë–-WÅqsNÑñßÀÐ4 ß ñêÕ«k×®=kÖ,ž@Ð}¿ ûA÷Aèúé§Ñ£GתUkçÎEEE`ì………üs(ÝWUÕ¶m~0ù.]ºôêÕË0 ä è¾€€€€€€€€€Àß„ý æ)((ÑKÏËË«]»ö®]»’¦¦¦r¿iš@`åÊ•x°sçÎă ûöîãÐzPnüªª*÷åƒâûŸy†Èœþ7ÞX°`ÁÌ™3ñ½ ûöƒîã'È9žÊÈÈÀÏŠ‰9Wç[u—/_>~üx0ûY³f ï¾€€€€€€€€€Àߊý»U|=ãÃ’%KªJÏóÌÉÉ™9s&¿UWÐ}¿ûw2O,K$Š¢Tzî~²wÛ¶m ûH?{öl¤—ÄAœþÊ­ºš¦-Y²„?ë²és}ÎÆsssß{ï=Ð}üÄ÷»/ ð÷aÿ‚y8ÝëkwÏÉÉA>¶msÿ=>dggׯ_?‘HìܹÓæ×l ü­ø‹tÉ’%+W®|î¹ç6mÚä8wꧦ¦^{íµÝ»wcß¾}» ûÿ?øëÞ}°ü¥K—‚ñƒ·ó=zôèÝ»7Ò#Û;v¼÷Þ{{¢ûkÖ—ÒýÕkjytŸx‰¢×gó¯ä3þd0¾o$}' P \êF#Ñ}¡û¡” ‹¼÷~MÄãᢰ¦k .’Ø=»ö²¥ËÆ·~Ãú#Žh3tÈÐF DÞ¶mÛÿÞƒŸSׄà -*ÝÍ£ûiéé1îÝÏÌjZ†îWâà/¥ûº û{†G÷cûM÷-ZL)U%._¾üÃ9s®¸òÊV-[ÊŠBÝ'Û·oçÞý÷>x¯ Ý_ÌèþäW_%ë×®KÏHDvó€Ã#Qe*U"§û@Ÿ¤ýæ9¶ÂÏSdø¿áÁÈSdøÌð`ä)2ü_Èð`ä)2ü_Èð`ä)2¬©º. ïc0O¨L0Oq1 æùý?Àõù™›–iƉÔÔT$`‡ó”¥ûï¿ÿÂÎî){2Ïk¯’MkX0O$]³vM†G÷]Âc÷a[¸«Âb÷ =øK±ûbT‰ ÿ!Œx÷eYƒ²ªÀŒp(µM³° ÀÀÚ“òÛ ¿@ײ¬üüüéÓ§ãÃsæ8÷ÇýÅ ôOü*Ù¸v7ÝϨº(%h¾.ÉŠMüìü¬Ç1 = H]üŽÄ(­ÄžÌ±=ºoð£u(uÂáèÎÜ;vìØ´iSrVåž3‡Ã_|ñE,›óál Ê2þ ƒî/Œ‡§L.Ý{t?½¶G÷eB%W“4âÈ»³.ÍœºÔÐõ`@;ðÊøí‰ùŽ$v“éd¸» ¼¬ÈÁ€®ÈœÄ»›·n›:uê²eË’)¾o3F÷½37%WUÕuëÖÕ«[÷ƒ÷ß±]—²Íºn,Y¼xQ´°˜y÷×®[—Á¼û‘•kײ2ë59Ô‘eä*Vv22P% «l;o™ºTV…¤¿‘¤:RRú½Ëÿº;/×Kštð'aç_C% ½_+'b‘MRò#I"VÔs•I\& +’”ˆÊ¾!%¡Z¼F´4â&íp ~ÝÝÊJöv9SIñ¾uðw™ë  iöòògïàùR¿"»Eu“ËtK[É%Ô{ŠW£¼T²×íh©úIÙ;ò 0”ô*R¦ŸâË’™É-×5iùÞ4ù±Â”ðM¼ÌgLö•[ÒƒIòéät¶‘J§ ·Dœ’l)Æ-ó¹$sžŸ7vÜÝbÈ%‰‰TvÜ –Ýîáï¹ò‰]/!ûº%•àòPo¶—+N È@q$£Þ’¬Ã=Î|ûŒÿ‡ˆN7IüÊÔéJ²ŸŽT1íW·È’Ë%eçÃäÎïŽÔëfü .)MV¶ yÆ.º/í介*í]•*ø-þØðg}O¸ÝÊ#lv—Ý’bÝä¡ÀPùå<ÕìB»uZúñ‡v’¾ýLËŽ#XØòåš ó³Fý|ÝÝ뚀Àß̾Œî»R$š(»åµòõÀÐ5EñfÇþé×?ù°¢ª.Ýx7õ'|Ì¢›Ë„RYQŽ>ö؆c;u][#’‰¬\¶4^T<õÕWɪõj¥¥˜á¢¥ë7…³±4+0¥‘G¢JQˆd)¶Ä–JvH™1À’E­ BJþŒµÈ¥%žD,Ó!QØÔÓ£ã-ÃÈQvdÇV¨ÍŽr*kŽ¢Ú:˜¥…UK¦0A4ÇCfƒZñ¹vÒ¬¨HXÞXÑŽLdUf‹uØ/Ô­¸8Ð2«A²ýâ ŽÈß–eK“mHëº&`K²U)A©*¹ºËö>'ÈU9ª#C`O"[E²ñ¼ã¨Þdîz¬€2šïª®W‰f+™a¢(R~Šdk4`IÔñeÙ- ‘ª ÒnÉ“;P¥‘a Û´!E4×V©æJºåˆÅ£V”Ú¼)¡d›(–¬Øh*9ÁšŒ¢‚ìà`œÐÔEcvB‰’}=ÃDdÏÂNDSâ¶©èÄ¡ŽÙÆÁ d,0:‹ü1Ù0’H X’Zême¤Ö¶ÍÒð™YÊì–u”(ÃP Ä©ŠœUš€<ž“x,¸WÛ‡Ù&© ”ÝS°7ð:#œè¾g:aN÷Þ£(Tg‡ÑÙ¦”©”âD²LYƒE¤QËŸU÷:OVÕÉ=G{Éâ2ωä-'õôDbdÔKÈ–˜Þ{ôã¹ß<ßžé(RB6`Ÿ\Ð}›º†ED¶ø!¶fy&S¯Bd‹󈡢è“(Eözã¾J^)À}=þ¦(”¨ìÖ2Ö­cXÎ󡣂HÛDEŸw0¬` Û6– fwÂ"Õ¬ÀŒ±+‘ÃuýNÁ7îMÞoJÇ‚G.˜ïI.ñâ3+ˆv”-÷23ËY¬±«"%e¶‘­*²lB¯© 2F:9`£Os m%Ç0$XýØ–Àg,à4±©þêŒíc¯S÷Á›±«B9É} +•¤ºKj5à–¼˜)-©Êµfß—¿}*vÿ$Ož±«èØU骺’ZbKV kÇÚË~<ç˜#ôDdZyº_»I~V£µ;Šu[a¤U©¤>ޤ–ZïÞ«ÆÝÑ8‰Š¢{N}×åö€+»¥ÜZ±MUÓccUsUÅ3ܤT)&k¢0–Ï”ë°y”Ív ¢QåºWe‹yTœÊ¦ØJxŽãYþf™4‘|Mp)ªÒ·ËòeÀdˆiÏv¬x¦B *Ed5J¨E¨&+!ˆŠ)\uïäRë+›¸\Ðã ³ÄažÅ( Üa µ¸È'´c´8‹µ [ Èª¨mQ=N+H¸§I¥ÔåIä$㾈…ƒ9(D2'r¨l¹¶¦aݺ£–Ä?—¿­öh‡î-ü˜ŠM*ÛŽlÛ Xj¬T,X&WEµ¨fØv†d‚Ä•€™05õ¹Ì “$EWŠj;÷÷<òù*»Ç¹‰”M_©µW™e¸¡* ™”qïK¥ t |EÉ’ïÉUT^Âä*TѪ¯ª\þÂbP*¡R ázdü]›(`aª† óÛU=Æâ°™ #Ïr0³mØŸ È~\’mMgƒ’qu1x´Þ] 4 ;šç‚•öf+¬Hº½ìè²N(š)ƒŠiì…#s%ò—“%7‘0?„Ë{Ñ,p#j©NLsLTOɈ+)¦ „A÷Á9Ò£û’)%öj0î«m·gË«“÷8–¥bêQ1}˜µ®¢EMØ%š¬œYÊÌñ©ƒÉÞ¬âùhp}*;ž–™àiºëÄTUèAO”dݲº ŠÆfE¤±1ÑV¤ûåš¹’6,sÝŠ[=·â€GRÏöú©¾çÂú#ކf%RÔ ¸’¡¹ Y²-YÅ?•½))}v¯ódþrÌ÷˜Ø¨§}‡­UX“ØÄÁüÉŸpxû/`«†%óÉ”-lP5®©mŰn(è¦ÁÞkëàÓ.)òâÊX“¢ŸÊІµÂ¡Ô 1‡T°YÕ“…wr‰P¹a«šÊ*s‚z¦¬ËlK¬+âE‚±Wëøç–Ì¢¥üZU,LíŠG ‚z0n2“Êa/ç#¤ñ–€RIÊølÝÊ$$ìX2ò²²ã'*›X´4 – ñ¡*ÉQ*Ça½K®N©âu?æLL£NLÒ#† Ñ(ÌJ‰ÎŒsÇD}‚s±M[M «i6µ‚r¼‚$Ò?{Æ®ðýÞgì*‹¬<£ª ¥Ê–TR–:íŸs¿Ìøwz÷iÉ#Õr£'I[îeD)#åØ3Êé0ùÁý¦%¥ùïa $y›·/žwÞñmµX¸ÝçÞýmEAI—%bWf&R,Žª+á_•„0ÿ­©Æ›@”ÒPf û:²vyaQ¸þa­ôôÚqé2ŽK@≖(Ê߸šš‘:%™uó©þ®;{ó߻Ŋ£Ú‹´!ª7)1o½"Å&r¤`–¶%ƒ…ÊbPôÑ!*(›âZÍ’Yhâša-ˆ¹K§1*›¦ !tÍ,Œ| qbtÆeÞ}“ Iv+–úŠØ;RÅóXƒÈ8ñüÜ[Ö"sXZJF½C[š.¦"Ý+‘9zãà‹n‚ð¬Ý$º%ÌJKæY&0}0߇ówîܼES$3‘Ȫß$­~#p Ââ4m¾G«¢Î«5Û” æù[;[s©ÂË¢¬ŽŽAœüÛò·o¬S¯~¨n³8 (냃ncÕ{›Qì+­›Ù{mÏ‹d×V°aIe¿³×,žŒ5ŸçgÂŒ*{o—YJövÅŽçìØËËkP¿‰žÝ0ê@D´¨ÚŠni)qÂÞ8¡·;Šcïܾ-RP +rJýCÒjÕ6ÑÀšÁ^{ïªnj°O×ëöì% 5Ž­0ƒÉ’IÐ’ÓXì2 GƒÅ{‘•ˆ' r¶¬S1ë³ýZÃæíãJ†ƒ>ÎHs…«L ÃÞ=ÍÄ[aØÒì‘wO«¶Ç*Ø‹,•–ªTâѲ 6’¼×þVQxdž5VÇdq»µ¦6iõ|긬Q4è_2ã¹k§™»Ð…N@®Ó²V£†X¦÷®¤2º­DòŽw¿š¨–w¿bzÿ©ƒgÞÿ½û¥ÏrìÁùõðî[щ›Ø¶ºpõ‚³Ú·¬Ì»ïÑýµÛ‹ b Ê]ñ¥!¦›9<Ï/V×Da^þöÍCKmÔJVu~ì¿ïæQ]ãn³•Rã—rÉl¢tæOûñ[Ó/|ÿQgž‡eLuìhÎæâ]Ûì€ÉV4ÛÈH¯kèúμ­®ÓâÿÁ`ãFjV¶K5L¥ ó²0ßsNÈ<ŠÏeo®Ùí`r‰™ØMd:í•—ÌšyÊeWž{]Jv׈¿­óo)óï,àYan!Ô `Õ§Xå)^ðʈaþXxíýO¶=ùÔæÅP-TЋrÝA G# oÚ Ùñ‰÷ Þ¶|Ù•CG4ëÜÕÛ3AA…‘3Ä…”¦¤+z"-oëäÁ÷¬_³¦÷ócÓ<ÞPÓËÔÙ²,ˆQÅ Äý„·!Œ$³pÃÚ±C‡éš1à±QrÃCdÝMÇ‘%v³/Þ¼^ 烾lÏêÍšKÔ;´55Ò®¦›¨mkf\e‘¹‹~{éîÙ-ŽìýÈØÔ´TEU,Çò¸ØûbÂ?ýͨtyÉ>ÉŠ‰«˜ÈþºU]T.Iµs9ˆ’WOÂ!‰ëêÔ¤lø1ªM˜[ÀÄNÌÈ‹÷ܼqõšÞ<Õ´ÝñqUÅœ¡æ+Å„ݶvÒð»ã‘Â#EÏ kiJÜJ“@©`û‡×/1ÜXs…ahvÜÁQA°ÑË¥„ ÖÎL©“·5ù3?º}ýŸ!7ªÑ°ÌNËnX¸c&„ÚMÛ˜Z/\d(Zq±µ~­aÆ-°êPjFƒ¦[·ç¦9Eµ57µLØ ‹t-þT‰ZP›$æÄլؒù_¿ùøƒD†©£5hÙæž'ž5å E”`ÀˆäæïÜa9p~°È;“b†Ò%#Ôø°6qS•5ÆÒ\æb’ýã·_Îzü^"P’gv¿ê®G‹Ô ÌÞžkbwø¥WI“_rKµ.Rä“'‡7é¹R©—4ùO~b¿h?½ã8þŸØlé-@¾0%ùPË£“Þî4i&œ9ëéó^ŸÒ±ëù—÷R¬¦z›lì!+^tÓ¾w¹Ê;¹%³$`Ÿló˜e†·m´ væä2%Ù’©µ¦bybK³Ã¢¤rvmÞH"…!j…$gÊ‹“6¬XuÅ=Ù霄Rdª9&ZÜ&F=›Ú©²HG·¬}éÉ‘[W.ACž7왎gž›¬ž,|Ÿ9Œ¼ºTc*«6uSeÇìÌß±Á´‹(ê‚_Nk\ûp^Nq$Q»y{WO!‘]Å›þ,^·rêKÑBX©uë]ÕïN£N“ºM[R#‹GÑSvèß~-XžÃÃé=êæá˜Åyá-¦åí“LWrRRj5k™ UH*£ÔZŠa2ò^B£`¶l4ïtÞM÷?v(Kef9óOÉv¬`û¦g÷uw­Up ´#ϽòêÛ‡Yzp¤-#ù?~Æ®²Ìj®zÕZRŒn«ÂA•¼Z£à Ò¶oÖIH»6m_<¯[Ç#«ôî—Ð}öΰ¢è®¬°y“6Û«J㋘ûÆã5>âð›G½,iA>ìý9Ý‹hg~50~¶Âb¤: 7QüÙ¸¿}ÿýÅw=pøi]°ž§JöGÓ^þ’•Ç^í)iÇqn»ví§MCÍ<¢ª¦’zñ¡mO9]ÑÒˆEØ>&«JŽçPñÀW²3®)ËŽ*ƒŽ[³fL_0gÖÉç÷8óò>œîsñøZÂÜ5Ë—¼9k·  $˜Acj˜[7a8‘c_øé§]oì×ù¢K­Ô —Gcï.dk”¦ 3ªTl%’ÿÜ;6-\pýccšu>Y2#+(ݲÙY¨lóœÈÌÛ9á–ÛÖ­^ÓwâsuO<…ª¶eñy3i Ëèù„íy°Aí·®^:ú~ÏègÆMH è°0L¬f˜ðÍç︥`írÝ6CŽÂLÂö&ê4ìqëÀÃŽ?ÍÔÓD§V‚(¶#3Y·ü1Òà[²[}Û“/¤gfY”šXt–nJ®dûöÁFå­nå/ÂÜ*¶J6¢\T%Iuqð$¯®„@Wea˲-³=¯°¬²cHÖöu+^1 1¯yà±&NŒÂö&”Ø ýú¢m¦Ž}2V˜×ë®{ê¶8¢ÈUÓ‰FbVÂ0ж­{þ¶”xíÚŽª†ÌF£ »–oø fÝüÄÄ´#·¨tÁDÁ‚o>~ò’(‚%jЬû%W~þeõñljóc]U Ùy$‘·â›yâÒ„KSë×ïzÙ¥o½=CKÕú?üT ^3ª²“ ,PeG¥Uö––0æÍâ¤QåT7þëgïÏxä>M'© ZÔiydß!¹Fšã‚¹šy[7<7â>gÓ2ðX"«¶m)*¨›Õ¶Cû‹ojÚ!FGÖ0ÕèªL‘å ~øz색‚M…»rOêqõåÃžÝ©×Æ|;J–*q{—¼¨@Ê«lääˆBlÛö§/æ.(¥ïŽwÇ{rnþ¯x„'³™±Lÿ)n”2~0U‡ò «ÔÖ1™±¯>ùpî&Þ¶ý%ýï•´°™ÇØÛ® Âç|¶¯¨¢“'T¶…JIÀvxdâƒ÷nY´@vbŽfÙDsµô.7õ;«Ç%{À6Ô¢GÆòr&=2b׊¥ª¹¶Y´+"i—xòØ®=czªË^°$0Y9’—ƒšk¥8‘@tç #†®˜ÿEÀcQ¹`ääã»öH(†·wV.y{ÃâÖ*›T«3™úÀàÃ:´ëýÜ;T•ú×=™y0Ûh«:lÚuuÆ›c‹ùï›#Wß#»]‘H«kK$ÝõÆKß¾þŠ»k³ÌÔkÚúä3:tè0câX𷱏¸8Ô¸yÏ»‡´:ñ ¢¥I6;(Æ!–çé)Yd’·B(,âÖ; ÁµÙ{ÔH1džAÓë” æák ÷ëûK _œ\)aèºcꮪ;’’tÛº—G>´aõŸW½ïè.Ý# Ï.›é@|-bBŽ€äæo^oXÑF™Æ˜¯þãǾ£ž«×öä¢âpFízz(ERƒlR³­øæ¦¯2& ²qåÊÛ_—R¿‘#jݦŠPU5ÙÙv@ø2V¥‚µ+õ -Ù…O ¾#¨‡?3L(F´Ì‡€!)ÄOÒÛ/ó ÉI«ÝŠÅïKN4Í/gµ:â¢[ú·<æ$SÉ"v"@œ¼ÜÙŽ:»Ö?uÇuõk7èéÉEÑ(V¾ìÆM°ìu¶«þ-á¼eQ¹½|àÒ< î J^ÝÉ¿\³Åƨ$Y“,ÕŽºá]“{`Û‚ù½î¹ÿˆÎç…,S JŽdç° uÝ¥9;0†ÒkÕŠ³ˆ}öÎvH< F¶®{u`ïâ5ˈ!§68D¡![•]âȱh"7‡*Á»'M1Ž<–Ê©ZÁ–¿Ì}sÜÓ‘üœP­ZJ(Í´b†»Ö«©wM˜!ÖÑ’Õ4+gý—o½þìx7îfÕ©ç7ȦÉË 6m:ð鉡&G$ˆ¦±ÀB‡Ñ}ÉÛ][ X2„҉¥_Ïyë¡»oÄLË!£VCK`$é4V¸}ý+?\ôËçj03%»¡-i*±ÌâÜDaNóSÏì9pxJ†ZZv‚*¦iTÉ  vÎÿàµ9o¼xì¹=¯¼o\¾V D?H‹ÙNßÒùM›ŠRâ}/õ£ïS%}q7 ?}ï w©øL½ÜƒrÎ~î¬ñ|À4ˆÏ¾ç˜»ÿ …¹xlf§1¿Âã£Å_½6îÛ÷ß:öâ>çß2ˆêº·?Ab[7«,QIÅÂßü*uÔXñkO=¼mùïÑha(û9½Þé×ßzÒ¹˜Ð!‘ˆé]šüô㹫ˉ"˜E9[â–tíƒOݵg‘šŠ]•,Æu‰Š%Uw­ ”عzÉ«£ŒíÚÍßN©{ÉC/{öùQYÃÊ"ø©w¬q*9P©jÉ«HgëN|żo>˜0®hÃÚìÚµ$Ý€IÊ^ˆÛEvÁvWVïŸüѶb:åÑÁRΪFÇtºþÖFZQÔÂ9oL³uùï)Ùµ¯æz‡¶àMVÆ?UÀ¤wø†` õ¤ªY¿lÁÛ£†ÓÈ®èŽíÈ<=»n0»ÁÕ÷ÈjÙÆtC„ضbÉqãnÁŽTšøáó?˜øDë3zôzdb±žNeÌ …m© °] +y{6-ütÆë_Îx·Ãy—\;ø¡h £šbV¡È€ÎZS­~u°Å>˜tÿ â@-‘UçìͯmU ûë7Öfq–ÒýCÖl¨wB¦\±HÙ¡†¢`å5ÝH‘µkóús§?;ò°‡]gÙæ®ÃF}âɲÂÞÅûAª:8¨Z(ظiòCƒ™R× :¿þüè5åÊ^ý?üðë‚„ÜwøÈº‡*a}Œ‡sÿ˜?n`ŸæM›œóÔËF0”FãE›VO›ðüÎ5k2›µêßÃV%ËÑÍØè{‡¦îé§9yôðìCZ\Üwè›S§kYuû »/½Þ!cüì-êþ͉{x XÕ±U«¿y>P¯/žäÕ•ð¯KÂJt˜Våñ'ºÖ¢¹Ï¹cëâ%ƒÇLlxôiEzFÜÕÄ•£Åá¼íŒ° ’TQµÔÚÙr `{‡`ºF(¬-VPôݧ“¾/­vZ¯û$õÚG¢ë¶½uÝ”äx~RZûc‚vjÎó^ypp<{óö®è·™V?’—ûî³#rþü9˜‘}Ûè×õ6§F]9¾iÑäÝ1³Ñq§]zÛ$hD·n|{ԨȆ zÖžž”Ú¤­£Á‰Ë,Þ@e.©’ÃL$¶Ñ_e¬NrCVÑŸ_Í~ýÁ»ÚÝ¶×ø·ŠåÔ¨¤K†.Q¢:‰€Y¿èÇׇönÛ©û…½šRºAþüéó™/<•ˆ$šžznÿG…å ¤§²( Û ° ~uÞÛ/~8þÑ£/¼øÊ{ž.ÒÒuÑ zîö6Ôµí¼Ü ‘Á¬L-˜²›”ïÅ\'¥Úl–JÄãy¹9X‰„žš‘™™UTXˆEAË1Ÿ¦ed…ÒÒ-‡Æ"‘D¸Ú‰`jFZVmÇ•TE)ÌËEŠ!l05=%#¹†‹Šâ…ù²L‚Á@0Ú™»“ÑEÎÈÈV´TSQ-™mS$G1ã!Yùvʘ_Ó®Ç5—y4¦jªk{æ‹ÊÏ@.íº¤t³VéidRÙmqþ+e:aIì¾mÅv_ÄwmRc¹SF?¾á§ùWöxxçnJö¡vJfLe›Žd&Û%ÎÛê&òuÙÔÝØËO>¼å·Å×Õ¡ëÅa=ý@q’wV§îšŠÞµeõëžßòÛ‚[†ÝõåÌék–.¹ä¾1Ϲ ®`(¢5ùé4’wQe]HÚ]Ç’ x&–ÄÃüMjìg ‘¿þ×ïP\dÛÖìæ-®p‡\ïx(MÙ±ã£1#×ýñƒ¬§ ™ô^^‚¼8èÆC.yòåì&‡S =YÒÑâ5‹_>ÈŒ\7þ͆­Ž`[Z\¿§0ÓÖ¿)§ÌÎ8·äâÈâ‰&³ó®´ß[”ƒ’­DwEóÖ,þñ«÷Æ>Ûº}».]Ï?î¥æÇŸqÃ#µ´Z ñ¦¬°@‰Øni{îìw>{l@›ÓA÷'jL·ª”ð®›Ø¹ÒÞÆÞZ42絉_¿úŸöç÷¼î®û£šÁ;ƒ¯="•Ý|¹»ùKÍâ÷ïrIöŸ÷Í¿qKöx”ª{w $¹øÙª•‡š•3¶Ëî©÷Ûß-=.”$……¸»Ã>ïÛÄ-‘‡”T±ªó·üLHÙBÉî´»F¾gº¤öîî‡KÚ¶¤²®»;ϲðUrÔ2uü I*¹ÉÄ/ͯN²¼ô„ÿ—\îž#ìy)Éû–hiË&·NéãÉÂw7+ùÙÝΨ8PÎŒƒº}ªZ8 Þ}×[\“m0•‰Â­?}1sÜãZv£kî–Ù¼}±Äô–êD 7¬xñ;í¶«È$®¦gÜøè‹©Í ‘8qlö~@6M’ºë_&ß}}ZzÊà‰oÈ)µ—,Y(Ù‘Ö‡5šõæ›…ÅÑž½úd5jêJí çxcfÝÌ nèÛ®ë%F6¦ñȆ¥ß¾ùªdºçßx©ßÆ{Οó_¼±KvƒæÜ<´õ™="F€8ñ¢5˾xc*5Ò/êÓ_©Õ@ÖÕ‰²K8¼w•¾½ÕFO@aSLLÓ‘eŸÏz{ø°VÇÙ÷¹wŠá°`$oUr5 ·¬ž|s·Ög]yÉ…Õ€n[ö–%sßÿí¬÷¶ë8ðÙWÂÁ,‡íåuŒÄ°ÜÈ¢i/0ቶu¿jøS¶›ÞJX ’·_YÐXñêEî½Ó)Žt¼ªï™7öów1É•x|’˜EË(®Íè­K÷íœ1ªñ†Ïìpúµ·ÜþöË6/_@츣„?鬳¯î›Õ´õÜçüwâCZØôø³®z`¼©†` ¼6jè†>EƒŸÛûΓz\'ò'ïN_ôòs`—ÍÛµ¬ßàÐyŸü—­có¤î—Öý†À!Í ÙÖiÉ –k±=¯KæÍýêŧ²3´‹î}Æn~TFB¶íÒGŠiªB-*³#ߨLNÉOÅ;"Âæ§_²Û\T:”EÉS‡^”ÝKÂŽh'²Ênna›,ÕHP˜SV†U8þÞÛ×Îûô’FÝýjÉJE¶År&è¬45@’bå+jªãLpõªŸ¾»ú¡gŽêrQ”y %ÈÄΨó6œ¤îúó¥n]½lUv›Ón4dæ˜á›}{é}/s^OoÞ6s7ITQ â”eƒe"‘H0#ˆ½EaViZ3q]Ø; ËV@‹ÙÝ60—m»…ŠyïJ+~0¨O<oßùì.×Ýl|¤£†$ÇISã…›–}þö;ùEÝzgÜ2?yéùC²ÓO¸}¨¡g!pìDþâÿ~òá„gH4ÚçùÙ­[ÛºÆz;bO5%×aqAüâvF?ÛRS–u¹ Æ®m¡²W¼MÇÖU‡G5Ù±-Ó‘ “T¢¥Xñüm ˜1í‡é³ÐîÜ>—¼Øÿž†µZœwïýÙ'ž¢3¡w+‚c#Ão>zÿ³Ç´ê|Á-#ÆGÕ,FÿˆMe‡í ª.ƒôk6ÿÚ³Ÿ¾2¦íW^7l”ItêíþgA¶°Ä©ÍŽêd[”Ëó`.]’ö©’CU›­q9î*XeïÀAWñS%º,¡ïð,€ú±×1üp,èºÊÎAbÙ*µìxP¢!‰D%Í­ø&°’<úIÙE¶Ù…–w=ŽîP°ad«z‚Ý“CìÚ ¶/œ‹OÙÝ;Àɱƒä¤hŒ8µ Uƒ|ÌfÛ/Ñ`ì£Òy®B˦ŠfX;a\Å\åØ*;ž›KÀN4f1Üz‚bìÀîvd7¦ð£ü¼c“¢{ñâloºwX+U̹ Õ{O‡j£ó1W¦Ký¥ZHæÊÞÞvÖ˜^ÙY¯šF5o³;;Rí|B¹röŽ g]˜½e1`Üä:ÜvbÓÛ'IQd‚²£ÁÙ^IË1ØtÈÖÇ»m„U² ÅX¬#8làgxW]°\ø{ÈôO5¦+—ÅÊÄ;¶„ÕA¡Þ ìeGI*Ä;¡QñÎ¥,Ê›ÍK~übËÆuàà²wï-¹“U3<éô3Õ¬úXæ â¦[ÏÝ;põwß\öУοF¶R¡¨aâ ãf" Q)Cµã0« •@ˆ:¯¼ríÿ½|Ę£Î¾(¦§²Ûh‚])CÔx,²ò›Ÿ¿Ìöwë3,»áa“†Ü ã§çýÏ}þEQ5¤:$ݶåpÞ÷ß~ÉIP~MÛs.e×#vŒ†ó~Ÿ÷¥ÍSì(z¾â°s­½CŠôˆ«rnO=«ÞÎÅ?ŽÜ;£n½»G?¯4h‘C¨l Z #)±0ŒB¦¬‡[ÇŠµ,S—,§H/Êýí½w¾xã?f"¯c·s;õz*P·.ŒñØ– ‹ç~eP¤0®ÊX)Ø®I 7˜yüéçhéÙ2‰îÜ´zÉOßÃ’]‹1*™½ªXv0Qj蘳Ï3Óë$À ¬ð²_™õðukµ=¡÷-uoûÍÄ6|ùYíÛ|áU7Ôl•2*äj¶­»ö·¾7çñmOïÖgäø"=“Ýàé¢}9e7cH…¦¬j¶4ÿµ1¾2º}«®öD‚Ý—'{Çì2RkH4R˜ÿË—«¶Y®“Cu)‡µ>òäÀ|eË¡¹¹ ¾ü< -¹8”ÝÅ“µz-[·:ö8“9¡hÎŽß¿ù:D-ÐÏÙ ëÀ˶hàÐöÇ5lß!JØm9ëÖoúñ µÂyâQIn}Ü MZnz¦À–5+þüåû,ãŠÍö¥0**ƒyÇ\õˆã:6jq„eaj¬Yô˺% ‚ÄÔ);çŒe« ®34quê†_çå¬\€|ùÕ%vDŠÉôÄÎggÖk’`çþÊ øn×ú?Ù½:ìa×;O€ùm©8ùô³B™õ-JÒ÷×o?/غ. Y̤d±—6ˆ­)r¨Ö±§¥¥×µY "]5÷ýüœmþ(¼š B¡`J‡³»Úµ,XflÉ—ŸI¹ÛPé8šgÁâ3”ÈÈ:ùô.¦^ŸlÙõËÜOíâ\öZ FŽçb=\6Hjκ€ê©Ž¬ÓèŽ_¿™eEãšwŪ7–) Ø4”–Õ¶[°Á"$åü]K>ÿ$†5ïlZf‡ºÄ H†Ésò9=hzÝ€ëÄwmÿéëOU'¬¹q™…´³«¡¼¸•€­¦tN)­6£û;ÖÏûæsfÁ3Á¨w1žLØEF4Li×õ<;3 ¥š×­ün®#™qÍ;÷†yêa3ÊzJè¸3ºK¡:º›ØºjñÊßÄò!£¸%wÆ;lú®¤ý_{ï§E‘¼OO|Ã&rN‚IFÌ 0!’A@QÄ|wErœDA9EQ0 Fd"É »ï¾aRwÿ«zÞ]ö]’œw¿ÿwêãí-ûÎÛÓ=ÝSýTuÕS¥/»á6, :øÏßWÿºa†6ñJ^ y¤ªNÁ–Š•/iÜÚô5ŸŽUu·ï)•¶0˜gW¬tÕÜ´òŠ­]¹zþÓ{ï‰ú]Öu{®u—î`á‚-t¿®øhêóƒ7¸øá³c*(0]lîØ’–žÇCÍ:S/6@Ì0sv®úhò î7tì{퀧ãrÀÀ<;É6¬°_1aüŠ©CÝÛùί¸Ri|YÕÈWcžÿlæŒö#ÆÖ¼é.5N2idÞÈ—~xwAù:]sÏ&×Þ¬Oä¬ûò‹¯¼Úcä˜*35:,Ód$ E¤Ü•cÆ}1gú•µ¿©çK â æp,t†’­º¹a)¼â½yËæªÐ ~³Nñ¼ìåÓ'G'š=Ð¯Þ ÍÄ£u©¨Ž‹}šk¾ýx§_¾û àþ•···Ô4.ÈF±Ø‡ pßMcñõË,1æÈέ¸Cí’wÜtÿƒé5.tä Â`  €ƒî‘?\¸|òkßN.¹–jÒöÞ›îí’V¡.Xª^ÔþqbœRà.,ºÿËÙÓ¾} Ña,ÆYºÂº4½½=I/o«(DÐÈæGu¹›¸QŒP±Â‘Dm]O»¼y›kdU¬¦ðøâdï\>cÄ× ç€‘Ó›Q¾Â]z_Ò¼MTI§zXðÐyµÕ|ñåì…‹Ú ü2q©90aÀ{·¬ï:nqÍ‹› KG‘• hÍŽëÔ‰Ü9rÀ}±£ñV࢛@ƒßãÈ’ Û^ü—5£ûÜm'"®–!‘âiéU™Bk׋èFÀVÓ,ÙÔ”t7ÛõÛ©ãÖ¯ü=‰€÷×È,u}~ßÖR‡ÒuCµUjý¹fÁø×þüæcÆ?hjVµV{7n~›“^Úf˜®kÈ–o>Ø)k}U«NTUÒdçÛ¹ãÞž0:T¥ò­÷õ¸¶Y;WÖÅ1èáß­nóôÐK[´±eW²€é*1W½3ú£±Ãoø_—ÜׇÈQ€a¦œ!ƒJuÍŸ>rèïÌ•x6 Ù𠲞*A)XªÛË#k_rCBdÙ&ÿ³ÏÆ•Ë%fW8R+%¥•ì?lxÅzãRH“IºýÔ£[¾ZÙæù—ÜÑY±Ã *Ý2Õ‰Ç ÃÑJ*Ì”ˆU‚f÷ï°ýÛUmžÑè–V¦€«Á§ß"[GwŽüPdû¦'_U¥Ñ-›Lz¶ßöUË:>7ú¢Û[f«ºâð,ǵwnýÜ £ÛÖI,ïØë¡È^M«î“–UjØÔ ±ì¿½1¨/ß¿EÂj®ÈÇÆg ÔÓ³úM|«b톮ýjü¥•­ð؈ ¬ìy–†¹ÂAûh Öƒž–žÈÍPx6—Á,Q\žeÝdSIDÍß/}oå”É’i5¼ùú>hThjɰâã|õéÜÁ%'*ª\0¦çSÑ%%¬T¨Þû•7Ê׬—fýéÓg {Irãs“y‡J‚fÔ¨ÑïõÑJ¥¦jè’¹vÑÔ_RïÒVÝÞXc9?|?¡oÏr”í;rœœQ™b]dѨú—K~ðJ¿ o¼õ—Fç™°p J Äš-kª±„ûßÌxcéäáµìpïSCM€†"GÅbÊÍ¿¬ó±ûIÞÁ¹¬Woq·gŸ…7 ¾³kíÚI ”òŽ¢{1ú¶ÑǬ/nÝú¾þ:ºˆwóêog ,™q,ýí­Q#.!Í]ZÓÎ=ïêÙ7 OÒ¾]¶lÙs÷v¢_•kÍ}¶E›Ž …óOÍÿb䉿IÜÎ7Q@X Ýóè7µl}@J¨ò»SÇý8{ Î4ˆÇ ®d¨’E$%­ó+oÔ½®™%4Rÿ=â¹µóFñ‚¬d؈,e–í9tdÍ‹›ºjYæÔ¡Ïoÿ|‘äF$ê$Ca ÜT#%½òjÅú×G¤!Éóìc;V}"!W˜…êHð!IZX*QeÀð ej^d‘0·ã3z7ßµq¤iP~lœjz•º½† Ô¬cJ ÏÍžúx¿£k¾•¤˜¤ºLÑKW¯õä°1f…+`)çíÝ<ñé~9ÛÖƒU%ˆ !°ØŒŒ* ?KÎ(†´oí¸þís÷í—¼ãR~8*ÕJ׸¸ßŒ¹±¬RœñÈoß|¤?ü§$çŠø…Y5¤`Ú3“æñš—‡˜½}ÝwSŸzTŠxL’ È” ŒèάØìÌôj€Á’»jþˆ§JvŸÆ±ómxI3Õ²Uz›¨UÛpì­Ÿ~ôÎóOIô¨¤ZÉ}  „Vºj•Ãæðò ÒëËÅo/ù²Ä"ȱ“©ŠYlr¸D­*[#@Ì3^\:c ^ÃÜcá—,Sbá¬J™÷u¾û®›®•msÒ¬dóôîÛÑÜM÷KU‰¤WÜw(þç¯[??Cvž° «Ö¿þ®†×ÜÇb”RˆÛ¿}þñœg»°~ý®cæåéi¦ J?¡8 M R»”E<…D” “ØóíÇu¿ªmŸ›žüçK*A‚Äu-ÃLg‰ÏÆ[9cÄEî»ëñWšŽ‰;JtõØç¿š5«ã+Ãk5¿›XJˆå½;~èo½}Ó=nìÞßV³¡aš·~Ùûs‡üëác+7i pߦrØU2µ´ÄŠÿ›5 àþ5}^….D1lc*³(åFº›Ø¸dòâ9³+5¾:rèOëȾ;:õ¼¨Ù=Q) s¬Çu@¹0И–¹ä©.¾ý¾õ \~[;K#*fð¡LzrâèØÇºgoùù¼:¤—*·eÃo±œÜæ?ym«{,ë ɵ¹•±ók÷=´ó·. ÚÆ_7GsÝ_xå¼›Ú;$™Üvn‰8 feÿ²úµ'•­œF . èúw«×„3Ëô~}bà‚†°ãrE“Dtëš‘´ •j—ÜH qy;Ö|›aZ=Чöíó²*h‚"º÷×§õïjèüü&Mâ9G¶­_—Uµv¿¡ce*;JÀ+7V(`Ô_ÎF0œ§,Îe)Usþ|sðC;×ÿÐyâ²Ú/1턦!E"QhKX“;¾oëäÇ:¸¹ûzŸ¸øf‹1ŒØåTÛ¢z|Ói ê¿êÕ·XR|ûªu@Å~ÃG«uëØ¡@(A3mrTã!Ð*ŽydÏŽù³¦f¢ œø–ïWÁvÕª{ß‹o¼[)] ëS0!Çöï[:sº·ŽäìX³)MO»¹÷#ßt›Rª‚ű@)÷¹ØyŠ3%Ü?ÿ²úŽ™g{p_0”h°kØfîÞj§f„jÔ­«úž­[öÿòK•ªUZõ¦tÓÛV‰¦ØŽ&›®âÆA!;tãÌá>UÌ uL$vPͨ¥(F@’¦yN8/y÷$³#à¾*â†û¨*Qvdûª'=Õ'©ÞÝÿÅúÍïC}Á,@ɰ%¬1ºöý‰s‡=SóÚV÷¿<ÙUt¢¨%ÌCS_°qÅŠ›û ¾¡í˜kkGVϳdò›MîlóÀcÏGR1*eê|L¿»VÖñÙ×/oÙ)×Åü`]78lö,ï«wF}:vD«>/7îÐKR¢Tvr:VCçÀøŠ/ÞüÓ*™'ˆðîãQ@­2¬@ì¨cvªá›ÚßW¾îEXúÃQÖ.[°ùÛO Òß Bî¹a4kÛ¹Âù â\ƒi\±è­½ë¿4Ü(…oaN¹ÄÕæŠÊlÕ¾C‰Êµ\ÙPÝøÇófïݼ ú¥1†I:0`_òîó_¿^×ñïEõ <‘q¢ð*Dµ¨æO%½û”—Ô•õÿ~gÖs}nêôhÓ¾O8Fº–'žN¨±4šX1iÒgSÞ¸ø¾Î÷<9IJöKRb«Æ¿òÙ¤I=‡ŽªtÃm …U3áåuïÌ»²k·æÝ³H)°:Òܼ­Ÿ¼3ãùA&L/ÝðGƒ˜d’P ¬]ùÆðogO»ªG»z¿ #Ð(sHÀ<Šœ_&Õ5‘-ýüùûÓÞ:x nÑxzUoy {V­Ë)â;äXÐ*$†Ìçök÷ëkïðÌÕwu´”¤wžm3.ä·–N›½cÓ=÷w®r^wßzwÇÖ-—µjuÁ¥M)׸– =Rhÿ·çLÍs#·whU¥R…y3æfo?кuÇ’š¸çåˆAYîŽmï¼7ËÈÒÛ´o­3iÁ´w`C¼ãÁJµj¢z¨¢q+¶õ§×¸£zÍê½G¼'§gÜ·sñ”1›¿ø4-³dŸ×ÆeÔn»¤#6S"v-4¢L™Ìö»ä=2æ,9½Ä]»…JUÀâ@$?ñæ?1_þÏHaï¾L™Ù?æ‘N‡wýÞuÜâjõ0EƲ2&„ÃÞÉ-`4nr)ÒL)Fäè¾& ÙòɆ–ùȰ·õWG4‰F¶ø~ez¸L†×Ä$¨R|ÿÖÅ£_ýã«zÙšý^›Yµ¶‹$†-CðIŠú>ÅÁý®c0˜ÇããÇÒ¿.V•Šíß5ºKó†·µmûèÓpÓÍk¿ÿhòˆCk¾ªÐèŠþoÎ:.‡t¬D•pïª ZÔ»OÕDš·”PT 3¤Ys4ŒPÕáGP—¼ˆðS0ŠêHŠ(Àa»U@‡$rþüáó ƒzUkP·÷ˆ™9á*€æ1êÙ° „`6Ö×ú&¿óêÓ5¯»³×É&e®f”fGÞ|þ‘_|Ѽÿ?®iû@Ìe:ûfúð%&6jvW·g†þ &X(2cSë°ûûå^x£ö ­Y ‹z±”’j¨ö—sG}4æõ;{¿ÜøÞ‡=ï¾%§˜)ƒI@dáGÁÈC†4;ˆ¨DùŒ-—U=áò0p0ËÖ *©lEdÊ¡ÍÉÀä3I E‡± n@›í?¬¾oðð†7·2™ €kêz(ûà7ûµlÛ(ú6„j“E5fºrµž£Æ—iÚ4!+XÑMhüÑpHZÁ PQmFArŽ‘È˜u ›/‚–dÒ£, ½£“ŸQ\„  ±ø¦ïF>ò€ µîÕ¿ñí³I&`G•bä°”ÈÛ¾æ{3«~YS¹Ty@ÚJ4çëg}6eºáð‹o¾¹ù#}ìR%Ë€A£T—¢ 07.S ¦Ï7oÀ:æDÈ$ÓoÉ!2Œ€/¡2Kf‘ÂN û¬Ce‹leû7˧ê‚Îl4ÊànAÛ’m„J×kúàK£ÓÊTŠ T5űCÔZõï÷?2àü[<øâȼ` Sç`j¨®‹vŽ.Å„õÈWÏùÉÄauZwêøø‹®¤€óW1fœÁ«¬a85-jÝ*ŒdY$®ÈÓQ²âºÎмBtÆt°i˜’pÁ¬1=G8Ë3`̘.ƒ½åÚ˜GÂN@µEÖH ”ÇF¨!1Í¡¶ª‹²ÝÇŽ*®©ÉJBRãðÈTMgN˜ÆÃÔr9ªä'ZÜaŠ‘&r#¢2åÀTô(¢*™îb0¼Öˆ"+¦L°02Ì‹…cäÚ± =ïÎ0ú€ ia¡à‰ ¨®eêe½Lf"Œ•Šú¢ŠdéRBe£Áæ%Jzo 9Ä²í¸ªfÀ›Gñ…#â8ã{ \™ .‘M0•4xáXÛrÂ>,ëÇ3ÕHè&v0æ ‰›‰1× ë PMEËo* "r‘÷ŠÅ¢EÕ6ņf1 eƒÛkc»¼xXþuÍ„¥ æ‡ÏÚ=¢ªøQ)ÈóbÀÊÇ+IëGr  3ïQ%“á1ŸXð#L‡{qE³¥txCXÑÑV“È[¤¼J¹.UjI0þdŒé49ÉCGa#Ÿ‰ËEX$ 5˜(¼ŽGL_mÙ"ùC:™ è¡8&®5 ˜ø;Ö›ã^3ª;jƳÿ<øÛÏ-.®6­™ÓŽÝ”¬-QeçþˆŽlÄVå ÂûMÆYW¹Š“ææ†ïÏ~®ßù êô5ÛR3 ×Ã’³gëo{öí­X«nÉŠÕ)žwaì>¬Éu¶|µtæàžÍ:t»ª÷ÛH8 ü¹iØ™2ý÷È‘_LY£ùÍÍîïU·Ö%ÐëCÑ}‹†¿ôëGŸß÷¯¡µoo§1M¶Ο<ô‡¹o_ߥëm½ŸÈe™’0bÙ;>y{Æ‹O;;½Áuª¢®“Åa™––øbÔØåÓ'_×­ãmÝÿ‰šÝвA¡‡3¨i§K–#9ûþøá“±/Ù¹ôöŽ=]3²p΄¬ºõîî>°Rµ:q‡Ëº©ýšjÛ‰4Ušõd×õ_­¾ãñç¯lÙÁÊ݇ DZfé T;7$ƒr“’’5X—ñ y:l.0ƒ„èŽCq+€‘Ó̹è?8ù{¶†9Öø„­Ï† Ñ%°Æ¸ ¿ê² †Á²íAnåmùqh·»ªV«ÔgÜ9«œå$b{¶ìßK¶òîîѽÑ--ä@)KM3MAU•‡šGáΘ0eØ,5#ŠïVˆÀü¾ü9»Èѽëv`ËÚ^£æÔjx¹­#µJ,È]@ö®¬åíÛ3®_';rxÀðÚWè*–‚p0T×t•´¼Mk&<Òáþˆ¡Rç%¸m„¥È?‡?18rðhÏW_­Ö¨±Cõ]ë¿›úXŸŒò¥[÷èUû²ëX¸´™³o÷ê% Ƽ¨ï‰1󵺗G;¼uõôŽ-ËU¿°mï§«^q]" KæÁ Ëæ}8a43Ê5U+[U‰`r%3ìȉÁÁRñpÿ±ó,9,×ê:rã²ì]›'t¿µîí÷´ì÷\BO1ó·OÌyn@ùój¶é÷ìy¯«!ؘU,Çè|7E0À}ƒÚ @ûx ÍÞ¶þgêð’UªW¬užë¢»ñtâ 1ÃJœWx ‰éÌÜýí²{UoÔ¸ßð)fzeóó@ÿcàÆ8ìi`Rlü`Ò»CÕ¼ºy¿¡“)³EËþå»ùã^Þ¾~ã_º¬e')”NìÈ·³_ÿpü¤+okÛiпöƒæ‘I'>±ß=ÛZÑé…Qunncia,\èØŠ¬ë4ñÍ»}­EÿW b÷])p ~;OHÔE×#²ÔQ„,.Vs—D%¸ÙãY³MhTÇ“‰,àË%:˜Ê¡È°Ç$výþöÐgvÿ²ÆÈÊhÛóÑ&7¶¶ätCIñC;Ö}3íõÑCGûLŸ[¦F -vô«÷ßþlþ´Z•«—.]µcŸG£%JGQç‡t0§cª’¥) SU,U'›°«x„­âMm ?øigX`î7,. «>sâñ‹Ûex²Á ÐN4çÇy“?ÿ­r¹ŽIêcÒ³$E,);;§c¿5]n”¬µ¨áZ™„._8÷ý7ž©{]³¾/ÎE"n l‡B§Kñ ɳ0›ÿÖ˜ÅokвC§/q%hPÓƒqÔ*z’) w—9ÎÂT]ªÛ€Æ4•:, S+˜°¡jºÂÐÁ ƒÆù\¯*šîH ‹,´Pˆ+¸n»² +ÌÀÀkNa¿•lÍ2ƒ •ˆRt—Ä%Ç‘|•‹zB0¯ðâà`"ÕíU.Îv ¼3Ú ÜVW“¬©"ž¨HÉu°®7Sñ¬È•:– îRô"sú Ê ›Bea®6 Fâ‡öÜðÝ] /L‹ÇfNŸRÀÌ“»~×®¼2ÕŽfVؼ;;,žÓh>3OjC3ìF ìsUvÜ0mXµhæ?©P½ü}ƒ¬Ó@ж>]úþúU_^Ýí¡VÝzÇ$\v®HšQ]çІoÞã¹ò«µü¬”Y6DÃ`lÆu'HÍß—,Y1eèŸ9ûª^qM»V÷Á Woúaõ[s*–=ïÎç^ÌhpyÀVâ{6}0qÈÖåË/½©E³¾õ*&dÍ9´kíÜ1ŸÏžxkßçëÞÕ5#œ±wçVùÐSʵusã;ïÿ±ò˚ͯ¿±EgXGqT¨ßD• Øî¾ k%;¾pæ˜=ëV\Ý¾Ë í{)‰È‡“GýôÅêó¯¹ù†6j6¼ÒVC‚,ß ªìÏ?6Ìò„Íå;z=vþ7™*zY4Feô›x†½Ø ´à`E(¦ p¦17†[Š¢qL¨Çj;°ÚŒ°›° ̬¦Èd$K–„Utt¦ü‡ÊÐbZ70ƒ= Ô„ƒQÀ`:‹"È ŠÖœð:æÜÑspÚMT7ÛvIÕºÒ3ô[_ÿÑ¢‡?™Y2ã·ž.›Uã šëyÁÜ£‹GLÊË¥=GO¿ü =¢ÙðÕèGÜH™ê5îìÚG*]ÕÝ·{ñø×rNùK¯ì4à‰¬òUÒìÞüû”®7ÂŽQñü&wwØ ‡öîüxÚ$)­|åíû?­—«êÀ6^B†oMÑa÷»ŒEï>O’«0f™2µ×¯þbé+}*]~uÓ¶Õ’e/¬Usû÷«ß~í•ìí›ËT­Ñ~àóyá’ÕêÖÓT‚Éd<_Û:UWx`RW,ºõç×{?àFò®ìÚï–ýOǵï‰8~L‰ääú}ý¡Ÿ¿ø÷Ì e«œOŸ'j@  U*f–«”GB²²(ÂýM‹ßœ7ôñÊ ®lѵ¿Œ©oÚÒ)oìYÿª[v½ùþGÔÌRñÈ/fù~á’ ^ժϓÁ‹/…Ýìèšï¿öÄÞm›®èØûê«™¥:&M銚³sûŠYc~ûæÓÛ½Zé–¶A èbéÛmË´.8G…ÃM¬* "N‘HÀ ,tzR[À‘Ú*óüƒøOÔx £÷ÿ¶&-²ó½Ñ¯þí—Ë|¨\“A7”¬Dtû’Q¯Å]¥ëÈ©7&,qxÃ'Bç.™òÌžMëšµ} öµ·`jç×.Y¢´ XHÖÃ<‚QZ–ÒÕ]¿o`Gö¼?eÔŽ_7\Û¥oó.³´ÊXl#¼‚ˆ«Ð$Vã‚°Ù#MîO’Ï~È“sƒX_ ÆEp&Ë…}Øàp³ƒ[g¼2ðÀÆoÓ2³Ú>øHFÙš²vŽîš3fH$Ç*W«A·!£äöÓÒwÿ=qxÙ¬Ìö={«e*Æ]Õƒ®ijA€÷¤T­Ë´R¥âlsDwñ9R°¬ €©$#Gˆ#ëˆÞ\‹š²* —ªˆ—$ÛÐ`±0œß¶¶¯Y5ÿ_ýêÕ¨tKLJhù:ejÔO×õø¡mû¶®=´í·¹Ó&éé]¶RÆÛvïWì˜aæýúýW+Þ›\­þ¥­îïKÕ4f+=½J½ú&ØñØî-?šð,¶ý“·¿^2¿Ö57ÜrOOž¢f(é%ª×¹ÐÛ@>pØÈ¤sÓá)šªƒÏΑ3Àö޹ª¦äÈ¿æ*ŽBmLŸuöT1ðUà$¨Å¨Eu„½*UŽk(f$.3®Ó„¦É²bÛHüs<Ó¥„[q¸+¹ ]¡‚fR“´L A3Å:HoNyA/£ÇƒÂÌrG“ñ`…‰s.žñPX ìþšl ǵ(DŠfÁÕ!ê˜`º’p,ÀîbØT ªÉ,쌰'¹b`Y×Öd,x.ˆ0šƒ£…C¥|_Ï燆ŠL):p½Cü£› p•©qÁâ’ ÇâsAu©˜oíJ5Ô”báûpm°Ïi œrLDc—€æx?yÃt‚¹`>¤Ôq°“žÂU¼Z£. n zQ°"+Å™—¹Ç{#ø«0`d—˜{“šA“yá@ÉS„#²l…CÊfLN"Ô`(uЂõJÂc]‰)Ш ÿ!5ü  ¾õ0ܯé ÇÁ,$L5ç*<dvF’ØUöõøKm—ᙪ"ËÔ2°-êPgãš³•ÝØ¡‡ý¡eãz¡xÎÔ™“Èöm»³2Âñxîú»b¥*çdTÜy8ªåäê8Ñ'®LàFk•ª:!i²ûËw˾9,{Ç&É21óI¬ñÒ•+‡ËVlrû—Þ†iI ±>˜)²ÁÜ’Rì÷o>ðÔ vÿ|±î ͽ”/€ zÌN7£¿òÖÛoM‹ìÜ)‹co–Ì*UºÇ/—itmT’³ˆ2õÕlú`.2ËòÕ¾­Ç@°öV²è½Wž"nŒ+™¾>±a“KF½ôÂÖÏ>””¸DLÉbðÈ©6˜*½“–ùðk£kÖ¹8DÈkõßöÝׄ$¸dJZøÎGÞµcõü·$ÇÅܦŒÒߘ^ºv£8ÑBºrâßè·ëû:?õBãÛÚEä°#x²‘K?X“’¨ ‰ç™ è 6[¸6¾!ð7ŒrÄãd¤ËB\$І%‘@ #³dxurE˜Ï ,žã1¼ù\ó^Y2¡£*̈¢Ûxü÷×ÜøËÝ;Þú3ìR’(y~ý#ßTC™ñÃû掲õ§¯©•JÕè3ll¥Ú A“z+ýXö Ó3`å‰ *Î&Ù1RÚ¿[ŠÞô$ÏŠHÒižBü¯å!¤ìóÿZ'SÊiM`4s=.L e4YjÎݽ}GßWGW¸øJ;¥Rš÷ǺQ÷¶²7ƒ•*ʵÐC£§£F"°˜3º¿>¾qƒzþyðåîÈy{94«€­TS’clhËZ Ì#£'fÖo¢ÁÝk¾9ða€4åʔޱ{¤°ƒz Bã«Ú xlƒ‰ÄYa®ài qÆ¤Ì ™¤¢máèðW ªø…QcÉHI¤‘dìP¾ÊòЕª{v›’bbóå„ü¤Âº¦!7aÚuh÷·6®°£Sg½IvoÙ•™Ž&îïN”¬œ—^që\LþEˆª]úxî!©.–8!³ Ûüó·K¦Mì<\j ãú»;6¼¶™”^ÒÁ@IŽ„¬"‹NgVˆ'~ùá›é=|ÿ3Ï5lÕ>›jÔÑìÁ›˜¹?¯ø|Õ{ïÂÆSa)ê%­Û]w÷}– ¯Ž©KïÍžúË—Ÿj°L¨uÑ-í®oÛ-Àk¾\ö邹Ì6AÜ׳OzMÞš2qÇO«4ž¹-ÖªJÏg"§Uj×w@Õ:µAMÌ5zÿ†½¢ÝÚ¶]îÑ#«—}$SÀê®Îì2à¥PµºyD Ë,ÓŒŒyrà–ï–ßûÌËMîèpÞ? K6ÂÖ‰ºìÜÐÌŸQà>?ØgV+XÌ–låMúbÞ®mªˆ°Ë¬z~ûþƒå’`!&öîxÌk‘ý;If©Ný/YåSMg€LÐèwÄÙâ_íȹ“”ϰ¸gEÎäüá\<ðs&g4Ìÿ)9ýžÃ«å ¶ñªê‚}êÄt+òÚãìß´¡ï룫7½é«Šš÷ÇúE㇛9û1d¦ˆØáÒ­ú>qÁy5b‡öO|åEËCWnQ˳J‚eY ¸Fæý=U®Z-ØO¶oÚøÞø •Ë•ºóÖæoÏš‹%†n”.סwÿP™jr(ÓtIξ]ó^z¢zj7·h1}ÊjY vËU­zo×îVÅ:D .}!iºÀß!7¾á“Eó^|²v½Ú='¾•C1ОFH¦n˜;GvüñöøQîá]V\I¿àŠkÛuéeè§?´éëÅo³R²FÝŽ}j™¥lô³7?Ÿ3jùÄWÞަà9jiv¥R€¢‡ ºÙ¿{ÖÐ!äè‘KÛÜ×ðŽvÉ^œu??vl6fnüîë%3§¨˜— € ÿ&íÝØáþÆ7´HhaÇeg ³Óöã—Ÿ}úÞhjd­]§N¿mܸñ§ŸÜؾÓe74[¶|ùÚEoJ“õRU_qÏC=sgqð×5 ¬,5|S—žõ›Þè -¤é›Y#–N|ã‚;îëüÌP$#Á¸r†5í¥â:ªE¨9à͉Í5${ó:Ù»¢Rò ³’ÕÚ÷\³J%'–óÖøQ{·lRðL×~NQ”Q ¶ìѧVã+-Yw±t0`y®¸ ÅŽÎýzöŽ?$+*+ŠÃž©\ï²Sˆ¢í¥pÓÖSÏJÊžŸP6¨à¯¶.Ͷoýcþäñfö><`LH¥p‰Š·wë]ö¢&–¤úmÃ{#^ÑÝ8‚Šcµ½„!P5³D«ÃÊTª*‰ …bΔŸ#\E“`1Æí;z˜µw›ìZ\ TºäêVõsd}׿_¦Å(X(W-]©âm[¿3gv"'’,;†þOXì®( ¤•¬YïþþO1=»ç·¹Æ;ûø’Sa,‰ôkÆ]E­ÒèÒŽ½ú:jˆJð¹&€â®.dqzOJ¥úŠÛ˜þ÷5ü¬ÃÿFO¤ÿžá9°*4ÐÃûwÙð}‹&©NÞ´™“Èþ?vd ÜÏ[¿kw¼DÕ¼ôJ[D…‹ªpñ‡|÷'¾Ž8'B7±¡?š®R3–g+i¶Â,u%œ'š­*niãÌ5dàÖ¯?7ï…ÁÍ[·nxGk­tuÊ4ä‘%è.‹Ë!'O‡×ߎcÒ¯¢[FÈA-ø.hVÇMä)ÔT± 7õŽQBç–?*Á5-ûF Í•²¸e†Àx°cŠD±ÒÂ}YSÐ!LI·i$¨pÛÑñ€cš±lÉÈš.Q—Ø–õVL[%Z¨Œ‰ÿÌt–G·ÿ:ýŸÏFL÷îÞƒê\ÕÜCõ/lÂI–*¯ˆœÜ‹L ý<IzÐOûúû…¡ö°5:q¥xn»Ür5R"ÊdµdéhK$nìD€Ú„å¨Á4“(Ú`èh</öèÿœ‡ïŸÝ3<9Ü?}ïþiª‰ÿô¨O²TNs»ú›ç¥@N‚°AÁr‹§“ )mì ì²è‘™£_ÛºòãÖ½úÖkqw"³l‚07µD.Ö›á'H‚Ä…²À& B±(W^–Eî,á.zÞU#âr#«¬…ôu€_9ÇÁÀÀîÚ EUd h,Je-­´ÅÇqBº"9fÂÄf€i 6=qþj<àÜó¼žò¡¨"ÀÓÁ8¦‰5/˜ýòSµÏ?ïΧ^Œéië\øªëŽ ÊÌÉËK‡~)º ÌHgŠAtb¡†=*%þÄÌ%0ŒtNeDzi"–ØþËúÏß[ñþÌ·ÞuÏ3#¥áKhN  ÝyyiX Fcá4ÄEâNÒsl¢a ÈSƒðú{Þ}ÐÌÌŠɶl˜qH-¨oqÀµ¡”`+pMr$'aÇrÒáߎe‘’Èêƒ'  ´Ž‹þЀMÝt~„ÃãUÒMÕà!Lˆ€ ÝÎãX*Q–Ó2` ÈCbGã‡÷}9{ÚOË?¿¤õƒÍ»ôaÈfí bu…œ€K Äi3F¤À  ˜Øxv'¸“ˆêY¬H1Ê„æÁ æ8AUvb •$†>;šé(6,j—ÝÈb’®(—I–ŠJ˜Xö''®"ǶPdÙâDÏ°Õ #ßOÙbjdje[¸I1ü8 8j@2 æµÄLErülN×…`ê®ÀÔ27û`ºªºL-@«°Àe¬êƒ¥–¸®ahü¦b¥äýŠU)TÇ 7ƒzµ„$W‡->r$ƒ8ÔæÄ(;"+˪ÚTKÄx%‘qŸP™ÒByy`·+¢Ü1æÂbœ†¬RGQ’¡f–´0_Õ$–©Ù®!2ñh¾ÀãšÆ-.9ª 9j°’”t-­IÎ_^hjN_cŸªžój6çv/(n¤ÅŽ:»þ¿û ÏA›6ѰNÂýïnmROs"3fL${7oÏÌ ç%¢ëwîI”¨I¯ pŸ+›rÁ å3óàÎäŠRa›Žñß–Šiæ‰`n“m.»È’A î©ëÊ*g+X|׉Tö٘ז/ZØþ™ë7½YQÒ0ìH¦."pYhŽ—ñx›ê:|[Á­O%†„?Xâ Y“A#ÎÖƒ² ~b®ƒ`ìx¾Ãlâ&°Ø¸)‚y†pSa×dzB–©&éœ]“ó‘yO™wê≃‹ l‚ŠÛu,ìysp¿­?|×nðsn¹;¡gºxPDù”;-¸JI–?=PyFjqmb ÇR;x†á€ì&†ªcÈ–…Ç"‹¹Œgß.ÕTö'I›.ƒýP %<Ï;³s‰3èᙋœªÁsàÝ'^,⹓¿6äÔ¾""”:ñÌåÜÍKAƒrªSLjŠAµâ?LÙ"®iˆ™ñhí»ö>l›G¯º«}û'_>l”´,³´ƒXg O¿ñŒ^½‡Å8…^ˆ â<ÅdR)ÄEQ@<ÁGÖgŒSP4 ©×E,&-`|…îà¡‹OG÷>Ö •4 0f^J¦Ž¬~^QÜsñb樎¡¹A“cÕQŒÁ޾—¤|÷‹óªò.B°£è ‹¦ +{7FÑžðv(*,c° .{¦`Xƒr ‹Šu$°wþ}Š»åIEÆÄÒ šô²{DÁXDƒ –"†3‡¹š®¹ ¬ Å:D°Ó`™()"¾©‰Œdƒ]åz މÐqm ù \CÅwÇ>"Q$@`J†'‰0 hÏ<ÍSú³ÒŠ';Õ,Òà_õLÿôöi6xZëð Û<]9¾ÁsàÝÿï=ƿڠMtýÀÎì ßÞzIÃÊpçö™!ôîïÜc–¬žª´õ`@.s)(-*K$éoã‰×Œ‰3\¦zå“‘ 4–ÇÎoÓ t‘HEí¬]8çó%ïßÔíáË®mA)¹2f¼fºÔ¡¦«I˜û¢ªÜM WSƒbLœ§Ep"çðWY¤$« ›‚Ëš8F€ÞÅ@r3Ïð Ï"0˜KÁmvÐL :–‡1^51ë~cÚcª¨Á۽̃˜£Rqeóèü‘¯o^óí¸ðš[rÀšÑu6uF%¦cx¤œ"¯°à”ª†xìïÇmEgš‰TpjZ¸‘Ó Ï;ÖK¯yµåE̳ø€¾ û>³tžº‰¾Ïv;©†MáIk"0Í«”î kA.ÚxᮜY‘àÂ_,Ü`êKŽ]Jn£ÂÏê¸O ÷Ä©\§1äâg?U#Rqˆ¤º±ÔÉ9ŽŸýr:õÐPNÌ“ß Feb(¨‚E4ÑÚÇ 4л[úÒS[7ïèðè Ú—]EX†@êE{Žì è¿$É:šXÌÑ ôÄüK¹Y,Åû=º°ÓóÔÃ,®ççdÃ"RÙÉñÏðØåè³;å>~ì{…<ƒ…-ð<ɱI>åS&ù_O –QIJ…y1χc*µj[–¬‡ »vÚô]‹&µîÏ™6‘lÞµ;33‹G6ìÜmeU‰¥UÚ²?‚>§Œ³`<ž§ÊKˆ.­'Ô `ÿâžµŠqrH¼ÅAä]Ä=?ž8œ%ËKr@Æd b£ÙÍÒmÉ£uPÝaÀáŠ:;"׳$Hò?.¨*cTL-Ã8QÁëm:ùo†È'"ˆê”ƒjqD(%ÜOR%=4"ñEøn‰È1A'€,@-ÃõXBØ>|DMXJº*g–‰A3Ì J®N¡ ¬*•’_ïø¹/4$õß½d—“·SHp†òWFêÆ ÝæXÃ…/FÏFþ¢òÜJ®"&Ýù.ì²€h2Iº¨î™¿©ˆôtá]\ÅÐê„EH¤¢=<!©z›ò‚þ,ppГĂ·ìø‰xæü$ýxuxqØù, §îyñ‡)‡_hÈÇ óøåD‹^:¿¸5I¤S,ÉÓ[Ø…%å"?¶HÏ{ýwˆÇ“3ˆîk9¶7Kd•©€|ßLã1¤ò.¼[tF䯻É|³$*’E-Y¤Ú£Ásù'{ŽœR²´9fNy÷§\ÉF¹H#Ã/R’â°ÂëwÊÙM9)è‹Æ@[rCf4vÔŒ24’`²¬ÓK”vB0 ò´!.Ñ-¯4‹â)$ÓÓd¡e$“‡uœ(£ šÃ0—‡3J¨,* £áÕ²ÉDž  â€U‹IÏõz^ãvª1æMw{V™äÕÓFÒQ™‰/¯z=Ì`ìãùo#õ”9^¯Š@PïÜÇûÓ;]L(Ì?ÀÔ.ä_gAÁ± >MäÐ[· = ëR¸˜e ÖßûOÅ3Xä­+€ûÇ'Å{lq¾X–ŽJ²`ð$¨Ke )â_1n¾RU¼œT¸ ™Dî³xì,ÉlÂj1®Y^l TÊT ëœÌD²'´‹¸};C^Ñ$® […긨–ÿ¶zŽ*I”×”Krr[ôòK Ôˆ$B~Hòbq°¸pñÈÉ‹“©bM¦ü‘5Ú/´´NCc§žÍÂz²XTQÅêísµGׯq=OîM§æ ;à¹Ù°Šy†…þΊY §¸ÑÉz•jmŸÐ«d crö÷~ p+Dœß"óf¡kRôFÆòVX­ë:–“u7{Ïþ ß6¿´®fEÞš:‰lÙ¾§DVZ"ž³q불–µ+.ȱ“ 7²¢ G=ûH¼íI׆Þãï*ÃXIÅSîf¿SYœžå{#‰ämºÜd±1@500G²U×F®Ñ Ç„À„öö:|³ÀiWØU!F,¬ñL¸p¢à ( zZÜ{°¢Àƒp]á>æ¥ÂXvYDáx„ªHe&r©ÐYÆUª$d’PÑQ#Y‚PIµI˜+º°‰æjdo¢1 m’¢´ä)I¡÷*¥-N¤ÔP5µp‘;NNlätlôc—[ÈÌQ ºXDö:ÓD# 3Yäûk¢Ò„7Âè$žÿ²Ð¬Â¯Ï'8M^¿‚/¦lP*¤ÄŠ&ºV‹>CÓÕÇ.Ì ‚OöÐóSÀ}žï ŹPÏS_RtøùöC¡?‡K -'™×Èq·(2äâüC§¹œŠô°xïiJî©BIrÏ/E‚’ËMò^OT&@'†ðQ!"ŒÆÃñ¸ŠóÙ uEôùÞ•cO@ı$Ñ¢]ñ ü·‚Gyv—TDŽB\)˜<Ùq‘(³è)(Ó™-CÅM ˜*C£AÂáZ§hLbž#S–Dí›È«Í“º· À C0dâ"yœ,J‚bcVød¢°Ñ …qq+âH< šßÃC¥È¾¬¥Zã=ç‚î½àZ*/XMBËzÿ X!€kPÉâc*ŸÓä®YKÝ FyzÜ»’‚$ÁÍ![çõt$“Ê–Ðܸ‹'«D6˜‰ŒÜ$,Ípp;t6 ®Sà€?…-£I)¬)îo#Æ|ˆË°?¶äRÑl`q•ÄßZ±©ð÷>–ó@pí»eÁE” ‘ \”$Ey›^‘%„ÝJu°‰©­E†/*FZѤžÂ7Gp™T1½UO’*´ná¢è§›ä˜Ó3ÿ.Rê`£ãA÷0–I¸Û\± K¸wcy Mölp’ßE±ËxpÞ«#EÄ“¤øŽtÜ#œñl‚‘óäéŠ83sAñXÂAÿâu«´I€b²|ªžŸR­+ùšö¸ÍýxÜ=>2I ÷ñ)°“¢ˆ3g½G–z.:_¤‡…ü)wÀÓÙô¿iŠá÷ yaÂp)å«rê¡»_s)EƒÇ_-Â/‘A‡F6WÒ±ODˆ$)ôõÓøš¤ªŠeÙJ H©#åŠíÝÜâÊFª›3u ÙõÇžR%2âñ£›þø=‡öǸC ¤læ6ÒÑW‚ ¦½UFR¦‚G¡I |ý6Îã3¢e'ËŽ¬‰³K&¦;ùÖQYvѽ@L ¸ð)uTÐÊžÏ ]Ë¥p¨À=t&é$yâÆ…»ˆ‹WPá<òFŠ>?á7a"ž'½,ãt £’Ãt4‚gÆèÊ"$iþ»¢X ¸Aã\µ1H2(ž¦º¨‰Á4ÕÅ:&è Ý`ÔÒx\†1Ü'šrªã¡ã¬ØÔ/ 'É#ô“5~Êž`D‘ÁªñR1У#Ž,Gé,>…}¬æQáÍÃ5s¢"À¯·9áÙLaå| 0 ß=«Š¯ô!ùû“©Š¿†Ã[woÆ9OžQãÑxΩTO}2|œw¿`"—@Ðw{ÁÁƃEŽñR˜Æf¸Âž”± , mŠ´ŒIz²~ì¦ÿ_àz/Ú™”d «ðŠ™0Ë6“X?b’EJ½­rK¤!Ôñp ‡×PöxQžg€b¥_¯G„‹š²øÞ1²œD}`±¡@0½ONµŸŽÆ>•§÷NCc·1Ó“çDcþÊÙí¸›îù)‡)Óós²að ™ÇùþÎàF'ïU ƒäøO=¯eÛ§äjSEUâ?áÜBç0Miy¸®»{÷î-[¶´mÓÆQ k$2d;¸ÄŽÏš:lß¶#33#‹nÙ¶5«D©*Õj¶1†,©。ëÁ€î¥ìœd´Þ€yªO™Kùÿó¥jä$·8S)Uq·+|Ó.(ègÁ§'ïùÿ¾HqŸJùלäS_|ùOHÊ×P’’õš“¾ir²+ÿâ­¥“ª{^|¶Í_±o ;ÊŠ¶y’7ñD}•ÿAaäR­¾òìÞk’ê÷š:;M^€Ex¡ßIáOyùì¢r‘¯üE)üäÿJƒ'ß Oø(åzû‹8áF¼ð Ä? 6Ç¢ý)*ÅqÊœEOŽû=¿['ìÔ¤HÇÎb­¦\ÿÅ_|9‡Â8E§tÒ®‡ƒà:‘°Ž= … G ‰fÖ‚Å•KíÈÑ#“'MÞô˦ŋßO& pÆ6¬_———7c:ÀýíÛ322âñøÖ­[K”(Q­Z5¯­âN°| Àý`ð¸ï‹/¾øâ‹/¾øâ‹/¾œ Œ±X,vzp?\€®cB233srr ®)ˆ ò‚û)¥ðû¯¿þ:yòäH$²dÉ’dõ=ΣÑèúõëîO÷á¾/¾øâ‹/¾øâ‹/¾üçäìà~"‘€o ß°aCáË<4ﺮªª^¹âýû÷/Z´ý‡~èµãÃ}_|ñÅ_|ñÅ_|ù›äìà>àuÓ4EÔ^pM$Ù²eK:uÒÒÒøàïë>Ü÷Å_|ñÅ_|ñÅ—¿IÎîÖp¨{Æ ²‡FV®\¹`Á‚.]º\uÕU†aPJ=ïþÂ… áúE‹yÞ‡û¾øâ‹/¾øâ‹/¾øò7É_„û?ÿü3üQUÕ;vŒ7⬲eËöîÝ;++ˇû¾øâ‹/¾øâ‹/¾øò_–¿÷×­[°Üu]EQ )ø †á¥êúpß_|ñÅ_|ñÅ_þ›òáþÚµkÜÃ?U,9ÍmÛ†z¸ß‡û¾øâ‹/¾øâ‹/¾øò_–³NÕÙ¶mÀzÀú®ëzn~MÓ3/¾øâ‹/¾øâ‹/¾ü­rv±û–edWP{Ñ‹ ¼ûpýÞ½{ßÿ}¸~Á‚ªªúÁ<¾øâ‹/¾øâ‹/¾øò÷ÉY{÷¬{¼ûúÇÑ4 Ö< ^8˜à>ÜbÉ’%¾wß_|ñÅ_|ñÅ_þVùëUuá¿þ?ü­Áe—\r  q¿Ì–/¾øâ‹/¾øâ‹/¾ü—å/Âý 6x°~ïÞ½'N\»ví7ÞØ£Gð>Ü÷Å_|ñÅ_|ñÅ—ÿ²üE¸ø~:Ž£ªêž={>üðÃ6mÚhWålà~VVÀ}/ÏšHÙîûâ‹/¾øâ‹/¾øâË)ÅC˧÷` ð¸øç† ÄÛ¶í1l”×õb÷á/‡zï½÷௪îi¥êzIÂ)Ú0,à6†axÝ:ÇOÅ_|ñÅ_|ñÅ_þ!pÀ·‡ÑO"€±C¡çž‡¯|ß¿?@ôÍ›7nÐû¥ÖC³999Ë–-ƒ+?øàƒb¸#Ø ©á~ÕªU½&àf)»éº$îûâ‹/¾øâ‹/¾øâK1Â…v¤Ò^XîƒAî?xð À÷µk×þbá#‡{ŸnÛ¶-==}Ñ¢Eààþºuëàç‰p~©P¡‚ëº^þoÊCøHÓ4€û§<’ðÅ_|ñÅ_|ñÅ—ÿ³ÂóŲ¬Sz÷{Àö|öðsåÊ•ƒ Ô]øšÂпÀ‘Ï„\wÝuÆ kÁ;OH$›7oNÂ}@ù¥K—ŽD"ð'¸ Ðï6)½÷‘-T\:¯/¾øâ‹/¾øâ‹/¾ü딿=åʼn¶p±ëºÖ½ Â×üRðw´†OOOïyø£%dæÌ™÷ ÃÈÎÎÞ³gÏ)O|ñÅ_|ñÅ_|ñÅ—ÿ}ÜÃüùóÉèÑ£èïÚµË; øowÌ_|ñÅ_|ñÅ_|ù«â*ÈÿÿkÅ endstream endobj 8 0 obj 179765 endobj 2 0 obj <>endobj xref 0 10 0000000000 65535 f 0000000383 00000 n 0000180438 00000 n 0000000324 00000 n 0000000187 00000 n 0000000015 00000 n 0000000140 00000 n 0000000431 00000 n 0000180416 00000 n 0000000158 00000 n trailer << /Size 10 /Root 1 0 R /Info 2 0 R >> startxref 180493 %%EOF ess-17.11/doc/ess-intro-graphs.bib0000644005071500004540000003216113202324173013673 00000000000000 @InCollection{claer:1997, author = {Matthias Schwab and Martin Karrenbach and Jon Claerbout}, title = {Making Scientific Computitations Reproducible}, booktitle = {Stanford Exploration Porject, Report 92}, OPTcrossref = {}, OPTkey = {}, pages = {317--335}, OPTpublisher = {}, year = {1997}, OPTeditor = {}, volume = {92}, OPTnumber = {}, OPTseries = {}, OPTtype = {}, OPTchapter = {}, OPTaddress = {}, OPTedition = {}, month = {November 12}, OPTnote = {}, OPTannote = {} } @InProceedings{heiberger:dsc:2001, author = {Richard M. Heiberger}, title = {Emacs {S}peaks {S}tatistics: One Interface --- Many Programs}, booktitle = {Proceedings of the 2nd International Workshop on Distributed Statistical Computing (DSC 2001)}, OPTcrossref = {}, OPTkey = {}, OPTpages = {}, year = {2001}, editor = {Kurt Hornik and Friedrich Leisch}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTmonth = {}, organization = {Technische Universit{\"a}t Wien, Vienna, Austria}, OPTpublisher = {}, note = {\url{http://www.ci.tuwien.ac.at/Conferences/DSC.html}, ISSN 1609-395X}, OPTannote = {} } @InProceedings{rossini:dsc:2001, author = {A.J. Rossini}, title = {Literate Statistical Practice}, booktitle = {Proceedings of the 2nd International Workshop on Distributed Statistical Computing (DSC 2001)}, OPTcrossref = {}, OPTkey = {}, OPTpages = {}, year = {2001}, editor = {Kurt Hornik and Friedrich Leisch}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTmonth = {}, organization = {Technische Universit{\"a}t Wien, Vienna, Austria}, OPTpublisher = {}, note = {\url{http://www.ci.tuwien.ac.at/Conferences/DSC.html}, ISSN 1609-395X}, OPTannote = {} } @article{vell:prat:1989, Author = {Velleman, Paul F. and Pratt, Paul}, Title = {A Graphical Interface for Data Analysis}, Year = 1989, Journal = {Journal of Statistical Computation and Simulation}, Volume = 32, Pages = {223--228}, Keywords = {Exploratory data analysis} } %% --- WinBUGS --- @TechReport{SpieThomBest:1999, author = {D.J. Spiegelhalter and A. Thomas and N.G. Best}, title = {WinBUGS Version 1.2 User Manual}, institution = {MRC Biostatistics Unit}, year = {1999}, OPTkey = {}, OPTtype = {}, OPTnumber = {}, OPTaddress = {}, OPTmonth = {}, OPTnote = {}, annote = {WinBUGS cite.} } %%--- Emacs books : -------- @Book{RMS:2000, author = {Richard M. Stallman}, ALTeditor = {}, title = {GNU Emacs Manual, for Version 20.7}, publisher = {Free Software Foundation}, year = {2000}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, edition = {13th}, OPTmonth = {}, OPTnote = {}, annote = {ISBN: 1-882114-07-8} } %%--- Lisp books : -------- @Book{RChassell1999, author = {Robert Chassell}, ALTeditor = {}, title = {Programming in Emacs Lisp: An Introduction}, publisher = {Free Software Foundation, \url{ftp://alpha.gnu.org/gnu/emacs-lisp-intro-2.00.tar.gz}}, year = {1999}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, edition = {2nd}, OPTmonth = {}, OPTnote = {}, annote = {ISBN: 1-882114-42-6} } @Book{PGraham:1996, author = {Paul Graham}, ALTeditor = {}, title = {ANSI Common Lisp}, publisher = {Prentice Hall}, year = {1996}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, annote = {Great Lisp book for learning} } %%--- The 3 S books : -------- @Book{BecRCW88, author = {Richard A. Becker and John M. Chambers and Allan R. Wilks}, title = {The S Language; A Programming Environment for Data Analysis and Graphics}, publisher = {Wadsworth \& Brooks/Cole}, address = {Pacific Grove}, year = 1988 } @Book{ChaJH92, author = {John M. Chambers and Trevor J. Hastie}, title = {Statistical Models in S}, publisher = {Wadsworth \& Brooks/Cole}, year = 1992 } @Book{ChaJ98, author = {John M. Chambers}, title = {Programming with Data; A Guide to the S Language}, publisher = {Springer-Verlag, New York}, year = 1998 } %%--------- Other books : ---------------- @book{Tier90, author = "Tierney, Luke", title = "Lisp-Stat: An Object-Oriented Environment for Statistical Computing and Dynamic Graphics", publisher = "John Wiley \& Sons", year = 1990, address = "New York" } @Book{Cook:Weisberg:1999, author = {R. Dennis Cook and Sanford Weisberg}, ALTeditor = {}, title = {Applied Regression Including Computing and Graphics}, publisher = {John Wiley \& Sons}, year = {1999}, OPTkey = {}, OPTvolume = {}, OPTnumber = {}, OPTseries = {}, OPTaddress = {}, OPTedition = {1}, month = {August}, OPTnote = {}, OPTannote = {ISBN 0-471-31711-X} } %% Literate Programming and Tools @Book{Knuth:1992, author = {Donald E. Knuth}, ALTeditor = {}, title = {Literate Programming}, publisher = {Center for the Study of Language and Information}, year = {1992}, OPTkey = {}, OPTvolume = {}, number = {27}, series = {CSLI Lecture Notes}, OPTaddress = {}, OPTedition = {}, OPTmonth = {}, OPTnote = {}, OPTannote = {Primary citation for literate programming} } @Article{NRamsey:1994, author = {Norman Ramsey}, title = {Literate programming simplified}, journal = {IEEE Software}, year = {1994}, OPTkey = {}, volume = {11}, number = {5}, pages = {97--105}, month = {September}, OPTnote = {}, OPTannote = {Primary Noweb citation} } %%-------------- Web Citations ------------- %%-------------- Articles, Reports --------------- @article{youn:lubi:1995, Author = {Young, Forrest W. and Lubinsky, David J.}, Title = {Guiding Data Analysts With Visual Statistical Strategies (Disc: P251--260)}, Year = 1995, Journal = {Journal of Computational and Graphical Statistics}, Volume = 4, Pages = {229--250}, Keywords = {Graphics; Software; [Artificial intelligence]; [Cognitive science]; [Hypertext]; [Lisp-Stat]; [Program visualization]; [Statistical system design]; [ViSta]; [Visual programming]} } @inproceedings{youn:fald:mcfa:1992, Author = {Young, Forrest W. and Faldowski, Richard A. and McFarlane, Mary M.}, Title = {{ViSta}: {A} Visual Statistics Research and Development Testbed}, Year = 1992, Booktitle = {Computing Science and Statistics. Proceedings of the 24rd Symposium on the Interface}, Publisher = {Interface Foundation of North America (Fairfax Station, VA)}, Pages = {224--233}, Keywords = {Graphics; Software} } @article{ihak:gent:1996, Author = {Ihaka, Ross and Gentleman, Robert}, Title = {R: {A} Language for Data Analysis and Graphics}, Year = 1996, Journal = {Journal of Computational and Graphical Statistics}, Volume = 5, Pages = {299--314}, Keywords = {Computer language; Statistical computing} } @TechReport{ross:lunt:2001, author = {Rossini, A.J. and Lunt, Mark}, title = {Literate Statistical Analysis}, institution = {University of Washington, Biostatistics}, year = 2001 } %% --- Omegahat @Article{DTLang:2000, author = {Duncan {Temple Lang}}, title = {The Omegahat Environment: New Possibilities for Statistical Computing}, journal = {Journal of Computational and Graphical Statistics}, year = {2000}, OPTkey = {}, volume = {9}, number = {3}, OPTpages = {}, month = {September}, OPTnote = {}, annote = {primary citation for Omegahat} } %% --- Stata %% StataCorp. 1999. Stata Statistical Software: Release 6.0. College %% Station, TX: Stata Corporation. @Misc{Stata:6.0, OPTkey = {}, author = {StataCorp}, title = {Stata Statistical Software: Release 6.0}, OPThowpublished = {}, OPTmonth = {}, year = {1999}, note = {College Station, TX: Stata Corporation}, OPTannote = {primary citation for Stata} } @Misc{Stata:7.0, OPTkey = {}, author = {StataCorp}, title = {Stata Statistical Software: Release 7.0}, OPThowpublished = {}, OPTmonth = {}, year = {2000}, note = {College Station, TX: Stata Corporation}, OPTannote = {primary citation for Stata} } %% --- SAS @Misc{SAS:8, OPTkey = {}, author = {{SAS Institute Inc.}}, title = {\textsc{SAS}$^{\mbox{\scriptsize{\textregistered}}}$ Software Version 8}, OPThowpublished = {}, OPTmonth = {}, year = {1999}, note = {Cary, NC, USA: SAS Institute Inc.}, OPTannote = {primary citation for SAS} } %% --- BUGS --- @Book{BUGS, author = {{MRC Biostatistics Unit}}, title = {Bayesian Inference Using {G}ibbs Sampling (BUGS)}, year = {1996--2001}, publisher = {\url{http://www.mrc-bsu.cam.ac.uk/bugs/welcome.shtml}}, annote = {primary cite for BUGS} } %% --- XEmacs --- @Book{XEmacs, author = {{The XEmacs Project}}, title = {XEmacs 21}, year = {2001}, publisher = {\url{http://www.xemacs.org}}, annote = {primary cite for XEmacs} } %% --- GNU Emacs --- @Book{GNU-Emacs, author = {{Free Software Foundation}}, title = {Emacs 21}, year = {2001}, publisher = {\url{http://www.gnu.org/software/emacs/emacs.html}}, annote = {primary cite for GNU Emacs} } %% --- S-PLUS @Misc{Splus, OPTkey = {}, author = {{Insightful Corp.}}, title = {S-{P}LUS Statistical Software: Release 6.0}, OPThowpublished = {}, OPTmonth = {}, year = {2001}, note = {Seattle, WA: MathSoft}, OPTannote = {primary citation for S-PLUS} } %% --- R @Misc{R, author = {{R Development Core Team}}, title = {R 1.6.0}, month = {October}, year = 2002, url = {http://www.R-project.org/}, } %% --- ESS @Book{ESS, author = {A.J. Rossini and Martin M{\"a}chler and Kurt Hornik and Richard M. Heiberger and Rodney A. Sparapani}, title = {{ESS (Emacs Speaks Statistics)}}, year = {2002}, publisher = {\url{http://www.analytics.washington.edu/downloads/ess/}}, note = {This is the url for downloading the current release of ESS.} } @Misc{SASMODE, OPTkey = {}, author = {Tom Cook}, title = {{SAS} mode for {Emacs}}, OPThowpublished = {}, OPTmonth = {}, year = {1995}, note = {\url{ftp://ftp.biostat.wisc.edu/pub/cook/sas-mode/sas.tar.gz}}, OPTannote = {primary citation for SAS mode} } @TechReport{RMHHS:2001, author = {A.J. Rossini and Martin M{\"a}chler and Kurt Hornik and Richard M. Heiberger and Rodney A. Sparapani}, title = {Emacs {S}peaks {S}tatistics: A Universal Interface for Statistical Analysis}, institution = {University of Washington Biostatistics}, year = {2001}, OPTkey = {}, OPTtype = {}, number = {173}, OPTaddress = {}, OPTmonth = {}, note = {\url{http://www.bepress.com/cgi/viewcontent.cgi?article=1002&context=uwbiostat}}, OPTannote = {Technical report describing ESS} } @Comment @Misc{RMHHS:2001, @Comment OPTkey = {}, @Comment author = {A.J. Rossini and Martin M{\"a}chler and Kurt @Comment Hornik and Richard M. Heiberger and Rodney A. Sparapani}, @Comment title = {Emacs {S}peaks {S}tatistics: A Universal Interface for @Comment Statistical Analysis}, @Comment howpublished = {University of Washington Biostatistics Technical Report \#164}, @Comment OPTmonth = {}, @Comment year = {2001}, @Comment note = {\url{http://software.biostat.washington.edu/statsoft/ess/ess-techrep.pdf}}, @Comment OPTannote = {Technical report describing ESS} @Comment } @Misc{heiberger:philasugi:2001, OPTkey = {}, author = {Richard M. Heiberger}, title = {{ESS (Emacs Speaks Statistics)} as a User Interface to {SAS}}, OPThowpublished = {}, OPTmonth = {}, year = {2001}, howpublished = {\url{http://philasug.org/Heiberger/ESS.htm}}, note = {Presentation to Philadelphia SAS User's Group, November 12, 2001} } ess-17.11/doc/ess-intro-graphs.pdf0000644005071500004540000201721113202324173013711 00000000000000%PDF-1.4 5 0 obj << /S /GoTo /D (section.1) >> endobj 8 0 obj (Introduction) endobj 9 0 obj << /S /GoTo /D (section.2) >> endobj 12 0 obj (Emacs) endobj 13 0 obj << /S /GoTo /D (section.3) >> endobj 16 0 obj (ESS extends Emacs) endobj 17 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 20 0 obj (Features and capabilities) endobj 21 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 24 0 obj (Interactive Processing.) endobj 25 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 28 0 obj (Batch File Processing.) endobj 29 0 obj << /S /GoTo /D (section.4) >> endobj 32 0 obj (History of ESS) endobj 33 0 obj << /S /GoTo /D (section.5) >> endobj 36 0 obj (Conclusion) endobj 37 0 obj << /S /GoTo /D (section.7.1) >> endobj 40 0 obj (References) endobj 41 0 obj << /S /GoTo /D (section.A) >> endobj 44 0 obj (Appendix: ESS Resources on the Internet) endobj 45 0 obj << /S /GoTo /D [46 0 R /Fit ] >> endobj 48 0 obj << /Length 2470 /Filter /FlateDecode >> stream xÚÛvã¸í=_áGùœ˜#^$QÓ—ÉÌÎvçv6'žîî#Ó1Yr)z3Ù¯/@PŽ{Û¾ˆ$ nôöæâÕRÏxÅ/f7ë—Š)QÍÊF)g7«_²÷[Ó ó…(òl¹³æaœÜܸ÷k^äï—Køk‚\ѰݷÁ-v­ ëÞo/ç¿Ý|œ-dÉÊ¢†Q0]•‘OÂ3̓¹·pTêÌuÁ¶­»·] €íæ*Ï~w¾ï¶ ¥É0ŠdZ˜Î´Oƒ'Ý”³ºˆ7UŠu L—$ÀûÈHä¯ý0¸ÎáBÕÙW×lŒ_ÑÖ—„ò“uwÖϹÎî­ûUgç¼Èž’ب6ãÍÎA¼{%™äz¶9«œ¿\—D$U2-Ä,g9h Q~…=R]ÎÊRá0n™fÓ¢ ²¨Eö ùï}HRö¾st}0kÅêŠÌ,Y%Ê™b”Éç¹<£¥¯ËµŠ†REÜL°`bÉóLÀ±W<%ñãÕk©^çê@J±Zsb)XQèYI|µsQ€×w‰g¢(èœâ3Íj´ HPV,¯A]`°\Ð…¯î†àM\ž±yÅ+˜h&*B×owû5ÄU¶óý½7Û­ëî î£gIëí®÷Á wá²Ó}gÇe¿&ìaâþ÷v°Æ7Z™nEh+Ì"_Ÿ(ržÝlÈ-ARÉTC GÆ\‹ ®ŽÂáØÙƃñèYŠ'—ø~ˆ÷ÀéÐï6äýÁ®è( à\Š®DÔ¤ñÑŽìFH¢Ï³GïÂC³B¿¹­Ããìf¼}>ƒÊîB :Ÿ*@Öõ!­èIZÑ/ÒŠ>J+û¡‹ÿîVv Óxœ-âꡪÁ†fÏm ±ý:Þ ±„gã…3½¹PØŠÌè;úQ.“‰4ÕÜMU<iïˆÉ@°G6Dbyµ¼$Ørqýùv\|Mcâ ³ØûÄlêv°~6h”®[â¡Ä§Ö¸íÜw ®r}qïQvÀ¯ÊìÛ\¢NV=æãHؾÚíZKÓ/¦ÁI•õ;ë y‡§!Ø-š·ÔuR`Å„øô¾t “÷hò‚O˜´²+^8TÊvѨZ¢)š¹'ˆ!ÉnLÁY[ö~D =>¬Ù¶®³ ¾I“àr­+¬‚ÑO¦…€Nº‹ˆ‚¢UàjàÔ$¤xxê‚ùNó’ƒ ¥”âIŠçW-®ZÓÝï㋉ø.4ÊÒû‡„”|.^Ñä8Žð,EIH©8º^í§çÐ0hóÓ›Lt­Jpxp¯8/&^Ê3 ÿƒvo@¦ 1>‚*ùNbAªwñ½@-aR‚*³;PC8%ÿ‰8Í>Y1žèÄæ4†p=MŠšøÔéðˆÅŠ#:RÓ"(  ­£ÐÎÓt4 Fƒâu¶ì·–vÌQ‰ÚDX5&Ñ»³DßïÀ$ CðaFÄwÀäœ%eÖË32mKá}xû’óÉ1¯!¨'ÈèA]9o›Ð>ÑÞ|c—V‰ˆc6½¦« oïÒAoƒqé5ŠŠ8ò¼ÉatÉñ)–YÛ÷‹s÷êV‹µµ-£JâÛr¹¥‚|^­T¢nèö´ „É$TpIA_ðcl— *×aŠ ÌS¼|`‹ü¸º@€]#(¯Dãl×Pj* ƒ±x©¡x‘±xP-åP»ÕY¯ö OSM™ä\ X^ke:B^eW)!@ÒÇ×$à b$ >.BŠl‰å–æX—¢ˆÙÑÆ"~¯Â£@u2•oŸ!Ç‹ì¾Î\p±ö"ÜÄÿkdóDŸOÈœÉR¤3"ýe¤}†¾`uÍîò„TÉrY¥Ý›9ð¼šË›3t (-åDNÅÏãX§gèÅÙ Q(ëË\_þ-šîö¯Ñy™ý¼‹©,·ì÷¾±©%šUJ`ÍÍêÔ{-'ÏÊ%9Ô;L«‡vŠ`·ð>ñÌÓâôæˆnvñþæÕ•Ïø¬®XUj°'Tªœ5Û‹_üò[>[]ä³`¨µaž3^׳í/Á˜Z¤u{±¼øÛÖ"[L¨½ÅžRèYÚÓ¤>@MÂuY®äi·1êY¥¶êw9éÇä´“ÐeŇÏ7zt|F(U û~ ‰1f#<Ó˜RL~°Ð“ê!!–õëúççë°ªÀ¢éùõñƒ OÇgb¾1Â-ô‰e0˜|ìÝÈ#ЏHE?ÜVUqä5µŸcž«³/v{Gé¸ÎL‚‘ä"Ï~ôvE Ÿöðô¹nˆ\ÒÁsÆãs´z)öͶy<ïÿ9¼Z?[IâðÏe¥>²dUÿù¨“_> 2çâ°søãbR ÑŒŽŠ/o¬5Ðtɯ$Ñ5øÊ/rSÈ€ë0ì_¦â“ÃëXª?s1u‘$ ѵéTÜÂ-ÿëu* uhùg·)Ï܆žÀé­ëZ0:tæÀ©÷.qÛ“íÁ%±È‹#۩䊛MçlªtÎêêSêÿ©–øf“Z«¿Ï˸ìL\í‡à9qT (Êc?ýþÄÈ•Þx( K‰mÀ¿ ®XïïÏTˆ+¸‚J§fZSÃÇ2í?µOÙendstream endobj 46 0 obj << /Type /Page /Contents 48 0 R /Resources 47 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 61 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R ] >> endobj 61 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [362.023 187.81 512.26 196.465] /Subtype/Link/A<> >> endobj 64 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [479.009 173.115 514.476 182.269] /Subtype/Link/A<> >> endobj 65 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 158.918 165.714 168.072] /Subtype/Link/A<> >> endobj 66 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [285.516 144.722 397.496 153.875] /Subtype/Link/A<> >> endobj 67 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [352.459 131.127 512.26 139.678] /Subtype/Link/A<> >> endobj 68 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [274.623 99.598 430.14 111.285] /Subtype/Link/A<> >> endobj 49 0 obj << /D [46 0 R /XYZ 97.768 692.105 null] >> endobj 50 0 obj << /D [46 0 R /XYZ 97.768 667.198 null] >> endobj 47 0 obj << /Font << /F38 52 0 R /F27 55 0 R /F41 57 0 R /F28 60 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 2409 /Filter /FlateDecode >> stream xÚ­XK“Û¸¾ûWÌ-TÕˆK|fO¶c;›ò캬q¼©8ˆÂŒ¡3;ÿ>ý"EŽd'‡\H Ñht7¯ñæöÕOï“ø*NBdW·wWeæYq•¥y¨tzu»ûg¯ÖqEÁ/Mß®â"ð»¡êoVÿºýÛOïuqU†e¦qrtµVE¨’„æÝø®_­uQðÓ»®w•©™ÖÚΚ¶Úc/ H\©4xt½³Ýõj(M †Ú´õ3OÚ‘ÃÓ˜ú¹sHhvL®üá04°ê(’\³J¢àq¥¢À׫8 ,ÏêüÁò´;ßÐ"4"ÎÃR+2ÂßÁp¦Qêqè]s®ÖYR·{œ—)°-³ ÝØr ãànG`žjÇÿ~?t<ÿXÃànœ3ŽŽÂ-øœ<ÔÖ×"…•R£lW»Þ n<Úõ'WÏ ÒdPoº‡ŒÐy|Ý;© yÄýhzrSpüW{ÓÂö ]Ø%?cã¾5Ç=ï'v]ƒœÍGSñOÆ`ã@ñ€­G× ã<ôŸo`é媆äÏs#ȹ£gaUšGÛîÍ<Žë¦IHSXµµL¨p;œ„ fK') ÿ½ÇH|bÖ¨§}&^T|ÖËÞwœà`Cÿª,x̓¬è¶É´‡¢ð“­ëõã†fgÛ®÷£"…ý´xŒRÅÛžj^‚I[»7ÕηV¦áƱõéng™žß{Ëã÷«40®éxÐÉ,{‡Ö‹"U9ÛT(áy•¥Æ}Œqïd£9R¬ÓܾŬ`eèÝÁT݅ô9Zó@ÓÁfŒRé‹ÒèÝf¿øDøì»Î5Ž ¶ç¿©Ãkn)Ðöç%áM—ù»þ‰¼Î›ÚVæ^:O·{¡Ÿœ$ŠˆL#Ê©^†“zaçh*åðlëlÿÌ jøÏO&H+°àžΆÿvÓ¡I£™BÑ)‰˜Úôxúà\£RÍKÈÁsÍÀ³Àš(røcPÿ…i@Óè¿Ô6Q£EB¿§d,CK7’_Kstwò"cÉz[ß￳âbÑ´õÛ ¼ñæ ¬^ûã´N%Uacgè©|mP@G줟L^Žd`†ø­ÊßÐr¨+¶Xk¢µN’oRžÖ¥0êAÒ¢–X˜«qá˜TO¬R9^JÜ©Œ7lº.å*CNÌÈkzr74'‡¢ù5ÓÆ]Ä)‰  WCÛ‚ë𪥩Ãñè[ÊoÐãx„å…yJiÂMÿÚ4÷ÅÈùéÀ횪v¸eAÒà‡#olõ€B)–%Ÿv“Ó­¸,ŠŸ¹ùvo[‹XÈr˜óW¶Ú‰½T/ØO#…ä ­STöcMßO¨½sÄ4:IÃ2-À´á# ¾`èÀ¼‘7 Ó¼Dæ¸u©®tX(ÆNŸ™'ÖWÈKg­Âúë(T±ø%NϱT‡ ²é0‹ÓÉ¿4»ß÷w_íp‹Ãxºpó[ßÑe &ÈX,MÆAúgþ‘Ľy0܆?`؃iD 8,ƒúy1ù/ ¼¥[·+¸Â­9œ´Q¨ ÈIŠBüþš¾|© pcQ’3³:S±3èM7}éÍÍ븱LÂX©…ÁÕ½ëÊRQÝŠ1Êѥء’l¦û3E1dnW:+ÁHi)§T˜eÂMjÁ©5¸×¼4ø-š­÷;yìãÙªe&é(ç Ô }?]ôGYÆÂ{n@Fú’þçrò0Nã™îÀ èȶ%ä €Ç"¹Ù£1SÙQz 1ÿÑ[ˆnßt<øº­xžõþ·Ji¨0òd‘0%ÄÁ×U纭e¤sÍäqø'Ü*øû*˜ºÈÆ’BÉøÇ*†4äÎQ±$¢xJD$nŒc«à ¦­/6<ˆ"n>¿åÎç»9ÎÒ—Æõ'9Ù7Hªã)y¨ßyöüí@N"ж7‚–ÙãxÈGFòqðRð5Cp?–T ‚ˆÈ°•9“ÿwVÐ=€/M`'è±ã h' ¿¼°óh€‘/þs[ÈŒ…k•tÄÈ$¾sÑøvëÚ5Bô2D 45Þ„iD€¶QÖÝÈ è·o¹šý>vâ ÂÛ2Aƒ[Ls‘¶ÏLÄSµnË ‹7`Ì4q0ØëýX è8?MAèÆA½+â’ ÛqPD4!XZ†L$µ%¶X ®Æ*$]øU¿¾€ øü©( 5–© ‹(“F^½»}õ—»l»endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R ] >> endobj 74 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [195.661 536.174 249.469 547.118] /Subtype /Link /A << /S /GoTo /D (cite.ESS) >> >> endobj 75 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [252.489 536.174 274.406 547.118] /Subtype /Link /A << /S /GoTo /D (cite.ESS) >> >> endobj 76 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [152.528 446.511 205.456 458.213] /Subtype /Link /A << /S /GoTo /D (cite.BecRCW88) >> >> endobj 77 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [208.926 446.511 230.844 458.213] /Subtype /Link /A << /S /GoTo /D (cite.BecRCW88) >> >> endobj 78 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [234.593 446.511 322.767 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJH92) >> >> endobj 79 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [326.238 446.511 348.155 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJH92) >> >> endobj 80 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [351.904 446.511 394.295 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJ98) >> >> endobj 81 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [397.765 446.511 419.683 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJ98) >> >> endobj 85 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [473.739 446.511 514.476 458.213] /Subtype /Link /A << /S /GoTo /D (cite.Splus) >> >> endobj 86 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [96.772 428.578 121.18 440.28] /Subtype /Link /A << /S /GoTo /D (cite.Splus) >> >> endobj 87 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [125.584 428.578 147.502 440.28] /Subtype /Link /A << /S /GoTo /D (cite.Splus) >> >> endobj 88 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [187.734 428.578 277.765 440.28] /Subtype /Link /A << /S /GoTo /D (cite.ihak:gent:1996) >> >> endobj 89 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [282.168 428.578 304.086 440.28] /Subtype /Link /A << /S /GoTo /D (cite.ihak:gent:1996) >> >> endobj 90 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [308.768 428.578 423.755 440.28] /Subtype /Link /A << /S /GoTo /D (cite.R) >> >> endobj 91 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [428.158 428.578 450.076 440.28] /Subtype /Link /A << /S /GoTo /D (cite.R) >> >> endobj 92 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [494.212 428.578 514.476 440.28] /Subtype /Link /A << /S /GoTo /D (cite.SAS:8) >> >> endobj 93 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [96.772 410.645 148.692 421.589] /Subtype /Link /A << /S /GoTo /D (cite.SAS:8) >> >> endobj 94 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [151.249 410.645 173.166 421.589] /Subtype /Link /A << /S /GoTo /D (cite.SAS:8) >> >> endobj 95 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [211.727 410.645 253.57 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Stata:7.0) >> >> endobj 96 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [256.126 410.645 278.044 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Stata:7.0) >> >> endobj 97 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [338.363 410.645 370.841 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Tier90) >> >> endobj 98 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [373.397 410.645 395.315 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Tier90) >> >> endobj 99 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [490.894 410.645 514.476 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Cook:Weisberg:1999) >> >> endobj 100 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [96.772 392.712 153.252 403.656] /Subtype /Link /A << /S /GoTo /D (cite.Cook:Weisberg:1999) >> >> endobj 101 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [156.652 392.712 178.57 403.656] /Subtype /Link /A << /S /GoTo /D (cite.Cook:Weisberg:1999) >> >> endobj 102 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [228.399 392.712 279.093 403.656] /Subtype /Link /A << /S /GoTo /D (cite.youn:fald:mcfa:1992) >> >> endobj 103 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [282.493 392.712 304.411 403.656] /Subtype /Link /A << /S /GoTo /D (cite.youn:fald:mcfa:1992) >> >> endobj 104 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [344.301 392.712 440.672 403.656] /Subtype /Link /A << /S /GoTo /D (cite.BUGS) >> >> endobj 105 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [444.072 392.712 490.896 403.656] /Subtype /Link /A << /S /GoTo /D (cite.BUGS) >> >> endobj 106 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [143.531 374.78 198.43 385.723] /Subtype /Link /A << /S /GoTo /D (cite.DTLang:2000) >> >> endobj 107 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [201.623 374.78 223.541 385.723] /Subtype /Link /A << /S /GoTo /D (cite.DTLang:2000) >> >> endobj 108 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [152.907 178.416 258.386 189.36] /Subtype /Link /A << /S /GoTo /D (cite.GNU-Emacs) >> >> endobj 109 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [261.223 178.416 283.141 189.36] /Subtype /Link /A << /S /GoTo /D (cite.GNU-Emacs) >> >> endobj 110 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [342.94 178.416 427.079 189.36] /Subtype /Link /A << /S /GoTo /D (cite.XEmacs) >> >> endobj 111 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [429.916 178.416 451.834 189.36] /Subtype /Link /A << /S /GoTo /D (cite.XEmacs) >> >> endobj 73 0 obj << /D [71 0 R /XYZ 97.768 692.105 null] >> endobj 6 0 obj << /D [71 0 R /XYZ 97.768 667.198 null] >> endobj 10 0 obj << /D [71 0 R /XYZ 97.768 288.354 null] >> endobj 70 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F13 84 0 R >> /ProcSet [ /PDF /Text ] >> endobj 130 0 obj << /Length 2454 /Filter /FlateDecode >> stream xÚ…XMsô¶ ¾¿¿ÂG팽‘DQ»šžšL’I[O:S·éLÓWâzK¢*Qvœ__|QÒÚÛô$$A€€üúéËWßÙ]µ¯Ju÷t¾«ûCy¼+õaŸ+}÷Ôü+ùó.׉}?y36»‡¼P‰é…xôód™ü¡æ°ßýûéO_}§Ž«ÀL¥û¬ºKIÔOÛóôo;SOL¾í²41òãG÷ìzÓ¶ïø_$o£ », ¶¿G†Nê‹Mì¸ËÓäád&+º«Ã•QªE³p±¨Ö݃¨òö•ÊI¡ÎOgÓ¼¢¦¯Yà1él¸x¡ý™¿µïÀLPöçeum§i¿{P`Ä7¾ë< ö<¶ØHë:85ù‹ºÁfâ~Áó÷ÏÃî2¼3c²ÿ™-è5Ý“©X È‚z´&¸þ48¶kÅ_È.~ õ&þ=û‘‰Ú÷»"M^q¾íî–”U–üÈ<™‡'Ä1i X‡'†?­MƒGž)Ò*š‹ .Fˆ“E‡ãlRê×`ñxÛ0MÆiEŸM{Ípqµia’>$o®o<úèÍÖô>Û¡N ƒ:É4×" àûÏ,[‚Rïõ¡¢ <ö¥*îÔ¾Ì8ÈŸÀî²Þyu:_ç£r„ð‹H¦ Ãa`bÇ]Ï_#߸0mÑAydàÐhoày¦ÂÅa¯ÎÑ–UÄE ÐS‘iá8hYûÎ$ÛT-hW ˜¡˜ €£––¾ïTë`; ïE [Á§"šÆqÝíF¼„\¸]×¼…ôK¯ Å~ ¤¬EŽáÏÉÔ/ó° VAé EaÜè (#ˆôÁÖ]Ë͇f0âkF{C­;œé†u× +«­ª*)DË·©wáÆ¶ üÅÝýfySž¿*âp{)óàÚçæŽG°fR¹ƒÆÓ¢î8‘{‘vÝUV|f8}ø;þBrÓv©Äv'Ûˆ‚\°NrÑIü‡ !«ÆxBÜä B¿nAÂÖõ²‚DÁÑ#,BÂB{ñj› 6ƒ¬‹mÛûi…ýe(¬["ú¿ì² Ë’‹½0N öçP)N8`Tg™äê £Ò°¥ £BK|ð«àK­œ€`pSÆx„44í2ƒã³[‚yYŠu*·ªŠçÑwÌ”ú˜]wL8âç°Ì§W¤±À. ïž<•Òœ‹ŽAà# “׸¼gŸÊû§Ý óW˜%Îk]ÿl¤‹‹ PMeÕ Òù0@§ S‰1ìÐ}÷Ì”„BRê[J5¿ RêØQcweÍX_"–·öÃ>+Εd4\Ø1ÓþO»õh~!ôŒŽÉÁøG×GÞ£o!W­UvÜgúCk… j3˜“k)ÍYš\ÓÒå Ï÷w"(‡‘Ö šàÏZ ®ÜÆõËàöjÅžÛ(Qgë¬óÜ×Ë%Rm^‚øßÉwyvÈ“¿ÀM‚™?§:µ-ü‘­¬o.ô€1Q"7«ª çÐ}W­×\Ř_ògZê’‘Ç·l…‚¼ÍžßæbºUv‰²÷7"1j­ùHvt‘Á}–‚ XÁ(½…|í;OCo( (¸ JšT×EÉŽQJîô}´N·à‰]Î ¤ÝáJÚ›óûW’ßÀãg6u}Å%¤&q4ðhû*]ŽY+*ቅøîÁ,®7)lÔPgVäë“űú€0o)ÍõM”¸à3`'5~s+ZrS]=rS¶Üï½ÜPlVì«¢¸’Ó é*½ÞÕÝSSÐá'Þ¼> ,ò{éæ„ Ê<¼`LQ£Ølªõyèë#0¶o:>ê"±>?pn~¶b“ÅJ—€Ú‹.a5à?˜éEæHRü0‡œ¥çZŽ1VUko‚Cq­ðã6§Q^Ù–IÒ{—åàGnRT M ¾…Pï ›ûþV_ÜE e§0%M¢bx‡ëàÇvÇÎqáÏófF\þ¡u£Ù!>¤/ϼ9½½ÎÇÔ×(ÁÙ|e/òº18†¸#w¤ÜÙ´­{æ‘ßk™KÈii¼ËtÛ]”KwQfì¹’º n-ä?v{.ÁQyX•/S9©2]ý^nÓ¨ŒÍª"w  Á¶Œ^ªø®TRÍASòTïU©¡ª}z${|ùöéË%gÑendstream endobj 129 0 obj << /Type /Page /Contents 130 0 R /Resources 128 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 135 0 R 136 0 R 137 0 R 138 0 R ] >> endobj 135 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [265.152 230.421 300.907 241.365] /Subtype /Link /A << /S /GoTo /D (cite.RChassell1999) >> >> endobj 136 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [305.118 230.421 327.036 241.365] /Subtype /Link /A << /S /GoTo /D (cite.RChassell1999) >> >> endobj 137 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [448.456 230.421 482.538 241.365] /Subtype /Link /A << /S /GoTo /D (cite.PGraham:1996) >> >> endobj 138 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [486.75 230.421 508.668 241.365] /Subtype /Link /A << /S /GoTo /D (cite.PGraham:1996) >> >> endobj 131 0 obj << /D [129 0 R /XYZ 97.768 692.105 null] >> endobj 132 0 obj << /D [129 0 R /XYZ 97.768 667.198 null] >> endobj 133 0 obj << /D [129 0 R /XYZ 97.768 479.113 null] >> endobj 134 0 obj << /D [129 0 R /XYZ 97.768 267.283 null] >> endobj 128 0 obj << /Font << /F41 57 0 R /F38 52 0 R >> /ProcSet [ /PDF /Text ] >> endobj 143 0 obj << /Length 2684 /Filter /FlateDecode >> stream xÚYK㸾ϯè[d ­Õû=M3H‚LéF°Àfl™¶¹-KŽ$wOç×ç«eyì™ÍÅ"‹d±X¬ÇWôŸŸ>üô9­îê°.Ò»§í]]†eQÝy&i~÷´ù5˜övµNÒ(øw%-·ã`z?*µäkWq|l7º¾»'Z¸Ð†«ueg&ÍÞ ¦™ì0JßLòÕ q`»2Þ^Œ\îß™ƒõÞŶoÛ~•äÁ›²–©G;¸^y¶îe“¬¿=ýí§ÏY~Wáà<-‹0ɲ»HÎüu’)KÝÄEû ÷ײ°Jüðx½:Ñó‹Y;ÐÜ“u%a^Uwë¸ ë4nfü±4¤ä¤ >}5‡ckI³yô«8ØJsÚ;%¾8Vož‹zA9˜ßù © 5á¤c†ZŠË8,JÝõÓã㯿]K–’& d°ß5›gK—l>Þb”¥a”Öç3’X_¼¸9‰ëÏzê6°¨ÉøÃ!‹Åüi kðnTIXD^½©¨÷½›ÌW¬¨£@8Tu°Ìá`†o¨°ÅÁnûÁ ý8ôdõ¯nceÜu“m[·³Ý¤+ht‚GŒÒOÍ^GFYbNS0“k„Œû±­1´êg\,ìµ3«$Â6»ŽFt>Ltq ×ACn"Öe"W ÒÙçÈòÊ“ãn|¿u´¥õÝâÛ®™ûG,‡>Ž{!ÁöÔ5,o³±¤glKÇÔ¢1 ÍÎŽ?ÓQUôúÙŒvsãÛ¾›±jŒ2ϽêÑhú¶Ü½Z’¬>ñ@‰“ëvB‘=¸é9á²øRḭ́[eÐ*Ý L‡,Uœ…5"ÁÒ¿¸Ž¬.M+ouÔ¼¸~"4=ùßÜ ô9¼ u´Ã«kü"‰W—-ò5i­kÌsëûÍкPu–‘—¢#!Þž/dµ¼ìùYöÔÊ,Œ£äÂ}Šõ£á:¸å$± ‚,!{€Ðœ†k@âÜZù iRòyQ'4{8µf²>ÝjC¯†Ý“ £ýω#«¦-˜J¨ Ï:Çt½ê‡ønÜä÷ÕÜASÆë º4Ww1DÀv Ä•Á_Iü,ÌfÃá›\!U«Ð”C¢Aq‚¾g±Ñ!g¤/`aéHF ãÛiè[í1×ø¤H»wÊëàc¯ñj¸±âmïuu9ÕòìzÇH›Ö í»´£ãÓjZÑÀJmF øDl’’  àø¬>(Þ’G²É?ì¤Yô…rt<žŽÇ~˜Âk½We˜%±wD cXqáП(g˜nDºeüÀs‹ïå;ØCO¦FíYv# I´¯äÓåÅÝgu 7wX¨ëÖt~JK¬Z|©[1mÀØ€‚£Wgåd<àK&ëÛr³„{Á°` |œ).b;!4$]D"Aa‹ÚÑtÓL|¯ å¶Ò_˜.¨ovÐ…¼A€<ÄÆšî^ZMüa©sãåL‘Di<Ã:¥ÛdÞN”G7À.rrT$3ÞÙõv:Þ@»9Z?DÍe˜Fs@ÿüxÃÃkì¤Nœ†HäéÁbéè…dˆDqjôß`9÷rÞ ¡“X?>o©j›£*gÐíÆýB5jnK™ߊª°Œ/­M†ò¡k …‚‡Õ‰ÅÛ±—Ö*ŸÎÇÍ éƒP¾01†$‘UžÃ©ëf$é<ùŒ{|Ř$ÝiKâm) jºøƒÀñ‰"-3¯¨bÓ‚y¼7êdQG}éÇIÖ\ªòÕIlúæÄàSá3H“_F™†ÓÎ3aPƒ¯=KSÍi”DÂ8€mˆF˜ ß“Jµ¼&½ƒJ¾¶Û¯(¬7’_+Ím,ƒßä$¡¸Gè@NµîÏ„Æ`›~'µ…æ²ÀúhçÙ –p6]:W9Ô- [ýqpš¦+É\ô¼óM½TsV-q^VŠY€ ›ç\Zk.­.si5Û*ˆ‰¢5J²Pú¶o©ðÆN÷RØô§ %™ï“úw£65WB¥}ÿ‚õe¼¿!¼!Mc¯ô•„ÉMDL„}¶!ÐÌ-d_{ÒÜÁ§æÙC¢-¹MŸL7Ñ–cx€³ãÌKÃ0­ØZ3æ±óŽþ†¤§^H[_b½Å]jÀi=C*˜=¨öü@õœŽëÅÅèD&Éo-¸Þ€³ÞÇÉú<èÊ%Ó`øï³§a]fŒ¢ó ¤¸‹Ã!œÄýxj‡9fó”'>e†[¢` »$>(¹B9S¹ŸB'%û$Ìjzÿ²ZðXüÆÁü¦ 1ÏÁ: “Ãß‹WøG¨c~ƒŠãü¢~á ¾ðï Ö1rÆâ©†#EÆjK&O+Tm¨‰^ÔÏSýHˆ£tÄ!S µÙÕ3q~ýCû`6Ú’ÀÊ©ÜÑ8a‡—#¢<> endobj 147 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [177.235 104.892 184.209 115.836] /Subtype /Link /A << /S /GoTo /D (figure.1) >> >> endobj 144 0 obj << /D [142 0 R /XYZ 97.768 692.105 null] >> endobj 145 0 obj << /D [142 0 R /XYZ 97.768 443.248 null] >> endobj 146 0 obj << /D [142 0 R /XYZ 97.768 356.947 null] >> endobj 141 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 152 0 obj << /Length 1600 /Filter /FlateDecode >> stream xÚuWKÛ6¾ï¯Ð-2°ÖJ¢dI½5mH´hc ‡¦Z¢×l$Ñ©l÷ßçåG¼AÓ93Îóã8‹Rü—EM•T›:Úlª$kê¨î¢/Qš”U‘{‰‹åÂK£hÑ_ÿÇïÏì,è ”/wßÞYô«¹ûó.Zþ-ë`Ëú˜·Û»‡GQGMÒlD´ÝGy¾Iò¦ŠŠ²ID]DÛîŸøQ?Í“Z­ó2³ŸVk‘¥ñ»NïWyï™lÂ×=¯À4¼ùºÊÊXMV›Ñ‚R4'1ÉŸOiš÷*Yý»ý .çuRæM´y’¥¿YŽ_çŠö¨ZMçZÞó}SgƒÜ*‹ÒñfÐv®=ðNNAÅA?züïTP®Ç ÁŸÖŒn’–Téñi¡õfZ•eì}x„}5B¶¡p6ˆ1™¬˜= ]Å«º 2ÌäH1z ÆÓÆ·ù¨ˆÊë ÂS%þxðù³·.oŠøY»¯|œh±¤GMjlቲL'_éË¡DæK®žNš&Õ:3ie“Õº(òøo ² ¢­vzTÝ-9r h9;Ýk÷›àa\Ë9áp_4±5óÔªuk:Ê™¨9'¦ÜëÔpÍ)‚1ŽéÇÉP4¿êŽ# — ÎÏVMLb ¯˜rÌòTÃD=∠—tªWN±€™X`0ˆq8dÆþå¬ôÒ-ÎØ9œ3ÔþÑL.4Æeÿ(òàwÙ–$+’¦(®Ô¾dK ª”K*ß4%Ed{&^ê®”£ãí7ÅÒ¡±)­” mGð®‚ID¶f äÓ¢´•GŽªãžHElgŸn0aÒm³T"©BiˆË„ʹi–µ¨ë¤Îò+g?¥eÚiÛÎÖújÛ”\®ø~ÿQVhÉ¥L4=.´†} ö޽òÈÙùÔ©yš'¢ÁTêvrºµ¶I*–ö¿ç,ìŒï¨ö™Å÷ù ÛÃb¶SÓžšX¶ŠITuþ{´Õq†ØËX%09¿j˜¥;)ßi[7Í-%5á&[rêYfòaHóp ˆt —6‘ÚžUyÃA„È@¥2vá°¶vöH3Îhrä=ÐÏq‰ƒh•%ì§dPÐ÷†šà™ø·-BOBQQ‘ î½ëɬ¢9“c¦'j6bxë Ü\œÇΰè©0_VBíµHÂC3àìèz/rÏŒ½/šÂ··t-©ó7Ž„7ŠhÈiá%?ö¯·‚yƒ!±é9Þžn™èóÔ1mÏ`“ÆH2âÇDŸÕ÷¡—N…“§Œ\é;ˆÎäó-k%‚U•P:D—½5¯¸¥Ç¶Ÿ9J%™³ãÅnâ<?}XJzçtÿ@‘SÌyšÌ|dÖ¤dwäT—þ'ïhÙTKoÝ+0È=𞊯Btä«ñ»Š[ Ôâ‚$À ;©AùRëÈ6£/çž)„ЇØ©¯Žº®Èã.hår¿yð ³z^𯃗–áªBÊ0p?=²áË$ž§“@¥$qyñ˜”Xæq‚ŒÂ•¼:ûOüCÏÔz¸XoàÙö ì09\Ó0G¿x¹ó0å—d§óƒ®ù+ùs6—ª¦—ãÓŒ±ˆyÎÿ¡Õ¤¾ÌšŸÝ«£¸ã¨ûsµÙ27Q úaEħÐÃìÊOO¢Á¯³<ÌÀÃ<þ ÂñËŒ– üìÿþ~›7Q%¢\F/ÿÎÁ˜_þ¾1ì2UY°Ã–&Eyé’Xwï¶wßkÔúendstream endobj 151 0 obj << /Type /Page /Contents 152 0 R /Resources 150 0 R /MediaBox [0 0 612 792] /Parent 69 0 R >> endobj 149 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./ediff-sas.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 154 0 R /Matrix [1 0 0 1 0 0] /BBox [0 0 331 724] /Resources << /ProcSet [ /PDF /ImageC ] /XObject << /R7 155 0 R >>>> /Length 156 0 R /Filter /FlateDecode >> stream xœ3Ð3T0A(œËUÈUd˜™ê˜(èêY…Œ JôƒÌ\ò¹š. ¯endstream endobj 154 0 obj << /Producer (Aladdin Ghostscript 6.0) >> endobj 155 0 obj << /Type /XObject /Name /R7 /Subtype /Image /Length 157 0 R /ColorSpace /DeviceRGB /Width 842 /Height 385 /BitsPerComponent 8 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Columns 842 /Colors 3 >> >> stream xœíÝûyÛFÖ€q¨ÊتÀV‘*p¶‚p+ظ‚PÄ©`¹|Vr*ˆ]Aè "V 1bx4—3gƒÛàýýÁg`.Aòð` ]üùçŸÍWçóy·ÛQ¦L™2eÊ”)S^uù¢ ï^½zÕ  ÿ„w?~œ{$(€ð *Ï»Û_¶m¾]ÁM(çÕ¢L™2eÊ”)S¦\ºì„wX3x÷æþßoß¾ù÷¿ß¾|ùê|~||l~ýõøÛåÏ/ÿººzùñ‡÷odF‹u˜;Ö¦L™2eÊ”)¯«üt¸iÔ...žžž’¶o~yhûzúõmR-Ox÷t¸ü6ìsÓ<6Í˦yÑ4§v͹]Ú´Ã:üx:>¼>è;¨LÞN'Í–Çãñîî® ï’¶ÿ;¼KïÅ3÷î—ݱiv_¾|yxøtsóöÕ«ËÇÇóååî_ÿºm£½—/Û¨ðr·{Ýnüå—ãçÏâÙ˜.ν8|Tn?µ¹P¦L™2eÊ”×R~úõíçÏŸÿúë¯&¦µúð®u{{Úòáá¡ß¾ï’z‘æÞ½þðóííMÛuO»tâÕÕ‹‡‡ïÞýrssÕŽðòòÕÅ!žf4Cº¥‡w:]^M“ZÞõ½t»m:æ1¼û™¾ýôþÅåÅå‹WÍ·Øî|>Ÿþ:}|óËÏçû¶ðúÕîÝ»ý寪o–Þ-ãweÊ”)S¦Ly-åŒð®Ëõ1™¢õúåßû¯9B³3ž³¢½xöîåqÿóþº¹üáë”»¿#¼ßÿýéñÓçÓÓë×o^]½úýßO?þ׬bM04ã¹~‰w¡ºÛ‚u Bk•-1Ðk0${§ ï|½˜É?³@x÷<2½ùôþí۷ݳÇÇÇ÷¿½Û¿<ü÷ôéÇo?½ÿòå˧›ÃßÛ­e¥åB»>´êC=oV/TÅ: r/ÊÁ}útÿøŸÿkй ^c-ãkö.µ—Èß½û§|wÛ†„ßÿ Š»¹díæþ@™2eÊ”)S¦<¤ù»wX—gáÖŽð *„wU‰‡wÖŸÝ{xxèþžrè¯-k¸mºdwú/lÂöÙ;Rp0ý0ÆOô€GGUªÇ~¹ûç¶“æŽMê¨/1K£ ïäš‘!Z×Ü ©£¥}å+wdÔØÎ;˜ñª½G£š×€… ¼á]ÞÂŒ.f­XˆœðκršqeMû²yXßxè+ß½HÚ7ÚoïIƒiá»ÐŒ5BwÀÃpcƒÍóƒ0pÇ3ftaծྔærª”6÷Îú²´¦Çé¿§½_´Þ 'užÞywŸ6¾ÀÎ[¥øž& 8iòÁ‘BÁoœÀKX˜Ô…Y]s"‘ÏTlhöî6kξrbÖìáœxKOjèf¶S$:Éïî¸~ƒR¯µ¹á`k „wÃã wábûÐà5㘙‚³ŒÁÈÖäõ¥Ü økm®"¼lDÉð.éÊÝû¼k”Bxwë›ÿ7$Ì;8Ñ]¸ãÊ£‘ºG©¯5á`#f»µÂ|j~éš óâ˜ÛÀt7ïBaGB±H“»§V,Òø®Z ãI†µîð¢Ùq¡}a¡¦ !Zu÷"ôZP™­ü× ²5àlá¶‚s°[ ï6‚ð *„wUyÞ]__?==]\\x///ç-@UÎçs4úúüùón·ë·—ËWWWÏ»7oÞÝÞ”õøø(¬í¢¯ÓéÔFkšÖ‡ÃÝÝÙ;€Ùh²w]x§™Jwÿþý{²w³Ñgï4á]» Ù;”Ô's€5Qν{ýúufx·ÍìAIAL’½IAL’dϽóþ7¦õͽk÷³+tûܼkÝZýBói_Åäm3´·5ͨ¢{mYmÙ\ë=bcî7Æé­ÀfåeïÚØ®+XÞʲwfÐàí̵rÀ!?ÍXWpÑ*'…ZŽ)Ô²»ïMî‘ j„wèe̽ëc»Žá­iî]4ÎÏ ïBY®!cÎXj¿eÇœ=l¶)5{gÅv>Â[Sön®ð.zqV¨._ù+¼s½MxÀx¶ûwïêÈÞÉk' ï„í‡YÓHÃÅY¾Ùô³¥æÞÉu½Õõ“W OËÞ£ Ÿ{—4H͘5Ã&¶ ·õ¿{gÞjà SúµÑºMø¢djlg>õÆ:šµî)[Ž^V¶Zv/¿sCê€D›ÎÞYêK·GS¶Lê€$ʹwÇã±Ýr·ÛõµBåÕ̽sÕ(TÞÕ÷¢06Mö.t¯gÈj²wÑ‹•«3Þ­±e¶I“½kã´››ýãZ³wÐdïšÄo5Ù;€ú½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª,"{·?ÛÇã~ß—­§]YxjÕ²ðoIÀv,%{'Ägí*s¡û´yð¹-Þ€íXDö® „eÞUIO¶fAÙ;Â;€á6‘½ãâ,ØŽ•e﬙vnÅPxGl6bÙ»þ¾ŠŽ÷îŠ~Uô6[«Rw`S–’½©;°)‹ÈÞ ”ú³w›Bö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dïªBö *dï€íy+¬mOéÉF@Ù; á`ùÈÞ ïËGöH@xX>²w™öÇcW8î÷c÷2j°B®Qc,Â;Àò‘½¤ ¿ÆŽ½’º˜`mϺe¶©ì´àøS›*¾×÷`"{—éøêqeðãµ¼Ì~GÕÇe+º«²{)8ª±›ãHiv`]¨Ù»L„w«@xWª)Â;X‘­gïÚ˜¦+X‘M·¼_h>í«˜ÌêýÆÞƇ´<×YWåzý—«y•­ßØüêõ.ô®µ.ØE[ñŽÙ ËBû"WtûRÆýîÈG)Ô{ÿæ *é8‡ŽªµdÔ#©ß£Ô–5¸:  V›ÎÞ™ù*7we-‘Ÿº-7Ïc)}SC²hãíQ”ü m(ÂZ·…¤¨NèZ^%?Íë"´}ãDlEêfgM>r¤#©ß£Ô–5ïÔj»Ù»ÑO4¼)Ìu¢BßµÑ8cH`‘=ªè–šŠÙ7(dï Pwàq–72Ȥ‹³7€-ÛnöŽðNßoô¢a#†wBÅÃ;w`I¡CÁ¹hîuÒÐÀ–Þ 9’Ñü\v˰edï‚Kï’è³wòÚi»¤pGßlÞ–½ë—¤¾ŽedvHš‡‹³jµÝì]“2SÍšKçnï>mtsïR[žk¢ŠÌÍò~Ý&MÞRŽÊ›%ÒrH÷–]W?Há8 ï’ŽdÒ.¤¶¬Aþ@­”Ù»ãñ¨lp5Ù»Nè>Sw­7êËÞ@Jh<»å¹öHf]Dó^ÚÓ¬uà eËšëÂn4c®òFÞºò忍þ –QѪ·®Ü¬uœÝÍ”WØ‹IëÚ´†f´¬Aê@Å4ٻЌ ÕdïÆSåß›Fõ •%ïà’ÇVܦvÀÖh²wmœvss£\Sön$„wÙªÿÒ]ì.v`€Tšì]“ám={'_…%zùµ&×dǶ©ãAö *dïªBö *dïªBö *dïªBö *d者ˆìÝþë´=î÷}ÙzÚ•…§V- ÿ\lÇR²wB|Ö®2ºO›çŸÛáØŽEdïš@Xæ]•ô`k”½#¼nÙ;.΀íXYöΚiçV …wÄv`#‘½ëï«èxï®èWEo³µZ u6e)Ù»ñº›²ˆìJ©?{°)dïªBö *d甆ÉÞN§6 ÜívÝB¹|uuEö`6šì]޵њ¦µÃápwwGö`6Êì]­ÉÚmìðŽìÀ”ôÙ»ÌðŽìÀ”ÈÞT…ì@UR³w···îf]ìÀÌ2²wV„×Çv Ù;€Ùåͽë#<3¶kÈÞÌ.{î]áY±]Cö`vÜ9 P Ù;€ª½¨Š2{w<›¯±àn·ëV…Êdïæ¤ÉÞµå¤6Ÿ…w§ë›† €é< ï¾\ßœ>›Ýîé|¾ØíÚx’2eÊ”)S¦L™òºÊvöîËŸçyãM agïþü´ ØsâòáúâðÇÓrÆC™2eÊ”)S¦œS^oöîp}yøCºÙdš‹cí˜ÿ~t†Ý-÷®ÂJ…^ëeÒŒ6ãןØÑÆõuÍåÙÏnâ¯é?a†÷¸´OEy>Οv™¶ÐxÚµßÜÓã¹»¹œë8ä•»ããóÝÍådÇrèÜþþ>ÿøØŸÛÙ¯‹òü4ß5æy2ÍùП“íþþòñQØ—Ôñ¸ŸBûúºn;Öq6_ÇN·ý¼ÇÙ:ææõŠ»OÀêîc¿Ü=¯ÌÏaïq¶Ž§¾®Ùoj]¹ßÔs`öÏïk7ö÷‘un¸¯{ô½ýL[ÛKß—÷ü4ß¿æ{pŒãæ}¢ý ãO-çgïæÍ ¸¿Q¬%SþˆY]OxíÖ•ì©UôôØš°eãüÊœødzìV¥iÈ'CR]ý‡’uœçzÓ¥~ŠšOåSE¸>Í9É×ä6SûÕXæÇ{ôm2e§CN¤²C2O€ÔOѲÇ-éS7ô)1p<™sïú¸RŸ–ýí¢ù}æÓÝßÍ¡¼…÷w¡ð;{ióö¬Ì›'°Öº¯]ôXYuC9'ýïwlB.Ä=þBÝå¼.úߣÖû«x>Cè7š£òök-ÞSÊ}OúÌÑÿ†圼mFëÊ9ùwywlÝc>ñ9¦ß_9£9V¡×Nóõç•üÙ›ÔïðŒþ»£H]ù|ûûHŸOÊ87F:‡õã/øL:þ¡ÏØ9ã¼ì`Žýc4Ô©üsÁ’¦eËrÝYDsÑì]¿Vn*Ôr¨ú1ë7® 龿ä<Šð#5éh¸é±ì~½èÇ ,’½ó ùí Ü£¤%ó8ç¥$‡“œñ)§Ù}úG?°!ýjcnÂß)ÑwJv]Ít:)›é“!{<òÆÖwVý›úû’@˜$ô;|`ùsïB¿¥²ËßÌùw|©ßÑßCÑý ývw÷ÈÊ)jö7õwƒÛŽ•ŸÐϽë¶4ó1òï ï6ÊßaßBìw5þ¤º«(»yó|ŽÎ)‘çÁ$½¯õýZÛdç¢ï͌Ϝ¼\¦òsC¿ÜÊņ^ß)Ï1w£Ÿ½Â{-:OT3÷Î[Ws½(¯ßÔs@sn ™‹¦|ÿÊ﯑¾¢ïÐçôÚZ¨ßè˜5ïeáûNˆ†+÷8(óÖæ{P>Ï5Ç*'{gÆ¤ßÆ± ßO……æÚF ´’.Òä'¢Ù;ï–îëþ½V‰Ì™Õ¾wBÈuWGÎîx_}R-Ú¯;}ËÃ'Žž-)ŒÑlœšJ –Ñìì2²wš”í'µœôêéWß wÙ‰mý»;:*ÍÚlߪ©[Oö6eGåm*5ñß û2íä̽é:zÁß÷Âïæ¼ßCÑœÄræÞ ̱ y>åo è6I¹–¼ñüeynVôÞÒÔßÜÞºÊyxú9RIû®ÿüIj¿ø¼½RË™{7K¿CΡßèë›T7ô9?ûÜ;}N}ʹwÙÇaÔ¹wškƒÞí«Ôì2s60ê,2†Rٻᙿ‰EsuÂ̹®¦©F|éCèûug$¤Žaùäì]Ó$œÞIG#úFVÎ Ò÷CÆ©ådö÷¾>Û·´ì]èiøÜˆ®Êu£í éW#ï{¡T2/4€Eeïî`Á!éG5ê{0{TšíõÒæÞyïæZÆø [ཎOy=[¸p÷N¾Ï4t¬ÌZ]ÞHÞÆoͱ éwøwü½à=W“ê†ÎÛìûC³ódî¹ÑM9oO~•›rÞžû™S6ßi“Œ~‡ÇQký¯KË–-g0 ±”áÂû]æÇ{FÎ[³âÿ9»œYÁ{‡)S¦LyÊòÄsþ¦ÏSFs· óñð}Dù{y¥Ù;xeþÝ;Ê”)S¦L™2eÊË,? ïÞßnvMÓçï(S¦L™2eÊ”)¯­ü,¼»¾¾~zzº¸¸ð>^^úï@žóù¾>þ¼ÛíúíåòÕÕÕ³ðîÍ›7B÷„we=>J7;wÑ×étj£5Mk‡ÃáîîŽìÀl4Ù».¼ë¢5Ùýýýû÷ïÉÞÌFŸ½Ó„wí6dïPRwžÌ= ÖD9÷îõë×™áÝ6³w%q0HBönD$q0H’=÷îöööááÁjm}sïÚýì Ý>wïZ·V¿Ð|ÚW1yÛ mãmM3ªèE[–E[6×zXƘû „qz«°YyÙ»6¶ë V„·²ì4xc;s­pÈO3ÖÜFô£ ÅI¡–£C µìî{“{$CázsïúØ®cFxkš{3†ÄsÃûP–kȘ³–ÚoÙ1g€mJÍÞY±]§ðÖ”½›+¼‹^œªËW~ç ïÜE/FÞ0žíþÝ»:²wòÚÉÂ;aûácÖ4Òpq€o6}çl©¹wr]ouýÀäUÂÓ²÷(èçÞ% R3fͰ‰íèmýïÞ™·xÔ~m´n¾(™Û™O½±Žf­»GÊ–£—•­–Ý˯Çܺ Ѧ³w–ú’@ãíÑ”-“º ‰rîÝñxl·Üív}­Py5sï\õ „wõ½(ŒM“½ Ý벚ì]ôbåꌷGkl€mÒdïÚ8íææFÿ¸Öì@4Ù»&1Â[Mö >dïªBö *dïªBö *dïªBö *‹ÈÞíÇöñ¸ß÷eëiWžZµ,ü[R°KÉÞ ñY»Ê\è>mž|n „w`;‘½ka™wUÒS€­YPöŽð`¸Mdï¸8 ¶ceÙ;k¦[1ÞÛ€XDö®¿¯¢ã½»¢_½ÍÖjÔØ”¥dïÆCêlÊ"²w(¥þìÀ¦½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù;€ª½¨ Ù»Lûã±+÷û±{µ‹ ´ç’ù´=¯æ K@ön6ü;öJêb‚ñ,Mw¦NY€…#{7áÝìï°ÌŸ½ë¯?†.wš(½ÛÈ×Iûµ}/IÑ’YÑ;¶ÐhûU!—Õ¯·‹~w¡»V®Û8×7{}ÔmÐ=í76Ã#ïBïZ³)MË!Þ1[Ím¬åŠîØX‹Edï¬ÈIh¼ñŠ\Ñ •Á–Õr´w·7ÔÞ¯»GÂSy´©q§{™™07+f­u[HŠê„®åUòÓP y£`Fógï]XÊÌ ‡\©ŒI³0#§ì7´vÔ+¹¡x(Ï kå–‡Œ*º%gµZJöŽðNÙ¯{6){ª½8ÛˆáPqÆðÎá` ÈÞù-3¼Ë>PšºQúì¼všð.Ú gµZJö®‰Í½ÓD-šŠy‘Ö>qî]vx'÷ëÍä)§âEëF™åš{'ˆn•h]w ˜½ó¶C†°F ÊÞíÅ;g{ÂÝ Ñ;gCÛ„ìw°ºW9ß½½{狼~›À²Þ–÷{c5uÑ?ì½GÕ]ÛŸ[©-k® Ë·Íz#¼¼~X²¥dﲯ¢Nfƒ\…µ¤ÄÖ2N, ÊÞM±»¬b«@ØÀ¨æÏÞÉ—Vg4äª.LÑ˯  EdïPÊÌÙ»/^„ú&Åá|~œ3{׆wÞ0îâ‚ð Çãã_ÂÚ)²w„w‘½fðÛ›?þóézîQêDö®€ö«º}Ô[wÛ'UÉë¨xSýÈ;ë P’v¿àa7Û\ïÑ,Ù»22¾­ó¾à †©Mew½ÌP&iTËܼÈÞ•Ax7FÅQÞjµÑì]¹­ÿÚö~ËWQ͵nõèØ!áÐxƘÝ*Ö뚬·}s·¡¢À[=»wÀú#©|}5çU´GyTæf¾=`ÃÙ;ë«Ôý 7Ÿz¿¤­ F_W^®¶·‘ì1ËG, C®8ªè¨õ‘lÔ¯oô¼òÖRŽ*4LÍÞ5Ƨ7Ѳ×Ê õÃv$oTÑT?à…„w–訊Iù¼zW€(Möît:uOÏçón·“ËWWW«ÉÞÞ¹ÝÕÞ¹»\$Fxq6uT„w€:h²wmx×FkšÖ‡ÃÝÝÙ;ÕWòÒ»~IêÕä¤Àq2£ZKxÇÅY€L™½ë£5Y»Þ­4{×$~£7bf¨ìÅÙf„¹wæû¼£QœfTÍ8sï&ïˆí}ö.3¼[föî·ç7EZïfÊFܵÂrïÑaÿ§Ü³îfBØ! ØÚYýÑ•0ªÔ#©<7¢ç•üê[m ]ÞÛÍÞÁ‹ÌÐÂñ¢6š½ƒ¡˜?{j‹ðn2ò…W°.3gï./ƒá2Ìœ½ëÿ-Š8ŸÏófïïJz||Ö’½X²wU!{‡Êµgšùô©Ä-Ùc´©ì´àøS›*¾×÷`"{—éøêqeðãµ¼Ì~GÕÇe+º«²{)8ª±›ãHiv`]¨Ù»L„w«@xWª)Â;X‘­gïÚ˜¦+X‘M·¼_h>í«˜ÌêýÆÞƇ´<×YWåzý—«y•­ßØüêõ.ô®µ.ØE[ñŽÙ ËBû"WtûRÆýîÈG)Ô{ÿæ *é8‡ŽªµdÔ#©ß£Ô–5¸:  V›ÎÞ™ù*7we-‘Ÿº-7Ïc)}SC²hãíQ”ü m(ÂZ·…¤¨NèZ^%?Íë"´}ãDlEêfgM>r¤#©ß£Ô–5ïÔj»Ù»ÑO4¼)Ìu¢BßµÑ8cH`‘=ªè–šŠÙ7(dï Pwàq–72Ȥ‹³7€-ÛnöŽðNßoô¢a#†wBÅÃ;w`I¡CÁ¹hîuÒÐÀ–Þ 9’Ñü\v˰edï‚Kï’è³wòÚi»¤pGßlÞ–½ë—¤¾ŽedvHš‡‹³j¥ÌÞÇæk,¸ÛíºU¡òj²wMÊL5k.»½û´ÑͽKmy®=Š*27Ëûu›4yK9*o–H?È!htÞ[v]ý …ã<0¼K:’I»Ú²ù?µÒdïB—ŒBÖ‘½ë„î3u×zã¡¾ì ¤„Ƴ[žkdÖ)â½´§Yë†Ê–5×…ÝhÆ\å¼uåËÍQý,£¢9To]¹Yë8»›)¯°?’Öµi+ ÍhYƒÔ€Ši²wÍ׫®777ÊÇÕdïÆSåß›Fõ •%ïà’ÇVܦvÀÖh²wI±]û¸¦ìÝHï²Uÿ¥»Ø\ìÀ©ÈÞ•'_…%zùµ&×dǶ©ãAö *dïªBö *dïªBö *dïªBö *d者ˆìÝþxlû}_¶žveá©UËÂ?—Û±”쟵«Ì…îÓæyÀç¶@x¶cÙ»&–yW%=Øšeïï†ÛDöŽ‹³`;V–½³fÚ¹Cá±؈Edïúû*:Þ»+úUÑÛl­HÝ€MYJön<¤îÀ¦,"{€RêÏÞl Ù;€ª½¨ Ù;€ªh²w§Ó©w»]·P._]]‘½˜&{׆wm´¦iíp8ÜÝÝ‘½˜2{×Gk²v;¼#{0%}ö.3¼#{0%²wU!{P•ÔìÝíí­»ÙÃÃCW {0³Œìáõ±]Cö`vysïúÏŒí²w³Ëž{×FxVl×½˜wÎT…;gªBö *d甆ÌÞÇæk,¸ÛíºU¡2Ù;€9i²wm9©ÍgáÝéúf„a`:Ï»/×7~:_ìvm$ÙìvOgÊ”)S¦L™2eÊk+[Ù»/žç70„½;}š;Þ\jùp}qøãi9ã¡L™2eÊ”)Sö–«ÍÞ®/H·¢LÓ`ñaŒªí?…ؘ»-ÝÍú4`v¡×q™4£ÍxÇ 9iCuÍåÙÏnâ/ýçÏrzœ~Ì2y+ÏOó]cžÓ¼úó­Ý_Ἲûvöù¬ÐŸ·B]·ë8›¯c§Û~ÞãlsósàÎùäwßãý6ír÷¼2?‡½ÇÙ:žúºf¿©uå~SÏÙ?¼¯ÝØßGÖ¹á¾îš÷‚÷œ);¶ö˜˜¯×÷~‘sÃûyÕ¿vÆ“‘½³âÍ&¨Ü!Í8æA‘ß ëÊ ­NôôØš°eã䨦ÿµê±[•:¤!Ÿ IuõJÖqžëÝ”ú)j>•O!÷ÍpÈ× ä6SûÕXæÇ{ôm2e§úÏ«±¯¹¹ï¬ñ>Í¢­…>¯ÌÏãÉ™{y3~C,k~ŸY¿³›oqý?Ç÷ùïžÐòF\μ=s„Þýºó 7Ò ý¶åö¬ŒEè8[í[ã´Ž¹r¿4ÇÄ»_ycõuìã ¿óæ3„~£9*o¿ÖòÔ×(š{pIvŽÊ›sò¶­+ÿŽwsÝ6æqvù4ŸÞ}‘÷Wþ^ЫÐk§yúóJþìMê7ãüQ~§„>ÇÖUæFú>ÒçÞBçsÙó<úZëß¿߳Ѽðy¥¼†-’½›7yº˜-ÿîlÂA½°0Ú²\wÖä oª ´ÖjDø(¬õnSêiêT˜¤LIÒ¨Æãþ¼“ó(ÂOç¤1»?7³ûõn ƒ°|HöÎ{4„C¤ß£¤%ó8ç¥$‡“œñ)§Ù…줎0°!ýjcnt‰¢èhR]Ít:)›,³¨?mŠ÷Þ¿m¿/IOÑ¥~—¹rþîœÏk»ã³rlöþ‹¿ãKýîŒÆãÂoGù·{‘ýÍ;ÎîÜD37fÍû åá†Ì½³¶‘çYc6ëº}Éc ýöö;dÌã•ݼŽy> ¹ ï¹ñ›ÛÊ3iúÕüfÍþÝ/̧I:Ródʹ;ÊåV.6ôúNyŽyÏù³Wø^ˆ¾_4sïBŸÑ\H^¿Ùyšó2³ëz¿ï¦ù>оw¢ß Â|Mo¿Ñ1GÇ#_ÓËë×ûúŒòæ›…ó<é5ªpî]^ön`.šõYÎ!òN‹é—(3RyÙ;ó×Ì?Kœa«„t°q”Ðï1GÎî¸nš`&À»Dî׃¾åì›X4‹6Kö.iùQòwïJÝ÷Q0v~z~ÝÚÍ]5±û4Ÿí²s ^¸pi÷N¸7Öš[ãÎYñ^û—•·}÷¾°èy%ßë®UÞÿ8¤ßÿ¤pÿ—»_Â{¡Ëÿy·qßSÞc.üm3¡ÔߣîÊî˜5÷tkö+ô~‰~&Íërg0ËÇYówŽ…ÞûnÎ)t<ݵIÇJþ¼’?ϳûþ]#/xÏÕ¤º¡óVs­©øwŠ÷ýuß Â~ ›0·¯ìûKîWóyU Žªò¿V,-[¶œÁ4&™æRýXHÊpáý.í㽓‘3F}ªýŸ³ É™ ù]8RyöÜêǼáfP¦\â³bÊ÷ÑôyÊhîvc2ž~Q¯\gö!Ö=;ÕüŒ«u¿Èówï(S¦L™2eÊ”)/·l†wïï?ÿõ횦ÏâQ¦L™2eÊ”)S^OùYxw}}ýôôtqqá}¼¼ô߀<çó9}N'}ƒWWWÏ»7oÞ[Þ”õø(Íïû6ZÓ´v8îîîÈÞÌF™½ë£5Y»Þ‘½˜’>{—Þ‘½˜RvöîöööááÁjìÀÌò²wml׬ìÀ̘{Peöîx<6_cÁÝn×­ •ÉÞÌI“½kËIm’½˜2{§ÉÛueûÏ“½˜’~î¦5ÏŸ5&{0%þî@UòîœMøÃ(d璉½ÓþYc²wSâïÞT…¹wUQfïº?k¬Aö`NšìÝ ?k €µ#¼¨Êßáþj..íR.îÿ5§g] endstream endobj 156 0 obj 56 endobj 157 0 obj 11979 endobj 153 0 obj << /D [151 0 R /XYZ 97.768 692.105 null] >> endobj 148 0 obj << /D [151 0 R /XYZ 265.639 477.317 null] >> endobj 14 0 obj << /D [151 0 R /XYZ 97.768 176.365 null] >> endobj 150 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /XObject << /Im1 149 0 R >> /ProcSet [ /PDF /Text ] >> endobj 162 0 obj << /Length 2622 /Filter /FlateDecode >> stream xڽˎÜ6òž¯ä¤FܲÞclŒÁƘ™ì.°Þ[â´«%…”<îýú­5ýr°§=t‹,‹õ®"ß=ýðöCZÝÕa]¤wOÏwu–EuWäe˜¤ùÝSû¯à0Z½Ù&EôæË&ŽÝ7E¼A`ÌÞÄypdŸQðbÍ<ë¡F¾Š×ܬfãfÓ¨^àƒêÎ89Fmâ`Ø/j/çΚy4ý‘iXýçb¬vž€?hÖv²þ娥éEPÞlþýôë]&Y}·Ë°N’óq³Í£àgú‡qB¦i Ø@jäµ”Æa×wí{Ú¤1lƒ]2òØ«R“(,¢DЉhŒ¿UðO:ï·[G”I*{>n¶E‚LÁÿ§kúqÖu,¸×Üa³kf¯éäaTû3Cd,~у¶h§4Nƒi±Óè4N20ÛÈñkPÓ¨·WœÄyVE.'üNòk‹JLKÊðq ^ó˜"]4* :zE¯Ä Ð"FÏG†e&幃eÊB°ÖŒ‡i™7˜Eö ™•ûâüyM¿´²"Ç«†°_5Ä»Z5 Ã'yf-§ž³´s®' 2;‚8KbÍ KÆI„ízÍ2*@Î ŠáÏËÐÌf<ñ5VOqf%v¡SD÷==| húp& ›‰çhȺ™檱£s<>,ýl&:2';€ O°I5_ÔÀä*ÄðSgd7Ë ÍÝQÎhÙ:8vÝhçf™e“ð¢é´…êÀenÈÑ4º×>ìÓ"ЭR˜° Áç(Jz*@àÌT]ø¢ûžG²;ò×{ÌJçÅ̰„Ò`Rô°ôÊòÜ!·§µ’pP;Z¨£ý új¬Ë}o‹ÆfW0ÀŸX†ÙŽ=OH6Ê} oÇeæ€TåЪjh|òb 0ýq `¼õ‹B‡{s‘Òܤ£zóŸJAV·f7`>£;ÝO<ßÈzÉIÖ+2(=Ów<#mâ@VÙ¡;œŽòè‹CIÍßÒÿ§ër•¥aûÂýÕ¥?¤_Ï"LÊÓêTûhƒ3àИ‡«œ$Vê§Ð×Ëò² A.W2ïP”?~Á¨×¢AïF±û‰N¶’_K(ëéy‚Eu‘!ªBÒ& vj¦RU‘;5¬M0–eéÆ"N’°ÌÊÿ½JÃ,÷}Šd¢ø/; âÿÜÁŽÌÛýä4ëƒZ~~xÏvë*þ¾&Ó<Ί LkÔÃ@ÜÒëyîì¸ì;6J‚þœÔç-ˆÙw=ün4b-9Å ·h’"‹ï°©ÉsB>Íìæ0IC`,Ž¢2,Ü òß&®í.iÔ¤vØXòTWÝÑ$ ábÀJ>3:qƒy4¾`=ÍŸs±˜¶P('ð æ\p#óA¥àk‡sá4YÆÕÚlw‚MU‹÷á@m°\Ë¡ÑÊQ'Ã@î´ð½ˆD‡'jõ€,Š•l¶KCí\‘SÈV•@¡žh˱ÜòÊ h´­Ã<˜%kªªïý ¥ñ,cd˜–A0 ¿Ù‰k] |5nGÔ°ÁtIÁ÷ s Jè°¬<éÍÀÍ{Ì6‰Ù áä µÌãAQ¢ {“j¡É-HÌGã4w™ÀJ“5Ôí"€QLÑÆ2Ëô"¼†Öá>¤ö­çÏIRÌh¹k¹š^-N“îê2èÇq"eaÂJR®IUžG4XU»ËZÇ*zð…CœæTV´’ ¦Œî•HàÈð³QQç P8§±fƒ¯G”ž^8ŒŸo7ÚA_µò׆Ó4’_^ž³zí«}åæ/Ÿ„·ìÕh´8O¸çøÎï*ˆ³‚“s w3Ÿ&ŸÁ,Û~l¾lèWQ 5%«õªÈ¡T'p©NÎ,ôÁìò¤¨ü”Øœazq ¥Û€O:^ ŸŒÊWV8·à^À~½=°'üQÀëÞHÐÊZrF„VqRƒî¿ÇÍ•f ‡Qä…5Ï×ÚØf¤óü\ô•  \¦Ð,a3×ñDñ§I$±ô€1Y¬»”+Ë”¬‰_îiJ Ð{Q¿Îí &Ü\o1°ŒéKÿ¹hhÙ¨½¨D€ÊO9ôtã“Õ-ѳ0¯³¿êXVú7ãØ²¨£¢JII!Ê—mÖïà„œ”òxYH[DH²‘BäJR7² xwÂû?6–»ëPb«pßž¿†@šû÷ÄÜ¿Ïä·j&ùKZa¸Øå+Š P~»@9I™x6«Gg?N1ÝÑ+빟1{O|@ 9ÊpØse$G„ÜH¶!> endobj 165 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [140.783 307.009 147.756 317.953] /Subtype /Link /A << /S /GoTo /D (figure.2) >> >> endobj 163 0 obj << /D [161 0 R /XYZ 97.768 692.105 null] >> endobj 18 0 obj << /D [161 0 R /XYZ 97.768 443.248 null] >> endobj 164 0 obj << /D [161 0 R /XYZ 97.768 415.326 null] >> endobj 160 0 obj << /Font << /F38 52 0 R /F41 57 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 171 0 obj << /Length 1487 /Filter /FlateDecode >> stream xÚ­ËŽÛ6ð¾_¡£¬IÔ³@é&ÚKÒ¬’hжØR¢#ÉÙ¸_ßéµc7@b½æp8œ÷ƒÎ¢þ²¨­Y]5QUÕ,k›HwÑ—(ee]•#9‡ÃiEI†ßîËíŸ3ÏÙc¾Ü}‡xùëG¯íÝïwQøœ(XšfÀ:oX‘gÏÊTœ]ø©ÂÿE•Ä9¦’’7¬®k$ÿe}÷ò-o¢–µÖÛà<ÞrVçѺû¿Õ»Ã¤VIÞ”qþÓ*áuÿ±jÒØã´1‡y™Äâ÷½ ÔOzé ÚÚq•ÅËL;1vHkìûýd÷“>ñÙÚ "gÄvzÞq\UeÌVI‘ñ»Ñs¡ec„üë;aO½֟׿3’¬f-¸í[Ô4èQ°,oâ'…k?­²4¶Óú0+6 1Ý=ì @š `ô¨‰iƒ8 ¾\COÈCe@h>>~¾–É Æ‹ÕÞéÀÚh˜ˆqmþ››>ò°„ùõ”3Þ\ºòÜàYHrÚ8s`%~lìSÔë<;³èFë!uëµ|ñáŵYÅ2(°­¦E¼¾Õ^rÎ`6ý8c9kòÔƒøÓ% ¨éÝ{yk®ý^²´¬¨,ü°(‚€«p¢·¼×ä$¶n°ãfôà7Ðb”à8¥@äu˲¢º„ê4F ßÛu îÀê¦}åmái jPÃFMþ€Þ¾€÷/º´ ³ŸóÃàÏ+ßî܃{¾}Œ¡‚ñ/2> endobj 158 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./font-cor-s.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 177 0 R /Matrix [1 0 0 1 0 0] /BBox [0 0 221 721] /Resources << /ProcSet [ /PDF /ImageC ] /XObject << /R7 178 0 R >>>> /Length 179 0 R /Filter /FlateDecode >> stream xœ3Ð3T0A(œËUÈUd˜˜ë)èXèYšE€,¨ ý s—|®@ Žl „endstream endobj 177 0 obj << /Producer (Aladdin Ghostscript 6.0) >> endobj 178 0 obj << /Type /XObject /Name /R7 /Subtype /Image /Length 180 0 R /ColorSpace /DeviceRGB /Width 858 /Height 263 /BitsPerComponent 8 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Columns 858 /Colors 3 >> >> stream xœì½”Õ•¨{*Ç?§þ;·"Q${ŒÁ6 "gã„Ó`{îš™7ƒÁBã™q€Á€ÉY !’B‰„²ZûÏ©r¼ûTu aËïzð»ëÝ;«6¬½ª«Ní³Ï>õýû„"Fö¾D± Í £cbþ–G“µ'dIçÜœ­‹"Y$‰DÇt=š&XdÙz‚åHßr=ÓóMDØy$¢‚$! ù4Báûˆðà"LŸ2ñÏàKøj øªƒødp•AˆtIÏ%]—´šµ€Â«l ûpêÅU;$aÓžG À–@C±}Ç3gÈýê« ò⹈)#R ÎÈÉá ‘"õÐgŸÀ×<2¬ŽDn<0^å°YlZá̸ !€xÀ%( ­£êø’›Àgpí&¢:¸ Nkªí“Žçs>¢ñí¤îSm\Ÿ›Aœ+CßîÇgØq\©'>Eù\ ͤg}ðü™paÿ<\<Ð$‰Âް'Àã> ,Wj+Œg+~6€‘DI$‘DÉû ]µõ©B·­iU‘IÛš EÓ´IFA„¯]¨É‹ûð:†710íQ Q.—‡††J¥’ E†A’ä* вuÍôN–ÙTrïÈ0ψ‰4¥š{:c>re Dª$²=Ò¥x±\iöçÕk*r9î#vRQëJ<ÿÜOãcoÐ,ŸÏ÷¸HÒd»(žhú¨ÌøI×ä)* ä¿rP/vàúà¿ëí,€Â^h*°¶ÎßgŠÓ³˜õΑµ4&ˆ9ªcLôã.£ aä!ÎT1Ñ?ä~AÁAWCÎØm2‰fü ¡köxæ<`¬œaÞ-éHG:Ò‘Žt¤ß—vg¤â¡D×9`*§Î¡×áHÂEfݶi–°m—cÇó|ߥ)–˜¡‡?¯`À °¡ÑP$™·M=&Ç\¯C“ „8äfj gp«¡¶cR¦£81‰ê(W;ù<ðŒõÛßÜõWÿÑnŽÇÙ—_}»Ý)ïàÉ©Éùvk·L§h‚g€Lm]±6¥²1ãeO“hBÄI'ß²mËqÀ!‚B C !ý ãbw g?à‹á¶â¼Z˜"‚Ô …“s>]"ÈÌỀÿ<øYê`Xñi hÒcMøâç’>Ø÷p&r&<BÙ»š  ‡ ®Ç„‡ïE,éÊø˜jx¤Îy¾@:iÏçHB÷H“$TlÁã€~}"¨ Ê€WðS6Ü‹½Âað'Ð>F3œÅ }2è./ð$8MgPÐ"|>¼J¾A›ud‘›Æ–è*Æl»ˆSxtg=ðiÊÇéQ¸ua4 ]d˜ž Á’ ²†ÌLwKéCàyxì)h"ÀkŸ'íàjÐb»#éHG:Ò‘ŽôûоÔlŠÉ¤ly»Æ@okÀižhÙA'}<ÉGLMô K;ìðƒÆF'¶ïØzäGûÈgXJख़¡Ô÷hG7ÚŽM0TÚ±ý¹ózu­£(j§=O›8;hqDv0háB ±žª™–AuåçòLr÷ž· vr`¨ûÑûÖ.½á?ˆ—6­úÀ?òøŠÕ‰øa¶Ú 8fc¢`†À‘¼ãX®¯!Öp)Õ¦u†eµ6á{´ïûAÐ4MQ Erˆ ]gÃü`tuv\Ò™áB#CLâ6SMlÉɂǡ/ƒò”·/Jì×^?ˆ9ŽÆŒŸˆÆ 93°îÎÄ›½—ÜoDØ ÐÜ™ý%³¿ÙH"‰$’H"‰ä¿.^Œ¡8Uo"Ôf)‘F ÒNËbL3§0$–ЈG`"ÚaYzxï «C=TQ”r¹ÜÕÕ¥ëºïû¬€hÓ"I'í:>A«–ÝÖu»§'¡#¤Ç kg‘Èp`ÚÂIÖr\7™(–¦Ú¦J§2b÷¶:Óo¾¼çû×ÿPÛâ”Z·á Sï¿øÜ¹|[Û‚\ƒó 45¤3ˆÍ§Ó–gŽ6G}ÔʦS–­˜–G I À„–AÚŽCÓ‚‡qЛ™Û‡N/0y<òdŒ8ûåâ H£ ž“G!ÂÆoE $Œƒ¤I ЦlœÍ †Œ=Ê'È€¾Ã!ZÒ%¨Ùä 7;í½‹†ïÎ) )ÇÅp†]Šá“#ø“0`M£º«al ° {`굓3ƒ×ûŽ1Ä¡`Åyµ°RšD6æqœÄœ™#0h0áÏ)tÝÀIS/FxL0 ñ0·qÁ¸w“8G—à.œð#¡nb_>¡ÙVÏãÜ9%ÐÐû&ÎHÈ‚Ä챘sÞ©é ïNñŒ$’H"‰$’Hþëâû¼‰€4T+!¢!s Éõ–K"š£Ìpî ^n€³ƒtø 6½¯Ø]©TDQTUUq•›`YÖ0ŒØ'PÇ®‹tĶµŽƒJ]¹D©R‹ ¤ã— »/9!‚•„Ir¶a©še¤å>×äÙ¼ëÁk}ª¾nÕóK–Ü@Œ ¿•Íu¿°ù-Çî;㌒˜AÝÞ™Iµ–•gú,ÛPP›F´Ù‹ïé.L•vÙ®¬~9:A’²cSxb)b*!½™LU˜pÚ·LϔܗcgRS¸L8³þ´i'NàAXÓCf0tkÍäáÂÁâ™!Ú\ !á½{ Äq~‘0÷ËA(ÖdÉÁ&ÝÄ6ñò[ oôf—˜àÁ_Ž¡0ã»àV0œibô⸄‚s{øAÁ± ̓qyrv\Ø 8/<ðfsz!þî[Lãú„å…Éëwã°ÿJo¿U;Á-xÆd„ƒ‘DI$‘Dò·•J§›¯-XÛ±c¼jE2åxRZHkF)@Æ÷DœôÁIŸgØŽÞi¹íÔ$"‹Kª¢«nG$å?,†·z<šªÔ%t˜Šš Þiã>²ó©œªNR |/À8h{˜ŽTÑ[4uRmÒ4òè#KÓy÷™'W-Y²„ØóöðÐAƒ/¾üª¦%.¾ðºf³ëmÆbæg_tþÙgsäBÏ7·lÛrûwß÷ðŠfÓ™;t„¦í¦Ûn Å2˰q Óë~¤2Cáð(œ·Þ»”#bö{G p‚À‹$t™æ´½»x‚Å3Þ° ?ÈÕQ> ‡žÃ±Î}z_¦0¬‚ž=€«à*ÜÅ`dgÈ`‡ºÕƒƒBpc=(/LD©à¼ºßèê¾VÀ+³%Éà8l Øq;ž@ €‹Wé@ëÄ`iGË ê Ú«ûÁ,Ð`VAè-®‹À—P`Ð™ÕØß3‚LÀ¿—Q¸šóŽ[ï¼á{×9žÿæ[oÆ™˜˜Èår¶mÿ¹y ®—=þÿ|ý™ÌÉív³ª<¶}÷–ÞîþryJƒÜ– gFŠÀKçÓ©Üïo¾ó»ÿúãƒûÏÝ:úÊŠÿÆð­Ï¿ô½ï}˜Þ])ôg7lÚXmQœw]¡«ïÃ't-<8?¼mç†õO]~Ù)0I$Ò=?ýSŠÚèë÷úz Ž-)îÞ»WÝwߪ7¼ÍpI9žyqÓïs¤x7Ì­ :ü°oÛº·{×ÏäÊfO%Üî\¶05ùÒDe-Ë BörÏÐiЉÎTéÑFrÐçuèÇc’¦7FÇïL¦ë"UE<‡†¿¨(ªï¡JõMC’Œ< å³_`‘Hƒó†¶¢OéúÓÓ¨« í܉æÏG²tC‹¾Gñœ¼c×oߨi!†Fjyä×ëí·*Õµ®Îÿ²¢Ø²LmÛ}S2þóÀ¾ã×õ::hΗ:Ƥa­¨7Qþ –»þTSYf¨Ø}!Ü;UzXÏŸܦ+O8J$?AÑN­ö€ª dK5tØaW˜:2¬&ø3]º_3ÑÁ}ºÕŽcyÙ˜œ¾»Õ@P;øYª ùsO!˜„ÌÒi4‘ñ\ÇEÙ4® \«$²ñ‰±›ÀÃdWÑW¼"•NÔªŠòE‰yk˽‰ŠÇ®@6͉YS§YF°,›ãxÓÒÞË©äìN„ô,pGI$‘DI$ïOžG¦·§Ñ¹gx|¸<µWàcZÃç8Á4k±8ßVZ’kµ-I’ÚZ9“V­\ýãü¸ÓéLrÚi§y0 ãà´®áu®™lvÙ²e-U[¿i󮹑£?êùVÓºw|ztïž1(| ¹Q3xÀÐ2L5•Š)ŠF,AÐkV¯_zýM":qÅê¥.1½nõóK¾¿”Û>Ò;§ÿå7_騉³Î¸Î0éDNËÑt‰7ÎAùÈÚ¾ã®\ÅåÓxI‚ðÞS)£¹ƒç7ÚR4*.I¥c[ߺ•ó»,ÎÅmWÙ¹ëžtuTô±}njj2‹ïÙý€mááÕdâBË· ™Ŷ‡÷>dèG_­4ùéÚøà ðÚ·ñ,Ôu‰·Þ3Û']RWÆcñm»~‘H¡”t± Òoí¼7“Á‰Ëtò“нÓ47êe2LÆs¥òõ}¬V~®ÝDCŸÓ­ÇkÆÐR^:Gâ$Q¦Æ&î*—Q_ÿ©óß¹÷%Ã|,W8[m 4Í 4á±L õõ]ÙêèÓ¥û¸ÊeϰêYAX葚©ëÈó³¹Þjå-Ä’]]â3«~[, E‹>;92©êÏ I )‘LÆvîZ&ÇÑt }àW)mß쨹¢Ji\–{eÂ,†cúÔ»[[GI$‘DI$“À»µˆ†êÜQ©×·m{yƒ’,Íz¾î¸ºié4ÃQ¤H±”i7Ç^óôš_üô†n”Ê¥m[wœtÒÇ$)®ªíp¾ \¸éL«U_³æ9Nêé^s3Gêypÿm¥ÝÃ{Æ=söÙŽj¬Ý°ÉÅiEîúØqDz"¿bÅJ‚ Ö¬^·ôú[DÿC+V/qÉñu«×c¬ŽLeº»6lÞÜV³ç|ü'®Ç3Ûê$A}ôøyÇ|PŒ%Õr}„f…Zų2±uk7]~Ég+Á’=7|ÿŸŽ;ö ã“UŠ¡+µ‡|„RÉ+L›`©˜áš…Ô€¦Ôê_ÚÁù‚ÁOµÛÚTåaÝ@‡º²—ÚvÁDu­}W¥Žº ˜äÒÙ‹S™B«UkµïmµÐÂ…Ÿò}²ž‹©ŠžL¦ÇÆÞj£ž®Óòâñœ§ÈšcÊ4§85SyèàC>¿wdW<ï´Õx<õæëçs(Ÿû"p!͸Š9ªë« ^œ|ú|dR¨bèOÚ&ìÿ¼mr>¡VZw€»é몫šú­ˆDw±‰ÚŽû4ôpeç\0ߺãèîlæTE5'ÆÖgòÈ2‘ï #ø;Ç*]ñ4@÷oÞ›K£têJ‚ ÚöD³ú´$¢Þâß—[uµù bI£É)tܱ߲L¯ÞØ¢ÏÚJÊ2BJŠy;GþàZháà’Vÿ& iÞqHhZ»=‚h9ãmó  Ïùó/@U/?Hø€žgôtL¼m/8Á¬ÓLî‹¦Š·>ø<áóšÙ(æ§Ê£ÁXs‚öÃi…áfàæ»{gFI$‘DI$ïKâX¾Réü¶Ú¬¾úÊÇ´2‰K³)ïé'I‚O0†‰÷-–ãðŽ¶ž^þìÒ%?0 kÏž]ÕjýüóϽå–?Äã2Ï‹­VHÎuí±±‰¯~õËË—?ay¼ôƒkn剳pvнe¢ôÎðžIÏ%´ŽqÉÅ—Ñ4ýäÊàÆ™gžá¸Ö÷?$ÇRA®Y³néu·Šè#ð®_±æ».9²nͪ%K~LÔF'Sùüê ÚJñ¢ó~í£"'8)®Ñ\¸@øàqÌœ¹-èr<>¼³366¹uË«¥©Ú‡>pÆ@ÏQO,ßD¢øžéI‰Lú„Óh? sÒǺ'›î­–uµ¤¶dD<©’牋ÉJmI"CCÍû‚Ö–ר+7BØZMþßw';mý©OE(‰n[+ _!j¿m•ö}Vµšû˜ná©`œN®´ßYO|Ì1}E_O¨­ ÃùôDYaPš@®Flu®¢¾ÞÏ«V§˜Oï¹qt-:ôªÛ±Õ広Xªö|NÑÛ¼H–+PJ$.sL;‘‹¿òömù,ŠSÿÈ$£šV‡!³¶W¢h’ [ˆ¬5÷h:š;t¥¹;¶=VÈz^LÖäÄc¢Œ›h6êë¿J©›ñøÂv»M¢.¼²Õþ3ƒ%>(Xh.Xñ‚“˜¦I$‘DI$‘ü•L½¢|r|ª~“á6víÜä9n6Ñ_š®±ò<‡$Iž—§K NàHF‡3/mxeÉõ7X–µuëÖ‘‘‘3Ï\üÌ3O¹® g|ßÅbétZÓ´|ä#6l0mëÙµkn¸öV]à!³éÞ8^~p9 EHºª_páÙ6 8žä‘GDQtðÇ;ˆ5kÖ,½îÑ? !Åšï¸ÔðºÕ€ƒ?!ƶí*ö÷o|õUÍè;çÌ_[v†¢&^v\~ùA ¦¥¸ËðÂŽ-­×^Ûqå•WÞ|㯾¼ã¤^ä;ñµ7öfLר4G ý©½{Qw£žˆ³àªœœR´mõQÃF¼ˆªU R²Œ H<¢…ã9”kÔ­5Ñig\Þj—GÇW;>:ôð¿ß³ãíÉò ‰x0ó’- -v6=HQ~©2:9}O"…&&Q*…rɳRb¿ã©£c„*ÒÙ·m_ÛÕ…z{O{fj oª€sº‹_#H»ÚÞ^¯¯•$@Ï3êM²9ÕySÑŸ˜Ù°ÅEŠŽªsp€ãè‹$:=Y½Y”Àí³»‹›ßþ^D‡ƒfžÉ%O­~ A¢t4å m¨"èÿTòlEóI$’ÈOg¸±±»Ú-|Å4ñÜA)†††.m7ÍÉÉeæ|ñèÈ[†µ]m \þA6§¦ƒ Ü ß''ý‘©»Tb_WEž¶Óu8é’䫯ˆ(éÓ•ûz%æ(Q.Ô+O¶›¨¯çtÓk›ê‹Í6Jf1ÙÉÌ)Ùâ1&ÅÑßå;ÚTB.¶”i¼hf߆ˆx¡ ?»(ç€;^FI$‘DI$•[ X š®t~×ÒË»vm¶-ƒñí¦žÍ&}ä6ê­îžfC-öu5Zã¾ï.{hùüäg@~årybbâè£~õÕW+• ÏãÍøLÓ$ðÆ*è´ÓN[¿~½aéë^xî†kn“ÐÅߌW^ôm À1Ýl~êS—>}çw ‚ÀpÈ¥:ˆt0~ï.Ñù8¼ñW¬ýή^‡³ƒ“;‡‹ý½_{YѺÏ<í®›’CmަLgË÷—\ÒÓkkFÕ2©Ç}mËÛ“ºíù¾à"I$ORíN!ÙSjîWu}9à¨#¿Q«¦ä–lèÃ4šÒ­µÐ‚Jå Áf-5¼T·P¡pžeªÍÖ³žƒ¸øßuåÙ=cÏ&JÇ)öÏÛµó>CG™äY²Ü§(&Ï$,µÕÛÛ§¥zclÁÁÝ/¿ôGÆG‚xC³må¡v¶èÌѱ•À^==‡Š²ésª•Ç+%tø¡_m©c½}©×Þ¸´˜ÿD³™ –MìÔí•àY.{¶© ‚䕚áÁbá È'êͶƒús_¨+{LôGœbvÖŒ–QÿæÚbáXñ;v®ÍæƒÖUPWñ¬B¾8ßhÖtM„úú>É l»ÝtøA@x¾µcÇ“àC2~ÄЂ®GYÑ•¦çÍý”G4«å`%:[ׄʪ¿¿Sÿ”O5QÛL“ Çãc’ÔQw±¢jiÛÇËë3)ÔÝuj£Ö6õÍ€þ|ìXGÑsÑGN¸è‰§HŽŸMxYèo7ÔÙýtlœ$õ™Áb pPŒp0’H"‰$’Hþv!ð,†a'«ÊOw ï}]à(Çà‹ù¾©é‰L&ÓjvVl·t†'[©L&ñÒ‹o|÷»×Ú¶½eË–±±‰3ÏÓ×;p×]w;®ê1:¢¬5kV-ýÞÝ¢sBÔŠ5ÿd×`¬L§º²Ï½´Ï<ë—ÈÍ“¼G–­lÖùÅ/¿$'´f­*r=W_õóRà iŽéò|‰%%×u}d R%éÖ–­·æò(>ß62Ò‡ÍÿèÛ;7‹­W_4›@<þ²•Ïþ{:™8â°ÅÏ?·>! F<^ˆzóyOC¦‹xk–C½Ýg/+u€% çýщJBèRt;&Ä,[Õœ±¾žRu‡åÔ;êFßE²p^±·oÇ®_$’ÙÃC*æ:ŠÉx³ÒF²ˆ€8ã±Ë{ûæŒmjh«p’’9 ¡EùtÞeÞ~gû­’„dé´¸8 [•†ºlr -èþd<ž}kÛÏóy$ÑŸ–cD©}ôqŠ¿ÜwbMãf¼g‹‡ö˜tºobòÑrqÔ©{ŸmµÑМ‹LUeù®‰‰Ût-:âr]WMEÇchþÂáûe¼Û‹*eh/³•åËâ)ôÚë÷qêêúxBîkécŠý$“ȯ"´šÂ0”a·iM&Ò,ÍÖFGÿF’ñ!—W[ë(õõ^ºõûÁH³ƒr=¨ÚÆ+©ãì¥IÅü‡êU“¦YÕj8¬«Iü`s!ÀÁpÛEçù GI$‘DI$IHD²xÌm²iýìÛgB…—6nêŸgZ2™¶LgºÜ8ìð£Ëå)Ë­%“±ûî}ô'ÿöïžçŽMLO—O>ùÄ•+Ÿ"¿Vkà‰†>AÓ$IÒ€‰=ôÅ ç7®½þÚÛeô)iMç瓕û˾-2dö£'|ŒDúÊ'G>{æ™gûˆxî¹u¦ë Ò[³v΢³ÁÉ«¾íÒÛ×­yzÉ ?&&vïÌ»7l~Ítz.:ï?5-îS:rê©GÝuà ŸD˲¼ÃædÑ!—FÒ¥$ÄH–îQT X¡XÛf8ÚGízóF§å.'=câív›eYé´Ÿ45”ÉL1Ÿ3lnß #Ï©tè¡_xý­[’ ÔûšãZ$?*lj;WŠyø9“SÛÊf.£‰˜ãQ¥‰<»{¿¨¨¿¯VÑ‚CηԒbm*®ÖÛÓ±œ¼gïí,Â1Ùž¢¢héTNW‘ÒqY:“ò­†¥+Zrk;! é Ž\`šU„Æ[Ö£ž‡2é‹=æ“t ø(Á|ž@lËüé;^,HÒDãvÃ@‡]Õ¨YŠõÓAÆÊã‘s-t~2}KöLMßÚVм¹Ÿ6ÛfK½¨1!Cr¬çR¢ÑšãÓ­Ç |Q×: ÝΧ «žº-C©Üyª¾ |K%.·LfªüÇXeÓ'2æÉ„ÛÕ¶Fƒñlަ1æ´›Û Îì´Ä‹ ³‹E!¹ý»b1$Jçöó>Ò\_Ù=ò,_J‘žÍ«¡ üh¡IÊñÔ`)I¸Ñ ¬#áfqÐÉsG:Ò‘Žt¤#éÿº^«”‰F ó÷o¼³ÕGå±±_þûoh Þÿ¥ÝRZ¢há¡—Ø1œÕi7^ÚôÚ K~`Ùö®;GGG/^|ÿý÷'“IŠÂß3M¼c1Ù…^xï½÷v÷ö=¾ü‰ë¯û½ŒN‹o›,ṃžÃœ³ør]×xàöBþ4ZiºvÙ%—ñBlÙòg<ŠX·æ™¥×ß& SÀÑÏþ«KïX³nùRÀÁ;7ÍŸwôÚU»”v÷g®ø7Íà\d‰’¨ñNúú·.ôÜV2–Ÿž0¾õ•L¹ˆê÷,{›|„°y|gÛ¦ÓHÓ‘ïáE!å:äàÏ!Ïl)wÛ긊å-–£ËÓVó^¸7!~ºÖù#MÀ](&)M«L—ÆSS¤3¹];n‚Z*%DR(“Bsç«61žî.ìÚù«Zås¨ÕB<úÚÒT ¹jºß¾ó¦…;¡'{|°-7…,JŒui5…ä»< ”dírå·¾zº¿LG0’ﵫÍ߃Iù³BŒ$íþM<Žò™oZj»iÞ -ø’Ù*5íÇt8îÿ¢ÑTHɯ7îÃè–¼˜½Ù¼\MÆ/ÉÝ–‰ÆÇ¦ªhhðêFã׎‹rù/BIŽŒ¶ÆHÂèØ¯%…+(Qö=`|ôð·Ø}u¹ükèq <ÇArerŸò}*.µj5NL˜Fç9QvÆÅyÓÔ+å›4c1-\øzy‘r*hT§;lõõ^kjŠ(uij++v:už†²ßWž‰`¿î}[Ìx³[RG:Ò‘Žt¤#éÿ²&‘™à=ÓÞ=öG’G¯¿µœd”óÎÿ„ÖøC¶ð+/[¶Œå^@j§¹iãæk¿û}UmjšöÒK/uÖyóçŽãÌšç‘$  V®\IÒã+6Ü|ブ.êvÃr_Ÿ˜œx{Ë뀵Za(–#ho$ìØžŒiQ‚”gXqÍê'—\óÓLüäf»¹qÓsdzküÁÒSõW ©ƒW?;áèŸûO-üѶ6B»/¸ô¸o|뮯© ó­×G~ûó{,+[íäAzMà¥'> 7º®çz<…’­¶þÎÖ7¯û—&cGµ:åËo¶¼±—^}êKo v?ÓS<ìé•»$ö°Å§_- ݆e"R!¹©ÓÎ<òü ?ÚÝ“£\î¥MïÜsûŠñq¯­?‰³J3‚›B†¥L½Ã‰¼eð'Ͷ®þˆ·Í"〷€tà“b)µ3UìY85±¢&H…p¯mä;±x¶ÓžŠ'ºjëµ /H€}–YGˆ¢™ÔÃ0J§’ÉöÖªSÁg¥ð u’(9žjc¼”r=ÀŽ"×!E!=6º¡Dð}6|A¸þH’aõ'8Ã#d¤2Z)Ø{…CHçż¡éÁ]à8åyîìÜ›H‚` ÂAv-4η# ¥3ÉZ|3©¾Vc NŠrZah- ·x2Ùnúr<­´G¥DŠ¢ývmnîê›?=¶ƒâSÐö`¢¡!& Zkº{à çŸÿ¾  Z Ï­)ðñQGýC«ÞB®…§(xØ7’M{ž…d’‰DªQÁîá ¡Òª %dY¬”*4K{ÐŽü¦™}Œ#‰$’H"‰$’÷+”ïxn»'/¬}þ—._fùcÕÆ®xB €%"›<°XFRÔÀQ«SÎfÓµZíW¿úÕðððÏþóX,&‚ªª<Ï+Š8è8N&“Áx`špid¸ÊÓ}?ù÷ŸÍš×Q*7­½ëî[}dQ4NÒùP;ЀÇpAH’öŸNÌ™˜,×k¥›~w—Ì-€«-¿‘“šO=Ôétt»žŠu7;My©XÚ²,Õlˆ! $kùIRžd.©˜m‘‘]×5=Dtx,SHXY±, ±<ÍÞ4GwRÅÍN!DÚŽqEô]Dñ­¹•¾b×ÄÔ„‡:2_PŒ&Bf69A7lÃG.O‹†cd“Ùj³Šp®ŒË&s•&àšÝ›?Ø´ôJs\bÓª¥'¥8xÛÔUÉ„ƒã–œÑ#8–3,#LW›Ó=sG&öˆ8A5« ¢Õ-=!'ÚJƒ¦]Ë©ÐTz·£LH†èìD"QoTiŠM§ÓåÊHO÷ ¯@!m˜àS2k64‰oÛöŠ•7ydé¹çZºôbÛ;c ç÷®]U%‰ìg|ž@)h‚È ucB¢IËi%d‰¡øV«Í"ÙE‚54Ö›Õxþ™(ò(†§xtˆÔh¨¶®T)$¹x÷ÞÇßìp8Ä™¨Á¢¤…ZJšÈ)—T'x2ax­—4LÃE®ÈŠU2*Ʋ,´x09WZ#‘Ê& Vsq6þ˜ Oå›Í¦å×%6‡wnDäœÁy;ö¾É ”3x‡‚ý{PšÉHS/3H²‘*3x`ºÜÚ+3yÅ. TJwÁ,P*ô‡gãe”„Z!¾Ð8óG'À Õv$%& Ðfú:„HfåŽU~”è¤ê€qˆÓADhìŸqn‡»€ßMÏêÚ=þV•B¼‹ô”Xhh8w(RÙb±0>1%9ŽSt…F¬‰Z:{ÁÄUâ,QIA›JÓAŠDeLW#qÂÓHÁòµ9”v‘M♂œñI$‘DI$‘üM/Ù—î˜5•“ªšÛ ‰”Hã –Ž{.K –c…ieœÃ_Òµ\äЬhZðšV3ÉžV«åú®$HðÆïh-Yˆ½ÕéVƒg’†Ý”˜¢m³"J”g»ZU²|¦eTm¤HœõEÌø‚HYª$â\Gi1”Ìø9Åi¬~æ~Ÿ*¯^ûÀÒ¾CŒ —ûûrÏ>³³Ó¤®þê5í¶¯ºˆ 臡IÏ1hŠ0\ÅFN%YVR,ä¿gzY¸@IiIs´L,Ö;u‘UUB´|+)%AF'F¤¦Ä.Äÿ?b*n¤#éHG:Òÿ7jÑx%0reD$Ó¬iWkix¿ÃkšD²€äð2 xC»¾çøŒíº€m¥“rµÍ1¼iwHă„”üJ¥¦§§rÖP|ùÁ8¾i!D¾È²¦¥–Ó©€”€ïÁ)Ã%šbœi4§X&%1yšAwÝ÷K1f®|òî¥K¿CìÞ»np`þ /¾.K¹—_Þ&I9ŠŽ3´l[>Ô*ò0¤\,Á  ”RËø3/”×é´lÛM¥2`¤O0 ^ƒÓétº»»išÚ¾}ë18 4M“ÝÅÁv˦)ê…Ö¡B1°Ùßß_.—FFFb±žSèyP]µ:­h5IŠ`uiŠ Ç’,¨ŠnÙòIŽgàÌÌ1'jŠkÛ>T f¡–l°HM††çó['&&àOh>ϳŽc$ K‚>ôÐCëõ:ôýîÝ»{zzÂÅDˆØ¼yó*•R/ƒ@“!°ŽŠÍø#6,ËCا§Ë`þ„¹|Ú¶ñVæP;hh2œß Ø_øIã`‰I¤#éHG:Ò‘þë5¢y: o^išÞˆ'Ç5²™¼e"ÏeÛ7M—a(’²™vËq]Uw³¹®J¥R(BØ»w/0 `¼ñ¥ àè´k#‰‹›º“LÊš®0 Y*Ouw€R‚×½ )8\„ð‚8Å04àçy„eÕZeÁ¼ª—6o~zÉ ß%¦«³™ì3«× b̲)O˜&©„($tň˱ŽÒ´ŒN>—@Èò|²ÏgßÃÀ>á(&JõV“£9‚¦ðg7\ǵìx*©+8.æ MÕ:J,™° S·L ¬ÀÆçÒ‰d£Ý2TMNÄhÒs‘kjPF/d MTKUNÄÿ(:þGŒ‰¹tn÷ÞÝ]¹.Åj¶bÉX£ÚÈä “cÓ‰T–gxͰ8†1øÇ“R«Q‘2›ŽKºA±"Ç7;m‰äD¼Q­Ï<ÃÚž >²çÛªbéÉP™´Ôh×)DQ,åÙÉpÜìà–‚O¤Oj¦gà´ª£VWT°?Ô?0Yš–‘ð·l1&×+UàõL2¥èØÇŒoÈ IiµyI„È$Ò)ˆ‰f]¹üÄôÜ þÀUÇ÷²©t¥^“®T- ôl gX–ÄãÈ ¬–už<”ÏäÁ¾©áXY†Àr¦cƒ5ö ½=ý}`zôÑ{µ‡ûôŸžt¤#éHG:ÒµF4`_LN8®fÙºãX²,;Žpá{tLNu:9&*jC’éŽRÇãPžåÄf½KÄi’ëíîq}Ï2LšelÓe ´i[©D²ÓQI‚õ}œ¹ó|GY×sk6›¢ˆ§úX ‚ ðè¥Ïд\)·ººŠåR]bñ„ÔlN "zö™eKn¸–Ø»÷ÁµÏ­u=`ðžt=Ц$×! ùâØè(ÇѾ§ù¾ÆÐ~°ÊA:“âã©d’¢iptldœ¢Œ%Ê•ŠÀóRLR;íx2Q«T¡I‰X|34î P’cXÐ A¸’4Cú,/H„#¦´•D*Ñj´@[†hû§ÿ. €ê˜¾‹h†—„x³${>nwGQÒ©ØØäH_±Ö¨P$FW‘‹5ZM¨±·¿oÛ;[»º‹àI8ä+H¢×n öh†>=95oÁÂf­ ~‚}ÃÒNl+-¨•f)h/Æ`ŸüÍs´ª+®íä» cã,Àn26%A¬Ök1IkV"ÀÒŒãÙ4í±<39>18g¨R*C”’ñ„í:J»ÓÝÛS¯ÖT]ˤÒU‘E Z ¿;À>ÇðP’g¹ÀšQ…G4öá½[az®+Ér½V‹Á³‹MLNjªÚÓÛ«k\¥) ®¶[-’¢:ív6ŸiÔêr\k𳧯wjb²Pì‚(µ•Ôh9v.“­7ÇC¯A+‚zÑŸh‘ ½P"gà.]ÕàIËåj¥§Ø­h*œÉò%Ðíf‹bhhãäôTwW‘¤©V£ g ½´Ú„«Ðkp QBžQ ˃·`ž7ðÓs\°ÃP4/ p g Âpúê‚'ð/Ùt¤#éHGúýj2Ȇy34›2,£Ì‚ó(ܶ9ø«>‹|꯯ş1Ÿ™¼ç½;w1œ;臤‡Éû@àO„'½€ܵø«$ß#öîž,¬[÷¼ë;@uŽïy.¯ÎZ­™Jf|Ï)äÒµÚÍ€)<9f$ÏóÃMÛÀ^‚@Ó´eY­V‡çùþþÁJ¥â{xØšaü­,xmIÂ_´S%HµZ Q‡—€šu]7t§Õ4úz òmS’b¼À]ß² Šb0BO8–ÝÓSÕÁÁ¹Ã{Ær¹‚®PW&›Ý;gnÿääX6—4 ¤P«Õèêêr<ÁO¼½ßè(P´¸»sçξ¾>8®Vš’˜„ŠjI²D¤ë:óæÍß»wŽ´¹ÛQê©t,4Œç¦ÕÃ/OƒM<ƒPס±SSS‰DÎCÓÂ$p&“Ñ4­\.Ï™3§ÕjA´9Ž çëõ:x%MKO§ÓívŒCa0Ô÷‚Ù÷Ìa‰‚¸…#õÐMpTšËåBkP)„(h,™˜˜ÈfÓ"ø%?2úú¦¦&Tl«²ïé)ŽMð<ÛÁ_7ñº»{¥mšögNh¸E¹R)ÕëÍ9spŸV«e’¤¡ ø…ö''§“É8 m©4ÕÛÛ_¯W†K$àÙ¨ƒÉdêØ? }øÑ#Ë"Ôl÷ƒqêÀ2\ÅðÌØ¶Ë²t±Ø366q€V€ý®®<Ô>Q®kÃ]ÿ'Ì2‰t¤#éHÿ7Ó>Þg‚˜ÏèàK`˜þpI¼s³ þ¢<š˜¡·ÿµ€qÞ~½þTÈ"Ä¥—\Ô1JzŒJz,¨µkV-Yr=1º£Õ7_·îUŒƒ å{Õ:ˆ¢ €\OKDV>—&|{db¯(s"€xq«¢š¯gt{áF)`‹¹sçmݺ ‡Â9Pøˆ7RétlÛ"Ù¶mÛG1= oeë ƒ§( ¯‰%9V.—«Íf«··Ç4­f³Ñ×ׯi*ÞNï@øå¸z*0õ}ÒÐ-`ÁééÒ@ÿM^ù¤ãXM´Zõt& dhNU þ d8Ó˜ š6wîÜÍ›7÷ööŽ EåRup¨b|jhÎÀ†ç7» <'xÆ ÅÓ<ÿBð‚&ÃÔ µ ãÿy^*™5tˆ6Î l ð Ž…Ÿ¦''''-Z´wï^è0 цV@Ø¡ `jgp9Õ]rÉ屘!2 û•W6n™uwwƒ`SÓtÀA 2 º«¯¾úG?úQWW×âÅ‹Ÿ|òI¨ È J®ü1 aãy©ž§©F"ë´U׳ ba“ÿÌRQ0ü}õ+_Ãs ™fH€Ú/n(MWÀËð#£Ã æÔî4“‰ôÔô46\òì–Ï<óÌ›o¾ú//—ÃÕ<á\ $ü Q:`.ºè"¸4þ|°Œ F `ç›ßüæo¼ÁÓO? ‚¦Á#tòÉ'CÃ!ª=ôÐÈÈH¿~dÜï»ï¾û¼_7þBÌe—]öë_ÿâŽÁ™puôÔòå/ù–[n²xSJ ž(8'X„…#‰$’H"‰äÿSñð(ð ÎâàþW‘·ßŸ$ÎúxÒá_kpÜ/yŽ|ïÂö)S'ÆA6>çÊðçš5ë—|)1¶s²w¨¸níKžçS4‹qÙ4ãã‰m¾Y-O_rÑgnÿÃïRÉ<éÓªbv÷ö½þæüà‡nºé&` *À‚XLÚ»w/¼ná̶mÛ-Z411Ų4œ¼À»ÃI?óãË]xQ(Z­@ÐÁððÃlÍé?üð£yä~ ‰… ~úÓŸ¾ãŽ;Þ“ýÚO€N;ì°Ý»w‡ÆO=õäÛn»Ä[Tc‚<{ñ+V<¦('wîØÃÐ’‰wbDçwÞí·ß~øá‡ïܹ®†iB@–¾¾>°LùtêÊàP÷ÔÔ$0Ä1Ç%ƒz{{ß;2ûžxû^1~Lî:餓|ðÁ0Éwå•W”PBcÿ ºD"î¸M“€€À‚´3Î8ã7¿ù ð«$áM¤í@à8Ld†D‘ sc‰DŠa¨Ð[@´:%z¶oßéyÎ'>ñɼ?•Ê(J[–ãZºnÎ;´yóË’$är@(¨:Üߎ¡.ðgåÊ•Lè&`8è ¼p¨:äþ¿ô¤^z饿úÕ¯PÀsÐÒC9ˆíÚk¯…Žƒ`ž“­[· Æ}xr üPƒÇÜgü…vqÇwÜš5köP¿ð anÜñ҆†ày;ÿüó×®] |0>88X«Õ ˜@ÛPÅ_jB$‘DI$‘¼_ ‚Ñì Bò½ç÷½=ß%EÊÿFüµŽ™(ÀÁÙÙp`!\Ÿ´paOÂ#ÅtÛp〃kW=¿äÀÁ=;z‡Ö¯yÑñ(Šæ\ßõ|ƒd]Ój&Ó‚oÛÇ}øœÍW#‡›or‚œÉå÷Žîíééùðñ~bùa¶ ð¨V«ÀûÐÞµð2nµ–é„ÃðÆ  —FJ>ýôÓ@xá¨ôøø8\mwšO‹`¯M›6h‚…|àëׯsE&$ωµZ=M—&‹ÅÜ9ç.þÃníë뙞žö}â¼ó.ܵs×–-Û ùâîÝ{õ\'öòù<à P&ƒåpŸÂ0«Bë†ð,€:a«*vã•W^6¼°$ ÷ÓùsÄ ¼÷†óóN9í”_xœªùà1o½ñ°ÔØØÀ À–¦+í©jë‚ .Z½úYUÕ!27n\ U]××4@ `n||ÜË€ÑÝݽs7 ·L&cšúì»?ð*ªVë}Ç{Üc=Ê0X†òÙlºÑhA] ¼{÷Îb±X 8IðÎFÙlB&hù@†‡‡=öاžz úh¨(',X'GGG¡L?ž±pÀ@“ä 'œ}‡PŸxâ‰ëÖ­ vÛa¡÷ìÙÞ†ßö9çœs}ôQxJçÍ›·cÇ(îÞ—¢ì`$‘DI$ÿd¿aÜ}©;"xSî~¤H¡`IpÕýàíUÈýö XïçC0¦Œ·šñ™Y,Au„“Dž¸võúG6÷öÏ_¿ö%Çe(ZÀŸ5ñM’³]¿í¸*á:g/þŠeÉ|®2iqäÑã¥ÝŸ¾ò7ÝtÓâÅ‹—-[oîŋτ-ÐÉ=÷Ü“Ëgàý ”ÐhÔóù€K2×=ÀK'…¦[­V,èyî¹çà… ïû‘‘‘ÞÞ^p@ä_ÿõšz½Ùh4€!–/_þo|ãºë®ûÎw¾v4Ÿj·Œ %™%vbrô¼óß{ß]@!áĸã;qõ굺f]ùÙ/Êr¼Ù¬Vkóæ;Î9ç¼E‹ûÉO~ò™Ï|æ‘G߀`€t–.] ôvúé§/[öøE]" 2À¦Ùl~á _ß|ðÁ÷¥œ`¿Ü ª+®¸â¶Ûnc\:òÈ£Ÿyæ)”%K–üð‡?p'Ï?ÿBßÃ?píÎ;ï>÷ܳ;õÅ_€ûÊW®ªÕm·Üò‡V«ñÿøÏ`öÆo'?~ÆYùBö¿øEø…V`¸á þF r¾G8®uÂÇNyú™'²™|©<Å2¼eŸ¼âÓ4ƒ·ö¹ó®;º Ý|_úÒU`Èø—¿ü%xxå•Wþìg?z’ƒÈ@íàóœ9sBÞš;w.tÖ#Ñ{ã7 s‹-Z455yÔQG­^½P !‚>ºà‚ ÷¡ð7°2ôÔ®¿ùKÏ>ü~€ß [·nݾön<øàƒÙ!¼ªªB7ÁCµÀ3 Ð|Ùe—Å~ó›ß„òP Îß|óÍP T*ÁÓø—ªˆ$’H"‰$’÷+dÀd°Ü#Àµög?ì VcdðòÒöˆ¿É`- áïûkßÁ{qpvra0 ÕqxclR'èI …ngW?·débtts_ßÜõk79CQ¢LÀ#Y×s; ‹8†>öØóæôwµkv±0wé~Ì îù-^¹rÅI'žúÒK–,ù~±X ?þôÓ+V€6zûú*• ¼k ÍHÀ ©T ^ð@oÇûQQd&¶mÛðÁ‹ù_°|Gàc Ä­YõìɧœºníšN<éÞ{î4@#ÕÒÁôI˜˜‚äy¶Ñ¬¤3‰}ì#[ÞyHPæC™7÷ gŸ]ÝUè9ìðE¿¿é¶L6ÑnO_wÝ5€hgœqÆïÿ{€’K.¹äÁ‡b¸ï¾ûø ÿüÏÿ —Î;ï51yú鋟}v%D£^oœ~Æâõë7üñ÷ß?àãÉ'Ÿ l 7Ъ†¹«O~ò“@ÏÇ{,ÐíœsÎYöè㯿ñê­·ÞúÓŸþ4z=Ó÷ïÀSŽgÛ«TK_¾ê«7Ýü»x,ɰωg-þøos#EÐå_ùêUwßuï—¾ô¥_ÿú·£££@Ã_ùÊW îÀX§vZ‚W]uð.ø6[éØb Èmö çíÁWå«pÈïö?Þ þ†µ®_~ùå€w²,ÿøÇ?ô³ºŠ÷*‡ÿšXüÏÌùçŸÇ]]] ÃË¡޽ð e!˜;wáGˇ?üáµk×~ô£…ãàÓÏ5 òßýîwPW8õðŸN÷ÿ"åþß$ÿ›I$‘Dò7 ‰— ûû>çÿÓ܇ƒÞlÖšÁAÂó ÷¯ÇA„—É?ûÿð²ƒaj³ åú"L‚ª`O¼ò¸µ«×aÜ»wÛÀÀœuk×¹IÓlðÉc‡bÀKÇum ·“O>óŽ;n¥ Žçåt&Éô‡?|ìúž;ù„‰Î?žü ­^û4ÐŒý4ÈB¬Ýl €)AÀŸ28î¸ÜrËÍ1¶m …“ÕN9å´—^Ú>#~í«__öÈC'xòŠå_qÙ?ü E1 ïãyÖ>a¨K3@4C–JS€J›6m4 8£¿¿Ñ¢#×­[ç8Þ)§œò†MCã(ò”O¸çþû>÷¹Ï=²ìÑ0)øØŠåguöÓO?IÑt&“9âÈ£ž|jå•W^ 0±p>^}@fýÞ÷¾wçwnÙ²°ì@½ã± ¤0êa7I`J€6 ç¿ýíoÿOöÎNªbYø}âäÍ‘]¢bDÌá^³bV¼L(’sÎ’sA¢&L˜¯ fôŠňv—Í“ÃÉç«êžÙ]dñ>|¾÷ô~SòggNèt¦þ]ÝU Öûo¼ñF€àX$êp9Ï>ïüŸ~ÊÄá°Ë/¿x Ú 8Œù L‡Ãaøhæ£>b¦ÓmÞü8ÀkëÖ­C¡GåˆC’xÒ˜/¸à¢÷Þ{'Kdee˜¦}þùç½ùæ[ÌÃ÷¢‹.xþù°Þ|óM€Q¸òÕW_ýÉ'Ÿœy晀PP~ýú§îÙ³:únWWWÈu„Esó„µk×2+ ¼Â„ŠíäûöÁÕ€¯¹þº··¿«êÁË:“ŸŸß½=7oÞ Gzé24 a35ØÙÿÙ+›]tñE›{†Ý»wüñÇ¡ŽÜÐysçÎ…}öÙg€‰lŸb³åb°‘ÀF'tÒÇŒ™uîuÅWðAEà\ÀVàæ /¼ª ,u '{ì±p(ÿÎ;¡=…o»í¶/¾ø¢²²à›-…›4¬K³÷…¡",Út4œÇïþú›V¥¥ÐÅÐÎ7ßzëÓO? WË+Èf”ÖíÆw}µ+Åx–€›ºiJ.‡E¡ŠK…Ý44:úêвtU×+_yíU·×{ÎyçnÚ´©C‡PY¸ïñÇûÚk¯jCíËm¿þúë„n:üÍÇí¿%¿ÂA’´ÿ8x8 ’4¦%-iIË_Pþ ‚–pA/à®]¨àOÐý,´òe—]òî»ïŸ{î¹ÿÜúz·›nØüØæ¬¬ Žz÷¾oþü…%­JBÁˆì”üþ`qq1DÍ…dddÂ5¯¹æšþwÑeggü}ÿý÷pàΆ Zµi ÷:笳·½ùÖU]»¾ðÜóÝo¹uË–-N§“ÆÔ¦hÂAPEš¢ÛþY–eUUáÊÀj@Z¯€5×^{-ÜÞ üë_ÿŠGc"á F/½ôÒW^±ëË]Õµ5—^vé[Û¶_|ÉÅÿ|ã ¨àÞýûzÞ{ï×ß~{Òñǵk×}û:uêp6~üøÕ«WøpG\IÀdjAh< ~ýú-Z´@ú êí ½ uùå—¬à¢ô‡ g2=lÚXil:ÜFHHšÓ’–´¤å¯'ÿ™šböÈ£7ÝØí…çžûá»ïAV®\Iš˜ØËUQV0ÌpùÃ?,X°ø²´´´¼¼ø`®¢¢îXWWת´%gÛÓ¦MËÍΩ¨<8uêÔ•«V޼¹í-8f؈áPΓO>¹WŸ>Pf`ˆ^x¡¤°®yçwîÚµ @sîܹÀ£G†:6Û¬À^P—¤¾à‚ þö·¿}õÕW:tz*‚[—••Mœ8 ¤rOÏ{]˜- ñÆoDº…KõêÕ î …€«à``5€9耤Q£F9¢A3ÂÅáÃfËÓà. Ö»woè2ÀAšÊІ»Ü{ï½@]~¿ÿé§ŸFðPhÀ€p¯ÜÜ\¸àã‰'žPu‚1ÿ’ãŽ;Æ PTûöí¡Ií„rÂE û M âãÆƒëøëêgÏLÆü¬ÇŽ —‚Æ™2eÊñljD``,¯8¦ý±ÍÆ5d,rÑÅ}ðþôðÎ=ÿüóaLC½  Ä}/\¸°K—.;wf¶O õÂÂB`M¶q°¾¾þß•„%úÏÿ¤º¤%-iIËÿŸòop˜ 4ú|pÎ9çÀ‡¨_ Sä` ŸŸÏV0Yˆ8æ7 äåå±å`¶.\ï÷KNIr`„dÐÓphb8rçΠ˜làtÐÇ@l@þüeß^—Ï ×ÔÔœÞå´šªªœ¬ìx4–ˆÅà,’2®ØM³Ô×ÖÁéCaŒ£°èÍ€Sp#øöúë¯ß¼y3€'˜,N6¥ìXPTøÅ_œ{î¹ðÕîï¾…Bª:vèyñÅ ‚uõ@™@-hž´¬Ý»wC¿àúÍ6+|›P1M ÆAôú>ýôSh%(É%—ÁPS J# îMÍ œ,z3\½A "€Mð°ûé§Ÿ <ð'45\ øéHSXÀBVøO>ùº˜óƒOà=‹äêõzÙ-ôfqq1ð4”`…’†Ð‡Š³5n6B 0G^p úZêÎbkçØ·ÿêk¯ö‡â¹Næb åiQZÂ’øÁŸ>`‘Œì7’.ô&ü —eFÙìÌ,øîW†¦ƒF†ö„?ar½ 3¨´* Th:6êþKËï•ÃiéHËÁìó?]ýF©òf~|ZÒ’–´¤å¯"ÿ@Iƒ:ËB~ ³‚e 6φaJ,gèÕ :Ã)@c t«êª hÈâa°XÁpü±ÇûþûïƒÊ‡áš¡HX·-›ç$^€kV¬lݲeA^þ÷ß~ÇÖ™0 Ä^%A„«ñ¼22OÕ-ZÁ@ Y\e¸Q·nÝž|òIøˆŽlYRºïÀ~–G`jêÍ@çÜ6íÚ}õÕWPr¸„S`XáN:1{Ò÷ßÏðôp „pYl(4#ðTÅ\tyÜp Æå¦.·A¿š”%&f‘qàšéñ)§œÂìpp:ð1´ÛèÆöbÂ{¸”–mÎk¶<¸…‘ö Ìì‚P)hph h%¨0b×®]áJJïáj,5Ôp®W`¡ýi4lÇ‘‹ÙžE8Æ\ªÃöº½Ø)ŒÉ …a<8$™ 88;7‡íSd>¿P5=¡Þ鄯St¸\P†¬$p¼KV6 aII ›À¼…9@Ãxî¹ç ã ápÓ¶mÛÂ`>Ú'ç¿. 6ìivË]ÓOþ8ØôÏÃ+˜&´¤%-iù É¿ÁAà<ÐÙ n…ˆ¼ h꽊F_jkk ‹‹@é‚êí^[]ƒ‰w³shw zçu‚JöPaÌÁˆÑHÑö‰'ž¸ÿ~ Ëü±Ó ÇÇ5µÖ9…[—¶LÄ⺪‚Ž/¥^)ÍVƒ™¾~øá Ðô{öì„…RhîÛ·ÝXa×®];v,--…’ÿ²o¯ÛéÊ/ĵB -8¸}ûö@Z†Y™1®v¤0Ôhös¹<‚r£-9ŠÓô}ðfX¡v墂BVBøðÇ=?Aû+#&: h3 MqªWc]£°–Õâ ÖbÐòPlh¨5t.°/@üI'-¥:ýôÓ°êú‡K1ÞT~µå®©»tÓjþyäð²ýÊ?úWì4¦%-iIË_Iþ „ÚU »mÛ¶ 8Y8bq̇÷@yYNn.àÑÁj¤:PÏ }‹ò ˜u°UiK8”´aé,‘ðœÈ¼\á  ÷@!€ À7e倀,+à ÀJœZ¤Rs9y ÆŸƒƒ§€Þ@ëwéÒå»ï¾Y{oA›A;@IÑàÍQ•‡õ ƒ6Ö˜p@|à³£ºÎ"8Z4z ÔÍå@{3óXÇ?=±R’Ž8L\NË0yÃj¡^ÌbZTPXSU- üý?mí;Z¡NŽ+WÊf Ò¹ytãêÿJ؇0‡Ãð'Làñ‡.K>¿^/L³` *˜ºxÝî4¦%-iIËÿ‚Àï0 ³Œ0‡ P¯ðC}¤=ñyyyß}÷¼fddTUUÁ›ºº:8%‰ƒð ^ZZúᇵÀ/>‹i ¿òèuÁó,¸1C"¶¹ÍTµ„ªº½>ÃÒÃѸ'Ëëryj\×Lb›'ˆÉöfU”(Ì/ŠÅ0Ìo³ÆV”€Rgv&Ô”nÌT‘Weƒñ„eŒfzˆüá \-hB1Xöøƒ òGwæfµó¸Ü±H=LËíCû¢El‹ç€E§Ã¢­©j¦Ó#4§>ÙB¶v̇9Ê`®Ž£ª¯mC‘˜µÎ„R”$¾ÕuþÆWMôð ´MÓÖM5‘Pâ FKPMÝ44´OZPshy5¡d»<Ìød¥Œm¬YbbÀJŒàiaÜfâU` ý™ ll\1‹oÓqõaÃÿT]Ãv)°å?̉‰k¡»`´³Tð:pOZÒ’–´üÿ&¿±ú¿½Ì„ÇlFÌ3õH8ª'''§  à“O>éܹ3ü¶³0p[·nM.·lÙp.Ú©S'¸shhHtÑྀ.‚hëFfn6ڽܧËSUWåÎÈÀR˶MѼ.g8v;eIvÅÂa“kžÀ ô€,$^X@ß4ð‚ÀOÞÌ `%P-ÙÙázõÆ•Dc4Â?D÷Ã¥ØJbVv¶IÓl°uUPäŸï¨nuq»ÜÐ{„ã•PØéré jS ·å€ƒ†e*†.¹/ÅÕQfqÐçóA‘ØR/n³£ŽØ wVݲ­~0`IDàt¨sï8ªëü!- í‰EÕn¬Ìp{`”ÌÔHôDB3tàfxMèš7çÛà hX Í&¦AÂÜqdG~vަ¨ÌpÅÁœ-¢Ñù§-(¹EÇUF“qå¦ãЏù󇡿EÁëñ¯{Ná!‡aFahÁs 㪨¨Ht8ÂÔM[ÊÿÓ´ZÒ’–´üÈo¬ 2WQB£y€®a{¥Ž”|¾bû¾&MšÄR¶~ýõ×ð»ýÖ[o!þòË/%%%;vì€C»té—PcqéeAö†ùóo„¢×Mà_׈C†7ºiÄ”„ÏãS•„,I–ªËN¨ç@yEvIK"ðäÈêm×cª³žˆ&²Sl‹ðDÓu£‘¬AQ&¯g7ýãwÉ¡ª×R5æiÅ`pÍ¥þý—EW5БÀ‚x»¾ek@8e¨Q0±EÞåôp˜¿š4ë‹Á¬z̆‰D Ö.ÈújIJÂ@;èbþ"GŠø?*6]ó5LÃ!ˆŒ“ÿ€˜+çqç(°´ b6¸©ÚÉ^`§7t;| ¨ déËÌÆO ÓR|–÷¿5$þXa%V5èN˜ˆWMG×xà¡üY$–ˆÃô&‹±Éüp„ƒ!˜]À6:¡C4îàä­ ŸöÙÿu¡Ó’–´¤å?HŽ„w„.à°ÀA¯× *”û‘âé²,6l2dˆªª;wî …Bï¿ÿ>â`EELîß}÷]àSO=•ñü²³P&L˜ÿ&¨t Õ›e·K‹†e— ÐÐT E¦Ú­Xœwº‰nÍ ¢@’ÙyüÊ#EQ·ˆªY$ªJÜÎ@Muv1†t1-ôämjAù}ÖÁ÷óÓ«Ë4ùo›:+Š+;˲ÂÚ)(°‰LSÕ B¸`Bª¢Ê4MKW‰ˆ.¡2Ì3™³Ìf­ƒ„®¡C›ÿŠÛŽäÑ|$iÚÎЭ, sš>ªëüQ¢h[rJ¸ü÷¢$¸R˜ ],"`Ø–¡h0z,Ü\H’Óƒ¦ÖAhçp0˜—›ä­¸‚od'ÍýùR³f{VƒJÑqÅ(PQt\ae›ÄTo?ufŽŽÇ¢^—.fùf»Š^o’é ¦$²ðç±Î¦%-iIË€„Ãáf?gäþìÊÊÊrssù嘷)$0K$öÚk¯ü±¸{}ôQ"‘DdÑFÞ{ï=À¾.]º0[ pCƒ«A r–Mpܤ~}g®zHÂØ!ƒæ-\ˆfBM#'2œä˜1tøý“§Œ¬÷õ\üø£h ½™zÏ[oÙðè&’•‰*¾5£b=oºyÃk[I<ÑûŽÛ×½þZ³8H(Ø2Û/«O°²&Ë…ê“-1+1âõ˜‰¸àr$íF¬<ÿvµ›¼úg]yùæÍ›¿øô³|Й͒aXDú­ÅîÃ/n$QF’¶"Q^ràJ1œª*áà’'ñhؕܫS ‚t„ê°¸Ó¤Iã44×ÑU÷0òûþûï;½Î(0²½.7’Åú_ö>öØcš¢Ž?zÙ†öv»¢‘73ÓÐu±aXŠMJ,æq{`þ ÖÔ­^¶"T[O4còÚUD¦ ðâê$~ ü‰Í›w~þÙÊUй9Øß¶•áÜ_íÔÒ|EyyiI)šÒ /;âuõîÜ<ü:Y8gîÞ_~YùÔf"‘4¦%-iIË(GŠ» ``ÀrmüüóÏíÚµ{çwغb³Çcò‹`ðÍ7ß\¸p!sWö³, ÎBÜw`?ÃAø¨sçÎð*p|C–†Bð@ÍJðgB[Ö§÷ÐӈϻjƬÜvkþ™§-¶HŒˆòúÉS‡£MÛÇ&LºµÇ=Òi'‘jÔ‚|ã†:BbÑH†×‡{ö"1‡Û¯÷/™3×g‰ûÌÛ°~ñÌé#Æ%™>"ˆÀÉMWäP8C}eà+Ó¢–$¾Q'ÁM™²å–º¨2†OM3Gßë¸Ã¯ú‹Ý‹–,œÿÐZÓÔ·X:bhSõÆñ w&M½Žn XÌÙuµµ×®­ßS.˜fvqQU}ufVÎØ±£¥¬<’ˆlªÔpÌíõ4.—ºý7sôرcÇK99v<Æùø÷žÒ^Eø1µlY–uUÓس /SqdfM%¡Ø¸¿Ÿ;÷Ó÷ ' ?ëÒ%ï¼G¸Éò¢†Ó-ÒgÞvˤç!²8÷Òkǽü2Ép‡@ÝCÓãšéÉð¦vÎÙNø!×TÄNÓ˜Þ«Ïä‰ME¼ž™3¦}ûËÏOl{õJ,Îy2èáTKTÕtXMUI$Dr¼xæšž®,K\\UÜNQ-$Ó´L·î¦­Sòs"Z¨ÏDlÜÕ'¸IU=‘s§ÝÚmÊkOšnN0Øb¥EqÜ—&‹X} ^ޝõ×åää3µ“ÜPÕ¹zŒ¸ø±÷~÷íCç/™;¯ÚV…,—b˜ËæÌ]°t1Uâ‘Ëü$+¬©Z‘DŒ8Ý¨í¢ ‘]C.¿jùó/ Ø$.8ˆÊ¡zCæ7©{ ”œ§´eÒ-wðŽnMÃÆA#.®}cy@qÆ¢D¢ûê8øÄú[—=þq{_àvj”x¼X*Ùl˜Pñ"À+Øo¼¦ª²ËeÒ‘Uá)ØJHÕTl‹óq l’Lº¹/n‘;q˧àO5q Ý-Ã5•òJgn1"E†hðį„ ξâÁ—ÿIÔ8ñJ$[B†R4ä·GÑ/â.¸x4óä I¬F^¯“D,¶Ùó¢‹7¼µ8*Å&]‰º9^q+'Ö N‡zAƒ+*¶ªÛVµ §L"aºö¢@˜Œ6®Úòòü’R`P5Wkê¹ØòÐwu ‚V­«%0ôîÅŽ<¾w@kÛz4!sGU~–yÏUWm|{¨©ÊÆeqÞ<̃D€ƒÒ)°ÖÑ:Þ0™Ñ”¨àóF£áLguÉÑh G…x\ÄLà*-áÁËáE‹D <°0 ˆ…™j4æpøp0ð‰Åqw‡,c\¸H¤¾Î———¤@¸f"³/J.yrs±õlküõ7ÍÙò ~›áÅ ÄY¾?™›M¢ 8ròíwN߸ ûÈ%Ú¢5ŸìeplGdŠâø•á¡Ñ‰[¸¾¾.77/¹‘V3“^U ­ õ±²pŽaòœDÏ•à¹À¹ÇI8#y2܆’a¬B¥àáÍÎ'•Õ¤¸¶$!‚œÈ»ñ1HKZÒ’–¿°  %¬¬, ·ýû÷·iÓæ­·Þ„^4rs0ìÑ£Ç /¼_|òÉd!i^ýõyóæ±o¿ý6ÇqÉÅâŸ().ùðCÄÁ.§t†`‘.kqŒrײ%懈Öcà4 Ã5Ó¦µów~ün›«.091¸óçNú‰OZ¾ˆx½sz(è±°?QêÔVµSÁá ¶mÑs¸ì’Ö¸Ê PÅñqÝL˜†Çåð…Y™‚eZU•|fÖ”î·M[¹š¸Ý ìH°ÿðá«_|D#Ä—E¢4üÑ5étà†3f<ˆFç÷¸÷ÄŽí®3|ÒÐA3—® .÷ØîwÎ{z3‘9ÔкMl‘„”9'jN)¬[¼l9°I,Û úÔWFî“G Èù£íY§/~ýÕ“ÿõ²*™N&þ Ú“&¨PFÝÂ×<˜×ª5êÔ¾!6â` U"èŽs2äì®+_}À;‰M-«Z2dü¸M¯e¨Šhº§ýãÖ‚Ö¥‚ÏÙgÔpjN”§ô¸¯EFNåî=yY9Å%¥Þü)\3뱇öª‹òŠP¡º'És&Leœ“™5fÞ\l 5KöÌ~ŽL9ÚÁ J"æu:ÆOŸ±fÁ¾³g½æÚ–%¥eee'w>¥²¦PÌ—›=rÑÔÂ6eJUŸÜ£OËüü¸a–×U/xüÑqC†Ì]½ª>P—“[ˆJb›â` TŸ™ q¿ÁÃ⽋O‚x]Kz ãÜÒ=+fÂáY*7ó®^Yy¹ƒ¦Mž7kš™P³¢æ€¥‹H®¬6ΣiS/ë>ýñ-ŒR)é?;Ô.Ï”¼€&aUõy|\4¶xìx9ž¨,/kuì±}gÍ2NËbº`b i#oºeÑæ'㢴켬 ôQ×b€çföXœ ÂŒŒZ´˜dà¾ÇM9ôŸ§×ÈSûöÉÈÏ Å¢ÓV>@œN¢k±PØSP˜:|„©hÏÛºí 7ß´vã†{î¹'§e¢ÂXäç„î>²4há<½®ZB·'Š•è(ã_4yº/’àu躇ÆÞqû¼gŸB^¥„¦Èno ©WjaÕ Þ_9í±ÇVΙˆEêË.Ù°꫆ýŽ‚K×ySZ2rÌþêƒÛ¶µk‚fO'Y2,œ,6ÞFG³PY6Óºòˆß“™1gêtb ÕÆØÚI–Y¨›»acìàAÏÁ‡ƒ®™»hÑ¢iS€öü«gm~Á‘y¸âjÙîÝ'v:Þv9+Âá¸Ï3kõJâpغÆAFc7ŸÒù™/w=4éþÏù±íy]FMž…QCaÅÔ3³(­5c&9*TVqRi»²=ûÇ?úÄ¢¡ƒG®[[]W-çËæOã`ZÒ’–¿´-²(ÑW_}µ¦imÛ¶]¿~ý·ß~Û±cG€ºßÂAfüà0©ÒçL+fz1™›äöûöŠUU«gÜßcæ$—/kÔ÷,Üô8io90j  šäÛ}÷6㩵ÄPfßÑ{†Mv†Ìµi…Lfó¦nØ‚ÌÉ‚A y@R"±MĘ®™ØoÀ¬ÇO.Õ×£z,*´#aŽUç!ýU·™ÅÎÆ">/š7¾Øuÿˆ!-»œpK»Ÿ|tsEYùŒ%ËçΞ1nõ‰hD Ƴ ŠsÿwÜ!䨉øêÙ³Ç?ô`Ä¥I§ !5õãæLíÛ·o6'g•vxèú;*ÂþÉ;·œ*ò×g÷0aÂ$MSüÑðÃO>1~Ù2ÿÁŠœ6-Qõ"b©][ÐV§=wKn"ÜÝñìGÞ~ŸdJD(ºæÌÈví­SžyÊæ¢œÏ;µÛÝS§Î„ãÃfâµk'.]Œ9U#1­òËoÖ,|`êô™¸Jîv$Ü’«M±áuê¦æJ˜„w,5fè°á„FÆ™5oî¤u«)éDUˆ$-ž;÷îîwxN§(Gƒ¥‹×ÕÖ.{ü âÀ·ƒïº{ú¬™ÙmÛÂñþúÚœŽí‰C¢¤ÇO>jò„i±ïŠÄcEç=¶O¯¯¾ÿþõOwR`i¬/.¹riÐeAnÿÎ]™<õ…çˆ!Y>²{ï]={<üÙ;±äÚ˜þÓ9 æJ^÷Í=ï:¶]{åÇ[^~ñŽcÌL„¯›cϹæ´Vío6˜tlY,[óØÆÉý‡É€N—¿²jÖÈÑ3GŒpÁTÁãïÛ·æ©'‡/_†;bKáM›D¢“î¸{æ“O·Ç„''J$èt¹ˆiŒî~Ç‚ù IL9øË¾ü¢MÏ<ÛkÆ4Û0¸LÏÏ_;£Ï}gžÐiÀ¤ûcõµžœì1ãÇÎßôî@ Î@“‡íqç]¹™9<áµu/½òÊ绿|øÅIM‘]+'N8hˆЭ)+×­™¸vú²dR#œmO>|ÂáÍ]úÀÊX¼zµ³e ঠˆró8¨&ê¾ýnù”Y>Ÿïž‘ƒ Î.Î+Z½xI¿Ù3áˆúÚƒ¹E-îï~ï´1ø6-~òi‹–Ç.:aØ눓k 7‘ªÞý|ýÂeDµÚv>á’ÞÝn±.<ãÔÓI‚`tÑÁ#'O[Z0yvÓæK–„k*2ZÃx&Jeõð»zµ?¶ÝÝýïƒ9ÿ‹Ý[^~é¾)“ø¬ÌíÈ祕³ç3 bd9â|íÚ„ažfÞ  Ìiÿ¸9/+»ß°0ðkñ}xèØQYyyÈ ‘ÄôC'›DâJ0^ÿôã£V.©®*+lÕ’˜dÉøû‡ß?ý£MŸsù•ÄåZLÜÎiç\4å¥WàW7KÉPvj\µxÁéq&,¶}‹H€ƒ1hö3ã_ïÚ°fa™µáp«cÛõ:í4áL˜0t¸DDãkkü™ÙYÁp¤¤]›a#)DÕ>§²öŸ/‘‚ܾW\³æ™çˆaÔñóOár¤ìYxñõ^ƒ‡âN5 U7;¸t[wßåW<ôþ{|É·ˆ\Ã/ïºäõ7³tbëJÌ™¡1ëjIF©ª&n®Ó Å€¹„ˆ[î:ë¬GŸ{¯PT8ÖíüsŸ{ç]ârE=hà¸Ñcr;tÄÝzJE÷üÕ”¢“O^5f|ÿ1ãqå´¨;·¾fÖÌéÍ·U…ËÍ׿ÿØQ£³Û´ÅpK€ø55#ÆŒY¼e Ä@muvI ¸\CÄ ¾a³œmXáïp÷úû¥ófÏÉ=ï Ofd×7+×®·jÒ8´Þžƒ¤°Ý’gCKN¸¶ëì_¯‹Öfçæ£É:Ä8çÂů¿ûákÏŧGô¸äv;¡ U‘GŽ0l()Î#yh%?–/œ>kÔ£ëÑÿÆK™#®¸n1L-Š2p^áÌqý‹·¿Ž#æ]ºÞû¬s×½ÿîÄ€¦sÈhNèŽÀLŒ;O?ë±ç¶œGpßò²)sfL{d-V!ªÜwãÍ-YAJ[ã’q$Bj«p:Ñ"wîº3FŒº¯û-N茻>à€ªêåë× ™?K©)w¶È¿ñ¿=ÿÊË”¥i<óò*[Õ¸;Y¨ÔææKGˆë™–´¤%-9ZìÑ£@Þ/¿üÂRжlÙrãÆÿf±¸Ù½ƒ˜ „¢Ñh^NŽ¢(š¢fdd„{hÆly×î²~èØõ‚òƒ•ÂÁxëcŽùN ŽÙ¸ÔÉÒ¾3ëãuUÛüíÔºšÊè×{Žërj]›‚;Ç\™ÜÛ‰!‚MÕ+ü°GqÇy"îÖÒtøÞýÃåtäåïÝóã«Ûß4yª›Û³k7ðUVF&±…¬Å•ûË‚ñh§.I HêÃãné6wÛVP.íúàëoÁÕ^såJPc ±Awß·â‰gpÛsQÇ&è;ëé È71ò.g<ûùÇt?¾D€Rkcó{öóösè jþ—\qÙIgÄêƒ5A¿'/·. jêB€¶¢<Ô‘¸u0¹Œ!®«þvÉš­Ê?ö’›æ=÷‰Ö¢n‹E‰Ë;åš›§my†¨‘£F–—M2[”Õר@}õ5+Z+ffâêV8v×å×>ºý¼(B˜ðàu„ªª2½yýο¸C»cr³s€×Ë*ÊUbUêVl}”«ê¯½óžϼöZjï M‚!l^—ÿÑ€ÏCnë¾ü¹çRað¸óŒ£–EÐëñij—jÁH•¿.§¨(¨ÆÇ¬\ *?Q[í*.¢,økW#½Ô‰)ª¯¼½ÿÀE‹HKªù2ÿÂIãF=±º®¢,/³””WO4púóÏRåÌ‘ÕÓ‡›üÒfl288aN¹¸Û´§_¤ùæxâ…ÆWï¾òúG¶¾Á\…ÆÝuwëÌÌ’ÌÌûö .gY 8û…籂åÀ1~? Þп_¸lûvdYŒÀià–JCƒnZ>l¸¦"‘˜šÐJJ[¶{÷ü—^"‘`X72Šòû^xáh.¨Luòs§öí=uùX$§çî«®|äµ­XµZ?ñøpo%p¦(&~ãM."t9õTx¨öìÛ+z]?íß»w»aûï¼óÎÇž}7B1lŒ!ÙÿŽÛ—®]ç(-2ã€áÅÃpТ~$º]]3¤û=¼ü2v:.ãâ—co»uP,Ì»$ÇÄËo8¹mûúH(?3»€s¾¾ãý9_½­ò ï%“'nõ­÷ô[³ž:)ñ2o°-§Akv·[N<ö˜ÊXÝwZ0'+×s0ªÄÕ‰›V‘èÐCüÑ©Ýîœ }d‡H¦ ¾×ù[¿ó#KÂl*PõyÃFŒ5“ä£Ã;ZOî+LGˆmÎï7`ÌšµîGQq+ç-Ý6¼ý* Ê ézݹ'tƒ#þììl- ê‰i¯” qÒ¥ïÙ»å‘'à)Ó#1øÙw°|¢ýOàLÝ]·Ý~É9çûÌæ1(©_3Êêëxù9ÜXéeÖ-[ ÏQ¢.\ZXüÕ×ßM{~ ÞTâmYˆèšOr¦]IÒ’–´ü¥åhqð£>*..–eN4¨äææÂ·š¦ýþR~ ¤¤äƒÃ\Iœ2æ±ECRc´;YrºÊ?þ¤4n<<n÷ñC.ߤ^Cf­XàÔì3O…b>ù"›8§:zÑ Wqþ¼[ï»jÅA^kqÖi¸Èk"Ùº)¸ÐQ@§³vËÐ%]]H"ÊférÊ(qâñô¼å¦ ›'’쯫Ï).FŸDP—á(ÊXÕLÛ¼nÀ¢˜³oº~‹OòuÝM 7<Ô5¢û-‹_}n‰]{ãŠ5Iv6EJà÷ÝxõCï¿a&b‚&ºþ†¯¿jÕ×ð™$!¼¯÷駬û嫸¿Ò[<èò«–O˜Î·iGj«ÑÆét(Ñ “­®¢kd6‰‡lÃiáÌX"êq{ût¾híÛo£bsRu_Y9¹Ï°é"yÞîW^þļ•œÓ¥„üD8«¤Ð‘Áçf–µÂÞãë}õë6=Š«ë$'7à ô6UÙî?ÀWÜ¢â»ïJNí ä„ëîyÙÀÚ)÷¼íÖ O=eø"TÚÇáÀ¢€ëd`¾›Ï¿à™w·cwÈ4{J} *xæ[[WùéîâvíÍ ß–K–­X6~ÅŠ$ûr)gÕA—8\G …e‡oð=ðö;$QöÔ„u÷¹g?òÍGx| û»ÿßÿ¾jÇ{l³%Qøá×t÷ØCr‹´GDç^ÁàÌN`dÊ3öŽûæ­_O$iÆ¡÷/+sÑnàéØÁCç½òŠôó/VzH <ïÜ•ï¾î8P¬xDIÄœùùzÜ=¢ÿ€l·[]´ú\÷n7mþ×Ghÿƒ™†e¹ñ†ù+WáÆM(—¿þÞÛoøb}-ÒÿÖ[V=ò(îF‡šV×*Ñ™“z_|ɺUëL%a´m=aÛ.€YF"ü}×_ûÐ /£’$ÑœŽ^7ܰþ•×bõµ²Ï'ù| æÑ4ˆ™¸=À´F^sÓ¢§žB/]Ž>*±Ä›o^þÂâqÌ4düà±$#n'úò+öÔ±#§~ò:qQ'gˆÐ»ýIëví&€¶DØÍ0v"J¦”sÿU7̘0–tlU­õy<θ8œÜ‘xhÔwNšÕõæ‰[ž$€Óñ‰³úžøâ³k a,6è†W<õ4í R=–xú ¸¡¹þ†ùPæú ),$&?ìæë—n}Í™12òÚfM˜ê<¦â¯uÂôƒ8̰_8©=ZÍ5“h†öÃ^3EQFÓ#OV?´¶ßäñ$;“D£÷3ðž^…¾,°X3 èD§C,Î'¶nj<©ÞùI&L"=¸`mÆÕu>ÒoÉb%ìwåXÄ´gqZÒ’–¿¶-‡yo§ªªª´´àÏï÷{½ÞßÂÁ½e8Ø¥3â 4£)*»(°š¦ì?ÿ\˜_àrºH\é{áùkÞx…dfõ:ï’õÛß!.^‹Çà¼ì˜r×SW,är²G_yý‚çž'YîP$ÌÙ\F6î"ÒMrÉá„Ê;03²ƒãC5ÂaÑã½æÔ.gžzÚäµkP7ªÚYgtù×÷ߢg±®sG“×Q»"¨ÿd°b7Ã…bƒ®½zÅÇïÂY½/¼lÝÛà˜¾W_±æW‰SXôóýãk¼t)‹ 8¯ß #‡yOꀪWj>ûlå#§­XF ‘œ÷¶¯òÀ´¾@d‹ÄtõçýÍ_:`Ù jÁЇ¼`ÂØÑ,‹TWøZ¶¤:œ·“jƒbNa“ˆ¼^çŸ}ï°)7RWJ´Õ­˜4éžknöžzRÌ_eZú3ËÖß7z :Q‚ÊJD î¿â à?^F%·÷†¿_ò¶·“ +BÁ٠掽¢àñêÚe³ç EŸŒÖC|Þ ={Ì~|S°lVë–_þëã-Ï<;cö´f,¡ 7aþƒ+I0 et_ŸO>Aƒ¤˜ÀOo~ìšntgg€šŸ9hȤًÔyºê“3øö[X·y4àƒ?4 ¼×ÑyÙ´€Z†\pÕò­À%Pݦ1“>ýò‹Þ|®ÜÂþ]¸êýwqF¶BæŽ9nÓzâ°Í„"HÎq—ÝtBËÖwA7AËóúøñ£î¾î–Nçÿ îu÷]ë·<‹.À4óͬ»îÜ[]³þ½p¥’¬º:¸!Y5jDÿ¹ó¬F+± áA÷öX±ùIêñm‘`hÕ´AE?wúŸ œQWwÏõ7<¶m©¨ 4ö½W_ýð+¯`™E9ôóÏË–.â°º4bÝ׿_fQ>—“Åb›±ÅÓë nZ7 D$S›;yÚÏoÿëœÎ§mMHÂІôPÜá´ÒùdPÆ5»~|é™-_pIqÛ7ßZzÜq“\ %™6b„GH<úÝgŸv>ý +3»:žýÀ2Ü…æóøüók×e;]–bȼЧo¿þƵîtÜD˜Xæì)S÷~õUë‚ÂI«WA§ ôóÞ_Žiß~Êò°Žq5\]³aÆ` `–Ïãkj¿¡ƒ Ž=†¦ÏÑB?îyô‘G w ˜¾üœË¯½ºÃ)'£ ¹¶Ö™—_þÕ×>¼1;ÃS^^>}挫o¼ñ‚K/7{6MׄTîTd@‹º¨›8~êê'ö0cÆôÑs¦wèÔÑÆnùÇ?òO; ׎BõO?-9ù´ãO¬ ‡”xbXß¡C† <梳†ÎŸ ëœ8Àð?ýºóɧ$8;‘!O^¶ œˆe¸|z•_òe»wmzü‘ýJÐíôdÄí¾}û ¥…$/ n¾rÊŒ_|í¼óÎé·|žVS¹iþò_íÊ<µóŒE `Žš°_÷ÈÅ­J±ýáš‚ˆiLª+õhȹè\‹õq%·´ ¿ºÊòHm}†Ì{y>“ÙåÈÊÌÎÎäa쌹­(¡0§[¹Å%ÐìÁšK–rZ—Q¬ª¬´£‘¬\_ÕêkkŠ’‘•™‘›KØ–mFQÔxÂ0,´æñvñqè#HÍQ 3‹ÆTEò¸òK[à4‹z ÍWê+*LUÉËËã%Ñ .Š9…EpeEÕ$gc²Á”ifm†Ù‚Eî9ó‚¼«Ö Dƒ>ÑåiÝ-”"ºý«JÌ*há°ŠcJÌ.neTVÇ83³M+ârXñx¸º¥D,.¹Ü0¡rÁsãŠY75c»®®2ì‡..ÌÈ• ¦º ¡„ëjÕúÓ)ûŠrqׇêÁ´F~~–‹n‚ ‡¢õõ E39‘s¹³ó e/Ý MP[eÇ¢0V=ÇOñº@ªkN·/3 ÝG@šQW®ó:» ²½ù¹ÔÖk5®(†¢.‡ ¿Š÷ffyK°•’¡¿qãš )ḢhN_¶žŸ¿Ç‚õujBÁ¤†ª.»Ü¯WÎÌ Ï‘hré0ÔiIKZþäH8xÚô¸Ïç{çw*++|¤$uè%ÌóÕÕÕË–-5‹ÅAC½ñÆGƒ„Û÷áÇmNëB$î»?étÆÙtYþd‹ôø‡÷>ìxî¹ðüí‡ïÖy¨fþ Mb5Bs0ˆÀ5`XÐDL‚†ÀáÎ$Ln*ØÀô!–ÄôYS$tiI ªbÐ5žî²2i €JçdJ×D·VÜ`' ɃÛ*Þç-‘ÚÛlMOp&'¹]Äà‰ÕD^ö:1g ÛÜejð /)Y"–a¥9±8Ó° nm²J¡ˆXK7x—Œ×´tKDw¼W,ž$iŒùLc C•m‹®ÑËDnÒyt‚‘Séˆ)"Ù2íXP±p,ô Þó;ót› -54¦nbDÛ ‘GK']j·iœa“nÝ4é®/¸5/&U¯ŽȰ7-H†f‹†kâ«Ð‚MãÛ–•Á¯1³ K‚÷Å•óxDç-ÉG¡0šŠ×ñ`þe¢˜f,¹œ<?Ü;'tñ°. .LÝÁ2ØÐ]J÷ŠAQÑØÆ’ §"­¯‡I6hí 5$1™¸SHk4;ˆ†Î4Pk5Ì °ˆÖ줇Y=­DÜ€^sºÑmÖ¢ ?,«1Ýî¥É6ðX:rLºà…ဲmÞ-ã^RK,ž^qœçPÚ&‰Šàñþ*IjºcÑÔ6µªnæ°1“̧&Qt¤Lxãâôx§ªãŽFÏP£ 68´?ªG÷1^¬+œ€ÿ0òŠešø;î ¡b,ÍÀkšh(™ÇP¼–fز+9G·›Ø”¨ý‹²…űd VR!&@ÀÀto&Õiª_ŽØ‡ØM⯾¡Ú.É´'tÍ 7¶k¶G8m‹g‘¨áöGó’ñ€Pº-Ú" KRÇ¥ŽÑ$Z³ýÑäc4 ˆ•Z%eêÏdã¹T>’d3%¿VpŸ#Þà ©$x|ã] CµÐô&P4LÕ¹!˜5ǧRß $õYã?žD)â26[›nÚQØâ6u[å’í '$sÈòhy²iñ9¡1µ{Ål.6^²i*¶&Ì, JL;Fß7©nÃ[}…,‰Ý—’ÝMi'“|4>JÒ¤Êà'…Ú ißÌTz7ÚV©g€¦ÐÐv2û¯m²TXT&.2^Ô²íǦÆ^ƒXAÄ4’Ü™ZM³½ñÈ0ܯÛu0Í^g6ôù!†mƒF09ô†JS›!Mׂã*¬›ª`ÓþeiÙìb‡~?0šÂôà¬TÀÔþ.¹w±×8Ö²<ÎØ >‘H”fæËÀ\Ù¬—éHãHrWnÃ6:A¢ãþ‰&/a -‹·tÂäá¹€©=³É³¨Ýž9ÑŽóÐ ¶¬Ñ.ñø$à‹hˆ†:;[n‹¼E£› ”JéS`[&fÙfåa èxü1 îíFvijŸÔ«ƒûŽ´£É8ž–´¤%-Fù ë &æy ¼çŸ^u]7M“ãšÿ݃²(Š?ýôÓäÉ“ á“7ÞxoÇŽGƒ<ýýUL=¦$|/Ó: [“8Y#š&lÝRác™Çœ¬ša¢LÆä³óáZ€T¨KS8Øhz¢Ê‰³tÎ6Ùx澘Zôi”ÉA–eº&£Ò K´©¶ÐUÃíP‰.PGUT†7°¦¢l˜¤Q$¶G¡ö~Ì"Ͷé€Ö -…»ÛkA¹ô¤¦9Í-[G&è~[—8‰c£&è$gshÃFë <§Ðc"®Éñk¼(Ⱪ±MGð¯÷¹¦%-iIË_QŽ„ƒñx\–e @·Ûýã?vèÐA£6{<|‰D^}õÕ;|÷ÝwáçuÛ¶mˆƒeûqð”S›ÇAÐà E^ÀåKª•xÄéñ!Ž¥XDU‡Ó‰6°„":1O®–²aü mj„kÈÊÀìôž}ú’š6Ør¯-³ßþÒOÑ€$Ø *í8Uÿ¸h%9Q,jE£‰{5´ß˜Q9¼ÃSVÓFsh>¸–ná)ƒš×N•Ÿ­;òI“HãÞÅC KÔäCMLd’òµ“')X¬d;Fã O 3´d‚´èQ€âRÖ4…Z‚DÿT(ZÛhQ4¤PŽ,ÙÔɸvvÒDREg+º”ò›F•fLN„&Ba‚ŽÆ MŽMŠIkÁ,;ÌÐ'Ö2&Ó3p¡`ˆ€_Ð22]^FÓ¡ë‰éÙ@Û¢€w²©Ÿ<£:’4Ðé¦A7Ãò\ÆLÙõqË Ð,sòÔèÄÓ–À çN^L €8J@­k¦„egmNxfy¢wGSmN\Öo`BŒŸ†'™‘f“ÍIš í¤Árw7ºèR¸E—4.È5\· jLרÝTæëë«rχÖLÄx>Ç6^¢?©K‚˜ÁÒr¼Ñd%YZµdê¦cÓÍ D)Ú"f?ä“c»ÂæØ~µÔ*s’!S>3–7Ýü@?oX°åš¶?IZ°éÌ…#©Nol¿†žàŒd;:©¨G/ ŸKµ5]õÅã8ÙÀ‹g2Ö§-'¤ö‹R`bKÏ’Í7ŽÚm;™>zqjÑsÒö×E³l™ÇA%jtÊE€É}òX€!B1]ȓ˵¶Õ¸ ›ÜpÁ!É&ð­Ð¸“¡áŸ˜DS;5aàès$£I7ΛÉf˜šÌIhinδÒ6}¤¸$ó™Ûˆ›&'ZÌׇРiLKZÒòW–#á`"‘€ßd`3§ÓYQQÑ®]»O?ýÔï÷É•Äëõüýë_ÿ>|8ü·ÞzKQ”;wþÙb1èØ¤ú±ÉÞAÊQþú@nv6¡^ÁP¯‹Â©iÆ ·Ï«jªhò¢CŠÆÉã4éµÜIRGš ›îdÈ¢¢Ó†)Ø–ˆ²T*f7n²™-Ei¼hãæ@…jpVê ]LZÑD´– ÑQjl»uÏmôG!I&Õ)ÌqÔʘԣ†•tõ%GâêŸaŽÔJ+׸„j§LDñÏdxe'¿–yfk4mK6‰È < Z*ð‡lsNÜÇ76Ñ¡„Än`êhË”ØæøÃŽÔS#°$h¦%;˜s ¼(òl³6Z)W!1µþ®QƒA?ÔÔ×€êÞh¯Å}“ˆ²2*vKvò†n‹€A1hÛô¦Ø2[|‡û)8¢›øXe±UL»!À!úÃð ;* Z βèb6—BÉT l÷'íW"I,¡éRhSà˜8†ƒ¼ Óôw Ì$iÑ%û_åâ3“µÄ¬Éyi0GZ¸†mÁ€O­eÁY+sIö±é@àSW5ŒäB}cìAÆÒ (j–ÓÃ!»'áX8Cp¡Ì%ÃL N‡´[§Cš£‹È”Œt‘Ó“³ÛÉlªq“®ãrÔ’Ü8„XéCÔâéÓèÃA0 G‹qü6âÄ3¡Äp€È<œ  †m›t‚@7å&[Þ {>èf?´ôÆèr¹‡ÒY’ÌujF—2Â\a<$¹¹CÜ‹brÞ•šþ5t™*0µôÁðÞ4$Y¤[)<š©&DÑ“cBd\h&­ï©½³iIKZÒòW•#á ¨oÇ#Ru²wïÞÒÒR`9 Í7ÿ«bÜÏ>û àaÞŽ;àà­[·þ„_üÁÅ0““隘¦É5`pD5 Qøù6,^B 1R¿ØbS˜HYSðMpéÄHm–ç’W°šZÙ¶}‚8ˆ¾Å&S®ºåb{ÇM\-3ì4´ 4Ü[E™¯!›)nÐBŸj “¶›¤ÀÊ:T•ÚM^›¼6XaØ­àªRÓÊRµdê†à™ý¬¡)TðeÄàÆ½†Ö!+ è“2à5ºã4u»áS8˜2d6i±¤eªI›§ ׄá„oâ8Ì7Y·í¤Çoá =_£ä ÚM(–Óþ{×'E‘õ«s÷ÄM, *¦Ï„ õPA”$æÀ‰¨È F@QDEÌ9+ &TDPQ0‹ù<½;L(°lšÔ9}¯ºv›–=àð Ôÿ‡cowÅW¯ªþõ*…ió=ÓˆHJ“uÇöš¶Cq;&'Khݼy³í–Ì3âí.žEƶ;–ì{ö:d¹D°ùÐ2MITˆ_¿Ù\‡6ØÉ„š§–ƒE9ð/Dh$;U70¹7Ûk™ Dšo;¼È7:› Èv<JPM\ŸkžÐ$KîÖ™CI1¬…Ø|>_&Ç=ËrDŽ” ‹'¶Í@UD»™ë4)§¢iZÕàYqVl"C¨‰€¯ÓÃfC].Ðâ¸h¦ŒŒæ1 gâ'5 á¯ooÒÎÀúïú<}6oùÁ|Çòmà­[ ïßâóËyë&¬µà1pYŸÔÙà«íâ™q`„¶ëø¨6ŸíÅFÅmEðÏñ = Æ„²lOé Å›¢ƒn`„Àkª««;uêôÖ[oáýÞÆ+ü1EQUuùòåãÇ÷¼þúë@—.]º;‹¹bsLØV£M¼ñ×'-ô S‹â ÖŸ Ý8¢&¦ÆlK3“Øp©~QŒ-O}Åȵè`c%¨…¼l"Š ’n mÁK3{[/6¡]¶"±Êi=RFË%RH+`ZЇpz´µ„…*µb¡u`6õë7íö[ÊlË¢[ÿ놉­gsc]ß(@´AQnæL¥Âåq(´2MylrÂ43õbŠ_ôiÝ(mMQ4š†%ÍKbC[9 Ù iÝžë"ûkð»½Z¿D¼`ÍmÓÄuÔ¹9%ë†Ca°ë×M¯UÕm½@×KS±_:YLAAñGÆ–C qSî[;†zKéà6Î%Å&@é Åv J)(((((((¶kP:HAAAAAAA±]ƒÒA Ší”RPPPPPPPl× t‚‚‚‚‚‚‚b»¥ƒÛ5(¤       Ø®Aé Åv J)(((((((¶kP:HAAAAAAA±]ƒÒA Ší”RPPPPPPPl×øÝÑAY”X ƒŒ‡à#ù×1ÿÀW|òÂlÓÓô¥̺hB¿,ÚšCÃö›_s¨9IAJÜæÇ¦÷EQ3~ A²ë¿^?­Lѳ¿‰¯ÅnÖGsH,Þúß¶ ¿¡¯(pv=OÍýfçLXò‡èáxCoÌú9ò×ÏËÆù*Ê»Ïà˜¸â÷̺4¿qÙûÍ ]ÏZ¯ÈH8ëʱIñ<ðÓäÊg}¦Ù{Ë…‹Z.ßÒ¼žƒ°”7È~¨sº6ûb™õ¿{øÁ 4]?Oa²×¼YhMzÛ./[¬·aQz̓7¨Xá=¯éo,%6,‹Mk(Åïÿ#:¸ò— é ǰ„lÓ’e¼ÁsI*Q;–Æ jTQ4Ž\1 b9乸w’øµ-KÀ‡CºŽ‰"âØ Ñˆáq¿e;Hàq² ÃŽÊ‚ë8<Ç«¹L4sT—£Mì²°_9šÆG#Z!IÄMÛâQu ¡ƒ3‘Å!cLCáe¤("[Ïá^з£>Çú˜’fòYð}ªà<Âq‘ÄÙ¶ÅK¼ƒ|Ó3Uˆœt™¬$i]Ç«&“ÑlA/‰*ÈÁ)Tsj´$ Q˜¶‹drTð-™áã¦Ï°\6›‰•—8XÎFB‘íg ÙxY‰ i¥iÔQD±E…œcK¸Z"PA&¯¡@W±2ržÅB° 5$àŠJAAAAñÃÿˆþÐÁ÷7¢ƒAË0q|މDäh´©AïeÙM¿óìÑ—ÃÃüG?îôÓQiSi†Qä‡o¹mø…AxϤI7ž//ƒž –Çý¢×lЮæ{®cèRDn\SªªB‡Y&Çy…DÍB7,ùúúxeyÀÞDõYN0‘ØQxY1$F=i6DâQ_á ÑuZ¦,RA(0B€ŒÃæ !U>aªy)u‘£Z†,)˜‹€*B—Éztñ@QÁ·¡¡¶¬¼ÒG^Á0b²œkÈ$KJ0*äQ$Žt`'qý®ë2@}>4R¢&û±Î€øÓ÷=Ï2 %©¯^[^Ù[éœÍͯ€0+$ºª;¢Â«–#‰˜º™T¤À>ä©…\è06NBº‹e_d`¸l¾¡¶"^ܡ6•‚ãY ˜ÚˆAa£“wˤIã¦Ü€-»>¸ŠmÛŠ‚y­Àê ØÔú†hE™Í°6ò€¤bópF–Íå²r,ÂòB:Ÿ)‰—p›€C`ç;–žwL11=4Rà7.ð6Aô-›`ä@As¡¸òyµM4êé–Ÿ²$!Ëö2*à‰}ÌÕ\Ýt|•'®ïò› qðßêêêŽm;À³V0E–áy.³vuÉ;@Ê5ð<ÑÌBc!á8¸u¶@üÅðÀ:ºZ°ò%©ÆÆzIŽ(JÓQ?(ieu#ªˆ9'—ä£Pœ¾…t õ²Ès(_Г1’ï«#ñžf±Ñóp­syÔh¢ì1 ,Ò’X}¦F<•É2?S¢1H ä2m¢¼$6J°VU£‰h`«´ã ‡ ¦ŸX.¦ámž‚ê KrØ/þ·ÍÅÿ¿=EѵAL]ç8.‘JAc¤käÒÒzõš;²ÑEÃιëñ‡Qi ñ臿ÛiÇÎÈ2O0`î s§œqdY+dÓAÇå:-àxÎ9 i®iɘ[ؾn0’¼æ»ï*Ë« ‰l<Þ”v]GŠ‚\ˆ£HГºAÏnøÀ_ @¶1]Ó)ÞÓ¾l%¢Hæò™X¢\Aïgeò¬éð%Iúk†å]̦\Ýà¢2žFc<ÕPøj†¹Ž*1Ó0#ØB‰¹[&›‘#mK¸®T0r)9²¯[ 6Çô]ÛF’Öò‰HBB|Û]o&ÿ´MK’dàRža²’¼jÅ÷mÊÛp›_‰áôš´"˪m—ÉdØPŸ)«(!…_W]ݶMð¡×Õ*ååv6ï™Hª(Ï:º€ƒõ$äÝ6áÚ˜ÏT–”Ÿ0â<(»XŒ>cy<Œ È1ä¯Κ ¹²”ÇóØç{Á´(üÏu°Í,‘ï¿ü²ºC‡Mµlßv˜ˆ¢òJ2^ÐTв 郀³9T’@–¢2™â4\KæDÛ±Ÿa¥@ÌxöÕvlÄ 9]/DÍò …¡ˆn<0ù&$0»a‚ŽÑ8$+úÍã ‚À¬[_S]^U©æ2Pö±dÒ³xàDYÍå¢ñvï8@¥±™Í(ä,+U^‰SeqIÆ`ûw®k#/d²1©‰dþÔÏÁ6]ÈÃùÀö98º¬ð†e)"ÈËv]‡g×pוb²CFA–Çör7¯sÛƒ,FDˆWsM(¯È/ËÁ†o[zÓ e%¸¸kkª+Úµ—™úúòD9jÌÚ"/¤â†ÊLŒ1'…ÁPcá¢a‘Ę>¦ƒž‚(¤   øãá7¦ƒ>6cAÇ@Lùl¶P(´Ýa È6î¸|Ì©g­Ú{¿'Ç_Û瘾U=º#[s8Ä+èáï»þúž½zî~p·ç®¾þ¨>}Ë{‰ÎÔ ÷|ØÆ¢¶" †éD$bRr ÇÕëë”Ò²ÇA|>Ÿ—$eĘK§Œ?á–©n6χÌT˜ÆÅdèR=Ïf8Aõ †²éq«3¾ª1v@0-ƒË–í視Œ— ÇC‹­;"ë1žoº˜sð:H×2ð *Ì%z^6WH–¤ÖV×Tµm¿jÕªvhLžB ¹µuÕ©T™ÄãC+›#Iø4cÒ䱓& }DTu"MA'MPDáÑ05ÁÀ„Æ0jCC´´ì‘;îdVÍmn~}Ó`}³h(c¦³R"U¿reùŽmÆjÌe+4h:âxÌ>K WÐ…ªÒF#—£òW|´\4í›o¸ùÇEmÊ4Kg•‹x`4xÉäES?úð£}öß_‰Å1•ÇëIÖ%åù84t.°ŠLpËÄÒÛ˜NK‰&@Zfuµ¬EË›c¦àŽ.*×µeNÂB&\IÅLÏmú˜ š6¶2ÀÉL\È·@¢uŸü}ÜÕã[öv§þ—ç]l ¬¯ŽÇ]³- ª˜\¢Àä鳫W§ªÚAÔXª‘ΩïO»äÒ˧ވd ñ F3u1 0¾§ÔX4¸°b ^ áó¶î àØƒ÷L™rÁ5W;éF>GѨÏc%¶'¦kÖ”–§ àmU¢14˜$g3*‰bGÀDý`ÙäK:G#J ˆ¾§êf^”•ãe QÇÙ\6Y^f™¦(I˜Èf (ƒØläì±Âr¼›/{Å-30ÇÅifóže³¼ÌHR`ŒgèúA Š?~{ë xsmG–eDz Êh4ª¯^çÄ 'Ÿ4åõ…¨1sÓ_Ï»òù9È×Pië¾û+ÊÊ{ŸxRÓº´Í̯,¿vÃTÈÝàÑ#î}ìÑQc®>ôظ gOŸŠ¢l]º®\ŽÍ¾û~¦:sú…#g¿ü¬ê8FF?gĈH§¶N0é‰g²³$F†Ûÿá×`ı*~·÷pŽsÓøñ;¶k·òçU—¿ŠM•Ú…‚Œ7mË ÖáÝ0qbCÍÚ=÷Ø-Ÿm}õ5wŸpá ×! Oš[ÙÂÓ÷<`ýTgøh"qÜewXwÆÍÓ»”¶ù×ÂwwÞµËJÙW#\YiÅE_€©" !ØÀØæ²ÓÆŒÞ}÷=këνê*Äy†®É±6¦:ÕÔ?q×Ý÷Úý›¯¾:ÿ’ËG 9ýÞ·_ÅFP¼‹„óÖ­ƒ8¥$¯>æÃkÖ|üî»5«Ö4Ô×s<Þu×=4õ¦ó.‡diêäIíbÉå/¼8°wï<òjLUiW~Îec y­ H2ÏòÕßÿÒ Ï›9UÍfÛ·« }°óxØM×?óÀ#'Ÿt‚/еºÖvï½N:÷쟫«;´kÏ8žêUµWy¸ÎÖës¹±]Š*Ë}òÈi—Œ ³¦ ?ÔÊòèG÷ÅvÓr¢<çùĢ粊Áý“ç×ý/ó—-Éͫ(™zuïë%Ëöêq9iãöñ†œyF}}º å,\tí]·#ÝD±`ŽÏ°ÍÅŸÝxýu»<ÊT˜ƒ÷ØOyÓõþïè#,ߟ_øÑ3ftìû—ïsug=û믿ޱ]û}»uCùÊf³ï.]vÇ̧k–šOgfLŸ>fìØ²ªÊ¬Z°·[÷ñ9‡m™𹼤D•?è/‡¿ôÎ;A~3(ÛÜüò [þLË”EÉsmˆ/ÕG.RÑÃϹíñ'°½P’0aÒt<9Èñx7Ç?8eÊQ=zìÒ½;Ϊækkf>ýÔ¨«®Bïz&‡ã5§1¤ßç›~ÿ¿ôÀ¦Š„MV^ñÒhL÷#.¸wjNd»Ü ‡ì3(ŸCräá {rè.½ûâY´âÍ7s :ít¾ªxƵ—_~Ê1ÇìyxwlwR (ÿǤkê8ÓV%:jР{ŸyE#ØžìD”‚Éâè Î%ÞøLÅ2H×/~Þ_Ç öjx››_ßGéì§ þëWu<¼û…G¸ûº›ÑÎ{L9ø„WŸ]]ýKûªŽÈð¯ï{üy#FTÚ'Û‰|¹èµþý÷ó¯¼O‚»žxEü'Ÿzóœç𨈠›6'ð"+c.I2¬³ xâÅH³pÖŽˆ“®ØÀ®uõkë˜r<¿ÿËç_ ¦]ÕýP×W¹düË>Úw? Ùx‡²­‰ç ¹þÕç ôqöM4fßÃo}ç=$[˜ÄÙâƒRÄ so½£{׃*I~ Õ¬¯yä™§FM¼ /ÿ±I“Üï Ž99øïóoG]6úþ÷ßÂ#›Ç{Á6ØeL­ãùr—wƒ%w–é‰'ß~Ç]¨¢ 9)çÛ "e%Žì׃âóùË{ôšöòKHWQY<غŒñ–`êú¿?øx×ú㕋E£p÷{KñÉ26îMèsÌ”—‚9kZDAqÉŧÙ¼å½rç={•Uî8xed›5K?øà«Ï_3&˜öÇöîsÁ=SwêÒeÚiçŸyƪÓúß¿÷‹¯½‰ „¦ûò½w·Ý³ËýúáM!«küUkf¾4gèmSj×ü\Ù¡#$|l¿ãGŒ±Û c1M/XãÎrË‹ÏáÄãÓqÐÙÝŽ|lÙ;ÁÚ ¨‘¼ÍøÇaÝò‚º R:HAAAñGÂoL=|ú…‘x¨¯­íر£mÛ³ošÑeMÃ7Ÿ~Üæ¨ƒÓ…BÝòo»qD]…rü…ç!Yy`ì•;iÂwß~³S¯nõk«ßûòˆcŽý"Áž:~Œ$EÒéTªá­$:$ #áƒÙN?ú¨Ù‹_G–‰é tÆZpf!ôôž6Ö¯ßãóæáÓÔTÜ+#Mrâ O/Z„Tù6òTmUÐ;¼JïŠáÃo~úi¼£X¦â…bü&è 9pF7p|ÿÔ£{? ù5¶Šx…ÿfæ¾ô }{Lùx °áõðëï —½æ”¯[2s_ÍFiý¡‘—÷ðýÈJ£Šr”v „Sô~ö͘¸+ZS‡Råõî{׋¬¶äÛ4NÁ›^l 8ëÈï›= %RxaœaáÍζ=ä¸O¿º)ÇÅï!¿r0™kª¨ï¸åšk¥œy`¢=jT}Ž}qÙë3>XŒÃÚ¨Oô×ñ³žA2€²ò‚»¶Ž+«IŽ8ø =÷©jÓ”ž•Åœg½ºôͧ–¼\ ”áìž½{õu,H[ ÒñãN>á–—žGÓAå,]N$Ä€ZŒWPK#ÁjÑštãÊ_æÍz¦mi…–ËGã±´¦ž>aƒÚƧXOÊe2©TŠ—¤¿ö殚vÙèá·OaeiÆØk®›>ãƒÚ=õTPóÿü>žõ'^0êâ['W”—_æßÆ_ýŠ2ycz#L„ 9س©éZD‰0d˧\ÄP(Œ5ròĉ±Îƒ%_Š&0Jç^¸Æ ëìã¯,Ä&%ЉÃ:ä¶™ÀÃTÌÃ|Õ8czuëï" ‹·Uƒaƒ£: _Ïp—vï~ûçï"ß04S>—+`uÊßÎ?eàà¨,ƒø*Û¶­ËeV7ÔrÆéÁ6ëü³ÎºÿÞ{P,FŽMFº†¢¯¾--Z†$eÐ>û¾ôå—˜)Æ¢ˆì´P"-¯vÌÆ§«cF^0éšk’8¿2µÍÍ/脇.þËw~½Hç¹Ýz>òÆ2d QÇö¹÷í—Piå „äóvÛ÷¡/>GÑ`w-“DkªÏ½ôüG^zóà£Àsêe§œ:}Á+ØjUpÚ êÌÀh‡Ð™G>óÝ÷š6”à…}Øj{Ù°aSo¸AÀY$\F@ò€CŽ@îÍkoœ<ô”!\:ßɉd~^ÍËòôÇî»öÕÒ «K«Ú#Ó»ôà£oX¬@ˆÙôß—vܧÐB— <åêk}Ç6të—ÚÕ{°ÿŠ5?íÛ³'ŠJ^ÍÚË.ºøÖ›f ¶U˜Ã“cÄ}z?øÁ’âÉbmâÓp ŽªH&‰º‰Ï!úqenmݪ~¬*¯À';GågçÏyóTìÆ¢pÎÁ‡<úÆ›Ø\È¡òR#ŸåïvÐ ·Ý±GUÇ.mÚ±ªSŒÆo¹ïîq‹æ6æSÑ$Pó3÷Úoæ'ŸàÕ®¬‹¹»"ý²fu‡öíAåFÛž8Ù³ôŸs:wðÒZ­ÚØñø¾X˜«Ôiçžsù OØí˜ëŸµO9 ÷̧žÃüÛp.=nà wÝñóO?¨«êÜ{µ!˦"Ê!]ñ|±ŠÇK#{sߢ×0s5 ÄÉCºu{ú³ç‘óÎÏ8ðY"Œ4Dþ‡ŸWvÜilñ$gýPë Å ¿‹Éb×vb±˜œÉ‡ÏUŸŸxÚ ×/]bÌàÓoóûìS±ËNøäèÍ̯c¡†† CN™òÜS¨¬tÜàÓoyô)Ä+£ºmÉËÈÁäeµk|Øa‡3nŠ'QöÒ¬Yûõ:¼ãû"ÏÆöEÝFŒpq¿þw¾òŠ`Æ€x®éî3àvy \Âè“N¹íÅyÀܽBmWE¶’,_¸ “nì}Ü Ì¶Ax~œ{þ¶ÛN¾x”‡ìsÏ?ï±™³1uegñ´ió–½~ﻯ#Ñ÷5Ó¨m˜|öE7Í™‹Á<²ëÓ¯¿±¨ß©C‚)ûÄŠ×ÿýã/N¸`ŠÄp™Zö˳xê)¨, Ò[õÙKæ½<ôª«±YÑ÷ßz÷¼E §Îz8Þ¦ŠuAï_lp§Ù²"‡;¾ab;Ã.™ùÔQÃÆIù"té°a·?ÿpw³“bñQ}ûÞ;oÞ]Z‚ïÞ»î5flp® ?¬GïÇ_]„Y2¨/®xèÁÛž~âÞo>Å< 0Zèsìý¯¼‚CŽFÝB~ÖËóO6Œçñ¡0ËŸ›S÷¯ý 4Ag`œ`xsîœ~â•£±¨ ܤãO^<eg ½pìS3‘ž>÷¼³™¿]nÍ»ï|øÅç'ümâLßiö“OŸz-®J>ƒêë'^|Ùõ·ß†ût0¿» ÿ{^œbøÌuàè×üõìën¿+ØnÌ»ŽþÔüy'œrª£Û©XÂQM>.m´ó‚‚‚‚â÷‹ßþÜAY– ¹¼(âSw Ã(jåzs'N>ªç%=qãu{»ë_É›ª‹3žË¹ÜÓ§x@×Ýõ½oê Gu=h·^}ðÞ^Œ€öyøT8 îÊb|Ü+YjAøà|8ïãůÿû»u™¼ K<Ã564œpÜñ»í»>=×÷–¿¹ä‡¾×4]„ÿÛkï®GŽOfÎg€»¦óöƒÏ¼ðÌ3Gœ:ØÀGp0ç^zQpXŒGNŽ^pÛÃo¼öÚGýÅŠ ±’Ô°³ÏÁ4Ë4ƒ]¢Þ¿/^»ê—_~^Íp,$r¯ý÷ßûÀñ¼a@þþ±ðõýã+Õ¶ÎËám°~Ï#ÚçÐCñ:HMûdÁ¢_VþؘͻŒÛy—.ɶUõ¬\¯¼ð­ƒø>Èp}øúë+V¬¨Ï4n~~Q:ýʼóî[õïÓ«_¿‰—ŒëuÈáÇ9ë¢çî×÷Ès/‰é í^ÝÿøaÆþ³æÝuEOÙy=÷îù”Šú†þäƒ y=ŋ˖,;¬ÇYäæ;rô¥P@¶ª¿6çE½®÷Ú¢×8(’H¤³¹3/¹Ó¨D‘Vøjùò¯¿úÒÒ4ßsX¸îþ´_ßÞå/Îõ úê~7ü„ Üý°I·ÞÜõ˜g_2JŒDƒV¼öö'~âá5BÞÐwÞy§ÞÇöã9ŠL«ö˼¹h”—í9¾ÀÒ£ûî]÷ÛlXägrÿü`ùgŸ~ªú–Äñì¸ëCO>~Ä™'3ø¸¨Rb ~2X޳=Žc]9ž…ôà¸ï‚vê±Çø{í¼c§ÆÆ¬(IÑTª¢}ûÃO:OèmÌf¾^öÎWŸ-Mem«à:{ì½W¯^½]ÔØsæù™üÿv§víÔÆÆ=wÝõÁ9Ï•rÀ%×\GÈûi鲟¾ûîç5kÒ†YµóÎí»ìzøÑ½ô¼ªàŒ„•K–|ÿ¯oÓjÀ»~ÿ“ŽOí½+¨Ü‚©w¼<þ‘' <ýÒÑç|D¿~ý]qéßÎ9ó€}öLÔc‘$¿óì3™†´]Ðêêwî²ËN{î¾c¿Xéz1{ô¾û—.~£Ïѽ‡œw¸œyÃŒ·–-8ìÔ£û¯ªD–óö¬çkê2ÑŠò‚ÂwÚc·î=z)¼È8Á1˜<µRPPPü‘ðÓAÌÿÊËs™,D&‹¢ã8ñxºÐ Ç2å©'£ ?øÃÏÌ–ã"—“d8H7ÇŸyÎÔ'CaÄIƒ|þ¼È,ñ\‡Å77 ô¼mY6¾ Œg‚ð’3$ÇýòãXIiÄï–×T¯9êØÁ6 Ós,6žœ?ë©]ºì–ΦïÓ7]½º´² ø€@èÿyó#×4Öê¾$Òh½ëàKç ðõŸ¯¼%Õ+K¦m½.Ÿ;¦äú¾®á£y1±Þž7·¢¬d$ë|ðÁM“¤*¼ —ãå+;uôx”ÕõL>Ó¿w¼%ÄvÛfÄÈ7Ë?J7fYU"±®à——š¤¾þ1Ôžï°äÐ;?¸žX€„¹Ÿ}ü‘ J[_ýýµEÈsܘ´ß‘=>[ü¦­YÝú üDz¥*ë|Ô‘Xà5u×]2æšÇûaÙ[šíÆcå?‰’ËqÌÇo/C YÙñÊâ) y ±¼ïô9á„`/­÷á¢Å G@õ–ÇÇ÷Dñо}0sÊk|,4èƒ%o¤qײÛeiîÁ>le–½øry4ÃG¢èú÷O?jdì#Žíã:N¾>]RZ¹|á"Ûq‘”È=Ž6 ÎqP­Þx½ŸëÛ¿_ÓÅÓ9 I‘¼ñ&2íÛµ¯­©îÜóȯ—¼e§R]8³XC…ŠõþKó"±D¬´ü‡5Õ}Žlª¦„ψvPp7ß›³gí²Ë®õõi¨œC¼@Šyþ߯/K&u¹Ì^=z|úìÜòÊÊN=»¿ÿæ"ðx@äZdä¢/_}-UV*E”¯¿ý¦×‰'àýΆC”O?ü ]ß óÂáG÷—_-~‹á9+Âpd÷à\nàõè‹W_Ãc9ß΋ì}ú˜ŽtШÍ*ÀË£¥ƒ üÆtPUÕÊÊÊB.‘Ed|¯}ç+:t„ÎUË »uªk׬ø¾c×}‘oýÅò½<ßš`»ä’:øgZ/âãÉÅ$¶íIÀÒ0W²ð!,ñ„o让h%o\»6UQÑtÖ Â!ت*D# õuem*uMcàp¬Èx&¶Áá«GÆÎy–$áUwxƒƒnÕŽóå²é†dUEc¾P‘ QôlF)I6.­ª(kX]]Ö¾ƒYÈK‰xpÀŠô¢ i j¶¢¢‹|ÍR“b”ÇKÆ|K3\ÇæQP$8.Þ³¼áÅá%u¶m ÏàÕx®‘/Èñ„§¬¬èêææWdŽ ö¬@Dør?,Ó¦m1$*|Ñú[ßcX°Õ¬AmÛ£¼- ¡®~U‰" ›àP^Ç“øÀ§9|ô`¡Pˆ)±àli'¸&óììÚšd»¶ ]Õ2‰ÂáX˜|uu¼m<؆Å:'Gìšz¡´'Ä0ð>9¶ÁHÇq PTX¼ý'˜E™F–çñD>›MÄ¡QŸ–W·ÁXA³ðž ¸,ç×Ô&*ʃåq>ZU‡*Rk J_R#Iôëi¦,KM’÷P¦¦6.I\,Šçˆñô(Þ­74(åFA"² \—çQc#º§«l2æz~NÓñ䞯ˆ¢¯êLZ¯cS%„ò"‡«­¯«,/Á»pð5‰¨… œˆËbSw %ß5kåÒ¼¹GÇ[…¬X’„aÃËúÚµJ²¯ƒôƒ´rÁ‘é–É+²a2#á›»ñÚG?—kL´o‹4,¬¥Éeaœƒw 10^u äÖ5…Ï糂çG•$*ðéÖ¾g!‡(yC/‘ãŒMj¤   ø#á·?w0‰šž9#c¶á¦ žc‰<ƒøl6W™LpfÐÍäTL2XÏR¡ó‹;®Ãûb`lkÚGá3ÁÅR<0¢w”A§è¸8|IHe`0½!¿Z&ÃK¢‰X†.*Šë¹@5Ó‚‹eY×c |Z ¶Ù”Ä]™Õ²ð~c&÷m“Â(H‡~Z»¦ª]»àXÌËjªWµoÛî§•?îØ©3–¬ ! ¹L>‘LjšÌß=‹ƒQ€‹äðn|e\.Û ³b Sfû¾7‚,Âc›âj¦ƒ^3ô€9‚Tñ®jrDžç9.+ʆº¹ùH"C.ÛàD×0¸^”™ih())Ÿ˜d”WL¿bÜGï.ýë)§7r$N„ˆwËæƒ;ß PXÑRÌ`XÓ³À—$t×8ŸÛ‡w¶x§³ÜGìsðÚñyž©©©mצ²fíÚª6•¦š—‚ØM`àÀqÝ`«u¨Ž… œøn¤™øøF$›Ï–çÓ,ì@A<Ž'> UÍ;ºYU^aÁ%l ª®«-­À7»®gß°WׯMHR"QÜ·Á˜ÈåU›EG€¦‹.()«izÏò£¦ÝÜŽµ‚ÖŒòøhELIƒðëê3¥±Ç5m<ª««M–W +hF,"{Ž/sŒ®YJŸÕçx6b9Ó´¢‚ì,>/|¡1™šÇXÝrf$²<)‚±óÜúÆLyE™×t)J` 5<¼~4Óµ|Ïg"B*§$úHȤëÚÇ*pP<þgâ-ì…R ß&RÓX/”ÄlŽ 1ÜžèeT‹ARE”=¼Aá2ÁùÞ è>žÕÆë+}&gº¶Ã•&èÚA Š?þGtpe@ß݈‚ÇqL݈F£à xL›ª*D®f5FKË x/f@"9o]tñ]Àøú8|¿¬‹\ÅÇ×|¹>N0±ð|$ Œª™±ˆìÖÕ|׋Æ"ùƆx*•Mg’¥å¶e1ÁvH ¶þD"žm³‚Ë牞ÊS Q|a+D…öÅ<ßi QZºÄ8œ`!GF¼™N—&K± Móé†xEô¦ïB]_p&±\ÐcXà+©xÒ0-Y’uÝT‰!™ò½¦Å ʇLé|äi+ÉVcF,)Á;mÌ×õµEÖA|ÂLp#-8Ðõ”_,Ë¥©Tcc&•ÚÜüBšš‹Gƒc«žëù,°õ€uúù<Q>\¼(‘ ìݽ;¶%ËÒ¹ÆhyJC–ˆï¾õ´êÚ’’>Úòͮ͋’íº2ǹ:”‡š…šýØf©ú¬Ï¥¿Eåa›ÿA~)(þ4øÒADb®LDªg8>ò9"#©²"íˆýš‹Ž‹$n½î‡„FÚÊM%zÙ[ÔÕÕA{ Ž¡ –e ˜ZBé œb—-|‘†š˜Ö]¶ÂVÄ»ù€N‚ˆ Y„ÀÓétiiéVÄ R…î§¢¢‚ü¹u‰$Œ™t] :èøÿ#ƒGA±B³N´pÛråmˆõªuǤ"€Lb± ”rú‚¾Š ¾’— (p¥@|è@€²ð<Ïc_P]˜ Bx¾‡‚WP“×á9¡™ýáñÕ::ˆ°=êœ|#æwp £2ºL×±9áx.`l˜BÅöÆfã¢×ü‚ ÂßÀI¶Â„ÃÄßÅD“åHºƒ`‹Âhž%€\@6%A`ƒXAoAh¤ömNéüJpÀC¨–P:!ŸÛÒ  Lñd J|Sëg¶Uý B#LÂÜŠ)$ü†B@Š’|¡m!Ÿ-ůš_ Š?~ÇtÐò-—á£Èbñ¦‰d ™Zã[*wðZ?Ç‘¡ëƒÎÁvšìL$éÛ(6Ù “¨I³-´J¡ãж-<´jÉð "´)[±üq‹âÝR›šHW6ˆ[/ˆ²I|KrK,!Vìg¨HÎ!ÅE„H·­”þ{´¢W­2ŽI¹âؘß[€ÐFvÂÄlËr\—t±„'‚îlÌypä{.õ+4àùë&|]iž%°¸G4l=.(fA(QGÓ˜˜èÞ0Ñôƒ ¶J9Ķe õ~!ººººpàHšàÚÚÚÊÊJÂ?4MƒÎ¦•pH²¡«N¥Rdººu“[ï–ÒØd’ÇL&‰$­áÅöR(0}èBInEª60ƒµ2:'VÒóÉ64nC´¢W›òŠ ‡Þˆ)Žð+|‚zïÓé4BŒ© ä üÙL”=+0#pÈ”q!Ÿ|úå:üQü`q ã7ýÑÄç0´žæ z>¥Ä œè™Ý Âa:˜îàSsRîEóÅ„¶Fm$‡Ø2ñß,Cf™`š˜‡`!&Û†DcâJÂgšH­ª©±H”L¡†Õü7Ÿ)&j‰k.ÄvG3¬¶Á+}0Ë·$:ໃÓ0WÛ ¢`LÃÀ9Â3å\q¡cÛgô[ÏôAìP‚¡1  â&Bgn`.ƶ­¿ÐÀ'ˆ—¼Üº&¨8ïÄ,GŠl›Ëg3ñkç—‚âOƒß+t‘¯9³ŸõŒaƒL …ž‰ &Ä' ³¹Ûi¶Ed55Yç ˆÍÙ‘ÖÔÔTUUAS-4¬„'‘Vò9O­Xû —ðM iøZi¾7…-wë¥Ð¡C"ü­Žz p 9]»vm›6m3ÛÒ–½Ø–Cº±ÖM ¨hR,ôò›„6Ʀôª/P‰Ú‡KW¡P —"ë#C› |•Ç;ì°Ã!X†é»¶‰8AÅäÐ,~PW¿Žað² ¿rYe乨‰8®·v|@/mø¶À0¶²t÷¯[rI ŒÀlÆeE+70þ1ë½Û,:ˆÐºÚE‹ °&¦ûPܘ`n<—0B †‚$‚îµk׎(êfEú«Ì„’òÚ:zZ¬ÒaÑ·‚mUÙ$F&(0|ÝÒô£¢Œo¼œã¿—ÏVà×Î/ÅŸ¿W:è ;g]>îúÛ¸Þeƒù"è™l„·H:,ÒQÍ7èÇ•ÿ*h9Ó±óncûÝËú˾Ŗ•Ö9 DG¶¦^uÕU7Ýt´Ðyƒ"!sétèÝm·Ý6~üøÖ%H67Ü{ï½_}õÕôéÓ¡-Þº–nKãÝ"À’ôè£BYBÈÈpàÅKDDÄuå•WÞxãÄJ·u´ìÛo¿Ýc=  %­K¬¸k„,têÔ ­O'hE¯Zñ5uêÔÑ£GÃТ´´tƒ±ø…zÙ?ÿüó;ì0xsÆgÆdÍ%èü‡ïÀ³èÀƒ»}¾|9¼Ùÿàƒ ©" Â2ÖõÃ?ÿÙØØxÀ¡‡â?Å@˜Þúg·»I4ïìþßß|#"VmÌî{àHâ]ßcQ“)9nÓò>Ž grQñ)3þF|1Q°T wX= {x)¡ï8L°­øŸ}nhú‡öñ²e@(:¼{pXŽ_½fõÃ>Z]]O& ¡ eò™ÿÇůRÐðN¥Rhóf'6d$\ZGðÍ7ßì¹çž­xÙ&õ—4ë$^xÍÅܹsû÷ï¿ )Ìx( ˆ~·‰|¶.1¿j~)(þ4ø]ÒA†Ãö?=~ÿKÃFB‹G‡d×-ôЕ••—_~ù4}ÿƒýÚk¯…Ð2™ „ÖºûMaKãÝ"@q^}õÕÀQB±‡¦ˆ-Š— ²yÏ=÷€÷±cÇnE³Nf‹&Nœrƒ‚rк•‘ÐAÒ¬Ož<2òÛvÿ­ ½jëiÓ¦ÕÖÖB_N ­oG!€çI“&ãë®»Ž¼ ©Ã“?aÚð{졇ÀÁyçDÁ)l„êÊ0dJ÷ƒ%oupÒIu0 qÞzÍõ~v`rçûá»ïŠ“©­ïÝïX½p‰ëiªj›x¯z<èÚ1˜uŒp Ï<,úUsYCÕ"ñ˜‹7½‡ôð¸ÎZª&F"þó³g«¹ü°óÏ~æLÇuO;í4F–Ó¤ÿÀ}÷¥3™É×_·fÍ"«­èó«4*w8DÙê$ᲨV í &€Â·n&܆õ7¬ƒcÆŒA#´i[šþ0ãDTøs[ÉgKñkç—‚âOƒß˜’íÁ—@–cÛP ƒNpÖ@B¤ër ¯pÈá†Æœþè­³ÎÁ=|Šn¶œ;‘™&Ô<ÅL¬z¡m¾’3>Š÷)‡6!(Ä;8#kÚȼ9®¸g*Þ3’Qh÷j1^pY|–![‡²‰…qF 'kŠ™1y€,“æxSñ¢¢Å4ä=Ꭴ»Êçó#9ò­Ã^xLÆÆÙ$1’“)È×VèñE&ňLŠÊ!¼vƒŠ Zð b{ ÐuUx.`h•„?!G-–o(XYlD\†{†Bê¿]ø•œ’Ê“<,“÷D—BùŸŽÖ’ž 9=xÿ}Ž>jÇv~àž{ú÷ï_ž*• j:Y„ ü[_|úé㇠A®ƒ¤@ή‡ÿ9仺¡‹±H0D`<×ñW¤³Ÿëê)Žcs²D쀦ª¹¶³ð•'ž|²ç8¬"“ÕŠ…Þ¼y²…—¶C–ÿª éhY©¯ ¼4-$‰³}ìŒsÎÆDR±;‚RÀHÆÛGxáÁ»ï>á¸Áå;ìpï­·ž~Æ©ª*¼¼3ȳñI–cI©…2l}åù …ÈøËˆØÉÐ.à‘ZŒ‚¦ |I6(º¿A¹yƒ-Õ+Ô¼Õ&8—‘'!÷¡†_äe‹õ—ÄB„¤‚þCvŠ—Xô‡ qO„Á‚öB%"i(Þ²ƒZ=I€)„ àᢋ.êܹ3„ |+LCxÂ$5¬³Å²X¼¬–tßY2k‰^»ãûK¿>¼Ç~±¦!ûŠéÇ ï·Et*ÿ5×\ â•W^‰Š:r2©‚AdÇŽ/¸à‚°ñ"KLÀ¡8«W¯~üñÇÃÆòí0qãÆ‘…ÉS¦L¬…çZ]zé¥$¢òòò‰'^uÕUÓ¦M#Í:i¼ZŒ—ÌÃB°7Þxc}}=4¬0ú'M8†÷?üð÷ßçw‚ÒäMŸ>½¸k„&"‚߆†pL:EÂI?Úb¼ðb„„AsL x“&M" ñ­·Þ’Nàþà÷ /leÒ6œË#Kã!@Ò”‡Gè…%Òú|1D BƒÔBf/¹äÈ,Y4räHÒFMN´®?ûì³{ì1ÒùA‡@A'OžLÎv¹ë®»BAµX¾Å >|øî»ï@DW_}5„E9jÔ¨Th! èøÝwß ù½âŠ+HdÀ 9üâ…‡ñãÇCq€/È NbiÜsÏ=PGf̘Ad…6AI,a÷FÜ<;û™cú,-]0o~¯^½°úqÍ•Á´¾þê+688ºË¾û>xûí#@ a:E_3¾ýÇ7ÉxüÇìzÐÑòRŸñƒ­#L°È¢ÿü£Oœ<ät`ãœïCŽ~Zñ=„¶tÉ[={ö$eªzÞGéñ,Û†©³ ÿD ‡Ûn»í§Ÿ~ºýöÛÃõ©dÿ>‰ZPTPW’—P†­WUr\<”;¤ò¾ÓN;#ÜÀX<ŠCA'Ïds(<Ô èx~øá¨žÅîA$ý-Ö_H*4GàBƒ,CU‚¶ýºë®+áßtÓM 7òr[å—‚âOƒMÑA¨&d[ýôSh_Ȫdr¼3´¹ðÚðì Ú5b-8ÿüó÷ßDMMM]]ph+Ñú«â6޾B1<õÔS$…PZr2á Dz£n¸Zü‹/¾xŸ}öqC[ ];´òd¤ÚÄ.]ºsiR‰236ŽM'ÐVh" ÛƒþzA bçw8=n0鿱Zi[Mˆ] ²*Ò€}ƒ3)Ztº0"\@ïä Ä ù…qèСäJ"ç<ôâþªU« «#öKè ¿ (zHÈd8bĈ6mÚ@¼-–/ôëÄžiƒ¯ è›!Á ¥06/ üP$ äüóðöxÿÐCA=ðÀá‹ P+ÈP±“µía÷Ö  ·Ø÷úøã>èˆøÛ¿½Ç^{!r\Ÿ B?öÕ—_–—–¥ëêËÊʲ™Ì×_}Ò!Á¢=ñܧËÞ+-)QóDŽE;ìÞ¢5[Ħ _Û›óø“'ž5 <¹·Î¶¬ßüTý·—Ò­–Œç—½ºî‡ãõðiOÏÿóË/Y‘ãÜ pÈõnûî Vÿý/¿ü²råʽ÷ÞÊ4¾c—/áqÈFcýó˯vßcà°?|óíN»ï2Ât0Øé (›÷æÓALBŒ¨ qëVŸ ,Í ùݺu#õ÷Ë/¿áCí€*Þáþ„AP“ÚÚZÈoUUÕ°aÃÂS¶H¯À/9PZ¨ÚPM@s€ÙÃ$"h{he‡Œlªþ1"«WaX.! ¬À¢ uý÷›Oé'Wƒ@ …ᨘŒB!R4ÝkóN9@»AŒ£PAÈzn–þWl çÄI!‚>ß…ê ]üU½ãŽ;P`à„„Ý{ï½ çë/ 2 µ„ЀM~öÙgàž¬å%z‘B, C(&ð»MòKAñg¦è 9Þ•´`ÐóÂÈsÑ¢EdZ¯E÷dèà¤I“ *AûðÃÉ›Öè ôè×ÉÔ'¦ƒ6Œ©ñLñåç=<íþá(Ò|G1 ¶“Ô‰ˆgÆœþâ­³ŽG:BÀDÔtîÌfƒ‹Ñ…G®ÑvñÌ iˆ©0h¸/»ì2034Cð|Á dš?xí ǃ8àâ‚Þˆ>úè£/4mÝ#Ñ â@óÏ£G‰A8÷Ýwß÷ß)AÍSÃàåÖ[oÀn¡9#‚%–h¡I…~…4ˆx$“2„Il*^òÙý€^⌨!вæº:~AT‡4ÁÄ í2ôX×\s ™! |­]x [yÂ, ë‚?¡; äh1¸ŽáÃW4ôÐ# á@IµR¾(èn!¿d¢ ÆFÐ+C˜kÖ¬Ž'œ«"\(""È)¤ (àW_}¼’ !@šl íÐ#)”Vèà—ÔBÀeјN§k–c˜¼(ýý“OA¶ût•͉‘è·ŸÕ°ï€ShYº¶¾ë!‡"ŸðþÅG ­{¯£L;È/à9\Û}ñ©YÇ;+8ˉìMAŽnøŽûÊË/8„H—¬4MC‚ùhÅW_í´cgo öÕtzÉ’%O:‰Ü2ÒX]½|ùò^½zᯠwÃàbQ¨Ø,œ³œ2­es‘DÇ¥i|4‚i¦ëÀšÓL·ˆB9cx×S#ìJ:hÚÏ=1ó”agã—QÙ(¨26G1¾aÎ|òÉ¡ç@è¹@S" ^&¨¢Pˆ>úüý÷SÁºIÒÙàðì‘#1 ŠlÎÌ™'‚W4Z‚¡šà,¼aŠ$£ð4Äæch<ŸGÍp¬ܒDZx‰ÉÑAh2¡ƒä¶îÚÚZ+ûpI°DÔÀæ¿ýöÛwÜuàÊÞúBTT TȈ5sÊ­Ð+²þ˜° †1Ä’G&HKÞ:Óbý%CÂ`ÄBÖ’%tá6ÛPñȤm1W#‡ùƒGpêd¨x$a­ˆšÌä‚Ë)S¦¯n‘«<ÔˆÝsÏ=¤©„€¨AÎd*™ˆšŒá7®¿àÆ–l²Ãš,1„”„ mII-#†Õm•_ Š? 6E¡ŠÁPêÿÙ»0+Šl]7Í 3ä8°€€#®kX#««.®Ã*ÈA’E0ð HŽ‚s˜ø\dÅ|Lb o~÷Ï=[Þâ¬XçÓKOwu…SÕ}þ>ue.„o³fÍ€å$Qj,Q ®Y³†›ÅxïýóŸÿÄí|ðÁ!à ß’x8¹©g™çC:ãã¹Tõ¾uö3o R|gºÃ*\®B>¬«Ãn}Ús×[zÁTH¾OÝ:ª:,aM8’*žo^bòû>¬ù(@roß¾pïb0Ÿ¿¸$n|õ§Ú¤ìxW _dxIÃa€x¹gee=öØcJ‹·]”ßúô鈃ھþúkÖ‡€!ºR‘Ïb¢dBÍ" ÑU\¥ý;Uk‰Æ[XXá„Qãêyøá‡esJE6Ú’k“lPÊfñ!Msta/j+wmjê·ß~{†½©ìà3šƒ€PáVÝŒ3TD@â^¼÷›6mÊ:ÑðÜ€dM4¿b@F,c÷Ȇ8¬Ct.a‘@8AÞxÑì%«9:÷i;ŽÄۣݘå[ce˜s„mØï²Á\Ueåk/¿rËM7»Rìç'TþÀK+WÞÒ½»´É¡ž}zÞçþ±ª¢—jd¤×¬[§`_ñigýÞ^áAKÿÎs+®êz«åâR€ƒ–G”ˬ¬\ºdIÏöÇë=P^VÈÒÞù¾^÷e´ ËÉĸåË/¿ìÖ»·…J=žÅ³gëèÐRÖ®TN+õœÓNBbÔòA»!˃ÚåqKÊ B _Uõ6‹Áp<}ÿ‡£ïÑÓ a…<ýôÓÊÆmgü0›0a‚@:fŽ÷~@ˆTw]á½Á@B´#Ô±£hõ${Üç—Ÿ=“'OÆŸ>øàˆ#з'Ÿ|0.¾pD'ÍÝRqT'?¹ðdOY·¥IbK'—¦L™¦áƉ'&Ù,V‘m£<=Np•·ÐXP²8&y~q’g7nLs´{ÿý÷ëÎ7Jûr;*ã5dèx¢DpP¼Ó¸ÿ†pÆ xr9äÑ1÷óÏ?ÇÃËݺuxˆÞÿýdp·ðâ©F“eùÞši©*OùÂä¹·ªzÊïS¼™ƒ¥ÊV%µ!¨ÝòÊìÅ7*œÄ»Ñéµ}«¡D»mÛ¶}ï½÷Ú·oÏmݸ F•Æ“››{ê©§âmNµŠöâó—2FÙ¯@æáÇCêS,á¯]¾Ëð^¾ï¾û”æRJqÎO|<±í‚ƒx?F 8íRy0iÒ$Ô&z¼%ñBÄË.êý®l·Ìâ!CP/bȃѣG£«Qz¸ØvéŠ1tèPL<äÎ<óÌ3˜D ‡ûìÁ•ÎçIXŽçJ‚õ†S3Á×ñ!SPlpåñüìÙ³»âØK‚ÂOia,øf' Jr¬MÊþô'Éá]»vÅ_q»A%”=øÅ-º“I—7è*¦ž,¢¥&øÖ²eËÞ½{ã^`A,'€TÌ;•»ÊÖ_žwÞyÛ¶mQ8¨4] ¸êNñ„m [W@Kn§+à÷oÛ¼Å[YuÆΪܿ¿F:ë>ûpùúº¨Tw ¢|ÏžÝ*oÛÓ;Z.Àweaá®Üì¶§žä¶ödÞŠ å ¤¦×|sùó×Þ|Sm¥y, ´á÷W_½ôÒK­õ†Iôz·eí8ñÄ©)>Ÿ÷…ç–ßÙõŽƒaƒÁ¢ìlk³øÚkÓ"ñß]µê/ù‹ °OAYÙ¶ÿÛÕU¡Çéü)ná`ØN¸ øf:0ºƒÁÁ¸V-8¨¯.>æœè$ iÚqâFÌŸ?ŸOœ`)+né›×tùSJͲ‚ßý­Ï-ÿNlzØ„G¼Ä,êyOá7ÞÑ#GŽä·»²C‹á•ݤI¼ã¸¯*ˆyàHHwܘpTžp @„ÜD§ 8~¹;STTÔ¦M›ž={ßèyâ¶«ìýj¼öîÝ 6L÷0dÃÓO?¾Q7f̘9sæŒ5 •É¡Ã(I¨Î¯a¼jQý”Ô·‰ÚÅ1^¯è6mwî½÷^€Ú‡m "N5‚‰\@hF̹¨¬M$ÑuÈ8}útpLƒä`Ø‘¸3‚é@m cD€È{Q ÆŽ÷>˜ÃÆ £ Š;¿X$X¾Œô‹1v€9ÀƒjÑyÔIë@B7Ô?aÂϰT¨Ýgë˜8L:–‹2˜P|wñöj­+°è‡Ö´Ô7c9q!‰bÞiïÈO¾ObŸ_6×ŲeËPã¢rQI^ñ¥Å)ˉ.T2h3z+Ö,‡T•M‹/ž/°KÔ~QfÞEE´žø2e Ó«`tàO‹-ú÷ïÏ-îÛÆ}~Ãv`¼o™Ô+œæ4´¥é¬Y³P'^‰Gq¼† 7”d³µQxnÞ¼™ÏW¹O¯¸Õ«WS‹ñé§Ÿâ÷qÑ Þ|OßàÌ·_mª*§:ðšHõ½ÊåkبVÛv­ê6±ƒk”«|¶5?¯ðw'4+-+ty|—v>_¥©jÁÁ(ã}3-Áéx+Veb¹‚7^¦üjìÕ«„:NÞ~ûíxã¯~ÀaàÜ…·6!ˆÆMÚíá‹©xÓ)-ÚEÜv©Ã/Y^^!Ê£-"†´à(à8 `ĆHÆâ*^÷h´C‡×\s êÁÀ!ôbl»ÜcÂy´xë­·âå‹×4Æ…w4 -¬Ñ ÃøÓïezײÏz¾ùXFA¿÷Þ{YYYttŠËg"'Œ‚R¸„JJ\ŠÄÀ¬lº„Ó$?v~q¾_¿~Äë´pG+»¨íºë®‹šA³¥Ñ>‰¦™@ $"€ì /¼Áš!éE0“ùDíè€HSá •¾´þ¤" ý— =·ˆNŸ.:ß¼ys+ŽwN8€å—š‘˜UU^ ŠÎ8ìOõ5L³ 4QQa!`„3l%öüÊé®ß°^5ÒxrC!t ÂK‚±B­Ka;±°C9¶þø  -òŠáܰ–jb,¡àfL»áxý"rB™¼ü¼Ì&™ÎHŒON7Wà!÷‹«Eq×›²ÏqŸ_>‰Þƒxù°s÷ð×XÊHÈ öÄ'††©Ö{C²nð¥JcDvIÿ r@-?bÙáÿœ{o¼ñ=/q˃Õz~Q€Ÿ©²½Ãϰ¨Ìæ?ßx :(d€<úEà Ç?þøc»víðaÆÍÉ–-[ãáÇ8C½žb|˜ 2oÎ>øð­·Þ:¤îб…q›å)¹¿¼–;ÃÁ<A;T­K)íª´LØ]éV´êýû½u›¦Z®$ÕhròŒá¦¨ÐMFF…ÁHxUéÖr„Â|ß%jWE‚ýà€õ‹zƒ¸ý§9?»‰¨±`gdû4‚|M2^ù2æ‡2ƒûã.L*Mm¦N î=öØcG †Yç¶mÛÚÚ£ÃI!£lÅÿÄ0Ñ(!`\>3H/Î3Gï—ZµjµsçNPLþ…bç—Z^e[< BxË@”h‰)Á  mpiøðáŒúA7j2PÊ {QÕìÙ³ñüÐARE¡>5À>¨¦Ú9¨HŒô¸°Iä•­ë’«tç't©¨´(zDe Ú(J%ZSÈ&Zss“S†ЧäíF‘Xús…`Êž~úiüâ«&;;[ÿx8‚ÄÙI(Ñzã¥Øç—ø`*íQÕGq˜ë ,B1ÔŸÜj½7Ä]cèСxGã’îtÌ×¾î¢^â°É“'£KÕÍÒ!úW¥=øû¼({5Æ–gÖj=¿~qÌ1øùÆkÈÐñDIà Ò4›¾úê+|×qw‚¥xMÑã63|]ã*„®ÓO?5¼óÎ;¨á‹/¾HAT¥Ð¡„^ ¶SaLÎÓåFbYŸ§J&,‹Â^åH³£ÌT_/@/Wn&êþùúÀ¦OŸ~ß}÷q›)//©r%D–Xš‹%n¤•σe]ÜÍ¢⟉Ú™*Kßl¥;B¢Í2Là‚¾Ù!C)'/¥€§ƒ¤Ð bß#FŒdu9O¥Ž¾yt87Š.D?™„ω 7>ñÄX‹˜t^Ö¡‰æ—[ÿflióJ+~ºéˆžrÊ”) ¹Äóñ›+_O®€3èÏ=÷Ü#{|œá*ÿÄ*ņƒ>}ú cA-¹mþËgƒnÿ”„Û²¹¯/'ý8“TW§¨E(rà’'£Z¤ƒã’’’åË—c¦P­$ë“ÕûsäÀ»ÞTÌó«bÒÉPA…ƒ#XWLR¢lM¤¼dâ¶›èù7nœ²Y7oÞ<|s”îJ‚ 'L˜€ÂÒº,0.f"Û ä f Y÷Ú‰}^’—W‡ýüRý¬gBy¦ú¹ÇkÈÐqC‰à d+о6ñ’êà§&ƒp9"ACuÂCÇ-|Žâ$=‘a;¨"®^ 4ƒû- JÀòŽ [D9]Žè€‚43„ñÉíNqYñeÂÕ†ƒ ¡g0SöË/zH ?-ëI4ºæFio%îMP-Çí!e¿©að0žƒkÖ žQíŠCÔ‰_Fä]Ô0Qy@E#QS`‹»4õ ÄòÊÞB¢ÈGsô݉mW¢l¸èÃTø+ê.nHUƒûöp˜%Oçðá€BzfÈ6ùËgé¨j¨„£¢nذaHT´ŽDó+$*ü’¡ %µG¨hÌÑs;µdT¡ÉIÉ©…щ ›àî]˜­Ý[§“NÙæ½‡ä³¾~TD/(¶‰¢´ãG™ÌËn,îÕ <³âÏNÌzô1J*¢¼”q%o7.‰PÇ[ H„i߀™¢G-ŠZoÊöXR1Ï/GéFat†|Žôê0Ö•è9+f:ÕzoLž<om¼hôCtˆVð+ZI¾úˆÔ%„§Øª¢ª(g©Ã$Ñbò+‹îºJ3¹ÑŸ—DååS­ç7*§úifäŸi¼† 7”$IÞB™™™xB´ñ³‡ÐM“ÆúxMÑê‰O¨Y³f–à·ßâSµÉõÆ’z±(ÏŒØùÅ a” ²ˆ!ftä*S£4ãtzTInbÚu lÒ™¬ël8¡HÞvLÿhQÎ@¯a»š¼ÿ7qrvnë$;þb¿¥Ÿ k‘t¢Žið¨‡K´Þâ>¿Ržè–›Ü@©îºb–sÑœÑÙ.Q»Â“ØçW¯lÄI>kò¢ã«OXÄ÷»Z2òÞ¨.Óôç(n訨çEE4 q/þó«¿„3<ù³Ž×¡ã‰ÁA2ѵãÇÄWýe™È -?¥¸MÁÏ?ªEpcóæÍñ'à nùüóÏ“ÁA‘j4ÂIàʪª —Ûár»œVd]k8ê7¸¨Â¸æ°0£Ó>í¬ Ê tZlz¸ß*I¢è¾*á?pŒ÷5wô$\0cë3l7þSðfÑe?ãl‹¾AĆ®óHÔ.k æ’¯? ‹ÚUQ¶ ÁíQ:¥„)íŒ>PÍ·]JtÙ#£xã6e0’AKtÉáH\Š èu8ßåbµ&°XÅ`¬(>suÒW· Õ ‚Hâί@L\%T’½<š÷Ñ=HfAX¡+„õP-a½¾ëGuº|QˆCkÃ0c­ÇØö_O¨S-þÓZWgùþ¢0ŸðM”gº5ª¬Æ¸_¬ê0ÛÕ)Ö!ªWú—ÀQ¤¸ëM.Å>¿Œ‹ÎO\½{ÕZWqA­œ¬Ö{Cö:äË|}÷mUÄrFE‹ÅF֬ўMðë…•Ç>/‰Ê³'Õz~užè®¿Ìx :(¤”Áמ/F0¥›Õü$ô ¡s!^GbG8ˆ§~ýúõ¸eÍš5Éà •(ʆŸt/°?½nKÆ„\×± [ÛÆ?yà ¿êœªÚ›Dº}*Îe9î@…#A^tQ$¨…o(n§â£GÛâ Kvõ¨{„qº&OEbÊĶ+ž•"ô]EÎÕϳ9É[ ­£?(£¿OµËzèñ-ÊkZ”ydÈ8urc]‚« ¹É(°ƒ¦Hı|ŽU7 paæÙÕ±K¢ùÕyB‘ÏI‘ÊŘ/*bŽn ¦³•ˆÔ'´"J bIy‚ÚEß©+Ei¦…ô)ûò:|Ë?á|"±JÌ( BiH·MäG>G]MÔn\Òw™„S&ï ñKU‰5¸ÿ E­7e›LÄ>¿J{0Å»_¾Á]ExÈAußòº JŒX‡öÇxéíß¿_¾Wå5(ó+Ö¢‡\]q)Ö°5ÊM;ªLÜòP(ùó«óAE‚σL°þ³Ž×¡ã†ÁA†§hܸ±²7‹ùz¡BGÊðí$6åL“‹ãV­ZáD™?üð®$$VÄ]KÇVÍa8"’C”vxã…‚Vþ—EÄó¤I“h×Ì´"}€b[—/( õÐÍ:Žá[[ìšE?G}g\“>¾ q‹¾1ÄúúNGX3ÉÚŠÛ.õO”[!;ã‹H G$ꇊ|‹ÓõÄÉ}Ìäi?ü°õL¢,D£yyyË—/oeÄý%Џ ²¼®ÕÐe§ `¥iˤ qNTÚ¦$—0ÇÌïá̯ŠÄûQ'Ÿ_=¡â<&Ó\ANê`"yŒÉY×ñ!0—LÔC† úÅ(I’:—_/ù½{÷r;—TqË;lŸÆ 9ñÄqæã?†œ:Dj¹ÿ?‡ƒ¡ˆ·3·Ò¸© yÖ¶mÛþýûË—7ý¹eÀ}ªÄ…BEÌÝ(P #hÔ¢"fRâ³&}X¡ ‹1Š„( pü%îeýéDLfggƒ{è 퓘ò8n»t,šq†VVÁñhˆaùTÄX‡Ñ#ÃvpWeg…ÂyÜ‚!È—7“Ñ¡ø·°{cÆŒs ³“keôèŒlž©êx†;¼:†à·ˆ®%àÓ+ Gúè¶áN;ñÝ„ ˆÃÌü&š_I3È!€‡àƒ°Œ_ GßõSvnÀ­[·âQâ&)»íŒ„Hþ´¢Ûhº}ûö¸®ÕVÀô…^¸nݺØrC† 2ôsÐqÃ!HMŸ(d» €ÈÉÌÌÜ¿?„47ò:tè°gÏJ5”aÎÐXUˆ~ ²HÂÙLPyd0˜8ÐDº ¢úéV¬n'¡ÎtOÃX¦$í6 jA» =ÍÉ“x­,Æø,h2õQÈîÝ»[´hAaOÆòvFȦL’©| ‡p£·¨»”­¸•Í8‚±Ç|£]‹R³ñ3@RŠQÝhæ7ÉüŠ–NÌ^ÙŸ¸ó+Ü“|ûí·×^{í?þˆjÚ«»D”Œ»x;¢Þ1* /ž 2dÈÐÏJÿ¥pð àáýÚíGË! €‰}ÇŽK‘Á6iÒ$?~Ê”)L°“÷Üs}oQÃĉÑÏ=z@¢£ 0 j3fŒ˜(á^È?€ËAƒ5mÚTl›¨Ub6LHîûî»oÚ´iÉ£FŸ¨d¼k´»råJ€-VZ(iÔLåÐÀŨ¢úÅ_Ä$áäܹsÑðŒ3µ :Í=ôÐCè6æðW ~øaâtO²bó¸gž|òIü<òš’îÚµ+ÎÌš5‹:$ŒH F„3L¢š„$Ê#ŽsrrV¬XAäGDgõöíÛ£!œÄÕ-[¶0ºÃŽ×£lŒˆ«Íš5Sš¶,ªœÄ¨ÁxÀÌoòùÅnAaÆ¿òz˜h~uóGßûï¿x¿úC‡bI<|£2Vó @ÕoÈNî'(ßñÓ’† 2dèg¥ÿV8xðl<¿â¸¿‘J(5•­YéСÄ-í¨yëÞ{ï…$†(b@ÈiB&»d (ÜY§N={öÕtY˜7o¤;CUã`òäɺU>$.·ÕÀ;ÚG}µAX¢?ÇǽD6¾@¥è‡Ï ¸éÓ§ïÛ·¼£‚ªwïÞŒ‰…Ö'L˜dì’››ËÄ/à$ Å¶K×nŒŽQ[Ç×§Or#EÓC† ìÛ8=}³¤ÃBUèðˆ#0vÔƒb8ÆF„þð^Bäb; -)áå0Ì9sæ‡Q™G“8Tؼys 0eïB‚󨟾«TÂq¨ÍEšî;I ºGŽáÀÌo’ùE÷€>qû€˜! hœ:L4¿Å,j×®ÝæÍ›¹¼&Iä#Ô†e@] _º¥£ƒ† 2ôKÒ- Åm&ùýAW$º/ÍÎ>†@DE¼"ø+ÆøB( H´nPá¡«;šALæää@ô2î"D/êgÉ]»v½òÊ+ùùùÀÊŽû?zôh*`‰‘ 5`ç ÆÕ¢¢¢ÌÌLÕ¡J‚ÅäÜBE¸:räH¶‹ÊÛ·oäÊiú&+¶] ð©§žÚ¿?ú ©>C¢£Beã°… Œ3†ÆmbéE»°s‡N‘!Bƒ ú÷ïÞÕ””àŒS‹Ì-Bar,éÚ ñï£i÷R%M ÀÉ×·ªy‹ø€KåÜ;FŒK2Ç" 3¿Q󋓃Ç0¡„¼?þx^^pÜùU‘X0²¡Ï;ã·ÑTÜ~=ª’G„ÞÇz uÂA ýÇdaÒÒ!C† ú¾nÀ„ðm¶$ÄùÆFe“x qedd@8 ‚aÀ‚gŸ}6;;[’±Œ1%Yy,áÙÂæŸâœR²IÌœ9“H¢¸¸˜² ÁÃnPeB×KeÛò—––ÆmW×f1ú GÎHaf›ã3”d¸2ÑÜÐÛ½”Áq‹-vìØñè£ Và/Y³fͶnÝ7_0)*xþÄ`éŒFuˆùÀä¡C‡¢ÀŒ3ˆWPx÷ra 2D@§¸k¨Ÿ†§Ñá¾™ß$óKóJL+øï°cÑaø’)$v~©&”„#iy%뿾T<Ç øˆJé†ÌH.¢ÔW›Nô“ÚVC† 2ô Ðq•rVTT9S<·'ìó[ùÑk×r»%UÞtOJ8ð¸Ü%¥êÔª­!Çå Yñ5Ü; ©K5¬ßÇ•_zj ¿?àTŽª²òôšµ&ÃsZ#8p ]2%ïÓ„ (ù Ì}š’Xi²,Æ] 6„蕘#’N „Kýúõ_TˆXT5mÚ4"Æd¾QÜž——þ¢@¢v™-Wüm{öìyÖYg 0`Ñ¢E›6mš2e YÆÍVN3ÀGãÆ™àDg+ú3uêTô}hÞ¼ùðáÃÕO¤E.p'š‹ú`¼÷Ýw°ª¨²Â/pþÄO ØèÑ£Ñ.Ð ú²o¸wÒ¤IâjU¹î‡Ë YÀ8=â‰0‡¨….Ã(ƒ¦%°Üoj~ù¸‰ïðܹs÷ìÙ3nÜ8É‚;¿ºÚ‘ò£fÜHΜ‡|bibHK¥íDËÙ,6dÈ¡_’þ;á`µ7‹¾ +Åãµaª}knéþf-›í/©}áÒʆuëøBÁ‡KùBuÓ\ùÞ²·ÛQP·?%Xە櫨dÔÌHKñV*÷»kÔW©î2oùSS&#FŒpD’“Μ9sèСÌC† iÙ²åàÁƒ¹õ aðޤ¡¶’ã…¼„f°eü ኚUÄßsòäÉ€&¢È!€ÇRF¡£Ú» DgjrÈ ‹h@Ùú0f9c˜¼Döæ¨ï‰R,q “;vì˜5k–²½pžû’R†Jµc(¶Ã19X• ¡˜'‡S#–…,숤b£r +›¸<ÿMÍ/±)­¨ð£Ê–XªDnéR•áf…T=¢†œœœ(l’,5l…Йd¶  €©0ʼn8Æ[èÖä5dÈ¡_†þká`uÈÎ[v9KU E¹Ò‚v$[—ºç¡ë5l0f舚Êr@®tÓ”kÉÓï¹ØÿÌœðû2«\݆ d8J¥ÂÊéúŸÙ“zäáÿ;>=œ>à9æ `â?—Ú·ßã?ž™™Ù¸qãÍ›77kÖì‡~?~|ݺu /¦L™‚“ëÖ­;í´Ó¶lÙ²`Áfá20n¤Üepì‡zèÑGUv¬»xµy󿝻wïF™1cÆ0t0g>æÏŸ{Ÿxâ À HS°½jÒ¤Iqq1÷×&rssédJ{ï½÷2¶NÏž=[µj¥~šÚ„.¨¨lòÉ'y5£!41jÔ(Ì_aaá²eËPf¬M@DsæÌÌ^<¤ÁÏDz|&IgÆža-õíÛ—%8 WÁv åé LPûíÌ/7@OtŒfŽä ¯Šw9N™á.J,A©£6l8L.ë¤F6yèA‰ì(›ãìŒÜ•ÈÔ!C† ý|t¼ÀÁ° ߥ8=Êéñ;¬85)*kïÞ›ÿ®ÌçÏ©¬m;šµo ‡†ÞÖ£}‡¶Ù•%¾Šò–®š#Gôþ®¶Ûá©q RÕHøÀ°€ËYÑRÛ“îô†ÆŽѤ<Δ4÷þý–^ð(++«cÇŽ@H:¿À& H}°ã¥oF„qååå͘1ƒ‰äû÷ï¿páBe‡5‘èt“&MÚ°aCÆ !qq;³™. fHtFm¾¨åï¹ç^)))8h׮ݿþõ¯–-[R “(/‰òP?HÜf¬€z\vbbB%†—cà$ÈNõÓT¹QÛs|tY•\é»ví:á„X'!©å¢ú¤  u:"9»0 ´£­L3ÿJ¹œœn½¡cÔ–áà™gžÙ¸qãÔ©SÉdv’†wyl3f *ÔPH‘ a[ô¼˜n>N˜0aÇŽ¨¼z“õ3]O$š4øFÅ7"%] Ç<ƒ (ârcŽãù•ýÜ'Ÿ|2??òäÉôeæƒÉ«S¦L2ž9s¦Òbw‹¯ šÃ§M›¦´Ä¾ê§¾ä‰ˆÁ·TÎvÙs𫮺¹° 2dÈБÑññÀiû†””Ë­üUªVZ ¨}ä‘G[åe«*WFzÊSêó•:uÝž&–€xk¹a_ó@вöŒUÀa{¦ØûË啎T+’$g‰-’Á¦£ ¢ð£€g„jk &zè!¦Ñ£G+1à^Ž  åi¿E,1Ÿ×s¯Qdj¬”””@LRŠc>p†à†âŸê:™TT2kÖ,êu¯W¯^4ó'D ÐXÀAk9€"ËÇÖâèÖ„b‘†?|ðÁ±cÇÒ3ãàg%Á‚êÄm…—$`^ÔÒ¢Ù]ƒ÷ÿ–æwöìÙÀˆfpþüù·Ýva.*äF-á~¿~ý0¿èƒî¾Mžàjß¾}Á(6$cÔK&"Æ~øá‡ÿþ÷¿‹²˜RL'Nœxß}÷C­³!C† ý¦èxƒ6yaw0ä*ñ©Ô¶;pX¹_ÐíqíøËÒË·Àér(=P³Vmo8äv8=ZZd¶EG”ä³4jÔ(ÀXÆ/ž°¼cÔÁ6šàâ *ÈIÇè¦úÔE‰¿-:„ÁĵC‡mÓ¦ÍÎ;™â R_E ‘®4Õ*a?]O&ÒaM°\¨¦"ŽÑã†ToÊŽr'à F‡žˆ~NˆJ#`BVS¿¥ù”Çqaa!Ød‰?e ‹iIŒõ@ÊÊÊjݺµ„¤&Wõ˜…‰H‚’ÜÐgzhɆLžÄ dÈ!C†~&:.à ÝaÔu ä­éLu–©ôšÊå,/9šQÓê*wª×³~Õ«•žžá 9*œ.‡Ï‘VZѨaýý.o½`øO-·×®&ÕÁ â*oEJjZ¥¤Æòzk¤Z›§²RºµzÎxôÇd(56Á”å”Í"S)›Q øEu‘®ââ†,o‘èqáHaÜ™ 4¦ã0ÜË’¼%77„¾™,)8 ‚ijÁóXð„ú1@æ¥À4ahÍ(ÌÊ£’Olß¾ó}¬ˆ\_žd´Z2ܱ䳤E‡ÃÐ0¿ùÅInÓo•3ô û¯_8¦PBüÈׂ΄äóŨpÕç…aäc5¸† 2dè ã†T0¤ÂÞšŽÔ”ýʪR<*P)n`»²ò€¯¦{î¿Öì¨*©ŸÙ4»°(’‘âp·ªÝ`çŽ-©Më¤ï+{äüÎ ¶Ña DoÀð§Õ°ì «üþTOj(àOq„”X4œwªƒ"ŸâP44ÔB)Í›’êÀpC:Oé ”€ }Â$”˜RS$¥®ÄB‹(€ó”ë"_uJn‰Æ‚:H=ôˆ’Ð<©" *A!áHj8îø—'2\zHWº¬J`á[ii)þdprɆ"ù¬&þ¦æWâf3¼3úHG}fYR×;ª¶“¸å<ÈýbÚz²‡T.êá¯éÉÄWɱ5B0dÈ¡ßpЊ3£B~ˆ‚HO'ªƒ dÖ §ª «}õĺöשQ¡B^gJyØ‘žš^3.-ݯ긔xŸ<ó²ÚÅþôÚž@e•»fZ( ;BU~_zJZ•·ªFjºžzAw)à6%û,Ê!‰Ù«‹4šLÉèÄ&O/¬œ›•±‚V“Ö”••Q̓Ù[*·OŽcœWÑcÕ¬YSôRQøF6+%²1ò\ ÚL|B%Q‡ôMFÄÀË4ã@0 œ‘øÒ²/‰>ëš0]_%\$Á&ôáL 'Û¯£@†Ž Œ"ÈOÜr©i£ÎŒ††l"*ºd%´¡Ô)cOÞnô’¶ëaCè‚>$Ý(€ÑIüç MK2dȡäêÂAîçHšV‰)ËóÇVªA-`Á  ­jœ‡J+5qýÇEõÒÊa¯Ë]öÔ«Sw_vNº•)þš¹ûž:£óÉ!«¢°ÏïHó(§Ú[˜ß¨a# ÖYØ*̤m37 ÿ4#¬ƒp 2[T*‚ØpwAAAÓ¦M "9RbA‹wć”v]ÔNQñ#øC ~¹«X\\ Ü â?''Íq“”!BØPT¾>`& !j'Q¼tERlâ]¨³†Kh˜‰™2eÊСC%ܱŒC&7ˆe•½¡I Mw£‚Šî ÌB ÊèzìÀ>ºßâ€Ú)êÌdD^›pIï=-$  Qš¤ÜP6v¤1îÅyÝhRö ñ‹ Q•4¤kE‡*xÑRØN+žæðˆm7Ñ’¦’LÁQè?Š$wnáBMùÏ!C† Š¢êÂAHH=ˆ3È& üâ˜rðXn‡UÈgÁ¾,8è;œ¡,Rêïß|RX¯Æ§Ãçt©°ý…@þìý7μáŠá±-þx¶rY©m¿â _ejZê‚ùOèÕÇ7ã …C+W®„TFWÈvu…1Ÿ¾«ˆ_Hkjˆ Ji{|¼Eð¾9(Û—œ1;C±§žz ÞsÏ=ÔöMJ%Q6pàð£>úðÃë® Ü÷Ä/!”h³¢¬¸PdÇ–^H‡rss©Ž’! “Û¥6á˜l:3é-Ñ•îµ .º3fÌèׯŸÎ@Fìc‡™™CÌÎO™ÿ#JKŽ¡*€W`qð_Dô S1ì#çev˜D˜Cë:™º /^¼ÌG 8?`À{IÚ»že–ŒBǘ‰$ÑúŸ>}:×Ùë’bÈ!C† %¡êÂA‚ˆHœÌÌÌÄ/Ž ޱ+‰ ûB¶!-8´\‹-8Xi»ÿÏ†Ï êeìw© ÃYK¥8ƒáÕ。rvþþž>¿+óOnqQËJUÃeG"¬(K¯SsÁ¢ù¿ÿ~ÖäéØ ‡KËËxàÈò©S§«/¢W ¡1e01Ÿ ?ÈfÊxs²µ*ò›çEá${µlK¶,¹u8f̘Ç{,¬eKÓCèâ ro¼ñÆÚµkgÏž­´øv¢Ã½bô&}`töœ OŒ:ï¾ûn†\f ôÌÀpæÏŸK*²IÊ_ôÄm“´[PP€zÀI\bŸ :™VUï¢ S_ßD©!‰¶‰áðç Aƒ:vìØ¿ÿ¨PydÅèÑ£5jtï½÷âœç¦69Æòz,b>±8ð‡¦9ÝzšÝ lÚ´ Uq—ù¬³ÎºýöÛñlð®$íbYÛ¡Qaûöí¿ûî»D›ÅÍYYYx\ Á¹ê¢| 2dÈ¡DT]8ˆóLñЬY3@üâgtc¹c“¤ÎRé9ÃéŠ:ƒ–¢ÏM8X8øÍšüúéû]gØÙÀçJw:_ìrÕYˤ´¬ŸžS8ÿ¤+Ûàn+Þ…ò…üÎ4Ë}v_IImwªÓåf2$™F­+ EŸGÙÂ(Ê¢Ò^ïß¿—èªÿË<Ö,*7  ǨGb6 *ÆÀ|nd×­[—Š>LZk†ƒ´¤‡žQv¼jÚ&RqE}XT^2 M„„_\¢‚“ý^Dsè÷ˆEŸÇàˆ² n£ V-N¤%fˆ„ƒÅÅÅè$žøM³QQF)íPÕ³³€ dæ_T¾k×. }ú´nÝZ²K9ô–M˜œ—–Žh5£&ŽÖTpŠ’H9C@‚8tm——ÓÎ-âÁoH8Õÿ|µ6¿Aú>—J÷«E¾E7Þ8úË?ݼ>åÄÆ§Õjp_Ãß·®T©RµÓÊüeµš6:PZ^¸o«ºm…Œ“Ú#@:®ŠIµ_8¤òÍ7ßÐ˸S§N;w¦m÷îÝ€ƒ¸úØcmܸ‘.çw^ïÞ½i,ˆ/_¾üûï¿gÚÜöíÛ9²ÿþLÛÖ½ûî»mt¶´š8q¢ø53q*ÿòË/P0€z¸]iîϸ˜ —Ю„&ÆùÁƒr{¿ÀO@~LLLƒ?ѱõë×c¦[¶lÉ”¾âÛd³uëÖ·ß~<Ñ7pÔÐIÜ;hÐ L+š`}ê©§dºp Œb Ü è†a¤¢{DƲW‹ŒHLÿeœ8{úé§»wï Œ?^ûöí ž`\Àa̧‡·lÙ‚zd-¡6ôÜÆ($K¯Š(Pq׬Y³¶mÛFE)=c¸>qãzôÑG1M›6©$ç·Æ‚òùùùgžy&n§F—qPE´ž\<±í&ZÑ¢¡E/]÷Ù2ª˜/Éâbc 2dÈ¡Dt¶ƒ4šò@;ø%::¦¶ƒ!:T0%Va7°ÎXpп”µù« Üjü?׿×tžá¯ñÄe— xïå¢T¯·AŠoó®¥ßÜhŸƒ:P5ÝŽtÏÎ}ùuÓêÖ@]^Jê¿ã¿PO£'ן/¼ðÂûï¿¿dÉeKú¡C‡vëÖMlùqÞôéÓi5Hª÷fΜ ,`Á?u–.]Ê]?Â,àZÚ-c =TEУGÅ‹KCÜa$€ ¥š²HÔR}Å2tž¥»4KÒÝÆÉÛo¿}áÂ…Ä.LžK„A¬ &`i‰¹!ëg°b X­oŒŠ«/X‡ócÇŽfZ¶l¯Ê¸p;€.cÂR½wÝu×]~ùåèÒJ›^{í5ÞË kBdY]ܵ'”½W+Õbà¸JÐ,›Åôb'y£ÎFÙÆåà&¸¨åa¾Lb¢v=~2_¬™\"×Ð!‡ÉjY'† 2dÈÐ!©ºpPErJùá—¸EÙ‚òÚZªÀr;ÑWF8¤‚aå°=„CN^-HSã×®Ím^ìv¦œ­ö‡æÝХLJ¯:+¨ŠSSj?tâÙ™¥vê:€Çt§#Õ‘òº”£Žrx5vEñ#pÂ_±b€Š5kÖ '{öì)¶b’ƒ`LüÁ8ÆÜéÓmÔX˜±QqÀ:œqûOìÉ8zÂz"c:O:é$€KF4$W…·h‚PEŒÙ5š´Ã#PS‘¸0ŒC«Âj@Cl…ÎÔ @£"J/Ü ^¸Ê{•0°ø‚ .`Œ£›o¾PŒS°ÇHe$Á?DPÃÀ[¶lÙªU«·Þzkùòå@¢ÀhK¶GÙU‰G£"‹¬£õ!÷‘eO “‚zŠ‹‹éõÂÕ ô‰¦ŸþyÚ fÑ ;77}èÚµ+`¨!'˜z˜¹ã8ê$í&!~iÁ³’D%9^ð ÍIöa³SlÈ!C†“އ¸ƒà « S•Ù°V˜¦„N+uøàÕ½©jü—ks¤yà`óçâ.]®zeI­Vvåfr?yÆ¥Í|6¬TV-Ž4Çÿþš®Œ”ªòÚ®T‡;-¬þ½mGéÑ‹1ÓÙ'Q(é óóó_xá¥ÁA}¼‚W˜¹Ó^KpरÁŽ(„ö‚Œ Hû6æº Bý%k–¸†Ô]©ŸŸI;ž”<üS¼Cø§lkâOö“ëhý!PãlâF @Ž"j¼vivy÷Ýw3F4 ãR¿~ý.¿ür®0åVs_ë' ÊçÍ›—••_vÙe·Þz«lÜc\¸‹º=q­ph¤l˜ËÀH\u„}`ïã?Ž ñ'Újܸ±äd›>}: Œ7nÆ mÚ´Á1³£02þ|®{k]LK>Œšáâ¶›±é ßpÜ´iSæÐ‹[˜Êyëa)MÂ7C† 2t8t\Ä ÛæƒnUjÃÁŒíYì°³’Ø-TºÔøõkó¤¹)AGÓ}áo½õæÕ¯e—]ÁÓÜ´9·¹_9€=Ê 4¥Qíâp°,X–öxœåpÕQ£¥§ 0`ÀÅ_ LÄ@yüöÛo¬uÑ«·°°»«`:€Nòö¾}ûžþù€5ŒH.¡”¡¿£‡è¤ÚÈ…š¯¹æt†<¤öˆ—˜î­0 JXËbÂn‹[«²w9‹˜3€Ú… –ÄÑÒWZEæ6kÖ “¢3èããpÏ76Y-ûŒ_FºY¶l}2püÎ;ïÜpà D´ôaß$‰°„ËáynCËö÷âŋ׮]ûÌ3ÏàxĈàäÃ?¬Cô]ŪÕcn-ø¢ªØæp‰F‡úœŠmŸD±VZô:îsS¨¯çœœ¬v´vñkCˆÛn"’Ä0 8¸cÇ*}c‰k€¾)è!:ŒvM’7C† 2t˜t\Ä$tª*{û4Ͳ´]IN\ñÛa¨÷*5~ÃùõÓöYpÐÙ°Øÿæ¢gÕI¿»èª?{Ò\MxÇ·»è„r3ÖŒßw÷½C[ýñô>½ú4»,ţ˹bå B®‘#G2ŒÚêÑ£‡ä®8pà¹çž väççC*öÙgK–,†lþàƒn¾ùf@¢[n¹•x <ø©§žêÙ³'D> *]uÕU@@ëׯÿÇ?þ‘••%VwC† ¹ôÒK#‹‹‹1aß~ûíÓO?M¦ÃÍŸ?¿wïÞ`)Æ7a„>}ú¨¤`‘¡C‡žrÊ)¨JÌø¸ $ÚªU+Lªz÷Ýw¶ºuë¦l‡þýû/X°eÐ(.áüœ9spW14.{ï½wÖ¬YÊVaþíoCÿÁÌ#Š]}õÕÜ/((”?~<“öâ Àýo˜øäÕW_]¹r¥¾ˆ·”/¸à´Kìˆóàd—.]Ø+ðmÅŠƒ BŸ;wîŒÊ©›|饗>ýôÓyóæÑåEi!ÑâóÏ?öÒw[’Ä€QD®ê§q §•°Û²âÄTøÇx1 çœs+Á[ö¥Dà ÏNIòï$uß}RT¯F™# 8ø»pº+~nÊcªC«‹:ÿ¹3mtÛ‹O°6Š-'e—ÃÊw|Kß;/ºà‚{î짪|*£F•¯ŠÎ­Ô!é;qàA! ¨R\÷ëÔsŽ©Hˆiq­ðÛ„´¸™¨Q¢ÆP£&Š%F%#ÖsÓé={öìСÃý÷ßÏÝdp[Jþøã'tRQQš&"‹ÊwG¿!týbÎziÈèÁHn "<ÚÆU‰Ñ"q­£R«•žsÎ9C† ÉÍÍEºW«ˆ±dA0"ôpîܹÀÍ@´ê§æwœ¯™3gâêÒ¥K¥~6GëɨÄzbʉ¡Ñiš„?ÑUf”æÞ:=9­²Õ.óŽnÌŸ??n»±¬ˆº*ÊEz¥$º….J*òÜÒâÓx2dȡäã"î á SYžÀ„ƒ! Ù ô6)õä¿>Ú_'­B…]agãP¢ü½ Zf.ž<ñÊ~=ÿР逦¿¯ ;ƒ¡ô—*«Ê)ÈoÐú„î½îzaþRåõ{C¾ÔZµD •̰yôä@Çì?‹áOŒx(;;»Q£FÄŽà#Ñž² ÷QÛ+¯¼ÂhÆŒüÞ1p ÊíÑ™™™* MƒË¨™ç tOgt†Ù28glº°°÷:”Iê¨T£¨²·zõ5.{aâéPL`Gh¨'íà2DBèZd2"Â=ˆéùËЉ¬¢“R›` ÆG”öíÛ—n¿,\ˆàϨ+—/X°`äÈ‘:¼(ðŽS6xð``µèÓœ¨Ÿf"ÁX¨ç½‰ÈlËô)f‚;DêÏ•1c=ÜîÛn"’¶˜¯=7nÜØ±c%/bEÓ§OWö· Yõ…`È!C† %¡ã"î`$ÐL•ƒ©¤U¡OY^&“¿|¯¬vª7v†\i¡ši5xËýÎ@­úµ»óÆ_Ò¥nÈŠKã „<'*: |åeeM3ê«*¯JO­¨¬`>4U露ÓÅš>¶uêÔ¡Á ƒó,êfa¬á®»î+lâñÇ— tTqQ¦4FŽ 1˜ 7ìÍ„i娖“üÂÜfå6oä A!]"Ø.õ‘¢ÔÅ3‚kÅåB6O%m‰(ç˜YO߬k¹¨cc jòDøILÃztGlvf—Œª-Ž)QêL\ÂeW—UI6$é-wZU$eœ”‘üβóŽKÌ΢#TVž¤Ý¸+šS¦o‹z8.qy°] ˆ˜$ë‰!C† 2¤ÓqwPÙfªÊ2 TiÅÍbœ‘ò¯Ëòÿ¯¢D…5Üiª*ì±Ò˜½!ŸÏú]Œ Ò7MO8w¼é.Žp•ËQ鯬çªa§¼³6£1BZ¼)Íó”‘ä¨C¢"‡AøôŒ*B(òaD"J€@æ@c$B¸F$´‰p„g¢T’q eˆót½ufTI¢ºw°óµSâäËX3ôqæÞ®°‚CÓëçFjÜñ*- !¡Ñd>Ë?V"Ck¢^ÆU!Ÿ©¾NÄ“MX‡¦YЧ`/9 +JJxE9#œ˜®»$¥á jKÔnÜ®Ê÷†$’n'"=µ´Î^C† 2dè”uз’ZBóRÙwaŒQ¦¤¤¤C‡¨á£>‚(ü%à Iªì0ÒéEí`Ø$ô¸]ްò:ÕKGLQ®45º,€g,Ç-JµÀŸUö¥xR\~Ë19·|_Zõ<¨Á‚qU©5*r(ã‰-$Þ£IÇvŒN ¼¥ ¢2O¿W‡’U‚J/=Éye£&¶b4#£Â, mè•^èøŒ­‹:P/GFˆJ2=×°à¡(5^Ö/5Ëö(¹$•äçç7iÒD*Ñ£´„íÜ0º;0Ëà*­ãòA*dqUt¼Qt«t’k=lÇ”æðµÄøÕô}æ’ÃŽÞ¸qc×á´«“$T‘8‘In62z£ÿ$ÊhgÈ!C† EQ"8¨lÙÇýÉ­[·2| DƒéÆÆÄy£LÆ éùÙgŸ¡†O?ýôg‡ƒÜ+öÛ6‚ƒn[¥§ìÔ'.”8­]ãT˜ÏØÞJæ]µ¼aY_Ã]¸¯ IF}åvUZ僵•Ë_åOIó0õ¥Q0KÔ`L)ÆÈÏôô‰Nbp8^Â8…ˆÕryLmLÃ;Þ‹cs ¢nÆZþé½¢ŽWÙx‚)}1¨›ªt^a êy%©¤ä¾'&…PO¬!Ñ“ÒÒRúüêz5’’#ÑxUDñÆ5$‹f¹ÄõÇÛ™Iß"TÔÑ|SÙøý¡g c"ê¤óAP£¾»ŠzØÑ€òFGœ²,Žƒ!2;ø`B»’¸YZ§ËK¢v“x“è>C4:L¾_,“õyÈX6† 2dÈ)„¨‚Ü'Z€äݰaÃé§Ÿ¾gÏÈ߸qq~÷îÝ;vüþûïÏ>ûlÔðÞ{>úè—€ƒÁˆËH8ˆcoP¹U)VÜ™ÔP0+;R)+q‰Ïc•u*:BÅÞ5kÖNñ‡•ËU®‚a§#C9 ó ëÔ«›’òo óv%R›QG%AXpDµƒ«¢e¥öH×îD™*…póQö’ N‚„iS‹&ˆ´T h0ÁèÁy) î¼ôÒK7Ýt“øXˆía]רMz‹â<Ùµyófj›i”À:£@á… Rk»ÉKÒý'ô.¡“Êö>ÆΰÌ]wݵxñbú2ëq§N:|øpe£ÌØñFMPé $ºCÂÊO>ù(…¢ø‹é$†ÆÄ!è9=ãŒ3È®X>3Ýyç—^z©`Vq[NÔ7Á¸n²Û‹.-]ºŸ>¥6ßpà øf û3ú–¨Ý¸-JåúnxË–-³³³=ø,ÃãÇ ÷îÝËHÚ‡lÂ!C† "%±dö lÚ´é„Nغukff&¡BlÜAœÇÕmÛ¶µnÝš6TkÖ¬8ûì³Ï~Ï∠ÀHŠß†ƒ)ÊçÀɰS9R­¿C¥ ¨0P Ñé.wx\Ê‘²±¤ÕZˆÄüpEº+½nÂ_nOaQQýÚuË÷•¦d¤zÒ­½@Bd8¡c)=º‡lnÒã - [¨ß"öv(ÃOGI,Áø P½$ BeËþöíÛïß¿Ÿ£{oèšK ¡G‹´¨h,lÅt;vƒ]Ò÷‹ÅEü©õ”Ö1Ý'Ÿ|23 $/·¼i” •í¢K-£dã –QEvÕi[©"p¶ªªŠè3…í\,ès\>Т‘ ™Z˜øDÙ`—™ôáÖ0Ý®UÄ›ÞÍ4 ]i¥Mø6"\&áùöÛoÑm°‹áµ›ˆh³Èï &G!hŽ[˜Za^¥lrÛDC† 2dH(d8úˆ€¶oßIÍj±q)‚³²²Î8ã ÔðÁàäêÕ«¡@3–1]†ýö· 8,ƒB\KQ!‡ WZÐP¥YÐÐUeáF•fY†¼a £ÇáV®p…ÃYê+kâ©ùÆ‹¯<»â¹W^}µ²¸¼F Ô»'ÛÊÀ» ˜sss6$ž]e1~ &,¾õÖ[E*ƒGü1Ž/»ì²—^z œmÒ¤ x$‘)³W¬XªÀÁ³Ï>Åpõâ‹/~÷ÝwQùM7Ýôæ›o¬pk•“c˜†‰ÆÉÏ?ÿ|Ïž=˜¤SO=•ÐJ”CôQ}þùçßzë­•+WJ¬V~å•W¢:ÿÍ7ßàäE]Ü ¬8“·ÜrËúõë1©è$·ÈÅÅá¹çž£–¸gÏž*½Z¶lY³fÍ®¸âŠ—_~#Š;ÞwÞy';;½½úê«?ùä“k®¹†yÿÆ¡ðòåËÁºgŸ}–+uݺuEEE`ïå—_NÛÇ¥K—â‹wýùÏFëÌ’v 80.0Þ=z ðwÜ!J\ÔŒK7nÄ*ÅаjÁ>(˜;tcË–-M›6Å1À+ã‡ãÁ¸˜eÓœŸ ÍÊÆë衲Ó[Ƕ›(vÌÁ}^ûù(=p VÚõêÕÛW¼/îÊ·VrZj•Ï«ûšÏbC† 2tø”žQ!K“-nuÆ;(çñ ) âq×/w•Ø¿Žƒÿ´)TTÿ©PðßÇ*h»™¸x#r³#Táó{RR}úf)[ 6dÈ`š÷ßΜ9õë×ÇíwÞy'Ð!d<lÀ‚ï½÷Þ¾}û€EºtéÒ­[7 ‡§Ÿ~ WŠ®¿þzHzÌÊøá‡JÓD¢¯Ù„ÛÑb÷îÝ/¹ä\%`_N¸µ=hР%K–åpÂþö·¿a(OuP0Ћ/¾¸hÑ"¶…Qüå/Q‘­í›o¾5£o24ªÃy f Ïë®»ýaP@ ŸŽ5åååè?»yófTtÕ·o_`GØ#? khZÇe+Õ®½öÚµk×þéOzã7x\BC7Þx# 'À+øI :&ëšKºHÓ³N:ô¤ ÈÆ¸dö¸sÍ {«V­B… b+[GGãââb DÙŽ#€žøeÔŒe€Ç†jKb»¸í&Ú¡¶£½4}~•ŠuŠçÓTÔg+'Y.q‡ÂÈ*|•²skÀjÈ!C† %¡êÆd`È5HÛ† â—Ñxþ˜Åž0zûí·YÐ[¯^½ð+Û ¸«sçÎ@Ä=Ô»^ÄlܸÈï…^P¶» ¸ÆFÆUÆ4Ð…[‡T¹IJ: à¿¥K—<µhѰ†AtRôOL+Œ“À…SH0”••Õ¦M\%~â-øbO˜äƒŸ¨KMÓˆŠ.]#E.‘cä*y»ÞÊUW]…QÎ$Ñc†ÜþæÚÂ-¸ à{à 7±¸ Ý›7ožžO…[«„ï*báGŒËþ£«è‘±8&³uÌNÒ—…fLHÍ¡Ñ]ãª`–jœAåhãf~?±üJÔn,ÑSÿºÃŽàcŠ+¤Â.§; 8<8™á :XÔåqW8hÈ!C†Ž”ªwr'î€ù~øáüâgˆMÜÁ£HÕ@’„ÇÜ¥"@G"3hº½pá–-[îÞ½p p A° ` V>êAm¢“­F1zc‹tÈàU¥yò§J6zò Jc eiQ°Ã, ŒÃÀÑgÉBob²|hРÑ/éÜPÃ>æf€FÁC*âFCDØ»wïN:¡ pˆÛo¹åÆçc‡™¯î½³• éÆ£9\ˆÂ’"ü –ðàQ ‚%6$¡êÙ(`%Ý€ØIjRÑ¥³Î: #zÿý÷Ñ4£¢{(À(Œ7Ýt“ðAÇü¨ BW€rÜvã,BÛ Э°ßãp…U¸†Çíõ]vô¤}Q _1Ón—ÓWå5pÐ!C† U7î •AÀ|ÙÙÙtv¤g1γ¸ƒG—•@-  Øã‹É#QÇà’˜j¡ó7Þx#¸‰ªp€3o½õj8RiÞ¼ùÆ øp#8EW¥!*‰Þ@½iÓ&àê]é3 Ž1 s ÐŒ·Ç «¸؈J AGP«lœGM/C´à.@F'ÖÁ¨q•¾â–½Ú¾}Âiˆ,Bm¨™A¤•O™Æ£M›6YYYÌ"S@8‰3tèPT‚ó¨w]o“ÞaÂ_ºKËÔp :wî V÷ïßÖ¬Y¯¾úêêÕ«% wíÑgÀ5nˆž!‰z•(d›ã†~NN¸WPPÀø;Ô¤âöÛn» ýáô1¥FŸ{î9eÃh œ¤æÏc]F¯µw2‚¦ÓTþeÁÁš)î*ŸÅg{‹ØŽòx0S·u&ÍÀAC† 2ôPuãÒG–ê$lÎзòØÄ<ºÄžPrÓø C~£¢·]~ùå÷Üsϵ×^«"Àèù矿ùæ›Á ~Ù‡¥%ÿ¤¡Þ¨Q£€ oØ•+WvíÚ•:$ 3jÚð'xàÆ·ß~ûŠ+®_]ÚÉ¡WT¡—à ñeæf%5‹¥¥¥8Žaåºnïõ×_¿õÖ[eRˆ{¨¨“!P-JuÕ¨\*b!H„3ô¡ÑçwáÂ…wÞy'û”Œþ ÒqŸX^`5|â{!fŽDä?Ýœ‘ô!±`‘Ǹ„z$*5gDÀ4Ñ—™4§ìÑh”ŠOf7A'‰ø™w˜L 7P’šZî/‹ïˆt@ÖxŽ«IÚ¢ 5)`9G9ÊŸª<àóÃ!ÍØÕZ«*¶ƒf8hÈ!C†þªnÜAZç‹-÷ÇpçYÜÁ£Kö·ÝvÛu×]wË-·ÞË/¿L¡~Í5×,[¶ ²¾øâ‹Ù[²1cÆœuÖY@@!………@Wsçέ[·.††ã;î¸8¯sçΨ€¨îª«®R6\6lX§Np/0ÍÒ¥Kß}÷]L€ìŸhâÆ:6íØ±cÕªU¯½öš²áËòåËq/ú€… [±bzöÙg½T0vŸ>}.¹äüªHì´Õ»wo@XÀG çÃ?œ={6jF¯ÐIôW_yå•óÎ;…á-ZD¿f´‹ ’ëÛ·ï’%K옺té")U0@ôýŠÅU vÞ¼y;wîlÕª=ŒÐt ;;ûÜsÏÅ™?~“&MØ1nÍ£ÛC† ùÃþ AÉe{«£\R[ÉXÙøÅÊò›>}ºD…” È LÊ¿þõ¯™3gâ*B£D¢±IG” Ü`»$në3Ì5ýc°BÀ«›nº‰©»?þøã)S¦4lØPvºã¶·EuÐ|0TØ_ÃáÁ£ârºCaK K8h+-G)žñ¸Ü2dÈ¡#¦êƤÙÐÀ1³’àü1Ž;xTˆšû§:tøòË/x¢_¿~*ÕuL8 ¡þæ›oêÊW_}5w?Q˜Å%/»ì2š‘T¡~À&`ˆí à*Uw^xaÓ¦MÁtà0Ꜹ) ˜„1`ÀÀmà'`í & 9T¾wïÞÁƒ+[•õþûïãXA—£âKS‡j%[š²5pûÛßpÝÔ»ýöÛqŒAá-nÙ²­Ù`àøÍ¡·[àP íó˜P޹çÌ™Cq[÷îÝ¥òÐ%Œ”œd œœœœöíÛÓkˆ CRhP â*ÖŒ˜r¹\*ú&5ׄrnn.:¹F øÐ(îb$qǪe,†¢¤¸ì0œ«¿‰óœŸŸÑï->òÈ#t!¢'ŠŠlµÇ¶‡èK‚§Ãíð‚°% 2R=å~¿rÙ:CÚ~óîr:«|2dÈ¡#¤êÆ„° jÙ²%@Å)§œ‚_ã ÎÓ¸ƒG(§2€fzôèqà 7ð<Aï .£ì!LÛLà% Ö •éØ+!NXƒHsó7RxPrW|x•!”­ ’(Í‚ð}P˜AOÄtOXgØŽe­ìÚëÙ³'1«žàÝ`6fû`ýt©V¼E¸&º.‰ H>èÁ´q†®Ð€Â(€óÒû,¹ ÎP-µe„θŠKŒ’ªîºë®o¼̤û0j^±bÅ«¯¾Êà5Ö8ÏV^xá…¥K—¾ýöÛQÁ¢ÉÏ—^zé•W^AÎUßz¶_N®lGñ<¬eS‘ŒÆµ²h|›ÊHÂbÜŽÞÆm7þdÊE<©ª*NsXáÔ3RSÊý¾€›ÖmCŸ =!`D—ÛSåõ8hÈ!C†ŽŒªw‚’bÀ†~–8#I+ŽeÜÁÿœˆW(P!×ûöíûüóÏÅìzZ3‰?®}ôÑG`.­ÁÊY³f¸è™âªKœ,z³¢9 ¿áÇ/Z´äFW,õŽÑtò¨Œ÷ˆ ÝÀ:E6lذåË—c¥~õÕWüòèÖ­ÛâÅ‹¯¿þzâr ÊBSœ={6Ϩ>\NŸ>½Q£F´eàÆ$1_IQ|NÄ·Œ=_KÈFiÙÿ$ÎÁD/iéª"¨R\ÞUìõ6Hµö¸½ßüeóKmí$rM@Á2¿íTT©®;ïê>uÚ |fÈœŠßŒ!C† 2tHªnÜA ˆìììÓN;mýúõgŸ}6~qŒ38<ÄÔ #ÏÏÏG·®¢…ú<À@ÊlÔ饗¶lÙ’9¡ÑÖªU«ÀzQøU‹$² ý}ØsQËåää !1‘÷ Q%s•’$ÐÚêÂzÀ,€-8¾ä’KpPPPP·n],P¬0Ú®R Ȉ†›6m:õÔSU>3‹Þ¡gBE]bŠËçD$ªVºMÌÍݲQ~0±¡•CG—”Ôª²SjãZÖî¼-2÷ÛJÃÚJÕS*#`ï»üG¸¨p_“&M5ÅAGØhÈ!C† ’ªw°¬¬ì„Nظq#0ß¶mÛð‹cœaÎ…_}ÜAe#'t†éV¡(³VýºÚò›hFß½¸¯ýîê)± õ$‡²$“a0]ñµIzL€l§ 6Ã%ò|¬+.³ô‡ÑÔROŽœˆÏ˜ßÒÒRð–hål½%âs’[ð]Eÿ¬(ÕÀAÖPåõ‡îªÇ×Þ’œÊÍêfúª¼©©5*Á<å «`]¿¿™ßqnzƒ”°ò:–+‰rº”STàÀG0.C† 2ô¤êÆÚ ìØ±ãŽ;233ñ‹cœÁùã!î ˜µUÐqá(öõKÊÚê‰BŽp>°4<²Mj1ï“Û >häÇP|ŒÌÌ(ÙQj­$¡‡7Q‚6Ó…>,¬C+*áPž&®qù,^ÆzvÅ#èd">Ç-,aqkg˜j…fTŠ«Š7*9+p×øØÚJ‡Ñ7.#žÈ%›Úùùùt¯Ñ=u0ô_0Y,Ÿ•íë£×)¾/Õêg">'"=ètÈ&Ù©—ýzVb '•Ú¥Ô”/?¨ª—ž—“ߺõ‰ee¹•*2ÓU8ø»R»Jç°³/o„%jç0ÎPwdP¨ÓzÈ^2dÈ!C¤êÆlԨі-[:vìÈœøÅ1Îàüñw0h7UKKKëÔ©ƒñCr-…ÙòåËï¸ãÓÃ@•SQ'š*4Kq3˜æ(¸ç+€R0G'²S¸*N¸Qå&iZÔi F­ìH.Xd¼JPKÞ(Çtîõ0³öÓ”CEŒDz çÑ!C† ýº¨ºq‹ŠŠÚ¶mûÝwßµiÓ&//¿8Æœ?âê„áåææžyæ™G±Îzõêmذ΀QEøšaêŽLö€_{íµz>Áøìeüdî'¾ýöÛ]tmàÆb”_’€œð+j-ôý¡ç¯î[S^^NZ­¬¬,Å&lРA\>K"Cnï&§ä|Ž¥þóŸgu–pÝ`knd¿öÚkþ󟉭¨–5k¨Te5ÔÄo¿Ü(ËÎÎkܤiÈéªÕªé6uÀ­B-øÚä–O¼èÊÚ+±qý)/s;]âŠÅCC† 2d(9U7î dÖ®]»N;í´Í›7âÇ8ƒóÇCÜAñºPÀ¨úõë÷É'ŸE[ºóÏ?íÚµê§&z¥¥¥àÌ_ÿúWQ2UTT€GàÕô=iÒ¤W_}ÇQ;­ §¢ïZb:{õêÕ¿ÿ«¯¾ZýtCóX‘ìçr hPiàx†i÷DJ ]rÉ%qùŒo”«®ºJbÓH¤Ã£Èç¸å/¾øâ‰'^pÁ Ö¨£F áúë¯>|x§N:”øÂ—#×¥öV­Ž–ô¾ûÄÛn?û‹w–•Ôs§8ÃÊ}-w—̼è¯U*ìQ!×ÁÌÅ¡Pˆ¾ÒŒ¥´qC† 2d( U7î Ä pÝÆe¿8ÆæÈýÕÇÔ‰AàˆÀRŒØ¬"YÑØgA*b–GWfÁ½€Õ"8ÃqÐt  KNNnB?’…Û™YàP9µAÄ@ì zUTT„T(é:€ èrK†Ó›Änð<5‚¼åp\Xt#ú,ÑR…ðOá€~K"cÿûùŒ3øúÑ£êŽÏè61™ÄÁIÄg* |(Û"; uaªêýíÛ¹éî–Áz/_Ë_ß|½*ÝSâ Á4G¨u~éüŽ—Ö*W åS¡T˳Ø!C† :BJ¢„ü‚¼ƒü‚tÆÀ1D?„fܸƒ8OË(>ùä“QÃêÕ«QïÌvÊ$ˆç?üpáÂ…¯¿þº\°FAç‰Q^}õUˆðK/½”YkW¬Xqæ™gžtÒI‹-úÃþÍôÄr»š¾á†ćCÙJT …q˜ïÚµ«[·n²1Šƒo¾ùXLC‹ï¼óÎUW]…?Q} Š V®\9cÆŒ/¿üRòIú駘?ÀšN:áÏuëÖa^QþŠ+®`.>´Ø½{w\½óÎ;é„q8û§Å?þ\Eí1f¸ 5rÊ)(ðÃ?a¼ S‰¶ªš5kþÒ9æWÁg´Ž†ü6aUƒ^x!ˆ´` œ¿üå/¢žLÎç믿¾OŸ>˜ëó£*àTîÂ4ÕgËû% j×É ¼>oi­SNùßÿäËpùÜa—;xB~ÙÂÓÿT»ByÓ-8XC9±^×!C† ýš)¤X¤Žfûöíâ¹¹¹›ûqãâ<$o~~>D-P÷š5kPɯO;Hý º!‘0â1Î…lذ}†,\À ÀªŽ.»ì²µk×Ο?ÿý÷ßgœÆÑ£G_rÉ%;vìhÓ¦ \pÁ¨5vˆ· ÒðáÃwîÜ Xݵk×ï¾ûíM/_¾¨ìC¶lÙ2vìXn‰èL›6 `ˆÝcˆDeÇ´CQ•¾=zÞyç·°£Wdh`覛nZµj•„)ÎËËÃŒà—Ú©ä6‹’ ¸ ýÁ]èí¦M›Ð1*SÿùϢعçžK䄞zê©ÿû¿ÿ›™™‰¥†n`–“»8ü*øŒþpt&€ z ð­lE#:YXXˆ§åÿøº ܉'$.Ÿ¹´^gsdqºTPýŸ[Üò¡7³QÕÿæ{JÃï<úØõÓ§”ÔMñ¹ƒé*Ø¢°lÚþT»JyÓTÀÖ8hÈ!C†Ž˜ÁA€ H(jÊw b÷îÝ5ŠwçqõôÓO‡¨=çœsPä5܇~ø+ƒƒÊÞe´ñåf+Ý6Á²T›ø§Š„»Œ¸øâ‹_ýuZn1ûXaÂD3r Kb¼¸š““Cô Ög°3¨õ0h®¾új°î7ÞÄÄ ÅÌ>s¶ÀF¬<õÔS矾²½|ðÁuëÖá–§DKO'DÃ/m“ð_6|iÀ.¡óÉ%ö€yAt8¨$»ÆÄ²ÿý|–¥K%ßÙgŸUþ׿þ•ºF,ú‘#GâI`*ãò`Öfö™æ6£Õ.‡õÇ¥õjUn/þc›ÓŸ8÷Ò~o½±+#èuë„‚Í Ë&þñOµ½ª*Õr%IUÊÀAC† 2tÄt8q¿ÿþûvíÚá·E‹‡Œ;Ø¡CH4Èô/¾ø5üú<‹i¸Ö¸qã~ø¬_¿>1 8Õ¬Y3cPt›g¸…#*--EùZµjáÆ¢¢"2¸¿ô?ÂC(F‡_F·©[·® ýøãÁY !À\ºì²ËÄÊ­¼¼œº@üÉ vJóÀ¥QÝ•W^ùÀî 6ì믿V?u°@Ç€ë÷îÝËЃQéÔâ:¹yófÜ„ÄÀ~¨qy0¹(@å8€VˆÕhªˆ±Hh˜Dô«à3š#Ž$«±fðl çÔùµmÛvË–-yyyˆ4—Ïœˆââb ó”SNÁUTU»^½€RÙJ=¸éâôW‰:­Aë§ÎþóÈwßþ1£Êë7ò›•=táŸjú•×c4pÐ!C† ý'”$î ä,1óxAÜÁwß}8áWf;H'Sˆç6mÚìÞ½›Pƒ˜†Ù„ñ'ŠíܹøcãÆž0"FïãŸ(Œzð 6AØÓ]€Z+z0@ðIà.æ‹#7d#•øƒµÅ8[Zµjõã?Κ5«S§NÊ1¨œdગ¨âÚ¾}{ëÖ­qõóÏ?衇PræÌ™˜§&MšèyJd.$t_’@3ÜèD‡•0„œœ (@(h†t^³f²iQÖÆxê©§;aD«W¯¦o¢Íâ_ ŸÿŸ½ï€—¢ºþ¿ÓËîlß×H“¦b/±Wl)Æ5±DE‚ˆ½ÑkŒ%&5j¬¨  Ô'M±+Hçõ÷ömßÙé3ÿ3;°¢¢?“üüEýÏùð9Ì»;s˹÷žó=·î(.ð;v„ ‡rÈŠ+N?ýt@{® àC÷Ço’³ÛÀ å–-[ÀýPM«`Xy†¼eÝ’4CqHkOÆ^~¡=Œi¤׬ڴtÝA‡ø d”a S¾×Ø#<òÈ#þ=ú&8– ¬¹;«æ®Ü´iXäT*µÓs!Ü;vÏ£ bø‘ÝJR!O¸;CÝÜÂ3ˆ°…;J´dÉ’Ã;Ì- wß À#wXJîaÊ sŠA<YàewË]u/þ€øÝûÙ>ýôSwzâY¾|ù¡‡êæÊpîÎ 7é ®J§Ó‰» 0PÒ*¿í¶Û  Ý£>zêÔ©ûì³Ä™äᎽ¹øž!9wwÈ7­ó•aÅÊ–ˆJx.—îî©ìËùÊΉo¿ïG!gˆÜ½YΕ‡*ädÈ!àHF„o+ûfÜMÄ_—³;íî;®Lp›‹mÔ‹¡©Zp0·µoáÄ›Ïøó™0¥fÔ°ª3Òû4‘M8GÌôÈ#<òè? oÙJâ.Üc fËÅyîþâž;èžpè°­­mÔ¨Q¨¼vÀ¢E‹~dpÐ;vìW\@Ä=òÖ Ã3Ï<x‚ã¸|pöìÙo½õÖ‘G 2Z³fÍ^{íõá‡àyþ½÷ÞÛ{ï½?øà÷Î>À4 èÆÆÆ1cÆ|ôÑG¢(z8öØcÝÁHˆß}÷}ä‘G ¾…„Æ·zõj7?ôÛo¿ ¢Ìd2ð2¼ðÇ?þ°‹»wÕÅ%.Ò:ðÀïºë.¯ 5àWòþ *ÈdríÚµ{î¹'drôèÑîù)ðΪU«f̘ñÄO¸ØÅÝ÷ðM© ªî¡ÊTÁv€ îä,”’s'I+'?»ëçÐÿt[ÆBÎ 1deؽßå˜cŽ™6mÚ%—\ÙCÛ›´»»ù›ä쾑/^¼øÞ{ï}ýõ×k²)JGh+BS×/íÄu^£s½éwî¸÷¤»ï.1˜‰>„ªÓÒ­{3Vî+TùÜA<òÈ#<ú÷è[n%q±CÖÝÝížUçf¼Ós!Ü-,ç^@•Ïëý‘ÁA÷>1wØÆŽª,A³ížx¯¼òʉ'ž8€K0Ì‘H$|>”¤pÐA¹§Ó-X°>(h â@¯ †W_}¸;õ ÉqÄsoo/ ì'Ÿ|Òý‚O*ߢr•¸q~ÓV ^>Ÿ¯Ü>¾¡¡¢š3gN6›ýío h#—Ë4qÇ¢™E"øÄs·Ùþ×o³øáËbsçÍݱØÊØ'¤ ¬Ü4èN|£ò¼ðNå\ƒî3Ô¼Ià mFhòº…ý,²Ø—NúÕÏ^|žôsZ 07Q(Ø›¹{£bš³£˜Ä·Cí‘Gyä‘Gÿ}t`ªà€îm`=Á’677oذaèСÀáBì™®­­]³f͆ï£>+<ãŒ3æÎ ï¬[·úÀ~ûíPoåÊ•ðP¹¡D-€ïo—s¥™¥Óiñ8†3²åÎyý±úý÷üëÅWž~óÍKz6î¶÷Þœb[F†Tã%ãΡG4XÛG½±A<òÈ#þú–Å€ÍÀt‚½« öŒ]*•Ï#FŒèì쌞7nÜ8lذիW0 ­­mÈ!`Á[[[¿üòË?&8XA€!s@ž+ƒI.öºKè[ïùý ˜ØñO÷º³¯oàÝql§Q};¬Y¦ÊŸ»$,Š¢{+š›„[ÇP…%EÛ7ÉVmù/Ò_Î-È­½½ýÜsÏ¡­]»väÈ‘dçÌ™ãbÁJ$n)¾IÎnëîî èf©$Ê<ÇmQ•§ÓŸ¯ØüyÄâ|‘H!êSM×–me9£Ú"nut³éœPèl>!zä‘GyôoÓ·ì,›åŽÑÎÛ{ï½—/_˜ÌôàÁƒ?ùä“ÚÚÚb±†ìÓO?4hPoo/Aà{챇¢(3V­Z€ ¾ý1ÁAT–ˆ{Y­;;î¢wÊ v%o•™J÷fÈ¿ûf&“q¯µp_ÛqÔ •‹éY¹› X–…­2¹ Ýw¨¹ ïøm…¾¬À‡¨|6Ú~( pˆ¶2 ^É9Í]²æ–H+]¦ÿ-Iþôc‘óŽ¿VvƸ躺º cìˆ_+t§rv›™³‰Çë}„RÐf%ÿR×gZgEƒá}YäÜ•WE²8Š< Xè×uÃk´ò¸ ;܃ƒyä‘Gý»ô-w»KæÜµUmmm---î!~øá¡‡úî»ïŽ90ßá‡!€ᵺººÍ›7777ƒ¥~õÕWgÏžý#ƒƒîŠ~Q¹£8îR¶ŠE«ÅûÊÞXwl¹{軟´rˆ±ûîÔ­{`¥°îj?÷6Ž tÛñ[xÞ1ÎR%“n~@ìMMM˜â ÷Ê57Ÿ•ÉÖ ^¬À¯ÿý(䌶OdŒSU’«œV]Áˆî ¬»£Ù=J}MÎnÓªU½íî@v&RHÔ¯!•a kåÄÐg$çd{ÂxÛIÉÉ Ž{pÐ#<òÈ£›¾ º È½WbÅŠpÀòåËwÝu×­[·Ž3fñâÅtÐ{ï½á­­­{ì± BwÀÀuÔQ¨|#€÷ßÿG+äéÊ)Á•ƒè*o!Œ7¼ãn¨Ü·Qî…f¨lûáµÊ6Õ§>ýÀŸînS÷ŒÃÊ^TH¾ÚñÛãü&ªÜç"ºypï¯ûŠxw<ðëYý?¦‘œ¿B;kw±›T^‰Ùø&9»V¡C6’rE",d¡6‚ÒÚŠ“ey¡(~Ó¯–e„‚™íí-ÍM .bŠ (I*êºé÷ó¦i›¦nÛ˜ÀùlÙ¢ ê2”´"8(o± ;Û{êëk—-[†Ùú´H¼ ¡A ƒ- Ã2$C;#!ÞB(<òÈ#<òÈ£ÿ*¾ úC!m]í -MK8pÇI8(¾¾¾þê긢h¹|Þ’vGUUÆq´pÉR@x§M¹ëÛ’¨®¯Zµl Ë=vs'‹¶}²Øƒ¶ )gQëÞ¼¡®©qÅÊì¨=v3mäL6#{Û½®†,8H`,Ë’ÎUø÷¿nÒ#<òÈ#<òÈ#TÈçwîLÛò|.›õù|ÝÝÝ-Ì~ùåP(T¹vGÂmL¿?ðúœ¹÷ßw_ª?‰XîýÖV„co.\0à`zÝç‘úú÷âÄn{îi ÌÆpÝ4á wΜA–áÌC—¢vî`u.\ðÈ#<òÈ#<òè{'­XÜi¸(Š‘ª*U’˜`0ÝÝ­«[0wnKKKooï×_¶TGó‚ÿÍ7æÝ:õV¥PB ¹tÞüp8<÷7¦Ü6“Ömàëjß_¶Ü°Q{íca¸“†eâĶ;amËÂl‹Ê2Î\Û#þ̧{Üã÷¸Ç=îqÿ”¹œ+Y˜³—ã+ÜÇñ©L:‹6ÓD5•ͬ_ûyA>ÿ×ß71\Å1YQÖ®Ysó ×Ù¦‚,´ré Š"ßœ?òô[±Â¦­Bmý»o/Ó½×Þ&NÙcáH·:ëmR"š@€)Òƒ‚÷¸Ç=îq{ÜãÿG<ŸÛÉžbà8B™\n@sÈBèo¾°úý÷ Jr‰Àð¯¿oˆxEWÒ‰þ7Ÿ}FÒŠB­‹Vª’øÞ»ïL™:ëÛÚUÝP¿lù*ÅBCGï¦Èdh› ‰œMĶ“ü£çáå¨=òÈ#<òÈ#<ú¾IQvŽN3PÔ‡’Etúég¾ö3¿¤(BQ´¯oI11K3D¡:¦‰RãæÍžÝ |²úÒ²Þzãuç’º5=M µËV,jzã a9EÕ0ÊÀq‚áíIÄ1¬Œ1mÅ2œÕƒßtŽÇ=îq{Üã÷¸Çÿ—8Žß^(æuͨ«vu&cñ(IàùB‘e¸¯¿oã¦lH±H §­ÍOQ»64÷·µúzi ­Z²hÆä)ØG—}øYº¤›véÈæJªe8©P†‹ú0Œ²1ÜF:$ha„3Y¡ñgyP³ŒX·ýÊobÖ¿„ÝÌï Û_ù ßá5 }‘­sè¼¾Ã'fù'ÂÂð/åÓŒk»[²px 'àWw‡öNrhíô'ËÍÔ¶Šfy5Ÿò~Í4J¥Nh$¡Hš2uôôÎöŽÁw)æ <Ï#ËÄ(J·eˆ]ÈŒ,Ë.á¹’WÛ¶UU…Š¢Ü(†Vt ºuy§´eüIJ¬êŒ–Z¸ï¨z°í–ÏvLIY¿”- X¾`пµ­-ššŠl3‰ä2iDaù|¡¢b:ß­I'Sáh¨/ÝË9‹N”JJ€ 6muHΉÏQ¶Ž­(%ŸÏ“UÇ Ë‚h½½IŠ¥ ŸnØHÖMÞ`H”J%}~ÀqE,TÅÃFds9P–\*ÉùøÚ†xWg¿RY’@*ÆrÁœ¤>.¥Jf±$V«ý)%Ÿ¯olhïíækªdK7Ê¥§MŒ°pÒB˜«ñξ­]m\Pðý²Z‚ cŽ,RRŸ_•å€?h*‰ùLJ;ÌÁn•M/ }ƒâø¦G–4+ ©Å,aiMUÑî®6–"UÔd½y—Á]}IŠæ Á€ð d³,ŸÉ9wu‹ù‚eê<dž¦Ê%–fü~¿(Šðy¹¤D£qöréa¨ñh8W¡ÅR -3_áe˲ e:Gpâx( lÙ²¥©¡ÎyÍìN%l†ØÔ˜ÞÜ…ú¥<Á1 I¨¤YAh›H§ªCqž¤eEúþäét=Ë‚<ʪŽÓ AP~?×ÓÙ…йtccýÆ ë8¿à FdÍFã`W] p\±$©ð I@ãq%Ó©€‹yhÆ‚—¥Ç1A¿ÐŸH1”N“%C„`ª§§Úa0,›ÍÇêªDÛL2áp´”ËÕbùtŠóqù’èF’éL0ƒfhj‰[¶®F¾¾Þîºúúή¾ê††¾d2@ÓÎzä2°Æ·ÁA„Â&9 dUOÊü,cªJȰ LÕA1i4Ë1 w%zkjëAÖÕÕ+2¤Ea&bHƶ1]WsÅL¼:–ÏçÃáp¡PPt]—$©¶¶¶¯¯ê2 š§ººº½³ÛÄéaê֬魊GƒÝד„—£á 4ж¹\N×M–ç¡Ï€cL#Ë.åMCÃh”b¢h,œLf®gé±hZ£UdZ4T±]ÊôMÓ-<@«#ÞN• ò-2ˆ*¾5l»P,24òû²™~žÀŸkšŒÖh*é–eh¤©Eƒ~ÈsWOwsÓYSYžkïꩆ£±Tb8–¤ø,ÄÚÕ#¿H׃¶"°’ª@ 9º½½³ª*YËå28á(pè’===PkPȶT*‚þ‡†y²4 %‚g¿/@QŒX(R. çóq\&—Ã("u'“4ÏYVC eqÐKÐ_ÐÎìÈ J Ïî ®]à2Ùµy@c´gËÆÃŒD«6mmkhlN$ûkkê è¿©T z4Ô{"‘€t„@@E‡FBA>-Û„ÈUE FÂ’$«šaÚ}¤X„×DÉД¯¤ U¿Bœð'T¥s"[ùWø©¿¿ÿ_ª_ùîå¥Y6+}ÂwMê—Áý?N×+ïO£¼ÐºY–“Å@ªŸÃ©R~ùk¯œ{ôQõ~nÞì§O½Û¼yÍÀÃZW|Zà‚ö°–Úr¦ŒY* 0¼™C@_`¬ªkE†U9B°HÕdÓ,Y0Á¶ÃlŽãoM;ñ¤;—,‰ì†[GðÁÇ›ƒÕ5+ œ²l  pxÖtð%Iá¦asojj‚ÆPÄ’,2¤¦®Jµ”T±f†fÀ$@¯±M¤—ô€/®dtf9]Äp ~K>? O}c=—5k6 2jZH_oï.»ì:móæMCI¥ûkâUŸ~ú)ô@ŠÖ­¨½ë®»æ‹bQ†„üfI•À–d?Ïà¨ÙVR,޳‡ š¤³é|8.䊆“4X6Ü„*à˜BAT }Óé‰_² œ¦)ÐbõRn¯áu«W¾ ÝÖÙ5©[’¢Ö7ܼµ­©yÀúõ°_lª£ Å@(þ4ëãséŒ_ØÊôôt ÔÒ—HCKK$SÅÔ7T©:ÊæŸŸ-JtН¥+ËxžàjB®Ê¦–„—J¶«ÁeÒC|*›­õ>Ê>åAY(ªª)€C!+ÝÝÝ£F ûégýnâ–¤vÐ’ÏfãµupäM`n&“®®®φ¡C?µ,S¥H$œÉdYŸFà@ht:Çá[ËžTûeS¸mŠª2[ƒî °¦f߯u‰tªð€&x³˜Ë’o ãJù’¥Ú–fÒN¥ú«jcšYò…üàSr¬À±CÇLÔd%à‹bVS €ƒ¡PÈrЯépz>Ÿ…Š¢drY0ŠJI® Vð%5•îí:dP¡(Q,ŠtS&ÙOs¼Ipþ /ÑÓׄK™G](Þtÿãÿ”mPçÂÖL1¨.Îuu„?~*9þŸOל—( Y$ËóÇVy~Y³ œ£r§Aà˜‡s™”Ttš¼:WUƒÂÈöönžóC[·œ2”gmÊã‚•)Uì‡æb4ןì5¸jÓ§kgÝt J&%"œ?뾚Æ'd EpE "šÁ!‘b±èÆÏ3ºªèš.Á‡¼÷ÏGÿêìïêtá¬Y#wÛ}Ë–-€{Ú7ÿuÖí(F6¡úFèpãoŸáã @ÀgŸ}JSD}mu_O/àò­[:÷Üßµí›} ­´'xš0jפ˜û·rùªÚ@,YÌGF –L3ÎLEÿ^åCZ¶ G·\xɬ^"Y,´"Љž6Ú+·À&S#Fï¹oº ÔT³¬>X½šØçÏå ÍíííÃGL§³ hÉŽŠÑG4Rªã5[º Jë%6ÆÔWŒÑ›šyÚoË¢¦ú+fNkÚâ(©l^°É˜ |¾ñ3UÓ©ï¶ç>[;»‚ÇQÖ¯YsÏ3Q!‡ÚÚþ´|Åp}™bN,ÂA¨ghÏÐêË™dwGÁÅuf:½TÑꢑBúº+®@tí†{îvK2d¼º ðÍrМ¡‘pÌïäÒÙ€òû±¾>‰fðd¦¿¦¦· ÁüCã§i²§§¯¾¾Ô±í ±ð«®›€2ó¢ ºÎÏû}¾¦?‹²h ñxxýú͵ ÐU$Y‘Uu·Ýâg8ExÔÑv˯VÕ7ë.kÈ!cèxˆ½ôâ‹/½äb¨‚XM}IVqš  ÅÉå³ÕU5y誜ô'ËpŠ*Ûò €×E†¥Å¢T[WŽ(]– Êä%¹¦¡.•Ê×Uß]¹º®:†tYóšRÚwÿéÅTDd“É*éï™yÉ%Ô®ÃõÎN$øÏ?¡º¶Æfrùªšê\>Uš½³ÞÜ‹Eð½ùÕÖVƒ¦TÙ.œ“oÁEO¥R ^ÐÆ²XLwõè7u<ˆºº:èwÇ Y¿~}_âá;gâÁ µaª¯Gª|íí·û#¾¦6WÈßzôq(uTu¡ˆjžX¯zðAÖ*ìM75ÔKy <ËéÞ&H  gÒY–c4UÆ"ðŒáÈÇûÓ™T^ÒLœ£ý¼ÐŸJÔV×ö§úá™bHUgU3u‹÷s8ÄE MÑA5ƒÇ¦ë:øjýý©p4êâ—$‰¤è/›ÂÊ¢ší—±Tà`R™JöÙ¥QWÔ¾žžÆº*0s=É>:,tõö:"›Éã¸3°¸aËæõ MTUÅ@¥A_´hu}&'Š´ ³Ì-µù¼’HôBHcc]ggO©$ÕVW“å‘?P IÐ/ŠT"4Î…ªã§Ëª"öeJ|0 ðQSei6N÷*$à U‘íïf)éšsÏA=ù{^™Ÿ“Íp}CÊ”}A¿\ÈpºÚ¿nÃ]—^ŽHQøï¾óyOÁ‡œu–³´‘4·­tqà m*šâ øXs9LW[êëò™,")Q‚æ ^18 ¾`(†D¡ 9k@‘µ}©ÿÖ”u‹¡L“&=òÁÅoÚº³fÀ'Ï9àà›_~ÅŒY6AÐT¢·»¡®¶»·/VÝ ƒéE˜¡)–©…B6“šrÉÅ·>òÔT,Ótãʳκæžû† iéìê½ù„cï˜ÿFIU|þ†“)¦ÿú”{Þ^©oÞ²©:¿áŠËQO´P-°x¤zÜM7Öxí¹ç¢õ[Íüé­×Ó¥"tÚÆž„  <óŧ‹ªšØÒ5rØÐ\Vúþ$JZf”e.>à€?µ¶²~ߺõ[ÁÌ͘:}ú1j¨F$B õö!’½mî¼T^  ,¤ÉSÎÿŠÆ¡8M›öð•¯{üq0œápxËæMà O>õ׈¥Q88á¦[ïºhÜÔ—^ЬiK$ÁÄúp¢Þ½øè£sÁúöÍñAÒ¥|.W1l úxõ;Þ?I"âWΜ5ë¬sîY¹¢$J}]í#v²uãºæÆúKÆž0í¹s’L±B *•+”ØÑöÉb·(†xJa–Z”B0}:Jö¢|ñ4øÍ·ÎšŽÕdвhØ#†×fÛ3Î9ëþ'žhëhèŒÛ¥o>ý´û-))r2—´Ë d.ëˆEÑhŽ÷ ·F7A•ð9–Qðð$ëK5·4š†] ÕÕÑw–¯úÛ ·ðõ %p«(jæƒNúù‰wÏ™[]ÿÍ^{=0>Ô—àã-šN_}Ê)Y¹¢-Ÿ%{Ë.¿úæ›GœIåº{»¢Uñ«Æ{ãœW¡AQÙtŽ£8[//%¥HÕúª]°ØN3T{_4˲A!¤ˆÙ›Ï=™ *)ˆã‘j ¿õgnyuŽnZàt÷ö´´4š•ͦmÓÌär`Ô°­X8"JCSÁX²ÝÝÝ‚šíèŠÄâù¢4rTSWŸžJeâñ(‰YºþÕtÅR‘Ä)°_`Ë ‡ÃÒ!êÎ2ìtö»Ö¯¢É Å~Ý~Sy%©Há”ah>Ÿ€ã(“É™&Øß;íjРæL¦¸7.wÉÿÇézåýi”0«õ—T•ò“Å\oœÅßzö‰?œ|¯”–/œçÀÁ­ë>h:²õí÷KBLn°zs§Ÿé’I˜¶ˆ5ì×µšä“Ùœò#’ euVü°†³¦Å`ºXÓÜýžîx4zå™gŽ›2%~z$ž)æ!ƒ*øß$S” á`8<N3HšqC Ê!)Cs & ŽçqAŸ’°¶O £//¬.¯›Þ¶Qc‡6aY¸eæ3éÚª¨¦×¯[c(rm<†é&˜g‚õ…kj»úûM˳©°à+eÓCw¸~íçÕõMIQf‚ÑH}c¼í?è)E¦  9gáÏr€°uóf(8@U—êOEýÌÕ‡À‹° Y–³ù”³/xô½ò¢’H¦(>ûä“H,Æ¢P:¨ @ÿðr0àÏç²×wì] èìì„ætͱÇÎZ²ÄYŸ!Š·ž÷›YÏ='kZ$÷ÆÇ Žñê{î¡8Á°Vº¦»ªÚ§ô“Ù$…Q’* œ`6®P,~øÁǸÿgŸ}ö§k¯½ïïO¥úz«««A6.»  <ÿB¡˜›xι=ÿOŒ93<P’çqÄ}o½eB‰l–²í¨ô¢`ù²…ìô)·^;}ÅÐà°€] 2q¦YÄÎP “B©ÀÓ¼¬Ë Q‚QM5äAˆŸõ§r)à A-<½zç÷zςŠÇ_rôØûß|+_(@ ‡:_"HMSý>_$å|¾®žhÞÑhäÝUïV__ï€V‡°¶¾|ç¾D2ZS“IgêÁ™Ô¯¦‹Q˜©šC°$k ÃÒ,`;F)†B"rûë—â¨R¡ñ|ÇòBn-Õ„Jûk9ëê-šûKÂq²T¡~Óé$„È2¸C‚cIJýÓõÊûÓ(/´sžâeMaC4n+‚­½ñÔß/:ñ„*ŠX<ïUg²¸mÃÍ-Cµ¾ßk‘þ½ö[—ÌKi%"D4I¼iÐÎ0-j&²„m“)ÅIС6fÂ!@¯ æÁ±fi艬&ÉŽ®?þ„Ûç̬ áŠá™òý*˜œ5Ñ<Ï»?£X,jšÏ`­ž+d²"ø—,„Cº ×0碻¼§ÃÁ>Ö;¿_ƒ.̧ScvøéûŸlnXûÉ'³Æ]ŠL êK"‚¼ûùçmŽ66ž³Ï^¨¥mÚ€pâÙ9sN?þ¤jH¡šÚ‹o4ïO$‹Å#DCᾌøýÁAÊ2¯;üg÷Λ‹4/„òE@;E±¹ã?áþ…‹Šb)uv÷L2íêë®­Ž×~Ð2—zÈŸ/Éç2Õ±h¡ Ž?íÜiO<‰Ç*f…Áþ®Ÿj_ö¹S~¤º¹!¡K:LݰUݯ¡kO8îOó_¡9šâƒÛ;¦ßp묿ü:;Eâ44/ÓÙ“qáϹõ•¹Œ/.”øPÀpú¯EØ8aUöš:ÝÜ&‘ª*à²4Ž«†&«„ÐïÇwç¢Å©B>ÀóB¥|N—Ä©“®Bm[¦¿üòuãÆ9ëòlûú‡U¹ªº†÷q¦ þQvò¹çB"‡ ¹ôòËý<à±®¦¦§¯oÊ¥—¢¾¾?µ¶^vðÁhèP”ÍÞòÐCPïÍMš®R8XðŽ‹.Bµ5H”ξþÆý8¸7‘`}AÈ/E3–*5†¸3wõÐÊws’fœâ¨8¿ —ÄòÙT}uÕ…ìûàÊÕ8E}ðñç#GïKôD£Ñt2Åù w<´7Ò)ºsN ÊrÎþ]Š8åLÙÅlÎ/qšuv á8T0M ŽDŽ9üoKéŠ š‰ä„tAJ”†úÚ‰ÎÛkÌc+V¶ëèîéK$þtóMÓ Ðk8ßÒe}NºNšÎÔ e8ºÕ†êa†Äpª¼+ €]gGá€A›bíí}׎=~Æë¯Ç£aP˲T‚Bëºù’‹f>þ8†,(T>“õ >€t Ò]M9ïü;æÎÍYdqÄàÚÞ¶”.Ц*· ð»ö½ñåç”Êf$Qxüí'¤2™X] ¸ ‡‚XÔAã´:ÞÏç29\ äýZ)Y†IáæUGzïË/Ð,ÉG=¼|y6W¼æÄ“ï|sŽH$™Ù°aÃý7ß‚”*¯xà0T[W·vÍšaÆŒ;ï|Ðü·¼øâ-—\âœÞV”®ýÇÓª¦ÇâÕµ‘-[Rœßg›ª³MíËéBÙ M‡’èŒý‡ƒ!Ã2 ¹¼3 G‘Øw­_(8<ÎÔùw+/Ôt4¨ °¿ÐOÀ v¶¾åû ™„*ÝÈ— ä_C±MS­ÿ4]¯¼?ò <_̉ B÷s¸YH­œ3û̃Qø¢7æL¿ífLJ·ñ‘ªÕ«×®M<ôó^yñ¼Öšh ÓB(Ø‘êqN.ÈJ»í¾G7Kšjæ%ÃB¶ Òp9 JöÛŒ$i]]Cî’Lô_s̱w½5”i*—§ý‚¬k,ËBçlmmînÑËÚíàƒ×®]˳hy°å=‰>@% ”Ýö㬀Vušç˫ڜY*;ˆ·ÃÁò,Úv´‡m+Às©žî¦Úªu4óÂóQ}Í“O<J.Âñ§ýæL©·kâG››#ÕQ)›púhkû{lâÙ焆ŸöÀƒD¼*cÛ}Éþ&?`Û´u]ƒŠ¿øŸAÒž?ê l縱ÇCêO,yûìS våñysÎýù±H±g½½.äÏ"¼áo¹å/Ïr¼ÿê3OAÉ 7ÿå‰ÈþÇnèTwñk´–4ÌÜøãŽEÿ×9 mÒW4MäqOuuL¹ìR”¹ç¾ Ï8ù¹YO?‰Bq éÈÙ¦]Ùbmá¶…Y~gÛfW]$”ïOLþÕ¯PI¾é®{[ZZ2%ñ–™3ÄdòöÇþ­o }][g-X;Ã])X•qæn9óΖµóãVþ;òûÖ|üÙn#]úó&ÜrCU$ç¦ß_ˆâuSx8ŽeóŠÀuU¹yüåHÓïxöÅBIös,t/|•L& L:éø©Ï¿G eù¦ó.˜þÌÓéT¶¹©A-f‹…I1ЦCcº}„¿¼6wk{$ ÖÏ: ‰/?êÈ{çÎ :hI†®5îè£þpõº5ŸÝ}Ú9³žyæÊ3O{iãº_¶°cõÃoŸ=[ Œ (ýùL&­mª¬aø_'ÊÒ¯;òæ½ÎñBw¢Ÿó9[J‡ïÚxò a3^üçÖ-~ð¡i·ÏPmbȈÝ6vô ÛlŒ.øío®œt År$ †³,;+’‚0P/Öu“&^5éjðO³,à£ÕÍõk{{MŠàYV—d¿Ž]yÜñ/m-èJ—”E,Ab¹ÒÕ—^2í¶R™”êÆ–Þþ\}s³ã+2t©ÕU| 'œ4ãõ7 Dèˆ$y¾dJNÞ>:¸íØÌÙY\,ü¯—ŠÅjb4ì«~ñókÞx#V_¿fÃn»!TS)ä4Q¼úŒÓEÝù÷Ç‘°ã8ìV½³µ·«&k4píu÷=ó,¨ÝDoßä«&Ž¿ñ¦£Föõô Á¨Ëñ¿9å wÍGøÇ?öî—^c Booï­—^ò×¹¯ƒ#ý÷²³Î¹êŽ»àA1¬æ]Z:»û}&`êø£¿û­¥ÎÈ&¦èF8A¦f(²H@¸è€®{ö9(L²~©T‚ÕÒ|é…·ªkk~IQ pzmü–ÝöØÃ6M€ª¼÷^M]]ª¿œdP‰ ÷³ÅÒ˜=÷Kr&•„.@âöÄÃvÏëÎ`€rm£èìçLMåmýc½ãÅ;º:¡=Ìœ:mn»oÑBöšT=÷¼šºZ¿/ « ô#PQÙ}ÌŽ)‚tW¿W_W“Jôƒ5|þh8L“Žcb¡ <æ˜ó^ÏÉÁÒU±h"Ù œ%¨S¥$B- yè,-©; ½úÚ¦ön.Zíó톩ȘMA-ÌœøÇÛÿñwÍ6lgvËúç£PœžLV1tÆA éR ³níZ†ã ‚Áþ¾>Pz²$Þ}wÚºRºùwg?öü3™\áÊÓÎxðyà>üþ×§Þtÿæìµ`:cÜe3ž|’vJB\vöÙ7̺+ƒk!“~ýK$+·¶ªº¾âyx÷› TÝ 9~ÆMŒ+EƒÂWÒ•Qc‰fÙL*…p<öƒA´í}ö“Ld›ZÂß±~m ãFÕ¿ky5EUDÉG;ö|ƒhÅþî7&‘ȶ´„_xá­ÚÚZ¿ß8Ø©_ÌÎKâè1ÿiº^yåeÂ`”?Àw$ÚhÚRÒ µ»ãôƒ~æ7´wZM¿íV¬sãµ>údËǽ醣šÿî§w¿ÑñÍ»úЀ&ÔÓ¢×Ýp=ÛPk û–ÂTÌ;7Ö ‚3ò4tðÄo … ‚ Å)W_uùU“ hXu]Š  g:NX±ˆÂY Þ˜I’¼ý©§ lе§]s êêD²†ZšPG ‡Q46é†ë«âuð*HÜtN] ÝsdPùp™òÂA­rô QÆ‚åí± ¨Q)á†2ñÔSX˜þÄc MÌûº ”®0^º}áÂîDwM8ÌêÆ•‡‰p qüÝ?$4µ$L3ƒcápÏ&3¨¼Ù›"ñÉö¾—^õR’Ä ¿ü ïyä/ãᡦê¯>xÁq‡!œûÓÊÍýÝíSÎú™-ÿ¾l}lŒfíÒ%G|tü‹òUá”&•>Ž5.9ò„ ÷>ór¤º1 ‚Ʋù,KX7Ÿxòã/¾TíŽ;âHdèÿ|wE¤hlTØ `3qç  7J² ¥|*Ærã~s&Ú²•"f6uç?žÒÁ‡Ã|,¾¾­½ªeáó÷¥sÃ:geXÎQy4`A 9G°`HÇ@pªŒô€ú¸˜ÍBÑn˜8eSë{ŸúÇcOºoÉÛåŒcJI"1«®ºjý¦Ít0‚ÓÎ G>—˜Bà6Ôû%ûï{ǯƒËaX·IÇŽ}xõ»rIÍ¥’ç¡(Éל>2쿾9íú C‡ PS]ÝÝÑÉ0ÔÄc¹é™§ Ms‡¯¹à¼;çÎf0ìò½|lþ[ç]öû‹Æ{xÚmÓ|èºÓÏûëüù[Uèt˜öc6!¾þ^áàá=0o.Áð’ªb8‹EÖ¯[3í·¿A~ >ÔÙ~ÿ¼ù¾pu_&Çø"†©!)K"ûÊ Q²á$ „Æ]ýðáà €êi¨«[¹jùƒ÷ÝgA?íïC¡èízÔ¢Y,äc‚~€G€Ì„Èù{ï÷ЂYEâj¢%K”Œkæ°Úº-Ÿ­¹~ÜïÀ¢dÕ7]}ë4œ¢ °yÃúƆ:€ƒ€oÆuÌío.20’ñ{fh«¼³¸ÝI’ÄsÅ|$̧ûã5¤¡‹™Ü•??yæªU‰b>Éùœ”L nl -낃|bYk¾àÌ3ö¤ú§M˜píC×TIÅü­'œ|ýSO577p¡itë¤SO½áÑGkjjÜýŽ:ê‘•+³Ù,ôo€SW=ö‘Ö¥  A)]ý‹“oþÇ?l3,P9„¬[wŸÿû;-f}ž¾Ãù8Ehówîÿ· _ ¤càŠ°]ÈgkbaÙ9V¹é'?²ê=ë¾`X7 ¥(CÂÄ3ÏtÔ D«i§ip>&Ý~{,y24Åxµµ¡¦&”Ï#p÷ ëÚ‡ …¢†¡ûR.d®=þ˜;f¿XSÏå‹:Fvõ§›‡ˆÅ|•ŸÍg’“.ùƒsǨnLyäáwÑm\·Ì@(8þÌß–ÓENºðÍ žûÌxÔI÷¶óÎuÒݺÅI7m˜B‰ÄÔçž2°é³ÏÖM>ãŒ{—.RHÄœ–Àó¬åœªDä²ÙÚÚjUwÂ~úyç!üþëÖ­¼ë¨þŒÌм­i`MI ðüe‡2kþ댟-*ò ù)W^ål1)*ˆ¤À†ê¿c»]˜ìØ….'Ã--޹qìBôªë¯¯ªª"LSŠ~–*H¥+Oúù¯ÍuLl&‰DÀÁËårל0öÆgŸ1lð–-m>ž•äÒu'ýâ–—^xEÙtææ_Ÿòôvttèå®Í°üï<èŽùoA#œtʯitw|=]§ýâ(q̹Ý2éÆÝõ©ÿBýf³®ü.åï媟—Óqýõ ¨³ rÝM7²4ãÔ/h~’@&T½æp†F;iÆš®WÞŸHy;»¢£–zÔ¹U uÄî£'œ~ZÃΛãÀÁîÍÕ ²dÑ»E.h þqGcûõ<&fc–J:çšú4(hÂÄc:¸ÈGãîá°¶s–€&ølâçžwÓŸ D¢:1}Ws` ‰3Äé%ê’j—wÐ:ñü p7¬ªP Ó×uÕ‰Ç#št.]€YŒà0‡ªbˆ#¯ýóŸI–¬…¤¾ÄÕÇŽEš‰(æ™·æçq²Ï0¸Æ†-›7†UùöSíl‹ƒ*Ïå@Ó!Mydþ›†¬² }þQG#žýÓ“O^vÆoªÎ~{ÑÏÜiØCïl-¤“ÆŽ@¦9wmÿçýR©dÄüøÛ …ªÇ?³÷…[Ø"!'üìœýöGx`öÛï­ßÚIC¶Ÿ×,õš£EºùìÜy›?úäúñ㙚ª+§O¸ûÞƒ**δ¨6çð!‡“+0–mËbž¶u†éÉÔõ—cTKðxÀn{ê)ÉF‘Ú:“a“E‘Bºiý(à ´?Mb†‚2p?ÇKr2S˜>qÒÌ'Ÿ :§,‰JùL¬¦6¯Ù`’jëZ†Á2dP\¼ß>·Í} ŒD2™L0é”SïxevIR"2Ôt¢ïú‰“n»÷>A‚O$S‚ €s¦•Ô ß9Ú™.„f‹Åºí{LŽòÓôø}6ëŸÏÕ ÝåŒÃ™õüó†;å·3ÿö79Èê8NëX4OKê÷ ¯?òg·¿øœ/ÿ/)D}dý×ýü„™/þ3 ŒwÙä)Óú2bÓࡪEZ¦îCF¢»#‰ùB.W«9ñøãï_Ò `¨Ë¨²LG’Зêk;;z¯ùÅi¿÷Ag!-™x¥,`IÄÑû‹9&‚ºQób½?œØºiàÀšb)¯[ÎðWüê´ë{¾¢p €Q(à¸0ñ¸ãX¹º+‘ℨµK;…ƒàýÙ8÷²TÈ`¬rý©kN;õº×_g#¡R6o«Ê®Íu©®„¥(“N>éÏó^WAÿÄ"Y©xågÜþÒ UŽEBøÙßßì=Ïó€æA›_qøá[½ZUU"€f®þÕ¯î~í5Èd__G;Ðÿ¯ËZ ¹l(:ïÀQ(èt|ŠAR 1>ÄrzöùÞþ”Ï™?B–"•ìeG~Çœ7¹pL6ðÎÞ¾úšZgÈÒ3ý}Uñèå‡|ÛÜù4ïÓmLÑT ø¿r"5áôÀu–`:Óôpð†_œøÈ‚ù€ÿ,礥ÀG7ãÍ¥€¡Õ\T…¡hdÓ¦-8AÜz啳þúhy•O߯œ%•û»3åâ×EØV…ã– hÏTÕ@ `( ÈíGùç·—”H¼7“€Þxº¿·¦I°4uõ5ÐSúûûï¾râÕ÷Ý݇ã¸T¢ŸÔ®“,ãó3LûÆ£îéî¼ñtè}/YάÚ¾|Ù­}'oŸïÞ_pÛ¬Ø k×ÔÕ7^þ›³fþýïО¡…‚¡jpÜ¡ß1ože ®CAàøø#ypù²\: ÀÕœpÌ1·¶*j ´Aó€[¶¶ßðË_=¼òIVJŠ  ò»WÖÿ}÷û,~ä•÷¥¼ð ØzÝÖŽålˆ´–¾ôÂïë×´·½éÀÁ®MÖï2tÑ¢w \ ùq{8ŒI€ÒHkDXÁuq†£Y*gÁ;逶-‰àï9g|454ž?f÷©³_áx¿=ý;gÚ9V׶ˇ§TˆÇÝ…måûþ…Éb C}íûì1òÔ#…Ýýì?‚PL§ã>?AÒu¶å,ãÀcŽn]¹lhSs®§çÖSOãêêålnÚÝw›& “­¯cHbÂ~û Yzô­·@ëå3Ùk.¸É¥;ž~zPó€Îö­ã.º峯­XyâþûƒŒžxíųO: QÜ}‹×°„uáC‘,Nzàùú‘ûÙ8)æ G\dZëV&ˆr¶)ç/8ðd0™·c|"h2?Ÿ.d¦\z1ʤPNŒW×&ûû‘$QÇL¾ç~Ì¥}ád¢|Yä\_å¾ÞDO}S}I̳ÈÚÔÐñéšÞMß{?°y§œòK$Áá~òÃû Å”XôE«œÃY|ôƒŸ,vGiaâ†ö³7®ojj¹ì´3&?þ¸D’ †§?Ñ=|ÈÀ­›6(šo”Ìü<'KEŸsЮ®ÈÒ䟟|ç‚%Y !Uׯ:ú˜_~yÀ€–Më7ÚùümW^ùÐ?ŸÃŠ èîÞD©ôÿÚûp»ª*ÿÓûíýÞד¼4€ˆ#2úWGdDZ!H1qFê„–H A)"ÕŠ £RÅF ©¤R„ž×ß»½ßsO?ç¿ö½//áñfŒdÆó{ùÖwrî){ï³÷Ú¿µËZÍ äó–JC¾Ó-ºý¿Ã´IÅm\`³Jg4úoïûà¯6o­Ùz¶RDŽixiÉßü¾ŸÏã¦E’J¡f›íñR:xùGO¸{ãú\©ÒT´ŽîžáááD,tþ'?qÇ£³4‘Íf}ÁÐùg{å?$XIâ§Y]zê)×?ò(ËsÐOS ýµ>tÝã¿2ÔÙ‘ìHÆ¿´è¨k|Øë“LM ‡£g÷áÛÖ¬1$¦ª)ÈŸª§ÿ7?öñ‡^|![«*QhÔü^¯¥h~‡þæI'^qÇwç-˜7‘/G¹ø¤OÝ´f 0¯GÒ›uÛÔ¡W^qún{n«¬™$'­øv“ÅuµAQ$$X ˜[<‰+åÚ§~êÆM›Æ ù#æÇv½>ÎZv" LsɧN¹ÿ©§EΗK¼ÏwÑ?~âöÍ[€¿–ò¹–,¹üÖÛâÑÚÕKã#7_³âÛ7Ý„f™€Ï¿øƒÇ¯úÍo¨¥IÓ2¾ñ©S~üø¯uµ™N§W._¾òÆ9ŽãEQòþôÚ6à7uYéìéÓTÅí¯¿Ö’.ýäI7?µV‡fv­‚¹NŽE^0ã+…üò%Kn~à¹üQï?4\¦©vl˜·ÄI¶›T-‚á5ÝÔ ³-°u޾ðÃÇßùÌ“ÈõŽ6Ôžÿ±“®}r5¨ßÙ]ñR.M‘ ÚIÍsçÿãÉ7þæqÓ4te› Nº#€'·b MEQjéO´öÉF­>«·+—)hššŒÇG‡‡–_pÁ—/¼¨ZZ׫¯î˜5»wbt"ôƒ=¶cÇ–aÞyéE7üò!’Ä!Áéô„"+ýï9²®û†‡öõ–=²woÈç½ü̯Üúȃš­O (N{_9JžI€ÙÿçK¦- ŒàZ8¨Õåo}âw®Ý f˱Kà¤aêË/ºøß–^–L&C~ßDz šöw.ºäšý¨˜ßÞÝ`(^xâ‰W=ðÔv¯Ç_(•@û.¿ø’ë~ðCEÕB¡†ö\ÐÓdzþ ò¿¥ãpH¹›ßw=¿h¤Ì K£Dè ÂÖ=ü«Å'RÐÕMm:8ºïO½“tЙ»ðÕÑ,có@šÎ:tdVÖä‚5[Ò&ãX`S#s ô Ìai0Mz­–ˆÅð„k{”âE‹8X~A86¹?´×äᤠ#ì¶G¼ƒÞJbëšß#Éåb$è;ûıjiÕÿÒj8™Löß/¾ëH®¼éfÉçA*ûs§A~öè£gŸúi 'î^½Nçø­ÛwœpüÎ;úH"]¾|yww÷âóÎÑFF1¯ï—=Šø•—þ¸âòË1U½÷‘GÏ=÷\³Rúíº§Où豘?xé]¿HÅÂßú‡#1ÇÄç¼ÿÚïÿ¸X©ÝröL‡ïŽŸü\íX°c_YÒò>V/–Çn¹l)V7ÿmÕ-ñÎYeM‹Ï=–Åõæqóæg^{½žÉ_µd ‹.¹úò£NøPº¬"W·6V.–n<ë,°‚¯ö^â«ráP›ù±‘ï}ñ Œc/ºzÙÑG½m`ßw—.Å‚¡ë$Ù0¼¡˜jZºiý¯ØJâ•ǰfµQ.J]Å«¾|ÆíOò~yh˜’xCÓ¡HiïÈu_<K–Ýp}oÿÂí{÷ݸäü›÷Hg.›Ž|$ ³ø„}Ãæbµ¡˜ëq g†­$Oëºfj:Ï’J©JZ¦D2—œú©kÖ8fª`HŽ® ™]ù¥/|óÎ;8âˆj­Vª×¿sîyÿüžD2eÙ&ÅKOüøÅ?û™ƒãAÜpÙe+îºK$È]$Û³k×w¾øÅk{ŒbÇÞzöW¿~Çí]©9sæ¼°uË _|åm·á$U©VßsÔ¢%§~æ†_þ* ¿øÊñX2àôJæâÏ|æþ-/ çd“5-™ì°uµVÊÇ"ÁR.{ÝçOûÑó/åŠEšC³x´æ`­('ꦅS¦’H$X–ÞùÆ6žÂnùÆ×.ºùFP˜Í€ñ~Ë7.¸uí¦F£a«5Â6Š¥ PÀÛ–-»ëÁ‡5Ó@ŽuPÁNúñAÏmQl»,ЉM2B¤‡QŒ%Cã, ̶öÑ;Ö®…–rîG>zé]¨Ñ4Y«V“Éøe§œú'Ÿ®á”ðÛ²ªËu ªg-:ö†'‘_'PYÐa´ {øÞ-4™08åC€Ön6Š›¸í¼ÅÞósšåzgõA~I’.ó¶i-ÿê™Wþà.žcTµyÝâÅ·<úI’£Ã#ÇsÔ¾}Wœz*ÖÕuÝ-·(ŠJÒØ*?Ü ¶Š^®V{º»†Ç<Ï;Œ.{hå;ÒÏ­‰2ìàëÛa(ÝüþóÛþdX:%’Zè ½î‘_-þ§O †ºqõSh+ÉøÀ¶doÿšµ@ýNÿüWG2 &8"ƒÐ, ÑAŽìÈ:ƒ¢°hbÑn Ñ¡ùbgrâÃöˆ^MmªÆÐ”¥r£výé_\þ裴(Y()(BnO‹ô:é7æÍFm{›Fí·s4ãá9Ì2KùLO*õÕ¿? ø±jé’ÄL{ÙÝ÷xÃáKÎ9«•10ÙEþîÿèÜsÎ!iÞÇ<þ{·nÌö=_>é­Hê½O•ÆÑDÞà^,_ù÷㬧Zk†¼胯<ýó˜¦Ýºú™rµÜ4Iš„®èŠó¾†v:{}h+ôìYØðÐmk×›Àsi¦¡êMÝ%Ör¸ƒÞŽfÅbQâù€À]Tƒ¥€ß¿ió¶{hÁëƒãS×b!_.=~ÍYgb~ïÒ[ïâ=>†¤äFÝëá•F=ð¿öÊË?âîñ{Æ ¥UÏ<íõùs¹Ü¬îÄ™ïÿZ½‘É¡uKÑ862JyĪU«^Êå3A¼ì_— ÅLÅ<|>¬Qÿþ“Oš²Í“«Î:«©˜×ç½?ÎUË@¯¿ðb¬Ž<ÖߺiíîááÙÑÎ\&Ëy=‡®H†EfÉþî®M[</—Ë«¾þ5 ÈØÈaéqláB¬*_s÷}@ Ñªÿböš ¿õГ¿>mÞÑØìyÐ"núÕC8ŽŒŒôõõ5åúå_9ãúŸÝsùÒ˰Á}ÍÜ|ß/c±‚iå'ИSSî $¾q ¿zå/ïØ™\0·a4¡Eå'ÆçźŸø±ûVÿî+'|iµHü»> ¨«+šOHäµê÷JúÏ·­^§šN¥®r^I³µÍ8TEGm*ž1j²—g£ÞÀ:áÆ§WWEä9¶äZ]â¹ËÀ(*æ°ŽŽ7ÝtäQ=ŸžÿÔÆ;RWÝv‡Ç+2®«ê¿/^Œ­ —Ý~;dÖï÷'úÞŠPðRé;_+_zöÙ˜mB{¸ñ'?8lñÑ‘+Ï?-Äñx1U¹å±ß öõ÷Wju´œÐÒ½¤ý­ÿaÙ£ãŒëHU&è1MiÄ#ÞÑÁ¡•g|éÆÇƒŠš/Wzz{‹å†[HËÜ\Éà$ð¹@0T¨È^¯ æÎU×c™¬Z$úgÛûö`$ÔÛV¬^ñÀÃ/¥–_§·“åå?øòùo[4ÅôԤ甚$쩾g?ýDÁÁ[Ñžlw MÇ€·WÊEI’†oÿÚ×Q3©TÐÊBŠºëÁ_¢¸vº~Ù—¿ŒVÔ€n$q,Æ¥÷µü†ïTIšóûEut“¶íËOûìn}6¯©@RÉö´5ò—ÆÙòÛš8Ø?° ‚>éë'~Íæ3Znc—Üy'|bIòz½’ij»÷ì¹¾`> þû¿ým]F“ȨŸb©b¾°ü3ŸþÑsÏ-†Ë ˜ ÝñØã•† Ö‚¢ö•Ь:=…?è í¶ŸÝƒ6Y‹ÞíT»ù=,ò í‹ÆhÝ2(‰: >xÞÉÿ$êêsÏ>ÍŒïLvÍZ³þUÎëÌ]ð§á4íðŽA2´×[#ø’†è`ƒÁÒv+JºÓ]?9e B/q‡¡èlfâˆy 0´ìDÿÖÉ'_ûèã(ÁI§…9ǰ7yD~‹·ŽýtðmÜPƒ];>6ÚÝ‘RåªeÑobl´§¯g×È`goo¥Òˆ„ÃÕššI§ƒ~î °Xr³¶ ª›)DS‘;Ó‰X\«å '‹ÇãcccµZ-.X|ãqäÒÀg2U ‡Ã‚ @‡”X«R„÷kï÷ ÿúá@¢~ºñRËeÛ4fµáQ£ul<_^Ð#I%à‘ôªi™ë åò½Ç¤^ß9¹¨ÈÛ¹BLh-áE–2 í¶0[·}‚¤ÔeMQýÁ@.Ÿï˜•Ê—ªÕz%ð˜MEb(ÏU*ÕvxÉV{£‰œQwu§ê²=>ž„‚‡¿j€ ‰Z=ê÷ ìM&¢…\>Ž(†%zé|Iôx)Ѝ‹ÉX°œ›>dP¼'‚kU-®I7M³T*¥R)‚¤2™ P'–e¡ž(•rW"Åpìî½û†‹'Rã#Ð à8ÙÕå}íÕÁX<’OOD£‘‰±ñTOWCÓ½‘­Ûw÷¥ºê»‡Eš w'F³éd²£0‘IJᆦg0óyK#™cŽèÍB7Ô„c™µê5ßüÆ7V¬è3¯\©y<"Xb‘€7•®ŽÐÖ­/ ^ÉIT˱ Š\Y¯ÍÓ±aã þÈqé y"›ñúÀŸe9#ÉD,è_{m[*™VM9TUnÈ®`F47ë Æ^ð‘\yïý*fè<HFêu¹7ž°ËMÚ±­…i¬ÇçÉøÁb>çG®P-KkšrÍç>¿äG?ä"’T¢x›É uM©‹¹Å#1CVŠÄ5ãÂOüêí?è_°PÕš>Ÿ‡&Èr¥l¯¯¯gpx$‹ïؾkî‚ù‰Ê䚃ƒC ,HOŒöõuE"‘ÁAÈ]²,h­ªª¶C“ç8üÅ_Cuƒ P$øp0ïÝ=V_ww·"×åÖÎ0LP$ð~‚¢u¹;°UWë+/¼påOïµIV EÊu…Â)†ÆÓ£Ã áÜ´ôÒïßw_µÞŒ¥b…’ÚT•–ï„?¯ §ô!C w@P†ÆÒˆ˜ÝÛÞ˜?§WkThù&óƒÅJ¸>ÎK  ‚>!‘Ó8Ipgš(ŒR8.y9Uk¦(àóØ¿äfr$F±£t´Üï1t«Z.Çêéê°e‹l­Ì£( Lµ`À‡vh´)(@8س‡a˜D26:<Ƈ–×WnÊšñ‹b)¥ ¼&7<~Ÿ|§¢n¥EQÀb¢=%‹[S2SåS)dûzºkµzµ.ƒ&¤ ò±t¡T†Œ7jU¯(ù^ÇР]ìÛ»·«««T.·¢ÆŠÅ<ßþô§~ú ­xôz{ÃP± k¾÷}sÇÓM¨Ø`Aü÷ú+ȶÒ>Hº0-”뻟r7¿ïz~[kï(öZ£ƒÅüÅ×ÐÚAõ¹ÕO 7ÔcÃ;S]³ž]ÿr•÷Úsæ½:œ¡1Ó Ž@1/ ­Ãu4W[c[£ƒæä¬b›@8“ôÍNĤ­[·Í3Çça·¿¶Þ š4“Ë{ƒ‘ýóÎ;—““Øä¦ãÏ©ƒ6OÑDzlÌç•úûÂÛ^ß'B/EáBÔ_¨T•šB9´—÷„‚Èea©Zl¥sÙp$áØT½¢Hb˜plE)'S‘¡¡áþþnEÿÊ»v킬|ý×gÍšÕNÀÄÄD0´¹SqÃP »V.]}ÞWÁŒ¾òþ_`ÛÝÛ[ªÔÀÂÎ+6%"ÑB nÊ1ëÃ* –Ä7†Çbó: ;„^£04ÞëñaÍf½&Sñ¢c›u-UJ~]V -®j4š¢Õºg º5'L2Î’$ ´[woÇð`:ÂÌXζ†æÂa_£aü¯R'Hl©PmÖ+‰(¨õ¦¦úÁÑtŽ},ïþH9aé@€6h†î0œ‚^д Å ½¾"C§Î3h_¸ÚZ?:­*ªýY6éNŇ%¯7‰@mª7õ\!¢#j†a"×Bh˼®•ËÅùs“;w§É[R”W$Lcž/Pœ(b"+›:Pm£ÞŒKÁ\¥yO÷pºÒéó§Ç²ÿú_„ã$‚ÂèÈÄò3κñ÷Ðtúï°ß76:À¶c¡PHÖt‡f1šÇh wœ¨„o{u;𤦦×Z=h¹\þb(&(Ž¡Kż×+q4£+*K0f;Τèis£ãf©þý«¿ Õ¹•Ü‹ólS–Ë™Ü{ºf•ÒiŠÃ ’”‘‰\ÑC±ˆ<]¯T(ÌZºäkØÀ^¬«ëç¿ûm±Ü‹(‚©Š½M:œÄX4媭ê"EZ²zõ%—`Õ&ÆÐ«î¾;_Ìutw ]ŽUkÈ@ìà]É[,V0ËQ}Ö¬X6«x}|©Z‚ ú(T*5 úІ,Ñ4Y,–V ¥d2Žœ3ËŠÇÃ7ª®4-ÛèNÅ^yåOG,|O½Qå9H!¼ÎD®¼ä` ÌðÂEŸ>+¥1ŠZõÈo_H6p¹µÿ€Â±î¤tÞég\ºìjŸÏÇ(j‡„öíqlýM 5«uH˜è ”ë /d†Á²ÙT“ Za•pܦ 1xk´Ç‰ƒ/„ >˜ªvvwŽŽg€¬ã%QX–ªäé¼TÈ„Áú5-Pp`dd Þêør©týç>{Á=÷´êO’ôX&;§®ªÛÀ¢ Å2èhÖZòàÿ‡Ôºù=Œò ªÕ$¡nÞ¢ƒÖ†G\|òI@7·£’ íìîžóôš«œ×ž;ÿ•Öè f¥E´7e^t²Æ1KâÁ€OƒêŸ;N¦¤Èº‰JÙ¦*7fuEuEi”ó±D²PÓ5¨vÀz)BÑ T£V¥)´ÿº èá’©ä+¯¼Ö?w~kH@U•zWwj箽¾@¨\®B×M„s…2ËðJ³!r<ÃÒÕb¨C<Ù70äõ‡M:XÉçÙ²õûKªˆÑêC—¢®›ešÊØáõ²iãÆTMþ‹¸S~|´ÖlÝÆ÷ û!’!††â"ŸCÔŠZ’U’÷`´ý¥+Ý©У‰LÖæÔú‡XÏù½žP€Ïe*,M²E0ô„RE;‹‘Áˆ.”Ééa<¢Ì`5]yÁ/ˆZ¦,q,FZªi44“æÅ¦bXîáʰÊ# £££’?¤¶7kÈM‚B­ž²ˆÖÒ–6SAf'ÉQÙbHž®Ô%†óóœ—cÞøÓö®ÎÞ‰L®^÷X¶(xÅቱ£½ùù]c£±X"ä—Æ† Á# l©\#ܰ5Q,ÛäX¾R-8 m9“ÎvuÇó¹*œ9â==¹¼2°o°ÞÜl6Ô0=>ÑÓ›œžH¦âÕrɱLŠ¢¡î½&(*á¶½>æ&Kb‰•ëU_´c4S40*B+gs–®t$â ¹F1͉ ®ÀØÀëà—㎈ˆ•šUm(ŠŽ‚ìÁ—r •Á-éfª¥¼Õ&5ùqÄH‚ÄÍ@Ð366±paòå—;;ºQ b¨Ö~ò×b­bré0v@cíº :¡\.÷Íê€ÊSòòpgŽ;nn.§ “ɢѰ®›…B~v_bb¢hhzWWbÏ®@ÀWŠ"'³…&‹÷îÛÙÝ7÷ég·4œ=gÛÐ…±ŽŽÑ­×è$ò;ÀHQ7idÌQh²Û¿ªï@?‡†ûŒg¹‰ô8G³Éx¼^­i†N²üþhjûMƒ€6†MÝÜšË8@ÛÓšÎ~:ØN :×vCCRŒ¦+í%q‰Xddd8 åòyÆÃÑ$ãa„z®Êã ðÏp88š ¤Â¹ Þ#™&€OIÍrèpcÍÒŠ®Ë GœŒ^JÓ5¹ Me¡ ÅpEi‚²Võ$)õJÈçéì|£\Ê·Cå*†­[D lÔjMUõ‡ùbÎç!qËâH©QWÑQP)Lð‰¦*“¦×ë~–;Û 5)\6U† |¼¦¶^o½Dz«Õº?R‰ÚÅ¡tªºâõHÐãa|l¢»«Kkjù‰L2žbi®”/€Æœ:h·úTn6tj º@GíÙ±cÞÜ9É÷ÆŽÑd §¸áññd²ƒ&ñôñ6ŠŽF€M †‰£Š`›4I(jX$Iããã@å¡@ŽÏd2PXQdIË•¢Ï 9®©h¹\.ÕÑU®UBé¡K%ãˆnÊ5¿:{²OÄôˆ7àµq­ÖhX:űPž{¶ï>fÞÂt¾`xxN’ªYäÛ0ÕCG Ìx¼…BÁ0Þë Gb{öìÔ¦G‡€{y}B>›ƒ²Ò-¬ÔhJ¾©‰+f3PŒ$Mà ÁêslÔíß¡i¸>žˆÚ†n›4žbäj-åš5›"P`¡¦J©&ƒ“ËZ$.ãVU‘¡z&2=áx½T!9š HÕ4 †7­ÖŒ<îÒéžÎx¥7 -•JUåf¾P ÅbrSÅÈÉ-o-:ØZòÑÚT ú¥½])(y†ÀÁ¼a1 x'‰3h±šcÓ<‡ÑxSSe]%hr°!£Õª´È+zkÕ*ò v“ îbÔÝÝ &œ,Ë~¿lä¥HQ€ÚB­€¦ …`;Ж$ÕjŸG¬U*¢À9(S04ÔšáæÌé‡êD“$e©P© í²‚,e 2ÕrtB",d3‚À£=vÀQL« 寱­Åý}´¨ ‰ ”˜­åiÊd¨²­«^‰3À ׌®¾9Ûvìíì+ä±kZS’<¨†ÍÝ»÷vttIjuÄþM$íÒnÕo1ÂÛk8áÛÉÍ:4œJµ JoΜ9Û¶ï„BF3‹@1B‰‰¢h˜ކ ¥r¹ä÷úY} hGðR°1<¢§Qm½K3hœÐu¤hÕ2l¹-kÓA¬=YŒþ¡ äwâˆÇ¶ì3Âwk°Z¯Š› ‰o6jýf£ls¬¶‹làŽ@ëáS²`¢”+ [Dž‡ŠÁ hš…ŠÏ $Í ^‚ˆ$ÿÓVyHA¼Ã­öáµöçÃÍï_2¿ôŒaé´@kͲ—ÂÖ<ú«s>ùIÞÐ6¯vÕÊoã»Fzz;_xiÛ¶]{Êš¾}÷^'}¯©é“tÁ² ËA¯g(ÔÝZÖ]pÞœ”ýç‘Z!öoM°ñw þÞúLl:|&•×~ëöÀ[&ŸÐq<ð{ú¯ø4×íõsnO+Y¢=yMž·'}ßÌŒjÃÚC§Ît›{Ú1>-ÎpK¢»5BG¢Û0Ê"&÷µ<>Ø@¾­iQ_4’‡µ‡E'Ó?½d|rsÏ´TÈÎT1NúˆœžúéƒÞ¶´ß5´×R´¿àôo½,©•àÖP\v{›¤3ùY§UÈÿ‚é%0U1¦U¡·,M˜ÚjÓ69¬VŸŠ¾Î´69õEL´W²Eqf~û_ûÚ›¶Ûí ßZß‹–ÖN+ü@1N>à-´1ìÀ0|;G­QäÉÿ¶ýLµëî[Ïcí…3¥§½’cÚS‰©6õ_¤÷/Di_:™|Ú•SÏš~å´zNL=ÐþŸÍÔÎÛÝNìOi«Á·öãÚ­õýyÚÿZ¿ÉÂ;K6íÞOn9i™ÌäÔÛ÷?ßžé³¾µ;y»Q„”ð‡Ìtr*ËÓ5áT¦4O»©Nmmv&?⯶ßóÌÿ“MOù4Uf¿íŒÇ›u(†½µ´Gì'ô^þ߀›_Ç´fÌ/X›`•á6-˜|íÛUÙ¨€v4`dåÚ6G‚! svïÞµðÈ…ã£Ã$f÷¦’ çÌò°Ü¦ç6\{íµøãÝÝÉ-[þÏ]°`HºD„ ¼…Ö¬"èW¢u;dN3\¸páÂ… .\¼ ͦ9ãyàdº®KÛhh•Jù(m- jä­=ûQ«¡md~¿_WÂTã±ÈÎ;=öX v¥R)—ËŒŒlÚ´ ÑÁ±|5ö®]·žrÜqÇÁ#€H»tZËMðý€×0 I‘Õ"páÂ… .\¸ø[F­®½ÝO@Øü>Þ²±R©æ÷{-´DÚ5dƒeišÂJe9áJ]³ EfhòÁ<ûì³Û#}Ï?ÿ<ðÈÍ›7#:80šîèˆoÚô¼eYGq„…ÜM‘8ÞÞñ…·€¶[P„;4èÂ… .\¸pñ×B½¡Îx¾å ½¦…ŽŽI’488hš¦ ÙlvjU4ÚùÇ0$û=ÒøØÈ¯ýëgžyfË–-ÑhtõêÕp×ÓO?èà탽½=Ï?|/ɶ(eµZksA´Œº5:Ø:ßÚtàÂ… .\¸páâУ^oÌxžã8`„ mxšHç€ÞmÞ¼¹í'µ££d>Ÿïééi6›år™Â1Ǽå–[€&Â]À iš^»v-¢ƒét6 ¯_»ÁƬ÷}¬|ãš¡ú<È_šÿÃ,Ü!Hšàž ñÿžÿ@WºÒ•®t¥+]éJW¾S)7š3:šQdµ©Ê±HxÚÄXzöœY›7mQu…g…º\ƒ3—\vñÝ?ù™å˜ïßßíÙ³ 9¦ ‡üq íÉâßÿþ÷¢(NÒÁÑá‘X"ú܆M8‰wìûqä÷4,ÝÔ­étbHxHäšàÝöÜíJWºÒ•®t¥+]ù· k•úŒçƒ°¢Ê<'b¸½{çžþysÖ>»Î´ –æ€Å}þs_•\ùè¯iÔäîÞäKß¶Ÿ}öÙ»ï¾{ûöí‚ lÚ´Éï÷· ">8°·§·÷Å^0 cîܹ 9Žc¹YÞGáà»z5A¦i¢è‘¦©ªª€Bô°pY³Ù$)ä€fݺuË–-knÞ¼¹V«mÙ²ÑÁá¡T* ~[´hQ{Cqûº6¦Ö$)jÆ4¹páÂ… .\¸ø‹£Z©ÌxØZ¹\îêî†ãõëÖmܸØ^>Ÿþ§ë:MÓpP,=P8Y–¹aF÷Ãþ°P(À]¯¾új½^î¹ç\:èÂ… .\¸pqøâíè ¢(ñDÂæÇ0ýsæŒ+Š ú¶U*Uàq==]pREMÓ€Öêh²¸¯¯oß¾}pM³Ù\¿~=Ïó“k]:èÂ… .\¸pqxâíè`;B7p6ÉãynãÆY³f[>™Lʲ\*•‰оvÈuŠfËmܸñ³Ÿý,ü Çüã«Õê† ­¨$ÃC©ŽÄ¦ç¶8˜µè¨c@8r2È›C8("IÑÇ $MLw¥+]éJWºÒ•®tå!•ÕrmÆó/Õê•P(ªª²®™Ï0 _«•%ÑKP8\cYºcãÀßLæhÚÁœr¹üðÃ/^¼¸ànÍš5Ñhtr+ÉÐÐH*•Ø´i‹ãX‹’ (SQ,áÇIŠ"8N ÞIüu.\¸páÂ… ÿT*µ#Œëºéóyhš%ìå—_7¯ÇŽ]ªÚ”$ïŸþô Ãp©jµ†y^Ü·oO{[ÉÆ¯¼òÊö$ðC='_xá…I:˜L¥6oÚd;ÎÑ‹$ ä”Ï8&Z|G“ÅÄáàƒÇ•®t¥+]éJWºòoAV+µÏ7c9NSU¯Ï380ÔÛ׳eóÖJµ*ðbá‘•ZYàD’&,Ã&€´å˜ÀBáE%¡ÉÃaàÔ•®t¥+]éJWºòoA–K•£’CÃIÌÐÌ`(P,”àxçö]º©Í݈%Žã$I®]»vÊ õSO=%ÂêÕ«W¬XïÙ³§££cýúõpѱÇ ’¢¨z½Î²,a·Çp†r͸páÂ… .\üµP­Vg<Ïqœ,ËÁ`°P(ìÝ»wË–-š¦ÕÞ&„  Ùl&‰J¥r×]wÁ3á`ëÖ­>ŸoÆ K—.ÅGFF:;;_zé%xè¼yó€'ç+—ËÈË I—lÓÁvœ:Àt—„.\¸páÂ… .ÆŒçEI&“¦imk“4]×í›ñz¸lêQù|>ïÞ½{bbèàòåËq`”±Xì7Þ€ß$IæÇ²,\jYÞ¤Z0 ãeØ… .\¸páÂÅt›ñŸRŒÈÀ‡zD"p›äÁEÀu]ÇÞLþÞŽ™ºpáÂ… .\¸8tx»a8às–ey<žz½ÞžÎ=È ‚Ð^_H°¾p8<>>þÿÍçw¤ endstream endobj 179 0 obj 54 endobj 180 0 obj 116976 endobj 159 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./font-incor-s.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 181 0 R /Matrix [1 0 0 1 0 0] /BBox [0 0 226 738] /Resources << /ProcSet [ /PDF /ImageC ] /XObject << /R7 182 0 R >>>> /Length 183 0 R /Filter /FlateDecode >> stream xœ3Ð3T0A(œËUÈUd˜›[虚)è™ê™…ŒŒÌ¡JôƒÌ\ò¹œÿ Äendstream endobj 181 0 obj << /Producer (Aladdin Ghostscript 6.0) >> endobj 182 0 obj << /Type /XObject /Name /R7 /Subtype /Image /Length 184 0 R /ColorSpace /DeviceRGB /Width 858 /Height 263 /BitsPerComponent 8 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Columns 858 /Colors 3 >> >> stream xœì½”Õ•¨{*Ç?§þ;·"Q${ŒÁ6 "gã„Ó`c{lÏ]3óÆc0XÈa<ÁÙ LÎ ‘”BH"ƒPV«sÿ9UŽoŸªn!lù]sßz÷ÝU[¬½ª«Ní³Ï>e×÷ïŠÙ·…bšFÇ:Åüq,&kOɒι9[E²H‰Žéz4M°È²õË‘¾åz¦ç›ˆ°òHDI8Bòi„Â÷áÁ%D˜>eâŸÁ—ðÕ@ðU.>ðÉà*ƒé’žKº.i!4k…WÙ@öá<Ô‹«vH¦=@,†bûgÎÔ VäÅrSF¤œ“Ã7&" Dê¡Ï>¯ydX‰Üx`2¼Êa³Ø ´Â™qBñ€KPZGÕñ%7ÏàÚMDupœ ÖTÛ'Ïç|DãÛIݧڸ>7ƒ8W†2¾Ýϰã¸RO }Šò=¸šIÏúàù3áÂþy¸:y I…aN†Ç}X ¯ ÔVÏ Vül#‰$’H"‰$’"AºjëS…n[Óª"“¶5A Цi“Œ‚^»P“÷áu ob`Ú£¢\. •J%A(Š2 ƒ$ɃT@8eëšé9œ,'²©ä¾‘ažiJ5÷uÆ|äÊ@ˆTId{¤Kñb¹Òì)Ϋ×Tä2rÜG줢֕:yáùŸ"ÆÇÞ¤Y>Ÿïq‘¤+ÈvQ<ÑôQ™ñ“®ÉST@È…ÿäxˆvKäï;À'$Àh2ëex@eH38#à“z¯ ¾"€Ëì­P„,cíùˆ$pÞ è 3sŒAÇ¥fÍò\#ƒŠf#¸¿jböO78¦ID€ƒÌŒWdè˜*DÜÇM·} ^$6ìÀ7.ôÁÏÛY…½ÐT`'l¿ß2§g#0ë"k;hLsTǘèÇ=\FAÂÈCœ© b¢È‚:ƒƒ®†œ±;ÛdÍøB+ÖþìñÌyÀX78üW&Ò‘Žt¤#éH íÎ HÅC‰®%rÀT>N!B ®Ã‘„‹"Ì6ºmÓ,aÛ.Ç0Žçù¾KS,1C^À€A` B£¡H2o›zL޹^‡&qÈ-ÌÔ@ÎàVCmǤLGqbÔQ®vòyàë·¿¹çï¾þD»9Kd_yív[¤¼C'§&æ7Ú­=2¢ ž2µuÅjØ”ÊÆ<Ž—=M¢ '|˶-LJ 1 -„ô€Ž‹Ý%œ€/†ÛŠójaþ‰RƒNÎù@t‰ 3‡ïþóà²<ÔÁ°âÓ@ФÇšðÅÎ%}°ïáLäLx2„²÷4@\ Ž ß‹XÒ•ñ1ÕðHœó|tҞϑ„î‘&I¨Ø‚ÇýúDP” ®à¦l¸{…ÃàN }Œf83Š#@údÐ]^àIp šΠ Eø|x• |ƒ6ë(È"7-ÑUŒÙv§ðè2Î,záÓ”Ò£pëÂh@»È0=‚%d ™™, î—Ò‡Àó8ðØS:ÐD€×>>OÚÁÕ Ä,vG:Ò‘Žt¤#é }©Ù“IÙòö0ŒÞÖ€=Ò< Ñ ²ƒNúx’˜ ›è–vÄ‘‡ŒNìØ¹í裎õ‘;:2ΰ”ÀK3C©ïÓŽn´›`¨´cûsçõêZGQÔN{*ž6qvÐãˆì`ÐÂ#„b=U3-ƒêÊÏå™äž½ïìäÀP÷ã¬]zÓ¿[6­úЇ?öäŠÕ‰ø¶Ú 8fc¢`†À‘¼ãX®¯!Öp)Õ¦u†eµ6á{´ïûAÐ4MQ Erˆ ]gÃü`tuv\Ò™áB#CLâ6SMlÉɂǡ/ƒò”·?JÐ^?ˆ9ŽÆŒŸˆÆ 93°îÎÄ›½—<`DØ ÐÜ™ý%s ÙH"‰$’H"‰ä¿.^Œ¡8Uo!Ôf)‘F ÒNËbL3§0$–ЈG`"ÚaYzxß^ «Ã?\Q”r¹ÜÕÕ¥ëºïû­€hÓ"I'í:>A«–ÝÖu»§'¡#¤Ç kg‘Èp`ÚÂIÖr\7™(–¦Ú¦J§2b÷µ:Óo½²÷7þˆPÛâ”Z·áMSï¿ôü¹|[ÛŠ\ƒó 45¤3ˆÍ§Ó–gŽ6G}ÔʦS–­˜–G I À„–AÚŽCÓ‚‡qЛ™Û‡N/0y<òdŒ8ûåâ H£ ž“G!ÂÆoE $Œƒ¤I ЦlœÍ †Œ=Ê'È€¾Ã!ZÒ%¨Ùä 7;í½‡†ïÍ) )ÇÅp†]Šá“#ø“0`M£º«al ° {`굓3ƒ×û1Ä¡`Åyµ°RšD6æqœÄœ™#0h0áÏ)tÝÀIS/FxL0 ñ0·qÁ¸w“8G—à.œð#¡nb>¡ÙVÏãÜ9%ÐÐû'ÎHÈ‚Ä챘sÞ›©é ïMñŒ$’H"‰$’Hþëâû¼‰€4T+!¢!s Éõ–K"š£Ìpî ^n€³ƒtø 6½¯Ø]©TDQTUUq•›`YÖ0ŒƒØ'PÇ®‹tĶµŽƒJ]¹D©R‹ ¤ã— »/9!‚•„Ir¶a©še¤å>×äÙ¼çáë}ª¾nÕ‹K–ÜDŒ ¿Íu¿´ùmÇî;묔˜AÝÞ•Iµ–•gú,ÛPP›F´Ù‹ïé.L•vÛ®¬~9:A’²cSxb)b*!½™LU˜pÚ¿LϔܟcgRS¸L8³þ´i'NàAXÓCf0tkÍäáÂÁâ™!Ú\ !á½w Äq~‘0ÈA(ÖdÉÁ&ÝÄ6ñò[ oôf—˜àÁ_Ž¡0ã»àV0œibô⸄‚s{øAÁ± ̓qyrv\Ø 8/<ðfsz!þî_Lãú„å…Éë÷âpàJï€U;Á-xÆd„ƒ‘DI$‘Dòß*•,N7__° ¶sçxÕŠdÊñ¤´ÖŒR€".0Œï‰8郓2>ϰ½)ÒrÛ©ID2—TEWÝŽHÊ>X oõx:5U©Kè5¼Ó6Æ}dçS9U¤@ø^ qÐö0 ¨¢·8hê¤Ú¤;häñÇ–¦óîsO¯Z²d ±÷á¡C_~å5MK\zñ Íf;×ÛŒÅ̋νäÂsÏ=îè…žonݾõλï}àÑͦ3wè(M!ÚM·Ý@0Š1d–aã¦×He†0ÂáQ8o½)G(Äì-ö,Ž@áIè>2Ìi{oñ‹g¼a~«£|=‡cûõþLaX={W;ÁU¸‹ ÀÈÎÁ!8t«…àÆzP^ ˜ˆRÁyõ€ÑÕý­€&8VfK’ÁqØ@&°ãv<<¯ÒÖ‰ÁÒŽ–Ô´W÷ƒY Á¬‚Ð[\/¡À 3«±¾o™€'xª¢"l,3ýcÇÞÝÞß‘DI$‘DÉ@”ÍXïì¼#‘D©$Æ"¥Xçuµ¤øí¼ûÑì>™Ôà›o¾ 95…8¥Ó¨ÝF,{ëp¯b CžÕ¬ñéD÷Dõ·DÀe¶¼3»ÚtvÝ* C¡ñq44÷D„Šs‹½¸ÿï]bzú—¯»îûDe¸ÃÇù7¶¾ª[Ò™§#ÛU|ùõ;Ói§]kô“†1m;JRN©Ž=U1“ñn #Ãå¶>÷Ü+/¿´}r XJ&{HÎ'ÂÕáÀeè/‹\§ ©€Â!Z<@ìÌì„âÉÁ†,Õ™¹q®Dxqƒ‹¤Rgvf®ž{GÍ&ÀâôYÏßÃÁp²$Ö³CŸ>ùÞ½xtØš°æ‚QQßE¾¹ñ`R#ƒgïÀ¦Ý Ú–À¼Ð„pIº„³tV·‡’lâE'x1I†K0ðò—p•44'ØÌ%¬”À§èÂ=eœ( 7ÈÆcü(¬Ážø~˜¹´ƒ nð@¶ïæ"t‚¸â<+‰™5øϰôfQ;œ‰ˆfó…>ø…W‘à €Ø ±Áf@38èÎæC!ÿ Í#‰$’H"‰$’$„M±b&›‡¦kÓ¶®Øa+l¡P0Œ*`€$ù<ü^Fájλn¿û¦ïßàxþ[o¿ dbb"—ËÙ¶ýçæ¸^öäÿõÍf2§¶ÛͪòÄŽ=[{»ûËå)Q rCn X‚œ)v,O§r¿¿õîïýËOí?Ûè«+Vü+÷6¾¸åûßÿ>1½§RèÏnØ´±Ú¢.ºà†BWßGOêZxh~xû® 럹òŠÓ`’H¤{>yægµÑ×ïõõ[R:Üý÷®zàU/ox‡á’r<óò¦ßç H3ðn(˜[täoëÞžÝ?“S(›=p»sÙÂÔä–‰ÊZ–A…앞 Ó©Òã*:ì/ê:Ð)Æ$MoŒŽßL!×EªŠx ~YQTßC•ê}š†$yÊg¿Ä"‘ ç mEŸÒõ§¦§QWÚµ ÍŸdé"†}â9yçîß4¾±ÓB Ô6:úèoÖÛoWªk]-œÿUE±e™Ú¾ç–d ü};ƯëutÈœ¯tŒIÃZQo¢þüU,wý©¦²Ì6P±ûb¸wªô¨ ž?¸MWžr”H~Š¢Zí!UAÉ$‡E Ukèˆ#®2udXMðgºô f¢Cùl«Çò²19}o« vð³TAóçžF0 ™;¬Ó4h"㹎'вi6\¸VIdãc·€‡É8®¢¯xU*¨U+å‹óöÖû9]…lš³¦N³Œ`Y6Çñ¦¥½ŸSÉÙéYàŽ$’H"‰$’H>˜8vEœ‹Û®²k÷}é ê¨èŸøÂÔÔd,ß»ç!ÛÂëÉÄÅ–o29Šmï{Ä4ЇŽýºÒä§kッÂëoÞÁ³P×E&ÞzÏlwžvTH]Å·ïþE"…RÒ¥‚H¿½ëþL'.ÓÉO+ö.ÓÜ ¨—É|8Ï•ÊOuÔ?ô‰Zù…v |A·:¯5OAKyé<‰“D™›¸§\F}ý§Ï!IqUm‡óäÂMgZ­úš5/p¢ðä3Ïþèº[9êtσûï˜(íÞ;î¹è¼sÏuTcí†M.N+ºp×'N8žù+Vµfõº¥7Þ&úX±z‰Kޝ[½ã`ud*Óݵaóæ¶š=ï“?u=>˜ÙV' êã'Î;îÃb,©–ë#4+Ô*ž ”iŒ­[»éÊË>ïX –ì¹éÿxÂñ_Ÿ¬R ]©=â#”J^eÚKÅ ×,¤4¥VoüÒÆÈ ~¦ÝÖ¦*ê8Ô•½Ü¶ &ªkí{*uÔ]À$—Î^šÊZ­Z«}«….üŒï–åð\LUôd2=6þóVõt ”ç“G–‰|}ÔÿØ5V銧ºß|ëþ\¥SWѶ'šÕg%õÿ¶Üª«Í‡ƒHMN¡ŽÿŽezõÆVÕxÞvPR¾˜RRÌÛ5ò×B —´ø7MóŽCBÓÚíD+Èo›O}Οò¨zùaÂô"ÇRA®Y³né ·‹ècð®_±æ{.9²nͪ%K~BÔF'Sùüê ÚJñ’ ~í£"'8)®Ñ\¸@øð Ìœ¹-èr<>¼«366¹mëk¥©ÚG>tÖ@Ï1O-ßD¢øÞéI‰Lú„Óh? sÒ'º'›î­–uµ¤¶dD<©’ç‹‹ÉJmI"CC‡Ìû’Ö–ר+7CØZMþ!ßw';mý™OG(‰n[+ _#j¿m•ö}^µšû„ná©`œN©´ßYO|Â1}E_O¨­ #ûìDYaPš@®Flu®¢¾Þ/ªV§˜Oï¹yt-:üSªÛ±Õ広Xªö|AÑÛ¼H–+QJ$®pL;‘‹¿úÎù,ŠSÿÀ$£šV‡!³¶W¢h’ [ˆ¬5÷i:š;t‘¥¹;·?QÈz^JÖäÄ¢Œ›h6êë¿F©›ñøÂv»M¢.¼²Õþ3ƒ%>(Xh.Xñ‚“™¦I$‘DI$‘ü•L½¢|r|ª~‹á6vïÚä9n6Ñ_š®±ò<‡$Iž—§K NàHF‡3[6¼ºäÆ›,ËÚ¶mÛÈÈÈÙg/~î¹g\×…3¾ïÇb±t:­iÚÇ>ö± 6˜¶õüÚ57]»€.òÙto/¿8ˆ†"$]Õ/ºø\ÐÇGÏ?öØc¢(:øãÄš5k–Þp—蟂¿bÍw]jxÝjÀÁŸcÛwûû7¾öšfôwö¯-;‹GCQ/Œ@;¯¼ò‡ÒRÜexaçÖÖë¯ï¼úê«o½ùî×^ÙyÊÇ/ñøÚ{3¦kTš£†þ̾}¨»ˆQOÄYpMNN)ÚöŽú¸a#^DÕ*)YÆ$щÊ5jך茳®lµË£ã«~äßîÝùÎdù¥D<˜ùGɆ;›¤(¿Tœ¾/‘B“(•B¹ä9)±ßñÔѱ?BéìÉÛw¬íêB½½gŒ=75‰‡N4Õ À9ÝÅo¤]mï¨××J çYõ&ٜ꼥èOÍlØâ"EGÕŽ98Àqô%ž¬Þ*Jàö9ƒÝÅÍïü;/ ¢ÃA3/¼ì²gV?TÈ Q:–ò…6Tô*y®¢ù$Iä§3ÜØØ=í¾bšxî CCC—·›æää2ŽGó½ttämÃÚ¡6P.™ ›SÓO@ˆî$Žï““þÈÔ=ª‚ ±¯‚«"O[Žé:œtIòUcD”ôéʃ@½sŒ(ê•§ÛMÔ×s¦éµMõåf%³˜ìdæ´lñ¸N“âè‚ïòm*![Ê4^4³CD¼Ð„Ÿ]”sÐ/#‰$’H"‰$’¿J‚-P,MW:¿kéåÝ»7Û–Áø‰vSÏf“>rõVwÏ@³¡ûº­qßw—=²üßú3 ¿r¹<11qì±Ç¾öÚk•J…çñf|¦ixctÆg¬_¿Þ°ôu/½pÓuwHèRŒƒÎoÆ+¯ú6Pà˜Žn6?ó™+ Ÿ¾ûî{A`8äRD:¿è|Þø+Ö~gW¯ÃÙÁÉ]ÃÅþÞ¯¿¢hÝgŸñ ×MÉ¡6GS¦³õK.ëéµ5£j™Ô“¿¾õIÝö|_p ‘$„'©v§ì)5w«º¾pÌÑߪU SrK6ôaMéÖZhA¥Žr…`³–^*á[¨P¸À2ÕfëyÏA\üoºòìÞ± ¥ãÇûçíÞõ€¡£LòYîS“g– „ÚêííÓŒR½1¶àÐîW¶ü‘ñ‘ žÇÐl[y¤ÝAG,:{tl%°WOÏGÆ¡¢lú¼jåÉJ yøµ-u¬·/õú›w’óŸj63Á²‰]º½<ËeÏ55A¼Ró3XìqŠFI$‘DÉ_<‹aØÉªòŸ;‡wŽŒ¾!p”cðÅ|ßÔôD&“i5; +¶[:Ó­ÎT&“Øòò›ßûÞõ¶moݺullâì³ÏZ»öU툢ÌqŒ®›®k3 wÊ)'mذѰԵë×,¹þN ]d1QÞ4¼wÙrã4Mæ3ÆôõÜsÏ½Ž«zŒŽ(kÍšUK¿¯èœ‡µbÍ?ÙÁ5ë#Ó©®ì [Öṃçü¹y’÷HÀ²•Í:¿øåWä„Ö¬UE®çë×ü¼ÔpƒEšcº<_bIÉu]ˆTIºµuÛí¹w™wÞÝq»$!Y:#.èV¥¡.›œB º?gßÞþó|IôgåQjß}œâ¯ôXÓ¸ïÙâ!=.|¼\EGsúľç[m44çSUY¾kbâÝD‹ŽºR×USQàñš¿px×Å~ï6ä¢JÚ‹ÇleùŠx ½þƇºº>™ûZú˜b? Å$òZ„@S†2là6 ¡ÉDš¥ÙÚèèÁH2þäòjkE¢¾ÞË·½û ivP®UÛx%uœ½!©˜ÿH½jÒ4«ZMç€õ`5‰lŽ#8n»èüOôH"‰$’H"‰ä/ ‰H¹M6­Ÿ½»s»ãLÈ¢°eã¶¡þy†¡%“iËt¦Ë#Ž<¶\ž²ÜZ2{àþÇú¯ÿæyîøØÄôtùÔSO^¹ò‚ðkµžhè4M’$ ˜øÈ#Q zqãÚ¯¿SFŸñÖt~>YÙ8¼§ìÛ"Cf?~Ò'H¤¯|úIä³gŸ}®ˆ^Xgº"½5kWáì :œ\±êï]zǺ5Ï.¹é'ÄÄž]¹b÷†Í¯›NÏ%ü‡¦Å}JGN!õèc»nºés‚hY–wÄü-:ì2ÃHº”„ÉÒ=ŠŠ 2k»Ó Gû¨]oÞlà´Ü•¤'pL¼Ýn³,ë‘#öÓ¦†2ùO(æ †íÏí;ib䵃?üKo¼}[2ºsßp\‹äGå8±s×J@±£J0_$Û2GúÀŽ— ’4ѸÓ0ÐáC×4j–býÁt‡±ò@dÅ\ ŸLŸÅ’=SÓ··4oîgͶÙRjLHç‘ë¹”(d´æøtëIADC_ÖµC·óéªgîˆÇP*wª/ßR‰+-“™*ÿ1–EÙôÉŒy*ávµ­Ñ`<›£)FŒ9íæ‚3;í‡ñ"èìbQHîx÷žX ‰Òù}ż4×WöŒ<d'Ë—Sd†gójGE(?Zh’r<5XJn4CëH¸YtgòÜ‘Žt¤#éHGú¿®ƒ×*e¢Ãüý›ïnóQyll×Wÿö[š‚÷i·T†–(Zxäáev guÚ-›^¿iÉ-ÛÞ½k×èèèâÅ‹|ðÁd2IQø[b¦‰w, »øâ‹ï¿ÿþîÞ¾'—?uã ¿—Ñ™Á`ñ“%ómKm7ÍÛ¡EC_1[¥¦ý„Çý_6š )ùõÆÝ’—³7›€«Éøå1¹Û2ÑøøÏT ~½Ñøµã¢\þËP’c£­1’0:ö+A@Iá*J”}ÏØ½ ü-v½\þ5ô8žã 9Ž2¹Ïø>‡Zµ'&L£ƒóœ(;ãÇâ¼iê•ò-šŠÀ±˜Œ.ün½<‚H9•N4ªÓÎ]¶úz¯75E”º4µ‹;:ÏÇ C9à+ÏD°_÷þ-f¼Ù-©#éHG:Ò‘ŽôY“ÈLðžiïû#É£7Þ^N2Ê~Jkü![ x„•—-[Ær / µÓÜ´qóõßûª65MÛ²eË9ç\0þàøø8άyI’  á`åÊ•!=¹bí7?lé¢n7,÷‰É‰w¶¾øX«Õ†b9‚¦ñFÂŽíYÀ˜%Hy†׬~zÉuÿ™‰ŸÚl77nú£bî|~ÍÃ?\ú#bªþj!uèêç'}àÒóÿÑB¢…?ÚÖFhÏE—Ÿð­ï|Êõ5µa¾ýÆÈo~Ÿee«œçǃֆßöðn× uþa‡ON9Žåû.\¡PÙ¹1¹l¦+“ÉìØºZ/%ºÕÖdWïBA†w½Uì[ÀqÜÄÄ„ïûŽ¡"†b8gîÜÁíon:Ét÷תÕT:-Š"´l÷6FN¹®›Ëå:Ä%ŸëÝ=AÒi’¶c2×Û“ÍIO.¿.›CÍ&ÞhÚÐè‡ûgǦtïåÈò>Ax]]]»·¿ÔÝ?wrt4™ÍÂ¥J¥‚÷p©—8úCccc­Ú¨œ*x¾‹IõzÝ6Œt.g†Ö¬3R ᬛ <çgU0 I‡u Ü25¶}áá399ÙiÔ‚ˆÑœ$™j9S˜åGö¼•é¬Mïæälooo£Ñ¨—&zç•ËeèNUU³ÙìèÞ½ø»tžÂÉyS)ËénÛÖÉXyl¢Èß L¦Øcè&E1½½ýï¾³MŽÅ•¶Âò¼¥Uú‡ŽøøŽm¯p|—ãZ®ÝDd yü£…àÿüˆ3hI$‘DI$‘ü7pÐóÇ2=]ûÃöÝ­Zû-Ë+MMwww—¦”d¢è˜\­Ú^´hQµ6í¸z:{ü‘Gý«_©ŠZoÔ_ýu ¿ééi À$8Ò€]×™/^üîÖÑm[ÛÿðOÿ|Ö°Ýáw¶Ž–*£®gP”OExé‰O®ë¹O¡d«­¿»í­þùGÉØ1­Ngùò[-olËkÏüpéMÄžñçzŠG<»r·Ä±øÌ¯‹B·a™ˆTHnꌳ¾ðâw÷ä(—Û²éÝûî\1>îµÕ‚ã'qViæCp3PȰ”©w8‘·,þ¤ÒÖ5Àñ¶Ù@dðÜ‚bR,¥v¦Š= §&v@Ô©îµ|'ÏvÚSñD7Pm½Vá °Ï2ëQ4£€zFéT2ÙÞZu*øì¯~¡N%ÇSMcŒ—R®gØQ$ã:¤(¤ÇF÷ ”¾Ï†‚/×ÁI’ ¬žãgx„ŒTf Q+{¯p鼘74=¸ §<Ïý€`I D8È®…fÃùv$A¢t&Y«€oF"Õ×jŒÁIQÎC+ ­ôO&ÛM C_ާ•ö¨”HQ´ß®MÀÍ]}ó§ÇvR| ÚL44ÄDAkMwòâ‹?T«á¹• …>>昿kÕ[ȵðûF²iÏó‘£L2‘H5ª#Ø=¼S!TZ¤„,‹•R…fiÚqß4³q$‘DI$‘DòA…òÏm÷ä…µ/þòñåË,¬ÚØO°DdÓ€ËHŠÚ8juÊÙlºV«ýêW¿þùÏ‹ÅAPU•çyEQÇÉd2L. Wyºï§ÿö³¹Có:Je㦵÷Ü{»,ŠÆI:jðñ.IÒ>âÓ‰9“åz­tËïpõ‰å7sRó©§ïZºôblêµÞ®ÃÖ¬ÚÉÑóN<ùJuYÈ¥MÑÞA¹X”;d^W¾gÏöñ/¾±·Ô¤ÑBÉAc½†B(„#À*!§[ Ÿó-¥\’ ™žR ¸Äͧ‡:Žn×S±îf§é#/K[–¥š-1$"à€d-¿C"ÉC*À“Ì%³-2²ëº¦§“ˆσe ++–E!–§Y bÛæ(àN  ¸Ù©1„èâCÛ1®h˜¶‹(ž¢5·ÒW욘šðPGæ ŠÑDÈÌ& è†møÈåiÑpŒl2[mVΕqÙd®Ò\³{󇚖^iŽKlZµô¤o› *™cpÜÒó zÇr†e¤“éjsz gîÈÄ^1'¨f•!â@´º¥'äD[iдk9šJ@ïv”iÉpH$ê*M±étº\ééžB­VI$e X¸jF£QÅ´¦uâ±,„®Õêø¸#,žI¶ÊRÐ3,ËÒö$DLä €°ºeቿŒƒ‘DI$‘DÉ"†ÓÑÔ¼ÞüÞñÍšŠ'Ç5µŽBÑIßå<Ÿ¹”f6²™l½àäeò…ÊôÄÀÜõz½Ó¨ ïÛ&Í‹` Þæ¦¦Q,ëšf,• ô&¯9¦H šS›;041µ×²iÏ·á]~à.Ègá(¢ Ó|J¦b͆&±ómÛ^±ò,½ðâ#K—^GlwláüÞµ«ª$‘=ë¬/(My¡nLH4i9­„,1ßjµY$»H°±f‚Æz³Ï?EÅð4n‘ú-ÕÖ•*…$ï¾Ãûø›‡85X”´P‹CI™"%â’êO& ¯ã’†i¸ÈY ÊA†@ÅX–…ö/&ÇãñJk„#R@Ù$Áj®Â ÎÆS¡ó©|³Ù´üºÄæðΈœ38oç¾·”òqÏâP°j@3yB¢iêeI6ReL—[ûd&¯ØeJé.˜J…þðl¼Ìƒ’P+Ä:gþ踡ÚÀޤĤÚL_'‚ɬܱ*ÐT0.q:H£‘­ó‘à3ŽãÂípð»é™C½C{Æß‚£Rˆw‘ž çE*[,Æ'F $ÇqŠ®Ðˆ5Q+@g/˜¸ÊBœ%*)bSi:H‘¨Œéj$NxZ)Xžã¢6‡Ò.²I´ô¦ï#Ãåþ¾ÜóÏíê4©¯_{]»í«.búahÒs š" W±‘GI–• ùï›^®EPÒDZÒ-ËÀŸõN]dD@•-ßJJIщQ©)± ÏtY–Ë2ÂÙ¢ÄK-cZbc¶­[¾–3áfÜÕÖD01“ó/qnlëÉ@iÙDÞ4MÀQÙ<ÅÓ'‘nê.Ò82îzn"žÀù?×#à¿@ `¶Ö¨áÀ‘I†aàvI’êê”D§U€`>ZiOÒÙZ½Äs"ÃPM¥Í’4þ\ŒVèDˆP+Ç Eà…D$C‹M‹¸ç,ÛbV±[¹xP¬î5ã\º.AÛ«­ª‡w{$*¡ºu„Ø|¼Pn—IŒ˜¢åX‰X~L7G@‡ú‡vîöcÓ ­˜œª—1ûûßÝûºHfà·€Ü8oš‰LCEžçè>°2à¶6ô:Ðp&)ÕKôÁ¿M¼ñÿ·˜ŠéHG:Ò‘Žôÿ5h¼¹2"’iÖ´«µÎ4¼ßá5M"ÙG@rx†< ‰¡]ßs|Æv]Àƒ¶RŽI¹ŽÚæÞ´;$âABJ~H¥RÓÓÓ 9k(¾ƒ|`ß´F"_dYÓÒK‚iƒT@J@È÷à”áM1Î4šS,“’˜<Í {ø¥3W>}ïÒ¥ß%öì[780ÿ¥—ߥÜ+¯l—¤EÇZ¶-jyž"=ßµ€¯,S×TKŒåý™ìàûÀÒuÝ >!€%B»ÝN§ÓFP Î$ AMÓ IÍfš¦újµšçy‹-Ú»w'A:ˆp9Žƒ#¼‡sR.‹`PÊ)‚eü™ÊëtZ¶í¦R0Ò'¯Áét:ÝÝÝ4MíØ±í¸š¦Éîâ`»eÓ”õBë€P¡Øìïï/—Ë###±X Ï)ô<¨®ZV´š$Űº4Å‚†cITE·lù$Ç3pfæ˜5ŵmª³PK6X¤ &CÃóyŒ­ð'4ŸçYDZ…%A~øáõzú~Ïž====áb"ˆDlÞ¼y•J©¿¿ŠA ÉØNGÅf ü–å!ìÓÓe0Bá\>mÛx+s¨44΃oPì/ü¤ñ²Ä$Ò‘Žt¤#éHÿõÑ<„7¯‡4MoÄ‚ãÙLÞ2‘ç2Ží›¦Ë0IÙ ‹L»å¸®ª»Ù\W¥R) ! ìÛ·˜°Þø€RptÚµ‘ÄÅMÝI&eMW†,•§º» @)ÁëÞ”.BxA œbðŠó<Â2ˆj­²`a^ÕK›7?»ä¦ïÓÕÙLö¹Õk1fÙ”À'L“Ô BºbÄåXGiZF'ŸK dy>aYŒç³ïc`Ÿð¥z«ÉÑASø³®ãZv<•Ô•󅎦j%–L؆©[&…Vàá ÃséD²Ñnª&'b4é¹È55(£²‚&ª¥*'⊎ÿ‰11—ÎíÙ·§+×¥@ÍV,kT™\arl:‘Êò ¯Ç0¦ÿ 9)µ9!ñ鸤++r|³Ó–xANÄÕøÌ3¬í¹àƒ Kp¾­*–n •IKvBÅRží‘ ÇÍn)øDú¤fjpŽA«º!°1ŠauEûCý“¥iYIËcr½R^Ï$SŠ®}üÀø†œ”V›—DˆL"‚˜h¦Ñ•ËOLOÁ½à\u|/›JWê5IàJÕÒ@ïÀ¦Àq†eI<޼À `YWàÉCùL웎•eèð,g:6X3l ÚÛÓß6¡×H½_{¸OAÿéùHG:Ò‘Žt¤#ýWkDöÅä„ãj–­;Ž%˲ãx¾GÇäT§Ó‘c¢¢6$™î(Õx<åYNlÖ±Dœ&©Ññ±Þî×÷,äYÆ6-Q–@›¶•J$;•$XßÇ™;ÏwD‘u=G¸f³)Šxº¡@  ^ú MË•r«««X.ÕE!OHÍæ´ ¢çŸ[¶ä¦ë‰}ûÞ\ûÂZ×ÖïI×£hJr²/ŽŽrí{šïk í«DСs1)>>1‘J&)GÇFÆ9 ÊX¢\©±oÏôÀ`aݺ]ߪs|Ïs xuÖjÍT2ã{N!—®Õ&hLáÉy4#yžnŠØöš¦-Ëjµ:<Ï÷÷V*ßÃÃÖ Ãào`ÁûhKþ¢¢(±@ªÕj¸ˆ:¼Ԭ뺡;­¦Ñ×;h–m›’óàîú–ePsz±ì°(˜žªÎÞ;–ËtÍ€º2Ùôèè¾9sû''Dz¹¤aè$…Z­FWW—ã8à x~âíýFG¢…@ÀÝ]»võõõÁqµÒ”Ä$TTH’%‚ ]×™7oþ¾}Ãp|°½ÈÝŽRO¥c¡ñ`<7¨~yl℺ššJ$pœ&3™Œ¦iåryΜ9­V ¢Íqh8_¯×ÁC(iZz:n·Û` ƒA v¸̾oëL”Ä-©‡n‚» Ò\.ZƒJÁ ü@øCcÁÈÄÄD6›†Á/ ø‘Ñ×7055¡ª`[•åxOOqll‚çÙþº‰×ÝÝ«(mÓ´:sBÓÀí”(Ê•J©^oΙƒû´Z-“$ UÀ/$°?99LÆiK¥©ÞÞþz½Ê0\"ÏF|H&ÓPÀþAíÃY¡–`»ŒóPø–áj,–€gƶ]–¥‹Åž±±ˆ´ìwuå¡Þð‰r]îúßa–I¤#éHGúÿ0íè}p ˆùŒ¾†é—Ä;7» á/Ê£‰zûŸ w1á0ÑëO…œ!B\xÉõH£¤Àh ¤Ç‚Z»fÕ’%7£;[}Cñuë^Ã8ÈPN°W  ƒ(Š Èuð´Ddåsi·G&ö‰2 ·*  ð pFw±n¶˜;wÞ¶mÛz(œ‘C…€x#•NǶm ’íÛ·uÔQÓÓðV¶9äññqŠ¢ðª‘X’cår¹Úl¶z{{LÓj6}}ýš¦âíô†_Ž«§Ò Sß' Ýœž. ôaдá•O:ŽEÑD«UOg’@f€VáTEð àJ†3퀙R¡isçÎݼysooïØ(àQZT.U‡ú'Ƨ†æ lxqc±»ÀsâÁg ÀP<Íø//h2(@½P Ð0þðŸç¥’YC‡h3áLAÐÀ¦_jàXøiprrrrÑ¢EûöíƒN³mh„š¦Fq—ÃÓFß{LöÏ]@ ƒÇ›îôJ¥R¡PÀ;ikÇ»)R4܃>êè[¸pþ+¯¼6wîО=Ãm…Bž3ÏCsp\«UÁF»­4›õ|¾ë ÿ3”7M}ddìè£MM•ห«»Ói“;¡Qô  œaYÀ¬ܦRÀÁ;w2¦ÓÙ}ûöØÔ>@$Ü ^ÅãÀsd»ÝÐŒÅà'Þq³ÑhâB-P/xð>ïÞ½ï¿Ø†g 8;99Žséÿ_ÿ_F¤#éHGúÿ8íÌ|v&K‡?¼—‰Ù2þlV´g)$ÿjôÏ ~?ÇÁ*ðIË£‚¯‘yxåIàá ÈgÖ¬Y·dÉRÀÁFß`rݺ7à…O1$@¡ã»4ƒlÇEVSÚßþÖ7›õz©TËe‚ÀÜñÇ;þî;ßøÿÙé§_øâ‹O¬î—ìÞ½çÐCà ÷š dpA° ¼b¸óï|çõ×w-XÐ l´uëÈš5OâÀÀC’$W*(ðÐC~úé«V­ “v ˆOˆï¼óT ï~ÏÅiÈóÎ;ŸÅ_¨C,ËÜsÏ=>r@mÛôPœ»cÇ` pÅÉE]ôè£âàz€àsÏ=7oÞ<€B ¹ ìÞ³œ^œšš ׯ `WG€ªƒöïà-\€ê.»ìÊXL„†ýê«›7̺»»Á°©i:à PPÝ׿þõÿøÇ]]]‹/~úé§¡. 3( ¸ðÄ ,„ç¥zž¦‰d¬ÓV]Ï€ˆ…Mþ3oHEÁðwí×¾ç2͵_ÞP𮀖áGF‡Ì?¤Ýi&é©é hl¸äØ,Ÿ}öÙ·Þz+ô ^^.‡«yÂ/¸@Iø¢tÐ8\rÉ%piþüù`Œ@Àη¿ýí7ß|ƒgŸ}MƒGèÔSO…†CTyä‘‘‘‘þþ~'üȼ߄"öÀ(x¿nü…˜+®¸â׿þ5ă3áêè ¨å«_ýêm·Ýdñ¦”çÊðçš5ë—ü`)1¶k²w¨¸níÏó)šÅ8ˆlšññÄ6߬–§/»äswþáw©džôiU1»{ûÞxëÍø# ·Ür 0 `A,&íÛ·^·pfûöí‹-š˜˜bYÎ^à]ƒáN€¤OžýÉe/¼( ­V è€`xx¯a¶‡æôyä±=ö ÄÂ… ?ûÙÏÞu×]ïË~ @'GqÄž={Bã§Ÿ~êwÜAâ-ª1Až»ø¢+žP Œƒ“»vîehÉÄ;1¢ .¸àÎ;ï<òÈ#wíÚWÃ4! K__X ¦|:õFep¨{jjâ¸ãŽƒ’€A½½½ï™}_¼}¯ ?&wrÊ)?üp˜ä»úê«J(¡±ÀP]"w\ƒ¦I@@`AÚYgõ›ßüøU’ð&Òv p&2C¢‚H†¹±D"Å0Tè- ÚA‚’=;vìò<çSŸúôÃ?˜Je¥-Ëq-]7çÎÚ¼ùIr¹ TîïÇPø³råJ&t0ô^8Trÿ_zR/¿üò_ýêW(à9héa‡ˆ Ävýõ×CG€A° ÏɶmÛãÀ><9P~¨Ácn‡3 þB»¸N8aÍš5ûÏ@¨_zé¥0 ·î¿üòËCCCð¼]xá…k×®…>¬ÕjL m¨â/5!’H"‰$’H>¨„Áhv!ùþóûßžï‘"åÿ #þ?ZÇLààììÀƒ8p ®OZ¸°'á‘bºm¸qÀÁµ«^\rààÞ½ƒCë×¼ìxEs®ïz¾A²®i5“iÁ·í>zÞæ«‘ÃM79AÎäòûF÷õôô|ôÄ>µü©0[xT«Uà} èïZx·Ú ËtÂáNxãЄK£ %Ÿ}öY ¼pTz||H®¶;MŽ'‹Å°×¦M›4Á‡>ô¡õëׇ¹¢?’çÄZ­ǦK“Åbî¼óÿá·÷õõLOOû>qÁïÞµ{ëÖ…|qÏž½€z®ƒ{ù|p(ŽÁr¸Oa˜Õ¡uCx@°U»ñꫯ›^X…ûéü¹?b^‚{Ãùy§qÚË/½ Î@ÕÇ}ø¸·ß|Xjll ``KÓŠöTµuÑE—¬^ý¼ªê™7®…ƒª®ëkš 07>> n€eÀèîî^€9ˆÐ[&“1M}vŽÝŸ ø U«õ¾ã?á‰'g,Cùl6Ýh´ ®… ݳgW±Ø,œ$xg£l6 ¡´| ÃÃÃÇü3Ï<ž@£ ï ú¤ÂðbÅ x< nP®;ÿüó7lØÄ~<…ƒóÇ{,T€“ ,€“£££P¦¿¿ÏX8h Iò¤“N‚¾C¨O>ùäuëÖ»í°Ð{÷îoÃoûœwÞy?þ8<¥óæÍÛ¹s'wo‚KQv0’H"‰$’ÿä€aÜý©;"xSî¤H¡`IpÕýàíUÈöXàC0¦Œ·šñ™Y,Au„“Dž¸võúG6÷öÏ_¿v‹ã2-àÏšø&ÉÙ®ßv\•psiŲGd>W™4Ž:úØñÒžÏ^ý©[n¹eñâÅË–-ƒ7÷âÅgËèä¾ûîËå3ðþJh4êù|À%™Àëो¿“BÓ­V+‹ô¼ð ð†÷ýÈÈHoo/8 ò/ÿr]½Þl4ÀË—/ÿÖ·¾uà 7|÷»ß;š‰€Oµ[F’Lˆ;19zÁ‹ïà pb܉'œ¼zõZ]³®þü—e9ÞlÖ «µyóK€çwÁ¢EGüô§?ýÜç>÷Øco@0@ :K—.z;óÌ3—-{ò’K.`Ól6¿ô¥/o?üðÁ{„€RN°ßnÕUW]uÇw0 .}ô±Ï=÷ Ê’%K~ô£¸€“^x1€ï‘G¸v÷Ý÷žþ¹ŽúòË/À}ík×Ôj €¶ÛnûC«Õø‡ø'0{óÍ7ƒ“Ÿ<ëœ|!û‹_ü"üB +0ÜÁp£F9ß#×:é§=ûÜSÙL¾TžbÞ²O_õYšÁ[ûÜ}Ï]]…n¾¯|å0düË_þ<¼úê«ö³Ÿ=ÉAd vðyΜ9!oÍ;:ë ‘€è½ùæ›Ð¹€Å‹-šššˆ<æ˜cV¯^ „ (A]tÑE€ûP ø€Xúj ×ßü¥g~?Ào†mÛ¶íØ?{ 7zè¡€ì^UU¡›à!„Zà™h¾âŠ+€b¿ýíoCy(ço½õV(P*•àiüKUDI$‘DÉ2`2XîàZH{„sö«Œ12xyi{Ä_‹ƒd°…ð÷ÿµÿàý88;¹0ˆ†ê8¼16©ô$†B7³ƒ«_X²t 1:º¹¯oîúµ›¡(Ñ &à‘¬ë¹†ECüsú»Ú5»X˜»ôÇ?a÷ÂK¯\¹â”“Oß²e#PÂ’%?(‹ÁÀâ'Ÿ}v%À ÐFo__¥R ¶t¶ÃR³ÞH¥R$"€ÞŽ?þã¢ÈLlß¾=à›.—þËw>Æ0@ØšUÏŸzÚéëÖ®9éäSî¿ïÞpA42\)LŸÄш‰I HžgÍJ:“øÄ'>¶õÝ7Te;ì°ysyþùÕ]…ž#Ž\ôû[îÈd­öô 7^ˆvÖYgýþ÷¿(¹ì²Ëyä †x€"ðOÿôOpé‚ .$ùÖ[îì´U ÂÏþó7Þx#PÑ—¿üå‡zè ýCxOh𮼆˜@K“I)‘Hú‚yä‘“““gž¹øùçWB4êõÆYg.^¿~É'žøàƒ>žzê©À¦p#  j˜»úô§? ô|üñÇAÐÎ;ï¼e?ùÆ›¯Ý~ûíÿñŸÿéCÏ®NYõ‡ƒœyç;,Ï8¶W©–¾z͵·Üú»x,ɰωç,þäos3EÐå_»öš{ï¹ÿ+_ùʯýÛÑÑQ á¯}íkw`¬3Î8ª¦òšk®žÀÀß RŸ8øøSO>%•IK‚O&~üà ’È1,Üxíµ×B4€üîºë.xTð7¬uýÊ+¯¼“eù'?ù  g˜E†«€ƒ³íúSgæÂ /„ƒ®®.ÐáŽåÐGPËÅ_ , Áܵk`7üh9þ„®]»öãÿ8Ÿ~®‘ÿîw¿ƒºÂ©‡‘DI$‘Dò¿TH¼LØßÿ™8/`·ý8èÍf ©$<ŸpÿzDxp™$þtÆÖÁ²ƒaj³ åú"L‚ª`O¼ò¸µ«×aÜ·oûÀÀœuk×¹IÓlðÉc‡bÀKÇumxŸzêÙwÝu;Mpª*íÿç¶é3™I$$4ADé‹îÚÖ^ví½/vA@DDzS¤ƒ‚½±k/¨€ ˆXpU¤¨tHHBÊÌdú­ÿß9gB‰.¾û_Ý÷½ÏîçzsËéÃùÞç9çyPÙªªªQ£F=ÿüó6l–ªwLE‘@*€Q´£(Š`J@ˆ„7hÐ $RWWwÉ%—‚ùâ¼N8iíÚµÜ ŽÇÎ>ûlðšÆ÷ ¦ëëëq4³fÍP5PéŽ;ïzé¥ÂÑHi›6±hTàÂ>èàb£N`k ‘*¡3 Ä|Ê)§}òÉÊD" r'tâÒ¥Ëø_´É믿 ÀúpÙR”*ŽœwÞy_~ùåqÇ÷Öo¢:ýúõ{óõ×·lÙ‚Žö¸ÜÈ­¦¦&¯ ?¥©†pˆ]U_xá¼ M ææâز¨(L‚’wnßÔ@„øX±bêˆÑ£ÎÜ|óÍ/½ô*Øh†þ™å‰è¸_|‘ï¡QUõÚk¯]ùÑŠx$Ú¿o¿HŒF¯Éͧ[p–-[vò©§¬þtõ‰'øÉªUôs¥zï_Î=÷³5k0H0xþõßž-¶Øb‹-¶üËrÈõ| ˆ¶oÍŸØà™¤éNá_–ƒX„ƒÝåJÙ4ÃÊF”13Fؾ}{Û¶mW®\ÉýË04¹+Aà&ãã?À‡˩ªésÎ9÷£–Ÿ~Ú›6nè|ô1ï¼õ&¢ªªú¨£; DÚ¹{Ç1Çt-+ÛÕ²¸fzIvÐ-Ãg"“PQ]Ïõçœyúà¡òòr_ÀÇ ËlQXØû¸cÁ"©D²M›6={ôøhé²sÏ>çÛ¯ÿÙ£W÷å,§Æ78Šl‹6cn¿Û®­“˜2ÀUK–,i•––ÖÖÖ‚iªsúé§¿ùæ›@ÇYgõõ×_÷êÕ Onzöì‰?O9åСÛí6 ãÏþ3ð‹¿‚t·Ývۻヒ2üôÓO÷Ýwß'Ÿ||9d÷pW2TÉÊ6[Y–/_ÎͯøÃ,ZõØc}ýõ×¹5óÒK/°¢‘W¯^·)ð×Ï<óL°#Ø…ß¹s'ÊyÍ5×¼ð Á@€û£•+&Lšˆâ}õõ×ÀD ¦À°I4éÖ$Šƒ$ë=SèÊH`n×®]?ÿüsÙYÓ×9çœàCEÐËÀVãÔSO}ç½wééС†Ê¿ö˯ОÕUUW_sõ7ÿü¦rOà››ÂÁñ:±ŒCYtÏ<í´–-ãÞvhGû|x~ãúõ¥­J@{h«®ºjñâÅxL½ùìÝ P^·n²£NkjІͭíCйèAœýÞ;ïæx}'tÂ3‹žéÐéHTÖë÷}ôÑ'ŸrÊ{ï½wÖ9g£]7§í÷ߟuØ¿¼Ë[l±Å[þ×É/à fY€ Ý|î¹ *ü‰¹™»V>ë¬3>þxÕ 'œðÁ’÷/½ìâ—ž) ‚tÛm·Lž<µUëVÑHÌáRêê"…ÅEõñ¸ ‰’ ªétÐÖ׆ϿèüÞ£«èrrC­Û¶ÙøÃxæêk¯yrÑ¢vmÚ ¯ãÿø§åK—ýõÜsßxíõk®¼êÕW_u¹\̧6Cë#ÙíØºu+G½óÏ?¬Ò¼k.¸à‚>øçgŸ}ö_|‘H$€¨Ñ[o½yA^þ>üðCTpÇŽ7ÝtÓÆx(vÌ1ÇtîÜp6|øðyóæíÙ³çÎ;ï<´±˜]×BƒÐJÀA j$¹òÊ+Q6Ш tÒºukí¢0`å|ãù?ýéOK—.¨!©>}ú lÇwܪU«2©4Êÿý†õß|÷íÍ7ßüÑÊ•i5ƒ"µÈ/6ÕÒ˜…nGZ×)zóÄODaxôä@ tþöÛo©÷ïtšïü`¡)@Õ Þn¸Àtá…¢xè%ヌÇn¿ýöysæ€M1 ИƃÕÔÓæ>æ¾òÊ+ÈL ækÑ¢štúôéãÆŒE퀀¨ `M„fyùå—sssÑT=ùá‡hC” _UUUhÌC¶3ßYŒê ´øP{Æg¬Yý™šLqÖ-ûˆ0@}ïè7mÚ´+¯¾ýuÁE®_¿þ‹¯¾DoÛ»÷o¿ Ú¯[·k‹-¶Øb‹-ÿäpúf»Aï¾ûî'žx‚[#AK–až~Ú©Ÿ­þ  €ëÀ‚‡EµGÕÕo¿ý¶Çç­¬¬èlÙ²…n (/wù<†e'Ððk™LÍÞê¾}û‚Ø@oþœÀŽ]»Þyï]·×óÝ÷ßOš2yOY92 ø|Ï?ûÜe—\úÆk¯ý¸é‡9sæÌž=›,Z \ñºÝå»Ë`¾P(ôã?N™2å‡~()))++[´h`®¼¼9ÖÔÔ”––°FçP?üðܹs#Ë–-Ã3D­»uëèÁcW_}õo¼ôAš×_=Ð07qâÄ`08dÈÔñÍ –EÕ‘ú”SN9ùä“¿ûî»#<ô*BÖ»wï1b Rz‚À@c(ñ’K.¢n‘Ô­·Þм:à*< V£;pe¥roÕàÁƒË+ö¼ÿá‡iª¶Í ñ½•U K¹ï"¾†OöºSº]vÛm·¡Ë€ƒ,”¡…\;¨«®®nñâÅt?x4Ú¿ä•——‡,€]ºt¢.(˜Ûíž5cf§ÎGaÌ€Ø:vìˆ&¤Cû<ý´ÓB¹¹ÀA´3A÷¡MPñáC‡!ÚÚÚ &€Gù>ë¡C‡")4ΨQ£@á±X ´ŠéСCs~ 3úé§zœãÝ“N:iåG+ËB3Þ}ç]:úžÅ™á êŽ2#5Î^x É¢œ€]\ÄŸ\‹ÊlÎXLXtT™¢ÜZ’kAxhm¼Ë™Œ+/ñ0RÆó:»lrþã±zqdÆãùîÚµ«K—.áh¯# tCuUUN($‹"_ÙX€¦|Æ]÷q á„°%¡¨x(Be|hŽ­(ßZÁÕlõñúwçî]¹LÖ­_ߪU+١誦›—GC&6³7—s-:¥ÅÃ\‡+\UI‘+w!hÛîÝ»¯Y³†¯ËD}1$8æ,| âu¾k‡Ÿˆ´)h„:øG®yå¯ð+‰TªmëÖ›~ü17¤ß'©CÇž¶Å[l±Å–ÿ ’ÅAÐfßÏ>û PÒ¢E ¹•“0Ň>õfw“HLÛ¤ÈøC¢Î_’™4Ÿøétk°B:‘,*,¬«¡vU]ßÌ­©‘IM¢ ë"‡$ü lâžPÜN'ç3º……ÛI÷W}5¦öûÞ’¼ÜÓ x ¨ÝÜÎÙæèÌ-Ë@X ²Ãå¬PÛ®CV4ƒpÑwh.d¦C@êÿyáÑÈ<€2¥+UÕ2“­’Ä­t2™ÊŰ᱕168šó!ô?€CYpÏÞ¨#Fw7xÈ¢RD"ð—Ç6I¤’¸‚dÍfŒÝÍ ·˜£ ãúúzüÉ1úpëÅ/÷åÿ¼n;Ûb‹-¶ØòÛ æŽT*Å5#|ÆÇCÝq£ÙÁ’ŸŸ¿iÓ&1MWVV⤦¦¯dq.´*)Y½z5È 37À6¨âGy”0>eòÅmFFMe2Ÿ_7µúxÒô¹ÝÞT&©©õ@'H²@B¾`yÙ®–…©DLj(Vã<ÍOÂá05žf0ä¦äd<Áµ’¨õÈL·Ô‡±øNòߌƒ|“ ×z¢²_n6=Üévï^jŽÏÉÉ‘‘dÆ_Î(h(ÊëN·ä&ÙÆš€Çûo)?úˆoq60uá2øBRÐ-úß’/&0 Ræë,Qkª-nÆá!Ç 7X‘’â¡Î#ÅÃ@ø pÍ1WŸ£ñù¾œŸ‰§wHá+DùÚ^¾ -yXéü»äpÛÙ[l±Å–ÿŒ4§¶À ®à*<®Sà;S›ÃALy¹¹¹-Z´øòË/{ô臻[²dIÖX\ZZ D¢;wFB|CCvïHƒB W¨±S’-MÏÉ EÇÇér{+k*=I–M Ù’|nW}¸Þãr(w¢¾¾Ñ5 —Æ‹N¢j:ãu»³€K§6Mn:T Ý FjksB!ݤþœc‰}ÁÄšBá ò ¼@rÀ8߉Dø6‹ÃJøeê]qÈÌÜhŸÏŸŒÇ=~Ÿ¡ëà 4—ªkt㶬$’ ë0ýêeu·MÍÍ윚³Ù‹G£žŸÁ.ø6àš$Œî–’‡`¡ë šOÿ_$…¦ã;iøRBÿú°‚Ë¡ ¼­‚¡Á Æíæ ¯ßXEâ[žùP®´Fkà—Ò\}›¦8×¹)) šH ÄÅÃJçß%ÿ–v¶Å[l±åß.?c5â[x óæ±ùZ©æþÝÆ-ààúõë|ðA²õûï¿ÇÔ³lÙ2ŠƒÛ¶mkÕªÕgŸ}†G{õêÅõ:Ü/a,ÈOø&YQõh½ìóPÇšJœœh†žH§ü^&r(Š™Ñ@=‹„ËÊC­J‘?}˜›‰+ÀR¦n¤1#⿺AzÛÊÞ6SI›ˆ;>]ÓRêE¹éëû’û/ÁA´;±’C]øæbÈî°Ò¡kû˜í^qº²-`-™Pš®‰Ì§O,$ÑÍô‚Òa–óʱå×tYA®@€u–EL#¥¦ÝÀ#æ³°Urr4|4§õ<Ìþâ*4îÚ†ùºÂî_ªLƒ˜5«L•Â?žÒ88ÿEá` óe ¨8(ÿpµƒœ#¹nCÃà·Ò 6–ç×·³-¶Øb‹-ÿßäg>Ëù.LÂpÐçóa†Âl—r,ÜË¢E‹ Éd0}õÕW˜ÂV­ZEq°¼¼¼°°ðã?Æ|гgOÎ`€‹Õ |ÿ&U``nÐM’Q‰©[×;Ü.@¡®f@‹œçÌDRty¨EÕ‰,‡b²ørdÍ Qyt‘&¡–£Q‚tèu¤ï!jš }ÆK†i—v°é´ŠæåqAøæå=TÙÔuÙ‘mj’ɺ.qŒ`{%4—Ì)6¸é&Íì€nNø‹bCvYŸ54¼‰DTRT&CN#Z/ Ê›Z&­ðDAˆÖÕåäæ2_óðû íÆÙ+‰ƒA~‘ë°ù|S½æ>Цàjˆ»‘,B•{é´;4-ãpµƒ„ý8ù¦ÂÔøt Ëa¶3a» ð›:à{àW¤óo‘Ãmg[l±Å[þ3R__Èë˜/€g€?€ÝîÝ»óòò¶mÛ†ïùæ´ñºï½÷àûÝ[³fM*•RäÞF>ùä`_¯^½¸.;æï7â Q0-’V1å?Ø¯ïØ¹sˆ" pפ©S©šPU‰ÓEYAq޹gàȇF‘@pÐ-7?úÂsYaSÍ×-i ì‹>?1(Iúh:n–5%ÁH%,Q úHöæ~º«ÿ*í Æ[,È7ó¶=ŒT¬†ÿ›–‹9üLK—H#Bà¢) .¿çñd‚öZ3;²›KžCd›æhÑÕm© "í#…js­x½ãQñ]tÕ©¢\yÙe‹_}õç²9œs‹*ßÎÕiü[åçêpðŸMˆH²žHX¦©àËÉ"ñ½{}-[Põéa¡p8 …8r„Âoï×­±Ã’ï©"´iýV[7»m±Å[lùHsÚA¾Ü(à,W\\üÅ_pÀ8äó<äÄgŸ}6þüíÛ·ã_øÕ«WƒCö9šA¸„t{÷îÍ÷‘p7ȤÂ-ÈtÍ»(Q†« îÛwêâ—ˆ®Ý|Õ•‹ž{†s¨6wAuñÄÍ—]±è½%$™ºíºkŸXò×W‘qP²dTA ̱âõaÂ&lÃ2JWV¸JŠ(fÒ‚ÇÅzÿU¸ŸL~?üðÃQGu˜©P‹§(HD’2uag0„k‘Ý»ƒ¥¥‰½{½€´[¬Þ¤z;Ý4h°èÃK>«®¸ C²îݾcþì9’ VUT>>µïÓ‡L¢ˆèµh$’Ã"ˆ\rá…¯¿õÖÏesøý·k×®Ö­[ó½®Ü•÷ÏÕ4Â&Ö”•½ôÒK߬ýzΜ9®v ÿkÇ~~%%%„í9Üâ|•aŸ}üÇÌ·ÕÿÊ¢ü›ä0ÚÙ[l±Å–ÿˆ4çw™ú†3 kcëÖ­íÛ·_¹r%·;òy<‰D–.]:uêT¾ìgš&Þ¢8¸c×NŽƒ¸Ô£G鮎†(#|ªäjªÎŸ)õñÛo»gÌhâ÷Í3îò«¯*8®7QSÄå&±‘O>4ꆛú8Û¶{þ¯ês£Ò³;QØ&S>é6N½àÆpÄbFNì©xjÁ“{víö*Š i‚$ddÁr:GOL [þff+ξn DöYÙLbŠôh±#5D›T‰%p³gÃu³áy¡‰‘‚ŽIwíà-q¿BR<µš®0÷Ýʾb6­3®ŠO¶ÉjHú˜iãÌTZe´é¸aÃG<2†¸ÝûZ&›‹¸_ò=É/é:½O?6eÒö-;rƒARFM?ú¡QC† ñäåkɘâñ#;-šP~ššH ­hRC? +5-¡ N[؈ÖU²ÅÖ÷UÖÂ’T4âÎ nþæÛ ×?lð…‹£[-5%øÝõ©DÀå§õM뺚ŽÅ9¡€èñfÛ_`ío5öQC+Ð M7N±»áeFÞ™‘Ã†Ž™þ8>?ˆâ¤c0wûٖϦi5`«@;‘c•Ánñ\ð#H•ß|?í±G§,\ º‚¢Gde_ éq\í£I–¾ è†!+JÍî=ù…-'zøþ‡“:‡cÖ²&Ãh>¨¬ýªÙ0Dpë‘!C‡ß?\@'™rWÄgTÌçÏÙg…†â4&b5Ð:i$wsßø9‚+Õð)Eû—·IS¨ÐðJ*3bÈÐqÓ§[–&8èÇe"žôúÄ[l±Å–ßNš3sï"¡U mÞ¼¹cÇŽŸ~ú)÷ xÈç5MËá™Q£Fñ ‘Ÿþ9˜€HqpKù®VÅ­>ûôSºv°{eºtÏr8ZFUÓi°g‹üŠ#'HÔ ‰&†ýù„‰kWarøÇ3[ù R$èÃ+D3IT{õ•¾þ,qÈϼ`Ø[ïo€8™ÞØ¡e’jÆ—“`Ò™´Û᢫ E¹lËàˆÛÐ' ôàC#¢n%Ôº5&pS‘~¿ƒè$’$ÐÏ%K´‹1÷îÞÕ¢¨5I¦ˆ PWˆ5µBaÍ@!‘ºp0/D fß$’J‘ŒFòC†©J(•…9ÞÊì,w¶(b“®E2IÌI«)—ÛC'Ît†Bg"A¼^f¼¦ÊQ#—Ðú F[ÊO2ÃSœ(2&R ªñ´D5|½LD“–<§VuºSåÑG^|Ř^$Á‘Ö)$^1iÕÓ°VÛ_K‡¹Ü ©øw5âÙ’¢õaÙí3mBU¬~îÂù²ìpz\D%Fulv§%'FÆ-9LMˆ”n…4ñ2‹d,ILŠ2™Á0I¿”A;ב€¥5,SRÜ$ÉÖ'-ËvºyóÅ—.Zü ñɪ@Ò„* ´r2ÄW %6[ñ© o E‘bµQ ꤭a1@LÕ“Ü€–I( !ƒQc"M®,½IeWNP6T)e‘HüÞ˯˜þÁ¤>Fróikƒf¨ 4gXzFF§××ã“…Èn‚ç=žŒÓL[™Mfô˜Ö‰!“z³ÿyçÎY»<- áʪ¢–ÅÄ”÷!#§ö} ZMÚ\tIUÒF]#¡ª [çZ÷%—Í|÷zC².‰d,Çí¥Ô®´O^¾B”ö;œD³úŸuÁœ×Þ¦k11]Á@Æ©Àˆ‰k̯¸Sb+D ¶×Òt]ÁCññ{éõúAFôÁ–¢AÒ-•Rð;EÖhU$‘?]‰ë”jÚ+;HmŠò«‹}d—ô²%¡:j”¼ë‚Ëf½¿ÄT#bA1¥HSûó¬-¶Øb‹-ÿIi #Â`0rÛ¹sgÛ¶m—-[æt:y”ÝH$Ò§OŸ7Þx·ºuë¶gÏî’æý÷ߟ4i÷â²bÅ A²ÆâÍ{vµ*jµz5ÅÁ^Ý{€odf,V“Ô Zi)¯­£»3êüÑ£Û×E¾úüã¶=ÅäÈW[ìÜu³˜|pÆ4âóM¸­‹°–¨¯K•xÂÕ•íÓ’âðÇJÛÜüÀ¾ÒVTµÜ¥e2šæt»$A”Ñ2MQhØS¢©wÿù¤™o¿IBþX4ì/h*ÚUW1wÒ¤cˆûúAƒÇÝq{0?7QŸºÞ\ðj†šª© äçãõ ÷22*ÒlÛ¾ÝÅ—_6sþÜû~ˆxØ4œVg›°åÇŸŽ<âÈ;F£®æ“N‡È3RÿØÐ‘F}|Èìydçö™/>›DªÚ#ãÇ)˜; óáë¯oÛ²ðÆHqˇïÒÕ#Úw¼}Ø0ZàH¨÷èȵ‘°?6e<‘Å:ü¹2BH]ýäûî£âÔ˜àwÿÈÔ©“‡Œ{×¹tjY\·uw—=7FÂe±ú£Ž9zà„qÉÚOaA:™P¼”¯˜h¤P[0yÒå—]–Û®­šÓ©×V .対·=÷Ò‹€’L]XLi çÌÛµis(X0dÖ\"QG:GvÌû[%•¾åé™Ãï¸eÂÂ'IBýǨɗSfF<ÁB«6:kĨön× wõ{ì‰Y»jª]²cÂÌ9€W+rs@^j8æn=ï¢'ß~]#IÝé®%š“(ùÄ!hdò]ƒÐ»9Á`ß1q -%q B[+ëêgŒ›¨×FêãÑ.'ÿñòw {àþ±S&Ê @`¨%½­ŸšLu<¦ó†]Û&>½ /i™Y·ÞY¬x6ý´µ¸mÛ´('‰„‡¦OKj)OnN2õ8$é´!CüŠR[¶wøœgÌH­Ú¶ôçSi´ºx²æá±cIÍÕ†O}bâ WûèïQbúˆ¬'2NWàP8h€¼ëvízlÒäVyy;~ø1?<ýñq÷ ñÄB=‘š=z´©ßüÕÚ^]»»BÁ]‘i‘ßäpW(ô‡b“><2 ÇŽMà#É)nܹuÁâÅ©pÄÈ0`ˆVMWDйÅÅ%)ËÚ©yèù…{ë* Š‹¨.µ6"ÎI#GTÄ"¡œœQL¢cÕ§€ƒo8ó‚NíÚ?8kƨ»ï=m&PrÊý‡`œ‡rðaFgäí}ýnO,ƒ^FÕd’JÆœßÄ¡tÎ8/rÿýƒo÷´È5Âñ1³fŸ¿»Q÷ .V|µßþTܶõ®€U/’nMšúqû0ÿÿþSg‹-¶ØbKór¸8ȽDŸwÞyªª¶k×îÉ'ŸÜ¸qc§Nu?‡ƒ\;øéA8(³R0LHÍGƒ¹)¯¾c»\Y9oÌÈ>ctûƒƒ/¹qê3/6¦SÂ+RÆ wŒ|ï˜W==þºÛXøñøIÛ¶l¢µ ]µ$Qr(U‰P̓¡kI¡š !Ui÷ŸuÖä·_'nG*v牂¹õ»o¦Ýz×ñ¹qÔ½¦Zæ|`ĘW^ F:ƒjnÆ ºçº¿Ýà-Q¨«®Yòö;_~úÙ K—ÓÖÒõ±÷ÞsùµW—´k“N©ó§Ï1y2æ:)@½áP•O$9äúósB»}üùç$‚érwìz 5úʼn ?̘8Á—Ÿçø®½åQáOß}䟎§Û«çÌ!ƒïx¯©ª&1ÆM? ³¯âL¦TªTŽ™pã5×Ðݾn1N~|ZUMÕ¢çŸ'{ÄH#¯ùÛ#c' G´Õ©‹E[Ý™Ÿ"ªé”âq›äPÚA4TMí ›ú<úâ³TM˜ãKFê<¹¹f2ùÝ—k{žôgNÕÏL™rÅW$’É‚‚–óg=ñ·~}Ýí[š±zq{íƒ7Ü ´+>ñ‘±ãÇùÇý7öô‰'¾8¿ÖÔò‰/¶á§Ñ·Þ~d§ö7Ž\•ŒëiméËn¹ñ©¸¥®¦e¯‡ê ó¦ÓÏ~jÙûÄAÇJ’µ¨¤ÓŠà*ÿôË|Îðxô¥ˆß…î%)»œ0åÔƒïºùÕ¢I{ëkÇ>>ÍpÉÓgÎPÜ^â¸û†<”覥ëa=5cÑ‚‡çÏ"±xrÃ&f<ôÑYstAŠ›V°¸˜î:úé§L,}ÂÝ®ºàüö­JѪÓ'<~ï¢ùa1êq{It‹9lø=÷Ü7ȧ ¾˜öÊØ™ËwÜõÊwê9ç‡sö Áßmß¶`ÙRâuW}ûmž 2läðaš(: [–eR%=º&uÝ­(f<&©ÚŒ#n¿þÁ2÷bn΄É†O ZóíÆ|§oÔÀá£G¥ªG[u+޶E$àVµŒCÕМ3 »{à=I”lÌzdòýóç`QTݹ÷Þ;ûË>ßøGF?1uf¸¶nðÃŽŸ6ù‘¹s©‘ÐíÊ·_~Å‚ÙsÃ5µ¡ââq£ñÈ䨈?¥ªï~˜z}ÿîݺ^7eDY¸ºÔ5tèèWžF–­ÛJ‘i}?4gÆÞ\R'hír[:^Ê%¢ƒ¶Øb‹-¿™ü üë_ÿšL&¹oµ.]ºÌŸ??•Jñ@Á¿Œƒ‚¹ÏXLcæšÔ3m2OÄâ­ŠŠ“‰„Ç uµÄGŸyʨw_%yùœ~éCϽ@ZåR«PT¯MºòÒ¡ÿxŠx\£?mÔ›ïQ¨ÏOÜtÉW:•0EÁíñ¨†ŽR©jFM¦‚9Á¬iŽYfï;õÔioüƒNötН«µ|¿Û}kãŸüÇ?ˆ¥’¢–@ÀkNþóKk>EI49îŽ;î~¿ï˜NÔ†hÒ%b‘6D‡XÒ†ì©xfΜ>ƒ’¹ô®nª[+,\xר‘Äã¤?kóŽî8~úãÔoN.DKº3×¢fMÌÖimð¹gO3gO]mqï^Ô°K | ¸ú…=vÍWzZܦêØ÷ß/xåÅ'(2ò·[Fê騑ÔUScº[Ú»í'¯ÏçEâ˜e5sÀI§ÍXù1‰FHÝ1£…k•‚|ª=ͤDEVd'3þ‰òÜrÆ) ?YŽ ~oeY‹Ò’d<æsëÌf˜HO>üº>+ìÙý-í\óÝ’åKo9XL%‰éyõÕwOGÚ—ÜuÉų¦Ï&ù­¼æš^Zź„,8Ç\pÑÈi“HÇÖDÏ@°fæçŸ{ñÞ‰-=#8$ªh GïºüšY‹_"!/º|¯šòºEbij«5H߳Κ¿üCjýLŬ´zã-ãxHn]JÛ\MŸ+Q]‘°ôP(¤Ðå€ ©Žo‰ÆiãK¤ïyçÎû5ÚGºN‘‘ýîóò+¤b/¡ž,%f½5h ]ʤ÷ÞzÍ5y]ºQK´!pb¤ñ÷Ì›˜Ê$óœÁ±}ûõ1$¿C[è®×ɖʉÆ [þK#å{C…E`FG3ì¿Ì@lZ$™¼ùÒKžx|¦TRÊ ©Q²§’äåí¨µyiÚ ={?÷ù—t‚ÏCêSÉ¢á|RNY&šžÙô£³e!Q\¤¦š´Ì¿þô??ÿÙjü¨]vÝ}ƹ3ßZB·R•í¤i:Ì&jFöV/œòØß.½RiÙ’Zôù×ß?óÂó7?4X(( Uá1÷ 6ú!¥M»οdü칤MÉ€Ë/ŸñÄ‚Á“JN~`ÄýS¦’D’xý$Ží)_¾êã‹ï¸h)º,¡:zßÉçM{óõt@sáwµn<þ„§×® Æ}´Oetþ5ýú.~)iTxZ‘ †í’ƒ¶Øb‹-¿™.öéÓ·mÛ6RDXZZúôÓOÿ‚±øki„ AŠÇãù¹¹étZMÓ@´ŽïX·a÷?v:÷”²=Òžd›#ŽØ”‰Üÿô“IJ¦÷½3§6YS¹§íÉ=köVÄ¿ßrtÏ^5­K®6XòyõLZvSMŒa™ ㈚J¹]n=ž”Ý+žeø9çLxãuªõq(t6Aeš`˜N>sÆ;ïÅ"µu$·åľý†-˜G“w{ά—T´p Ý<¼UÕ’`êîsΙùêb:‘Kl¹•è¹é¼óžúøCü.ß*,ÅýË…“Þz‹dRÄ­¯‹ÚµÝÎTMÄ-9ATO?í±QýŠ–!˜é.¶ÜM¾áÔSjÛ® ô:åe»Ð+»"á9Ë?¯$+ªo¿î†çßzÐ@÷®Š‰G3–êôº©L½‰Ìð+®™ðÚtºøT‘¦F£ÌÙ²È=3š|ÈÚÁ”zÛ™g>±r)]™—Iˆn§žQ.¦·‹¥ˆÓ=âo}Æ-z’ÙåÙ–U¼þÌ3ž_½”jR«SwþñO³×I"Õ÷Þ~Ûô…Ïg¨ï§Îùô})"‰DSãþrþˆ¼LBn¶åV$ñä¥gžýÈ ‚ÌR‘£¯¸vÔ3OÙ$nĦé]Ó†Jí®$¾À=W^ùø{ïú:RK=G‚®\žëN?ë…÷—RLÔ“/í Z#£ÉAªê¦Þ?ddëvÛ·o¶È_»þ»™+–Ñ…q©q:n=ï‚'_yB a¶ØÎM•a@ö½Õ7]}åY:>¼kWޤ SªùÏŠO­ù€êÒv×õ½öÚùoÿ~“ xà›Úô#×_7ø•¹ž6­ˆ&R°SV›ìl¬4ÌÌÖ-¯?ûBº¦N¯Oä{}U;Ëúþý%â°HÀmÕÔºùH¿;zú)ú0:ÑéTÓ G PS]_QQþðÀûz”¶Kî¨ÈÏ %ëë-›&à;¿êÜ|R^qóU×.úè“ìÖ%0(FˆÏ©ªæøo;锣Û‘››Kü®òÝeÞ´YQW3qÙÛ´ˆrU—n¯|ý%áÍ]{-úú;‰ÞzýuO.[J‡Œ®ÝsÕÕ·ûˆÖmMU£ËGrCo¾ûÎkß~ÍV[WG|Þèe<’®«uIy3n½mÀÓ3,…?ºcʉç ÁåÈ@ÚH¹â&QÜ´þMñm±Å[lùr¸8¸fÍš¢¢"‡Ãu&yyy¸Ëƒ‘6‹ƒÛÊvµjÕêÓƒ¶’¸4~†C–©û1ê Í¡¸ÜeŸY’ÔŸš<ñšá÷8Ýþo0nÖܰ ×Å ùMˆ¸tÏicÜE“®ºièœy¢^t\o¶íÑÄä«Ô™™nèI¦~•5MK¦>?[;¨ß}ÒI3—~H×ë…‡ƒ¢‰nŒ<ïÒ1³g‘ü:}îõ»þúy+–S-QF»ïŠË§½ðÑÓ$HµtVUPOÒl¾%ö9åäg>YE×ËÓ™8èÒgýô’×é† mXÇûýå¯ó^}*ù"À& û9"XP3HRyáEc^y‘*¦Æx pC}e×E‡Ý}ÏÀ¾ýZîÚ°¡u÷îT»éIqKÓé%Ç—]5÷Å—H]˜ä‰š Š.™-M 2òíó§“ŸùøcÊX~?*«ªô±}É$•N¹\ÞCá Ý4èŠËÆ=:ÍÝ2îHE‚i•¸ÚÞ°‚òkÖ_Ží½äó/—5Iâðõ»à‚Y‹Ÿ¦¦Þ$áE¼÷*àcÀÅÏxùïDð ¾è‚©«Þ·LKˆdˆÃ3õÌ¿ ~ùD›'©~4'0ñÞû†=:ÕÐ2Ê™Lâè{Ü óW}Jdƒv“S4 #YQã+(¢Èe‘þçœ;çÃ÷³ü!Òè¼€Ôþ—^>‡fgQ 2Ú! |étP–Je^œ>ûÚó.¡JÓ=U$C’‰ÁƒN] ¤ÓˆKÀŸCî¸kʴLj/HŸ‰Çé3á0Ý$Q{ß 7ÞðhRªI÷£´j™É‘œAê{ꎾVSDr“˜JL׃—\<öã·"áš ÓG|~KÕ”²8ÈtÌèzUÓ~øIVuAtP5ÈsÏ,¼á‰Çñ ðÁÎÜ|úÔ¡úÅí6“I1/Ï´,êÛÇ0çÓ÷ú¿ée{dGˆì)'¥­®¿ââç¿ÿ'Ýð “`î\2û¹çèH05:ðß²@ì­Óÿ®A·÷÷oÛ¼©}÷$ž¡ùöE¤®†ä´xô¦[-\€‘?òìóǼý.‘äIw:.©­%ùy7yÖS‹%"õ©X<¿m»Tõ^w(HÚ”Pu^eê_®¼`9"Žœ­áû®¾jÚgK‰Ó"ºHjbO]{×MO!GäÐ¥ŠU ª¯u)Ž¢l±Å[lùÏËáâ )xóz½•••%%%€¿ºº:ŸÏ÷s8¸}÷>ìÕƒâ w4£¦3A‘œÁ4à iØí«×ãõOÌYpÇÈfeµØ2Ÿ6T:þÐÃxh„3'”ª©^8{ÁõW\lw$|ìíw >ØÓ¹-deý„›oþÄLÒ2àå—?öòbI ¼áo}ôŽ–J*Ήkcþ|F§Ží¯\4—Úyܽ÷Üz[¿–G´£æ{ð–n‘´ùð%W<üò+tÏ,Õ¦äÕM†cthZ½¿OŸÉóæŸ›ºC×­H}&‘œ2füÈ™3I²ž„¨–™ˆ=øð¨ñcÆݼâÌ¿üýÀ½ƒ»¢|ê¾A{öV˜6™´F_ÇÑæ·_}Í‚ÅÿÈîŽÅ'Nž2lüx¯/µe뤇F>üø,°,íúdúÉù3ÿ6ôI‘$Á¹÷믟zí•¡ãF“ú4qúž0dgUÕƒOÏ‘ ó)[[’åÔìfõFí ÇA}Æ :‚j" ¶k^ï<ïÜÙ_~R^WÕ*7ø5è¶ÛÅwo‘”»îè?ëÉì·?ûä>\³†¨µPËò’ÉW~ó夷_¥£($Á¼+N;íï}Ì\ áùè˜)‡ŽáðÙc¤ªjö#îœ1Í‹Êè'ÞÔgس 芋„~Óɧ<µj%‘•©×ö4’.Û÷û(jVlû¶ùsçÕÕG^—JÌ`Aè‚‹.ìܽÕ#*Jõ†MO<ñ„èv§TMR” .½¸çzS=_:­Ð¸,Y“19 æõDrÛº/?û|ŽÛKý{ÝÕñh¿Á÷–vlÚvJrÕ¶]‹=›¬¬õ{¼w@òCÄï$uuOŽž¸uÓ¦[œþè'tÖi§ß>rì §Úéôœ2Ū©\¾±§óàcÎX8«ÖÒòZ^rÅ¥Ýz²½ØÂ=wÞ™'¹J\þ5ï|Ø»g1è­6RçM|n£>ñèø‰f"md´õë×ÿáØÞ–"…±q {½P7ÒåÇOÈÍUÕU‹‡;à½âÊ«:vïFL¡jÝúçæ-ô;œ±šHn0çªk®5æáöê?i»¨À—S½³ì‘Ç]uÉ%Ý/8ó ã©¥XÓ-ƒG…k0sO“Ô^|ý¹çöèttžÏW±cGQ^¾šHß2d Ú¶•Èq t-úãMšâ ’šiº<7ö½£ýÑG2¯/flçÎÙS&ˆàK5™ºñî;úß?¨óŸþ0-Ô3˜¨¨œ0n¼–¡:|Œ¨~wö/ìÔ‘…V©ÿΪÚÉ&hNÉïóéÕÑAŽ [iµµsÇN.Û¶#¿u«û§L½ùÄSO9éä>ãÇßsõ•Å…ΞE2iŒ«Ø¶ æÍÓSS7Šrß°¡$/D—@Hdü½ƒk×o+,*òÌ\Ôvâ-wmÛ¶­e—Žcf=μÛägß<óâó•n3#ZGæŸzÆ™íñc‘l´Å[lùÍäpqüçv»yôùx<îñxxغ_ØJ²³ öh‚ƒ<'º¡¢I:Üè{Ú9óß}‹æ-—]¾ðåW©3‰ÇH2u÷å×Ì|íU¢¾_4ÿÙèP—ÓR²ÓÉÐHv=œžJ'êc(´™Œ(J*“¬—_n^^n@3¢ÆcuÕÞšhn(Hòü$£Æ+ê’]ÉË÷µÌSÜbèF$®EâF"ehº!UZv>’ûÚ5-˜¢†c:žI¥óŽìLÈÁé1-7kêhÓ§èu ¡€”ë—\nBdeì_·A2ŒŒLt—à x¿× n ÛØ‘Ìh{kbuµ’iÒ˜Ô ,ÊÙM*Ét:Fë•T“‚Cvû½¡¼\ÉÍ¢†nEc€¹êpÄévy0íûýôŸz…ÆvÚ&¶X+ê:‰ÆÕh\K¤è¢‘h²Pù}ÓŠ§ÕH m’I¥rîHÕBè#”¢¼JO§!¿œ›Ù³'OÝ5S^¶+YßᘣôhJqîí}Âô•+*7~%„ÒºYzLWf²ëÓ±x}L«‰º’j®¥(¢˜´ÑZõêF×ÇÓõq=‘e³ò º`¹ý>ÔWÌÖ×4ëc©dOêºjJ’Ûï åP—ITǶîŒEЍä¡íãñ(Áh‘G}ìºÍ(VŽÔE-"ääåçà§#»êÎ0ÀÇéh ’IéŠÇ,-!‡eê‚Æ¼@kÑ=FZ-ÊÍWLG2Mxä`Q¡"¹Ì´*zûyüæ-ŒîËdªËË‘z¯Ó!YDM%ƒþ  )ûýÔƒ%pPÓH"nÐq›Œet~ÃpüÜñ9IÖgª÷f¢õMpåç—‹Gu§**Dɵ4õˆ©®Ö†ñˆ|yy„G„ÃW]a™üUÄèÝR.ÉÏ#9Žd<¦VÖ ÕépÈ UM¤\­Š¬tèçòyéfú/G¼¾¦ã™úƒtº\x7@Ý\c¨G«k¥z5”›G—ÒªéÚªj|¤yC9!<ãp±bÓ|+caüˆ B¹^”œ ·qÐ[l±å7“æpTVWW×¢E pÞºuë6lØPUUfãfâT*Å}âØðù|<3cÆ \œlÙ²eÛ¶mß}÷Ýáã v¬þ¼ízEØôù—ý?e‘ú¹•eL'?~²ºÓ '€Ã6®^uôO¤v4§dI‡ÀAC7½ˆÙÈQ7è:*C#º¦J¢àr+"µÌ¦¨Q7á§(:8©®ˆÔkÔjéõ·Ã² ÁÐÙ¾Z‚J,É<(…%#9•Ð80p×I=*;H†mpà)PsR¥ø' Ä¥dQeeÄ›.!RL´KFtEºµ©&[zhTÛ‡g…zœ¶Z€}qM,š5Ýì­IÀbÅÉæûÖ}Ÿ™¼%ªãQìLæZv4i­ÆÔXvMë+²úÊì޼¾Ûx«ZÔ4IÝòY´Aõ)ÚÈ…8‚Úâõ¦Ç%yÜ´Ê«&ÞqïðǦ‘Òͤf§è¤ï0MrÖßàcÓlL‡°ø$݈¼ñ"s†ã±ìx]h‹YKqCçQbSpht Œ@7:³!‹a”«<Z<ÅbzMúa#fXyœL霢­ZΨ@3 °PÃ*ë< #MCa¯²»zöGÄ´†EÕ¥ ƒ èYœE _UiÐ6ÖQL Û°MÖ¦[cãB÷_çk‹-¶ØbËo Íá P×õ6mÚà|ýúõ¥¥¥UUU¡P(wèÐáûï¿/,,Ä38âWpDøÕW_p @;¯×»víÚt:½téÒ_ƒƒtþJk_|&‘L2ét3·Ì¢¨ÑèjÞ¬á È”ÎHgssI ‘†©—éX¨Ò³'UM1åK‚²‚ÐuºÚ‰Á‰pgHMý_`òÒ„,Ñq8tF@Vh‘*]¨‘™Þf,f8H§J²`"7+SípPfÛpÑbËÙQæ˜6™£f–¨h²©Ô¤qTè4ŒÿÑ=°8(XÙ} -ÓÈYÊiÁ›Tƒð­Íà ÉZÁJºÀ©,ëàNðõ²õå“=·ŠR¯Ž¬‰µ=‘h<'Ç'0ÂÀípm‹îðð!QU2Ärêð†2‚D}6Së­NõZTC)[)Un¹¬Æ"Ñýضñ¬)–VÒ°IˆÑ`À%Ûaìµ [Dj–¨Pµ$úPO ¦,) ·›$kš§¼iXTwɡޡ7û¿Å˜Lhj¦jÈlYtfAWMô¬¡mª ã‰^P5cž­§k\s`隥ˆn«omL²´•5îÓqÄ×:bø²úòÇéBÖ¦ÈÉÖ6d³nðqc©]5«HŠ“Ù}uV~´9uK)ÒÌ<º.Y‚¥Èl„ïkM£y¥Qb·ÈwIg­Ùtí%Çxº£Á~nQaÚk’ÒT‘ÕWä0ÝðéД˜m±Å[lùÏËÏl%¡fHê˜N·nÝÚ¥K_QQÑ–-[Ž9æ˜Ý»w·hÑGœãJIIÉöíÛ{ôèñÏþóøÞ]²d‰aøó@äÆbAÚ‡ƒL]Õdí [pUWÎ ……63•JùÜlï§a$R)ß—Q3²!ÊN%žH»=x¥™É¤qؤjê3ºG`ö6ÉA¬¬²"ÉöTxÔ °EgK¹dp pP6L™„ÏöL¯Æfgâ÷M·4SÂDM*ÄIÒÅA*«Œ€Å&Þd†ªCÑ¢†bê;;»š*]eÅJ%Št&ÍN±i¶É€Ïä5sôP4µ54‹EÑEÉNÈ&Ý­c1k/Û¢¨µ•ÙÊ©I517´O yE^¾H‘À•}õ%,Ø´hRƒ´âT(™T+¥KLéà ÞhãH} (o™†”ãVx.éš½®€/ír¥ˆî'™WC`û5ªTËöšY½Æ>nЩšÕd 9MEbœ¥3»¦ Y K fÐ7øÊK¡©oßR7±‘ÕX.õè‘n«qp/0ÌK#õfÛG竹yXEXle†ÿ úDöƒ%‡#–…áÌR5i ?\{ÀÊBžJS½#¾Lƒ®‡4D‰í ¦ŸB“Ô¶«3º¢%¸&±qä:mZ:HÌ}*d$£S‚tJ²dˆ LÍ~"IÉ–FLf"a0)Õû©„+}iÃJÙ±¡óÏ‹š€÷aÖ}†À¸ZÔÍ<j*ÿð ILª,É®›¸Ôø®d¯´Å[lù-¥94ØÒ¨㱯¾ú ´W[[[XX‰DpäüWWW‡#Îq¥²²2///Nçæær+ó7ß|#IÒ[o½õkpPçÚêíÄ`Al‰¡ª…!›@2†ŽIE¢›qM‘ù—1§þ0i˜ôù#ÜX,i*]"&Ê8¨²´[ñÅf&ɲ¡HÒL#F§â¦4Äî« 5O¤Q_G#·Qå™JTŲ|fQÖ@Ö„d×é Š:«aá?iÜ,Òt1;;™¦Šãà>¾a3tVƒÕ 3ØzBY0…}åæ.6ÙŒq ¦I¶¾rcÛqk°V_™#Hûü1ƒï^µð%AûTf„‡ ŒzM IÊ+J<U‚!ÕÒ<‚"5XD÷ÃAÖ†TkkêSÎZ(E²_ð_fèß§ÿcõÐ8¹6*5ƆÁ¶i4ôŸgÁW¨YP“a Ëâ¹XËÊnRnÌF÷!VGÍ4‡˜ÍsŒešªj)ôûÚþ-ÃI77d-7ƒƒ,x±©é" Ñfêì¤q5^V·ÙØÃbcäE‹énY¡èÖqÁL§Na¹QwjÑo 6HL•žy²æöhfÜGwâ ½‚45º%(øÖÉì";êLé'îSþq·Â­ìÉêúÚŠ÷ß=Ì«Lõ‹V–ù™ºe2 I±ñ®­´Å[lù ¥9É¥R)&ôX,¶gÏ !XW@~mÚ´ùé§Ÿ:uê„#Î+**Ú¶m[^^.˲ªªGu×z<ž•+WþŠÅ’Õdvh¢ØhöʾB:è•FöM± +ÝöMc ªKl|z¿õyû'Ô¨ŽzÀj¸›}­Æ¢7à×A©Xܦui¢Ü’zp_Ö~7U í÷hSÜ_¬ý³‰¦j?°=*7–Ü: Çý+q²7B›`5IT M*ûŒÔ¤ –õÀúïWþƒß8ðÝ&Ë[µÙO‹¦•i¬ïÒÄTÛ4K8à©fÊðVƒMº ²ô*_IÙLj ½&x™¯Gä€É°#_Àw‰ÉšY&6òmh[Ò$5¡iQ5š–j?Ž?xTØ8h‹-¶ØòÛÉÏì,žq‡‚à<˜´ÇÁuëׯïÝ»÷ÚµkqÄ9®à:îâa°\ëÖ­ñúG}„ãÇükpð?Ps[l±Å[l±Å[ÈÏî,v2I§ÓªªnÛ¶­]»vµµµÄ;wvéÒåÇìСŽ8Ç\ÇÝöíÛïØ±£k×®Háƒ>p¹\€Bm±Å[l±Å[~¿Ò‚Ö4Mãkׯ_ߦM›-[¶ÕÔÔ€×­[ò«¬¬Ä縂녅…œý~¿,ËŸ|ò RÀÑÆA[l±Å[l±Å–߯4‡ƒ 9P_Aèp8¾øâ‹c=vûöí?ýôS·nÝÊÊÊ‚Á Ž8Ç\Ç]<³víÚ?þñHaÉ’%>ŸoÙ²e6Úb‹-¶Øb‹-¶ü~¥9›©ªš——‡óï¿ÿ¾cÇŽ8–––r_ÓëÖ­+))‰D"8âWpç6lèÔ©“ÛíA®^½)Økm±Å[l±Å[~×Ò‚ä|>¨.NƒÜ¾ýöÛ.]ºìÞ½»  `Ë–-ݺuÛ¶m·ãWpw»ví :<öØc [;èõz³n¨m´Å[l±Å[lù}ÊÏl%¡ñµƒ[·n ƒ999‰D¢M›6ëׯïÔ©(G¾²×@UUUnnn‹-@t«V­B"+V¬°qÐ[l±Å[l±å÷+Íᠮ뇃;š ‡Ã|Oq*•òûýååå]ºtá^fpÄ9®àz2™âáÎ;#…åË—#{í -¶Øb‹-¶ØbËïZšÃAŽgÀ;Ó4ËÊÊøRBY–A„………?þøc·nÝÖ­[‡#Îq×Aq€Hy¤ã+Và-[;h‹-¶Øb‹-¶Øò»–ŸÑºÝn°™ÊdëÖ­€¼ššŸÏWQQѾ}{óóóÏq½ººº]»vÛ·oïÞ½;RøðÃ].×òåËm´Å[l±Å[lùýÊÏD%æææâdÆ `ÁÍ›7†ÃapÝîÝ»y`bqŽ+¸Îcs¿ƒàºU«Višfï,¶Å[l±Å[lù]ËÏøêÏ’ÉdS¿ƒÄòòòââbÓ4ãñ8Ž8Ç\?Àïàûï¿ïõzíµƒ¶Øb‹-¶Øb‹-¿kùWürÏ‚ëׯ/))áÚÁ={öçÀ‹8âœk¹ßÁ£Ž:ÊívƒëV¯^Édì¨$¶Øb‹-¶Øb‹-¿kùí ×ëu8©TŠûìÚµkYY×–––Æãq<†#ιvp÷îÝݺuûþûï{÷îMlí -¶Øb‹-¶ØbË…üÌÚAÓ4ƒÁ N6oÞ …ªªªrrr’ÉdQQѶmÛxüâÆs\Ç]<“ŸŸ_PP¢ûøã‘ÂÊ•+6ܱZö"Ы:!21z*°'šm±åÿ¦XÍ\ý”pÈ·„ƒž9ð…früÿú¬ƒs<¤4”Ðþ¹Ûb‹-¶ü{¥94 Ãápx<]×Ãáp]]] H§Ó¸RYYÙ©S'îeGœã ®ã.ž‰F£¸‚–-[ºûè£E†ƒ A4EI)‚‘Ê$N‡@R„8‰šKo¨„øØÌ šDMËL¥Rx]–eÂÔ›Hígj^VVVRRÒôITG¼Žžˆªªh~𢒸X[[›——Ôå¾Ñ‚¨6®g2äÎ+Â_ÁÅ={öã$‰p¸& ´Q}œ Yùnžã!óÅŸ¨—Ûíæoñsä…\p7û|¾Æ²AÏùIcš™¢üȯ£Ãd&狇].ŽÈÙ% ¯×˫ƫñŠã+×úÇ’â%çeàmÎäwÑ>¼)šŽÜÊÆkǯàµ@Qq Ék!1á·xO¡5xûóŽh¬r£²Q;¿ßß´Èeæïò[€§ÉÿÄo£eà©ñšòçù(E;ð€?M;úÿ±÷`VUWÛûÖ¹w ÃP¤ƒ Mòi4†X£i¨QQAP)"Ò‡. ¨ø! ½7PDª5j>“à/šh4¥†^§ß~ÿ÷œwîrs ¿%ÿ|gÉs=sÎ>{¯½vYïY{¯µõn~ð:s&o¬rII Y’·T$ Îð·q‘á+.öä2è÷¹¼žP0è4»w89tôHƒú ¢*êP¶Jì +´þ²!°Íá8]Zœ“ףލ2î†"`«$äÏ6 ÅKEI©7;ãÿsØì]ö´¨Á›'ÃC¡••Udey+*Б2 gIIYNN–Y߈ÓiïÊ®Ê+ʳ2BJ¤{qÈ/®\è~¼ˆd¢Š-uî€aV0j¸âÁ‚*†M•9É2s\—ƶmÛÚ¶m›ª\æÉfæ|ÍéX P(góTN”R*!#„Ω(.bâô°¯Py°ô£GÖ«WYa´ Å«×E0âŽ;.¼ðB©rË–-‘Ft*™àꕪ}¡3ðEïÝ»= °Ÿ@ž¨>ÓîÄMˆ =A5…FR˜x X|Ka˜¹Lbz©²Å» »–2u¿ô:ö+db/|9)[¤¼Üît(Š Ëœ‡Üü(ºNݺD€ÀR§OÌÍ©á°ÛmBÑÊ"ÃÀ7õ…ƒ.‡ IK‹Šjx2Ã¥N€K§:]\”[#÷‹Ðͼ™—;ì÷;X–-Þ²ˆÁi3š>˜‘ñGð_¬ûÔ©¢šy¹à* x]nÚL‡Ë} EJJì5r€þ”˨αS'ïŸÒÒÚyµtÜs.a"½ˆ:r& ÔI>„T Q±ùp…rÜÉ÷ [÷îÝ-Z´P˜¦<÷~…_y]p??’ö7~‘²,}üêøƒR8{¤¿úØÁ¬Ø¸qc–ÂyC™£˜‚T3ª’ê!%F4ª# â ;e+5U±/¢°ÑŸg9°!Ó…Û¤Äñ‹d” çI™-õ/XÔ¡jŒ‘ûmÕ×"‹ª U5î F æ+ŒD()üâwpÿÛ‹;hs¨Š–«Ñ,œ<³oØe,;¢†*³ÙüÁc—ËëÙ“66ouAy°dÏÁ­m/orù/.mذ!> ‘³þš”P%ŒvÔð¾ûî[¹r¥ÈŠsí:Èçxæ™gøÓ7¦š@•6±8pU»öÚkQù+V¨3¿5qWé8+)s^cM•9£!CÎYIË•IŠìqêDà‡ÙÊw³±&'zZ8^yå•?úÑæÌ™£Ë'U¹,N7à˜ÃrëÚµëºuëÒO—,7bØ*-1¢ƒ4#V*Õ¿jŠd´QGL"2–<©w¥i(p´5jW¨!å⦠O¦OÚ¾ÌY·úèV^IFYéfæ»ï¾{ÕªU¸ƒû¯x]ì©nø¡Øi"Â}ðL5ɧH·!¾" ¨Y³f¡¹¥ÑÁÀ;|Û ÞÔ¡Ã_ßy%ÞØ¡îËË]^O1zWíZf²ÈgŸ}väèÑßýîw•œC¶ˆ0 ÈnàHÃü†‘çrèD¶|ü—çÄ¡#íuƒÊpø~Û4JXÖEû=8‚¼!l‡a-‹š6HCh;àRYii­,¦…Õ³³ Ðu33‘Ðf·—–”d×ȉCÜh³Ïý¾ó‹/w½ã×·ßþ¯>*-/»êÆ_™‹êè±££ÆŒ>yúô ̘6bdŸÑXRbg“/•Œ “:›´MV´¨1ª‰†44Aá3¯~ýúzÏçš*õ+Ý Ìß8ÌšØßR_ô: ¾ËIY¡R©Æ/e(&öÎ;¯Y³})9WóSYˉ„§õø™G†r‘PŠ, $ñ™,M'œ2&¿ä ¢@uøÕJ£2Nõ‚¿•úZdQu¢ªÆ¤Â…¶Â¬røðaüâwxZÉ·wp0¨'ÔŽ=å gfÕUn ú”—?¬ìU®žžôÅwÿèÀ‘¨ËcsdW©=?º¬%‹n3K?ãC5bíС—~øŽ8ÑÜ|ó͘An¿ývÜÄb Ìט2¨¸™ºö¿þë¿0¹ðƒ’X S<~‰ 9û@ÜÈŸ¯MBÖ©Ê…"Á/xÜÆÔ†k}i˜DÅÀ™)õ/oûbÆ£·ß~û÷¿ÿ=²¨G­“X.¸%rU±é8N˜xMûì³Ï.\¸žäI%,¬B¸/r.û2à @24ƒé¦¯8öë_ÿúµ×^CJÖ‹–B]ì4¨Èš”`M*H/6iÒDòOÚ¾”ª$ø®¬j‘g¸ØEúöíÛ­[7|!èöN P7„ðäGÜ|ùå—¡¨6nܨbଊôسgÏF†Ý»w<<‘æõW_ û}]ï»ÿ¹¥K³srÐÄm…‘v»òââÃG|ôÑG:u2`±±=7ªüAc4áÍ{vã7l|vEœÊþÅgÿÌv{>ûÛÇwtéR\^œ“W3„üLð }öÉ?~úÓŸªÊšÖ@mO_ØØ¿aæH¤NT–ÙôÞ_®¹æ—ÊéVѰ²9‚~ŸÓëáÛò ·ÃµæùU¶p¤Ó½÷-ž3§f­¼;;ÝŠF2rsbý‹‚áp×N1Ä,}ÖωpŒÄH /ׯ‘n«Fb¢tÝ¢vÇwý#s.ñ£ŸÈ·*õ+Üa-ð@÷hß¾ý|ÀΓØßRÍWÄ4Ê4}at0@•0~i«–¨ñ½÷Þ{î¹çÐ'i¢–uöÄO8Ë! „@;ظí¶ÛÚ´i3nÜ8AÒÔ"üWHŒáÌw)vÚ”¡.«Äñ«ÎÜ D>ED/o¼ñ°ò[o½¥bƒñÿ½¾YT¨ªqùA…yøàÁƒ5Â/-P¸ÿíÅTsÏ i~Àœæ2~ ÕÉu×E˜ØÔ#ÿòè¼ëŒÅbÌoóŸ;¾i‹1;p åbR@ ‰ø‘Ê%]ð‰i‚È È—K¨TÃúG'^çl‹ œÒ`(çwQ-œÝ¨º8©ñ¹a6LZ.‹-†bXBJ'‰C‡5hЀ‰ùõÌO[}… lƒ+´Íq:)±\¾Å¬t´Ç%i –*ê¬ l#7ΰ˜šÉ•àoZndA- ¡·Ah_|ñÖ­[ãæhtSä†D…ˆÐH""0ÃÎ-JMJÚ¾ÂWlå6Ÿ.vä)+V"ô(䬿HaêËR, £èŸÿü'ZSœ@P¢A©>õ*s=éŸ]¾âÆë®½ iÓ5Ï>wõÕW£Ö^N8\^R’ år=³páýúáv4Ä`3VŽËÊ £P‚±²l 6ðíóû¼žâã'kdå¼¶fÝ­÷vUv‚9E£`°´ìþô§›nº À5„¬ð5 ÀK/½D{낉¸W¯^¸ÿË–-ãÖFÜ—­N©ÊíÚµ+ª A­[·RÅ'>-o¾ù¦@Ÿ—_~ù•W^Y²dIšm4”âEÙ˜¯bÚQ´êEn㬞z&xÔ¥Kä°aèô(î X¼x1Z/B_Ž3íŽ6jÓ¦ÍôéÓ!|‘p¿×}÷݇ê¼þúëhw´5Pãœ9s¸Ø—¦}düá@>ëׯ''4vNœ8bÛ€ˆz÷î Y¡½8A´ÈBDÜ}÷Ý4#­ZµŠ‹Ñvè0S¦Lᤠ×Q(a‡èùsçõЯèäIÔ´ã]w‡|>§ÝôA½B¡O?þ8à3,Ž?ûùU¯¬[w[—.þ⢌ÜH*)-Ü»¯èä©ìÜ ›4öÖÊ‹„ƒ»Ñ è *‡ë…‹ºôì¡23JŠ  ÿùOÁÖ§ŸüãŠ+®à(ËÍ«Y???3·†¹ÜFéåÅE‡:}òdš53\®&^ÔoËÊúü£Ê}¾-Ÿ}vUûöŧOãi(hsI»¬Úµ¡°ŠDÝ@„QµaÕ wÞÓU[¹hñFýzFXp( DètF¢—ÃI0ÁqHJµ¨‡Q€FdC˾Ò4Þfú"¨_¿~DhGŒÜ{ï½÷ùçŸÇ#|œ´oß~éÒ¥è]èä@l ,}®UêWݺuø†H1¢ûÛߢ:ÿûß/½ôRôÕ¤ý-ÕøíÔ©Š€p^xá°nÖ¡CÎ?©Æ/3Ĺk×.|t½öÚk .¤âvD$%î`æ˜úÍo~ƒ9ÿŽ;îŒK¦oê@Ý! NÂ{÷îmÖ¬$‰öÂT¶bÅ qÅÃÀÁ°EúTãåBzÓñî#<‚@¤„ïv( _|‘Ño¥¾YT¨ªq‰0x¡ÁFð‹kÜÁýo/î r|ý¶ÔÊÎ;núâõS ‹ æÕ  á훿Êsþ¨`ÀÄÖÙ½ÛvøÝ5#M/¯©œß˜åp¡o.I$ªg|Rsú¡åLörq¶N:\¼£‚¼ë®»ñ‹_@y7oÞ|öìÙPáA¾ò1çö!+¨LµÄ1¸9jÔ(Z!¬7ÞxˆP Ht(IZ.¡%0¹ßyç(óþŒ3Þzë-HpûÖ[oE¹˜s7nŒ·fÍšõÞ{ïL?Se3bÄ̪`éÙgŸ…*±s7U¹(hôèÑÐ|@TÜŠ @ÃßýîwÄ” Tù¬BYñÄ—7=] vLå4=B…³3(MO'w°nܸ%‚åË—£óaBó÷‚碛¢84ÖW&á;vpÆp޼îºë† B×'ÔñÝwß@bû[£o  P.Ôÿ€î¹çž}ûö Ð~€ rHé·Q)ÒiL¢½ßyç_ýêW¨#.Àó¤I“†*›ðQU·n]ú:poÁ ŠFÅÑ»h‹b«ášH²e ø-š?v nݺٿÍÀ¿>ÿ<'+Øå–—•¡è=Îuá’ãÇO9†ÜUØØ`•[#·nmo^®¶àk|}­š¿°kïU†3è«p}FÕÎ/¿t;]èx7\{²Ø>{ê6l` O¾U[ÿñI¦'£¤¨Ø›•Y«fÞ¾ýÿþé/Úãé©ý…徊Íÿçƒßuøýé“§²r²}å Z_h¬(;\øžóz¼…»¶}Õò¢¶€GÑUš4©\ÈŽFñ®×ìKv‹;-Mªé=Ü=£EŒújû’’€Ë„]}õÕ_üÞ:u*º"@~,á[ }ÒH$‚fRÕ~…/7.Y ·¡'à[}£2i#°K¿«W¯ÆX@A@Hœ0'Üxã©Æ¯¸÷²ÖÂÄ`¦bkçhUÅ´ƒïI´ ¦&°G×~ä@/+ÙÛ'kø…¬Ð‘ gHéó0…B‹¨Ø>Ht9L¤Iǯ2Q5-²( 0÷½à—ß]@„˜œ!"L¤ßb}-²¨zPUãrÖ¥»~qM“o/î`ÔaØKUÁƒÎ^õ„±ðäeäAc¼*7¹ß5sÖ C =á5ÔO$#j÷žá1'{““w”Sû‚ª‡>ÁŒÐ¨Q#Ì_üvg^|Lc¢—->\¿“}ŠÈ8Ó7nâÏÍ›7ããˆPÌ`âOŠÉÓœìá㶤Är!\ÌqP6PhL€’@6˜à qdÀ¡L4HIhå°ˆt2‰/ch&î(çl˜ª¾4ãAçá[•BÊn¸³0!·3ʆH}HÓÃÄÀ­`xðàÁÈÒ^µjU—.]¸dµªÛc’6$Éõ#°'K<ú¾1Á¦¬-¸E•¥C£¡‰o¹åî,šÌåž¼¤í‹kY÷§ãüùó!ºŽ;ª˜9YPMe¸æzœŠ\ð 6sæL¨dÜ„‚ìÛ·/ZŸ^®HO±Å2Î;™óY¡+pÄ™ZÍú†Éç©“'1íf¨¦þº©n:-Û^Lߣ;w}òÉ'¿¿»“*/S™žíÛ¶FüÁ‹~òjE#ÿÞ±ýTiq»ŸþØé1CÛ”•eº‘¹}ÕÜ]û÷ ÊY™•žÃæïê¥ÏÜóÀ«éök6\0Š„®}[¿jzÑEÂüòyóz q{ íö¥³g÷*(0”•)tc›­Ü_áÍÊA¡Y™Y†—4ø•±œAúH0`Ïp›%Gƒa#x0.:-w2Ð+<Í·„2mKèuø¨mÓ¦ W!!%È Õ+\Š¥TÙ¯ÄT¿råJ4Ú‘)é+ÆŽ§û±“W©_a¤sOcÁ “·k×`ˆp$±¿‘ÃÄñ‹˜0Þ7lØ@ÆÀ-°&~S_Z11«ˆ…•¡y¸çÒðÒ¢Õ¤覛n¸J[ßÐ}Èd¦ÅMÙì žñÑ‹±I‹6Â\÷Ì3Ï`ºcÜ“”tüÒbzøðaT‡_˜¯¿þ:.0õqb—ý*¶Ø‡Ä·U_‹,ª6TÕ¸ƒô= ÑŠ»V$ ÊùÄd1\ÊáJŠ±Ò¬\ªØ°î6yÖÓ£T Ó4H¡ò«P†ªPãzÍýïe {aÔ\Jö˜öƒªCaáBbr–äÎ6™5dQêܸItˆù8 üË¢u†ì5áœÎ%-|ª>ûì³ÔŒ9‚ÙJl™Ì!i¹xr»üòË‘’Œƒ¢eQö8³\L…øðŇR€ƒ^,ŒÆR+®¢¹íÙ³ÌÓ>'û ëKeƒÉ  ˜Ü1YStÔyÜßÞ:(Kö²|~ùå—Üp ¨ºdÉh20víµ×ŠóJ‹P6¨”îÈ žÑyÀ$XÅ÷¡.Èz”(“H”ø‰]9 B8Nø•´}Ù+øéƒ×¹Ô®4gU¢L[|¤@(@1CC#10:´”¼%:ž:RšUo~Û0Œ“Š!l=G0p:œÜóg†$`á¼ù}ûô±{¼‘â;j…où¢Å=¨òR•“õâšÕ¹™ÙÍ›5+:~€Î=uâö. o¶š?¤ìÎùÿ=±ÿ#cTدCa ?{⤂ѣ ×¢¾ [¦õ€3 ›ÓþùG/:u º™æ ÿÎÀŽ~¿‘Þë?eJÿ‘#•ª„ƒ’w­š•Þ(Ò•bþ²²Œì,eÚûÝž Þ¶›B&©v°Û|ñÅ`ƒKí a™˜ñIÈÀh>eNIÇ/÷ ¬KWçEUû?¯i F2:Ñ Wq¾ó*æë8~AÀ—Û·oçZ}Ÿ®øJ+sO* `‰s x£-M÷J³"ϾºbÅŠV­ZaÒ_¿~=:¿lL:^èŠG³7îcÈ\wÝuH†â¸˜@ ŸˆL:~Q.R~ðÁÐȇŸ÷˜»¾ëúZdQu¢8î ^£KL+ ’A3 `H=ØqÒÓ/6€ #fŒ ôPîzrÞ†G õ +¯£Jpãüp˜ÎœF%<)—lTÌ#Œ :ôꫯ¦Ë—•¹•MT&_âK_.»víÂ„Ž¬ p2‚XW­ZµlÙ2™tR•«Ìyüå—_–€g˜¿òóóññMýG £²† îØ±wèµÊ­{œÔH7c¤*Wbâ  àéc=ö׿þUVÜÄÀÊdª»a¢Ïᑊԙ¡ÚRuGY ”©°;®[·…BòÀH %!ëãø“¾Æx„:Òe»eË–P™¨KÒö¥ñX̖܊Α›€ÛÒi®ÐÙQhÀ»ãÇÇëóæÍ£{#…¬743§“„àf‹?ñ1@wé3(×ð4÷U¸=n›²ü>#¡øù½öâK·v¸Y¹ÜÑÒ2PcT½¸bEÇnÝϪ#³VNnãF‚>C×Fì¶² ¿NƒúNOF¥¿¼¹XlììÛÇ€„@„¡rg,[° gß~f9ÆOéÉ™YYv¯OÿùOëÕ® økdçTø}E§NoýjÛ]ï5Ë +§cýòwÝŸaôûT†éƒâ°Çœ“&AŸ//ϲ™6xt׊òìÌ,Ý\§ÎÁEobÎYŒØ—ÙèK„¯¼ò ڋ랉ãd|M"ÔC‡¡e¹â_Õ~%$ûkéëʾÄ>#ñØÓÌFøúꫯ~øa áN:uèÐA¬pÒã*êø‚ñ” X¾mdQÒæ”rÖítè¨{÷î0a8co©ã…üK†ÈüwÞaPz*”xÓM7¡î¬Wªñ‹l‘ùÛo¿M¿@ä`7qâÄ÷Þ{ï{¨¯EUúáãÒ,Ïý[ø5â…(¯™©ŠÔc£_?ýÖˆ]Ù]f¸i†ÃÎÅÓÆ¿8ü¿;óØe\WUë ¿¿ÅUö'aÀ”)F"$Ë‚/÷rõêÕë™gžÑ§`$¸í¶ÛÝ¥ï»ï¾K/½tĈ˜tpS³x•b¼üòË?þøcFD­!TåB-\¸‰ÔÆ<ðôÓO‹k-_‘H]GxÓ¦Mk×®’C>ȼGÏ>û¬ÌËÔ7©ÊE¿úÕ¯z÷î}çw"à 6àk{õêÕx:‰aüD,g•vÒ-86ÍÆ£Î ¹rQñ/¿ü’nM¨õÝwßýâ‹/²¾={ö¤úÁT޲ÐyÛ¶m² wíÚ•NÊŒYsóÍ74H˜‰k_ª sÃ4(¢? oà\\l±€ \¢…øž{î¹ãŽ; I<…$—,Y‚¡b$ô°J«›CììKÜMÆtpÙÁpÈnÀ)åø2ÝžD:œÎÛ¾Ú·gï7ýˆòDáC…>ùøã®ïqÕ®…Á²m˧ÍÞ¤áyµ0¬N<°kïž+®ù%á= £.ݸvýÍ·ýAey‚á  ˆ$Z ×þgã×\s›‘¯·mkÖ²EFvÖé'ÞzãÍ{ºÜcšQ>HêäÉ>üð77Ý”m´pYÙ[o¼ñ‹_þ²VÆè¥'N|ñÕ¶Ÿßp}ü6”}åžL/E\lGHF OôlQŠ¢g‹9GÒ'Ñ‘PVÿþýgΜ)Ç/G¤«<úè£sæÌaVUêW«Ð"£G–x\´eÐAô¨•+WBþb^B£àä¹xñb¤¶°îСäI— ¤¹õÖ[ÿûß÷éÓ'ÓRˆÊÒÑ„7Ù‹¸“ÒFf¤@óÀ9ã@€³PÀì÷ùŠNž",9]T»V­üzõ1&›7izÙ/Û+‡½¢´Ä_RvàßûËJK]n·Íé¨{Aƒ: ê#F‰ŸÿsK¦Ó­¡/?ýçO.û/{¶7â°]rÉ%¶HÔéÎVû죌ðoåå¾ š!;«ÍÚfÂáïÙ»oçîL/4(ÆxØãÉü׿¶\rÉÛ¶mã2Ž¿‹ؽ 1¡ ssó²²³›·m›ôbÝD‡F!zM¢"«ôÕ™Qr8¦Róq1Š‘`A±Äñûꫯr³Ú×_}ñŦð# O«Ô¯€1ÒuNfÏž½eËÜçl ôCo‰“tü’1 ¨^x71!ÜrË-¬‹~àF.º%žrHŠ RQôIÌ-0ËfŒ™&hCâ#Ì_|ñrK:^ôXKL,ì¥üŠO¾¶mÛr©è¿©Æ/2ÇdÅð:H†‘ˆiÔwZ_‹,ªNôÇÌÌÌÄËÌxŸ&.ÜÿÛ_?Í Öµùk"ÙQ-è:uøÛ·o^iô«/?( aVqÛ½åÅþc?¿þ FÐ=w¢Eõð ˆ?i=zZ`¡a‰aAÀ*fj0‰ywPU 4ÌbPäxšÓ& Ìò@lÈ¿K—.\ÆÅ\)¬ú`¢Á+˜³…Kì…Œ–X®aǰ5˜(Áô-FÈáÙgŸe¼Ö|Ó° j4àDVñŽ6läŒ&ïÞ½»¾†›X.öÑD Õ…*@ÛQ¥ÝtÓMH,¾œg5 ê[òÕ™vXŠ! „üõcÜxৃ4¨¶ÁäÆñ‚ èHöNÔTSM7pÔï¢OB¹¢[rI=iû¢iú™ú@ÜÜ:ÆK›"ÍHzX]e¢ºIÈöÝwߥe*µzõjz a(àBùAíAi±!¸Lwˆ3¸C;òØCSFÍqaší¢fðÀhMãΠ”w}½9׫S·QÓf…»wƒ¥æmÚT~;û¿úº¬¸Äíõdfg5nÝŠa¨A;wl¯áÉtFTéÉÓõóó÷;±Û.nÛÖ0BšÛKŽŸ0bª¢ùý›jÕúB' Ulßáîí;ÜNW0öz3ò/h¼ïܚujI0êïÞéóÂá`^^íüFðÐäÊrfÓWø wcìLÝœÆn‰(w.j»JŽ¢ñøí·ß&ˆ$pI¿³fÍÂ÷Þ‰'pETµ_!1àˆ2Ý™¹§0ÆÑ™Q(-ø„Ä“/éøE§blÜÁ5Ë«'ï`\0(•ÀbÒGÀ@Ë–-Q–{ï¬çÅGÄܹsÑXIÇ CÐ ~åR8¾÷Xwp„§7kªñ‹G€‰È]=??0÷b|}ÏõµÈ¢ÿ¯éŽ;(»g0&KJJðkèøÓÞ ¯¢»ªC>È¿ÀˆFæ÷©hð¤'«–ò™JÃa,Ag†oºJpP™‹&~øáÇ<~üx”+ç8'`‹÷ßÁ‚œ­$ê¯Òbéé¶ÌטÍÅN&oIld—0]g”¶Ç.±\±¨éA­eÕŒ¾t¦Ó7¸pœÄ4Èœ_Éx^Õ¦jòrÅûXvOê­0½€öîÝè_iD‡åf0v”_â¡ÃI‰»'Qq|y4iÒ„yê›ÆØ…èBˆ©œSàà–Ç$ˆÃ ÌøÒ‚IÛWŠ–8ä¤8iˆoðß’%K æÅD^‘õM9¼%\}õÕÐmº&[ð<£|/¾øbîÐglƒ[_…Ëã²ÅÌãFP¦pÐewØmö±F øý¶HÔ%&4›9‚*½õÙ¡ŠpÀîr:\FTøÊ½—ð2lnêËpDL¬i¦VÂÏH´Æ™ÿxô\I™q@¢Ëîf¡Ó×Úïó±ï½Ñ6ìæ™Ú~¿ÑkÖLË+Ê3½™'OÌôx! & íðyúÙgŸI¼tŠ"M$snj¶ÅΖ¿é1̉Zx¯¼7~IC”†|îì¬R¿Ræ4B—y¥¹å¢—"O|p °Ûˆ‘X%Œ_P!–‚‚‚-ZbBøœ4ä”Ç{ Øôª«®âZªŒ#г6^!†£Ð¥_yç–;Œ8 1\ÒŒ޾¨ì×±²¢£L“dkJÜøÕÃnˈfšïº¾YTmèŽ;ˆÁ/®$\£4´W$¢*ʔ߮Y*SU„Ê<^;t™ÃVÑ"¥rT…·ô¸Ê¬¡ìî¨Ê ™jÍU¥ÍƒœO1ƒüõ¯e€e°!VªØÂyóæõïßß 'Ë-)@W˜¶È0Oû øàÜÁðÎ2×xÉá¼r‰LgrEÒr1]¢8š¯Øq†¥á!î %§@zñ3 'â"›Ð™>U¹¢YéÀ+>Èx!0 Š¥K—vêÔ)ÍI_:ÑòÊýãˆÆJ]Ñ&%ºmŠ»†4"±Q2d%¢°AàŸêªsý /¼p×]w-[¶LìÞ|“¶/ežÈmI2Ch<¥É'Ί€”k×®íÕ«—@:¥J1ŠO´x‰ÎŸ?À€â†‰¬§´…¿åË—CÉáÝûî»AR 4J#DmQšÇÃѰÓfºm†ƒãÅÒ’:îT¶x8lD|Ï H0¬%.·CËáÍ„‚v§¹©ÿ"Æ®]ÃZ *¯ËÜ›èw9œÈ03ÃãÊ0¼FŒ¡/™pÐp剡«@0ä´W:°ÅÐþN'0.šž£©2¢ •*½•UìÜCªeå†!67;'öP­]½ÆØ'P^XìŠ>Ì‚ÎÝ–C)&öT„/F`ÈYš&Õøe°:½ˈ«j¿â¸fçä§W†î§ZF"äF=•0~;vìÈLð9Î — ÆÄ —ܤøÊ+¯\{íµ`I>\¥G!7Œ‘aÆ 8c0ú¦ñ¿ÑŸŠˆ8¾R(rÀSʯ\¶Ž|Eãshýúõ©Æ/s“MŠ'4Pþîêk‘EÕ‰~ฃÔå<Û—k²˜2Êæ…ŠJœ5˜hËüÊ_^ì¯Y£†M•+å­8îõ昭º ¢Šœn¨˜Ì*û’ÄH¦€877’À‚ë’^RòEA“@˜!ø®ÌY&AÍȱWœnÒ”KHÇô’L6¾`âCnÜÄ-0K?ùY‰iMJdE’–«›²À9š–ºG/—Í—þ§TÞ!\é#`•H+Êœ“æ# Frøwÿ%1ºHœ?â Y“Â[è”K–,¡ŽìÝ»·:Ó€zÖöeÆŽŽåMr++Ý LˆEAêHn \ã"¤è§ŸIèAIŒÊÌ€mŒE’áñD*á“ò|·Q\8t™À.ØM¯Ž²ÒRn¼#oeÆvþl-°‹?0j4g/ó•gy2ý(4à à–ùË3³²‚¡ Ûë*ÆštÈæt]:2*ÖE%Ŧ½Ñ.NGeSú|˜2Ü€"€}…ee»•Fµ@ ”áv2C*ÚÌq}ºèt^®áêÄÉZø ‰„òJÂDcÁÌS‘DeÇKo‡–`u< * $ÕøUZ F°“þsîýІv5âZ.x”Yé…&¿6l Ü)1iðàÁìK‰ŸôLð.Þ"Šå‚Å+'¶©3ç¥D"8&·Âdšñ"vS©² CÝ™ ã‹ã%éøÕ'¢¸™ù»«¯EU'úãJyQ= µÃf¶5ÈÔ¶P4¦L¿b‡Š:Ey([ÄTN—.ÆX08‹¬éÈZŒØÕ011`˜LǼ©b‡—ðEÜ¡QHÕ™Ë Ì0jSä„¢bøF¿–iKŸÙuP"kXr–T"$MU®,K†b&T±yY|uïTuæÚ Ëâfje.å+-¼Ÿ('ê¿ôžwIÛE@’ÞRqˆ0MbÚ²TÄ€Übh3Ϫþ_Õ¾\xªoÚ×ãN×¾•Ößʰҕo•–›žéhßÓ§òjæ¡þ†K¯× ¹¸=•R£—qrqÌ Ç·KªÎ ãéèN¬ ÚH°qtMýúÖEYdÑ÷C©à ãr…Æ<@Aöa'ÆT¦bâÍ–-[âOAÌög‰;(å «ìÆ‡HdiRX©°i =ª :øÐ¡CPEú÷õ«´£%†ˆJ_o‚·q< ‚atY¹¦s‰îÔ¦oLÑñŠ:ÓMqËÈC4v¤}ªrÅ@è0ÏÌå}.|ˆQ„ð•—U¾ÈõP[ÈA¶ÃÓØÆ?…áýû÷7nÜ8ýÆš4íB®Èí:d9 Ô_Ô3—-óâR L\bµošöeM.©ëŽá©ÚW(M›Ü'—¦]Ru &À„‚Q™hZæ—«yVa‹,²È"‹¾-ª*ä¢hbÜAZ 08(š5n{¸îK¡bKz–˵<,n{¸ì¢cTWrœ¥an"† ÖŒ ¼ '<ð ÑWA]ê*So—ª\ÝAVmhzÑ—r„yY»¡ Mª·1Ÿ~ß6óHÙG[Qš0­©ÚEiGx©X¸2±±‘[u¦»‰dÅÌ¥qeû¿ìè·Ú7Uûwê¦YÁp©ÚWçS?Ë!U»$íB4ˆÆ™®FÇ…W´È"‹,²è»¦ªÂALÚIãr-냃$p19QšN’øTü¢‰é…*›çd‹a_è‡(w$¦k*aÉ–Áô&jʤûßåQQx“»u SÒr¹Ú¨NKz`ƒlÀ·_.ÞqSšám`J‰Pƒ&4¹Cx®ª›†Û…a;WZõêËS®ŠèPºï(» ²”:ÃGÛjßTí+ÛU‰Âi#ä0IÚ¾‹Ò.`•žºäõvIEz»¾ëøO¯©î`‘EYdÑwMU…ƒ<#41î wþpPfíB¬:wî¼~ýzuf¬Ú^½zq‰: ,¢ªqH”ŸnYQ¦Úã¶ô5jˆ¡E·Ñņqò¦\36ÍýÄ* šˆôõ¸x uëÖžâ>ê¡.êq9’ËyÊÄÓ§OÿË_þòú믧?\.i»›2q‰°J€Â°:Ö”sôl)CâTâB´ïÏ~ö3«}Ó´¯¼ÂåZñP¡G˜Jh_ÆCæ esO™2eÛ¶mË—/OÕ.iDÄfª]»6OñŽ K‰*#+ ]ÌMç½P`‘EYdQ•è<ö&;øïTš&–=dD¡,EßçDMCXåGð![ÐvíÚÅ ˆ­‚ÁYˆ‡׊Zö 'M“ ¤q‡øI?ÿ@®¹¾†²(\¥íÜ?uê´,’qËÜ1¬Œâ#Z9i¹O‘X¨¬{l³ áØé¢J;¾ÁP”i3«<-ÆÅòc©I(uQ1×ãsoT„ÖGYf¤1¥¾¥bÐlóûCÏDqóýø&Mš@€Vû¦o_u¦}‘$Uûr˰„P¦Ð0ò¿üòˤ풪3(m‹¡„ìá .²f-žÝÑs8 Û"‹,²È¢o…Îcï`Ò¸ƒ?üÞA‰àÏõ/è§)S¦´iÓæÎ;ï”PÉÝ»w—«W¯îÑ£™†*Z²d‰˜aúöí‹ëùóç²L›6!÷¦OŸ.p硇âNIÔŠ;ëEm>|Y¡¦¨ÅÂ… yüÚâÅ‹ù–\CïŽ?lŒ7꟯£&L˜€*ð´+êiZnÆŒ³oß¾ 6à>^;v,'–‹f·?üðìÙ³û÷ï¶¡éQ0J$Î '$ž‹¯¸âŠN:I–aÆ1HÞðááò‘ígK—.²!ÆZ³fͦM›p'sqÒv!"$ÔÀSž5räHü‰§@lè-xà â)‡,nJ¶$âBðŒëE‹õêÕËjß4íÛ»woâ-äLÛÞ-,,D‰iÚW?Á)ÁáC‡Ò·K" p·iÍI÷ã"=]¬ÀYd‘EßUrïxbÜAÞÿ!á u•„ŽœrÈjòôÓO£\`eÚ<ðgÏž=¹JY¬Zµ ºöÖ[oÍË˃EM Ý-ÈR·nÝ®¹æ$ƒ¶¦š”cÐPjÛ¶mËÊÊ )QS(øI“& 8€&OžLŽï¾ûnÇŽY}Úuxà«®ºŠ¨å‹/¾€¢¥9G™à 0 uëÖhèl¤¶†§?ÿùÏ‘41ІÄ_xáü9gΜÁƒ£Ê\u]°`0ûÝï~g† þ&„ÏM¡ôx×òåËP5† ù,[¶¬OŸ>¨2XÕËCz:%m}yQ:á2Œ8qâ¡ê9ãO}—çSAÂH€|ðTÀ3o #êÌ›7Ïjß4íûÒK/á‹è™gžpxsîÜ¹È y"i;0&àâ²ÒbͰYæ!Ô¡b{sÓï?´idžrœLÜü`‘EYdÑwJÕ$î Tö1+7ÑsUŽkdr0”¬Cé‹•\éC(Ü A\C ¿ûî»È¨EtoÑ4‹'ÌסDXiš4iRXXÈEC<êÚµ+дx~~>àÂÆi!Sæâ#ô.·|q‘Ž9Sb6íÌ4:–P†È2G}Ñ~ŒèÁeP ùæˆó¥LǤçŽ4 “àã¹çž*B)7Ýt0M¶IJ‹ð‚WªÅbf¥»¯;vì©§žB/dÐ<' e¡Ó<üðÃH€§»ví¢',Þ’(ÓxJöTla1;š(ŠÁ–éÏkµoúö ›g×̺!g°G°«böWÖ¥;ÙÈÉi¢mƒF&\+õ—àºxŠ¢¡áø– ˜(aùòå çA|‰ ï»ï>®u"ÏãÇë§ mðPvþ)‹›ò'ÒÛ¥K—¢tŠ2EqýúõËŠ«ü“àðâÀzüù…_ú,X° žxâ‰!C†4mÚtذa´¤ÒóTlo}tqéfEñé4ètB3¡nhg„=0u"YpÐ"‹,²è?“ªIÜAª+}oT @ €êJÀ6ªFÔ‡•áÙkº„’;}útT‹ Â~W¯^½aÆW_}UÅl'PŸóæÍCÐî/¿üòÖ­[ÇŽ‹×Qâ´iÓ&L˜ 4N•5=U™ç=÷ÜÃøôrEÎ|ð²‚.Ä»¨B÷îÝW¬X¡bÑ }ûöÉÁ*”~­Zµ€qß|óÍ?üpôèÑyyyrÅðááãY4.)ð£Ÿ3! ‚ÍKÈÊÞ¯=z\y啨&Þzë­·6oÞüÔSO¡O0‚Ä´l¥"F'"nÿnz$È¿‰gûJby]ÎÐc‹K¸AevhúaX훾}‰éiÔKÒˆ\§¦IùpY_šC¬Â»wïnѢʠ¤ VÅ6ZÖA‹,²È¢ÿ祥ÄÔO5à³PH³gφ–1cõ"ø|â‰'ž~úé¾}û"Ô04+™™™mÚ´¹ùæ›`P‹ûï¿åÊ•ýû÷ž@E† 6þ|ü>þøãŒ·‡?:Ä`ÄO5*‚êPÑ¢”Ï?ÿü¢‹.êÕ«2ÛìOáLš4iûöíË—/§ÕΙ3 §k×®ôìÙOˆjrì <øÒK/Å£4M£c5eBZ’û gbˆ¸ƒãô›ÜñQˆqU`WáŸì—4>úè£hq0fµošö%²ÄpXºt)$2¼ë®»Lœ‚™ -‹oªqãÆ©˜Ë°îPûÓŸþ´  €'óØè¸ÐÙqdÁA‹,²È¢ÿLª>qULÙpp7Á¤.XÖT—¶œê5C±Ðí ƒ%rˆM:÷‘ùm·Ý†G@‡Ü" "+¼Ü86RyË®Á8ËŸ2c\«ØItòÈ;ÇL"EË#=f®[þÐR#åcµoúöƒz³fͶlÙÂðlb†!DM/¹ä’°Ž µH?𢣠Ñ·lžõ? Zd‘EýgR5‰;ˆŒ‚Ð1v›r¸¢¦WCE¹*gêÔ§‚a߀Á}kfײÝ* ”ÛL °a$3È|Å¡@$’“ç ªH(\ \6„Nó$ÖÒ Çãr¸ “ô8¤ÆÒQ‚¨m2ÃÆOXìhá»!“¸—_Å4:_çbíg² ’eÑwxü=vé^@ø.ýmQ.}QQÜ€.½ôÒnݺÑÀ… ‹lcz- 9žzê©cÇŽñÈðŒLÀäž={š7o®´ÐÍ( ¢   ñ ^!AZ²š‰ºÈm‚¬üJ„dY_¦s.3§“¸žýÛYýHx·X‰‘!zªxþê,<Ä!²ùßÓ¾¼L10Ñ”‚ª:Ô A\ 6 †Êö#ž§7hР¦M›¢õÁH†1MLr Zd‘EýgRuˆ;ˆ\"*b¼Š(›=ì°‡•rE ¼çø×¼´âæN×;Ù¹Á†¬Pª+…¢xS…¼¸ö¹ ïy¡Ÿ+N”׫™iŸñ‡å^êÔ²²2Zh(Àûï¿2/,,|õÕW;uê´xñbî ct_QÆD$TÃHÓ³gÏô‡Œ ذ>|¸nZcƒÒÅUyî9’¾_Px;«d„a¼h%†·ôµ .Tgî_ËLôIh»dÉÆz$ŸÄ¬ä -ûÊ+¯Ü~ûíçrp_œØ¿Óü-²È"‹,:?ª*L…¸õüƒƒaq¾…€çP8!¥2ñÀ®¶ÿû_šäzU-[¡¹¡ /Û´B#Ì?톥0œ§ÊU°$êʲ©,è­ârÇ«¢6<*/U™5dTö¢Å%äu"­Y³fÛ¶m]tÑ­·Þ Ý,ÁAªT/Û›/aŸ¹'OÉ6ý(ÜGJà(Ý“'O9r$??¿oß¾´¨•””0ÔŸ`Ám;wîlÕªUkŸT™åê€OvP…놽*‘¾@œæ´_’àlúíò­ô0K|œÕ™ ÖU¢¹sç‚+ˆ÷†nàV®˜ëžÔÂ6ÏÇ«j¹ÌA>9ôJ%¶o³fÍzôèÁÖIܺ—ؾ\ú¯]»ö×_}ñÅÇíþ$úDnÛ¶­ŠEn⢳:²}ûöÖ­[WUnßOþYd‘EU•ªŒ˜p0ªÂÀÎÃõ ŒªŠP¹=Ã.Íúˬ×±5:Oû¢á-ÏåŒ:»\¶ˆ;ã‚£¡ã¿î׿´ÓçÈðTø#µ3"å Ÿreå*ô¨“'}±8ª[¨Xšè’²Ä§\ò£)( Æ:+Ñd vÔô‰*ŸÑ€£±Ðtt)à‚#Q£œ8q ¾0Y¶Ó¡L¼¨cèDÓBÉÀ(xKŒaéO§HEI¥”ÞÆ—æ:#(=ÆJšÕy4 žÄÐ& Dæ¦U2ÜϣÜ8Û³ô¤í·’GN3{ªö•Øàô¿–‚Ä=_ÅZ™è“ý p Oy‚ܹØné»Îß"‹,²È¢ó ê*l GÃ&4–ƒÊž¡¶ŠÐï¤.³ËÚÝeH¸N®ÇmìrÚƒa[î‘èÁ'߸WÕR~»:ròdãZÑp‰Ý ø|¶Œ\›-Ëaì'´3f ‚œ…¥£tžl&«*quX6éó4dE/.ê€@J×7Ø ‚¤•‘›=ñ”»Ö¸S¹á)®Ó¯S£©3w}éæÌ³:$­)íg3²%nH¿ÔŽ* wÒ¤ÄcÜÒÀÉ |‚gbÇ4VÞ4${òX}Ù ¨ÃZ…Å«©ªå’[qÚ׋Nl_é„È”¼ìJLÚ¾Ò@HF@Ñ+ޤŎ‰õÀ@<òŽ0î<äö]ço‘EYdÑyP5ƒAq©¨-0á`F% › ÉvåG2‚öÿþÍß=E ì~t8µÝ¡€Í¿+3ÛVä³s>ñÁmª†:ídÖ°‡ƒÇ½®h4Ra³gœ…½Î<E †7Wødà:(×T,ñ8?ÖÄÇBž¹ .VýiR œØöÐrr\–Iü“^‰º–/¦ßðwHR…-'ŽÐõ¡JõeÊt(QiϷЉgÏ \’ém„úáuRV•H 0%€¢Ñ¸-âuË`Ñôù•v¯j¹R‰”¤/Çëí[¯^=^ãWü²ãHo_q "cqÀÇ–05 åÑ#t‰ÆŽBN³w6=}×ù[d‘EYTUªpP ç-T6°{qÇT¿&"Œ¨0Çæšð«yO7Ú+ÜÊå × ŸðÚŽ6kQÿñÒâœ#Þº2j‹”¸C™yЧÿ_ê›hPDÀÒ×dÓ³D.‰ê.Ɖäà×|çaŤùSdÅêËŽn€#X§xé}îå2Cm‹ÛPÒöEY„§e Ìq¦}qÍV£ƒ ÞåŽ|ªŸÈ*+Ó¤§ÎËùFÏó»Ëß"‹,²È¢ó£ê• #»+¢ìÀÀ°Ýðap™õßWYËß&,³¾ÂvG°´U#OÛ‹óþçÊ:§zl¸Äp!ÉVGOŸªW+§èÄÉ,o©³æ 3\™ž'¥EE?þ8TTû¢E‹ÔÙ¶Çùý~e©ðè€}~Û¡¸épR5I¸¹`Á‚Ï?ÿ|Ú´i€¢DÅ„‰›`@À_aaáÚµk‡ ÆMÙRF#–4„2›33b#úPCãr{¢^»­[·^|ñÅU­©î‰ÂX$»vízÿý÷»wïž4}œ)-òÒK/uèÐ!"\±bÅÕW_ÕŽÙM³W2=«ŒÉÎHKø]¶lÙ¾}ûpÔ¨QÀ:¨áiUËe êÐmÈ!rIbû>úè£x ¡á‘þ  Ì‘œØ¾tÜNÜ@ˆ©ÛEÂ:xÅMv¶ªöçï:‹,²È"‹Îª„j±EGÄ|a±©°SUD•צŠÕø+ÿÑÄqY8ˆDýUQ«†£ýOj_Ð\-Z²­"ïÄ×~©.0€cØ)>q:¯f­‡ ÆÖ®wÁ Q}í.UQìÏÍÍxê©§ ˆ¹sçîØ±ú5ÍʯhzQrçg3£²7nܤI“!éÜH…ôˆÒô |©x%ƒÛ1cÆÿõéÓ¿42éö'¶qzÌZÖÙ°aCß¾}%’Ÿl‘;vìøñãÏï€TÒ;vìØŸþô§Í›7Cæg9:t(ê™$M6pàÀ_üâ7ÞxcݺuYeª*“ þBgóÉ“'ã&À1d‚Ì!¢‘#Gâ>yWç].«Æí‰©Úxüøqýã$qK@\û’sôOe~´È–G½£²÷ê_‰ðôÌE+»}^ðVä¾±½ª‰º‚‘@¦-K…íWnÙ©"G–‘9”&±Ïœ…îÔ£~@ãêÞš*¦ÂÅy“qõÇ®šÉN;Šéé2BÏY ØËd7¡õ¡D™‰lãz¥Xò¤‘8Š„¸¼€gý±5ê'³éÈ";ÏtŒÂ‚÷Ì –4à§nàWÀŠäd^Gä " }¬Î p#itèTÔ´iSÔQ­bV1FããN5¶ˆ8Xˆ«kÁƒŒ%Hž27]&ї킹N‡kH)Ç„ÉTå¦ëÕU ËL)é"ÖÆ;‹,²È"‹ÎRÁAÚˆO¶nÝÚ¼yó/¾ø¢qãÆŒg}„@œ@½ -Ü®]»={ö@µnÝ¿ï¾û.ôÝo¼ñ}ÁÁˆ²…¡#‡Ý„ƒ~ã‰m,rͼá“§[¸Ÿ£¬ÌSö@ï‹ïU¯¿ô7wVÞÑÁÏÿX5 †íþ ÞfŽ.Óü‚6½û?¨2T ¤Ü#6!‹«¡Ú<ÍBØ[°`Áþýû¶&L˜°cÇŽ /¼pdüøñÖ´iÓyä€kÈ‘æ+12AÖ„ 9 Ù˜1c¹;….Y²dàÀÄ2AðL¾~zõêEãЬY³„ñ‚!ܬY³!C†ˆ 'xÀ#RÆŸàÜNœ8‘uyâ‰'€ G5|øp ËÇ/]ºT‡†¸LF>¥3½‘#G¢áQ”EøˆQŠˆe×w¢¾ƒ š3g3¡é‘;É}ôQ€]ä•‹lq???¿{÷î(U8vì°×”)Spá]HÝqôèÑv‚ky1sæÌ#GŽ vÊÜ©&–N䌶”DO!ä¦ÌµZ}dgpÿ©§ž¢OñE]ô·¿ý­Aƒ„ª \°D¢ÞTå¦ìÕ´È"‹,²èû¢TpghQ_oÛ¶­^½zÐe<ï7CB Ó5½B™þøÇ?†*üôÓO¡÷7oÞü½„¡Ž*GÔ„ƒ6åwëÄ^Ua3|ŽÆ’±-ªŠ½³®ÿ §¨…Û©pT”Õ YÒfÞ[KO„.À@!€,R"”…›xð× DÂÁ¤å¦ëÕ´È"‹,²èû¢TpN T[{öì¡&¢b"¡á¿Ü•}øða(Óš&AýùÏFÊ÷ßÿ{‚ƒÎ¨éJl8è·©ˆŠâ›²‡U‘ ‹›¹¡rÀÁ¼ÐÐY?Z0hW°Â]\šålX4zcs•(µp+»ázl«]ð)_@eÛ•Í^ZæÏÎ2V]¸¼Ëµ?9dvåÊ•ÓÀiP8q"@ jÎSÅèã9jÔ¨‚‚¼~ôèц çÑ’„ûåc=¦L]NàH›# C¬4ÅüG'` HµI“&^Æâ:/[EŒOÄ"xYÑ»…ëÈ Y‡GŒ‰ƒ›à¤nݺ@3² š1c€x¸apceÚ·ð:²<-,,”&x Ã3‚ãà ¥^]t„ÃUo¤™5k2úÔ¹eÔy Š‚Û´i3`Àúô€a@RYn¦._d„E~¬€+ÙEǧÍQ÷oÐ;¤ÙÖ p˜Ôï•»%Ä 0 1=òKÒrSöj Zd‘EYô}Q*8UhAmôÝMJƦÁ‰hþn9tèÐ…^°ôÇ?þªówÞù~Î,V†ÿˆaŒøÆ™Å*häBë 3¯ÿ¨FQSºJNy‹F­¼jv—/<¶üÓÅY¡ÚÇy»‰Ê §‹[edÙóÊ|å*äWFX èx€ c¤1î1ÏŸ„Ž;–ŸŸÏUWÜW±msx "£E±â>7ÎsK™2õ:~‘l×®]t;€prTBœ?â?Ú þ€WhT1ø%»â¸DÜ_èLCäÇ4ÜËÏœé5BI? ðL‹1î³±ð xÜ3'aD ‰ñظ|ŠŠ:£?APmÛ¶ýôÓOÑ]QÈ–kße(T„q³içÃM`_@I`JÜòÉ'™†(ì£`†^8$0Ï>ÊOA™õPÁ'žx¿õêÕƒäÁ 0%8óÈ¥Œ?ž9ãY¡Êx±~ýú½{÷f°ëó;‰Çågõêî z¹iÜXpÐ"‹,²È¢ïÎ ¡V ÑhlBbºQ&ÂAš…4\³f žnÙ²ºlÓ¦Mß9T&"4ޤ°Gý<¤Î8¶Î 41VU‘šqç& úœ'»÷Yû›Ç®{³nn» OÓîÂQ¯5Ru#aWiPùÜ!w¦+ÏÓå¯ðWø*T^ͺ4P‰åI÷,ÆÍGyu5kÖ C´ÇFÉYöù)’2À¯J¶®qÜÓ¸qc”ؼys´%·H2 ³Ð3’³À>â3ZŒÅã˜×zAû÷ïºeÑH6mÚ´–-[rÛ^3f SŠlÐ|(ÈFdˆŒê£5Šñ¥²P‘À)ÞÔ­ž²’+ÅÍ›7öm•A‚T{ì1¤™4iA!ÞE3!7”.%êõåŸâ—Ã*$-7e—¶à EYd‘Eߥ_,¦¦°–¿I.ê‹Å´”AÁ}øá‡;vdÔ°?þ°ð{ƒƒ! ‹Å¯ ÍåcÂA»§]ÿenQ3—#r.Íüzð3X_ðù¡=‘šµrĶÄ[U-ͨˆ¨HÔ缨Y»7’׸¦rEüA_†ËcæbèZÈ‚GÑK— díÚµ_}õÕ„ äp6ˆ‡~Xb‘ =dÚчVVêï#Fàæ“O> X–““3}úôDz„Ç8ÆD`¸˜2e  'Ð JÇÍúõëùä1sŠKêˆôü3Î);ñÌYÑf×EC3!JGq­ZµÚ¹s'¿“‘UšrS@ Zd‘EYôýP*8¨L0@¸wïÞæÍ›ïÞ½›ޤ®$Ф Š TCo„Í›7C~f*Ar‹„”Íé³»‚fäiäâŒTL¢JÔ´·ä5ÏP®ý¤=oÿUWÿW‹úî…ó?ñÔhvÒU8꟨l´•º¼¿}ܘñõë44¼/qeKz£M;ôúèÑ£óhþS1«ÕðáÃsssq„jÓ¦MAAAˆcÆŒ:œ8q"Þ…Äøž0iäÈ‘„eÈø2AþEEEHéóùèœ0¾råJ ¼A#"`Mt@B€GC† ™1cdØ·oßW^y¥gÏž¸Éými¯0N¡H›nÅôá@Ñ`¸W¯^šŒˆf#‡hQ”ˆ›(7nž80??¨n¢äåå 4ˆøé.\XXXˆºs+!0’µàæØ±cQßÚµkä!¼…‚¢1’=Ê 6DY¸ÐY·n]H°€’"B¥/^  ‰ž'~9`µ{ôÑG¹k… ¶ÃÓ¹sç=#A¬,‡š(SòÄÝ …VUݶÊÄüB&óæÍC)H >kÕª…ëiÓ¦é§Ò¥*7UŸ¶à EYd‘Eߥ‚ƒÐVP(ô‹Ø¹sg«V­6mÚÄ=Zqfp;T[ï¾û.t1’b" ü ¨Äåf "îDÅÔ P:ür«Û€Ð¯Ð5o!ƺŽä>Að˜ðþÛßþ¶qãÆ*U‰câ4¹µqæÌ™x¥N:s`o!+ \ˆ_”Ø©S'`P`A Fd5lØ0€5¼BÇü (Üvï½÷ÒôÅ@V!·ŠfD\ªT©25îÆµù‘9‹/È×pdDBŽÒ»{Ô<îWo|´©Ì}pÄìΪ®y7¢ᨊ 5ªn½ýûxÁrì´ ˆ ;¾º²‰èZŽÃM.†MÄÈî±ÄKcOBÛ¨Øî=eºymÈ+ÌD¼zy‰Ä|Ñ9Œš¡p€™ãÎÆ‹@3-[¶d€eVM,j„&rÊјD4”ºæÒ„F ²D„Þ†<)Vœ.)dF*¥{Ìp£ š$ë:4jÔ($à"r"=þøã`ƒÁÿT‚kι}–eÕ˜ð‹öˤòÖ?r ‚ɼuëÖÛ·oOõ óôݓ֩Yd‘E;U8 * AÍ€3&ŒDCYö,U¡ž¼c}vEÓŒò ²µO¶{®œÐÏnlóú_×ÙòÊÆ.ê¡j™û=ªÜo¸ÌT³gÏ1|” Xçä‰ìÌ,*㸣É` ØŽ‹?D…é¨NéUʨ(Ê ò‡ÌðȺœ€†KÆâœ«—®bAU’."wûéEãæÔ©SyäC$êO²Å[Ä:,”Vh¥cAHYVVFäljÆôÍpÄ"qYðð !&JÑÏÌEJü‰Ä<ÙFjÄX6sçÎ>|xúú9ábáÂ…={öÔÁ®NÄDJúù2+ÝÝäÜ -Nƒ+™jqò¯j¹L u@ɆKJÍ‚5‰•ã\,²È"‹,²( U78h˜xƒ„ƒÊ¡BŽˆÓ€ƒ'ÔÔÁkBGs£§s3l9NgH9ƒÅþ£ÙõÝÿ>ýunc÷ãË2ÜOìÆzqQñ)o–Çát**ÊË­m7³#–ncÃ5!”2•±l;ãF1zFÛ5½Xà Î•ébÌcëFŒA¸ ‡³¡P4£½È"#_gVz¶Ê4J!±°'>úQrI½t´*§ÀI‡à^qÑUgÆjAbrËUQF{Á}S ˜Ä?Z_-%â´igÊ1‚## lJ¬/í‹ ¸Mã\ú³¡å`e” ‚ê| ib¤ "{ å_¥rÏý+,,lÔ¨Q*f¤Ýqw!s vm‘EYd‘EªšÀAƒƒÊ Q›jd‹ìQ§ ØU™úà¥íöò\U^Ó£2Ü.RþÌ®åGÊUQF-ÕþŽ‹üÊáUÎ,ýEUÈç÷y2<ÆY'AÃŽÅU?ɈNˆ±‘$‘§TkÁ‰xùБ›ê@‡q +ˆ=Œaóh6‹3,¥‚A+[Å" »´ÒÑ-œ ¯È”F,V–‹ãÊD«ô!¬ÁM°zòäIÜgä”86âöÆÅ­n o´ÿñO”ÂGr^°Š"œhHc†ì6quO„cªÆÙnÏ 1Î"›žZäå²"‚ÂÓÃV&˜ÎcµÏÃêi‘EYdÑÿBª.pPÅà diªé ¯ÔÔˆŠ%Ns!™ÆCF£AQ¥rÌGvóO› FBN‡p0fef•—û23³ue¯+f  ÑÐFH›èrB(¥ÙÀPY¤D&999‚™ð'`ÝPÀ³¼¢¥K·È_Öy 8A‰Ì–Ñži—¢_­Š…¶&ϲ<-Ëĉ8’ùÄ)”÷õÕ^Z.å|9fÈ`4tÑåëH,  ©¼È$­€²GSö&Ö£ý’§¨³paVâÕË‚ÎÃ:¨¿·3©üϯ\ö'^¤Zÿen}Á:)6µÈ"‹,²È¢¤Tà Ð\Ô„ƒÌ5jÂ;[Ȉ4¤qfÀ‰m±Õ_ŸRY*âSöl (—×H »Tdeym*RVZœ• ®Œ`0LôÃÅAZé…×”žH\%dXc"©5Ã92r#ÁAƒÕ f¢‹‘DQYrÓ]4’ˆũ7nøÃŸ\–åS&*âÖ¾i¥k0êÂx:¸™••E£—D®AthH8‡Tt? ö'®Œ#g”NŒ;ȇªšLZ_ñ#aˆŸs±‡ÉŠjܽó z 3D§À»DùWµ\Š%©õ¬¤Xd‘EYdѹPµƒ&[„ƒ‘Øm ‡`¹rÛ•-ô]žî±L¿i F•Ã8Í×€Á°²9“M2\š ƒ§M…C6èx›ÝD}Qªy‚Ý?T·ü1#Oé +±nã[„q¨ñÀ’Ò¼zñ" …x%ÇÊ×™ïË&6MFˆ9oáä;™™™²7‘ VÈÞüS¢';üæÍ›7zôh=¸ýÊÂ%«0‰Ç– [JŒeI¡Â¶,­ê^Éõe‰"“¸è€II2dÒpçÚ×b„RðsÙ‡“Ê¿J岉s¤'Í—”ÄŽ(8[ÃÁ'Yd‘EYDª6pÐÄ€Qç7p¾$¶ˆ²_3MTÙñ·¹&Ìí…¸´GãŽeÅÕP_ÈëqýI“Ÿ|ôÑqPÈÊ „h„;š9~üøÔ©S•¶L¬bk”º.R¢4%w¸3{òèj ð‚]˜z8\ÈépH `1}út<êÛ·¯¬Wêë°Ü/H9£ ý½÷Þ›ŸŸ¯{­ÆmMã±ÅÌDG‡LÀeb@‘l…sbTœ§’UƦhKá=z´^½zò¢Ž]xίä6tèÐ3f@D<‘FD¯¾*ŠGóçÏ0`ªr¯$7ùqÛ%³¬)) y+mó¢,= 4û±R(‹Éüq¼…ê ‡<ùä“Ò €ÇŽ›ªÜ¤DQKS¢E&Mš„üS¥§g±0»à*½WEYd‘E U8¨*¢ãJ±¬p05U‡U„hbpèÇ5ÍkãÂlÚ¸!’Mxb²÷èXyyFfv…¯õ‡VÞ¿?°ïq ™ ¾Ç/*Œ­ÏÝ€e€ t Ã€ãóÑÕ”¡-Ï¢@ ³gÏ.(( î‘eßÇÕM˜0 •’ã×yiŽÒ×%Á92™8q"£=è‹­`ü3ð5²¢µ’g¯¡âº%ŒËÊÈáé§ŸoxD×W±wŽ?~ĈÈŸ üIÇ"–b]IQ™à‰‹æ*ÈÒëÞ½û5×\K»,âÁÊØà:5Ò<¸M›6ÀÇôË&Û4FâwÙ²e›6mZ±bøGM‰tPÆíÀc?¦s7ôñí¨Û !X”É ÓlPp;nÜ8ÈoðàÁFH?}út$&{“&MBžD9<øŽ]ËVK"BeF4ܽ{7×@‘õ‚zè!YTü¬X±¢[·n-¤‡×iãFüú믹<­;µð ¼-Z0b¢`2Üœ?~aa!WrAé!| HJlÖ¥@Œ€øÃ.ÆÁ5[ìa$Fõ¹(ŸXnÊîl¾¨;ʤ‡ƒ|ªGÿá!‡"´È"‹,²è\¨ZÀAÙ/h7‚ÉœWÿ×m²ˆ«š²™Omt@‰ÄR˜¯Úe¥å99¹€m@xÆïÇeÚ–Œ¡"@3Ôñ\„Ž_¿~=€ 0×[´ Ù¹sç2Wèuèæ|ÒÁűcÇ€>L»¦ÕmøðáÀRÀya\i…d¸ú)KÏDu„>Hà5f̤˜kÒ¤ ײù.¹àKä'ÇM -DÏ`Y†žáj#Z½uëÖ`H wÀ˜î5gµ’JM@|àÀæL£gx àGeÂeÀG¼…^"¾8äY:‰€Z\€€0J‚Úºu+°¦kðÈ‘#ùùùtˆ‘S˜‰2•L[= b¡rìa+£sKž¬ ÝfžD¢‡³áª=äZ0 eB2Æ*$-7iÖá „‰L!z¥H' j#NK`•]Ñ"‹,²È"‹ÎJÕÒ:hÂÁˆá/Ž˜«Àve·™–@[DÛS¨bKıšÆW> øCÙY5Á`EEÈãu"/§Éƒu1²Òœ…ÁüÂ… ¸Å°qãÆ}úôáv.ú|6ÉÆAþ‰×k{…(M"îÀCuêÔæàáâ“Á¬€ ‰´TÌNgFDE^x!À"òáz(3çɼPš‰‹™Ó4Å•G60½=Ð@Ü.©ïGäqÂ]aÄßYwš¤kÙ²%Šà)Ïø4hPx%¬‘5PAN¸h׮݇~ÈÍšA9A'­†Üe(AU,ô#«)Ù² Æg™3g;.^¿~}°G#å]wݨ÷üóÏ£Êx×(‘ð À´S§N¨$üh£AŽÉ” ÜñK9$–›*: Ž)pãmsý:)ѵEÅP>É =h‘EYdÑ9Ruƒ±µáŒÁÃ4pP[YŽ!Bü?¤ìÎÒÒ²zuó‹K*œNšUYiyvv¦,ÛÑV§»PàæÈ‘#ÿ/{W§Eñ÷gëé¸ç’.Á.DÄVED$>º»»¤;%Dõo#b¡Ò ÇõÓ¹õþfçnÙ;Bä{S;;ó_ ‘cÇŽUªT šj1eÊ•©.ŸHq"‚ô.AƒÂLÓ?a–ÄþhÍñãljR+ØSS#t<%" ’øÛV­ZõèÑ£P*sD5y„?‰") ƒH’ÿ#¾)ÄéÁëõ’ 6$F dDê¤8T¼ˆÿ/ÙªŽìVLŠG^¥ÖxN ÅGbÄ@™{öìIô§/œ‡Â4ˆ¸¡¨$‰äB"Ršý‘MV®\9--mÚ´iP#øE^N¤†j½ <$Ž¡Ý$¤¦HÀð©<÷À/Ðn¨þŒ3àjŸ>}bŽ©:è/"†Û€žB–ß¿CòB _¿R¾—…È ‹ V kÀݘæx™'BoV+íVüé¡MÕ(åj"ºg±:tè¸Fü+è *d*¨ªtP9-_þÎB ò£W“=HT6“›ëNHÀáÕ°ÃÀˆÈ‡L·„Ä;)W®\·nÝTú  ƒ„;! _HÈ®rrrÊ–- „ƒ81ÀSÀo€!Š0uêÔ~ýúClEuS@Š®(d§næK,Õ½q !I-#$‰ E”ŽUÿ;zôh௧NúB$R>ÔN¥Y„€ªvu„à’ÜÕÖ€KÄš€lÄ gF)@ŠÚtÞ¼yíÚµ#³$`Ñ)©š*%…æ"~9¤^p?Ù©PXâöAb÷@½HÜ(0EífÊ$k¨ð6Õûê¾½W©/PaHG­*pL†’¬ÝðZó•1†‘÷û9“K¦Œ´=ÁÍ%tÐ (ÓÞeG´`?yïQ$´žlåGšN·Ô¡C‡ׂ üû@ òúôéŘ1¨ÀÞn†;áqà¸P tP<"0`$8 MAš ² Öuje’PóêÕ«§iT° ‘ÿ©¾´p¿jk/Žá‘~øš—t*UtJÜeªT©rðàAu?h•,þ¥~BÚS»ë Ð÷Y³f‘„Ð,Àï¡FÄJx=ùÊ ä!‹¢í…gŒq> *Á’Ì2Ðf$0ˆ1Ä’$ËI¢@*[Äçý/ÕK‡:tü7¡ÓÁBÐn%>žì€§:Õª BR$¢ qSÍÌÌê©ø!Yx©ªžTËÒÒÒ*V¬Ø»wo’¬6ŸvO<ÕþŒì¹B¨ÙÈDu°%{o@}¡T$2‹ª­VËL®jß&TlïAf¤ljØmâXM¼jÔ2wíÚµråÊðKbˆé$a¨@XÕ`Új5g̘ý•ÄkÔ†¹&MW;6wî\µqŠÙþ«P##Müp"„”¡¡€¹B3Λ7ïÚó••xHІ>ˆwÒ¡ähÐ[µÆ}{ûÑe‹:h’9$Ñ("!‹5DÑ“μŒ,µËýi :tèСC ‚Je€uA1fÏž ¤êLìðŠì$‹ Hz‘H%À jpÙPŽpíµZêFämÀlV­ZQ`³Ù Ñ8íHè4ÑÂU¸Ÿð<Ûˆéñn?¡„Ï‘-OˆiUxÓDç;dÈY‰½B)»™Aúp£%„†Ð/`9Pw’¡_D>§5€#<˜ð9ÒŒpËå‚_â¼ròäI`“šDF½‚44š@Mî4—-[¤œ¼b×½{w8nÖ¬™êÉ«6ì¸qãRSS“““ Öî wƒlÛ¶-’Tçºm‹x·@KB‡!»ª04;éĨqêԩמ/|aüÆD‹ÌäÇMç¥9‹fwLëÌ‘žC¾AJ!Ì`Ç’!}úÌžö¶*q$žIÚ‰:tèÐqèt°(T‘0|Ž06˜×aŠ%ŒMõ)&².íft—¤R+•ªN„WÁýD8¤úê’€À„®©qøTR¥Æ|†ó„u+"29•ͨÚR8I’Õ”&†w„ÿRNò¸½OzMŒÛˆ R›9Ö*‰#³–á] •‰’ÛHãÝ爆)We½E6µûSw×[¢‰‚›Ü¬2oâÀñ—ÚYí`¤$¦£ÙbÁ®$Ùèíf{ìžryYQÖâŒy#c6°§q”Îõ;ÎüðIä@²IT”Fœfëm:tèСã¯A§ƒE¡r"ï ­Sa*ªÊlRB)ÛÓA“‘ò_¸pÁårÁdOø¡sæÌéÔ©“ØÒT¥b„†ªÜB•&jíÌàÙ€„¨ž‰”Q Y¢Š ‚¨)«KDñM$X„¾ô‰ËðUÚ_µ~#âRR U#IìäH1T!¢êlAt—ªÈð*Yÿv&*µ…òÀ $‹¿ÔÎÐÙHTmU޹¦ÑÈÇ!Œ¦?õ)“žèp”ˆ*^Š…„øp¼Af´×w¶÷®Ú@±2+ xþ¼sëСC‡—ƒN AeD¢³páÂöíÛ«»ŠÁôOT@ÈOt©H ’¬)’‰ŸLXQÍ/±!#Ti¼€¯@»k‡ß"B5­=œª…ãéÓ§÷îÝ[ ȇ ÂõAÊÄåYM²X´hQ÷îÝÍ*ûæJMD4¤T¿f¤Ð,âOMòR=[É pJ¹ýéU^Á­ÒÎK—.­_¿> ‰4,ö¯¶3¤¹dÉ’Ž;ªE¼# Ø šôÐÇ)‘J _»-+ŒGvlù$%RÊ$YBt0Ï™Ùs×3ÈN6­S~u+A:tèÐq½Ðé`!b½LÒxûí·QHIÕ÷E¤ÖP iŒá*üá¡eDdD¡OŸ>d—[m$Hg„ ƒV‹¡š¾iÝ„áq²»1䢚â©lŒÜüõ×_%ñíˆ_‹ê¼¬ ‰‡ áF HJJêÛ·/œ!ÌIÕÿ^©‰´jPµ0¨Àþ®Â±V7 ©Aš*ÇÒ>~)n•v†Ä?>sæL²Å3ÙO…*Ø•ø¯¶s=î¾ûnXxŠÄ9¹ÑÌÿ+GßùJËÄ\%ÔC³{mOÈK2Šö ÍsfõÜ]ÙÈ(ÿt:¨C‡:®:, âHK‚ö‘è}D£–Š0 í¬¯RÕÉ´H,m\=ÕÌÒT7†Û Aíª  êŸ«õœ@æD ÑB¼ SHît¹\Ú`+d‹aU9Â=À<òòò qò" A¸ªuC¹ªª—T_‰‘”eÍÆÊjv¨pX•6])ý[¢Nç±cÇÊ–-Kò"¾>PxÒm®½‰Ù®ªV‰8Ö -yâsNй„ÉoÎnµúŽÙ©›­¼ÃϹά¾»_ÀÒAY êtP‡:tü? ÓÁB LhÇâÅ‹úé§åË—«žY³fA »téB( Ô8Aûöíá$4âš5k ½:tè°bÅ â9ѪU+" "!ZæÏŸThAß¾}Õ]I  @StïÞ}Ê”)IIIÐPÀo Õ‘¨†QYwêÔéí·ß†û Š£.™1cÆ–-[† x$YC9›4i9®^½:==riÛ¶­ÊÛ  +V2diKuZ¨NP$bÉ]$;;.A.999dSæéÓ§'&&z½^8†ì<p ¨Wjjj‘7—â–hç#GŽ@FÄëZ:L|||³fÍHŽ©Ik´iÓæþûï‡ö!¾)F“º@/}~¿Å]îŒï¬”ôÑ££šm(ã«t0@Çrâ2~ü–Ê85Þ¿˜ÒmuèСCÇuB§ƒ…@dEð s9Ìñ$¦ R&ï~ýúS!’6hµÁƒñ"Ñ›áLŸ>}€½÷Þ{;wªQ½zõ®]»ªÞ@/àΕ+W’Z«ášáAhÓ… 6oÞ<%%®ÿ˜8q¢8pÕªUÐnD"ëñÇCBd«ZWHžªZµjFF)3ܯ ¸àºuëà¶Ö­[C:vì܈Η™xrÄgOúMÈ„²X$S¶¾%:tè¸NètðòP%m$Ö R(T¥J•222 ¨ÄÕ€„ÄÓ>ª’9-§;^#INNîR$|1\Âþ¤Êqê¾p$ÂTÚµk'„D†òÔ¯_¿eË–²ÄÔäH,öœN'ÉèŻᄏgÏž”””Š+]#ò9¸“Þˆß É‘œ„·põ¸€€!C†@:ð, ã YÍ*Q¢ÐD¸h4Ù¥ƒì¹%‡LǧFu¹Râ·J;Câ$6aVV”¤W¯^Õ«Wë­·-Z”žž5…D´Ì/ÛÎHá”Ĉ” WñQ¶„ ýÞ–u[ˆCn6{ÀÎj³;þd?oìƒ/;áäÐÏžš‹r ˜:t:¨C‡:®:,bñŒŠÔ\•¢‘óÀ-à qà]½zuZZÚÙ³g‰j•¨C ‚øÕÐyyyðq‰B@d8á"@AˆT ÎW;pàÙûò]µjU«V­ÈælsæÌéÖ­›v7B_¢“UKÂã@DÔÛ=5jcúôép t§V­ZmÚ´Qc; á7Zîr¥ö¤ HÐ8ê伪“U V‘ÕPh: O@"á¶"»BiÿâßÎP6pfОZ1ÐÁ &ÝvP‡:t\7t:XPC˜¡{öìyï½÷¶oßžˆpˆR¯AƒÀ¨¡Ùºuë¶mÛæÎÛ¥K¸aÉ’%©©©ãÇ4hü9þüÞ½{Oœ8±Gð'P ¢T:tèØ±cÉÆÁ¸ÄŽŸ{î9à$ÐñçŸNü'Hp“yóæÁ#@M€CøýþÇÃø“ìäKŠ Ø©S§§žzêµ×^ž…„fܽ{7?(dóæÍ¡"¤›7o~þùçUWܵk×~óÍ7‹/Öù»öæ"´†Èÿ´*`b§nú|©Ý*í|ûí·÷íÛlOB -_·nÝ;wnÚ´ ÐD¢P†ß«´3´Ôë—_~™9s&6%d¼IÍô—8_eÖe½;ß}Kéq;+ã«`­~6ë:;à“‡e‡^†·bݳX‡:t\'t:XêOd9ÚmÙà ~ýúåË—‡¦Y°`AÛ¶m‡ ÓùŒ3~ýõW¨#ÀmÀN`Ö/S¦ ¸ ÷@ÃAÊáp8!!!77×l6¯X±‚Ô”¤ LîLOO/Y²äªU«ˆèËëõN:õСCÄÊD`b4Q¦I Ðúð,äYXwp¾Y³fp H äY_q:ðàÊ•+Q_srrà¼fYþ³MäH›‡ 5ô ô$8 åÔî GnZF,ê®®,V[£˜·3ÐAB¸Ui"‘ÅæE"Ò>"ìT7J¹´Õ}ST•7î~®xA@¬½SÿdÖ±RU+e =Þ-;¥ýÏ îd ƒ!:àŽ»Ðo÷C8î †Z‡:tü¿¡ÓÁ¢PùM«V­}ôÑ:«/ ÉÉÉp ªtÇårA¹ÝnbÁ¦š²©†bðKN¥3p/bKGX´#Ñu€{ˆ=Ÿ*HSNáøÜ¹s„ä©>¼À]€Uh¥nªO0§5jtîÜ+¹©%„½$ñœÝ·o°"µúW x)Y$˜¡v@¤HÄ>¤hWá2"{h¥ƒê­rK´sÇŽï¾ûnhg²ï0öÿ`˜Í 6nÜHÑn[·páÂ˶3ñwY´hÑ7ß|C8:~Ša…bsÑÂF¿D™ê5¹=jAw·F“;ïsºŒ’9B…¼Ž¬;kabƒšÕé :tè¸~èt°È|”"33³|ùòo½õLáZ†tèСjÕª‘cu¾×*þ´A^ŸˆùóRÍ)!($ ]Tñ~U9 !%Hñ„ ìŠøÛª<†ò…ÛàñiÓ¦¥¦¦–*UŠ\"Ô„Tê¼ X ¹¦¥¥-^¼8##JHœf®.ºCN²ÄG¤Èþ%j”íæ"Hƒ†*ÀŸ¾ˆbÞÎÀSÇŽ =rÙ°a©`ûöí׬YÝzñ5!1eàx#—mgò^H7ƒÏ,%%ë—#’Á@S>4»þ—ÉR¥gê•6$!Þ…/üÂì¶™$cLŽmÙƒ>¨w‘êÒA:tèÐñÿ€N U¨âãã¡>¤H*U‚3ðKš.©Ô„ò§ªt.²ùhð-eQwKƒK.—Kë g€X@vE8¹Ø ãBÄZÄް5Þ4,°R ø“8íR«›¼©¡þ®²g1©¸ú vË`TÀrTRHn+Â/ âºqK´³J6lX¹rå#GŽ€Û7nDšð×D8z¥v†Wç¡ P$RHlªÈ°¢„¸0ùÜZ[8I dC¢ÑMçBÉ“¥d£d€jš=#¶6Gæ.¨Û êСC‡Žÿt:¨CGñ|a@ŠóND³>÷äñEY¨¨•—Ìù8>3°réjI·Õ.é¬BÉ’6¨ uèСCÇuC§ƒ:t/ÀU¢2nåˆÎ—ÿI¢9år!BN|S„Š"—)ŽÑ%„:tèСãz¡ÓA:Š$åò^3mqðFÄ+§e :Já‚’òK+g8>‚ ÓBŽÑãêСC‡Žë…Nuè(^:F"|‰Ãjc^!&$P(–¬x×f…¢ˆÀ < ‡ŒI§ƒ:tèСãÿêÐQ¼t0€x Év™¢E oA'Éaàˆ²l5™þ1¢„é BJ 1HF´ 1º²X‡:t\7t:¨CGñ‚ X 4cR( ‘F+ÒŒ€è.hã%ZækB4e±êبè“uèСC‡ŽëƒNuè(^ ®$*æe„˜Afg’ &Q"X$d ñ ’XD£‡¢2²Ð:Ô¡C‡×bJ• $€þ¥4ÇäW.tæ_eC¾ÜÉ]á$Ó<ëâLED3ÈH¤ƒ²âZL±<¦‰1VÆ‘D#Ù§+ÂMÜßÝBE^ÂMînWËî/•L½ùW@VG"mVÚ¢þ+;°¬ÔëZ~uèÐQìQé Í0’`Æ£ } ” ŽeLሾ¥ÇÒÔ¥§.{†ºôî¿»4²f¿4#ªPq®£,Å«¾Å šzKšAp‰"7ÉÊyúº&ÜK[»ð;• _¼¡q I½´µP­ )õŽ?…¶|7wE!+Þ>rÁöÑùmuÕ¾åûòµ¼-nù ëÐñïÇ-@i ¤ ä‚ÿ9:x)ùº tð²y]¯£,Å«¾ÿA\T)Ú¦ƒâ%ÒµB’¶âMIØpY)3‰I©(üÉ {ˇ ×é ÿ:G:XDYLiå‚2¨KUÆÿÞÑæJÃî ­°|Uº§á ÿÜöÔW‡Ú7pèɱˆtýU:xÙòÝ,]-‘¢‚Véà%âmêС£Ø¢˜ÒÁ‚³VüÿˆmÊM®£V¶qe¹ VŸø7û1üÞiñÆÍ|ò%ºit-tð¿ý_--¤)¾œh°Ðm·:tÛA:þE(®t°ÈòúJP‡›[}Ĺ²I‘:¨jqë{åü´rA™·úþÇpM‚³›è qÝõÕ¤ÅEúÉ•tÅ7ÙýéòVƒè_Hu*¨CÇ¿ Ř^‹ÑµzÏ­>ê\®²EÔvZܤéä’áü²\ýMtðŸ¯ïB˜n®íÝ¥RWº ž¾¤0W7¼IË•P VW{õ­ÞŸu]±ÿ>c:HP0\~»¬pàVÄ%Õ»Ô¨_ æÆ×ø²R:m‘Š”ç/§®¢xÔ÷?…+ÒÁË:ôÜ|Wž«Ó i¡K­/]´ÜpúõgF:Ô¡CGñFq¥ƒêùËñƒ›àíx³q ôHKÎn4=úÓá¾PÔÇë(L1«ï—WäÉ—;¾itðY†BåËŽrQîu3”³ráƒKsºdM{«wfêÐñïCñ¥ƒ>Ðn·Â˜ÎKÜæcF΀ 4 °4Ã)áeø˜Àq <Ǥ|ZB gàÉ.‹Á%(èßÐr7¤uQP\­)‡´)eh½ÑT8&ðËCA«Å F¢“Ñ"4;ËâGQp M l6Ûß’é?Xß1®Ôÿ#‘(ƒÑ¨Þ)KÜwñÉ›I±qîT±pJÈ ¤èè²áØÜù%*äO ú§$áÀSÐE6È‹¼‰án8¼×xžå¸P0h±|G&Ó+ÈMÔU””~EÑ2*èWŒÒ¯¢8o4\ìW’,1”¾¡¶ÅÅ”†Ãa³Ù,ˆ² "ÜJ×£ÃRÔLÃ|˜¥9†FFŠE#c`YZR(#I‡$Ç<ÏC‚Ú"Béáê­BUÀh e†ùÛb±@M)74Gòbü¿Ýf‡ƒp$l6™¥ª-‹ oPæïüþÖâÜüúþG öÿH ˆy È0‘Ãç¯òOw†¼qo@émP 4ËPØVD†ÎFþxµ%)Dµl º(,CA³Í&Q¸ƒJÊŠâÆJ—/õ#.Œ€ßo³ãïÈ®ÁlΧ¹·xÖ:‹’ï:_£Ù õ(ãŽÿé’êСãšPLé 3±pÐ`¶ÆÄ(Í%$yC»Å¤0ñÙMŠDQ–XÖ…àAÖpùɃä¢ò UXr vcp™©D9E¤ dþPçh_£År¦BÊ‘Òh… :%‰H’°€Ð`¢QÖhüKå)žõýWâÒþOc>%R,ÿGaþ¶Z¡‰™«¿Á-%¼´àD¾b ÿ‰E}—ý¨ ”ÅŒ*TÿágE¸ˆÅÌ ¸/y‚~‡Õ~“”Åšj/ážl2+ÕT6üW¸ã[V6U(!ŒÆp ¿x–Q,DcQ,&¼ÅkªCÇÅ’ÒŒ°œŽE#‹YÆ»¸ò0ܰ íf+™ø@ƒqVB8„¢8ÖN~DRÕ€_`3ÅjqEzL‹3(.•?—@e q7Cº@^ äŽE5@±Ž&z=‰çi(˜ ÀkG¢€8öÿh}ÿ}íÿ2ÙICÎ-„B¬Õ*„CXdn4\läÂ7Z † f‹r¬ˆœ•ü0UµY/s+ ƒ sAR\>† P9ÆÇ &c@lßäb8ÌX̤0…P@/vI#ŒñXÝ,‰˜rÑ@yÖÀñ¢À17Ü\X%~jß"Q–3bò e€dÄÝâtPÖtÅ^ó¢q Âhžß¯˜[[ªCÇÅ•º½H’›×aÝÿ>‡qó¥'ÿà«/#ÙÙ&»=œAÈÈêѹëÜeË‘ÅÖµYÓ¹[7 §I4b‚ @é‰KŠê÷ZÌé`¡ˆê€ s6EÙÿ#Ìg¡@ðÎZâÑ–"§åÆN'’ÍV[þà.££¿ÿžy!ã±gŸÍ¿æ]…·1¢ßà—ã¯ÒÁâUß)¿ï‹ý_ÂtðÈÞ}Ápèþ§ž”Êní/ðÈ„]zeªÄí† g!§pLEÊlþmÿ~ørïy¸Öb›M Ï(|s‘ƒÒR×Cßíu%Ä8øÇs_Vb(ÞÊ|Ì@\•od ŠÄÃ"}¾‘H h6Ûðú–fà¦Ìß~?›•ñP½gÿîo"`­è ¬ñ ÓÁ_÷í …B<ù$Ö@ß“ úU±wuèÐQÅŽš F¸€B|pÿïlßܱoŸ¼“gßÝø^ç‰ãM”‘ÙŠÎ_ˆùKW/ï1ÁäPÈ ¶.+ÐFQê9º¨®§"’òŸ”4€:#v|ÔÌ8wöí Õ‚ â¨`¡‘DAÑ`ý OÑ4+•ÒžÏxi¸+(ã ŠŸ/ÕPŠH¿°òÕß~÷Ý;ÞU”qÊT¦(øúµï0eé"ÄÑ‚’˜"n’”§¤‚Z#DÂLPš*ÃUJR¤PtA«´\ŒŸ>n|ØÌ:«Ôצԗ¥¡¾n¤R~â…ZOI\ÖrF©è WƒTH©m®Ân¯R…ϱ+ÒÚûÌÅf—µÍŸŸHSÓ‡3’ò<¥¹ ËZh¤‘¢^ÌJ.¨‹ò2OžLHH`qÿ§±ÌŒaómÿyq\ßÙçÒg.\ˆVüp8ŠÌFøˆ  Ux1ÍBÆž—“ôh¿RmF‹J¡ÂÂau<"ÑÞ=z21qê´éÈQ`P$²¥T¸©Õ,F6¦ßÀ’)%¾üòË•ïmùe·â³ |žÒÅV îWxn¡RM™V\“ ~É7}ñ›RÎçKß§òŠe¥ÜùÒAÖˆ•ª¢$ž¿°~åª/öí]¸c‹ÌКWVä-jߣ漶7jŸ•/éo—ÞsiúÚ~K¸©¬©=¨‚cJ±&í IÞÃljñ(Þ‰ïɸC*JyXFŽì; ïLú¬…óQœ"ÜD°Ð—Åã‹4Ä™€.Ü1Ô· OµeÖ>«\-¸±àû•èB7|nªì–Ö\Ô@º8¨%S:@~ÓJRþ7(îüráæ¥Õž­KCuÜz¸ItðôÙ¢t¡hB !E!Æ ‚‡qq@€PVΜŽº­]†Üž©=†ô]²q²rŠ¢eúF¶i9òƒõHˆ|ìù‰{ö ›óŒ8Ÿ÷бu«W]ÈÊ,_±BŽ'·K4[‰$Ì`8.ßõø™ôX¹ØX†«2þš ;bœ$S(†‰¬+] ùÂÈhB‘0²Û#ÉE4¯Œ30"’p[ÐH<ŒD ð­hLDAñ4à3“yƒ /£aÄ„{€ò¸=Èd^6}±°É`b‘Az\›_X¾u+SŒÌR1„r|î–±*ÊdEœ3 (·Dƒ še „°žÉ¯’”¯ Ì:w6¹lyÍP[”*E… *CŒÅÁF8ØâÍf+6®gíV2Db?ƒ—™¢÷Çù³·—.KóQn†^y…C¸¡ròPR2Ÿ™Ã•* -ƒÔ@y„#ðBc¿Åb²ªÌÊ2” Ù¬0å2ÍZøµIÅ6ŽŠÁkÂ^±`À`·AìC¾¤¾Ê[æ1[’P!†%).24òææ: ÊÑe"L' µ‚Å+f”¸o¸© QˆÄ"&è$²2eB†o€ž9 Ô’UÚ_â§Ë÷Ô G¢ k´™¤#,ùBXò `uм^ÞfæœÎ¬óÙÉ¥R ?B:\WÆ.>@3 #¯YmíêÔ]ºû#ü" &l…)K²ÑÀK¢Å÷°¶]ǯZLÊÔ^à &Q²Z wNJ\" Fq (Ùï¥\Îp®Û Ÿ'gà¡ÀKåKâ%ŽU¾&QÂícäp9€@/åJ…p˜72ŒÉ,#Ñ_ OÚ]<Ã× ý>FÐd‘—c”ÅCÔoVIg2ôF¤Q ÒþµfKÖ¯Gf þ ¡3B~˜öáÃÂÇì #Ö„ÍR™x– óa'gÂ-€>;‹K.«R6{(à±8âpO ”O8¢t @øˆâ# …4 /kÊ'CJs±¸—± å‚î‡Ö€ÊA÷†–õúÓZ¼1û“]"Ç1„ΈšOB^Ÿ×ép*Ë '¿ðuâˆç±­gÁ7+ó<ö ‡ÞÉBׂK:Ùp8½Æd6_”¸“õ[,·…~³ÍÎûœEé™—dQ°•%%î¨ųŠ] ²^óE‘ňÝ_X…P…b½ŸxvúG;‘L°z‡A@ŒYLP=+,ê3=cZu¾zŠƒòˆ¸ÅÑg¦ƒÝ¯7#ÇæLD‘(qïàëÆ£¥R EhxP)ÜΊxóLI."z”a ˆ5|ã‚X`)‰ t ûŸÃg€ëË(ïYéÒøs3(fåXP !ì¸_¼Q›Ýˆ?8Iø=« ×TPH! Åp#Íøa³Ó]†f<õýÈ`DŠÏ“ ÓK~¢ØÐš+F<„ÄH„±:‘jQÇ­†›DO*tð›Kè R‚ÌYÍx˜¥éôôtÈ2zòTBfnŸŽm&lY Ǧt<~ÚtO’5îîjp¿û׃®œÈÀ^Ý»ÍV¦TʤÖ )™bºÿä œØÿã{>k=bæu~/r9;¼öʰÃËÞ{ÊóäKG1!þÎ{²üæ1#«ôðCx®¥QžÛãJH•¡‹‚ a ¡0ò[#RôB¶œë·[íþ`Ð~çíÈaFBŒ H¹`”áF)(Ã/ŒŸWr‚˜ëÎNO‡aæüùóeË–‹¿½jÞ©Óqñ.:.ž4ßáo¾K±Åû<ÞrÔÒ#¬Ú“O‹ˆ:¾Ô`áö-xdd¥³¼n³Éä2X‘;œñóïV«ÕG ®{*Ë&sD »ƒI û~ŸÕns•/‹ìÖcûömO pw­G0íyŠ3æKA ¿úç÷úJ—È‚eï®e ‚"¡eÞ*s(*umÒ|îêw0ýe‘Íq ‡ƒ0¢…2r!÷D“=âó›îº%˜‚2v^ñžÏ4ºÃ‰•«eøÕ±FK¹‡T8=6F æåY]ñÇ~þÅÊ3Ξ¯P¦¬ëöªžS' .ÚÃg¿þ:.>!&R nCθ¨?ht9=oœË ¯ãû?¼¿bÅàùô¸j oÑ|ôŽ­2ðiÄ^4TŒ†M&=;â=¾Ó‡—NL4W¬têÇýqIÉh¸L…òXñÊq1ŸÏ`w`íó‡ }4Uï½—º‡à÷}û9ÝYíX;~, ³&cùòåY›Bƒÿ¹t*Â…Xʃ÷úòrÎxoN¶³tÊß~WÅœà¬\åÄ/û9† žºPíù:ÈŒ¢û¿ý¶¢Ù± cÚàáCòª§dF#·Tþî{2Y‘³ b™0øð3ßßp2ãgÏdVxúiÑbôYŒÁë1 ¼@ÖomN‡;(]ó~AŠ…$FT1eãño÷¢¼]¦}¹'kñ± —’•â}ëÜÑÙ¯¾MrÂw$:o+‡âíÞ×a·S²œwâ´'#.;vºL©ÒöR¥Bþ€å¶ øk‚¥uQø -äÉ %ÅãN••™™’_@ÐwæÈ93°œ,S¥î¾¯ :åm&îÔ7ß&ÛmøºitöàA_(LËtõc£&Xdò™Ÿ~0˜ p°ò£à0—8ŠÓ-ÝV‡Ž˜Â|`6›YšÉÈÈHp¹lNg4Z0|D™Œ¬œôÓ¦ªŠ2sæ³kÖz<Ãe|½s[k‰ƒÞhõTr¥Cüj¨^ÊÈQžo~½÷Î{s­ö×LJBôzýÕÖá7 š,vˆ@&®SË·,XŒxùí¾ƒŽýôËìù æ®XF™MñÉ)Uî¬þ`½ºð‘û¼>G¼KÄÏä㢀 Œ`\ò2îÀ¬ÑâS,2ÛíÍRÛqU+ÁŠga‹§*LÕe(6 _0 Ç¢qqN¼Ø•…Œßn\¿N„p8œXï…¶òÃxœ:~tÓú Jp&Ôy©~Ò}wfyr .»‘3š`ÁíÁxÕæ…—²K±‹ ‡Ê…©«?rì»~Ù·ÿб£ŒÃÒ²[GgÉä|1X®bÍÓ{ôÍÊÊê5b°@£í|…¥p$2dì˜X4 ³¾Ùî¼,Äá:±è“=’Õà“d+MqxjÏýðÃ6J‘ˆ''·ÚwÕkØ mÇ.ë¿üÊ€Ç7fÐÀƒ{>Ù²ùÝ¥»·ÉÉ2PÆW¿Zý¾‡ð´jf±$ õ¥ÛÕ}qéÇ»+òBÌ•,v‡–àPÆÁß7¯[ǃ0qjÙ¦-m2™ËWÚµû©3éÕªT:m–>2Ô쉎žôäã埩 ÇÇ•À³–C)fœÂV·ø€÷ž<±{ã¦S‡Ÿ;zâûî÷CÈd¶–*Ù®d`eJ‚¥I¼ÃÕï©—FùþÞÏa0å†Z¥¶£ï«„¬XÀwþ‚”çoé*£b|вkgc…²˜q…à ;òç¹½N—“4OÀ4s,càüYÙ{6où`Þ’%[7¡ò ([×ìŸ}>ÿ“­(ÅÒÛý‡üüÞ®åŸ~:oéL¯ßw·%¹æ£µ“ê?•åÉLNJA14ê¥f#ú ZýÁû!#uÒÕ¼UË{kÖ‚Zù£»Íqö«ýŸlØÂñ¸¶nšªIƒjÔYîÔéSUËW ‰0ßåõ7æ­Z…é %!+R"ÃP|Ð …fŒ™PJ6Q¾°Ób{½ctw¥lwVRRòÌñ÷nÝ=wòô¯ö~ûÇÁÃV»ë•f¯—~à>l÷ÝÒdÊ9~bñ¼° ІÂIñ /¼ðÂÀ¡CVìÜ»‡ß:wjÍòå>o ¥t¹§ëÖ+]£&–B'4š¢>Oîùs[׬‰eåijlËfovïÓsÖ7_JF†vDåK£á Š2ŽÝ¢8F3X“ Ï5úÄo¿÷êÞcëG»³½î„”äWš¾VîŽêŠ~êü¿|´sWnV6Œ*·ßuÇý5kT¹ÿ>bŠ¢¡9Óf|ýÅ—Ó&N–Eqû޹>g2ö‡>ãƒÇëNÏ\8{®AD@ã^löúm5B!Å`€Ç•¾÷@ïnÝ7îÙ T¾¢-á¾îOz²¦ LŸ>ÝŒä|öÍÝÞû“!$Z-·ÙK´é3¸; 3'7Ùš0ü±FŽºêç=9¡Dj76d‰ð %r6š›ÊË]³t‹18š÷èSÏÜõH-wêÜ™ åÊŒnÝÖŸ™™šÖ³Y·ôQ„9ãâßzãMs‰RðÝeÿôóº5ïXlfG¼ó¬t×4œ§u:¨ãÃ?LívûÙ³g6»Á`ˆ†ÃebJ ÊÈ„¯vð£5Æÿò-|çc_l1ôý÷Ì›ñJ²(”:6ø¹§Ç²ÙÍCï¯=öÓoU©&¥îmZÍÚ¶Å‚ÈfB´böBÓ5î¾gß?c5žl—.W¶ý‚¹XOŽ ê×g¢EX¼çPhKêwÑfIvù°30ã»ö½GÍž¬ààoÖºU;g•*ˆ–…œìßþñᮃ'L ó$ð´²w–\`ãCjN÷ùZÖqõû[°‹Œ3^Ü‚áâßcÚd¬!¢)!2qÒ I“ó9¹žI'¥è4b¦ûŠ%ß[O¶ž”ŒYÿåFe~X¡QÓ}õùçoöì¡(X sº¤µïÓ•.cJNRTÞr¿ÞwGõ7»w@¥K C'ç,^ÔmÊXdw ‘‘"‚l5D»”*óœÄcåf8 ÒÐfoŒ……Ñ„_D8„\.˜/dœ/Y"…cÃ_x­DBR—U ð &J·ìÑ%ß~Œ\V‰æ¥g|¾yÇ+^E;²˜‡wëÔºKÇJÕÀêK–Ån@Œ°–œÁߥ0ì7 DÓ3¦vé5dÅR”€;/:ážÞ5­÷¶wð«Ä–Ì´º¯'”Hn½z6–&fG¼ÜhÒ§ÛÝ(#´D·ðéç{üõ±£+(×.œ{Wåê÷<÷ÖÄÉÒÌnzŽ›„{ˆßì}Ûµ˜úîZŸ'Ç‘˜ˆmX⥞Mߘ¹v æ,‘7‹(àGFã°^=ÇL‰2¼ÈâD^_·fMæ|ý2P¸ú2úÌ µ¨ÑºoK8™møàCÛ€L(A”~ÿê«wìè7jŒbìaBn÷ÄáÃËVªðf4xeÞ㇗̘ÚÞ/Vþ2 GŒz±Q£²5)/¾ÿlÏ'Ûw ž4{“ðÂ{={ï?zxâ{$F@ö¢53M¬eަ¢  Xñ°ÒèÛàå»îº«õø1Äqê°A:u¶Ù,t\ô®iýõè¡IÈhûÆëËvîBÞ\ï‚.  {Ûv¥’SœNgçÁƒñÈ£xm‡ÓÓ£Áж ›ÞjÕ%$Cþ#{tkÓ>µü=÷!މøóLޏ^õ_}àž{[޲²‘?:bÀ€Qï,ñÉHÔÛ›öX<•4#‹eá“MÌ™œÌЉ%QPûü«IÉ®Žëæ"*oêõÚ­ýês8¨ŸžKÿ|óκ¯¼‚lNxãûö~¾qýž¯C,_âÉ ;>ƦJ¤ãFJCÛáƒñë³ÚýG/™>»×´™ –Žþü+ +>ZC±n¾Y¿ášMÛð÷kwÁ ]:|DP»O›ŠUÒ$ ¥±Ö•.ŽuŽ.Y©Â¨FL™‚¿_†÷.ÏûðCe%`<–5v¯SçÁÇjÇ—J©õôS‰wÞ™o¼ë œ?xèëÏ>{¾ß¶u™š––Ú»—óλÐwfסãïÅ?L9ŽËÊÊJNL2›ÍA¿?”(]:÷ן"áÞ¯4˜¾k«''gÁ É,ÌÈ=[â±Z0c‘?NM>¤çôÑ0ó­1¾CÏ(¹4ŠOB)É­ë>»â“_›œ€ä^F#¹cËV §½é Õ1ðÙzwïB±^Î&O=±é«¯P$„lV¿Ïcw%ªõ»¨LĶ_!Hçð®=•K”fì.é|:¬âGNž8fÓ:d€±†QöÖåò]Gäü‡e¿Ÿ²˜‘ÛÓ5µýôIeËâ³0OyÍÌ@%Ka»ÎÐø©Ç7ó96fb­8â†ÁðVã«voi*‹X )t°í³Ï.ûx2À| c¬ÌQ ÓoÕ¬½ †->‚J§(/ µé¥%»>È· ÏÊCyrï>ýׯ’ƒÊ‡¥JTØX$$ɲIÙƒ®(„7ïÍÚ»÷ø9 ð‹Mµ,ÈÀõköÚä…s¨¤x%è4…e Œ±× flߎ¬XiŽds#ŸwdÏž#‡÷geÚÎsgÎ9“’íÕª!Έ`1Š2áHûÚO,ùîkdVô˜aZ¾Ôpõ{ï Fû“òxbìød…¸¾¶C÷‡Yƒ«`|>)ý|,èwggX,&£ÍÒ§¿¹Û¶!£«›ƒ±nÍ[ÌY²%%@^=Z·z{ÙRlA¨÷‡‚~ P½3uF`D`]Ñ9}úvlמ£h_®Ûh1S,c¨TAñÚa`:iP»ööÊᕜ‚ëβQ¿ßèpÆrr ñ |vgµ¥¾ùæâM›Dw“OÖ|(ÈÙ­¯×yvéL8h©Z-ïȉe¹hÓûøEmž{nÞìYb$œ—‘Y®bäv2hîgÿƒ—ù˜ìöu¥éœ€+Î7<Ýò™gVù²XQXD´J‘”]؈E”ÏËŠ¼ º=žœ¬ëÔ[øá.…- Ӷ“$Xe E[ÝùðÊ~DJøg”šžÖµ÷†å˜´‚¯Ôyaæè åJ•óœ÷ÙÞPžÂV\6Cj×ÔÅ_|Š«c2B^ˆæP$ÖµÙ›s×¯Ãæn˜ 1a›·_öì©XªŒÃäBgÒáï±S' }oþj$EÅN š,€¶¢É)ÆñíÛž1 9¡HÑn­ZÍY¿^a!t~,ÌŒ ÌΡ‘ lã'j/›1Ö–®Û«e:"3Üࣗ¾¿K鄨€~}'Í›‡¹¸/€ÙbƼÑtØÎ°,WRyR´bà¨òa ƒbà( ØÞ4ëòÔ³ó>û ?0šÁŠ×fjölõ{>Æ_ŸÑÈ9Á9ìÑŒ¿ß }²ß þË?ûyr1ó³Ù ‹cZ³i3ÊÍE‰ xЃUBˆz¿Ù¢{j§W‚I¦/de&V(7høÐi«×*^sQd²t{ú…9[·#‹"†Œ¡¶µk/Ûÿ5"{ÄDù¡O<7v÷‡ÈIcŽžBV'¶FxpÎ×¶úCË~úÙÓ›¼ÀÈn]G®[ƒ;¡'üæsugŽž”T¶Œûô9ÊÄÀ"|òÜc¦ÏÀ623ÌØoµ fç8RJ ¹Ù>9ÿà½ø¼\·]ÓæÓGŽ“"1W•ª¹‡ñzÀ¨á+·nÄßÃÍî;¾_b}¹¼—Ëq•*a¡·Rù.êÞfшÀG¢6§/œ`Í& ò‰Ó‚Ïõóçyíq®Ž½z,„fbÈfÆ<>ÏÛ»~ýé;?Ä£´-]°Q«gž[0k– çdfV¬T! vdµ9Ü0DöíÏ•-Ì͵Æ'@Y§4hÜoÅ2ä0 1†åZ&Ó/4X»{g>‹ÁœÄ¤=Woö¶­ØÑÇãø7ç:õÅWß~ú‰ ZlLŒyC_~;0o÷G˜ ˆ2ZæõéߥÿT*åÐW_|òÙ§ÝF„ZÇýÔ)M(&l2¶ž>Ò û¼f“uhãfcgÍBÅÙQXjöÌ3ë÷~)R6ÃÆîÝàq#C)¾ )òÇrÝ4š³fæŽÐÙl˜ý>?ÃÁë"BO}µUß…‹FÙÙ(®T»š/ýék,OÔº] ³#Ád£¢¼ÁaË¥¥ƒgO¾½b¥b… ‘˜Ía•5_J Û~QXÑéñu~±Á| òP^¯×,8‡6|yì® È®øYEQŸ‡ž¶s*…åÈO÷xöù·÷|ˆ-Þ°õ|ø™™|ˆ9H¼\’Ô§éÓ6¬‡ãï?úøø×ûéÜ€ÁÁÖ«ÿioΰë1Qöy±ìS‚v¥5o1øLÛ -;¸ˆ¢pîüÌùs¥`ÄA6™IŒOزg×ü¿ÂYDà»3 jÔt¼ùÈj®-þp«:õV~û5ÊËAɉ-ž{îXrÀ¢(¬ømÀýØb,‚=Z"áîmÞº³Li ƒ2ÍDc‚3!ÉæLxµg̼)ªÁcµ7­_g(‘‚  KïÜìõù?íW¼”½|D™‡B²´êãKñ‰Ù&!eà õ'BÇsšPÀ‹Å–B쵺Ͽ+@è'§Ï,_¸øèoŸ}ò©³gÏ&$%~óýÞ™+—CóÙOŒoôÈ£[¾ß‡»7,в3QR"q~í±Ç¼óžJ¥ËF½È772XÌ]GÅÈi†¯)õñ:‹?ý I ƒŒ¢þMÞözÅs…õ|ýï®AIV|?mEë‹x¡¾ÖŒDvò«-û/š‡r$/Ó”Pⵚ¿·oï÷s΄ÑoµK¶8œVÏó&‡-Ý“{>/{ÊÚw”$@ó®7Ñ€h_N®ÙjÂ׺KG¶RyfMŽ7Ç;›õLSÜ8`ØA3»÷ÌJÏ|¢Öc'NœÕ¾ßR%•±‘V·ºQ]†ñê%Œx<ö¤ÄŸ¶oßÿ¿¯¢nËdŽEø¨(¥{òFmX_V^VF|J àG5l0†#)†`Øôæa©*Âtðå‡kPH—¥i¿ß_ªlY¼æú?óÄä¯>…ÁwÀÓ/MZ¹•+‘¿6å Ä6|iâî÷ahK{°Öìo÷MÄÜL h›:°w_WÕ*øN,M‰;øÇ¶mÛº 臥PS—ú æmUt xj§úvë2uÉ",H‡cHÂÖÙT>]Pc/ÄÂM`XÿìKÌK,túx§.|° O ÀóHh^ÂÚ©Ë YŠd\7jĘÉSðŠ8_NJL„+¿|¼çÞZµ‘Í>ºGZZï.. Øà™Îúå—»wt5<Ÿñ DaâïóÊ+ÓÞ߀…fÅ‹f…C§ÍœÝ&µ½¹\i, ‰ÏÜÿó† Ò&GÑ0¶ ´GÎôê’6ã#¬eÚ “œÿÌéYsf§¶kŸ\ª4v{OHÀvâí>~‰cOpìa›Ú¤Éâ­[q}½ä‚L#Èl‚75eÀ€~i]ñ«—),É éôo¿+Uã!ÅS•ß½ñÝJeËWyö¢i…¢EŽ6ÝsgX–ÍV[îÑãÃÚvž·^Ÿ€9* KK³n¹â‡«àÀÀ$8 š¤:°Lr˜L,LŸÐK9Cê /-^¶÷7¼\Ž9tÛwQf÷–œ¼!Mی۸ÓA@MjÕjÀ{+Q,$…Âs&MkÕè5g¹ŠXuýÐÀä=_ñ¶˜ÇkˆW´Þ´")‹âÀ‹ÖV“­DüÁ šLz²S°ò‘¿ù}â¸ñƒÖ/AIN\AOxL£ömuguÝ^åÅ4zeÒ';0ÿ3Ûßñ©nÙœ•LB´|þ—_6¬XÝkÊd$GztíööÔÙˆ³aÉTøÐo]ûõœûùô"§KÊʤàË¢ú¶l5uÕJ…”Ëxíý9kþøë¾þ?å #`-'NöêÚqÆÿv"ö:v:2 C·E°®@¢âÎönÐpúö­ØuÝa[<~\ݺuË=ô~<[ù~)ôËžï­] ®ŽLë6rÈ`øñû…å¢Î|û]¹‡VÌ9M㇠薚ê(_åyq”¨sé:už´}‹ÂÎDƒ£ñˆ•;màà}AýáÁ Ÿ=•KÆ´Æj>¾÷»M›ßï?-¼^«ö†/¿Æß¸Ïô4oïw#Fš k*XbƒX@îñµjòêÊ]á—âq£—²<Æ–…³†kÛ¼… :<¥ŒWáî·9y¨B9"îòR“yîBb“às9côºxrZ/iàgêNX¹ •OÆ*Ñ Ÿ~èpÉûîÀÁÌ¡Of»5k5¾\¼Ã¼Ã×ÐVmÆ®]ƒµ"ðüIÓZ4~Í^¡"þ*¡³¸1ÛÆ>P_«=tð°¥Êí(+bxkJúÕÇjmüò¸ÌáÈüqã;wëìNe$Ç+®{¿©Tó!ÅÔ!*fç1Ð]áù‚ø[‹†Z7~yÅg{é Ò줇G½(/8E¢=Hr§—.xw^2QÊÐ}úô[-[¬úá;¥çÓRn-q#7µå}üà£Æ,ØÉ‹[׿[¥Lù;žy¿}øB)8zÄöЃ:ÔqËáŸw%á8Ž¥8°[­^¯7>) FœÈ÷?¼ûÎÊV3§xþø}åŒ=`ÕëTJ’y‘²;Bû~Ù°nmëicó~ùuû²Õ­&OB«/rXìHGvì:¼ß@ož; Å''.Y¹´+¬Ô“0;ûÓþ ãÆ<¬Ô½)Ýy _i¼xåòRwß™¿C}1Ü” 'çøÊ'%¿Ú¸ÑÚw׿Ä"Ç”­R3%|”^½Û¶ogu9Ó326oÚÔgôhÌØ€‹M(;D‡VmÆÌšA™ n¯÷ö€…r44Ç^‘JQ ,œ<í•ú/ó|ªV6xH®7oèØ1¥î¿îÊ:r˜•iNFíZ¶ž¿x oµxþj܇T–íڨє ‚A¿Ñh¦YÆ‹nؼ¥Çðá¸`X¸" ¯õL­î«Ûá--ycÑÍÛ·÷;¦±-ž=wNÌõÝ_¢ÕKÖ®[ëŽy›\Y©/EOíÕ»]‹‹Y¢áXxÙª•?þúóò•+™ÒeIÈ” Ò²C*”ª/Ìš4òòؤ„/Qãeè „•Åmž}væ¤ipÑÈÂáP\RÒ¬sº«H­ eyTÏ>©íÚÆÛã2/dp‹ H+–-Sµi⯆ :~üxŠe¬6›­b%n…²IÐ>u@ïáHÌçrûü›¶li?jTþþ¼¹Ùk/­óÌ3v³‰–Äp(°~ÛÖNS&q ù<¢;0¤]ç´Î«Ô¯ƒUü‡O´ëÜqðÜÕﻦÞhžÇ˜ H((Šœ‘#;ÐÁ„ÆÈ’ÒFÓ¸´žC 9}ü¸#>Á nܱ­ÿ˜1H6É9~b\Ç>ã&޳Ü[8zà›_{wï>dÞôò5–]bõ¨ ¯5jd²:.dœ7¦$N˜9mÊâ%p> ½7Î% 2mÀã%¥8,›(°$–^$6·[ï®;÷ç$8;¯ýáû½–-0T­ŸèèÐö݇f{æQhÕœ=ßÌ™3§Ë¨AÉÞ#|¼'ЧY›»þ½÷€³³*óÇÏy{¹ýNÉd&Þ‹îêo]uQX@AQai „J ! éZèEE@Š€ôâÚ`•–@Ê$“Ì̽sÛÛëïyÎ{ïdàþôóßU?ÿ{ Ç;ï}ïûžúœïÓ÷ØkÚ3×oÙ˜Êgï¾ûîKæ/f¡ Èåçwù™ÓIÅ”_Êæn»ùÆ7Ö¿3wÙ’ÂûÁµ¶o7ªu R§žzÚíwÞ's,pÙq€?¸jÆŒoœø­Î|Þ¬¦ÿ£ïß÷Ûwþ0cõâîƒ÷«u§R›{Á¥gœqúnŸÿ,àHã÷oÍ™}ŬysŠŸ8—M^µ`ÁW>FST™í_Q–xôáisf¡xLçžzÚ¥\àØ^6›¯Öê?}ð¡3`~“(-Ž}íŠåÇu”3RÝmÊ®Ë/9Xk,¼ý>Ÿ“2M£7Šb ˜Â²¯"ÇhTJ¨LjÆâNîèé>邳äbvãÀ–?pÿ¥K—†¥ŸÉ^?oþ©'œdWë@v€R߸ö¦÷6¼?kO}2ÑKT·ÌuÅE^(I4¸°ÇnÍÜâ,äê‹gžòßÊÊZµZÕr™UW­žd6ðìšcÛœpêÊeËóŸ:æÓúÝ›gœuæÊ»n·ß^8Ù^xÃYçN›uÙ{ôŽ¢_5|ø‘é‹ ¥–×oZ0íüÅ‹jûïŒkù7¿;ïÜ æ¯¹jÓ°òü= ã«_S3é­[ÇMì»dά•w£g @ºo~Ä­7ÜÄELk”M ÿèg÷_¸l‚rU^bþ™g_4ãB×v3¹L¹QÿñC÷Ÿ}åð³‡Þ~o¢ê¦ëì¾çGý”Û±àd2à*ŒÆás8Bé‘cQwö´îb·(ñ§]0cõÂ+m?˜µp[¼få²Mïmê*ä‰Sž3‚(ßÙqþE3X8·ôòÊœà¸6œBvàIªrÑì+H–­ ÐUuÎ!_šÿ³ïZ~å6×Låòç,–u˜_ËwÖ¬Y3´îýɹNo° Gé.l)Ï»îz(Ìblݼti­2’Τ\ß9oé’E^À‹âÌK/G)&5€%8ë›ß¼éî{P¹–„c3ë9V’Jag8ˆÞª™—„¶ÏS@‡\‚ªž·t!;ü,”=Ó¨´iË#?{èý·×k²ºvÑâÅÍ#äªË/‡ÉÂD8®³Û{|ù诤'MÄ·[bP\?k¶F¥jmâ.»ž1cFbÁÙü¹çß¼jåæ÷ßëÈeEž;{ñB"qèsÁ sΛ1Yɸ–=uÖŤ¿úÂK ÏëfâøÉ€}áôâ5-ä¹Q(¦/fQëÂŽ«k.ŸA¹ZíÝmÊ´‹g°XŒˆ—OÚÈÅο~÷„¾]&ßvéÂòР—×g¯XŒJÌ­¾nY ûÅgjòYçO—::qÕ©hc`ÔM\Þc¢4&DÛ›¥f¬3ÏŒBIΙ}åÜ3NÛó O8ûL¢¦Ÿs¶ÎÉ…c¿u‚ºËä;æ-* Ê]ùó/¿4Ö¤Ù3.ÉÓ,Z1ç2‡e]»VŽá`Tj‰„¶}í•K¨é >¦`>{Ù’Õsf™žÅÊå8ƒË–Y53—ΔËN€áééëýÊW¿Z€‰bóæÍÉeÒþ`­(«§^4óæUK¼bú´ó¦*ÙÂuó”6l4iÂwá¹î5³æÁÂâ0F,ɸE /)q¼,Âþmdó¹é3/!¬ Gë/Ãq®ŒT§LÙõ»ÍhZ¬¢ÆÖ… ~Ù´s` k¼ðéܸp¡“Jqþ¹z±;ðAU€‘)L*mG¾Æ‰Ôq%ŽK,h/>ô°ýüÚ+/ ]÷ÚãÈ£¿Rœ8GÚÄX’×ΞãÖŒ”¤]>gù²U_$jʹs¯@’èú+/©WªŠ${ËòÒ+f“”¹Ì‹ImãæÇ|xÃÛï*Štò¢¥K‰¯ëÖW¯\%Vm‘ãÏ[µ$¨TÖ.\!kêf»:ÿêU8’(Áo5»ÊCµêžYQ5ó?gêô\ÌwvtsÒq™]§Ü2wþÐðpœÑ]¡ÝÆ´¬ß¸r•mÛÀ8ax1\ODwõúš•«`©Ã{1$ì£=÷:òè£Ò“'ãs-‡máêÙ—‡~4R-Ã>:óâ ØæÂËg^Ž¿‰À3mA‘/\¶UF-»Ì¨å¶³˜Ú¦c¦…¾_ÝÜÿÄOÚôÎ;Æë9öôï^³|i˜R/\² \/³Å5gÏÈŠJÉ1Ê®5å ý?æ˜ »L ÃãV‹`¨o[¾¢ÿ=Ø¿98ÏZ²[Õv%i—¿·òqp0‘ÜuttÀ¶îÐ˯ýk¢œ`C)^¡0<< 5|†+Ÿ‚ xá…æÏŸawòä“OÅ~ñÅÿ|8Hè]KW|ûÜ󉯽úê3§ÇºòHLb 0zóÊÕgœ|{ó5לqÎHvuáPƒÆÂºoÍóH‘-(`P«@­dÅÓY‰ uvI6$\(XÄ×iR0C A4ØŠ+.¢ÈD6SÔk$ÍXC³a:¶>nÆ©iz:ß[Ž£))a€§k¨—AŒEW‡·gÓªH@>Êår±§¾ LKTGô”¤ BDÑP ‘–0 Œ‘rZÐ FXBÀ—JÕØÚˆªÅ š0¢nÖ2Z] #æ{(ˆ0¾ ëFQˆ'“à„aÀ Bæ£ZË¢ƒ9~•N7ÿ$ìø‡ŽèZóíA3Hõ¶·ÞîÙ{o¸âŒÔ•bŒŽ6w§\R ôs|ë­ž}öˆ"/–(¼ËÑô©ÕIG†E2G[¤¢ñI‘‘Ð÷`§œr13âdqéº÷Ü #·UGÄŽ¦è ˜ÑƯÖD16T*þßR&…b˜|F·ÊMR‰¨ÄƒC:Åsv½¬Žëb¢ACÆnr®åÉšÒ29…I ï- AŽ‹¦f œ²™¸ŠÑ†?0”¹Î<‚æt+¡…æˆFi[ª¯Çª±(Ð.Js!1(ׄ޳µ}«6¾c¾•ÆbaÏiËTÃõBÓD·ž˜maÊ$oðy¤îÒðv«ARhG‰0¨èJ3·nÑwécôaôüzCìé i9¦–+†fƒ§"aû·62œííÖÁ´l­2¢­o½Ù»ç>¸HFªl7Ìjª#…1…Ú[of÷Û‡}[%0ÈÍ€<©Õˆšf{­¡aôbqm ™îHEVT ¾38„«!/P'p_@=œ¡!%î3z…Ä$ÙG„43²õ­·{÷´neDnî#œà ZÒù¦(&Ó ;‚1É’ˆü°žv#­¦hH”™ØÌ†²À§è‰Ç®éÄ—¸Œ¤›­ç¤²SŽ9vEð)ɰ\âs9˜¤ÒÛowì³’Ív ™vù{+H§iš$I¯¿þzWW׫¯¾šä†‚vÀŠâº.Ôð8"Ã0Æÿøã/Z´ÈceãÆ€#þùpòq¥NÓdU†œfÉ1GӦƤ10œîî„?Cåt±¸#* !‰²²y3±ÈòcšŠ¢'©Z›Žm²¤ì™¾Ñ@¿ æ†ÜÔ£Œ,JÚ‡P×r¶mÙ:a×]ñÀCxÁÛ•2‚v†aDyŒ? ÿìÀSXŽ× Y`o£ÐxæC0ZÜt<¦žmC©ÀaòM'>‡¶ð6ËwÂTÁæÁ£ð–*²8×ÐDW.OÝØÍìC³ bq(R—%~àá$ö(P.Ÿú‚$ÒѬЫ0äZ¢©á`Ü(€àVËæ€LGQËò&j AUU>ÉÏ‘X©û8¬±ëâCÐ{‘‰`m¡"ØêV+2 à$QèÿÝë?˜·äÒK.&ŸØM³ôTjœñ)Ýp Q’dŽu¾‘ô—┃ ò|19Þä€XââÀànÔªÃ[³ª¾yÝûwßyç¹Θ|ð'ÑqÞŽqòØáh[ª–JààÎéªB7bX­#:ÌdPÏ+br¼¦uWàIËò_pÌëˆeV$¤™bq¬œ À8°G¢ %Ïç›ãÏìíLWQ'IûØFƒ–Úš¦6»†Â‹Ø`uØhÿà°'2ÀL\| EŸDQ‚”D3ÁP2êØA›7›>-vTWY´oδÌp ^ÔHãêÈú"1l_¥léÑý·2¬$Ç NL †ob’ˆöɸ"¶J¢Jm¤Íã+ðÕÀRÕ 3‰ã›”`–Ñ3>Nù8d±,š®Û¬[|TÐ³Ô ã†A;’ˆ˜ “$¨è“. s#& •Y| £ÖHé)Xìf­&PAN¥¼†!Ï€ <ˆ[œžëyÛ¶-={îŠr|4E-1[:™mÏ?dK˜HÔ <9–X|Š@‚RË24-8¶À‰‰r¢¶]‹Ê’@ya4¡\Ì’gÀTR ŸÎQ± ”26g(Ž™ó3ƒ²€~ßÄt=Y–,ßà Ô!†›ΰÿ•Wo»úÚsf\Ðñ>™DhǼ3A ‰R²±ÍÕzb¤knÐx)r£<3Šcp^;µ:úT\Ë”U5!Иn'ÃþÅ¥ù{pÿÆ<‡A«šÑcÁyóù’ZÎ =>ŽTØGŽÇšê¡&‰ `ÀëVCÖÓ&Ñ‚Øo´Y¤u× cªÉ ²lŒéŠ-“­£I.;·I;+I»ü½•ƒƒÉ1—N§MÓ|ä‘G^|ñE@–eÁ ðvoè"p®Ã™n®³'=ô\|ã7þ|8ÈR»!û tGfT!î>怗Às;¨j’€@"æpÀ4 ‚ø¿h¸>¢gÓp‡Ä"õb²/Ã$z×1e b@Žy>°,. |ó™¤)Öjž÷”&á |86áEèE˲½… ùʪÎñpœòΉm6ê-á "KCÂÈX¶$‹4Æ‘’$…õ—ÇZàZLÙ Ê‘4¯R•Æ÷|èb\2pø£µ84/ƒ@ü§«Ï{ÄK‘Ã|XĬˆ…ûË3(¦œ²i€Ù*Fê™LŽÙÐĘ&N` ,€ j’‡ž#­‹ À)@®6RRô”G'Àqˆ]e!ÉmꙎ¤3äȉo%M¦CQš6ˆ-ÌmVJz¡# œR¹|ÿ÷¬ûåóÿú¯_8ôä㔞qL…Ä53-3± 9Rkàì+ˆ„cÀ)¢ž³EÅ,õ|/±Ë¬Ö+…ßso»á¦o¿Ó/–K™BñäS¿3~Ý^¡f½ÆË’¢ª­ˆƒÈJ œžA䆂(2ïTå±GÖd8ÙŠJTÄÕ£Ze!É$°˜ HØVµjÔars¹Ž;aVEì9¶&ªèkÙð|ES’q”eTiìXNà»)M‡.ña;¥å1Ñ#ÕŒ1ŒvT2Ä|Nrx¾âÅL»Ž›êÆ"¦°}´C˜w;N¼®³³8 ÏÐ,ð:eù—CžÔH06…™ã"—rAìêLp‡n)DH`|6]¶j9-kÕª-qø°\¯ôf;=Û2C?ʘ–‘áJ0éç-–Ä ždükÊ…:GN} Mˆ ×RR†‰ò=k¸¦ww{Jó nÃÞQ´ªÞÌ…\HcßD%¦aŒ[j ÕúqŒo SDAKZ57Š Á<Õj¥ L<Ò!Tdž…YHÉi¤u(›# B3&"oæÀàÏòÓŸüÅ^ûíê…çɰ­ˆ¼8Ьe©€Ú¡³–ƒR4fáú¯ÈÍ´¹I÷CöT«7ê°ñ%U¥ø†PE,YÕ-“Fà l˜•|öXÞ¡+O£‘ãtÄvªXõ XɼÈE… R XWI1œ‚ƒä Yá%ÃL20"öB»Šp–M™4ždQ„=‡ä®Ç˜7&f×I©£B I)¬@ ŽÚÛŽ)ɘçÐ4lQâíB1ß÷€‡„C(v}^biÖ“ý+b6yH“V³±ð¬Ë;M _’ù=ò<ÌBèx,õ`/‹œ¬«&1uRTÁ1ÂO³Ã@â%Œîà4’¬â¡eÓ¨¦ÔˆD/ýwIÒÛ¥]þæÊÇÁA@~ù|° $I'Ÿ|òúõëGFF€²‹Åä«íÛ·7jø W:;;«Õª¢(CCCï±?|÷ÝwŸþù?˜ Ðá “r‚ò¬Ð( `büζ0ÞðlHTëò A¢Y;AÊÅ£°,DTû‡ÀÅ )ÆvÆö{;㨠*ŸÄuŒ›œ³ `”8\ÓÌê™D=Êf,Q F€Ôt& NFà(5Þ«š´®£Ä! —`*ˬi™l@Bl Ž!³HØ=£%±¥ZY¡GKÔpl uKFµ—Àµ(ú€ì Žš2>ÚÜ{à#xs,D$ó.×QÍM}ì—# ô1å3 ±@ÇÊ9Ã.Jd!žáH,8³d6V\"‚Œ`B‘ðሌ‡b“A†Šh8£p)ÄC]ÆJ!š#`ô $M¬iY"»[»ZšM§QSÀ醡åðZ0 Zk¸– jQ£ÆÁ΂¨Ã1O}Ô\F\bÒÅ»vƒ¤Ò†×( i×j¾A“ ÂK1Â-¿^‰‹y;²3 ™ÈGñuäÛNFÕ-ÓÔ´4jt´Ë57q ˆËÈ%º¸±Qý›%*±€®é_BU ÙstYI2öV#WÁT@\Â̸ɰ£c A <%NVH"5äºQ¦e[ï™&—ýá¬Ð–xú ñ3L¾‹YtÆë¿a÷LŒ›"Š‘óQ Ë®ÑÀÑQTD,LR¢ÑÄÍâK†ë$æå¡tGÐËqY ¡¦È¾åŠŠ¸ž H¶HQbF1’À˜Š¤%<Æ í.ÇËV¬ iÖSØöÑb¹Î%„V@%\ÛZUµhù5+ =Êó"Zõ„qŒB$ꇮ Èð-, ™iLh X ÇŒó¡òÈl7÷iâ6|'Ê0áù@IGQƲGÉ·ËW‡ý›JÓ–€6ÑfMMg‘61ÊÃ11ßì2î#è¿“È•FžË‰bB©€ì×G:2!LÈ$0ËGè5Šü ¥ÊM<—üC£"ñRJжá`»ü½•ƒƒ€¾*•J_Ò oÚ´i¯½ö*—Ëš¦Üwß}_~ùåÏ|æ3¯¼ò |†+étz```×]w}çw>ýéOïî¿ÿþñãÇ?öØcŒTÌEÌdDjí«ÖA'p*ÕörMáD”ØŠE¦e½TRºK|Ó¶²¦Ò-C2k[<@´òÂ3°:RîééÙñ|L®À¢Ž¢7̦êjÙÎVÂ͸â&„ŠY¢ô€—1}ªe{@6t‰­çZ‘g.˜pø‰Ä¸tÇvEM_uÐóóTâ$v¤EÄ‘Yn‚A‚å°Eµa @‘)n±þ<œ¼‘a5®e4•g"x\ >ò¶ï’âXFZ‘\ÃâHKé²ã–ÍZ+{ïGÀAyQHTs~Ô˵®Î"üÞ%´ìÆ’Pƒì˜h³Ø´—Ã#Í÷}Yb‡\ý¯U«0¿œÙqÈNç¼]7r©|¢Ä(Þ‰2¦¦)\hI1v˜IQx¦TUUž ÌBÄÇF¸E{q!` Ÿ•·§òY9•h ¨åؼ$òœÐR‹'~…ÍþÆ, Jâ=Ó‚§JjË*Ž6íÐñf/rŒœ”¼ÆèžMF5_”–‰fŽóL3Œ"¾Âó:n®¢$ùID|¹Ï I`ëÍ–Lå¯$¡ ¾'°ðÞòöÁñZÑdаLð ܪ@4]Í2LÑìFK«;jDØ&çjˆòì‹ß“R*ÇtÌAÕÄ@”šŒÀZ«[Š$Ь»F§ž¥-³À— ×H±00n€ŠPùIb8ÛrTUùÙ £:S®éúCZêæ˜Agž÷MCDõ}sÚ¦¥²35ÆN•GŒJO =±j¾-Kj©<Ô›ï 4ꤘA/†¸0OÖõD‹ºÊr%/†®Ë‹qQŠ'bk›Æ{I{lÔ²ºû7T ¯£äïœk.ïÅF×CMñ€YÍerÄr4¶–uI£Ñ`®ß±äÉ"ï9®¨ËcM6)Džëßuä´ŽÊS ³˜Àhü>´¶Ð•0N$Âè{>‡’V¼!°AW¡žëJ¢æFaȪeÛÐ;%­Ãn`:Ú´„c”õ)-™ý†cg—‘׫Õ|GÞw|Qc9 “ÔÞÑÒ•( ÛÈdPFl²îdbÜ åqßÕ=€†ÛÍZçøîd¹…Éð¸ó}æ å ­ 3⬙ârô‹ft¬á(šÄi©lvt¸(*¨-EÓ‚÷îXÀØ~äalÓ2 4M`"ðd׎ë} yè:i5ÀëˆH¸¦õ(u [û·‰öâVÿY"Ï‹1àQR |¼åX*Г ;UX¢?ÃÅ @}Ë’a±q‚ÅŠýƒ±ãÖUš½RSÇÔ.íò÷T>zž ˆWWׯ~õ«)S¦†q©Tš4iÒk¯½öÅ/~ ÞGß•7 |ýõ×ᶃ>P# Å¡¡¡ßþö·¤M"ìzp¾Ú¡Ã x´"Ó÷…!$ß÷„È ”Dí°x ”RÜ:H㕸±¼]nàÁ¯5ÉTÕ4sz¶i‡ÊŽ6e„18`TÑB²e°‚27žØyÄÏv­´¢E¡¯lu}J5â¸Äè0F¿Ž =%¶¤O¨ð€çÃA*6£ Íp-àìUßñD]uÙUÁvyÊ(‰@- f3¦0«ÇØqm8ÎÒ*2Ä®/JBŽÓØyŒDÂ(5´}ñ#¢q—& Ú!R/”v$f‘Iä- ‘Éx>úL¸%ñ¶ëÜL¥É`AOR¥dx}?"HTe£ý;êuÐ\ ­¨†õjÊ9G“¬å!#\JçM/ø‘˜ø“Eq\¸ï‹/h©ÄÚßõ"YRJ,+T3|ÂaãÁnûh ³CCAÐÜœ`<6tŒ¨¦ âhB¤P:D$p¢ê€$GLÍR³m¨f€Ïð@Ô«¥Q*…GnÔ¤Úòœ(9fSˆjÄÀ—¹-Z()ë¤ípºbp¡å:]ŠN›jtTyïĨmoùM'N-;M>cykŸI%0+>bà•›„“4‰ E”çß’g€Žž2¡Š,(^/ØV#¥ª1G"WâÐD1°MÆ^ÆìvÀ—%ßÒEMdH /Œ §ˆ ÓÌëzsUó¤¸Ràg–¨)ex î‰÷m`äd…MŸ ¤šxàü2ÙR"ͪ˜Fš…7JTÁʧÌ$šÉ«%Š%ŽŠ˜(ô)S%¿AaCYƒâ”Q•0@º!ˆ‰tµÏI@ÔÎâFwãH+Sz6â;dv@œ€mHœMò§£ ».£R‰·XSSh.FzÀñ^“UóÜèŸÁÃÓ¢´€ýµ]OR¤Q©!.«#.é,‡;4Í,€ªÛ¡ÏÄùM–)Œ|xšÄñ‘ç3ý,ªo€Hyì¶d¸â Bãg— ÙŒ–ïËìf`¤U稹ì|ŠhÞ§ÅÒ#áïcºCvÛ¤éSÈã:ätÉ!±á9èÈ•°µa¬ðÀ¢ú‡6€~à&Dž­þæžEÜF·D‘pº›Å]™Gét[UÜ.w¥Þøh8`x)RÈ<ßœÐ7aëÀVÀÀrHüŽ¡N>ST,¸ãºæÎž³dÉ/Bäðƒ{ïÛwß½ï¿ÿþù ÐuÛÞé×ûÒ+/ÆýÄŸ@C8cö‚ç–J%MWüÐËf²(} |bšç÷×Þ÷c8,O>öëw?Ί³È·žï¹ýîW¾qÛ÷ï#¢|ÒáGÜóÊKF©A0¸y“,ðÅBŽȩ̀Ôç%»¹sm ±$œË¶LYÖÂDÚ硊ÀtH¿bòoŸ=äñ_@ãB8]æ`ǘIR‹Èãºd€,)ÊXÑ:É¡´¹q³Ïèê¨(˜\«¡ñ›é]D»5GÎc&=›)7köÈx5רV唆þ(„”#…4F^0°#H²é˜9%…z ²(£ø"Ï'ù]˜q¢`e£fSIÒÒ¼o¢lŽçêë¯çº:+Û·æ?qÊ]<_P3µºYdJØj¹¦eUmÇÑ(§Ñ¨§ÒY+t^æš:hÌÝÁ·¤qaKKÃZˆT9hIéhKB9Џf£ 5*Üõ/£fZIÅAŸ ür‰‘øN@wl󴦹Ò(@l½ý…ó+y¨YvºíÃ¥Õ6¶g>ðe4æùÉ=¤åòÒJ1=d v–‘–4sð$?ÛeúoȘnrÉRG„Áþ_nÝ„¨ù“ˆ4-3š-;t\ó‘;ú”ØhŽZ€j³Gïà[+aT~Ì'–cú8vFÆözì;#ñ˜õ}Ô=;½q” ŽáÎ"cØšæØc~§ß醨iµ¶‘1뇌Y´ì:—@ŽÄú•=3íìØÝ1¶Œ©¶–£ßÔhLcvZêcvèŽûÒDp£3=ÊŽþj̾mó&‹}ûÑS3¶ ñ¾üè~\ß?4þÉõ„‰’µÚlRÜ44ŠGÍRvnÕŽkqkmŒ~O?8›¤µêâfœ€÷½]Úåï Ô?†:“2°ió¦É'?õ †¡6—ÎçV,Ë* žç¶¯kË‹?þøÒåË × ò쳨âg~ùËßx«·§÷¥—^Žc„P‰I1h®ëÃÃÙ|F8UQ£*z.)U®]ºüÜ‹‰ãÞ|ýõgÌ»%a¤4XèêÚöλw_µæÒÙs‰ܸhÉÔ›oAcç08ïÛ'ÕG†ïÀ\aèóâ°e)Z e5®‘—Õò¶þ®în a ™\©f¤ó©á²ÑSL¡4 IݺbÙiÓÎŽE‰¦t7±×G¹#IÂÆ¸h3\æ^t·o•'ô\túi#om¸ý‰'á²_)‡©¼P+^¬Ihê,Gäý×^ßå€1ˆ àJ•7Ñé ¥ x ;‰3B…ÙYv‚Eu9Ó”80­’.A ¯.q^CÔëš–…z:mŨ;9!1¶‹ÃX\k¤®e ‘ükÄ<4ãË¢ºhãˆ^cuÑo€Ø!QDÆîÆ7-]&“øÍ·ÿxí}ß#ã:ˆ TÐ¥C–Ê]Eè¬G-0×GèGïDÏKS€¡©532kÉ®¸Q“8¡ FñL»n×íº]·ëvÝ®ÿju½a|Ü·Qä²…˜„›6õOž4ñ©§Ÿ‘e,™fÃ÷ÃTJ C€>`º´ªÇv$ñâc šž8à  ¦_&ppëæ÷Æ÷ö¾üÂK?qÀ'à7 T$¹\.§R©8Uj4jéÎN´ô Ü3ûâÚG'¦3猩óï¸ùöŒ†at0Å)_9úÎ[n%™üG|eÁ÷~躾•CÝwÎ<é„¥?¸'ŒœHKYh!.£-£ƒ˜Î3êR^!”nþÃÛ1Ö1}—bP=@‰&=…ƒìU\Âkü°6íÒ.íÒ.íÒ.íò«þ§à`*—ȱeSßä‰Ï>…pã¸p0Ö·oêîît¯Z«é™4/H‰tÐumŽ#O?û\’¤nÑ‚+éà†]½½¯½ð2<î ?A#Ê"Ä‚ ¸¶-+2 ‘*¹VCΤJëÖe\뼩gÞøÃÇ?õ˜oÞ Ò× èå¿^zab¶ãܳ¦ÞyçíÔ²gŸ6máß'¹¦l§1ÍK¿òÕe?÷o°Á¤´k=ÑÜx¤*t4¨6†R{M"ºD,góà° «ã'ï‚¶ÌÃC"ÜÒ CiÒ´¦QU£¸ƒáÒ"Ár†7m\˜WUŽ“«C´¯(wuX„µÁ…ÿ~æÍ?º¿ü‡×‹}¬CÍh/ÆÊîý÷&M9ý°/ßòƒ’À·ÕªHz>q!€íRÏ爎ª-=ßÔ¨’­ï¬SE©Ðѹeó¦\1WiÔ'LÙý#1ú«4¸eKwºˆiÝ9tð«¾þÇlwݽ¯ZÊå» ãýϼ0aÏ)dR§m”ÞÛ´a÷}öx{ÝÛûí½·cÛ¡mׇ*½ãz\×5LË £q'òè ZÕxS›Øæ±Ÿû—û_{ `0US>æëà¼A¦‰ŒÔêp(Gϧ{&`Èl«¡‡†_ÒBGOÒÄ¢º…pTm©^þ„·]Ú¥]Ú¥]Ú¥]þ‹ƒpð£KEZ.§öÀ¦Íã'O|á ü›ßü&—ËI€Ü\×÷}Ã0ŠÅân{íY ,*aÎâ•Ë–Ù6æNøåóÏñ$~ö€ƒ èö ›»{{_}ñeу<­¥9ŽÆ,š¢Åõ¡íšª )øî½×ÝPÿýë~£f©â.¦¬{ñ·ûî·ß&¿1ýÚ•Ä2Ö^³¦#–žyòÉüÂ!F¹¾?0nüämŠtþm7»JTeæg¿¸tåêkï¸ÉU•FLO:ñ;»øhf  Nägýu>t¯¸zá@}dÙšëS–\wà ̰$¼â´ïˆqhÖjËî¾Ã}±tAä ¢@jUo¤qݲÁÒ¤Bç)§M[=n¹S^tçõÃV½3S˜¶ßgoX{ÇÍkט$(—ê ô#"FqixÁœ9Æ`Y4¼)½0˜"æv›ü•¿•߃HÓ'2ËÅ7%fqÓ¦……ÑêK.ûÕË/Ý÷øãóÎ;OOë1ÏM=mjzÒ~,±3óâ‹×=ÿ«Ÿ>óÑb¹wL¿xýö-‹žø!¬vP ý½Kf½öÚ+«n¾ÆŠÝypýûë2™Ì¥W¯&##+f]n–ëóæ^yëõ7mÎwuœ}ñÅ$—ÇŠÒ¨iIlwÞ׿zÍý?&F¬-•*]ÑÖpk‰8Ö÷o¾q ²5¸¿sFß§?ÕŒž—`¾¹Bð­Œa;IÛX°]Ú¥]Ú¥]Úåo¦X¦ܲisK:(Ÿzê©èk¼µ_$@tŽçŒ7þ{?úAƒó8xíÒe Ó÷ì Ïq„>ÿ4ƒƒ[7nééë}ñÅ—QY|àÁqD“@3Çyž# l.Ä, v¦§«ò»ÿÊ÷M9ÿ_ý›—‰¤.ø‡½âÑGIW]ú}£Žl­¬™6uúo'®sç gžrÓ­¤«HR‘BR._ùÕoMêî>å®›Q*© Ï¿xö…³HW'Ñ‚ò{ï»&ý¹ÏävŸxÀ¿rüÙç²è¦üжm]]]L_’Ámçžqúµ<×CǦZšLãyµ7ÞXqõꅷ܆@Ç~zæy¯¾ñ»¯íê5Ó(Yvúéç^4C=è@¢È˜Ô8B§ëoþswýè¤wó+•еáÛ»áâ‹§-˜Cz‹D +/šyÒ™guï¿_Ш y–^,1Öõ@haÁÄ!€o]‹Ûu»n×íº]·ëvý×®õz’€óÃuGùl."ñæ›&MžüôSOIŠ  áð#þÍ6-Œ¹æûì·ï-ko¶Cßá>ñØ(ž{þ—<ÀÁgž[8}ËæžÞÞ_z€ 4ƒ‰€ã8’q¤<,‹|Ow—e6·OÙe2Ù^"ë¶\wùåç\¿ðЪoOŸqýM¤7OòÌ3xÃfR–LŸvÙ]ב\vÑ—ŽuïˆH‡„ kŸÉ$ô/?äˆÅ=Btšu>[ªö)‡}õ{Ïü‚yD{5oÎ×›ÿðÃ$ LÛ÷1›GoŒf€«SQýû>ß/Ÿa².£›`bP{î´³®üÞ­hêý[3JŠðéó8üê—Ÿ(U¶utw—Ì:ä¨E?ú!™˜òlC²øéßü÷5=˜¡ uó¢ãO\ùãŸ^Â4 ²`ùN,+Ð µÀQò¯Y˜ŠÑôÓ=ô–'ŸlƆʥK¾uâòŸþÀéeI9þÓŸÿÑSϲ11è9Ÿ?dÍú—ꄤkÇ¥ aÓ¿tøšŸÃ$ž fƒÀ~ÕªhÅ躧yÌ­=Í# ƒLèÀ7óô3–®½Ñ¢8 4ŠYû.:îØ•?¾ó¸x˜cƒøÚá…‡¹ú¶ÛHJ$Õížk“\çy—Íš·xa÷»yŽS3ήî³Y3óA†5cšä%q’௽ôÛu»n×íº]·ëvÔ ëOÂAÁÁ-›&õM~úY„ƒpê/y”娻Lžrûw¼õÇ7wÝ}ÇwAxò±ÇW-[n[Ž@øçŸý%Gé³Ï<·hþBºn`coOï‹/¿aêO`b„ƒè|ªª²ïØAè¥dE¼øsNŸ¶_(®óúÁ{H‚hýzýn“w};j̽ï.À×{!÷þPµZÉýÓÞýý›òÃv6S¬23ïºÉçÑ5uâì{ï%n…ŒïÂ8e¡0ó˜o-½ïû6WWu™ÔÃé_øÒšGŸ$…ŽD^…V{Iì0#&“´þí;ü®'Cã=ü5Á(¬ùÏþÓ½/ý‚¤X6^¸s{ã¢OXù‹‰Ê¹†% ÚÌCŽZ °i—¬K"Ù¢çqôµýŒx&*#òíþÜ]Ͼ€ ÀSgÆÐŰã¼D“¨/IŒ7œ–VYO ©™góøëø)fÚ3ê$“&Q4ã°/®zæá*o*ªvÑ1'\wÃM¤Ç{¥hõÙ§žõÄ]ôÆ (¥xÙ׿¹ä±Ç‹ƒp£yGhÇg~ùصßû>Iep 8 ÛuÔá‡?úÒs” ³óšÐˆ“ýÂÝ¿ü‘¹Øu¨šÅVºäÌϺçÄ ™¬º­:Pèé)Ù$¥+¯».r,.­Ao,‹%*ˆIS=Li“,‰øÊXþê‹¿]·ëvÝ®Ûu»n×X×íÆÇ}EaNÏÇ$Ú´uóäÞIO=÷´,K¦i×]©T?þ¸xpûömûïÀûï¿§ÉŠÄ£tpŲåžãr”{þ„ƒÏ=ýÜ‚E éÆõ½=}/½úŠEûîw`LGe³çy‚ȉhFÑóëj˜p{Þ_¼æÅ'â\rØqË|ˆ„uÒG`P¬žó¥C¯ûÍÓ$p/üÒ×Vÿø’É8N+¤$âŸ{ð®½ív²÷$Ì ¥i#·¯¹hþÜ;n!i#&©G—~ùØeO<ƒ‚:?D½í¨¯kUÕ3?~íÏÁÀ¦ª„1QàúpíöÅ Ž¿p*ÍhZ®ƒÔ]òæ¦y³.÷ø(ßóBbýÓ+_|&L£Ž7É·ÿÏgïzí 'Ìaþõ3=üæÇ~B¸bÆöw7ì¹÷žheç¢é K14KØÒÓcüÿ˜`’]–=í¸C>s×·«S¦úÉçÈök/›}îmkª‚©*ú·ùÒ}OüãìX.ùíÆ…Wμä…j$ꄎ Õ‰9çKG\÷ÌSD11†¦à™þš˜æ™Ç|sí÷€3²J8Z^÷îÍwÞ~ñÜÙ4¯b‚^³P}çˆÃîxâQ‚_²*µ‘J.]œwÖÔ³N9yÜ?@0,74]ßüŸ¿Ÿø©ŒÍ:Íe¬ZUËú×­‚pÒž{Ç&ðhÃ2d úŠNõíº]·ëvÝ®Ûu»Nê†i²ÌRÜNuµROgô|ºè†öðP¹{\çË/½ ×CÀHºŸÆD¤ÀñžþùÅ ÛAè×ëÖ­ëïïÿío?ñÚ¿á; ^~ùÕrxP@(ø8¦¾ïó<Å”C˜û;8ª*’@¸ð÷ÿuÝ kλi•e·_¶äœ¥ËIFŠyL¨àlÚ¦íÎe‹NY1»n6ìÜ¥«‰a‘qù²3BkµùGŸôOô¥3OÒ&öV\ïê%«—-¿‰TKQ§‡ï ~Ôòµ·†z*à}âäØ jµZ®³8üöÛ:´ÂµÖ\}Õ%³.ó8)¥ô„ IJlmÛºú–ë¾;õL·ÚèÒ ×wÙ@ihñ?A6Gœ s¾~êò;o«w‰™q]þ6^~þ…+¾wÉgÈÈ‘å[®\rú)§’Ba¸4¨Nè1Þ5×Ý´nÝ{ûïºk£jj=‘F-8(1@ŽÊë(þÆ?ýóÁûï7ëŠY £‘î,\xÖ´Õ7ÝJòj¬sƒµ¡‡WÝú/Ÿø‡ {î¡IÊÏæ^õÚ»o{çÒ]öÙ?gº”ÊäwïÌ_¼ä‚ÕËÅŽ¼ë;Ù®Ž°^ãÿQL,pú‘_éí7wÎ<Ç÷ÔŽâesæ,\¾œïÈ4ÜöþÝu‚z}ÅŠEκDè*4êëÝ…Þ+W¥tvƉ'Ì_4gÄáß››rÁ´ó®ºã6‚©ZÛ‡§OŸÎ~õÊU™¾‰ÈcpÄólIU“…ó—Ùº¶K»´K»´K»´Ëÿç¥^«}äuQUM«V*º®oݺuò”)>ð@.—áÃ7s1u '•Êüü‘G×\{mih˜(êož@Å“O?µà`é?{{ÿó@”üÿðÉa$‡ù(å9Ž¢qÄ‘H8YQI_ñÕo,X{#éÐÿã›_¿÷žûJPŸäRÄñ¡m+?å¢9³È“O=þ›·_s#ɉ¨Ž#:Áw¿Ó5h]vûíw¬^òÚúwå\ñš•×XEU©“ػ谣wïé Ta»QçõôÌ+æ*½°ÅYgjqÜÛQøÃ믧óY;â:§LþîùçgÆw“Ø&®Ûö¢+ç ¶_ä´Óç-}ܱ ŸýÙú¡=ã'ŸsÚw>%÷ œzà hìòÓÎ¥Žû^iÛM<€¯Ôˆ–]têw‰ P]kÈâE ææòÝáêÛ†²ÝMÈ‘¦ ü²¤€·m_4s֬Šo½j•a[ÛJƒË¾/ %R«‰QäÓM#wß´¶l¥Mý‹o¾wíÅÓÿX ®]™ äxýæë¬°áv¨ëËÛÔ”zÕU«R˜`>&†MyÚ×¾qòü‹j Ã¥dåwž«•«Y­cîÔóƒÁ¡Ý'öÙfÝ$Þ0ñù|vÑŠ•TÔ1ŸjƒÌ?÷Ìacxòä)•÷K o¿76j¤Xˆ5šÉM?ùä¾îÞKgÎDWe²ÙÊîеLYe:÷vi—vi—vi—vù(^£ñ‘× Ã(tu¹¦)g³å­[‹ãÇ?õ裓'OÞ¶mÛ‡oŽ1g†¤¥SO>öø• ¯têœûÏ=þD>Ÿô±Ç,Y@ï¼›êéýõK/„”ðÉO…r|€énÅæ3BÌ* ¢Î’.;åôKoº¨ôôOºåÎA:2ï ¢DÞÕÓgœ¿æ"ú3¦O]uÃZÀPðJ¥+3bÔ šŠ‰5K$«‘|“àrhëæVjòxÖ“\Fä}bÁ;%Åm/§g<± x¨»ÅÌ™4 CMxÉ2+¶])vH’í¼TÅœnbê’cŽZþè½bÆ$%„ïöËã'!Ž]›J)²}L@…íð–M]ãÐÏÈsĶH!c†žÀëŽcgeµÒ€’h âˆFM}.fIáÎ>êÈëQ]&‰C°ST!¾ådß÷e€††E Ÿ¿¥D:raA¶ë㤠F„üÌÁÓ ’™@ä;¦¨ÈøðZýk‡ùÀó/z­`lJˆ¢°ì¤"l`¢¿JCØPd4 GavŒÍétŽh"©ÁëЇT]| Ë×ÿbÛ­×lW‘Ô´¶d!»‰L“o7Vä$ðß‚½D»n×íº]·ëvýÿ÷Ú®ZQ’.󃵮j¥‘rGËCf¸¥ÊÈ;o¾U7Œžúðý!å\ŽÚŽóæÿ8wöåqèfxå¹—EQxò‰'æ/¾’ÖÖoÊôö¼ò‹€|öÿä?†€%) yãæ?ž¢³„*aøÒo’¢ŽSs”tÌ'‚©é –,8­¢XP0û+ òâ›~Љ¾ÒŒ1Üp5ìÊ¢'kHñy²a²»Ð&|èÁ+b¾yh€J1W3añ\ t&%›p^¤h,D³~«`èç‘ï$›¶]wÝ5笽šääRd‹!— U‹‡¹ODlƒC7eLÀ ‰&Øqˆ&;ïÎ ® YÊsv$\ RöJÄbÍÔŒÒæ-³/»üúk×ð}½¤Æly!1µÍ~¡G8—˜.”2gdJê"©úq—H9cï0#HŠNÐ*QpXá³yR­žsâw®»åÒÑ?Æ<óœe7´Tº<`uŸnD0•žLXJ:âZ XÂK+,ѽJJÝã;ཎGD•lq²yEd¸7­âúpm4M„ñ7}„š\ӕ䯾øÛu»n×íº]·ëvu­ú>Å1ãŒT«S&åàØ¿ýÖŸüço~ Ñ´- ø¡ûžðiÍñòàГ÷Ýkz 8îŸæ×4~ý«×,œO6 Œ›ÐóÂ˯Ú!Ùë€=ÊYŠx„„å±åy†cÒI0.J)$ŠNLæËa»¤ »AºÓq¢!`’w›A„þÜIðJÕ—EQÕI’o¥,‹ûÖ3ù™Œ£»0)ûDg±P†í];Um*‡`eg!±)¾=Íak·a/œ6#ÅK¼"?®ôo»íï¹nèò=><”1[½N´ )ÃCœ(¯p®GâªÑבâ8²­æ|¤§x; ºžhð:—IH9S(”¹’¨<9ãÛçdÓ¹þþþvWȼ h]3CôT+ñˆ°$‚65j,°_D2QP ŽÉïPêGÈ;ïîµ{7 ÚRm᜹(7 £¥Ë—Ųìò\ÅsŠãŸa5ß"< éø!Ùâz,ñ*À?b”Èø:»À(½³¥1iRz¸tèш…bD &e›±GO ³:³ÉEwŽuM ߃¶K»´K»´K»´Ë_½8ÎG_§eE 7È¿ÿûÉo½ù‡T:+мãxvI iäFº»Ã3̬ª>þàƒ}ÅÌÿù†E¿xì瘤îýÛûúº_üõ†çMØ}Ϫíxœp³lþú»þ-“úz_úÝ›%ÛÍNš¼e¤jzQqD£8)å)áq1ÄQ"¥jJ( ™I)†ãŠ”#^ >v}M‘ã0”$±fÔRÝÅí¥r!Sl”+»Œ·eÃû½ã:DZ,'•ËGŠÒ?\îß[©–å Ò8N„Y½àxQÃó¥tÚr(]ÅBup0¯É\¤4e¤VÕsÅ-¥áLW·é»” ø0ä,O%7¥4,³'U°Ëõ¢š*UkB>]³Í|:ãÇQÉ5*öɹZ©"euÛu<ËîÌf%/[Vår£"䳦ïõöŒÛðöÆ.9›Ïf+N-ƒ0Q ’t '—ÍÂY®ãAº³}¯nÕÕŒêÛ† ÓbGI’xJFê5ªÉ’"F <¯oüøþþ~À‡‚$ó’æûmœÕ=Ϥ˜ÉdŒF½+W( n‡WÀÃ=‘¯ùnœÒdk)Þ)+–Ó©§xŽÖL#JiÏçÞ7ü"04Þ:°©³oœëš±í)Š"H¢a;¢$Õj®ŽN×°â› £˜Ï ’T· ¬ªª–Cãÿ~çÿ­Ä…•œÙ À‡Ñë‰p3áX» oi•–Œ3N¾óÀæÝÉ_\íøêc£cfïaí Œ;‚QÈáì-\"Ø›ßþO$ªõãÖËwt½uZÁ†$nzB!ˆÃØjÕØŸ´”ÉÏw¾ t€ý xQŒ"0 ð¿®'O`ko5ÛÙjŽúè=ìel.iòÞ¤UûÀìX“o ›ýæ3ã1íÆö‚]bw´¦£ü%Yo­qøo~ÊÌ*B쮊»<:žÍvü9Íû ²ÃmǓ٨·¾­Âd¸šƒö±jݲã«d1ï86Æ”_£Í]-;=v§'D´y7ì”±û¨5«\ó‡4;ûcúµãñÀÓŠ“º£µQs£±mæâý]Q;5;ùyò‹ÑÛÆv±Õ†‹„ûÐ$ÿeýÿX>8Eÿ}ù›"æAi÷÷OÏq³Ù¬,ËÃÃÃ]]][¶lÉårp= ø›Æ¾og² ‚È2¨e¼ñ‹‡}úS=éô/ûù²ùWÒu›Þ›0q—g_þí`@å½÷[7TqÍ(›Ê»¶çúŽÇ™Tî# QÜZ-«¥¼00+y^@Y›,ˆsâ ìß¼q·]v5«uMWCØÿ¢èŦX–d ­z(¥Ðô #]b¼k×uUYT´zƒ$Iq¼ Fwôe8(‹‚*+¾mÁîMŒ"›»š°h:ì"o¡Äçpo=*’Ëê6ôç: ^àsQX(†«%t@!$­¥c?6ÊÕÞbWeh¤XÈ••¬Kœ/PË´Sj^ޤ¨î³³[ŒÛP@› jêA¿Š}`{I„/¢Ðò£€VžŽ —´tZ œmV;;‹„£•j=ŒygÕÒ°¦i½}ý[†d1Ðx>ò8UK× —×µÇ h¨ò\O>ï —¬z­·¯ïýÁmjO§ùAò‘CÔË žBÐëˆrb:½aËæT:ɦ\+ZvRäMë)×rÒé´ï"'Öʵ´¦'ebLÚÇdŸ“x&÷!"øW+°B€9)rn£c4±«¸uËFEÜ 4mÒ®»oÙ>,Jªã{0)<‰E©b®n£VB_Sa^< E’S©”apÌ£m9Åb'°7Õr‰ÜÎb¾Z7`FDY]T«p3L.¬LQ€yær™ôûï¿?±o<Þ¦g·–cYÜeâ„ò{›;s¹!³Æ«2,?Nj/ŠxÞK+ƒåRw®S$Û1ÿçÆ“¢ÝÀxÎv}X ^L¥Ôþ­¹Fµçæ[„þ z=¹|‘w …JÕ –mC5ú¼[·n4d˜ªj©t6VW/WPÙjµ*ŇÁB“ÝWK§2Iðïh_x÷ù>;¸¿žûì 5 ¯û#†@BðØß‚\qK8]H‚Âæ ¥ÓéÿÞ¯ ÿAÿpºðSЦýåý!éþTÞÍòÊŠærñŠªšHy’©•>zíÕKO:±^ä×½òÒ’EóˆÝ»·0lóŸ¾)ó^gXËíEK!l y8 Äæ(M® Å GU5%@¹àšã°.²¢9”pxž/æs‹O?ãö÷ßH®;ÛÙúÅW»½Ñ˜bêÉØŽ)‰^x†×º¡š†M3¤e:¼À•KUŠ&à·È•8ŽEÓl­V…b@•‘}b-<úkW {“ØÿÛçSâOð´EŸ9ÕÈçó^ŸèàâXàZµJ 8X!Í|±H)hpCsÏžÞX(Ì LU«‘<‘—‹¥ÖØØRÍ+¹dahs£­£\®‰z”šCR( R)5[ÈPW­Y…B³‚ϵQ­É‘P@Ñ,P¤bQXxözéDoÁEcp„‚ÔÕE«ªåñP•Š ÊâñR‰ŽhgÝ„FtàÏ;RyÚëSyÊâ’Ý)JUilújË'`‡2r58¨%#W8·ÍcmD[åì-oQ•z³@³²àvY†žìí9|TŠ¡j•RU•Õ 7f’" ‡‘`äðÉRû¦ÝþØa q»Fµ”ì,¥º#~Ñð‚jÇšev‰Á£C§¯ÊeeËÌ,Ë+AEYrØ—w»ù/¿ø üN,ëM$=ôÎîp@8(Q–±õë¯ÀÛñÛ¶ïŒÆë†Yª”a@Â_98Q•p(P*Å¡[º%ŸN:ãä3™ùTRÁä‰tjä& eAoÅÐE’Éö&ƒ>ÿW?Àüu>qÏÎ6‡b}¡t*¯\Ý+ „¥óXA¼Á`g"[ёܕr±9(9–‰„ÛÚ;}þ ¢è|¡@âRˆFÿ,Ž$ ]ðf8t3RE×3f ¹ðÊÊÙüÐHlç·;@ŒrÕ²·¥®fào˜5ÕcQ4†0d JÖ –s—ª²c€1&|n¶}×Óãn ;`T¡TÕ ª¹%–ÉUa,C&úç]ñ(&M¼™Õ–5õMX–¢Åü>¥Tùìã-+ÄëEo «µžt²y@kWoO<^ŸËÜnÉÿO± ÙB,Z§éŠÇ/V•²¡› K34KR@q´¢Öš›¤¿|ÕY_×ÍeàÓ2ü¾@M7 &MËá]lW{‡Ï+EÃË0€uLÝ­ ¯ODøŸîî^޲=„^È&=üè\YëÍ8·´8å»v÷TKùºhº°è È*ü áö<€tð¥Ê0\Ÿ‡)w¨ªn$¦LÂÉç‹ø{ˆä9V“e4‘æ<~!™,úý¾Z¹èXÂT¡b-Ë„™|EAp{Ip_"mSÖ÷ìØÞkˆ…rÅí¡ ‚× ßÛÛö…z;Ú Ýi4€òHM_@9»zsŽ0iAÁ¶D–ËU°.}®5Ž=|ô·úŒÕ!C›¶~³£¡¡>ݽ{àµð'˲ Šùd—Ä“;vPÈŒ„côÍ×7k:aÚ …”J~ ¾M]]@•‹T# °  ˆT~µ¦r¯é&†xU9ʳj<$†Oƒý2‹Ä¡Ãødw×ÀÆÆÄžŽ–Xì«o¿|È]‰^ uÁŽ»m]‹…Cåb j`ÛŽí Í-#GÔÞ“ð†UO^tîØ>°u€[’:»{ P®êY/Æ T(?¸šMÙfGÐRnÝü¡í –¼2 I€opÀúê™-ÂÊó7v×uR”U™2¶tf¯à™ý‡~·éjvM©ÂûªVs î°5Ýó§ í ž6¸ÖðiZp¸´øÒ0ðÕÝ?¼?ÿTÞÿËå$‘šÖ¶Œ²d)½òÒ%ÇÿJДÏ6¿»dÉ<¢m×7 -ƒÖ½ó‰ê ë­ƒ¾lO¤ˆ\PHÓ¶I‚õ Ål¦ÅÕA/}B¶Pˆ»AJÀ§‚(ÔTMÓUP ÈJOOÏ»ö¼ß^9u²‹f¶¶” …p¼® ޼eææó¹h4ÏðÚ4 p°lÛªVå@ÀŸÏ\.P# Àk€:·[Ìå²ápþÖíâí€jÿÖî]¢Ú77ÿŸ8Ø¿NÖÔìÞ¹-•˦·6Á7+Å- –Äp¢T+Õl +v6›ŽÄCºUsûÄT&Í»$Þå1 ÂÒi]Q½¡R-€G 8èóùlL¿V?€C¥ã(Ù~(i¾X£¨Ö”˜7àEP4´T.Ñ5tÈ rE-®ÅÉgÒ,/X/zÝ©Þô“¯AV uw¢pÓšGŸSÀ›–¤¶|q¨.ì/v÷´JÒµÇÙĤ瞎\RT( mÿû¦KI‹ù3Iž)–q‡ +ì÷óY¹‚»Tx4Ö4“!莎¡¯Û¸ }+‰¼°÷/©ÿJ8–€`ùt&}ààÈ®o¾[1wʤði"’ž´bu¬±•á¥|¹®4DS#ž²]­ÔÀD‰ghª¡«à|ùÅçÏ=ô0>£ÝÝêª+uðž={€{;v?¼âVäõ£»P}# ¸I·ÞÖÆž¾ýö–¡êãÑdo¸¼mO×Ïÿåw»Ý«v¤–i=px¦ZŠÇã´%î e*¥ÀÈÁ²e…] ãü´í¨0 HtËU׬xq-íryV«ÕTo;‹§ËmÇ“Éæ5‚:èg¿Ì•ÕXÔårП}Ƃ싥rCcsGGLjÈå PГ±ÄèÀQ€Fj4ëÜÓÓ8hPΨ¹|Ÿ×]É–åDvÙ¸ ñÆÛ¦ú–-nÚ‚EªP’:$IßïüVÓu õQ?ûE[Wð(x‘ ´}ëÖU·/Cå"jo¿ë£- Ç'ó•bµìñ{>Ýç¤)›è›ûdzƒà‹’XÎ,×uãÇ_wÍxh‚P¬¾¦h$ë`€âK…h$V‚¡Ê»A?]¯jŠc#Q^¯r.¶Z‘ãu1pì@t]®NIVb uÙl©.êýôãÏê¢!d(jµ¤«µ_~d*Wd†¨L.çõ°Z­Ú³§ã©U«P[ײ7_7,[ x» Ö튄£{vïZ5s°ÐD,så²[8ôÐd2™ÉdX("‘Â˪ZU«U Ô'¿¸kEþb.ÐX.—}“Ù¯Ï4Ey©ZfÁÓr *”VûKƒÝ£T,À–J`À=VÁbêŠp/‰ÿhºyH×ë¯@º çÜûÁînãÛUí¿«?ÿTÞÿ›å †‹…H*#ѵJ:.2zuíU§L• Ÿ¼ÿÎâ%·©ž]‘ºæ ï}ªù"•ú¦/ÛzêÃÍբʓ´j´äʦÓMî]2ä-+²Ša@1Eä yŸöÐ À„·9hÎèS×¼· üÚÞÞçdÝ"yV¤t6ÆÓÙ4¼f8ZSÀÝÖ-ÃD|b˜ ® Íàl†!B:Ì<ü¾,Ët_Й¿zìß;²ï2–ý8ØÇ† Eg3é! UKöö6ÖEÀÌõf’¬_eþé'ß÷vS‚ÊGÙø8 mí[ðt,UWÝ·‹&ªÅ"ah-õu¥|ÄÜ\ðÀíæy·×"(ª\– /Ðõï¬"‘½oÖßìÖù¿þT ›c(B—œv½ï½í*¼í–¼—q̼—_½!Û¡(–I%zêâ=‰d(Ú €éE„©«¶¥û=R!Ÿ]xÍøù<- …tÜòÛßÎXµzÈ–®îļ1§€¨iª[ô$ H±äÜ߬úà#H}÷ž]ÑPxö Pow_°%‹¢çΉpó¥—¢í{ËÝõΛ¹ZíìÓÎÀñ/‡ ^öÒÓMKíé>`ØÐbAþñj”¶­ ‹ÄwmÞìÝÛ¶·kvÛ¢蛯PCŸ™‚æM$íZúƺlIÐó06Ò•…—_‰‚a(ÎÕ‹ß?eêÌGöû ¬¾ð‚óÎÅÁ2ýÞÉsçßqõÄEk×ÄÚS&7IÕ‹Áñ'ôèÛ¶wìjÍÕJÅbÙǹb¼ï«Ï>yhÍ2$WlÅŠß^²êã?Õªr²»cäð!m;·57Ö_sÚ˜ÅÏ¿T”°àž€¯Ö× Ô>Dû‹-Òf8ð”!l­"ûÞQ´›ÆŒY¶áý’\kjŽV«Š\®€¯ìæÁá¡"±H{{§×ã7 Õ5»Z“adÄ(µJss¤£#‰ã€rœ×ë‰íŸ×‰Çƒ_|ñm0lnŽïÜÙÝÃ熢žöÎ è˜mè>¯T-û׌àÏÁ@Wo: wõô‚o`ÖdR-̹îš5O?Ÿ.TLš'ÖŸžÎ$zÁ¡¼õ¼sîÿäQ½ Þí!¦"ŸÏØœ+TxNP´Zÿ3^ë p)|1(Éñ,衦)x Þ©B‰>!Ÿ«åò™»P2 TÊák<Ýîù+VøC±|E©šÎð‘ñbÁ˜rôhÄ«îX5éÄ“žùü“B© >qÓ€–žt *dúqÇ-}se9AÉ[(§ž>úÖ÷ÞÝ%,q¨[ á‚èÆ¥6-x¯Y“$h²-¥Í½úœÖ¯±>×ä |§½½íÁyó Kxþ“DÓ—,]vée·múÈãe®9è?¼¶¶5IôvÂïxƒ‘‰'œ:{í+5Uk¨oš|Á¸Û~p`KðÓO¿òzýðS3Çœqç¦M˜ž§X.ÃQÓ¶4ÃâÝb*t ¥ ¤«È2Þ†¡K‚ø ¨ü·×C°`¼TÕP½¢›£i£RÉwõ,»â $¸½ür¨.ÔÓ¦gÞu×]6áúC†â”b©¾±á’Ÿÿbéú·žwh:_(-…æÛ°¡·«mþ¹>üùŸÓÙ\ Neò / ¸¡f@a ]ŸG"it8Wø¡í«ê €ì·ƒ6;Ü©¹y1•Iý¡b¹à•|²\aH#¸["I”Ï- 쯯úÕ AÍù|poúŸmâŸnµV¡I¾¶¾YÈMÛ€÷á7mÓù©¼ÿ.åfu»Äš¦1"])&Â.òg¿vì‚ZûèÝuÛ¶}Ñ2ô€Íü¹&…”¦ÖÏvw‰¬Ï-Ð ˆÕ/ꪥ…L¡hùDDS´b¸ðŽ—‰÷´˜v ÅºŽ'ð“½=á`pÊEM\¸0 ~z œ¯” ƒøß4W‘Ë~ožá5T®¡™4KAuÃ;<^P @Ü9š1uŒ˜ ¼ `ÇÔ-Bö¾Eaô·«û¶îÝJ¼Z«oc»MÚV)Ÿ‹G‚n–ݾm«©*ñpˆ0,0Ï”ËíÅ»Ói˶«…¬_r× ¹¡lÿîûh}S¦ªpÞ` ¾1•ÉD|b.Õ[«TL›[A5@ïñHm»wCÁU%·Þp>›öû½K‡Z:‹F!—ª£Jµr‘ .¨PˆÈQ#RQµO ÁùŽŽu’VKN9ù$dqO~øgYG¤Gê(fð†EæLý–ß^ ‚ÖÕ…HâžÍ›z«2ã ÙˆÅÛù¿"bÒá%º—\-+åâЦæO7o »E0í$ËYYSõC‡%Ò™ÆÖ–t¾ZSTŽw;ûâæµkþ_‰1ºÝ|6 ŠÜMÇàE9øØM¡T^xñ}þE©ª¦29Œ2^éÛ¯¿„B.OJ ô_özÄR±0óÔSîØ°P «« ºÓŒSNYñþûxFµ:ÿ² W<ÿ¼¢ë ôàÞ¸iò '.Y¿û$.>›Jz}ÒÌ“OyèóO{:;‡ ÜÝÖ9mÌèe¾çhúMÇœ€¢±Ìtà@¢9¿9‰þ÷Ý+ûxŲF¶´lýrg(wÐU§€ƒv)7gâ„=¢ê†äñ±,›Ltßráy«^~Œt}}<“ÍO{ö² ›ê[»we'>zõ«¯¹¡'‘šÓt´»ý¾O>Íd2 .¡€ïÆãŽ¿sÃÛ<Ç©Š<ñô3‘ŠV¿·¬n{¢³¹©•§)+[zâ‰kÖo¨9z•&lú&-04UÖ§_tþ’V7¶4oßÓ¹hò4”ÈLyæ@ð:èöÙb¼êpðª#^ºþÝP,”/Y*42`÷»7ý8Ø·!܃ ÀÁ´=gUÚ±‚tÅQGÜþÁGP·Å|.ì÷ œ‹tìÞÎNpGiš.‹$Ũ†>pð0o€ïM”,Ûà Ú½®®lvµZ=è ÁსÑÛÛ Xã±g!Þ-Êq4,•Èù}¼ïO‘{zzh–­TäãŽÿå–O·µ T…4”pøv›ÕKÓO;eÅ»ï× GðFÀ£e«– ‘ £ÐõcO¿iÕ*†wSœ«u@ô›­=‘(ôϪ×íÍ2 ÁÈš,ñ’C9ðZ·u7ç®é5x]¨<‚‡s1,AAjrMÏ—ñæÅPHLt$=nfÆIÇ-ý,ƒw%ÖLkà°!½5Ks.¢¹>žO¦š|ü‰÷¼ÿ~"‘¨knÌ e¹ZרpãQG/zíu7ͺ9:íô³N¿cÓ¦T*X¬›v8ZÎfó¶ãàû¯D©—Ô Ú_“Aü·ûôYƒÚ úÀ¢6ûÚk篺Ð êÙ0µ¹7LB=É+ïyhØÈSÏ>ãÎgŸPŠ9p­#ñºª¢N8é´…¯½ÁòÀ_©˜—¥QÀswÞyçu& 4ºôÖÅë:^®½èçb._Àé’”i¨%¨'ðÕ4¡ÿ4¥˜*/òmm‘p>èmk_1áúG^|é²ãOœóú:RBA%Ÿ',+à‘ÞµcÇN[Lç²+W­ž}˼r­ojRT}î—N›7‹²Ì[.¹ãžûÀ£Nå ñúF¢Ã@r6^GÔáCâ–p®ª?´}ž©•kGÁwʵ²À Š¡À§ð Åi–æ}ðŽè³Å,<ÓøF4:Ø_ïµYì/fˆ$ñò½$ys¹ ¼£(àIØ"ÒŒö§K0„¥Yð}í2‘ië6 n ÁsÓˆþ©¼ÿ.å­Õj#(ºêò±¤£JŽþÖ“]}ú˜C½·îx±¸}ÇÍ-C6nþs¦Åÿ8l[¦$çÔ€Ðe xÓdñ4[Õ-D(Ç¡!S†‹¤ACÂöø}0ða¸Âp±ƒYV(Í=æÖ×_‡¬J~ŸFù¾ûUð©UÓ„1 ¯ûçü|žS©T@à5Xkšå|R— ’…÷!]‚¤a(:}‘Qß©‘¿ÂAó¿à`? –rÙCG øæÏßhnøîë¯WL¼ÔIJfE¯|á‡w/ùÅ –´k"©g_ýüÑc¦#ɇbññóú‡ª¹ôÄѧà˜Mõ¨·±ÌŒÛn1|¨*×®ºä·xê%ƒ¿E=ÝPB*¦·cù+¯‘ASû5rÀ³xd˶ËÎú-¾\$Ó{åMלzθÏ3\Õ "dÙÃÔDÁ¹âÈÃÉ=¶ñã|ES²Æ —„LïÚ±ôò«|ô‘ß_r ²íÛ_z.2xXWN6 vô³ ´ÐyµZnˆEMùz˧Þq‡Gp—wíÆ«!H”nåeÄâŠí=©Q?žHÉýuˆgeú·öaöþx:ÿ2ÒEÓV­8óì±K(ög³YŠá&Ÿ~öäÇŸˆ7´VeïÙ7=Zö¶w7åKe¿s¹¡É|7sÇ[ok!‰Þh4zéÏþcÁk¯E"QE­ ,Y,äÜ¢|¦rE®©Ê—] ö:j¹\ÿ8iöèSozòIÌø\ŽgòYcg<ûT,˜t©/½ûÞ9GþbÉë¯Î;vöÏ,ºôªûÖ½U¨L¥⤠ϟÌW<dlkæqGß¹î ‚bÉW·øTªåüòkÇßÿú+åb¶T(xÈ¡ãÆþæú¹ ê £«åS3ÇŽYóîÆJµ ‡ºzz-\|ÓÌ›£á˜Ç#‚ÊLøÕ±÷¼÷>Xèh(X.W'»tñãO!FØ>7ÝÝëÖœY_ºèþ¢Í )C6(ÆßÑ QG79õ®õ¯²<ËÞKfÏ_ñàÃ0Øšd¡{YøLÆUG;ÿÕ78·'W® >‰Ç¯M9$=pï5æ4MÅÇX’ÔL½Z‰H¾ßŸvêíßË–KA`ª•І\]4}jß³äå—gNœˆç¥gÖ}÷W5%ám øG…—^Šc= ! Àc],Ö›L.¼î:”LÞµyóõǃ†E…Â-÷ÝíÞÜØ¤x`ÁåW_â1T•/ž5çð#ŽI¤R.·ò˰œ­É>þ¢ƒ¼ïãOqDŠW±Ä‰6.M” Ùúhäª#~yïÇŸ‘ óÅWßpÀˆdªÀ+—ÉònÈýÆEÇw… P6¾õ´” ð±ÈJ¡(J^’uáÓB€Õ*K!žF“O>îïo4T”‰æ¥\YΕÕxC½ª•l]±ÌÁ3ÆœùèŸ>d9מö=ᆆ|1ÃõW_yã¤iøü˜áx|¾¹®½å¡‡†¡80@ ¼ÍÍ­8@ª à€Zýú¬™€ü Ïn7[Îñ± °N ih:|Á¶Løß©'œpÛú·¨¾dÁ€PÞœqÅUÏ~ôæ¦MÛ>X«,°‚,ɰ®ïvì¼sÎü…?ŠF»iÇ´à}ž¥Àö±4}íñÇßüè£ MMEC~† ¸cG§Û-’4 †€dh@C|7”‰X`ç€S«øÀVÀ öÈÊWJ8†À57ÇÛöìá)ræi§ÞõÇWC‚ûüc~}Ïçß&JµĨ hjÌfÒTßÚ·¦ª3Ï;oÚÃuð°]íi“ph†³yáï.@±hõYÓa”µŒhvçîݾ@¢±„> î(ØÁJ ÛAÈd ôCÛjÕÁ‡*qŒßrµõ ¯a” ¢PÌ)p±ŸPÔôþòÒ`5ƒéKÆI_ºV©/]hèW Bß|æ¾9Ç¢ÍþGÓ…¿21þÒµ*^ëð{}¦m•‹%¼ìHÑ?•÷ߥ¼’ TŠU‚B&eˆûî»\¥ñ„_}ŸPÞ[·9Œ±$+ù¼Ù^ú¯ :øiÕtÍ*ÉnÎÙ‚õ÷åá°Ã•e½»»sÈ€™TzÆÉ§ÜñÎzÓl±ÄŠ’bàX'@`óæÍðÜ¿Ùè{€ºsÌ1à—Ûß}÷àâAåÁ–÷¦’@%P)£9œBBä©/ô!ê·{W5ûq°/^ÚÚã c{>ÛÛÓlûê/Ë®ºÕÇžxüqGÓ¼0î‹äD÷ÔÇ 67¢A¹P˜|þ¨­ãö?<2õâK|#F,¾û^*É;N2“n]Žr,Ç0thøñÇ Iß³~´ØÎ‰§†Ôÿƒ‹Ï;ìÊ£ë^¿ôÌSê¬ø`[Ø+\<ÒG{Sl¹åÁgyA¼é¢ß ÌŽy>8ü”]Ú@QgõŒi'z ²…‡_סÝËB^äÈlwçÂë¯C¥ê«V_uÁHäW<ýò… Îgà{Hö² ê;Ym¶ˆmv×|¥tjÁ9ç š2÷Ž;[ZZòµê-Ën«f2·>òX°¾¡jÛÚ»â`íÌþ‚}³2xÝ?ÛxÝÙ¶ÿ•âPûD÷Ö¯¾5rÐugŽ™|ËìHÀ gîï¯BáºEwßïñ‡ ¥2CeRçMš€tcù³/•kŠÈ»`x9à«äóA¯gú£½ðb8,<*ÊÜË®XòÌÓ¹l¡¹©¬T¥\éw:Ó­“'?øÚmí_ è]x#ñ„O¸ó×½˜–ZO:ñþ/?Û¶õÛ•ã.YñÌ3S.·vç¶³‡ {·sÇññ·¾òŠ’8IRÓ¥|¾Œ7íßÃðO0¶1ó„cï^÷&/H=©4ïaLÞ8vаÛ^z®mÏÎûï½oñ­·i5d䨽ȱž+~wá”é3O³À¼m;^¿_•UD€¼Ø3§O6ý&ð€§].Á#£Íõß%C .—!+¢AL9uô£›6— µ[. ë÷zA ‰bí¦ë®Y¼tv6Ÿ@‰6¶$ÒÅúæfì+rl­\04|ÂÉcθíÍ·M|%M BÍ’qÞ7;¸7ì OW*e‘ŒZEb\zµL›Î´³ÎœñÖ[¡úðö­;F Bi–Z.êÕêMœæöÇñüÀ&×þúØ»·|Җ莅C;v¬¹yæêgžÙM%’ ¦M4gîÈHö&$¯ärÒ… RùŽ7^Wäšä'Ž>måÚÁH’”H$æ_wÍÃo¼ œã÷úß^2mùðB5íæ-]=i7CH„6éÄãV¾³É$9Å"TÃôûÈÒMUFŽðHWqÄÌgŸ}~Ú%ʵt¨–ïÚ߉ÆãQ¬©ª N¯ã€ß2êCËTýâóÏcuuÙtÐ $t¿P©ú³ŸWkJ>›!@“ÎÔãŽ^õækØZ(Ç«øä8ªê–h¥Vv¬cèÓÆ]tË}÷€_Œ²åŠnjÑxÝŸ>üà™%·uq§;…TuÚ½÷tè¨]»öPz˸8äݵg7Ž–jàÉÔ£±>Wá}Ðg·‹‡òy¥d2 íß?øàQ¦ahš6ïŒÓïØ°A×4ï–À‰ŠÇ£Å’’.ÈõñúJ>í¢Q9— ýßoßvïª;W?þtQÖŠUyèˆÖÞ®¬À3r©æ1ÑÓuï7Þµa ^6_€ÇÐ\µ&[–-y½Édú†\U:ä`KÇéʵ ϱùLLi8ÌæÒP™¿<üЮd4q±r1·èòËï}æ)¢¦ŽwѼ—×sŒâXÈW-WlÓo0‹å3Ùy“n˜½òND’ÁpÔÀ1kÈRªÇçè•lbá- Pw6rùÊ•AU·wws<¶ƒOls=‡ö³TªÐÔâÿíëÏqšaÀ§GsLµ\f8nÛwßqѵó‹xcë_¾ÞóU"×pÒ‰ë?ýæŽIs°oÞD­M¨·•”‚3gÏr5ÄMäÜrúYÈ@•bh<ÙÖÙ‰†ž:gŽÏçÝç(ÆØÂ›¦M˜6}Pë`$ †E/ó–k®A• ¾á„¦q,m0“4}ë“OBÙÀŒ-ž1uw!EG-M¨³ùý(š>{V$\_µpD2¶7Ä ^Öì‹}Eèû#=Q},Øw<ÖdÕiªSÏû ª–—<þÔ…^-¹)¶¬Önž< ¾të»ïö¤zb~¿Ë0§w"Ä +ï¿OjjI—I~¿—,dò]¨ï°7C“ 9×êµ/²4S“«“Ï>y½«xp¼ˆE~èÞ+Ný5"ù»>ÞîéXøÛ£jå±·É!X—S»æ˜HNzéK!â÷É9ZMò.óšŽG„tç3/¢è,Q(\”=ïô±¾´6ê–N=þdÏ}ú§^YÕ]Aàö›Eâs6iÖ%è“j¥lÈÅO¼ð"´§’V!{ûSO`Èý~!ÞÞÞii¥Üb2Wd8Ž•aãPy,° ÃÖ88XÏ¿BS‚‘n­W (Úì©“P! ¹¾óɧn8íŒÕïЗqB­É4a×E#Ûwíf½’åÀ6”ŠYÀŠt Ý¯9ü—Ëßz³/ÂÞâ0ý”ÓîÿìS¥¦³™€ÄƒóP‘•—_ŽLçá·×·}ÇÐaÀbÑhOgÇ1SO9yî3O›º Ö×ï÷ϸâ²Ûßx…#ˆ ??ò‘õï\výﯞ4ñþÅK—Ü{ßÌó/{xýú6 FëgE¡dàë;êîuoPœ kA²¡P`û¶­‹w!¾Zr£®Ž5ëÖ»ýÑd¾È¹¦¥#¹@#gÊä©(“ÆWi{|gÍ1b˜ž†ºº·|tïêÕ6ŒÓtù‚·ÞõͺŸ›óŠ€G@f RàòŸv߆ UæcÁšm€Í&ukX¼nÏ·[gM¼I.”)£ú¦›æ/&¶µµu÷Ží u€ƒÀ7“N<ùÖ·7š͹½½€YÖî;Y¼û€*Š•RÀã-åÒámÕ|qÊ™c—mÙ’ª”ŸR*Ê™ìàÆÚ¶¯8êÈÇ?Ü\*—IŽéͦOž|ó}÷øc¹Rš?fì¬'Ÿlnn@aY´uúyçÍ~è! P$è“O<ñ?. 0¾-]›vÚ)lÞ ¢tÓYcç=õ”㦠’C)†½òòßß¾ñ=—ÛÓ›Lq¼›§P€µ®<òð5ï~@¹=5ƒWÄŰåR!ò+8<¬:÷¬±lù`Ýíõ–©Vd¯OšzÑEXágñ©X±,8Óo½5 -€®£övÔÔ„J%î¾iß|ÿ>_Ð4 7G+åüÍ£O^þÊK±h¸XªÝÎ56)Ê%ÛÑX†ð ¢V­M=ñä?ü0“Ëø2¢0Zª”Œ;ºD> {pÀÎ7õÞ{ åtÁE¨VÇ9ϳx¿ìíO>©¨Ø{_€õ¹éjŸ>wöéspú¬™ÑHjuê§ÏÇ3è>€C;0L$ÉÝÓ›õøã8.C°ÈÊgzçM¼Ê»ê¹ç5›rh–—|ÛvîÐܤé2C$áL;ýŒe¯¬…:‡lCÏ!uíᇣ¦F”Jãeœ½v!gÇ ^¯÷ïhßB¡ß.ßg÷Õ³ÞWÞ½õ<­¯¼à½L;ó, rÛ_QB]î™sç¸XÎãóNå§)dÙø| ßíËRHgÞæL€Ã"Š„Oß|Ï=´‹Žú|r2uÓ)§!ÝB ÷Ì;ëK$4M¾±aÏî~M¹õ¼s¡Áp“‹È´@Xÿ¶ ºÀ±—Ÿx\w=ñÄõ\ˆ4í•6žyÂaH'îû¤­œMM?m$²¬7¾KŸ)6C"yí¯G!_tÒ3Ÿ‘n‹«B))ÑC\rØáˆô¼òÁçÛÛºX¯ÏÝÖfœø+dXϾ±n÷_¾ž5i‹LY²`ÀÁ?Ï›LEÅËv²RÃÛzÜâèÇþüçÎÎNApØŽ»á¸ãþðÙg𦂛zÓ9ç¬|í5Èd2™äYŒþ¸¹\,ø|¾ËŽ<ù¼xà3’kˆs*Ýõì ‰tÖ×ÇÅÐjáúŽ[þúÛ¼?¤˜dW"Y‹ãE Ûȧ“‘pp¯ŽYúÆzVp¡êþ÷D¤¦úîð4Lÿ‚a[–)ºÀÁÙgþÀ†õÕ ðÁ¸=7œtêmoo"X’áÉ\&p{,MŸvêèÛ_yÕ%ð†c˺êEÈÀÍç7燢Á‹ÀkR7œ6æÞ>ì;—·L€WPªTûë íÛ«ý·áÙ÷e~_àèþxÔ3ÆŒ™ûÜ3’à†–køó ?€âòþZU!-Í1噞wï_qOw—K м[C¤¢©„c .€XhÒÚìÑ£W¾ÿ>IЀÎ%@aD„ÃáT*%º=ûã;ûBÈã“p8XôÞ£HýÛ]p¨zÂ&RòÉîŽàáàm6Ê‘'„qÎ3/„þD²'AŸ×u ¬éÄ#ºcÓû$Ié¦Y,᥺`$ZHtù‘Ê sâ•WCÌ¿ÿP¬.•Ë7´´æ¡þm(õ½1±ê5”ÿ¾Ç¿ÏâÿŸÊûO)/ü ØzÃÑ)žR”‚¶7­}ñ÷£OuýƒocìÞõeýÀ¡7~Ræ½hè_u$9$Ò€Òi{/"¢Ì‘‰x££ÿgo†¤V­¨2ŽñÑÔÐxù¡/zåU^uÐùœiV×qúcM÷ÿtÿq_ÌjâïZ,f”ììøÅ!œ7òÄ+Ÿ} ÜÕJ.‡/ó Ù¿tµmóÈ“OÚüñ‡C›š‹½½óÏÇ×Õ+…ââ•+½Í2¦åª¯ãhjòa¿@ŠüÐ;ï_—ò…W\”Úò§ŸÔÜÚÕÑ6ñêñ¨TxíOŸ.¬ƒí¥‹Ïø5bøÕïmuQöUÇEJuúÝ/Ôp˜CÒm]qÄÄon㼨¸£ÍCÉÁ°pÅ‘G “{pÝ&‚sWùE!WÎ/¼n<ÊgQ±ŽÆ3é4’efÄ«Öî ëögRi𿾾ºÀ{܉To}S}­Zr!ghSCç7[»v÷óÃÀæýæ7g£j‘ä_~•.W²ÕŠ;ÁÁYÜô/¿XÜ?;È’$T&iª~ѵsçö¦¦–ëÇ]°àѧ|àÉÏóéTψ!ÚvíPu3Ü2(S(‹¯È7ï²MCUäg޽}ÆšRõI>Í0¦tòœ—_nmmÙµ}§S*-2å¾çž'(†bØžDªV«1"“Érp(zÇ|ðš7_G>Τ‚¸TµØ‰Üðó#ŸûÓ–²­§Š9˜†Ç}âãŸ}’!L‹¢”lÙ6#yT¼ù¸£þ`S:_¬)ZCsKGGG<œ0æä»Ö¾È1$ØQo 8áÒ+gÝ}ɉ"/8µÒŒ±§/}i-Ç»\œ›f™«Ž:fÑ«¯ 56Ô5ÔÅ.:xÔÂç_ôxESSC¡È%¿8võƆȖ4GàSõzÁwýñ'¾ðÙ§©rIq‘ÙjÙçñXŠæs˜ëO9iæ]· 1¬7SF™rÊ·oÜdà‘D½V±MlÁ¸ V¸EÖLÊ%‚¯øZ,®¨Uš¦ Ã`nñ¡ÊÇž±ü£z²™‡G·ÓÃYv<è'Msü§?±~½¢È™Bž÷z'Ÿzòš?} üšÏ¤—ó«c‘(>ÕKR]+æ/¸åöål Çú½¾«(œ~á…7Þ¾|À€ЄåB±®®nûöíºé0B`ðàè–÷?{põŠgŸ}²³cÇ h[{W¸¾ª¥¡±~»§«- ¥zË-š»x‰aYèð³ÀëÀå5ÒLû¯&°9a÷ã ±—Êì¾ÐúŽa©Ý=¿:ê°r6[I¥¢>]•/=y̾ÞÕ[¨1x½&À´$ásÓ;wíxhõšÙK[¦í–<ðËÅx|‚)«¬R¸æ¸£Ú´9[(Î8û¼o¯×¡íYuïlÑ«Êß\õóÛ÷ñü¿»¥ãÇËÏýüSyÿ‰åÅ3eaXí&½4zÿÅç®=FÐÕúq°k÷W ­{qÐ:ò/])ÖæY|5 8?!â0Ÿd™Å 8sBýñêÐ~gDŸDǰr*å28^WyÔ—ׂ h‘?”/ðÀÞwµ×¾›‚öº§vD¼|”ÄÖ5Ÿ$Ê…\8à½ü¤“P)¿ä©'ý­†“L¦nš25Ô-¾}…è•°dŸw.àk×^>öLDox_wñ[¾ûþ¨#ÿý!‘Ñȼyóš››¯þýZgòxŸ}áyâ/ÿüù‚›oFªúèKk¯¼òJ³˜íý·O?î?/0ížg꣡I'„“üË…«ÈË+/ÿÛà½ëÁÇÔ†ßï.ˆZÆËé¹B÷Êé3PżaÉÊXãÀ‚¦Å†êNvzíÆ'¿þ¦’ÌÌ?E#ãçÜ<ê¨c‡ºµQ!—_~é¥HQ–¾û/ò%¹„/áPk™îÎ;.ürq“çÌ=äC¾Ý³û¶3P ¸èî»hA” ÃŒª¦¥›Ö¿ÅQ(8†mÔJÕBÎP*n·{öo·æ­uÉVl:°–‹& ¹ô¢ßœY_ºé#YÕšÖU%ò)5xpîœYÓ¦M#IÒÔ-00ë’Ë<þËp•BañÌ‚š¡YŠáŠ¥J¬¾~úé§ßþæ›$I»\¬¡ë»¶o_sýµ«ß|½\.j–inRÓáÙdWçʳ/˜óð#:ã 9\7¬î=íKοdöSO¹šë`$UÃír˦ùãá m[3/:wÁ+ÁÙˆ7¶$R醯ú¿|ñéš+/_øìÓ–‰oàèèé½ãêëÖ|ô‰¬Û0c^áâƒF!ž¿é¡‡dY †Bó/¸pÍÆ‘ˆÐÖ–©UÊ Î=…"3W­0u"¨¥ÓfÞ¸xihH‹‰£nzµ6(»ä翼ú¶e¿>õØ/Ú;h‘74= çwu.ºpŠûç.[Ú:däw»v/?aÅëoB>Ó©DØï¥H$¸Ø«:fÕæ?åJUÅDc–ø’Ð<£ëš©é}Á=÷¢¥ G£;·o¿õ ç¿ü2/“$ï¼ü²kîZÓÔX?xðàO·|¼lÊ”Y«W],•uðø±g/{ö¹p$ôÙ—[cÑ:¿GЋÉ)gŸýÄÇŸ¶÷¤eÉšVW×`ëj9Ÿ‰†ùtjÑùçÞÿÉŸÓ¹ã³x|æ‡zÿP3 AVª5‹ «5%s³më·JÒ³çÛºÖ!ßô9C†ÿ¥3É"ÁÑ0 ߯AIÇ÷CTX|[‡í>ûaÎ>QÜM­ªÆ2´¥rµ¼tÜ…óÖ®eÜ¢ÕwÕ²ÓwÈÿûsŸ«·ßÑÚ7fî,D臚‘x²Ì|&ÙR_ÙÑGà-&¥"¾…L{îÃxB¡©W\Ê.»›øû¯¼â ŠáÍÎ$ùݲ¹«-Õ~{ÊÉ}7 ¨¾õÖ¥¿»%“ȱî~áÅ[æÏÍtwƒ;úÂÿxîÑG¢pø‰§¹âÊ uYAáÖÕ÷Þ5ñ„Ÿ‘áÐ’{ŸqÉx!ž{â‘»wv&ŒÈp·Ï?ûWG  €Ô<2 „ÜH £’¬yýš;kVJeT)Í=–ÄðB^Û.-~ò ‚“JåZÐãàN{{û @Cùü3ÛþÜÝ]˜vùåÈ6a<,ðAÁÅôtuΚ0oÄ‘h“ø$– ¨vǸåškV¿ôr®€RB_u|í{ÿ!Ê¿2lý÷Qõeiï|Dÿ$¹ÿ S ꎃ² îÎöŸ4R-–'üælkš÷"Á7ÿ±§òù|Kk3ÀtOo—$¹çœzÊ][>7Á²ñ.7´N·¦²Šûøj);ñìsQ¹ºøÍ·DÉ—Ìæ<^¿#]쯀ýëæ}Àú[÷õ´ˆÝg÷<“ho/ú1sôãþóSyÿ‰å…þÉ F· Z$ýààó¿}š[W?|÷-h¦§c[]ÓÀ›>/¹<ÎÐ_u$‡w Š$ŽïaE¢†q°Ê€ƒŒw¢þ q÷-C† Õ€aÍÒL*Ù{à°ȶ4MŸ4zôµ¯â ÿ@ü«q…Ð߸¤ÿ-ZÇ>ü?„¡v±\OwWsC½*—,Ƚ½Ý]-Z¶w¶5¶¶‹Õp(T*«ÉD"à“|­‘%×*ø²&ÝD”©¿-Æ´r,Y,ëîî.—ËáP`Ĉº­[{pH?áÈdªN¶ `P"gs¾Fò>pí±‡C¦úàSJðç Û4ZiÈÈQ]Ô“)Œàïlë¦(Å/‰zÉ´Lš“‚íéLë¡õßlëñ»]7o§³Q¡o 4¢p´ÁÒøD°…lÝö ¢R‘5EõüéL¦a`}&Îm1à—Ìš"²´—w‹EÕvxQ¢i¶ZÃÁ¨›šë+²ÝÓ“ðÿúa¨á!ˆîj¹ñI{vÕÅ#ÙtÆ +†åöø™¼[òÐ4YÉåê¢BºxÈ yÉ„?,—ðõ€€ ‘`€"ñÌÈ}}}=IÑÉdÔœã8è'J±Ð¯g]ÜŽ]»YÖ‹×wtu.ÕÔäùú/mÑX8“èD½Ý=õ-MUM‹·†·|·c@}SeG‡›áBÍñ®T¢®®!Û›¬CUMO"Ýåõä;“‡ØÔ•üÃP“Že–Kó¯¿îº Z+Ë`ÛÀ û½„©45·lùBðx)—H÷vÁ7WVÊC7lþàÓcý‹D¯Ü›J‚msë÷{-Ëéìh‹Ç£û믿­¯‹UÓ]’«2M(ȈDbf¥êEÜÄ_ÿzÖ£O¨ÈÐyÖ_®TäÖXÜ.ÔðLŒV„Ê4INòz÷t&½þ@.“öáP¨–¥Õ M™ÞùãïhøAÛ@RžæYô?…¡.+·ä†Œq2dE )B3n<é¤ËÖÜ;dÄHU«y½CR…bhoÀ€–¶ŽÎh4öýwÛ‡Ž.‰t2]kkk1bD¢·kÀ€ÆŽŽîp8ÜÖ¥‹[ø6AUÕþ‹ŒaÈ»\ÄgŸ}ûIâ›àCX,´kÇðúš››¹"÷,ñB$M÷“4£›8Ü­Ê„ZY|ã‹zÔ¦8w0\¨(4A³ ‘èê`IçöÓV=þx©R‹ÖG³y€¬/vÂÿ·î×C–Äá$QlïNø}A^`w|»uøàV­Zdð‚§é rÅ*°>Á‹…j™å€Ñ†X¡›»¶ï9r$ŒçØšm*8€c­\‰‡"j¹ #"ÔP§BYðõCsP.·8È/ý_U—Ü;/Ø·ô´ßìû«¶6J:Ž E€´víÚnhJÊ?ÿeýö¯ÓÀï 2="%«ãk÷x¸.™É@ýƒæ×ú‚:¥sYNô¥úî>F}7®ö_…ƒíÅA‡Ø?¢ˆ½·RõÍ|ìeDÜ@UMŽ×GkÕªR*I «•J ¡p¹¢äsÈ 5}¿­ã˜P82îõ éd¡ïZØPà.H_e—ó=>¿È°‚¢êÁp°­=‰ÇAJ ë¯7€Úû׋÷ëôÜ/Ú?þê*×+??öóOåý'–·oïmØVßì`ÎgŸ¹ ïT?ÜðCÝݱ­¾ià»›¾(ñ{ð°¿t$Ä#t‘øÎ ƒÆûðÜ:^«-s}³ƒæþ»x8{ñÍŽGÅ-[¾ýÚ;ÓßHÎûÎ×}÷Ý;H69£áÌX–=ÖNœ¬‘? @ € ;y qõ¾Þõ2 Ë ù;ð¾2 Ê bɽ‰"[–æ&9’¬HŽæ>8<»ÙwuU×}íï©j’=NV“xäIü| üP¬®®zêéçø<×ï9~ìX&Å_û—ðd(Iw;Ýt¾4Âôá=’ÝïŠOî0­ÿÏ&uP‚0,ÕÚÞΤ•¥#Å+ïß•¡–bHi&ÛSG–f1›S…1 %Ô½õÅT†0M]3òõJ?òû¦.AãÕvóJÖ5,Ž@“«ÆcSÎÈÝ‘Fð+p¶m‰Â‹ó4Aê´ÆâìÆ½T„»Û0Œ8V(3ã±÷b“:Iὑ©«sÕ™ÈsLÇÎæò[­'gx1õ+”æTà.68žq)’а—g¥¡Ö· ¨ÔE­ ‡ªÃ­f ~5(ÜyiÔ+÷î)ét¡T‚Ô¤›n§×E»#:žç#×BhÉ¼ë ‡ý“Çk7nµ8%=°ÆLZ¦|ïD&×oö ™7|PÛÓÍŠ’ï¨jéã–:—ɶ¶Û¹Bv¯ýç/¨¸ªyik³ùõßÿƒÿýÊ?9®çºn1›ÙÞZã©0 ¼B¡`8nÄò+¬BFÑŒB^yïp’鸚n@[b8Ô_<í ŒÀ±ƒ~7V–s-›§8£”à3”Àó­ ÿŸ¯ý)Z‚* /üÍ_’"oÆp·óñù£ƒV‹HЦ•\©Ùég‹EˆYduUeˆà¹ÿþ߈µ;Äüü_ýã?ô‡&´ˆŠ•hªÙ¤Ž¤IŽãLcÚ®ÌÐaíË_&F&Á±ßzñÅn¿3Û˜Eþº¢@Éì·”’î÷U"ˆlË=z´Ün[éŒ8 ‡a@õ¯ª€¾ƒvCVX–î¬ìõµZÐÓ0¬TJm×2ƒÐkÔËï¾û³gžþ¸>‰‚ŒœÌ‘\yù\‘¥ÿñ;¿M ZÃ|ëûÿWÊ 4l9 #‰FMùã/üþÿzþk™L†“RÕ ù;…î# ™#&grC}œ†—áˆv³]¯”èЫ}?Ãíö†sG–Úª.¥S™,qíê­r¡Äd¥ÝÝí†I°” (cÛ(ÏTßÓú*4Ö+ù’íºÐˆ7<äU€2pa6›wцæä¤„ŸZG²?Q ÊXò`x-@S9—A#¿²,Ò4«k*ü"–{ûîæl)ÏSºÃ~¯V«¥3™Íæ€dša¡ø‚¯gd1ò\ ‚#ÈcÛ)U³¢€ð!"´¶;¬” ÷)J*E¶¡ó(‚¹Íæ¤áb.å%k8Œ,G–3 £q&ŸDJ ø¥G£!/°P2[&<·4ia€Z͹žU(Ƚ^§PšŽ4Óp«³sÍf«T®Ú®7©h’$“ŽŒpMs@ñÃÿ=ßø}Ÿœ÷…¢Õ§ý0 $2ÆÁàÂ÷¿÷¥ßü ÀÁ•dW’õõƱ×μ=Òáñ“ïÆ½ƒ„G‰P¡K²‹­q”OÌLb¿W Úè"ÏÉ¢èXvµœZ»³SÈå°lôpâÃÓntßôÇ8sígû©áà).Ž?#p0™;iôÉ0¨Vä¿zþ×?ó_•·¾±#Òív§¤³|Š(­?òCh# i‰“D× Fݱ̧«Y¹Ûsø ¯‡hß‚|v§Ù¨Bî*ÐTɘ[UU8óþûÀ…‹ðD ÚÙÝÝ:”ƒÞŸ|þó„åKKDk §oýÅ_d e¨âhÓ\_Õçæó®cèƒëqéT øs­K´ä#5-sJ4ä4ë¡ =MÜÓTª4šÚÝÜ^¬7(ÇWÛ}ÉAU~ÈÑ.éso¹vi&ghºë A–T:{åÊ•¹ú'µwZãñøøÉc»ËpƒÒŒÒl›¶1>:?ãZÖxØ-Wk=Íu Ùõ2”"£N©±6b‘5OE¨´jõÚ»ïþËÒñ“ˆ¶¥Ï7ê7nÞÉä ÃáH’•™j±Óòœh™cY9žõ{€•réîÚz:[ô)pPívù¡5“Íl#7“G³}R‰(Ýõ‡,È8›N{†’ÞØÏMP÷uw¶–Ž>å†äí{Ù\æh‰c!ºdŽêvÐFjcË6-¦VŒk5êU¨ú›»íL. ä”lú\,xŽØÙédÓ©BNììª'¥ÂÁƒÃ¸j™ô|$J`H?ºcf²¶éŒÕA^I‹$åŒF"/I™4vÛ;N¨š yßhÌÜÛh%£ä²ˆ–ɧå,¢ÛtÖõl74£(ô!µóbÆ.ÒÆõ†Š'³›Èp2ƒéq-6ˆ{d­÷+Ž“_ø ü¾OÆûFT ]L™¶Í~Σ¥$¿!»ö峯¡Áâ;wo4ŽíU““è§Ž]Yo2¹?Æ¥!ÿ‡‚‡²™ÉR‰Ü‘@‰°7«oªD  t„È ÍÖŽÀòµJEiŽçÒ‹î/Pþu}` Aìy2(°÷¼dX3ÚÃÁ$(“â[ ç¸V2¢Q-—677Š…B§ÛåRKs)NÒ;#‘ä€?‹ÅüÖîf®^lvšbJñ=hÐJ2£˜Cp ØØ ŽaucœJÉ“ÝKYV3´|>o96U(AZ– ÅŸ=Ö ÐÊÔÕ477çBá2t“­r-/t*WÈ5Í´íl¡Úíw2)š VƺðÈ’ÍRFömƒö=R׳¼ØíöÒ¥‚Ɇos•åÐr]Ý̧sQE°ž-ЈOè0 '4yÓ)J7 I’v¶›ùyÇtºÍÝZ¥Î³Â Ûa¿wp0$&Ó@é¤ýdRÚt¡$¹}ýú‰ãÇRJæêõë3µ:É;;µÚ,K“c¨ãC´;4BFò|äÃ%„ÐgiʲM :hýïììÊC„p‚¸»»›+¡2Py¨ö3é+¦åt:úìüPBìPnoo×k„›†–Í@eOkpGÂ-¥sét´ñ8p‡ø¼}íÖ³'žnu{^JeÔF°=ß~|8a.•îõzž‰ét±T¾}û6„¶µµì•ÎHÝvâÊ ˆÁØT2ßõrŠÐoïB4Ò,„AC«/‚ºõ•Bª†ë+Õ™ÐsC?€ì#2œ1ÒJ•rÇÔB†B ™6cûI <ФA#Ë€äÝkî.+ú@¥–bhÛ÷)NôƒxDžŒz­ÖÂ\Eíu}Ï©×ë#ÃìöÔB¹l˜6AO–¼í÷¡%%!g•;kksóuˆyŽ"¡yÃp'Mr–e¡íD`IÓ± ×.W«¾ŽÇšÝh{ A§å´6q<ÏðÐnr #÷LÓl4Є3 #›EU>òRdY€¶* k£¥µäe+¥(š¦fR²¦ª²$Dhߟ>¥9ÒË ÇŽ-Arbiš lHTwy)-e`–ÑpeBµ”ïµw%IŒgÐŽ˜o¯,þпoB)*)2'óº>6M#—R<Û];­´Âoþȱ+×ïÌ->µÛïrÉ2tFVî\¿ùì'>Ùn·!ñA1•Îf4c É-¨²K7*Å’ª ¡öÔa&—Õu`¢mŠåûû8H$„qsœn š8|ñ|4@D˜VRhS"êcí÷c£A}&™Ú¨Š¨8¤®PÎd¡„„×NdYUÓ(1 Håzއ µŒfàäópŒ2ÝßM‡ Üë wg“Þe’0|GN¥<Ç‚wtC È‚’‡nÆK’u“(ñÐluÚ ñJjÂw\ÏóË3Õ­ xnÑóœ€@;òùQ¸»Û9~âä;ï¾ßX8b&ƒ¸Úë.Mê¦h/HQÔ#.•Ÿ¬¹?,ü¾?Ï÷EKæ9/pY‰uÌaš!ÎüýßýÑoý–è9+çßøÖ JÞ\Û\Xœ{ë+WnÞ:îµ[w  ȤÒ1&¸„T€ÚB$Ç ê6öq!º?({çÃé¶ãôdäà^ï!t2)¨èƒO‰¦¼RMÝ!œþ4™wL'.UÈ M¯Y£Å£"ñXêý+ÚIòOÜzŽöBßëà˜œÚg˜ '\÷СÂù{¡&k‹Èx·€o„51úÉ Ø³Cþ阉ÈÉâž©P¼Î~4N|DN‡~ÚaÐCcû¦¤*J~Áéßz¯/iR'Å0Æ)–Jq¦ü¢=X@OÇÀ~˜JBLM˜š)ÿñôëLåÉý_ħ¨$»’‡?ý穽Œvßrû½Ž ÔXŠÇÒ¢…<ˆÆÉ ¸eHLÕúÉÔ~Æ™ø™JÒîƒç‰dâÁaᙌ=ÜõÀ}É:¤÷&¢$—NÂCN]¹¯é+§Ò9µÃðßW=O÷}à“½Æ>ösÆë{ï´÷+Äßç áÑ@L}÷àÎñå¾ß¿ƒ§ïÒ¡Q:}[òp'2ñ ?81goôæ|q¢Mýš œ%¥üŽ«OöºïÿJŸd-ö²ÒŸu˜¨èàÂä»à ‡‡¤Ÿ¤ âƒYæþ8y¼ù}/Äþ:ëÝþç~ßÈ}_hmB;6—ËA›6iÒ€ ‰ÅÅJvF­ÜµÓJùCD·nÝ|úOïlmÐD¸X¯=}ìhŠ–/]øæ7¿I^]Ûi4j««?…û~ìcËÆ›ˆ@#’Œ*BùJŧ‰Çæ4 ë>™¦èy`2×u…Uì'ç Þ’ÑMÓˆxd×¶(ß®”K7nÜ8}ú4 Ý`0èt:›››ËËË·»£R1}öÜ ÜåÓŸþ4Ü@è2YäOî Ãq4óQx\ÇÂÂÂÂÂÂÂÂBÒtça°e3bƒ–ͦ4EõÚ çY–!C#ŸCn2]'ð,ƒcéï}ï{_üⓞ¾7ß|8reeáàÚVkv¶²¼üfÏ<ó Xää)îL@ˆ»yž¡p× ÖG%}lz>öòi? ¶¶¶E¹wïžïû’$¡yÃ{³¢ÑÊ?Ž£)2›Rv¶7ðƒüä'?Y]]™™yýõ×á[¯½öÂÁwî-..¼ùæ[pSÀA°|Œ”£‘–° šF÷ÆçãEXXXXXXXXX_º>>ô¼ @„)E„ãf«x·²²’øIÛívLÓ‡ IH"p8øío0¾\ȲìÙ³g¶ZíR¹xþì…þ˧N‡ÈÇ1éxv&…ü¥EðE³”À‰òôþoñˆ-¶Øb‹-¶Øb‹í£ZclêhÆ2lÓ6Ê¥ pZs»õÔ±£+Ë«¶k‰¼¤œùòŸüÏÿìσÈÿÕ_ùµÛ·o"Ç´ÅâøC€¿d°ø•W^‘ey‚ƒ[›åêÌ¥ Ë$M|úô¯’Èïí®ïÓ8Èp4<,Z"ö‹öÜ-¶Øb‹-¶ØbûË`5U?ô|>W´lCd‚ oݸ½tâØÙ7Îù¡Ç³PÜï~þ÷ k Wþý¾?ÖŒÆâò¥†o¼ñÆ‹/¾xíÚ5I’–——³Ùlˆä½µ; ‹‹o¿õ–çyÇ+ÇqÈÍòžHmçIêѼÆ`aaaaaaaaý›¥Ç«ƒrÂÕZˆ"À»=ýô¯¿Ž|‹ú>ÏÇûîØ60ÃeÈ«(ƒМ;wîùçŸOzWVV4M[]]E8¸±¾V¯×á³S§N% Š“ëíϤ‘ïM,,,,,,,,¬B#U=ô<ÐÚp8œo4àøü¹s/^Úëv»À®ë², ý~?•J†!É©ñx D÷Ýï~·×ëÁ·Þ{ï=]×/]º„q ëÉÕÃpв¬JµêùqÜÒ±c;;;–åäóYÀ6UÇ-,ÌÃIY–Ç4Ôt4X|äÈ‘»wïÂ5¦iž?^ÅÉÜAŒƒXXXXXXXXO¦†ƒyB¼ó¤’J]ºxñèÑ£@k’„¶†¯Õj†a ƒjµ Ø—l¹Î°<°ÜÅ‹?÷¹ÏÁ§püÓŸþt4]¸ïJ²qo½>[]¾´Á©O> –BÛûEhG.ša)—h–:ذ[l±Å[l±ÅÛÇiGCíÐó’¨hºZ(ÌØ¶á:¾ r'jÚP‘ÓCÂ5AàF! üæ{!ò ‡Ã—_~ùK_úR²ÁÝ™3gfff&KIÖ×7ëõêòòj§N= –¢°{»CRpL’4ÃP‚ 1²ÿ:Ö¿GªªMíÙ}`]×ÏdR,ËSñÏÿüÞ‰KׯߴmSQÒ?ûÙ»'ÌÍÕG#}f¦(ŠòÝ»·“e%/^üêW¿š ¿ôÒKpò­·Þšà`­^_Y^£èS§N¥) ì¾Ï8¦bÑ`1õ$øàÁ[l±Å[l±ýe°#U;ô<°/Žm§3©{kë‹GVW.«£‘$ŠM ‡,üôò˺¦},Ã0º®ó<ÇE…±àÎ0ØÑ ÖG¥ÑhtèyA ÃÈçó½^ïÎ;«««ŽãhÙÂdšfµZUUõ;ßùÜ._¾œÉd.\¸ðÜsÏ‘›››sssï¼óÜôĉÀ‰À|Ãáy¤i`É“}ê@Ó. ±°°°°°°°°ŸÆãñ¡ç-˪Õj¾ï¶%æº.Ð!`ß¡×Ãeû·êv»ÅbñÖ­[Ífpðë_ÿ: DY.—¯^½ Ÿ)ŠäÇó<\k™Xžç=¦ÆÂšðØ¡çišF ˜Â1 !œ?ôzÛ¶S©T©T l4ív{8 …Ë—/?ÿüó¤ã8ðå›7ojšÆ²l²Ÿ$Ipw8ˆö7¢b‡>Æ—ÆÂÂÂÂÂÂÂÂÚÀØ¡ç3™ PY¹\^__/‹DÌ|Çz}†@zÉTÀd¼HÀïܹs/¼ðù£ýhcccmm ž—Ëåà3Ó4“ŽÀ„÷G‡“áÁb,,,,,,,¬_¬úýþ‘#GÚíöîîîg>ó8èõzKKKðï¡×+Š€,Ýn ˆ` ð¥—^"K¥|?<¸8Ñu]â~ø{™baaaaaaaa=>=¬x.‚T*¥ëz2œû!o(IR2¿¢( ¾b±¸³³óÿEåê endstream endobj 183 0 obj 56 endobj 184 0 obj 131379 endobj 173 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [408.207 235.035 415.181 245.979] /Subtype /Link /A << /S /GoTo /D (figure.3) >> >> endobj 175 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [124.85 148.734 131.824 159.677] /Subtype /Link /A << /S /GoTo /D (figure.4) >> >> endobj 172 0 obj << /D [170 0 R /XYZ 97.768 692.105 null] >> endobj 166 0 obj << /D [170 0 R /XYZ 138.153 411.652 null] >> endobj 174 0 obj << /D [170 0 R /XYZ 97.768 203.528 null] >> endobj 169 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /XObject << /Im2 158 0 R /Im3 159 0 R >> /ProcSet [ /PDF /Text ] >> endobj 189 0 obj << /Length 1878 /Filter /FlateDecode >> stream xÚuÙn7ðÝ_¡·®€h½÷jз±A“Ú*P íµKIDöPHn\ÿ}g8CI–\4µ†ÃáÜצ‹þKMWe½(Ë*N›zÑ7‹o‹$.*‘yŠ30Ü%‹Å*Å¿þ?Ÿ®SæË˜o7ˆÛƒX|˜n~¿Y„bź¬Î”ùy}sû׋&nÊ|±Þ}E]ÄUS-ÖÝ_уÞÍF-W¢Ì£üÇåªÊ«è~ÜN¦ed;uzÜ!,"ëäØIÓÙx¹jŠ$Zï™(\Ði¯ˆ£ˆ´%ŒÛKGìûå?ë_oD±¨A¯õÊê:®s† J_?ÿB4çºgeœI@žSƒófëHâ¼L#ËÒ¨w%k•§`ðTZÅMž{~îÖw?uÒI«Ü(u-¾nâ, ⧃ÓÓN(}Ò£5ò´`3²Òi»} h…€8s“GÏf$hg”ßœ§Q؉3vÝ4þ°LëÈ]¾4ªc5î†j½X±¦d^æõÝ@§¸f´ÉóGˆØ ô¢ú~ZfEô¼,‹(öŒpU'à;dq€Âýw |úzþ‡Hwth§aë05ò¤¼ê•÷d¸<ô FgÈ/ú©•=6ªu“ÑA=Í¿²·CË,‰¾£RCœ{¹éUÌ!NO±"Í‹„bû4Í}תU¯–à³ïËt©iSE€Ú ßy·ÃDOÙþ×áOÓ4. ª(þ÷OOôz‹¬d«{à¢1'-á}ÄPv¾|Ò¦Œ¦-!-hÔ2A /§Ž'IÖ+ ™%@¦³ ƒ‰Ý³ÑΩ‘5A"VR…ϳ«F[§ÉåiÉQö/u·„8Èö«Ü)T p W“†aJo!³UË´ŒÜD˜~’áÑÈ€2ô'¯Ú=:¼ýJx;`? ‚ùÁìÑbä\…¸Öû !=‚,ÎÑ3ûH§2 f`* ìRÞ¼’3 ~¡œ˜ÒíÍ4ïöt°”â˜ÊxrPí^ŽÚ–Ù=hczÈ÷µ Ñ(«Æ–O^{øÇì% » —šÙ)+N97ƒªuaÒµ{ÕÝÎXaƒ!³EGßæÉgÂ:üäÐøÂ—jÂ!¢g,·§ƒ}g·D¼×»}ÿSž"Æ«_ëð&)Žˆø ÿ?©v;ìcImçñPLK Ìä‹´ëCÍëBc—`ú‘o¥…¤%SàìKø_£væŽÂ%‚×>1ÑìAµ *ˆ!)eΜ)ºH>jgþ'¥ò²æäËK,Ò" ÆÑ]§Pp"s‘HóÕQvÞäÑŸØ«£OÇþ‚*ß^ª4ÎÓíãrUfø´L£/oô¢,nš”iŸ®x•q’W|»^ÂD¹[Š k>Eœ49S¾»ž”e,Du>“We’DqðøÇoﯙVy\&A¹SM£/¼Oo8áÎÿ}ÂÆŽ.Mc"ºÉc§Ž±…áH=-ƒ½»úy€¸dq$ô³ä|"ê}óDˆ²Xä¡Sêu©Wt"éÚщm >ËUÀ{ËH3Ê+Ì"¥ÑÖ7QQœØñ¹ öBh;C9ޤKÌ ÊàºCµº°[awçÏ#NE)MÜ}u i®Gîr\!\³räõJ³q‹’¶`4@&õDC+ ·—[ɺa„=–²øÔä¾Í€ëR¾Q–è LëÜÝ‹ŒA8g©€ ËCNòqè#ù¡dlº×¬xWÉ"˜Ð#K£3ˆÆ=ÍcéØC@ aœkú}¼ÇMá—,LB@[u‡Ùѳ­™~E›ë…ÕÇùm©ŸÜU< {'ƒCõ…°­<@·£á!xÅ¢;m˜æ~#u]ÀzÙ†W~Úz¬ä‡¯SÂ_±î8khý÷:ñø¡hbó–YX(‹2°£ýÑ*ip‚»0³ë:!d¬4`þÜKÃCŒµ§ÌÇޡ8í˜ÏŒ1õ¬-aŒú†÷Ê:Fø#Å^õ‚àV¾ejXkv«^ G‰ÐÀë2ÝxÊ Ü~¶W°©¶ÃÔ—ü´Â¡„‡×þµ„|ÖÎ’FÔ#[#·G†×q)õ)½1Jâgº²,ñ»Íª+fzlû¹SÙÔ3~{±¥PÔäì&XSp™ ߘ4´DàÇÅ>ìþ¸~Ã"gÂçÇÅ=ú6ªëù“Vð™š4aç~|üüøægaÝ4Ç!öú낹ä­?)PxU\ @Qêãù/ ØÇ3˜kõ«‹¸œá"…þ¦  ÎÈѶFœ}ëS"©â²,Xå»Ë't†:Lgi„ÐŽ,ʳýO§Ï/8øb¡—Š’” ÞäÏ)@l­XÙøË1hvfϼ9ÆSqµ‘¾æˆè¹ßf‘„k Ébñ#TK !ôõާBõÀ—”Ê€Akü{¿~!ëÐú0•uì~xèfsÔ”k1KŠ8Gk„ˆ«ÆSãÅÍýúæ?”¾ÁÎendstream endobj 188 0 obj << /Type /Page /Contents 189 0 R /Resources 187 0 R /MediaBox [0 0 612 792] /Parent 176 0 R >> endobj 167 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./hilock-sas.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 193 0 R /Matrix [1 0 0 1 0 0] /BBox [0 0 285 724] /Resources << /ProcSet [ /PDF /ImageC ] /XObject << /R7 194 0 R >>>> /Length 195 0 R /Filter /FlateDecode >> stream xœ3Ð3T0A(œËUÈUd˜™ê˜(èY˜˜éYX…Œ,L¡JôƒÌ\ò¹œ¬ Èendstream endobj 193 0 obj << /Producer (Aladdin Ghostscript 6.0) >> endobj 194 0 obj << /Type /XObject /Name /R7 /Subtype /Image /Length 196 0 R /ColorSpace /DeviceRGB /Width 842 /Height 331 /BitsPerComponent 8 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Columns 842 /Colors 3 >> >> stream xœíÝyÓÈú7`¹‚$@**ØP{*8œ ^¶‚ ,[ÁI¨¶‚l¨`“ üšŒ"iF3’låûÞëÚk¢™‘?~$›Õßÿ]=¸¿¿?;;ÓÖÖÖÖÖÖÖÖ>êöjïž>}Z°ßãݧOŸæž ïåQ¼{ùéÛiÛêÇÜŒö°½´µµµµµµµµ§n·âǬ;Þ=ÿðŸW¯žÿç?¯ž¿{õêÕö¯»»»Oþüíõ“ëÿÞ~þõý«Ïï¾~ýúùêúÛö{íÒ&…rXoÔ‹¯j7Ú·ËÈám6÷gmmmmmmí’Ûc®½ËŠwíQÚgi«”êÝÆŸÞîJw>|øôËï»Ugï~½ó¾¾qn¤Kw!¶B5¶Äª^½—ôIõnëG2}ÿâ{¶ÛüÿÍ›7_ÿõgwzýq„Uñ.´Yd¸žžËø| ­­­­­­]Zûø®½{öþÍ»wï¶íçÏŸ_¼ûŸ÷Áâ]üälÊ”R†ˆ÷ ÐþNk]»®6¾z7蛳µdúïۛׯ_ÿÜùÓV;½>üñ®3ÕåþÌžkï´µµµµµµ§mׯ½ËwUÀ~÷®ïþúë¯÷ïßoúýúú&ÔãàH·“õÍÙ*\ÌKüæl»çö.!ƒ¯½KÜ>tí]|¯Øµw¿~ùóßÿþ÷ùùùvëM¼ûòòmwz]¶2>hkkkkkk—ÖÞ¯ëëë‡÷g?Ö†ÚÛx÷Ûo¿õn¹mׯ½Ë¥çwï...~ùå—ÍŸ?þðáÃÝÿû¿ €­·Ás¬Óx¨ÞåŽÒó»wßÛo_n"áÏŸAioS_²$s&ÐÖÖÖÖÖÖÖÎm÷üîÇåQ¼à؉w‹"Þ,J¼küìÞÇ·¿§úµåí>Û "ô¯°E¶| Nf7}̧÷ïÕT#î–·n;kbí¹E¦º×»J“ïâÿhƽûÖ7Ȩ´·üÄÙk¶ëœÌþv‰ìØyk,æ¾€Bˆwû%Þ [8`ˆÙïk(Äx×8s:àÌZ$2îÚõ³Àé‡ÞòÛ'Iw݆¤sô¬ÉTx×^XŸLc†í ˜F{2õÃi`õøFyà¢q«ní»²¾)ïڻƛeãò¸ô÷éÎ7ÚÎГ{^$ÞuvÞþ³ê v»L~¤YΚFüƉßxÕ ^‘…YCÔwOy ©ç°`c«w/]³ŸxaÖìñ.^xËOnt«÷3I:ïFxúSÝ×õÍÄ;NÍñn|Îh/,6Þ…&Ÿ2Ÿ‘•¹H80™ø4"K†•¸Áä÷u}•xÀ‰˜2Þe¹;Æx7ìe$Þ½ìºþoLvãôòÈO¼5r(÷¾ï8³}µ¢þgýM·¾pXŽy¸Ü­saä@BY¤z¤,Ru7l ™OÖ4GÑž^ï c<ÒdaÊ‘´Ú>ŠÐ} s*ÿj…j œñŽSá1À‰8•xp"Ä;€EïåQ¼{ñâÅz½^­Vÿ¿8¿˜{¶œœõæ?X®ûûûHú:??ßlóåË—³³³Ýöñöååå£x÷üùóÈðâ‡'Þ°lwww‘µÛxw{{»Ik)½]__¿}ûVõŽ¢‰w,[JõnïR.¥ûðáûwïTï~XU‚DÄ;–-½z—ï6Û¨ÞÕÌïVÿ_p’z€âË–xíݳgÏÆ»“®Þ 3a(Ìêêkƒæ,Þ°lªwåïÒ‰wÐ2øÚ»Îiеw»Sl«Ko¾õspÛ„vl¬Ý’òæ>rV‘)Ez^µ6îì!®Þmû`·FÖ¸û¦Ï§·ÿ”Ú‡¹Úû®¶á.uìÍÓàÛ~kq€c2¬z·ÉvÛF#á ­Þ5.¢Š„’Î÷ïøŽí ˜øf=fV¡]RzSE[µB[¤ç¬q'œd–Þ9WÉ·äÅ;–mÀµw»l·UOxC¯½K‰e¡œÙqd<«Þ ÆÄ¬¬áö—Øæ:“Û;çÝ’ð œ`Ùr«wl·µKx#ªwâ]z·éÃu–¯ê²ªw‘}ã³ê4xwñ¢ÊøÝ;ñîñnÌáäÖ§2`ΓÆ;'g8Fe|s6å*·”䑲cz.3«øYñnð9ÓÞëÒªäqÇ\Â8FÊœ«è<»î²¬x'ÛptÊøÝ»íÛpè› ÓsíwÛøWzw<«ÎÓ‘ëÖÚuןírÓE½Ãvú©Âkããöî»'‘qWvΧënJŒwJw©bªw¾‡–9+FKw²Ç(ñÚ»›››Í–ggg»½B퉮½+A™³b4_­`ÙRªwÛ“Té2«wñS«s)sVLA¼`ÙRªw›œvuu•þÿæ,EïX¶”ê]•™ð2ªw»˜ÄÌÕ;ñ`Zªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(3Wï.Î/pn½ùŽÙÌÕ;ñŽÒˆw;Õ;xD¼àØ©ÞíÓªŽŽxÀ±S½Û§yãÝêáÿåd•Õã?;'¶9§Œûh}97 ¡zWž CaVW{ £éO;üÞÄ;Žê]yÄ;ñF( z·;·;‰Öx{­Ÿ°ëÜ&´ccín””·ï‘³ŠL)ÒóªµqgqõnÛÛ¸5²ÆíÜ7´{Õºq"Gæ¿û"k³Æ­­Jw›'É·í×â e)£z׸â*J:3G|ÇvH/# žUh—”žÇ”¯Úù&ÒsÖ¸#'Ù>2çøÝ—rç&Ž[ûS¼àØP½«ÒbY('Evyšoð¬z7³²†Û_b›*Þ¹SæRØÉYŽ]1Õ;ñ.½Ûôá"§2·²ªw¡}ã'gãçÎ9rvµ½62n{ßJ¼`!TïÂïÆNn]0¥‡a=ç®Í×ÉYŽ]1Õ»*'ˆ„V¥ì˜u¶nð¬âdÅ»ÁçLs¯T‹Œ;æÆÎ†Í9>«Ä%ËkãfÅ;Ù€•T½Û,p.´*e÷Á³ê•¹îú³ÝCn~¨wØNKUxm|ÜÞ}S¦ÔÙsžsïÙäÈÚÞqG”ï”î(V1Õ»ß%Ëœ{–ïd;ÊTRõ®4eΊ=óÕ Ž]Õ»ø©Õ¹”9+öO¼àØ•Q½ƒbˆw»™«w»˜ÄÌÕ;ñ`Zªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(³Wï.p0õÜ€³WïÄ;Ž‹x@éTï ‹x@éTïFY­ªµ·ûÓâþ tªw£Ìï6£o”“/·óÙéœØ>æœ2îtй¹ @õn†Â¬®öFÓ;ŸvOØâ¥S½›x'ÞÀþÌ_½Û­Ûbk¼[×OçunÚ±±v7J½«ÁãFôÜ8™vD½Ûv¸ioÖ¸û†v¯Z7N¤óÈœCwPïÚ¬qÛ«RtJï(]ջƛh$²t&’øŽí¬ÐÈÃÆ í’Òó˜‚S;ßDzÎwä$#ÛGæÜ{EÖfß2D¼àÍ_½«ÒbY(EEvì};•¹]ÒÙ½‡a%¥ªöåÜγ¨íµñq{÷M™RgÏ‘9÷žMެíwÌUÁD(ÞPºRªwS\•m®q9 ‡‡G ¥+¨zwxâùfÜöèÛÍÚC,ø|7…+¢zWJUW‹§¥øŽí ˜ø~;fV¡]RzS½«WàÚÕ¸Þê]U‹#ã=WƒRÝV=µsÒ.iunR½ m3xÜöª®)Þ0—ù«wUZ, å¤ÈŽ#¿Ù0xV½Äûïzó\ÖÉÙܤ8ìÜng®Š¸x,KbÀ¸¹ƒÀŒJ©Þ‰wýÝÎﺦs¢ñ®j–ö(Šê]x?Û;zŠ#w)C89 À\J©ÞU9—Ð…V¥ì˜žùÆÌ*¾AV¼ûùçÔ×ÞMøgç’D^{—˜äÇM?9Šw²³(¨zÿŽjX[…wLÜ=dð¬â_€mtÿ.ð£å#¾9Û^ÛØ ±Wï×oÛÙ®þç€oWl¡pß`׎œ?íܽ÷‹±Ûå¡?CÝVJw̪”ê]oƒÅÍê$³Â‘~Aé€T½+Mq³:ɸp¤ñf4õ®÷×ãfQâ¬N/Þõþ.1ÐVDõŽ$§ï€æ®Þ«ÊLiîêx0)Õ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½X”¹«w8È…X¯çžpæ®Þ‰wéÄ; êÝñw{´ÚD² »ï€ªw{4o¼{}s³ùÿÍë×Na€Í]}›»l ¢zWœ`(ÌOH›„—ï²6β}0í£g Mõ®8â0ÆüÕ»ÕCcýkªíºUmaç6¡kw£¤‘³ŠL)Òóªµñ£ÒÒöœlõpZ¶Øvk«ÚyÛúÂöÚø¾)v©íŸQÏ9\˜JÕ»zTªºX<-ÅwlÁÄ1fV¡]RzS½«ç¹öµw´ÿ3ÒsïÆ èÖYÌï`*óW華XÊI‘G~³að¬z7ˆ÷38ÞuÖêö”Ørã]#·9] ûSJõN¼ëïvt¼kŸ„ͪÞEöïàTï‚ïRÂ_(±åÖR⓳0•RªwUÎ%t¡U);¦g¾1³Šoï~þ9îÚ»ÎJ^â¥x½ûÆ%^{'ÛÀ$ ªÞÅ¿£ZÖVáw<«ø`Æ¿ ühù oÎVoȶ׶7èì6´oÈ.ÛE¾9«t*¥zWà{q³ZnúQº€ T½+Mq³€€óWïz=n%ÎJ¼Q½#‰x$˜»z÷c&‘R½»½½Mïðòò2§z'ÞL*¥z·‰w›´–ÒÛõõõÛ·oUïf“X½Û¥µ¸Í6Íx§zpHéÕ»ñNõàTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïeîêÝÅÅ4Çq Öë¹g¹«wâ]:ñH zw<Ä; êÝ­6‘lÂîÄ; ê݉wÀá©Þ' Å; ê]qÄ;`Œù«w«‡Æú!ÖT?Úu«ÚÂÎmB;6ÖîFIII#g™R¤çUkãG=$Ç»Í÷°¹8§¨ˆê]=*U] ,ž–â;¶ƒ`bê3«Ð.)=¯Þ‰wpÊæ¯ÞUi±,”“";ŽüfÃàYõnïÇÉY`ŒRªwâ]·â@õ.èx㓳pÊJ©ÞU9—Ð…V¥ì˜žùÆÌ*¾AV¼ûùgN¼“íàdT½‹Gµ ¬­Â;&î2xVñ/À6:ŒøÑò´Ä¦t'®”ê]a¤¸Y%Ç;ÙNYAÕ»Ò7+¡ H0õ®÷×ãfQâ¬Ä; AÕ;’ˆw@‚¹«w0•¹«wâÀ¤TïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`Qf®Þ]œ_Ls<¸»¿›³z'ÞL럻"kUêÝ>­ªj=÷€£z·Oâppªwå €TïÊ#Þ#P½[=´ÖÕ÷FÕ 7«ÚÂÎmB;6ÖîFI O#g™R¤çUkãÎÂʨÞÕ£RÕ•Àâi)¾c;&¦1³ í’Ò³ê0BÕ»*-–…rRdÇ‘9ið¬z7ˆ÷#Þ#S½ïÒ»S½ ï€#TLõ®Ê¹„.´*eÇôð4fVñ ²â´ä(©zÿŽjX[…wLÜ=dð¬â_€mtÿ.p{\€¨bªw†˜2gURõ®4eÎ *±zwss³iÜßߟmW…ÚùÕ»Þ_›E™³è“R½Û´³úôoÎÌ&¥zW=œu½ººJü¿sö„¬•7 0÷÷÷½Õ»¬l·ù¿êÝ ï 4www‘µ»kïR®ºÛ¶///UïNˆx¥I©Þm¿9›ÒÛõõõ oÎr´Ä;(MbõnÏ¿{W‚Æ¿Q1»”_cÞÇœ3Z¼€Ò¤Wïöù»w…Èú¡»½þ*^Ö¿œ6á4ò{ï 4ªw5âxÇïä«wõŸ/n‡›Îû5þOÊÆ÷ í¾Û&¥óÈœƒ¦¯Í·¶*=Þm>qó¨JÜ&·z÷òåËöf?~Ü6Ž­z×Î7ëÀÚÞ?#=÷nÜ»{hUcÎa.qmÖ¸µ?Å;(Í€ê]#áí²]udÕ»ÎZÝžÛTñ.>ç¬ùÞæñ–NÎ@i†]{·KxõlWYõ®7ÞµÏWfUïBûÆOÎÆ;Ïsäìj{mdÜö¾•x…|íÝ&á5²]µ¨ê]JJ<ß8±‡a=ç®Í×ÉY(Íisvðuld]å–>±ÁsŽÏ*qIçòÚ¸YñN¶€ðÍÙuWZªÂkÛtvÚ7eJ=Wá9÷žMެí7pD‰ñNéæ´«wŒ–ïd;8Œ“¯Þ1ޝV@i«w777ÕC<;;Û® µUïN‹x¥I©Þm¯›J÷(Þݾ¸Úô8œGñîë‹«ÛÏ÷ÕÙÙúþ~uv¶É“ÚÚÚÚÚÚÚÚÚÇÕnVï¾þ}?oÞ`ŒfõîïÏeÏÎöõ‹ÕõÿÖåÌG[[[[[[[»¬ö¾«w×/ίÿûJÈa:œ|#mæó½Ñ7«í–íÍv=¤t2ù¬˜Vè^.SÊl<ãF>¤Sž)ÃzžÝ_¾ÿ:0~ÄÒ^»ö7ŸyßË:Ÿe§Ø÷…ðìiÐPÿñqKxIßïµwÛJÛnùÛ«ï7ÇïŸîVk·Ö·Ù_ž½¾:ߎ;¦þ1Ÿ”cßÞJןî:·Ù®ð¸Þþ˜Õì·OáíÝ£w{ûïÛƒωÏú³¦þ8Ìóh÷xÛoè1™þØŽ¿VDú=GÚ·a»ŸÆ6õûñûÍø°ý¼·sã6¯?¯¯ºÞJ[Ǹ[Þy›Ô·íÛ¹q_¤ï[7wßø¸¹ŸÙ_:ï»ô÷…ÈãpOïeÇU»ÿÈs?åy7ÕÜ6·Cý¾óº1æqww¿O>Ÿ¬ö~«wíÏ%‡ü Rfoä”&ÿˆPÂgŽcÑûðÙ[d˪õ9òÀwYdÄíªÜ)MòÊr¤¿(5n繞¹¯¢õ?ã•H½³ó0÷íí3wÜ¥½¼oMò0žöu&kè½n3lJígåþ^ {_åzÿœ÷a¹ÇkïR>ŸÕ·ÙÕ:?¯„>Ç´?F>guÝ^úñVáú\¨¶×¨I´o‡Ÿ«¾¿nͪ³ÿxåÑÐ?Ó4f•¾ïì÷WçgÊÝã-ôYmd=#2n㹓8nJm ëØ{o“auŽPÍ)ÞgÊm˜RÏÛ>_ê·sû6?ðc,ý¶J¬+¤÷ŸuíWñ×Þ¬q<~_cÛï“ìÛ[ûù\Øß{YJ]°w› çÖ{ì)·Õ°vü¾›äõjïíýUï:skoæ­ÂÁ<²°·çø¾³h\œ‘ûi8²6^uHüs@­"«Ú‘5«2µ?¢Åë(‘àYÇÛ. ·sƒô9D–©Þ¥<ª³fß þÉ»ýÿôƒ/>á¯rcJ/é7ï°‚Ó>ªwéÅžÎ9ÞwÌÍø^6ÉÝ´¿Ò]{›®¿ø$¾z7Þå¬ãÚ»øµo»ÖÆ?ÇOõ¹³7SG>;Föêx|.©juµx.ýÚ»Îí5¹Èuc®!ËÚ·1Ïñ×®¾Ý®ë4ê ñÛ¹÷ú•ø¸í:SʸmÎî}n¨[ «e&Þ†‘çQüº™Ðý{ÈÇXç±Ä_{ëϦÜçiʵwûÆWcÆ\k‰Ÿ/J¬ã~þ{~¥œÇØÓ{Ù°úwüvˆÛ;çø|zÏ7ôÞú.Aû5$ò|åî[\õnä§–ÞŠQ9¡ÄzUnõ.^ùè-„>¬$ªïšFhƒø¾ŠWwÚ[…+Kâã¶çÞóøKCBÏÍæ’Ã^J5¬ˆzàõVg`@õ.¥‡Äþ³zκ÷'¯H%Þõc ÛéÏîÞYÅ•S½ÛSyxð|z7Øká0ÒybñøÀ ºö®·¶×ûy¨·&Qæµw¡Ï ñ塚D¨>WÕªw‘Ïñ:_Veûk_[Ù{\ñëÕÊiǯÍð7ëÚ»öÒë ½uî¬9tn3ùuTS½æ¤˾¿8øv.óÚ»½¾¶~ÌDÆí½³ö ½>õµw¡aäØ'ÿÎlÖëÌ^¯½ËÍóv1Õ»?ñ ³§ê]oÏéæN)·çôY•)^½ÛmògÖñvVM\”>bïl»cÊ„³*—)#®°NeØ«hÕUƒLYYß··Ÿ1ã¦ö¾0U1/4S«ÞícVñûeöê]Ê­1Wð8èïÞíòõÏãïú=§Îïô%ž“>ðo n·¿»Ú¸M:w»¶q6Ö¶ûoÜU×ÚÆòÆ7gëÛ¬[u¸Æò”qÛßGëÝ·Ìvä;\íÛ$ò\Ø=¯Ylßבß6‹ô“û™²}UP{Î#¿s©Í‡nŸÐ¬z_7Ÿ ã:ðµ¡íúDÇÁ¶jN‘ïã7֦לBû†^oës3îø÷šøûBçc5kßÐãv@­ß½kWâsO5Åú ‘kû¦}nFÆí}½Š¿W¦}èß½›QQ“HQHɰðqË|y?L :íýßœ-¤f6æs¡¶¶¶öŒí_»sø:eb-¤¨9Ï5ïeÚ©í}ÿ›³Ò~¯½ÓÖÖÖÖÖÖÖÖ>pûQ¼{÷áKuVU»ú¶¶¶¶¶¶¶¶ö±µÅ»/^¬×ëÕjÕùÿóóîoÖ0Ìýý}oúº½½MïðòòòQ¼{þüydkñ`Zww±¯BïâÝ&­¥ôv}}ýöí[Õ;€Ù$Vïvi-n³M3Þ©ÞRzõn`¼S½8¤ÁÕ»—/_~üø±Ñ›êÀ̆Uï6ÙnÛh$<Õ;€™¹ö`Q«wþùçÙÙÙvá&FÚªwsJ©ÞmÚY}ªÞÌ&±z·ý3^·Û¶›?k¬zpHé×Þ¥ôÖñ³Æªw‡äwïeØ7g3~EõàWïRÖXõàüîÀ¢¸ö`Q«w777‰ªÞÌ)¥z7êg8vâÀ¢|‹wégs(\Þ©\ ÷ÿzÁ[[ endstream endobj 195 0 obj 56 endobj 196 0 obj 8302 endobj 190 0 obj << /D [188 0 R /XYZ 97.768 692.105 null] >> endobj 185 0 obj << /D [188 0 R /XYZ 143.489 503.73 null] >> endobj 191 0 obj << /D [188 0 R /XYZ 97.768 401.16 null] >> endobj 192 0 obj << /D [188 0 R /XYZ 97.768 153.464 null] >> endobj 187 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /XObject << /Im4 167 0 R >> /ProcSet [ /PDF /Text ] >> endobj 199 0 obj << /Length 1351 /Filter /FlateDecode >> stream xÚ}VKã6 ¾çWøVe±ñX¶üê±èТ@ÑÜv÷ ±•ÄX?2–<»ù÷%E*™´˜ADQÍÇGR2JàOFu—EEËºŠša½DIœ—¹¸Pá$‰¢Ä_ÿã÷—cÉZ™ó²zÃxøcȣߧÕ?«(ü‰ [²¹2å·íêá1«¢:®‹,ÚJª¸Re´m¿ˆÇn¿Ìf½IóZ¨_×›,­Å_Ýh6ϧM+œ‰0k™‹ŸøcšÅuk)¦‘N¦ÝÕ´m¦aÐcK¼¯I’ö&¥Y-¶þJ³Ìvš‰î,];öº1|+hÖ´e#P˜hú¶ýóáQåQ®èZ–q— ôêÓÓÓ—§o$u€ / =¯ÓD,»uš‹™Q8ÚdµŒ«Â)˸Î2/çýɤÄDýèÜ©­D†íÆ}oˆþ¾–±š—ÅŒ9k¡«ä²0 $8:šHÆA¨ï¹›fU,«”=ùðùÃ{_e§JÞ÷Õc71ñ&»Ó)Sµ¢”¡À´¸ã–a½edV©)c•f7!;êæ»Þû¼%b?KTÛͦqý‰vè£_,€X8ýÜßñX*¯Êÿ×ã*â®Ãy.b2WEœAQÒãô¡p7:3ë€ â¯>`‘*„uÚuÖuî‘Q4˜ù¶Ä°ÆZŠX–ÔâoŸe¼©iq³m3wGGâTtTìÍ_ÇL›ö#²*J ÊPjôp —žOü]¾ìø{㚨´‚’Šâ}Ì6AˆÒ—Þ žJÄÇ;¬ã$辸¹¦Ö¼ÿL•ÅEZ°´†Y‡ÞȨ”Ò:³Y¬!¦ï*°õì˜3ÓªûþV„+ÄÓóèûl¸Y³J±%Ðg–±53$Ž2 Uܘ1™_yö ‚ÈY {þ‰ÉÊ!Göhš ;ñº ÖO,ê> endobj 168 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./ess-demo.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 202 0 R /Matrix [1 0 0 1 0 0] /BBox [0 0 408 723] /Resources << /ProcSet [ /PDF /ImageC ] /XObject << /R7 203 0 R >>>> /Length 204 0 R /Filter /FlateDecode >> stream xœ3Ð3T0A(œËUÈUd˜YèX(蚘›êEL , *ôƒÌ\ò¹h Œendstream endobj 202 0 obj << /Producer (Aladdin Ghostscript 6.0) >> endobj 203 0 obj << /Type /XObject /Name /R7 /Subtype /Image /Length 205 0 R /ColorSpace /DeviceRGB /Width 1018 /Height 574 /BitsPerComponent 8 /Filter /FlateDecode /DecodeParms << /Predictor 15 /Columns 1018 /Colors 3 >> >> stream xœì|Å·Çgwï½)$$@!j€Ò$t¤(Ò‘"Øhн‹Š T&"R¤ (¤w‘.ÍP!!Fz/·ìîûíN²^C‘ò”ó{¼¸wwöÌÌÙ}ïó=³gf„ؘdkžMUEI²,›$A`AÉŠL“˜& 3ã@8TDYeL˜ 2‡ I$‰D"‘H¤{R‚+2;S]UÅ©€,†U…¹ªL¼iã9ºq f‹yÚ)Å]U\U)KÕH\Ô±\Ô€<®š˜âvµQ%1M5¥(6?GnÑ%cÝæï„K‘ñ’$º¹¹šL’ìp0&Ê 8T Þ¥»î«ZgÐ1íªª ú˜ ª‚¤èQZPöV‰ Þ™6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2x?¼6ÿWEæ€Ê@mÕ $Ö0Xtèãà·`Ì[P5(æ›Þª‹ªšѦ¬ÿ‹ÉUØQìj)fIÌÌiÌá+ÈÞYyißÎøXˆ¸àåíj²Ø22“Y³>\/‹Š« —*°˜ß ˜VÅœü*U𽩠n&KU»“Ý‚î:÷œ Þ‘6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2x?¼6ÿgU ßËÚ¼ ë£á8/Þ|¸³"PZöÔÐZÌÕ‰_TU“¢UÄ [Ôq[cu½ÀÕrc¢UÓ¹4Sʤe$Œ?JˆK,SÎ=+':"ò¬ì°Š7SÝTtƒñèÿœB!ˆõÞJ‚" A†Õœû_" ÉàbðvØ$ƒw ÁÛa“ Þo‡M2x?¼6Éàÿ¿AA±0úµ©AÛ‚ªLW-7ßTA°êCë@q³Žû¹z8!j)C†qÕTisö"Œ0OUU–!I¢ ˆÙÙÉóç/"Î'”)ç–‘sY=ÚÊTo°¾jÊq9ª–ǯG-‚¤ÈZH^ Zµ¢( ·ªªÚE&ËŠ¬ˆ®%OæùÎ.qÑ’¼ –¸è}hð?¼ó –¸è}hð?¼ –¸è}hð?¼ –¸è}hð?¼ –¸èhPmk¸ï`zVÄL&ÑE–™],‚¼óïPAÑš´#Ü,‰v»C‹Hô€ï°¯ã¾ YŽ,‹‹Yvh´DÅ&hŸxtaÒ†ãy~þ½ZsE6 ÅÁÌfÙ½TnóVUó¬ñ ç/.…'–ö6gæ$†‡%îØ7õ뭪२Y­}.‚¨(ZÐF7¹8TU`ª ˜DW»,ëm•Ñ8­=wÿîý:s¼6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2x?¼6ÿgÕü8@[áFKµÇ¡"K’`UÌEƪ*ëæt`g‚ȇj5Knàò¢jÍVSJi#új®‹‹« gf¹¢ä‰Ú :V½e<5Zþ©G–›ô6$»š»ì¨SËcô¸þ®¥ÒÌ›'\¿âémÉÌN Ëܾ)å›o6«ªä/—)£øUðö¯TÁl–v1)!7,,Æn-®‚ÃaÎÉ3‹bYYqWEUÐxQHÓæ.H$‰D"‘H÷¢´”}-™ÅUPÍ"SË•U[µ®æp¤ –¢“ydYõ¬~ðxLLlLÌåV­ÚÚív“Iºº°"¨ùá„`W{lLÚ©ãQ"óñ,íhÙ²‰h²J&›Ê¬z8îçר7ŸÛ-KJjòþ½g%µB­@×±“ú¸¸&/øyžíéeÉÈI½p>kÛÆ¤ÉSVúø¹·hWÆß/öá65Ú>Ô²´Wk.;vøÂº5»c¢¼|MV«Kt”zåŠË•sz†ÄD!¨Ò~˳ÞH$‰D"‘H¤;Dª(kyóŠÓp?«MÛò¶½¡ VI)zª.@\E-÷Ýfÿé§ù»÷ì^³æ7›ÍÁ{®*,)ª¶&m¹9¹Ë—í}ãõ‰Rõ¶ík¯Xñ¹ iƒþ Ô‚ÙºùFE•$-;Èfµ­ú}ÇóC' JP`uïÉÓž6™’Λ/\¾îYÚ+3;3üB®­)ã&,ìֳᓞ2‰qrN‚ÕšâYÊ¥T©rªÝÍÃÃG2+Vñ¨I,“šRêÈÑ‹7!>~æ¬Yv»}ñâ…ññ‰éii.\àüê?…-8ãê&Ö¼6þÊ¿²Úµ Z¾îݤäxÅRÍ´¹»î²*‹ºe‡Ã“٠㉉‰s.\´ð *7©SÛ¤þ®æÄùó—.ñôðËÊÊ Þ¾!yÊ”5•ª)­:ø;äì+±’“BÛ·kìb¾[ëÔ®\Õ§|ùL‹TÞbö©\Ã'-3nõª#«I9´_ÊSJ j9QˆT“ÀräÈììlQ/&ƒI™½uË&_Žžœ˜š°tùo«~ 3±vmÛÔ_±q`RâÅäXkVNü¥K¢ä]µš¿YÛWÈÈȈ‰‰qss«Q£Æ•+W6nÜöóüƒ"k^#°âד/eŽþùç|Ü÷ÍÊÎîoý={ú”½²)ÓlÉ´ÉIžYõêy?PÏG•sU$ÑjÏ)ã`õ*S¶Gß¶¾’‹¥üÙ“®Ï<ñƒÕRo“)Vu˜ÌÌO2Úл·ÊËV5èß»© ÄŸgUuÈ áˆª¨yjþz¢’ÀL*¢!OR=Ü}ú—Y°ô•~½~ز9•i¹J6ѤÍLwU5ƒìµ™Âš}Id™UÍ „pGU½»"Y¬ŠÝ“‰vA²«¶òúÒ¢|ê¦(™þ£Z]¤R6ªñ£IyzÝ'‘H$‰D"ýK×Àý˜Øøân„ÔÔÔÅ‹s܈ˆØµkׇ~X¹reEQøð?$;$Qtø–÷üjì·± 1¿­Z¹fE„I}¨M›º+6JLˆHˆÊ‰‹¿ðõ”I©©Ž>^§v-DkÖ¬Ù°aCß¾} ¿ióŽùWã¾–ÌãY.3'õBDäößó&}PßiK„ÌÒ¥lZ& ªZÞÇ”“g•L¦œÜìÔ„¨Ð3Qž¥Ë7x°–"åT«ÚÔ‚?ùð++/¨¦ò~©•|ª)Ž2&‹5>)9îJž¬äúúZ*•±Ye[žËùˆ(&˜ü*Šþ~¥Õ™˜ž*+Ú74’È<–RÎ/µ¢¯EôhÓÞsò7/<ÖuÎÖm«Tóöòvu8’IHŒOKŒ³ûUt¯PAV®.®»#ƒ)Þ¢(‡‡Gdfù±5˜‡§$Û¼%K^BBlb¬»Ê\uˆ—µÕR…Ìšµ*»•b’ \¼›•PÁUÕr ºÃ-·g&:‰D"‘H$é®Õ5p?6.áZwð|gÜîÏž=ûÓO?õððвÓyIÅ”––¸tÉÜ>½bõêU+.HjÛ6­ë­Þ<$)ébbT®]N‹¸xáÛoç–övnèýû÷¯]»¶K—.`}OOÏ„„„Õk6,^üWaÜ ÇåŒÜİÈÐí›2¿™ð—C4«ZÞ½dã«TËz¤³ÕªîvN¹„…OO»˜’˜›áPÍͽ܅ó9) þ¹Ùì‚£¼¯åËñ]«U.údT³Öu.ÅÄN™´Òaw}ëÞ êWHHH-íá=nÜogÏEŽý꙲e_ߊÇþJœ5mÛÙ³I*ÁñŠìR+ÈôöGm›6®shwT¥*¥zt¯Õ·ç÷Š$¾=¢§Ýž{áü•fÍëF\ŒÿfÂÊN~4ª{dXnrrRp«€¿ÿJñpÿý÷=3§¨Q«üûŸôpØÕ°3éÍZDDFNŸ²ëèÑ8}é"ÙdÎëÕ«ÅûôŠŽ ¬¼ggÄ÷3¶„_HeÌEÑp_¥L‰D"‘H$Ra]{t_Eî<9G֬笿iiiÀ}XºtéÅ‹wìØñÓO?Mœ8ÑÅÅŰ­*æÔÔøŸçÍ|ÿ½Ïãb—¯Zµjù‰=ôP›z«6NL¸9Û¡¤ÃjttúìŸf=r¸R¥J½zõî[,OOO_»nÓ‚‡ ã~tX’giôÜä°Ë![7¦M™x@‘$EuHŠ·¤føUºÒï‰ÀªÕܘê“uð`Hf²Åŵtèù WKé2å’SY饥¬ÀLMƒ+mÝýê?Oœ>‘ܦCPƒ&•§}}ì÷Õ'G|Ø+0P\¿þÏìLKèÙ´£Ç"fÎz!×}&ôBn–ûö-g|Ë×hÛ¡Ž"ä8x¼j5Éß<³bñÙ—‡~×½[ƒë^ëÛû‹¡/öïÞ»þÖM‡…¦µl]ëÁàŠ_µ777ùËq}æ}ÿ÷þ;\ôΘO6vêØ¢Uíýö}²ÉãO7xûµïý´ï³q‡è6yìÁÏF/Ó&«²«ÙúôÀG?ø°ó῎^ŒLÈÉ)F†…fÈ*p_qšÑK"‘H$‰D"èÚ¹ûœì%I²Z­ü@ËI‘$p¿ÉdJMM]´hÇ}ž»ÜŸ0a‚««ë?ÆUKrrpÄ{£ãuÜ_qÁ¬¶k£áþ ÄÄ‹ —sd5]”„ôteÊÔ‰ìÞU³fÍÁƒ·oßuøcbb6oÙYD2Otø%Oϲ鹩a‘a[6fN™xP11Uµ™ÔrŠ’Z§vλ#:Z\2öR{vŸÞ¾íDrBeAµØYž*Ú&3-ó§cî‚¢´nSuýÖ—ölÿûä¡UÌ]l{w%ìÜq¢y‹r|ôdje¿übɦ'Ž2­ZûÏš=,ätÄ7“—ž8šØ©S߯MýMîY÷Ÿ¬T~ò”§öÚ°ÙÝ»Öûuí°þýG>÷âÀn½êmZ{éØÁ‹{–M‰=°;þÁàÚŸ}Õõ—Ÿ.í;°}ö‚ac>ÞöhÏšÍ[ÔÔΓCZ<Ö¯ÑÛ/-^4ï¯Ñ_õ{kD»i“Ž|4r9S\´ýÀ„,‹%mÈàGßñØ#a&-<Ú*Èþvmu UŸ$ è¸OÄO"‘H$‰D*еq(Ïá¾`ƒ[…C??æÉ<7û ËÌÌL[¼xí±“GZ4  ÉËË8p`›6m@ü999+V®+"™'úâYOOßôœŒóQ[7ä~=ù°* Új6Ї›)»~£ÜQŸõ2›r\]*/[²ç—Å;­öÚÚÂ5‚¶0(:¦âŸ(ŠI­Z¬Ýôò¨¿_ôã‘ÖmÚ5itàÀE‡œÓá‘÷øà¦u+Wª3~ìú¿þºÔ@S÷ÒIýúu>b›½†1W!.îÊîÝ»]f}YLooïöíÛ{yyá8##cÑ¢Eªª.Y²¸¿cÇŽü±î Ì’”ÿó¼ïG¼ÿ)pÿ·UkÖ,7©mÛ¶©·róÄĈ„¨ŒäÔ˜åËÛ±ýà3ƒ<ֳǙ3gæÎ›žž>lذ-Z¤¥¥­ÿ}ó‚ù‡DÖ¢f ÿäI»[€û û¡žžÒ³³Î_ŒÜº1ýëIûUÉE_¥ÞͳLLçî CÛ»¥½¼kÍø~ãŸ÷ Š¿¢MxEä"ªÚ`¸ÄÂM,¯z ·Y?KŒüëÈ©î]+åâþÕØµ6›íýúzxg„]ˆhüÝ7›öî ýáÇWÂ#Cê× 9I?~ýÞ?ΈbY¦ª¢ÿHûF|ÒÏ­”²|ÅÚúÔxfPûÇ›XÉ¿Ñðž8uòï¿;?ÚÑ$”þfâ¦ù~ùÕ£?ÍÙwôÈÉ3_;vA—n-[¶¬óTßÙÞe܆¿ßçÌ™˜ÃCíܾ\Y÷1_,‹ILmÙ¢ýŸ{ÿ:>ôµ×¾öFÓ ›ÿjóPP\¬cô¨…'Ž^To½GV}áN¦­å‹øU2xç¼6ÉàhðvØ$ƒ÷ƒÁÛa“ Þo‡M2øÿoPg`ß É$°6-½¶l5òò‘¸¤ŒÓgß}ç=‡C1êñ«X~ü„ñ5srs²2³.Z¨áþâ%/]ܾ}ûäÉ“»wïn2™œâ”­yjø¹è/Æ}uå¯Ëwm\Å„&mZÖY»é•˜¤3II—®Äd®]±ÝÝÝåñ'ºXL&—ãÇïÚ¹«n½º]:wILLܰeây‡Möö5kTÿu_·Ë æ÷#"==Ë¥gg‡E^ز)qÊä?Ѥ*SÌ•R{÷u¼wÁ#%]YòëÍ#3südETóçç1Ðß"º:XòCª?þd{IDæ²~Ý¡›O"Âiݦaÿ§š›L±cá?ÿ´VP¼»v­ß£{ &ˆ‹~Ùóçþã‚Æú®ªÊ\„tUÍhÕºÞS•,6Õ¨ìÇ6„œŠ8¤{“¦fAUÄõ«ìÜ~⑇›ôê|`ÿß‘±Ï<Ýgý†mµƒªÔ©SsÎŒgÏ4¸O“¦šUiú#[·íi÷H«~}^ºdßý‡Ì.ò‹¯ô«YË×bvý~榑Šâ!2/ý):Xþf[âö’‘AúÿÈdðN²IÃ&¼ Þ›dð1(ìٚס­ß¦/†GON°Å_IZ²d‰(Jv»M ¨§gé'Ÿ|¢ti/UUÒÒÒ/^Œ,Züóň¨ãÇO,_þ›,+ÎÛëªb6äUë÷ëß-!-æ·å{V,» ²úÚÔýmí›Iiç⮜“m¥ÙÃld{¶Ä<øÝ¢¨o>Ë„ôô´åëW/Z°ß"´«]³â—“ºº”ŠXøó\!:<ÚÓ£lzN&pëæø)“v+’¨(¢¨¸UôÉèÛß§W·Fžî¥Â/F®ßðסƒ™1É•Љ)¼qÆø·¶µ@Y3T–£5]•AûØ!0}ã[!OQ­¢ ©J)•I&Á&1‡ŒÞ‹Zx¤ ú.À*b WI[3W²µÝÉô¯dÅd6y*J“ªbU“ªZøÆ½¨K`-¯ˆ!ÄPѪ™TË1AÛ½KÕ¨]…RZº3+,EUQÊÝ$¹8”lÉì°ÛÓr‚‡(XdšàÊ >Vèéû´'‰D"‘H$É’ˆÚ&º¶V-}W¯yýäÉ©qé.fW௪2OÜWTæö¬yÖå+–»¸¸ÌþqÎÑÃeddK÷¦E³U»:,L°ed§oØ|dͪ0)¨uËšËW©×Øf Ün·U-f‹h³;b㬇'ŠÌ¿^]ßgŸïzðÈj‡œ¡hP¹kK{ 9‚dýg‹.Y–$ §ãS¬ìH°ˆ«Wó™øÍÓ&KòŸ–Q‘ç½½+¦¤¥‡_ŒÜ±9}ÂÄ]’è!ªîyj¶Å-ÊÍ3®r%¯Õ}™))äïȸKž6[`þ.Tª˜?®(ªhÓ¾khÓvMÚ^·š#Ú%íŒTç$ë¼.kãùZê¿v»š0hꪔ¥ÇLL7%i¦ðOÌcBžfAû)å[ÖRnDmÒð?-Ñb†‚ÛùqÁ'­j’þñÅh¹VÂEo›M›j-p›ýk€Âá>‰D"‘H$ÉEZ›´ SSvAe‰*èô¤ ™4ûÚØ3(Ô¤2OÆ*B9•e05™±&èkɨ<ŦãñÕ’VͤV ªãýÅø>.®i çÍ.^<]¶L¥Ì¬ô3¡gÿØ‘5aüvI(¥¨&scR.STÙ.Y*»$™|{MEñR™è”·‰z³²õ3¦‚mä‚8T°O-?¯}ÐÏ‹ÆÊT…¥kü¯òòü/þYõa{Éi©‘ÕüÎiXjÁUVPبTµ'„ß<I0 *ùÿDù­%‘H$‰D"‘ò%2}ÀÚªèl)i™7©ŒåZ…Òz.ÉMIµÔ‘Ù%UÖV½W]T-ÏÜÂ;Sõu#‡¤Å€e-QFÕF½ Ë$Ù™‚ón5Ù„©}%ó•…ó.F„y{ùæä¥=zìHί‹BÑ¡¥µÈ¾ âÉÆT7AÈ‘ÌÑŠÍU°×PhÑŒßkÆÎAí²`ä3Á€`ÕÆæµ3Æy-TÐ±šƒ¸ äŸå ÚX»ªƒ~~"S~ý·nD  Œü¤ê”dÏ¿°8ò¿'ðè‡ @a¥”nÁš_@û abb®*æ ù‹úgˆz‰D"‘H$I“¨HZVº”§ €[TÌ’j™5¸Ó ¸kD‡Ä²ûÚTUfÑæœŠª¶t 3i©1"˜6OD¤ W]e} »p ¥‘I’PªrUÇs/55™²Î[$\ºíáágK ?Ìe»®=ÕÕMR@È,WÑBOA´11F”K‰re»%^õ,ÕX¸Á$É®úòDV>”®§Ùpàf:mÛóI]?¯h©ö*O쌿Z?Í_(„¾G|c4òæF=AȬãõ–ð@BUõµAõ傜×÷‚¾ÒŽâ¦Ý.äiv´j¸¯j³ `ÃE³‰3Zn‘M/ 걉D"‘H$‰¤IÒpSVD ÷Å,Ên&maÙ¦Zo>/DQÜø’)©ÜA˲"ØÁ,0W¦-ŒéDD « œíW±«y¢äaÏs5›2]Ý3­YÊ‚× ‘‘—<=s—ò|}m^‚Cv˜L’"ËÚ¼¶f×'æ:D‘oB¦M;²þ³Ð(¾=äÿ—Ý”èpÈ&IÃ}=$RõùÒ¿¿èFTm 4A„¢¢õ_Ä›|lÚü Ô+Š‚>G[ÛEÙlVueTœW“¾éšÀgx =³7nR¨µŠ’¶Ü‘P°ª+oßÂXêµDm:¹6¿œw£ä5 ù±—v/ŒËÚ¤o}Ö¹öpó JzE½ Z]úw‘ªÿ,ißt‹ú ­wÚlxÕi¾ Bbü_ ­*áýÔ«æWýO"‘H$‰TRq¢ÉÇ]mú¨>ÙVU ãèIŸª­=cdªÈ"èÃë)2ùm¹FYÁ¤V&[ól?Ï[ÜôôôÌÉɹpá¿Êê@VˆM ÛÓ/q\+)¥ܨÃý?Æ9‡9×høO–™>7Ù°Ã'D})¾IF3n­Ð¦3.· çdžø”íB-ù¯½.RªUªŽ¯Ëм‘Ý7 'œ«cº7œO2§7Íh’Z‚hÇxå q¼3î;ïbí ú·ã)“H$‰D"ÝiÊËËûù矯‰ûÈÌf3_ųHú´Ûínnnøû_ù‰/TÄYœŸáƒÍü'_HЬVB™L&›Íf¬|„.à'·yua”᪠EëqÂêÈu¥èëû¥ÁK¼;νfŠFæææjËŽêË6Ý*å@¬V+þò“Æc5ÖlºúFgDþO2ìW†²X,èÿÉ/Á|i¦÷;‡ƒ~ÉœøW·™¿Bfýs º³&}Œ¿$±‰D"‘H$Ò= ëà>Óù ,•ðûï¿£4  Ü ÄOKKóññ‰‰‰éÔ©GI>ˆÎÙëº8uâĉƒÏ­Zµjܸ1¿Äá;<<üòåËÕ«WGEMš41S¼q޶›6mB§xÉ6mÚ4jÔÈP7†™9éòEOwîÜYµjÕ   ôŽ¡Ñ0^†ßÅkçƒÊ%Ì A]»v;wŽ×Þ¹s瀀chŸ›âýBÕÛ·o¯]»v`` ÚÓ¢E wwwÈŠà@Xæô£xosû«W¯Ž‹‹ã½óòòêÕ«—‡‡ g Ç·ðG û©©©û÷ïÇ#.Uª”ófÅC9nOOOß¼y3nçåáÞ.]º ÙQQQ8/O·nÝðâájVVÖ† RRRêÖ­Û±cÇkÅ–…„×õÒ¥K<ò:ÉÉÉx£P‹ñ*rÏà*üã­[·æÝ7¢©ø*E"‘H$‰té:¸o¤Xœ9sfΜ9 4‚“@ÏÀ¦ŒŒ ÀܱcÇ>ýôS^˜ƒc ³¢.\ˆzA»|ðÁx€„sôܸqã_ý5hÐ 4 ŒDaŽÅ…2a q`ݺuktt4"c躱.-‹½ Tàô¼mÛ¶zõêùûûïÝ»·ª.V|bð"7bÐ?gú¸2ïoñÝ„…±cÇ‚ª«U«Sàì=zÀÛŒò<˜Z¿~=ü‰àG|…b...F~ GmÞ*V@ðF>L1>Ç]üCÇ–-[BBBŽ=Ú¡C???P2 Þ5ÃQF" ?‰ž"âúꫯðˆ}}} ö_+Ìàêˆ?ÿüóZµj•-[Å*Uª„ÑA`½>á %%%ñÇZ¥Jœ,É÷ uGŽ5jªƒMônîܹh-"ãAó6¯Y³æìÙ³ï¿ÿ>w&÷¿TÂЂD"‘H$énÔõqŸi•¶oßþúë¯s䤋cê©S§@Q`kƒ8‹ÉqÖâÅ‹›5kÆô\N]œÈE]€¹ƒ~ñÅ0ˆ*úõë×®];>ð_¤A|?ú裾}û¶jÕŠœ>}ºÏO<ÁQóóæ½ùæ›Ã† kÑ¢P\as°"; ³‚œ{žcŒp_IQÚóÐCuíÚÇ“&M2dH¹råxº·ÆÃ›áÇ0 eË–ÖÎ;#þ1ÆÝÑ<*#ÇyÎß¶T)²ü‘qŽÇó:uê„ Ä(9ûn±Z­Ü9<û·DDD|÷Ýw#GެP¡ÿr‚f;ϲ¸V¥ û1cƼúê«AAA¬ ûûï¿çÍ›7eÊØAÝ»wƒì³³³Qòã?®\¹rXXØ¥K—Ú·oÏDñ¾E³ÿ~þ† IçÎûá‡Æ0ÆùA£jÄxQ?ùäãiâ*^ÚN ‘H$‰DºKuÜ7ÆzCCCAf¯¼ò +˜? ,ËÌÌLLL}ÂÃÃCBBpœ‡` lÙ²o¿ývÍš5 DEEùë:yò$MªQ£F£FŽ;V©R¥3gΤ§§ã–òåË£ !ÑÑÑÁÁÁUªT¹.)¢ÀgŸ}ˆî£åß|óÍàÁƒ=<û,à{ß¾}nnnmÚ´ñòòBПà~þã?àðÌÕ“qÅÉxÐß~ûíØ±cK—.ͽ›› ;x”Ü'0›––¶k×.Ð0ªC|•0yòdtЦ§]Áh[1™ýx °ˆë­·Ôñ¬}4îÅ£ÄyÐ< ¢/ðø~âĉ~øaÅŠyê" WW×ë~9îãYŒ=š¿?xmà:TpWJJÊ¡C‡HÔªU«Aƒ7nÄ£‡o8À#D\xQKR ‰D"‘H$ÒÝ«ëçî3XÏ;Y‚¦¸eË–ÅÅÅÕ©S@üÜsÏíÙ³'&&”â</FÀ}Ð*h xð:ƒÃЀÔÞÞÞ]ºtÁIÀ1@pРA7F£‹4näÆüqÀO š6mè¹ÿþ¨ ‹ö£XÕªUÁ²ãÆCǸtéÒ¶mÛ"@EÀkÜÈqð÷ßG@à[ð€c||<,à4»øn¢.Ô‚Æ£^˜EØ€¶ÁÕ_|ñÅûï¿#p^~ùåy󿡵/¼ðš5k@ç/½ôX( "Çy¸ôÁüòË/ѰaÆgá(\ª[·.\×]ktßÙ9ðäŒ3Àî0‚G O"HÃÃå.mwëÖ ”ÌÃ- pPP:8}úô÷Þ{ïœ.4¬zõê:u*S¦Ìµ²ªøÄ\¼ˆ»Î!„ðóóãŸqð’À¥8ƒêóà*J"0¸ã b„sxøÌÝëæØlÞ¼yÅŠ½{÷æ_0bccOŸ> oóÌ%¸ab!¼çÏŸ?uêÚ'7iÒ}dzFïp‰çD_‰D"‘H$Ò]ªá>qŸ~÷ÝwqpæÌ˜íСÑ#G*W®Ìç#˜‚qÔëïïσ%ô}ÄÉ·ß~Õ¡;#FŒ€å  &iÞ¼ù„ @ð¨ð6à855hûúë¯ÏŸ?*Eô…à‘GÙ¿? »¹¹]×á•.]ºiÓ¦ˆaÜÝÝbÁáø‹“ˆ²à¼š×Å}¼!?üðCË–-y~nG/¾ýö[pÿW_}Õ«W/¸åÏ?ÿDƒ'ÜÇ+±{÷î‘#G"’ù믿ðê3q ð“H$‰DºWõphõÆo+c¸dnN™2¥^½z|æ(X'®_÷Ò¥KaíÚµ«ñ,jàˆÍ\·oßÎׄîÿý÷ß'8ÁŸÕÍqØ jd:zΚ5ËÀýÌÌLk¾÷Þ{ çï¿ÿþ…^hÔ¨-9qâD```ïÞ½ÑD#éééèEçÎÑM~ËСC7nü믿¢z 6-~L x ®íÙ³'¬¯`  Ÿ}öÙ|P¥JDŸ|ò ,£Fôñ¡‡?~|ÇŽáœ>ú¨jÕª|©S@3º–EûkÖ¬ D…ƒøùâ6%ŸvÆ}oooÀ8`!MµjÕxV_‡çÒ๠2œ:u*b 7+ÈÛ¹sçž={F….K8kÓ¦M và;OæÐÃ'}„1ü14p¾Y³fhÞm„»víB—Qa^}±¼m×õ‰D"‘H$Òݨÿ€û[¶lyóÍ7%ê Ü"¬7nÜÈɉ°y¥×Ø@Ö¦McµD1Àzذa8³yófÄθߡC `ñK@rÜïß¿¿û`z÷³²²^~ùe4ʼøâ‹?ýôÓ³Ï>Û¤I“O?ýôá‡>~üxíÚµ{ôè*–,Y‚ØÖ€õh'Î÷Ÿ{î9p6¬íر‰¨ÇÅwMåŸ`?yî>ÆŽËG÷Q)ZˆG}ûöîƒGÑÙòå˃û øûû£®óçÏ—+WnÒ¤Ih0‚`.B¸®Æ-ˆ—®û° îãLjj*ŽñX?àéƒéá}ÍF,÷"6øñÇy¢ÿu]G"‘H$‰t—ªD q¤€û[·n帓Àå5kÖDEE÷»uëü‹ãRº.ÐöuY ¸v¯_¿>_E±jÕª@çmÛ¶]¾|™/À¢ïر#š‡ L™2<ò(³øi©° Œ«T©h˜/Ã;ÀYÐöܹsÑÁ>}úà<0ˆaP/Bޝ¿þº}ûöTàp'bPxÙ²e/]º„¸hÀðáÇ L¬P¡À÷СC 4hÛ¶mñ݄ǯ•+W~ðÁyc €ƒùóçãöR¥J¡ Gw¢ÙýúõkÙ²%'Äh?\„Ÿ|×­ƒ"@;ñàö~ø6p­B™’ Qƒ°gÍš…ðÎDùÄÄÄE‹5lذtéÒx¦û÷ïGx”h*ÏÆAgѼ"/¼ð<ÆÖîÝ»‡Ê#º"‡{„¨¨sçÎèŠáÁûo¬Zµ 6Q;¼}öìÙAƒá*BÄxÐBÐùÀù[Q|wí9røÎ×)ÐÏž={„ c–-[†ÇŠØ ÇóÂUÍ›7_»v-â%GH€—ᥗ^‚ë(wŸD"‘H$Ò½ªëã>‡ÈððpÐR=Œ1×={ö€Å›à³aÆúhÏž=qK³fÍP–¿ûî;Žþ@ä}ûö€ƒƒƒ¯KŠ0õÓO?Á?ü#|Å·/ÈÈȘ3gºöÊ+¯lÚ´ XŒ6î›4iòË/¿¸Q°uêÔ©YYYè(-¬ÃQQÐÇ… "Özë­·jÔ¨Q’˜>ûxúé§=<<àÄ0ÙÙÙß~û-ªîÃ,ƒò{àîÛo¿v¢=à{ØGŒ—Ï—‡RÅlPÅG÷·úùòè<†Ž„††âC½ðêË/¿Œ–ð=¹ð|@¶k×aÚV’íq9sFÐZXÆ1b'øïLÁ½ÉÉÉxd0ˆ×‘[ÅŠgΜéïïÿ£§ï¾û.zí¼†,‰D"‘H$Ò=¦ëà>8 <$éâøÅw¹26‚åÙÕÆyVðA€oqU’ê]\\øZï|õwcO(Έ|aMžêÃÍL ‰¶ÆÖ°\¸Ûç½À]óæÍÿ½óÎ;¼/D>”·ÙØG–÷rssÃOçÚyÃød¦¯y]ÈæCÝÎÛ{±‚ɬè8wß— ?¹8F«p€òx"h?_CÓpŽ9¡â*ÏM7¶â*¾%†Oøê“¼R`7¬åææ;ìòUüù&8‰’¸Ê]Á÷Næ[.ð®Y‘±ƒ_ºÇˆ øj°flñpy¥Ü&ïTIVæáuñ}øOþ°¸‡a»ýÅy4ÜæÍ›ÇŽ‹†ñ‹Qçi›-‰D"‘H÷ª®Ÿ»Ï±ŒÏ°4¸ó4øŽÆ¶SœžK’ÁA™ã +˜çpÏÐä›^ƘÓ>\üj‘|fÄFcÓYñÛ·oÏÈÈxüñÇYÁQÀ>¾¦ §F~ +ØZ‹/WωÖ0b~\ò Y¹Y^ Çe~ÀÀã¾ú¤±‡.Nå¬Ïëâ~æ¼…ççóS÷ùâqsôÂy Æ{Ê‹ñÛ _]-Þ$Îëü9rwñÏÔxÈÁn,,lõêÕÇ÷ÿþûïÌÌLÂýüiÆ|Y~ò&ûe¬óƒ`®È †W4&˜:¯)I"‘H$‰Dº7tc¸Ÿ­ËËË+99ùêÂ\ùb'çÏŸŸ={6`~ݺu¬`áþ?âä-¬‹o ºßðX;Ÿ*Á»¼–ív»±gÓŸ  î’H$‰D"‘œuãû¸ $ j¿º°óè~BBÂÊ•+Q~Íš5|ìøÎÂ}Þof‚ª ªóÅüËú/á_?osÖ?pࣖ-[; ÜXï€ò»víŠíÔ©SåÊ•‹,ƒ‡·{÷n<¾iÇŽýýýÕ‚mŒI$‰D"‘H÷Œn ÷Áë|êíÉ“'‹,oÌâ½råÊêÕ«­Vë-Kæaú&¯ÆÎSÆ‚AÎ3 Œ<økŽ‘ëýUí¿*S4ć&ؘ 1ÕŒ#YçQp¨YP,’I°£?“$Up£ði¿ ö/¢óÑ÷½{÷ÆÅÅñ­ ~øáüœ5kÖK/½d„JFËeø#g!œúóÏ?ÓÒÒøÖW£G Û²e ˆß¹û6](=nÜ8üåƒú£Fzùå—}||ø7ž_DèO"‘H$‰tèÆp¬Ÿ‘‘a±X@íÎ;9“*?Ü_¹r%ʯY³æÖà¾Ýn÷ððàCà…6~2rЙ>¹ØhzV pßðƒ¾º'“UEôV2Ñ¡È6Q¸’‘š™•àãSÆì&2U:ô Á„ aœY%ÛÓ½xôÑG÷ïßï¼À´iÓ^}õÕ"qߨœËHû1rî¡øøøGy$44ÔØ ÿý÷.]º8ÁßË—/£^€~óæÍáF¾QÔ‘#G†>tèP¾oî5ýF"‘H$‰Dº«t“¸üøqNù¸ˆ¿páB:u€‹|Íüˆ®ZµêVâ>ß—Ô@RcCS¾aj¡Ý¿®Å¬ÿdâ¨N§ðOÁ QÉÅT»-&-94<âÔ‰cOvëÖ¸Z-a8´{U3SExMËröÿ_±øA~ž^ ³Ùl܉‰‰³fÍzùå—¯Æ}#œ2¸ßØk–+55ÖñLv`-==}Û¶mˆœqumܸñý÷߯U«ÖŒ3™>!8pàÀ¨Q£^zé%??¿Bñ‰D"‘H$éîÕMâþÉ“'‡8^îÛ·ï×_}þù烃ƒ]\\øò0·÷Ñb77·¤¤$ÜÈ‹b}||*UªtöìY^+ÊÀÏ\/[#Gßè¸>f/ØÙ,&Xs£³3Ãâ¢9æáRª¼g©®mZW/ãã¢ßètÜù+‚n…©ù†xrd*÷y¶ŒáYü|î¹ç–.]:}úô"qDŽ¿çÎKNNFHL÷õõ5†á™S¶N¢p×®]ñ06lØ€£RÔxåÊ•‡z®ÞºukPPÏÛÇFŒ1oÞ<¼¿ýö[Ÿ>}xÕ´…‰D"‘H$Ò= ›Äý‡®íÛ·Ïš5 $ =z4ˆ”µÇÆÆ®^½úVâ>Ï/_´hÑ;ï¼cd´·k×îÓO?Ý¢)|mÿqãÆ½õÖ[×¢V´ì‘Sº öYÐ8>Óf‹OK>uàØ1‹[¹R^Íë6lT\\J+¤ éÛ%òY1Ë-Pt3‚êdÙd’®‹û…„ö4¸?cÆŒW^yåjÜçJ:uêtðàA†× Ph€ß‚Ÿ:8p`Ë–-;wv¾„Ø«uëÖxxZuëÖu^wÿÑGݽ{7pÿñÇ¿™uH$‰D"‘Hw”n÷Áî{öì™9s&ˆU>¼bÅŠ8NHH¸Å¸£¨øØ±cË—/?þüÖ­[«T©òöÛowëÖm̘1¿þúkÇŽƒ‚‚úô郸_ôÖ¢3Aµ|}Yv)95".&Üßµká>‰D"‘H$Ò=¦›OæILL\±b_Æ(ªlÒ¤ Êó•yn}2ß=*""bÚ´ik×®î÷ïßazÖ¬YµjÕâ‘ǵF÷uÈ´±zÆN…EžŽº›š\£JÕjÔ®âíU³|9³––¯ÝËZa•¬Š°~ߟ{χæ™$™IfY´Ï(‡`ÀѽUë‡4ra%™¬ûïÆ”÷ñwóæÍ111(üðÃ^kW¬À}Ôˆ’8I¸O"‘H$‰téæWæ±ÛíF¦¾©`Nžlƒ[Œû.ºøÖ¨¨¨I“&mܸ1888$$döìÙíÚµã q‹°’ßa-‡'"..6#íôå‹¡á*T ¨P±N@å Ê~îà`Ù®ÿKÌÁT À/Jââ¢ÒÓ¬¢( ¢Ea& öûŠ ËÕ*T¨RÖǤÑs‰ç1<‹F÷—Ç[pzçÎ8ðûï¿ãÀ9fî·n݇ öþûïûûû-GÉÝ»wÿòË/ ¸zå‰D"‘H$Ò]ªÀ}Ü^UšÍæ'NYžã"€œïª‹*Ö¯_kpŸG8 ?~üÑ£GGŽÙ¾}û)S¦>|xΜ95bzZ‹Åb)ºC»éj+íèCý}›­ˆ´Œ —/ÇÄE_Œ¯PÞ§nšµ*Tõ­¨e)²Ec.¾Á®“ßþSŒ3ÁãxèС@í™3gò•yx$c?/¼xñâÈÈHôïßÿpv‘óóãÉ<ܺu+B n›ÂcøöÛo§M›†“6lÈ¿,Z´èË/¿lѢŧŸ~ÄôçM¸O"‘H$‰tèp_–e»Ý{­òÜxnnîž={òòòø®º·÷aúôé-[¶?~|ÕªU¸e„ ÁÁÁ3f̘>}z¯^½š5kÒmÚ´é5Ú ÞçýÎÏb„AÛN76-ùLxXBJÊÙóçjÖ®U¹RêÕÊzxYô½wE&:o«õ/«º¯ ÊFÒü’%K._¾Œƒ5kÖ;v¬wïÞè¼eË–mÚ´qÆ}8ýÑG…+ñÁSO=å<3àÀß~û-11Ïfîܹ—.]2dØèÒ¥Kýúõ9Ù§¥¥÷á÷ÇÜÏÏg@€„òð$Pä׉D"‘H$Ò]ªÀ}‡Ã6uêÔ .\7o·ÄÇÇW©ReݺuFù-˜ª;oÞ¼×_ݘ۾}ûÑ£Gñùš•8‰`Ĉײã¼Í–6*¯7•é tÊ8!Jv@FêñÐócc£.>Ó³g½êµLª*©Bþ²;üþ$6@ÿšéCN‘s_tîÜy×®]ÆgY[ÇÓ„.Œ9rìØ±FyÞ©Ž;îÛ·e–.]:`Àç¥ña^Ö‡„„ð.C<­ ý4ˆ/Œ Ï ö?~ü÷ߟššÊ›Ú¿ÿråʽñÆuêÔ).ŠD"‘H$‰t·éÆr÷92{ölçtæ4ì¼…Ž£££-ËúõëyÎÍâ>ÓS…Ž;¶páBžñ‚ŸÕ«WïÑ£Ú–åÐܯ_¿N:]3#¨Ð®ºƒüLÕ7àDUd6Uµ‹Â¹¨˜ B[7m\Þ³¬YÏ×TáZ£û%OÎA;ÁÜgÏž5üeôàÞ«W/¾úˆÊ”)|g±çž{.88Øù*Lá)NŸ>=**ÊùY¢³Ù ÖoÑ¢w=¿š‘‘1cÆ XÃIØyçwjÔ¨Áƒ„é‰D"‘H$éNÕåîªç6›Í¹Œó1_'&99yÑ¢E€ûµk×3zo ÷¾îîî®®®`\ÔZås[ ­¼Ég¯^kÝýT¨ãÜÛåÊŒYµÞ¨°"ªŠI™¢|ót¡£cµ@E¥_NÃ;è¼Ö´œG÷‹Ì#âÆ ÿ8d†Çø]|åÔ'‘H$‰DºÇtÃ+óÙ===ìÎeœy.Ihhèwß}‡ZV¬Xqk’ypÉ¢ËàWƒt9îI,<[ý qþ“»oüƒdàM*ËßpW§{E_XSÒ°_ÕoÔ–ïTô’E¯ê=ñHÈýBëëóK¬(š7žÓÕéõœ×yšq#yœÉ†‰Qt!dâÅœ¿H$‰D"‘îÝîóy¡ ~€eHHˆQÆÙOGù„„„ß~û-//oíÚµ·,wßÅÅÅÕÕµPº¼Ñ8Ó¬gK‚ûÌ ÷™ñ’jTe-Šõ¢¨Häëùp76ºï<¦^ˆ° Ð¨?ïßÝàêÏήw¾Ëyýç«å¾*á¢$‰D"‘H¤»K7–ÌÖŸqß9•߀𸸸uëÖ¡0_™‡ÝªÑ}777šQJ"‘H$‰D"¯›ßU×(Säèþ•+WV­Zu+wÕ%Ü'‘H$‰D"‘J(Â}‰D"‘H$éžá>éȘÀþ=ë ÐôçWÏTfkë:]]ÀÙˆóREÿƒ>’H$‰D"Ý"Ü'ÝñgoLö½zYÏBSùó-4Sٸʜ¦ó­˜ Ùáœ'¥7D"‘H$©Hî“nœŸ½3¯Z&èê[œŸ²±^Ãáà«8 WíRllYÀ/qú/H$‰D"‘ ݯ¸Ï›*:%äŸV åï¨%ð#¡¨[I#úéééx¨‰‰‰/¼ðBµjÕ ‘zllìܹsÝÝ݇Z®\¹"·ˆŒŒœ3gŽýC† AIg#üÒ´iÓ¼½½ŸþycÑÕÿioI$‰D"‘îÝ}¸¹ººšL¦"GŽ ­ÁM#J°kø®è‡ŠÊ+cf•I²Êd¦*²`–d‘å“ ¹Â°ŠÿdA³©/ÌÏ·ãÂáþ/AÀ[ËùØHF7ÇG¬ù·1’í|¯ñÓy;­"3[Œý¹˜ÓH¹áçݾœsåZœ/1§Íw¯Þ÷—¤ÝÇÇÇwîÜ9**jëÖ­>ø /¼téÒ°°0¾ ÃÂ… ýüüvíÚU¹re£a|;0Ïš5+$$dþüù|¯4€þ믿þÎ;ïxxxðæñ&ájÖ¬™¿¿?j¡Í€I$‰D"‘ŠÑ݇ûh1pßl6ús7ûw û7úV¡þ ?£È²¨m¤Šü6Q‹»Ÿ_¯juoQ™$8t‹:î+úN¬ƒ 'ºï  IómÃA¼Ùv»gªÂnæ´…°a“‡ER;sÚoË€f£%΂óüWc‹bDV6›'Ù;çßò-“~úé§o¿ý¶gÏžü1°ž7µW¯^›7o6Ú\­Z5÷kÄÏ àµxúé§ùÉäää;v¼øâ‹¯¾úª——†6Œ5jåÊ•ø;dȦï |]·“H$‰D"݇ºûpvÝÜÜ\\\ Ї»\{uvø?ºº¿|]Ya¢`Õ\AˆÏË ¼~9*öÂ…!=«_¥º¨¨:îkŸ$WôÑ}g¼XÁf»ÅA¿±þŒs¬‚.©ñ“CöÕŒK¬à#€Á¸¼§…ÂV0¢ËxTÆœ×1u5Kë©QØ9 0f„üã 5àÒ¥K]»vMJJÚ¾}{ãÆ¹MT‡Ç#x~ÿý÷ *8îó/ˆ(Ö®]ûÙgŸ=ÿüóo¿ý6ÿzsþüù:ÀÎ;ï¼Ã‰ßx¸'OžD­ZµB]xh€ŸD"‘H$©HÝ}¸£¡¡¡Gå< <­W¯ÞC=”˜˜¸aÃüD$6hЀý;áäŸnë<.¨ÿp?OÐW²Ã$Eg§Ÿ‹‰MN>}ú¬9¿€2eÚ5nXÑ£´¨Ý¡:$UÁ¿BAR¿šoH-Hì7û|Nê¦M›¢¢¢Ìf3ZûÈ#Ô¨QãðáçNâ`ݨQ£|—6oÞœ€3=zô4GFFrçvìØ1((Èp=çrtÛ¶mqqqü<Š=ú裼R<†uëÖ¥§§ã§»»{çÎË—/fDDD¸ººâäÃ?\³fM9,xxxàçÎ;ñh`¿W¯^ŒŽŽÆ8ƒÆT¯^Ýèظ ·¤¤¤  p¾1œoL½={ö,š j‡YctŸ‡V«µS§Nx«ø“åAªûòË/—-[V®\9´³N:Ü&.?~¼eË–­[·Þ¸q#šTŒ·I$‰D"‘îgÝ}¸MŸ>}ôèÑÆà4XyË–-»wïîÙ³§Ífãç'Ož<|øðk%óÈZ¾>ÂÒQ\‡ªÊ’p%;#:)þüåË'Ïž-SºL`Å* «Ö©V&\* Ô.¨y¢ §ï¨=qGÑÿÁŒŠ,‰’ \÷!ô·{÷îûöíãnš;wníÚµGµgϾ: 0}êÔ©>>>ݺu;qâŠ}üñÇ€uÀ9ƒþ裀ò¼è8€¨=~üx¸Ô¨èµ×^kÞ¼9‚ÐyRRŽå°àéé‰@"66FΟ?Ï×ÃyóÍ7ßzë-ܲ}ûvD/¼ðÂüùóñ ¼÷Þ{K–,A`À3øGŒñÆo°‚Ü$DK—.Eí ð/¾øa»*ÖBãñ°Pµ1ºo¤ããA¨––†7ƒÇëÃÂÂà üDQ«V-Ã"¥—^zéòåËãÆCìw±x‡“H$‰D"ÝŸºûpvA~S¦L9|øp5š4iÒ°aÑ#G‚Y¿úê«3gÎÔ¯_Ä úg×HæÑqŸ‰ø•9TfXlZz|VFHdØß§Bü||ýÊ– ¬T¥EP›Âdñ€â‚;ñrRÒ•Ü,» (ÙU4ᔢî+ V//?ÏÒ&Î’Š§}¾¶ 8õܹs{÷îd?~¬¾€àÑñìÙ³Ÿ|òIC0Æ]­[·öóó £Sè> þÓO?ÃÑÉÉÉ:u‚[ñ×ËË˨ëÀxß}÷Ý«¯¾šžžŽˆß¿?<üÎ;ïüòË/‘‘‘íÛ·Ç-8‰haÆŒx3gÎÄCrssÃ%T#¸„J;vìèëë ÿ#rÀsíÓ§1ÜŽH K—.x¨;vì¨[·.O*”R qwÁ]¸Ô¬Y3ÔHü$‰D"‘HEê®Ä}T Ôâ£MS§Nmܸ1Oÿ’~öÙgûöí3fL¯^½ŒDó"Œ0Yƒw¦eãÇ¥f\ÉLûûòå¿Îž*ãåU©|…êåýZÔrš! °&Lªh“…ßÿüãPØùnG…g†xé믿F#;wî ô‡·qçwîܹtéÒ~ýúñ¼<¯Ë—/wëÖ Å–-[nñtüBƒî·÷qFÐ8—`³xŸ“H$‰D"ÝŸºûpBÅ@ÕE‹=ÿüó=öØÊ•+Ñ 4ˆüÉ'ŸÌ˜1çÁš|ü¹ûŠž»/‚ú:s4ì|‚5;13³Q­zMk×ñuw¯XÚSßîÕ¡ˆªÂv…™\þm×d2á9‚Ëñ2mß¾½^½züñß¾Ñ}m€gš5k†=<<Š÷9‰D"‘H$Òý©»÷aMÁUÐç{ï½W¶lÙü xøðáŽ;V¨PaöìÙ]ºt1œ)ÚŽÌ»¥Í®µ Šƒ‰ÇBCB΋³ IÉÉuk¶mÔÐËd (]ÚâЗ锴YºŠ¬`(hÿx?LŠ×]‘çßžâ¸bFGæÎ;xð`c5!Ái|xÝÙ¿ÿüѺukÉ`w6ãÇÿàƒâââzôè½aÃà¯óBœø;tèÐeË–ñÀ€ã>˜ݨQ#¾¢-¸»`§E‹è-[¶T«V ±€1è¿yóæ(ƒÛÿüóÏ_ý•'óðŠP¼ŽÖîØ±#((ÈX&Èx ø{úôi˜î#, p^<áÌ¢#x]ø4_þ}o¢ ø fùDÃ2‚ƒƒƒa ¯D O"‘H$‰tßénÅ}މ¿ýö(¹gÏžÓ§OŸ0aÂæÍ›'NœØ·o_¾H¼Á¯Eõ›wK[IÇ'0Af*þ…_I¿|)>59âr¤oùúµëT®P¡F97UKó×Ròµ\}* %ƒû«Å— åÝäkÒ/Z´èÉ'Ÿ,²©ð  öرc€Zà>ß{‹éÉ<ßÿýرc?úè#<©S§"ìyæ™gpÞßßßx$`ô/¿üÒËËë³Ï>kÛ¶-Ç}07 êmÒ¤‰á%£9îÃɈC€û (ùòe¾¼&Ê€¿q¼bÅ ¸Ú¸ Ï!Gzz:¢ˆzõêzˆü“Å©S§:uêäííÛÑH¡`ç^qÚèÑ£ëׯ0Ãl6ã|jjê?ü€·ä‰'ž>|¸¯¯¯ók€º€H€pŸD"‘H$©HÝ}¸Ï—Ÿçx‡[æÌ™³`Á‚x`Ïž=€Ñ}ûö¡YÆùµ–cç[ârZÏG××å”íŠ`ã33"S’.&'üyô¨wÅ 5Ë–kW§N%Ÿ &j3qõÛ á¼AøŸœ?à µjÕªfÍš¹¹¹è Gaxjüøñà`¸»}ûöS¦L©[·.ÎÏŸ?MXXXÆ gÍšÕ²eKp6 „††ÍáFã±ýñÇQQQ(óꫯ¦¥¥7w”a°sçÎ(‰çäââ2bÄž*ã_|ñŤI“àä§Ÿ~z̘18›gΜÍ£UªTÁbT³AAA|]QáÙ;hŒp% ÕUªTÉØÊ—OxöÙgãââ¾ùæ„´2‰D"‘H$R‘ºûpŸã©››O]P)x±zõê_ý5HÔl6}»fÌ`t ÇJþUÚ~ºÚ6[ wˆB|VVDü•3a§ÿÔ¯w*&Uñ‹ìæH_¯ËjµvéÒ,Îô¤y#—?GýÙgŸñbàÝ®]»=z”;dÆ @[”äKdr˜^ºtéO<Ÿnݺ5)) áPبkذamÛ¶mÞ¼y:uÁâÀnc/Ví êèС?m¯q©F m<œ9{ö,Þ€7¶hÑNF](€«M›6üƒŸððã\EèÅÛl·ÛQṉ̃cÇøá;õâ‘ôQ²^½zƆbZQLž<™ï(ìçç÷î»ï¢X·nÝød\£åÇFíhÍÓ%‘H$‰Dº–îJÜwwwçLb111cÆŒ™;wnëÖ­·lÙ‚H€gò¯p_ý÷Y-©‡o‹«¯¿ÉXlbRd\TÍÚ5Ê–*ma‚¨èQÁÍî£Ùè<ïpÄ72nÖ¬YÓ¦M9Cƒz×­[‡NÙl¶Þ½{W©R…éœ}êÔ)>M¶{÷î|¿*ü]»v-Ìrk(€hÿV››‹Øù´£ ,?ùä“`k~5ÆÆÆÂy¿~ýàj4599ÙÕÕu¡˜ÑòT¨PÁ9é¿cÇŽ)))»wï®_¿¾± 0þ._¾ÜØü‹Ÿgúø}ÿþýo<æAÕëׯG8„cŸ^½záq;ëó÷ìäÉ“Íu!2A ‹™ØM"‘H$‰t?ëîÃ}Þ=9ùz¿øâ Àþ>õÔSB®ÓïkôW´½rµ@Û:KqIpˆLÖÒüe “XAªúÍ'óð°¤ë9:óÍhYxHÀáž/Ëã<©—_5Vì1’éó{¤›â£H¯øU~»ód_ã#‰‘dÏ—Î:tèÏ?ÿä,Š † âïïÿÜsÏ£¯ƺˆ¢ù²¢×VâÑ˪¨Ê‚,«‚™™µ@ƒZ‘Oѽzežÿ$çAý"ƒ» 86À—ÿå“_o)ÒŽa¡å«ã<‚^è ÿÉAŸoúk 9¿Ê âdJJJÇŽcbb6oÞܼysÃH¡ØÀ°_(63ŠñºÞð9»Æ¸¾ ïé‹·¥E‹*Tرc‡p­H$‰D"‘HìnÄ}\š1cƨQ£®ÆÓ–-[îܹÓÅÅåúü§þ3U· ‹ÿœã>*çëUmC.m»-”Яß4î;'Í_ ßÎç«Îgœc˜*4ÜþO· n4»ÈbÙ¯®‘7? þv^N§©üxÀˆ¾*V¬h|Á(²F ó<†œ rî+ˆLìvûÌ™3ñÚ ¼…Ƨ‰D"‘H$R!Ý•¸¿ÿþ-[¶š‰‹ã€€€×^{ ¸£Þ Ý  ½@œÚý[[‘„ÿÖ­­ˆD"‘H$éÞÐ݇ûÉdruu-”¦bd•üýïåü øÂ;WèßñO ÆTcã%¡'N"‘H$‰T¤î>ÜÇ%T Ü¿º'FzÏvéæTäè>»=3hMʘÓ"?$‰D"‘H¤"uWâ>XŸo«Th >À;HXA8áœÚÎóÈ‹ÌA¿ÛUä¼ããI‘å^=Ç Pák­#t]Z&¨øŠþ_ä<©ú^z%H$‰D"Ý¥º+q»¹¹ý/qÊy ©à´&oÀ½v|å¾Ï̹…Hí¼çƒé·JÎ Þco‰D"‘H¤»Q„û%ßÖhO7•¿÷˜•'ÌŸ/œÔo¾³Æ"¤Æw’›4xGÉù[Ð=Ö5‰D"‘Hw£÷¯/àp°cÇŽ¿þúËXý³mÛ¶íÚµ»-s¸3§ÿê_ò/T%8•d…Žÿ1$qºX%%%-[¶ OÈf³¹ºº¢ƒƒöõõ½% ü–žž¾téR«Õ ³>>>7oóÎQ|üÿ±wVß{æÆ‹ –iPÂ0QETBEP»00±Á‘Qùƒ (Hˆ"!K‡°äR˲ñÞ»1óÿæÎ{—Dz ?çs}ÜwßÜé;ó3gÎd=:--í–[nÁ;s¬³£      ð_ÇñG÷©®ë û$a8‘8Ù»|ò}ßÔÞÏ«æ¶þÉÇÜÞu×]C† ñíøï»ï¾7ß|Ó/-I2.÷-⥞ïlíAáÀ5£ÂÁ?wpÉ)nÚ„¹HÅåÈ“éjT§â€äF¤R$G‡y熉Ã4âÌ}^ÀªU«.¾øâÍ›7˲”,YrNãÆ“ËX䜯äJ ûoipÇ÷Ü/ÏÊʺä’KÐó¦OŸ~òÉ'“„?Ù ¾§ ån–©ûE.r:Æ¿¹dÉ’Ö­[§§§Ï™3§L™2¾!µ¥XAAAAAAá˜àø£ûˆ\_:×/r8”ÿ™Ì%Í’Êxÿ:™SN5Ù¶-MØþùçuëÖáÁqãÆ?þþûï—t_Š2ŒOïüó­ü=ÄGÀ\÷kWóC`š«‘å6¡ËÖ¯ÌZ÷û9O«Rº\d¾XÕ>•ÏQùC\8Tâh]q4Êž={^~ùåX,&é>2oY–<éÖ¨d¡ÀéÑ!Šê$ï[õ4;;û‰'ž@ü?þxûöíÁ‰%­—R ,«ËïRriEJz‡Èú?ŸÍûŒ`Ôä74jläÈ‘è÷Þ{ï< O V†= Ç ÇÝÇOàúHÛgö’QIsßfZrî"Ân‚ªJÃtŸÀƒ”²ä²²œ/¼ð‹/¾èk÷}µt2±KVêÙæ{H«æ™à®Îûý÷u[³6oÛ¼sÇöëZµ>½Æ‰©¾}OB±¿Ö'ñLùË!‰§Ì*„œ;v´hÑŸ>ÝOÖp'?âóu_H®s_îV¯^}饗"ð´iÓêׯOö_“ñ—DŠ,ÝîªÈß"ë3Rð û· Ÿy½bÅ °Y³f}ôQQGAAAAAAAá(ãø£ûÈ1²òÃ?|þùç>­?ùä“A°ˆ¯ ©)))­[·ŽD" ”Ò˜ŒóÔSOíØ±ãòåË „ø¥ÛÜ9çœsþ¸ðþjIÈȸ>2Ý—ÂÃàÁƒ‘¾Þzë­kÖ¬ùñÇ‘Ÿ¶mÛâsÒ¤I¦‡»ï¾»V­Zœ¨Ý_µj u…Ö9ñÄg,C£à¾”©j׮ݽ{÷íÛ·£AÑ;eg*Y²$êí„N8TÞÿ~lܸ9A•}òüóÏG6ÆŒã@)î¹ç¹XäÓýóÎ;U!×…ÈÿÜŽd…ãÇÝ'Þ©º#GŽùCÁ`¬ ä ìJ²ó×_=''ç•W^ñµ³íÛ·ÿøã¿úê««®ºÊ§û`ç]ºt9ÒZÃãHî¹çžóydi‘ÖW\!eŒË/¿|óæÍ‹-B`da~úé'dµãé§Ÿ®R¥ÊX9Þ§Îkw)‰RòóŠ•»£K×oÚºeóYUÊȨW¹rõÒ¥M—SÙÌ¥†iy¤ß3Ó'º´ÿÇw—›Tˆ šNåfýЄ?^Ì­[·‚îûÚýä×]wÝ—_~Y¦L™-Z@’A£fdd ÔÓ§OGx¹ÊqÓM7=ûì³müüôꫯN˜0¡›´8¢Â³h»ùóçKþÙgŸäК7ož››+;VùòåqSúÿüÝîÝwßEOïܹ3î@1bò|Ûm·É}èeÆ–.]zÉ%—@ü Þ›¢ãwÞ)%@ÄpÁL:UÒzâmt2dÈøñãŸyæ™Ë.»LÚ>)¿‚‚‚‚‚‚Â1ÁñG÷)øSffæäÉ“—/_þé§Ÿ‚M‚S6kÖì7Þ4h'ØhV,#Ÿ={öYguå•WâfË–-³²²F æ îxõÕWƒvŸvÚiGZkÒ}ß–ý“O>Á}ÐJÈÈÉgœ1sæÌüÕqî¹ç¶jÕjÊ”)Èá:'ZÜb‡æF#Mœµ''ªQ¦‹5®é”Q× ZîÕ]|nÃúªGÐ}F‰q˜Å,B÷e­ÊÉ(òE]´bÅŠ{ï½÷ÁDði0ã.]º ÈeÊ”Áƒ ,­¿à‚ ä.[ˆ kÖ¬iÑ¢ZpÆŒ`ɲ£ *Û¶A©Q™½zõºîºë÷ÑÉú÷ï^öÿÀ ÎÃ!Íx}kĈÿ.„=ÉË!"ªN8îÑ£:ÀažÁ, ‹Ì Ã Gá¢>щ!.‚èû›F¤M.PL´x·nÝLíÓUPPPPPP8†8þè>(cZZšdiH`Ù²e`ÕK–,ל)h‘Ãð)[Ö÷ºƒÇ-•E‹!Ún¸Av3štÖ2Bg†sûí·¿òÊ+Çj“±‚‚‚‚‚‚‚9~é¾´“F°¬¬,î/¿üdtåÊ• ˆÍš5ó#³fÍz饗"‘‚sÎ9_ýõ5×\Ó Aƒ‘#G6lذˆgždÏñE|ùûZm™.â|ñÅ»uëÖ¿ßÉÜ yc„ üq»víðÓc=Î ÒÿòË/Ïsÿ¨Q£À_Ï>ûlÄ|0þ †É…á½æúÃâß¶¢Ê6¬Ë-(8¿q£*¥ËV/[¾R‰i #}tj”Åõ“¤­¹ñO$û |ôòË/ïØ±£ä”H4wöìÙ=öòÖ½{÷x fÍšO?ý4²iäÙgŸEÐýAƒ½ð ·ß~{éÒ¥“S߯aÄ1º\ãáÔÝ4´BÑdþÒ³·nÙ™½s÷ŽÆ 4¬U§j©2åSRmãrŽóÑZ`ðRc ¢ Mv‹²È0Ê–-ûË/¿ è=(]›6m²eË–ø|î¹ç@sƒÁ „Ð}A§À§}ÛPÐÇK/½Tš•#Xß¾}ï»ï>_K=|øpðH„DÒ_НÆNNèå—_Eøo¼qôèÑ~IBÛm·A¢ I'òÊŸ¤v´ø¡‡ºì²Ë¾ýö['Dbp¾7Þx_yäðEÈ„ì!÷°’ƒ(›™Ðî]øÉGrŒšC‰Ã…¡ŽEÉO+W®ÞüûžÜÜ=[²;^quãšÕkïí¡ ËµqãÆ3Ï~ ‡ÃS¦LiFîÁ2ƒÁ`£F:tèb¯’“uéÒ”]–<ì믿~ì±Ç–.] öy°ø?ùä“Aƒá¬ýñÇ÷S”ñµ×^•/¶²PÔ®]»¶iÓ„þ‡~›KûGr4ÆŽ+mú‘« óxD¶~ýúÓûJ|mK|îíÏ•GnE Y²nÍêÅËZÛ´zŲ‹îXjôwíÚI ŸÅäŠs´:TxïÞ½çÌ™¾{â‰'âÊûôÓOCT;‡ÔT©R%` ¾xäù矇üàM¡¡›5k†RϘ1C7&y¼œ–/_Anîܹ¨pè *[½8ò¿fÍš'žxýU.\sÍ5è¥o½õ–¦qãÆè¾ÿ+V´hÑeÝWª}…c‹ãî#Ç ûàôR7/UãÒ \šRHk²‘ ~Z´h()xx[»víðk± ,ÙlÝWºûíäà æd-²´÷]µð$”nâ)õÿ@ï+ë’’ø¹Y‰3r=‡ü`Æq‰Ø›K9ѲJ½÷0à[¼¬þ¥‚_êÈ}s|’ØÉ*ÃàBnŠðõër•À¯·;w¾ýöÛ£GîØ±c=Ê•+çÇ,w @ZøòË/!rtëÖ---íØêÅýåob& Ò㟌_·oßþî»ïŽ5ê™gž¹í¶ÛHb©A1~…c‚ã’î#aé\ŧbRs,5©ò(Я1cÆŒ7Næ~Æ `üåË—?çœsN9å”çž{î`‘ûNæg2!_}àƒÉI}ß5$Á }Gr¡ò€mÛȳÌjñ%;Ô÷i¾¼äÂk¾4¼§¨æz>wŽlóéAà¯cüA¿h¾‰¼/ùâ I˜Ëã&J*‹ïócéOIîë:ujÆ -ËêÕ«„1ÔÉž={fΜY²dÉóÎ;¯V­Z ÍÒ'ϱ‚ïuÇ'úɼ߇ß7/^ܲeKÈ0³gÏFö͇ÝWPPPPPP8&8þè>ñ<óƒAÉ2%‘J¦ã2m§ïÝ»·¤¡É.Yš5k6}úôƒÑ/߯K²úÖ×Öÿ1–’I³¯áêwF"”é„›ŽKE0F‰É©k}ôëÚû4\‚ØâÌ\Ä!¬z(gžz_xÕôlúÅ¿œ;àú“Üw=ô‹~“oúM+êh¶X|à&ã”»ÜÐt梬Q# y™….(ÌŸ9k†ë¸-Ï¿°DjúÞX¤å¥-ü²ÐAcr"4ÊDÕ¯_Ú´i•*Uò7iðÄáG™@û©“â:g¼àÞâº5z®[·nOß²ÝWPPPPPP8&8þè¾4‡Ãüàž%ýZ¸pá‚ ü0¾•NÅŠ¯¼òÊ£­mEå8¤ÀqgaÛ%u@ÒÕa”%¤^5 †¯Q×s˜/œqz‡c9Þq¸ÿj-±W̨‰’*V!X! JXÐÒ‡±µ@=‹&ÆðD!eßLš²wË®‚b–ŒòêB!ô¹Ë/¿Ÿdÿ=¸ÿfó˜ƒ-)(((((((üÒýdåt%4IR·mmk‚ƒ·‡ÙKI®—“Òœ˜¬h@ ¦‘(%aBR81¼L'6!?Ýg<¢‹²…±±]ãQBÊpvÄï̳I§¼p ϧ bL9¢§ÄˆeгB6ç†h©Å—'ÛÒr¥åÂ_JR< ÿüÒ}’°99ð×ä-³‡¨˜¿¨›;±Å¬ýûœíëtn»zHã{D8n¦ï}âZsÓ§YFåªÄt_#®§ûÿF’ëC¸ eJMBMK-s¢9«ì“˜T¬cECÁ™‹€º¡éᎶŸN ¯ÏŽvÄd)¨(Ftc¿­Òh8ô“.]º”+WÎ4Í#õ§yÔàoÛý׿PAAAAAAá?…ÿAºŸ¬. Ùä°ªço„Ðî»Ì¤.Ñr²fÉv¾ËƒºN£¦-ƒˆ\qÏ„ºÕ¢î½uÎlh„ W¸äÆüähó$NLØŸZü#„Å –pM·HA€ ް껽;b¡@DØòaàƒÆeÄô| LÓ]’QX8¾ÛÃÖ¢¥ŒØ–)ÄTãûYÅ ' úß|óMÆ ÿà4b…düÒý)„OÆuü«o£ä K~ 1Ð}ÐwGs4ÏžðªI(®9cÝ©âðžÕNmlÁ“A9ÕèÑ*±\‘×É–Q‡6¡Ú}£ ûDsè^ƒ¼½iå+/jšµA!t—\|[Ó,•Ú“;ýîǬy‹ ±mƒëORI}ºÿí·ßž|òÉÅL¦        p Ý?j êmÊômycãoßÓ(è>h±­»šg o 7Ÿ}n€–wÈSÕ42&w™pµ¯QW'ÚÑPïû^ðt:yˆ:÷γ4È-LwéN¾³eÙœX!£z*sl]‹âBlŤ&£¸¶‰[*7gÆÝÙ?/¶0$êÎÝWPPPPPPPøËPtÿ(ÁÛ–êj„jŽ¶Ý ¯o\4‡F„\QÇàÄtIÀf›W­Û¾v}šµRÔ+Éõ'jÔ?9`jÄaŠâÚ1ÝGë¢Ùl[XɃÚ´i#½ÈºœqÄ)®Îi6ÕúoÍü)Z@s­Óç8©Áºçe§…#\DãQÏ?©“ž—3£û#ÖO¿QáT 3=F\N÷õ'E÷þþ辿•ÓÏ_²PÄ”ßß­+¿-VfðRò½ï'ûÝO>FÊ¿Yć̛¸·‰“j\gt‡®÷Ù°ä{a\K³ Ó¨­Ó'årò¿DÖø/+ÜÒþŒ»n ÌçN¨RÀt„<À…b_8µËô€³®’3/sâ‘+Ãøµ82ÒÊ•+[¶l¹qãFY´2eÊL:õŒ3ÎðKw ÷ýxZTQG^áSßÍé[›2¿ckÍöy·öH-]úª·ŸÏ©Z6bmM¸<àÒ¨n§æí™}ç£aÌÃ5¦¡ŽØÒLŠD®è¾‚‚‚‚‚‚‚Â‘âø¦ûþáYÉlÛÜgö¾%:B:Ž#O>ò$?(3,6øÏÊû2€ï÷݇&‘Eüò¸%éÿg_¥ˆ=ªÔ¾jøv-ôÎï+~ …å û–®í ë)ŽüiÁ²÷GíÉÞUã®NÕ.¿D×øÛ•O©£é1‡\—‰|j$‘ŸdN`uù—-!ò%I¢È·÷–-[z÷î½uëVž1c†išàÙ7öm{ütIBÀHˆãØ¡\jÚ››V~içvDV½Ð'oáÒ“¸¹ô5­¢ K7Ò,'Õ!¹¦›š—ûÃåÿ²<ßÛ©«‘"g(º¯       ð§p|ÓýdBO<²bŠ Éé寒‚ËÃb}jžÌ†“¹¯|Ä×îûj{ÿÂSJ~BExp²lˆZ…Ë —rw; ¾ û©.jÔ2õRù‘%}úm7¡QçŽ'wí´5L3HßJëéFTwÃŽH9b Á&™mË<øM%}Aâ¶m)Û$Ë0‡ÞnëAVÚæÍ›[¶l¹}ûvI÷ýv•²¬ÿ$cé“3Ž´-Ýå®Óô7²–NåùeY(ôã‚ÿ{°'©^ªÅ;¯±JUófÈqA÷ tE÷þ)ßt±|öÙg>×”šõ6mÚœzê©27?üðÔ)S‚Áài§V£F –L±I“&-Z´!–‚Ä÷ßð¸ƒñµAƒ7Üpƒ¯¤ÿüóÏ—.]ê[ø ä|Ò¤I2nvèСV­Z2ð„ -Z´¯œp‡ŸÑô´+[_ºÿÎú•’î\n›†î²Z9ÑŸúö_5yB¥;;Ÿrg·ÂËh¼wɓ掽qצ°Íá˜G»¡íõ+W®\¼x±¿^ѺuëŸþ9''ÇoªÛn»­J•*#FŒ@ÝÊŒá³U«VçœsŽ/Æüq{ûkh¿æÍ›ïܹӧû¨d™Ê¸qã–-[V¡BÄŒ6F7JKKCu}=u궬v˜ê$p}‡[Çiù3–^À%™?>Ð3X"í†>¯æV¯º=Å„”j‹*º¯       ðOáø£ûˆ7 !íY³f=üðÃ2RÇ úŽ_ÁÑ_z饫®º ©¾õÖ[Ï<ó nV¬X±råÊóçÏ—ëÖ­;tèгÎ:K¦‚Oã?þxÓ¦M+V¬ ëäçì³ÏîÝ»÷)§œ‚¯ ÑcÇŽ…„ 5ë={öD´÷ß¿LBD…‹/¾„ø7Þxÿý÷7oÞ,$ bT®Ui`¿~§_q¯Ý7qC”ˆ½qظ¬?-yf½j]n 48ݲXƒõ ׺ÿòËç/ý%äp‹ÇqÇ~2R²!ÅDÛ¿ÿÈl)))“'OnÚ´éÕW_ýÕW_É…ÔLß¾}ï¾ûnI”s‹3ʸuëV”hÇŽ’îKu¾\+³GÓ¦§§×«W/33µviԨѪ•+ ss-hÔhØä‚vÝ~Z]Ó6õ½»ó&M[8hD¹3N;½çý9Jq¦2Ý⎢û ÿŽ?º/©^8Þ°aâE‹†eYÒ0˜4iÒðáÃAï¼óN” q>ÿüócÆŒÁSMš4y衇@Ö‘oÜÉÊÊ>ãŒ3d„ ÀÑ/¿üòN:ñÄÉ»óæÍëÓ§ÏÔ©S/¼ðBûå—_ž}öÙiÓ¦µk×îÚk¯­_¿~0\¾|ù×_=pàÀ:€y§¥¥áYÐßuëÖíg%ÏÉ”/§ 5¸ÿ[}¯¿÷!ŸîësÂÁ’ÖÂçÞÌþbÂ)t¨zgÇÝ<Ãäz˜¾^®áŽŸçmÞ»õõžO-]³ö™çžëÚåÔ)$™3gvìØñºë®ƒxƒ|âÎîÝ»{õêI¦Y³fh­ï¿ÿUŒüÿøã·Ür r^£F ßöæp:Çt?ùW$zûí·¯\¹²ZµjO>ù$¢}á…·Œ%ž{òÉŒªå_zþÕuë77èuëâ³ +4ÜЂE“ïîI2J´ÔǪYÒKšˆ0[Ñ}…ÇÝ—–èééé’LÏŸ?¿_¿~Ò˜¼±”ãN=äþ½÷Þ{øá‡/ºè"Q0~I_ýu0ãÑ£Gƒ¸ãÎG}ôꫯ֫Wï©§ž:ýôÓëmûöí÷ß?h4H3ÜŸ;wîsÏ=‡û`ÏW^y%ò3gÎ\#ð°aÃC²Ïœ#F@6HTYµlÕÂe¿¾ûÎ[×vÀߪkº$fÒÒQgÁÓodOœT÷‘Ž'tí@ÜòAW3ùoVl|¢fD5çÇ)Sxüñ2åÊ÷yý ù‡òøãŸtÒI²=P¿(QÆ Q:uêÈ" ì¯½öd5kÖ$‰e?M÷“7ൺiÓ&T,„Ÿììì–-[îܹóÙgž¹­cG’hÝòʹ¿,¼`ð‘ ÏHã%Í ,]üí­i¥J6úf¬b…74N£St_AAAAAAAáÂqI÷C¡Èý¼yóð<Ÿ>}:²"ÄK3úþýûßu×]ÒÈþ7Þxâ‰':uê„À#7˜öíÛ÷É'ŸËoß¾½4ËÁ§Ÿ~ÄÝß•Ë<¼ôÒK/¾øâøñ㯸⠩òä‘GÞ|óÍçŸá‘â!Cºwï±aäÈ‘¾šAƒ-Z´höìÙ«W¯Ž× !:1˜ÁÞ}§ïµwßïk÷CŒR^Ö! ž|}ëW“ª=|Kõ;:¢åBlîé[±Q=#¡NŠë~5}Úc?Q±|…õë×7kÖì±Ç­÷é{NNÈ7~úæ›o¤‘2ùÎ;>¼C‡þeïÁ!Q,Ý—[å–¤Éç»ï¾+[¶ì† @÷Ñ-fΜyRݺ{Ý‹λxá’å~ðF¤Ùi,=Ÿ†V/ŸÓùAš‘qɇo–/Ÿ®‡ #ùšÒî+(((((((üS8þè>~Ý_°`Á3Ï<3cÆ pÐÛo¿‰ƒA°ùY³f!%I÷eø~ýú=ôÐCwÜqÇ| ]Öàóµ×^ëÕ«èþM7Ý„Áàß~ûmpý§žzʧûÒëÎsÏ=÷Ê+¯Œ;¶mÛ¶r+H<î Ö E¤¤¤@@y^xá…-ZH ®áô÷úë¯?ÿüójÊŠYsfÎùìËϾûv›;ïí¿aUÂ'sÂf(§pù‹ï®ÿæËrÞrjû›^š Ûûæ ëj¦e°@,6`ðà¾o½ÝºÕe?ÿü3* Bȹçž+é>ÒEnGõꫯžsÎ9ø©fÍšO¦Nzë­·B0¨_¿~r•úH’+O¹Bâ{•?è7oÞ<;;{Ú´i§žzªï€HÃO»wïÆO â’î£* }5¬_w,ïÊVWý4oÁ…CúZŸb‡ hÄY™ùk—žÔÒ->x-¿r9=grq¥ÝWPPPPPPPø§püÑ}¬tèС÷Ýw_£Fz÷î ^+ÓÞ²eK—.]À>(µûˆ̾gÏž’îûŽáÁ×ÁìG}óÍ7#Ü7’iÓ¦Í×_}íµ×>ýôÓÈ¡\%˜=kÖ«½_›ñ÷ýÞês}‡’qrK#é6ŸûLŸ_M®ÿÀ­:Þ¼•§¢%õØåÔ3ynôóaÞ}ù•—^úÄã=W­Z…ÜBÒ€|rÁø ‰üƒpgff‚p/\¸Ì…^™¤V­Z ùˆ¨úÍ›7ƒ7£€ ×=HbyÄwTŠö“Ú})Y%764kÖ,77wòäÉ•+WÎÊʺôÒKѨ‚‘×­›ë´¼¸õ¼ù‹$ÝXAÓt´ù ¿½·/™Ñ´ß‹áZ5mq—€×+º¯       ðáx¥ûÆ »÷Þ{O:é¤ë®»Îg¨à¯£F’N'Áæ›4i2gΜ_|ñÔSOÅF׬Ys÷ÝwÏš5ëꫯîÕ«~B^_xáph<‚g¥Ñ?>‘·±cÇN™2DÖ²,Xfà»ï¾{þùç‘gd8;;BÂUW]å—t ¸mÛ¶uëÖ•{ˆ‘CÐý9³¿ç¿æªÖO½7x\4WÒý0çcajlþföúÁ£Ìp°þÝͦ繚^‚Å^/×ð§Q£Wn]3~؈õ[·¶¿éæ§žxrÙ²eÈ-Dqd…F‘HÕòꫯ"·3gÎܸqã¸qãð«o›ä³d´Êe—]¶xñb4*¤#D"}˜ÊÕ4í€ÐfxŸ¬óm·ÝV²dIÈ (&Ä4ÓçŸþÈ#àÁ=zÜsÏ=»wÚèzGמ=(›vÉE­æ/øMÒ}à ìm›Þ±yÖUo¹ªÊÍך©%\pzMw8Wt_AAAAAAAáÂñG÷‘ãp8 ª ’=}útÐMÿÀ¬Ê•+׬Y\_ûôéóðטÝtÓM}ô²*ܺukÉ ‡ Ò¹sg\óÍ7¸ÿË/¿àÓ×mשSç†nÓ­]»vrðR±FlwÝuW¿~ý’‹=zôèW^yeõêÕ²Ò]æ…\ÔC³~žÔô±ßÿ4§dXÒ}ƒ¹¦n0ÆÓc±ÌçÞþý³)ÕïëTçþ®ù\+Mì^áÚ÷]~ù‚åóõBÛÑ‘a>þ‹ñ ñŸ|ò‰Ší˜1cÚµk'÷ƒ—ƒsÏ›7×7IHDò°-’äsÇŽ ШItß?; y†œpöÙg# I:´KZû࢚8qbóæÍAúÇÒÕ«W‘àW$-Z3=}Ö´éUÔ¾âÒ+}cÍÖùâ¥s»=i–¶öZ¤vM­òÒ£®Òî+(((((((üc8þè¾$¦ÈÍO?ýâ›\pý† N›6 éì6mÚìÐ÷= +ÏÌBBï½÷n‚wìØ÷ýHÀõ‘]yÌ9í´Ó@j婺~Éz‘Ê”)Sß6mÚ$ŸÎ‹ ãsçΕúryÀe­Z•HÉøt˜pÀ¼îžÇ»…ñ­ºà»–ckZj@[üÄë;ÆL>µÇ­•»wÌ1Í’”õ.YöÐWm]“f¹évk§Î™™™ .”[ ,Ë’æFr‰|ýúõ)))wÞyg5HÂ"سgOÿþýsssVùpjÕª5bÄ]¨¥*UªÜ}÷ÝÈÏ Aƒ²³³ÓÓÒïºí¶ô*å† úpÕæì½­Îù½n倥¥ÍϜ֭§]9­ÉÈ7i¹Ji1ˆ.רÒî+(((((((üs8þè¾ôÌ“l‰îß÷ô÷’ú¹÷¹,Iâ¾þþÔ"‘øõ=í$'äÇ“U²©ŒÜü*õâ$a /~p 7ðmÜì—ØªFTØ®ÐvNš¶¶ÿˆÔÊ•Nìqk¸ÑI)”xžy Ë !ÌXÐ}î2)BøUäïµÅg,›8qb¯^½À‰_{í5r„ô-R ’ ø²˜²2¶bk^BŠþiÄÉñøRÆmq¦E(}{óªÉnnJ>Û0ðÃMã¿.ݾŠ··+‘R!äèQÓB®´û ÿŽ?ºxÃá0è¾42I¾ï}ž8'ËwÅ#9·ÏJ%ÑÇO’—'W‡/*ÈEù²Ô­7Ÿzgçp@«Ò)u #ª1LTˆÆ¼²„™ ®Á¼'Mš‰Dp{÷î½qãÆG}´ø¢‹.ª\¹²o씜CײÏïe1e´Eª%~T~0_¼‰×¡ÄulƒPnD)y}ò™AÛ^¹eîmw™%Ò.ú ÷Þ*eDR9¡ÁX€)º¯       ðâø£ûÈqÐC>*Ig²>ž'¹™—÷ýM«~V¤uŠIréಈ%O²$@Y*¼“sâ‹Éjâ?mÓ û? ºOR³G6IÌ2‚öšÉS §Î=¡ÅÅå¯j2ô×+6¬o–æ' Ö8ã~¹dÆvîÜÙ¬Y³•+Wʬ&K8'NlÙ²e‘}º2‡ÉÒˆo¸Oë®iãd™'YÄŠ7?ãÂë×¢šþFÖ²¦E~ß¹¾ß@^6µú=íhÉ ¥òB–F B1ƒiç{sçt}´`ž ûè>JJXròŠî+(((((((ü9t?!áp8|0Júï#Ü%¶ ‚ÏŒ ÚoòE¬0¢é¨¨8PfÂ)××9Óü€QÅ¢ÏV©ß `Rj;ÄÕ‰¦s]œÖ•(´”+"‘Ș1cvïÞíß”Jz!mÛ¶•ö<ÅZðÿ@2!H [ºÒ6¬œéF÷ͲшøUGÖ*(ÏÓŒ€¬¸eûô{*Xø[в ü0]#nQºÏ²eËNŸ>½~ýúrë°"ý ‡„¢ûG  ûqB.ˆ¬žmòÖffæï¶4=ªq+PL)(ÓjÅô{ëR=h꺄›¨UePáDð"¦Jñ„š{©t—Ô?yOÂ? îýiâäƒì tüš¥óòrw† ®ÛÅÓÖÓl­üÞ¼‘=œó[fÀå.[(ßgÌã/• {̘1Cj÷¯ÖWPPPPPPP8VPtÿ(ì5FxˆºÓBƒ¬ŒåíbŽÐ×SâW.Ãå©)BѪ¥®SÐ}±ŒX¾÷Lßà‡Ü>çïGb_ƒKÝ|¢eEòv»<ŠÌèÅt2ƒiAFÂŽ½eÅR’³'èÊM&Ì–\?"âuSÓ4Q–³Ï>;==Ýßwq4Š£       p5‹Û©+~r%Ýç º/Í{”n_AAAAAAAáïÀŸ£û‹/~õÕW·mÛfÛvòIµþù­à÷Ò1 îìܹ³Aƒ ûþÑ«ÿIº¯         pÔñ'è>ùå—_ƌʛ› оgÏ|îÞ½Ÿ¸ƒûäi³))) õçw^»ví¤ïDE÷ŽþœvïÞ½;vìKÑ/]ºô®]»ð™““#¯Añe„Ò[zff&˜ýµ×^«è¾‚‚‚‚‚‚‚‚‚ÂQÅŸ£û–eî§¥¥áqÃ0🸡·m[^#$¾nÞ¼yôèÑË–-?~¼ëºøIÑ}…£„?½U”,=''7}?<Éüè>ˆþûï¿F'L˜àPt_AAAAAAAAAáhàÏÑýX,²nš&X»|69Iô3»tĉðÿõSuŽ>þ"ÝÏÌÌ”Š|²?ãW—l|Û¶mŠî+(((((((((ü-Ú}~ødíþgŸ}¦è¾‚‚‚‚‚‚‚‚‚Â1ÀŸ;U7îÝ»¬{ñâÅYYY °,Ëu]Pt„ÁE‹-®¼òJ\äää€î#¼¢û G‘îKÖ>cÆ 0~Çq"<å”S}ôѪU«âzÛ¶m_|ñ…¢û Ç‘î/Y²Ä²,|:uêСCqQ®\9pý3Ï<u]ÏÊÊš0a‚¢û Ç‘îgff:Žf¾gÏž¯¿þú«¯¾ºé¦›š7o®{@ä»ví7nœ¢û Çݘǃ;K—.=í´Óp\ßu]é™Gó((((((((((ütQƒÁX,F<Ï<Šî+(((((((((cüt_Æ&óàúpéþºß×g”H/,(X»nm©’¥«×¨0„¹š®›)< CáòœÄö½+ž¸ˆßãEï”{—¬~(Iú)‘Pñ‘<9{É×\ä_á/ÆÛίIþAUør)òþq‡ù‡¾È#?Â1Í‹‡ú#¤ßÉiÒ¿œtŒ+6Æ¢YŠÇq¤Kzúø‰Èœ'g/y?’ÁöÈ@ž±âêŠÓÄ|ÀãË|ƒÍÙ~¢ßx¢Gyáø¾©”«qû;ÆINÚUämžh}™šœCBR¤DihR(5¥*(ÄÁ/(Èÿt?oožpÄùÛb? g‰Ã¶¨çwßeÉtüÿ×4ÝY’éþpºjýÆR%Òœ¼=¿¯Y“Vº|ÕZu¹Ó‚@@sïjò[ ‘"%%ÕŠäP0¸ø¤â­Ö9ј÷œ~صt¬â¦=íà‘ðøðÎe0o|ÔcG0wr/Ãñ‰AÛ7Ih.!öaç\¡p@'ð¦DÇû.;ƒÏx|Ö‘m…Þ¢YÇ0· Çxõ¸@¼þ"&Ʀã?‡)–KӤϢ`^øMäºO‚T 5ûÓœƒ¤ˆáã(Êc0ÑÇ9e®7Zz€÷)Ô&ÃÃ-&ÑjJ:&ßÔšx»D0N¼˜ŒŠ§4îU8÷I?MT£+‰2§†È!cñœ‹4>ÒŠ¼;bÿ-@fqYw)¶®L¯øÈsÌ+zŽ7I™G2i¹YLÿ”]a²0¯¿poôÓ|aÄü˜¤ø¨G7A÷Iü5@ ¹#þþ"¸!þ¼-s.rçzoAbÄŽ÷Ù¯©»¿¥‹È¥vÊQÓbÞj‹N¥ ð߃´…áœæàókš §hºÌ]×E#›7mÎÊÚ½½Ø˜ÁÉåu$Røí·ßF£1A÷©!ÞKJó÷îY¶|ùƤ«ßTºDŠ¿gõºu)¥*Tª]!4§²AñtŸ³p84 zÀ@Œ;z’ˆý™Qöž« rhñxz\uàI$Ú¾ Qü›œgþOMÿ$©YBGWÑø<à]$D6Wé~þüÀïÌ@ŽT·_l:X$ëm‰þ)9K|XH%|.ózþÄ}ž sTÒ=ÿ»ÿÅÁW0‹oM8ör‡R»¸Ü,^בµÈL*žs©’õ4.rù€ò}’Ð?=HAÓ%ÍGL ,œJšiÓC)ÓþRæŠÉ¡¬´µÎã]…Qîî›°’× Â,¾ŽïTÖ<&²ƒ,°ÿå:?pîNÎ9‰w~¹,K½þŸ\º* ¹¾÷éhÄï‡É«-ÿ˜Ð¥ ðï÷„{^‰øìü`Ð = êÒJ‡ñ«W½÷î{Y³»9£Ôô¡4£ÙÛ²«U¯6ñ‹ñA^Þh~ÞâE ò <íþïë6–,‘-Ì]±îw½ô %ª×qt± @é>º_$zÓ¤ºæ©m“nê’±iñ©Q(÷¹éþtíŸêCTÄó8wÔ¼ÝMÜ?¢¨}-˜¿˜y íþ7àé-½î˜˜ä}–˜'À[‘á’ñ»j+Èòv=¹' n±æ|Ÿ”¾ÿíƒÒý# ìiee÷Œ ß®!>JpI{÷ÉF¢Å-9‹§å‰ ‰ÒÑD‘}…Ê­aøF ‚˜ fGRLMhœ¤‚ƒ&·ñ\I©œÆ9œx-Ýoœô3Àþ@â9ºjs‡ÆUß'A.¬a¬#œŽR:ðn\—‘ ÈÌSkSêÅÄK*?ü™”'¤\ž(B1qÿMS±‘hqù„'òï ܱè·RNe‰Q½ˆ|È7EAá¿*%xJ¢Ö!myÄ€0=ÕFF~Y°dذaŽãzq+rIâ?ã,`Nnpr»o·Ž8xë ÷þ¾<3–·gä°iÖÚ%R "¹™ë7Ø¥NpËVͱ3Whêiñ»u}ýľ;\ÍÕXÌ`ŽÆñ¤éâŽXZuŠ×Pƒ¤È’ôûU K >ÞðêÈ6g.ÊxØÄѪ´©`õsŸˆù ÅW8Lè ÒŸ+þ—íÃ5oâŇ+jÙã èÏ:wñ‡¯. ë,+^±u×ÖÅ"€ƒ1D³ ·x^Âþ@ÉXG¤Ý§žù CçÅè™ñPÏP–%:­È€'› ýÖ<ÇøtŸiŒy”£ ú½­Q[ǵ ÚqƒGï?²#²¸£»4®}Ç?¨< ¹5]7ä3N¬˜&CÞÄ»éhºWºgS…ÛI¬5 àø Öä\“ÆM4OR@Á-Vòú{@ã+ûgŸŠ|?è\ØŠØZ0æÿ&sBÌÂM›†:8Rðâ6 ›è<. “VoÉÊókak˜X¼¯bñAü ýBsßr »^ßÃ÷T'vàäÉRü#Ë6)ÞŒÞ`ã½B$Äuä9/4Ú[ö[ïSˆ±òM`Þ¬íÆ­ðD¤k¸¤è›Â]ÆMNß²WAá’ãû.t¯ ¾„Ká=µ½˜{ù '*x&„n€V™‘Ü‚Ík*†4šŸûÑÐ!tÃÚM%Ró£9¿mÈŠ–®œ—^euö^¢éqCÃüœ€nÒˆ©À…`И‰+F]¹G“‹®éŽëÈÝÄEdθnhNñF™ž]¯L(ñ >1×RL·FPKšÌÆà‚™éð% ¿#‹YÓà"jžÐ¹°b‡r…Ç!&:MÌŒ™è¼P…õ€í€Ükoù|Á5¸^êÐb„W…ÿt×$ßpmbsaû@ ЉikøŠW¬y¿QR ¸xCýûÔ³t4MÓ±Ý+†é¾À¶mÃ4åµp;&­”9.‚1Ä"†W*O*ñô™ÌWôF°ͱLÏ=†®j„,æY8ଛۈ’Šìapól‘ä°ÆQbÂÈyÕ©G¤0rcLµ½½Mx„zÜ)®ç…€qÙȺfW¹»¿(Óñ*‚ù&Džk5Çqôý¬‰â3 Ê®!*Hdì^PLL D £¨0‡9‹¹a:nœî늛¹º·p+ŒP¹o•ÇÿºyˆQ˜Ç›)ɾÜkŠÆµÜX±ód'ƒê¶ÃEÃ!ËÜÂPɈÉtpä@7JtQQ‘¨&fˆ]rHQ 0¸¶0Mn[u)_Øé‘I!aÖ ŠO[,¿k†CLU¬»"NÙÜ—ÿå¡kÊ—€xÛMÓ°mÇ0Ä;£‰E6Í]‚¬WŒØ}—¹¦n:è§T—âžl#Eãàý[mÛ‹fãu1CäÑ£âo Ë* ÿ<ðž:6ß½iëo?^qV£@$ÿãaƒéïk³32Bù‘œß²Ö ºŸVemv§AO‡pøêm¼üA7Vä±€ØÕeD™Æ)X0¸®ƒË04ËrÂá@,æxáã‘c&Æpƒ¹6fÅ0`ù>Áã BÊ£ÅÂv^À)´hÈ6Scâ1a[Úý#SLæhêF æ™ÃÛT'7'©}E Ãl­;BõöÃh´0Íctµ 1m¤”.ÒLÔ³.X‡ËÔrÊx­MÃà±HìÐcÝ̳ „L!2A[ iˆ‡#x”k†¢» SHé“ ÷½I #PüfHfcxZ\xºŒ'R`°,;%%‰D5Csä>'×7…G +Ÿfà :fª#ö(áfºÏ¼ÁMÐ>¿4‚õCrA‰Ì@ÌöúABõb{ƒ½ A€Rl¡˜7=òçx{^ H/¦™šS¦»¨1¡ø¡&2̆ØP¢>›cÞ6®ä%`Ç„ã­ëro ƒ4jæÌJ1Å8Õ£T³tÓ „§`u¨(ÎLÓyÔFŒ¸©›žàijÝÿ›é4êSêÀLÑ þ`îÉ\ì~`ÅíuC 󨛪»'ô3 >Ẩþ¾ˆ#…ÁU!æ!‘jbZÇu½_Ä– ãžëÐE; 5ÝÜëZP·u&d‘Â0~1 ö†5×à®#¸8z…îpÈžP ÆkAìîý«ÅÑ…Ž’‰xS¨×O<‰EÝèŽÈ´¸­EÑǸÎ,‡XèÞfÐ"†£¹ĸíðŠw–X,šo'dˆB¹Ìļ̂©Ìü~ä›B‹_©SPPøÛÁ0|:6Ù••ýÛœ+Înˆæ:”®]·=##¥ ²sIÖï±R• R«¬ÝVHãtÿpרՙn.ÿnæìÏ>mÞöúÓ.jQ`1l˜ÜÝÎB¡Paaa HÞsÀ¥'Œ8†áÌ(7¡h+Œ¼­ ó¿þlá”/ê6iÞêúQ=$t,kä| açÙ\/W«Þwö i%m€ãmz:\å‚góÁSitáœi3>û 1®×htjÛ.Ý-#E†Hƒò"CÔ3|òA½u&¤ê b ±£+gÓº/Þy›îÙ&×°EËm®‹Â…¿uSãÂÜ.•l^ýÛ'C†Õ=»éemÛ»BÀ¶HÚßÍà¤&t:¶­s'™ì{+Ú ™&+Nå¸$=`ü6kʬ1CÀ¥ÛÝó`‰Ú"FjèH¶A!x€3ÛŠ–X‘ žu¨·1×uÌ­°a/öÉ!YK×^Ú®Cã¦Mò5ŠÕv]:ìᑽ!'Ì w²W/„ÂQ‹µïrw…S›]¬93¾¯–Ù‘¬º su!6Ré0Äu0H‹Ìf(Æ5Ï’‡hÜ ÚùÞˆýžV¸Ë“]‚r•:t¿¿DÅjù6$ô€·gÏ ²è¦e‹>2Pw£ºCCdT¯{ÓÝê%*X$€yÝ{S~  ;@½ Þë]¶ý6çò³±ü§«×m/•ŽìÊÌú=RºJnzÕµÛ":S?Àeƒ÷öâz;Šq溰Ùe¢žZ°g+·óp¸mÇ[gÌúqëÆß¯îÜé„:§ØzJrÓälÝ8îÃ!‘ì z0,‘veûvß|õuÎîüv]*W©ø/^[ÊL¼?»W/x÷¾Ûܼ¢ Õï}õ­²ÕO²T±TêZèš¶­YòÕð÷øÞD3*V=±Y«+¿ü|| @ÚÞÑ]+}‚m5f¥ëdî÷ß}Úó1âì¦$vBýÓîy{˜S¢ —ÎÅX{¸t_8õ´IH³~übð¸·^›%kœ~ú}oõÏÓS=‹%;{ÓºIC†ð=9Ìp]§À/µ…ÑIý λô†[bnZ :r[¼²ÄÙ¼zÅ {»‘œMàžçÞÜõÆ»*¤G¹z4Ïž$äF×eÎ}¿çýM/nuËýOï0R™™‰9„I ’º7À%ÆI3(#û„(ê™v»òÀä®ZêÙ°ËĻڌ0ŽlY:s™5#óÿÆjVD,ý‚L ž}éç´ººÐ%©táê†B¢bš‰Ñ BIȈ~÷íäÙÃ>Ì[µ!î{÷£Š§^èèZ ï+'q‹ó„¯â¥.„=ͳtÕ¼ÿ={zéñ°û¦?n£ Ô‡KX€ê)b4͵öLüèõK—n€[JôÖ×]>{î̈lÛù”R)G رò74¦WüÛ½ñÉWθòêFeŒH1—¦"w{¶|þáàœµ«7®ÌŒän¡+Õ¯k”ªpC×{+Ôk\HMð~*täLì’#ÅŒ6®n‰PNNž½4·2˜P¸yóµ·5 £¬ÆÂè«—5jhîžÍ<¨‰eX›åJ^që]eª5ˆ Ã0-Ä£©¬`Í’Eï?ô)Ø#z¨•[ªFî}‡—ª~‹aBIGý™ÌòèÒ_øTOË¡n2_ºöɾ3„—ªÊta£$$R±ÄkŠŠ¤$®”=CäÇÁfz*<É+¼Î ñb…:1ÕºÜk1±½Gô'±†Â½—(!NHÉ‚y›(H|þõ×½ùš‹Ž&ºÃì"Ó{T RÌYä&6+ˆ} šg]%¦BnI~o½•ð Ž×ÉÖI‚ x«`¢Àˆ×–»âYâÏõl´Då ‰5ºÏO·EGóä3Ñ?ãò^‚~à*jz[Á¹˜µÛàâus½Zõ6ùhñu!Êt¨YãÞ»){ŠtÉ¥É ׳<”›öy\x¶‰Þ–&Jôø&•øÎî(×¬Ä 'w¡ˆrè¼´x¯ä,á)€zˆ4îÜ5Ñ Tî¢ Mß=.÷½9€ˆqÌË–‡ ™Í÷,F⻎˜ìÔö4È ï"-¼füë¾EΣ­tY~Í󳕨¸ÿt a•êוߘÂg‰Ü·“HT°E‘[WÈÙþÛJã™7Õlê} ºÏtÒðªT†!qï¬]¶—ž4Þ¢çë&ØÞ®Í[—|wÙ¹õ¨½çÃGÒ•ë·•IOqòwgnXŸW¦êîU×dG,,¶½`—)‡f!ý‹ÅÀøø© ûN®Û±mÛ3?îõð)'6:£ó´öÉá|³×¾÷þ¬wŸ8¹L7£Tó[´¼æÊ÷y89¢Ò­z¼tÑõ]YÀˆY-–.z¨Î=;H­œ¦›®#æv¼L£H{~_½}회ê'•¯YÏ%µ<*fˆ~¨kÌwฦ©»ŽtÃŽ²`9¨J—˜Ô4\ÃqõÝKgÏððÎmÚõ…Æç]° ÀAœ8÷%ìmObžÿ`L¾ßÔ‚æ½D`²Žîm¥†°U~ë¼û®æúý‰Ç;1¾;݈QØÃs×væBÑÔÔÛ+2'lâcâíEçÆÄB4Û6Åþ;Aæ©aÊ}`² ¡T‘ ’,̉)f¦ ƒf!.JÑ}4àªP7,ƒ¦Ú¯g‚©Å÷íy•&6gËižDEôàúà ÄqÝ€z.× êNAnöÌ©_|7ð%L*ÝûŒ4ÊÕ´…9±#%G]èœ\1 »S4§Ži^tƒ ‰aTéÁBn†0WÆ !°1-‚™BìY7]ˆxZL·„YÄôRHDB’ã&GêhR šâä…¤pÜ=†·Êrôp|µ‰®‡®àâõ1L•£ ø*Š})Â0ÄT›Œÿr‰]šX¿¼?ðÛñc´¹¢UÛÛC%«EÒ‘ßW¾w'+kÚíÆôTÂbšTÃÊ¥ºÛí…w*\r»eð|²aÅØþý2žíîÑM ®¬NÃFY6F#…Ýßy¯Úé—îåi)n4²qÙ'ß^ûË4o·`íÁ@µ:µ·lÌriÊ}¯ ®xÒ¹±€ÎÍ\ÍI±õÐÞ•?ìÖÞLOo~ûi¥+×?½‰–V®Ð¡¡p؉䈽cm港mûu¶îF]Œq)¥*U©ºiýú”Òåy{H¸f£FCF‚‚Üœœ5™ËœUó§y½RÃ3oí÷©U²\Â$Þ01Rö) lÄäÔZðéÛ“úöªÑ¨iÓö÷h¥Òëžu®ÃÒC®í‘ «{à~=;Ë5,ñÈ6„aµAÊœscçËÚÞë𒎉W#¦y;» öænþuÆŠ¯Fý:gN“öw^×½g~°”-Ô+Âðãÿ½[°=‡’4â”'Ô®°mǬtŸKU¯ÔçÞö¹Ë7• ';1+µëÕ¯Þm Ï9¬0lC îΟún¯Ÿ§}Ãtãò[:•?áÍ›W&½méÂú\vóÓ}ì=¨sGH‚Ôë2?ÙÈÇw"EÞœ ¶gŠà‘H*x]ÞÒÌþ÷u¶ 6L¨– 1&T¾T÷7dÔm3R#Ï@§-Üi[ÖâÅ¿¥ÆöælÞ ¦9-bèÞÇy¢“hÜ;uSŽéù[Š&È¥’À rï^×£òBxVǦ[Œô”%‡x_Åna+&–Ú˜ÜU§ÞË3oבHQÒ\]LÓÞñ 4î-‰'.§_žì!Φq¥|§•ÜóQiç;·m[2§õ¹'êöÎáÃFÑUë·–t?'sƼ2Ur2ª®ÝV`A¼ \;Pá$º€·ÁK,YŠ]j¢o s˜Ç–g~?ìÁ»î¸ç‘ú×ܰEO)ᄃDÛ’õÛw#__<}|å:Zt讕©R©J¥ ó~šùÉà­«—œ{ÅõÍnìžQ£Z.d²<žê9²¥gÓPÈ'˜Y ì ÍÀ €‰QX ò³M7ÝŠ¥Úz®–žGš‘ZðC[œŽ9…©`}‚Å¢ÍB‘Q³t4ª‹·Qh¤b#Eè÷‰^ÖÚ1ú…nsg͹è¡×.¾ú&Hª÷4ѰxÍÁ….ÝÉó|KJÖ. o,3;45#ø¯è^ (<¨yŽÐ} &(4ZªÀÔþg‚%£™0\$á†LSª–¤<`†ÇÀ1û¢œè¬ðÚ„®Â%1ÏQÌ],È1ÍŒé!=„IÖ8V±±PŒÛ<€1ÚI¥ÂÒ7†ÎCµô¨x«é¿CÈbãŒãAa Âî:fXW,— ‚á¸'ì;C!=Íß´vÙÐו¬Xûî>#j{çÑÄ(pˆÌV4…É´¡ˆµž þܘ[‚ò›OYÔA)iB$p¢¥ðƆbõ8 ¥æÇ@0"ÒqGsbiBŽq„ù²˜?ÀöI$ŒØnšžbˆÝ#nÌ^SŒâÔ9BsëÙU)dÄB“;…–M)‘çÍLå…ïáhÂpÄKìêꀰ¿†˜áfX…ƒºÞ±nùÂŽ/½tú…WXÓèÂ6Ý^²¯(ˆ 0 –•¿3ó³q³G|˜Q£Ü™7ô ZÀdÑ• æ,šòE°\Ŧ7Ü~i».–,‚`¸Ã$eØÞIï¾ð͘ÑMÚß~ Ý7\—ü-ëæ¿Ó­ÛÕwÁ AÁué¶ Ú4©H—Qšá /D¡<ŒòRÌ™4²ßGZ»öžÛúªêg“Kh0`ÎùxäŽß~5ÊT¾³ßð’µO\úó´pî.–p›6¦ïÎÕkozƧûÄ'Ab:uŒ˜Nb¾~8þ)z¦øcÄ׊ROÂÔ õЩÔ=G€È]ÌAuT¬Wéq–G¤*Í“*"L‹ÊSG}úf ºÒæB ur1T#ÈHHRÌýÞ¹…"][w„P]tTêmo·?KøW•޲ÁÀó<߬Z¢&E¢H1èxœ5ƒÖ©·áR9 xZh±E—r ᳟ì®X'Ð$¿‹R1oˆÉcûUˆÇßC±tQŽæ Ì;«‡zÕ%òjp ¦®§7dQÚb©N*ø¥œ<ÿÏÞ{@Wq%ë»OŽˆ(rÎ9çœsÎÑädãÆ6crN Æ&眃ÈAd„’P–Nèܯjy®ïÀ]Ëþ=ïóÞL_¯¹ZpÐéÞ½wÕWU_}eˆœ!Ÿ-²zyŠñüïftø7§s’j÷Ç!$ƒ/ÕHŽK¤Ø‚ªpð8¢gàÝ~¬ýû™ä$¶°›yÕ€ MÏ®"ÅMÉiT>+wÕ'cîŸ>Õ~êçͺõ¿#[,K pðá15ÿZ3~¡€õ×Î&å1ŒbyÕ°üå0Ré±ü»‰$†V0¹Åš¤€þÛÃmþô…@S׌)YŠ/;cïömY©) DZº)ºZvêQ$*²èÔ(8Ưº=™©{·nTsÓ%Æà-ÖÓdys¶ì;ÂV¤œÆ‰’¥ÈÞ×ñ¶ló¨>Z¢IHõ4áÍ:w‘òWÁÍF£ë¤š€Ç­'sléC®©£„™ñúQÌñý;YS3,3¢PáÊʯú`¤#¢Ô„E[ØÐ¢pŽìÇi¾äçOŽîøU·PmDeذ¢Qú аL{’ŽoÛh¹3]UjÔ»xö´©yËT©Y¤dÔ¾[%§e3²x¹ú]û~bUtwòó[Ö>ŸŽn],S¾j£6ísÞ+ÀÓˆŒA˜_ÃúúKXäמØAÎ eä7ñ÷îÞçS1üC|†li«b&•š¶õI.ä™ÿl}’³Ë`T§/óÇÉÓÞ¿Ùû«¿UoØv±êäÍm%=˜?q,þä9kó•« ¼H«‚â™ÿþÄ—÷cú~ôM…¦Ýh†Kvwñ”ž¼‘ÝbД*m†ˆÁ…YÙwïľ£ëçgf¦ùaeñj4ƒËxtmùÌ‘ŒwÀðá¡FI¬]ÊÌytêȶ—çšòèEËòU®Í«Å!Ü×9[êÓ'ƒ\ãÿh(%JìDÄd•ÄY¯ÞZ=¢Mx¡¢F}P¢Q7YrzÓÓoÚtjóRÆ>yÞ*GñŠ2Ír,›*Ër´i¦Þ:¾dB¿ˆÒÕÇ-ߥ:C$CÅ#f·ÿÜ« ¸äÚö%‡|U®I·á_¯É ÐöK&~Ý'€ƒṖÿ^‰šå¹%›¶lvÝ{ãܦÕç*Ú¼íèï~Щ@’£4Ìá1zîåßžÿyC½>ƒÞ÷ªy^Ä]]=~ü€1SË÷ìíáì kn¥_‡ÑÌËã‚ÏÓýw´b掠s¤˜fX˜s1Ð[û My5’ºãP1ɦN¦É9·ïç½ ¿©Ð¬å¸Oç¤ ÁŠD‡¥ÌW‰&5*DB@þ úØ™M+î?¬Ù¾cŸuìÈáKv®Úˆ3Êpì#&a`Ñ ‚™X$²& U uL1+’@)XN§£?øoïŸBc2Š öJö]Ø´îâž ¹éñZjܳoP• i(n¤¾>wnÏ·ßø(sø¢å¥*;E†õxXÞřʊ™½ã/E÷ûd‘é‘ìCKLY9¥kZFî„ùëó•®©°6‘gX5 ó¯¾ûøùä•¿JKhHÑKÑhVeù·7…  ,+@Y[’EÛÍæ}‚×X2¦Zå8·é á3´»×Íx_a¹‰}¼îûù™99S- +SSá]†iØîMb9åé“5Szó6zȲ}΂ÅTÁ¸d,‘DPžŽrXòË;VNž/òm¸¯2A øÎkÆók‘“Ü;,>ÍÊ& ûl¼ËC &á·é¤Eü©Æ¢Ø·]ó'òI®ñ.VãýÀÓ°ßåÑE(0D:<8D v.bö‚ßÎîÃö@`@ pW¢Ž{F#F¿eåóDWM‚yüŒŸ´CÀ¢RÂ᠉Ƙ…ù~¢E”G¿A쯵¦ß=£AJe¢NI~ÌCûO1yL¼?ªñëk¸Sémes?ŠdñY+OªL'NôËòÖöï#©1Y¡™~(ŒÌaC"Ÿ€ß‚pß_ñ o–aãù™<°&¾h Ô ÍÁ“@¬ùI¿…^¤òÀ<&û9 œAŽá'°Õ2ˆQe‹!Ä1™×¬o¡V¾9ì4ÞTySöçˆ Ö“¬—¥UX ‹(Ö™ýæô¦åñ÷oÄݼ‚<{ŠqæË_0ªDܵóE*OX¼… +J²™™tþà®·n>»M _`Á{`hí¦-à nÚ½Û‹¤ó§12“y^,V¦â“˜[`ÀB vÈÿ2æzEµ…D6è;ªaÏFÆ«3û·ç$ÄÞ¿pB—eÂlvF–(U½nX¹ò ºöð€×a!>aE¢Úb¾£„Eò¬ «jnbÜÙíë•Ô„G.`ƒêc1ë X¼P¯÷€®“feÂ~Ö9ÇšŒÿÚeYîÓ?­¿µmGÙºµ \  kI¹ ¸BÆJ¼¿dêP¯Û3kÎòÀB%Ü›™öºy·þÏâbs23*U¯^´Œ¥kiñ—¾?ÊÌ}S¥]ïÎC'q®4ÇÓšïÂÉÚì®Þ° çŠäy)7öú‚ÉClzvóöí*xß޵ÀìÔÛ×.¦{•rÛŠaQAªAsY÷eŠÏ½´nü Á8nÙÏ\¾’°÷ ½øøåo^Ä-ÒÁÖ°ÇÀæ}Fyxr¬sßÜ>wPU¥†­ÍàHAÉ!°! #j†šzûøš)ƒÃŠV»l‡å ¸Ïšœ†^ã뀡Ÿ×hóÚŽ¥‡|]ºQ×Áß®s cø$õèÆÚ“¦ß°hÒ„’5J¾÷Ùj÷èw®œ]½òÎõEš´ôÃ"Ž Àþ"q¤@Ã{pÕwÑ›×ÖëÝÿm¸΀¬Ìôø½s¾u§¥7;¶dÝ”,šœêïª"<ͦ|Œe(\å×\§iÝòÇל†„LƒÇ:£J`¢AçbD„Ųnø ÇsËi”M£.ìÜpxñ×›¶óÅÂ4ÎAXež³1–¢Ã+`8Z×CeÿºEÇ׮Ѝ\«Ã¨‘.îŠÞ{hô‚Ū64M_Ž–¡UE@–0fè½dÈÑþÁXº3ÎcÝ %Lúê~Øð§ aQyJ4ËÇr9¢éðy7Lœð,æB­®­›÷œT´D<½M{*f§>:}BÑÜe·`ÂK#ƒ”{!Ø,eýä.ñ—/ôû|aéö=(ÊeÓ)€û`€…\ùÒÅŠÆÕªÛÞéÌúr¬fY™gŽn»öãrMf®ÛI‡DR4,¿&è²…Ù¨‹Èö¢²*@`¯šBHDÖÝÂá8N9‘ ÃL Hi¦ à}i@î9¸ElæFftC5Rk±ü¤exo –¶`H†—‘›…dc»J†Ñy:+þ‹Å¸CG}Ü¢°WU‰VY]6x›BÙH¶`: Z­ƒë¦ €`@hÌWæ~æøl&…"Ò|Ï& ÑØáñ5´„ø£Œ­.^2á¡ Õ ë§ë¦e÷Ç Ä ±(# ¿'„`h åôot,’gpì‰Åê€8Ì±Û ,‡EJÃ?ÝŸw·›>ƒa|ð°))Óa‰®šèÉbbÚ˜W ¸wV¥‰q25T[†ÿÍ‹»à ÛýL#$ Ñfx™‚üv”-QÍ%-d-ŸÃÒ|Éoîßh]·,§enZ·‘~öìUp SqçÜy™p?7(2>!=ãù«+‡vˆ¦çw!ͫۮR:áØ‘Û$£nÏbά›6­I›ÖgÌróA-“WÅ:uïÕ+·-ü¶J›nC>þ![pÁcKTÎÚ&ÄŸ>Þ÷ƒ+uë­RâõèÓk—<¿r^PáÊ5j4j¢ªÔý+—è°‚­‡ /Q^¤¤Ïn\I|x‹¥=oœrýv¹NƒÏø …]ÕIéw.žL{sûì‘äGÊÔnÔkè8Å öoœóèÖí²õZ©T¯N›Î|H„)Ù,Mà]*žŸæ}zçØþÖc¦6í?Næx'{oa‘‘óyÎïÛãIzE«^MàI”E’¯Ðbý–ÂÊ–“±Dš}þÀîÜ׉6Ó$Õß/«øLVåU¶(V©®Ê€ó¨†6óª/'îæüãxÃÛ¬uk[@0œg‘³¼ï™ã's³<Óæ/¬PÛ+¦¿|²lD;žgÚwêd³;}«Ð¶,¯~åðvJË™¹S·ÏÐ>“>Ìá4dRÿaâõ®w]´š±|òèäëw'̙٬•̈«@mIÆË˜Ó{Þ$ÖiÚšs¸®:ìódŒX¶§D…ªö÷£Õå)Ó“~~Û¦KÛ7™”^»a}GhtÍájÑ©Gh¾H“¶ù˜]Õ¹Œø“¿¬¾¸çžc«7ê`:œ>Ï9ÅvíÛ…öÁ&@IS¡x„û -ä<Ž^ûÞ@1È5fù¯BDY*¯Ç t @¡’›ytÍÜëû¶…ÖjÐXáƒÜ–Ö¶uKÉ& A9´ ¼”Dá< ›j¬¤[GÖMYºú¨…[Í 0ÁTp>¨Oõ'à>‹­Ä†î—iÒ}ÀßVùD‘1}ä£2¹r´{÷–OyO¶*Öh¦ÙDÝ’³ž<ˆ‹¾T h™†£&–ëÜ; ˆ›Ìƒû&Àý9Ñ?­y'ÜGœŽLd_ÌÏ?î\<¯Õôi zޤ¬`ó’vCp³”M7ÒžÅ^<¼Ñe IrXåó7ÔœT¹fݨº </¨ž„ûw®Ÿ:f3 ¿!MY˜éóq\ùM‹V­ÞÒ9A®í^¿oá§U›µþù’t!„¥|X¡Åb«Š2œÀúÓè“G\İl‹QS רvpé—7¶?o[Á* àÉry/`w^QîE_ˆ»uC÷‰Ll‹ô€GcMIjØ¡KP±â2+8dõÖ¡ƒ/âò¦ŒYc&L  ÀÎ×ëÞO-î½F{~÷zÿ_oÒ›¢$ìeÔLLôpšAy9Ý˰NFã܂ݒ7Méwél¿/üî»E^¥CatVG98ÖŽàC÷Ó¾s{7ݺޛ”R³û ö#§QÎ ðµjfêÙƒ»µŒdÞ̳6~i‹tBÔì3$°`NSôœÌS{vëÙ¢aðD­Št$CXI)¼Øªw)¢0¯:8UOzyuÙôq¼"7ìÛ»f‡v7Î^<¿iµ¢ø&¿>¬|=C´£NØ–ëMìã “{I6zØÒ=Ž‚Åì:Â}@TØÄLÁ.‘ “vÐÊ«{—–L^ ÿÛpߦ©©O]†õs%`1`1ƒ mÖ±/:yÍô¤¿9±o›éÎ TlÛÕY¼'€(…J4éÔE`L3î”7çvm¢T÷?|#¼ýåj×lÞÂà}™îÄÄ3÷hZ6œÙó¦_4JgÄ«×lÐÌ+ñ2g¤ÅÇ?°GT}ÄÐÃwj ïeÅR5ëV®_Ÿ4×™ ÏŸ<Ø·ƒ³þñìûh±rÃæ¥+U58þñã˜Û1çÏÚpìÑŸ Ÿ7P0WªÛ¤u± •29†£ô‡W/Æ^½,*ò”0šÀVdö¦ ÔoÝ&¼d)…e –}xúhòÍKþýó÷y&¸,‚£yû®¡‘Q&/êªzåÌ‘ÄÇ·y]fh‰$éQ ¢ ÆæjÞ¶³X¸D–¼æ½p`OƋ碦“!ÁxMNUXí iÞ©·œ_el”¡ßÙµ,îØÿr¸ØxZ iÛ.¶ |4àoÕsöàö¬×Ï0L59?a?ƈΰÈfºxÂòA(kf¦^8¸WIO [ó`“ÑX …‘ø‚-{ ¢lÁÈÅM¿|`³œëÁXE3üc&,<ò–#_DË^ƒLÉËéNI<{`§åÉÁ†?•§uÀ÷Û(ÞѼO?="ŸÃ2½¯ÎìÝMyÝ$¶ñ·#§„¶´ìÓÏ Á¾ÓÇÏNÜ/P*­C„Hšsý5†âƒwìa Íæ(%î~ôÑŒ&³¿‰›aTÀBŒAÙ]õ»ö¢‚#$ËHxp÷ê‰c`²à,“ùw´¿É[e),¢AÇ.\P~8‰—Îß¾Íh^ñ×[Xà£"Å9X¾lÑÍ›T¦Œ¬Ü@?öà¾Ï“ó21'$Òã*”’uÿâ¥-3ÇRFÆ[nY(7èƒAcÞÓ°û‰·òZ¤QÐ?áî™åc'Âái5ë#™u :™šqjòµ+vÜoÝeèÇó²… xA•µöýIÏOŸî3ë“r=ûç°|!S>¹lÁÁõ+#*Õì0|jÉ:M4бSʱµ ŽoÜ4ú˹åš6óIN¢8Ïš@qÇW}zÝú ‡ œùµ{Lýï’V)=@ X_ÖýËg÷nÞ(JÝû €ƒzdóú,E8ùƒüåkê¬VB)1uƒ·}7ãîÍ]Æ¿_ðÔ\œáƒœ%ÆäyˆeïüIï%?¼MinÔ ´H;1:Ä”% þ|vÅ&-iIÐ3“Μ”òàIÂScIþ‚¥°ö*vš0³y÷ €t?Þø{!ðÿû¯=;íØ¦…—÷üd符-Z Î`ÕâxFÑå̉S¹9¾j-;u6Þ^´lê‹øE;K©~óƆMâB#ê¶ï¦H7ïa2’ë¶ï͆÷¼|ðÃÐŽ¡.±jóîºMÌÔ²u;ÊàŽœ¼CsuZµ åT¯]ÉùzÄÀôø§$fa°1˜Ò0NKbÁ¢3/-åÍQÎíßzéø®¶CÆÔhÒÊbަÓ_'úõ§{»¹Š–{oÉVÔ-ÉJ¹´cÃ¥E;W½S'K“mÅ•séè 10¸Öà±MûôWâï/š>^ó*ÆOoڥˡÝ;Î|ý©£xåÖ£¦4oÜ(ùúÙ¿MŸ^ºÚˆ¿>´Û«×uíÓ²K/‹·CŒKúó›‡6.OyúºYÏ ºuÏâ‘--¢«§Læ9$°" D†¹þØ/M à›·hž+ØK·i_¢p±‡wbcn?,S¡fÅ ^Ð0òUÞþ%ÿ¹þø%¨éËÆO¸uâ¼ùaÍZ+t€ –•UËf½º³búìøÇ`|(pj–‡çÙ¡‹÷¯ROgÁàë˜q15l˜Î|syçOÇwoQs“qø`Þ^»C·výF Ê€Q²,.PÏÖSãlß½o?Ùž¥l|­V-{%„•q[N]Ò¬ÿî[„8j™d‚|5¾#[W]Ú·ÒU$2’رGÏÚÝFÐ!…shÉÄIæ*VViA£éä›Ç×NèW°tÕQ‹~1‚B9K&r%ÜWæ!žÑhýúö¥‡|Y¶IÁ[éE¸/ÛðÖ¸¹¢ÝY1õ=wÎS Åø9Rû4 Eí0xTÉ=Ò9—H²ï~2¬–ËôZõݹÍëêõøŽV]KPpx˜óÓê}Kgwœ6¥^ï÷#Ä佘½´Xδ–qóô‘Ÿ?ÿ2}”éE…øçF `[Ùqøï´iî+‡÷þ:ûK ˧1 ¤ÖŽ@†k3ir«¾ Ö:œ{c÷Š=ó?©Ñ¢í /V¿‘B%3×a)8Š À5Çz5#Hv.›{qãÒÖ={´›ò©Û&îšóÁÍíg-ÞXµ¶"ÈXbVU§i¬ž7çÞ¾½Ärdþ®¿ßw”è?÷‡Rõe›”K÷®ütê£s'ÑÎë ±Ò,†“"O³…&-ÛÈÔ(eËMß>vⓘë=–Î.Ѩ›%Ó€3ÛjªŒªp:+ª ”è€/bäl–—,}Ó¤>q—Ïõýrþ[pÜ+3†ÎÜP–riÏöÓëV{’“‹6j1hÚG\DqÊp¿~¾ìýÉÞg÷¨ß§áÈôMøÿc–\‡Hý¶ÇaÏ)š/úÔ±cŸM Ì·²E´«ãÄO:ôêãÖ!nûåÈâ…øÛ(p4>|³Ácë=ý£æ{¤[”ƒ§¶­Y½q "“ð0P/ND–'ŽøâËʚȀÏYvÛ¢/îìX‹ßbùÅ<Ú KñáS¿_R¢J]µ$]üÕG±'÷P–8w,rP(qÈQùfÍ]^¡’&r’æ^0srüå HûòcŠô²v.´à´9‹"ËTòœ¡Ékgt~y÷FÞwýèÂHbÑJg/+\Zü¬º¿Ÿ<"ûñmʉ‚€ŽG….õñÂrX)8÷jÊËEïONòï?¯ׇ?0’«P©–oƒócB3åÎⳓRòîÍú;ž-RöëÍ{¼´È°ì›§gOAyÒ)Ý÷¸‘8Š·S‚ó“u¿ðÅÊ»h3þÆ•…3&Ü'oÜò“&¯U€hü³u„"…Ùf^?7æ$JóPº }”?ÁWÏÛé°‚S®*ÙÚÍ“ýr¥åb“ ¿MÀ?‡Šç‚##§-ÚHäè“;Ý·à{rXÈYFÁ“ÔÛØð2å&ÎY(„…MplÝŠ#ëWS†7ïMù¿‘)S ÊW`È­›Õ ¬œ ëî¿ pßó"17¬ Ç•?áUJæóçÑG3o%>!ŒªÑ¤RÍš’ðQ‹écúËÛÇWNœÑ¸C§æŸ|®RvÕUæÀlÜ_¾oá7ZwöѼ\!–ÝÊ\7crÜés}>ü¢TïÁ™,©úÎ,ýþÄæMz ê8á«>”æy§–{nÝ7'6núåå›¶Êå ÄߨD± üÕÉuK+wÙú×>V"D0‹ô<`_?«ÉvJ»wéü¾W9xZ`éÌ\o‡CË·i—ÉÚL‹—à 4â0…‡ð‰Ýùí´{û×t=µÖ™²(‰˜×fL-ÍsvÿOÊ3ZõМAûTiÎÇØj·îR¨x¬–ÉYïÌJyÁ$ƒæˆ£™˜¨ªV¯QñŠUu^Òͼy@ñ‚—ãKx:{Tw:÷5„’Èwƒ0BRÊKöVÖ ¢?e‘š<¹9GVξzô¥x(–æµ[wr`Á5·¶‡T8g¥=?°â›˜£{ÛnøÐº-Ú9ò ù+5jn,¤ÒvNSD5ãÄ®M¾¬TœñH¤Éàÿ8\.ž mؾ½= Èž³lú˜@Áœ¾lk¶°Ø”5‡áK³tbG[þâc—þÌ…r'=_1i¨òâ!ÄŽ*åÀ¡Ÿ†E:”å” ¨Ð`ò‚ÕÔë¸ï?˜ÌZÌgk·!a§Ž<ùÅ{¥Úö<{•¦©Y·Î-?,¢L…¾“¦-Ÿ968¡‰ß­`"Ë{P0ÇâsêÀ–/敨RoÚ¢E©«rXà$*œïPæ¡8FÇb¤éy{hí§YŠv§d“Æ¥ËWõb©ÊµJW­¡³œ‚ù/Žz«Ëå?ןº_òŠI#^ÞŠ;÷‡ðVmeÚéÄN E£ãåÝÓ»Së4oÏÚƒ®>,{2ÇÍßQ¤R™ƒƒlò `JÍ`^7ÔôÔ“‡÷™9i‚îåTß•3'Ý™U:÷l1b²#¢n›æ±ë^wFêÑ£G O2«›¦Ûsûäq]óÕnߡŰ tx ìk'ÜýßÃý±ËáW’ñÛqtG¦%ÑJvâÓ3w ¿d&%<>Œcê}&´è5„ɈˆíŒ´nÙ4†NºybÍ„þ÷oÕƒBYʇdY3‡t±H‚O§´Û—\ðeù&]‡|¹R–x‚Õõ\Á¢Ù¼{{Ù”QBV¢uWÁM¥ß{üàÖåð %›\­E… &úƨ†Ža¯A›îC+gŸÚ²¡^ŸÁïÈÁVPl^½û‡O:L™ÐpàtŸÆRnìGDa0ˆZ”´.ÛÍ#ŸGò - 줠°ŽŠµ–ªÞH£8IÏ}ýøÆµ³G"‰$ZÆ Ї÷Ͱ6ª\K§DvR¾½{ñÞùWkÑ¡ïWëRÄ|v+;Dq_;}îYB|Fó-þ8æÖ‰—§^;Y¦\¹È†mw<íÕ³K'Ž)^<²pTµfí"ÊTÍa Úàž3/ØæÎJ·~#^c®”p#à‡z]G¸òe EËI?yhš“Ê#¿§?^/ºrÕäÛôj /êƒø.ýÅåŸVžÚ·™Øfmz !º}øg-'»f·-O’Âòc*œ¸TÆÒRbcœÔÛ!qC–í— —LÂé(¤¦¢ aྜxïÒÒ‰£Ãó~îéy÷øê©ƒ¢æA¢ I˜!=Zõš¬M+T§s7:8ܸ;îù僻Xú9”À|E´ïnÚí:M§=»ql/gåÄ/)ä,)4ï,Õ°}OJtò4ãKO9³w íIåHîŸ ]Æä¾a:öÕïØÕ‹œ0Ê›’raÏÏ”îý‡ow^ªz­æ-4ž‡£$¿>`'¥¦+Çàh€¬ÂØŠVª]­A ”ÔµôWqçìLì RGbT<´³lõUjÖC. e$<{rëøö­±q2ÃWnØ4ªRç 2ñwn?8w2Pñb-Ž{²WÃü¨Þ¤mT¹Ê”)Àv}xíÜÃçx¢J‰52¢HGqH±A‹¶ù‹•RÿÞ…£‰w/û÷OÞÔré4Ó´CWÁR:ï` íúéý)®‰†[åœØû_ €œM{HÓ¶Ý >„ÈJÐ<çnÏLxÊ£V* ጚÑYq¶hßY ÕYÞÒ›¶¤%%kýnm-¤Ûõàƒ#1Ur.Úê{ &Q{ŽÆ– kkÏW¬Yû®¦=ÓÌI¼xd·'#™¡$KØ·:à Aa­ºödm°JvÂ…#Û}9„Û¨ÌošMð̶ÐðF½†k¢ îÇ›ò2zÿVÚß”Nzq4ŽS\-{ b‚"œ›’âÏØi©TvG¨iêG›"#¶ìÙ× Î[Á÷êù©ƒ»í”Ó<þ|<¸0„‘¦Îækб/DA¸©§w®ßÃè Ü;é€&¡Hã¡í.W“ö}9g¤@i/ݹzî¸`ÉŠÂ~Þ?M~­34²aÛ”+?lég·/ܽrž×rE²±ušÓâ…ÜIm+[0²u£jœžûóÚ ôÓg¯B²'û.áîç|ù:ˉÄEJ{«%ÈoYÈn†ˆPÑTž|²ñòæÉÕ“Æ4ìÒ§ñ'ßë&¤)8m v™çv­?¸ôûò-Û˜õM&ë2í6%}ËGcOŸê7íÓ²=FfÙìNÃw|õÜèU³vÐeæÜ$6ËsféG‡·lîýõ¢ M;x§ep’i’®mýÒOs®™W¾óþ3f«¼‹ˆ°€7ÕóªÛtŸM÷ܽráЯ[ ÙÇa3×iðÐ" åò€‰Y›f9,ʧéŠÄÛ,mÇçSnÜÞn´C'ÒŒMÔQÚÝ?ç œ+I[ª%à»&ªgÈFexe•!¢§DgÒRW1ùÏ`€‚ó„"dæÂbÛ6æ¿+¥ü'/p²Þ¤gß ï'(¹õÔgƒ#R-É'ØÝç€`RS`·©&ݶǀ "¥àaô”»öl7¡ÐòxnžšLN!MÛ(0ÊÕm ­ÊªæS–NÂ[¬Ù‘hÙMA‚ƒjófç>0o\ÏÀB%ÆC™žœ°îƒ ZÂÃúõ›hAe°êf)‚@üâð—ÑTdÙ&mº:RŸ=e #JÓWmt*y`ûÖ³sÆnÖcàìuË%]=òãŒÑ¢Jô5qý‡Sm!Ó­S"Jy%‡a‚yÔÂä”'g¯új^Tµ†¿Ÿï‘D•AÂøAžæYZW‘J‰üa¿XE³Ö|Lk侌=°s»ÅÚ`Ã?¿q*#.6D‘šµ;Y¬fà Kà8küS0¿sSüå*Ðÿ —à{³|ÊÐW7nþamX‹®Ÿ/Î7€—ò"fÅ”A>Yþàû5ÎÂeÜíÍJjÚ¡Û“ØØŒÌ¬Jµ‡-k(2ãI>}˜øzÍ;0R ¦d½Y§Ýpa×&wnÆÐ…«ŠÔl¥Sõæù½ ÇF¨Ý¢½æ   ™ÎI9¹iÍ•½{TŠ3oaþ ,-€brtÚ®Y‚÷QôŠ ¥`×{Kî—ów¥Z8…©Ý¹™™×nÉ—¿zÃÖ€h9–ÕÓ_X3çö‰½BH©qsºŠ— hAÀíX5&S¯Ÿ\=¾o‘ÒUG/Úª„„°´ HpÏ»ZÆÿ‡ u6°ãäÆöÅ{|V©i§!_­òŠv$öš¢Æ2 kB€á{rwÁ”‘e«íõírNµ'^»}hÃò§·OVhÕrØ—K2˜0Îr3à†X B%{òi9W~wl+¶êöø îsHCBé–eT,ðÅþpÿ«vÓ§Öï3Ù0CÆk1D %~T‰(ãÈÓÎø[$Q5ûÛ)‘J«-¥ñ?’Á#~©y#šf F¤) ¨™7v­Ø¹èÓÊMÛøjÍ1Øfú‚µ´¥Ÿ}üüÂåöÌlÜ©ýæE‹îmÙ@Q¹˜ã †Qx-]´7“oЪkUc ·§©,8lÒ¢|ÅZäq‰uÝ5‹h@ oâp:ÒC‹½­vôæ¬Lq /ÈH9Sk¢Dæ;M¾FÆœT TÊ”‘»nJtž=…tVðêÍ!€A™8ð)JSä5}’nUŠUJÐx€4 Îšþ®Üê?Âíšü&SÂQ*, .&ö£ûå"Y¤Ñs’b°˜ù2ue|€È&„I¢)#"b$Gà¯âˆ°æïuiþ~aó+G+ØQŠéÀb]uЦn"5Ž!Í'Ë+D^·XÁbÁ (î® _¦±ó{û ™(¥ÄâHÀf ]€_ wO†þ÷ñðŒÁ|„0¥ †brÙ’ˆ¨»A¸û¢l!W„±ÐŠb™€(0©ì‘D9C"à‚B9ØÄ‡/:Ò'øûc’J)l §iŠ/õB|â£üÂY&é=à5ÂïHÆÓ¼JŽRÈÈ‹Œ„#ƒ#H'±Aû…Љø©sHЇ@¶ÆþÖ(Lú,Ø“3x ‡„²ùtªG•úˆ¦éhµxÀ:CáP$pÊ{ýD$ŸJše9 M‡¨s<ÎT„‡24T>†(‹c¬ATJESÑiÞG‹ àZÚ´£Êì¸Îß è‚á9Õ0Vä1CÍÃp3š¿}™ÔDš4Êqxn`½†HúaLÔ['Ó(ý½RšÄžÄ„ä{×ÛÔ®(hî-ë~¤ŸÄc«®–'ÄY8ÃUèY²WÄ9 €…þ((…¥}syåÄÞõ;õj:k‰ÉZZ@nØÁ‚|è×-™Zºd·Á£j´ìš"³obc~;3ýñ½³¾-ß~˜[°SÙ‡ÖÎ^½¸^—þ=?œ“h9ˆ…›÷??¸yÃðo—–oÒ!›vÀvÁ< gèóX>·J×þC?˜í1-Ô`/Ó"§úÂYùɵó»6mðfåö=võþ+ A0óã°R•PˆS3%0X«pj8¾û‹O.8ÜlÚÌÚÃFˆšWL”¥ú¾LÚð¥½>²fÉ£ çzôèݰsw%8¿›T­ÓªO°ÔëÑÓÓ2ê4l.мòÍsÇè{µ†u‘SÒRŽý²EK~sñŒ&pç­ ªPGæìTnú½ƒ¿qÙËÕï p)™ÏOÿº™ŠO¸õšêrŽ]º(_ÁzÔ[m©D€ò‹“Éñpø˜œìì%“†0rZiŸ”nÐ "NÁP­ÌÔÃ[6\ÚºÆ5}Ù+_áôì¬#[ÖÇÛÕoøˆ2Ó(³ªƒ!ç)#'å <V¨vúBÜÝo¦Ž41kÓ¯‚«ðéÝ»O~ÿ^ÙæÝþm xÓ+§ -Uzü¬/nÚrýÞÃvCGWk×™r8 Ï€wëø–µ7o?nØox‹îýtV4ý­…9Y1Îj¾ìâªF–®ŠÚ”ŸÊ�fN³Wφ††–­Þˆu\?öË«˜Kñw®%=Þ¨çn>ÍÂá ŠÖ_'óÐÿ3ÜÿñsZö²Éý_߈;ï§ =)Þ T³Ë%s†ðæÞâñý¼>müœµë™–*Y¹œÏ»àýññ÷bú<¯Tóþà|Ü..5J3”&}G5ì:ˆuóš÷Þ©}ûWÏËÊNñýª¨ú]eÙï\0c,ÈGN¯Ø¦·ÈÒjòÍ#{­X++Ìä–†U®aPN–Éq³ðìʃè¥SJA®ñ ‘ÌCûÇТÑj%=}²|p³ÀBQíFֲ̬;DžrÚók‡7ÿeï,5qÁ¡Haƒí:Út/-W™WN¯ß§H©*£–l•CB9Ô …0@°ÞÕCòî 1$V ®o_¶wᇛ¶ôÕŸ÷C!s º’wΔ‘«ïý·¥²Êêô­}›÷ÌQ hdÛQ³J¶è)2ŠG³dÖ „×´0-kÿÊy'ÙP¿w?€û!»Û8&3WT#1³âÞ¸sÁÜfS¦6î?Ùò ÿú]ï¾Ì¼J6I%ck †­ÿÏÈÚõ}?n_øy¥–m†|±,“’LŸK{³âãž»Ùù£êtípÿøÙ—¢uQËbµ¤æ$ݹÿêUT£¶mÇ~à*QG5ý¿|ao/‹K”ÜÓ;6žß¶Q~“X­}Ÿ6½†•®äÃÌÆ½“»÷,üZ7ØÉ߯Ž([¬±ŠóµP#{þÌñO®_éùñ—ŽÊ´Ýä ð±aãi¯/éúéG×­+V¬˜+<“½\e*¸YÀõ*Ë‚ P$uèç÷£þÀms~yS,IcC:‘‘t~çÆ3‡vU©V •Êð6I4½™¤©Ñ¼yéb½N=Z ž¨ØCðÅ3¨¶ê‰½õÃÔÑb kÌüÕÎbeYÃ5<2¼:ÎÄ\cúì<óàÎí•3Æç}Áj3´X.ƒ½+€ã†r°É­·áôÿ½×¿µÅþÏõ/~i8M•2SžeܻخF9NuoذöŸ÷Áô¼úó’{×.wž5»H…JØÆ«Ð<óỉ­«îŸØœ/´jÍzð‡‰ã_>½W¥móúF:JÔäuæõég×΋½^ºjý㪷ï'&3.fÛߦ%<¾_¶v³î£§,Sùôñ# ÷¯1÷)*%öî³;WÂJ”.]­¶aÙ ÊÑfÀ`Gü&Oß¿+ûáÝGW¢3_¯X¥ýàað,'×Î~üøI‘JõÂËÖmÒsPpá’ jX‚™{ãðÖ ?®)Z¸dƒÑãl«ñ†$´ñÇðÿ‰ µ¿--'îæÂYã9§jê6G€F‘²º\æ[7ïÈ^sð7 ‹W©Ÿõúùâ‘í^¨T·ž(p8±…àä»rå†Â:§Í[Rº„³Yñía·ñUê·U Éíþ§åܾc†…ûæëÅë[ï‚û¿Mß Á¢|nÏÃ3»­™ËºËU®Â LŠ.çznŸ?Ïx3¤5ºök5p´`wzSÏœdx3Ë×®³íˆšÇ2©IÉq·cœÅ+˜ñáÕ­ë®ÛoˆB³‘ãÛ÷rjïîs¦­X§ï{í»uyûÌüicì’£y·>kÕžÿí7†â«Q¯fî‘kM'½I~rÿ~ÉFÍßûäk7*±J&‘àÌyxyùÔ¡ŠÛÝtð{†Mñ°.ëe¦†}T «=¹ttýÌQÎ@©Fú/Ñ€5Yöñ£Ç/Ÿ¾jÚoX÷³,Ѥ†}ÿ·v´)?9»÷Èò¹AK·;+²lYÀ*hf=9¹aÞ탿¬Ô¸=NÓ:gúDC¼uñTfzêèoiÖ[ýüÖŠÉÃŒÔd>0¤bÝF‚Ó ÑÜÍó'M_ní®ýê˜"…—MU¾stÞ´aªÛ-…¬T½¡=ЖãN½õŠiH »iØg¸R@¤(žÎö²ÚàÕûÑK&´¹&-ú™+PÚ?ƒ“­£©þztoýˆæºa8"ŠV®Ó˜áyOfjÌåS6‡³Aßéµ:u¡CC,JUš½Yc&ß<¹n|¿ÈÒÕF,ùE e)™Æ!œå?þ–-E<Àý£ ?.Û¤í ¯Vù„@ ¶-ÑG†€ßLxu|튛Ç÷† ¥ê´Î_«) æ—/ïÿyùƒã‡ŽÈ*uÚ+Ùªg¿\Φ’‰R÷Ù;Wÿp}ËÆº=úõGà>5:îs&gêÞ܌绿ú$Èfk:bTp¹z¦æ`Xí¯·!ýܧÈtðW/¿:s #îê‹Û—Ë*V«…—uò–G2Ý®\OKÈéúÑÕ;wg ›Cçeì^nüµSÎyzëò«„IJ Û´;=(ª¼I‹o+ŸüÙ‹FŽæÌàÞKsèî;çOìß´.íÙ½R•+G)fJä½+ѦÏ]§×èš]†Šûä®­¾Ä'v=çÞÅ3ioRJW¯š?ª‚› ¨ÝupD‰ Í«ž¬K›¾¹°o»îóT¯Y=$4\eDŸÅÑœ„ÉZ›«Ý€´#LálÉÑbã[ÿãå§ü38qÂ:ÀýÔĤÃkçÅžúUùêõ›Ø ”jÖgçÒ5ùÂÖ•zâýËÏy|ZÃÞC›wí}`ç/´îE±òô¤‡çOÒ‚X¾I+ÊÊš´MªöáMJ8óËf^•EðGi©×/µ9¤*u2Ž …‘Ø |-»õ  SQ íŸyýË\ÿÖû?׿øõ¿îYJ+÷îùyõŸ1³fÇž¹T ÅË˱”¤fr™ §wm9ºyV$XŽÒØ.#GÕîØE +âå õÄò9Ñ[V`¡D,צÛé…º}rë3°C…¶ úø›º›¯\2ÿîá]¤ Ì$ÍÒÿT»Á˜Àq VEV¬Ä³Êª¯¾x~ö,í#S0[óáÃe–Žþñ;J³D ¡cgÏ/R½vÏq†¬d®ýrÖÃÓ'zO˜^§Ï ÎI›œÀü·òÅ‹ÖÓjZRÜ-m+ËÉ)؇DÔ’hÑÖsô¸¥*†+o„f¿zºxX{Òˆb¹[@4ŒäzŽR¼|xñÒºhx.ëùý¹C»a5Pw #Qâ)U Ž4j¢T¸H`©’†=äíÜ’•7þ-¯ îJUQm”/ùéí»×ÎÝ´–tÕpù ëЭז•ó5rFU÷í®ÐÖÔҟǽ¼½mñšåh^0á¯-:²d™ÑcǺíÁº(.5IOK¢x{TýæS¿øúøÁ=ûçN±Î‚õ[Îüò+ˆú¿?™2̈åG|·0#%Á—ôì—s”ÌllX¡„Â5êt:\r……ŠÒy;’•I7|Öƒèu³Æú²³Z×vàx`28ÞÁgBd$X¾œ„Ûç7|<žR³……,x ©jÇÞ [v°Gä+TH³Ldýü¸ûÿÖ΂2›/}íŒQOn\þù×[tÊeBLÓÁ¼¼è\I‹§L]£mg£t©¤Â +6â˹¥wV(&9þÁê¦:åÜ®½»ïÛ³=3+ å›mŽïMªÒ¬£Û)[’Ö³îŸ]òá„@§£}×î{~ÞæNƒêWß±S«µèì‘ÂTÉÆ¨êfûX£ñúýèE“Ú]®©‹7r‘Åu¶BÆV(k“ûhõ{= Ìß®sǵ«VQ `_&0Á¡§¨Ó:Çâø€Uál‚á/Lk ·N.Ÿ<°@™š#ýj†r´ÌEI€?¾Z: »N¼¾}ù±•kÒfø—ËUÞ|SnxSËxü`É´ITV2…Cy5z ê=q¦ ñ@vBôÞíG·þJÉfÁj&}û½*8 ,‰ì´rv¬žeë¦:=ú÷7ËËëîy{¤ÐjÂýË &Œì1vR£¾C2-Ѥ%ö¯Céÿ÷ýD)°;~Þ³n «ep¦Çbi•q ‘·|ŒKNÊÛOû¨n‡žÊçaß¡f_Û÷ÓÎ…ßÓ”jÑÅÚÇÎ]U­¶ Ûå/·J±8E's4Í‚qd(Zvg¾~ñó‚O_Ü‹Á[k)H¢ÍÕoüÔ’M:ùl¡6ÝÃä¾Yòᔤ‡wH¿&6Ec]†±Q”½ïìÅê4÷åNOûi\¯Ô×ñ`š‰r7Ki øL$ f@þ‚Ÿ.[O¹ÂÞ®Ñì=–ô4üÁÛöKÕ™þ.hü‡°7¬Ø»÷|,ã}m¨ç,RqÂwË‚"‹æde,>2÷Ù î„f#¢Ê ?aîÇ3P ‚ÀˆôX*'}j^² _¶¶PÑ"ÉqOCሆ…­¯Ä)÷òbDÑ ß.)VVGñœm—úç®k‹ýŸë_üúß ÷iU7²Ý^6±ßàqêv˜-`Y'àÉ,@›¡ø2R³Þ¼Q} C32k†Ž )ä3“åy°(ÉsSâÖQŠ(V8J3 9;-ýÅCkz *¼Xygp¾”qzv2k(4Žà-㪲–‚˜ß”œ%«P®Ð@ZIöTM~@2ι4P,ÊCYîÔ¼a‰˜c •*m8‡X"Lu¯üìÃ{gOw~ÿÃÚú*Œ“eœ³ô/Íå!}¬(¦ãô]}Ë’ñЉd6ðQ%J±6»Æ€“`Í›ð4†Añ,K›ð'ψBñ¢e>>€“5)ÎM͈‹,]EIWÒMzÏ‹”*§Ú2ÃÚõw ¡ý¯ë÷Ó qÃ1àj•´—¯bÃ0MÖ˜/4_þ”gwàýéRHdé gg ihîÔ7‰e à Ç{5#0($dAQtÈÙ¹¯·EKBPþ"¥J¦$½“â½ÊQ,RLóæ¼xü@`^ p•ª%1íI}óô. ‘ôW؃‚ƒÃÂyÉ gÓ•4O†h˜Œœ›ôø.kÈÁù 8óÓh”VÆù§HPàYŽS2“3ã ¦b`£,V¼–-0_THÁ('ƒdžö;Ç\þé÷ùïì<`Õ·êýq W¾÷ñ‡¥[öLç"yƦêÙ Oî²j‹¢mÕ—ëS<>°—¨ÝO +j8»åY\%J:¢È랣þèýÜg±íÍÒݾgñYâ"Zå –©¬!/ØxûÑÀ™jH–\ z{W¢U••XðÓdP NÞAéUØ@BXT)‡Óásg%ÆÇ2Øæ‚³H¿‡­ƒœcM§C -QY•B`óóÖÿKãÿ­-ö®ñ üNHK{‘s¾Cí ¬’ûÏÌî`„sÜgÖ|÷øÆéFc>(ߢ‡È|&Ç“!gø 2bûÅe— §±r ÍBûÀ¦ÚÁΰ‚ cÞ²|1¶Z,ïÁ±w¬Hi6S¦MS‡}0ŒP€Ñ4Žsd1¢Ìñª&Z†ˆ‚榃…d°NŽ;ãpÜ´†Úa¬¥šg·©šçÐê•1»w×nÛ²FÏ>®‚¥)çD^5ö_»òH4LCÝ„PVË24ÀªrŒ©«¾AÒ—†zlŒÄs–á­i€fEø;aüó¼qè–„}T2m¨Ø7c‘ß8éCð¡ Ëò‚ ÉÌÛ¶Ìz·ÙóÒØg§T9iR,*p[”òЄ¢¡Où‡>’ñp™‹Žsä`ñá•Áo1t‘6xVEY\S2,Égú8ÉâI¾Lƒ¿†‹5$ìÆyÉÇØtÅ´ã¸Ù PmZcpä£@ôTŒ¼Ñã,©C & lJÑôB ¬Àî áˆøD¤ŠÑ -ûyŽ’= >¾d1– g›ŒÝ`ì*¶[³DœÁ$Cyþz«î¿µóøÎÓLê½»~˜¥k¹-'~Q´nÁçÓÁzp¨~nè2 PãJà ç"ò¤qÌÀÙN†ƒ6_Þ¼}`ÕJ=÷eòãè|L]²—9Êãáa‹rü†û¨3 Ý”nïY¿÷û™‚#$¬TB+÷1ÉÍ»§J²†*"ïÈYc`û‚YÃöHamØt¯á槪›`7Uó&%î™7;-ö^NfrzŽyßÃÁíc«.á‹Cœwï¼/y—Ø}Æ×A¡%áèd›™6ÆùÏ…ûÌ༼œN*•TžR]ž–gà¸(ŸDsª!hHE\i×,°2«O3°6xËéB¶$,PüÕ„]¾8# 5·ýÃuÈà! ¾_âxZ×`÷ÂÝj`*iŽ6e‘V]·s<ìLœÉƲ‡Mo:¦Ù ’¿àhyÒW‹ŠßDâ e5ì«H¼Ç]ÍŠ´Ž3‰ˆãþÿµDl‡õ??ßŦÆÈcÁDý{ƒ¼å´ñº'ƒSÂ0€¢U‚mÓÅÃÝçÀþ´°Š‚DQ<5:gÎ…‹:Ö€° `b/%>‡¬# {Q"Êb4>@¡E»¡ ÿûÿ¹þsýÿrýo„û˜}Á¾`GôOËŽ¬™Óhú7µ» 4ÜZóP‚ö²IX HöÀ–jÝdÁ·r(­lj4ʱI28gVc~›>L3¬f  x•sš8pPÙ5(®ÏsDTÁ¡àè§)U·Ü(i8³Æ ÃÏX§² ÁÓ‰à*‹)4¥á¸= ?C*¾úìÕ±“ݦO©Ò§—nÙ%™¡9S¡ ö'Qþ\8vç:Ke13º¸: c(6¥ë~e Ú¯WÀ”H š‰ý,  „?áÀäkþÙA Ãêžfš&™ÐÛ òÁ,Ëèª þê&Î?8ÎoäèÿúY.tL£Ôú9œFÜ¡ªº(b3·_r¥à?Š 7Ñ« þ-üK|…à %VçuVS’Qvg†cE ')*¸„×5ÿnœ ÉP~ዌK·HÏ" b9XçéºÊâ`Hž’ECPÉÜŠ  ˆxà›D~fTüÇèÿ\t"Bj²ÿóþoí<ÃaÒC_;käÓgÚ|¶¨J«þ € ˆÕІMA¨ kOIÈ©à`ƒ}€ cÁëÕ³a6TÇÁ˜ ²ðñàìyË_´uTXÉ 9x¯¦\·8~v¸"±ÊyYöBäÌd»YØ’œ›§ÖÌ%»s)Ö)DÿÍ÷aQåܱ/kè±£h8r‚Jìà³bèÏþ”td[k¬[ŠS=Ξÿåó¯(#2S‚+4ûÃn‡-„£=¹(BÃIÆ˦iª–àºòËò£?ÌBim!¢Pµ3ç,ÌáTÓÀ(ʼnSgi•Ljœ$]Åm/ÀMqáîq\ ú.ZÆ›ØGË'µPZW©9``ï÷>r3d´ŠÊ"]‘9öõÆ­Ñ©uû™ßY>‡C°d>"ñ?žlþŸç-î¾Àâñ¨#’²ŒE&ÙÚæah6*’í²Dÿ/öÎÎÆêÿãÏsï숴$´½,-–•ö­h“¥ÕÒ‚J~ôKþJHQ‘%ZÈž%„²%Y›±/ƒ™¹÷>ÿ÷ó|çÏܹ3sï…ÎçUãÞçžçœïùžï9çó=kljŒu8Ö8#ÍHôÓ²ÛmG¬íßÙgìu£±G=Ç?ûU6œÖ6àœM)«mI=_F Æ/à9f 1þ”×ë‰óáàu8W¤8ט:§•`“¿ø®Î…«ÏÑ ¯ÇkŸ(b÷‘¦³ÒÞ6g¨Ü> Úãì'rîk÷;®GÄ^ýÅÎÙùöÐs¦H Þ>&†zoÁÍðÄR Ò¦³Ï8Œ±º°é¾çˆïóM0Ò|¸—F‘ ûü(+Æ<@U X‰>31=&Õïlä& .´á4aNão9àç´zÔåµÝÏ“{ÂgÄú}žt3ÎS,ˆÍˆ±opN§²§ê-{€Ç¾ÃãÐúXçÐ}¨¸“fÄÅù}öZœ/Ýœax3|–™î£9ó‚N¦{ýöa¡þÚütþÚ·¡A_Óc2ì‹­¡¯DlßÕ}tÇŠ%žm)%+_dVª@ð"éf†u4ç…0[“£mÆ Ÿs£hœ/>Æoß0Ò­XFàHŒ³c–vÞ9ÎÉžw©}R×ÑÀO¢çhzjRl¼'ÍJò$ø|ΕØ6/ޱ•eŸ<å5bÌ 3ë·?&ƒnÈë÷ø} üäÉ.§¬Ú—ȿҿÒëâTÁÅíKxœ^ξËÝ¢´7ÂÆó0ÃÏrÞ¤o;j§°iy½ÎÅäѹ¢Ú>’ÊgoßMóÇe˜‡-û6äDº¥Ëž÷Ç$føíÛÆãÜ{»±o¯7’<ö™§„I÷A =ñ¶9;Ãs‡a8%=ï"ñ{bÓ¼IÎb{òÇ^ËeÄÛVi³IûèRYº'6àÔk»?9ï¾o<8qiæPúaíÍ<¡GsÀ´‡«½…bb¶-šqxÿö¤Ë$W¹Ô‘]ÉÃÞØô˜xŸß>]ã·ZV|á {ТÏðQ¨GíÅöŒ ^OñĘ2èO7âý&4ÿˆ}t±7–_)Pl<Íöw=±¾_LÜ~YŒ'ÉgJ·ŽâÚz¦z“ +öŒ}›·,ž~ÄÀ;Nðx*Ö¨k*î‹+ ¹‰÷˜$¿qÈöCÍ8ŸÝhÙ”ß>€ÇfQqUè¾m£Ð}ßQÿ_ɬü5Æ·;.ö`Fñrç_ÑÚ4¼æ‘C6!Äø²—EN ‰òÇñoZqpõ˜mjüYEÎ,^±jµÔ˜DŸsiU|ÀŒ·¯¬õ5í 1¼ÞŒtã?vFŽOòýÖ{é¶]ÿ¼ø©û6.ŸžJkpÆùœU©öa£e_'áó:·²Cñböï:´èǘóÎN¬Ò(!ª–žžpØÂîGgBÎýéÒ†ØgÓÙ§<87Åø(žø ûö û$JûZy3¾ÏÂÿ?œèMò™ G‡â½‡â¼…Ó^æ}¢†e%ÆÅd>”à5Òìᣨö8ÐÖ)ªÈOh‹m6#o(N4 B‡ÿ NP—m§mbLî*3L:s‘ºÇYlüß~Í9îVÎph¦3Jle6†i¨Y§iVB²Hm‡¶5:—ÉûœßÌjÓ §tËwJ®KqAä‰îʧÜâå³,îtÆÆE ’éÌ¡­`ª´Ÿ™½@æö)¹ÉÙQ°!°*y+ók¸N%\ [Wèò¬Ì ú,¡í+©I̬ñ˜™ÿX™N¥“7;°cfˆ!›„ƒ_ïÅ¡àN^Å*Ä0” *Lë‘,Qœ‘Ö¡™ëlGÎM" jFéBê¡¶4 Ä„ e‡)Ó¹,•Ïΰ¸ÇY …ŒÃ:6+Svî37‚æáÉ42UÀVfÁ9í$"f` ¥tÆjMYß,F`klÄ!Œq†T3ã7dh×ã¶ #hÊrå^Ž€së–ó“½ÏÀq ¥a Ø7ü˜Ž7n8§j;›¥f''2œÆÖ9ÞnÓÄt€:[ZÖçI†ír廣 ™p³¬`#³òÉqÒÈã±áÌù™UÆÖ³Ç&à·O¶Ç†ju¬éȆ¨MÈ‹ªMVpÿÿ±"s XfÕœÃt–’Ûý–k'¨«yñ?«pJÍ:Ö~ûדٴfY xI©Ø¡» iy”ÍØsÌjfôXìÎÝÉÁvÛ- ‡^?Ì Cfãik|c›q¬ñ4ƒhfË–i`¶YfN5XÎò%i™m¸=uìöצ»w° —u©®ÙÈ\BrÊf´“Qèð·ØÑFîôïa„üûO8ª€Nž^ÏÈY‡ÇÕn‡o±-ËçŒ1Û‹‡Ía/•qjk $+br¢}a +3ŽžðnôßL>ÝÊ£‘0ÇH {_ìq"ÇÈKvÄϡ€Ž_’ha SQI˜£„iE¥Ã1¡Á µÃŠ“G‡9!ÝF… H‹}2I^ ’yÁGm5̱€¼sd@äˆÚÈ£‘ði±ÃJxB[›h#?‰úëh (ZZrBQPM\XäÔé;—ÓÚ·tû|yÒ}ûn?×Û°Ã •·×¥†£û–3¼@˹bËãµ—pû2|1ñ…ì3ÕRwÇJiV¯†7ãÈG#F˜›þø­h±3I_µv£ÏØgúIF¯}³[FöؽoLllŒ³ÜÂÌ{’´@–"9; ““•„9Y[•¨$Ì©€þ~Ú­©D%aN‘ˆiE«Ã1¡Á µÃŠ“G‡9¡@z”“¿æ„“Gò‘ä„FU5<¡MY´ˆÊÈ£’ði±sŠü„¶6§Yýè0*Tá Â9ÕÝNôèÑ£¼Î\†»ÇÇÅ›™šŒ´´´ƒ:ËYÂêÐî»b®]»fÙ²eݺu?l/}M43Gb|©iGRÿoäGæ¦Í늜Qô`êáßÿãÌb%Ë•«àó[±1±_º×F,ŸÏ—˜˜gšq䲆††††††††Æég¯Ÿ=øðá<C÷ì{{¹'¯=pà@RR’ÇÆ—pV™2´¿k×®wß}÷÷ßÿzÒD{½¯ß8šzhåòeS 9ÊÜðç†3Î8ãHjêÆß/Q´x¹ .pÏqNe;ÁhøãâãcccíåDyîÄ¡äQî} øýöt‰½YÈ4] ²5bŸPký¡|ˆâ^™_ sˆÄ0ŽÝB"+™íÀ–œZaf&“§äY"81x¼Þ€ßg­)[²ì¦8V@™vc_•`Ú–&K¸¢T”cÖ–å$*Ÿí¸Ž}p Å ^ÃkÈ2OË9¬"`z¼öc'˜=upžÈBP{u¬³4•SÎöÉK~¿/&66SiÎêRgJËë¬)µ%q2!k掭׿>ŸŽ~flRClc £%{»¯ÄòØÛ+dlj3?g†9Ë´à·äfšÆ-wƜɹp’†û6´Éö ì®%}ŽVÿAo?‹‘[²E$SÃÎöÓsu¼à%<Žh²„S­‚Vç,̶Ž7›Væi0Rkcyeÿ“=ãœi±¡Ë9£”¼à!Û.2ÿ™ÇU -g߫ڜQIæÐ‘@6#è"’䄎Y†E”Fm/y³UäÒéç,It‘Ÿ8;Œ¡CÃ* ê 覜ðqç<‰a·¦Ã‡R­¼Î\¦%K*”¤6Ǧ=zpÿ"E‹¦$§„5 }¨—î† †ŽGñåW_Ùɲ“<|èÐÊ_VìOM>òcsã›Î(Zä0tÆâgžyáe…1^{IO8a ‰ ±ö.Þ,;ˆ¤ó·™V8äï„•Ù̇±¹€súfLÌɽ4Ù=ãcfvjž`îìlŽÂREÂî슀çX:Žm8ÇpxøO¶§fI=âDm â\®ˆ‡i:,E8·³ÁÑÌŒPÜÛñdîJ¡p¼öÊ3;Ñ€}”Iæa¢NFü~+“{Ø&nŸì) ²=éñ%ö1žÇ6˜à¿Øqx‚ÍMAÐÔàFG3ך›¹'Ù nmç›ã¢üÄRõÀɱÚèê07§vX‘,Ƴk´@ ¸-=ãE€|2jtFFz†Ïwe+4¨ïèÍÌt!l§¢ ÀÖ­}+‘ ßuÔh'½déÒóçóõÒK/»á†ëŽ?õHÄÄPˆÏç÷f-îàæžˆ”`eŽž†vˆ¾éXhü3᯿R0òÇScìÛi­B…’Úµk[¢D‰Pª@æ\MæN4<#NÅ‘JáQËI …aªòõù±±v€“„7K¬õ–|çÓE÷erÔv‹þïZCCC#wDG÷ƒ+òÓÒÒàwåÊU9Ó}›qýõ×_ãÇ÷ù2¾üò çf ?IJ=òËŠU‡¦Ž1ÒÜüû–ÂE‹¦NÝàÐý2å.pN¶³âìiÝ0'¥ÐÕ$&&¬[·nÖ¬Y^ï±ÎÆãýjÕ®¸úê«Ý’ŸÈ5á!óäóÇg­]»N=¿âŠ+Š=cþüù7ÝtS©R¥ò%I´h¢ŠÄPÛYœQo{üv4kÖ,9yç´iSkÔ¨ÁHj–È…Lßxc‹3fT©rù÷ßwæ™ÅÍ,Nбð°Ãýû÷;ö¼óÎoÞ¼i\\l>ü"¡ôÁ©©©È¼xñâwÞ츞ž /,÷裞}v©V­ZÇÅÅ ™8pàÀŒÓׯ_?hÐ;»v튉‰­T©Rß¾}n¸á>;ôÝÖɾ}û&Mš´yó–:tQëÔ©õÚk¯5ir­ifŽê9Þmò´iÓþøcÓÛo¿šz˜Ç 6lÛ¶MÕªÕ®¼òJ¸‘ ©4”ï Ùôôtr±zõ¯?þø£zñåx¾zõêV¯^ôïß綾^ÎÈðÝ}÷]#G~.¾ž‹'Ñï¾ûnݺµ:f6xAµjÕ¾êª+í9CON4ݵ†Ä²™>}:­‰<”"æo½zõ«V­R€bG3d v°iÓ¦))ɲo©téÒüe—]ú· ^Âã@–©aqÂqw¿øâ‹Ê•+×­{•sìZ>}-idˆ099å›o¦Qae†š’””ôÃ3i1êÖ­k¯ÛÌJ¦ó!yBZTAÞ.üiÍšßÒÓ3h(ì©¿L;·œs*ŒæÍ›•)S¦€&Ÿ¢Ú€X 1çyôA‚h¼@zÉ‚[Biä'$¹„ÿ'óœ,:ŒÕ8‡Enu–V‹f62ºŸ¤èþ‘#‡9J;¼bÅ/Ù;˽M‡&A÷w|þ¹M÷é ìë&íëg<Ðý•¿¬<¼ÿÐGÿ7Âücãg-zø°3ºæ™\p}¼ðæÐL:dÑ3f Ô ·ƒÎFÆòE¸‹/¾xðàÁuêÔá¡ôQÍõd}ª³)ßÝÝìäÓO?}ë­·6lØ€ ð<\‘Ë/¿¼H‘"‹-š={v5ìÓLˆœjvØýÐÊ\Ïz,Œô¸òW¤²/1¨0ÁcV³L1Kö€·ÏgOP²W¿8ÃùJâ 4û ¶×¥KrÊ‹„ùòË/+T¨ðÄOR©7¦¥`ç†þÐCñQÅðøÏ¾4ˆjBrË—/Ç9ùꫯn»í¶?þX”©ŒJÕ)Ã86c ^´”— 庭.ÄwÜ6$ qu‚Q pÍ5×D26Œ•¢[ ¨U«VóæÍ#uÇUË4Œ PåÛ¶mÛ¸qcg2!FL×t­,W™SÇ¡­îvP-;w·ö!Æ>Ÿ´0’Äž={(e¦¤¤¼÷Þ{þá‡.½ôR^ÕbIHÍ>¹ Kä"’jÙìecA«Œ`­w×ô¿ª¢)¨âV¥¯RWId.  ¾òpóæÍõêÕ»õÖ[ißBÔ¢Z›Hê©dвÿþãÆSʯR¥ ÆL#Ù©S'lU¥Z“–=;RèFÖfPÝ}öÁs™•Þ$*w‰‹0b¨yJ®^éÚµ+оÜëŰ%QìSj߬Y³0r%‘µÝS퀲4F$q+V½%– JP5Ô’/eTÙUaŽ444NcDL÷MØ—j7޵·êÒ¬­\¹RºcZ¡äää… 6jÔÖ¤Ú®]»ÆOø¯ìµûÒ¸©‡­øåzð‘ÿ÷æü;|ø0ÄëL‡î®0¬(´È¼üöÛo÷ë×ïúë¯õÕW¥ã\½z5,­T©RP½›o¾9ëz9¢ROHHˆê]èÑsÏ=7bÄ4ûØc‰$(E@¿ˆöû￯]»¶êìý΂~zòå .õQÔ Â-½?3Ï5‘q/€öTNyN`™<ðÀ–-[Þyç&MšŒ$FÅC2x×]wñ:™ÅhÖ¬Ù9çœóÁàpJ©¼»Å_"ué­ñ‰›î#Ƶ×^Û§Oªn dš¡b_ýµ¢û„ä!.ÇwÞ‰xRdŠÜˆ)ª5 R²äHØE¦˜´$XyÖ,¬Y³æé§ŸÆÙ#Ý[n¹EŽ=§ ŽÎ‡+®¸"Ïœ·Uø—.]JÙñ÷Í7ß„E‰í 8Syá…ž}öÙçP<E)G!Ó­3#söÀ_¸paÌCñiþR‰¤¼0Nõ®P:*– | ©VÛ¶mÃñ rgtÿ2 /õ×íuÒMÊ¥r)ö‰Î ö#UUä$9#ÈY #É’‹ïÁ_ ó‹q q*Ï\šiL$³HBª~ISË"›Ø‰·ýÃÅ_ýuq•„T#Hmó4rÄÆBþóŸÿüöÛo]tE‰‡LüPÿaÆ‘Alæ£>’VNÆ&DÑ‚IYˆ–ø@ë-+q¤e¯IT-*UÌøÐ¡C‰œö&ªˆ¼Ë æîÝ»ÓD<øàƒ÷ÝwßÈ‘#1ì6mÚ<þøãTI2ÝÇ/RÚó;PÃ1–3Ò!R¹ÍCJVæîD“"žPyé¡ä³»4Õgɯ˜zÈp††Æ¿ÇI÷—-[&† Lë Ïâ ãç§¿þúk„ B÷ÕÍì/Ýÿ¿|Ð}K&í1cÆtéÒå†n˜9þ|¢•^I "ôO›7oæ!lþ‡¶yB± §!Îë®»ŽÀ üiûöíBwŠ+a½ä’KBvBÓµ/"$ËäŽ'gŸ}v¯^½† ²nÝ:Ø <øÒK/%æ«®º …@4_~ùeL‡¼)R„’:÷Üs¥·#G¼`ÁºI^”·¤÷"ÚÒ¥KÃ\Ñdž±tä°.”ƒ=üøãåË—7‹‚ÀÈÉ`… fΜY²dÉõë×óU(~ÅŠ%ô‰#\¨*rb¬Ä¡àAhÁÆÓ°aC¸O/^ܲeK"ÿüóÏ¥ÐEE~ø!ÊÇë;v¬tçB2ŽnºÛÀ?¡šýðÃØ-þ¹ÃÁ’Ý'Q¸vK»÷Þ{áÇbo/¾ø"—]EËW84¹Æ€Þ¨M·Þz«Î>‚VBâÇÂÉ¡>B€$6L ©¨ùH‹¨yæT *SY¨ì˜4……% m¢Ñ h%Ë¿¸ˆTa2® <õÔS¼.öC«„±á¿ ß¡r!Í™ð¦Õ¬YS2‹[øÌ3Ï ¹bv•*ö""Ñ ) Á¢"_§OŸŽß%YPþ¹Ðtê A#h8lµD‰X|Wy&(0T·Î;¿úê«{÷îÅ`0Wê`©R¥ˆŠªDùB»16ÂPš4âÕ«W§d©_X&ÑReˆÖž,u´‡‰¾öÚkÒx¢Ú~%ãâKSyQj!üd"†fŠDåP6C*š ¼èU«V!OÙ²e½®H5jÔñ~ÑyžBµºãŽ;h(Ȥ™&Âp¼„¡8xrûí·cÞjVdùòåÏ=÷œŒbð?×ñHñ›o¾Áã•R@ó˜5‚&N^GKhU©£êE,~bE 4×"O›TÅ*£û¯¼ò ÍVM›‰;Më‡ûMSFãCœj®•W gFù¥8ç¸R/ÄÎ1r”Ï‹H¢<Ïq!Ú¶mKÉò -$OP•Ÿ¼`ÛógŸ}FguVß¾}+W®¬ÚjM÷544Œã¦û´Ø´K4þ4ΫW¯&Ó¡C‡»ï¾›F˜¯t”_~ùeAÒ}~’@ádͺ´žø´‰´†0b5Ÿ¹:ú÷ïOßÉÈͨQ£"ÑÖ­[Ó÷<îúëÎ=åÆéÑ&ÍôÓO?½råÊ+VìÞ½Ûpú~¤-S¦ Jhß¾==ú¾}ûš7o›AË—]vÝ-}¿DX©R%¸2}Ýs½zõà2^Kе_sÍ5›ï¾ûNè>=}™ª[·.2 ;iÒ¤O>ù„V ɦÆÚ"$,“ç0]zǪU«†(“è©°Kƒ©#'4ZFÎÙxNºÄIÖp]èb‘¿páÂô…tÂH0þé§ŸŒàh¨ãÄ‚¨ ‘Œ‹ ³ÇˆÆ& rLg•Îý÷ߨ0{²ƒH9#•iÓ¦ÑAªÑÖ9sæ4jÔºO0rÄ‹­Zµâ_Ï9ç5@ˆ3€½¡(d#]² _ÄîáLj¤»‡)bÛ(tßÄü™–;òŠZ€”#N#Â@›(wÊ… B¡c„’/褃,^¼8JÞCaÁ\›4i"ŒŸLQ'!è8PãÍÜ…^õ¤4ÕšÜ%~!#6Xt_ ‚Cˆå@÷kÕªIfE6r‡…P¹XýJ©ï¸X0'’ ‚?ÕŠv€ÏVp¹ƃ¥uéÒ]A”ÅÈ%ƒ”,€¯ ESsM¤‚m@=ñ·©2pMX•Ø ”ð]‚‘¨UTXBb îÅ<'ñŸ)¬””b3œñoj ÕÏAØ9ÅA61Zj(u|éÒ¥âq!$vuÞyçQ¦˜4Í‘c& ñcÏx¶R¿dþIh—y.ƒÍüd}b Þíׯ­.öIC ó†,â~ºT=Zæûî»J“+5ˆ`äÂp­#Rmmž˜|VsA¹RK.pŒaÌ­ZHqïܹñmðyˆ‡JD3ES)z£ñD9TF\x?¢~üñÇ|vóÀ·ArlXÚ%¬—†kD0ú fÏž=Ô1þ^|ñÅ$‡ˆHj+—,H#ùš LN´'³|䛤hZÅ¥!ªaÆÑˆTj%EOëAåÅŸ§ ¬‹¨P¿b6xÔ)»Y³f$‡)¢jº¯¡¡a7ݧ¡ €rÐ+²9¤¥½ñÆi”h‘¾øâ‹¦û0*Ò9r$7.¤AšEzwšÂÇ{ ®#ñäÞdg-/ 7¯têÔ ¶ù‹n@ 'Ož “¾í¶ÛBÆÂÕWçk×®ÝÔ©Sé‡èd—|1â³Ï>{öÙgée 6wîÜGydíÚµ´þ/¾ø"´¬lÐÐÇtëÖ jBÇ5á+]8a t¨o`°ÀîÝ»Œžuþüù nÆ®]»®¸â :x ’®±Zµj$·hÑ"´J§ˆMðº¬ÐB!Ø÷ßOŸäβAn`*ðƒ—^z ¾b8ã¦ÄC™RFCg̯¼U»víŸþÊEf )«œÉ•L2H§ŽY<ôÐCt伋õÈÑòB –EµÖÀ0 2E/8`ÀØúÄGºöÚké¶!gÞ¥—…Zñª5ÖXö-·ÜB Ðk•(DDˆ Æß»wo¼Pœ…#Zw «¸¸(CjÁ¬Y³`x؆AÉRÐ( Ph=Ì•<Ö©S‡ò’â| û}ûö%¿B1Êˤ dÙ TŽ;1qâD|ËÇnEBÜQ*–ƒk*ëCp1(\¹X±b‘çÅ¢FùôéÓñ …0‘Š‚î#³é,£‡îPdd Wk¦ñc)>h^´,¶¡ZaØ,Ê…T1*Á.\ÈOªð`4C0êTÛî¡zâQPî¹, !iïð !sòPWx'nJMÞ©¢…&ЇÀ+ĆÆ`üŠ JYОõ7•RÊÔâ—^„§d!—d„Hø‰ºÃ™œ¤Ú’‰–+WŽZ/γ¬Â$fÌe" ž M™¢æ6lØ„dâBŒï¾ûn¬‚6‡VzÞ¼yÐJÚ-γáb“4ãxõ‘/W£eÃ\± Ì•w•͘Y79 :Z0<ÊA ª¡øHØ$g¢!Rᥒ0ØÍ õ‚Ž€$IîÈ/z& X:ä—ê òSî8ù0uqÄf¶6j=Á¨eÔn1Ô‹††;wECŠJkÔ¨![•n½Ý=÷ÜCÏ‚¥ 9¥(1?éh$1`>“A5ºÃL÷‰yÐØRú(Ÿ~—çäˆ6 ɱCtE]Ãòiç‘rWÞ¦¦ûFA¬ÝçOH“RªT©²eËÒ"üb7ݧiB/`ü¥oþßÿþGǬ2FµN.‚d´Å°“HV„tþ´¿a·² ¥{¦¹‡XÀ?„+ËP?-Y²äý÷ß§O¢Û€ÜÀr`f¤³Ï>[úTO¯ ½ 3ƒßO›6­gÏžp;Yu#ÖÃB(/Ê^‚o úlÓ¦ ç‡~xçwòdôèÑØ ¶$k·¤fmp@Ìhw"B/šüRÆŒ#¼\ rCJMFu`n$tŸÆ“†.c‡Ô_ˆ¬å¬h'QØÖ­[±aê Ù'~F¹“)YÊÕ§OŸ¡C‡"34±L™2„‡SÊ(ب#fpW+TZ† J“U(‚œè¾h’hv.µ@Úü®¯¿þš*Cxb£ S7aÐ5ˆ¬,@â]ûî’/¿¤ †"0$Ãß§„dC÷©§<|ã7¨ïTd¾¢"Αðÿe.…zJ“‹Ø'Ÿ)wŒ“†ÇÛ€LÆᩒSÈ=•”úË”Í HBCMu†¶"mÀµX-FR+¾r/P¨9¹Cÿ´ˆ§ž«YYi:œ+Ù»íÝ»—R&˪aG ´?~ê©§ ÑâS‘oºé&YϹG3ôÔAºãŽ;²î˵pHÞ¤I“è]è«d´Ux-Ý<¬…FŸn ^BûþÓO?}ûí· 64ƒ%‰ ²B–¡h;vDÑpntH0h§ƒ¡â9ý7]‚ìñõ8GÑ7oÞµ¿ð (#~$$cNBæ¤Ó•EðxÙé>±ÑQÁà‹na÷îÝP $9§@Ú €ž• Ò Aâel˜ &A`˜äF2…«C?“+"¤"újÃnTCã²¶ûå—_&P7ºù¢E‹¢mE”‘S!#(îV•¸›î;‡]®FT ¼ûT¾GXºèÒ°jÕ*È%xá…’#qGÍàÖÏü™–‚•õ ‘œ2ºñÆ©²Ii±‡G}:‚])²Ý[ÅBø cxë­·Ô– oðø&©H>jÔ¨[o½Õˆàè‰R8nÜ8þ¶lÙ›‡°Nœ8…@÷Ñ[Ts5‘Ð}Ì ›¤)Y©kj_¬Ô2j5…4@ÈA§X¡ì£^ :¢‚2òʺuë°ŒGæsÜmœ\”%‹ˆÔðtßpˆEÉÊ1ìPt+ÑJ•R•0ì­Zµj8˜Ÿ”£ª¹˜%dnΜ9¥K—–M‹/&ÔÂO²Ù!¯P^øð]µêF9Š"?¯ ®‘!P¯ª PLôI-Æ´ä@*™ÓCHø%®EH ªv?#ÿñÇ‘™V…ÝW•K} t0\r-ÖݧR?ñÄH"á¡ûΛŒ,®cmd»ù»ï¾ )7ƒGÜÈ‚1 I5yä‘GT‡•\¦e”{#!û÷ïß«W/©_’®Z ‡ý«#ªÔ!Kª Ó ^<(~B¼åË—ÓrÒ>‹#>!]$Ÿ¶W ¥Q.3fÌ%mwß}7þ->$ JK+“±šîkhh¸qü[uå‰{‘¼jÓˆÖ}2OÓ}^îÒ¥ »s°¿oÿþý 8p ­-ÜÅø Ád“« EB„ÉÉÉDH_+ÇV(`e=ÏaÇŽC#èõͬçu"v@o]ªT)5wáJ“çÐéäèÌè#Q !EÃ#¸)Ü…‡rB‹åœ­%"  N)ÄÈvÞh.\˜Î~€‡~øÓO?¥çCQ²L_†ZE*„„;³¾}ûʽH2LN¡À·P | ©(,4L_Ã6 ymß¾½Z»/¢B›pÕ(å*Uª@jeU®{x;»a[Ácõ®ó̦å:rQ-Ö…Øè±Õ¹RfðØ>81F'†šÁµæ¸+ðï?þF"kTP¬—Uv}µö€xøéœsÎÉeàSAìR(k÷)žÀ;ñ¾h † vï½÷ºaN%«ÖN T½páB Fm/æWÙ% jÛ¶-ÖH½£Xñ*T¨ ,A•;!€,£fñå·îÝ»7´’¼S• ƒ²nºyn=d¢ÀÝÆIqcx/jå‰ì¡½ƒoá@*·J\Vl›êF•?묳”ò*Imݸq#†„Õ¡¥š5kö/ ؤÖãàð#6¢–-[%î’%KˆŸ–„.ºè"Ò¥]¿~=’óŽ\·nÝð”h‹d}Ž*i ñ¼˜””„?L„eÊ”A5b ­D]X”Œ+Y&xG;vDíªVªƒeTQæYU¡û$sB+G•‘Ólå' ?Štá²4#x_Ð}¨}0- LZ0L “¦ÕEE²P¹U"Û{gm ÛÎ;ËOžà1£ò– ˑϹ¹;¿bt=˜"yÁ¶M×ù˜£r;–º Û¸eäB+Qaº´*C† ÁÙ¦ ¨4Ñr&’Ož<…@÷iÇd²—âF- ©ßsÏ=t”½sçNä§uî9©b¹ŽûÔÐÐø—#tŸ6GÎ~\¹r¥¢Çî¶QZ3žÓþХʸž"´ÇE÷ g%7$ì“O>¡3€¾Ð1È+‹-¢=¥½£ó¦_ Dvœ´’t*È µ%òÈ_tƒîA‹L“M7†H¢_šl:§¥K—òž @¿èZè´jÔ¨¡æÁa3<¡õ§ÿ¸ì²ËP–ŒîÓ%Àæ+W®,ÁÆ׿Ôõæ›o–/_žlBé à äÀó–-[ҷɸµ:Xú¯¿þ"é0d'€t{â ²ð¼eËHyJJ Ý'Õêé¥>üðÃW_}EÁd6N×Ûo¿MŸJ_…B÷y«~ýúçô ò%fwA ˆŽôLÒ-­Y³î…òQQáÂ……^à?ÈÁ|÷ß?~KžúmïÛ·.ž‡çÜsÏ…§ªã/ÔH'ì|ýõ×É8½i¹råxˆ{õêŧo¾ùfB¢Ø÷߬dÉ’sæÌ‘õT‹/†úÓ7£<Ù‡ ¢Œð äþ¤FôÃN7ñ‚  ©Q0uÊË£¹½©"CidSvËj%F)¦»îº‹,«³bÔè>_!Ó>–I¦¤›ÎÂ0œÏµk×âðà›EH÷‰öƒ/!'óˆþ¡ÔÏ<ó EÿÁȤPîìP¹—T„-ZP¨¡Ô,)D|* $«»øâ‹ ƒwѯ_?ø(Ï©îâ¦%š={6’ˆ½œ³¼h(àÙÄCi.X°€Z)ûH"×C‡…n>ýôÓH«¤‚Ð#? éÒ¥ Þ©:OöÏ?ÿÄàW¬r¦x³| *ŒŠW(ÚSI™Ñ9E€®yä<ß~û ù#¤œ‹ÒzàFŒç(SÑB!ü¥¾“nÅŠ±ZQÄ@E8´EüîÞ½;6éÖ3~)„Àr•uUàºPIeÀ[è>ÑÒ:IÍ•â rÚØÛo¿Ærbj.Î- ïÚµ«Ø|žBÝ‚[¼xqd£©”ƒMeý=Î J–piî(Zц`”‰äØ*’KÖ(GzZª€LR©1r)ñU«V¡mj÷ã?®@à£+¼¹¨1B—[yz² i¬Œà‚©ø?üðƒœýâ‹/Ò¨R ‘$k´„´Ò´ä´óxìp}rŠ&¥^ó.Ý–F˃EQ)z:0ä$ÂC÷‰ç¡‡¢©ÄÕÙ³g¿ÊN¡·ÙhhhœöÈݧ}£;Ûè@;69ñŒ¦o„ jˆðxG÷iÂð3èÎéSéãéŒ!Í´zpG:zDD¸)¬"ªÆŽ¾‡¦–¤éÌò½U—ÜN:õ•W^ùùçŸi|ei/—-[Fƒ„xÉð^Ó¦MÑ$/³É€f.ü©§ž¢["³A9„Œ@ÎdÌR¼éºècŒà™˜È +­U«ý4Ý9d]zG)i’Þ´iœ†2 c+]º´Ð)z)4)£APv:ŠÇtަ†$Q:·Þz+2Ëá?&ˆéø!µGûöíe³züøñð¤ÄÄDº$!ò#FÈ–PÙ1LMI‘ì‡ÜÑ©ÓÓËVÎuëÖA÷K•*EŸ-ËHy¾úê«„„²\µjÕÜ•o¯=‚|@&øJ§.b[ÁSI ÊÇW†R¢L$JÏ IjРò˲i™;BZܸ ~Jƒ“QÊ|%°P:X2:6*n»í6âw,’/Y0ã¶m¨ ÎÑb'øü'ªU.`ÅŠx¿ʧLIòro>F@5 RðHL«S§N$!“?ØÕä…^ÀPQÁ0]žQ*ëa,gÛ1Òºp;=‘ĉH2ôI}$]4LœˆJq“tÇŽqÞ ¯PÌ\²,öI‹Câ¡dìV¼>É¢Ch±°:lµQ£FT lÇL]È*öÏ£}À“7ƒÜ¡|^‡¿Î;Wv¹œwÞyÊãÚ°aÂcN:tp¯/§]ÃMB˜±cǺŒ%{ìgík¡‰–Ü‘º¤Kå“ 8ÇãŒa4jò ‰iäüYLK&…p/‰GŽÏ§>ÂGqª¿ÿþ{Ü´ãD 4ƒèöõ&%%I£îã=" • Soݺ5±QpîR£B¡•ØIà/‘ òH‘‘YR¤2RR´!M©QGdcºLÖa!¨‘Mæ…ò4Z”ƒbIŽ"@r%~Þ¥ h±Fj„xéHHc~Î9çÈB2Ó9Œê¹téR“•<Ë—/';ÈF[y`$RÄ|P;U¤g"9Ìž†”†W¹ô)TgœôððÃG¸ý@€]MŸ>(A Ž&—/[¶¬{þîiôèÑuëÖ•Z&¶ŠmãâÈaƨyp«èÎh]åø|TDÅ ¡]¢Ã8Q2R¾¨K6[SúÕ–¯$A¯LrÏ>û,MÁñLSkhhœNÈÝØwƯìׯŸœ[Sxù@«EkFÓJ¯Q0£ûÒÃ$èÕDš3!g4Ž0ìG}tñâÅ„éÓ§Å9èøi%‘žn’Õ» çÔ\‘Þ½{ÃEÁ“Lø@[Ïr.R%ƒ¦cƒ•RÜôñcÇŽý믿xn ¢ ×WÎfG:u¡8’(”ñˆ9ƒ\d‘‘ìØ±ÃÍõ•CÑQ£û’ŠŒñ“eÒ­R¥ B®%õªLQì5Š…@%E C–åL+¸¢Wh‡0Ë/¿ͨµ+ÂV©HDBŽJ‡Žö8)@<²fN æQ°`öìÙPùU$!˜=e$%a–ø*§²«D­` ‘« ŒœÞ¸Á+1õTekÄ-ƒ¤’â™ó¢CåÍ…”¨Ñ}Z¬ZÄ{æ•¶mÛªIŒ@p[‹é¬>"üöíÛÕò}ÞVgÎx‚;)‰Y&Fˆ«…øjq޼K¹ãB¸§21EŒ„ZÀgÜì_.SÛyÎöwÌ)11Õ•)S&ÜC<ÈFº²Þ©xñâx°=µ=Z¶êâÌøá‡Ð\ÚFdÀÑ%·ß¹0‡AŽ»¥ÚòœœbÀD^ªT)rAäÐqjY‰%ø•Dœ4˜îÝÆÂ2åV ª0žŒ“4> QA²íÚ1K\t¢•û¤Ånå Õ¶àÉã®®-(îî Bê©(Är¶SSƒ0Üw·$) /Âõe„BâY±b…Ü3¥ª€ˆJ¡×¬YÓüDø/¾øB¶PKaA÷åje0fÿJ–Ï©Ö]Q ÊíQ¾upÞ¼yj‰AÇ6$-Š•â^»v­ o9›Cˆ‘’¢¤âàÊŠ†ùŠÒ³R•‰¿‡»BÓAb'¾œjp444þåÈßè>í=`RRRÀu[¤Íܽ{7 ²yP-mÐ}:!¸jfÀu4¡éÚLUc'-¬D’ï9P¥ÍµªL¹sp¥è¹4‚Ãê2º/‹5ëׯ/ÌI-ªvoœ¥›ä/}ÞK/½DŸÝ¯_?9K^jKŠ! ‘ŸÔ`¿êêrÉé:^F4!OòÔ§O™¡†Š©ì‚{UfÕ`ž² Âw¥ÿraiÊdNœCåÔÜ¥ç Þh£„ û¢\ìV‘û«ûj…ÝqJxêÆ;ï¼qÓ|Û›[!£›n²ïJ4ƒ+B¼ wÖÔ¢çhçbØ*rUй•»ݺ‹ —…@*ZYW#m…;›ª¾+ktçÔ 2ãŽÊp¹d9U·‘»Å“x¬à®_qÔù«Z0MÁ-Á+Ãä‰îÝ5fÖ#/¬7Ó®Jê¶p¥I¥X5ߪ,AM÷…dG‚«w`­w×å¨,D¨8P‘«†(¤ ãn7”ygÏ !P’«Å3ÑžýåVµ»åW“{!:Ã-åš8u—‘ŠVýäŽSå׮ʎ;Ũ¼444NWäƒî›ÎÔ:d'þìUOg8k_‡J`Ùk?ݧ]†ëË ”››ºB¶\ghD».B}Îw+©Ä¡ê«»EiÕ[JÅVpÉ[o½5lذ]»vɹ?ü°ÚØ*ZBo¼ñă>îܹ³E‹¥K—&0¼ßÈzêKX™Ý|1Ok°\kR·oß>hÐ dH0&às÷îÝ|ðÁ’%Ká(QØÌ*Y÷}»%Ì“O(êfd½ò3—\›Á›ÜO¾Ì‰‘ÍðBò«âTÚ[±bÅý÷ßßµk׎;Êáß¹g-'¸Í^ždwtÝΞ[`#›þ Ýy•„¹¶JÑ­–œJʯ,ç.˜¢­*wr!Ùt›´;°MŠ‘Cf2»„Ê R¯x\ˆ {ì±Ç¨òguVÓ¦MË•+÷ä“Oª æ/ ±p÷CwÖTü9Y¦z×ýU… qÅU˜T[”gõ ÑOØÏJ #œMfwn —‡àŽÐÍ›C¢5²ùê•h<'áCŒM œ=#ë0AN­®»hBŠ>{ra_7r®Yÿ*äƒîÎÉJO‘f+xÄjþ¤Š nÿÇÍPCüI÷É!÷1y‚gœ»Iª\¥rA˜<ô/+°\ǃÙNû ¸® rÏöDUXnOØ Þl`¹N_ qÅnY¯°öL[ëxÓűҘ@| ÷aJ’œÈ≻¥ÌUykhhhhhä‰SîŽ7‚}zµjÕ"ñµÔ>ò` ¿þú«éœÞúõ×_W¬XqÖ¬YE‹ý{è¾Ú1uêÔ¶mÛ¢“~øANÄçùöíÛ1­Í›7cÍT^|ñÅðÑš5kÞwß}†ÃY 5'?~ô}Ó¦Mß}÷¤R£F>ø J•*J0òNÍ…SEgÏž íþä“Oò7ºÏ_Þ]°`>yQ«¼p¥Þÿý«¯¾ZØ?Áƒ¢ÿæ›oP  ó£—_~ù†nP‰Š týõ×ã9LžñÂàF†Î¾aÆðK~Z¼x1ŸÓÒÒdåLïÞ½Ÿþy5rìž÷·\w X®åõî…(2¼š}‘uÑ…RPÈŠùiΜ9Ð&MšÔªUËM\Tr_˜•õÆ5Ê«þ®™ ÷Š÷Ùy64úª«®‚k*m$&&B÷yèqÝ…!ÜbÃÒ®»îº-[¶ð¹xñâå+®¸"’H_óPj09(©Ê#4bŠóð÷ÌÏÈ ûºuëž~úi¨gŸ>}Ú·o/’$''÷ïßäÈ‘III>ø æŠHK–,7n\Ù²eŸ{î¹ÿüç?RâË–-#ñññ£Â'LÃ~饗ڵk§ŠláÂ…Ù%JtéÒE.(˜1cž ‹•k×®Åz'NœX¾|ùÎ; ç+B” ‰ÂÕ*ÿHr7dÈG}7ì¶Ûn“ëØð¦H¨p˜Å„øLÆÝ‹d û£G6òµ[€n¿ýö±cÇâ>5hÐ@–Ý“(´žìÃøÏ=÷\YÕ¦Mì´ªV­*¯Cè1 ôF6E6ñí‰ 7ÛÀ‰R6¦×óhhhhhhä‚SîóÓÊ•+_ýuäU±bE 9Ù¶mÛ¨Q£&L˜°|ùrX< b¤˜·›Ë `IÂÍø qWÛÁÍÁj±‡¢ãFÖµé! •FD!ËBV0«™ ¥D÷ñšjó±z¢JňxÁ’èýã?¦äçÈ‘#ð×={ö|ÿý÷ù£û†³ZƒwíÚ5`À€Ï?ÿ¼qãÆ_ý5ÒFE÷%û°Ï1cÆlݺUoÚ´ Ù*Uª<묳þ2'º%²Œþ­œ¢ß~û ‡ Q»uëöä“OBúyˆ¿öÚkãLJ O:•_·oßþÆoL™2¥k×®8T¢}ï½÷zôèQ¹råW^yÖK0Ü-(5Y{æ™g†o@q`«o¾ùfÍš5eH›ø©0;v,S¦Ì‹/¾xÇwÈà:‘8ðÇ„ìöêÕ+ò´³gÏ&ѽ{÷ò–,àAáø0DŽWƒ‡CÒX ¾Þ©ØØ¢E‹(M~Å«1òE÷ùûå—_â;Q‰_lì§Ÿ~"]9€®^½B¿ço›6mä9|Oàþûï/Q¢|¨~ýújôŠ+pTœuëÖmÔ¨‘¼Ñæ›o¾Y¶l™,Y®R¥ |‚ø'Mš$Yºë®»Î9ç!ܹá[óæÍ !Ý:uꈲÈíš5k”WYä'÷(,éªõÐP" ,Ç’Àj×®-Ü> &› /¨Z"ûõÖ­[ÃÜ+òs/Bx¤ÑoÞ¼9T â•ïÑ}ÃYÆóÎ;ï@j‹-Š/ñÐC%''GN÷³ÏºðFˆÊ—/«+UªÔßF÷Q‹Ük®¹fæÌ™jo(ƧÇJqJ—.­üC|ƒ{î¹§^½z<çÉâÅ‹»\¹r¨Tn>& yéÛ·/þ~)á)âùóçãN`XžƒD…Æ^}õUð<ðßÿþI`ö6!yWŽ’=*={ö|÷Ýw_p`d;†5'àã]P:¼ë ^‚&É­_¿~Ĉ÷Þ{¯r&EáC‡ÅoÁåÀ|ÑýÁRð"àñB÷1`2Õ´iS´—~ÓM7I*€\ŒZöÁ ›ªJüÅòq–>ùä“:HxM÷544444rÁ©G÷‰711Ê;vìX˜ý 7ÜË,\¸°áÐýB› Ð¥KáŽPFh©,_¾\ ƒŠ+ÂG  G½{÷†c¥9àaË–-ß|óMˆZ||ýôS#[•Ī1{±v÷swK¡&Ä@m…£Ζ|oÜ$ê n9¯ãJ‘SÙi£V¯á&½ôÒKB÷ÕZ;žãl?ùä“EŠ!€lÐt_CCCCC#œztßr®Ù{÷î…¦¼üòË·ß~;ŒJFa¡¿;w†¦À$xBÂ0uÂÀž{öì©D„x½ÿþûPŸ»ï¾NŸœœ I:tèÿþ÷?dHJJBDh a*£F‚”@ý‰yøðá>ø ‰ò5!!½@˜àjÏ?ÿv+¢=Èëo¿ýviÒ¤ìË´ÔR.9jjŽ1’wÞyQ ¶dÉ’F]|ñÅðx¬H–öðÃã¼ ož3g¹«Q£ôKSey…ÄcZC† q¯QÁcÄÓ :aí$Šeâåò ±¿þúk¬K­SéÊT@§NxWè>^(‘»O²§ø&Ož[mÝ¡û8iÍ›7Ç"wÐ}å¹é¾"îR‘°_ýµK—.¸‘üÅ8Q‹\0óùçŸ?ôÐCfð–·Î±®®]»æí·ßÆñ„qŒÕ%ÇC÷Ÿzê)|<Ù”âV#aˆß/¤ô‘œjÈbC*Ôøñã/¹ä#H÷i&F&($9M÷544444 §Ý—Ñ}È´`÷îÝDå½ûî»ï½÷^˜PÅŠa`POYÓ,Œ9âããC2) Vph=…U»víð #²àX݈$Y‚µà?|öÙgÂ< ß°ÒôôôfÍš½øâ‹²èBvÙJø'Ÿ|òwÞá§Å^¯—)SFÅvt¿zõêV÷R%7Ý7\Cû+V¬èÞ½û‘#G*W®Œ93o¹¬S Ö¬Y£–ñ¨ç| péÒ¥ù€àbNDŽc¬²–oº¿aÃÒUž­zNZ—^z)I õ\.ÌiçÎäó pkÕªeé>†„ã-H Òt_CCCCC£@pêÑ}âMJJ’ó+eŸëwÞ a}á…Z´h[0`€fB8 Õºukx’ábB"+,ºy’‡Ð}èÅ<ðÞ{ï ‰‘qtµµQ Ðó™¼ÁæùŒvx ÏÁ}Ø‘<úè£C‡ÅCxî¹ç„JÒиæÍ›Ïš5kÚ´i²L\Þ’}úôî˪eƒÆ£/hÄÈ Þ?úøãCÝù™gž1"8œÄ}¢(Ÿ÷ï߯Öî×­[×rÝÞª„$0,ꆢäʧÛaa· ,0‚ƒÊVðÎ×"EŠüðÃUªTQNˆèSî]’Ø,×¼îÂ%˜lÕ…îÿý÷Å‹jë–ÿDy ã” t*©4 èþ¶mÛºvíJ¾Ú¶m‹[xþùçc„êú*Ä[ºt).O >§loÀmãE¬tĈ„„îßpà øŸíÛ·÷ÝwÕò}Yvÿý÷c0b ¼ ×衇(}¼ˆ &\tÑEFðÔ&3xO­›å‡èGÙ,¤X±b$£Ì†=cÆ (u§NÜ~‚¬Ý‡î«“yÔ¸»*))ŽT6¬¾*ÓR ž={Μ9·0¸Ê|¦&RsÑŒ¼ˆ±½æ`øðá¨NeYâlÕªb£OÊKoÕÕÐÐÐÐÐȧݗÑýÄÄD¡»wïþøãûöí{ÞyçÁ ÆŒS©R%9¹œä>£I“&ÉŠnZµ‚ªò°iÓ¦†C¡àpðrø¯¸Pç`ÂSaØpA8Y‡ g‰Â¦M›xoƒš<õÔSFÖs6{ì1ØÜÝMÊ%æE‹ÁQÍÛo¿ ¡Wl¥:uê Æ9眃²à@ .„ßȪ’tذa8’hžCàj™‡”“Ðý5kÖÀ_IËÌvÍ_wìØØä‘êß¿?Šu'D€Ÿþñ¬àIšØR3ÚhÙ²%äÒ-i=ñÄ„/[¶,lX6³f?­I–-[†BÊ•+Ý—‰%ù‰»S‰ÈGŽùŸÿü§“ÒϺuëVü@Lô­·ÞªX±¢¨Ârm}Fud f,ðêQìþÙgŸ-_¾<¥|ñÅódïÞ½ÃÌjÔ¨ñÍ7ß`ó$á~õÕWëׯ/ û„pó .%îl+Wó0Ê_2"8zŸZ†äï¿ÿ>Ô™´$†±cÇR^ä‹T(¹eB¢åvÛ½{wì\®Ù"!¹Ê:Bf?{öl;¢O­ÄkíѣǞ={ð3«W¯NZË—/§",Y²ú.'êÊ\”Zµj¡·R¥JÁíÅÔÜqÇ8?„ÇKqO#hhhhhhhdÇ©M÷E2ØöM7ÝY=Ìœ9“_e`^È+tÎ ›Q7øÁÃû“““á40<ìâŽ00lÈœŒGÖ­[·W¯^jT’'p£>ø råÊçž{®œÛÃ_^\½z5tM8=>DMhÙºuëp9ˆð /âˆãѼys!j×]wݬY³jÖ¬)#Á²&ZŒ={öÄ€CCÈ>ÿüs”õöÁùx>=pàÀmÛ¶A ‡.‡ŠæÉ®]»ž{î¹7¢%\ˆ#GŽ:¼œÔ!šr¨\¾}ûv< 6Pöx(нjH¦>„n’\ê†Ì 6DBØ­Ûe’+¨Èˆœ° é©f óÐCmÞ¼‡À¢`¨B¥œÐÑ}Ü›ÿþ÷¿”o—.]z÷î­‘S¾6wî\¾^uÕUq%9ìÊÕT<Á²ÇÏ»”x¬Þýõ×_;wîŒo&aäÒ84 ç]að¨û‡ÃqÅëÄ(zôY¤H‚af(‘İos ÆÉS-Ä™’’Ò¯_?Ä£¥\Ö¯_¶G-«h §6á0ãö€2ErªÃå—_ÎWòHýŠJŸíÚµ£Ú“e'^ñop@- ¾5I®cŒZhd`íÚµTÒ“Sg×¾üòËø-÷Ýw¯P¯õ­º¹ãÔ¦ûÂJ§OŸÞºuk>_}õÕÓ¦Mƒ / ¶0û)S¦˜ŠŠ—ª]»6BóüóÏ¿ñÆBžÌà5[kÚ´éĉÕ"Mjˆ"/cpâ‡~øÒK/•µmÛ¶‹·`D<ã!b“…·ÞzKöð„I¦T©RjÒŽsÞ"'Ž (²k¯½6*•â±Á9sæ(½NS‚»‹ 矾œ—àWS ,™êÔ©Þ^®µšpƒ¡Vâ|~öÙg­Zµ’]7ÑnÑÐÐÐÐÐøWáÔ¦û’äääÙ³gó™×a$îp„`ɪ¸µ;?W^ye¹råŒàÀ3©KHux9aJ—.­vǪu&P[¡zÂõ…B愌òäÇ„ÌAñ…¨©Zä!eØ[]„`;vì6Ã+¸ —\r‰$J$sçÎ%6x$?5nÜøì³Ï&Î%K–¬_¿^ÂÔ¯__2å^„¢. ñöï߯–Ǩ5<õêÕSL%û†WQN(œ¤‹/¶Uî(Qˆ6!©`+è­hÑ¢n©È>J¦ìàÓbOîžhþÛo¿E6µ@TZ¤HbÃH¬yÂ:’®œõÔ¨Q#Ø­Ø?‘/$§,Á{—­àVìøøø%JÈ슗†RäMgß*„UvŠ[Áò™`óæÍ£dyH‰_vÙe§„Ù¾};†©É%ñµä3q”»•çj–@ð ç­[·B¬å+‰ÊŒ›Üã¯^½Z¶X(·™¯äÛ‹\Ÿb‹-ÂÃ$*#¸’¨ ñ2c ¶dNé/]ºS$ÁíAu*ãVp[[´h‡ï¾UW/æÑÐÐÐÐÐȧ6Ý·\‹§…š„¼e¹6\ºÉ¢zQ}9`Ä2$Oð Õì™4]»rÝ4TÈ“„tÇ6°¼¯JiG}PþƒFmXt{Žy+U„Ü‹¤¢ Ùp)•ln©ÂƯ†½Ý{jÝ%!yö“d ‡óÙØ›šlÉ^F äÙ¼yóo¼±vëÖíÑGÅÒTÒ!¢ºŸ„èÓ–µû'õ®Òâý†C‚Cte¸ ÆýPÅ•ç£" yyöšb .DÂS4²î7²vö‚V&$ÕÄ-‰øco¿ýö AƒÚµk×£G¼\Yù¹TÿBœÚtßÈJSŒpç“(F•}dZåMé";oË…L¨1ÑxrÒ¦;~w`á4Šé†pJ3Ò=0oDÃürR…Ûo É~H˜ìï†V¾DHA¨!$8ÄË®(ÃU'šØÉ‘AS¦LiÕªUƒ f̘á><>—ì‡eê!?åd~êkXO5D¥ u´‘Ímp§˜=9U«<á.ñ°yë]gﮞümܸñœ9s¾þúëæÍ›‹I„ ¤¡¡¡¡¡¡‚S›î‡¥Y!C‰*ŠÍAî2©†ÒÕW#/ÒoºÎ ¾ÍaØòÜUoWå$Cî,Ü w0·Tî„òôXrJÈ=‚ëæy!¬=wêì.ŽcÊé•‚…¸Øá„ Ê–-{óÍ7 [^jÚ'$›ªôC6³FLÚ]â9±ó¨T¡"t[¬®Ä³×#‚ž;Ü©dŸ—È^šaMÈÈZ­x>nܸäääÖ­[—+W.Â…Lÿrœ&tßÍfBá8qNœ;,ÿÈ>λ²²g†“ÓOîø­à¢+¸¼ÁA+¸o!òCÇݪȉ\f*dJ!„r œ§&Ã&§Tö•„{™“láP#Ça-Ä-^öØr8ìzN1ÍÉgÈ.Uöš­äs$’X®;Œ³×e÷:(3xíÀñȦ¡¡¡¡¡ñoÀiB÷54444444444²CÓ} Óšîkhhhhhhhhhœ¶Ðt_CCCCCCCCCã´…¦û§-4Ý×ÐÐÐÐÐÐÐÐÐ8m¡é¾†††††††††Æi M÷5444444444N[hº¯¡¡¡¡¡¡¡¡¡qÚBÓ} Óšîkhhhhhhhhhœ¶Ðt_CCCCCCCCCã´…¦û§-4Ý×ÐÐÐÐÐÐÐÐÐ8m¡é¾†††††††††Æi M÷5444444444N[hº¯¡¡¡¡¡¡¡¡¡qÚBÓ} Óšîkhhhhhhhhhœ¶Ðt_CCCCCCCCCã´…¦û§-4Ý×ÐÐÐÐÐÐÐÐÐ8m¡é¾†††††††††Æi M÷5444444444N[hº¯¡¡¡¡¡¡¡¡¡qÚBÓ} Ó§Ý$ïsªPÑQ‹ª¢ )ÈÜÕIT|  ‰Dž„D(aBbRRüòÖqdKCCCCCCCCãxqJÒýØØØ„„ÃÅMOZ©tT°SŠBÇ%Ú={öð¤pá”×ëV<‰Ççóñ.ñìÛ·¿%J”à9O”ä|fŸ‘‘±ÿ~>NÁ-ZÔã@Â`6544444444¢Å©G÷‘Xó.Ò|JŒî )?r’ý;wB»I"==½W¯^K—.>|xÆ £‡¿”\rr²Œëí3ωX 1I1Fìуþ¸x#&ÉkÆš~K˜¥eûááå|2¿ß °\ÿ:©ÛÂØ¢§ù2|~|ll¬×k††Î‚¨„Þ±cÇ<°nÝ:ÃQý¦M› ýS§N½îºë¢"Ü2`ƒ¿ýöÛ‰f ±yóæ"EŠÌ˜1£zõê†ËÅ"$an¾ùæ}Ôè>%8`À€«®ºJÆø£É‡††††††††Fã£û–áÏð.šqîöï3fY_½æyUo)(i¤ñ^oŒá1¾Ã(ðšéžt¯aÄqyª@-L—t•ô’a!Áp_ÆÄÄä©SËð™¸VÀ´<†é ¿e¤ûýϯnZøËÒ–›\P¬xôØ…áö¶£1å‡v·oß~íÚµ°säD¿>Ÿ‚ÝÏ%ˆk5”uÉã¶mÛ®¿þzH?^ ñPÒÅŠûþûï«V­²FŸëׯ_¶lÙAƒ•,Y’'îÒ¥KBBÂ!CjÕªi444444444NN1º0GÍ#%Ì’›fìšôî²ÂFù¢g*}…§Ñ=ç¥6<…ü3Í2âc ç6™Î0<–áɃî#(,9==]1`’†ÖóDe¬pá²ñ4ï*(!`¡Wà Û7}†™øLcõú‹~Y~0-•ôîjѪ|ñ³<Ý·ÿËAå‘ó}Hùºuëвá”M×®]—/_ÝoÒ¤IXiÉ2¥.ÙILL”üòYVÛ§¥¥‰çÀÃíÛ·Û¾}û²Ó}p×]w-\¸R¬^½ºì ¼[·n½bÅŠjÕª½ÿþû2! ¡¡¡¡¡¡¡¡ñOá£û¤î5-#öPÌþ¿~òÏüb}|ÌÅK%«œv}ç‹|ÅôBvÈ8ËŠ d،ٛ§  4~üx‘˜'-[¶¬U«ÖK/½$YB’¾}û6jÔH>ç¡Q[Dˈ1ˆë°€€/YûÛªõëN=phåŠ\^½|á¢I†-•cX¦³)»Æ OÃû®)ˆ#GŽ\wÝu ,˜6mZÓ¦MÃÞ³g$~ãÆ„‡”W®\™Œ«ãtÔ)?|†”””ìtwˆø“““gΜY²dI™!ÁñX´hQçηmÛÆ+W^yeäYÐÐÐÐÐÐÐÐÐ(pœrtnï5=…“¼FFšï``÷šÀ®Ÿ¿¹£D‚uÆù¾Kš¾äÖ³ü †/&à3ý±†gä±üA{öì9dÈ´´4$†ß{ï½û»ï¾[­GŸ0aB«V­"ÝG+ÃcÏ2Ì[¹zÝ¿<œºßÞªU/»¢r¥3’ •Ž/\ÍŒ@ŒqÈkøˆ?\< ÎB¸¾ŒÍ£ë믿~þüùS§N…އÝ }ç'Ê >>~ÆŒuëÖ…«¿j¢6ß°aÃÝ»wg§ûüzÍ5×`ø¥K—VÅ/Aäk×®ýî»ïˆ9âLhhhhhhhhh+Þ{Èòíñï» e©oç4sÙÄÅ+dx/I¾´ué‹•3òXËcÈ"u9‚¦ÿþמ={V®\¹G‰‰‰cÆŒ)S¦Œœ7ŸËè¾dž_ç.\¸&u߯¿’¦jÔ¾²BéÒç)rNB\Jñ;;p=ΙAsŸõÃä5üé5’‚Ù³WáÇxm4¬\¹õ•uääû¨Î·‰„îfÑ¢EiiiRÍš5Q»ÈrL~ît4nÜxÏž=2º¯ôÃM÷54444444Nœbtß^ÍcY1‰Fl|BÀˆ³Èg±1~#päàšøÙ£ÿ<¸ºØÎÍ{®ºñ¬ÒWû‹UH(rQá¼ÖòØ£û"1‰BR ôÍ7ß”(Q¢páÂ}úô¹úê«åÄ•±œ"‘¶îؾ+#}ÁêUk¶ýUâœó %ÆÕ©T±f™2ñþ£±Ãkú<†øöÎ>ªbýûs¶d7!!¹©viÒ‹4é½wé R‘"¤ ÒH“&yAzûû¡÷ÒÛ ¡‹¸ ©^4lv÷œ÷·ç1Ç•–€Åçw½{7gçÌ<ó̬÷ûÌ>gFÒ#N‘¤è„øÔÇ­~Ó© ä²Ú÷Ù²…ûüëE®x޲‚ûBx­×Ïë]¦¸_±bEÌÂ}í"ã>‹Åb±X,Öë#Ã}´`Wôn&“»Ù é’M‰Wĉof‹U.ÿ':wéðB=Š˜<ò-:¡× sf‰0´|n³Ùð Ð9r$º ´Ý¶m[¿~ýú÷ïO™ñÚœÏL­!z¦OQþÆý¸DÙvô?—cĆúe3•~+o‘ðü6Ig’AH&YBOl6»Î¤“u¿îÓºeEÝ%Sz5¿æÏXݧ4´3tE÷¿îÃ04„ìСÃèÑ£i#NÁ¸Ïb±X,‹õ:ÉÅp_Ýyßâf2›LÙDº.ùŠý·ä;Ù®M0›þ; ¨. „A¬Ž‡a7uÅ{üœx^ît0ÚqŸ–êAáß}÷½J•*Zö¿³å ò¯¾úêÎ;&“iРA¹sç¦Ç|#YÕ½{÷Ðý¸¸8Bo¿ý¶v@>2Ë—/GD¼gÏžÚß3""bÍš5Ÿ|ò €ÐÐЗê‹Åb±X,ë•‹á>PÚªK÷´úþxEweï£Ô;öË/çÊïW±V>)Ìž«¢»bŠÙ. › /hCË †ÂÄœ={öÂ… E‹>|xž›Ïë‚Õj=räHjjª––C C¥J• §]Dé ÆãèÑ£BàxåÊ•}||´sµ¨FèðáÃ(F]FâµZµjT^d<±€ „¦aþ4™L•*U€f)ñ‰Åb±X,‹õ'ËÅpŸèd›Ñd4¸›íŽ•tšù®—¹Ê¼V~Ùf_'9Ž·U·¹ÿ[˜•__• ª—芬¾êTY,‹Åb±X¬?A®†ûŠ¢—m:³‡ÎÝòlŒøGzù·0-©ÿ(²úìï];ÿ]RDò«|/eØÇ¸Ïb±X,‹Åúóåb¸ï؈Sèа‡É »žS†>eË • õdOf‡êþ‰¢5}Åñ¿jÒŽŠûvÇÏp¤¤wœ! –ã„‹Åb±X,ÖŸ#Ä}Eg6=Lz¡XU^Ö9Òu$==#+$:ºÖñÐ.%ÏÿîÄøWWî‹_p_ÝwSV—õuª]:*ô·þüÀb±X,‹Åzƒåb¸O¡awwwÇæ7#˳X,‹Åb±X¯½÷Y,‹Åb±X¬7VŒû,‹Åb±X,Ö+×Ã}È`0÷5Ë\…ûÉNçmìYÏ“æ+L#*¡NVípz¯9Só']SÈynÐ)tñ‰†è=UH5ð‰,‹Åb±Þ ¹îã#“*5hW±óõ‘ÍfÓN:£+븮,TÇj§+ªPŒî@é¨s 'èDa¼¢nD<ÉÃÄb±X,ëÍKâ¾Ñh4›ÍÚŸOœûÚJsaåßkÌk.Z‰2e |5lØ0:Õ³ aàMTTÔ¤I“òçÏ?|øpçù@ìNÜëÖ­qãÆQxP¸pá¡C‡êU9·•’’2aÂoooÔCëú¨Äÿ7t›Åb±X,ë–ëá¾Õj…)&“‰ÖkA~®²jNv=aóßmËë.ZÑ¿xñbÓ¦Mò;vìÈ›7/®c²~ùå—111ý¸¸¸Ý»w—-[öàÁƒZrÝ 'cFMŸ>5lÛ¶æF@@@Ÿ>}ŒÉ£Æ DGG7jÔáÄ®]»÷]"zd±X,‹ÅÊŠ\ ÷Ƕû?{ÊAIW”K‡£ó¼•#oÍlЇbÕÛô:£N¤ %MR² ٠脬·KBÖ‰LØZËwN ×rBÄoÓ»³òœ€]†1:Ç™¾ŽÝöÕefI{,BDÿ7î‡Ûß—-RÔ/{vÇ‘[ê®üzmã}§QpìÓÿ2À©Å<Ú08GA´à-œ "pBàáü‘ö ­‘S¶Œæª $­±ö)eÂÐ{Z;w¾Hj:ùD´AGÉØØØqãÆíß¿È!íÚµóôôħÉÉÉuêÔ¹páeæ`’•+WnïÞ½^^^¿8ßn§¶ Ô«W“·£§¸xûöíU«V 4¨ÿþƒAJ̽o¾ùfÁ‚üàƒÐAÌlÆ}‹Åb±Xo†\÷e«Þêî³/uïבކσOSÙws*Ùmnž:YgSœ’^¥l;`[Òg‚û H´®Ák6UÔCºùúúšL¦'ý|¶p¾ÝQD–¤vEüd·[ìöëwbþsçûG’ÓÒÚÕ©þ/•Õ÷t¿½=Ãå/ñ{|ýðáCJ€`-8>55Õb±P k6›Q !!ºàããƒaHOO§4w0%Êk¹ìø•P<åàÞk蟘˜ˆ&ðSÁÛÛá 7>E£¸N-â F®&L‡…š%h÷Â`Š"´]»v­zõê°4YA½ƒ'Ož„åø3**ê³Ï>+S¦Ì0dš7ðÌøôÓOwïÞ ˆoܸ1pêÔ©Ö­[Ãà6mÚLœ85‹Œ ¡EÕªU+T¨€x€&.g[±X,‹Åz3äb¸â³è Ù$áau³ÝWî²ú¿;ŠÕdVÿܦ=rÉáBþ _¸Ù…AJ:½¼_Ü7 ãÊ•+‰hñÚ¹sç‘#GÂÜÁƒk«× Æúõëg)¥N°ÁzIÖ‰d‹å'Ù~úÊåË7® "{î<¹ß)R"ÜÝÓÃñÃca_F!ìÏð8|(eus˜¸¸¸N: Rׯ_8tèÐ'NPˆ†–-[mAºãÆ›;wîÕ«Wé±Ô±cǶjÕŠVµi?ÔyÿþýàU¨3äI“Š/:G[àæ3gÎÀ?µ5kÖÄÇÇ£üÝ»w1v˜._|ñEÍš5ÑîÙ³gCBB†¨Bܯ_¿Y³fÅÄÄ føFI-ÿB±C‡a,òåË·zõjÜNqMAš^ÇŽÃ]eË–Ý¿¿†ûT6×®]]€yyòä¡+pËöíÛÛ·o_¨P!¼A/´æ0M›5k–3gÎ… âú‹7†b±X,‹År!¹mº47)»§ÙSNúŸÅOÑJòMû¶¯oøZüÓÍÿËW?ûÛmdÅè)ɱzn™,Ó÷çÌ™›<==aI—.]FµuëÖ¾}ûÂ$??¿+VÔ­[—PøÅ Øñ£Õþ³PN\¸xãÎmñ8íçÅŠ¼óÖ[’јݜ-¢´¯<²¥?’mö_Wñ]Ð÷Ò¼ YMñ×¶k׸Ÿ˜˜óàÖ7îܹíáá. k õF5nÜøüùó(ãïïo2™@ÕTÆð)q3Æ¢k×®€æ´´4m8èI ww÷Å‹W¨P¶6oÞüäÉ“h4W®\S§N>}:ðš–êqŒRÇE8³0€ •$''Ã¥>ÄpÓaaa6l@ ¡õqÂÌÎåË——,Y’R€´Ÿ(0;räåí·ß>xð óê>>…C $$$œ;w3JÉÌÃ- €sà혇p#Þ¡C‡3fðFœ,‹Åb±Þ¹îÃ`½’¦só1˜Ýe4#ì»,~ŽQ]’v¬ˆ4ÚÝD¶GZ¼õïšÞö »0f–”4;vìªU«š6mÚ¿ÿààà9r¤¦¦Þ½{wÇŽ'Nœ;wn“&M`›–æþ´hýoÒ¬éÉ:éÈ…‹ßÇÜO—»ÅR¶XÑyòø¸ýŒ&E6T ÃSŠU§ÛtdÏÝÄd›¬ÏðšÞjM×ë ¨¬j‚5ŠÉJ€!ÔµðØØX`}çΣ¢¢ß¸{"""*V¬ˆ×C‡3, ÞÅkLL {öìÙùò壟5ºu놋K–,©S§n<}útÛ¶m}||À¾pˆP' FtÀ€Ç‡¯€éÑhdddÇŽ1| yzŠzÖ¬Y y 3¢…uëÖÁªï¾ûB ø‡~˜’’’7o^€hq†®F­G.\¨Q£šÞ·oð´> ¦:™£Õ}L>Ô.2©S§N¡Úüùóã ¨sº® x÷Ýw)qâ>‹Åb±X¬7F.†û’"ÓMR6›ä![ñ—0ëeÅ$ý,)91àÑqwÇãS›ú„{(ÿþo‰ê·L\@‰ï#FŒq‹Åb±X¬‚\ ÷…¢“¬žF‹Ñ#Í.IñÒ[ :»Ë)7Þ0ç²î~ôŸVmVÃÃ=PgÊiÈ÷­V+ÚŠˆˆ˜4iRß¾}GŽ ¸ú÷ïßÌ:f̘áÇ § ÝŸÉ‚”^‚’“SyÿÙ37îÿWçá•Íl¬P¤PÙ\ÿöTlFaP$!ë%_èl’ˆ}”úØjÓg<¬+¸«ï}Ífusɬ¬î“mp+X622rÞ¼yàu:‰ Ÿ’a"ZÝ?qâ"íd†Ó§OÃÈ·Þz ­#øÑêŒû,‹Åb±ÞP¹îK²b4¹ÝÝÁ ɪ?ã.HÛþßï‡æÿÆ'®\´eöì¹…>ÈnÓÉŽõÉüŒz~ë(..nôèÑ Ø!C†tïÞ}ÕªUüq:u.\äuÞ¦ó,Hù<øïƒÔ“eùè¢nþpÓÏË”MØÞ)ZèíBÅe¡3½;‚›c—NYçYœ²b~ÇÏŽŸÈÊóÁ„ã)))@gðô¶mÛªT©"œÎ Ó6í£1xÀè%Jh9H 6Ü»wïúõë[´hqÿþýŠ+¢QÄ<ùòåÓ~Ö@±´´40ñÙ³g7oÞŒ7¸ˆæÖžžžèÐÐPgç Ž"žFqóæM7úÆ(îß÷ãããa3æZ/[¶¬6诌ûd'¦ªE£mÚ´Y¾|9m9šžžl ãèâŠdèFÆ}‹Åb±Xo¤\÷ÇŠ›äf4º‹ŸEÒùŸ¬¸®< zøà±©øëw®àþoÅëßzAKŽ\‘…Ýëa(åÌLœ81""¢K—. ü¡C‡†‡‡Ïš5«P¡B´wdæ¾Ì0QVìŠãÁCbê£äÇ?¹výä•ÿxøûxeÏV©pQOÉ‚à/Yyþû’È2sÒY³©©©`ܨ¨(-àuz¤UÛBž†çîÝ»(“œœ|ðàÁÂ… ÓÖõ á&Mš¬)™wæábŊ͘1#W®\¸"Ô_0úöí‹7nm„š###*`·nÝŠØ€b'4ªmèi±XZ·n Ê?}ú4oÀñ˜L0¸Ÿ˜˜H\Ž?+W®¬Í°óçÏãz@@Àž={iû í‰[¡ÎHtM—.]‘âz’˜¢#L§cÇŽõéÓ5 ˜P'úÕ«W1¸èżyó*T¨ Í1²áJýúõílذA¸Â©m,‹Åb±XY‘‹á¾,Éué¾" ö°å̦Ö8ýýws ªÞ.ŸäoñÏ箘…Íh“ô²6+:ÇÓ¼™q›v>Ttt4ˆÇŽ>>>@Cߺuë2]ÑJ@}»°+’ÐK:EQâ~NKxœvöƵÈKÿùW6ÏP¿ÚåÊ…ùù÷%”EÍYÞpóyJHH8p |X»vmXR«V-`7jÆŸ—/_._¾üÂ… `©0fûöí0¬zõêóçÏ÷÷÷§¨ bªà:”=^^^ddpp0Â3___‘q°îñãÇ{õê•3gN:ü ¡Åõë×Q úYÕÂxX…e`!œùv«,‹Åb±X."Ã}»NNÕ[‚” ëÿ÷hëìÿΓ¯jÇ@{ÀOþÅÜôvƒ¤—“Ý&Ò`§^èÔ4ƒ2Y˜'»­V+ oòäÉŸþ9®Ô¨Qà[´hQ²$븯nÄiéƒù%¡“%ñ“¬ØõRŠÅ’˜”tóÖ­ë‘‘Zµ Ò „#”½ó{’}úÙ)RdêÔ©hQ‘±„Àö þ)S¦ÌÚµk_vÄY,‹Åb±^g¹îËBI7ؽO[œˆ¿–ìèë]À(»[¬úŸÜ„ãùWñX8N¸n÷ Y\ݧt¼1“&M‚YíÛ·Ç«–ÆóR¸¯n©i9êùë¤t\•Ä¥&%…ç4’Ã8Ez©¬çþRÓ1ÀÁôŒ,ì¬ə(vøðaÚ£x ÀõññÁ{ýÇ…ºÔ]¾|y 8Þ`t1BgÏžÅhÚQ3ð ìëë«…ÇŽKJJ"pÅb±Ðñ[*hßR”9}ú4UŽ T¥J´~òäIÔl6›ú¸ Òd‚©T ¸|ù2â4·wïÞ°°0mz¡ŒviÈp…òòQµjÕ´ü2299`v¡0âråÊ¡ô{Žó&KlðÌ[±b9÷Ýg±X,‹õfÈÅpŒf´[&½ÎÃ$«3*4;6ºQ®Ðs®Š÷ñÙ“¶Ñ¦:ŽÛ·o3f xêÔ©%K–¤'YA“™úñW/dæ*©›VÒ^“ÚºcãXâH㡆¾bÅ ­´O ^7n3%ÑC½§N2™LeË–ê¯=/õ{‹Åb±X,Öë,Ã}YH%S6£ÞË$ Ù¢^0(:ƒÍ±Ì/;ð™0Z݃S@FC¦¸Ÿšš ƒhKJ¼¦§§ƒüÀ|îîî´5»xÙmŸÄ}áœÖóËÏʳ2{X¢( Ó€EÛøÿÇ}mß'Z™­WY,‹Åb±^_¹î;@^6¸¹Ü= Š#é3ÿ÷y‚Åb±X,‹Åzãär¸/Yçf2º»Ô­n„º½º˸Ïb±X,‹ÅbýV.ˆûŠãÐVww7å×U}çİX,‹Åb±XOËõpßfsì°n2¹Éò¯eÔToW: •¼#TÏBô'éOJR±´MèÿØÖµ|­N%C´ùé+o€ã|š˜Vÿ»é»®hXzž„\İX,‹Åz5¹îã²Ñh2Ý»n*j2¿, :ÚàF;æ‰N¼²X,f³™¥òôô¤7ÙÁ®tàíG$œ@ÿi&õïm6¾———ö îï´5 ZÌ£Ñ7Š?a³Î¿^Z׬V+z‡W|Gà1ƒÁ•bZ‹Åb±X¯ƒ\÷Á?Ù<¼ÜÜŒŽmxÔ+z½°ËvZû¤µ[¼éׯߙ3g´¥ý!C†4oÞœV¬ÿŒM'Ÿg ÅK¯"c™üi*D»uë "GsâÙ³gRë¯6pšÁx½~ýzïÞ½ƒ‚‚fΜIÕºº¨_}8íã?.^¼øüùóÁú.4ÉY,‹Åb½&r=Ü޻͛MÑë$½AÝz_.”Á!«B›6mzàÀZÄEA«`»¿øHW-û6àL©%ÛüþÊiû|`kÍš5Oœ8c±XòæÍ»oß¾ÐÐP´òÊ;ÜÓl£\—Ó§O7hÐ3gÛ¶mÁÁÁoÀê>X³fÍW_}r%ö%¨Õu> JÃD"`üùÜ$ø_nqྫྷ¾¥C¾$«ì8L¯CÄ®{Ožyšó0.=ÝÒ¢Fòÿ× Å.É b'À¾bŠÁQ^§ÈŽÍOÅð¬ôr¤{ùòe¹——×ÁƒCCCEÔҧν&OJNz¢°ÈøéàܹsuëÖÅ´AáçççìUgnÖˆZÑœœ)7£-êÌÖ†X{ìøeGœšÖ’¸œÃªßùG#GŽÔ«W¯pá‡öôôü[žäf±X,‹åºr1Üwì½i3x˜ŒéIö—úïEÝ¡ÿ»à™­@Aÿìù•’íƒå‰ŸÜ,²°™„Þ$›@§Rf$|óÍ7°ÐÍÝݽjÕª… š={¶¶.Âk£Fºuë>|øæÍ›OŸ>Vúöí¹ÿ~ \¾|ùg®1Ëô03‚ZØ·gœø«½HTìû.NHIzðCŒÛc{åÒïøä ò3¹#ž°ë$€ði¿SÉûøGVÐ7ĈéS/ÙÓ§qŸBŒ><Œ™ЧOŸqãÆ!âÊ•+W—.]¾üòKú(?räHÜ¥-´ÓМ={¶zõêùóçß½{7%î'$$ †»wïUW«VmРA˜p ÐóæÍ‹Ú|||2,Š, œÂBíWâò&ž=C—.]¢ßcÂ#\Yºt)猪0ýà­\\§NóçÏà ¼×&''£|… bccïÝ»'ÔŸêÕ«‡#$$äéší*îë4ÜWÛ‘"ÛFþç‡㿱YÒ”­lt/îæn2aìlBÖKi: Fÿ‹×ÕÄõ^(&ZÕ‡»t/GœOã>u£ä=qâfB¹rå8€ëÞÞÞ`ÜãÇcöÀ'˜mM›6>}zŽ9 :‡_¿~()”ǧÄâø³aÆ“hFâúúõëÍ 4Ðò J”(P áAVRqÀúhSyâĉˆ=êׯñÂu ͬY³Š-Š`,ëN@Ðóè·¼/^üã?ßS.tìØqÉ’%Zùøøx|O¦¨úðÃEÆ6JoÀ# ,‹Åb±þ¹î ;n7ýŒ²"tVÙhSlô±§Ò}oØö—‚ÃCŠêJÔñ («¦4Çò³Î=Sœ9s$ Xß²eKÕªUÁŽ9sæœ6mÚ‚ š«ªR¥ ì=zôÑ£G[´hѸqcháÂ…oÞ¼yúôécÇŽ-[¶ ×DξвŸ·ûLÜê³³7n9r$àÞüôÓO (0þüsçΡ‰6mÚ‘Àø“'OæÍ›÷5«ÿ‘Ôµy¸+MR’-–KׯÝIú1:&ÆšþsåwÊúeó(šƒ)YFE'déaÚÏß]‰LIÃ@~ƒìHÓWÓd°¾(S¬XN7IzYÞ|^2xÎ2dœŒ zމ‰™:u*®c úõëj£äîÝ»ávZS‡?1„Š+†Û}}})<ÃôÚ´i‚1DG²R¥J!‹‹‹Û»w/Æ Ð-äß¿U­]»6--  Æ+X° ^áùš5kª¬;ø¾cÇŽk×®a¸1[FU¾|ù#F`÷ß?þü•+Wv¾1‚:„¸Edü$¸Ïb±X,++r1ÜG VI˜ÜôÙLz|Ê:áHÖ·)rºî®Oüwé±Çýçp|P¡cÁ´¼õ²½U)›È,™G;ñêöíÛ€é={ö´oß>wîÜÀý9rÌœ93<<œ²½###ß·nÝ3f h›–¥7oÞ°¶…ÑßÄ{FWÑoooôñeqŸV÷ÁÇW®\æV¬X%Û´i³iÓ¦eË–uèÐ"Øî?ouß*Y#ˆ]v$òËvY¥?~`ùùÀéÑ) v½p7ê½S¹ H6!™LÊòWtâ±"#L1:vâ~ªqª¿èE’¿©cæ»=¡çåî ÷k×®””tñâEøâœà>^£££éðç^ŒûÚþ¤ðÞÍ›7›4i‚¿üòK pM`¼Ñ€feM˜‡1ÅܺuëÀ…•+Wþâ‹/`Ò‚ ðçðáÃ;vìÃÜÝÝÉ0€>®üñÇ@=°cýúõ'OžììS­$ê„úôéóÉ'Ÿ8ï8‰W´¨·Õ·oß­[·Ž3¦S§N”úL&Ó;wZµjuãÆÕ«W7lØÐ`0 AÀ'NìÕ«—Ùl9r$pÿÛo¿­P¡a¢óÏÚ€HNãëØÜHQR§¥<~¼ÿÄñÿ¦þæ•tÆ*•*æõÉægòÈ&`úÈ$쒚ܓQ›ôd½/ví/‰R)))˜d0¸(D‹Ø¸O¡‘¯¯/^ômÛ¶EÉÇ#pðð7ß|S¤HL#Ä`ÀýU«V|Qžü†b-[¶D ¸ˆ§mš"xÀè èÞ½;Àµmܸ1,,ìï=¬  ŸœœŒ/@ïÞ½aÉܹs *4bĈ͛7÷Påéé‰ùæ\Á &!¦BP*~T—Åb±X,Våj¸/Ùdc¢—=ìæ>ËÑ5wu?f³X’òó®ñ^~¨˜ü%ÅM‘L²¢²¾¤èÕ](3q 2e °t˜ÀU¥K—Æë½{÷€žsæÌ©^½:mê7a„M›6á=z>›1c†óvûÚNí ò%K–à#P¸\seo|Ï;GôØMKKCC Wò#ð®gÏžxÝ·oœ“'Ož+V¼óÎ; Û;v"Æh×®¢‘iÓ¦•+Wñ@6‹+ÍvÅn’M’âÿ÷¿ŸmòÑsg¿‰u÷0{)–Ú+ ÍcTÔcЍþ{e:¦¾|øá‡§OŸVÔó îÞ½‹+¹rå"d‡{陇>ú¼ סƒË–-C`P»vmL¸òÖ«W3¤X±b˜4Å‹§µyTˆé…‘ªQ£ÆâÅ‹Q›ó#Ñ(°aÆnݺùûû?xð5¬]»í¾ì6ù¬N:ÕµkW|ë0‘`Iùòå1ʈFà;†ùߤIL0­þ|m#Nb‰%úôé£Y ˜¦[©“ãÇŸ>}:½}ûö_|ñ(“¶€tv+J4håÊ•øsÈ!ƒvîmÖ¬ÙÉ“'µ]äiwò†Ú´iÓÈÈHºˆ£R¥J@Ãí۷㮩S§vîÜ\8sæÌ9rÀËùóçñ3ÁÚHÉŠ£!›ÐÉŽ4)ñ§Ÿ[mÇN|wÿný5Šåɯ—%róêþ+ˆ&A›6m*[¶,úríÚ5ø³óáÛo¿E%0U0C@ðEŠ¡½ç!„LÕªUCß:äíííÜ}´~æÌ™ ¤¤¤T¬XqéÒ¥ HOOwìBô÷騱c­[·†±-Z³hôèÑtzz„!þòË/µòGŽ©_¿~áÂ…ñ_Bå·³X,‹Åb½X®†û Ôͤ˜ìå丟³yš}B ²^‘6IT²9ÎÖ¥¥}E§¦ód˜˜„„´Œ¶X,ÀwXr÷î]@9ÁwXX˜¶Ï#^oݺ5qâDÄýúõîÓZ¾s…6Ü»w/11WsæÌ©õˆòËÑ_8ÂyÉ_¨›÷ÓÚ?Ê…QÃCÏn‚hÝÝÝaà%ÃÃÃA·¨?66×AÌ&“)k[4*²=]§×ÉŠÇYYðè;9õÇÿ¥ÿäçý/O7“ήèÔö¿2îÖGGG'%%i„ª‘:eåΖ߾}›¼É€+`ߨ¨(¡îQS°`AFDÆŸä”Äè †‹/èðlݺ544Ôù÷ ´žšš:gΜˆˆ”Ù¸q#›ð÷&ó ›W®\A—…:ð-ÂXÃEäØé‡ù¦•ß¹s'ƒ2eÊ Ì£/!³>‹Åb±X¬¬Ëåp_'Y=ÍnŠÑCvìÈã8ôÕd• vG‰]²^PŠÊú¿Øþ{üã-Õƒ5Ñ%à&^—.]:uêÔjÕª9Ø­uú{[ú‹¤8Vö…ôK þ/ŽÒi©;:§\å—Uþ×Q4á0igÒJ•*-Y²„ž«Æ„£Œ:t@¸è/Z´è+‚û·Ó‰Î»páB§N`ö¢E‹J•*õ÷¦!±X,‹ÅrE¹î«&›Ý nînB± ÞîØªÇ±8­VãU’À¯êº¾ºæ€ª/tfÒ¤I{öì!_DGGÇÆÆ†„„äÊ•ëÝwßíß¿¿¶Ý¾kȱaöþ×W8ýñØ_ Zá¦ßIÀÄ5 Û¾}»ŸŸ_BBF$&&Ÿb^ݼyÓd2)R¤X±b³gÏÖ«ú»ÍÏDÄú°ÿðáÃ7~çwÒxzz¾þ ‹Åb±X¬×M.‡ûÕt“ÑÝÝœM]Çw`ª,ÙeaסQEç8?V]‘V‡ý]yç΂›Ú·o¿víZÊ!ʤěž={"³r`Ók¤L†ûu]Ïw¥<Ñ`&EFFÆ%JàõîÝ»uëÖ½}û6 ì¼¯ZµêÎ;Ífóë?RÚw)55õÒ¥Kø‚ k.6ÇX,‹Åb½r5ÜW$Yq3¹ÜÝõŠšÈŸ®´LÆu}ßþûv•ÑD‰:çÏŸOHHpî!Ì\¨P¡—Ý|ýoÖo÷å›l>#‡Góîk&í¬bZ§‡%(¯===ýìÙ³‹…× ƒÕj $h~ýW÷µsÖ´/}£^ËY,‹Åb½nr=Ü×ÛôF³Ñèa”+ù Tõ9Så)®—^[R}¥¼ÞpÏb±X,‹Åz5¹î ½, &“ÑÃ$«Ù<ŽçJ)= ›ð°X,‹Åb±Xÿ(¹î;>±»¹™ÜÜÝ•_Í•uŽÃv)­™yŸÅb±X,‹ÅúU®‡ûVÙâáîa2eSÿrdk a—Y/÷EFÚ7 íp/^¼ÓÑŸlŒv¨–fåÙ¿š=ΓŒrÙ]bcM‹Åb±X¬¿K®‡ûB/›îF½I€Z!éûV¤o`Ü'ñ[­Öøøx‹Åâíííçç'ÔQü[,ÁT¸ÿ>ì¡gg CXX=Aû²¤N‘Œ†ù—#G¡Î6WzNšÅb±X,ë/”ëá¾Í–îiöv3¸ Y8pßàØ‡G–¬ÀHÆ}mR‰7½zõÚ³gÏäɓ۴ió·æH½RçAË–-/_¾ âÇûðððU«V…„„Ð|z)R§-PÓÒÒš7oŽÙ²bÅ £ÑH‘ßÕ‹Åb±X,W–Ëá¾cI߬÷캴GéFƒÞœÝM‘ɤ¦ñ³2†Áf³ÅÇÇwéÒåâÅ‹_}õàøobšP“&M` ¬Š‹‹ËŸ?ÿ¾}ûræÌ Së/U!…1ÀýºuëâöM›6òö”,‹Åb±XÏ“‹á>Z° ½Þ#æpâ¾Ug‹(Y±MÕWèý¡W­³+êI[±ƒô“zÕ#SÐòðÓ^ ,sçòööÖntª§rn tNnÁô†n¤v³²*OåQòîÝ»˜ׯ_ïÚµ+Œ9pà@HHuÙÙ¥ZòկݮyLŽ;v´mÛ¶E‹‹/6™Lœ¾Ïb±X,‹õL¹îáÓ„ä'yÆìIØñU¤—È£Ë.r–u¯Ó1PÎ&tžŽtžtÙb0Êt²®¤Ó ]&«Ú„˜xMKKƒ¡Î} ärwwwr>EØ_ <þ$*…<==Éfg”G?ÓÓÓµ q—Ñh¤ò(FUY­V´°£B”'/£P¬Ùl&?ÂÝ(£…´ž€mZháܼ©S§¨ÄߪU+ ¦aYH¦Âlxž€ž"\AC0C;¾ÊËË ¯ÉÉɰ‡òïa0ŠéU½Ø·Oèòå˵jÕB… Õæ yƒ C+0‰ÎÏò÷÷G»(€É62Å"##K–,Y¡B…ýû÷ãÎÝg±X,‹Åz¦\ ÷…" ŠÁhÔËi†ÿÅÈ1çÒö­Žò´søyzç××ìþ–âŸnñüÑ& nŠ—ÁæXð—²-[²‹/†A¿iMQºvíÚ£GâéÏ>ûl÷îݸح[7ñòåËiÁ»Aƒ#FŒ€ƒDF&:jƒ[g̘±}ûv­6`w¯^½P ÌŠQ ¼ åÞDDDܼyt®­j>¼E‹x“””4dÈ.îÒ~ˆ€zöìÙ©S§'°›B‹Å‚æŽ?¾lÙ2¼¡”wÔóá‡Þ»wâ x{Ê”)óçÏ¿xñ"…¨|̘1;wÂ=íë+eÚäRLBÖ[%IÖIõaÞ †¢9˜²„¹Î®Yz{{oذ¡\¹r¸úD1”Ç+0”òavç· æááAü R?vìØ;wRRR´ Q,W®\ýû÷oÙ²%ø¾aƇF+ j¼‚ª°K—.…³€¿F£áGûöíñ~èС«W¯†¿(ÿ…ázà8XtÞ±cÇ'òòqKïÞ½×­[7räHð=h˜²eâââj×® ªFÔ€®­_¿~üøñ0Ÿ÷QϼyóÐ_ŠR`ø#çïï߬Y³K—.!Š€åžžžk×®Eó²)4Ï\ÝG…˜‚ï¾û.}:ÌÀÜ5hÐ XŽøÅlОÕ Àë‹÷ÿy÷µgQ?>B§•(QAE•*U‚‚‚€þèK||<Èñoß>„”¼tøða8­L™2èã>‹Åb±X,Ö3劸¯˜ žžnzüáÀ}%]’Ü…lø9*ýÐÒË?^óIyh/U7,gƒO!áªR& '´ÙËòåËÁ²0æúõëF£‘T¥X·mÛ¦á~÷îÝaô_|1`ÀJv÷7n¼k×.„ íÛ·wÆ_Pû’%KPœZºtiâã¦M›îرaFëÖ­qeèС@”™8q"9žAüpåÊ•3gÎÀqÎ;Á¼¬ã>­¾ÓOè,üì³ÏÜÝÝÑe4Ú©S'z6·ß¸q£aÆx³wïÞ¼yóÂÐ?@sÀ0€pÞ9‡b Ôü‚½53Åý””” . ¼Ö«W/00p÷îÝ(‰H C””„÷Y,‹Åb±².Ã}Çn;²Í`òt3›„°Kv›ôØ”|Y>²êùžçÕ›wrWÉQ¤‘gŽ"Fs°¤Ó?–tFI2gê ùŒ3À¸€o€/1>ºxñbDDˆ$JVõìÙÈÜê\´hÑ!C:Ü'.?wî\ÿþý1³fͺvíÚôéÓË•+7jÔ¨|ùòjá£qãÆ­X±"99‹/.2éçÏŸ¿sçÎWXÝÇ{Ô†bÓ¦MèŒ÷õõ3gNÑ¢E‰àQö¬_¿MWªT ETúŠŠ;v,üã|F/!>¥þÓS/Xà1îƒÝû‘‘‘¸~éÒ%ð}pp0œŸ#GŽèèhÂ}=ã>‹Åb±X,VÖåb¸/ a‘tÙ„»ù±Î/']þßÙÑöÔÀ´Ÿôæüɵ۾e ±eû·AÖ;ÎÛuX+Ëz]&›E¢­Μ9óÝwßyC ‹O:Þ½uëÖ‚ Þ{ï=³ÙëÖ­Ö>ÜÛÛ·£3(zǃÈM&ÓÕ«Wûõë‹bàQ­¡]»vM›6­U«V#GŽò’ƒÐzß¾}W®\ jÇÛ·o3fÌ'Ÿ|BœššZ¿~}„¸¥eË–ô@*=X¼téR8¼>zôh籡äþ.]º€õgϞݦMOOOZÔÇ+º‡&Nž< ƒ;vìˆn¢/F£¯B‚‚‚¨•{÷î¡×111ˆCo=zñL‹-0X£Ó( · æÀÀ@DM4‚š1xMHH€—pËõë×- †åË—çÌ™“öÅ]ôìDÛ¶m1«à„:.\¨]»6ŒA$ ¿ÿ~:u¥¬ZµªJ•* šR}ô€5kÖàÊ‹G™Åb±X,ëŸ)Ã}EJ·êïþKºµMìXm¶ý+{%gQkÍNy­Âè)„Áñ¯¢ƒ-YÍãÉtï¸`Ò¤I cjÔ2Ñͪ€¡@se­ZµÀÖ O˜ —a$® 0NUoÙ²¥råÊBÝCpŸ”””––¦5„n¢ nF;·Ž Á{öìIOOÿì³Ï$À³r÷{ôèÓ’6eÎøûû?|øŸ"º7mÚTÛ‹“†dŒ¸âüùó0q%»Íp8¬Å•àà`„.&LØ¿?íÁVæÏŸß¼ys2ìÚµkxŸ˜˜ *„˜¤H‘"Ú$P2ˆs#ŠïÝ»%{‡ò98@·ÐVEhꋯ¯ï¦M›BBBÚµk·oß>\åÑ‘‘ˆ”`gÉ’%1uP®c†„‡‡¯_¿a T«V­@ˆj9d6È,‹Åb±XÿP¹îKÂæ¦¤šäЇïÝø}áby*·Î®ø(’÷#£ÍËQÂ( ]=W×àXàÏîÃP¸à«¯¾úæ›oDFÆ T½zuÀ1Àïg̘÷`qtƒlûä“Ozöìi³Ùнˆˆ¼y/^¼¸T©R(€îX,–éÓ§oÞ¼Yk¨mÛ¶}úôA¨@gci^ƒ†ºsçN¼ëS –~óàÁÜuåÊÚ–X¶iܺu Æ À”)S6l¨UHOõ˜­ƒèûÔ b€Ö­[cHhy#ºpáÂiÓ¦EEEY­Vê×äÉ“i‡M´ß¹sçcÇŽÁž­[·–/_}|b¼ñŠˆ¨k×®111¡¡¡‹-Ê—/ŸV†V÷?üðÃS§NQô*2žÆˆ/[¶,wîÜ;v¼zõ*>*V¬ØòåË1>úè#ŒPc„?cccấK—,Xyûí·aÒ¡C‡Ð_>U—Åb±X,ë™r5ÜWtúÇf³šny$ë=„!»dw“¬’ð…"Ë’ƒõe!é¡Ï"î}¦¦¦ÂÚÎ’Ñhôôôq‚Jš è %±øøøGp%))‰(<00P›è?11ÑùT]€>zJÍi‹ñÚXtž. ÐIºp®ÈHÄG»”¢CÒ⟟ä…¾¾¾hËù¤-JÝéÖ­ÛêÕ«Ç7^^^4< xê2­»ûûû£ãd$%ߣf:Ÿ¢‰½{÷"°A÷ÁÜùóç'«4¿‘¯`,¤¬}ŒàeðŠ¹‚!§&´ |¨ã¸Nƒµ>¤cƒÑÊ’¢+0u¢fE;(O÷ìكХQ£F+W®¤Ã3g‹Åb±X¬¢\ ÷Ñ‚MRÌF773þÔÿÈ’âëxßqIµ÷÷ñ—x¹s_]_„òp ü ŽŒŒ\°`°ØyaþÅ÷"ö°X,3„+ ¸{÷î¤I“Ê—/Ÿ;wî'NðýëEñ⓺uëâuÆ ´*ã>‹Åb±X,Ö3åb¸/KòcÃÏh8›ÞK/ôzE/)¿¾¢—½ûeAÿ[ÿ¸OùýpàǼ{÷î)S¦ÐÓ/8ËùöŽ;ž,6©z¢ŒÆ>-è Ú¦,Z´hË–-f³]BëÍ›7ïÔ©uøÏD€ˆ H:eÊ”3gÎ|úé§åÊ•ûS[ÌŠÈÛdÎ5jÔ¨P ÁKcÇŽÍ›7/üFøþt%DðÔ:Ç…ÑS\!þÖ6Òb÷¬l4”QxŒŒüüóÏ+T¨0`ÀØð÷ž&ö‡‹bEçÐŽhpž'-[°`Á¶mÛ0'Ûµk‡¯À3qŸZœ5kÖáÇéFÔߪU«÷ߟwMe±X,믔ëá>>^¸»»oß¾}Ò¤IÎ.\xîܹøô_Ý€Òþî µk×¢þäääÔÔÔ^½zh^lðï‘^»uëvèС3f4mÚT¼«û„Ý`ô‹/FDDDEEi?¹PÎÕŠ+Ê”)ó‚Åx*Œ 1hÐ ÜNWŠ)2sæL;wîôïß?11‘ŠùøøÌ™3'wîÜÚ¿¿´Vú?ŽÈ­^½z_}õÕ›wLïÊ•+ÁèZ¼¤]§ jäÈ‘ 6Ì´Z­G Æ ›?>þÅÇŒ󼑅¸yófü‰h凊yòæýrÂb±X,Öë,×Ã}Ô ÓoÙ²å³Ï>ÃÑÑÑ ÿ   ///4¤Û)CCüvmX³õ™Ìá|QKZpNP³@·x3eÊ”iÓ¦õìÙsöìÙ´8J ŸÚj±ö§sm”µ¢YEfÐ «óÚª–»¢-ŠS=p>ÂH¸9NûµÎµ=Ñ…§ëÏŠèmPé õ޼A©MxíÚµ–-[Â3ß~ûmHHˆ^ ¿··7en<ÏáJa~ ’Ù¶mþÌ“'O¡B…–/_n2™nݺէOŸØØØ›7oâ£wÞy×µñÕFS)r¸–G¤Àåœ ¤­s;Æ+Ê ~C£4ÑŸ°VV­QŠv´OÔ¬ ­šky/Oä;9·B!¥sB‘³çµ¤©'êYË;Ât>|¸¯¯oΜ9ÑM¸_¸úîÝ»ø6.]º´cÇŽOÌÍNúÉÅy&X,„g‹-7n܈#4‡köhE[ä–Q£FÍ›7…Çïl°–}Gå+Ñìqþ"°X,‹ÅzY¹î4›ÍfØ66mÚÔ½{÷Š+8ðý÷ß2dȘ1c4þ{øðaBBªw"Ü3!6ú§Dm(>>>))Ikˆ@&j=—2²–:h¨_¿~_~ù%ÕIt‚Ø}’p ¡†Uän|&†7µL•{÷îá L©ïþªè@gµTxú"œV÷µ…vpûöm4­.aZôôôÌ:ñ¢¡ž˜˜ªZÏ•+—ãĵ!\öý êÃ?Älÿ……… õñŒ#®dÚ"Y˜žžž˜˜‚ø1êæÍ›{ôèQ­ZµU«VuíÚu×®]Ë–-ÃGÚ÷cï5^Ã*ztVk¨wïÞK–,Á×mÀ€#I}Ђ,×zä9 $¾)ˆÏñÅÑ®k½>xð %%Eû4GŽ>>>"ãi>;™Åb±X¬W“ëá¾¶º2¸kÅŠ}ûö­T©Òرc6lزeË9sæ Bb£éÓ§Ïœ9%›4iR¤H-ùp3jÔ(Ô#2ÖÅáÐÒ¥Kûï|ôÑGŸ~ú)=,2åiÜ' DùÎ;>|èCl7qâÄN:ÍTEPfÚ°aCñâÅQl‡vQÏ‘#GõFÎB½zõãt@{èÔåË— ^ñªjÞ¼ùëø± h©ÿþW¯^Õ®£Júo×®]Öi ‹ÁCßïܹC]CÀ–(Q,K;#!€cQ,99Æ€Ñi¥s},Z´hVVdÉ-h±V½zõòäɳvíZ9… ì÷Þ{ô¹fÍš2eʃ¤Ž;‚©rfάY³Ð(<“Ú·oëÖ-˜]§N¹sçj1X˜²€ì·ÞzkÆŒdºÙ¶m[¼R„ƒ)´páÂ'ž !÷ž|x·nÝ`í–-[Ú´iƒûöÛo1µð'ÀE°yÞ¼yøfÂù¸£é‹/¾hÖ¬þ¤x_:˜ŠÉ†Øßz¸nݺhÓƒ¾YYÁ}úÝDñeÙ»w¯ÈXÚïС¢Ìè,³>‹Åb±X¯,×Ã}|ÜÄTúÉ'Ÿ€5A- hÕªÞ/Z´oˆfÏž †HHH€·´GñÑ矎$€F[_ý5 kìEèÀôÍ›7W¬XÑ9/èiÜ'ÜAý6mÚ„»¼½½Ñ¯Ñ£G#´@B•ü°°0xûí·Q¸K—.Ç×|Gþ…µ@àb”AÍàž3gÎõÇ pçÊ•+kÎ+и=55@é¼î‹÷ 0x·gÏžYO‡À €>¶hìå¢à @¾æ õw P# Žã£àà`ú‘Á×׈À +-gñ÷19@ö¹sç¦%ócÇŽ!^A®^½:<<½Fw„€ AÛTZ[àÛÒ¥KaáùÄÄDØW«V-¼Ç-(vÄ]0¸|ùòëÖ­C|ÐGýè/z _µnÝ =1÷ðzÚ»wïëׯk¿œµ#¾Â,Bga*B²-Zܾ}pŒ†¤Œ†`3¢â`êï¹sç®àvçVP8E"Fð7nß·o_÷îÝ5Ñ€Rt c€ÚZ†X¦N^°`B>|MHlܸ©V­B =z8ps¸Q£F´f¢&8½@ýp&¬Âë7ß|g’1øº÷}TQZà‡1˜)êCóÚ?÷éǘÎJÙnÂéß 0³=+O³X,‹Åz¦\÷ÝTá ˆ ØT¡B…õë×{zzîÙ³l=þ|ð1ÑFRR(Ü H–ù˜@?€”­R~X…ÍZ^ ¬ ;vÇŽuêÔÑr¦Ÿ·ºOÞ_:D5hÐ DÀV†šÁ‹`8paDDD¯^½ˆ¥PíÑ£GQUÕªUa³Ù §€§ÆPV4ª½ÿ>pï»vízäÈð(HrzœU!¨_¿þÝ»wa0b \ D¿ðçþýûá¶mÛf%µ†úrêÔ)<:u*âÂ8!ƒ>tè hܸ1pçÎ4 |ĈÀr *Á{´îœûñ}æÍ› ñ=Bé+‡ ”B@øÍ7ß wGŸ‰ûôC‚Xø_@–Ë)À aRRR¤!˜‡£žÈ^c±X,‹•E¹îÃbð+¸5öíÛ7>>ˆ7o^ÚàåÎ;9sæüâ‹/Ú·oOÙÀ÷Áƒøá‡K–,ѶŸøx.2¶0Gɨ¨(Íqˆ @6°ˆƒ’ˆ´¥ýã>ýVšš Ö'¨¥t‹óçÏñaaaãÇáe:È6•| .¬x lÚ´)l†ë4h@cñGá¾PAöĉÀ\ ;±K—.@gø$((ˆüi÷ÑGíØ±£P¡BÀM¡.xöӧO#ªA±½{÷†††Rm„ûÅŠÃä“{D—¶M§fíópenß¾ KΜ9‚FýüüÈá0sà‰Õ}üéïïøðကªá Ü?~üx•*UÊ–-»mÛ6-$êxÅ·‘V¸PuèИ‹ â'›i%á(ƒ`ìŽ x&îSOÑ;z¸sçÎ'è"âU«ˆ¶nݪá~ÿþý!þùçàxÊÚ¢¢$bô1ÓÕ}z¤eË–ð$ªÂÔÒ¶7¥Ý?ÑS¼)Q¢ÅEŒû,‹Åb½‚\÷ñÿàð@!'`† *„¦ˆ"h!<+iZô°5ú‹x¦k×®ˆè¶lÙB;,‰ŒP=‚ÃÁߘ“p#]‡g<㛌8á=˜Žš?>zJ?ѯU™0íGމÈÿ¾ÀÜÐö–Íã[0lØ0¼¡^Ð “1Âa°0uéQ`ÚùÅ0+V¬€O ,¨<çè‹Åb±X/–ëá>ÀÄ9~üxÀ±ŸŸ_¾|ùÊ—/øFùëׯR¯]»zhþ &€Éð@6]¼x¼uÿþýÐÐÐyóæÏþ?{ïXEµíÿÏIÜ ¹$ôò§—€HP¤K•Þ‘Þ{Gºt¤„*~ô¦<½Š" RÕ?½üÎ#ÔÜ÷®1¤œß'gyöƒ’Œbâú^ïa2³gíµ×^{ÏwÍìwá~i†}„ܾ}ÖÕ€ÁóÈeçÎB²¹„¤GˆØî.3äöëׯ÷îÝûìÙ³ c‘šØíÎ/$òóÏ?G>¢a5#k´4iRxxxß¾}!;wÛ(P€ÊÄ$ƒyséÞ½{„ÁÁÁ\5¹\»v âkïܹ³g. äÀ}Q#þüÂn…"sª»…ãÊ¢øGêË“ _¾|ò¢ ;eÊâ´C^·;v ËPR,³wï^{¥Á¼‘O-˜o×â¡dMAÜe¹K¼ƒy„sïØ±ƒ[îß¿åÊtÃUðIx¿DGdÇë2eÊ$3%äcþ#Ûœáx4„òåËÃˉ|îÞ½ËI¿Œžâ˜Ú¡QPeDhø ± Çòñæ -É\òóó›={6Å—ï$´Gù4„VxH‚ƒa“ƒ¾ú꫺8B¡P(/†¤G÷ Õ9r$ìDVö¨]»6ypþ›o¾©\¹²0c.ÈkE!.7^±bwíÛ·OäAÚòåË¡Ëè0zôhH˜½ ˆ‚âCY&ï5Û¶m»råJcQÀ¤‡9 8P6‘:uê´lÙ2¨$aòåu¯åæúäs=pà€™%)£2 …¨1"=L þzôèQ3Å,ž#gÆ?tèP¤‘…¿ÿþ{³FTW«T©’'O3ÝÓf NI‰¨BŠ)£¨á‚… ‚4Ë6ap;b-HžY`GLÍÕýû÷C—ÅžC†€ýõ×Ðk<¬X±b[·n•­»0ÅÇYG™“„Ý»w§¦p)üg÷îÝð~ ~ä{Ž™ŒQ¦L™={ö˜±1ÄB$#[I)ä(ÚgŸ}†(q_6¨§Ùf‹ºÃ²@> ˜”!PgL‡rçΞø³L‘[pTØ¿å±sêÔ)™øk–ãÄOpK¢;J„X,ðÿ»0dÈ™‘,ßyˆZ·nM…Êr¥Îa%å’%Kºví*ü[DÑpÐÊx5Žif¶ PTÁš5k¸‹_"¬½téR.µiÓ†»prXµjU"j"1Yn¨yóæDæfœ¨r,RªT)ËÕ¢‰‘èpfNJ+‘h8ä…té`…B¡P(^ Iî[®Å.¯\¹"¯S»o…AŽ?îå^ì<þüBæ8“#GŽ pþáÇß}÷å"—P“L™2¡(¹#Óž)¬ Î}âÄ Ž!vçÏŸ •uM …#ò'”š,ì#Â/\¸0lØ0J…âÀ¼›4ä΃oLˆd???,@bô¥K—,Wâô”a*ÒðPÒ¾7pΜ9ñ"³‰¬x™ŠJ@È/±„Ì<6ó:â5¬ärûöm|ÒN¾qlÜÃÌÍ1`èlÙfªÑNICuЈµd»1ÆhÜ"+eÈ@2QžJ|ðà]¸¡û¤'kY¨Ôø3틦-±¥X ùV¶I–Á? r'…B¡P(VR¤ûBËìPx‰ýO3©ÑP{J3ÿÕ,Ôó«y™iö3¿Å®$¯×F¹ÂDeŒ5%¬T©RÏž=óåËgŸ—iLÛ%Ý~µP&ùÓŒç6EøÕñÍö»~Õ¤¿Š÷îW2)ÂBXÏDv­ìv{±Á<Ï–ýWµŠs^Tr¸glÛ-Ç8æÕµ™cm>MÄÉÝ|QùÕ‚Ø¥Ù?¹˜ öª´›È.üY3Æ)rœª·Ês#?ë`r !„‘lr4™JS2—â4{2Ó4ŒnqÜõYó>k“ÞÌÙ}Öà …B¡P(„$I÷ÉX¦þuÿRZ¬Ù¸qム+¢œœ÷u¡oß¾£G~Ùj* …B¡P(þ^PºŸ8Q ZèÐ!Q̼u¸VIïÙ³çËVS¡P( …Bñ÷‚ÒýÄ…òàÁÚn†@ÈÈ^¶š …B¡P(Š¿”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"ÙBé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"ÙBé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"ÙBé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²EÒ£ûhœ*U*òFzÆåííͤáWÒ@¡P( …Bñ·E’¤û~~~ááá÷î݃Üó§œ'?BËôéÓ ×6P( …B¡P(þVH’tUV­Z5vìX2 H¿ÜÂ¥† N˜0x@ÎËkþßg"…B¡P( …"©"éÑ}„r q={ö|òäIêÔ©ƒ‚‚¤$OŸ>ŠŠ?~|‹-Ò¤IÝ×·û …B¡P(Š¿3’ÝGc(>J/\¸päÈ‘+Vœ={¶¤?{öl×®]}||¦OŸÞ¬Y3‘‰ü†……™øùùùúúRîL ¤`ËI”.]:Rò'“/ÇÜËŸáááQð'E0¡…ÓÔxøð!òæ©R¥"™äÅ<”þþþO]àw! õ$ª™á˜Ø†4)R¤À²2?¤M›±’©Ã…G™LI€ò$æ<’&$Àü"ŠH@2 âýât¢(É/uÇ/…’/*òu…òb.Sç W( …B¡P$:’Ýæ '^¶lYçÎ6l¸nÝ:a“H;vìÌ™3çÍ›ï9PRxùöíÛ§L™b„´hÑ¢S§N”ÍҠêU«+¹Ë/qÂ’%KÞ|óMä6lÛ¶m$&_¸2)…‹¿÷Þ{C† 4‡›r~êÔ©’^@‚V{ Gv=zô8qâ‰ÑùÈ‘#ûöí#/(r‡ã·Üô{QŠ~ýú>}š4bì‹zöìIAd 2¡à ¸pႱՈ#ªV­Š4™Ü,ç?~L.—.]B™ -ZT""ÒÄë1”‹ÄèÙ·oßÈ܉9r}¡O—.]¨P H0ìòåË‹)"áÒ}…B¡P(Š?Iî#V •„š·oߪ+Å¥ÙÕ«Waÿ÷îÝ›5k–`N®\¹rÆŒdöèÑ#£"ÁõÇW«V-99{ölƒ’Ýç’¬»¿|ùò: î+ô¹T»ví ÀõeÑžµk׎1âöíÛAAA¹sç6*rͲfÍ 9&àÌèÑ£'Mš”1cF’aN<˜B^ºt©páÂéÒ¥“3ݺu[¼x1D:ž-[6±”—“«V­Z½zuñâʼn78&MÏž=3eÊd4¿sç\÷îÝŸ|ò ä˜3UªT9xðà„ Z·n%KƒÂh2`À€>úHÞâרQ㫯¾‚ëKT®\VÀ¼yó¢sXXXŸ>}>ýôS$Ëg@\§üø1ti 6”¸sQKzÄ’ïÛý8®³oß¾víÚ½õÖ[sæÌ D7‰îÝ»;vìÃ?lÒ¤Iš4i<¨P( …B¡Ht$yº_µjÕr‚—ó=zݯ_¿¾$†7ÃãÓ¦M ³—10ö"y{{>¼Q£FXN¼hÑ"ˆx´ f¦lƒ úõë‡bB÷»víºtéR¨3tܾT»yóæ_|ñEÙ²eëÕ«·sçNÊÖ´iSB“cDD:#íСCD–‹îùå—ëÖ­ƒˆ›" Ýïß¿ÿÔ©SE“‹/Ž9òÂ… ÐqQOÚ´iÓ±cGJ÷ðáà *\¹rZŸ"E SL 8à$ñA…Ô tŸ3f323Ã8A/àQ€ÚÅÔË–-{ýõ×1>ìŸÒ„lذ!þüúF_¡P( …âå"ÉÓ}è&]ø+D³fÍšðÚîÝ»ÃïI¹fÍšQ£F-Z]°`A³'š9s=àÇòZýúõëwîÜÉ”)Sîܹ¹ºk×®‰' ÕöíÛáå’u·nÝ–,YÂïàÁƒ³eË&'CCC‰V¬X±qãÆbÅŠu¦wïÞ$˘1£ÑüÖ­[óæÍÃÄÁÁÁ–‹î! ?‚Kcè¾Ì-F7TÅXEŠI“& E Ø œ¸ãÁ  t¿oß¾û÷ïçÒ{g=­i._¾,ß°‰d¹Îž=K­Mä¼,àã±çXbL*²V­Z8ÇÞ½{OŸ>=hÐ Ì2gÎÌHL"["( …B¡P(^’݇ªBO!âsçÎ…‘¿óÎ;ãÇO›6-´ZܰaÃk×®õëׯQ£FðÎÀÀÀ:u†jTD9ˆòÁƒ/^,Ã÷Ç7a„–-[vîÜY^{£´ŒÝß½{wÕªUE+‰… RòöíÛl†0cÏž=Ü>f̈¾ "jݺõúõëGŽI¾Fs‚éÓ§Ïž=»GdqáÂ…¶mÛž:uŠRp  ¸‹Èáý÷߇î-P=Ä0'Ož„Ê—,Y9OŸ>õõõ¥ÔÄ$ü°ÑÿöíÛ$ã—, .l2Eä`Š&œþþýûµk×þþûïýüüdì><™ªäÒ¥KØ„J”ÉáááÛ¶m{õÕWe%Ó„ T( …B¡P$.’Ý—©º«V­êÛ·oDD„åZf§lÙ²›7oæ–åË—8 HˇC }ZµjÅ]Øî{àÀ;wîPH“#ÅDZÿþý›6mŠæõêÕ#,Û!d<1 Úrý-Zé‡@W®\ùرc¢›å¢DÓ³gOB±)º]¼x‘€AÌb¹gßþÓJJ$,kÀ!sïÞ½o½õ–l2зû2èÛo¿­[·.'‹+¶fͬ¡Kñ( …B¡Püôè>§J•jëÖ­ãÆãX¶Ê‚îÏ›7OVÙ?~üŽ;8îêBdd$ùmß¾=$$Ä.gìØ±Ð\ÿ)R$o¹ÇâËÚ‘°üÉ“'Ë¢õ²¼L÷îÝ/^<|øp¨6¡)IV³fMb ’‰(ô¡Àpî9sæPl“cãÆÑ;Ê+öÎ;C¸IL)È¥FZ,[¶ÌrͲ%f€Fs’»Ž=š:ujÊÂyѤ_¿~\å¤l³Å%lH¦DçÏŸ7U‚p„“#Êþ\>$N tŸâ¼öÚk²ÝX‚†Ú›ý¶®^½Ú®]»#GŽ>t•(QBä$ttB¡P( …"Ñ‘ôè¾lX 7 “õdÈÚš&MÑ€òÀz9Fc¨°(M²ÇÛÙ'|]Þ@ Ð  ×'w®B߉dÚ®¼ÌîÒ¥ ,Ÿˆ¢G„§QÍÅLòš\$ Ó, æ²y–¤DÿHÈU¹Š4tà.òŽYdû^ù.!s‹ec]ŠCy)ÙrËhŽXû~)7¢¤””4H{òä‰S6¾µJ÷eÔßµkOæÌ™×­[—+W. Œ …B¡P(Š—…¤G÷Ñf,ÃZ̪2¢¢Py©,üUÞ@˶P–}š?E‚áèfŠÜh/¿¬m?`À€7òÛ©S§ÀÀ@Y±G‚#Ù„võìf’ó&¥Ñ ò’o MA$#{AäØè'S9i¹c»†vɦڞïFURÞºu‹zåøöíÛ½zõ"~˜>}z©R¥ ýD) ˜•þ …B¡P(/Iîs‰Œå]øŸöòXFó6lÑ¢Eaaa²?n×®]áý²–¥åWN ¦²\ѳgÏ;vPjŒÊAPPP–,YÖ¬YS @‰.ôí¾B¡P( ÅË…Òýø!Ãx88pà§Ÿ~*¯·aÿݺuãŒù˜ð7YtRv4£ÔÝ»w‡îˇË=È*00pݺuyóæ•êSº¯P( …Bñr¡t?~F&ï­ù…ÚIiºGU…}(ÑÍ›7©53èß òÉš5«¯¯¯ +ú;ØD¡P( …⯠¥ûAH­¼Â—rʱ™!ð7áµfâ0{™0`fÈ ~Ì —­²Bñ 8-§ƒìty¦Ã툉výáûžÍ¿®¯UgŒÃuæ%ë«x.œR]±Õê´bb»(×)/ËÛáüù‚üßrÄÄ&uü-:j…B¡ˆ¥û …âï§‹zñ\ž_/gŒ—3ÒŠáÐÛ²|,/GìyH¡í匲¬”J÷ÿâpš–#Úõ—‹Ö[>Ð}‡Ó–Né¾B¡øCé¾B¡ønÊõvßM ]ô>ÚõëËÿ]i,+Ê{=åÏïŽUüüÔqÞ/Î8OÇÏŸ´6 ÅßJ÷ Åß±tßúù=ÿÏÿY±40Æû\ðçÓ%ˆqDÇþÀî®øÌrש·‹â{ÙjØ©µ©P(þ¾Pº¯xAÈ´]³©åöÙw,Æì—øˆˆ¸~ýº}›ooo*=EŠ&ñs`²÷0rDùóÏ_"ɾI‚ýLœ}!L²ßï·fÒˆ=wsU²0SÌÿ²ËFÙ­df}È%{qÌ<™D™!㌱¢½b¢¬hg쀇Žã"‹q%Úíe9¼-o/þrX)_C¤\ºtÉL òõõÍ™3§— ¶*6È„ieöÍI¤ÖŒËIןP3S€3¯ ÅßJ÷/ìO-†…… ‘çqªT©òçÏŸ&MY½Ô<õ…PË;wîìÝ»÷ýû÷œ€€€={ö”(QÂò`=räÙq×Ì—/ß¹sçpŒàà`Nþq¥þ-­L°ÁïÓ§OOŸ> iCÏÌ™3£¾ ƒ)T¨•Hä[­ëêÕ«ÃòæÍköM³\-öÊ•+Ø™?³dÉ’;wîß]ÊćٜA‚Cʂ‘‘‘œDaÎܸqƒš J´u]cgtFÿ+æ¿/Þ»ôï˜0}'\Лÿ,GL¤ãˆIaù¤Œò)¡`ïW¬”>>ÝÇyÞxã Œ#~U @Z •ørY©<*.^¼HonBV* RŽoÓê-[œ™P7‹Ož˜çôéÓµjÕ À!²dÉbäp‰g¹Tw¼”¯‚^¼x±Y³fwîÜ q;îuóæM~qˆ‘]øŸó)ƒV±wïÞ¾}û>zôˆ€‡â@ú1j7nÜxíÚµ(ïíÂïÏQyРA×®]ÃàÕ«Wǰœ¤uP ½zõ¢u¡ØèÑ£»víúûsü# ”îÊ•+л={ödË– ^‹=ïß¿ïÞ=.-\¸°uëÖV¢íZM¬øÓõðk3¶Î:ð¿ŠöÎôÏŒiSDÅ8£¼c,ogxÔOÿýøß‘¡‘3ºL+“ýu?Ç?þüѳAïè,W—ÁUäp Dÿ[·nq/7b½ìÙ³›v/ç3#³‰…Ðe |“t S§N…ô/^¼¸]»vò‰”˜ÒÉŸCÚ(/µF2”Ì›7/ŸÅÿˆñ ¿üãù+G<þñ_óZŽÍÿJ±§>>+ÒÇŠ÷ ÿhÃ̯Ξ˜Ömb¥Le^ñæÁÍÄ‘¤8xÞE·†z’‹q&Mš4Æ Íü ÿ¸óÒ­ÅÙ°&S¥JLJ „‡˜îN>p᥸•’#G .cЙœ”ù0¦SÆUnܸ!oÇI ŽM3h>Þ¾T2ýî»ïêÔ©S¼xñÕ«W‹ð 2á5jÔ ¯G>‘2¼ ýñ(š­’[ÈZ¢ô89’xÔ¨Q'Nìß¿ÿ”)SÄDØðÈ‘#t) 7+\¸0ÍŠòÒÄZ‰üŠq¦ŽŽp8žZÎÿ8³)ä?'¾š-8¤Å,¿ˆ4ORÿw´ÃÛÇJ±xû¼ÝßljY³q»·:¿âH'Š¡*QĻᄏ}ûv¥û …"ÙCé¾âý¡È%J”€óíÞ½›‡º>QÕ…aÆÉtCXÚ¼yóŠ)b¹'%ÿªËIÁIòäIt#œ€¤VªT ¾‚¶ëÖ­›6mZݺu'Ož,„“˜îÂ… ƒ¦p¦}ûöȇ»sK“&MfÍšõ|;˜9ÊË–-ëÔ©“°mr\ºt)ÑÂThfœœ4iñ „èïÛ·oüøñr/W9.[¶,mPAå,X€þbøT’ì°Õ gå.LñIСC.Å6cˆýÐ{z8ýÑL¾„)îÝ»wøðá}ûö%f1QX~ÅŠhH¾hBvó<~ü¸Tä$q™0P_dêôrDÞ¸ÖvùàÐß_ÚvRÀ×®†=ô‰ŽÌâ˜"eÊw,=zù»Íz¾™¾$µ/݇éâ3tˆ–«Q`ÌÙ³gãQ0o±¬ ±3õN8Šõ¨tû|V¬ ‹…ÙËM‰‰n”0oãÆbsçÎ5lØŠ†oÙ²M¸r‰víÚ…ûÉÇ1š ‹CúExûR3æªbÅŠ4«O>ùDn¡P(€'â¢'ŒVø°4vbþ>úˆ°ß¶\. £ ý|’ÚM>XáâÒ4mFÔ÷ßO«ÄnDð½÷Þ˘1cP`#ÒŠJãðŽŠ¶öÝØ3tÍ€yŠÏm¶ØñÔñÃO?¤óÍä›~×kvøÏºo×iXªI*‡Ÿ·ø[—.]0]=X¼n£P(IJ÷/Žk×®ñàO—.ÝgŸ}·ÃcÚÕþüóÏßxã q xö‘#G ’°óbºjÕª¼yózž£Ðý-Z8p€\fΜ)„±ò%'7gîܹÿ8xðà믿ίåòà£G¶mÛöâÅ‹E‹E7HÉùóçñN¨E$€òE¶lÙ`ºwïÞ­\¹2Jâ™ÖoS"y³KÙÏœ9ÓªU+<:µpáB˜+|E^ë¦J•ŠòÊ'‚o¿ý¶iӦ¤%\AÚ*Ñzôè1qâÄxM!1M¨[·n!vB[Øl˜ÐU‘O+7n<‰”Ë—/‡O§tA$È8(.Á5ëÕ«'¥[½z5V…`¡Š™÷ýüBñ±9£Fš?>ÚR4x¶iíü¶k׎èÂŒÎz>ÄtìØúˆbC‡Ey)*ƒ‘èzä½x³fͨ`ÏÈ—éJè¿Ð688¦¯/Å.¨ït¦pFÝýñz»ƒïFÞ×°{Pš¬Ë÷m¾}å‡Q­‡ÉZ4,2ü_‘ÿ“9Õ?ÓD¥öJá/Ý'J$šÅ‘°@v ³˜38<Á—à”™˜‘¸÷vn¦¢’Œ»0/žiÙFÂüÝQÛ·o‡=BHgˆûµiÓÒÏ-œ$_NâWÕªUCI¼‘ꦥHMaO"mã¼'¯·…%Ó]UÒ¬6mÚ$½4…Z³fM¿~ýÊ•+G³BøÙ³gihœ'"ú%1A¸T%•EÃù Sí‚>Tw»Ž9’V`&ì¼wïT¯^½h§„”-š·H›.mÿ˜¨˜Þ)vý°½ßêžE •ü ú˜ë¡?,þÏy½köª\ëIäÇQRdHèM¼Žâ¯]»¶OŸ>Ôoñ …"ICé¾â!cyK•*ÅSœÇ¼ G‘Eî TëŽ;Ê”)#³xñƒï¾û.Bl¡ä×Çع'3t „s\¿~½eË–ø ‚ÿÁo,X S8O…ÖÃæ!£B÷-×€]h7æË—oß¾}PÕS§N5nÜøáÇܸråÊC‡ñà‡æÖ¬YsêÔ©râ ˆ;¡‰Ÿ³"* ãG½¯¿þºwïÞW¯^Å,’¾N:cÇŽÅÉE7xÆ®]»àj5r¹b4l2cÆ š9rî¯ñåwéÒ¥;w®Q£FëÖ­¡\]|ðÀ¤I“¾üòKxØ„ † BsâôÒ/BPoðàÁ‡&G„HXBㄨÑ©2t“ÉЋ/†ц± Úb1n\±b·@˜ä?Ò¶nÝJv›7o.Q¢„ *žÃäÑ߸q£¿¿?öC½ÿþû”H^ö[®—è5ºyó&‘òå}?‘ :üñǨ'Äc7ËùÔíë´Bÿ}«ÝŠAþû|!ßW,GÊË?†¦ŠJ9µÝ´r9Ê¥´RÄX1ÞÐñh/‡wŠxé>ì󫯾ÂÔì´iÓŠ/N[À†o¸)±hHHHõêÕÑc¬Êïƒ(µ|Ü ½¡;ᓯ¾úªÌÉÏy»OÙå«BŽ9`öfÜ2€4úR™è‚{äÏŸôèÑ$“ɵèF¦H^¿~}‘"EûZ>~y½‹=rüWXø‰Æ½—¯5îxšÒùT¨ÏÏÙñK€G¡<9ÆSÇ …B‘Ä¡t_ñ‚Àþp/ˆWPPŒ˜·\ŽÑÀÈwîÜ Ý7KCžá.3füì³Ïì‹ç$¨yÆ[.÷"À0œ9áL¯¿þ:D0oÞ¼B4CCC+W®ŒGAG„Œ‚cÇŽ¡i¸J„Ë‘†Û¡ï¼óκuëÚ¶mûöÛosá>~ü8W (sBÎsó¸˜ÇÏl ÎG.0~ì oÇ‘s9r¤LBåjóæÍH.rWXXDò 톹z2Úrµ^è~×®]4hùF`ß¾} °óìÙ³ás .D,–7n6¡­‡9œ¡éQƒ¤‡úÈK_”ùôÓOçÌ™#ãËI™ã$-¹víÚR¡q_=FŒ@±0!¶-W®œ'ÃÁÍPr2B“AƒQYò'9»wïN\A׃VÄ3°^Ê q”Yh‹‘¹ –‰ÂÐÍøg XÎgt*§uÿÇÛÐýsOÎæOñèþͨG^áŽÎsÊe+Ÿ*ÊÛËáÞ–ÉŠ¦®Œñ£a®\¹ð%:1úGh÷÷ßOàE2A…”}YƒHq q‡çU-ZÔîc„£Ü ¡‡%?»27>O»ãª¸ŸÌcÁøxÒ²eˆUáд8???Bk‰1h tÁ\ÂÎåË—_µj•|¢‰Çt.—»rå -ˆÚ¡ #€Qغuëâ0"GŠpúôi RöìÙ“øp3tæ‘€rl0Ð 5hÑÐý1cÆXîn!ÎCEÌEßrëÖ­E‹­[·>c¦ìÿ_¡Ìk×ï׳Ϯ¶ôû´?t?·ãÕ'Þ¡a?Þ_wLƒBÍ,/ÇS¯¨Q¾^²O²<“h88°Ò}…B‘ì¡t_ñ‚·ìžÜ2˜GƯÃÀd0Ï_|!ƒy¤¦ ûU«V…sÈZ™Æ]T‰òv_˜ôãÇåÞóçÏÃ>ïß¿_¶lY(/úX." ëºo¹½óĉð›üùóùå—iÓ¦½ví,ŸKzNr/¼¼N:›7o&ñÑ£G«U«FlÀU™ø[.gÈ7´Oæ°âââÃÈ á¸S§N“&M’@¥fÍš%K–„¥¥I“†‚ˆ«O™2eèС#é¾`Ù²eD7^³fL_†—Ãï¡Mýû÷GÔÔ©S @ÖpP!‹áˆåå9 êÃ?„Ò&çλaƇÊ,R)W¸ ›6m‚j‹ ¬¤D&9Üû+É Zˆæ[o½å Ý—·ûÜ‹ÎdAO!“ž,XŸ£™C—ëÕ«‡bï¾ûîÉ“'þæ›oÊLbaªžX;7iÒ$~»¹óüWø èþíˆÛcêwMŸ&ÛʽŸÜùáæÖ£Kg+íå»õ.?^ù¦¼u¦-¼÷Þ{è¹eË–"EŠ\ºt©eË–]âêZ<äìÙ³ØÛB”¥”ŽŸ¡{¥]<Û»Qè¾y»Ý—…ç-·¿ ÝÏš5+7Zî©´/^Ä¥ñmN'Ð °'Íh4IƯÌÓ%àüä“Od\¼Å´\t•hk´iø Þ‹&¦Ó–‰´÷âÅ‹ˆÒ$í{,H;ÝçªÄŠïÑ£G[Ϭí#yá$úè£ñãÇ÷ìÙsÆŒžŒ¬,_¾œ@–iÃÛ¶m[¹r%'3f̈(H3DàÀóçÏ'–¨^½:1· ¡qÒ ƒƒƒ©šY³f¡$µ}ûö–;¾‚ÌÁ§©PâÑ áòÅ€ÐBH$ç%^"”*S¦Ìsš°½2ªoß¾‡ÝšSè>Ê RóæÍ©¾7R 3»”"Ìà ØÖºo¹§êþ×ÓëmþÏ {ÿº¬Ý¤‚Å»ãˆzš9mîT–_j„ÄDÓ‡Ey{y{°ê¾t|xïØ±cΜ9±á„ ¨h"´õóó‹v¡E‹TIÏ×nhöBÈ¥gé>þüìØ}ËM÷9³—ŒÊ:|ø06ô÷÷—ñuðòFÁ’É‘¶ ÄåH|÷î]œ&,úã³[¬óË`ÅÌ™3ÍÔ bHüM&×Jbèâ);±¨åŽ4œî]x¿\ä áD´Q£FA÷ŸíÛåùÝÉ')ü³I£&ÿ™Á/£oŠ”ÿ ˆØ{sÏÐÕ®©ºÍ[‘Ñ?üëJ¶äNï•.Ú':Òë§TQ©­/C÷É®[·.t_¾'( E2†Ò}Å‹ãܹso½õ{HŒ¼ „ÝBÝ :sçέU«DG\'£Êy¸’˜§lúôé¹zôõõMÐØ}*]¦ž={â.S!L… .)R?³Ó}xÏÞ½{åÍ"ä©wïÞçÏŸ/X° áì!D&´Í›7—,YÊ[­Zµê¦M›p0è~åÊ•  [(,o”Ë墢¢ä ¡,GÖ%„;v,Ê´jÕ æj¹Xò¡¶Ð&HÎÏÉ%K–pL2ø"7zòvŸ4d„ÌAƒaH•ð§Û·oÃ8 ?¨lF] ‘Oüi„b 8",ªqãÆ„0{ˆ5Ù³g—& ç®{÷îQÌ•"E Z+aüŒ_È•(_ 8CJl[±bEOªUÆd£*Ž‘óäÉñª]»6ç/^L؃;¡s³fÍÐäÌ™3Ô2YC4©,Y/hÚ´i˜Ntkذaüóƒ0y˜fø•ð Ý–{ôï°…m&x¥˜Óáåç“ÂË;µ#Æá;ä'Êéð‰ôòòd“-ñ.~‰~!¸ônD)„CÔÎÖ­[‹-j^l¿ñÆxïÇ Ö1ú7nÜ6lñ$Å¡]¼ù曲{ƒHþî»ï08þŒJ“áÚ”ØVè>#­O"Øp¯^½¾ÿþ{ˆ>Ò å^b·:uê >\’‰•p~ꎂ¿y¸‡NN-Ô¬Yý×®]+”]&R›B¢bŠyéÒ%”/[¶,Nh¹!¨-+¥z=³G2·PƒÄu=zôÀ!e<žD¸¡ÔÉ“'ñIl{ëÖ-›˜=y………!^Ž4ÂYÕþþýû°‹/Bîå^gÃ/ÑöU…É6®o¿ý6Tõ‹/¾€”ã„-Z´€S=zîŽÂ-ˆ+Ðö·ÞîËøJ„[üe—ÿàÁ R¯^=H?%¾…)ˆ…8/( G—1ÐJá‰ccjØ$a, X @H˜L $nA¨$FÈ’%ˈ#dJF3ÛI ºsç SÀ¶mÛ’rÒ¤IðK +á,µ„ÝГ!¿|ùò“'OF$›[¨\¤ÁòᚃCÖK—.íÉ cñè>·“>wîÜdJŽ•&L˜Ó•؆:"˜Á¼bÉ». ?lÔ¨‘GtßùôFøõÛfø¿£}£2ÿ3Ã+¾¯üóÇö¯×/W†¼©ÿ°"^Þ§—3Êícy{¾ÍØW_}Õµk×T©RᓲúªLÅ!„Á› ¤®…&eƒŒP¢D B—B… 5mÚT¶NÃØø Ï‘[2fÌH؆•() o§öeùQëÉF&—FDO]®\9œŸz·÷ÑØ“\¨¬-[¶xò)UáÇ'Nœ@¾,‚õ'ž” œ”Nÿܹs}úôÁ=?h餔FG ý[ïѱ-Ú½cÇZ%%ñ™bR""\SÏš5‹òÊÒ™T3Òr¦pþËùïã7NÎþÏÃ.¦NŸ*ý?Óg {¥r‰ªJ7û‡3—åå´œ&#)éÞ½{qWä¬^½šÈÁÃ*V(Š$ ¥ûŠöïСÃéÓ§yÒ›3Ôà¨Q£x|B¡)ft2)-›—p•ÄóçÏ÷d­tùP'ƇZ·n 7…âEöìÙá…P%³”‡åúøÁ}ôè¢ œéý÷ß7n|Â4dȈ„ØrFX¾|9ýôSÙ ÉT)93qâDyÅ»páÂR¥Jy2v_(þúk8â÷ßàÀ¹ }ÇŒ2C³lEÑ}ȸ<ðøñãk\ }ü J:­è˜ÈÛ?Ý™±qÖ=½aý„RXÞ¯D¥íѰgþ,RƤòqÆk§WL´#ÚÛòIЮº×¯_§Ppú4b"[1ˆ´‚S§NÉ"<2n^¦Rž”ønCÕ¶5oÞœ’ÊüoûD ˵U¶ÅÛåÍ7Á*Íײ#^¥ê¡òøÒ¨8ùìiÆ¥ísÊILS%SZ«‡ƒyðXü/’q;üÜÊ%Ú™üâ;[Ll`áxúÕ…Ckw­ûÑ÷ÇŸ|~бb^ù1eõR5•kæëLååŒÝ<ÁépZ?>ŠýwãÆt •*UÚµk—'‹Æ* E’†Ò}Å ÂWS 2ë”óÂf,w= p¸Vû–@È€=k“ɰs r„ŠXÙÖìÆ*çÍ]–›1˽¢›I`8–¬çcvѲž™Ah .DGÔzgÞ#ÆÉTÚ†áÓb@ÎÀ¤GŽ ‰AI7Ìr%’£(i8t\DÙ•‰3EÒns,E¸áˆ†½I¾²—°9o " Ø”|~m ñ•¬‡p»i£¶y‹,7r,³ˆp6lèÙúñΧ^‘?Y‘V4ÐÇ⯠fïíc¥LiùZ±*IJÃG´WBÞîÿSŦ7´lERßsºæÎÊzÙ W¼ÑN—L¹Wä8Ü“wî&/ãx&½FbÜ<›zŒÏn1R8•ÝÛí$CÚÄR.¡ærÕìÐü,¤BW¯^M<ðÆo7›RXîxOò2úÄV7vÄ81O­¨ËùÔŠŒ&°^V U™2Ú×G–Þtp6:VŒ3VNhh(QÓœ9s:vìH^º«®B¡HöPº¯ø½Š0cá¾BS,7?6tPÎÛùeBó²~ùì·Y3zØé^–^8“ñ ±Údx‰ât¯±# ³/ó[°'0Ų‘-£¼½,@öZ¹rå²e˪W¯>sæL³@çoÁìɧ-[#z6k»Ic_S%NÑLé$Yœ’Ú£»é<©YÃGM.öZ°Ücr7EÏŸ?ÿøñc̵iÓ¦ñãÇ÷ë×OÖ»|>œ1VŒ—3ÊåíðŠ]lÓ颀^ÑQŽHoËÇÛ ¿÷н/׬¿÷µGq bÙ*E<ÄÖ/ØAY¿ŒMâœ4€=°·ˆ8‘ž]Ûçô·ö”ö?ím9N5Ù³3wÙ{ƒgaBˆÉ“'Ãø{õê5cÆ “XLÄ/ ̇wû5ŽCô›³kýÔØ¡;^ÎØÿE‘£+^ƒþ[ÄT–3:¶¤2-¸~ýú6lpx°ç€B¡P$u(ÝW(^&ˆŽÖ¯_ßµk×ÈÈH!ßmÚ´Y¼xñËÖë/ ùæÐ£GèývË–-ÛîÝ» .ìÁ½®×õÎ_üçôqÂø½,×G §;‹=ÒæÏ€|¡?'è;wn³fÍÞ<ûîçúç$BsXãÈcÈNà]Û'8¹»•Bl\ºmÛ6âÃ*UªŒ7Îúå’  …B‘,¡t_¡x™ îܹóÃ?4£5êÖ­û[CœØ ÆF·"ï’Ó¦M»dÉæÐKÅ÷Žñã&‚®^äç¾D{”—3ˆ+""‚¸—ƒ.ÄçÏO‡ež>îR•±ßiÜ ³†gxüøúúÊ@J÷ E²‡Ò}…â¥Á¬D‰ÿË`hY_RVçTü¤s —ñýB1Z¼«ÆÎÖ´"cçnÆx[®¡:ÐþH‡åã´¼n‚èpH©ÌŸ3âÈ>ôÿ9Û\ü/œæ_§åˆvýãŠÝ\ó­~áïð’Z®/;26Ϭj†) E2†Ò}…âeÂŒž·OPþá9ìýŽ©£cù¼Ó[nˆ†ÿñ‡Ó¡tÿ%ÂLl°;¿GÝ»óßâ»È½Óµæ¦CÆeÉú›ט~×ÿë*’—çóL …"ICé¾B¡P( …B‘l¡t_¡P( …B¡H¶Pº¯P( …B¡P$[(ÝWü°ïâ)Kò?zôŸ3[Ì&tºÌg•E¸CCC9ããダ€õœ­| ì‹Ó[îeÂÑíþýû~~~iÒ¤±¯Ôaß3‹dá.pŒ¯ÆhÖ8ç÷áÇR:¢ì $ɏВ´³8ºÉˆ¬ýýýÿÇ6k´GDDHÖüI#¢é™ýÅ<© §"[h¹´dšdÚ´iãìâdvX“6ݰ†½±~¹Äþ“'OH/+! õÌ.iÒ¡@v¤Š£v“÷ËnÏ.iO…FFFúúú¢€ì¯,Wk£å80„……=}ú”óØ ×5Œ ™•j0¥&ke.{Q[6ó¢˜}á|¤qÙw¥0› ‡ôf/SkV½±r(‚ˆE%Š`¹'Ÿ˜–¯Yâìð£ f÷½T©RQ­v›Èœl:ÚWã¬Ê/ pLq9±'IŒËY¶†,2ñFŠ {’8((H6wÓgŠB¡H–Pº¯ø!Ob|E¶Û¼råÊ Aƒð¤Å‹gÉ’åÅâ<¸víZ§N„yÏœ93sæÌ–{Üç OE%ñ~a§Nêß¿µjÕBBBìÜWˆ‘N9rdÈ!53fŒ]¦Ù•bž9Pù äÉ“GzXœ–V F¶\ J" õråÊe·‘ߟ\Àzx¯É¢`Á‚óçÏG˃À›»d3,øô×_‡#„øçwÞ?~<5e¸rœíoŸcy ÍpÏž=“'O–`ߦM›Ž9ÒrµS|Cºý3gÎК†Ú°aCËõ2|øpȪMXGBmQKÄ8@CàXÊN^uêÔ¡袜 …"YBé¾â„ ž¸¤²x_¼x1_¾|°:ˆ‹›=_ñ*¨OçÎaÌòvŸ6þP¾|yŽ9<ñ óªû¼}û6âЄ 4ظq£î“ Êû$Æ@2Ìãúõëü9oÞ<{1E&ÊàÙ}ûöE=˜—ðmèT­Zµà²æ ÀÑ£G+W®Ì-<#„K]ºt‚xò"¡@± 6@¡àºÌuÙ²e˜Nˆ¦‡üŒR@˰’åâ—D5÷îÝÃŒ³fͲoPJb€Ï>ûLÞ³bj ©;vlŸJ}\¾|¹dÁ™€€L‰‡â›7Ó*T8~ü¸0cÓÝp@èÕ»woO(¦çMè¨k x÷î]¡(œ7oÞÙ³g—*U £™M^Ÿ/J⇠.P¢G?H ÃÉ   ÚÂôéÓ_{í5¤ Ù*OŒA°qãÆ Sj~Ó§O¿uëÖüùóÓ”0DöË/¿”Ï R5TªT‰¶3gN }%ÒØµk¦#¾zõjj€œ;w¦K—Îò€î“6Ìí=zô ¥`rDaZ_íÚµÉQÔð¤"$RâW"mø4]ö½nݺõœ9s(Ñ¡C‡ øK£Ã¥K—8OK‘¯f[®Fep9š³ \"=¥û裈ÏÑSÊHCÀyìáR;áááH£F"Šf«P(É J÷ „» 0‚Keáj0ˆÈÞ½{ù•` AtÊ9èØ±#çiÓ¦Y.Âtúôi€‚ N˜0¡téÒñ>°…i¡&Á/Î ¾|ùrݺu!²q¸/ça“enä—?;uê´páB“@Æq \¤I“&Äï¼óüž6CICBB^}õU8ìJœöðáÃUªT)P ÀŠ+dÄ‚h…ÿ<Çù_7oÞD ˆj.ÅŸ?þÚµká”P+xd¼BŒÝˆI¶mÛ&ïJ¡Â” ¶l¬‘KÇ?pà€p2€ :”{í¥›€R£[æÌ™ $.X°æJˆ‚M¨eºˆêÕ«9rDÎÛ»(ìT(¯fîE!鶈KñœmôèÑY³få$j´oߦHÜòÞ{ïÙ‡â|øÉøýu!»“ò»ï¾ƒ¡’K¡B…¸„Ýð!¸Ù²e“±(ÔQ4;lØ0);})ÇçÎ+Y²äºuë2dÈ ßh2uêÔ¡í¨#Ír‚#BöÐnÈ=ãϤZµjƒ–ÖÍÂ-‚F84ò%Zódl˜˜åÌ™3ø$¾Á½-[¶DO¹„a¥-`œ!C† < óÌ8þüܹsqSMºó˜¡‘bì†IîK–,პô Dâl¤œ2eJ¹råˆ$Å9‰µ>ýôS+„¬7öÀG …"‰!IÒ}???ˆG 9e̘.ŃÁl›ÂŸ<¤=‘¬øsÀ£®qùüóÏa-VÂG_À¶+V¬xñâÅo¿ýº,'!Ù<é!Rp—Ï>û Zæ¹@ãµSHL½zõxð?G+üÒu€tÆ"ð@½,Y²|ñÅ!"p6a LÒõÕWäU¤H¤A_`Q¸1žÓŠ´DQ@°ñÁ&-Z´æDÓ%ÓO>ù¤ÿþ÷ïß_¾|ùû￟кº†dh}Ïž=…îÿª’Á‰7H K6iÄn\­Y³&Äš@ -/é1$rüøñ‹/nÛ¶-É`r5jÔøúë¯wíÚ…mCCCE̘={vûøõßéFp3Ü[íÛ·/Ož<2¤>""J½jÕ*zÀ;wV¨P!ÞqPòº݈EQr÷îÝttò‚Œè"ß}÷]bN<°D‰xáÒ¥Ká¸ÅŠã$òÑÁ>Ĉ4t©èöøñcœŠ»¤ì„¬Ô)FF>:cNRÑÄuP|BÐ;vÄ©>³ð¼'ì_%LM:5=-ñ¡ØœÁ‹Nœ8|ZŸÈñp>6\¿~='\Ÿ{¡ø”O¢’ÝUqËÛo¿#ÑÍ\©j„  Ïœ9³T©R~Ÿ={–‚ïÙ³/%J±×”ùTÅ1Ê0@"IÚH¼š+ E’C’¤û\Z±bÏyÝÈoùòåGŒQ«V-ùàΙiÓ¦õíÛWbþ¥ðÑ}y g‚.@`9ž L,º/nyìØ1˜+þa™ڪU«?ü0wîÜ ýâá ìtß(LF 4ؾ}ûêÕ«[¶l™P™¿Ÿî[î/´\8ÌŒ°MƖܼyºbKB÷IY¶lY߸qãàÙ39I(5hÐ *=ä_¥û–Û[èd`½P^Ô¨Zµª'1†u¬$ßFð§{þ1ì_‚.BÄÂ… ˘Ÿ×^{Íßߟð¦yóæx5”?_}õU« ¢÷„¡Â•QlúôéÂ\¯]»ÆId¢_¦Ÿâ`úëÆ7lØÐéšïëççG,a6—õdÔoÑ}.mݺÉtÂÄl ¢ûG¥!  ·iÓÉòÁ!W®\⢦BŸC÷%YSöË—/*Tˆиèjˆ%hYM›6µl_ŸÈýÑ£GçÎ#%nyüøqš–ÄãÕ\¡P(’’ÝçÉÇS0„ž'Ù¥K—¸«E‹<-xðŸÀw׬Yý6lüót +W®äÆeË–ÙßîC41šÌ{F7nȈ,¢}ºO&{‚ßz»/ÞBg…&ÔòæÍ›k×®í¡¡dÜ¿¼± ŠßµkW¸þ›o¾)sp!¸4“%JàÞ;w&æ¡«EH† ¨» *Pvì#3\¡ì\#Sœ…ñ"ys/tŸ~";dÈLĽDsæÌ!|rºg»¾ØÛ}±]‰Ï;G8 ·“ Žœ„Ôâº0~ȼ9Ñ6Ý·ÜMŒ²@zh8Í›7Oh¦¿Ÿî ýæ Û[¾|9õ+@‰”8À f0q~=.\¸0nÜ8xªå²äŒ3>þøã»wï~òÉ' 4øCóĸ—Œ$ßwÞyçèÑ£;wî$8ñDšé‰è!Ç2u®%-X° ¤Ç= û²©Œ†ˆˆîqþüùø?*a|ZîJGlÉ8‰ÿ¿•+WN:@LZ²dÉÛ·oûùù.\±ô¿w¢&|¸xñâÄ–žLÔ~ÝÇï½÷¶¢õyN÷‰ÒOžAôàÁƒêÕ«ÃÃŽ;ËJM.°œªU«âH–@B`ÖŽ4gžu-¡qp/¨ôWÖœ1º™ñÁ"gëÖ­p,H9,Ó°·÷’Þ÷êCD¡?æ$Ä”_h}³fÍV®\)·ÈØë)RÈŒsËE}&Nœ8a„:@éîO™2eÈ!°„[î0ùE«Í›7›7èÆDöµetœ¦dL Ý1bô ƒ˜eRŒe #„oMŸ>RelãÞy€» ª£G¦úäô®¶jÕ*è>M[’ÑKÈâ˜NH^xx82çÎK­5lØ0±ìFu êòåË2V­d¡ѺƒõÑíÞ½›ƒ8”T|&ÎðibvJЇ\¿~}РA”…†0mÚ4¸¾Ynˆ¦H‘"þþþµk×&ž¡»#ìéÞ½;9Ò=R_$†ž@r´hÑbêÔ©1®õã±UüÝwßÑ4¶mÛ&“zụJ•¢Ï%ý¤I“$"%ð“½$3Äýù@ùÓ§OS/èsèÐ!™Û-%Ú¾}{ݺu 0”©q)Ž1ˆ×3‹ñ“9”‘óØ™JäA@䉒Äo:uš3g޽ñ:\KÜíàr4@Óâ$ÁÚµk¹{RL}4Ïy'*K‰/]ºtüøñBòèôƒƒƒ YyŽÅŸ3IQþ”·ûÔòþýû…î{2hظK5 ÐnD!YÖy”±ûAAA{÷ÝjHÿ³«šIûöí#hРÁúõëí>cç¯zDH]´h‘Y%ÝL»”e¶¥¼º†I3*‡sËâƒ1îÕÐíLhòäÉLJÕÁ{=F… 8&5Äò^îý†(/–\¾|¹å˜‚8Ýðrïue7‹@H<ôKÔ–r‰Ñ$½H#Ø k Ý7—_3ýî–{±Õ¼yóüüü.\X³fMá÷f(Ë=þ„?{õêEJè>õ’(#1Ì×hwµjÕ8À>o½õýT4• =…jC÷ _ŸÝ”-¯5»\I¨°k×®ÁƒÃAK”(1kÖ,œVvÎ2[oÑ¢E‹+¶eË–Œ3J1 •¡Ôx;m'_¾|è€ÿóçÁƒé?…¼’ÅñãÇ Gðç9rpžùÍ7ßÌŸ?ÿ† dáW’qÉèl!èäîÉr¢b2~ÿÚk¯IëæOôÄ‘0Ñ_|!îpo]g|gfW Ú±džþøcÙ¯•ðyˆ—ÌGG…“Ap!”bþüù‰N÷!ÍcÇŽ}ôèòaKÂ,ï߿ߢE‹Ë—/ÃÔeI“þñãÇwîÜá :H?ûºÚ¼˜7QЬ’n¼˜B¬Í1t; 6ŒÖjÞÈš±1¶ M EO8®GDòÔÓ5½xe|}}Í‹púr‡Ï­[·®Y³f‰b+3h‡êƒIæÍ›—p¢`Á‚²†{ÿý÷‰<é¿Ê—/oÌÂÕ›7oâôŒÄœö N×¾H&0`€ì‡…A *ät/O$•Âï•+WpE:±¥K—Âûe+¨Ï?ÿ¼}ûöŠh!88˜Þ³bÅŠt¬„Y²dÊËŸÐw"7‰{éKNOM›.]:‚"yßO·É]­[·¦\4œ 2xâoˆ¢‹¦à§NjÞ¼ù’%Kä.¤a‡Ñ£G7lØpÁ‚§ ϤȔ…?e,MœDˆB[§k³¶"EŠPö{÷îQõÄœ§øÒ¾Ìã€ôî.‹ÉOx ¾ÍU“qÿ$À— ûŸ~ú)«ÿþ–˱ïÞ½‹me†~¼ˆ^ `(ÝW(ÉIîË`$BG:ÄÃ>Ožzô(,4åÊ•#2tº–%±sÈÙp:EÜ÷åFh¼‰Ç…ðOÈ1‰áD•0¢J]§™)#o¹(,)¡ª~ ‡€p¯=|ø0$§•á@dVË–-ãOZE9rd¢Ó}šmÒ¤Io¼ñlI',jÅŸ¨G›²JY¼x1íHæòʘŠ8tkÈF¤”ÕÊGEiw†1“ îŽÍ‰ (c×®]ûõëGu@¶dဴe¨Ã¤íرƒø•`ihKgÿ;sæ rd;*!y3gÎ\»v-öç×ÃErâ…Ä`²b=*:Ãûq¸2ª†‡‡4èàÁƒäX«V-’™• Œ`Â3¤Þroá [mÒ¤ þÅJÄ¥2¹VÒ`yû.»Ã"Š˜–”tx»,;CÙ h ð«.]ºÀÚßyç\‹‚˺û4„Û·o—.]-«‘õÎ;[µjU£F B>Rž?¾wïÞPá*UªP)hëÉbPÈ‘i';wæ 4€aCÄGŒç¿ÓµmÍÝ<ˆrq zü ›‹ŒûBµ¶2L޶CŸ©‹€€4ÊNNpH^ÕªUà 'p@œ†#áù´n¤B|øá‡Dõ44ãÕT(Çδ}"óßïB …BñWCÒ£ûòÌØ¼y3>wñØ£7ç¹ -hÚ´)ÏÅÀÀ@ÎŒ=ZViHtæ¤ðæm7Ñï¾û?€üñ'LÒãÙ°aƒ,qè¹@hÁCÛ¶måµ½¼Æ[`Wø“l-díßzë-®V¨Pa×®]âv×BnsïÞ=n ß‚@pc™2e L&å•+W %$£$Ãc!úH«X±"|—™‘"€ô$úò äEcÛA¦ÉZ £Ò´iÓªW¯.Ó:Mb’Á/I¯Z¿~½(i·ÁÌÉrE8p,tÆ&$ UÚW.‡TÁ5É‘vŠ…IƒHïÄPæ tð‹/¾­ ú(CJ"CX)$÷bè²T·™N Ä‘ò¡zÔ]¢ÇödtòäÉ!C†\ºtÉŠ^®Ít!¦°j»;уUªTéæÍ›8!,¶P¡BÆžÒ9Ö©SZɽ3f4Cw˜ºŒ‹÷JðIx)~ÅR´hQ›bÅŠÑ¿I+ $ Y'ˆA ÄŠ ê#™~üøq °pâBç[¶lÙyóæåÈ‘ƒryb7§{’ !Ò ÞeŒÞ¡}Ñúìéq~âZMž7‹THñOŸ>MGÚ2_?±\  .;WÈœ=É”ÖÇc‚º¦¼}ûöÅÁ,×ó‰æFüOóáÀ,Jbž[œ$ Å–‹îËaò§—#A Þ.þ¦P(É Iî#—§Ý¦M›d/Iòà9ÁÆ®Ÿ‡Ÿ¼Eã$Wy&éÛý—á:PÞï¿ÿÞ ”·\.ÂSyÕªUfA¥‰îÛ·úÆI qfÍš5ÎZ{GåÎä~æã‚] 1¼óÚµk–m¬9Y”*UjÍš5„8sõêÕ–-[B÷Í$W9Q^°`aígÏžmÖ¬™¬œH ˆ¬|ì„“”@h ^–ÛÛI WΚèëîK¡ÈnÉ’%2‘‘L¡YpJ¸iêԩ㘅fܸq¤©[·.ÜÑzfãÕ‘#GbOóÊßðo¨\Ḭ́„¯ÓòÅbòDº†É“'·hÑBÞГ 5 û–ûe?5‹é dTº“:âÆBúEˆå×Gv¤%zc—ÐJ*”P[M:588’MGdÙæuà$ö·û²išåz9À˜´§mæ·ÉˆÐwåÊ•EŠ‘?é1ïÞ½‹“ÐÁ€I™)S&Ù@JVÒ”½¨8€éä?[¶lsæÌ)\¸°}MR‘väÈLFÐÑèh2ü3Æk 3ÂMö<–î—“UªTÁ0…Ä0¦ÈNל`¼š@%IcýÒ‹$k~1,¦ëß¿¿4ƒPS–f’Š&B†îK¨/­Cü™J!0cy¢lÙ²6O#’I „‚Ý»w‡ëãK¢’ÌÇ1cö±‡[£G¦îx¤éBœ …"Y"éÑ}Ë5››á^–ëùAJÎÞ¼yÓ ¶æÙ#à/òxæ€':`9)\Y¦\CÐeÖµ‡ˆqo¬†F(&grçÎ-2ío©®õ^p0˵Ò®ej/€|ߺu‹dƹ% Á|ÎðxXÂ;wHf¾ÈËHZ… m7ïM‘&dšdPl`Ÿ`†YK¾†–à´bœDÿ$eâÚ‚Hë w´«æ*SÚmS††Ç‰}|øð¡Œœ6#éå» ¥–{-×Çr´l3k…¨A^ÍkTîº}û6=€™=‰¬aâoLGJš|1 Õ*c`,ŸPHCq(¯¬âÂÉ9rÈûu»³Y®Ø?Ç`™he®šIƦ˜Iæ^þD¬l †’!dôiRY^®ý§äÀ´r$^5Á t”!ûqâ^yÿõ$/Ñ0ƶ鸇.':#Š|%–Å…ÌÄY“2Ú‚4»¬_N›§’z¤9PRŠƒLÿÌ™3‹Ù¥{ça#3Iìöä6íKž7(FM™HÀht¸'ûr‰ â±dº&˜+W.,§B …"Ù éÑ}ºi¨y +’ylòúÐá†ykh=óVRñg¾â¸yâZ¿¬ßQ[óŠÑi[SÏœ±~ÉùœîI–Ë#c~mQafÁPsÕ¾¶¦å~Ak|É3HJûÀw/ÛN÷æ©f\™y×k)k·L N÷ÂAöºÈŸvægJmîu<³È•h_ÆÇÕ˜hŠi7”=~pÚ¦í Ænr‹üi¶©2e1,ó²›1—YdÆhkj3ŽÝ¿œˆlle×Í^ãqŒ,¥3TŒ{©Y»‘å}¶P|{f¬$aƒ]¸Ý>"Áúe;Š7R² ´ëcBb{±·–{ºvœ 2Q `¶åª¸*‘pœÅŽŒo˜[Ìw9c22·ÄiÂEØ•±ËÔç…B¡H–HztŸKd, –'úÓ]¡P( …B¡HNPº¯P( …B¡P$[(ÝW( …B¡P(’-”î+ …B¡P(ÉJ÷ …B¡P(Šd ¥û …B¡P( E²…Ò}…B¡P( …"Ù"IÒýT©R™ífì›S:Ý»ýêê׉zïÞ½ÀÀÀ¬Y³>'ð0Ëiß¿Ÿ[0JŽ9þˆý¿"##¯^½úôéS˽ uîܹ©³DÏ(A0kc£ØåË—e vŽeƒ4ćì‹sÇ+Ð,ßqñâE©qdRÞ|ùòy(ÄŽ¨¨¨K—.ÉžYÆ‘PÉßß?W®\ÏêoV=e;óæÍk_·›ßððð+W®X®=‚‚‚(¦Y_œövýúu‘lVdAJÜébÅ),­îÎ;bÆôéÓgΜù…›‰ñí‡ÊþMVÚ¯¦àø?)9H›6möìÙírhûT¨YsÝܘ1cÆL™2Y¿\‘ýÆô>"“Öd¶ëÒà_¡P(Š_EÒ£û–kËwÈ #ÎFôÂ` q¶ÂIDÈö4ä;uêÔéÓ§wíÚõÃ?4[»?›^ö‹áêŒ3¸…3ãÇoß¾}ânÿIÁ?~Ü AƒsçÎq,›ì¬^½ºbÅŠ‰¾Ïh‚€²Õ¡C‡Ú¶m&q'!š!!!o¿ý¶ìd)5o}ɶ¬øÌÙ³g{ôèÁ1ÆçÞüùóÏœ9³D‰f7+AŒÔ²eKÙ ×îK¥K—Þ´i“ÙC— Y³fe³ÁEÀÎï¾û.NlßW ÏüòË/x÷î]Î7jÔ¨W¯^4x¼û“'O6lØrÏ-²Ã—¸1–éÔ©îôGìõC¾´ó[·níß¿”p…‚=:Mš4Rð¹Šø<7âxóæÍûøã9Æ,X L¤$fëôÑG+V¬Àh­[·ž8q¢¹Š¨÷ßß¾}÷λ×fÉXÓ1ÂrÓ}ê“}ûöņ"èÙ³§ÄÏÏï4 …B¡øÛ"éÑ}4&c¨Ø!C„$ — I“&“&Mòóó3oúX‹L(l~±“Œ~•¢™ôóçχZ=|øbÔ¥K—ÄÕJX|úÌ™3¨A ¾{÷nÈh"æòRˆ>­Zµúæ›o²eË&>ÄyL‘3gÎiÓ¦U¨P (QA¼©kŠF-Ÿ>}:UªTbyÎÀ&‹/>wîÜbÅŠ —õx]Íš5¯\¹‚2örK•*7åŒlSJ‚J•*adyû. ~X¥J2•WþòÍáàÁƒðQÄRXá¬xóæÍ öCI€(î%GÉ\|rΜ9K—.%j­W¯nœ Le8M€èzÑ¢Eðoš^ãÆ×¯_/ d ô3#GŽÜ¸q£4þ®]»biJhBJèþ¾}ûФ~ýúƘ\ò÷÷§O¡V7oÞDyâ:ùŒc¹šö°aÃþ{×&E±u»:ÎÌfX’‘¨ `Ä &PQÌ9TDPPQ1*ÉôP@QQTÀÑfT²äœvaãÄÕÿ©®Ýf6‹àïúê|¸ÎÎVWݺ•ν}« f-¦t'$>°Jøw æÑ}ä‹u=‹Mœ8ñÞ{ïíÖ­–±xñb0 0lð†k¯½ÖìçáÔ`Ã~žÈõÁ#~ ÿ 1¸ŸR*mÀ—µjÕòwƒ6A_\q šøÞÄ÷µÃ™ÈŠŸß DP«¡C‡N˜0¡oß¾œÇð$îpE‰ü¤…B(ײرcçô~ÈzãÑù\TΠkð×ùóçùå—ÉÁ<~|9o?Ãäw ¨ w™sÕí½ûì \àîÝ»/_¾üµ×^;õÔS¡44ò‡5rÇw$‰Ï?ÿ¼]»vÒ¾_AT<ÎÕ5iÒ„ëUž>}:˜è5X#¾ßw ׯ_ßµkWèü›o¾Î¹Û6ƒ/Ž"е`;á{$C¸ê ”è›øùÛo¿!7ï¼óNÛ¶m‘ ú /€ñ£ÑÇŽ‹§P0Wô°®|¨òÑòÐCñ—A땦у>xæ™g¢ûAfn3ƒî>-¾~á…V‹îCH( öŒX˜—èèãUW]ãÍOÃÇ4cæÅ_„‘†_16o¿ývŸîKžÞ 4(vÚ´iè*€\>Hy?Ä”qã7" *Ò£GîÝ`E@4:À9çœ#¼ûQóè>w©¢lÐÇ[n¹åüóÏ÷ÝwyÄ21bØ?,ð~ÎÃ"fÍš²Åù‡äE-#ªÄÙ-’dàñ7ß|ó•W^áã!Ü7ÿòË/ŸrÊ)<`œæ7ÞàAHƒ|† V.èœûòQÉçž{nöìÙȽþúëñá‘Gߺùæ›ñ8 ’¥K—âK&Ô‚“Kî…LÀÌsƒ¡f¼`Á¾§“‡‘àÁÛn» ÉP…d¢lšæé§ŸþÃ?|öÙg`QÉRqäååÁÒ¸ûî»W¯^ÍÛ‰ç†`N0ª LÚøuÿý÷ÁÆP}îáßµýé§Ÿš5k6cÆŒ6mÚpsµ'LPI<[¢ÿþ¨N‡PP²“~¯@÷ƒ`hýG}=„·øñÇ?zôhN‹%OuÈü¬³Î¯0*@X¹~`½€Èr{w¶?þø „1?üpnŠ [°ÒË.» ½K*ûº‰·h.¨pŸ>}FŽ S‡¨í{öO>ù$:*Š@ïâ6§GÓÀ@ÂPºîºëªëÝGÝ‘-4v×]wA è¢W\q…ïÝçUCY03Àõ‘ cƒ?ûõ뇞æïºÆ̃/W®\ùÉ'Ÿðè^½zÁ0€]m`wêÔ ³ŒØÓN;Íß*Àæ‡A÷QúUš€€€€€À¿5›îƒ\xá… œ~-[¶ ¬t릛nâôqÊ”) n±X ¥úÞñTà+Ü#ˆd æ õàÊxœS¾ÍÚêܹ3Ï œ ö€ay‚³ò`ëdiQ ˜úwß}Ç+ázú …]»vÐÃÒ@AW^y%˜ h ºÃ}Æà…ãÆC¡Èá‰'ž@½PÊ Aƒ>üðCd‹ÄR©Ó¹A]àR`üÉ¥WE÷9µÚ¼y3gÆ„sqn? :Ȇ—ä@yIyÝW­Z*†ÖiÞ¼¹/ÿúõëÑî`Ÿh4(O¿ïŒ9ÃþK†Øàý¨Q«V­&Ož| 'T‹+¯]»öì³ÏÞ¶m ;vðVFžPØ'güøU8ãŒ3`´lÙrëÖ­øz†ê.¹äXkiii¼^‹/îÑ£ŒO<UCïì±Ç öË/¿¼"Ý—¼ÞŠ|à 7 2)¥ƒ³å´Ý÷_b@Ú>úzƒÕ¢ûè0è«È Ý„{æÌ™ æW]uh7OÀ7©c\Ã(…î¹çt<ômôj˜»œîûSæn!UAA$ä;¡ÑóaKà/Ì­ßÿÓ}~Á” ó:„A%稈šM÷A_‚Á ?ŠéQ ØÃ?ܳgOä ÀÌxlq§NØÏdöìÙ (œ+ó˜ !ð6POðPúõëƒ>þòË/Ï?ÿ<ýqÇǵFQQ¾w¹ãŽ;`K”Û$°dÉ|¿qãÆáÇŸzê©ÜõŽñ8.~‚î#(&(à?þ8cÆ Ì“)Ž1â…^8p ˆçšP"DZ¸p!o*Gãdîܹ ˆ<¹ô=x÷ñsÆ çwÔ‚§5j„|Ú´i]¡îK—.}衇@j÷1Œ~_ÀcW–/_º…tèÐa„Š ¸P(‚q¢¥jž ƒl¡˜[Ðúrkذá¤I“`˜ùÆÃ¾­Ë ò î ÷¨5²E€ßwëÖmêÔ©\64Ù‚>ãÉÑpàаÀøaRJ^ ÂFÏáï10lÐaÐÉ+õîCx˜sXþþóX2 å0ŠF•ìÝwKEè 9tìØ‘¿y€®ÐÃy(T‡&†UVŽîKž2a`L½óÎ;D\oÿÔ<ºÏÒ axøæ›o®]»6Øm"‘@vß~û-¸ìرc›6mÊå<òÈÈ‘#9yåÎl? ösÓM7áûヒÄ+W®ä ¬„Ù¶k×¼Ÿ C’ÿé´žo¸äò#¾øâ P¨K/½”ïDäåB0ÐN÷0˜ï¾ûî­·Þëâ™ td Ͻûœý÷¿ÿÍÍÍÅ÷àͼt?æ)‡Ê5î¿‘8묳¾ÿþû>úÖ Ì×g^^øÙôéÓÑ$|ÃxÛG#Uöw(ºÏå¹ð çÍ›Ë <ÔÂïܹ¶ìô!-À×ðž3äoÊ$àÜP×çŸÞ¸qcô?˜ÇM:Á§çq,¾c˜ð7oønïùóç£iN:é$äɯHNÆóij0áÀõ‘–•¯anžAÉèȰmÛ¶h;0׋/¾jG·LîÛø C& : ‰¿®ðª‹tM0qâDþ ×(ò‡~X.˜‡ŸvÊ©³OÊùŸx7íF󡓃ˆ£^H‰Î†LN8áŒÊ–-[ò˜¨Ÿ~ú vÑõ×_Ï»"Fxù™gž‰q‡‘ž\bò åß?úè£0Ý¡:˜¤ðÔâÅ‹Q:*?¨‡+tc ƒm!è¾€€€€€@EÔ<ºï{÷ñpŸ>}@%yìþ²eËð믿þúÊ+¯\{íµ<°a/Þ¾}{<&—,+ºéÚµ+g¯{@2|¿mÛ6ð0~¶à³Ï> ̆äñ$ä – :2`À€1cÆøa œvëÖ 4qÊ”)W\qçœÇLš4 Å=÷ÜsþAœ`Š »o¾ùæå—_î3P0û»îº‹FƒëßvÛm«V­ûLMMEÎr–,Y²iÓ¦Q£FQùFß”ŒlÁ´>þøc|ðYç²Hö Ú µ£¦P;¨~°Á— ƒ‡rÈ>2ï}ïP"eddðžŸ6l€‘=ƒ+uÔQåÈtUà[uË…„ª¡±`ä #A]¨‚ÿ½Ç÷óÏ~í¸}%•r_©ÔüòË/a7sÌ1h~‰—-¹Pô¥Y³f]yå•°6A|“sNvŸs¯aÆè*wß}w¹ŽÍé~§Nî¼ó΃J÷ÑK!T4zôhX þft˜¦Ÿ~ú)†Ò 7ÜPîßJt“n±€Yˆî{ðÐ2®:¿Ï C¢ëò[ÃÀòaÑ‘Rp€'Æ(èׯ~õÏï÷;°ß™‘Æ ƒo¼“T—.].\-a˜£#ñ^”°”`üýöÛ˜ øgjÝç¡, ao¼ñèi=fÎœÉ ×?í´ÓòT§N$Û‹m×®¨ƒï¤—J "ˆïá‡ίí„[¶l©W¯^Ë–-‘¸òSO=UPP€dŸ|òÉ™gžÉŸå `H€”£ $£e/…½ä’KP[°p‘ììl~ÍæÍ›Aß_~ùåqãÆîsU‚ŽƒžNŸ>ýâ‹/æDgãÆ÷ß? <™¡) e}ôÑà4øÉ Z±b¸#„ㄉßÙŠG~þùgü’_hH^¨8È}ÇŽÑ~ø€‚?ŒTå^zé¥0˜‡« < E¼öÚkh©ô¸t0ièÆ ¸2ˆ5?Vh¯B`´ÔUðˆy=øwÞ¶AôÁÔÁ­ýÒQ©_~ù½ÝÀ-½¨¿u‹/Æ—Gy$ú7¯8ÅZ ¡éƒÁ „\°`ziëÖ­ý‹ŠÑ³'L˜“ïÜsÏE2¿ø/srrrPë?ü «ÕOö‘ó³gφ9‡ÖDGýë ¯ Ðj£–0FçÜëׯ¿æšk ¾‰ÅO =`,ð‹kÕªó€Çùç5¬óñÌ#e×®]Ë—/ÇP‚mŒþï®èÞü… ÿ6lT$?~|÷îݹBÐ@Ð0t럆„/1^ iÓ¦î÷îÝŠºï¾ûÐ? ¡mnÇJÞ¶Ô 9Lž<¹sçÎâdЍyt_òÎDß±cXÔ3ÏuêÔž={ºàzlÖ¬è&þýúë¯óÓoºu뺦Â/½ë®»'?#¬2@þ“O>™[“&Mzûí·QÄW\1zôhÔôŒ3Î@½@ÈÀº@[9åzüñÇ?ûì3¤¿ùæ›ñ8ˆ4¼!ñ%ª_Ÿ~úi¾åé›6m Œ?ÁœùF-`{ C°ˆº©Ð$(æ×ÒaN<6ƒpCˆÍ¯)€ƒ G<餓Àç :ißÞ'@«P)jeò®ÀøAn( L”Ûo¼ôùóçó·7guÖœ9sü˜¾AÚ@nèŽèHüV,<…Å•‚¶‚¼¢—£8°a|@‹ø™Cÿ¨z,¨< åí‚Qk„{²¿ùæ$€nay¢“@ÃÈ¿gðkúÛo¿]pÁøÖc¯^½þºÂ«Ę5k:9TáÀ}êè¥0l`‡  Éû›ùÖŒpõÕWO™2%y;×Á+‚|`€Á¿ÿþû°cÑŸaÐ6nܘ§ä›ËyeAßÑè å(£kР·Ðh° 0–ý×,è0àú|?ZâaQxÿ‰'žÈ«€ÑoЙ!­t®'ø FÒ}0T0•þýûóÓE°Æƒƒ”ã°êÁƒóóGŒ0cÆŒñãÇçææ‚”$×ìÅ 6 ldâ‰'žÀÎ9§ÏÈÈhÞ¼9xsÇŽñ§›nº‰Ÿ3Èo$åÎ`~8&>pg??{ŸÁW­ZUPPÀKäw?…B¡¹sç¶o߀¾LŸ> Ào@†à7 àH†|^|ñÅ‹.ºUàôÃç¦rÎÉÉÁ¯È¡sçÎ]ºtAqœ?A6ž’g‹&LàÑ`] O<%—œ'@5! þBàžÌÃ…á7mqçºrê©§ÂÜB]öýeºŒ(„gâ—‚šÂ$ㄞ“…ÿþûïA"ñM§N@Ð}RËÝÒè{h2h{åÊ•Üï‘3Œ±Ë/¿|ìØ±°¯ðlr2¿\¤D¿½þúëùJ¼ÇþñÇ0,óòòxVuëÖmÒ¤ ý!C*e¢‹/F×…-|PQ¸Ëœså 6ð°®ììlPsŸ°…’é>C“° P)~¶&”ÃcØü4ЧIƒnÃ{¾‡á]ù±R~zØÀ0!øy¯xíÞ§O~”óóÏ?¯_¿]Úß”ÀL‚Ýuë­·úû.04 »s—êE2¤áñ{‚î TDM¥ûŸ|òɨQ£ø¯à'œp-I$ _}ô*f–‰¿òâAúýƒ8¹1"ÈoV"Þ•C0!’»!É'žøä“Oò³YxòñC™“«ŸàåW]u'+±X e=ûì³ &Ü :’™™‰R Ç—^z©E‹’çs¡ùñÇ9×DÊ[n¹Ú™2e ~}衇zôèîx÷ÝwƒGr9¹fÁ@Ù¡Y”…úvèÐ$šôõî·.ÿ «†ogµòÅÆ#hH0¶“N:‰[;åˆÝ_·aáŠ+ÀÉøY¨Ü¿* ;ŠoÒ­È÷!Œœ{î¹gÙ²eÉßCŸ š0–’-×;¬“oŒF}çF€M°mÛ6h$˜?…Çs rãw9¡³¡u@4‘œ‰ýÌAÓÁžùÀà,vùò弚ܼîºëzõê…ïÑÍ*­ÎŸþ «šG[TºÏí.|˜9sæSO=Å#pz÷î}ã7¢šµ\éo¼ñ¿§uÄ@ówîú𯰀¡‚‘Å?# ú!j-•};Ä_L›6k ÏÞ{ï½={öäæÔ…o o¿ý–¿ “<‹²õíÛ£Ïȳ°°­¿páBþ ®_¿~_|q Àƒ{ž4þgQóè>òåwÜâ{{,ùÜsÌ©6*†d‘çºÆÓû™ð¨©t-D„"¸Ã2¹|w,W”Ûì+%‘Ô€©ô„{H‚BAª¸#â'Ä#=òôχáÔÐÏ2s3¿<˜»ç‘F* ŒánN4~r—?ÁO¤ÁŸü Âü­¢<°æ<^òäå¬<>ÊYþ Ü—JÐá¤Ÿß–ê †/ÑÜnÒ6ûR.÷þr÷¹ßC8ÛFnþvdþ=¿ûõ%Þþfëïï õI?ñ.YKÞ-Ê"yÛ x‰Ü™r“cZðŠå¿rÕñîǹ5r“F>¼”JÏø¾  À—íàÁ-=òÒ¾xœÊÓ¤{”¹Ó_ ÙPG¹Ÿ¡ß…û3o{4OÌ{>º«¯(±Éû$ïØÐdãé¹ÂÑÿQº@oeüä Ê;Jþmªß ü›Póè>®À¯‚âDÊÿ •Ò\ÿ8Î8ʺäý݇¤tw Ã#•zC9ûw“ ©ŠOø~tŸˆp/&)=»³R5ùòŸþ)“¾Ø¾$œ÷''ö“J Ÿ¼&óÝäÍ£~E’‰2?¾ÒòCW|!H\DrÑ~‹ø6)EEÉ÷!çßå¼ø¼±üJùéýr}²G%o±M¦òþ÷þÛ’r:ñýIî6œ¹r³3¹×UÕŸ“O¿9¨ži_Z¿‚>Ïö;U¹Ñ‘ükÅ*øÞ}ÿYลX%'N¶?ý¾³?ù@žä“M¶Óü‘â‡QIçz2jÝÇŸP0wðggþYì•–èDA÷ËøÔ+UD9ǧ û5‚îK~pH¹¨›Šå&ÇÒüóQé>õè~(‰îó‚÷“…£&|Wââò!X ¨x>‰€€€€€€€€€À?5Žîã/¶¡@J)Ûw%Â×Töñ>|Þ¼yM›6ånþr…¡Œ… >ñÄþµ£Â»/ PSPãè¾äRY7ô`PßíÝÿKÎ}éæ›onÕªÕàÁƒ+½Â ¹à‚ úõëwþùç ï¾€€€€€€€€@ÍB£û$Ü0´@P•\G"2£ù®ì‰¸Ÿ*¸í¶ÛZ·n=`À€rtß?ðœsÎAš‹.ºˆ(¿€€€€€€€€@MA£ûàø»ÊGU™;ßᇠÉDV8õ¯>n¿ýöÃ;ìÎ;ï,w'í$ݺu»õÖ[{ôè!•½+T@@@@@@@@@àŽF÷],'t…ñ‹ëRYÕ·\ÉÒ¤ÊÝÜvÛm-Z´4hT6.ß?¨çÜsÏíׯ߅^(îñ¨Y¨ytß’=³0n\·+33ý°æiªФA÷’Pã辋\U’þöë¿ß}Ç3]ºt6¼G0ÓjÕºŽÊ¤ÛŸ`A÷þ­¨qtŸºÄRHÆg¯}vô;»vY;r7tZ»á#zg¥%Z4¯ Âç8ñßÇ{¸Ýø·¢†Ñ}ü…j!ÛÑ ŠÜïæ®|ê©i‘°‘ŸïÐ.û‘GúÒXnÐ0H&²‰Jˆ²WÂ/è¾€€€€€€€€À¿5mk¡UÕ)uÝx‚DÃdÞ7›9ÅJ„ò 6_vUÇ^}ÏlܸVz†.ÂþíM‚î ü[QÓè>sÚ»š¦êª&Õu‰KeêH»rí_màþq‘"bÛæmý¯¹°ç™ÙJv–¡ï¾€€€€€€€€Àÿ*jÝw r- 2t9CrdâEêKÄr Í-Ö- ÏykùóÞj×ú°ŒÚ;{÷;ãºkÏØëX‚î ü[QÃè>¿fË0t]ÓeI¡Hç(ŽMrvÄ_š{ï°±ñ°ª(r¿Û®ì~AëÌl¹V–¡ ï¾€€€€€€€€Àÿ*jÝwe×5Œ€¬h•¤„IŠó¥ïÿ»åÑ‘¯Å£F$¾óÒ+Žï{ëÙ ¤§¥iÄ Ü—Ýø_EM£ûLàD ‘“k._–ûóÏ^}u¶nd5lØèðVÁ/Ϊ-ÕªmH’Íb|ˆâI¾¾/è¾€€€€€€€€À¿5Œî»’K‰¬Éi3ÞX|gÿg5nzüIÍîX·ßíçjrÉ%[ûpÔ~º/ ðoEÍ£û’&7mþ7ë_}å£SO=©ßíǹ* 45¢‰[u’Qãè>µI,hdªrP¢Ì‘ïPWÕ]—ÄU)@¤ýáâ‚î ü[Qãè¾k»ñPJšªèD" Ó6 Íum"¹*Ñ%áÝHB £ûLb—è† h þ¥Ñ;Jõ#öw£ÿþÍš5}Y×4í?þ¨*½O÷AôÝøÀ~óìܹӲ¬+VT•žÓýÜÜÜÙ³g º/ ðÿ€ýóîoÙ²eæÌ™Ë–-WÅqsNÑñßÀÐ4 ß ñêÕ«k×®=kÖ,ž@Ð}¿ ûA÷Aèúé§Ñ£GתUkçÎEEE`ì………üs(ÝWUÕ¶m~0ù.]ºôêÕË0 ä è¾€€€€€€€€€Àß„ý æ)((ÑKÏËË«]»ö®]»’¦¦¦r¿iš@`åÊ•x°sçÎă ûöîãÐzPnüªª*÷åƒâûŸy†Èœþ7ÞX°`ÁÌ™3ñ½ ûöƒîã'È9žÊÈÈÀÏŠ‰9Wç[u—/_>~üx0ûY³f ï¾€€€€€€€€€Àߊý»U|=ãÃ’%KªJÏóÌÉÉ™9s&¿UWÐ}¿ûw2O,K$Š¢Tzî~²wÛ¶m ûH?{öl¤—ÄAœþÊ­ºš¦-Y²„?ë²és}ÎÆsssß{ï=Ð}üÄ÷»/ ð÷aÿ‚y8ÝëkwÏÉÉA>¶msÿ=>dggׯ_?‘HìܹÓæ×l ü­ø‹tÉ’%+W®|î¹ç6mÚä8wꧦ¦^{íµÝ»wcß¾}» ûÿ?øëÞ}°ü¥K—‚ñƒ·ó=zôèÝ»7Ò#Û;v¼÷Þ{{¢ûkÖ—ÒýÕkjytŸx‰¢×gó¯ä3þd0¾o$}' P \êF#Ñ}¡û¡” ‹¼÷~MÄãᢰ¦k .’Ø=»ö²¥ËÆ·~Ãú#Žh3tÈÐF DÞ¶mÛÿÞƒŸSׄà -*ÝÍ£ûiéé1îÝÏÌjZ†îWâà/¥ûº û{†G÷cûM÷-ZL)U%._¾üÃ9s®¸òÊV-[ÊŠBÝ'Û·oçÞý÷>x¯ Ý_ÌèþäW_%ë×®KÏHDvó€Ã#Qe*U"§û@Ÿ¤ýæ9¶ÂÏSdø¿áÁÈSdøÌð`ä)2ü_Èð`ä)2ü_Èð`ä)2¬©º. ïc0O¨L0Oq1 æùý?Àõù™›–iƉÔÔT$`‡ó”¥ûï¿ÿÂÎî){2Ïk¯’MkX0O$]³vM†G÷]Âc÷a[¸«Âb÷ =øK±ûbT‰ ÿ!Œx÷eYƒ²ªÀŒp(µM³° ÀÀÚ“òÛ ¿@ײ¬üüüéÓ§ãÃsæ8÷ÇýÅ ôOü*Ù¸v7ÝϨº(%h¾.ÉŠMüìü¬Ç1 = H]üŽÄ(­ÄžÌ±=ºoð£u(uÂáèÎÜ;vìØ´iSrVåž3‡Ã_|ñE,›óál Ê2þ ƒî/Œ‡§L.Ý{t?½¶G÷eB%W“4âÈ»³.ÍœºÔÐõ`@;ðÊøí‰ùŽ$v“éd¸» ¼¬ÈÁ€®ÈœÄ»›·n›:uê²eË’)¾o3F÷½37%WUÕuëÖÕ«[÷ƒ÷ß±]—²Íºn,Y¼xQ´°˜y÷×®[—Á¼û‘•kײ2ë59Ô‘eä*Vv22P% «l;o™ºTV…¤¿‘¤:RRú½Ëÿº;/×Kštð'aç_C% ½_+'b‘MRò#I"VÔs•I\& +’”ˆÊ¾!%¡Z¼F´4â&íp ~ÝÝÊJöv9SIñ¾uðw™ë  iöòògïàùR¿"»Eu“ËtK[É%Ô{ŠW£¼T²×íh©úIÙ;ò 0”ô*R¦ŸâË’™É-×5iùÞ4ù±Â”ðM¼ÌgLö•[ÒƒIòéät¶‘J§ ·Dœ’l)Æ-ó¹$sžŸ7vÜÝbÈ%‰‰TvÜ –Ýîáï¹ò‰]/!ûº%•àòPo¶—+N È@q$£Þ’¬Ã=Î|ûŒÿ‡ˆN7IüÊÔéJ²ŸŽT1íW·È’Ë%eçÃäÎïŽÔëfü .)MV¶ yÆ.º/í介*í]•*ø-þØðg}O¸ÝÊ#lv—Ý’bÝä¡ÀPùå<ÕìB»uZúñ‡v’¾ýLËŽ#XØòåš ó³Fý|ÝÝ뚀Àß̾Œî»R$š(»åµòõÀÐ5EñfÇþé×?ù°¢ª.Ýx7õ'|Ì¢›Ë„RYQŽ>ö؆c;u][#’‰¬\¶4^T<õÕWɪõj¥¥˜á¢¥ë7…³±4+0¥‘G¢JQˆd)¶Ä–JvH™1À’E­ BJþŒµÈ¥%žD,Ó!QØÔÓ£ã-ÃÈQvdÇV¨ÍŽr*kŽ¢Ú:˜¥…UK¦0A4ÇCfƒZñ¹vÒ¬¨HXÞXÑŽLdUf‹uØ/Ô­¸8Ð2«A²ýâ ŽÈß–eK“mHëº&`K²U)A©*¹ºËö>'ÈU9ª#C`O"[E²ñ¼ã¨Þdîz¬€2šïª®W‰f+™a¢(R~Šdk4`IÔñeÙ- ‘ª ÒnÉ“;P¥‘a Û´!E4×V©æJºåˆÅ£V”Ú¼)¡d›(–¬Øh*9ÁšŒ¢‚ìà`œÐÔEcvB‰’}=ÃDdÏÂNDSâ¶©èÄ¡ŽÙÆÁ d,0:‹ü1Ù0’H X’Zême¤Ö¶ÍÒð™YÊì–u”(ÃP Ä©ŠœUš€<ž“x,¸WÛ‡Ù&© ”ÝS°7ð:#œè¾g:aN÷Þ£(Tg‡ÑÙ¦”©”âD²LYƒE¤QËŸU÷:OVÕÉ=G{Éâ2ωä-'õôDbdÔKÈ–˜Þ{ôã¹ß<ßžé(RB6`Ÿ\Ð}›º†ED¶ø!¶fy&S¯Bd‹󈡢è“(Eözã¾J^)À}=þ¦(”¨ìÖ2Ö­cXÎ󡣂HÛDEŸw0¬` Û6– fwÂ"Õ¬ÀŒ±+‘ÃuýNÁ7îMÞoJÇ‚G.˜ïI.ñâ3+ˆv”-÷23ËY¬±«"%e¶‘­*²lB¯© 2F:9`£Os m%Ç0$XýØ–Àg,à4±©þêŒíc¯S÷Á›±«B9É} +•¤ºKj5à–¼˜)-©Êµfß—¿}*vÿ$Ož±«èØU骺’ZbKV kÇÚË~<ç˜#ôDdZyº_»I~V£µ;Šu[a¤U©¤>ޤ–ZïÞ«ÆÝÑ8‰Š¢{N}×åö€+»¥ÜZ±MUÓccUsUÅ3ܤT)&k¢0–Ï”ë°y”Ív ¢QåºWe‹yTœÊ¦ØJxŽãYþf™4‘|Mp)ªÒ·ËòeÀdˆiÏv¬x¦B *Ed5J¨E¨&+!ˆŠ)\uïäRë+›¸\Ðã ³ÄažÅ( Üa µ¸È'´c´8‹µ [ Èª¨mQ=N+H¸§I¥ÔåIä$㾈…ƒ9(D2'r¨l¹¶¦aݺ£–Ä?—¿­öh‡î-ü˜ŠM*ÛŽlÛ Xj¬T,X&WEµ¨fØv†d‚Ä•€™05õ¹Ì “$EWŠj;÷÷<òù*»Ç¹‰”M_©µW™e¸¡* ™”qïK¥ t |EÉ’ïÉUT^Âä*TѪ¯ª\þÂbP*¡R ázdü]›(`aª† óÛU=Æâ°™ #Ïr0³mØŸ È~\’mMgƒ’qu1x´Þ] 4 ;šç‚•öf+¬Hº½ìè²N(š)ƒŠiì…#s%ò—“%7‘0?„Ë{Ñ,p#j©NLsLTOɈ+)¦ „A÷Á9Ò£û’)%öj0î«m·gË«“÷8–¥bêQ1}˜µ®¢EMØ%š¬œYÊÌñ©ƒÉÞ¬âùhp}*;ž–™àiºëÄTUèAO”dݲº ŠÆfE¤±1ÑV¤ûåš¹’6,sÝŠ[=·â€GRÏöú©¾çÂú#ކf%RÔ ¸’¡¹ Y²-YÅ?•½))}v¯ódþrÌ÷˜Ø¨§}‡­UX“ØÄÁüÉŸpxû/`«†%óÉ”-lP5®©mŰn(è¦ÁÞkëàÓ.)òâÊX“¢ŸÊІµÂ¡Ô 1‡T°YÕ“…wr‰P¹a«šÊ*s‚z¦¬ËlK¬+âE‚±Wëøç–Ì¢¥üZU,LíŠG ‚z0n2“Êa/ç#¤ñ–€RIÊølÝÊ$$ìX2ò²²ã'*›X´4 – ñ¡*ÉQ*Ça½K®N©âu?æLL£NLÒ#† Ñ(ÌJ‰ÎŒsÇD}‚s±M[M «i6µ‚r¼‚$Ò?{Æ®ðýÞgì*‹¬<£ª ¥Ê–TR–:íŸs¿Ìøwz÷iÉ#Õr£'I[îeD)#åØ3Êé0ùÁý¦%¥ùïa $y›·/žwÞñmµX¸ÝçÞýmEAI—%bWf&R,Žª+á_•„0ÿ­©Æ›@”ÒPf û:²vyaQ¸þa­ôôÚqé2ŽK@≖(Ê߸šš‘:%™uó©þ®;{ó߻Ŋ£Ú‹´!ª7)1o½"Å&r¤`–¶%ƒ…ÊbPôÑ!*(›âZÍ’Yhâša-ˆ¹K§1*›¦ !tÍ,Œ| qbtÆeÞ}“ Iv+–úŠØ;RÅóXƒÈ8ñüÜ[Ö"sXZJF½C[š.¦"Ý+‘9zãà‹n‚ð¬Ý$º%ÌJKæY&0}0߇ówîܼES$3‘Ȫß$­~#p Ââ4m¾G«¢Î«5Û” æù[;[s©ÂË¢¬ŽŽAœüÛò·o¬S¯~¨n³8 (냃ncÕ{›Qì+­›Ù{mÏ‹d×V°aIe¿³×,žŒ5ŸçgÂŒ*{o—YJövÅŽçìØËËkP¿‰žÝ0ê@D´¨ÚŠni)qÂÞ8¡·;Šcïܾ-RP +rJýCÒjÕ6ÑÀšÁ^{ïªnj°O×ëöì% 5Ž­0ƒÉ’IÐ’ÓXì2 GƒÅ{‘•ˆ' r¶¬S1ë³ýZÃæíãJ†ƒ>ÎHs…«L ÃÞ=ÍÄ[aØÒì‘wO«¶Ç*Ø‹,•–ªTâѲ 6’¼×þVQxdž5VÇdq»µ¦6iõ|긬Q4è_2ã¹k§™»Ð…N@®Ó²V£†X¦÷®¤2º­DòŽw¿š¨–w¿bzÿ©ƒgÞÿ½û¥ÏrìÁùõðî[щ›Ø¶ºpõ‚³Ú·¬Ì»ïÑýµÛ‹ b Ê]ñ¥!¦›9<Ï/V×Da^þöÍCKmÔJVu~ì¿ïæQ]ãn³•Rã—rÉl¢tæOûñ[Ó/|ÿQgž‡eLuìhÎæâ]Ûì€ÉV4ÛÈH¯kèúμ­®ÓâÿÁ`ãFjV¶K5L¥ ó²0ßsNÈ<ŠÏeo®Ùí`r‰™ØMd:í•—ÌšyÊeWž{]Jv׈¿­óo)óï,àYan!Ô `Õ§Xå)^ðʈaþXxíýO¶=ùÔæÅP-TЋrÝA G# oÚ Ùñ‰÷ Þ¶|Ù•CG4ëÜÕÛ3AA…‘3Ä…”¦¤+z"-oëäÁ÷¬_³¦÷ócÓ<ÞPÓËÔÙ²,ˆQÅ Äý„·!Œ$³pÃÚ±C‡éš1à±QrÃCdÝMÇ‘%v³/Þ¼^ 烾lÏêÍšKÔ;´55Ò®¦›¨mkf\e‘¹‹~{éîÙ-ŽìýÈØÔ´TEU,Çò¸ØûbÂ?ýͨtyÉ>ÉŠ‰«˜ÈþºU]T.Iµs9ˆ’WOÂ!‰ëêÔ¤lø1ªM˜[ÀÄNÌÈ‹÷ܼqõšÞ<Õ´ÝñqUÅœ¡æ+Å„ݶvÒð»ã‘Â#EÏ kiJÜJ“@©`û‡×/1ÜXs…ahvÜÁQA°ÑË¥„ ÖÎL©“·5ù3?º}ýŸ!7ªÑ°ÌNËnX¸c&„ÚMÛ˜Z/\d(Zq±µ~­aÆ-°êPjFƒ¦[·ç¦9Eµ57µLØ ‹t-þT‰ZP›$æÄլؒù_¿ùøƒD†©£5hÙæž'ž5å E”`ÀˆäæïÜa9p~°È;“b†Ò%#Ôø°6qS•5ÆÒ\æb’ýã·_Îzü^"P’gv¿ê®G‹Ô ÌÞžkbwø¥WI“_rKµ.Rä“'‡7é¹R©—4ùO~b¿h?½ã8þŸØlé-@¾0%ùPË£“Þî4i&œ9ëéó^ŸÒ±ëù—÷R¬¦z›lì!+^tÓ¾w¹Ê;¹%³$`Ÿló˜e†·m´ væä2%Ù’©µ¦bybK³Ã¢¤rvmÞH"…!j…$gÊ‹“6¬XuÅ=Ù霄Rdª9&ZÜ&F=›Ú©²HG·¬}éÉ‘[W.ACž7왎gž›¬ž,|Ÿ9Œ¼ºTc*«6uSeÇìÌß±Á´‹(ê‚_Nk\ûp^Nq$Q»y{WO!‘]Å›þ,^·rêKÑBX©uë]ÕïN£N“ºM[R#‹GÑSvèß~-XžÃÃé=êæá˜Åyá-¦åí“LWrRRj5k™ UH*£ÔZŠa2ò^B£`¶l4ïtÞM÷?v(Kef9óOÉv¬`û¦g÷uw­Up ´#ϽòêÛ‡Yzp¤-#ù?~Æ®²Ìj®zÕZRŒn«ÂA•¼Z£à Ò¶oÖIH»6m_<¯[Ç#«ôî—Ð}öΰ¢è®¬°y“6Û«J㋘ûÆã5>âð›G½,iA>ìý9Ý‹hg~50~¶Âb¤: 7QüÙ¸¿}ÿýÅw=pøi]°ž§JöGÓ^þ’•Ç^í)iÇqn»ví§MCÍ<¢ª¦’zñ¡mO9]ÑÒˆEØ>&«JŽçPñÀW²3®)ËŽ*ƒŽ[³fL_0gÖÉç÷8óò>œîsñøZÂÜ5Ë—¼9k·  $˜Acj˜[7a8‘c_øé§]oì×ù¢K­Ô —Gcï.dk”¦ 3ªTl%’ÿÜ;6-\pýccšu>Y2#+(ݲÙY¨lóœÈÌÛ9á–ÛÖ­^ÓwâsuO<…ª¶eñy3i Ëèù„íy°Aí·®^:ú~ÏègÆMH è°0L¬f˜ðÍç︥`írÝ6CŽÂLÂö&ê4ìqëÀÃŽ?ÍÔÓD§V‚(¶#3Y·ü1Òà[²[}Û“/¤gfY”šXt–nJ®dûöÁFå­nå/ÂÜ*¶J6¢\T%Iuqð$¯®„@Wea˲-³=¯°¬²cHÖöu+^1 1¯yà±&NŒÂö&”Ø ýú¢m¦Ž}2V˜×ë®{ê¶8¢ÈUÓ‰FbVÂ0ж­{þ¶”xíÚŽª†ÌF£ »–oø fÝüÄÄ´#·¨tÁDÁ‚o>~ò’(‚%jЬû%W~þeõñljóc]U Ùy$‘·â›yâÒ„KSë×ïzÙ¥o½=CKÕú?üT ^3ª²“ ,PeG¥Uö––0æÍâ¤QåT7þëgïÏxä>M'© ZÔiydß!¹Fšã‚¹šy[7<7â>gÓ2ðX"«¶m)*¨›Õ¶Cû‹ojÚ!FGÖ0ÕèªL‘å ~øz색‚M…»rOêqõåÃžÝ©×Æ|;J–*q{—¼¨@Ê«lääˆBlÛö§/æ.(¥ïŽwÇ{rnþ¯x„'³™±Lÿ)n”2~0U‡ò «ÔÖ1™±¯>ùpî&Þ¶ý%ýï•´°™ÇØÛ® Âç|¶¯¨¢“'T¶…JIÀvxdâƒ÷nY´@vbŽfÙDsµô.7õ;«Ç%{À6Ô¢GÆòr&=2b׊¥ª¹¶Y´+"i—xòØ®=czªË^°$0Y9’—ƒšk¥8‘@tç #†®˜ÿEÀcQ¹`ääã»öH(†·wV.y{ÃâÖ*›T«3™úÀàÃ:´ëýÜ;T•ú×=™y0Ûh«:lÚuuÆ›c‹ùï›#Wß#»]‘H«kK$ÝõÆKß¾þŠ»k³ÌÔkÚúä3:tè0câX𷱏¸8Ô¸yÏ»‡´:ñ ¢¥I6;(Æ!–çé)Yd’·B(,âÖ; ÁµÙ{ÔH1džAÓë” æák ÷ëûK _œ\)aèºcꮪ;’’tÛº—G>´aõŸW½ïè.Ý# Ï.›é@|-bBŽ€äæo^oXÑF™Æ˜¯þãǾ£ž«×öä¢âpFízz(ERƒlR³­øæ¦¯2& ²qåÊÛ_—R¿‘#jݦŠPU5ÙÙv@ø2V¥‚µ+õ -Ù…O ¾#¨‡?3L(F´Ì‡€!)ÄOÒÛ/ó ÉI«ÝŠÅïKN4Í/gµ:â¢[ú·<æ$SÉ"v"@œ¼ÜÙŽ:»Ö?uÇuõk7èéÉEÑ(V¾ìÆM°ìu¶«þ-á¼eQ¹½|àÒ< î J^ÝÉ¿\³Åƨ$Y“,ÕŽºá]“{`Û‚ù½î¹ÿˆÎç…,S JŽdç° uÝ¥9;0†ÒkÕŠ³ˆ}öÎvH< F¶®{u`ïâ5ˈ!§68D¡![•]âȱh"7‡*Á»'M1Ž<–Ê©ZÁ–¿Ì}sÜÓ‘üœP­ZJ(Í´b†»Ö«©wM˜!ÖÑ’Õ4+gý—o½þìx7îfÕ©ç7ȦÉË 6m:ð鉡&G$ˆ¦±ÀB‡Ñ}ÉÛ][ X2„҉¥_Ïyë¡»oÄLË!£VCK`$é4V¸}ý+?\ôËçj03%»¡-i*±ÌâÜDaNóSÏì9pxJ†ZZv‚*¦iTÉ  vÎÿàµ9o¼xì¹=¯¼o\¾V D?H‹ÙNßÒùM›ŠRâ}/õ£ïS%}q7 ?}ï w©øL½ÜƒrÎ~î¬ñ|À4ˆÏ¾ç˜»ÿ …¹xlf§1¿Âã£Å_½6îÛ÷ß:öâ>çß2ˆêº·?Ab[7«,QIÅÂßü*uÔXñkO=¼mùïÑha(û9½Þé×ßzÒ¹˜Ð!‘ˆé]šüô㹫ˉ"˜E9[â–tíƒOݵg‘šŠ]•,Æu‰Š%Uw­ ”عzÉ«£ŒíÚÍßN©{ÉC/{öùQYÃÊ"ø©w¬q*9P©jÉ«HgëN|żo>˜0®hÃÚìÚµ$Ý€IÊ^ˆÛEvÁvWVïŸüѶb:åÑÁRΪFÇtºþÖFZQÔÂ9oL³uùï)Ùµ¯æz‡¶àMVÆ?UÀ¤wø†` õ¤ªY¿lÁÛ£†ÓÈ®èŽíÈ<=»n0»ÁÕ÷ÈjÙÆtC„ضbÉqãnÁŽTšøáó?˜øDë3zôzdb±žNeÌ …m© °] +y{6-ütÆë_Îx·Ãy—\;ø¡h £šbV¡È€ÎZS­~u°Å>˜tÿ â@-‘UçìͯmU ûë7Öfq–ÒýCÖl¨wB¦\±HÙ¡†¢`å5ÝH‘µkóús§?;ò°‡]gÙæ®ÃF}âɲÂÞÅûAª:8¨Z(ظiòCƒ™R× :¿þüè5åÊ^ý?üðë‚„ÜwøÈº‡*a}Œ‡sÿ˜?n`ŸæM›œóÔËF0”FãE›VO›ðüÎ5k2›µêßÃV%ËÑÍØè{‡¦îé§9yôðìCZ\Üwè›S§kYuû »/½Þ!cüì-êþ͉{x XÕ±U«¿y>P¯/žäÕ•ð¯KÂJt˜Våñ'ºÖ¢¹Ï¹cëâ%ƒÇLlxôiEzFÜÕÄ•£Åá¼íŒ° ’TQµÔÚÙr `{‡`ºF(¬-VPôݧ“¾/­vZ¯û$õÚG¢ë¶½uÝ”äx~RZûc‚vjÎó^ypp<{óö®è·™V?’—ûî³#rþü9˜‘}Ûè×õ6§F]9¾iÑäÝ1³Ñq§]zÛ$hD·n|{ԨȆ zÖžž”Ú¤­£Á‰Ë,Þ@e.©’ÃL$¶Ñ_e¬NrCVÑŸ_Í~ýÁ»ÚÝ¶×ø·ŠåÔ¨¤K†.Q¢:‰€Y¿èÇׇönÛ©û…½šRºAþüéó™/<•ˆ$šžznÿG…å ¤§²( Û ° ~uÞÛ/~8þÑ£/¼øÊ{ž.ÒÒuÑ zîö6Ôµí¼Ü ‘Á¬L-˜²›”ïÅ\'¥Úl–JÄãy¹9X‰„žš‘™™UTXˆEAË1Ÿ¦ed…ÒÒ-‡Æ"‘D¸Ú‰`jFZVmÇ•TE)ÌËEŠ!l05=%#¹†‹Šâ…ù²L‚Á@0Ú™»“ÑEÎÈÈV´TSQ-™mS$G1ã!Yùvʘ_Ó®Ç5—y4¦jªk{æ‹ÊÏ@.íº¤t³VéidRÙmqþ+e:aIì¾mÅv_ÄwmRc¹SF?¾á§ùWöxxçnJö¡vJfLe›Žd&Û%ÎÛê&òuÙÔÝØËO>¼å·Å×Õ¡ëÅa=ý@q’wV§îšŠÞµeõëžßòÛ‚[†ÝõåÌék–.¹ä¾1Ϲ ®`(¢5ùé4’wQe]HÚ]Ç’ x&–ÄÃüMjìg ‘¿þ×ïP\dÛÖìæ-®p‡\ïx(MÙ±ã£1#×ýñƒ¬§ ™ô^^‚¼8èÆC.yòåì&‡S =YÒÑâ5‹_>ÈŒ\7þ͆­Ž`[Z\¿§0ÓÖ¿)§ÌÎ8·äâÈâ‰&³ó®´ß[”ƒ’­DwEóÖ,þñ«÷Æ>Ûº}».]Ï?î¥æÇŸqÃ#µ´Z ñ¦¬°@‰Øni{îìw>{l@›ÓA÷'jL·ª”ð®›Ø¹ÒÞÆÞZ42絉_¿úŸöç÷¼î®û£šÁ;ƒ¯="•Ý|¹»ùKÍâ÷ïrIöŸ÷Í¿qKöx”ª{w $¹øÙª•‡š•3¶Ëî©÷Ûß-=.”$……¸»Ã>ïÛÄ-‘‡”T±ªó·üLHÙBÉî´»F¾gº¤öîî‡KÚ¶¤²®»;ϲðUrÔ2uü I*¹ÉÄ/ͯN²¼ô„ÿ—\îž#ìy)Éû–hiË&·NéãÉÂw7+ùÙÝΨ8PÎŒƒº}ªZ8 Þ}×[\“m0•‰Â­?}1sÜãZv£kî–Ù¼}±Äô–êD 7¬xñ;í¶«È$®¦gÜøè‹©Í ‘8qlö~@6M’ºë_&ß}}ZzÊà‰oÈ)µ—,Y(Ù‘Ö‡5šõæ›…ÅÑž½úd5jêJí çxcfÝÌ nèÛ®ë%F6¦ñȆ¥ß¾ùªdºçßx©ßÆ{Οó_¼±KvƒæÜ<´õ™="F€8ñ¢5˾xc*5Ò/êÓ_©Õ@ÖÕ‰²K8¼w•¾½ÕFO@aSLLÓ‘eŸÏz{ø°VÇÙ÷¹wŠá°`$oUr5 ·¬ž|s·Ög]yÉ…Õ€n[ö–%sßÿí¬÷¶ë8ðÙWÂÁ,‡íåuŒÄ°ÜÈ¢i/0ቶu¿jøS¶›ÞJX ’·_YÐXñêEî½Ó)Žt¼ªï™7öów1É•x|’˜EË(®Íè­K÷íœ1ªñ†Ïìpúµ·ÜþöË6/_@츣„?鬳¯î›Õ´õÜçüwâCZØôø³®z`¼©†` ¼6jè†>EƒŸÛûΓz\'ò'ïN_ôòs`—ÍÛµ¬ßàÐyŸü—­có¤î—Öý†À!Í ÙÖiÉ –k±=¯KæÍýêŧ²3´‹î}Æn~TFB¶íÒGŠiªB-*³#ߨLNÉOÅ;"Âæ§_²Û\T:”EÉS‡^”ÝKÂŽh'²Ênna›,ÕHP˜SV†U8þÞÛ×Îûô’FÝýjÉJE¶År&è¬45@’bå+jªãLpõªŸ¾»ú¡gŽêrQ”y %ÈÄΨó6œ¤îúó¥n]½lUv›Ón4dæ˜á›}{é}/s^OoÞ6s7ITQ â”eƒe"‘H0#ˆ½EaViZ3q]Ø; ËV@‹ÙÝ60—m»…ŠyïJ+~0¨O<oßùì.×Ýl|¤£†$ÇISã…›–}þö;ùEÝzgÜ2?yéùC²ÓO¸}¨¡g!pìDþâÿ~òá„gH4ÚçùÙ­[ÛºÆz;bO5%×aqAüâvF?ÛRS–u¹ Æ®m¡²W¼MÇÖU‡G5Ù±-Ó‘ “T¢¥Xñüm ˜1í‡é³ÐîÜ>—¼Øÿž†µZœwïýÙ'ž¢3¡w+‚c#Ão>zÿ³Ç´ê|Á-#ÆGÕ,FÿˆMe‡í ª.ƒôk6ÿÚ³Ÿ¾2¦íW^7l”ItêíþgA¶°Ä©ÍŽêd[”Ëó`.]’ö©’CU›­q9î*XeïÀAWñS%º,¡ïð,€ú±×1üp,èºÊÎAbÙ*µìxP¢!‰D%Í­ø&°’<úIÙE¶Ù…–w=ŽîP°ad«z‚Ý“CìÚ ¶/œ‹OÙÝ;Àɱƒä¤hŒ8µ Uƒ|ÌfÛ/Ñ`ì£Òy®B˦ŠfX;a\Å\åØ*;ž›KÀN4f1Üz‚bìÀîvd7¦ð£ü¼c“¢{ñâloºwX+U̹ Õ{O‡j£ó1W¦Ký¥ZHæÊÞÞvÖ˜^ÙY¯šF5o³;;Rí|B¹röŽ g]˜½e1`Üä:ÜvbÓÛ'IQd‚²£ÁÙ^IË1ØtÈÖÇ»m„U² ÅX¬#8làgxW]°\ø{ÈôO5¦+—ÅÊÄ;¶„ÕA¡Þ ìeGI*Ä;¡QñÎ¥,Ê›ÍK~übËÆuàà²wï-¹“U3<éô3Õ¬úXæ â¦[ÏÝ;põwß\öУοF¶R¡¨aâ ãf" Q)Cµã0« •@ˆ:¯¼ríÿ½|Ę£Î¾(¦§²Ûh‚])CÔx,²ò›Ÿ¿Ìöwë3,»áa“†Ü ã§çýÏ}þEQ5¤:$ݶåpÞ÷ß~ÉIP~MÛs.e×#vŒ†ó~Ÿ÷¥ÍSì(z¾â°s­½CŠôˆ«rnO=«ÞÎÅ?ŽÜ;£n½»G?¯4h‘C¨l Z #)±0ŒB¦¬‡[ÇŠµ,S—,§H/Êýí½w¾xã?f"¯c·s;õz*P·.ŒñØ– ‹ç~eP¤0®ÊX)Ø®I 7˜yüéçhéÙ2‰îÜ´zÉOßÃ’]‹1*™½ªXv0Qj蘳Ï3Óë$À ¬ð²_™õðukµ=¡÷-uoûÍÄ6|ùYíÛ|áU7Ôl•2*äj¶­»ö·¾7çñmOïÖgäø"=“Ýàé¢}9e7cH…¦¬j¶4ÿµ1¾2º}«®öD‚Ý—'{Çì2RkH4R˜ÿË—«¶Y®“Cu)‡µ>òäÀ|eË¡¹¹ ¾ü< -¹8”ÝÅ“µz-[·:ö8“9¡hÎŽß¿ù:D-ÐÏÙ ëÀ˶hàÐöÇ5lß!JØm9ëÖoúñ µÂyâQIn}Ü MZnz¦À–5+þüåû,ãŠÍö¥0**ƒyÇ\õˆã:6jq„eaj¬Yô˺% ‚ÄÔ);çŒe« ®34quê†_çå¬\€|ùÕ%vDŠÉôÄÎggÖk’`çþÊ øn×ú?Ù½:ìa×;O€ùm©8ùô³B™õ-JÒ÷×o?/غ. Y̤d±—6ˆ­)r¨Ö±§¥¥×µY "]5÷ýüœmþ(¼š B¡`J‡³»Úµ,XflÉ—ŸI¹ÛPé8šgÁâ3”ÈÈ:ùô.¦^ŸlÙõËÜOíâ\öZ FŽçb=\6Hjκ€ê©Ž¬ÓèŽ_¿™eEãšwŪ7–) Ø4”–Õ¶[°Á"$åü]K>ÿ$†5ïlZf‡ºÄ H†Ésò9=hzÝ€ëÄwmÿéëOU'¬¹q™…´³«¡¼¸•€­¦tN)­6£û;ÖÏûæsfÁ3Á¨w1žLØEF4Li×õ<;3 ¥š×­ün®#™qÍ;÷†yêa3ÊzJè¸3ºK¡:º›ØºjñÊßÄò!£¸%wÆ;lú®¤ý_{ï§E‘¼OO|Ã&rN‚IFÌ 0!’A@QÄ|wErœDA9EQ0 Fd"É »ï¾aRwÿ«zÞ]ö]’œw¿ÿwêãí-ûÎÛÓ=ÝSýTuÕS¥/»á6, :øÏßWÿºa†6ñJ^ y¤ªNÁ–Š•/iÜÚô5ŸŽUu·ï)•¶0˜gW¬tÕÜ´òŠ­]¹zþÓ{ï‰ú]Öu{®u—î`á‚-t¿®øhêóƒ7¸øá³c*(0]lîØ’–žÇCÍ:S/6@Ì0sv®úhò î7tì{퀧ãrÀÀ<;É6¬°_1aüŠ©CÝÛùί¸Ri|YÕÈWcžÿlæŒö#ÆÖ¼é.5N2idÞÈ—~xwAù:]sÏ&×Þ¬Oä¬ûò‹¯¼Úcä˜*35:,Ód$ E¤Ü•cÆ}1gú•µ¿©çK â æp,t†’­º¹a)¼â½yËæªÐ ~³Nñ¼ìåÓ'G'š=Ð¯Þ ÍÄ£u©¨Ž‹}šk¾ýx§_¾û àþ•···Ô4.ÈF±Ø‡ pßMcñõË,1æÈέ¸Cí’wÜtÿƒé5.tä Â`  €ƒî‘?\¸|òkßN.¹–jÒöÞ›îí’V¡.Xª^ÔþqbœRà.,ºÿËÙÓ¾} Ña,ÆYºÂº4½½=I/o«(DÐÈæGu¹›¸QŒP±Â‘Dm]O»¼y›kdU¬¦ðøâdï\>cÄ× ç€‘Ó›Q¾Â]z_Ò¼MTI§zXðÐyµÕ|ñåì…‹Ú ü2q©90aÀ{·¬ï:nqÍ‹› KG‘• hÍŽëÔ‰Ü9rÀ}±£ñV࢛@ƒßãÈ’ Û^ü—5£ûÜm'"®–!‘âiéU™Bk׋èFÀVÓ,ÙÔ”t7ÛõÛ©ãÖ¯ü=‰€÷×È,u}~ßÖR‡ÒuCµUjý¹fÁø×þüæcÆ?hjVµV{7n~›“^Úf˜®kÈ–o>Ø)k}U«NTUÒdçÛ¹ãÞž0:T¥ò­÷õ¸¶Y;WÖÅ1èáß­nóôÐK[´±eW²€é*1W½3ú£±Ãoø_—ÜׇÈQ€a¦œ!ƒJuÍŸ>rèïÌ•x6 Ù𠲞*A)XªÛË#k_rCBdÙ&ÿ³ÏÆ•Ë%fW8R+%¥•ì?lxÅzãRH“IºýÔ£[¾ZÙæù—ÜÑY±Ã *Ý2Õ‰Ç ÃÑJ*Ì”ˆU‚f÷ï°ýÛUmžÑè–V¦€«Á§ß"[GwŽüPdû¦'_U¥Ñ-›Lz¶ßöUË:>7ú¢Û[f«ºâð,ǵwnýÜ £ÛÖI,ïØë¡È^M«î“–UjØÔ ±ì¿½1¨/ß¿EÂj®ÈÇÆg ÔÓ³úM|«b톮ýjü¥•­ð؈ ¬ìy–†¹ÂAûh Öƒž–žÈÍPx6—Á,Q\žeÝdSIDÍß/}oå”É’i5¼ùú>hThjɰâã|õéÜÁ%'*ª\0¦çSÑ%%¬T¨Þû•7Ê׬—fýéÓg {Irãs“y‡J‚fÔ¨ÑïõÑJ¥¦jè’¹vÑÔ_RïÒVÝÞXc9?|?¡oÏr”í;rœœQ™b]dѨú—K~ðJ¿ o¼õ—Fç™°p J Äš-kª±„ûßÌxcéäáµìpïSCM€†"GÅbÊÍ¿¬ó±ûIÞÁ¹¬Woq·gŸ…7 ¾³kíÚI ”òŽ¢{1ú¶ÑǬ/nÝú¾þ:ºˆwóêog ,™q,ýí­Q#.!Í]ZÓÎ=ïêÙ7 OÒ¾]¶lÙs÷v¢_•kÍ}¶E›Ž …óOÍÿb䉿IÜÎ7Q@X Ýóè7µl}@J¨ò»SÇý8{ Î4ˆÇ ®d¨’E$%­ó+oÔ½®™%4Rÿ=â¹µóFñ‚¬d؈,e–í9tdÍ‹›ºjYæÔ¡Ïoÿ|‘äF$ê$Ca ÜT#%½òjÅú×G¤!Éóìc;V}"!W˜…êHð!IZX*QeÀð ej^d‘0·ã3z7ßµq¤iP~lœjz•º½† Ô¬cJ ÏÍžúx¿£k¾•¤˜¤ºLÑKW¯õä°1f…+`)çíÝ<ñé~9ÛÖƒU%ˆ !°ØŒŒ* ?KÎ(†´oí¸þís÷í—¼ãR~8*ÕJ׸¸ßŒ¹±¬RœñÈoß|¤?ü§$çŠø…Y5¤`Ú3“æñš—‡˜½}ÝwSŸzTŠxL’ È” ŒèάØìÌôj€Á’»jþˆ§JvŸÆ±ómxI3Õ²Uz›¨UÛpì­Ÿ~ôÎóOIô¨¤ZÉ}  „Vºj•Ãæðò ÒëËÅo/ù²Ä"ȱ“©ŠYlr¸D­*[#@Ì3^\:c ^ÃÜcá—,Sbá¬J™÷u¾û®›®•msÒ¬dóôîÛÑÜM÷KU‰¤WÜw(þç¯[??Cvž° «Ö¿þ®†×ÜÇb”RˆÛ¿}þñœg»°~ý®cæåéi¦ J?¡8 M R»”E<…D” “ØóíÇu¿ªmŸ›žüçK*A‚Äu-ÃLg‰ÏÆ[9cÄEî»ëñWšŽ‰;JtõØç¿š5«ã+Ãk5¿›XJˆå½;~èo½}Ó=nìÞßV³¡aš·~Ùûs‡üëác+7i pߦrØU2µ´ÄŠÿ›5 àþ5}^….D1lc*³(åFº›Ø¸dòâ9³+5¾:rèOëȾ;:õ¼¨Ù=Q) s¬Çu@¹0И–¹ä©.¾ý¾õ \~[;K#*fð¡LzrâèØÇºgoùù¼:¤—*·eÃo±œÜæ?ym«{,ë ɵ¹•±ók÷=´ó·. ÚÆ_7GsÝ_xå¼›Ú;$™Üvn‰8 feÿ²úµ'•­œF . èúw«×„3Ëô~}bà‚†°ãrE“Dtëš‘´ •j—ÜH qy;Ö|›aZ=Чöíó²*h‚"º÷×§õïjèüü&Mâ9G¶­_—Uµv¿¡ce*;JÀ+7V(`Ô_ÎF0œ§,Îe)Usþ|sðC;×ÿÐyâ²Ú/1턦!E"QhKX“;¾oëäÇ:¸¹ûzŸ¸øf‹1ŒØåTÛ¢z|Ói ê¿êÕ·XR|ûªu@Å~ÃG«uëØ¡@(A3mrTã!Ð*ŽydÏŽù³¦f¢ œø–ïWÁvÕª{ß‹o¼[)] ëS0!Çöï[:sº·ŽäìX³)MO»¹÷#ßt›Rª‚ű@)÷¹ØyŠ3%Ü?ÿ²úŽ™g{p_0”h°kØfîÞj§f„jÔ­«úž­[öÿòK•ªUZõ¦tÓÛV‰¦ØŽ&›®âÆA!;tãÌá>UÌ uL$vPͨ¥(F@’¦yN8/y÷$³#à¾*â†û¨*Qvdûª'=Õ'©ÞÝÿÅúÍïC}Á,@ɰ%¬1ºöý‰s‡=SóÚV÷¿<ÙUt¢¨%ÌCS_°qÅŠ›û ¾¡í˜kkGVϳdò›MîlóÀcÏGR1*eê|L¿»VÖñÙ×/oÙ)×Åü`]78lö,ï«wF}:vD«>/7îÐKR¢Tvr:VCçÀøŠ/ÞüÓ*™'ˆðîãQ@­2¬@ì¨cvªá›ÚßW¾îEXúÃQÖ.[°ùÛO Òß Bî¹a4kÛ¹Âù â\ƒi\±è­½ë¿4Ü(…oaN¹ÄÕæŠÊlÕ¾C‰Êµ\ÙPÝøÇófïݼ ú¥1†I:0`_òîó_¿^×ñïEõ <‘q¢ð*Dµ¨æO%½û”—Ô•õÿ~gÖs}nêôhÓ¾O8Fº–'žN¨±4šX1iÒgSÞ¸ø¾Î÷<9IJöKRb«Æ¿òÙ¤I=‡ŽªtÃm …U3áåuïÌ»²k·æÝ³H)°:Òܼ­Ÿ¼3ãùA&L/ÝðGƒ˜d’P ¬]ùÆðogO»ªG»z¿ #Ð(sHÀ<Šœ_&Õ5‘-ýüùûÓÞ:x nÑxzUoy {V­Ë)â;äXÐ*$†Ìçök÷ëkïðÌÕwu´”¤wžm3.ä·–N›½cÓ=÷w®r^wßzwÇÖ-—µjuÁ¥M)׸– =Rhÿ·çLÍs#·whU¥R…y3æfo?кuÇ’š¸çåˆAYîŽmï¼7ËÈÒÛ´o­3iÁ´w`C¼ãÁJµj¢z¨¢q+¶õ§×¸£zÍê½G¼'§gÜ·sñ”1›¿ø4-³dŸ×ÆeÔn»¤#6S"v-4¢L™Ìö»ä=2æ,9½Ä]»…JUÀâ@$?ñæ?1_þÏHaï¾L™Ù?æ‘N‡wýÞuÜâjõ0EƲ2&„ÃÞÉ-`4nr)ÒL)Fäè¾& ÙòɆ–ùȰ·õWG4‰F¶ø~ez¸L†×Ä$¨R|ÿÖÅ£_ýã«zÙšý^›Yµ¶‹$†-CðIŠú>ÅÁý®c0˜ÇããÇÒ¿.V•Šíß5ºKó†·µmûèÓpÓÍk¿ÿhòˆCk¾ªÐèŠþoÎ:.‡t¬D•pïª ZÔ»OÕDš·”PT 3¤Ys4ŒPÕáGP—¼ˆðS0ŠêHŠ(Àa»U@‡$rþüáó ƒzUkP·÷ˆ™9á*€æ1êÙ° „`6Ö×ú&¿óêÓ5¯»³×É&e®f”fGÞ|þ‘_|Ѽÿ?®iû@Ìe:ûfúð%&6jvW·g†þ &X(2cSë°ûûå^x£ö ­Y ‹z±”’j¨ö—sG}4æõ;{¿ÜøÞ‡=ï¾%§˜)ƒI@dáGÁÈC†4;ˆ¨DùŒ-—U=áò0p0ËÖ *©lEdÊ¡ÍÉÀä3I E‡± n@›í?¬¾oðð†7·2™ €kêz(ûà7ûµlÛ(ú6„j“E5fºrµž£Æ—iÚ4!+XÑMhüÑpHZÁ PQmFArŽ‘È˜u ›/‚–dÒ£, ½£“ŸQ\„  ±ø¦ïF>ò€ µîÕ¿ñí³I&`G•bä°”ÈÛ¾æ{3«~YS¹Ty@ÚJ4çëg}6eºáð‹o¾¹ù#}ìR%Ë€A£T—¢ 07.S ¦Ï7oÀ:æDÈ$ÓoÉ!2Œ€/¡2Kf‘ÂN û¬Ce‹leû7˧ê‚Îl4ÊànAÛ’m„J×kúàK£ÓÊTŠ T5űCÔZõï÷?2àü[<øâȼ` Sç`j¨®‹vŽ.Å„õÈWÏùÉÄauZwêøø‹®¤€óW1fœÁ«¬a85-jÝ*ŒdY$®ÈÓQ²âºÎмBtÆt°i˜’pÁ¬1=G8Ë3`̘.ƒ½åÚ˜GÂN@µEÖH ”ÇF¨!1Í¡¶ª‹²ÝÇŽ*®©ÉJBRãðÈTMgN˜ÆÃÔr9ªä'ZÜaŠ‘&r#¢2åÀTô(¢*™îb0¼Öˆ"+¦L°02Ì‹…cäÚ± =ïÎ0ú€ ia¡à‰ ¨®eêe½Lf"Œ•Šú¢ŠdéRBe£Áæ%Jzo 9Ä²í¸ªfÀ›Gñ…#â8ã{ \™ .‘M0•4xáXÛrÂ>,ëÇ3ÕHè&v0æ ‰›‰1× ë PMEËo* "r‘÷ŠÅ¢EÕ6ņf1 eƒÛkc»¼xXþuÍ„¥ æ‡ÏÚ=¢ªøQ)ÈóbÀÊÇ+IëGr  3ïQ%“á1ŸXð#L‡{qE³¥txCXÑÑV“È[¤¼J¹.UjI0þdŒé49ÉCGa#Ÿ‰ËEX$ 5˜(¼ŽGL_mÙ"ùC:™ è¡8&®5 ˜ø;Ö›ã^3ª;jƳÿ<øÛÏ-.®6­™ÓŽÝ”¬-QeçþˆŽlÄVå ÂûMÆYW¹Š“ææ†ïÏ~®ßù êô5ÛR3 ×Ã’³gëo{öí­X«nÉŠÕ)žwaì>¬Éu¶|µtæàžÍ:t»ª÷ÛH8 ü¹iØ™2ý÷È‘_LY£ùÍÍîïU·Ö%ÐëCÑ}‹†¿ôëGŸß÷¯¡µoo§1M¶Ο<ô‡¹o_ߥëm½ŸÈe™’0bÙ;>y{Æ‹O;;½Áuª¢®“Åa™––øbÔØåÓ'_×­ãmÝÿ‰šÝвA¡‡3¨i§K–#9ûþøá“±/Ù¹ôöŽ=]3²p΄¬ºõîî>°Rµ:q‡Ëº©ýšjÛ‰4Ušõd×õ_­¾ãñç¯lÙÁÊ݇ DZfé T;7$ƒr“’’5X—ñ y:l.0ƒ„èŽCq+€‘Ó̹è?8ù{¶†9Öø„­Ï† Ñ%°Æ¸ ¿ê² †Á²íAnåmùqh·»ªV«ÔgÜ9«œå$b{¶ìßK¶òîîѽÑ--ä@)KM3MAU•‡šGáΘ0eØ,5#ŠïVˆÀü¾ü9»Èѽëv`ËÚ^£æÔjx¹­#µJ,È]@ö®¬åíÛ3®_';rxÀðÚWè*–‚p0T×t•´¼Mk&<Òáþˆ¡Rç%¸m„¥È?‡?18rðhÏW_­Ö¨±Cõ]ë¿›úXŸŒò¥[÷èUû²ëX¸´™³o÷ê% Ƽ¨ï‰1󵺗G;¼uõôŽ-ËU¿°mï§«^q]" KæÁ Ëæ}8a43Ê5U+[U‰`r%3ìȉÁÁRñpÿ±ó,9,×ê:rã²ì]›'t¿µîí÷´ì÷\BO1ó·OÌyn@ùój¶é÷ìy¯«!ؘU,Çè|7E0À}ƒÚ @ûx ÍÞ¶þgêð’UªW¬užë¢»ñtâ 1ÃJœWx ‰éÌÜýí²{UoÔ¸ßð)fzeóó@ÿcàÆ8ìi`Rlü`Ò»CÕ¼ºy¿¡“)³EËþå»ùã^Þ¾~ã_º¬e')”NìÈ·³_ÿpü¤+okÛiпöƒæ‘I'>±ß=ÛZÑé…Qunncia,\èØŠ¬ë4ñÍ»}­EÿW b÷])p ~;OHÔE×#²ÔQ„,.Vs—D%¸ÙãY³MhTÇ“‰,àË%:˜Ê¡È°Ç$výþöÐgvÿ²ÆÈÊhÛóÑ&7¶¶ätCIñC;Ö}3íõÑCGûLŸ[¦F -vô«÷ßþlþ´Z•«—.]µcŸG£%JGQç‡t0§cª’¥) SU,U'›°«x„­âMm ?øigX`î7,. «>sâñ‹Ûex²Á ÐN4çÇy“?ÿ­r¹ŽIêcÒ³$E,);;§c¿5]n”¬µ¨áZ™„._8÷ý7ž©{]³¾/ÎE"n l‡B§Kñ ɳ0›ÿÖ˜ÅokвC§/q%hPÓƒqÔ*z’) w—9ÎÂT]ªÛ€Æ4•:, S+˜°¡jºÂÐÁ ƒÆù\¯*šîH ‹,´Pˆ+¸n»² +ÌÀÀkNa¿•lÍ2ƒ •ˆRt—Ä%Ç‘|•‹zB0¯ðâà`"ÕíU.Îv ¼3Ú ÜVW“¬©"ž¨HÉu°®7Sñ¬È•:– îRô"sú Ê ›Bea®6 Fâ‡öÜðÝ] /L‹ÇfNŸRÀÌ“»~×®¼2ÕŽfVؼ;;,žÓh>3OjC3ìF ìsUvÜ0mXµhæ?©P½ü}ƒ¬Ó@ж>]úþúU_^Ýí¡VÝzÇ$\v®HšQ]çІoÞã¹ò«µü¬”Y6DÃ`lÆu'HÍß—,Y1eèŸ9ûª^qM»V÷Á Woúaõ[s*–=ïÎç^ÌhpyÀVâ{6}0qÈÖåË/½©E³¾õ*&dÍ9´kíÜ1ŸÏžxkßçëÞÕ5#œ±wçVùÐSʵusã;ïÿ±ò˚ͯ¿±EgXGqT¨ßD• Øî¾ k%;¾pæ˜=ëV\Ý¾Ë í{)‰È‡“GýôÅêó¯¹ù†6j6¼ÒVC‚,ß ªìÏ?6Ìò„Íå;z=vþ7™*zY4Feô›x†½Ø ´à`E(¦ p¦17†[Š¢qL¨Çj;°ÚŒ°›° ̬¦Èd$K–„Utt¦ü‡ÊÐbZ70ƒ= Ô„ƒQÀ`:‹"È ŠÖœð:æÜÑspÚMT7ÛvIÕºÒ3ô[_ÿÑ¢‡?™Y2ã·ž.›Uã šëyÁÜ£‹GLÊË¥=GO¿ü =¢ÙðÕèGÜH™ê5îìÚG*]ÕÝ·{ñø×rNùK¯ì4à‰¬òUÒìÞüû”®7ÂŽQñü&wwØ ‡öîüxÚ$)­|åíû?­—«êÀ6^B†oMÑa÷»ŒEï>O’«0f™2µ×¯þbé+}*]~uÓ¶Õ’e/¬Usû÷«ß~í•ìí›ËT­Ñ~àóyá’ÕêÖÓT‚Éd<_Û:UWx`RW,ºõç×{?àFò®ìÚï–ýOǵï‰8~L‰ääú}ý¡Ÿ¿ø÷Ì e«œOŸ'j@  U*f–«”GB²²(ÂýM‹ßœ7ôñÊ ®lѵ¿Œ©oÚÒ)oìYÿª[v½ùþGÔÌRñÈ/fù~á’ ^ժϓÁ‹/…Ýìèšï¿öÄÞm›®èØûê«™¥:&M銚³sûŠYc~ûæÓÛ½Zé–¶A èbéÛmË´.8G…ÃM¬* "N‘HÀ ,tzR[À‘Ú*óüƒøOÔx £÷ÿ¶&-²ó½Ñ¯þí—Ë|¨\“A7”¬Dtû’Q¯Å]¥ëÈ©7&,qxÃ'Bç.™òÌžMëšµ} öµ·`jç×.Y¢´ XHÖÃ<‚QZ–ÒÕ]¿o`Gö¼?eÔŽ_7\Û¥oó.³´ÊXl#¼‚ˆ«Ð$Vã‚°Ù#MîO’Ï~È“sƒX_ ÆEp&Ë…}Øàp³ƒ[g¼2ðÀÆoÓ2³Ú>øHFÙš²vŽîš3fH$Ç*W«A·!£äöÓÒwÿ=qxÙ¬Ìö={«e*Æ]Õƒ®ijA€÷¤T­Ë´R¥âlsDwñ9R°¬ €©$#Gˆ#ëˆÞ\‹š²* —ªˆ—$ÛÐ`±0œß¶¶¯Y5ÿ_ýêÕ¨tKLJhù:ejÔO×õø¡mû¶®=´í·¹Ó&éé]¶RÆÛvïWì˜aæýúýW+Þ›\­þ¥­îïKÕ4f+=½J½ú&ØñØî-?šð,¶ý“·¿^2¿Ö57ÜrOOž¢f(é%ª×¹ÐÛ@>pØÈ¤sÓá)šªƒÏΑ3Àö޹ª¦äÈ¿æ*ŽBmLŸuöT1ðUà$¨Å¨Eu„½*UŽk(f$.3®Ó„¦É²bÛHüs<Ó¥„[q¸+¹ ]¡‚fR“´L A3Å:HoNyA/£ÇƒÂÌrG“ñ`…‰s.žñPX ìþšl ǵ(DŠfÁÕ!ê˜`º’p,ÀîbØT ªÉ,쌰'¹b`Y×Öd,x.ˆ0šƒ£…C¥|_Ï燆ŠL):p½Cü£› p•©qÁâ’ ÇâsAu©˜oíJ5Ô”báûpm°Ïi œrLDc—€æx?yÃt‚¹`>¤Ôq°“žÂU¼Z£. n zQ°"+Å™—¹Ç{#ø«0`d—˜{“šA“yá@ÉS„#²l…CÊfLN"Ô`(uЂõJÂc]‰)Ш ÿ!5ü  ¾õ0ܯé ÇÁ,$L5ç*<dvF’ØUöõøKm—ᙪ"ËÔ2°-êPgãš³•ÝØ¡‡ý¡eãz¡xÎÔ™“Èöm»³2Âñxîú»b¥*çdTÜy8ªåäê8Ñ'®LàFk•ª:!i²ûËw˾9,{Ç&É21óI¬ñÒ•+‡ËVlrû—Þ†iI ±>˜)²ÁÜ’Rì÷o>ðÔ vÿ|±î ͽ”/€ zÌN7£¿òÖÛoM‹ìÜ)‹co–Ì*UºÇ/—itmT’³ˆ2õÕlú`.2ËòÕ¾­Ç@°öV²è½Wž"nŒ+™¾>±a“KF½ôÂÖÏ>””¸DLÉbðÈ©6˜*½“–ùðk£kÖ¹8DÈkõßöÝׄ$¸dJZøÎGÞµcõü·$ÇÅܦŒÒߘ^ºv£8ÑBºrâßè·ëû:?õBãÛÚEä°#x²‘K?X“’¨ ‰ç™ è 6[¸6¾!ð7ŒrÄãd¤ËB\$І%‘@ #³dxurE˜Ï ,žã1¼ù\ó^Y2¡£*̈¢Ûxü÷×ÜøËÝ;Þú3ìR’(y~ý#ßTC™ñÃû掲õ§¯©•JÕè3ll¥Ú A“z+ýXö Ó3`å‰ *Î&Ù1RÚ¿[ŠÞô$ÏŠHÒižBü¯å!¤ìóÿZ'SÊiM`4s=.L e4YjÎݽ}GßWGW¸øJ;¥Rš÷ǺQ÷¶²7ƒ•*ʵÐC£§£F"°˜3º¿>¾qƒzþyðåîÈy{94«€­TS’clhËZ Ì#£'fÖo¢ÁÝk¾9ða€4åʔޱ{¤°ƒz Bã«Ú xlƒ‰ÄYa®ài qÆ¤Ì ™¤¢máèðW ªø…QcÉHI¤‘dìP¾ÊòЕª{v›’bbóå„ü¤Âº¦!7aÚuh÷·6®°£Sg½IvoÙ•™Ž&îïN”¬œ—^që\LþEˆª]úxî!©.–8!³ Ûüó·K¦Mì<\j ãú»;6¼¶™”^ÒÁ@IŽ„¬"‹NgVˆ'~ùá›é=|ÿ3Ï5lÕ>›jÔÑìÁ›˜¹?¯ø|Õ{ïÂÆSa)ê%­Û]w÷}– ¯Ž©KïÍžúË—Ÿj°L¨uÑ-í®oÛ-Àk¾\ö邹Ì6AÜ׳OzMÞš2qÇO«4ž¹-ÖªJÏg"§Uj×w@Õ:µAMÌ5zÿ†½¢ÝÚ¶]îÑ#«—}$SÀê®Îì2à¥PµºyD Ë,ÓŒŒyrà–ï–ßûÌËMîèpÞ? K6ÂÖ‰ºìÜÐÌŸQà>?ØgV+XÌ–låMúbÞ®mªˆ°Ë¬z~ûþƒå’`!&öîxÌk‘ý;If©Ný/YåSMg€LÐèwÄÙâ_íȹ“”ϰ¸gEÎäüá\<ðs&g4Ìÿ)9ýžÃ«å ¶ñªê‚}êÄt+òÚãìß´¡ï룫7½é«Šš÷ÇúE㇛9û1d¦ˆØáÒ­ú>qÁy5b‡öO|åEËCWnQ˳J‚eY ¸Fæý=U®Z-ØO¶oÚøÞø •Ë•ºóÖæoÏš‹%†n”.סwÿP™jr(ÓtIξ]ó^z¢zj7·h1}ÊjY vËU­zo×îVÅ:D .}!iºÀß!7¾á“Eó^|²v½Ú='¾•C1ОFH¦n˜;GvüñöøQîá]V\I¿àŠkÛuéeè§?´éëÅo³R²FÝŽ}j™¥lô³7?Ÿ3jùÄWÞަà9jiv¥R€¢‡ ºÙ¿{ÖÐ!äè‘KÛÜ×ðŽvÉ^œu??vl6fnüîë%3§¨˜— € ÿ&íÝØáþÆ7´HhaÇeg ³Óöã—Ÿ}úÞhjd­]§N¿mܸñ§ŸÜؾÓe74[¶|ùÚEoJ“õRU_qÏC=sgqð×5 ¬,5|S—žõ›Þè -¤é›Y#–N|ã‚;îëüÌP$#Á¸r†5í¥â:ªE¨9à͉Í5${ó:Ù»¢Rò ³’ÕÚ÷\³J%'–óÖøQ{·lRðL×~NQ”Q ¶ìѧVã+-Yw±t0`y®¸ ÅŽÎýzöŽ?$+*+ŠÃž©\ï²Sˆ¢í¥pÓÖSÏJÊžŸP6¨à¯¶.Ͷoýcþäñfö><`LH¥p‰Š·wë]ö¢&–¤úmÃ{#^ÑÝ8‚Šcµ½„!P5³D«ÃÊTª*‰ …bΔŸ#\E“`1Æí;z˜µw›ìZ\ TºäêVõsd}׿_¦Å(X(W-]©âm[¿3gv"'’,;†þOXì®( ¤•¬YïþþO1=»ç·¹Æ;ûø’Sa,‰ôkÆ]E­ÒèÒŽ½ú:jˆJð¹&€â®.dqzOJ¥úŠÛ˜þ÷5ü¬ÃÿFO¤ÿžá9°*4ÐÃûwÙð}‹&©NÞ´™“Èþ?vd ÜÏ[¿kw¼DÕ¼ôJ[D…‹ªpñ‡|÷'¾Ž8'B7±¡?š®R3–g+i¶Â,u%œ'š­*niãÌ5dàÖ¯?7ï…ÁÍ[·nxGk­tuÊ4ä‘%è.‹Ë!'O‡×ߎcÒ¯¢[FÈA-ø.hVÇMä)ÔT± 7õŽQBç–?*Á5-ûF Í•²¸e†Àx°cŠD±ÒÂ}YSÐ!LI·i$¨pÛÑñ€cš±lÉÈš.Q—Ø–õVL[%Z¨Œ‰ÿÌt–G·ÿ:ýŸÏFL÷îÞƒê\ÕÜCõ/lÂI–*¯ˆœÜ‹L ý<IzÐOûúû…¡ö°5:q¥xn»Ür5R"ÊdµdéhK$nìD€Ú„å¨Á4“(Ú`èh</öèÿœ‡ïŸÝ3<9Ü?}ïþiª‰ÿô¨O²TNs»ú›ç¥@N‚°AÁr‹§“ )mì ì²è‘™£_ÛºòãÖ½úÖkqw"³l‚07µD.Ö›á'H‚Ä…²À& B±(W^–Eî,á.zÞU#âr#«¬…ôu€_9ÇÁÀÀîÚ EUd h,Je-­´ÅÇqBº"9fÂÄf€i 6=qþj<àÜó¼žò¡¨"ÀÓÁ8¦‰5/˜ýòSµÏ?ïΧ^Œéië\øªëŽ ÊÌÉËK‡~)º ÌHgŠAtb¡†=*%þÄÌ%0ŒtNeDzi"–ØþËúÏß[ñþÌ·ÞuÏ3#¥áKhN  ÝyyiX Fcá4ÄEâNÒsl¢a ÈSƒðú{Þ}ÐÌÌŠɶl˜qH-¨oqÀµ¡”`+pMr$'aÇrÒáߎe‘’Èêƒ'  ´Ž‹þЀMÝt~„ÃãUÒMÕà!Lˆ€ ÝÎãX*Q–Ó2` ÈCbGã‡÷}9{ÚOË?¿¤õƒÍ»ôaÈfí bu…œ€K Äi3F¤À  ˜Øxv'¸“ˆêY¬H1Ê„æÁ æ8AUvb •$†>;šé(6,j—ÝÈb’®(—I–ŠJ˜Xö''®"ǶPdÙâDÏ°Õ #ßOÙbjdje[¸I1ü8 8j@2 æµÄLErülN×…`ê®ÀÔ27û`ºªºL-@«°Àe¬êƒ¥–¸®ahü¦b¥äýŠU)TÇ 7ƒzµ„$W‡->r$ƒ8ÔæÄ(;"+˪ÚTKÄx%‘qŸP™ÒByy`·+¢Ü1æÂbœ†¬RGQ’¡f–´0_Õ$–©Ù®!2ñh¾ÀãšÆ-.9ª 9j°’”t-­IÎ_^hjN_cŸªžój6çv/(n¤ÅŽ:»þ¿û ÏA›6ѰNÂýïnmROs"3fL${7oÏÌ ç%¢ëwîI”¨I¯ pŸ+›rÁ å3óàÎäŠRa›Žñß–Šiæ‰`n“m.»È’A î©ëÊ*g+X|׉Tö٘ז/ZØþ™ë7½YQÒ0ìH¦."pYhŽ—ñx›ê:|[Á­O%†„?Xâ Y“A#ÎÖƒ² ~b®ƒ`ìx¾Ãlâ&°Ø¸)‚y†pSa×dzB–©&éœ]“ó‘yO™wê≃‹ l‚ŠÛu,ìysp¿­?|×nðsn¹;¡gºxPDù”;-¸JI–?=PyFjqmb ÇR;x†á€ì&†ªcÈ–…Ç"‹¹Œgß.ÕTö'I›.ƒýP %<Ï;³s‰3èᙋœªÁsàÝ'^,⹓¿6äÔ¾""”:ñÌåÜÍKAƒrªSLjŠAµâ?LÙ"®iˆ™ñhí»ö>l›G¯º«}û'_>l”´,³´ƒXg O¿ñŒ^½‡Å8…^ˆ â<ÅdR)ÄEQ@<ÁGÖgŒSP4 ©×E,&-`|…îà¡‹OG÷>Ö •4 0f^J¦Ž¬~^QÜsñb樎¡¹A“cÕQŒÁ޾—¤|÷‹óªò.B°£è ‹¦ +{7FÑžðv(*,c° .{¦`Xƒr ‹Šu$°wþ}Š»åIEÆÄÒ šô²{DÁXDƒ –"†3‡¹š®¹ ¬ Å:D°Ó`™()"¾©‰Œdƒ]åz މÐqm ù \CÅwÇ>"Q$@`J†'‰0 hÏ<ÍSú³ÒŠ';Õ,Òà_õLÿôöi6xZëð Û<]9¾ÁsàÝÿï=ƿڠMtýÀÎì ßÞzIÃÊpçö™!ôîïÜc–¬žª´õ`@.s)(-*K$éoã‰×Œ‰3\¦zå“‘ 4–ÇÎoÓ t‘HEí¬]8çó%ïßÔíáË®mA)¹2f¼fºÔ¡¦«I˜û¢ªÜM WSƒbLœ§Ep"çðWY¤$« ›‚Ëš8F€ÞÅ@r3Ïð Ï"0˜KÁmvÐL :–‡1^51ë~cÚcª¨Á۽̃˜£Rqeóèü‘¯o^óí¸ðš[rÀšÑu6uF%¦cx¤œ"¯°à”ª†xìïÇmEgš‰TpjZ¸‘Ó Ï;ÖK¯yµåE̳ø€¾ û>³tžº‰¾Ïv;©†MáIk"0Í«”î kA.ÚxᮜY‘àÂ_,Ü`êKŽ]Jn£ÂÏê¸O ÷Ä©\§1äâg?U#Rqˆ¤º±ÔÉ9ŽŸýr:õÐPNÌ“ß Feb(¨‚E4ÑÚÇ 4л[úÒS[7ïèðè Ú—]EX†@êE{Žì è¿$É:šXÌÑ ôÄüK¹Y,Åû=º°ÓóÔÃ,®ççdÃ"RÙÉñÏðØåè³;å>~ì{…<ƒ…-ð<ɱI>åS&ù_O –QIJ…y1χc*µj[–¬‡ »vÚô]‹&µîÏ™6‘lÞµ;33‹G6ìÜmeU‰¥UÚ²?‚>§Œ³`<ž§ÊKˆ.­'Ô `ÿâžµŠqrH¼ÅAä]Ä=?ž8œ%ËKr@Æd b£ÙÍÒmÉ£uPÝaÀáŠ:;"׳$Hò?.¨*cTL-Ã8QÁëm:ùo†È'"ˆê”ƒjqD(%ÜOR%=4"ñEøn‰È1A'€,@-ÃõXBØ>|DMXJº*g–‰A3Ì J®N¡ ¬*•’_ïø¹/4$õß½d—“·SHp†òWFêÆ ÝæXÃ…/FÏFþ¢òÜJ®"&Ýù.ì²€h2Iº¨î™¿©ˆôtá]\ÅÐê„EH¤¢=<!©z›ò‚þ,ppГĂ·ìø‰xæü$ýxuxqØù, §îyñ‡)‡_hÈÇ óøåD‹^:¿¸5I¤S,ÉÓ[Ø…%å"?¶HÏ{ýwˆÇ“3ˆîk9¶7Kd•©€|ßLã1¤ò.¼[tF䯻É|³$*’E-Y¤Ú£Ásù'{ŽœR²´9fNy÷§\ÉF¹H#Ã/R’â°ÂëwÊÙM9)è‹Æ@[rCf4vÔŒ24’`²¬ÓK”vB0 ò´!.Ñ-¯4‹â)$ÓÓd¡e$“‡uœ(£ šÃ0—‡3J¨,* £áÕ²ÉDž  â€U‹IÏõz^ãvª1æMw{V™äÕÓFÒQ™‰/¯z=Ì`ìãùo#õ”9^¯Š@PïÜÇûÓ;]L(Ì?ÀÔ.ä_gAÁ± >MäÐ[· = ëR¸˜e ÖßûOÅ3Xä­+€ûÇ'Å{lq¾X–ŽJ²`ð$¨Ke )â_1n¾RU¼œT¸ ™Dî³xì,ÉlÂj1®Y^l TÊT ëœÌD²'´‹¸};C^Ñ$® […긨–ÿ¶zŽ*I”×”Krr[ôòK Ôˆ$B~Hòbq°¸pñÈÉ‹“©bM¦ü‘5Ú/´´NCc§žÍÂz²XTQÅêísµGׯq=OîM§æ ;à¹Ù°Šy†…þΊY §¸ÑÉz•jmŸÐ«d crö÷~ p+Dœß"óf¡kRôFÆòVX­ë:–“u7{Ïþ ß6¿´®fEÞš:‰lÙ¾§DVZ"ž³q불–µ+.ȱ“ 7²¢ G=ûH¼íI׆Þãï*ÃXIÅSîf¿SYœžå{#‰ämºÜd±1@500G²U×F®Ñ Ç„À„öö:|³ÀiWØU!F,¬ñL¸p¢à ( zZÜ{°¢Àƒp]á>æ¥ÂXvYDáx„ªHe&r©ÐYÆUª$d’PÑQ#Y‚PIµI˜+º°‰æjdo¢1 m’¢´ä)I¡÷*¥-N¤ÔP5µp‘;NNlätlôc—[ÈÌQ ºXDö:ÓD# 3Yäûk¢Ò„7Âè$žÿ²Ð¬Â¯Ï'8M^¿‚/¦lP*¤ÄŠ&ºV‹>CÓÕÇ.Ì ‚OöÐóSÀ}žï ŹPÏS_RtøùöC¡?‡K -'™×Èq·(2äâüC§¹œŠô°xïiJî©BIrÏ/E‚’ËMò^OT&@'†ðQ!"ŒÆÃñ¸ŠóÙ uEôùÞ•cO@ı$Ñ¢]ñ ü·‚Gyv—TDŽB\)˜<Ùq‘(³è)(Ó™-CÅM ˜*C£AÂáZ§hLbž#S–Dí›È«Í“º· À C0dâ"yœ,J‚bcVød¢°Ñ …qq+âH< šßÃC¥È¾¬¥Zã=ç‚î½àZ*/XMBËzÿ X!€kPÉâc*ŸÓä®YKÝ FyzÜ»’‚$ÁÍ![çõt$“Ê–Ðܸ‹'«D6˜‰ŒÜ$,Ípp;t6 ®Sà€?…-£I)¬)îo#Æ|ˆË°?¶äRÑl`q•ÄßZ±©ð÷>–ó@pí»eÁE” ‘ \”$Ey›^‘%„ÝJu°‰©­E†/*FZѤžÂ7Gp™T1½UO’*´ná¢è§›ä˜Ó3ÿ.Rê`£ãA÷0–I¸Û\± K¸wcy Mölp’ßE±ËxpÞ«#EÄ“¤øŽtÜ#œñl‚‘óäéŠ83sAñXÂAÿâu«´I€b²|ªžŸR­+ùšö¸ÍýxÜ=>2I ÷ñ)°“¢ˆ3g½G–z.:_¤‡…ü)wÀÓÙô¿iŠá÷ yaÂp)å«rê¡»_s)EƒÇ_-Â/‘A‡F6WÒ±ODˆ$)ôõÓøš¤ªŠeÙJ H©#åŠíÝÜâÊFª›3u ÙõÇžR%2âñ£›þø=‡öǸC ¤læ6ÒÑW‚ ¦½UFR¦‚G¡I |ý6Îã3¢e'ËŽ¬‰³K&¦;ùÖQYvѽ@L ¸ð)uTÐÊžÏ ]Ë¥p¨À=t&é$yâÆ…»ˆ‹WPá<òFŠ>?á7a"ž'½,ãt £’Ãt4‚gÆèÊ"$iþ»¢X ¸Aã\µ1H2(ž¦º¨‰Á4ÕÅ:&è Ý`ÔÒx\†1Ü'šrªã¡ã¬ØÔ/ 'É#ô“5~Êž`D‘ÁªñR1У#Ž,Gé,>…}¬æQáÍÃ5s¢"À¯·9áÙLaå| 0 ß=«Š¯ô!ùû“©Š¿†Ã[woÆ9OžQãÑxΩTO}2|œw¿`"—@Ðw{ÁÁƃEŽñR˜Æf¸Âž”± , mŠ´ŒIz²~ì¦ÿ_àz/Ú™”d «ðŠ™0Ë6“X?b’EJ½­rK¤!Ôñp ‡×PöxQžg€b¥_¯G„‹š²øÞ1²œD}`±¡@0½ONµŸŽÆ>•§÷NCc·1Ó“çDcþÊÙí¸›îù)‡)Óós²að ™ÇùþÎàF'ïU ƒäøO=¯eÛ§äjSEUâ?áÜBç0Miy¸®»{÷î-[¶´mÓÆQ k$2d;¸ÄŽÏš:lß¶#33#‹nÙ¶5«D©*Õj¶1†,©。ëÁ€î¥ìœd´Þ€yªO™Kùÿó¥jä$·8S)Uq·+|Ó.(ègÁ§'ïùÿ¾HqŸJùלäS_|ùOHÊ×P’’õš“¾ir²+ÿâ­¥“ª{^|¶Í_±o ;ÊŠ¶y’7ñD}•ÿAaäR­¾òìÞk’ê÷š:;M^€Ex¡ßIáOyùì¢r‘¯üE)üäÿJƒ'ß Oø(åzû‹8áF¼ð Ä? 6Ç¢ý)*ÅqÊœEOŽû=¿['ìÔ¤HÇÎb­¦\ÿÅ_|9‡Â8E§tÒ®‡ƒà:‘°Ž= … G ‰fÖ‚Å•KíÈÑ#“'MÞô˦ŋßO& pÆ6¬_———7c:ÀýíÛ322âñøÖ­[K”(Q­Z5¯­âN°| Àý`ð¸ï‹/¾øâ‹/¾øâ‹/¾œ Œ±X,vzp?\€®cB233srr ®)ˆ ò‚û)¥ðû¯¿þ:yòäH$²dÉ’dõ=ΣÑèúõëîO÷á¾/¾øâ‹/¾øâ‹/¾üçäìà~"‘€o ß°aCáË<4ﺮªª^¹âýû÷/Z´ý‡~èµãÃ}_|ñÅ_|ñÅ_|ù›äìà>àuÓ4EÔ^pM$Ù²eK:uÒÒÒøàïë>Ü÷Å_|ñÅ_|ñÅ—¿IÎîÖp¨{Æ ²‡FV®\¹`Á‚.]º\uÕU†aPJ=ïþÂ… áúE‹yÞ‡û¾øâ‹/¾øâ‹/¾øò7É_„û?ÿü3üQUÕ;vŒ7⬲eËöîÝ;++ˇû¾øâ‹/¾øâ‹/¾øò_–¿÷×­[°Üu]EQ )ø †á¥êúpß_|ñÅ_|ñÅ_þ›òáþÚµkÜÃ?U,9ÍmÛ†z¸ß‡û¾øâ‹/¾øâ‹/¾øò_–³NÕÙ¶mÀzÀú®ëzn~MÓ3/¾øâ‹/¾øâ‹/¾ü­rv±û–edWP{Ñ‹ ¼ûpýÞ½{ßÿ}¸~Á‚ªªúÁ<¾øâ‹/¾øâ‹/¾øò÷ÉY{÷¬{¼ûúÇÑ4 Ö< ^8˜à>ÜbÉ’%¾wß_|ñÅ_|ñÅ_þVùëUuá¿þ?ü­Áe—\r  q¿Ì–/¾øâ‹/¾øâ‹/¾ü—å/Âý 6x°~ïÞ½'N\»ví7ÞØ£Gð>Ü÷Å_|ñÅ_|ñÅ—ÿ²üE¸ø~:Ž£ªêž={>üðÃ6mÚhWålà~VVÀ}/ÏšHÙîûâ‹/¾øâ‹/¾øâË)ÅC˧÷` ð¸øç† ÄÛ¶í1l”×õb÷á/‡zï½÷௪îi¥êzIÂ)Ú0,à6†axÝ:ÇOÅ_|ñÅ_|ñÅ_þ!pÀ·‡ÑO"€±C¡çž‡¯|ß¿?@ôÍ›7nÐû¥ÖC³999Ë–-ƒ+?øàƒb¸#Ø ©á~ÕªU½&àf)»éº$îûâ‹/¾øâ‹/¾øâK1Â…v¤Ò^XîƒAî?xð À÷µk×þbá#‡{ŸnÛ¶-==}Ñ¢Eààþºuëàç‰p~©P¡‚ëº^þoÊCøHÓ4€û§<’ðÅ_|ñÅ_|ñÅ—ÿ³ÂóŲ¬Sz÷{Àö|öðsåÊ•ƒ Ô]øšÂпÀ‘Ï„\wÝuÆ kÁ;OH$›7oNÂ}@ù¥K—ŽD"ð'¸ Ðï6)½÷‘-T\:¯/¾øâ‹/¾øâ‹/¾ü딿=åʼn¶p±ëºÖ½ Â×üRðw´†OOOïyø£%dæÌ™÷ ÃÈÎÎÞ³gÏ)O|ñÅ_|ñÅ_|ñÅ—ÿ}ÜÃüùóÉèÑ£èïÚµË; øowÌ_|ñÅ_|ñÅ_|ù«â*ÈÿÿkÅ endstream endobj 204 0 obj 55 endobj 205 0 obj 179765 endobj 200 0 obj << /D [198 0 R /XYZ 97.768 692.105 null] >> endobj 186 0 obj << /D [198 0 R /XYZ 137.394 432.779 null] >> endobj 201 0 obj << /D [198 0 R /XYZ 97.768 204.68 null] >> endobj 197 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /XObject << /Im5 168 0 R >> /ProcSet [ /PDF /Text ] >> endobj 208 0 obj << /Length 2473 /Filter /FlateDecode >> stream xÚË’Û6ò#U5bHð}´;›Ýuykf|Zç‘Ðk>´é‰òõé(J£”«rhÝ~7æÝÓ›Ÿ>¦ñ]Vyr÷´¿«Š°ÈË»<+B•dwO̓Oº·Ç¹Õ“íŸ7Û$ÊÝ78(‚›8h¬_(‚Ï»ÿ™zr¼ëk”E<Üëζ'Äáæ·§þô1)Ï$U”…iTÞEDíã&΂aäs­îŸgýl£·=ƒ§ƒáÁ#Ã÷›8 ˆÄ&Ï‚{ª(øð(Äã€8¿ÛÆãˆÍ-²r·õä·qV‰"&zÝUVA=tÇÖLvÒªŠ‚aÏðÝ02;3n€Þ–H6w'7™nÛ˜¯Q¤zƒ’â…ýÜ׈Ð]hô¤ÃÍ6U%óްZ÷¼«™»#ƒx?€œF²ßñnF˜ñã½"¹PBB]¬Í<žlaôÙôfÔ“iPM¼bé~x²ÆNO°ÎÓÉ áß'žá[ãî¯P¦´?p0ßœEÇÁ9»…ñý¼mUZ†íie+kó„[%*Ì"¾Õ?L{De§ÁGÛ}Xì&Héá/Ì.ŽÒ0ÊÅêØXàÄ•±5€ßþ4C=w¦ŸÀ@:ƒ,vCcÎ$…ïì®b9+â0 ¡öÐléÀ+ž’"̳Jv±çËÁÖáÄæ&aÍ õ—‘ïLöœÄI'ù…ú$(•Ç^Q<Ù£ŸáàAæÞ2Qyâí‰f©h¶é98 G[ ¶ôÂaœ@,†xYoák™¨² ã(þ‘LÒ(T‹L.ÕC`,ÀÞÙÖN'Ï—C•á•,¾[³Qp ¡ ô¡ ìŽÌ™œ©ž'ë5«F¦Û™¦1²™QéQ)Æ%0Cy[uÞæ(®à¨Ó}oF^ÖŽa±pÕr°ÂÔ€D OöãÐyƑ׃/\žc˜ "Ü0µŒ™E5I‘¿N ¼’,9•ÿÎãƒ}>´ðÇ®…¶†Â+ X+  0’y×Y!ÁÒÄQcG0¬öj¯æÏ8÷½·æË(Æa1%/­#ÃL1úÅ›LÉQñö²ÙBX qæ?‹yÒ‚3†èŸeb^ÿÞls|ߘez2òPÞ…8ûÐ#«úŽ?ºÏÑ—XV0hÌ#ðüüL.AŠ|:Xxš€Æ¦É_boô4†xCŠ©f?·²é&éÝ<.Þ'qX$é…Ø¦ƒ–0-€Q#좽·ÃÑGõÙ±‚aø !|¦D"œû†¸+2”iýµL‹,¬ÒêoÈôFÄ߯• •*/ÿûX†dEi9®@äõ¸‰Ë’ ÎóàHn'{DWDÀÓ¦RÁ0´îV&Èò0/RááC»›l­[Æ}Ôõ7®AˆÒ(m?™ž"‚I80b‰¸…Sª q×xu¯[©A<k­‡8oÉÞÔàŽ¦¶ºµÚr2†ÎoÞËž59<­1™ëÑ¢åe Xžá%À‹k”gvqÁ£8K)pmƒ.¨ f»a47\ØìÑî0Õ20’(¾@tV†gñâL×À0ƒ6 ¹Ž* ¼»ÓäO££Ðaùî4DA<êñìN7-‹Vþ‚}¡T…<^,¥\e|Í«¬dQ‹6¶¤ZÔEºØ$Y€–K"L=ó±ÎqŽòàòL‰µ°´3˜s_Œéy~A\j±âÊh`eÑæk-`åÌH&‰‹Ž{F´È\e9Ä÷Zò=L4Ÿ`;¨s`°2@×3¨A“s”€*Î…ÿ™¨ÆÚ[¨ îÕÝ ²ŸG¨# ¯Èuxlyž„ôƒn^¸ð>eqV;T'Á;}2Îr ^¿ŠSâÌñ£%Q­`ïP_~yd(’¤º^Ÿ{ÞÀ9Ö|)CLúxת¸8_BZ@Ü»Ñè†z’"ï–ÉH•ª8*¨j}å[ŒÆA´(¥kø²ÃÀw”°’•¢T%>Ç8´z¼A’®o€ç‚Õà j´bJFØx±t1=ðÇ›èý­úÆ~C"xÁØK4i[ýÜèj¼°ŠY°úþóÏ›4 ÞòßÀï>£û½½g°”Û¸Àå¶€™;€Úîu.gÊ5’î \x*Q¼œÏImð}ohím¿Ô×`ԃŠ©ò\{¡GwDzšê‹\Ü+Ǿ˜+E7–"íÞŒ¦¯%ÎÛÞï“MTàÈ(k‰&ùÚã`e2ßä±åõü!t‚r)s+*š1Pí²ç*TÞ*н° “Vª`‘ Q*¸ŒRѵ)†G¾IÇå Sÿ=wKÓa˜ŸëÊ7œŽXER|Æ9…Û³XnwÔ´ ¨Ús-µôÊRDIG¼Ó¤ÕûPýåñÜrSyAÚJÓ;áG0ÉÖîO$5,.þ…‡Í©ÓGžÿl÷€ k$44Ç[…PZ…Ê×b„Òði.¤ìÄÒÛ ÁÉZVh€—•R¶n­KLþ¾lB½ã÷â¶ ï¦&‡‹$ænœùÿÌ÷™%^´‰DàɤÝ7ÙàÓB"i!  ×#A93‘¢BBÐQ»ÉÈxG¬@ÝÞ/ˆÉ#áÛÚÞï2œmo¯M5Fи‹³V}àiÁÏÜÞ åÝउÒÏ âçQÞ~°Û8÷d;Së™0ЉÏã¹ÝƒD0:†³…aÛu:ÊÉ(øªTb{ˆšý…5·'XH‘ÿ"_åý"º /Ò1R|)^97v¬çŽÑ‚Š__Qª7èZ£Çž*6hvæÀwµ \Èã ÂÚ"°î†–‘Êá3ˆ%»ßœÍi^˜œ‹;X™{+_NÕ'Zòr †R\­+ÓÜ zNµ¼ê½¾t'Ô™¨4’؛Ƣ¼Ñ*’RyZLã«ÊVA—P7;¬¸¤ }ª§"èx–}–eu¦ÍïxpíeX»ìdkI陳azÙët\Ï£ó‘­c³Çƒ¶%^wÈ\-Ð{¡¼ŽR¤t”ºñÅÐ;n´8n$Žø°¸ôªçW­u€•(ðÃàù~è{ Ž˜B ÙýâäÑ%•ßOKG™¤eðI×pnÇküŽƒÏG2ÿZGz_½ÕxªšõBIÀýUHSÝ…vBß·ý8&Lñ‰hýø‹+çŽ_µõÚ / +‰—gºLýà Mœí¸fѽfw~ZO¢¥ÇÅ}ô _íIš†qÇ’}ãž ë§õýÅ!,²HñëÞHE*,‹ W…eÄÿ™ˆé¥õ͇§7×ò»Gendstream endobj 207 0 obj << /Type /Page /Contents 208 0 R /Resources 206 0 R /MediaBox [0 0 612 792] /Parent 176 0 R >> endobj 209 0 obj << /D [207 0 R /XYZ 97.768 692.105 null] >> endobj 210 0 obj << /D [207 0 R /XYZ 97.768 667.198 null] >> endobj 211 0 obj << /D [207 0 R /XYZ 97.768 604.643 null] >> endobj 212 0 obj << /D [207 0 R /XYZ 97.768 482.476 null] >> endobj 213 0 obj << /D [207 0 R /XYZ 97.768 271.034 null] >> endobj 214 0 obj << /D [207 0 R /XYZ 97.768 148.479 null] >> endobj 206 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 217 0 obj << /Length 2056 /Filter /FlateDecode >> stream xÚuXYÛF~÷¯Ð#X4oŠÎz²ðbÀl€lZTkÔE2_M~«««ëîªjýôüáÓÏévU…U‘®ž«ª Ëb»*ò2LÒ|õ¼ÿ=¨Mov®qÓûzWI`ÆÑÓH‹4xsÓQÐÖñ6x±›±6d;Ÿìà°êÑ­ãà47fr]«Ì(¤o¶i®1u·W6{;º—VwÛ½ ';N®}Q¥ê¡•#L®‡ <ÿk­6qVi¶¼®ã<°Ã(â“< ºƒ|Ç J!ëʈî0½­ã(0Ðy°‚ìMý§y±cH¼?ýœÅ«8«<'×ARš‡Y%’Ò06Q_Ûɦž1{¥eö ;¬«- ; ™²½ ¸&YXä[æú|¤³`êÚz°f´ì‹*è»^8F´ÍVE$ \¿÷M7˜©tso&#ÇLkšwDSðF¿ !ºÉ‹5{ñ`;]ËÝ©—˜WÁ?ýªŒŽžãÉì½áŒu›Ña'%¹F ŠD•%èBÙ‚Ò@°Ü “a… ʬ[ë—S'ßëèÑsDjŠä&ÍÊàéÛ7Ù˜G;êÙã`­Û»éu°ÃÂÙôýЙúêKCR6äÐ b¨sš[ˆ•L%”ܘ%å\—YwŸ`—™&a‰ΪuZ›‹4‚-Iüã,´k¤TœEa™g`HŒ~!g«T9?Í$œA@. @27pÓ¸V1Ñ_”ZQfP`˜[9o”µiý!øÒÁKä»WèÒ…ð®Zõ‹õ8ÖO'SëÖŽ’i†}„ÖY|Ä^««‰JôŸ· Þ›aïY÷ó$ WÓÍÓ‚¤ ¿àù v°{7Øz²z’òíJž¨·è–ë¿É—ÛTK ª`O,“mÐvŠÐ T>(Õ]Pª« À\ÅžæQy죪4@•ˆìmêàÛê! 97£’ƒ²µkÞ˜sNñÆ;G.C×£.Y‰D «,»*r«-º]ðJÍ%Œ!`þG!†‚yõm”Ý/_žø”G_Þ[srµ‘ ‚­§ïõÑ´/$±``ÒÔÕ]#”\-Kyu{в‘^ð.”z¯7>/ìHµi’™d7"7r–4ï‚`9øöØX¢Nˆ·£«ÙsÛà0·õ™R`,ÅX¬G;hK“ÔBÚêC‰AVwí4°•¹/æÄ¬ž|¬´z/“r¢ÙÇñ•¤¦BiN¿" 'j‚ÊD™gúiææ‰µ°Å`G´èQ{ïšB ˆòàyâj™v¬×{:I^‚vʦ?®óÅ“=KJt½ãtÌ^Æ×ë¥Eƒ9\ßJÑNÉ_ìôÀduKL‹^²F8×öƒ5l.jú3üÛe+J‹¥ Œ²Ò‹_øâ  µŽÄc ¡5Š À£îQ=ÓbVdRÌ>]ã–bF¢–tg¾Ý §CÙš~˜Ú\;hŒXršVšb WB¬wŠg¯#®Y?Í8•åc,‘&ˆÉÑÔAàÕõ#„§Y|Í‹–ÊÀ«ºö$% Hn¼Àa£õœÏ¿lƒ‚0KÇÝQ!Õ7¸HËf¶ 8kÚYVõ¬$ÒD¨>šqRV“çI°ƒ²­N·„E±înÏ•AÖ  e®Ÿü‘{«¼ $ÏP£¤‘ £=ް\ù ƒRq’…ke×Èrg&©GÙ­»é¦&©Î£ ü«)j<5 æ¾JƒËíüIÝÙFòè3ÿrù¢&ž”~€y%Í/i™‡Å¶ÐùÅ"Æ9¸PènÞI¢°ˆ%'®yÁ~àO«"ŒÒêêŠþÆZüûN0.CR–Êè+ò%!U‹ýû~ÈJÂªŠ•öÞZ>°àžOæ[?«ÿ‘8Qš;}Ç áð°ÿBc~áÇ \æ0®®ïïiH Ï"Ã35…r«…ɶ£ôœ²øJ; ‹b°ùîû[©­£ô­ƒ þšQäZBŠÚÍr+•)eüн æ$ëÒiÂÓ é³ÓWÝ£ºÄê`X°ìtâÇ«Ã:æ£PnŸÎûée±Ñ—Å®ãé…^Të{ã‡þô¢ØcÁfƒê|¿ }2);”ÓµA|b9”^›Ojø&p—åhÉw² æyê&+°Ú$ûÍ0c\U*™Ëoùà›]±ùüˆQ‡Qééh­*»³Ô¿( èŸù¥‰M ZyéâÂ{³”yÖø;ÚiÅ_xYVa|s‰O´éTÁÊ?ɪó€ÓhnäÕ…i£A¯þ”RYÇ Ú’—1Kí ·%,gv<Ž•Z# ¾´q°ØñQ߯mÝÌ{ îMóÃéi‹™ó¯YáÅXé%Ök/ !øäüGðxµfeÁƒo>,„;Ó)‰;ÜôËU% vP4šJ»fÑ!WŸßxöXmƒ¯ÜüMð[ M…Ÿ%’K" ;ã;ÚíI`.Tø’:4{{Öè’¯Omâ5 U± µœìùo åçµ;GI˜vòÝ ‹¼¹`ê«gZe¡Æ¾1äe*0¼Û¥:`uº“@Kšþµuß òÆ+q×Ê;Fº8>ÞJ€Ü¦GjÔܦyð˜ÊxÜ ïçžÿÕá“xHÞÿc£œN%á¶ÌW›² ãBþ@Dð°õáéùÃßm”'endstream endobj 216 0 obj << /Type /Page /Contents 217 0 R /Resources 215 0 R /MediaBox [0 0 612 792] /Parent 176 0 R >> endobj 218 0 obj << /D [216 0 R /XYZ 97.768 692.105 null] >> endobj 22 0 obj << /D [216 0 R /XYZ 97.768 622.575 null] >> endobj 219 0 obj << /D [216 0 R /XYZ 97.768 526.561 null] >> endobj 215 0 obj << /Font << /F38 52 0 R /F41 57 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 222 0 obj << /Length 2370 /Filter /FlateDecode >> stream xÚYK“Û¸¾ûWÌ‘ª²¸|?*'¯=NœJj]Ö¸rØì¢ 1ZœYýûô )ij|h¼ºÝ_ws~}z÷Ëç$|(ý2‹žöeîçYñ¥¹ÅéÃÓîwïK;h«ªÁ¬ÂÀ{ƽZ‡eám°)½½jL}^ýñôÏ_>ÇÅì¨È/Òø! C7Þ´ï,os»ñ@Õ¬B!R?¨Áôƒ©TÍ{jÕFuÐý{¾%I ¸%Ã[Â4òÃ<“k Üóûæ[fâÜÏÒBV½ç{¬>ÕªÒ=_2A¬(J±4ðÖôûu:)÷ËÊJ?ÎÝAÿZ­³Ðû¿l»¹4,ü(ÍeíÇ®iT»ëqÙÃ:Î?Ž¢‡uÇ­x1í®[E©÷²ZÇÀj [â ;ß°‰½¿ÿÂãÙ†,õ|à8Žà¹xRívf0Œ†Ž[;¶-<¤×®ÎÞp#ÏAoc§zlúº÷ 1^”—.RZF6ŽïºŒ©œÆ`Ô¦Ô{ôdÜ!9ràìÏQ·”úá¼r­•½ŒËØcŸ¢ó0ƒÅÍ(@@¨“HòÂûƳ'l”ØcÁÃ"ì™–w(žXLmÁ8ïH8*f€fÏÆvmCF…DŽÆÐ1=·êP¹2¿ö$鋽®Õùj7æ…wèÚ®ÁD I.ÔµnÊbò lgP6Ù€HSý[Aªî„j8_E™“ê-ÁäõÆà,ÖT¶ëÁöz–ñeYÀ”„¤AüzíG¡ãú%sõîDö"ð“¤Xä´îù[úq–Ïc{™QFQf®Jtu5ÈT]OQˆf8WÖ[…†w%#? ~ýöÛÇ[¢ÄO2ü¶ç;‡D~FoŸ1ÉëTGá¥t®@ü Å´k‡±™ÀÎ9ÞȪ`‚P@žð?H¦b„,˜f·Ü®^¤±Qzýjp­ÜˆkJ«|Ià2ôêŽ Jìv2§„Ýtƒf`÷i\¸¿à ã2~Û&ÖnåÜö]ì*'(èy¸=sk5䄪…Û²;™xÃÀãhÝ80úÊIrc߉dȰèQBté}­øL†ò‘Zæâæ•Ô OþR§ŸÑOÕw„ŠQBV€ˆ“È« j$N,&±XÓÀ‹9€d9J ÙäEb ]r}XHµhdŒ¥†íêšU „fìeÉVOœµÓt'\*J¢ ˆ3G¨I|Fó'—Á×Õ¬°’çÌ´’Yžy¤É9þQe8S"}.‰ ÄPz êõxâq«]Æ |þ`ˆÔ¢ñ Àhôê9Elœ©cR-\¤‹n¼ H¦C„°C)KÊ€B²ËCí%i, ØùƒB%Ðî ŸRÙš ks:¸tîý°áÄ„íjÛ˜ýøæ©l.Ö±¨] ÀªVî_dÄËîø|˜øe’ÜÖðw= I¡W.sÕR ìl… ¥ô Í@Ö¸B#ûߨN˜;¨¥ÔµqXÞ¼>™þD·ü[µˆZ^¡"AýðPªÕ˜²q¹@tX‚•ªÄbÓxJ×$©B[&Ð.)t^ÜàN^rnŒÆKéqŠu;i%]ô>SÉLpÓÍ9g"i}Çš@ï, ¬:ékâ­_B]Ìëþ*9êú$†Å¿n.‰Fú%T’i¤~R²íÇ~¼Z‡D_ÕP‰Ñ}6µØóWʪPWá\æ¶'BÎÒœNtçÀ>: ú‚$!Š©ê+fßMA15CuvpÒu=ç¿Tš\ZàŠ«ož¸‡w4Zµý\È Žp2~7ÀùÉovšñïp˜¤¯æªZV°d°çÅN~[:ŸÌKzáv§…Õë^jÉ‹‰Ë7 üÚQîc°+†Ye\-/ÿrìœsLŸ•ygç0ûÂáÜ7oo|{Ó:¸§/¡ò* "¿ÈÂóÜ3þ·FáԻǧwÿ¹“ Ýendstream endobj 221 0 obj << /Type /Page /Contents 222 0 R /Resources 220 0 R /MediaBox [0 0 612 792] /Parent 176 0 R >> endobj 223 0 obj << /D [221 0 R /XYZ 97.768 692.105 null] >> endobj 224 0 obj << /D [221 0 R /XYZ 97.768 667.198 null] >> endobj 225 0 obj << /D [221 0 R /XYZ 97.768 425.315 null] >> endobj 26 0 obj << /D [221 0 R /XYZ 97.768 249.35 null] >> endobj 226 0 obj << /D [221 0 R /XYZ 97.768 135.403 null] >> endobj 220 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 229 0 obj << /Length 2557 /Filter /FlateDecode >> stream xÚ•YK“Û¸¾ûWÌ‘SeqI‚Ï£½±“M•ËÏV›=@$¡L‘ zvòëÓ/PÔön3l¼Ý~|€Þ?½ùécž>4qSª‡§ãCSÅUY?”Egªxx:ü½×¾=?î”*¢/»"‰ÞÑ ³"ŠúçOU}cQ&q^6 -~µ™Xß44®Ãuê¡9r»=¶5H'ÑqÎë8´Æ9ÛŸx@÷aÒëîå¿s\Ò::½ Sï Gî,Š,yäH<Ÿ2 ˜1‰I@“%‘0ã8„¸‡Z}?†?¢÷ÒìJ-Â&@m†I•ÆIYý0Jê¸.·‚5¨ à¿·œe+"‚“që+*K<^d"{¹eÙ_ÈE\!À%[àÞ/’¥–âpïB'qZÜGqo¥ÆaürMÌŠ2ÚC•Ìêdå uýͺk§_xÅ'¨ú'pýñlPFOR+Š9‰,w@—$b¸¹8ÍÕX ¿aòÖ¶ÓûN¦±oBg×ñ›ž©o– Ç3Ån–¯5σ?ÃdöX :ë<¯€ÆÍ ©Q$â‰Mn$3 JVž ÈÐ3bÃý¶¼3«•Ì@A6Ü ¼©<œÿ.®æGu/ }‹Óä€?ÓæÎ¨Ÿ{2f© ãA•ÙÒïKòû4š:®°‹c’0 ¬è9»•âÂÐç¦ýÅzîÓènÕÚë¹ÃA£èy}(°%Ï2a|¸“, æqÙܧüUS!USÙÈBT[3Ù]2\HüpöìJ0qÑ0ñHŽˆGÒ0QÑ¿Øa‘i‹Šálû°™(@i}ÀÐÿŸ¨Ë Ú.õe¹7OïÅQ€<“P‡Q=ùr“m%Ú¡kºBî­Lõ·ˆ†Ö…² °:KvHËÈpÏÞûNòxQEÀï 6ޏv÷vøÞ­g¼–˜Ñ,'mmÕH‡éÙÂ8Ë ²hR±5öÏßËu½îýF8³ú{Óê‰P/\f_QI¾NGù}:jæ‹'·FÔ@=bÈš#4w÷ü{#wèó俽ƒÛ ;ö A‘ï©k,GokÅü\¼|qNðŠ+1„<6gI½Çüëß¿l=1—1XU®a¯rÃÑËm%J ÷âóê5÷â¸ã“)½K&§e?Ÿ5y=Ÿ†ÞËÒŸAù{ñåçƒ[y~ºB(õÄÁOé¥Ö†§b¬ï „Â/Ë,ÿÝ;¾ê=¾ ΰ’C\25¤ÌðuüåÔ €4fŒ©Â]¨߆Ÿ+~,wF 2¿iåXGø+ÈõEVÙ‹Ù!Æš.C’ lãDŠ…Õóù~â6Ž^½zå=ˆ¹äPö'øìç–Ä‹¦æX±z?]: ·‚¯§í§Ó¬LbU,Þ>ÞÃÚ­Ç:ÎÓzñtš¤bN ä16a@]·Û84ªÊ’• X8éÇ–»¤>mß¾¡}çÁ&Û&K—8ÐqOΟðFG Òè£Ñ´Uʪ¥õ`îü š‰WÃøµ£ÝóÍ/å°ÏFA|d%ÔAj²XŽ«Z-¦¥È‘zÆ*ÝÁ3ú}¦ºS…¼€7{s,ÈS*ö/ŸV•ÊåWPëà˜“üJT-Q¡EO¢p«»i½xš“rвüøp7DJÀÉÇuE9k⺮I‰TáЛOoþìù>âendstream endobj 228 0 obj << /Type /Page /Contents 229 0 R /Resources 227 0 R /MediaBox [0 0 612 792] /Parent 232 0 R >> endobj 230 0 obj << /D [228 0 R /XYZ 97.768 692.105 null] >> endobj 231 0 obj << /D [228 0 R /XYZ 97.768 194.402 null] >> endobj 227 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 235 0 obj << /Length 2320 /Filter /FlateDecode >> stream xÚ…XK“Û¸¾ûWÌÍTUÄ% ñU9Ífg¼ëdœ”5®JU6ˆ„$Ø|(éÉüûô ¤4’³h4€~~ÝÐÏÏï~zTÅ]–™º{Þß•y˜gÅ]–æa¢Ò»çú_îêÕ:)ó é8(‚ߣ(iŒ[ÅA¸ZoÒ$Øšªïê?­Ö**ƒ‡í–ÙªÁèØhóhÚS³L÷ý ô£îÎk[¹Í_"ÜCß^°çAÛצ¹æt½çÓ#43ý¼Š£àˇíêßÏuœ‡¥JHÁ«#påIpúÊ8Ç“Jw8ˆƒaBmðªÎÔ<ݽòWóÇÙîÐ'ò:©< žv@û$y.öáËVq|·µq'Ͳò5 Ix ]5ØÓÈcQ76M¿JÒàEÂ;ÎU¤èˆÆÙ3#Î.‚™· OzЭÍàBvê£íàŽ×U–¨Æ¦ ¾á^ƒ ¼úSÿ3™®Rà˜E†—¼á`©æ%/ ǵz›3ßâº'ºi×ÚÑoºÖóL­4šÕ‚¡¸7Ä=?=nâ%îá•„i$È–2 ¶üÙëÖ‚úyÈæó¤ÉÓ0*s8÷JøGoÝ ”DÎBñte;Zo-$sJ,—³ÀY<ï÷—RÑI$ÍÝ&}@{¥OSÌQAfBòàFžXGö[‹ WÑ’)öññÇTù ˆœ‡$Iߦ“I>øjþÌÞÆI´òn•DÁ´Ç€Ý›'kƒ“ïø£›I¶ï0ðÀ¿9rvmý!*ÀÈ‚ ƒÆ,-„ÒòÚ… QÄŽ¬…b¼ÞV,Ƀnjw=’¬Ð$4Ïv††7â›úÏ@W ÀAÄÀƈB[™°ï' j$½ò—Í NíæÓg™ã¦f:€Ü ;ÆÊRE>¾NGèŒSyBÓëzíúi¨„Ђ¼¦:êκ–R= ^Ž–Vߵ⬅[²0…¬߯S{bYñž‰h‘Am÷F˜s9$vbÆ›X‚f¼¡_Ý×½_Å`(Áië Ö:ûHê•åŸæŠE"h5²}¶1—;•cL'‡¶ÞT²±š‘iKàB¢Èñ}ßÈLû:Ö÷p` x±H0˜­”FKŽ{D‹7¡Údi€´’ÎÛ¬ÖqEÁ¯ÖýðÊ›ÉQð•jq j°=)Âd³YPM¥)J3q‡mF&÷Z]9l ±!Mm9hq#¶ ¯Úžê!“?ÃH53lG(<­–ó_ñüeš9žtuI6§)èL-B’æ}4sÁ<ÚlJJr½ ŒË2G§>¤ Spƒ–±æ MO:ᢷ*’ѪHx@’l€à8@]mÍð~âËih0äÖ'P–Ë*nr#(áF[YJ0Üqèo¥˜Û"^éÄY0jG¨ tr8’ŽB8±Ìp¹.z#éÅŽè•8£ú;s ‘¸ˆÃ,J¤ðý}µ˜ÿ Û‚gÆ8Â=?]˜ÊÃDçÍØÎÉ…6 9[‹ €ñC_Oå-Í™).‹ K\œ÷ŽIÞdk®mI\†hfÏaž¬ù‘‹¬¡Ü¬Ò¢Sú@÷€ý¥Ê ÙMU¦±dXdëßâSKí•3ÜĉÑÂ%|m¤ŒCUÄlÂä&L ÙË Ÿ (·HÉÆ „tÃQÙY_„†ïÕQ}ÀNIWßD˜5Vº=šI_ÅíXžâ::Ò¯d#®HÁýë<|aþâhßû,45!¢W ˆs.׳ï4¸±Â†¤[AQún‡¾kQaÕw ŒK .A|æ–'Ó-%/£Fü«©¸‡Iæ¦ÓÐ÷9ƒ•" U̲ ÖdÙ¹³³É)T¨x-ŽØø7t|5š:íM¢‚_ú +rìBÉf…o}öP3᯺ÆÚH¸ˆó—¡ç$σíÚ'“TX A’”L¡0 ¢S¶L +T¬p¾YÓï?®VÅIX©Ýß(2¿P¬Þ¨!x1¨Ê¼þÕH·Y‘ûç/¢ÆJ(á ­xœ” ûuM[B~Øq$£ÂXž‹Ið„.Ÿ£ ü6™ëÚëž´Rô^Mø "vâ]æ,… ꟳù<¬4oîþEcX`ͧé¶%ÌÄa«kg?A}2·JýEdÁµZpá™\J½‘K%¢ž/•Z7œsQÇ)Œ*ØÈyçRÙK©Î›#‹Î:‹ƒŽuäûL¨X™Vš}`bÄQËãó†rü¨A@ñ•f?51žpí{`ïÿ0øØA«žõ[¸•Gú8üð ¶á±€a4ô2f’DÂ|A- yLˆK°>åîÐ7é8–Þú¼* i™þ—¾ÿ&ÜgtÕÔUäPž‚¹®óŸƒûüAûµß9ybܲZÃÖ¥evŠåE\Ê_3ó{Ù0¿˜O\:ý;ßÙŠ‡þly°ô-/qhŸ´3£í•;{´/Bðòö^€ç:|IK/%&Ч/‘O¡G‘À_0õæ‡qðöjYJL˜Æ¥ îÃ!?÷øÜ³<áçs¨3‡£v¦Ò­áñj(ƒ0ç†{ˆÞF¦[:¯øƒ*€@è¥ PÞeÉÍ*…IîÛw¾þsÈ‚ý&†¦Â³øáçÜÜÖåP‰Ju‘Hsò‹©? º~ø&3Æ=‘—±;û¿q–ð› 'Ý,Ras­<¾;¾ œoW¾?Bâ"=3|§¦¥Aóÿª¥cRÒpYbàš:îæ¤¥gÅú‡Ö ø‡ÄÆ7AªDÏ_ì¥ý  ‡Áò?I@_²VáŸ4½eðR[ã7ªRªP9>ç€_tÈøòú¯Æî¼ý^‚&*‘?+fam º•‡r%a‘ƒ†* ³˜Ÿ§ñ—Þ=<¿ûÿ? ²endstream endobj 234 0 obj << /Type /Page /Contents 235 0 R /Resources 233 0 R /MediaBox [0 0 612 792] /Parent 232 0 R >> endobj 236 0 obj << /D [234 0 R /XYZ 97.768 692.105 null] >> endobj 237 0 obj << /D [234 0 R /XYZ 97.768 586.71 null] >> endobj 30 0 obj << /D [234 0 R /XYZ 97.768 463.422 null] >> endobj 233 0 obj << /Font << /F38 52 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 240 0 obj << /Length 2106 /Filter /FlateDecode >> stream xÚÍXÝ“Û6÷_á·“§—”H}ôž6·Û6ôÒ‹7s¹iû Hܵ&²äÊr¶Û¿þ~ (;i¯ûp³3k A~€¤¦jª"#RO“$Ù´\N~üô‹œV9ý~"EœgÓGÐR¨<Ÿ.'±IE?7“ùä_åU…£®p«ìåÝäê›8›&"Oõôî~ªâHD)&:VÓ»ê§à?3%e`‹~öËÝ÷“Û»­Â­mF ­“g³n§îľ(JD’%ÓD'B¦©³o.»ÊÎÂHæ* æ×þùØX£Dbhg$d}ÙX•*ØcΫ²X¤ôðe-:qv^KÇFÄI—wF¹Ø«Hb-T9—Užå³êàÓ,1P³0¦§Ÿ¥‘ßþó‚adp»,Êõ ¦ßµõožœ_Í¿Â:E‚¡R"‡Ÿ¬7—Ð$s“©š©à‚¶ë9¶ª‡º}¸¬YX=›ÅñÞø¯êMF½ú@¯¾¨÷êý—Ô‡©LÍÕëA|?ÞÅP..Á+RìÊ“?mîÕ[68Q±Ü]Ôeƒ/+;k÷¹‚4)ª&Q=b*’ó¥„xHÌ_ÔŽ6…&ɱó<¥Z ü¦&QBs9ºx¿W¶ø8ÒC1Ôë¡eÁÛùü³ÁBêØ<›;u§~H)$ðÖè\èÄìñ7øfeû‚*Ú;ó´ìž(Û ®+*÷®-³iK~®‡§‹Þi#tšÿaïžQ±×Ä©02‹-=(6#äŸ(6®/é(w RxÙ{Ôëz½"Þq Õ퀻@|gÁŠÑžGìÈ0EpE¶®þ=ÓtXÕÑ9k65‹³8˜e›µulع°½ý;ï;Úò5PRÁrÉy óS ¥gý/&^ýP”±â(;BXê­|³´µ‡™ ŠE1œ1 Õ NMËŸÏ4·äæÍF}Í›^b® Þ}»o±7;} ß^š¹tž¢¤òçš¹öÔE‹<‰yæÊD¤ÍE"rÉẛe2(>4– VÞÜïw]ÿÄÌ¢­˜¸nK»àx×{$ìî}(çsw!Ú Š0EYÖ´vgø©.Š‚û®g¢†’3µFƒß,¤³Üÿ9³Ø죡&˜­ÆGŠ}±öê7ý€”öG@¿Ë•¾ÀŽÁV[vÇlLÝ-º%ë@én–Û÷ô·™1×ì œI:ûÅ6ñp'qì¼|ìëa°-ÅYPôÝÆÙ וPziµg-­iÖS÷]SY¿ÚÛÊÛꇮ·L•‹¢}°^Á£ev¸&^ù‡qÿz³ZuýàÛ‡yŽ- ŒS_œ²)p/‹UÑcé¦)ú†r3Ð{w=¯i¯K2ìMÐÊT¤hBÒéy…š‰èñÿÇíÚmBª­üÚù‰.¼Ä©—ÞÍbôª™ÎAêrçÚ¯>ñ‚‘ëøÀ-ÊRÜCŒ #EãœÁ£»–®ÿH?îÀëÚ­´LQé3Å᣼⡬UQ~,ønð4:9j³UbS[}Öíj㥜ÙûÂn3”À„‚"bxDáÊMð¡sfå βÌ*»åZ¦n-‹¸‚þÞ%^é¹|(épèêx«¾Cq¯1& éðÖæƒå´nšŠµÝ°;iÓ"{´Ö|>³vQŠ•òQ"ªª+"">‚8ˆÛ¸¨öËaãЕ]Cæe; ¸,*~¨[ÖÄm”8 Û2õ²¯ O¾­W¾Ð½vÙµë£Ò¨È[ÊzÂQϲãÎIÌ4¸yj‹e]òаocS™OÝèææ–› ‰GYìcJÛ ÀûÎÖ€p* ÐA88ïHèSN¼¹õÂŽÐL¾~ª+{Æ—ssIHÍÎ Æä¡`cعw €éßi+è׀ϡ6í¡=tÿ<©÷H&ø¯ã×ôò¼órZó‰û¾1Ö¼9+€³ž— Ý ÞÏ/»vè $´¸1âìÏöšÔˆDp ÿÀâí9»ZsˆÇ̱>½Â}ovÁÀ+ gµñîÀ–5ét„kõ­‚¤41ìËÍ \¬¦êø=¤ß9ç7ƒsÂëóCC´SÌ5OØ&Óà¥- ×»h ¢ë‰Þîæ™º½ØÑ"”A±$Šor¼5¡Õ Ò>Õ}×ü‘AÑ8P(ªÞÞó¸ŠÕÅ–(ÉGëWùÆþñ‘Ñöó#¯ôƒ?ä¶èËÅÖ ¤À¹ +íj Hæz7ãøéHG€Åƒžï NdÝXz¹¡Š’‰Ï<’–J¹ÝcøÆ±¢nËÞðÍÍMÚ¥µã¯·£å.¥Eã·–`ϲþÝà »6 Éš’ãÞ}wA;DßI }á’¿+3¾FþpÕ"aendstream endobj 239 0 obj << /Type /Page /Contents 240 0 R /Resources 238 0 R /MediaBox [0 0 612 792] /Parent 232 0 R /Annots [ 243 0 R ] >> endobj 243 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [257.029 247.447 264.003 258.391] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj 241 0 obj << /D [239 0 R /XYZ 97.768 692.105 null] >> endobj 242 0 obj << /D [239 0 R /XYZ 263.462 497.838 null] >> endobj 34 0 obj << /D [239 0 R /XYZ 97.768 232.753 null] >> endobj 238 0 obj << /Font << /F38 52 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 246 0 obj << /Length 1887 /Filter /FlateDecode >> stream xÚ¥XKsÛ8¾çWø´KUEIdOŠ'öÌd\¦'Ù©É` –X¦Hñd~ýt£A=,f÷°ÐÛûW‹+•]fuqÿxaR–&ÙE¢S&•¾¸_ý•õªœI}+Wƒ­fs™ðh庲u3uôýØ´4)ëÞµ3Á#[8Zꀬÿ^¹@jëM [Óä µ‰€ŸŽþì]½r¤o‹a·kڞȚ~ãÂm]oû²ëËÂË{•­×ƒ]ŸÝµ²½ýçþæ‚_ÌEÊŒ’^5[Ûê{W"µæÑÎOx–!åâ*"f*N8K¦ðçîÜ#ˆ ²ÈÕÜåÉQj™1ÇD]ÛzIT´d8ÆÑ[W˜>ºx<@ÙƒãÞ ‡¸Ÿ)µþîo(ÙèI7ŒlùÑB2pˆ‹$f‚ç§i®mV® —•A”ü©Ì0eÔÿánèG`3cdÀBjÅbŒ”#4îÐbE8t«ª •RÍ47ÿˉ j¤L½ßZ"¿ôsÙíÞÌæ ÇØ£Ýëº'&«¡è˦žˆ6[¨ô &UtÕ:G<óæ±÷(Ø6¬\¡$ÍPCö†¯CZÕG%˜EëÀñ±™<,*,ƒ«=h±°ÕncÙºXÓ®0.j4…ÌÁ̰ošJÆ9ëmËÖMø=t,F¿æ‘£«¹UIB‡è7f482ÈLFÉ S°â:zÆuu‰ ?/Áø8‹Éƒq)·5ä¿­zßqe÷@Åd=鸚ñD!—»]UºpúÎaîs«4r]‡&óW\×E5¬Èú@vÙlwC¿ÿÜKòá¿fV –á">ØZCäÝ€zªd£Ô0!Ô‰B ò…üûI äMÝ,—Ãzèú3\ÏÓ¹Vœ‰®…+§®5œŠG‚ëãI)εSâàØç~ Qû›üt±x~~Þûb‡òÙ­O>I¿c½H–»c¤6ý¶š@]1#^8$ç"𪚽(;T¼†j¬[òæP°¤Ü;ѧü:dÙf»mBºÃŒp.ÚXËÓŒwÛB)/}wç>Úª:I2ª¬R¦Òø4¯íÛ Ì„* Û•£÷൯?Y2 Iò³Oã|ÌÜd/ ¿ÖŽv^6ž°ôUÊ”f[è•‚KÂ×®mÖ­Ýváªëš–B’Áw™(XÓÖåU;ŒT+¸èQWsÕB8¶ H£¡“‚`.6¯Q4Ê vnç¾É&“ä4wÎaÐvÄ©yÄ1¦rŽ ÎåCWûTíÚÚ{>V0¤ÿ23Kp·ivDäÓì¼¼ÚòËåлÀḒÁ‚HÇ>z”9¤ÑW®ù»ü’ A·„…‰X2šÅú¨HàÑûô“®ØÔ#¿ÕôªðMVÛ•=AÌ™À`œ_Á±HBδV8„ÛoÊ93µâ"úÉÎJ¦Ð©ç9Ñ Çè‚Ï}tἇãc€yëúe¶- CçŸ_ÂWZLyÇa'£ ¹-ó ”• ¾jPe»a=Â,À øéó³,å PkÊ °¸BZš°J'ÞàC¢$&¯Ò—Ø…¢†ââx‹B@ÂXZhòhüOIJ£ox »ÀüÓÑS[ÖNAŽ“Xž§ôó¢w×tw yicŸ,M©NÓ}oˆ‹@ êLy,†~à ­/iŸÂôE.à°¢G—gºt®H ¡ ž`¢Œ(5uôÚŒÞfh} ƒ˜²p¤´açcÌÀ™ý[0ÄLH\§½C?2îY œlòõáksEú42¢D> endobj 251 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [488.573 451.841 514.476 462.71] /Subtype/Link/A<> >> endobj 252 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 434.431 397.146 444.752] /Subtype/Link/A<> >> endobj 253 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [273.38 364.693 514.476 375.014] /Subtype/Link/A<> >> endobj 254 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 346.889 132.638 357.081] /Subtype/Link/A<> >> endobj 256 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [428.797 258.566 514.476 269.41] /Subtype/Link/A<> >> endobj 257 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 241.285 305.988 251.477] /Subtype/Link/A<> >> endobj 259 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [416.842 214.63 514.476 225.574] /Subtype/Link/A<> >> endobj 260 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 196.698 234.257 207.641] /Subtype/Link/A<> >> endobj 247 0 obj << /D [245 0 R /XYZ 97.768 692.105 null] >> endobj 38 0 obj << /D [245 0 R /XYZ 97.768 637.146 null] >> endobj 248 0 obj << /D [245 0 R /XYZ 97.768 586.2 null] >> endobj 113 0 obj << /D [245 0 R /XYZ 72.862 586.401 null] >> endobj 115 0 obj << /D [245 0 R /XYZ 72.862 542.565 null] >> endobj 114 0 obj << /D [245 0 R /XYZ 72.862 498.73 null] >> endobj 139 0 obj << /D [245 0 R /XYZ 72.862 472.827 null] >> endobj 122 0 obj << /D [245 0 R /XYZ 72.862 428.991 null] >> endobj 126 0 obj << /D [245 0 R /XYZ 72.862 385.156 null] >> endobj 140 0 obj << /D [245 0 R /XYZ 72.862 341.32 null] >> endobj 255 0 obj << /D [245 0 R /XYZ 72.862 315.417 null] >> endobj 258 0 obj << /D [245 0 R /XYZ 72.862 235.716 null] >> endobj 117 0 obj << /D [245 0 R /XYZ 72.862 173.948 null] >> endobj 116 0 obj << /D [245 0 R /XYZ 72.862 130.112 null] >> endobj 244 0 obj << /Font << /F38 52 0 R /F41 57 0 R /F61 250 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 263 0 obj << /Length 1785 /Filter /FlateDecode >> stream xÚ}WÛ’Û6 }ÏWø©#ÍÔ´HŠºìL¦ã\›4›tVÞ¤¦´ÌµÙ•%.qöï ”,×J_l^@ ›g«7…8VÍãÀsà}šà #’¤áE½AÝÔ„¶³¤óÅO™±„ŽÚúr¥ n9w³Ð­”Q! WzÚGí„m+KM¯ýäFîÈmn5…,ÁÏ/æ}öÁw,§údSFPú›n{|>í<[;Õlòƒí~lÁšDßf2‹¼Ýìgltàùpa;ó JŸûÚ › PC–kû¡‰w¡˜±;¿[°åJAeÞ·vÑZqpçYh¾\ÕÙÓˆƒÒÝÒñ„³hêìXäß™ÖÛö+À‰€@뙜µÜ«"Xh>9'SUãW.YÈôåèžzciøô#ôø;\UƒÌi&ÈöÕµSø}®f}ö)dÿzB–P«]DCNã Ë&46NÐ÷ž½Þ<ûýDÔendstream endobj 262 0 obj << /Type /Page /Contents 263 0 R /Resources 261 0 R /MediaBox [0 0 612 792] /Parent 232 0 R /Annots [ 265 0 R 266 0 R 267 0 R 269 0 R 270 0 R 271 0 R 272 0 R ] >> endobj 265 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [446.73 654.182 514.476 665.051] /Subtype/Link/A<> >> endobj 266 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 636.772 324.418 647.093] /Subtype/Link/A<> >> endobj 267 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [328.641 610.247 480.571 621.19] /Subtype/Link/A<> >> endobj 269 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [255.447 548.478 514.476 559.422] /Subtype/Link/A<> >> endobj 270 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 532.578 288.055 541.3] /Subtype/Link/A<> >> endobj 271 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [185.304 486.81 486.176 497.679] /Subtype/Link/A<> >> endobj 272 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [236.477 347.233 363.999 358.177] /Subtype/Link/A<> >> endobj 264 0 obj << /D [262 0 R /XYZ 97.768 692.105 null] >> endobj 124 0 obj << /D [262 0 R /XYZ 72.862 675.168 null] >> endobj 118 0 obj << /D [262 0 R /XYZ 72.862 631.333 null] >> endobj 268 0 obj << /D [262 0 R /XYZ 72.862 605.43 null] >> endobj 112 0 obj << /D [262 0 R /XYZ 72.862 525.729 null] >> endobj 119 0 obj << /D [262 0 R /XYZ 72.862 463.96 null] >> endobj 120 0 obj << /D [262 0 R /XYZ 72.862 438.057 null] >> endobj 125 0 obj << /D [262 0 R /XYZ 72.862 412.154 null] >> endobj 127 0 obj << /D [262 0 R /XYZ 72.862 368.319 null] >> endobj 121 0 obj << /D [262 0 R /XYZ 72.862 342.416 null] >> endobj 123 0 obj << /D [262 0 R /XYZ 72.862 298.58 null] >> endobj 261 0 obj << /Font << /F38 52 0 R /F61 250 0 R /F45 63 0 R /F13 84 0 R >> /ProcSet [ /PDF /Text ] >> endobj 275 0 obj << /Length 1111 /Filter /FlateDecode >> stream xÚµVÏoë6 ¾÷¯ÈÑjEò¯ØÙåuC¶aØá5xÀ°î ØJ"̶´ÒÈp³Z3ƒ§èNeÞ)ŸÿL„ügitV{:‘Kú‹·ù’“sãv½¶æàÎrRl¯ ž%b;A(ð@µóQl­¬]_8Ê* 1= qÈxíâ ØIPŽÊÑæ¤º‘ò“•««ì/gíNP5ð2¯Þç›—‘U˜e¼PI/uG{ÈÄ•ƒBT¬¨((ëÌP'qµæ?y{ ¦DÄ”;}cÍéÚ'%ZTo>¥uJ¹EÓKnqßzòPV;3öjp·ÁGQBÁ¿÷ñ¤†&Tê<-néó¢èÀs7û `ñÞI=¨6\¼Ð*Ðí—ÞÌ¡/üðõÑ|c“xÕö5høê»ô¥:Âe­4OéÌ£¤¥u;Z5=©iëm%%>}D Þl×OrZK”¥×';s„æpñ÷¼þ-ÐùÌLÀϺëÞÇÒn ÄÁL!áVZäð9Æ7¦ t>iÈ´ßê¥Ç4Í>ˆGÍYQä!÷2`¿¦ý†•E¤à¥œQ»– ÿï$Å,ÞãÿŒxch…B¸ É’þ,e'0wm«ûoÆEÔB0M3#·¥ûx:ð?¯—pÜ ¤¨–Ï#tiLUÆÿAsñ½‡ †㤠à]øÐ×I“†G:(>ò‚1Öj7è`/¨ÉŽÝ’VʹI¨La¼úÒ\Ð^fà¨!ÝbÄM¦÷ŠÓOÜÌFQBÓÖM$ðQï†Í>HQï¾Âþ£Ò{å§ùQM·tŽh%Âý¾a`.ò2$ÅD]?ÐuŠ&Ê"ú)à¿t¸ýÈ> endobj 278 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [151.92 589.973 464.747 600.916] /Subtype/Link/A<> >> endobj 279 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [215.357 572.04 415.108 582.984] /Subtype/Link/A<> >> endobj 281 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [416.701 467.806 471.459 478.819] /Subtype /Link /A << /S /GoTo /D (cite.RMHHS:2001) >> >> endobj 282 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [474.953 467.806 496.87 478.819] /Subtype /Link /A << /S /GoTo /D (cite.RMHHS:2001) >> >> endobj 283 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [342.897 449.873 384.541 460.817] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:dsc:2001) >> >> endobj 284 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [388.038 449.873 414.379 460.817] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:dsc:2001) >> >> endobj 285 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [268.085 431.94 309.729 442.884] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:philasugi:2001) >> >> endobj 286 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [313.109 431.94 340.008 442.884] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:philasugi:2001) >> >> endobj 276 0 obj << /D [274 0 R /XYZ 97.768 692.105 null] >> endobj 42 0 obj << /D [274 0 R /XYZ 97.768 667.198 null] >> endobj 277 0 obj << /D [274 0 R /XYZ 97.768 644.005 null] >> endobj 280 0 obj << /D [274 0 R /XYZ 97.768 487.511 null] >> endobj 273 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 287 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl 22/.notdef 30/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro 129/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 250 0 obj << /Type /Font /Subtype /Type1 /Encoding 287 0 R /BaseFont /Times-Italic >> endobj 288 0 obj << /Type /Encoding /Differences [ 0 /minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 129/.notdef 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 171/.notdef 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade 197/.notdef] >> endobj 83 0 obj << /Length1 775 /Length2 650 /Length3 532 /Length 1210 /Filter /FlateDecode >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž4W0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22´25âRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥rg^Z¾‚9D8¥´&U–ZT t”‚Бš @'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<(0¤s3s*¡ òs JKR‹|óSR‹òЕ†§BÜæ›š’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l ‘È,vˬHM È,IÎPHKÌ)N‹§æ¥ ;z`‡è{x‡DiCb,˜™WRYª`€P æ"øÀ0*ʬPˆ6Ð300*B+Í.×¼äü”̼t#S3…Ä¢¢ÄJ. QF¦¦ Õ† ™y)© ©@ëëåå—µ(C¦V!-¿ˆ ©†Æ úÉ™EÉ9©É 8+ÉraúÆÉ)¿¢Z˜òt-M  LÌ-ŒjQ†æe–¦zº(˜XB<œ\ZT”šWNEÀ‚ñÓ2¡›šZ‘šÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ—7ÙD쨛™Rl:/P1½dÉ«…¶öϾ(á•l=U¸h‹d¯_OÜ—EÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y. ›1§õ‘´Õþ¢Ç³:•un~Q®?Á3/å…SÔâ}ßï]ãÒ š¤¥$e~sû]F1ñÊ»Ï/zÊíO]Ù3ÿÑÆó½EQ’žý^ÿŸYì^¶Q¹íøgíÅ×ôI\Ýä÷LèÐ!~ç³Öy?hKDgêV«ï;®É÷þÎOý©w_dÜãæf|üfÇçg‚û¸þ81Çú`¶©Ž‰óêü´¸5q¹­ë•ê-Ûa·ê²Kô¦_j‘»•V^,•uþ ÷êŒY³uU~5¼˜g!'¾ôÉ´äm,¦×ç°¬?­¾ÞÐÀõZØ—ÄÉŽ3¦w̺#huìóó‚«·=xá¡Ä¦¯Ôd'z°ïÙSAÿ=ÙñóLç©{µé]ÿŒs§k+$®h´>Ûf²§s³Øº›6FÆù¢Ÿ˜Û§ÿÊZ¼Íî ó¾#_xÏqkÉtNÚÓŸ´¿uÓÇ&³+•Ñb»6ÜéäìRû=-Ä%<”ëÉT³µ-gZüO¨¼}úJ¤ÈÖǯy³ŽÝMâ´n®¶rÚcÔóíÓß‹û_åß™uðú¡M&—ŽTí æy,ò…ó 7O~ÖÖ£F-쫤¬8Loˆª(Î ÖYìß<ÙÌÅpÉL#îO’—ªuŸäzn@!à5`X, ‹Jòs‹²¹¿–™mendstream endobj 84 0 obj << /Type /Font /Subtype /Type1 /Encoding 288 0 R /FirstChar 13 /LastChar 13 /Widths 289 0 R /BaseFont /HKTXQR+CMSY7 /FontDescriptor 82 0 R >> endobj 82 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /HKTXQR+CMSY7 /ItalicAngle -14 /StemV 93 /XHeight 431 /FontBBox [-15 -951 1252 782] /Flags 4 /CharSet (/circlecopyrt) /FontFile 83 0 R >> endobj 289 0 obj [1139 ] endobj 63 0 obj << /Type /Font /Subtype /Type1 /Encoding 287 0 R /BaseFont /Courier >> endobj 59 0 obj << /Length1 773 /Length2 733 /Length3 532 /Length 1295 /Filter /FlateDecode >> stream xÚíRkPSGµ:Ô­ h¡ÑŽ F¥y\B€€R“ˆyˆ O©Ë½¸Ü 77ÈðP”A4*ÒŠˆZÁ_¥U$:VE¨E‹X:•ʨ€Z‹¯jUAqzuñgû«ÓÝ?ûí9{öìù–Ï‹Ô 8•gS$#DDH P…kãý"’pø| Q† ÈY("—#@aJˆ Hü}@©/‡TTš…&’’0E5ÕAò ¤ %A8Ê$C«¡z ¥02Pèõ@ã8ah„tÄE81 &$Gì0¤&uðØÆMi¯¡ HYS` kr*`-â©·ê8âн ²Nþ SƒÅg›ôúÔàw„ôŒ½åoeH31áir05x ‡8a2 FÕ ª'0™¤‡@ˆøŠ$RÙ@gfˆG – t¨Þû÷!‰¶Â¦×oD¡Ñ†xtµ‹D ’‰²¤A yC75›M˜A‚D$‘ ,‘¯W‹ÝBbNIÀGæPšF- +å#“,$ÍšYÃbI1ìÀ&“ tÍq4U Ĩ‘MŠ0¦²=Iv€œw£TRæ,¡/Ê}"õ‘ÿ¿ì·yÑ$‘n‚êY@&‘Hçb&š†$Óÿ‡Øœ^×:‚ÍB3Ä8­-´2¥ôhAeNÈîŸö9‰Gô4¼Ó:ütœ=ggkee xILùÝ]7ª×Õ¹¥6»Ï¾t¥|lX»¸ë+×ÕE;÷ÄmÈ“]ÖºYò‹6}øÊ[pW]—³Ù¶êÆ„ÀSôÍ­«=?míòÌmU†ßV.Ü}²»­eäØišÓ<¸þ­{‡_{ï#7˵ÎK/'ðFä—%hÚk–.ʪˆm”µ¨ŸÝƒò3]|’_±*S¼¢‚»4eÂ’b~õxfEòº !g¼ÄózÃæn/ý|hqæ¼ôî÷I”/ÑpÃfªÎL Îx˜àS\©ˆ ´Ÿ]³qŒKœ ~XÉþEå͉3ÜДÓíŸ QU‚¬Û¼tïÎÃÒUå.‹×KÓz–Û_•MÒ1$kíaÉ|¯KÅu’¹Ùín¶û÷5qõ9¡>Úõ_U½o칤>—^µÄ–/u®½YqË}Vc‘Éûh11ytóøïû¢µMÑùLPdUOMýs¿¶nõÕVòä¶§ñ??pJoŠ:Ty…:¯Û_¶éG÷ïä|[í«Zç9/bv¯*l”#Ögò †óDׯ–ÿ©Ë?ÅôíÅ…õ¡%# ‹.lÖñ•éž .‹Æßß)HùfË ¥-,¨Nàê’âòô‘>/¤"¯à¯Ó”ÖÛ1Ã:§zŸëÞ忘=…-‹N4ßÛ<¦~æÍDMN÷g Ôïø?ò®¶äéûJ¼Û®µÛ<º<·x¨_zŸØâu'€BͲJãÜT×ðɹÇkby¥ÜÑl{¥hbÐ4ªZs>>®êH´¶6w„;Ù|í§èå䎙l}žœØØØVxîYmþš¦œ51;O¬]2lÈåq–ŠrûìG¡ÀžkɬãFuDê Ò{熮äÖØMh8xKnqzxâXÊoÕÙëEg¦É||íÉ\²<À÷JÂØé½3E¡»È#g–=ž¸©DäTcëY ›ÿL—|6rúž>°º’k•üÃÁù_à?!€é!J3”¥S9RÅÏendstream endobj 60 0 obj << /Type /Font /Subtype /Type1 /Encoding 288 0 R /FirstChar 3 /LastChar 3 /Widths 290 0 R /BaseFont /NLNRSE+CMSY6 /FontDescriptor 58 0 R >> endobj 58 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /NLNRSE+CMSY6 /ItalicAngle -14 /StemV 93 /XHeight 431 /FontBBox [-4 -948 1329 786] /Flags 4 /CharSet (/asteriskmath) /FontFile 59 0 R >> endobj 290 0 obj [639 ] endobj 57 0 obj << /Type /Font /Subtype /Type1 /Encoding 287 0 R /BaseFont /Times-Bold >> endobj 54 0 obj << /Length1 774 /Length2 713 /Length3 532 /Length 1270 /Filter /FlateDecode >> stream xÚíRkPW-:ÊXÅg¬´riQL²›¸„DPyeD"Š€e÷&,$»a³Á¤ RÑÄ•¶VQÆV‹–bª(ƒ(ÔLj+bqŠZÑú¢­:X"¢vuœâÏöW§÷þ¹ß=çž{îù®¿O¼VF2iPÍМ• *«] P "ð÷`!ÎQ ‰sPP¥a=@1€(T2™ åI ‚1ÙXJŸÎ€ˆÉ.’„!K8 bq.y 7-CP³I@˜Á\'Ì š!› I‰EIHƒzŠH]†4´ŽŠþmÒbz eCÖÌ›¼ÉÉ€·H2´ÁH¨Hãþ.È;ù7L W[ †8Üè’w…ôŒ)ƒí/c4Y8È‚X†„,=ºö{‹…$e1D5n ˆ0Zo€@ŒN“ r¬ ÌjÊ ÉxŠ#Ò7˜aß>¤ÉVøôúŒH£¢´ïköwµ‹Ç)š›g3A€¼"÷Õ諚ψ¥¬ ‘ ÊùùrµhÀ]Q4Á­2,à,‹Û/%Ã0°MB+€VÞ°TB3ðÉäà \M•)n擢̙|OÒ] àõÇ„‡3Öåb9ÄJ^Eƒ1 P(sþNL¤©, ÔD A`´ÿ½„…e!Íõ}">¨—µŽâÃ…Ð A[ CL_±ùàGßäFílª"õxÒ¸÷n›{CRMn)Eæh±²¹>zn×½/oTo8.ʼ0>†˜þÙhöÀ[ëãÖ-îújteõÚåIÅyX½ä²VdË_ûù›Ïß»§9ž5ÿ‹mknx©êÙŽ­…~SÛºüV6+#ï„'ï<Ú}µE8jJ¦)¾m{ÜÛÝÆ‰lí·/õzùxä—¥$\;Ó.Ç4xº}\~Î;ïq{[³oeÕ1ù»»a‘3éís²³ÏœA²¡5A?»YöXƒ¼žxJã9hß#ö&mW‡Kç5•D›ùû=½"gŸ#™zæÒCsïQº½†ÛëŸzéVƒ3mŒræÙ%©`[H`uÔb÷‰QýP¬¾ÛØ ÆzÓ‘Ü^úОúÇ×nÂùó*…ׯ‡VUÁ³j‘±Ý’¹uyc‰‚ZgHŽR¾©®ÎwYÖ¹³›éÄ-0^1ß?-*ýÞtL8zæÄ…¥ó‹¨Îó ÅCDƒ™GCi}›¢.y›°°0f#QwF¡®bôšU4învkíî¦n*xLçcqñ‘ýÊuÜÏ\ˆ}¤>p¡`©É1!`䈂Óï{#U«f ¯˜€™U}~‘¯O;–q°×qøÐàIëZOþxg†›¾|faåé¦OD'šD·ÍºÔC=¶f_´Ñ™dNIŒ“´ŒÚÔ¼Eã}ÑûÃ`j#¬1å?Ék¼–êÈ•oŸ‘ôâÎO&w%ïh^,ÛøAö!ĺéì¹ö«ßõp{Ÿn5¨’‡9_mµ×aZg¤ãû5¡§Ã’;D1³}=º-xÕÉ»ÄEò®ÕtM|ö2aë­}¶Å{vòïfüjæî€ë¼í4Z™Øù|‰½cÇVâeŠ,*0Çù¢µ§«(|Ë©ANbÎO_ïq¤ê„ù‡Cð¿ÀB€0@œå#Îf þËœ¾Åendstream endobj 55 0 obj << /Type /Font /Subtype /Type1 /Encoding 288 0 R /FirstChar 3 /LastChar 3 /Widths 291 0 R /BaseFont /EESKIW+CMSY8 /FontDescriptor 53 0 R >> endobj 53 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /EESKIW+CMSY8 /ItalicAngle -14 /StemV 89 /XHeight 431 /FontBBox [-30 -955 1185 779] /Flags 4 /CharSet (/asteriskmath) /FontFile 54 0 R >> endobj 291 0 obj [531 ] endobj 52 0 obj << /Type /Font /Subtype /Type1 /Encoding 287 0 R /BaseFont /Times-Roman >> endobj 69 0 obj << /Type /Pages /Count 6 /Parent 292 0 R /Kids [46 0 R 71 0 R 129 0 R 142 0 R 151 0 R 161 0 R] >> endobj 176 0 obj << /Type /Pages /Count 6 /Parent 292 0 R /Kids [170 0 R 188 0 R 198 0 R 207 0 R 216 0 R 221 0 R] >> endobj 232 0 obj << /Type /Pages /Count 6 /Parent 292 0 R /Kids [228 0 R 234 0 R 239 0 R 245 0 R 262 0 R 274 0 R] >> endobj 292 0 obj << /Type /Pages /Count 18 /Kids [69 0 R 176 0 R 232 0 R] >> endobj 293 0 obj << /Type /Outlines /First 7 0 R /Last 43 0 R /Count 7 >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R /Parent 293 0 R /Prev 39 0 R >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R /Parent 293 0 R /Prev 35 0 R /Next 43 0 R >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R /Parent 293 0 R /Prev 31 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R /Parent 293 0 R /Prev 15 0 R /Next 35 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 15 0 R /Prev 23 0 R >> endobj 23 0 obj << /Title 24 0 R /A 21 0 R /Parent 15 0 R /Prev 19 0 R /Next 27 0 R >> endobj 19 0 obj << /Title 20 0 R /A 17 0 R /Parent 15 0 R /Next 23 0 R >> endobj 15 0 obj << /Title 16 0 R /A 13 0 R /Parent 293 0 R /Prev 11 0 R /Next 31 0 R /First 19 0 R /Last 27 0 R /Count -3 >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 293 0 R /Prev 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 293 0 R /Next 11 0 R >> endobj 294 0 obj << /Names [(Doc-Start) 50 0 R (cite.BUGS) 124 0 R (cite.BecRCW88) 113 0 R (cite.ChaJ98) 115 0 R (cite.ChaJH92) 114 0 R (cite.Cook:Weisberg:1999) 122 0 R (cite.DTLang:2000) 125 0 R (cite.ESS) 112 0 R (cite.GNU-Emacs) 126 0 R (cite.PGraham:1996) 140 0 R (cite.R) 118 0 R (cite.RChassell1999) 139 0 R (cite.RMHHS:2001) 268 0 R (cite.SAS:8) 119 0 R (cite.Splus) 116 0 R (cite.Stata:7.0) 120 0 R (cite.Tier90) 121 0 R (cite.XEmacs) 127 0 R (cite.heiberger:dsc:2001) 255 0 R (cite.heiberger:philasugi:2001) 258 0 R (cite.ihak:gent:1996) 117 0 R (cite.youn:fald:mcfa:1992) 123 0 R (figure.1) 148 0 R (figure.2) 166 0 R (figure.3) 185 0 R (figure.4) 186 0 R (page.1) 49 0 R (page.10) 209 0 R (page.11) 218 0 R (page.12) 223 0 R (page.13) 230 0 R (page.14) 236 0 R (page.15) 241 0 R (page.16) 247 0 R (page.17) 264 0 R (page.18) 276 0 R (page.2) 73 0 R (page.3) 131 0 R (page.4) 144 0 R (page.5) 153 0 R (page.6) 163 0 R (page.7) 172 0 R (page.8) 190 0 R (page.9) 200 0 R (section*.1) 132 0 R (section*.10) 201 0 R (section*.11) 210 0 R (section*.12) 211 0 R (section*.13) 212 0 R (section*.14) 213 0 R (section*.15) 214 0 R (section*.16) 219 0 R (section*.17) 224 0 R (section*.18) 225 0 R (section*.19) 226 0 R (section*.2) 133 0 R (section*.20) 231 0 R (section*.21) 237 0 R (section*.22) 248 0 R (section*.23) 277 0 R (section*.24) 280 0 R (section*.3) 134 0 R (section*.4) 145 0 R (section*.5) 146 0 R (section*.6) 164 0 R (section*.7) 174 0 R (section*.8) 191 0 R (section*.9) 192 0 R (section.1) 6 0 R (section.2) 10 0 R (section.3) 14 0 R (section.4) 30 0 R (section.5) 34 0 R (section.7.1) 38 0 R (section.A) 42 0 R (subsection.3.1) 18 0 R (subsection.3.2) 22 0 R (subsection.3.3) 26 0 R (table.1) 242 0 R] /Limits [(Doc-Start) (table.1)] >> endobj 295 0 obj << /Kids [294 0 R] >> endobj 296 0 obj << /Dests 295 0 R >> endobj 297 0 obj << /Type /Catalog /Pages 292 0 R /Outlines 293 0 R /Names 296 0 R /PageMode /UseOutlines /URI<> /ViewerPreferences<<>> /OpenAction 45 0 R /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj 298 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.10b)/Keywords() /CreationDate (D:20031110164000) >> endobj xref 0 299 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000051 00000 f 0000000009 00000 n 0000013240 00000 n 0000523750 00000 n 0000000054 00000 n 0000000084 00000 n 0000013298 00000 n 0000523664 00000 n 0000000129 00000 n 0000000153 00000 n 0000035029 00000 n 0000523539 00000 n 0000000199 00000 n 0000000235 00000 n 0000038257 00000 n 0000523465 00000 n 0000000286 00000 n 0000000330 00000 n 0000489764 00000 n 0000523378 00000 n 0000000381 00000 n 0000000423 00000 n 0000492725 00000 n 0000523304 00000 n 0000000474 00000 n 0000000515 00000 n 0000498539 00000 n 0000523216 00000 n 0000000561 00000 n 0000000594 00000 n 0000501273 00000 n 0000523128 00000 n 0000000640 00000 n 0000000669 00000 n 0000505172 00000 n 0000523040 00000 n 0000000717 00000 n 0000000746 00000 n 0000513065 00000 n 0000522965 00000 n 0000000792 00000 n 0000000850 00000 n 0000003449 00000 n 0000004772 00000 n 0000000900 00000 n 0000004654 00000 n 0000004713 00000 n 0000000056 00000 f 0000522375 00000 n 0000522143 00000 n 0000520599 00000 n 0000521987 00000 n 0000000062 00000 f 0000520509 00000 n 0000520278 00000 n 0000518709 00000 n 0000520122 00000 n 0000003611 00000 n 0000000249 00000 f 0000518622 00000 n 0000003788 00000 n 0000003957 00000 n 0000004125 00000 n 0000004296 00000 n 0000004476 00000 n 0000522466 00000 n 0000013357 00000 n 0000007378 00000 n 0000004890 00000 n 0000013181 00000 n 0000007755 00000 n 0000007905 00000 n 0000008055 00000 n 0000008210 00000 n 0000008365 00000 n 0000008519 00000 n 0000008673 00000 n 0000008826 00000 n 0000518389 00000 n 0000516903 00000 n 0000518231 00000 n 0000008979 00000 n 0000009131 00000 n 0000009280 00000 n 0000009431 00000 n 0000009591 00000 n 0000009751 00000 n 0000009898 00000 n 0000010045 00000 n 0000010196 00000 n 0000010347 00000 n 0000010499 00000 n 0000010654 00000 n 0000010810 00000 n 0000010963 00000 n 0000011116 00000 n 0000011281 00000 n 0000011446 00000 n 0000011611 00000 n 0000011778 00000 n 0000011945 00000 n 0000012097 00000 n 0000012249 00000 n 0000012406 00000 n 0000012564 00000 n 0000012720 00000 n 0000012876 00000 n 0000013028 00000 n 0000509723 00000 n 0000505291 00000 n 0000505413 00000 n 0000505352 00000 n 0000505899 00000 n 0000505838 00000 n 0000509602 00000 n 0000509784 00000 n 0000509844 00000 n 0000510027 00000 n 0000505534 00000 n 0000510088 00000 n 0000509541 00000 n 0000509905 00000 n 0000505595 00000 n 0000509966 00000 n 0000017025 00000 n 0000015985 00000 n 0000013451 00000 n 0000016781 00000 n 0000016842 00000 n 0000016903 00000 n 0000016964 00000 n 0000016140 00000 n 0000016301 00000 n 0000016462 00000 n 0000016622 00000 n 0000505473 00000 n 0000505656 00000 n 0000020337 00000 n 0000019872 00000 n 0000017108 00000 n 0000020154 00000 n 0000020215 00000 n 0000020276 00000 n 0000020003 00000 n 0000034967 00000 n 0000022223 00000 n 0000035089 00000 n 0000022112 00000 n 0000020432 00000 n 0000034906 00000 n 0000022585 00000 n 0000022644 00000 n 0000034863 00000 n 0000034883 00000 n 0000040180 00000 n 0000157860 00000 n 0000038378 00000 n 0000037914 00000 n 0000035212 00000 n 0000038196 00000 n 0000038317 00000 n 0000038045 00000 n 0000290309 00000 n 0000292638 00000 n 0000303553 00000 n 0000290432 00000 n 0000040040 00000 n 0000038473 00000 n 0000290248 00000 n 0000289947 00000 n 0000290371 00000 n 0000290098 00000 n 0000522580 00000 n 0000040541 00000 n 0000040600 00000 n 0000157816 00000 n 0000157836 00000 n 0000158225 00000 n 0000158284 00000 n 0000289903 00000 n 0000289923 00000 n 0000301705 00000 n 0000484084 00000 n 0000301887 00000 n 0000292526 00000 n 0000290568 00000 n 0000301644 00000 n 0000301766 00000 n 0000301826 00000 n 0000293001 00000 n 0000293060 00000 n 0000301602 00000 n 0000301622 00000 n 0000484206 00000 n 0000303441 00000 n 0000302010 00000 n 0000484023 00000 n 0000484146 00000 n 0000303913 00000 n 0000303972 00000 n 0000483979 00000 n 0000483999 00000 n 0000487360 00000 n 0000486882 00000 n 0000484329 00000 n 0000486994 00000 n 0000487055 00000 n 0000487116 00000 n 0000487177 00000 n 0000487238 00000 n 0000487299 00000 n 0000489885 00000 n 0000489591 00000 n 0000487455 00000 n 0000489703 00000 n 0000489824 00000 n 0000492845 00000 n 0000492430 00000 n 0000489980 00000 n 0000492542 00000 n 0000492603 00000 n 0000492664 00000 n 0000492784 00000 n 0000495811 00000 n 0000495577 00000 n 0000492940 00000 n 0000495689 00000 n 0000495750 00000 n 0000522697 00000 n 0000498599 00000 n 0000498306 00000 n 0000495906 00000 n 0000498418 00000 n 0000498479 00000 n 0000501333 00000 n 0000500868 00000 n 0000498682 00000 n 0000501150 00000 n 0000501211 00000 n 0000501000 00000 n 0000505960 00000 n 0000503383 00000 n 0000501416 00000 n 0000505111 00000 n 0000505232 00000 n 0000000000 00000 f 0000515153 00000 n 0000503571 00000 n 0000503770 00000 n 0000503970 00000 n 0000504161 00000 n 0000505716 00000 n 0000504353 00000 n 0000504547 00000 n 0000505777 00000 n 0000504742 00000 n 0000504926 00000 n 0000510148 00000 n 0000507933 00000 n 0000506068 00000 n 0000509480 00000 n 0000508113 00000 n 0000508307 00000 n 0000508502 00000 n 0000509663 00000 n 0000508674 00000 n 0000508895 00000 n 0000509114 00000 n 0000509311 00000 n 0000513247 00000 n 0000511447 00000 n 0000510256 00000 n 0000513004 00000 n 0000513125 00000 n 0000511635 00000 n 0000511834 00000 n 0000513186 00000 n 0000512015 00000 n 0000512173 00000 n 0000512330 00000 n 0000512496 00000 n 0000512662 00000 n 0000512833 00000 n 0000513342 00000 n 0000515246 00000 n 0000518597 00000 n 0000520485 00000 n 0000522351 00000 n 0000522814 00000 n 0000522891 00000 n 0000523822 00000 n 0000525581 00000 n 0000525620 00000 n 0000525658 00000 n 0000525884 00000 n trailer << /Size 299 /Root 297 0 R /Info 298 0 R >> startxref 526039 %%EOF ess-17.11/doc/ess-intro-graphs.tex0000644005071500004540000015146413202324173013747 00000000000000\documentclass{article} \newif\ifMM\MMtrue \MMfalse \newif\ifdraft % During writing: a draft: %\drafttrue % FINAL: \draftfalse \ifMM\drafttrue\fi \ifdraft %% generate tableofcontents down to the \paragraph \setcounter{tocdepth}{5} \fi %1. introduction % a) a statistician's needs % b) statistical analysis packages supported by ESS %2. emacs % a) buffers % b) key sequences % c) modes % 1) font-lock % 2) shell/comint % 3) ange-ftp/EFS/tramp % 4) vc/pcl-cvs %3. ESS % a) interactive % 1) S family % 2) SAS % b) batch % 1) SAS % 2) BUGS % 3) S family %4. ESS as an open-source project % a) origins % 1)S-mode % 2)SAS-mode % b) unification % 1)ESS-mode % 2)Emacs/XEmacs % 3)Unix/Windows/Mac %5. conclusion % a) summary % b) what's next for ESS % ESS internet resources % a) home page % b) ess-help % c) anonymous cvs % References % \ifdraft \addtolength{\topmargin}{-1cm} \addtolength{\textheight}{+1cm} \else%FINAL: \renewcommand{\baselinestretch}{1.5} \fi \addtolength{\oddsidemargin}{-0.5in} \addtolength{\textheight}{0.2in} \addtolength{\textwidth}{1in} \ifMM\addtolength{\textheight}{2cm}\fi %%% \usepackage[authoryear,round]{natbib} %or (if you have an unshiny latex installation) %\newcommand{\citep}[1]{{\{\sf#1\}}} %%% \usepackage{alltt} %% Postscript fonts \usepackage{times} \usepackage{graphicx} %\DeclareGraphicsExtensions{.jpg,.pdf,.png,.mps,.ps} \DeclareGraphicsRule{.ps}{eps}{.ps.bb}{} \DeclareGraphicsRule{.ps.Z}{eps}{.ps.bb}{'/bin/zcat -c #1} %\graphicspath{{jcgs/}} %\usepackage{psfig} \ifx\pdfoutput\undefined %% Stuff wout hyperref \def\url#1{\stexttt{#1}} % To help fit in lines ?AJR: stextsf? \else %% Stuff with hyperref \usepackage{hyperref} %%\hypersetup{backref,colorlinks=true,pagebackref=true,hyperindex=true} \hypersetup{backref,colorlinks=false,pagebackref=true,hyperindex=true} \fi %%---End of package requiring ---------- Own Definitions ------------- \newcommand*{\regstrd}{$^{\mbox{\scriptsize{\textregistered}}}$} \newcommand*{\tm}{$^{\mbox{\scriptsize\sc tm}}$} \newcommand*{\SAS}{\textsc{SAS}} \newcommand*{\Splus}{\textsc{S-Plus}} \newcommand*{\XLispStat}{\textsc{XLispStat}} \newcommand*{\Stata}{\textsc{Stata}} \newcommand*{\Rgui}{\textsc{Rgui}} \newcommand*{\Perl}{\textsc{Perl}} \newcommand*{\Fortran}{\textsc{Fortran}} \newcommand*{\Scmt}[1]{\hbox{\qquad {\footnotesize \#\#} \textsl{#1}}} \newtheorem{defn}{Definition}[section] \newtheorem{ex}{Example}[section] \newcommand{\stexttt}[1]{{\small\texttt{#1}}} \newcommand{\ssf}[1]{{\small\sf{#1}}} \newcommand{\elcode}[1]{\\{\stexttt{\hspace*{2em} #1}}\\} \newcommand{\file}[1]{`\stexttt{#1}'} \newcommand{\US}{{\char'137}} % \tt _ \newcommand{\marpar}[1]{\marginpar{\raggedright#1}} \newenvironment{Salltt}{\small\begin{alltt}}{\end{alltt}} \newcommand{\emptyfig}{ \hspace*{42pt}\rule{324pt}{.25pt}\\ \hspace*{42pt}\rule{.25pt}{10pc} \rule{316pt}{.25pt} \rule{.25pt}{10pc}} \newcommand{\ESSfig}[1]{\centering{#1}} %% Use \begin{Comment} .. \end{Comment} for internal comments \ifdraft \newenvironment{Comment}{\begin{quote}\small\itshape }{\end{quote}} % \else %% this requires \usepackage{verbatim} \let\Comment=\comment \let\endComment=\endcomment \fi %%--------------------------------------------------------------- Start Text \title{Emacs Speaks Statistics (ESS): A multi-platform, multi-package intelligent environment for statistical analysis} %%For blinded submission: %\author{anonymous} %%For regular review: \author{A.J. Rossini \and Richard M. Heiberger \and Rodney A. Sparapani \and Martin M{\"a}chler \and Kurt Hornik \footnote{% %% A.J. Rossini is Research Assistant Professor in the Department of Biostatistics, University of Washington and Joint Assistant Member at the Fred Hutchinson Cancer Research Center, Seattle, WA, USA \url{mailto: rossini@u.washington.edu}; %% Richard M. Heiberger is Professor in the Department of Statistics at Temple University, Philadelphia, PA, USA \url{mailto: rmh@temple.edu}; %% Rodney A. Sparapani is Senior Biostatistician in the Center for Patient Care and Outcomes Research at the Medical College of Wisconsin, Milwaukee, WI, USA \url{mailto: rsparapa@mcw.edu}; %% Martin M{\"a}chler is Senior Scientist and Lecturer in the Seminar for Statistics, ETH Zurich, Zurich, Switzerland \url{mailto: maechler@stat.math.ethz.ch}; %% Kurt Hornik is Professor in the Institut f{\"u}r Statistik, Wirtschaftsuniversit{\"a}t Wien and the Institut f{\"u}r Wahrscheinlichkeitstheorie und Statistik, Technische Universit{\"a}t Wien, Vienna, Austria \url{mailto: Kurt.Hornik@R-project.org}}} %%\date{\today} \date{$ $Date: 2003/10/22 17:34:04 $ $\tiny Revision: 1.255$ $} \begin{document} %% To cite everything %%\nocite{*} \ifdraft \setcounter{page}{0} %%\newpage \tableofcontents \fi \maketitle \ifdraft{}%% large line skip -- not for draft \else%FINAL: \renewcommand{\baselinestretch}{1.5} %%- \baselineskip=2pc \fi \begin{abstract} Computer programming is an important component of statistics research and data analysis. This skill is necessary for using sophisticated statistical packages as well as for writing custom software for data analysis. Emacs Speaks Statistics (ESS) provides an intelligent and consistent interface between the user and software. ESS interfaces with SAS, S-PLUS, R, and other statistics packages under the Unix, Microsoft Windows, and Apple Mac operating systems. ESS extends the Emacs text editor and uses its many features to streamline the creation and use of statistical software. ESS understands the syntax for each data analysis language it works with and provides consistent display and editing features across packages. ESS assists in the interactive or batch execution by the statistics packages of statements written in their languages. Some statistics packages can be run as a subprocess of Emacs, allowing the user to work directly from the editor and thereby retain a consistent and constant look-and-feel. We discuss how ESS works and how it increases statistical programming efficiency. \end{abstract} \noindent Keywords: Data Analysis, Programming, S, \SAS, \Splus, R, \XLispStat, \Stata, BUGS, Open Source Software, Cross-platform User Interface. \section{Introduction} \label{sec:introduction} Most statistical research activities, particularly data analysis and communication, involve some form of computing. The computer user interface is thus placed in the central role of facilitating statistical tasks. While presentation of character and graphical information is the most visual component of a user interface, perhaps a more critical component is how the computer interprets user input. A familiar, well-understood set of input behaviors can provide large gains in efficiency. This paper introduces Emacs Speaks Statistics (ESS) \citep{ESS}, a software package which provides a common interface to a variety of statistical packages on the most common computing platforms. ESS is an interface to statistical packages that provides tools which facilitate both statistical software development and data analysis. ESS provides assistance with both writing and evaluation of analysis code for both interactive and batch statistical packages. ESS currently supports the S family of languages (including S \citep{BecRCW88,ChaJH92,ChaJ98}, \Splus\regstrd\ \citep{Splus}, and R \citep{ihak:gent:1996,R}; \SAS\regstrd\ \citep{SAS:8}; \Stata\ \citep{Stata:7.0}; \XLispStat\ \citep{Tier90} and its extensions Arc \citep{Cook:Weisberg:1999} and ViSta \citep{youn:fald:mcfa:1992}; BUGS \citep{BUGS}; and Omegahat \citep{DTLang:2000}. ESS can be extended to accommodate most statistical packages which provide either an interactive command-line or process batch files for instructions. We start by describing the Emacs text editor, the underlying platform on which ESS is built. Next, we discuss how ESS enhances a statistician's daily activities by presenting its features and showing how it facilitates statistical computing. We conclude with a short history of the development of ESS. % and conclude with future extensions and related work. \section{Emacs} \label{sec:emacs} Emacs is a mature, powerful, and extensible text editing system which is freely available, under the GNU General Public License (GPL), for a large number of platforms, including most Unix\regstrd distributions, Microsoft Windows\regstrd\ and Apple Mac\tm\ OS. There are two open-source implementations of Emacs: GNU Emacs \citep{GNU-Emacs} and XEmacs \citep{XEmacs}. Emacs shares many features with word processors, and some characteristics with operating systems, including many facilities which go beyond ordinary text editing. More important to our goals, Emacs can control and interact with other programs. \paragraph{Keyboard and Mouse Input.} When Emacs was originally written, character-based terminals were the most advanced method of computer access. Common Emacs commands were mapped to key sequences, creating keyboard shortcuts for convenience. Over the last decade, Emacs has been extended to use graphical windowing systems, such as X11\tm, Microsoft Windows, and Apple Mac OS, which allow additional forms of input, for example using a mouse, and which encourage multiple applications to share a single display. Presently, Emacs is more often used with a GUI, with commands bound to mouse actions, but having commands also associated with key sequences is an important ergonomic and time-saving feature. Emacs menus and toolbars on the display screen allow mouse access to frequently used actions and provide a graphical alternative when the user does not know or can not recall a key sequence; these are also subject to user-customization. \paragraph{Buffers give Emacs control.} Emacs buffers are the interface between the user and computer. They can be considered to be a collection of scratch pads that both the user and computer can read, write, and respond to. The user can simultaneously edit many files and control numerous programs by opening multiple buffers. With disk files, the working copy of the opened file is placed in an Emacs buffer where it can be viewed and edited either by the user or automatically by Emacs or another program under the control of Emacs. Emacs can save a backup of the contents to disk at specified intervals. Emacs presents buffer contents in ways which optimize reading and navigation activities. One example of program control is the embedding of the interactive operating system command line interpreter, called a shell, within Emacs. Variations on this theme are used to control programs such as statistical packages which take input from and provide output to the command-line. The resulting buffers provide a copy of the entire transcript of the interaction, which can be edited and searched while the program executes. \paragraph{Major and Minor Modes.} Emacs capabilities are extended by loading %% AJR: If we remove ``or byte-compiled'' we need to remove ``text'', %% since it is wrong. %% text %% or byte-compiled files containing commands and functions written in Emacs Lisp (elisp) \citep{RChassell1999}, which is a dialect of Lisp \citep{PGraham:1996}. Emacs commands can be called interactively by pressing a key sequence mapped to the command or by name. %% AJR: this is actually true for M-x long-command-not-bound-to-keys, %% but I'm not telling anyone this! % Rodney: I don't understand what the problem is with telling them. The most important extensions to Emacs take the form of modes, which provide specific enhancements to the editing behavior. Major modes provide a customized environment consisting of mapped key sequences and associated commands for performing tasks such as file editing, reading mail, or browsing disk directories. Only one major mode can be active for a given buffer at any time. Major modes also can be written to intelligently control other programs such as statistics packages. Major modes for file editing are often determined by the file type or extension, i.e. the characters at the end of the file name that follow a period like \stexttt{txt}, \stexttt{s}, or \stexttt{sas}. Examples of this kind of major mode are \stexttt{ESS[S]} and \stexttt{ESS[SAS]}. Major modes understand a file's syntax and grammar and therefore provide intelligent actions such as automatic indentation; navigation in units of characters, words, lines, sentences, paragraphs, function definitions, and pages; syntax-based fontification and colorization; and reformatting based on programmed conventions. Minor modes provide complementary services that that are applicable across major modes. Many minor modes can be active at once. For example, \stexttt{font-lock-mode} allows Emacs to highlight, with fonts or colors, the syntax of a programming language whose characteristics are described within a major mode like \stexttt{ESS[S]}. The \stexttt{overwrite-mode} determines whether typed characters replace the existing text or are inserted at the cursor. Minor modes can emulate the key sequences used by another editor such as \stexttt{vi}. In addition, they can be used to perform version control operations and many other operations which are nearly identical across file types. \paragraph{Network Support.} Emacs allows transparent access to remote files over a network. This means that the user views, edits, and saves files on a remote machine exactly as if they were on the local machine. Mechanisms for both open (\stexttt{ange-ftp} and \stexttt{EFS} use ftp) and secure (\stexttt{tramp} uses scp or ssh) access are available. Emacs can also monitor and control remote processes running in a shell buffer. \paragraph{Editing Extensions.} Most programming and documentation tasks consist of editing text. These tasks can be enhanced by contextual highlighting and recognition of special reserved words appropriate to the programming language in use. In addition, Emacs also supports folding, outlining, tags, and bookmarks, all of which assist with maneuvering around a file. Emacs shares many features with word processing programs and cooperates with markup-language document preparation systems such as \LaTeX, \textsc{html}, or \textsc{xml}. Tracking changes to a text file made by multiple users, potentially in different locations, is the job of source-code control programs. Emacs interacts with standard source-code control programs such as CVS, RCS, and SCCS through minor modes such as \stexttt{vc-mode}. These source-code control systems facilitate documenting and tracking edits and changes to a file. More importantly, they allow for branching and merging of versions so that material present in an older version of the file can be recovered and inserted into a newer version in a fairly easy manner. Comparison of files, two or three drafts of a paper for example, is simplified by \stexttt{ediff}. An example is shown in Figure \ref{f.ediff}. The lines that are similar are highlighted in the two buffers, one for each file, and the specific words that mismatch are highlighted in a contrasting color. \stexttt{ediff} has many tools for working with the differences in files and in entire directories. When combined with the patch utility or a source-code control system, it provides the user with the ability to insert, delete or modify only the differing portions of text files. \begin{figure}[tbp] \ESSfig{\includegraphics[angle=270,width=\textwidth]{ediff-sas}} %\url{http://software.biostat.washington.edu/ess/doc/figures/ediff-sas.gif} \caption{Ediff of two versions of a file.} \label{f.ediff} \end{figure} % Rodney: You can't just mention complex functionality like etags and % speedbar. We would need to introduce these packages. Since they % aren't critical to ESS at this time, let's ignore them. Emacs has many other important features. Emacs provides file-manager capabilities, such as \stexttt{dired} (discussed in Major and Minor Modes above) and \stexttt{speedbar}, both of which interface to the computer's directory structure. Emacs stores the complete history of commands issued in an editing session, allowing a flexible and fairly complete undo capability. More importantly, for modes which control processes, the process input history is stored for recall as well as for later editing for printing or re-use. Emacs also includes web browsers, mail/newsgroup readers, and spell checking. In addition to being an extremely powerful editor, Emacs also includes capabilities usually found in an operating system. Thus, it provides a strong foundation for constructing an integrated development environment focused on the needs of statisticians. Emacs' power, flexibility, portability, and extensibility make it a solid platform on which to construct a statistical analysis user interface. \section{ESS extends Emacs} \label{sec:ess-extends-emacs} Statistical programming is the writing of computer programs for data analysis and processing. These programs might be written in a computer language that requires a compiler, such as \Fortran\ or C. But, more likely, they are written in a statistical analysis language that only requires an interpreter such as R, \SAS, \Stata, or \XLispStat. General purpose languages such as \Fortran, C/C++, Java, and PERL have integrated development environments which facilitate writing and debugging code. ESS extends Emacs to provide an integrated development environment for statistical languages. It offers a single interface for a variety of statistical computing tasks including interactive data analysis and statistical programming. ESS is able to provide a functional and extensible interface which is uniform and consistent across multiple statistical packages. This is done by adding shortcuts and features for accelerated editing of files as well as by interacting with the particular statistical packages to provide, for example, control of input/output, assistance with evaluation, and specialized parsing of help files. ESS supports the S family (S, \Splus, and R) interactively. \SAS\ and BUGS are also well supported for batch processing. \Stata\ and \XLispStat\ (including ARC and ViSta) are supported through highlighting and process-interfacing. \subsection{Features and capabilities} \label{sec:ESS:features} \paragraph{Syntactic highlighting and indentation of source code.} The programmers task is eased when language constructs (such as reserved words, function calls, strings, and comments) are visually identifiable and when lines of code are automatically indented to a depth appropriate to their context (e.g., if--then clauses, loops). ESS provides both of these to the programmer by including a description of the syntax of each supported statistical language in the form used by \stexttt{font-lock-mode}. Figure \ref{f.font} shows an example of font-locking a complicated S statement. The top panel shows an \stexttt{if} statement with a long expression in the condition and a multi-line consequence. The keyword \stexttt{if} is shown in purple, the string \stexttt{"deltat"} in RosyBrown. The comments are in red. Everything else is in the standard font. The consequence is indented and the continuations of the consequence are further indented. The matching parentheses are shown in green. The cursor is indicated by a solid box. In the bottom panel, we replaced the matching parenthesis with an unbalanced bracket. Emacs immediately marks that with the paren-mismatch font, bright purple in this example. On a black and white terminal we would use bold, underline, italic, and reverse-video, rather than colors, to distinguish the fonts. % Figure \ref{f.font} shows a black-and-white example of font-locking a % complicated S statement. The top panel shows an \stexttt{if} % statement with a long expression in the condition and a multi-line % consequence. The keyword \stexttt{if} is shown in an underlined font, % the string \stexttt{"deltat"} in an italic underlined font. The % comments are in an italic font. Everything else is in the standard % font. The consequence is indented and the continuations of the % consequence are further indented. The matching parentheses are marked % by a bold foreground and a shaded background. The cursor is indicated % by a solid box. In the bottom panel we replaced the matching % parenthesis with an unbalanced bracket. Emacs immediately marks that % with the paren-mismatch font, bright purple on % a color terminal. The font selection and the indentation depth are automatically supplied by Emacs as the lines are typed. The user has several options for mapping of colors or fonts to each of the syntactic types. We selected % black-and-white font-mapping for display here. On a color terminal % we might use purple for the keywords, red for comments, green for matching parens, and inverse-video purple for mismatched parens. Emacs makes default choices of colors and ESS provides several other optional schemes. \begin{figure}[tbp]%h \ESSfig{% \includegraphics[angle=270,width=\textwidth]{font-cor-s} \includegraphics[angle=270,width=\textwidth]{font-incor-s}% } %\url{http://software.biostat.washington.edu/ess/doc/figures/font-cor-s.jpg} %\url{http://software.biostat.washington.edu/ess/doc/figures/font-incor-s.jpg} \caption{We illustrate here with fonts and colors appropriate for a color display. On a black and white terminal we would use bold, underline, italic, and reverse-video. On a color terminal we would use a selection of colors.} \label{f.font} \end{figure} Since S syntax is similar to that of C, ESS uses the Emacs tools for reformatting S code to match particular styles. Common C format styles, as well as locally customized styles, are defined by specifying the indentation level for nested statements, location of open-braces (at the end or at the beginning of a line), indentation offsets for if-then-else constructs, and similar characteristics. Syntax highlighting can be used to help enforce coding standards. Figure \ref{f.hilock} illustrates a standard for \SAS\ programming that says all \stexttt{PROC} statements must use the \stexttt{DATA=datasetname} option. \begin{figure}[tbp] \ESSfig{\includegraphics[angle=270,width=\textwidth]{hilock-sas}} %\url{http://software.biostat.washington.edu/ess/doc/figures/hilock-sas.gif} \caption{Enforce coding standards. The standard here is that all \stexttt{PROC} statements must use the \stexttt{DATA=datasetname} option. Lines that satisfy the standard turn green, lines that don't turn red. Ambiguous ones turn yellow.} \label{f.hilock} \end{figure} \paragraph{Process interaction.} Emacs has historically referred to processes under its control as ``inferior'', accounting for the name inferior ESS (\stexttt{iESS}) to denote the mode for interfacing with the statistical package. Figure \ref{f.ess-demo} shows the S language program \stexttt{ess-demo.s} in the top buffer in \stexttt{ESS[S]} mode and the executing R process in the bottom buffer \stexttt{*R*}. The \stexttt{iESS} major mode of the \stexttt{*R*} buffer is crafted for command-line editing. This mode remembers and uses the command history, allowing for the recall and searching of previously entered commands. Filename completion for local directories is also available. \begin{figure}[tb] \ESSfig{\includegraphics[angle=270,width=\textwidth]{ess-demo}} %\url{http://software.biostat.washington.edu/ess/doc/figures/ess-demo.jpg} \caption{Line-by-line execution of a command file. The cursor is placed on a line in the \stexttt{ESS[S]} buffer and then with a single key sequence the line is sent to the \stexttt{*R*} buffer for execution. The output of the package goes directly to the editable \stexttt{*R*} buffer.} \label{f.ess-demo} \end{figure} \paragraph{Source-level Debugging.} ESS facilitates the editing of source code files, sets of commands written for a statistical analysis package, and allows the user to load and error-check small sections of source code into the package. This is done through several mechanisms. First, the presence of unbalanced parentheses or mismatched/unterminated quotes is immediately evident with syntactic highlighting of the source code. Second, functions are provided for simple and consistent execution of user-specified or natural units of the code (function definitions in S or \XLispStat, \stexttt{PROC \dots\ RUN;} sections in \SAS). An error-free evaluation lets the user execute the next section of code; if errors arise, the user edits the current unit and re-evaluates. Once the code is verified, an entire buffer, or file, of code can be sent to the package as a unit. This file can also be used as a batch file for routine analysis at a later time. Finally, output from the statistics package is normally captured directly by Emacs and placed into a buffer from where it can be edited and searched. Particular forms of output such as requests for help pages and log-file output can be diverted into special buffers with modes crafted to facilitate reading. These modes include tools for automatically placing the cursor on the first \stexttt{ERROR}, for example in \SAS\ and S. \paragraph{Interactive transcripts.} A transcript records all commands entered by the analyst and the corresponding text-based responses such as tables and comments generated by the statistics package during an interactive statistical analysis session. Once a transcript file is generated, for example by saving an \stexttt{iESS} buffer, \stexttt{transcript-mode} assists with reuse of part or all of the entered commands. ESS understands the transcript's syntax, especially the potential prompt patterns used during the interactive analysis. ESS provides tools to facilitate editing and re-evaluating the commands directly from the saved transcript. This is useful both for demonstration of techniques and for reconstruction and auditing of data analyses. Special ESS functions can ``clean'' S language transcripts by isolating all input lines and placing them in a new S language source file. Transcript cleaning facilitates the use of an exploratory interactive analysis session to construct functions and batch files for routine analysis of similar data sets. \paragraph{Remote access to statistics packages.} ESS provides transparent facilities for editing files and running programs which might reside on numerous remote machines during the same session. The remote machine could be a different platform than the local machine. \paragraph{Manipulating and Editing Objects (S family).} For languages in the S family, ESS provides object-name completion of both user- and system-defined functions and data. ESS can dump and save objects (user- and system-generated) into formatted text files, and reload them (possibly after editing). \paragraph{Help File Editing (R).} ESS provides an R documentation mode (\stexttt{Rd-mode}) which assists in writing help files for R functions, objects, and other topics worth documenting. \stexttt{Rd-mode} provides the ability to view and execute code embedded in the help file in the same manner as ESS handles code from any S language source file. It provides syntax highlighting and the ability to submit code directly to a running ESS process, either R or \Splus, for evaluation and debugging. This latter feature is useful for ensuring that code developed using R runs under \Splus. \paragraph{Cooperation across Multiple Tools.} Statistical packages are intended for either general statistical analyses or for specialized forms of statistical analyses. The specialized statistical packages can be far more efficient for their intended activities, but this is balanced by their inability to perform a wide range of general statistical functions. Tightly coupled inter-operability between general and specialized packages rarely exists, but such a facility is often desired. For example, a general purpose package such as R does not perform Bayesian analyses as easily as BUGS does. On the other hand, BUGS lacks breadth in the range of analyses and results it can generate. For this reason, BUGS is often distributed with R packages, like the diagnostic packages CODA and BOA, which assist with importing and analyzing the results in R. Another point of contention is the difference in the interfaces between general packages and specialized packages. ESS helps by providing a single point of contact to both tools, though the typical interfaces (interactive for R, batch for BUGS) are different. %\item[Rodney:] I can't speak for everyone, but the BUGS users I know are % .. lots deleted by AJR %will make sense. Besides, the most pressing need for me is to get %ESS-elsewhere to work with ESS[BUGS] rather than creating inferior-BUGS. %\item[Rich:] How does making ``ESS-elsewhere work with ESS[BUGS]'' differ %from ``creating inferior-BUGS''? My question is predicated on the assumption %that ESS-elsewhere is a (generalized) minor-mode that makes the location %of the program irrelevant. %See my ESS-elsewhere quibble below. %\item[Rodney:] It's the whole batch BUGS vs. interactive BUGS thing. Batch %BUGS with ESS-elsewhere; interactive BUGS with inferior-BUGS which does not %and will never exist. If you want to call ``inferior-ESS'' ``ESS-elsewhere'' %why do you need two different names? ``inferior-ESS'' is a terrible name %so the change would be fine with me, but you can't have it both ways? Is %this why you keep saying that ESS-elsewhere works for SAS? See %response to quibble below. %\item[Rich:] %\stexttt{iESS[SAS]} was designed to mimic as well as possible \stexttt{iESS[S]}. %I need to read doc/README.SAS to make sure all of its options are represented %here. --- Not yet done. %\end{description} %\end{Comment} \paragraph{Simplifying Keymap Differences.} Simple conflicts between interfaces are exemplified by different key sequences for editing tasks such as cut, copy, paste, beginning of line, end of line, etc. These may be the most aggravating because our fingers are typing ``instinctively'', but differences in interfaces circumvent this learned behavior. ESS solves this problem by providing a uniform interface to keyboard actions across the variety of statistical packages that might be used. That is, the same key sequences are used for cursor movement, evaluation, and basic tasks such as loading files for editing. \paragraph{Concurrent Use of Multiple Machines and Operating Systems.} It can be useful to have multiple statistical processes running simultaneously, either on a single machine or a variety of machines. This capability assists with large-scale numerical simulations as well as code design and testing across multiple versions of statistical software packages. \subsection{Interactive Processing.} \label{sec:interactive} The increased popularity of exploratory data analysis as well as the advent of simple GUIs has made interactive data analysis an important component to statistical practices. ESS uses three different approaches for communicating with statistical packages. \paragraph{Inter-Process Communication.} Packages that use the command-line interface are run as an inferior process in an Emacs buffer, with the standard input and output of the package redirected to the buffer. Packages that do not use the command-line interface must be run as an independent process, possibly with limited cooperation. ESS can use the Windows DDE (Dynamic Data Exchange) protocol to provide one-way communication directly to packages which function as a DDE server. ESS can control the actions of the package, but it can not capture the results directly. Transcripts must be physically copied to an Emacs buffer to get the transcript editing features. Statistical packages that use neither the standard input/standard output protocol nor DDE can not be directly controlled by Emacs. But, ESS can still provide an editing environment for these statistical languages. The user must either manually cut and paste the edited code into the package or save the edited files and run them in a batch environment. The Microsoft Windows versions of \SAS, \Stata, and \XLispStat\ are in this category. One useful extension in ESS is relaxation of the requirement that the statistics program be available on the local machine. ESS provides both transparent editing of files and execution of statistics packages on a remote machine with \stexttt{iESS[S]} or \stexttt{iESS[SAS]} (see below). All the editing and interaction features described for the local machine work equally well on the remote machine. The interaction, including all the unique features of working with ESS, appears to the user as if the program were running on the local %rmh: The interaction ... appears .... machine. If the X11 Windowing system is running on the local machine, it is even possible to bring up visual displays and graphics from remote Unix systems onto a local Microsoft Windows or Apple Mac display. \paragraph{Interactive S family} ESS for S family statistical languages, \stexttt{iESS[S]}, replaces the \Splus\ Commands window or the R GUI window. In addition to running the S family language process, \stexttt{iESS[S]} mode provides the same editing features, including syntactic highlighting and string-search, as the editing mode \stexttt{ESS[S]}. It also provides an interactive history mechanism; transcript recording and editing; and the ability to re-submit the contents of a multi-line command to the executing process with a single keystroke. \stexttt{iESS[S]} is used with S, \Splus, and R on Unix and with Sqpe and R on Windows. The \Splus\ GUI on Windows can be a DDE server. There are two advantages to using even this limited communication with the \Splus\ GUI through ESS. First, through \stexttt{ESS[S]} mode the user gets the full editing capabilities of Emacs. Second, S language commands % rmh: S, not \Splus, in both places. The {\it language} is S. % The previous session could be R or ATT S. It is not restricted to \Splus. are sent from the editing mode \stexttt{ESS[S]} buffer and from transcript buffers from previous S sessions directly to the GUI Commands window with the same Emacs key sequences as are used with ESS on Unix. Hence the user can work in a powerful editing environment and is protected from the delay and ergonomic challenges of using the mouse for copy and paste operations across windows. \paragraph{Interactive \SAS.} \stexttt{iESS[SAS]} is a mode that allows text-based \stexttt{PROC} by \stexttt{PROC} interaction with an inferior buffer running an interactive \SAS\ session on either the local or a remote computer. \stexttt{iESS[SAS]} mode works by redirecting standard input and output from \SAS\ to ESS. Currently, the \stexttt{iESS[SAS]} mode can run on any computer, but the \SAS\ process it is controlling must be running on a Unix machine. This process is very efficient for dial-up network connections to a remote computer with \SAS\ installed. The resulting interface is similar to the SAS character terminal interface, but with Emacs key sequences. %Rodney: What is this paragraph about? I'm going to comment it out %because I don't recognize what it is supposed to be. Maybe somebody %can fix it later. % % rmh: Round umpteen. Yes, this is redundant with the third paragraph % of interprocess communication. I still want it here. Try this rephrasing. % \stexttt{ESS[SAS]} mode can be used in conjunction with the \SAS\ Display Manager to allow simultaneous access to Emacs for editing \SAS\ language code and to the \SAS\ mouse-based interfaces to the graphical routines and help system. %%%%% AJR: WHY IS THIS SUBSTANTIALLY DIFFERENT THAN BATCH? I KNOW ITS %%%%% SLIGHTLY DIFFERENT, BUT SUBSTANTIALLY? %%%%% rmh: this is a form of interaction, not batch. I restored the %%%%% first paragraph with some expansion. %\paragraph{\SAS---Interactive cooperation with the \SAS\ Display Manager.} %ESS users who write data analysis code in \stexttt{ESS[SAS]} mode in Emacs %often need to work with the \SAS\ Display Manager's %mouse-based interface to the graphical %routines, the help system, and other non-text-based features. %%The authors of ESS prefer the Emacs environment for %%the text-file interaction with \SAS, that is with editing and %%managing input command files and output listing and log files, %%even on computer systems which run %%the \SAS\ Display Manager environment. %In this situation, the user %designs the command file in \stexttt{ESS[SAS]} mode and highlights %regions to be forwarded to \SAS\ for processing. %% %% Rodney: I don't see this as a feature of either ESS or emacs. And, %% what the authors prefer is certainly not germane. %% %% %% rmh: This is my preferred mode for interacting with SAS. I tried another %% rephrasing. It {\it is} a feature of ESS. ESS is able to provide ESS[SAS] %% mode for the text processing (.sas .lst. log files) and simultaneously %% let the user have interactive graphical access. %%This can be done by either: %%\begin{enumerate} %%\item copying and pasting the marked regions to the \SAS\ Editor window %% and then pressing the \stexttt{RUN} button. Highlighted sections of %% the \SAS\ Listing window are brought back to Emacs to be read in the %% \stexttt{ESSlst} mode editing environment. %%\item submitting the marked region for Batch File Processing (see the %% next section) but using the mapped key sequences to append to the log %% and listing files instead of replacing them. %%\end{enumerate} \subsection{Batch File Processing.} \label{sec:batch-file} Batch file processing with statistical analysis packages is a better choice than interactive processing when the execution times are longer than the user is willing to wait as well as for regularly updated statistical reports and figures. ESS provides a means to shorten the debugging cycle for writing code intended for batch evaluation by containing the whole process, both writing and evaluation, within Emacs. \paragraph{Batch \SAS.} \label{sec:sas-batch} \SAS\ is a popular choice for processing and analyzing large amounts of data. However, interactive \SAS\ is rarely used in these situations due to the length of time involved. Instead, a file containing \SAS\ commands is created and \SAS\ executes these commands in the background, or batch, while the user moves on to other activities. ESS facilitates \SAS\ batch with \stexttt{ESS[SAS]}, the mode for files with the \stexttt{sas} extension. ESS defines \SAS\ syntax so that \stexttt{font-lock-mode} can highlight statements, procedures, functions, macros, datasets, comments and character string literals in \SAS\ programs. Optionally, the same language features are highlighted in the \SAS\ log with the addition of log notes, warnings and error messages. For files with the \stexttt{sas} extension, ESS binds the function keys in \stexttt{ESS[SAS]} mode to match the definitions used by \SAS\ Display Manager. These definitions are optionally available in all modes. They are particularly useful when viewing \SAS\ log and listing files (with extensions of \stexttt{log} and \stexttt{lst} respectively). Only one function key press is needed to submit a \SAS\ batch process. Other function keys open the \SAS\ program, the \SAS\ log and the \SAS\ listing buffers. When accessed in this manner, the \SAS\ log and \SAS\ listing buffers are automatically updated since they may have been appended or over-written by the \SAS\ batch process. In addition, the \SAS\ log is searched for error messages and the error messages, if any, are sequentially displayed with consecutive key presses. Another function key opens a \SAS\ permanent dataset for editing or viewing. An option is provided so that the tab and return keys operate in typewriter fashion like they do in \SAS\ Display Manager. This option also defines a key to move the cursor to a previous tab-stop and delete any characters between its present position and the tab-stop. This is a \SAS\ Display Manager feature that is not typically available in Emacs. The \SAS\ batch process runs on the computer where the \SAS\ program resides. This is important because any \SAS\ permanent datasets referenced in a \SAS\ program only exist on the computer running \SAS. If the \SAS\ program resides on a remote computer, then the log and listing are also accessed remotely. The net result is that running \SAS\ batch on remote computers is nearly transparent to the ESS user. %\begin{Comment} %Rich's version: %\end{Comment} %The \SAS\ batch process can run on the same computer on which the %emacs session is running or it can run on a remote computer. For %remote jobs, files are transparently saved (with ftp or scp or kermit) %and the batch process is transparently submitted through a telnet or %ssh connection. %\begin{Comment} %Rich: I have some terminology quibbles here with how the term %``ESS-elsewhere'' is used with SAS BATCH. I think of S-elsewhere or %ESS-elsewhere as a trick to make a \stexttt{telnet-mode} buffer think %it is \stexttt{iESS-mode} buffer. %I don't think of file saving, editing, and retrieval as an example %of ESS-elsewhere. Neither is submission of the remote job; %that is just an ordinary shell command in an ordinary shell buffer. %M-x SAS probably is an example of ESS-elsewhere, but I %designed it before I thought of the ESS-elsewhere concept. %The initial idea behind S-elsewhere was to run an interactive S or S-Plus %session on a remote computer in telnet (or equivalent) buffer. The trick %was to make the \stexttt{telnet-mode} buffer accept C-c C-n and %related commands from the \stexttt{S-mode} buffers. Hence I had to %make the \stexttt{telnet-mode} buffer think it is \stexttt{iESS-mode} %buffer. The ``elsewhere'' part of the name is entirely related to a %different start up procedure. Once the connection is made, there is %{\em no} difference visible to the user. The buffer shows itself to %be an ordinary \stexttt{iESS} buffer. Tony generalized S-elsewhere %to ESS-elsewhere to allow other languages than S to be used %interactively. %I have been using ESS for SAS remote BATCH for years, ever since you %and I started working on this together. We initially defined %ess-sas-submit-method to encapsulate the location of the sas process. %Except for a few lines of elisp to get the connection started, the user %behavior has been identical whether the SAS process is on the same or %different machine. Since we are not interactively talking to the SAS %process in an inferior-ESS buffer I don't see this as ESS-elsewhere. %Rodney: Remote submissions of SAS batch jobs never worked. I only got %it to work a couple of weeks ago. The problem was with the cd command. %You need to ignore the beginning and end of the expanded buffer name %that are the ange-ftp/EFS/tramp stubs which tell Emacs what the remote %username and hostname are. I find the batch usage of ESS-elsewhere %entirely consistent with the interactive behavior. OTOH, I don't find %the terminology particularly illuminating. I think ESS-remote or %ESS-net would be more meaningful. %\end{Comment} \paragraph{Batch BUGS.} BUGS software performs Markov Chain Monte Carlo integration. There is an interactive capability, but it is not often used since the analyses can be very time-consuming. Most BUGS programs are executed as batch processes. ESS facilitates BUGS batch with \stexttt{ESS[BUGS]}, the mode for files with the \stexttt{bug} extension. ESS provides 4 features. First, BUGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in BUGS model files, command files and log files. Second, ESS creates templates for the command file from the model file so that a BUGS batch process can be defined by a single file. Third, ESS provides a BUGS batch script that allows ESS to set BUGS batch parameters. Finally, key sequences are defined to create a command file and submit a BUGS batch process. \paragraph{Batch S family.} ESS provides 2 facilities for batch processing of S family language files. The first is to execute the contents of a file using buffer-evaluation. This differs from interactive processing only by the number of commands being evaluated; errors can be found by examining the resulting transcript. The second is the load-source mechanism, which provides a means of jumping to errors in the source file, but doesn't display the evaluated commands in the transcript. These mechanisms provide different tools for debugging the source files. \section{History of ESS} \label{sec:ESS:history} ESS is built on Emacs, the editing system for which Richard Stallman won a MacArthur Foundation Fellowship in 1990. Emacs has a long history of being a programmer's editor. Many statisticians got their first taste of the power of Emacs with \Fortran\ mode which was introduced in 1986. As statisticians' preferences changed from generalist compiled languages such as \Fortran\ to specialist statistical analysis packages like S and \SAS, Emacs modes soon followed. The ESS environment is built on the open-source projects of many contributors, dating back over 10 years. Doug Bates and Ed Kademan wrote S-mode in 1989 to edit S and \Splus\ files in GNU Emacs. Frank Ritter and Mike Meyer added features, creating version 2. Meyer and David Smith made further contributions, creating version 3. For version 4, David Smith provided significant enhancements to allow for powerful process interaction. John Sall wrote GNU Emacs macros for \SAS\ source code around 1990. Tom Cook added functions to submit jobs, review listing and log files, and produce basic views of a dataset, thus creating a SAS-mode which was distributed in 1994. In 1994, A.J. Rossini extended S-mode to support XEmacs. Together with extensions written by Martin M{\"a}chler, this became version 4.7 and supported S, \Splus, and R. In 1995, Rossini extended SAS-mode to work with XEmacs. In 1997, Rossini merged S-mode and SAS-mode into a single Emacs package for statistical programming; the product of this marriage was called ESS version 5. Richard M. Heiberger designed the inferior mode for interactive \SAS\ and SAS-mode was further integrated into ESS. Thomas Lumley's Stata mode, written around 1996, was also folded into ESS. More changes were made to support additional statistical languages, particularly \XLispStat. ESS initially worked only with Unix statistics packages that used standard-input and standard-output for both the command-line interface and batch processing. ESS could not communicate with statistical packages that did not use this protocol. This changed in 1998 when Brian Ripley demonstrated use of the Windows Dynamic Data Exchange (DDE) protocol with ESS. Heiberger then used DDE to provide interactive interfaces for Windows versions of \Splus. In 1999, Rodney A. Sparapani and Heiberger implemented \SAS\ batch for ESS, which relies on files rather than standard-input/standard-output, on Unix, Windows and Mac. In 2001, Sparapani added BUGS batch file processing to ESS for Unix and Windows. This history is summarized in Table \ref{tab:timeline}. \begin{table}[tbp] \centering {\scriptsize \begin{tabular}{c ll c ll} \hline Year \\ \hline & \multicolumn{2}{c}{S-mode} && \multicolumn{2}{c}{SAS-mode} \\ \cline{2-3} \cline{5-6} 1989 & v.1 & (GNU Emacs, Unix, S/S+) && \\ 1990 & & && & (GNU Emacs, Unix, SAS editing) \\ 1991 & v.2 & (GNU Emacs, Unix, S/S+) && \\ 1993 & v.3 & (GNU Emacs, Unix, S/S+) && \\ 1994 & v.4 & (GNU Emacs/XEmacs, Unix, S/S+) && v.1 & (GNU Emacs, Unix, SAS batch) \\ 1995 & v.4.7 & (GNU Emacs/XEmacs, Unix, S/S+/R) && v.2 & (GNU Emacs/XEmacs, Unix, SAS batch) \\ \cline{2-6}\\[-3.5ex] \cline{2-6} & \multicolumn{5}{c}{Emacs Speaks Statistics (ESS)} \\ \cline{2-6} &\multicolumn{2}{c}{Emacs, Operating Systems} &&\multicolumn{2}{c}{Additional Functionality}\\ \cline{2-3} \cline{5-6} 1997 & v.5.0 & (GNU Emacs/XEmacs, Unix) &&& Stata, XLispStat, SAS interactive \\ 1998 & v.5.1.1 & (GNU Emacs/XEmacs, Unix/Windows) &&& S+elsewhere; Windows: S+/R\\ 1999 & v.5.1.10 & (GNU Emacs/XEmacs, Unix/Windows/Mac) &&& SAS batch; Omegahat \\ 2001 & v.5.1.19 & (GNU Emacs/XEmacs, Unix/Windows/Mac) &&& Unix/DOS: BUGS batch; Mac: R \\ %% 2002 & v.5.1.20 & (Emacs/XEmacs, Unix/Windows/Mac) &&& Unix/DOS: BUGS batch, Mac: R \\ %% 2002 & v.5.2 & (Emacs/XEmacs, Unix/Windows/Mac) &&& ? \\ \hline \end{tabular} } \caption{History and Ancestors of ESS} \label{tab:timeline} \end{table} %\section{Future Work} %%%There are two active areas of extensions for user environments. One %%%is to enhance the capabilities of the IDE for statistical practice; %%%this includes implementing such common IDE features as object %%%browsers, tool-tips, and interfacing cleaning. The other is to target %%%appropriate potentially useful programming methodologies for transfer %%%to statistical practice. %%% %%%Literate Programming methodologies \citep{Knuth:1992,NRamsey:1994} are %%%a natural fit for statistical practice. We refer to the application %%%to statistical analysis as Literate Statistical Practice %%%\citep{rossini:dsc:2001}. The tools used are Noweb %%%\citep{NRamsey:1994} and either \LaTeX, \textsc{html}, or \textsc{xml} %%%for documenting and explaining the analysis. This approach to %%%programming encourages the use of a literary documentation style to %%%explain the programming code for the data analysis. The program can %%%then be extracted from the documentation text for realizing the %%%statistical analysis. %%future enhancement perhaps %%ESS provides the same ESS-elsewhere support for BUGS batch %%that it does for \SAS\ batch (see above). %Important extensions which should be implemented in future %versions include class browsers, analysis templates, tool-tips, and %similar features. Class browsers can be thought of as a tree or %outline for presenting datasets, variables and functions in the %context of what they represent; this allows for rapid and appropriate %inspection. Analysis templates would allow statistics centers and %groups to provide standardized templates for initiating an analysis. %Additional statistical packages can easily be added to ESS. %%While most IDE features have been developed for object-oriented %%languages, the above also can apply to non-object oriented %%programming. %ESS is one of the first Rapid Application Development (RAD) %environments intended for statisticians. It provides \section{Conclusion} \label{sec:concl} ESS provides an enhanced, powerful interface for efficient interactive data analysis and statistical programming. It allows the user complete control over the communications among the files in which the analysis is specified, the statistical process doing the computation, and the output. Because all are within the same programming environment, and therefore are accessed with the same editing and searching concepts and the same key sequences, user efficiency is increased. It is completely customizable to satisfy individual desires for interface styles and can be extended to support other statistical languages and data analysis packages. %\begin{Comment} %Rich: see my discussion of ESS-elsewhere terminology. %What is the behavior for remote SAS that is new for 2002? %Rodney: SAS batch now works and Kermit was added as a method of transfer. %\end{Comment} %ESS-elsewhere provides interactive and batch processing %with \SAS\ running on a remote machine that is accessed over a %network. This provides a powerful development environment for \SAS. %%This %%includes support for syntax highlighting and template-based source file %%generation that provides the capability of specifying all the necessary %%parameters for a BUGS batch run in a single file. \bibliographystyle{plainnat} \pdfbookmark[1]{References}{section.7} %\addcontentsline {toc}{section}{\numberline {}References} \bibliography{ess-intro-graphs} \clearpage \appendix \section{Appendix: ESS Resources on the Internet} %\addcontentsline {toc}{section}{\numberline {}ESS Resources on the Internet} \label{sec:access} \paragraph{Latest Version.} ESS is constantly in flux. New versions of statistical packages, Emacs and operating systems require new releases of ESS to support them. The latest stable version of ESS can be found on the web at \url{http://software.biostat.washington.edu/statsoft/ess/}. To get help with problems, send e-mail to \url{mailto: ess-help@stat.math.ethz.ch}. The latest development, hence unstable, version can be obtained by anonymous CVS. First type: \stexttt{cvs -d :pserver:anoncvs@software.biostat.washington.edu:/var/anoncvs login} You will be prompted for a password which is ``\stexttt{anoncvs}''. Then type: \stexttt{cvs -d :pserver:anoncvs@software.biostat.washington.edu:/var/anoncvs co ess} \paragraph{Additional documentation.} An expanded version of the present paper is in \citep{RMHHS:2001}. A general introduction and usage instructions can be found in \citep{heiberger:dsc:2001}; in addition, one which is more focused on \SAS\ can be found in \citep{heiberger:philasugi:2001}. The documentation that comes with ESS provides details of its implementation as well as examples of its use. \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: ess-17.11/doc/ess-intro.pdf0000644005071500004540000023643613202324173012441 00000000000000%PDF-1.4 5 0 obj << /S /GoTo /D (section.1) >> endobj 8 0 obj (Introduction) endobj 9 0 obj << /S /GoTo /D (section.2) >> endobj 12 0 obj (Emacs) endobj 13 0 obj << /S /GoTo /D (section.3) >> endobj 16 0 obj (ESS extends Emacs) endobj 17 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 20 0 obj (Features and capabilities) endobj 21 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 24 0 obj (Interactive Processing.) endobj 25 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 28 0 obj (Batch File Processing.) endobj 29 0 obj << /S /GoTo /D (section.4) >> endobj 32 0 obj (History of ESS) endobj 33 0 obj << /S /GoTo /D (section.5) >> endobj 36 0 obj (Conclusion) endobj 37 0 obj << /S /GoTo /D (section.7.1) >> endobj 40 0 obj (References) endobj 41 0 obj << /S /GoTo /D (section.A) >> endobj 44 0 obj (Appendix: ESS Resources on the Internet) endobj 45 0 obj << /S /GoTo /D [46 0 R /Fit ] >> endobj 48 0 obj << /Length 2470 /Filter /FlateDecode >> stream xÚÛvã¸í=_áGùœ˜#^$QÓ—ÉÌÎvçv6'žîî#Ó1Yr)z3Ù¯/@PŽ{Û¾ˆ$ nôöæâÕRÏxÅ/f7ë—Š)QÍÊF)g7«_²÷[Ó ó…(òl¹³æaœÜܸ÷k^äï—Køk‚\ѰݷÁ-v­ ëÞo/ç¿Ý|œ-dÉÊ¢†Q0]•‘OÂ3̓¹·pTêÌuÁ¶­»·] €íæ*Ï~w¾ï¶ ¥É0ŠdZ˜Î´Oƒ'Ý”³ºˆ7UŠu L—$ÀûÈHä¯ý0¸ÎáBÕÙW×lŒ_ÑÖ—„ò“uwÖϹÎî­ûUgç¼Èž’ب6ãÍÎA¼{%™äz¶9«œ¿\—D$U2-Ä,g9h Q~…=R]ÎÊRá0n™fÓ¢ ²¨Eö ùï}HRö¾st}0kÅêŠÌ,Y%Ê™b”Éç¹<£¥¯ËµŠ†REÜL°`bÉóLÀ±W<%ñãÕk©^çê@J±Zsb)XQèYI|µsQ€×w‰g¢(èœâ3Íj´ HPV,¯A]`°\Ð…¯î†àM\ž±yÅ+˜h&*B×owû5ÄU¶óý½7Û­ëî î£gIëí®÷Á wá²Ó}gÇe¿&ìaâþ÷v°Æ7Z™nEh+Ì"_Ÿ(ržÝlÈ-ARÉTC GÆ\‹ ®ŽÂáØÙƃñèYŠ'—ø~ˆ÷ÀéÐï6äýÁ®è( à\Š®DÔ¤ñÑŽìFH¢Ï³GïÂC³B¿¹­Ããìf¼}>ƒÊîB :Ÿ*@Öõ!­èIZÑ/ÒŠ>J+û¡‹ÿîVv Óxœ-âꡪÁ†fÏm ±ý:Þ ±„gã…3½¹PØŠÌè;úQ.“‰4ÕÜMU<iïˆÉ@°G6Dbyµ¼$Ørqýùv\|Mcâ ³ØûÄlêv°~6h”®[â¡Ä§Ö¸íÜw ®r}qïQvÀ¯ÊìÛ\¢NV=æãHؾÚíZKÓ/¦ÁI•õ;ë y‡§!Ø-š·ÔuR`Å„øô¾t “÷hò‚O˜´²+^8TÊvѨZ¢)š¹'ˆ!ÉnLÁY[ö~D =>¬Ù¶®³ ¾I“àr­+¬‚ÑO¦…€Nº‹ˆ‚¢UàjàÔ$¤xxê‚ùNó’ƒ ¥”âIŠçW-®ZÓÝï㋉ø.4ÊÒû‡„”|.^Ñä8Žð,EIH©8º^í§çÐ0hóÓ›Lt­Jpxp¯8/&^Ê3 ÿƒvo@¦ 1>‚*ùNbAªwñ½@-aR‚*³;PC8%ÿ‰8Í>Y1žèÄæ4†p=MŠšøÔéðˆÅŠ#:RÓ"(  ­£ÐÎÓt4 Fƒâu¶ì·–vÌQ‰ÚDX5&Ñ»³DßïÀ$ CðaFÄwÀäœ%eÖË32mKá}xû’óÉ1¯!¨'ÈèA]9o›Ð>ÑÞ|c—V‰ˆc6½¦« oïÒAoƒqé5ŠŠ8ò¼ÉatÉñ)–YÛ÷‹s÷êV‹µµ-£JâÛr¹¥‚|^­T¢nèö´ „É$TpIA_ðcl— *×aŠ ÌS¼|`‹ü¸º@€]#(¯Dãl×Pj* ƒ±x©¡x‘±xP-åP»ÕY¯ö OSM™ä\ X^ke:B^eW)!@ÒÇ×$à b$ >.BŠl‰å–æX—¢ˆÙÑÆ"~¯Â£@u2•oŸ!Ç‹ì¾Î\p±ö"ÜÄÿkdóDŸOÈœÉR¤3"ýe¤}†¾`uÍîò„TÉrY¥Ý›9ð¼šË›3t (-åDNÅÏãX§gèÅÙ Q(ëË\_þ-šîö¯Ñy™ý¼‹©,·ì÷¾±©%šUJ`ÍÍêÔ{-'ÏÊ%9Ô;L«‡vŠ`·ð>ñÌÓâôæˆnvñþæÕ•Ïø¬®XUj°'Tªœ5Û‹_üò[>[]ä³`¨µaž3^׳í/Á˜Z¤u{±¼øÛÖ"[L¨½ÅžRèYÚÓ¤>@MÂuY®äi·1êY¥¶êw9éÇä´“ÐeŇÏ7zt|F(U û~ ‰1f#<Ó˜RL~°Ð“ê!!–õëúççë°ªÀ¢éùõñƒ OÇgb¾1Â-ô‰e0˜|ìÝÈ#ЏHE?ÜVUqä5µŸcž«³/v{Gé¸ÎL‚‘ä"Ï~ôvE Ÿöðô¹nˆ\ÒÁsÆãs´z)öͶy<ïÿ9¼Z?[IâðÏe¥>²dUÿù¨“_> 2çâ°søãbR ÑŒŽŠ/o¬5Ðtɯ$Ñ5øÊ/rSÈ€ë0ì_¦â“ÃëXª?s1u‘$ ѵéTÜÂ-ÿëu* uhùg·)Ï܆žÀé­ëZ0:tæÀ©÷.qÛ“íÁ%±È‹#۩䊛MçlªtÎêêSêÿ©–øf“Z«¿Ï˸ìL\í‡à9qT (Êc?ýþÄÈ•Þx( K‰mÀ¿ ®XïïÏTˆ+¸‚J§fZSÃÇ2í?µOÙendstream endobj 46 0 obj << /Type /Page /Contents 48 0 R /Resources 47 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 61 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R ] >> endobj 61 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [362.023 187.81 512.26 196.465] /Subtype/Link/A<> >> endobj 64 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [479.009 173.115 514.476 182.269] /Subtype/Link/A<> >> endobj 65 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 158.918 165.714 168.072] /Subtype/Link/A<> >> endobj 66 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [285.516 144.722 397.496 153.875] /Subtype/Link/A<> >> endobj 67 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [352.459 131.127 512.26 139.678] /Subtype/Link/A<> >> endobj 68 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [274.623 99.598 430.14 111.285] /Subtype/Link/A<> >> endobj 49 0 obj << /D [46 0 R /XYZ 97.768 692.105 null] >> endobj 50 0 obj << /D [46 0 R /XYZ 97.768 667.198 null] >> endobj 47 0 obj << /Font << /F38 52 0 R /F27 55 0 R /F41 57 0 R /F28 60 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 2409 /Filter /FlateDecode >> stream xÚ­XK“Û¸¾ûWÌ-TÕˆK|fO¶c;›ò캬q¼©8ˆÂŒ¡3;ÿ>ý"EŽd'‡\H Ñht7¯ñæöÕOï“ø*NBdW·wWeæYq•¥y¨tzu»ûg¯ÖqEÁ/Mß®â"ð»¡êoVÿºýÛOïuqU†e¦qrtµVE¨’„æÝø®_­uQðÓ»®w•©™ÖÚΚ¶Úc/ H\©4xt½³Ýõj(M †Ú´õ3OÚ‘ÃÓ˜ú¹sHhvL®üá04°ê(’\³J¢àq¥¢À׫8 ,ÏêüÁò´;ßÐ"4"ÎÃR+2ÂßÁp¦Qêqè]s®ÖYR·{œ—)°-³ ÝØr ãànG`žjÇÿ~?t<ÿXÃànœ3ŽŽÂ-øœ<ÔÖ×"…•R£lW»Þ n<Úõ'WÏ ÒdPoº‡ŒÐy|Ý;© yÄýhzrSpüW{ÓÂö ]Ø%?cã¾5Ç=ï'v]ƒœÍGSñOÆ`ã@ñ€­G× ã<ôŸo`é媆äÏs#ȹ£gaUšGÛîÍ<Žë¦IHSXµµL¨p;œ„ fK') ÿ½ÇH|bÖ¨§}&^T|ÖËÞwœà`Cÿª,x̓¬è¶É´‡¢ð“­ëõã†fgÛ®÷£"…ý´xŒRÅÛžj^‚I[»7ÕηV¦áƱõéng™žß{Ëã÷«40®éxÐÉ,{‡Ö‹"U9ÛT(áy•¥Æ}Œqïd£9R¬ÓܾŬ`eèÝÁT݅ô9Zó@ÓÁfŒRé‹ÒèÝf¿øDøì»Î5Ž ¶ç¿©Ãkn)Ðöç%áM—ù»þ‰¼Î›ÚVæ^:O·{¡Ÿœ$ŠˆL#Ê©^†“zaçh*åðlëlÿÌ jøÏO&H+°àžΆÿvÓ¡I£™BÑ)‰˜Úôxúà\£RÍKÈÁsÍÀ³Àš(røcPÿ…i@Óè¿Ô6Q£EB¿§d,CK7’_Kstwò"cÉz[ß￳âbÑ´õÛ ¼ñæ ¬^ûã´N%Uacgè©|mP@G줟L^Žd`†ø­ÊßÐr¨+¶Xk¢µN’oRžÖ¥0êAÒ¢–X˜«qá˜TO¬R9^JÜ©Œ7lº.å*CNÌÈkzr74'‡¢ù5ÓÆ]Ä)‰  WCÛ‚ë𪥩Ãñè[ÊoÐãx„å…yJiÂMÿÚ4÷ÅÈùéÀ횪v¸eAÒà‡#olõ€B)–%Ÿv“Ó­¸,ŠŸ¹ùvo[‹XÈr˜óW¶Ú‰½T/ØO#…ä ­STöcMßO¨½sÄ4:IÃ2-À´á# ¾`èÀ¼‘7 Ó¼Dæ¸u©®tX(ÆNŸ™'ÖWÈKg­Âúë(T±ø%NϱT‡ ²é0‹ÓÉ¿4»ß÷w_íp‹Ãxºpó[ßÑe &ÈX,MÆAúgþ‘Ľy0܆?`؃iD 8,ƒúy1ù/ ¼¥[·+¸Â­9œ´Q¨ ÈIŠBüþš¾|© pcQ’3³:S±3èM7}éÍÍ븱LÂX©…ÁÕ½ëÊRQÝŠ1Êѥء’l¦û3E1dnW:+ÁHi)§T˜eÂMjÁ©5¸×¼4ø-š­÷;yìãÙªe&é(ç Ô }?]ôGYÆÂ{n@Fú’þçrò0Nã™îÀ èȶ%ä €Ç"¹Ù£1SÙQz 1ÿÑ[ˆnßt<øº­xžõþ·Ji¨0òd‘0%ÄÁ×U纭e¤sÍäqø'Ü*øû*˜ºÈÆ’BÉøÇ*†4äÎQ±$¢xJD$nŒc«à ¦­/6<ˆ"n>¿åÎç»9ÎÒ—Æõ'9Ù7Hªã)y¨ßyöüí@N"ж7‚–ÙãxÈGFòqðRð5Cp?–T ‚ˆÈ°•9“ÿwVÐ=€/M`'è±ã h' ¿¼°óh€‘/þs[ÈŒ…k•tÄÈ$¾sÑøvëÚ5Bô2D 45Þ„iD€¶QÖÝÈ è·o¹šý>vâ ÂÛ2Aƒ[Ls‘¶ÏLÄSµnË ‹7`Ì4q0ØëýX è8?MAèÆA½+â’ ÛqPD4!XZ†L$µ%¶X ®Æ*$]øU¿¾€ øü©( 5–© ‹(“F^½»}õ—»l»endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R ] >> endobj 74 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [195.661 536.174 249.469 547.118] /Subtype /Link /A << /S /GoTo /D (cite.ESS) >> >> endobj 75 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [252.489 536.174 274.406 547.118] /Subtype /Link /A << /S /GoTo /D (cite.ESS) >> >> endobj 76 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [152.528 446.511 205.456 458.213] /Subtype /Link /A << /S /GoTo /D (cite.BecRCW88) >> >> endobj 77 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [208.926 446.511 230.844 458.213] /Subtype /Link /A << /S /GoTo /D (cite.BecRCW88) >> >> endobj 78 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [234.593 446.511 322.767 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJH92) >> >> endobj 79 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [326.238 446.511 348.155 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJH92) >> >> endobj 80 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [351.904 446.511 394.295 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJ98) >> >> endobj 81 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [397.765 446.511 419.683 458.213] /Subtype /Link /A << /S /GoTo /D (cite.ChaJ98) >> >> endobj 85 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [473.739 446.511 514.476 458.213] /Subtype /Link /A << /S /GoTo /D (cite.Splus) >> >> endobj 86 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [96.772 428.578 121.18 440.28] /Subtype /Link /A << /S /GoTo /D (cite.Splus) >> >> endobj 87 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [125.584 428.578 147.502 440.28] /Subtype /Link /A << /S /GoTo /D (cite.Splus) >> >> endobj 88 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [187.734 428.578 277.765 440.28] /Subtype /Link /A << /S /GoTo /D (cite.ihak:gent:1996) >> >> endobj 89 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [282.168 428.578 304.086 440.28] /Subtype /Link /A << /S /GoTo /D (cite.ihak:gent:1996) >> >> endobj 90 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [308.768 428.578 423.755 440.28] /Subtype /Link /A << /S /GoTo /D (cite.R) >> >> endobj 91 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [428.158 428.578 450.076 440.28] /Subtype /Link /A << /S /GoTo /D (cite.R) >> >> endobj 92 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [494.212 428.578 514.476 440.28] /Subtype /Link /A << /S /GoTo /D (cite.SAS:8) >> >> endobj 93 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [96.772 410.645 148.692 421.589] /Subtype /Link /A << /S /GoTo /D (cite.SAS:8) >> >> endobj 94 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [151.249 410.645 173.166 421.589] /Subtype /Link /A << /S /GoTo /D (cite.SAS:8) >> >> endobj 95 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [211.727 410.645 253.57 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Stata:7.0) >> >> endobj 96 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [256.126 410.645 278.044 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Stata:7.0) >> >> endobj 97 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [338.363 410.645 370.841 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Tier90) >> >> endobj 98 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [373.397 410.645 395.315 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Tier90) >> >> endobj 99 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [490.894 410.645 514.476 421.589] /Subtype /Link /A << /S /GoTo /D (cite.Cook:Weisberg:1999) >> >> endobj 100 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [96.772 392.712 153.252 403.656] /Subtype /Link /A << /S /GoTo /D (cite.Cook:Weisberg:1999) >> >> endobj 101 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [156.652 392.712 178.57 403.656] /Subtype /Link /A << /S /GoTo /D (cite.Cook:Weisberg:1999) >> >> endobj 102 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [228.399 392.712 279.093 403.656] /Subtype /Link /A << /S /GoTo /D (cite.youn:fald:mcfa:1992) >> >> endobj 103 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [282.493 392.712 304.411 403.656] /Subtype /Link /A << /S /GoTo /D (cite.youn:fald:mcfa:1992) >> >> endobj 104 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [344.301 392.712 440.672 403.656] /Subtype /Link /A << /S /GoTo /D (cite.BUGS) >> >> endobj 105 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [444.072 392.712 490.896 403.656] /Subtype /Link /A << /S /GoTo /D (cite.BUGS) >> >> endobj 106 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [143.531 374.78 198.43 385.723] /Subtype /Link /A << /S /GoTo /D (cite.DTLang:2000) >> >> endobj 107 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [201.623 374.78 223.541 385.723] /Subtype /Link /A << /S /GoTo /D (cite.DTLang:2000) >> >> endobj 108 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [152.907 178.416 258.386 189.36] /Subtype /Link /A << /S /GoTo /D (cite.GNU-Emacs) >> >> endobj 109 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [261.223 178.416 283.141 189.36] /Subtype /Link /A << /S /GoTo /D (cite.GNU-Emacs) >> >> endobj 110 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [342.94 178.416 427.079 189.36] /Subtype /Link /A << /S /GoTo /D (cite.XEmacs) >> >> endobj 111 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [429.916 178.416 451.834 189.36] /Subtype /Link /A << /S /GoTo /D (cite.XEmacs) >> >> endobj 73 0 obj << /D [71 0 R /XYZ 97.768 692.105 null] >> endobj 6 0 obj << /D [71 0 R /XYZ 97.768 667.198 null] >> endobj 10 0 obj << /D [71 0 R /XYZ 97.768 288.354 null] >> endobj 70 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F13 84 0 R >> /ProcSet [ /PDF /Text ] >> endobj 130 0 obj << /Length 2454 /Filter /FlateDecode >> stream xÚ…XMsô¶ ¾¿¿ÂG팽‘DQ»šžšL’I[O:S·éLÓWâzK¢*Qvœ__|QÒÚÛô$$A€€üúéËWßÙ]µ¯Ju÷t¾«ûCy¼+õaŸ+}÷Ôü+ùó.׉}?y36»‡¼P‰é…xôód™ü¡æ°ßýûéO_}§Ž«ÀL¥û¬ºKIÔOÛóôo;SOL¾í²41òãG÷ìzÓ¶ïø_$o£ », ¶¿G†Nê‹Mì¸ËÓäád&+º«Ã•QªE³p±¨Ö݃¨òö•ÊI¡ÎOgÓ¼¢¦¯Yà1él¸x¡ý™¿µïÀLPöçeum§i¿{P`Ä7¾ë< ö<¶ØHë:85ù‹ºÁfâ~Áó÷ÏÃî2¼3c²ÿ™-è5Ý“©X È‚z´&¸þ48¶kÅ_È.~ õ&þ=û‘‰Ú÷»"M^q¾íî–”U–üÈ<™‡'Ä1i X‡'†?­MƒGž)Ò*š‹ .Fˆ“E‡ãlRê×`ñxÛ0MÆiEŸM{Ípqµia’>$o®o<úèÍÖô>Û¡N ƒ:É4×" àûÏ,[‚Rïõ¡¢ <ö¥*îÔ¾Ì8ÈŸÀî²Þyu:_ç£r„ð‹H¦ Ãa`bÇ]Ï_#߸0mÑAydàÐhoày¦ÂÅa¯ÎÑ–UÄE ÐS‘iá8hYûÎ$ÛT-hW ˜¡˜ €£––¾ïTë`; ïE [Á§"šÆqÝíF¼„\¸]×¼…ôK¯ Å~ ¤¬EŽáÏÉÔ/ó° VAé EaÜè (#ˆôÁÖ]Ë͇f0âkF{C­;œé†u× +«­ª*)DË·©wáÆ¶ üÅÝýfySž¿*âp{)óàÚçæŽG°fR¹ƒÆÓ¢î8‘{‘vÝUV|f8}ø;þBrÓv©Äv'Ûˆ‚\°NrÑIü‡ !«ÆxBÜä B¿nAÂÖõ²‚DÁÑ#,BÂB{ñj› 6ƒ¬‹mÛûi…ýe(¬["ú¿ì² Ë’‹½0N öçP)N8`Tg™äê £Ò°¥ £BK|ð«àK­œ€`pSÆx„44í2ƒã³[‚yYŠu*·ªŠçÑwÌ”ú˜]wL8âç°Ì§W¤±À. ïž<•Òœ‹ŽAà# “׸¼gŸÊû§Ý óW˜%Îk]ÿl¤‹‹ PMeÕ Òù0@§ S‰1ìÐ}÷Ì”„BRê[J5¿ RêØQcweÍX_"–·öÃ>+Εd4\Ø1ÓþO»õh~!ôŒŽÉÁøG×GÞ£o!W­UvÜgúCk… j3˜“k)ÍYš\ÓÒå Ï÷w"(‡‘Ö šàÏZ ®ÜÆõËàöjÅžÛ(Qgë¬óÜ×Ë%Rm^‚øßÉwyvÈ“¿ÀM‚™?§:µ-ü‘­¬o.ô€1Q"7«ª çÐ}W­×\Ř_ògZê’‘Ç·l…‚¼ÍžßæbºUv‰²÷7"1j­ùHvt‘Á}–‚ XÁ(½…|í;OCo( (¸ JšT×EÉŽQJîô}´N·à‰]Î ¤ÝáJÚ›óûW’ßÀãg6u}Å%¤&q4ðhû*]ŽY+*ቅøîÁ,®7)lÔPgVäë“űú€0o)ÍõM”¸à3`'5~s+ZrS]=rS¶Üï½ÜPlVì«¢¸’Ó é*½ÞÕÝSSÐá'Þ¼> ,ò{éæ„ Ê<¼`LQ£Ølªõyèë#0¶o:>ê"±>?pn~¶b“ÅJ—€Ú‹.a5à?˜éEæHRü0‡œ¥çZŽ1VUko‚Cq­ðã6§Q^Ù–IÒ{—åàGnRT M ¾…Pï ›ûþV_ÜE e§0%M¢bx‡ëàÇvÇÎqáÏófF\þ¡u£Ù!>¤/ϼ9½½ÎÇÔ×(ÁÙ|e/òº18†¸#w¤ÜÙ´­{æ‘ßk™KÈii¼ËtÛ]”KwQfì¹’º n-ä?v{.ÁQyX•/S9©2]ý^nÓ¨ŒÍª"w  Á¶Œ^ªø®TRÍASòTïU©¡ª}z${|ùöéË%gÑendstream endobj 129 0 obj << /Type /Page /Contents 130 0 R /Resources 128 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 135 0 R 136 0 R 137 0 R 138 0 R ] >> endobj 135 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [265.152 230.421 300.907 241.365] /Subtype /Link /A << /S /GoTo /D (cite.RChassell1999) >> >> endobj 136 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [305.118 230.421 327.036 241.365] /Subtype /Link /A << /S /GoTo /D (cite.RChassell1999) >> >> endobj 137 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [448.456 230.421 482.538 241.365] /Subtype /Link /A << /S /GoTo /D (cite.PGraham:1996) >> >> endobj 138 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [486.75 230.421 508.668 241.365] /Subtype /Link /A << /S /GoTo /D (cite.PGraham:1996) >> >> endobj 131 0 obj << /D [129 0 R /XYZ 97.768 692.105 null] >> endobj 132 0 obj << /D [129 0 R /XYZ 97.768 667.198 null] >> endobj 133 0 obj << /D [129 0 R /XYZ 97.768 479.113 null] >> endobj 134 0 obj << /D [129 0 R /XYZ 97.768 267.283 null] >> endobj 128 0 obj << /Font << /F41 57 0 R /F38 52 0 R >> /ProcSet [ /PDF /Text ] >> endobj 143 0 obj << /Length 2684 /Filter /FlateDecode >> stream xÚYK㸾ϯè[d ­Õû=M3H‚LéF°Àfl™¶¹-KŽ$wOç×ç«eyì™ÍÅ"‹d±X¬ÇWôŸŸ>üô9­îê°.Ò»§í]]†eQÝy&i~÷´ù5˜övµNÒ(øw%-·ã`z?*µäkWq|l7º¾»'Z¸Ð†«ueg&ÍÞ ¦™ì0JßLòÕ q`»2Þ^Œ\îß™ƒõÞŶoÛ~•äÁ›²–©G;¸^y¶îe“¬¿=ýí§ÏY~Wáà<-‹0ɲ»HÎüu’)KÝÄEû ÷ײ°Jüðx½:Ñó‹Y;ÐÜ“u%a^Uwë¸ ë4nfü±4¤ä¤ >}5‡ckI³yô«8ØJsÚ;%¾8Vož‹zA9˜ßù © 5á¤c†ZŠË8,JÝõÓã㯿]K–’& d°ß5›gK—l>Þb”¥a”Öç3’X_¼¸9‰ëÏzê6°¨ÉøÃ!‹Åüi kðnTIXD^½©¨÷½›ÌW¬¨£@8Tu°Ìá`†o¨°ÅÁnûÁ ý8ôdõ¯nceÜu“m[·³Ý¤+ht‚GŒÒOÍ^GFYbNS0“k„Œû±­1´êg\,ìµ3«$Â6»ŽFt>Ltq ×ACn"Öe"W ÒÙçÈòÊ“ãn|¿u´¥õÝâÛ®™ûG,‡>Ž{!ÁöÔ5,o³±¤glKÇÔ¢1 ÍÎŽ?ÓQUôúÙŒvsãÛ¾›±jŒ2ϽêÑhú¶Ü½Z’¬>ñ@‰“ëvB‘=¸é9á²øRḭ́[eÐ*Ý L‡,Uœ…5"ÁÒ¿¸Ž¬.M+ouÔ¼¸~"4=ùßÜ ô9¼ u´Ã«kü"‰W—-ò5i­kÌsëûÍкPu–‘—¢#!Þž/dµ¼ìùYöÔÊ,Œ£äÂ}Šõ£á:¸å$± ‚,!{€Ðœ†k@âÜZù iRòyQ'4{8µf²>ÝjC¯†Ý“ £ýω#«¦-˜J¨ Ï:Çt½ê‡ønÜä÷ÕÜASÆë º4Ww1DÀv Ä•Á_Iü,ÌfÃá›\!U«Ð”C¢Aq‚¾g±Ñ!g¤/`aéHF ãÛiè[í1×ø¤H»wÊëàc¯ñj¸±âmïuu9ÕòìzÇH›Ö í»´£ãÓjZÑÀJmF øDl’’  àø¬>(Þ’G²É?ì¤Yô…rt<žŽÇ~˜Âk½We˜%±wD cXqáП(g˜nDºeüÀs‹ïå;ØCO¦FíYv# I´¯äÓåÅÝgu 7wX¨ëÖt~JK¬Z|©[1mÀØ€‚£Wgåd<àK&ëÛr³„{Á°` |œ).b;!4$]D"Aa‹ÚÑtÓL|¯ å¶Ò_˜.¨ovÐ…¼A€<ÄÆšî^ZMüa©sãåL‘Di<Ã:¥ÛdÞN”G7À.rrT$3ÞÙõv:Þ@»9Z?DÍe˜Fs@ÿüxÃÃkì¤Nœ†HäéÁbéè…dˆDqjôß`9÷rÞ ¡“X?>o©j›£*gÐíÆýB5jnK™ߊª°Œ/­M†ò¡k …‚‡Õ‰ÅÛ±—Ö*ŸÎÇÍ éƒP¾01†$‘UžÃ©ëf$é<ùŒ{|Ř$ÝiKâm) jºøƒÀñ‰"-3¯¨bÓ‚y¼7êdQG}éÇIÖ\ªòÕIlúæÄàSá3H“_F™†ÓÎ3aPƒ¯=KSÍi”DÂ8€mˆF˜ ß“Jµ¼&½ƒJ¾¶Û¯(¬7’_+Ím,ƒßä$¡¸Gè@NµîÏ„Æ`›~'µ…æ²ÀúhçÙ –p6]:W9Ô- [ýqpš¦+É\ô¼óM½TsV-q^VŠY€ ›ç\Zk.­.si5Û*ˆ‰¢5J²Pú¶o©ðÆN÷RØô§ %™ï“úw£65WB¥}ÿ‚õe¼¿!¼!Mc¯ô•„ÉMDL„}¶!ÐÌ-d_{ÒÜÁ§æÙC¢-¹MŸL7Ñ–cx€³ãÌKÃ0­ØZ3æ±óŽþ†¤§^H[_b½Å]jÀi=C*˜=¨öü@õœŽëÅÅèD&Éo-¸Þ€³ÞÇÉú<èÊ%Ó`øï³§a]fŒ¢ó ¤¸‹Ã!œÄýxj‡9fó”'>e†[¢` »$>(¹B9S¹ŸB'%û$Ìjzÿ²ZðXüÆÁü¦ 1ÏÁ: “Ãß‹WøG¨c~ƒŠãü¢~á ¾ðï Ö1rÆâ©†#EÆjK&O+Tm¨‰^ÔÏSýHˆ£tÄ!S µÙÕ3q~ýCû`6Ú’ÀÊ©ÜÑ8a‡—#¢<> endobj 147 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [177.235 104.892 184.209 115.836] /Subtype /Link /A << /S /GoTo /D (figure.1) >> >> endobj 144 0 obj << /D [142 0 R /XYZ 97.768 692.105 null] >> endobj 145 0 obj << /D [142 0 R /XYZ 97.768 443.248 null] >> endobj 146 0 obj << /D [142 0 R /XYZ 97.768 356.947 null] >> endobj 141 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 151 0 obj << /Length 2274 /Filter /FlateDecode >> stream xÚuXK“Û6¾ûWÌ-TeÄá[dnŽËÞr*ɦ8¸ió¹OÌr·pÐÿi·}Ïù^» vNBníw¸î°ØÊäÛÎÝ›ªm (Q6oSòùÛó‚Z»¬ê~–®‰dÕ"n(µ L§óŠÎå2y}aì>§TƒL.•¹¨!/e¦zË¢¬Îe¿A[æ0©ìOÞ6C¯ ±ªšóD«Û~ÇŽ+&ƒ~)L–ɰîúYcÏF¾µk€Qz°{JeÕ½¨†lôj•oÛÚ.œ ­F`ž&?Ú;eí‚,r®ÕPʈíDƒÉ=º×˜\¡Ó]é+¦·D6ózU7CÕÏœzm_iãîöQ8ÿ"#k»5o/ǪÑÅw5éÄ4‡ª®†W™Øn!J.3Ç´cŸë}Þä³0Ÿ´µ]}5ƒ¾éoX‰uq™ºUŸÂ&Œ¸¬áQ€w_ Üí}ÏCí~–ãšn\X®÷›‚èÕ`–X<¯5ƒ B!€r¹Œ?9³á+ v\û)'JN&âTñ„j™YŒ‚ à*-÷§ òPs”j9]ìÜì¥Ôæ;9Ù ¨™£÷€ TPdHzÜèrC(_%ŸE]BM­šóˆ¶HÖ~‚Ш×ÿ+)»›£ÑUõ‚ÖÈŸú&‚ 7+¡ói6=Ô>p÷fn¶×ø'n8_°ÙyÁЧ!ïùÿï·~ nO­×9(óÁ•ïÏ#š]yr7‰·8— u%ˆ_Š&%ÇÚž[”ìõVæKl§@«²¶Å3Ñ<“î8&“‚`MŠ‘ôÚÄce\f0 ‚Wº^‹oH”–¶Ø­_ä¦0œmòî3?ŽßóçQÚúç[WønäO]ßËYøý§ìèöý繉,M"•Õé%ñ'ËûõžˆC0õŸŸÙ«Ïüÿ{ïv7Ë|»÷VÛ-jzGÙ[>±ëe“L®4¾óÝ  Qtû¡Ó}×~JG3쬉¥iAÙØ-„ý­=àõÂ>C8XAØ¿ aÔÊ4Ýšñ°òôáÇíôµ è·8O=ÚþH~Fˆœ?>~ùÕ‚Ü÷Á3Ý ¼´'©¤-Ét]øˆv¯ðIê´µŽßN\î¦Î¨œ“¼MÌTOÔ`…ÌÙpÓh§ Íx>Ïkôþþ[2xÄKÝâßD‚ù @kü¸ 6‚¸–áM±îûI˜ó¶ÄÝv¢ñ6ÎI›2®0v>wº ¹R;=šÍ‹ò¡äÎOƒðpó”I:øi{JH@}è+Í?<€ ]ÅaQrM½ÊêÔá‹Ñ)—+óÕL¨ѓচñ*矊 Éš”*i)æÔfŒÛçÏÖNgKµa(Æ= 2~!…ý ÊÖ¯XPB?MNßÄ|ˆu“31{cSÚf¼>6w4w~Ãaæq î$ À\å}˯ Œ/c=T‹ŒÙlôÙ u*ÿJTJ‚0~)+{Z¾hÚF åøjeà ÀƦD“—ƒ=dõB4K¹t0áþoQy®k=E~˜¬·˜Šû«ø™+û•×Ùšr|•ïš™•ýÑ #Û£‡R=L1ÖŠ±ü&Œd¬sÖ–5÷Ža²ö?·³Ù|µÀ‹Ýª:z?éÛb¢¿ûøòîÿÉ)endstream endobj 150 0 obj << /Type /Page /Contents 151 0 R /Resources 149 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 153 0 R 154 0 R ] >> endobj 153 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 658.062 514.476 668.194] /Subtype/Link/A<> >> endobj 154 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 640.13 176.971 650.262] /Subtype/Link/A<> >> endobj 152 0 obj << /D [150 0 R /XYZ 97.768 692.105 null] >> endobj 148 0 obj << /D [150 0 R /XYZ 265.639 632.697 null] >> endobj 14 0 obj << /D [150 0 R /XYZ 97.768 331.746 null] >> endobj 149 0 obj << /Font << /F45 63 0 R /F38 52 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 157 0 obj << /Length 2223 /Filter /FlateDecode >> stream xÚ•ËŽä¶ñ¾_1ðI ¸Õ¢ÞòÍkì ÄØ'¼9°%N‹¶¤Òö¶¿>U¬b¿×@3"‹d½ŸýþåÝæc^<5qSfO/¯OMWeýT–I\4é~úyž~Øl‡C,i޳n]|®×ÃJD»ybÕ-›n< f”Û(ç`×n^õn±ÊmVÿyùûSò´UÜd„óuæõj]$Q;ZZ¸øi·ZgiZHþT¿Aò™K.Î$õpE…À·›Y}V J«¸n è£G²Z§u¥?—UýkU'ô1‹›­œyß«pû çžVÀšíäÐÑ¢Íhpšì8Y}Âó:Z\䑼¸LËN»ÉÈãª,¢xµÎEýc`,ôÙÙ¾Ý;ôPß+jVv¯Aͨÿ::(üVè?‰ÆÅt^œ¢ÅvAL÷=ìr² zP Ò³ô€–÷ž>b­¤Eôe%ŠHY§Ö_t§F`¿È3Ï>b—ôi=”wÿƒòˆNÕÎzD%åÇWú’úãð Kâ$Iý…\~•ûÉ Xtw˜íh®èaZæÍ¸ÌðŽùªtN»Y­¢=»Aã5ÿ¤Y$2žx#¡SNªÕÒè?&i¸ýݼ3A>ÇF± "›<¿’üÃó3¨¥Ì#·LÓhÑq7÷Š|úŠÊ”{mŽ´ÿœÉ3°I𠢘ùõ,@¢ÂXy×"ý!¹_VëRD¿ÁÿÞÝ–(ã´ªù®GŸ±ÍO@TÐR`s ;{Œ Þ^V³ô£ÿÿL\žÐ¼GQ~û &- *iuPÆœt²öŠq’Õ‘ º¼ê2ÄbmåÜö´„pm!÷h0ü°Ã0?~¾×OšÆU^±Ì/«LßÀ6¯îT”fq^¾NB ýÛ‹úËöL@ÊæË?³Öñÿ¯tŸÆMßóY‚üõ.ïñÀ‹<ØýRªY:òQPËŸ~¢Å)ñüsUB¨<Ï’ ìÏ(E–Á-ƒžçÞŽË®'£¤èÏisåϽÞõþæSLœB‡í±öÎ-"Ùj´Œ!OBÄMQp‚ÏŠ8oÈÐY \‰$I¢èoJ΋]‰:Rî†B+'¹ÕFÏŽÖ«ª‘ÇeQ“†ÃŒÜ‚ qÃwV¤lÛSg§à.¥'<Á(Ç7˜GÞŽŠxLžÇ¢n‚íz¾ êØÁsˆê½Âƒ°Yº7&Ê%êhyèá¶bŒ84úËÐØ-r‡ÌÌ‹Pü–Ö×¶<ñá#p* EXY äŽN(}ÛÎaÌÓèuB†F¬Ò˜pèAi´lŒ2†±7;ö+’_‚/Ú-€ãH`Ö˜+åÖ<ªh—J€ªæ(½MÙ€ ”Y$—y܃ùZ¢‡gdRÅ8ç‘_жSÖ¹¬ù «)ægm „…‡ÊÑLg¨aïâï©ê×ÏiZƒá\­‘P½îš *ê8yea¶J3*i]¡¯ ¬È¾Á2­§/;ð"NÑ d”A';ë} ~•jêO*Ðk­žØà'UÀWGãçë‘BíU²åªz™Cp‹±ä¼=¨Z‚/‡õ5›¾D Û÷´Z\ÀÜS|O5ÄYI™YÄur¤o)ÍØ¾­÷èwQ %ár̡Ԥ1xôU(…î2KÊ(ÅO¹~Ä 'V(·à:€™ è<àÏL4¤öà¡èÐÍRÎHЪ]œä Ì·¸¹Ó Ô_蜂°úõ^ë<\^¤×]Y`{ê Û$r9ÜHú˜Ñ‹+’.L‹®Ï•Öü¥†¦Â:=ŸÎ)°Â4Ú/fÖk lcúRÿ]4k¾·¨Ypõ 3”'{ Éê‘è9 Kù_ˆE,¯²pÁ‘'äI'eu­V´O>ä§øK]h‡$¦H8)Þó#°È¥Üw2 äïî¹ÊËX¤'‹1©O£;¾·ÌúôU/¢Ï·ƒo E²ß™M«:~ñ[üãÜ“C¢ ÷Ýéu^ECFºžH¨;õ¡£Áœ0…Q÷^œC˜&Ïs/×,.Y£ŸÊ=ÌOå4’û’‡‰†ÊövÚ|8’ó%+½{s­”ÃåÈÌW|ßË-ÔXízª¸µ2ƃá4½èUá>^£ÕŤ~þñ `ÄÅu· €ÐNÁR®Ðy}Ó•!nèŒVŒqËÐ{T¹5¬WôBˆgVqκŸ³çãä¾ÈB9MK´¥UïñB·æ.5N?i@!ŸB JyÔÄźC xçÃ/Fþ™ /(-§Ô–!ˆš#‰’@È& uË€wǼó[ßú …º÷âYø*ãâ„‹•Ó»LVc™¸yê _ð)îæÊEâDÚ¯á:¹r†oéãÆ•¯˜}ôK$¨ MiŠ|Ï\•0‰˜ZN8þº IÇNÑO'ÐV íG݆Sß«VÉùw¾* 0° î»·Ý7Ü¿óŒã—ÞanÒÅ”)öá¡4.´,`Ú­bÁ?g–xòîÃË»ÿÚĉendstream endobj 156 0 obj << /Type /Page /Contents 157 0 R /Resources 155 0 R /MediaBox [0 0 612 792] /Parent 69 0 R /Annots [ 159 0 R 160 0 R 161 0 R 162 0 R 165 0 R ] >> endobj 159 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 658.062 514.476 668.194] /Subtype/Link/A<> >> endobj 160 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 640.13 183.447 650.262] /Subtype/Link/A<> >> endobj 161 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [213.604 640.13 514.476 650.262] /Subtype/Link/A<> >> endobj 162 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 622.197 267.133 632.329] /Subtype/Link/A<> >> endobj 165 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [140.783 324.2 147.756 335.143] /Subtype /Link /A << /S /GoTo /D (figure.2) >> >> endobj 158 0 obj << /D [156 0 R /XYZ 97.768 692.105 null] >> endobj 163 0 obj << /D [156 0 R /XYZ 138.153 614.765 null] >> endobj 18 0 obj << /D [156 0 R /XYZ 97.768 460.439 null] >> endobj 164 0 obj << /D [156 0 R /XYZ 97.768 432.516 null] >> endobj 155 0 obj << /Font << /F45 63 0 R /F38 52 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 168 0 obj << /Length 2370 /Filter /FlateDecode >> stream xÚµXK“·¾ëWì-C×;ï‡S9ld©*)W¢×U®²|À΀äXó ­™_Ÿ~aH.)Å—v§Ñh~~àߟÞ<¼O³»JUyr÷´½« Uäå]ž‡*«€Óüì;|ÿððòò¢ô »£kk«^´Ý·Ã* vn”iæ‡f|ºQ7öÁX £úaÛîæÉ؇կOÿ¼ ïÖQ¡ªDöl»±þ¼^­³0°Úª]»E©‡÷IyÒ–Ä…*«Œ–¼§ÝVë4O‚äûÕºHŠàݰ§Z˜õØ´Ãé4°Nž«Vë ÎxÚ‹ŸàÑÞðŽiÐZ渽vLé®c•À<%¨”£JqYª2IA5TéÃÇ¿½V;ÎU´ˆÀyÎôfp²?[Ç'Î`<+§;Pïê¬u¥@—†ûáñéñovÚ7èÞ\_V*ŽüñãÁµà´süØÔH¢L®‰”Õ®µÛ£g$Ò33{ž¦v“1Ã=ÐIt~»ôl»fþ²ŠÊÀ½^9™FÔxì×kÑôüzÏàäq†]cpÚHû#ÅÛ u4]7®â,xYåY «]M¨Š¨ø¿Å.ˆpà6¦Õo‡ÝŸÜ8«‚"7‰+òÅúù¸F#ÂLfVúÿ™zv-¨7<3ny­æa=ö=x‡yŸÂ0îŒBTåÈ­çÉŽÓÙ¸ìÐéÚÈ*¿³æ¡(Â2q3 “,WUVHh½Ûl~Ùüz}÷$Ueîãïy‡Á¼E‡mÍÄnOªH•qtaSºOExðÀÔKëöHŨ%2,dwg˜þ¼ŠÄbG™4¿Ïf¨Í² /å›!«µ^pp"4²ŒSߺnœ”**c¹Éw¿»¾kœF·ïJglG!^y—r2­Rv Œ³;Ì¢:œ4cµ ˜²B¥qra²ƒ®?ëá´Ø>Ušv2µëŽ’8£|÷"¶pú¹»qã(…êŒoݸT@ܼp&ùZf‘Jðp«0MIxÓ²w ö7ü±ÇÁé?0rCöòÚ¾íôÄr~¹ºE†ñ·÷<†db¶Æza9å]¯kËân;™f‡1 {íõŒ3µ ¿Œ9 UïåfP‘Óô•&¨*3iCTZwì ö¸*‚·«”l0ñ?=Þç${ƒ2Ж^ Äñ´ç@¯„ntdf dìÛÿP._î%‚êL„µ +Ãà…ž¼“=˜ºÝñÎ×…Mbh K4&F‹Ú#âüü…"¸cÛ2,¨ÓOBæ©á‘RÞ-ÛaÉx0Ãúy‚’dyâS˜…äf˜\1ƒìêOb ïe`GF l¶4'˜KøÓvÄØ~´ÌЗKy„–ñ9‘C§;7ó†úã#ýß x¦q7é¾gE¨$Q<еuV¾»¢¸T1 ¡o®T…Ñ Ô…û2êBjö®»Ùáª\•™¯j•*[´òP‹7NRPKÀ2UÃ,d}˜$ý–[w;@x@Œœ¶8?¨JU{½–ÂV{í ˆ¬qj±L€Ì„g¦‰3‘j _pkdå )0‰Nx57ý)Ÿâ8iØ´' SÌð< t-€NÔ<„zœ aÈSΦ(÷=—h²-Mû½yDÅ , ·šU¢ÒÂ{¼Eé똈TU"‚yÏRºÀÉü£“³¹CÑSý¿Ð–œ³EÈ¡kŽÌgˆr±#²\wÌ6í;cY_]XhIÀ°Rü”Ý3ĵÌåÍØð§ÓÃnæÖÂ’X7  !K=CÔJ€Õ^›)ËÎ AÀÓ©PÇs^äôÕÁ„¸üß01Y †Øöãê{r^!'é\L±JÊè¢~~„ð0‘ç]'HˆÄóè "Þ€§¯ëRTßDøÚóXSCu7ं®ôípM‹Môo ²˜'adèosm÷L… <ÿzK¿ŠWÉZbµzÒ[jé8Øz=àåÁ~·06-*¥ùå©iÑSˆq‹ÌÍ“ú|.wIB|ö¦6“Lðø‚å€%]>;=y˵îˆï?,@ˆzü›P0@æ¡ÉÙ€Š±8^ežê½¬ÊѺ×á01òiá]êaµÁ‚`H9j¨!6ÔÎHIãÉCgNcÁ„éÎ!;”oáÛ¥ZÁï}õõÐhËñûV^4™Í8S›©Íº£,úB¯&85ªòàðÛáý£å1}/Ðê,•qiøRˆš´ŽqòÉØHˆÿù ŒYdZP§ê0 ø K ò±òýBï}Š!d¼L­søN$eТxŽ–+:ŸûðUUÆ2£Á—ø¦´Ì2:Ä)lTˆPÔ—HJ©/0N}7™ƒ?!øý…€ ú×5µ¼ú3óm¯;ÑÅjû²=e8ìé­…¼ZZ–[8ë> endobj 170 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 658.062 514.476 668.194] /Subtype/Link/A<> >> endobj 171 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 640.13 182.949 650.262] /Subtype/Link/A<> >> endobj 173 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 555.652 514.476 565.783] /Subtype/Link/A<> >> endobj 174 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [96.772 537.719 170.994 547.851] /Subtype/Link/A<> >> endobj 176 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [408.207 369.56 415.181 380.503] /Subtype /Link /A << /S /GoTo /D (figure.3) >> >> endobj 178 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [124.85 283.258 131.824 294.202] /Subtype /Link /A << /S /GoTo /D (figure.4) >> >> endobj 169 0 obj << /D [167 0 R /XYZ 97.768 692.105 null] >> endobj 172 0 obj << /D [167 0 R /XYZ 143.489 632.697 null] >> endobj 175 0 obj << /D [167 0 R /XYZ 137.394 530.287 null] >> endobj 177 0 obj << /D [167 0 R /XYZ 97.768 338.053 null] >> endobj 179 0 obj << /D [167 0 R /XYZ 97.768 215.886 null] >> endobj 166 0 obj << /Font << /F45 63 0 R /F38 52 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 183 0 obj << /Length 2431 /Filter /FlateDecode >> stream xÚ…YI븾¿_Ñ·ÈÀ“Fû‚œ&@72A‚7hwNy9Ðm+Ñâ!¥îé?µQ–l?ÌÅ"‹K«¾ZHÿííËO/IùTUž<½Ÿª"(òò)ÏŠ N²§·æ?žÞÅ™÷Ž?ª›ÕÔŽÃÎÓÔëôd¹556o¶Ú0Iï¢Ìût=Oz3/õž¸guívM¼ñÈÄzlô_±™{­´1£–Ê´VÅvvÝÖ±O<Ý´7ÂÁ޳1zžóÐJK Íî¿oÿx Ÿü¨ª$¦Cíßœ[Û`ç§iå}ê]äá¦U!»W9ÉË­Öò÷NoÚïaëdM¸ñ ÒYpØÅ¡7‘Ó†žL OÀ:íˆÇ[†5oZx!X>&´¦Q¾NÌ‹ªÿ¯NÒQ–שR*œD¥÷v¦#e±‚íD¸Quvdñ Ø¡aŠ’…J&¨©>ßou¤ƒÑŒóÔBUƒê>­c­&¡r·ƒ¦Lm¯EÒ—ÖtŸ»ôŠBgR¥/· ˜"î-%¹:tn»4ð ¾OÅ]2š‚§¡õ(+m½Š{Èy‰{8ØÌfóÆÝ!œ¥Wd,Û*ÒpÁZC¸R,ÎBâØÕ!¯:õ>²[qM©$Y ÁñðlxĆÊRŠ6Ü t±#ðUÞÙØ‚wŠ¢*$µÏûý=Ú|7i›dó»Ýã*ÝÞ×cú€îÙ”IǹÌV 2 °1XŠCW\%€–Ùj&r€f4“P ë«)¨·³,»"¾Jg ’'öðôÄfˆ›ù Ã:ßMó "$úd«“ýe]Ë)Ù~“ú ØHâ3‡9WËÁ¬Ë8aDØúòá‡Ô¢–G\±q…*ÎYdx Ï,såâ£bã|g\õÞr,ÇêAÂ75ñ›Þg†ŒkPv*fnÜ–ËvÈ,]…"$_« ìq!°™.pæ³Q(BêUùÁƒS¹š®ôÜôxœ;nFÂUæœ î!Á¦RªgR‰ÂwÒõyh›µì$ѾB­0ö²Š‚.˜,¹fWîYÅMW3j '&8š”Û¦mð (Ø»LögÄ¢eæØ ø¤jM½ïqœÔV4R&ÉŠŽúiæÒo£IÙ„â|[;vb?ì²{!}š6ƒrVV‰ZÒu*' önÕ£J#Tˆ&€Ëwöü9гãljis ¤° %É.ɼM$…².á/¼¯e¢d²Ð㸠¾™…|…I]péFÀÄh>™øƒl^«ùu7§)]F©lm);VfL«kA±Ü(Ü©íM™²ºR„›+…¾¶í[ªz±ã°d=qp¸«XÂM©ò žA>_@>®k8 ·)6Àw“^¡/éõaù’WAš–®*C ÓŠm½Ѡà颇„• [7‰Ëï"ZE"è,j"y),AÃ̃+TD†µ…+e¢œŒêé>“Ã]¤%íÃ@ßžÎ7¡rién m2+Ìæ^ƒ)¬›Á*£…ª>‹“À¼%†—în]b¾î]k©Ryon‚ìw-ÙÜAjîl Äè­Ë×|s¦zË« /A®¦V·Õu7rmMaô§`ùøÝevQýS®A…÷Œ±Û úßÿƒ¸oyÖ÷0 ÷Ü<*€ë'¢ŠÃ,HC‡ „ _Âò%^XÞËu$sÆžéŒ$d±Ë3z‰M3aÒ aþHb xûu\Äzæ5¨Å$øWâ€@—tS…ü‚ü|`7º…j[÷~£½TÐÊÀ:.¬ JJW¼„îš\Èú “äB^ms( 'ê¿Úb-h^ã‘*e©nÐLr=ÂÄæ¢ «Y5]ßîìëÍÖFw£jönr^FðŠƒ»)âÅÕp˜Ç_aåÇÈü;ßÑãÔ{ié&­çÐAN¯?€]¦A˜o⬸KœRîÀï+š±žñ®B<Á©T/,Ý]£ áöÚü lNà•¹Û+Û÷”˜EÒ¸Z;­pÿ0|fÂs%A”lË[~̈óU(Ågh¼Jß!í˜'OÔsÅLèkY8~{‚özáh¨@gŠÓ=6Ü_(Ê2ˆÂèÏt’†A¼èdk’€"[Ž÷JÌ$ŸN.QF\7ºxo]a²y]º{ýÅQ~°Ä–îºi´Læ@Tº@t}-ª¼õ«O«®Ó8+` ŠåAyU’'+‰X°HÕ¹7'ßnéyŠKi~•Y?™¼P[®j-Ìè®ÖZÒ)ÖZEâý21ñF³¸„.=Ü>Cªì0]r¦sil€bm©$h“ùзÂBž‹hý긚«øy}phÞF1‹)y)-ò˜Ž7ˆV0™’£â‡±ºñ!¬øô¶óë/Ø´ ÇŒ úgîõåŸ;?½ÃoäíÕ:A\¬—€¹\ÝÓ»ÿð"1\ßë©Ñh¾jŸNüþ††”kMšàñäqÔ _iy µËŸ|ßÁ £ûß`°\€ ¾ ¸w'Þòƒ2äÿBJøòüöåHžã’endstream endobj 182 0 obj << /Type /Page /Contents 183 0 R /Resources 181 0 R /MediaBox [0 0 612 792] /Parent 180 0 R >> endobj 184 0 obj << /D [182 0 R /XYZ 97.768 692.105 null] >> endobj 185 0 obj << /D [182 0 R /XYZ 97.768 532.912 null] >> endobj 186 0 obj << /D [182 0 R /XYZ 97.768 339.014 null] >> endobj 187 0 obj << /D [182 0 R /XYZ 97.768 270.645 null] >> endobj 188 0 obj << /D [182 0 R /XYZ 97.768 202.277 null] >> endobj 181 0 obj << /Font << /F38 52 0 R /F45 63 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 191 0 obj << /Length 2096 /Filter /FlateDecode >> stream xÚ…ɲÛ6òî¯Ð‘ª²8$¸‰GÛI\ž—S~ϧq I(s‚ô‹òõé ¥§ª\°è}ƒÞ?¿ù×oÉ~S†ežlž›²‹|¿É³"TI¶y®ÿLg=mw*‹‚ª¯ ï`UYðsgiúÁÔ žíN¼ýÊË8wviÌ]mFØYð´ÝjG¿¿oÿxþ7ÉP„e"ÄE–i¹‰ˆû·»\ßà7†{þì"oœ‡ªðgCƧñ¿‹K*µßìfQBç>ô ò¨'Ûw[8º·ñ>èÃï<ø¼ƒ¹™ìÐö#oŒÎfä#'Ó”BÆÝÓÕnv( è(ìb°a¢HŽ‹C–*O$­rá7˜ÊêÆþEn`Zø(gÖìð¶“G$nwI–ÏgÃ(¤ØÉ«¸_H\-*Ýñæ`DŠm}ølÛƒ¡P¹H´bÏ™#ÆÝ÷(R•5„e’(V 7`:+Û«yñK£| Ƭ¬qoY…ÃVAÐNþ¶urYÖƒnt‡W=Ãå#}°<¦çâ ­*ìyy±˜>¸uw’-üµš‹çU¶gS‚‹7vœ» ×|‘€/¶IØÓyj.| êç¡Éñí1¢¶; }/2¢f‚ƒ/Ætü}Ã\wD ¸ À,Þ|-þQ΂@@cøBmŽ„›«,ÜŒæ=ó‡æÕ"aNþ@LœXÈ XÄŽ¦F ¨"ø ùP„/Lu ù+\…öJ·<æqèaŒ¨Ã –—IX¶ýœl]úì‹«ÛÕ~¼×ã,…9 ´d|9>c´³dªì=àÛÇ'†"KÐ1U*øÒñ‰2p= ÜžÁS¨kYÜÜß ÿ¡}®§3ß±+z¼HAªTÉUÖ•ôUóf4ª¥@íÄ+ç7lØæ“AGEÉÊQ€ãœcÚõj¤k ¢óR°ûa[C@VBɈ/–ƒÝW^|ˆ¾} ]c T0öÁÚVŸºS«šØ_~Ù¦QðŽq¬?€ßÁô{÷–Á/gKÑ£G*`– ¶úqâN¹&CÖýk‹L{4/÷#Çßä6X¿†ôz×ù ÀŠÛ[,’*Ï¥°çP:Lw(žÔýDö…ä‹É °¯-UÚ£MWI·?'‡°¨À•Q2Ö((RMòuÆfÝ2QÀëÚò:¹ü%LÖ_Ÿž0Êàlš 5𦺠 aì1º~Úš¬ˆ Í'p0ÁfN§Ø*¸E« ­¢+R ‡õУÇ=aëÇž¡RоŸOg9‰– —; Õgü¦r{5Ëk7}²ˆW{¥xhâNCÔ[^zâ‚´ÂqŽ×O@,f 4 ­ü7=˜‹¢›è B²±Ç Y ‡‹ÿàesiõÀß¿Ø# Ãáá”–¡òƒÑ3|L ý:±Õ$#Ðø±6Fßí˜ä+9ÙEÄÎïg&t:®7ª2HRn]dBbéÖpæÿ3)ƒK¼]è˜Vr>&í~Èßé IPÍùf™~@Ž—-Dµ€í&#û‰r²]·¦t„µ±?e¸Õ>ÆM–ϸĩ‹[V´ú²ÐgiÖñ¶§TÄ>0]5–ÍŸh3-šî`*=å" úyd(ÚºÀèÎápˆw¹ß•Jl%³» åæˆå/òUÓ/¢»Úâ˜"—âU殲c5·L\üZEÝà‰Ð=v4®Á«á`ά«çBæi*ð®o˜¨\¾’BrhL+d. ð¦ºä<Ùfî¬L{¹zUJEŽ®BóÐëQ$Õ<Í=¨~ð4¡g‰‚¾Ã…7Åy£54!†B&ïÆv@¬*. §lqXdàAˆ‚÷i˜Šà¹³œ³4¶¥êÊÛéÖðÅu–`Rp’£%ˆ2ƒ0Ë^»¯šGçËZË6æŒoK”÷&ªÝÌôrLqPû2é¨oÃvIÜhIÜH7 š^×ËCC¼1JøÇÊù¡ï@z©ŒØ?à¥ûÍqÅ=5X?/ÏÉ$ÝŸuu†ävŒ£>ˆ›/ØDèaJñ§ T‘öQ½Uû8, %÷“°¦¡ 9„?˜þ87¼§œ$…4Ä´^:*–žôMµ\V§˜ àhšñÞù\ÜðÃÙ–Ý™~v¯‹I-\<‡®Ú_“ û–-$çÆ›s7ÑOøãÍ%œ²HAÛG­·ÒÃòþ‰áYÏC5žD¦47š¼z2;JvskFÿ‡ž€ï20žæì%˜v|ôÅ4Í-„ÿ>Á] ï‚S'Ø®fàdÜ$ X-i'n¼s[؉£cö¸Ü<¢»J€Ÿ_¨$aq’1á:[ù8ã°Ì2èY˜–Ì) HEQði[bŠ¢È-¿óŸ(¨Gœâ¨ª4̳=Qåÿ",û¾¸·ãˆ6€UG~F¢U$ÕæÏ¡é!IúQµž4_ã÷ ͳ‘¤;¬ì Ás“g«ë¥«ÜðqËS¿}BgO±Õõ"·W?¬Ýw³Tzw+as †òã@óØŽ1ßñŸ˜Â¸Þý=£ ‘YÅΤ÷8DÌò?VðÑfv72‘4d4äÏÃiu)‹ N Í®òƒ€ä]ãCîæŠ»Û¨( “<Ûìò ¢¬ Ú%bÞüúüæo/gª«endstream endobj 190 0 obj << /Type /Page /Contents 191 0 R /Resources 189 0 R /MediaBox [0 0 612 792] /Parent 180 0 R >> endobj 192 0 obj << /D [190 0 R /XYZ 97.768 692.105 null] >> endobj 193 0 obj << /D [190 0 R /XYZ 97.768 640.508 null] >> endobj 194 0 obj << /D [190 0 R /XYZ 97.768 429.066 null] >> endobj 195 0 obj << /D [190 0 R /XYZ 97.768 306.511 null] >> endobj 22 0 obj << /D [190 0 R /XYZ 97.768 220.21 null] >> endobj 189 0 obj << /Font << /F38 52 0 R /F41 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 198 0 obj << /Length 2581 /Filter /FlateDecode >> stream xÚY[Û¶~ϯØGX+¢îÂyJ›ÍÁ-Ôœ=}eÙ&"KŠ(m²ÿ¾s£.–·É‹E‡CÎ…ß éŸžÞ¼ýª»ÌÍâàîéx—%n§wq”¸~Ý=þrë¾ì6Aâl?v•:MQ³Ù~èüÜ\.C­‹¼×Mínþ~úåí‡ ¤©Ðs“(¼óHÐÇŠœ¼øœŸJ™ßŸóž[ƒ)±©dJ²óú°­t-9n”B„”wÒ膚çç":¯í¤cÙé¦ÃÍÝm톶*q³À§mµÕ¶§qš’éÐ¸ä… í7¾ç å7°HÝ„žscr¾êþÌ\¼h˜d(çw+ºzn‚^¼L3ô#±9.$„N˶bjWtW})3ûæj=ÞÞ¸·(rÈ!`{V6¸éƒlôAæP¤Ÿ:u#qJf’­œ’-œê õ2‘±Š8(eâ p(ۦ·–Iâ4n½Æ½¯^n¨Ãv÷#Ï©ôE“q°S4M[vSTB ºY.¦>ìvÀœ¥N;ñ3Q)¤.Rþ‡.† 6hÕ¯†Gß¿àÆÿ½È{ÿRç]0ûû¼Ïyèá[qÎëS ,Š) RßMÅœè=¡¢CžõA–nêrû•¬ùœ±­ß™¾|øPo𠘑¢¤za­ßF¯#áëYd¹Ô9u1‰È Ssî²²Ð7e÷Œ[µ¡a‹ mlES÷iIØ0Z@–Æ8G¢Œf6Îïoø—ƒ¢Â‡Õ´|y1hP ú€LyyÛˆØgÑÀÑ•f¨zÃ5MÌ x‘ó´ àhåµ):ÝZ>^líEL{ÞD΋ «È²¸‰¦ÕnÐ&+Ã×îK@ƒ$,O%ïNØOeCe1‹çô㾸ÐëúÄc™“ºÊ1¯Fø®‡Ð0=î´G@1Ü“ƒ[ð…F]j\^9ö\ y–1Ä3³8d0{»¤`†KáNr›ŽNØ òPÿjhvxÞä8êIˆU„„Ðß ¬~ cÏùièòÓ”µVv!? =¿b„‘‡TB~¤TC‚¸pG×<šswŸ÷ŒGáµ¹ñ¤ú[ 9ÓzÍ1ͱgÊ¥AŠ€•±¸2ñèý|a÷“ :¶€õ¬_‚$rã4–úÀBÁ<0´|h­êßscÏv”Åd ð ‹]/ÈÖû“vñëja8 ~’ˆ Gˆ·+Èßë"Ëw³L ïZ\4¹¡ÁZNâF©­Õ¨°B a?a˜k#É5‡hãžšN ”Õ‹]•-ÏïïX$ e!Â&…"ç~ëËÚpÎI2^¾œN€‡–BWVù7›ßI‰MÄðepàc‰µÏx*E(F|לºüÂý½ðIÀc ©«|_•7p‰½FÛ‰Yˆlf±8t†úÈåÓÇJy6†)û†ªp.a} F'=`h{èÚÀ5/ òùBV2(…;`Û ˜yR°T·a“Àú,óÔ„ÎdŒÉóÒô%·E'§ª‹â'ŒîRˆŸ˜âÇ‹Ý$³‡EƒÞíþ^‡TàP® ×å×rÜl¼3°˜w·EÊõˇµ˜)e³û²b,Àò Ýá]Uñ 8-™›8¶ÖL¸žÍmA#’iÙ^[ßË\uuˆÁŸ¦÷Œ‚g†Yù“9•ÄF”ÍìˆEzM÷™{ÊR^àPYÉ [˜ÒF·Lâ¨K#c:´Êõ¸ç€ÐuQ © Ü«e’ògÕ„-Ôœ_i&€žB ÚݳD$p1Î1Ï­¼m˼3Ü¡ÂÇ&Z„2ñ ‹>^±´ãQÅÊNÈTêqa2N’rÛlóuŒO ½Ôy¤œ`O24þTŠœTèZ±īÁˆyt{á6|q;X{[ÚÑ\® Ô·;@eŠ‹Ú™¤ãä%2àúƒéN#"±Ð†¿ûn\oho¨ú¬Í@‹f!”P¦­òÃ=¾™r¬Ûž wìš ·Æ0ƒö§ZÖU^˜›šï1œÅácµ„&¥iƒ‰šÒ4Pn\¦B*7ðû®m+Yì7¸H®•Æ„³|¶ÞÀw âG{†1BŸñD+¸]íð'®l|\"Jæ»i¢nã$:Ï8ÍΦëÙݧIóÂæŒµÞý |‹|W%ßÅÉ qã(j \§+ÁUýLàøòC)j¶ôûq]dnXY¿R!ñIŠŠuº~d †Ÿù¾/à$€Ý¾u·å÷ªéiG^fþàúí¿Ÿ¹?›À÷°j©Gy­ÉÊô¨XåÇšŽâéJöŽ?ârö­õ¹7>&¬<€'â4ûŒ•ŽEà‹i©ç7J¢…5®r¼gÓ \5M~)™4%/±á€‰¤AÛs›—ºÇX.¸{Ö§s¥OˆtVˆÍ^ÈÜ#&lM™c‘SœEj~½™ÙâQ¥¥q–yáÕ(õ¡PµÄ4ö#^PR¸VT¦aÊÒ,H¡‹Vª8ÝÒNëˆ|<g5&M¸”ø¢¢Íå?€Üa´¸#3Ý…‹¦ãGËÓý(/s2QÈj¼ÏlE‡¹ó½®t¹Øã0ÄoWnͰ¿b{ádL¼Báf˜LéÑcH„Ïe¨z-ïeØ—´¹äÈŠ ¯k9öP8=QbGÒ¬]" ø*ð™ÑNásÜ’¹ë¾îÝ໡?Öj¶þ‡¤-ÏlÓë¥û$ú %P Fêa(žÖ=¯"WJ1?ÜM$=Í9f[ûÒJIðÚô«Ä$÷…@Ä ;Wö×3Ý4öPÏÌ<«ç’W9“^ÆíÛö^ÞÌsîòã 4Vou±°÷ÎòÛWóžk8‹½|ù¸™èû<¯-ø. †c- óŒŠÀ1½Ë*e3Ç'Ke_Î}åOvÿn\†nœÌ£È'ëªW’YFsëâšý¹k†“,û¸±Û¹Üù ;Óhf#×:ž›ŒÇâUd aépž5dí’—’ÚH§’°C- )…ƒ·Ì-pƒÆÚJÍx¡È[F+M)† ì.?#ïJ@©jæÓSòMi’äØTOc|ÿ‡†á+)0Hi¨láàECöòZ& ÒÀ ÿ;öÚZ¶õûïìù_ŒøÒò©tù_¾9uæzFÛqëf±ÀÙéÍè0{Mä5Ý"?8¢¢pª“¨7¯‰ÍÞ—ï|*L¸³‚K ¤HIEåáЛ‡§7ÿ4/YÛendstream endobj 197 0 obj << /Type /Page /Contents 198 0 R /Resources 196 0 R /MediaBox [0 0 612 792] /Parent 180 0 R >> endobj 199 0 obj << /D [197 0 R /XYZ 97.768 692.105 null] >> endobj 200 0 obj << /D [197 0 R /XYZ 97.768 667.198 null] >> endobj 201 0 obj << /D [197 0 R /XYZ 97.768 282.024 null] >> endobj 196 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 204 0 obj << /Length 2352 /Filter /FlateDecode >> stream xÚXK“ã6¾Ï¯è£\ÕVô¢Ǽ¦’­ÚJj»÷”Í-Ó6·%Ò«ÇôôþúHË–&3‡nƒ ‚ä‡xþðÝǼ~hâ¦ÌžMWeýPŠ*Îrñð|ø#šÎj·Ï“2eÏÒϽlG_wi©]*¢wTTѨþ7+Ó*þ.ýïÀcçQHzÓÓ™í==Ñ`kHño£?Ç»}QÕÑ/hŒ¾OÀÆ@R+yÄúa‡WjiC#$5/v—‰èM ǹÛýùü‡äaŸVq“gn…ê 'mNÐ7Ë#evE}Òƒ5½2)¥9 Gú½ vRí¤X}lOùÂAuòýn4xÖÑÉÛë–TíYv2'ņí‘~ç‘=*®&{ ç íp³Ü-¤µÜ˜6 M‹ÂEŽ“"Ñ^Ô 'mÍÈ}ÚÁŽ»4âæ›6Ú«1Fûß},Ò+8`²<‹EB“ýj&°ÕN§üD0€ïig ¦¾wÿŸÐnäm‰‡l•h«N⢨Á$šÒ€?ž¾ú“ú-)Ò8/+ßÝlJdE\”Þ×—÷ #YܤٷÛÐ~ëïè%…‚óŸ5ÚìÝÃŽ–q#—ç|Tƒ¶.Òèe—%Ñ|Üe%ªI7ÌÆ| !áx ‰a^Ü¡O¸1îÈÄý‘ÁœÇã¨)ŽË4Rà'M’øhL£Î¶²#Ñò7É~¨ÞNŠT­í/3L¿›x€C޳&ÿ: ö¾çrC ix`¤æË;ýã¬ÛTŒ„‡ÔÒ|1óQ:;O¤™â;+ЏA5Yê>Ç$ý8pG÷¾+EôˆvK·]ëU€œêV-’¸L<ÂÜj M‹Jܰ™£Ä¬p(@!s§‡ ø@<ÊpÀvèb‘3”&êìŽ7++\eÑ,V *`? ø‘:ê‰ jn·ÖLƒí:ÚjPôóÈ]^Tð̄ϖ½”ÔDê'\2gmTLTþ|† Ö”wu¥ªÈø%hïÔRG„û’$kµctT"‚PGÒíç µšC ~%,É x,†ÒH:wê•»bðÇCå°µ®å¯¹le Ò€ÀWÙd°Jµ±ÈAsÇØ…±.Œè¤l™×5ø¨{Ýá‚j;/+ /àâA*P¾£zm0ŽW3<’îŠwQ8 r˜®åùoÒçO6b>-â¦(nVúå(HÍ2€' F;/¬ ü%í¾ˆ¨Ý!Èþ;›@¸E \Á4A{: úIw‹ãJ#On»Žyø × 5aûá ¤QpSS„– \ ùM€Ê–+r>ŸÂgT¨"d‚.¤%·{Þ©š¨“æ4ÃÚÀ+ÐÒ®ˆÜ_ýì§à´­ìÔ”Vðýèi„ùã–-Pœy9k$ÿ È}BðŽw©ÈYuÆ;$%ý5ËHÓ¸§".Ú­<Îwû4ä9µ ººc<ÿîR*ǸWi¸\–Ø‹pÿ–¢v½‡¤à,ÌLÂ7Dí!„è¤ÇÉ­Ô)Ü•*»÷Ñ…Ž•í«t9¶¼VÒÏ‹š(Ì@nÏV·!=]'°|º5EÞgg íp蘣E½sZ.ÇÞ5è*8ƒ½1ʲQÒÌyoÚÓ:ö³¬t(q·´$Oò¦:¤Už‘ÇÒœ£§¹“C÷N}æËAº|¿/w|‹/v˜üj´êÄåii€Jk**°l"ÎöIÂЈ^I3.iÁ,+CßCБßéVß:Žk;îA+ƒ1oCÚÆdÕ¸6Å®ngï/W|+ü“Ý,ù ‘ƒ™UñŽ•Úߡ͕ÞßÎÖGcdz·õ„}õp˜ë¯L¯çz¤›ö뵇Xž‹/WË–,¹ß1qeWšº¼~.ö2#¼ä@mUyJ{K±ƒ¨ C#ºÿzÀ «Ê:4ÓHß\5J€¦Äz´I£_¸–¼†*§Pžîq!ËcÝ î"Íï׉*·ÎÒUˆQ Œ¼®}Á\×TÕÖî´±fSÔõ4û’{fEbš»“ëL—‹€ìV†tÏv4¾tÛ‘Ÿ˜•Tàõ¯ HØ›€¢ÀŠ–†0}® i‰O,WWõEŽIRGâÊ4fømÅ,P7o ¿e:ÅÃqg[ºµoB^€±OpI\RNùè>n„çÛ9\:!ܘ"Aê‰cœC|éù õ9˜¥Ú ã5ÀB‘S£/dCèd«tëN1ÒSAºÞ•,PHÃiçF¥ÚÄeáëé¿É¶ò8É}@>’EÞ»*d_>‹†r•0.¦CÖ>¤".So|”ãzú´‰“Æ{ɼ2XbŠÔïL ÔŒSc¢ÁÕræF.wqÅ@’À'–9$"–~ÝÂÊÙªRóÏG€õÊÝ×½/ÁnÝ®*XXÊ)3Ãg}:wð7ñ|x„ø´ä¨9/ˆ¨xs±âÈ©ªo÷HE£ÂÁnÁ©(ã¼¼«úŠ8¬ô¼'šeÆúq(>áà 8ªãÄ3ëWÚù Y_wl™7Ñoô’`_éæµ¦ÃèÁ°DŽÅŒé4»TGs\1»8lU=aßÔÁW%Ëð«Öw ¨:{ ÷Ìy¾ XyÀ¤ÚG&’ þ†Aj8cR^3 ‰Ýg±j¬{¸b0óûb DôRÞ“/Â&U¾&U'áåk;Jê¸.·‚ä‘’΀ °×D„U(ò2j-ê6î¨ÍFä–M,²o`Wâ®V«¸ØßžYjéÅqxóJâTÜF±ÑáÙRø"O””ÕÉ uº¨Þ`„¯ÞÜë“{àzæ»BYÎ@I2ö q×WâI‰TÚ/w#lböÔQ?\öx*”Äå í´9@¾2âÔ-ß«ì'}Ò.õxãÜo½òÂã:óc„fÓ†µWº†H|©#naÄ= JÖW 0tÈØp¾-tfµÚBG6àhòo¢Ý8}ÅÐÅEÝäQÝ;xŸÆž è\?ì (õJÚÔ4Åo~~þðû`£endstream endobj 203 0 obj << /Type /Page /Contents 204 0 R /Resources 202 0 R /MediaBox [0 0 612 792] /Parent 180 0 R >> endobj 205 0 obj << /D [203 0 R /XYZ 97.768 692.105 null] >> endobj 206 0 obj << /D [203 0 R /XYZ 97.768 604.643 null] >> endobj 26 0 obj << /D [203 0 R /XYZ 97.768 428.678 null] >> endobj 207 0 obj << /D [203 0 R /XYZ 97.768 314.73 null] >> endobj 202 0 obj << /Font << /F38 52 0 R /F41 57 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 210 0 obj << /Length 2341 /Filter /FlateDecode >> stream xÚ•XÉ’ä¶½ÏWôÍìˆé÷%|ÒÈ39bB‡n‡²(ÕE›K™ §Õï— X¬eö¥ H&‰\^&ðéåÃ_’ò¡ÚUyòðrxˆ¢xWDñCž»8É^š_ƒ_†îýñ)Γ`, âà° õÜŽƒÿýE}Œ²@ùN“uN†­“ƒµm„6Bs˾og¡ü•Eðüø”…ÁüûL¤2Ø›¹>Ê‚Ó4Ö¼{|JÒ2øe>Úé;ú„ªî>ž¬~ÚÇß^þö𥻼Êð_ìª$æƒ^ožÑIÆ×Éô1Kb^Ìä;œÝøŠA\fhdð‡Ü­›ÛAWìã0Xqp¢(à†Ið#«MBk:¸UÉíàw`óbÔ›aÀÒ4 þ_UÉ¡š!¹k†<ߨ›FWê’i˜ÉÊW³Ìcoæ¶6‡ HË©13뎉k‡ZYIG Ìzó.¢Ž†6øFŸ”qoÙ$ýO6^Ö8é?ñÊ‚‰Ö>½Mí<û5{•ë]ÿ‡§M°ÜG\•ùˆƒOà’4Í‚Ÿù`š¦¥ˆûHžÊÅÜ´öŽ81w•J.`­³fª|Ì|ŠŠtŸü°Çž›¾Z]"A…øõ7XU—ö îâ´º8«ÄÞyÆaÅm8ûŸÅs«^¥iÝ©3ïbë*xkç£|¨ÇÁÙz™[Š€ÕMø°É;!0XD3郄«Òô"á~FÍá"ó9ŒSB¸e1Ù£H .’ðÖÚ ì„dÀQ„‘gœu‹Q÷²p6’&ÉJÿÖZ:Ô>P –)Tô{ƒ_!SveÁñÁ±×RLz\9SÌîï(]ÍìG ¤E0›½PÄÁLv^¦AÆ×@V’ &Cª[™·Ê9¿ŸDs¾€bhµqGÅÅY¬H½êà!» šq#°º… þÒRPLëW3 ê¦Ç,£äHò4x!<ºM±ñä±8Ñ9EÿÆþ3 ãÁ*Dù»tú¦Xô›$Š1êer£VÏn|Å`³|kÇE÷ÅŸÜ w ›˜´éìlµ ëþ~4“©g:Ì÷v~8¤ï—Â^°D]«Ç/ݯLTy¨>„/a%&äþŸC½$' 7¡^’CÔ`óÞàÉÁD‘ßAÂn#i§ŸÞO+PóV ¼0˜i;³ï.ñRr–:|îM}/³Å/Œ‡yu“¡ùZГ4]á•'Ó2ðˆú ¡ªbPýiáÀ¦Ù°a·L÷¶ª|ù©ð Ò”jkVEjh°þ÷§qš ÷½DÞÛÚ,ŽÌZTç(IÂôˆÒK ª<9™M¥Ó¢62g«’Ðï‹óG!¶QZ2Œ8U~Gy&†Á¨r$¼08[Ž·]†@ÝzSnZÎk˜ŸòÏRÓÛ*G¤³©Á¨¦¦I*Þ¤æ¿õ#eWí¤qIn †Ín4àšø*Èß0uR>Áùvé¦J‹WBîµ*‰X*tW‹”Ø-Ý,DΜt…púª¦ä*sm¹"Y›ˆ´§°@99ýÉÝ¥ü­´MðáD-ÀàN8à z0¼¥¾€€ðùùù!H—ñí‡/itîðÁ˜Ä»,ÆOªeŸyÿþ×g]³½äùVÅR^¢|²Ê‡ù ÃMÈ¥ê4¡ÔöN_ÍĨ®ÎË~:y ¿ŽÃ¬KÂáG¡¶D?bŠÐs'Ô‹¤=38ù7ƒ¬¥ÔTÖ7 €ê¿µPmNfßví¼vC@élÙÔKÿïä_@}$N,­eBvnd´¶µÚS{Ó½;«rmtÑ^?kÃú®«ÚÞ>QkµôÚ}„lãT‹ÕÓõZr¯øo AÞÍëIæR§ì)¶Ô÷ëÅÊj£K¦¦ÀâÒFÔd+tñî2Xdæc’¸M” ËJPNçá.ñÉ¿~ÂÚßn--wiT*ßG.æÄ éã@¢¢ó:i‡ªKnt ’¹+òòöËë­Q¹C½P-ÄŒð¸“0¤SlGÛöÏ %•?-Àr‘‹‚/íD¦éHq±µxÝû0›ßeܪÈ«§v/¾HÒ>¦î ù稀<;ˆ'«ãò©%ÃÔœ9ZÌäH]zTŽÜÚaøþ$ÔøÏØ[r<Ý_²eÎE¹§"4N$ .aZmr{@ŸTE|n“h"8RD‚#Ź‘ndÊ×ÝB:`ü˜^;å$>œ§³–EN=ÐDö‰‹Bí#›mcú,iµ´ _C¼†­§YÆzȇ+n%*èºXIúšæ|áÝbÝùýCTBÓ[ªšZ´¿´w¯««ûK¥‹-¹Ñj­Õ§Šr5…ðey•‘±Y ¶FAºñmêon´“ÎâE·Ý+;?2ð5YŸµþÇb]é•, ¦oqü" îTí"Û…Uq]Yrå^Pb•uÆùÖ[‹È’›W‘Uai0'(ÙjÅ’X3žwfx]p9¡µò)M9š„Úv‰ÈW;Lôù¤GØZQ.xÉuy;¿îÉ­š F ~·<œñ·zŒ‹žä«g8zG’Ë#_ˆºÅ7"ôö¨×´œÐrû‚¢½}rKBYrõVÂO¤òÓªdEþÞÆŽ ¥cXú½ })ÇŠ šNf{»>,^©o›?Óã ¿¬Múx(ˆÂK…pyÄ,Mð/æ†S‡Uúª“4ÊJ/¨oôóåxï"éI¡RÊ^âq„n4Í“—©VBO!‰»øÐ:~Å…áíØr@âëUP'’µØ[3(…­…ÿ-ýIt¥ G!òkš2rcºUf«ÇZd>nCç;.kFë†?=F0”âôz]/|¤‚zã#Eù³O‹D¯‡þɃ–{SWÁhN1i í½©týÙ>útTlWï¨ôx2vº‚ÒþΙ¬œ÷õU,ðÒ‡æðl¥,<ç8‰@Ƕ+ ܤ“d–,'ŠéˇÏ/þ ÂhˆŠendstream endobj 209 0 obj << /Type /Page /Contents 210 0 R /Resources 208 0 R /MediaBox [0 0 612 792] /Parent 180 0 R >> endobj 211 0 obj << /D [209 0 R /XYZ 97.768 692.105 null] >> endobj 212 0 obj << /D [209 0 R /XYZ 97.768 391.492 null] >> endobj 213 0 obj << /D [209 0 R /XYZ 97.768 213.485 null] >> endobj 208 0 obj << /Font << /F38 52 0 R /F41 57 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 216 0 obj << /Length 2426 /Filter /FlateDecode >> stream xÚXYs9~ϯðÛ´ª¬Nßê®}rÖN&³qvÊrj§j³´º-qÒ‡ª8ž_¿ê°ä;H ÈøòÝý›·ï“ð"Lü8É.î/Š…¿Èò‹,]øQœ^Ü—ÿö’Ù< ‚ÀûÕc×?ÏæQxÝ£üß,—³ÿÜÿöö}œ_~‘Å$$¸˜G¹% OKæqšzv ÿÌ{˜E7Ùzv×ÊÿMcVÃ%è<òÆM%̪´£m×òá0 ½ça¬>v½,zÚØÕFÈ;P¦/eÁr4uÝ•ÿ4 ƒÝfFVÜšÕ„öãfê…ó~B¥©-Íh±¶‘9áÂ/âˆÍy_Õu7‹ oØØ->Š Ï’Ô8ð¢üÙk +€8‡©zϱ û‚¢,öªv–ÞwÛwmSµ£Ì²â˜\‚¹ MÄáÝ2…#fl«v>tS¿RÉÈË?«Õ8Ȉ“Ëš]wÕ!þ¬HGºÆEY敆=K‰Î»Ãm*…¾ýN?œ\˜ qþ‘âûçÊôq{×ÝDÂò…÷ÎŒì³|þ¢†Q¬øžqä‡Qqä¢÷½iɵòÃŽ#;´8Ä-ù.J‰Qñéí–e¥K+3N}Åe*ÀÉöË bRl°6`Dt.q¶“G•æÅÞ׆Ââ»Õá²aÌ$²1¥ªó8¡>A™SÜ>Š,lË¡… ôŠãzÅ‘û¤~ªµ®?\E*º…±—¨¼C-ÁvZ‚Düs´Zq8ƒ]·–le8Á°_ÕWeÜ ‹qbϸ,>Sh¹¼3 ¸Jó8ÕÊé; ®‚Ðغ-tïÚ3` ¾ú­ÛÀª°@”cW¡4ô‰üðŸZÁ‡HP}§´(Eæ{ÔËaBXÀûœCô…é©“Z{:ÐûYŽN¤þ߻–8ã­¦vÅ*C¸ëµü¦‡†ÓÕÿÏî#ÚWä³ï¶ïò4»Eâ`!¡VD9šd*@çsò5•N<˜Á®„t²YÏÐGrå퓪Q…¡½„™nqá-¯xN#Ü•txz_Ò1(aË.ò9ô8ä®N^- ©WËR^Di\ÄÞ•ÿ›/Ì»nlkeÀYûc¬Z>â8|$z¤pr˜¶Û®eð‡ÂÑ<¿zê·¦¥é$ø¢Uq–¨¸ü@ºö¯p„|øiӟΘզ†6¨ƒd~ŠdÜpgQÕÊ4•ÐG¨ø ™¸¡vW:\²¼ü'U ‚ z_8ï²èlÈüháÚUw·ý/Š}TGàDS]³?G‚ŸÃs”¶nJTÄG.Ý!‡” º®ÿ¦#Á=P|ÊÔ½Š7[i¢ Õ‚a4ÙkEÍ!ZùY˜{k×îv]D̽R|ÍpšÑ ™Të7®cеƒrkàÚ5tÒÍiÿÊ׊ù™@“li°Ãß(K]ŠŒí¹ä}\h§1}oÍZï³SØW›Þ»‚Ü–~Q¡r/å µ ë–ÉŽÞú2ÿkeœÿz™B“ˆÊ#Òó½²¶Eƒn»sÕÓ96rÈԒȵ`düâòíz¸\-¡ä|/nos´¯Þ< ù$N§æ¯*wìN(tª¾P÷›®¡÷ijjé!Üí÷Åi!iïËsðéð„|âªшʌÁ9<>!SPè°KçMx¹ÓÔm×Wzª|çQ(Ó•‹ƒRÏÀ}¼ÃIÞ©¤«}×J(æG±yjÈîŠté.ÀÕT›¾~–«Ä|6ŸNoš=i¸®ó£" ¡Îïgð†pÁ]©–'²2?ˆ:{?‹CÊ×ý9©­ieH¯è(½äb’Äð0œìx–áv¨)-…×µ»Y!P_ZûC(vÜ2ëà"–Ê›Q¨ip"ñQ["¹æ¶ÝN:«…ÿ`²›Fš}­Iò¨Wô®î‘,ÜsqÏ(çµm+™B(AKôru+åj? f\©mò@ÔF'™:‹¥Nu)‹ÚnÜï4µˆžQ·V'ÙO"kï%z©/UZ¾ÔD²qà7·Èêrè8v«®& ‹9ë&vï4àJrÊ…ó´á"ê°RÉ;»Õ,W ªÁØ›Ñ R ø¢yöGnFÿ¢ânÛR[kyCÿú¹5 ÷o4ð ûÓÑVø_ƒ4¸¾¾Á_(ÓÎF½-Š[é3‚ü19²4©ÑF;^C•›Ã»d~x8s8 Çq”Ë„ ¡Axòˆ2yl¾Î”åðc[šü¬] 2?ÍþÏ;+u+Å.ëçi’Js¥pö5'èzﺲÝ3¹òå P3[ÃmK¤8ñÝ+ Lq»wxü¶AøÐ‹£%_Ö,bizÅ齞rZ] µ{G]àþPÛJßkåÍ4ÛßÂyÑž6¥t7ºäPÞ¾€~ÜåW•Óà%$»”~íôüÂ̽1ð“-¹6Èŵpcᥴ‚‡.Čިè³w,_>,eäü:«„v÷JJÙµ°(Pé_^±C÷ê B°×évjÑ 3þÇ+•{9Û¾°;æ0B{ûW¥÷5wÉá«…y¨µa U~N‚éñ»`ùaL3onîßüãU$endstream endobj 215 0 obj << /Type /Page /Contents 216 0 R /Resources 214 0 R /MediaBox [0 0 612 792] /Parent 219 0 R /Annots [ 218 0 R ] >> endobj 218 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[1 0 0] /Rect [257.029 105.788 264.003 116.732] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj 217 0 obj << /D [215 0 R /XYZ 97.768 692.105 null] >> endobj 30 0 obj << /D [215 0 R /XYZ 97.768 667.198 null] >> endobj 214 0 obj << /Font << /F41 57 0 R /F38 52 0 R >> /ProcSet [ /PDF /Text ] >> endobj 223 0 obj << /Length 1967 /Filter /FlateDecode >> stream xÚÍXM—ã´ÝçWdõŽs Še[¶«žaz`0Ðéy°ð8JâÓŽlgšæ×sK%ç«i`zñN/"ë£tu«êªÔrìãOŽe D¢ÂqÇ"ç›Ñï£_~óÇ‹‘?~3òE¨Óñ=Ú¾Z7£P%B£¿ËÑ|ôãH:SÓÞÖtoìÅíhv¦ãXè$ß.Ç2 D C¥" åøvñ‹÷óDú¾g²fòÛí›Ñ«Û½Á=6‰(ŠŸ ÝÁÜ#|A‹8Çq ?I,¾ùtS/ÌdøZ&ÞüÊ}ŸƒURÄŠVÂ×ÁÓ`e"G ‚•i(úxÚJ”Š0¶2 C%Â8Æ‘ \pEFB=²Ô©žL0ò>Lbå 9™†ôõ«¯ü×ß¿Ê÷^m²¼ýœÛïªâ×œÏæŸaž$†€c*¥Ð8'ÛÕ>,ùZÅg¦&Ò»`íjÎ ³(º¢Z]¶,Oφ8<±~ªÝ¸·Ø.Úýô”ùiâ'êà)XUçvÀïÇé}Ÿuùú2 ê¬H°JÇÿîì†Ç2ôŽº ø²±AÜC ©dM,ÿ†z„”$é>|$Ì'Z™ö˜¦*ÖX9,AI$~cKq:Zܹ·&»ëÛ]ÖmWôcÄà«ùü£d@!£P=Û1æŸÃ÷…½U‘Q¬q|»5MFíóÐvfƒ“ÈÞò®”îu••<|½«rþ.º‡‹§‹”ˆýÿ¥½G .j¯ ¡|Ý'[r’lJøÿ Ù8¿dÚHæÆ~BB}[´[ê;Ï¡¢êà ð; HFŒfXÒ3`’ä&þ¦lÍþ7‰h³EMûÜ· 5 ÓЛfÊÖØnà\›Æ|ÉëΖ|•”@!F¨#ô]׿8û.Ëb…Az¦:@êP¾Ýbm5Q^¶ÎºhÈùš~>hvÊWoçõ/zºÊ{÷ú±ƒ‹•ŽÈ›K5W¤¤”~®šëÈ\ŸZè8äš+A¤ÆH¡}¦ëv’ú^ö¾4 X:¸_Cîêæ;³jÁ«*7m‡ƒ×SÂz騜Ï逳ë'‹DˆªNqù %$)D.ŠìŽtÁù¨C_ÖU^îZH ¯´EËý–(j´ý…‘¹½|ºVø1 íÉVM¶Ù@™Åê{ßÐÆ±¬,]ìÑ·öºµáÆ®5 OÉëͶ4ëÏëªkê’‡˜# ·9YoWmv`‘Â;ãÙ¦¦«†÷û¥å8 ¸ó~] ÷Ÿæ@DÑãßÐk·ðÉ ²i·òNv”Âéˆ,êYˆ3gfQóÍ…¦[ØÃï:{gCô0'ôê]‡9‚ŠàÄ{aò Üñ°ë›{_të¢8[ |¯Í6ÔbOö^ã!S‘\|(šºÚ tP;@ÒRÕÄ™3”í9ѸY„€ûÏ· ö9ÏdÃ4އ\¾ÞÃ@œFW4¹ÙvĤî9ÒÊm·ºî(-¬´>¸!óûÎPºSFù±‹<9M•|¿F±Ç1£¨òÆd8Øà kÛßò¼}ìJ¯tKóôfSü锓»šGZ ŽåÀs Ðœ™ÅbgC'ö=CÑá–¿m‚Sã,ù©«Å´îÁ†9}2=hä$*ÔxoEQ3/t¦Z7Å‚#»í¶n:žV“«]ÿqþÓX™U«]¶z´—U’fÄu›åw´V H,ÖáÉ©¸¢¹1K °rÏ=%«7H笱@BïJÐoD™Â±ÐPTS0lj÷¦^W<í;7íå:Û¼7Më&¸óÀLY2{‘w#¸‹oÓò®‡G7R„0.{Ù°ÄÊ9/üÖrF`VÝ© .!žô*Ò: 7ä }Nbé«>'í—Ó Än:9azcÕžXæPAã+«î|ß»a ¾Fàð–Û5½ ñ,Q‰ûÒ‹$(¦úŠ.ÚE{Oˆ3k¶õWB4u}×Î^Ö¥±Š¦½ì,›¹Û·9’vW°H¦‚'UŠr5jíóñœçÒ€=‡ßÞsÞ@=ŽÌs°/ó #N®Ð"²È1:µŽA…ùzW€û|ÙLI{]FcÎ?çÎ}Lb G¥#8v¾mÁ Å›þw"%®–¦ÌVĆö½ï]ek·øÃDõÝçÎýi,Þ{ÇòH¥¶£7 ê8Á¿=ygq; •×.Ú“û߸e_Ó90¤Ë8Båܳ>?ì\/P°÷¯÷œxLVJ¯Üð"ŽB (µ EDÉrDÈMÃS]¸¾ÊràH‰²o¬'∌ØÒbïÞÝÔEO'¡±Oéǣߠ¸±F;û4H8À–ar8„Þuc Ûœ×Ëβ`o_ê¹&$õ®Z¸"‚…UY àz¸Z‹Ë˜,-a*R'2›eåv‰Uµu³šáwfèDS-´'B‹ŸTRõ°/º¬«?B9É>ô{‚>Ú ?Ø÷ uÁÄ;Âa„w5k¼ŒúwÇ_ë ’Éendstream endobj 222 0 obj << /Type /Page /Contents 223 0 R /Resources 221 0 R /MediaBox [0 0 612 792] /Parent 219 0 R /Annots [ 228 0 R 229 0 R ] >> endobj 228 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [488.573 124.558 514.476 135.427] /Subtype/Link/A<> >> endobj 229 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 107.149 397.146 117.47] /Subtype/Link/A<> >> endobj 224 0 obj << /D [222 0 R /XYZ 97.768 692.105 null] >> endobj 220 0 obj << /D [222 0 R /XYZ 263.462 497.838 null] >> endobj 34 0 obj << /D [222 0 R /XYZ 97.768 457.823 null] >> endobj 38 0 obj << /D [222 0 R /XYZ 97.768 309.863 null] >> endobj 225 0 obj << /D [222 0 R /XYZ 97.768 258.918 null] >> endobj 113 0 obj << /D [222 0 R /XYZ 72.862 259.119 null] >> endobj 115 0 obj << /D [222 0 R /XYZ 72.862 215.283 null] >> endobj 114 0 obj << /D [222 0 R /XYZ 72.862 171.447 null] >> endobj 139 0 obj << /D [222 0 R /XYZ 72.862 145.545 null] >> endobj 221 0 obj << /Font << /F38 52 0 R /F41 57 0 R /F62 227 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 232 0 obj << /Length 2054 /Filter /FlateDecode >> stream xÚX[sÛ¶~ϯðSKÍXðê™Îʼn§qêíæÌœô¢`‰5Ej²ªÿ}w± DYLç¼ .‹ÝÅ·ß.ôþñÝìF&)K#yñø|‘Æ,Ž’‹(Œ™áÅãêÞ‚M¦Ò½îéª* }^×õ öOU+ÊTõ\7+ý6I|Of©› O¼5›üñøyv‰ãa< ™¾=g¾Û•…v»zøÞº™ÈØÓÆuEGÜUyÙ­ŠjMË®ëí®kŸMnáÌÐS»M‘:wh¤óyàÎóBzŸÁ¼zSáê‹©ŒSƹ¼˜ò˜¥RØußP£¢Ô(ùu2¡ïýDMVWæ’ºónÝ™–úkçƒp L² èç7m»»šÍöû=[W«›õÌ ~ªÁÛŸi<Š~e<ŠXâÈSÒ Ù–#^—,åîç-áûÜÉ‘’%ñ©‹ìv%­½mÔFmGœ&Lˆˆ¾fw´ ±EÔ`ÿKavç á‡âˆùÞC£«¶È5íû¤Êòòp™Qo²Œ™Œƒ]E¾Q}‘¤Þ=£ö“.zôC†xHDý…á’l§ÕKßoá¾ œn®@ø­Ò4ST­nž-Fr7ô]ˆ˜z[Uõ„¯]S¯µ5î¨»Š†Å%]Ó:Åê¦* zEêÛ˜A³D×xÓ@86`hJï s¾¹DÕ °WE[7€úslúQäÜúÐLÀr®5­!Iõ3¶×n4u€Ë†.ôïÐÖÊ"_•´þÛ$^ݼ˜M½£E–`æø«)–á{]«„ƒUé.Ì©4Œæsˆ”{ßýÐÿ]“K–00KiÈ‚ðKvëã$ä› Ý£IÂSULDèý…^×)Zr±Ï8†ó‰Y¿°HCŸ…¡ÄÆÍ¨–dçè ½îsï÷Id?+scó] Üª®Fƒ<‚îH”çE€BX2" íöpS9Sí캮ž5„G®Í sAvÍÆCÑi¤ßeÙWH‘ŸNeþ×+|X-ä¢ o£ ÚOÀ¼Þy@‰Xz³ŒÖà5öÑŸ‡èÂ~ Ûû³·k‡•›VÔtÛÄRÞ0ì ÓÖNÚ<ñ²pƒoœ 9¨T¦[÷næX3t3²,q˜5cб#~…"=:V†‘½ð%¸!’ÉË}ÙØYHj¨.¶¨ÄJ— Œ¢0€:O`ñÏèKCß·MÝíœð¯5˜P¼EÏS89=†áÄÅ9¥Ÿ'½EmÐÝ1ðÒF½(êÚ¤-âfሖoÁŽòL…<@=pEãsjJU­;µÖôEI€„yªÊWS˜“#"((¨&I#RBNíQû£·îKA¸) [¢ 5ícö¤§—Ù:ƒÎµÉëPôs=KÈÆjá„éi…W"Mù#Ƀ±¼[ =~W™b½iŸû,z]7;—ê²éCÙ6VP¥=*hu &$è-t©•qÉ1bþÉ“P­Z¸87ñm™çWôu¯ÚMˆòž[ÒØ?Qõ~ôßµ9¤B>mÇê ||( ß«Wm Ȇv˲•-+ Þàüd,ßãìm±\ÍÔ Ï~ä=Zýt›çÁÅÿVP…,áé9Õö…,LO ¦m“Oáxß[šŽåPåãv/³e·6³½."õV3óƒÂ ŒÞ–Vˆ DÊ 8; ûº…âvA«?ècº*ëÝ¢ï€wݔ氳í6‚l>@Âoy‹A|€…p«Ÿ_Îý$lÄ8jA΀RæO·¶ º00¸pn"‘]¸š³Ï¨…L@g(ñá1Q—¤Ö½j ÀÉØ»§2‹ÿ+Eç›,…ülÉrXbáYTb¹©C>Ù{ÐÂ)tZ EÑ;5®WUÿà@%çnc¶SÀdª*ùaå<«g°8ŒNàÕ§ÁÀSdF"EF 0ñV,H¸üMå‰C–mq‹ÔYv¦']P*‰‡…QŽ©·¤] ½«ÑI¸Ç,‘‚éµgˆaž|¦âÓ>-•Ù@ж6ÓÁËH9òÊåò˜ŽÞ„h°˜‹sè-õ’¨ao³|]Ì@æ_…Þç5ø¡j ýÇ‘­“0L‚ˆ¦¼Ô¿pþOvËßí/Ý~YXÜj#(†Gˆñ)Šy’2̯g æids(!*'B0VÏ4yß×™©´ufŽ XX»©£Ä#ŒQ …1Èq³$ÛÓœJc0ÆÅƤóÆø=w³£Gò½CJ‡(ûg.y¸ëXäQ̇±¥‘1ÄCQ;@ü8ŸÇP%üÇtž0™$çH±`G©lPÄ;@42½êf«z_•µZÁSÙ˜îi¯Ýa%pG—îï0a§k\ʦB:«£‰”‚ãÞúÍ–¼kšÉ7ôn+h± ýQg‹G[ÖWàØž^ýgŽ•@yi|n³ƒ n«ñ±œ o~x(P²k¸¼€w ¼­aÍTÐ_0>œPìóp$‚ìSÉ"N²ÌÉ*¨×Vú?’Ëá_46\«æu…}þü N»vý§¬/aþÕpzpqˆÅ^œ UÆVçwßý©œ endstream endobj 231 0 obj << /Type /Page /Contents 232 0 R /Resources 230 0 R /MediaBox [0 0 612 792] /Parent 219 0 R /Annots [ 234 0 R 235 0 R 237 0 R 238 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 246 0 R 247 0 R 248 0 R ] >> endobj 234 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [273.38 610.869 514.476 621.19] /Subtype/Link/A<> >> endobj 235 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 593.066 132.638 603.258] /Subtype/Link/A<> >> endobj 237 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [428.797 504.742 514.476 515.586] /Subtype/Link/A<> >> endobj 238 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 487.462 305.988 497.654] /Subtype/Link/A<> >> endobj 240 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [416.842 460.807 514.476 471.751] /Subtype/Link/A<> >> endobj 241 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 442.874 234.257 453.818] /Subtype/Link/A<> >> endobj 242 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [446.73 329.4 514.476 340.269] /Subtype/Link/A<> >> endobj 243 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 311.99 324.418 322.311] /Subtype/Link/A<> >> endobj 244 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [328.641 285.465 480.571 296.408] /Subtype/Link/A<> >> endobj 246 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [255.447 223.696 514.476 234.64] /Subtype/Link/A<> >> endobj 247 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [106.735 207.796 288.055 216.518] /Subtype/Link/A<> >> endobj 248 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [185.304 162.027 486.176 172.897] /Subtype/Link/A<> >> endobj 233 0 obj << /D [231 0 R /XYZ 97.768 692.105 null] >> endobj 122 0 obj << /D [231 0 R /XYZ 72.862 675.168 null] >> endobj 126 0 obj << /D [231 0 R /XYZ 72.862 631.333 null] >> endobj 140 0 obj << /D [231 0 R /XYZ 72.862 587.497 null] >> endobj 236 0 obj << /D [231 0 R /XYZ 72.862 561.594 null] >> endobj 239 0 obj << /D [231 0 R /XYZ 72.862 481.893 null] >> endobj 117 0 obj << /D [231 0 R /XYZ 72.862 420.125 null] >> endobj 116 0 obj << /D [231 0 R /XYZ 72.862 376.289 null] >> endobj 124 0 obj << /D [231 0 R /XYZ 72.862 350.386 null] >> endobj 118 0 obj << /D [231 0 R /XYZ 72.862 306.55 null] >> endobj 245 0 obj << /D [231 0 R /XYZ 72.862 280.648 null] >> endobj 112 0 obj << /D [231 0 R /XYZ 72.862 200.946 null] >> endobj 119 0 obj << /D [231 0 R /XYZ 72.862 139.178 null] >> endobj 230 0 obj << /Font << /F38 52 0 R /F62 227 0 R /F45 63 0 R /F13 84 0 R >> /ProcSet [ /PDF /Text ] >> endobj 251 0 obj << /Length 924 /Filter /FlateDecode >> stream xÚmUMoÛ8½çWø´ €5CR"%ææM“EƒôµÑv±Ý#Ó6I(9nþ}‡^ˈ/Âp8œyóø8úkuu}ŸW3‰¥Èg«ÍL–¸ÕLð³œÏVëÑrT£ºµ®ÇÙ<$®³9ã `ša4µjÀQH4ØÍxÈ(AÊéë‹n´t=ý„¨矜êuôßEy–qYJ *{A„Ærª@ïˆ:ùÅeЈ7Þ½vª5ul,`,ê,v7ÑнäO7^õƒÝu‘¸o¨iÁõGRí†Äîé]Á⟌•Ö=§M ]JyTW!p%‹3òï}nëœÆ8u¾e’$ôÿlûn ér¨òÅÔ;å óœH´HQ!…jÖ6àžM ù€ʽ&+ùPÇC®Qç }Í wxú?fZÄè3ìý5x{8=¾°àZ¹zŒ´N_y|ÊL u`éÅWÕíãû:iÐÐ4©Ðûî­Ü(-0«Žj"ŸaYƒºj© ŸL w>G±ÕZ¯áèa y»tž.ËK”P/_[˜”ž”}›tiP$DS©ÇAñÄî6 0½'X0yþ>{µÕÇÁŠP†å9ž¦ ?¦:e’Ùwk˜÷ð†lëq ~´nÜEsÑjçGgXø!oݤ„¿.ý´¾fÀb2-©”, ˜ š†.¼r¾ *üÞÕÝêê7¡eù‘endstream endobj 250 0 obj << /Type /Page /Contents 251 0 R /Resources 249 0 R /MediaBox [0 0 612 792] /Parent 219 0 R /Annots [ 253 0 R ] >> endobj 253 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [236.477 584.344 363.999 595.288] /Subtype/Link/A<> >> endobj 252 0 obj << /D [250 0 R /XYZ 97.768 692.105 null] >> endobj 120 0 obj << /D [250 0 R /XYZ 72.862 675.168 null] >> endobj 125 0 obj << /D [250 0 R /XYZ 72.862 649.265 null] >> endobj 127 0 obj << /D [250 0 R /XYZ 72.862 605.43 null] >> endobj 121 0 obj << /D [250 0 R /XYZ 72.862 579.527 null] >> endobj 123 0 obj << /D [250 0 R /XYZ 72.862 535.691 null] >> endobj 249 0 obj << /Font << /F38 52 0 R /F62 227 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 256 0 obj << /Length 1113 /Filter /FlateDecode >> stream xÚµVKoã6¾çWø(M=-¹—M‹,Ú¢èac,Plz %Ú&*‰ªHEñþúÎp¨½N{ë!áh8ÃùæíwwëY¼Š3–fÅjwXU¶)ÊU‘oX’æ«]ó%x£˜sg’à ûF½nÃ(yðøôFI΃OÒèi ã2¨¥!–îé´'IÄ/½• ’½´áŸ»_åŠUEІù*JJ–d™³ù›°ÒXÐ+«àsæT ŒÒ=#Ý´|ÓÝdŒW%<ª„ ô)‘î½mÏžßÿ™ótzea”%Eð»Dïf’xA”rDkþ } xÈ*cU-ZºDý—8JsŸUÆ´{zåãIöµïÓ©§¢¸§Ï‹f †«$ö^Aﲪ—¿8Ó)zÐís§'?~úüĈú¨F×á8"΃Ü~ Z ¾ºYS©‚ypÙ)õ‹ÁbæAÔйŒ_ä¸u¶¢%>Àßuá\TÍvý"Æõ…4½Óê#Ì…›p_—ôa COO„zVm{(n°Kzôað·Â`Ï!¾1z¡ù¤ ÍŽT>DÏI’¾ŒŠ³<Ï|â?b¿œnX‘/%/eŒ&5”HÿŸÁŽ¿ñuUüoá®5з« ZŸ&,ç„ä¡i”…Ĺ›ò8h ’ºž°ª…}+Äà|V-±xèIQbA¾01O)ÿ®ÀQÄÍ<¾L.` £„V·þCÀ<'̲”W|æ9ÿ¤Q®WÞžW-»'­„ó$cÜ„iØ.¿ƒ¾½­g¨n€\ØÆ)á¯g¹Œ•…C%+PíßÞ„@ºX%<—Cïd ‹«Â!Œ7xw÷¸»û“ޝendstream endobj 255 0 obj << /Type /Page /Contents 256 0 R /Resources 254 0 R /MediaBox [0 0 612 792] /Parent 219 0 R /Annots [ 259 0 R 260 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R ] >> endobj 259 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [157.453 589.973 458.325 600.916] /Subtype/Link/A<> >> endobj 260 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 1] /Rect [215.357 572.04 415.108 582.984] /Subtype/Link/A<> >> endobj 262 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [416.701 467.806 471.459 478.819] /Subtype /Link /A << /S /GoTo /D (cite.RMHHS:2001) >> >> endobj 263 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [474.953 467.806 496.87 478.819] /Subtype /Link /A << /S /GoTo /D (cite.RMHHS:2001) >> >> endobj 264 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [342.897 449.873 384.541 460.817] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:dsc:2001) >> >> endobj 265 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [388.038 449.873 414.379 460.817] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:dsc:2001) >> >> endobj 266 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [268.085 431.94 309.729 442.884] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:philasugi:2001) >> >> endobj 267 0 obj << /Type /Annot /Border[0 0 1]/H/I/C[0 1 0] /Rect [313.109 431.94 340.008 442.884] /Subtype /Link /A << /S /GoTo /D (cite.heiberger:philasugi:2001) >> >> endobj 257 0 obj << /D [255 0 R /XYZ 97.768 692.105 null] >> endobj 42 0 obj << /D [255 0 R /XYZ 97.768 667.198 null] >> endobj 258 0 obj << /D [255 0 R /XYZ 97.768 644.005 null] >> endobj 261 0 obj << /D [255 0 R /XYZ 97.768 487.511 null] >> endobj 254 0 obj << /Font << /F41 57 0 R /F38 52 0 R /F45 63 0 R >> /ProcSet [ /PDF /Text ] >> endobj 268 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl 22/.notdef 30/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro 129/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 227 0 obj << /Type /Font /Subtype /Type1 /Encoding 268 0 R /BaseFont /Times-Italic >> endobj 269 0 obj << /Type /Encoding /Differences [ 0 /minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 129/.notdef 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 171/.notdef 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade 197/.notdef] >> endobj 83 0 obj << /Length1 775 /Length2 650 /Length3 532 /Length 1210 /Filter /FlateDecode >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž4W0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22´25âRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥rg^Z¾‚9D8¥´&U–ZT t”‚Бš @'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<(0¤s3s*¡ òs JKR‹|óSR‹òЕ†§BÜæ›š’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l ‘È,vˬHM È,IÎPHKÌ)N‹§æ¥ ;z`‡è;…¸úøEjCb,˜™WRYª`€P æ"øÀ0*ʬPˆ6Ð300*B+Í.×¼äü”̼t#S3…Ä¢¢ÄJ. QF¦¦ Õ† ™y)© ©@ëëåå—µ(C¦V!-¿ˆ ©†Æ úÉ™EÉ9©É 8+ÉraúÆÉ)¿¢Z˜òt-M  LÌ-ŒjQ†æe–¦zº(˜XB<œ\ZT”šWNEÀ‚ñÓ2¡›šZ‘šÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ—7ÙD쨛™Rl:/P1½dÉ«…¶öϾ(á•l=U¸h‹d¯_OÜ—EÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y. ›1§õ‘´Õþ¢Ç³:•un~Q®?Á3/å…SÔâ}ßï]ãÒ š¤¥$e~sû]F1ñÊ»Ï/zÊíO]Ù3ÿÑÆó½EQ’žý^ÿŸYì^¶Q¹íøgíÅ×ôI\Ýä÷LèÐ!~ç³Öy?hKDgêV«ï;®É÷þÎOý©w_dÜãæf|üfÇçg‚û¸þ81Çú`¶©Ž‰óêü´¸5q¹­ë•ê-Ûa·ê²Kô¦_j‘»•V^,•uþ ÷êŒY³uU~5¼˜g!'¾ôÉ´äm,¦×ç°¬?­¾ÞÐÀõZØ—ÄÉŽ3¦w̺#huìóó‚«·=xá¡Ä¦¯Ôd'z°ïÙSAÿ=ÙñóLç©{µé]ÿŒs§k+$®h´>Ûf²§s³Øº›6FÆù¢Ÿ˜Û§ÿÊZ¼Íî ó¾#_xÏqkÉtNÚÓŸ´¿uÓÇ&³+•Ñb»6ÜéäìRû=-Ä%<”ëÉT³µ-gZüO¨¼}úJ¤ÈÖǯy³ŽÝMâ´n®¶rÚcÔóíÓß‹û_åß™uðú¡M&—ŽTí æy,ò…ó 7O~ÖÖ£F-쫤¬8Loˆª(Î ÖYìß<ÙÌÅpÉL#îO’—ªuŸäzn@!à5`X, ‹Jòs‹²¹L™Yendstream endobj 84 0 obj << /Type /Font /Subtype /Type1 /Encoding 269 0 R /FirstChar 13 /LastChar 13 /Widths 270 0 R /BaseFont /BTELNY+CMSY7 /FontDescriptor 82 0 R >> endobj 82 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /BTELNY+CMSY7 /ItalicAngle -14 /StemV 93 /XHeight 431 /FontBBox [-15 -951 1252 782] /Flags 4 /CharSet (/circlecopyrt) /FontFile 83 0 R >> endobj 270 0 obj [1139 ] endobj 63 0 obj << /Type /Font /Subtype /Type1 /Encoding 268 0 R /BaseFont /Courier >> endobj 59 0 obj << /Length1 773 /Length2 733 /Length3 532 /Length 1294 /Filter /FlateDecode >> stream xÚíRkPSGmu¨5ZAÑB£7@ŒJ󸄥&5ò4¼¥>.÷nÈ…ä^¸¹D†‡¢ ¢Q‘V|DÔ Žø*­"ѱ*B-ZÄÒ©TFÔZ|U«¢ŠÓ¨ã¶¿:Ýý³ßž³gÏžoù¼¨h¡§’áŠd„ˆ ªðèD?€ˆ$>_EC”!(r6ÊÀ@€ÈåP˜R"ÿ@$PêËá•n¡‰¦ª¦9Hþ@a€4¡$G4°ªÑF@Æ" ½h'Œ@΄¸ˆƒ '0$Â䈆Ԥ–þƒÛ¸)ý5” i#k LeMN¬Eœ"õ€C-GA±wAÖÉ¿aj¨ø“^òŽÞ‚Q¡·üE  é&Ò œÂ!M¥ÆÃAoá'L†¡¨šAõ¦ Sô_‘D*ã ñ(‚Át@‹êp`’øP+lzFÄ1ê°ÈpïÁ®`Q(A21–t$oÈ5ò¦f3¢ 3H’ˆ$„%²óõjÑ»BHŒÂ 2øÈüJÓ¨…#a¥|d2‚Ä¡@3kX,")†=Ødr€–¢9ަJ5²IÆ4¶':Èyû1J%eÎú¡Ü7 R9ððËù;/–$2LP=È$I2ø\ÌDÓdþ›ÓëZK°ÙBh†§­•‚V¦–-¬Ê Ùýã>'ñÈÞÆƒwÚFœN°çn#ðœhYù^ Sqwךuõni-îó± /\é#Y#Ö.îþÒõ@MñÎ= òe§D—£Ý,Å›>xå-¸«®ÏˆÛl[ucbà)úæÖÕžŸ´u{æ5Ž.Ço+î>ÙÓÞ:jÜtÍÆé\ÿ¶½#®½û¡›åZ×¥—y# Ê“4µKeWÆ7ÉZÕÏîÁ‰Y.¾ÇG˯X•©^1ÁÝšrai ¿f³B·nCÈ/ñü¾°yÛË>V’u/»{Á}ò£K4ܰYª3“ƒ3&ù”T)‚g×lë’ H^ºÿEqEKòL74õtÇÇHLµ û6/ûë°tUW…ËâõÒôÞåöWå3žt¾“½v‡°4ÒëRI½d^N‡›íþ}MBCn¨OôúÏ‹«ß3ö^RŸË¨^âË—:×ݬ¼å>»©Ød´˜Îœ2¦eÂwý±ÎÑͱLPTuomÃs¿öõÕVòä¶§‰?=pÊhŽ9Ô€y…:¯Û_¾é÷oå|[Ý«:ç¹/âv¯*jÆ”#×gñ GðDׯVü¡Íž0ÕôÍÅ… ¡¥£ŠŠ/lÕò•ž /‹ÆŸßß%HýzË ¥-,¨^àê’êòô‘>?¤2¿ð¯Ë”Þ×9Ó:·fŸëÞå?›=…­‹N´ÜÛ<¶aÖÍdMnϧÔoøß󝶿ëûK½Û¯³Û<º=·x¨_zŸØõ$"Ͳ*ã÷Ü4×ð)¹ÇkãyeÜ1l{•hRÐtªFs¾ Wu&[Ûš‰;ÂÇì¾òSôqòÆN±>ÏÖ65µ{VW°¦9wMÜÎk— çòxKåûyýö£P`ϳdÕsc:£ôé½sÃVrkí¿$5¼%·8=ÓêÎFÍØÓVWq­’88ÿ ü'0=Di†2 tçO!–ÅÇendstream endobj 60 0 obj << /Type /Font /Subtype /Type1 /Encoding 269 0 R /FirstChar 3 /LastChar 3 /Widths 271 0 R /BaseFont /TILEOM+CMSY6 /FontDescriptor 58 0 R >> endobj 58 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /TILEOM+CMSY6 /ItalicAngle -14 /StemV 93 /XHeight 431 /FontBBox [-4 -948 1329 786] /Flags 4 /CharSet (/asteriskmath) /FontFile 59 0 R >> endobj 271 0 obj [639 ] endobj 57 0 obj << /Type /Font /Subtype /Type1 /Encoding 268 0 R /BaseFont /Times-Bold >> endobj 54 0 obj << /Length1 774 /Length2 713 /Length3 532 /Length 1270 /Filter /FlateDecode >> stream xÚíRkPW-:ÊXEEc¥• H‹b’ÝÄ%$‚ÊÃŒAAžËîMXHvÃfƒI¤¢-ˆªm­¢Œ­,Å:TQQ¨5VÄâµ¢õE[u°DDíê8ÅŸí¯Nïýs¿{Î=÷Üó]?ï˜xq(ɤA5CsbT‚ª@xTü¢ €JŸ_8 qŽb蜃*€*•(5ëŠD¡’ÉT(OáŒÑÊRºtø‡Oq’ ÔYŠÀi…séÐÀk¸Ä39«„êõ ÎyÂâ  ²Ù”PÁ4¨£hÔiHCk Ø&ÍÆ—P6dM¼)àÏ›œx‹$Cë­€„Z4šá“ÃÔ`qµY¯Æ NygH¯Á¸Ò[ÿ"0£™ƒ,ˆbHÈÒƒ©ïÃoQ¤Ì†Á¨†ÃõJëôˆÑéDŽ ”IMY CqD:Ðâzì߇49Ø Ÿ^¿鼸ؤÈy]íÇbpŠæ¬FWäþ}U󱔤 Ay"?_®ºkM0$Eë€ 8ËâVÂKÉ0 ¬@E“Р…7,•Ð Ç|29@˰gSå@Š›ø¤(S&ß“t'(xý1aaŒe…Xޱ’×EÑ (Êœ¿i*Ë 5C$x/afYHsýŸˆêe­¥øp!´@BÐÞÊ3Ödl=øÑ7¹sv7W“º=iÚ{·Ýµ1©6·„"sâ±ÒXoWvïË5‹2/Lˆ$f|6–=ðÖ†èõKº¿[U³nWyRqÖ ¹/²æ¯ûüÍçïÝÓÏZøÅ޵7.?ç•÷¸£½Å§ªú˜üÝ ˜A¤FN~ûœìì3G lxmeàÏ®ËkðÑ×Oi܇ì{ÄÞ¤mê0éмæ-þsCü|Ÿ^·-L;sé¡©ï(ÝQËíõK½t«Ñ‘桜uvi*ØPS@öÛ¼ç«~Ø27Y}·%  Løô¦=¹£ä¡-õ¯]„ ª„ׯ‡ÔÕA³ëq=’ØÎú¼qDA#8G)ß\_ï³<ëÜÙ­ôÄ-0\1Ý?-*ýÞ|L8vÖ¤E•% ‹¨®óÅÃDC™N{cIC»¢>y‡°°0rQF¡®fðœ]4þnv[]EsäÑõX\|d¿rý×3¢©\(Xf´Oô=ªàôÅû^Hõê™#+'b&ÕEï_äÒŽeì³>4tòú¶“?Þ™é¢+ŸUXuºùщfÑm“6õP¯µÅmr$™R£%­cÊ[¶i¼.z}8 Lk‚µÆü'yM×2Bì!áÙ¢ò3“^ÜYêÎ䮢cì-Kd›>È>„Xö/›k»ú]/·÷év½*yä‘ó5[=¿6äTShr§(r¾[·ûJß7FÚ¦­>y£«L\$ï^Cׯd/¶ÝÚg]2é·g'ølůfVø÷ZvÒhUb×ó$öŽ […—*²¨€Ç‹¶Þm§†8´Š?Qt~ƒÛ‘êBäÁÿÿ Bq–c 8›)ø=³¾Øendstream endobj 55 0 obj << /Type /Font /Subtype /Type1 /Encoding 269 0 R /FirstChar 3 /LastChar 3 /Widths 272 0 R /BaseFont /KRQXJK+CMSY8 /FontDescriptor 53 0 R >> endobj 53 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /KRQXJK+CMSY8 /ItalicAngle -14 /StemV 89 /XHeight 431 /FontBBox [-30 -955 1185 779] /Flags 4 /CharSet (/asteriskmath) /FontFile 54 0 R >> endobj 272 0 obj [531 ] endobj 52 0 obj << /Type /Font /Subtype /Type1 /Encoding 268 0 R /BaseFont /Times-Roman >> endobj 69 0 obj << /Type /Pages /Count 6 /Parent 273 0 R /Kids [46 0 R 71 0 R 129 0 R 142 0 R 150 0 R 156 0 R] >> endobj 180 0 obj << /Type /Pages /Count 6 /Parent 273 0 R /Kids [167 0 R 182 0 R 190 0 R 197 0 R 203 0 R 209 0 R] >> endobj 219 0 obj << /Type /Pages /Count 5 /Parent 273 0 R /Kids [215 0 R 222 0 R 231 0 R 250 0 R 255 0 R] >> endobj 273 0 obj << /Type /Pages /Count 17 /Kids [69 0 R 180 0 R 219 0 R] >> endobj 274 0 obj << /Type /Outlines /First 7 0 R /Last 43 0 R /Count 7 >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R /Parent 274 0 R /Prev 39 0 R >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R /Parent 274 0 R /Prev 35 0 R /Next 43 0 R >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R /Parent 274 0 R /Prev 31 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R /Parent 274 0 R /Prev 15 0 R /Next 35 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 15 0 R /Prev 23 0 R >> endobj 23 0 obj << /Title 24 0 R /A 21 0 R /Parent 15 0 R /Prev 19 0 R /Next 27 0 R >> endobj 19 0 obj << /Title 20 0 R /A 17 0 R /Parent 15 0 R /Next 23 0 R >> endobj 15 0 obj << /Title 16 0 R /A 13 0 R /Parent 274 0 R /Prev 11 0 R /Next 31 0 R /First 19 0 R /Last 27 0 R /Count -3 >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 274 0 R /Prev 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 274 0 R /Next 11 0 R >> endobj 275 0 obj << /Names [(Doc-Start) 50 0 R (cite.BUGS) 124 0 R (cite.BecRCW88) 113 0 R (cite.ChaJ98) 115 0 R (cite.ChaJH92) 114 0 R (cite.Cook:Weisberg:1999) 122 0 R (cite.DTLang:2000) 125 0 R (cite.ESS) 112 0 R (cite.GNU-Emacs) 126 0 R (cite.PGraham:1996) 140 0 R (cite.R) 118 0 R (cite.RChassell1999) 139 0 R (cite.RMHHS:2001) 245 0 R (cite.SAS:8) 119 0 R (cite.Splus) 116 0 R (cite.Stata:7.0) 120 0 R (cite.Tier90) 121 0 R (cite.XEmacs) 127 0 R (cite.heiberger:dsc:2001) 236 0 R (cite.heiberger:philasugi:2001) 239 0 R (cite.ihak:gent:1996) 117 0 R (cite.youn:fald:mcfa:1992) 123 0 R (figure.1) 148 0 R (figure.2) 163 0 R (figure.3) 172 0 R (figure.4) 175 0 R (page.1) 49 0 R (page.10) 199 0 R (page.11) 205 0 R (page.12) 211 0 R (page.13) 217 0 R (page.14) 224 0 R (page.15) 233 0 R (page.16) 252 0 R (page.17) 257 0 R (page.2) 73 0 R (page.3) 131 0 R (page.4) 144 0 R (page.5) 152 0 R (page.6) 158 0 R (page.7) 169 0 R (page.8) 184 0 R (page.9) 192 0 R (section*.1) 132 0 R (section*.10) 186 0 R (section*.11) 187 0 R (section*.12) 188 0 R (section*.13) 193 0 R (section*.14) 194 0 R (section*.15) 195 0 R (section*.16) 200 0 R (section*.17) 201 0 R (section*.18) 206 0 R (section*.19) 207 0 R (section*.2) 133 0 R (section*.20) 212 0 R (section*.21) 213 0 R (section*.22) 225 0 R (section*.23) 258 0 R (section*.24) 261 0 R (section*.3) 134 0 R (section*.4) 145 0 R (section*.5) 146 0 R (section*.6) 164 0 R (section*.7) 177 0 R (section*.8) 179 0 R (section*.9) 185 0 R (section.1) 6 0 R (section.2) 10 0 R (section.3) 14 0 R (section.4) 30 0 R (section.5) 34 0 R (section.7.1) 38 0 R (section.A) 42 0 R (subsection.3.1) 18 0 R (subsection.3.2) 22 0 R (subsection.3.3) 26 0 R (table.1) 220 0 R] /Limits [(Doc-Start) (table.1)] >> endobj 276 0 obj << /Kids [275 0 R] >> endobj 277 0 obj << /Dests 276 0 R >> endobj 278 0 obj << /Type /Catalog /Pages 273 0 R /Outlines 274 0 R /Names 277 0 R /PageMode /UseOutlines /URI<> /ViewerPreferences<<>> /OpenAction 45 0 R /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj 279 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.10b)/Keywords() /CreationDate (D:20031110163600) >> endobj xref 0 280 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000051 00000 f 0000000009 00000 n 0000013240 00000 n 0000073226 00000 n 0000000054 00000 n 0000000084 00000 n 0000013298 00000 n 0000073140 00000 n 0000000129 00000 n 0000000153 00000 n 0000023491 00000 n 0000073015 00000 n 0000000199 00000 n 0000000235 00000 n 0000027279 00000 n 0000072941 00000 n 0000000286 00000 n 0000000330 00000 n 0000037261 00000 n 0000072854 00000 n 0000000381 00000 n 0000000423 00000 n 0000043120 00000 n 0000072780 00000 n 0000000474 00000 n 0000000515 00000 n 0000048995 00000 n 0000072692 00000 n 0000000561 00000 n 0000000594 00000 n 0000051847 00000 n 0000072604 00000 n 0000000640 00000 n 0000000669 00000 n 0000051907 00000 n 0000072516 00000 n 0000000717 00000 n 0000000746 00000 n 0000062550 00000 n 0000072441 00000 n 0000000792 00000 n 0000000850 00000 n 0000003449 00000 n 0000004772 00000 n 0000000900 00000 n 0000004654 00000 n 0000004713 00000 n 0000000056 00000 f 0000071859 00000 n 0000071627 00000 n 0000070083 00000 n 0000071471 00000 n 0000000062 00000 f 0000069993 00000 n 0000069762 00000 n 0000068194 00000 n 0000069606 00000 n 0000003611 00000 n 0000000226 00000 f 0000068107 00000 n 0000003788 00000 n 0000003957 00000 n 0000004125 00000 n 0000004296 00000 n 0000004476 00000 n 0000071950 00000 n 0000013357 00000 n 0000007378 00000 n 0000004890 00000 n 0000013181 00000 n 0000007755 00000 n 0000007905 00000 n 0000008055 00000 n 0000008210 00000 n 0000008365 00000 n 0000008519 00000 n 0000008673 00000 n 0000008826 00000 n 0000067874 00000 n 0000066388 00000 n 0000067716 00000 n 0000008979 00000 n 0000009131 00000 n 0000009280 00000 n 0000009431 00000 n 0000009591 00000 n 0000009751 00000 n 0000009898 00000 n 0000010045 00000 n 0000010196 00000 n 0000010347 00000 n 0000010499 00000 n 0000010654 00000 n 0000010810 00000 n 0000010963 00000 n 0000011116 00000 n 0000011281 00000 n 0000011446 00000 n 0000011611 00000 n 0000011778 00000 n 0000011945 00000 n 0000012097 00000 n 0000012249 00000 n 0000012406 00000 n 0000012564 00000 n 0000012720 00000 n 0000012876 00000 n 0000013028 00000 n 0000057744 00000 n 0000052028 00000 n 0000052150 00000 n 0000052089 00000 n 0000057501 00000 n 0000057440 00000 n 0000057623 00000 n 0000057805 00000 n 0000059340 00000 n 0000059522 00000 n 0000057135 00000 n 0000059583 00000 n 0000057562 00000 n 0000059401 00000 n 0000057196 00000 n 0000059462 00000 n 0000017025 00000 n 0000015985 00000 n 0000013451 00000 n 0000016781 00000 n 0000016842 00000 n 0000016903 00000 n 0000016964 00000 n 0000016140 00000 n 0000016301 00000 n 0000016462 00000 n 0000016622 00000 n 0000052211 00000 n 0000057257 00000 n 0000020337 00000 n 0000019872 00000 n 0000017108 00000 n 0000020154 00000 n 0000020215 00000 n 0000020276 00000 n 0000020003 00000 n 0000023429 00000 n 0000023551 00000 n 0000022786 00000 n 0000020432 00000 n 0000023368 00000 n 0000022925 00000 n 0000023147 00000 n 0000027400 00000 n 0000025949 00000 n 0000023646 00000 n 0000027156 00000 n 0000026112 00000 n 0000026335 00000 n 0000026557 00000 n 0000026782 00000 n 0000027217 00000 n 0000027339 00000 n 0000027007 00000 n 0000031611 00000 n 0000029945 00000 n 0000027495 00000 n 0000031304 00000 n 0000030117 00000 n 0000030340 00000 n 0000031365 00000 n 0000030562 00000 n 0000030783 00000 n 0000031427 00000 n 0000031004 00000 n 0000031489 00000 n 0000031154 00000 n 0000031550 00000 n 0000072064 00000 n 0000034634 00000 n 0000034217 00000 n 0000031706 00000 n 0000034329 00000 n 0000034390 00000 n 0000034451 00000 n 0000034512 00000 n 0000034573 00000 n 0000037320 00000 n 0000036905 00000 n 0000034729 00000 n 0000037017 00000 n 0000037078 00000 n 0000037139 00000 n 0000037200 00000 n 0000040359 00000 n 0000040064 00000 n 0000037403 00000 n 0000040176 00000 n 0000040237 00000 n 0000040298 00000 n 0000043240 00000 n 0000042886 00000 n 0000040454 00000 n 0000042998 00000 n 0000043059 00000 n 0000043180 00000 n 0000046051 00000 n 0000045756 00000 n 0000043335 00000 n 0000045868 00000 n 0000045929 00000 n 0000045990 00000 n 0000049055 00000 n 0000048652 00000 n 0000046146 00000 n 0000048934 00000 n 0000048784 00000 n 0000072181 00000 n 0000051785 00000 n 0000052272 00000 n 0000051185 00000 n 0000049138 00000 n 0000051724 00000 n 0000051967 00000 n 0000000000 00000 f 0000064638 00000 n 0000051325 00000 n 0000051525 00000 n 0000057866 00000 n 0000054514 00000 n 0000052380 00000 n 0000057074 00000 n 0000054734 00000 n 0000054924 00000 n 0000057318 00000 n 0000055116 00000 n 0000055311 00000 n 0000057379 00000 n 0000055506 00000 n 0000055691 00000 n 0000055876 00000 n 0000056068 00000 n 0000056262 00000 n 0000057683 00000 n 0000056435 00000 n 0000056655 00000 n 0000056876 00000 n 0000059644 00000 n 0000058978 00000 n 0000057974 00000 n 0000059279 00000 n 0000059110 00000 n 0000062732 00000 n 0000060933 00000 n 0000059740 00000 n 0000062489 00000 n 0000062610 00000 n 0000061121 00000 n 0000061319 00000 n 0000062671 00000 n 0000061500 00000 n 0000061658 00000 n 0000061815 00000 n 0000061981 00000 n 0000062147 00000 n 0000062318 00000 n 0000062827 00000 n 0000064731 00000 n 0000068082 00000 n 0000069969 00000 n 0000071835 00000 n 0000072290 00000 n 0000072367 00000 n 0000073298 00000 n 0000075039 00000 n 0000075078 00000 n 0000075116 00000 n 0000075342 00000 n trailer << /Size 280 /Root 278 0 R /Info 279 0 R >> startxref 75497 %%EOF ess-17.11/doc/ess-intro.tex0000644005071500004540000015146213202324173012463 00000000000000\documentclass{article} \newif\ifMM\MMtrue \MMfalse \newif\ifdraft % During writing: a draft: %\drafttrue % FINAL: \draftfalse \ifMM\drafttrue\fi \ifdraft %% generate tableofcontents down to the \paragraph \setcounter{tocdepth}{5} \fi %1. introduction % a) a statistician's needs % b) statistical analysis packages supported by ESS %2. emacs % a) buffers % b) key sequences % c) modes % 1) font-lock % 2) shell/comint % 3) ange-ftp/EFS/tramp % 4) vc/pcl-cvs %3. ESS % a) interactive % 1) S family % 2) SAS % b) batch % 1) SAS % 2) BUGS % 3) S family %4. ESS as an open-source project % a) origins % 1)S-mode % 2)SAS-mode % b) unification % 1)ESS-mode % 2)Emacs/XEmacs % 3)Unix/Windows/Mac %5. conclusion % a) summary % b) what's next for ESS % ESS internet resources % a) home page % b) ess-help % c) anonymous cvs % References % \ifdraft \addtolength{\topmargin}{-1cm} \addtolength{\textheight}{+1cm} \else%FINAL: \renewcommand{\baselinestretch}{1.5} \fi \addtolength{\oddsidemargin}{-0.5in} \addtolength{\textheight}{0.2in} \addtolength{\textwidth}{1in} \ifMM\addtolength{\textheight}{2cm}\fi %%% \usepackage[authoryear,round]{natbib} %or (if you have an unshiny latex installation) %\newcommand{\citep}[1]{{\{\sf#1\}}} %%% \usepackage{alltt} %% Postscript fonts \usepackage{times} \usepackage{graphicx} %\usepackage{psfig} \ifx\pdfoutput\undefined %% Stuff wout hyperref \def\url#1{\stexttt{#1}} % To help fit in lines ?AJR: stextsf? \else %% Stuff with hyperref \usepackage{hyperref} %%\hypersetup{backref,colorlinks=true,pagebackref=true,hyperindex=true} \hypersetup{backref,colorlinks=false,pagebackref=true,hyperindex=true} \fi %%---End of package requiring ---------- Own Definitions ------------- \newcommand*{\regstrd}{$^{\mbox{\scriptsize{\textregistered}}}$} \newcommand*{\tm}{$^{\mbox{\scriptsize\sc tm}}$} \newcommand*{\SAS}{\textsc{SAS}} \newcommand*{\Splus}{\textsc{S-Plus}} \newcommand*{\XLispStat}{\textsc{XLispStat}} \newcommand*{\Stata}{\textsc{Stata}} \newcommand*{\Rgui}{\textsc{Rgui}} \newcommand*{\Perl}{\textsc{Perl}} \newcommand*{\Fortran}{\textsc{Fortran}} \newcommand*{\Scmt}[1]{\hbox{\qquad {\footnotesize \#\#} \textsl{#1}}} \newtheorem{defn}{Definition}[section] \newtheorem{ex}{Example}[section] \newcommand{\stexttt}[1]{{\small\texttt{#1}}} \newcommand{\ssf}[1]{{\small\sf{#1}}} \newcommand{\elcode}[1]{\\{\stexttt{\hspace*{2em} #1}}\\} \newcommand{\file}[1]{`\stexttt{#1}'} \newcommand{\US}{{\char'137}} % \tt _ \newcommand{\marpar}[1]{\marginpar{\raggedright#1}} \newenvironment{Salltt}{\small\begin{alltt}}{\end{alltt}} \newcommand{\emptyfig}{ \hspace*{42pt}\rule{324pt}{.25pt}\\ \hspace*{42pt}\rule{.25pt}{10pc} \rule{316pt}{.25pt} \rule{.25pt}{10pc}} \ifMM\newcommand{\ESSfig}[1]{\centering{#1}} \else\newcommand{\ESSfig}[1]{\centering\ifdraft\emptyfig\else{#1}\fi} \fi %% Use \begin{Comment} .. \end{Comment} for internal comments \ifdraft \newenvironment{Comment}{\begin{quote}\small\itshape }{\end{quote}} % \else %% this requires \usepackage{verbatim} \let\Comment=\comment \let\endComment=\endcomment \fi %%--------------------------------------------------------------- Start Text \title{Emacs Speaks Statistics (ESS): A multi-platform, multi-package intelligent environment for statistical analysis} %%For blinded submission: %\author{anonymous} %%For regular review: \author{A.J. Rossini \and Richard M. Heiberger \and Rodney A. Sparapani \and Martin M{\"a}chler \and Kurt Hornik \footnote{% %% A.J. Rossini is Research Assistant Professor in the Department of Biostatistics, University of Washington and Joint Assistant Member at the Fred Hutchinson Cancer Research Center, Seattle, WA, USA \url{mailto: rossini@u.washington.edu}; %% Richard M. Heiberger is Professor in the Department of Statistics at Temple University, Philadelphia, PA, USA \url{mailto: rmh@temple.edu}; %% Rodney A. Sparapani is Senior Biostatistician in the Center for Patient Care and Outcomes Research at the Medical College of Wisconsin, Milwaukee, WI, USA \url{mailto: rsparapa@mcw.edu}; %% Martin M{\"a}chler is Senior Scientist and Lecturer in the Seminar for Statistics, ETH Zurich, Zurich, Switzerland \url{mailto: maechler@stat.math.ethz.ch}; %% Kurt Hornik is Professor in the Institut f{\"u}r Statistik, Wirtschaftsuniversit{\"a}t Wien and the Institut f{\"u}r Wahrscheinlichkeitstheorie und Statistik, Technische Universit{\"a}t Wien, Vienna, Austria \url{mailto: Kurt.Hornik@R-project.org}}} %%\date{\today} \date{$ $Date: 2003/10/22 17:34:04 $ $\tiny Revision: 1.255$ $} \begin{document} %%\ifpdf %% \DeclareGraphicsExtensions{.jpg,.pdf,.png,.mps} %%\fi %%%% To cite everything %%\nocite{*} \ifdraft \setcounter{page}{0} %%\newpage \tableofcontents \fi \maketitle \ifdraft{}%% large line skip -- not for draft \else%FINAL: \renewcommand{\baselinestretch}{1.5} %%- \baselineskip=2pc \fi \begin{abstract} Computer programming is an important component of statistics research and data analysis. This skill is necessary for using sophisticated statistical packages as well as for writing custom software for data analysis. Emacs Speaks Statistics (ESS) provides an intelligent and consistent interface between the user and software. ESS interfaces with SAS, S-PLUS, R, and other statistics packages under the Unix, Microsoft Windows, and Apple Mac operating systems. ESS extends the Emacs text editor and uses its many features to streamline the creation and use of statistical software. ESS understands the syntax for each data analysis language it works with and provides consistent display and editing features across packages. ESS assists in the interactive or batch execution by the statistics packages of statements written in their languages. Some statistics packages can be run as a subprocess of Emacs, allowing the user to work directly from the editor and thereby retain a consistent and constant look-and-feel. We discuss how ESS works and how it increases statistical programming efficiency. \end{abstract} \noindent Keywords: Data Analysis, Programming, S, \SAS, \Splus, R, \XLispStat, \Stata, BUGS, Open Source Software, Cross-platform User Interface. \section{Introduction} \label{sec:introduction} Most statistical research activities, particularly data analysis and communication, involve some form of computing. The computer user interface is thus placed in the central role of facilitating statistical tasks. While presentation of character and graphical information is the most visual component of a user interface, perhaps a more critical component is how the computer interprets user input. A familiar, well-understood set of input behaviors can provide large gains in efficiency. This paper introduces Emacs Speaks Statistics (ESS) \citep{ESS}, a software package which provides a common interface to a variety of statistical packages on the most common computing platforms. ESS is an interface to statistical packages that provides tools which facilitate both statistical software development and data analysis. ESS provides assistance with both writing and evaluation of analysis code for both interactive and batch statistical packages. ESS currently supports the S family of languages (including S \citep{BecRCW88,ChaJH92,ChaJ98}, \Splus\regstrd\ \citep{Splus}, and R \citep{ihak:gent:1996,R}; \SAS\regstrd\ \citep{SAS:8}; \Stata\ \citep{Stata:7.0}; \XLispStat\ \citep{Tier90} and its extensions Arc \citep{Cook:Weisberg:1999} and ViSta \citep{youn:fald:mcfa:1992}; BUGS \citep{BUGS}; and Omegahat \citep{DTLang:2000}. ESS can be extended to accommodate most statistical packages which provide either an interactive command-line or process batch files for instructions. We start by describing the Emacs text editor, the underlying platform on which ESS is built. Next, we discuss how ESS enhances a statistician's daily activities by presenting its features and showing how it facilitates statistical computing. We conclude with a short history of the development of ESS. % and conclude with future extensions and related work. \section{Emacs} \label{sec:emacs} Emacs is a mature, powerful, and extensible text editing system which is freely available, under the GNU General Public License (GPL), for a large number of platforms, including most Unix\regstrd distributions, Microsoft Windows\regstrd\ and Apple Mac\tm\ OS. There are two open-source implementations of Emacs: GNU Emacs \citep{GNU-Emacs} and XEmacs \citep{XEmacs}. Emacs shares many features with word processors, and some characteristics with operating systems, including many facilities which go beyond ordinary text editing. More important to our goals, Emacs can control and interact with other programs. \paragraph{Keyboard and Mouse Input.} When Emacs was originally written, character-based terminals were the most advanced method of computer access. Common Emacs commands were mapped to key sequences, creating keyboard shortcuts for convenience. Over the last decade, Emacs has been extended to use graphical windowing systems, such as X11\tm, Microsoft Windows, and Apple Mac OS, which allow additional forms of input, for example using a mouse, and which encourage multiple applications to share a single display. Presently, Emacs is more often used with a GUI, with commands bound to mouse actions, but having commands also associated with key sequences is an important ergonomic and time-saving feature. Emacs menus and toolbars on the display screen allow mouse access to frequently used actions and provide a graphical alternative when the user does not know or can not recall a key sequence; these are also subject to user-customization. \paragraph{Buffers give Emacs control.} Emacs buffers are the interface between the user and computer. They can be considered to be a collection of scratch pads that both the user and computer can read, write, and respond to. The user can simultaneously edit many files and control numerous programs by opening multiple buffers. With disk files, the working copy of the opened file is placed in an Emacs buffer where it can be viewed and edited either by the user or automatically by Emacs or another program under the control of Emacs. Emacs can save a backup of the contents to disk at specified intervals. Emacs presents buffer contents in ways which optimize reading and navigation activities. One example of program control is the embedding of the interactive operating system command line interpreter, called a shell, within Emacs. Variations on this theme are used to control programs such as statistical packages which take input from and provide output to the command-line. The resulting buffers provide a copy of the entire transcript of the interaction, which can be edited and searched while the program executes. \paragraph{Major and Minor Modes.} Emacs capabilities are extended by loading %% AJR: If we remove ``or byte-compiled'' we need to remove ``text'', %% since it is wrong. %% text %% or byte-compiled files containing commands and functions written in Emacs Lisp (elisp) \citep{RChassell1999}, which is a dialect of Lisp \citep{PGraham:1996}. Emacs commands can be called interactively by pressing a key sequence mapped to the command or by name. %% AJR: this is actually true for M-x long-command-not-bound-to-keys, %% but I'm not telling anyone this! % Rodney: I don't understand what the problem is with telling them. The most important extensions to Emacs take the form of modes, which provide specific enhancements to the editing behavior. Major modes provide a customized environment consisting of mapped key sequences and associated commands for performing tasks such as file editing, reading mail, or browsing disk directories. Only one major mode can be active for a given buffer at any time. Major modes also can be written to intelligently control other programs such as statistics packages. Major modes for file editing are often determined by the file type or extension, i.e. the characters at the end of the file name that follow a period like \stexttt{txt}, \stexttt{s}, or \stexttt{sas}. Examples of this kind of major mode are \stexttt{ESS[S]} and \stexttt{ESS[SAS]}. Major modes understand a file's syntax and grammar and therefore provide intelligent actions such as automatic indentation; navigation in units of characters, words, lines, sentences, paragraphs, function definitions, and pages; syntax-based fontification and colorization; and reformatting based on programmed conventions. Minor modes provide complementary services that that are applicable across major modes. Many minor modes can be active at once. For example, \stexttt{font-lock-mode} allows Emacs to highlight, with fonts or colors, the syntax of a programming language whose characteristics are described within a major mode like \stexttt{ESS[S]}. The \stexttt{overwrite-mode} determines whether typed characters replace the existing text or are inserted at the cursor. Minor modes can emulate the key sequences used by another editor such as \stexttt{vi}. In addition, they can be used to perform version control operations and many other operations which are nearly identical across file types. \paragraph{Network Support.} Emacs allows transparent access to remote files over a network. This means that the user views, edits, and saves files on a remote machine exactly as if they were on the local machine. Mechanisms for both open (\stexttt{ange-ftp} and \stexttt{EFS} use ftp) and secure (\stexttt{tramp} uses scp or ssh) access are available. Emacs can also monitor and control remote processes running in a shell buffer. \paragraph{Editing Extensions.} Most programming and documentation tasks consist of editing text. These tasks can be enhanced by contextual highlighting and recognition of special reserved words appropriate to the programming language in use. In addition, Emacs also supports folding, outlining, tags, and bookmarks, all of which assist with maneuvering around a file. Emacs shares many features with word processing programs and cooperates with markup-language document preparation systems such as \LaTeX, \textsc{html}, or \textsc{xml}. Tracking changes to a text file made by multiple users, potentially in different locations, is the job of source-code control programs. Emacs interacts with standard source-code control programs such as CVS, RCS, and SCCS through minor modes such as \stexttt{vc-mode}. These source-code control systems facilitate documenting and tracking edits and changes to a file. More importantly, they allow for branching and merging of versions so that material present in an older version of the file can be recovered and inserted into a newer version in a fairly easy manner. \begin{figure}[tbp] % \ESSfig{\includegraphics[angle=270,width=\textwidth]{ediff-sas}} \url{http://www.analytics.washington.edu/downloads/ess/doc/figures/ediff-sas.gif} \caption{Ediff of two versions of a file.} \label{f.ediff} \end{figure} Comparison of files, two or three drafts of a paper for example, is simplified by \stexttt{ediff}. An example is shown in Figure \ref{f.ediff}. The lines that are similar are highlighted in the two buffers, one for each file, and the specific words that mismatch are highlighted in a contrasting color. \stexttt{ediff} has many tools for working with the differences in files and in entire directories. When combined with the patch utility or a source-code control system, it provides the user with the ability to insert, delete or modify only the differing portions of text files. % Rodney: You can't just mention complex functionality like etags and % speedbar. We would need to introduce these packages. Since they % aren't critical to ESS at this time, let's ignore them. Emacs has many other important features. Emacs provides file-manager capabilities, such as \stexttt{dired} (discussed in Major and Minor Modes above) and \stexttt{speedbar}, both of which interface to the computer's directory structure. Emacs stores the complete history of commands issued in an editing session, allowing a flexible and fairly complete undo capability. More importantly, for modes which control processes, the process input history is stored for recall as well as for later editing for printing or re-use. Emacs also includes web browsers, mail/newsgroup readers, and spell checking. In addition to being an extremely powerful editor, Emacs also includes capabilities usually found in an operating system. Thus, it provides a strong foundation for constructing an integrated development environment focused on the needs of statisticians. Emacs' power, flexibility, portability, and extensibility make it a solid platform on which to construct a statistical analysis user interface. \section{ESS extends Emacs} \label{sec:ess-extends-emacs} Statistical programming is the writing of computer programs for data analysis and processing. These programs might be written in a computer language that requires a compiler, such as \Fortran\ or C. But, more likely, they are written in a statistical analysis language that only requires an interpreter such as R, \SAS, \Stata, or \XLispStat. General purpose languages such as \Fortran, C/C++, Java, and PERL have integrated development environments which facilitate writing and debugging code. ESS extends Emacs to provide an integrated development environment for statistical languages. It offers a single interface for a variety of statistical computing tasks including interactive data analysis and statistical programming. ESS is able to provide a functional and extensible interface which is uniform and consistent across multiple statistical packages. This is done by adding shortcuts and features for accelerated editing of files as well as by interacting with the particular statistical packages to provide, for example, control of input/output, assistance with evaluation, and specialized parsing of help files. ESS supports the S family (S, \Splus, and R) interactively. \SAS\ and BUGS are also well supported for batch processing. \Stata\ and \XLispStat\ (including ARC and ViSta) are supported through highlighting and process-interfacing. \subsection{Features and capabilities} \label{sec:ESS:features} \paragraph{Syntactic highlighting and indentation of source code.} The programmers task is eased when language constructs (such as reserved words, function calls, strings, and comments) are visually identifiable and when lines of code are automatically indented to a depth appropriate to their context (e.g., if--then clauses, loops). ESS provides both of these to the programmer by including a description of the syntax of each supported statistical language in the form used by \stexttt{font-lock-mode}. Figure \ref{f.font} shows an example of font-locking a complicated S statement. The top panel shows an \stexttt{if} statement with a long expression in the condition and a multi-line consequence. The keyword \stexttt{if} is shown in purple, the string \stexttt{"deltat"} in RosyBrown. The comments are in red. Everything else is in the standard font. The consequence is indented and the continuations of the consequence are further indented. The matching parentheses are shown in green. The cursor is indicated by a solid box. In the bottom panel, we replaced the matching parenthesis with an unbalanced bracket. Emacs immediately marks that with the paren-mismatch font, bright purple in this example. On a black and white terminal we would use bold, underline, italic, and reverse-video, rather than colors, to distinguish the fonts. % Figure \ref{f.font} shows a black-and-white example of font-locking a % complicated S statement. The top panel shows an \stexttt{if} % statement with a long expression in the condition and a multi-line % consequence. The keyword \stexttt{if} is shown in an underlined font, % the string \stexttt{"deltat"} in an italic underlined font. The % comments are in an italic font. Everything else is in the standard % font. The consequence is indented and the continuations of the % consequence are further indented. The matching parentheses are marked % by a bold foreground and a shaded background. The cursor is indicated % by a solid box. In the bottom panel we replaced the matching % parenthesis with an unbalanced bracket. Emacs immediately marks that % with the paren-mismatch font, bright purple on % a color terminal. The font selection and the indentation depth are automatically supplied by Emacs as the lines are typed. The user has several options for mapping of colors or fonts to each of the syntactic types. We selected % black-and-white font-mapping for display here. On a color terminal % we might use purple for the keywords, red for comments, green for matching parens, and inverse-video purple for mismatched parens. Emacs makes default choices of colors and ESS provides several other optional schemes. \begin{figure}[tbp]%h % \ESSfig{% % \includegraphics[angle=270,width=\textwidth]{font-cor-s} % \includegraphics[angle=270,width=\textwidth]{font-incor-s}% % } \url{http://www.analytics.washington.edu/downloads/ess/doc/figures/font-cor-s.jpg} \url{http://www.analytics.washington.edu/downloads/ess/doc/figures/font-incor-s.jpg} \caption{We illustrate here with fonts and colors appropriate for a color display. On a black and white terminal we would use bold, underline, italic, and reverse-video. On a color terminal we would use a selection of colors.} \label{f.font} \end{figure} Since S syntax is similar to that of C, ESS uses the Emacs tools for reformatting S code to match particular styles. Common C format styles, as well as locally customized styles, are defined by specifying the indentation level for nested statements, location of open-braces (at the end or at the beginning of a line), indentation offsets for if-then-else constructs, and similar characteristics. Syntax highlighting can be used to help enforce coding standards. Figure \ref{f.hilock} illustrates a standard for \SAS\ programming that says all \stexttt{PROC} statements must use the \stexttt{DATA=datasetname} option. \begin{figure}[tbp] % \ESSfig{\includegraphics[angle=270,width=\textwidth]{hilock-sas}} \url{http://www.analytics.washington.edu/downloads/ess/doc/figures/hilock-sas.gif} \caption{Enforce coding standards. The standard here is that all \stexttt{PROC} statements must use the \stexttt{DATA=datasetname} option. Lines that satisfy the standard turn green, lines that don't turn red. Ambiguous ones turn yellow.} \label{f.hilock} \end{figure} \paragraph{Process interaction.} Emacs has historically referred to processes under its control as ``inferior'', accounting for the name inferior ESS (\stexttt{iESS}) to denote the mode for interfacing with the statistical package. Figure \ref{f.ess-demo} shows the S language program \stexttt{ess-demo.s} in the top buffer in \stexttt{ESS[S]} mode and the executing R process in the bottom buffer \stexttt{*R*}. The \stexttt{iESS} major mode of the \stexttt{*R*} buffer is crafted for command-line editing. This mode remembers and uses the command history, allowing for the recall and searching of previously entered commands. Filename completion for local directories is also available. \begin{figure}[tb] % \ESSfig{\includegraphics[angle=270,width=\textwidth]{ess-demo}} \url{http://www.analytics.washington.edu/downloads/ess/doc/figures/ess-demo.jpg} \caption{Line-by-line execution of a command file. The cursor is placed on a line in the \stexttt{ESS[S]} buffer and then with a single key sequence the line is sent to the \stexttt{*R*} buffer for execution. The output of the package goes directly to the editable \stexttt{*R*} buffer.} \label{f.ess-demo} \end{figure} \paragraph{Source-level Debugging.} ESS facilitates the editing of source code files, sets of commands written for a statistical analysis package, and allows the user to load and error-check small sections of source code into the package. This is done through several mechanisms. First, the presence of unbalanced parentheses or mismatched/unterminated quotes is immediately evident with syntactic highlighting of the source code. Second, functions are provided for simple and consistent execution of user-specified or natural units of the code (function definitions in S or \XLispStat, \stexttt{PROC \dots\ RUN;} sections in \SAS). An error-free evaluation lets the user execute the next section of code; if errors arise, the user edits the current unit and re-evaluates. Once the code is verified, an entire buffer, or file, of code can be sent to the package as a unit. This file can also be used as a batch file for routine analysis at a later time. Finally, output from the statistics package is normally captured directly by Emacs and placed into a buffer from where it can be edited and searched. Particular forms of output such as requests for help pages and log-file output can be diverted into special buffers with modes crafted to facilitate reading. These modes include tools for automatically placing the cursor on the first \stexttt{ERROR}, for example in \SAS\ and S. \paragraph{Interactive transcripts.} A transcript records all commands entered by the analyst and the corresponding text-based responses such as tables and comments generated by the statistics package during an interactive statistical analysis session. Once a transcript file is generated, for example by saving an \stexttt{iESS} buffer, \stexttt{transcript-mode} assists with reuse of part or all of the entered commands. ESS understands the transcript's syntax, especially the potential prompt patterns used during the interactive analysis. ESS provides tools to facilitate editing and re-evaluating the commands directly from the saved transcript. This is useful both for demonstration of techniques and for reconstruction and auditing of data analyses. Special ESS functions can ``clean'' S language transcripts by isolating all input lines and placing them in a new S language source file. Transcript cleaning facilitates the use of an exploratory interactive analysis session to construct functions and batch files for routine analysis of similar data sets. \paragraph{Remote access to statistics packages.} ESS provides transparent facilities for editing files and running programs which might reside on numerous remote machines during the same session. The remote machine could be a different platform than the local machine. \paragraph{Manipulating and Editing Objects (S family).} For languages in the S family, ESS provides object-name completion of both user- and system-defined functions and data. ESS can dump and save objects (user- and system-generated) into formatted text files, and reload them (possibly after editing). \paragraph{Help File Editing (R).} ESS provides an R documentation mode (\stexttt{Rd-mode}) which assists in writing help files for R functions, objects, and other topics worth documenting. \stexttt{Rd-mode} provides the ability to view and execute code embedded in the help file in the same manner as ESS handles code from any S language source file. It provides syntax highlighting and the ability to submit code directly to a running ESS process, either R or \Splus, for evaluation and debugging. This latter feature is useful for ensuring that code developed using R runs under \Splus. \paragraph{Cooperation across Multiple Tools.} Statistical packages are intended for either general statistical analyses or for specialized forms of statistical analyses. The specialized statistical packages can be far more efficient for their intended activities, but this is balanced by their inability to perform a wide range of general statistical functions. Tightly coupled inter-operability between general and specialized packages rarely exists, but such a facility is often desired. For example, a general purpose package such as R does not perform Bayesian analyses as easily as BUGS does. On the other hand, BUGS lacks breadth in the range of analyses and results it can generate. For this reason, BUGS is often distributed with R packages, like the diagnostic packages CODA and BOA, which assist with importing and analyzing the results in R. Another point of contention is the difference in the interfaces between general packages and specialized packages. ESS helps by providing a single point of contact to both tools, though the typical interfaces (interactive for R, batch for BUGS) are different. %\item[Rodney:] I can't speak for everyone, but the BUGS users I know are % .. lots deleted by AJR %will make sense. Besides, the most pressing need for me is to get %ESS-elsewhere to work with ESS[BUGS] rather than creating inferior-BUGS. %\item[Rich:] How does making ``ESS-elsewhere work with ESS[BUGS]'' differ %from ``creating inferior-BUGS''? My question is predicated on the assumption %that ESS-elsewhere is a (generalized) minor-mode that makes the location %of the program irrelevant. %See my ESS-elsewhere quibble below. %\item[Rodney:] It's the whole batch BUGS vs. interactive BUGS thing. Batch %BUGS with ESS-elsewhere; interactive BUGS with inferior-BUGS which does not %and will never exist. If you want to call ``inferior-ESS'' ``ESS-elsewhere'' %why do you need two different names? ``inferior-ESS'' is a terrible name %so the change would be fine with me, but you can't have it both ways? Is %this why you keep saying that ESS-elsewhere works for SAS? See %response to quibble below. %\item[Rich:] %\stexttt{iESS[SAS]} was designed to mimic as well as possible \stexttt{iESS[S]}. %I need to read doc/README.SAS to make sure all of its options are represented %here. --- Not yet done. %\end{description} %\end{Comment} \paragraph{Simplifying Keymap Differences.} Simple conflicts between interfaces are exemplified by different key sequences for editing tasks such as cut, copy, paste, beginning of line, end of line, etc. These may be the most aggravating because our fingers are typing ``instinctively'', but differences in interfaces circumvent this learned behavior. ESS solves this problem by providing a uniform interface to keyboard actions across the variety of statistical packages that might be used. That is, the same key sequences are used for cursor movement, evaluation, and basic tasks such as loading files for editing. \paragraph{Concurrent Use of Multiple Machines and Operating Systems.} It can be useful to have multiple statistical processes running simultaneously, either on a single machine or a variety of machines. This capability assists with large-scale numerical simulations as well as code design and testing across multiple versions of statistical software packages. \subsection{Interactive Processing.} \label{sec:interactive} The increased popularity of exploratory data analysis as well as the advent of simple GUIs has made interactive data analysis an important component to statistical practices. ESS uses three different approaches for communicating with statistical packages. \paragraph{Inter-Process Communication.} Packages that use the command-line interface are run as an inferior process in an Emacs buffer, with the standard input and output of the package redirected to the buffer. Packages that do not use the command-line interface must be run as an independent process, possibly with limited cooperation. ESS can use the Windows DDE (Dynamic Data Exchange) protocol to provide one-way communication directly to packages which function as a DDE server. ESS can control the actions of the package, but it can not capture the results directly. Transcripts must be physically copied to an Emacs buffer to get the transcript editing features. Statistical packages that use neither the standard input/standard output protocol nor DDE can not be directly controlled by Emacs. But, ESS can still provide an editing environment for these statistical languages. The user must either manually cut and paste the edited code into the package or save the edited files and run them in a batch environment. The Microsoft Windows versions of \SAS, \Stata, and \XLispStat\ are in this category. One useful extension in ESS is relaxation of the requirement that the statistics program be available on the local machine. ESS provides both transparent editing of files and execution of statistics packages on a remote machine with \stexttt{iESS[S]} or \stexttt{iESS[SAS]} (see below). All the editing and interaction features described for the local machine work equally well on the remote machine. The interaction, including all the unique features of working with ESS, appears to the user as if the program were running on the local %rmh: The interaction ... appears .... machine. If the X11 Windowing system is running on the local machine, it is even possible to bring up visual displays and graphics from remote Unix systems onto a local Microsoft Windows or Apple Mac display. \paragraph{Interactive S family} ESS for S family statistical languages, \stexttt{iESS[S]}, replaces the \Splus\ Commands window or the R GUI window. In addition to running the S family language process, \stexttt{iESS[S]} mode provides the same editing features, including syntactic highlighting and string-search, as the editing mode \stexttt{ESS[S]}. It also provides an interactive history mechanism; transcript recording and editing; and the ability to re-submit the contents of a multi-line command to the executing process with a single keystroke. \stexttt{iESS[S]} is used with S, \Splus, and R on Unix and with Sqpe and R on Windows. The \Splus\ GUI on Windows can be a DDE server. There are two advantages to using even this limited communication with the \Splus\ GUI through ESS. First, through \stexttt{ESS[S]} mode the user gets the full editing capabilities of Emacs. Second, S language commands % rmh: S, not \Splus, in both places. The {\it language} is S. % The previous session could be R or ATT S. It is not restricted to \Splus. are sent from the editing mode \stexttt{ESS[S]} buffer and from transcript buffers from previous S sessions directly to the GUI Commands window with the same Emacs key sequences as are used with ESS on Unix. Hence the user can work in a powerful editing environment and is protected from the delay and ergonomic challenges of using the mouse for copy and paste operations across windows. \paragraph{Interactive \SAS.} \stexttt{iESS[SAS]} is a mode that allows text-based \stexttt{PROC} by \stexttt{PROC} interaction with an inferior buffer running an interactive \SAS\ session on either the local or a remote computer. \stexttt{iESS[SAS]} mode works by redirecting standard input and output from \SAS\ to ESS. Currently, the \stexttt{iESS[SAS]} mode can run on any computer, but the \SAS\ process it is controlling must be running on a Unix machine. This process is very efficient for dial-up network connections to a remote computer with \SAS\ installed. The resulting interface is similar to the SAS character terminal interface, but with Emacs key sequences. %Rodney: What is this paragraph about? I'm going to comment it out %because I don't recognize what it is supposed to be. Maybe somebody %can fix it later. % % rmh: Round umpteen. Yes, this is redundant with the third paragraph % of interprocess communication. I still want it here. Try this rephrasing. % \stexttt{ESS[SAS]} mode can be used in conjunction with the \SAS\ Display Manager to allow simultaneous access to Emacs for editing \SAS\ language code and to the \SAS\ mouse-based interfaces to the graphical routines and help system. %%%%% AJR: WHY IS THIS SUBSTANTIALLY DIFFERENT THAN BATCH? I KNOW ITS %%%%% SLIGHTLY DIFFERENT, BUT SUBSTANTIALLY? %%%%% rmh: this is a form of interaction, not batch. I restored the %%%%% first paragraph with some expansion. %\paragraph{\SAS---Interactive cooperation with the \SAS\ Display Manager.} %ESS users who write data analysis code in \stexttt{ESS[SAS]} mode in Emacs %often need to work with the \SAS\ Display Manager's %mouse-based interface to the graphical %routines, the help system, and other non-text-based features. %%The authors of ESS prefer the Emacs environment for %%the text-file interaction with \SAS, that is with editing and %%managing input command files and output listing and log files, %%even on computer systems which run %%the \SAS\ Display Manager environment. %In this situation, the user %designs the command file in \stexttt{ESS[SAS]} mode and highlights %regions to be forwarded to \SAS\ for processing. %% %% Rodney: I don't see this as a feature of either ESS or emacs. And, %% what the authors prefer is certainly not germane. %% %% %% rmh: This is my preferred mode for interacting with SAS. I tried another %% rephrasing. It {\it is} a feature of ESS. ESS is able to provide ESS[SAS] %% mode for the text processing (.sas .lst. log files) and simultaneously %% let the user have interactive graphical access. %%This can be done by either: %%\begin{enumerate} %%\item copying and pasting the marked regions to the \SAS\ Editor window %% and then pressing the \stexttt{RUN} button. Highlighted sections of %% the \SAS\ Listing window are brought back to Emacs to be read in the %% \stexttt{ESSlst} mode editing environment. %%\item submitting the marked region for Batch File Processing (see the %% next section) but using the mapped key sequences to append to the log %% and listing files instead of replacing them. %%\end{enumerate} \subsection{Batch File Processing.} \label{sec:batch-file} Batch file processing with statistical analysis packages is a better choice than interactive processing when the execution times are longer than the user is willing to wait as well as for regularly updated statistical reports and figures. ESS provides a means to shorten the debugging cycle for writing code intended for batch evaluation by containing the whole process, both writing and evaluation, within Emacs. \paragraph{Batch \SAS.} \label{sec:sas-batch} \SAS\ is a popular choice for processing and analyzing large amounts of data. However, interactive \SAS\ is rarely used in these situations due to the length of time involved. Instead, a file containing \SAS\ commands is created and \SAS\ executes these commands in the background, or batch, while the user moves on to other activities. ESS facilitates \SAS\ batch with \stexttt{ESS[SAS]}, the mode for files with the \stexttt{sas} extension. ESS defines \SAS\ syntax so that \stexttt{font-lock-mode} can highlight statements, procedures, functions, macros, datasets, comments and character string literals in \SAS\ programs. Optionally, the same language features are highlighted in the \SAS\ log with the addition of log notes, warnings and error messages. For files with the \stexttt{sas} extension, ESS binds the function keys in \stexttt{ESS[SAS]} mode to match the definitions used by \SAS\ Display Manager. These definitions are optionally available in all modes. They are particularly useful when viewing \SAS\ log and listing files (with extensions of \stexttt{log} and \stexttt{lst} respectively). Only one function key press is needed to submit a \SAS\ batch process. Other function keys open the \SAS\ program, the \SAS\ log and the \SAS\ listing buffers. When accessed in this manner, the \SAS\ log and \SAS\ listing buffers are automatically updated since they may have been appended or over-written by the \SAS\ batch process. In addition, the \SAS\ log is searched for error messages and the error messages, if any, are sequentially displayed with consecutive key presses. Another function key opens a \SAS\ permanent dataset for editing or viewing. An option is provided so that the tab and return keys operate in typewriter fashion like they do in \SAS\ Display Manager. This option also defines a key to move the cursor to a previous tab-stop and delete any characters between its present position and the tab-stop. This is a \SAS\ Display Manager feature that is not typically available in Emacs. The \SAS\ batch process runs on the computer where the \SAS\ program resides. This is important because any \SAS\ permanent datasets referenced in a \SAS\ program only exist on the computer running \SAS. If the \SAS\ program resides on a remote computer, then the log and listing are also accessed remotely. The net result is that running \SAS\ batch on remote computers is nearly transparent to the ESS user. %\begin{Comment} %Rich's version: %\end{Comment} %The \SAS\ batch process can run on the same computer on which the %emacs session is running or it can run on a remote computer. For %remote jobs, files are transparently saved (with ftp or scp or kermit) %and the batch process is transparently submitted through a telnet or %ssh connection. %\begin{Comment} %Rich: I have some terminology quibbles here with how the term %``ESS-elsewhere'' is used with SAS BATCH. I think of S-elsewhere or %ESS-elsewhere as a trick to make a \stexttt{telnet-mode} buffer think %it is \stexttt{iESS-mode} buffer. %I don't think of file saving, editing, and retrieval as an example %of ESS-elsewhere. Neither is submission of the remote job; %that is just an ordinary shell command in an ordinary shell buffer. %M-x SAS probably is an example of ESS-elsewhere, but I %designed it before I thought of the ESS-elsewhere concept. %The initial idea behind S-elsewhere was to run an interactive S or S-Plus %session on a remote computer in telnet (or equivalent) buffer. The trick %was to make the \stexttt{telnet-mode} buffer accept C-c C-n and %related commands from the \stexttt{S-mode} buffers. Hence I had to %make the \stexttt{telnet-mode} buffer think it is \stexttt{iESS-mode} %buffer. The ``elsewhere'' part of the name is entirely related to a %different start up procedure. Once the connection is made, there is %{\em no} difference visible to the user. The buffer shows itself to %be an ordinary \stexttt{iESS} buffer. Tony generalized S-elsewhere %to ESS-elsewhere to allow other languages than S to be used %interactively. %I have been using ESS for SAS remote BATCH for years, ever since you %and I started working on this together. We initially defined %ess-sas-submit-method to encapsulate the location of the sas process. %Except for a few lines of elisp to get the connection started, the user %behavior has been identical whether the SAS process is on the same or %different machine. Since we are not interactively talking to the SAS %process in an inferior-ESS buffer I don't see this as ESS-elsewhere. %Rodney: Remote submissions of SAS batch jobs never worked. I only got %it to work a couple of weeks ago. The problem was with the cd command. %You need to ignore the beginning and end of the expanded buffer name %that are the ange-ftp/EFS/tramp stubs which tell Emacs what the remote %username and hostname are. I find the batch usage of ESS-elsewhere %entirely consistent with the interactive behavior. OTOH, I don't find %the terminology particularly illuminating. I think ESS-remote or %ESS-net would be more meaningful. %\end{Comment} \paragraph{Batch BUGS.} BUGS software performs Markov Chain Monte Carlo integration. There is an interactive capability, but it is not often used since the analyses can be very time-consuming. Most BUGS programs are executed as batch processes. ESS facilitates BUGS batch with \stexttt{ESS[BUGS]}, the mode for files with the \stexttt{bug} extension. ESS provides 4 features. First, BUGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in BUGS model files, command files and log files. Second, ESS creates templates for the command file from the model file so that a BUGS batch process can be defined by a single file. Third, ESS provides a BUGS batch script that allows ESS to set BUGS batch parameters. Finally, key sequences are defined to create a command file and submit a BUGS batch process. \paragraph{Batch S family.} ESS provides 2 facilities for batch processing of S family language files. The first is to execute the contents of a file using buffer-evaluation. This differs from interactive processing only by the number of commands being evaluated; errors can be found by examining the resulting transcript. The second is the load-source mechanism, which provides a means of jumping to errors in the source file, but doesn't display the evaluated commands in the transcript. These mechanisms provide different tools for debugging the source files. \section{History of ESS} \label{sec:ESS:history} ESS is built on Emacs, the editing system for which Richard Stallman won a MacArthur Foundation Fellowship in 1990. Emacs has a long history of being a programmer's editor. Many statisticians got their first taste of the power of Emacs with \Fortran\ mode which was introduced in 1986. As statisticians' preferences changed from generalist compiled languages such as \Fortran\ to specialist statistical analysis packages like S and \SAS, Emacs modes soon followed. The ESS environment is built on the open-source projects of many contributors, dating back over 10 years. Doug Bates and Ed Kademan wrote S-mode in 1989 to edit S and \Splus\ files in GNU Emacs. Frank Ritter and Mike Meyer added features, creating version 2. Meyer and David Smith made further contributions, creating version 3. For version 4, David Smith provided significant enhancements to allow for powerful process interaction. John Sall wrote GNU Emacs macros for \SAS\ source code around 1990. Tom Cook added functions to submit jobs, review listing and log files, and produce basic views of a dataset, thus creating a SAS-mode which was distributed in 1994. In 1994, A.J. Rossini extended S-mode to support XEmacs. Together with extensions written by Martin M{\"a}chler, this became version 4.7 and supported S, \Splus, and R. In 1995, Rossini extended SAS-mode to work with XEmacs. In 1997, Rossini merged S-mode and SAS-mode into a single Emacs package for statistical programming; the product of this marriage was called ESS version 5. Richard M. Heiberger designed the inferior mode for interactive \SAS\ and SAS-mode was further integrated into ESS. Thomas Lumley's Stata mode, written around 1996, was also folded into ESS. More changes were made to support additional statistical languages, particularly \XLispStat. ESS initially worked only with Unix statistics packages that used standard-input and standard-output for both the command-line interface and batch processing. ESS could not communicate with statistical packages that did not use this protocol. This changed in 1998 when Brian Ripley demonstrated use of the Windows Dynamic Data Exchange (DDE) protocol with ESS. Heiberger then used DDE to provide interactive interfaces for Windows versions of \Splus. In 1999, Rodney A. Sparapani and Heiberger implemented \SAS\ batch for ESS, which relies on files rather than standard-input/standard-output, on Unix, Windows and Mac. In 2001, Sparapani added BUGS batch file processing to ESS for Unix and Windows. This history is summarized in Table \ref{tab:timeline}. \begin{table}[tbp] \centering {\scriptsize \begin{tabular}{c ll c ll} \hline Year \\ \hline & \multicolumn{2}{c}{S-mode} && \multicolumn{2}{c}{SAS-mode} \\ \cline{2-3} \cline{5-6} 1989 & v.1 & (GNU Emacs, Unix, S/S+) && \\ 1990 & & && & (GNU Emacs, Unix, SAS editing) \\ 1991 & v.2 & (GNU Emacs, Unix, S/S+) && \\ 1993 & v.3 & (GNU Emacs, Unix, S/S+) && \\ 1994 & v.4 & (GNU Emacs/XEmacs, Unix, S/S+) && v.1 & (GNU Emacs, Unix, SAS batch) \\ 1995 & v.4.7 & (GNU Emacs/XEmacs, Unix, S/S+/R) && v.2 & (GNU Emacs/XEmacs, Unix, SAS batch) \\ \cline{2-6}\\[-3.5ex] \cline{2-6} & \multicolumn{5}{c}{Emacs Speaks Statistics (ESS)} \\ \cline{2-6} &\multicolumn{2}{c}{Emacs, Operating Systems} &&\multicolumn{2}{c}{Additional Functionality}\\ \cline{2-3} \cline{5-6} 1997 & v.5.0 & (GNU Emacs/XEmacs, Unix) &&& Stata, XLispStat, SAS interactive \\ 1998 & v.5.1.1 & (GNU Emacs/XEmacs, Unix/Windows) &&& S+elsewhere; Windows: S+/R\\ 1999 & v.5.1.10 & (GNU Emacs/XEmacs, Unix/Windows/Mac) &&& SAS batch; Omegahat \\ 2001 & v.5.1.19 & (GNU Emacs/XEmacs, Unix/Windows/Mac) &&& Unix/DOS: BUGS batch; Mac: R \\ %% 2002 & v.5.1.20 & (Emacs/XEmacs, Unix/Windows/Mac) &&& Unix/DOS: BUGS batch, Mac: R \\ %% 2002 & v.5.2 & (Emacs/XEmacs, Unix/Windows/Mac) &&& ? \\ \hline \end{tabular} } \caption{History and Ancestors of ESS} \label{tab:timeline} \end{table} %\section{Future Work} %%%There are two active areas of extensions for user environments. One %%%is to enhance the capabilities of the IDE for statistical practice; %%%this includes implementing such common IDE features as object %%%browsers, tool-tips, and interfacing cleaning. The other is to target %%%appropriate potentially useful programming methodologies for transfer %%%to statistical practice. %%% %%%Literate Programming methodologies \citep{Knuth:1992,NRamsey:1994} are %%%a natural fit for statistical practice. We refer to the application %%%to statistical analysis as Literate Statistical Practice %%%\citep{rossini:dsc:2001}. The tools used are Noweb %%%\citep{NRamsey:1994} and either \LaTeX, \textsc{html}, or \textsc{xml} %%%for documenting and explaining the analysis. This approach to %%%programming encourages the use of a literary documentation style to %%%explain the programming code for the data analysis. The program can %%%then be extracted from the documentation text for realizing the %%%statistical analysis. %%future enhancement perhaps %%ESS provides the same ESS-elsewhere support for BUGS batch %%that it does for \SAS\ batch (see above). %Important extensions which should be implemented in future %versions include class browsers, analysis templates, tool-tips, and %similar features. Class browsers can be thought of as a tree or %outline for presenting datasets, variables and functions in the %context of what they represent; this allows for rapid and appropriate %inspection. Analysis templates would allow statistics centers and %groups to provide standardized templates for initiating an analysis. %Additional statistical packages can easily be added to ESS. %%While most IDE features have been developed for object-oriented %%languages, the above also can apply to non-object oriented %%programming. %ESS is one of the first Rapid Application Development (RAD) %environments intended for statisticians. It provides \section{Conclusion} \label{sec:concl} ESS provides an enhanced, powerful interface for efficient interactive data analysis and statistical programming. It allows the user complete control over the communications among the files in which the analysis is specified, the statistical process doing the computation, and the output. Because all are within the same programming environment, and therefore are accessed with the same editing and searching concepts and the same key sequences, user efficiency is increased. It is completely customizable to satisfy individual desires for interface styles and can be extended to support other statistical languages and data analysis packages. %\begin{Comment} %Rich: see my discussion of ESS-elsewhere terminology. %What is the behavior for remote SAS that is new for 2002? %Rodney: SAS batch now works and Kermit was added as a method of transfer. %\end{Comment} %ESS-elsewhere provides interactive and batch processing %with \SAS\ running on a remote machine that is accessed over a %network. This provides a powerful development environment for \SAS. %%This %%includes support for syntax highlighting and template-based source file %%generation that provides the capability of specifying all the necessary %%parameters for a BUGS batch run in a single file. \bibliographystyle{plainnat} \pdfbookmark[1]{References}{section.7} %\addcontentsline {toc}{section}{\numberline {}References} \bibliography{ess-intro-graphs} \clearpage \appendix \section{Appendix: ESS Resources on the Internet} %\addcontentsline {toc}{section}{\numberline {}ESS Resources on the Internet} \label{sec:access} \paragraph{Latest Version.} ESS is constantly in flux. New versions of statistical packages, Emacs and operating systems require new releases of ESS to support them. The latest stable version of ESS can be found on the web at \url{http://www.analytics.washington.edu/downloads/ess/}. To get help with problems, send e-mail to \url{mailto: ess-help@stat.math.ethz.ch}. The latest development, hence unstable, version can be obtained by anonymous CVS. First type: \stexttt{cvs -d :pserver:anoncvs@cvs.analytics.washington.edu:/var/anoncvs login} You will be prompted for a password which is ``\stexttt{anoncvs}''. Then type: \stexttt{cvs -d :pserver:anoncvs@cvs.analytics.washington.edu:/var/anoncvs co ess} \paragraph{Additional documentation.} An expanded version of the present paper is in \citep{RMHHS:2001}. A general introduction and usage instructions can be found in \citep{heiberger:dsc:2001}; in addition, one which is more focused on \SAS\ can be found in \citep{heiberger:philasugi:2001}. The documentation that comes with ESS provides details of its implementation as well as examples of its use. \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: ess-17.11/doc/ess-manual.org0000644005071500004540000000510013202324173012557 00000000000000** Introduction to ESS *** Why should I use ESS? *** Overview of current features *** New features in ESS *** Authors of and contributors to ESS *** Getting the latest version of ESS *** How to read this manual ** Overview *** ESS features for the S family *** ESS for SAS *** ESS for BUGS *** ESS for JAGS ** Installing ESS on your system *** Requirements *** Unix (Linux / MacOS / Solaris / ...) Installation *** Microsoft Windows installation *** License *** Stability ** Customizing ESS ** ESS mode: editing source code *** Creating or modifying objects *** Loading source code into the ESS process *** Detecting errors in source files *** Indenting and formatting code **** Changing indentation styles *** Motion and completion *** Maintaining source files **** Names and locations of dump files *** Summary of ESS mode commands ** Inferior ESS mode: interacting with the ESS process *** Starting an ESS process **** Running multiple ESS processes **** ESS processes on Remote Computers **** S+elsewhere and ESS-elsewhere **** Changing the startup actions **** Is the Statistical Process running under ESS? **** Using emacsclient *** Interacting with the ESS process **** Entering commands and fixing mistakes **** Manipulating the transcript ***** Manipulating the output from the last command ***** Viewing older commands ***** Re-submitting commands from the transcript ***** Keeping a record of your S session **** Command History ***** References to historical commands ***** Saving the command history *** Summary of iESS commands ** Completion *** Completion of object names *** Completion of function arguments *** Minibuffer completion *** Integration with auto-complete package *** Icicles ** The help system *** ElDoc ** Transcript mode: manipulating saved ESS process sessions *** Resubmitting commands from the transcript file *** Cleaning transcript files ** Developing with ESS *** ESS tracebug *** Editing documentation **** Editing R documentation (Rd) files **** Editing Roxygen documentation *** ESS developer ** Other ESS features and tools *** Handy commands *** Syntactic highlighting of buffers *** Parenthesis matching *** Using graphics with ESS **** Using ESS with the @code{printer()} driver **** Using ESS with windowing devices **** Java Graphics Device *** Imenu *** Toolbar *** TAGS *** Rdired *** Rutils *** Interaction with Org mode *** Support for Sweave in ESS and AUCTeX ** Bugs and Bug Reporting, Mailing Lists *** Bugs *** Reporting Bugs *** Mailing Lists *** Help with emacs ** Indices *** Key index *** Function index *** Variable and program index *** Concept Index ess-17.11/doc/ess.texi0000644005071500004540000040737513202324173011512 00000000000000\input texinfo @c -*-texinfo-*- @comment %**start of header @setfilename ess.info @settitle ESS -- Emacs Speaks Statistics @comment %**end of header @synindex pg fn @include ess-defs.texi @titlepage @title ESS -- Emacs Speaks Statistics ESS version @ESSVER @c --- KEEP this synchronized with ./authors.texi : @c ~~~~~~~~~~~~~~ @author The ESS Developers (A.J. Rossini, R.M. Heiberger, K. Hornik, @author M. Maechler, R.A. Sparapani, S.J. Eglen, @author S.P. Luque, H. Redestig, V. Spinu and L. Henry) @c @author (Formerly by: Doug Bates, Ed Kademan, Frank Ritter @c @author and David Smith) @c @ifhtml @c


@c @end ifhtml @c @author Current Documentation by The ESS Developers @author Copyright @copyright{} 2002--2016 The ESS Developers @author Copyright @copyright{} 1996--2001 A.J. Rossini @author Original Documentation by David M. Smith @author Copyright @copyright{} 1992--1995 David M. Smith @c (@email{D.M.Smith@@lancaster.ac.uk}) @c @author Department of Mathematics and Statistics @c @author Lancaster University, UK @c @page @c @vskip 0pt plus 1filll @c @sp 2 @author Permission is granted to make and distribute verbatim copies of this @author manual provided the copyright notice and this permission notice are @author preserved on all copies. @author Permission is granted to copy and distribute modified versions of this @author manual under the conditions for verbatim copying, provided that the @author entire resulting derived work is distributed under the terms of a @author permission notice identical to this one. @end titlepage @contents @ifnottex @majorheading ESS --- Emacs Speaks Statistics @dircategory Emacs @direntry * ESS: (ess). Emacs Speaks Statistics (S/S+/R, SAS, BUGS/JAGS and Stata). @end direntry @node Top @top ESS: Emacs Speaks Statistics ESS version @include ../VERSION @display by A.J. Rossini, R.M. Heiberger, K. Hornik, M. Maechler, R.A. Sparapani, S.J. Eglen, S.P. Luque, H. Redestig, V. Spinu, and L. Henry. @end display @c (Formerly: Doug @c Bates, Ed Kademan, Frank Ritter and David Smith). @quotation Emacs Speaks Statistics (ESS) provides an intelligent, consistent interface between the user and the software. ESS interfaces with SAS, S-PLUS, R, BUGS/JAGS and other statistical analysis packages on Unix, Linux and Microsoft Windows. ESS is itself a package within the emacs text editor and uses emacs features to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages. @end quotation @end ifnottex @menu * Introduction:: Overview of features provided by this package * Installation:: Installing ESS on your system * Interactive ESS:: Interacting with statistical programs * Entering commands:: Interacting with the ESS process * Evaluating code:: Sending code to the ESS process * Transcript Mode:: Manipulating saved transcript files * Editing objects:: How to create/edit objects and functions * Help:: Reading help files * Completion:: Various completion mechanisms * Developing with ESS:: Tools for package development and debugging * Extras:: Other ESS features for the S family * ESS for S:: Overview of ESS features for the S family * ESS for SAS:: * ESS for BUGS:: * ESS for JAGS:: * Mailing lists/bug reports:: How to get assistance with ESS * Customization:: Customizing ESS * Indices:: @c @detailmenu @c @end menu @node Introduction @chapter Introduction to ESS @cindex introduction The S family (@Sl{}, Splus and R) and SAS statistical analysis packages provide sophisticated statistical and graphical routines for manipulating data. @b{E}macs @b{S}peaks @b{S}tatistics (ESS) is based on the merger of two pre-cursors, S-mode and SAS-mode, which provided support for the S family and SAS respectively. Later on, Stata-mode was also incorporated. ESS provides a common, generic, and useful interface, through emacs, to many statistical packages. It currently supports the S family, SAS, BUGS/JAGS, and Stata with the level of support roughly in that order. A bit of notation before we begin. @emph{emacs} refers to both @emph{GNU Emacs} by the Free Software Foundation, as well as @emph{XEmacs} by the XEmacs Project. The emacs major mode @code{ESS[language]}, where @code{language} can take values such as @code{S}, @code{SAS}, or @code{XLS}. The inferior process interface (the connection between emacs and the running process) referred to as inferior ESS (@code{iESS}), is denoted in the modeline by @code{ESS[dialect]}, where @code{dialect} can take values such as @code{S3}, @code{S4}, @code{S+3}, @code{S+4}, @code{S+5}, @code{S+6}, @code{S+7}, @code{R}, @code{XLS}, @code{VST}, @code{SAS}. Currently, the documentation contains many references to @cite{`S'} where actually any supported (statistics) language is meant, i.e., `S' could also mean `R' or `SAS'. @cindex interactive use of S @cindex using S interactively For exclusively interactive users of S, ESS provides a number of features to make life easier. There is an easy to use command history mechanism, including a quick prefix-search history. To reduce typing, command-line completion is provided for all @Sl{} objects and ``hot keys'' are provided for common @Sl{} function calls. Help files are easily accessible, and a paging mechanism is provided to view them. Finally, an incidental (but very useful) side-effect of ESS is that a transcript of your session is kept for later saving or editing. @cindex transcripts of S sessions No special knowledge of Emacs is necessary when using @Sl{} interactively under ESS. @cindex programming in S For those that use @Sl{} in the typical edit--test--revise cycle when programming @Sl{} functions, ESS provides for editing of @Sl{} functions in Emacs edit buffers. Unlike the typical use of @Sl{} where the editor is restarted every time an object is edited, ESS uses the current Emacs session for editing. In practical terms, this means that you can edit more than one function at once, and that the ESS process is still available for use while editing. Error checking is performed on functions loaded back into S, and a mechanism to jump directly to the error is provided. ESS also provides for maintaining text versions of your @Sl{} functions in specified source directories. @menu * Features:: Why should I use ESS? * New features:: * Credits:: Authors of and contributors to ESS * Latest version:: Getting the latest version of ESS * Manual:: How to read this manual @end menu @node Features @section Why should I use ESS? Statistical packages are powerful software systems for manipulating and analyzing data, but their user interfaces often leave something something to be desired: they offer weak editor functionality and they differ among themselves so markedly that you have to re-learn how to do those things for each package. ESS is a package which is designed to make editing and interacting with statistical packages more uniform, user-friendly and give you the power of emacs as well. @menu * Current Features:: @end menu @node Current Features @subsection Features Overview @include currfeat.texi ESS provides several features which make it easier to interact with the ESS process (a connection between your buffer and the statistical package which is waiting for you to input commands). These include: @itemize @bullet @item @b{Command-line editing} for fixing mistakes in commands before they are entered. The @samp{-e} flag for S-plus provides something similar to this, but here you have the full range of Emacs commands rather than a limited subset. However, other packages do not necessarily have features like this built-in. @xref{Command-line editing}. @item @b{Searchable command history} for recalling previously-submitted commands. This provides all the features of the @samp{Splus -e} history mechanism, plus added features such as history searching. @xref{Command History}. @item @b{Command-line completion} of both object and file names for quick entry. This is similar to @code{tcsh}'s facility for filenames; here it also applies to object names and list components. @xref{Completion}. @item @b{Hot-keys} for quick entry of commonly-used commands in `S' such as @code{objects()} and @code{search()}. @xref{Hot keys}. @item @b{Transcript recording} for a complete record of all the actions in an S session. @xref{Transcript}. @item @b{Interface to the help system}, with a specialized mode for viewing S help files. @xref{Help}. @end itemize If you commonly create or modify @Sl{} functions, you will have found the standard facilities for this (the @samp{fix()} function, for example) severely limiting. Using S's standard features, one can only edit one function at a time, and you can't continue to use @Sl{} while editing. ESS corrects these problems by introducing the following features: @itemize @bullet @item @b{Object editing}. ESS allows you to edit more than one function simultaneously in dedicated Emacs buffers. The ESS process may continue to be used while functions are being edited. @xref{Edit buffer}. @item @b{A specialized editing mode} for @Sl{} code, which provides syntactic indentation and highlighting. @xref{Indenting}. @item @b{Facilities for loading and error-checking source files}, including a keystroke to jump straight to the position of an error in a source file. @xref{Error Checking}. @item @b{Source code revision maintenance}, which allows you to keep historic versions of @Sl{} source files. @xref{Source Files}. @item @b{Facilities for evaluating @Sl{} code} such as portions of source files, or line-by-line evaluation of files (useful for debugging). @xref{Evaluating code}. @end itemize Finally, ESS provides features for re-submitting commands from saved transcript files, including: @itemize @bullet @item @b{Evaluation of previously entered commands}, stripping away unnecessary prompts. @xref{Transcript resubmit}. @end itemize @node New features @section New features in ESS @include newfeat.texi @comment @include onewfeat.texi @node Credits @section Authors of and contributors to ESS @include credits.texi @node Latest version @section Getting the latest version of ESS @include getting.texi @node Manual @section How to read this manual If you need to install ESS, read @ref{Installation} for details on what needs to be done before proceeding to the next chapter. In this manual we use the standard notation for describing the keystrokes used to invoke certain commands. @kbd{C-} means hold the CONTROL key while typing the character . @kbd{M-} means hold the META or EDIT or ALT key down while typing . If there is no META, EDIT or ALT key, instead press and release the ESC key and then type . All ESS commands can be invoked by typing @kbd{M-x command}. Most of the useful commands are bound to keystrokes for ease of use. Also, the most popular commands are also available through the emacs menubar, and finally, if available, a small subset are provided on the toolbar. Where possible, keybindings are similar to other modes in emacs to strive for a consistent user interface within emacs, regardless of the details of which programming language is being edited, or process being run. Some commands, such as @kbd{M-x R} can accept an optional `prefix' argument. To specify the prefix argument, you would type @kbd{C-u} before giving the command. e.g. If you type @kbd{C-u M-x R}, you will be asked for command line options that you wish to invoke the R process with. Emacs is often referred to as a `self-documenting' text editor. This applies to ESS in two ways. First, limited documentation about each ESS command can be obtained by typing @kbd{C-h f}. For example, if you type @kbd{C-h f ess-eval-region}, documentation for that command will appear in a separate *Help* buffer. Second, a complete list of keybindings that are available in each ESS mode and brief description of that mode is available by typing @kbd{C-h m} within an ESS buffer. Emacs is a versatile editor written in both C and lisp; ESS is written in the Emacs lisp dialect (termed `elisp') and thus benefits from the flexible nature of lisp. In particular, many aspects of ESS behaviour can be changed by suitable customization of lisp variables. This manual mentions some of the most frequent variables. A full list of them however is available by using the Custom facility within emacs. (Type @kbd{M-x customize-group RET ess RET} to get started.) @ref{Customization} provides details of common user variables you can change to customize ESS to your taste, but it is recommended that you defer this section until you are more familiar with ESS. @node Installation @chapter Installing ESS on your system @cindex installation The following section details those steps necessary to get ESS running on your system. @menu * Step by step instructions:: * License:: * Stability:: * Requirements:: @end menu @c FIXME: the following contains @node s *and* is also included by readme.texi @c ----- which does *not* include 'requires.texi' @c ==> *must* give node pointer problems! @c @include inst_tar.texi @node Step by step instructions @section Step by step instructions @include installation.texi @node License @section License @include license.texi @node Stability @section Stability @include stabilty.texi @node Requirements @section Requirements @include requires.texi @node Interactive ESS @chapter Interacting with statistical programs As well as using ESS to edit your source files for statistical programs, you can use ESS to run these statistical programs. In this chapter, we mostly will refer by example to running S from within emacs. The emacs convention is to name such processes running under its control as `inferior processes'. This term can be slightly misleading, in which case these processes can be thought of `interactive processes'. Either way, we use the term `iESS' to refer to the Emacs mode used to interact with statistical programs. @menu * Starting up:: * Multiple ESS processes:: * ESS processes on Remote Computers:: * S+elsewhere and ESS-elsewhere:: * Customizing startup:: @end menu @node Starting up @section Starting an ESS process @cindex starting ESS @cindex running S To start an @Sl{} session on Unix or on Windows when you use the Cygwin bash shell, simply type @kbd{M-x S RET}. To start an @Sl{} session on Windows when you use the MSDOS prompt shell, simply type @kbd{M-x S+6-msdos RET}. @pindex S @cindex ESS process directory @cindex starting directory @cindex working directory @cindex directories S will then (by default) ask the question @example S starting data directory? @end example @noindent Enter the name of the directory you wish to start @Sl{} from (that is, the directory you would have @code{cd}'d to before starting @Sl{} from the shell). This directory should have a @file{.Data} subdirectory. You will then be popped into a buffer @cindex ESS process buffer @cindex process buffer with name @samp{*S*} which will be used for interacting with the ESS process, and you can start entering commands. @node Multiple ESS processes @section Running more than one ESS process @cindex multiple ESS processes ESS allows you to run more than one ESS process simultaneously in the same session. Each process has a name and a number; the initial process @cindex process names (process 1) is simply named (using S-PLUS as an example) @samp{S+3:1}. @comment You may start a new process by passing a numeric argument to @comment @kbd{M-x S}. For example, typing @kbd{ESC 2 M-x S} starts up @comment an ESS process with name @samp{S2}, in a buffer whose name @comment is initially @samp{*S2*}. The name of the process is shown in the mode line in square brackets (for example, @samp{[S+3:2]}); this is useful if the process buffer is renamed. Without a prefix argument, @kbd{M-x S} starts a new ESS process, using the first available process number. With a prefix argument (for R), @kbd{C-u M-x R} allows for the specification of command line options. @findex ess-request-a-process You can switch to any active ESS process with the command @samp{M-x ess-request-a-process}. Just enter the name of the process you require; completion is provided over the names of all running S processes. This is a good command to consider binding to a global key. @c SJE - commented outl the default behaviour now is to label *S* rather @c than *S:1*. @c @vindex ess-plain-first-buffername @c For the predecessor to ESS (S-mode 4.8), the initial process was not @c visibly numbered, i.e. S instead of S1 was used in the mode-line. To @c obtain this behavior, set the variable @code{ess-plain-first-buffername} @c to @code{t}. See @file{ess-site} for how to set this for all users. @node ESS processes on Remote Computers @section ESS processes on Remote Computers @findex ess-remote @cindex remote Computers @cindex ESS-elsewhere @cindex S+elsewhere ESS works with processes on remote computers as easily as with processes on the local machine. The recommended way to access a statistical program on remote computer is to start it with tramp. Require tramp in your .emacs file: @code{(require 'tramp)} Now start an ssh session with @samp{C-x C-f /ssh:user@@host: RET}. Tramp should open a dired buffer in your remote home directory. Now call your favorite ESS process (@code{R}, @code{Julia}, @code{stata} etc) as you would usually do on local machine: @code{M-x R}. Alternatively you can start your process normally (@code{M-x R}). After you are asked for starting directory, simply type @samp{/ssh:user@@host: RET}. R process will be started on the remote machine. To simplify the process even further create a "config" file in your @code{.ssh/} folder and add an account. For example if you use amazon EC2, it might look like following: @verbatim Host amazon Hostname ec2-54-215-203-181.us-west-1.compute.amazonaws.com User ubuntu IdentityFile ~/.ssh/my_amazon_key.pem ForwardX11 yes @end verbatim With this configuration @code{/ssh:amazon:} is enough to start a connection. The ForwardX11 is needed if you want to see R graphic device showing on the current machine Other ways to setup a remote ESS connection are through @code{ess-remote}. @enumerate @item Start a new shell, telnet or ssh buffer and connect to the remote computer (e.g. use, @samp{M-x shell}, @samp{M-x telnet} or @samp{M-x ssh}; ssh.el is available at @uref{http://www.splode.com/~friedman/software/emacs-lisp/src/ssh.el}). @item Start the ESS process on the remote machine, for example with one of the commands @samp{Splus}, or @samp{R}, or @samp{sas -stdio}. @item Start @samp{M-x ess-remote}. You will be prompted for a program name with completion. Choose one. Your process is now known to ESS. All the usual ESS commands (@samp{C-c C-n} and its relatives) now work with the S language processes. For SAS you need to use a different command @samp{C-c i} (that is a regular @samp{i}, not a @samp{C-i}) to send lines from your @file{myfile.sas} to the remote SAS process. @samp{C-c i} sends lines over invisibly. @c and lets SAS display them formatted correctly as in a SAS log file. With ess-remote you get teletype behavior---the data input, the log, and the listing all appear in the same buffer. To make this work, you need to end every PROC and DATA step with a "RUN;" statement. The "RUN;" statement is what tells SAS that it should process the preceding input statements. @item Graphics (interactive) on the remote machine. If you run X11 (@xref{X11}, X Windows) on both the local and remote machines then you should be able to display the graphs locally by setting the @samp{DISPLAY} environment variable appropriately. Windows users can download @samp{xfree86} from cygwin. @item Graphics (static) on the remote machine. If you don't run the X window system on the local machine, then you can write graphics to a file on the remote machine, and display the file in a graphics viewer on the local machine. Most statistical software can write one or more of postscript, GIF, or JPEG files. Depending on the versions of emacs and the operating system that you are running, emacs itself may display @samp{.gif} and @samp{.jpg} files. Otherwise, a graphics file viewer will be needed. Ghostscript/ghostview may be downloaded to display @samp{.ps} and @samp{.eps} files. Viewers for GIF and JPEG are usually included with operating systems. @xref{ESS(SAS)--Function keys for batch processing}, for more information on using the F12 key for displaying graphics files with SAS. @end enumerate Should you or a colleague inadvertently start a statistical process in an ordinary @samp{*shell*} buffer, the @samp{ess-remote} command can be used to convert it to an ESS buffer and allow you to use the ESS commands with it. We have two older commands, now deprecated, for accessing ESS processes on remote computers. @xref{S+elsewhere and ESS-elsewhere}. @node S+elsewhere and ESS-elsewhere @section S+elsewhere and ESS-elsewhere These commands are now deprecated. We recommend @samp{ess-remote}. We have two versions of the elsewhere function. @samp{S+elsewhere} is specific for the S-Plus program. The more general function @samp{ESS-elsewhere} is not as stable. @enumerate @item Enter @samp{M-x S+elsewhere}. You will be prompted for a starting directory. I usually give it my project directory on the local machine, say @samp{~myname/myproject/} Or enter @samp{M-x ESS-elsewhere}. You will be prompted for an ESS program and for a starting directory. I usually give it my project directory on the local machine, say @samp{~myname/myproject/} @item The @samp{*S+3*} buffer will appear with a prompt from the local operating system (the unix prompt on a unix workstation or with cygwin bash on a PC, or the msdos prompt on a PC without bash). emacs may freeze because the cursor is at the wrong place. Unfreeze it with @samp{C-g} then move the cursor to the end with @samp{M->}. With @samp{S+elsewhere} the buffer name is based on the name of the ESS program. @item Enter @samp{telnet myname@@other.machine} (or @samp{ssh myname@@other.machine}). You will be prompted for your password on the remote machine. Use @samp{M-x send-invisible} before typing the password itself. @item Before starting the ESS process, type @samp{stty -echo nl} at the unix prompt. The @samp{-echo} turns off the echo, the @samp{nl} turns off the newline that you see as @samp{^M}. @item You are now talking to the unix prompt on the other machine in the @samp{*S+3*} buffer. cd into the directory for the current project and start the ESS process by entering @samp{Splus} or @samp{R} or @samp{sas -stdio} as appropriate. If you can login remotely to your Windows 2000, then you should be able to run @samp{Sqpe} on the Windows machine. I haven't tested this and no-one has reported their tests to me. You will not be able to run the GUI through this text-only connection. @item Once you get the S or R or SAS prompt, then you are completely connected. All the @samp{C-c C-n} and related commands work correctly in sending commands from @samp{myfile.s} or @samp{myfile.r} on the PC to the @samp{*S+3*} buffer running the S or R or SAS program on the remote machine. @item Graphics on the remote machine works fine. If you run the X window system on the remote unix machine you should be able to display them in @samp{xfree86} on your PC. If you don't run X Windows, or X11, then you can write graphics to the postscript device and copy it to your PC with dired and display it with ghostscript. @end enumerate @node Customizing startup @section Changing the startup actions If you do not wish ESS to prompt for a starting directory when starting a new process, set the variable @code{ess-ask-for-ess-directory} to @vindex ess-ask-for-ess-directory @code{nil}. In this case, the starting directory will be set using one of the following methods: @enumerate @item If the variable @code{ess-directory-function} stores the name of a function, the value returned by this function is used. The default for this variable is nil. @item Otherwise, if the variable @code{ess-directory} stores the name of a directory (ending in a slash), this value is used. The default for this variable is nil. @item Otherwise, the working directory of the current buffer is used. @end enumerate If @code{ess-ask-for-ess-directory} has a non-@code{nil} value (as it does by default) then the value determined by the above rules provides the default when prompting for the starting directory. Incidentally, @code{ess-directory} is an ideal variable to set in @code{ess-pre-run-hook}. If you like to keep a record of your @Sl{} sessions, set the variable @code{ess-ask-about-transfile} to @code{t}, and you will be asked for a filename for the transcript before the ESS process starts. @defvr {User Option} ess-ask-about-transfile If non-@code{nil}, as for a file name in which to save the session transcript. @end defvr @cindex transcript file Enter the name of a file in which to save the transcript at the prompt. If the file doesn't exist it will be created (and you should give it a file name ending in @samp{.St}); if the file already exists the transcript will be appended to the file. (Note: if you don't set this variable but you still want to save the transcript, you can still do it later --- @pxref{Saving transcripts}.) Once these questions are answered (if they are asked at all) the S process itself is started by calling the program name specified in the variable @code{inferior-ess-program}. @vindex inferior-ess-program If you need to pass any arguments to this program, they may be specified in the variable @code{inferior-@var{S_program_name}-args} (e.g. if @code{inferior-ess-program} is @code{"S+"} then the variable to set is @code{inferior-S+-args}. @cindex arguments to S program It is not normally necessary to pass arguments to the @Sl{} program; in particular do not pass the @samp{-e} option to @code{Splus}, since ESS provides its own command history mechanism. By default, the new process will be displayed in the same window in the current frame. If you wish your S process to appear in a separate variable, customize the variable @code{inferior-ess-own-frame}. Alternatively, change @code{inferior-ess-same-window} if you wish the process to appear within another window of the current frame. @node Entering commands @chapter Interacting with the ESS process @cindex entering commands @cindex commands @cindex sending input The primary function of the ESS package is to provide an easy-to-use front end to the @Sl{} interpreter. This is achieved by running the S process from within an Emacs buffer, called hereafter @emph{inferior} buffer, which has an active @code{inferior-ess-mode}. The features of Inferior @Sl{} mode are similar to those provided by the standard Emacs shell mode (@pxref{Shell Mode,,, emacs, The Gnu Emacs Reference Manual}). Command-line completion of @Sl{} objects and a number of `hot keys' for commonly-used @Sl{} commands are also provided for ease of typing. @menu * Command-line editing:: Entering commands and fixing mistakes * Transcript:: Manipulating the transcript * Command History:: Command History * History expansion:: References to historical commands * Hot keys:: Hot keys for common commands * Statistical Process running in ESS?:: * Emacsclient:: Using emacsclient * Other:: Other commands provided by inferior-ESS @end menu @node Command-line editing @section Entering commands and fixing mistakes @cindex command-line editing Sending a command to the ESS process is as simple as typing it in and pressing the @key{RETURN} key: @deffn Command inferior-ess-send-input @kindex RET @kbd{RET} Send the command on the current line to the ESS process. @end deffn If you make a typing error before pressing @kbd{RET} all the usual Emacs editing commands are available to correct it (@pxref{Basic, Basic, Basic editing commands, emacs, The GNU Emacs Reference Manual}). Once the command has been corrected you can press @key{RETURN} (even if the cursor is not at the end of the line) to send the corrected command to the ESS process. Emacs provides some other commands which are useful for fixing mistakes: @table @kbd @item C-c C-w @findex backward-kill-word @code{backward-kill-word} Deletes the previous word (such as an object name) on the command line. @item C-c C-u @findex comint-kill-input @code{comint-kill-input} Deletes everything from the prompt to point. Use this to abandon a command you have not yet sent to the ESS process. @item C-c C-a @findex comint-bol @code{comint-bol} Move to the beginning of the line, and then skip forwards past the prompt, if any. @end table @xref{Shell Mode,,, emacs, The Gnu Emacs Reference Manual}, for other commands relevant to entering input. @node Transcript @section Manipulating the transcript Most of the time, the cursor spends most of its time at the bottom of the ESS process buffer, entering commands. However all the input and output from the current (and previous) ESS sessions is stored in the process buffer (we call this the transcript) and often we want to @cindex transcript move back up through the buffer, to look at the output from previous commands for example. Within the process buffer, a paragraph @cindex paragraphs in the process buffer is defined as the prompt, the command after the prompt, and the output from the command. Thus @kbd{M-@{} and @kbd{M-@}} move you backwards and forwards, respectively, through commands in the transcript. A particularly useful command is @kbd{M-h} (@code{mark-paragraph}) which will allow you to mark a command and its entire output (for deletion, perhaps). For more information about paragraph commands, @pxref{Paragraphs, Paragraphs, Paragraphs, emacs, The GNU Emacs Reference Manual}. If an ESS process finishes and you restart it in the same process buffer, the output from the new ESS process appears after the output from the first ESS process separated by a form-feed (@samp{^L}) character. Thus pages in the ESS @cindex pages in the process buffer process buffer correspond to ESS sessions. Thus, for example, you may use @kbd{C-x [} and @kbd{C-x ]} to move backward and forwards through ESS sessions in a single ESS process buffer. For more information about page commands, @pxref{Pages, Pages, Pages, emacs, The GNU Emacs Reference Manual}. @menu * Last command:: Manipulating the output from the last command * Process buffer motion:: Viewing older commands * Transcript resubmit:: Re-submitting commands from the transcript * Saving transcripts:: Keeping a record of your S session @end menu @node Last command @subsection Manipulating the output from the last command Viewing the output of the command you have just entered is a common occurrence and ESS provides a number of facilities for doing this. @c Within the ESS process buffer, the variable @code{scroll-step} @c @vindex scroll-step @c is set to 4 (you can redefine this using @code{inferior-ess-mode-hook} @c @vindex inferior-ess-hook @c if you wish - @pxref{Hooks},) so that the cursor is usually near the @c bottom of the window. Whenever a command produces a longish output, it is possible that the window will scroll, leaving the next prompt near the middle of the window. The first part of the command output may have scrolled off the top of the window, even though the entire output would fit in the window if the prompt were near the bottom of the window. If this happens, you can use the following comint commands: @code{comint-show-maximum-output} to move to the end of the buffer, and place cursor on bottom line of window to make more of the last output visible. To make this happen automatically for all inputs, set the variable @code{comint-scroll-to-bottom-on-input} to @code{t} or @code{'this}. If the first part of the output is still not visible, use @cindex reading long command outputs @kbd{C-c C-r} (@code{comint-show-output}), @findex comint-show-output which moves cursor to the previous command line and places it at the top of the window. Finally, if you want to discard the last command output altogether, use @cindex deleting output @kbd{C-c C-o} (@code{comint-delete-output}), @findex comint-delete-output which deletes everything from the last command to the current prompt. Use this command judiciously to keep your transcript to a more manageable size. @node Process buffer motion @subsection Viewing older commands If you want to view the output from more historic commands than the previous command, commands are also provided to move backwards and forwards through previously entered commands in the process buffer: @table @kbd @item C-c C-p @findex comint-previous-input @code{comint-previous-input} Moves point to the preceding command in the process buffer. @item C-c C-n @findex comint-next-input @code{comint-next-input} Moves point to the next command in the process buffer. @end table @noindent Note that these two commands are analogous to @kbd{C-p} and @kbd{C-n} but apply to command lines rather than text lines. And just like @kbd{C-p} and @kbd{C-n}, passing a prefix argument to these commands means to move to the @var{ARG}'th next (or previous) command. (These commands are also discussed in @ref{Shell History Copying,,Shell History Copying,emacs, The GNU Emacs Reference Manual}.) There are also two similar commands (not bound to any keys by default) which move to preceding or succeeding commands, but which first prompt for a regular expression (@pxref{Regexps,,Syntax of Regular Expression,emacs, The GNU Emacs Reference Manual}), and then moves to the next (previous) command matching the pattern. @table @code @item comint-backward-matching-input regexp arg @findex comint-backward-matching-input @itemx comint-forward-matching-input regexp arg @findex comint-forward-matching-input Search backward (forward) through the transcript buffer for the @var{arg}'th previous (next) command matching @var{regexp}. @var{arg} is the prefix argument; @var{regexp} is prompted for in the minibuffer. @end table @node Transcript resubmit @subsection Re-submitting commands from the transcript When moving through the transcript, you may wish to re-execute some of the commands you find there. ESS provides three commands to do this; these commands may be used whenever the cursor is within a command line in the transcript (if the cursor is within some command @emph{output}, an error is signalled). Note all three commands involve the @key{RETURN} key. @table @kbd @item RET @code{inferior-ess-send-input} @xref{Command-line editing}. @item C-c RET @findex comint-copy-old-input @code{comint-copy-old-input} Copy the command under the cursor to the current command line, but don't execute it. Leaves the cursor on the command line so that the copied command may be edited. @end table When the cursor is not after the current prompt, the @key{RETURN} key has a slightly different behavior than usual. Pressing @kbd{RET} on any line containing a command that you entered (i.e. a line beginning with a prompt) sends that command to the ESS process once again. If you wish to edit the command before executing it, use @kbd{C-c RET} instead; it copies the command to the current prompt but does not execute it, allowing you to edit it before submitting it. These commands work even if the current line is a continuation line (i.e. the prompt is @samp{+} instead of @samp{>}) --- in this case all the lines that form the multi-line command are concatenated together and the resulting command is sent to the ESS process (currently this is the only way to resubmit a multi-line command to the ESS process in one go). If the current line does @cindex multi-line commands, resubmitting not begin with a prompt, an error is signalled. This feature, coupled with the command-based motion commands described above, could be used as a primitive history mechanism. ESS provides a more sophisticated mechanism, however, which is described in @ref{Command History}. @node Saving transcripts @subsection Keeping a record of your S session To keep a record of your @Sl{} session in a disk file, use the Emacs command @kbd{C-x C-w} (@code{write-file}) to attach a file to the ESS process buffer. The name of the process buffer will (probably) change to the name of the file, but this is not a problem. You can still use @Sl{} as usual; just remember to save the file before you quit Emacs with @kbd{C-x C-s}. You can make ESS prompt you for a filename in which to save the transcript every time you start @Sl{} by setting the variable @vindex ess-ask-about-transfile @code{ess-ask-about-transfile} to @code{t}; @xref{Customizing startup}. @cindex transcript file names We recommend you save your transcripts with filenames that end in @samp{.St}. There is a special mode (ESS transcript mode --- @pxref{Transcript Mode}) for editing transcript files which is automatically selected for files with this suffix. @cindex editing transcripts S transcripts can get very large, so some judicious editing is appropriate if you are saving it in a file. Use @kbd{C-c C-o} whenever a command produces excessively long output (printing large arrays, for example). Delete erroneous commands (and the resulting error messages or other output) by moving to the command (or its output) and typing @kbd{M-h C-w}. Also, remember that @kbd{C-c C-x} (and other hot keys) may be used for commands whose output you do not wish to appear in the transcript. These suggestions are appropriate even if you are not saving your transcript to disk, since the larger the transcript, the more memory your Emacs process will use on the host machine. Finally, if you intend to produce @Sl{} source code (suitable for using with @code{source()} or inclusion in an @Sl{} function) from a transcript, then the command @code{ess-transcript-clean-region} may be of use. @pxref{Clean, Transcript Mode} @node Command History @section Command History @cindex command history @cindex editing commands @cindex re-executing commands ESS provides easy-to-use facilities for re-executing or editing previous commands. An input history of the last few commands is maintained (by default the last 500 commands are stored, although this can be changed by setting the variable @code{comint-input-ring-size} in @vindex comint-input-ring-size @code{inferior-ess-mode-hook}.) The simplest history commands simply select the next and previous commands in the input history: @table @kbd @item M-p @findex comint-previous-input @code{comint-previous-input} Select the previous command in the input history. @item M-n @findex comint-next-input @code{comint-next-input} Select the next command in the input history. @end table @noindent For example, pressing @kbd{M-p} once will re-enter the last command into the process buffer after the prompt but does not send it to the ESS process, thus allowing editing or correction of the command before the ESS process sees it. Once corrections have been made, press @kbd{RET} to send the edited command to the ESS process. If you want to select a particular command from the history by matching it against a regular expression (@pxref{Regexps,,Syntax of Regular Expression,emacs, The GNU Emacs Reference Manual}), to search for a particular variable name for example, these commands are also available: @table @kbd @item M-r @findex comint-history-isearch-backward-regexp @code{comint-history-isearch-backward-regexp} Prompt for a regular expression, and search backwards through the input history for a command matching the expression. @c @item M-s @c @findex comint-next-matching-input @c @code{comint-next-matching-input} Prompt for a regular expression, and @c search backwards through the input history for a command matching the @c expression. @end table @noindent A common type of search is to find the last command that began with a particular sequence of characters; the following two commands provide an easy way to do this: @table @kbd @item C-c M-r @findex comint-previous-matching-input-from-input @code{comint-previous-matching-input-from-input} Select the previous command in the history which matches the string typed so far. @item C-c M-s @findex comint-next-matching-input-from-input @code{comint-next-matching-input-from-input} Select the next command in the history which matches the string typed so far. @end table @noindent Instead of prompting for a regular expression to match against, as they instead select commands starting with those characters already entered. For instance, if you wanted to re-execute the last @code{attach()} command, you may only need to type @kbd{att} and then @kbd{C-c M-r} and @kbd{RET}. @xref{Shell Ring,,Shell History Ring,emacs, The GNU Emacs Reference Manual}, for a more detailed discussion of the history mechanism, and do experiment with the @code{In/Out} menu to explore the possibilities. Many ESS users like to have even easier access to these, and recommend to add something like @example (eval-after-load "comint" '(progn (define-key comint-mode-map [up] 'comint-previous-matching-input-from-input) (define-key comint-mode-map [down] 'comint-next-matching-input-from-input) ;; also recommended for ESS use -- (setq comint-scroll-to-bottom-on-output 'others) (setq comint-scroll-show-maximum-output t) ;; somewhat extreme, almost disabling writing in *R*, *shell* buffers above prompt: (setq comint-scroll-to-bottom-on-input 'this) )) @end example to your @file{.emacs} file, where the last two settings are typically desirable for the situation where you work with a script (e.g., @file{code.R}) and send code chunks to the process buffer (e.g. @code{*R*}). Note however that these settings influence all @code{comint}-using emacs modes, not just the ESS ones, and for that reason, these customization cannot be part of @code{ESS} itself. @menu * Saving History:: @end menu @node Saving History @subsection Saving the command history The @code{ess-history-file} variable, which is @code{t} by default, together with @code{ess-history-directory}, governs if and where the command history is saved and restored between sessions. By default, @code{ess-history-directory} is @code{nil}, and the command history will be stored (as text file) in the @code{ess-directory}, e.g., as @file{.Rhistory}. Experienced ESS users often work exclusively with script files rather than in a (e.g., @code{*R}) console session, and may not want to save any history files, and hence have: @smallexample (setq ess-history-file nil) @end smallexample @noindent or will only want one global command history file and have: @smallexample (setq ess-history-directory "~/.R/") @end smallexample @noindent in your @file{.emacs} file. @node History expansion @section References to historical commands Instead of searching through the command history using the command described in the previous section, you can alternatively refer to a historical command directly using a notation very similar to that used in @code{csh}. History references are introduced by a @samp{!} or @samp{^} character and have meanings as follows: @table @samp @item !! The immediately previous command @item !-@var{N} The @var{N}th previous command @item !text The last command beginning with the string @samp{text} @item !?text The last command containing the string @samp{text} @end table In addition, you may follow the reference with a @dfn{word designator} to select particular @dfn{words} of the input. A word is defined as a sequence of characters separated by whitespace. (You can modify this definition by setting the value of @code{comint-delimiter-argument-list} to a list of characters that are allowed to separate words and @vindex comint-delimiter-argument-list themselves form words.) Words are numbered beginning with zero. The word designator usually begins with a @samp{:} (colon) character; however it may be omitted if the word reference begins with a @samp{^}, @samp{$}, @samp{*} or @samp{-}. If the word is to be selected from the previous command, the second @samp{!} character can be omitted from the event specification. For instance, @samp{!!:1} and @samp{!:1} both refer to the first word of the previous command, while @samp{!!$} and @samp{!$} both refer to the last word in the previous command. The format of word designators is as follows: @table @samp @item 0 The zeroth word (i.e. the first one on the command line) @item @var{n} The @var{n}th word, where @var{n} is a number @item ^ The first word (i.e. the second one on the command line) @item $ The last word @item @var{x}-@var{y} A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}} @item * All the words except the zeroth word, or nothing if the command had just one word (the zeroth) @item @var{x}* Abbreviates @var{x}-$ @item @var{x}- Like @samp{@var{x}*}, but omitting the last word @end table In addition, you may surround the entire reference except for the first @samp{!} by braces to allow it to be followed by other (non-whitespace) characters (which will be appended to the expanded reference). Finally, ESS also provides quick substitution; a reference like @samp{^old^new^} means ``the last command, but with the first occurrence of the string @samp{old} replaced with the string @samp{new}'' (the last @samp{^} is optional). Similarly, @samp{^old^} means ``the last command, with the first occurrence of the string @samp{old} deleted'' (again, the last @samp{^} is optional). To convert a history reference as described above to an input suitable for S, you need to @dfn{expand} the history reference, using the @key{TAB} key. For this to work, the cursor must be preceded by a space (otherwise it would try to complete an object name) and not be within a string (otherwise it would try to complete a filename). So to expand the history reference, type @kbd{SPC TAB}. This will convert the history reference into an @Sl{} command from the history, which you can then edit or press @key{RET} to execute. For example, to execute the last command that referenced the variable @code{data}, type @kbd{!?data SPC TAB RET}. @node Hot keys @section Hot keys for common commands ESS provides a number of commands for executing the commonly used functions. These commands below are basically information-gaining commands (such as @code{objects()} or @code{search()}) which tend to clutter up your transcript and for this reason some of the hot keys display their output in a temporary buffer instead of the process buffer by default. This behavior is controlled by the following option: @defvr {User Option} ess-execute-in-process-buffer If non-@code{nil}, means that these commands will produce their output in the process buffer instead. @end defvr In any case, passing a prefix argument to the commands (with @kbd{C-u}) will reverse the meaning of @code{ess-execute-in-process-buffer} for that command, i.e. the output will be displayed in the process buffer if it usually goes to a temporary buffer, and vice-versa. These are the hot keys that behave in this way: @deffn Command ess-execute-objects @var{posn} @kindex C-c C-x @pindex objects() @cindex objects @kbd{C-c C-x} Sends the @code{objects()} command to the ESS process. A prefix argument specifies the position on the search list (use a negative argument to toggle @code{ess-execute-in-process-buffer} as well). A quick way to see what objects are in your working directory. A prefix argument of 2 or more means get objects for that position. A negative prefix argument @var{posn} gets the objects for that position, as well as toggling @code{ess-execute-in-process-buffer}. @end deffn @deffn Command ess-execute-search @var{invert} @kindex C-c C-s @pindex search() @cindex search list @kbd{C-c C-s} Sends the @code{inferior-ess-search-list-command} command to the @code{ess-language} process; @code{search()} in S. Prefix @var{invert} toggles @code{ess-execute-in-process-buffer}. @end deffn @code{ess-execute} may seem pointless when you could just type the command in anyway, but it proves useful for `spot' calculations which would otherwise clutter your transcript, or for evaluating an expression while partway through entering a command. You can also use this command to generate new hot keys using the Emacs keyboard macro facilities; @pxref{Keyboard Macros, Keyboard Macros, Keyboard Macros, emacs, The GNU Emacs Reference Manual}. @cindex hot keys @cindex keyboard short cuts The following hot keys do not use @code{ess-execute-in-process-buffer} to decide where to display the output --- they either always display in the process buffer or in a separate buffer, as indicated: @c @deffn Command ess-execute-attach @var{dir} @var{posn} @c @pindex attach() @c Prompts for a directory @var{dir} to attach to the ESS process with the @c @code{attach()} command. If a numeric prefix argument @var{posn} is @c given, it is used as the position on the search list to attach the @c directory; otherwise the @Sl{} default of 2 is used. The @c @code{attach()} command actually executed appears in the process buffer. @c @end deffn @deffn Command ess-load-file @var{filename} @kindex C-c C-l @kbd{C-c C-l} Prompts for a file (@var{filename}) to load into the ESS process using @code{source()}. If there is an error during loading, you can jump to the error in the file with the following function. @end deffn @deffn Command ess-parse-errors @var{arg} @var{reset} @kindex C-x ` @kindex C-c ` @kbd{C-c `} or @kbd{C-x `} Visits next @code{next-error} message and corresponding source code. If all the error messages parsed so far have been processed already, the message buffer is checked for new ones. A prefix @var{arg} specifies how many error messages to move; negative means move back to previous error messages. Just @kbd{C-u} as a prefix means reparse the error message buffer and start at the first error. The @var{reset} argument specifies restarting from the beginning. @xref{Error Checking}, for more details. @end deffn @deffn Command ess-display-help-on-object @var{object} @var{command} @kindex C-c C-v @kbd{C-c C-v} Pops up a help buffer for an @Sl{} @var{object} or function. If @var{command} is supplied, it is used instead of @code{inferior-ess-help-command}. See @ref{Help} for more details. @end deffn @deffn Command ess-quit @kindex C-c C-q @pindex q() @findex ess-cleanup @cindex quitting from ESS @cindex killing the ESS process @cindex cleaning up @cindex temporary buffers, killing @cindex killing temporary buffers @kbd{C-c C-q} Issue an exiting command to the inferior process, additionally also running @code{ess-cleanup} for disposing of any temporary buffers (such as help buffers and edit buffers) that may have been created. Use this command when you have finished your @Sl{} session instead of simply quitting at the inferior process prompt, otherwise you will need to issue the command @code{ess-cleanup} explicitly to make sure that all the files that need to be saved have been saved, and that all the temporary buffers have been killed. @end deffn @node Statistical Process running in ESS? @section Is the Statistical Process running under ESS? @cindex STERM @pindex STERM For the S languages (S, S-Plus, R) ESS sets an option in the current process that programs in the language can check to determine the environment in which they are currently running. ESS sets @code{options(STERM="iESS")} for S language processes running in an inferior @code{@iESS{[S]}} or @code{@iESS{[R]}} buffer. ESS sets @code{options(STERM="ddeESS")} for independent S-Plus for Windows processes running in the GUI and communicating with ESS via the DDE (Microsoft Dynamic Data Exchange) protocol through a @code{ddeESS[S]} buffer. Other values of @code{options()$STERM} that we recommend are: @itemize @bullet @item @code{length}: Fixed length xterm or telnet window. @item @code{scrollable}: Unlimited length xterm or telnet window. @item @code{server}: S-Plus Stat Server. @item @code{BATCH}: BATCH. @item @code{Rgui}: R GUI. @item @code{Commands}: S-Plus GUI without DDE interface to ESS. @end itemize Additional values may be recommended in the future as new interaction protocols are created. Unlike the values @code{iESS} and @code{ddeESS}, ESS can't set these other values since the S language program is not under the control of ESS. @node Emacsclient @section Using emacsclient @cindex emacsclient When starting R or S under Unix, ESS sets @code{options(editor="emacsclient")}. (Under Microsoft Windows, it will use gnuclient.exe rather than emacsclient, but the same principle applies.) Within your R session, for example, if you have a function called @code{iterator}, typing @code{fix(iterator)}, will show that function in a temporary Emacs buffer. You can then correct the function. When you kill the buffer, the definition of the function is updated. Using @code{edit()} rather than @code{fix()} means that the function is not updated. Finally, the S function @code{page(x)} will also show a text representation of the object @code{x} in a temporary Emacs buffer. @node Other @section Other commands provided by inferior-ESS The following commands are also available in the process buffer: @deffn Command comint-interrupt-subjob @kindex C-c C-c @cindex aborting S commands @cindex interrupting S commands @kbd{C-c C-c} Sends a Control-C signal to the ESS process. This has the effect of aborting the current command. @end deffn @deffn Command ess-switch-to-inferior-or-script-buffer @var{toggle-eob} @kindex C-c C-z @kbd{C-c C-z} When in process buffer, return to the most recent script buffer. When in a script buffer pop to the associated process buffer. This is a single key command, that is @kbd{C-c C-z C-z} from a script buffer returns to the original buffer. If @var{toggle-eob} is given, the value of @code{ess-switch-to-end-of-proc-buffer} is toggled. @end deffn @defvr {User Option} ess-switch-to-end-of-proc-buffer If non-@code{nil}, @code{ess-switch-to-inferior-or-script-buffer} goes to end of process buffer. @end defvr Other commands available in Inferior @Sl{} mode are discussed in @ref{Shell Mode,,, emacs, The Gnu Emacs Reference Manual}. @node Evaluating code @chapter Sending code to the ESS process Other commands are also available for evaluating portions of code in the S process. These commands cause the selected code to be evaluated directly by the ESS process as if you had typed them in at the command line; the @code{source()} function is not used. You may choose whether both the commands and their output appear in the process buffer (as if you had typed in the commands yourself) or if the output alone is echoed. The behavior is controlled by the variable: @defvr {User Option} ess-eval-visibly Non-@code{nil} means @code{ess-eval-*} commands display commands and output in the process buffer. Default is @code{t}. @end defvr Passing a prefix (@kbd{C-u}) @var{vis} to any of the following commands, however, reverses the meaning of @code{ess-eval-visibly} for that command only --- for example @kbd{C-u C-c C-j} @comment these remarks only make sense IF the default is nil (which it is NOT) @comment echoes the current line of S (or other) code in the ESS process @comment buffer, followed by its output. This method of evaluation is an suppresses the current line of S (or other) code in the ESS process buffer. This method of evaluation is an alternative to S's @code{source()} function @pindex source() @cindex echoing commands when evaluating @cindex evaluating code with echoed commands when you want the input as well as the output to be displayed. (You can sort of do this with @code{source()} when the option @code{echo=T} is set, except that prompts do not get displayed. ESS puts prompts in the right places.) Primary commands for evaluating code are: @cindex evaluating S expressions @deffn Command ess-eval-region-or-line-and-step @var{vis} Send the highlighted region or current line and step to next line of code. @end deffn @deffn Command ess-eval-region-or-function-or-paragraph @var{vis} @kindex C-M-x @kbd{C-M-x} Sends the current selected region or function or paragraph. @end deffn @deffn Command ess-eval-region-or-function-or-paragraph-and-step @var{vis} @kindex C-C C-c @kbd{C-c C-c} Like @code{ess-eval-region-or-function-or-paragraph} but steps to next line of code. @end deffn Other, not so often used, evaluation commands are: @deffn Command ess-eval-line @var{vis} @kindex C-C C-j @kbd{C-c C-j} Sends the current line to the ESS process. @end deffn @deffn Command ess-eval-line-and-go @var{vis} @kindex C-C M-j @kbd{C-c M-j} Like @code{ess-eval-line} but additionally switches point to the ESS process. @end deffn @deffn Command ess-eval-function @var{vis} @var{no-error} @kindex C-C C-f @kbd{C-c C-f} Sends the @Sl{} function containing point to the ESS process. @end deffn @deffn Command ess-eval-function-and-go @var{vis} @kindex C-C M-f @kbd{C-c M-f} Like @code{ess-eval-function} but additionally switches point to the ESS process. @end deffn @deffn Command ess-eval-region @var{start} @var{end} @var{toggle} @var{message} @kindex C-C C-r @kbd{C-c C-r} Sends the current region to the ESS process. @end deffn @deffn Command ess-eval-region-and-go @var{start} @var{end} @var{vis} @kindex C-C M-r @kbd{C-c M-r} Like @code{ess-eval-region} but additionally switches point to the ESS process. @end deffn @deffn Command ess-eval-buffer @var{vis} @kindex C-C C-b @kbd{C-c C-b} Sends the current buffer to the ESS process. @end deffn @deffn Command ess-eval-buffer-and-go @var{vis} @kindex C-C M-b @kbd{C-c M-b} Like @code{ess-eval-buffer} but additionally switches point to the ESS process. @end deffn All the above @code{ess-eval-*} commands are useful for evaluating small amounts of code and observing the results in the process buffer for debugging purposes, or for generating transcripts from source files. When editing S functions, it is generally preferable to use @kbd{C-c C-l} to update the function's value. In particular, @code{ess-eval-buffer} is now largely obsolete. A useful way to work is to divide the frame into two windows; one containing the source code and the other containing the process buffer. If you wish to make the process buffer scroll automatically when the output reaches the bottom of the window, you will need to set the variable @code{comint-scroll-to-bottom-on-output} to @code{'others} or @code{t}. @node Transcript Mode @chapter Manipulating saved transcript files Inferior @Sl{} mode records the transcript (the list of all commands executed, and their output) in the process buffer, which can be saved as a @dfn{transcript file}, which should normally have the suffix @file{.St}. The most obvious use for a transcript file is as a static record of the actions you have performed in a particular @Sl{} session. Sometimes, however, you may wish to re-execute commands recorded in the transcript file by submitting them to a running ESS process. This is what Transcript Mode is for. If you load file a with the suffix @file{.St} into Emacs, it is placed in S Transcript Mode. Transcript Mode is similar to Inferior @Sl{} mode (@pxref{Entering commands}): @cindex transcript mode motion @cindex motion in transcript mode paragraphs are defined as a command and its output, and you can move though commands either with the paragraph commands or with @kbd{C-c C-p} and @kbd{C-c C-n}. @menu * Resubmit:: Resubmitting commands from the transcript file * Clean:: Cleaning transcript files @end menu @node Resubmit @section Resubmitting commands from the transcript file Three commands are provided to re-submit command lines from the transcript file to a running ESS process. They are: @deffn Command ess-transcript-send-command @kindex M-RET @kbd{M-RET} Sends the current command line to the ESS process, and execute it. @end deffn @deffn Command ess-transcript-copy-command @kindex C-c RET @kbd{C-c RET} Copy the current command to the ESS process, and switch to it (ready to edit the copied command). @end deffn @deffn Command ess-transcript-send-command-and-move @kindex RET @kbd{RET} Sends the current command to the ESS process, and move to the next command line. This command is useful for submitting a series of commands. @end deffn @noindent Note that the first two commands are similar to those on the same keys in inferior @Sl{} Mode. In all three cases, the commands should be executed when the cursor is on a command line in the transcript; the prompt is automatically removed before the command is submitted. @node Clean @section Cleaning transcript files Yet another use for transcript files is to extract the command lines for inclusion in an @Sl{} source file or function. Transcript mode provides one command which does just this: @deffn Command ess-transcript-clean-region @var{beg} @var{end} @var{even-if-read-only} @kindex C-c C-w @kbd{C-c C-w} Strip the transcript in the region (given by @var{beg} and @var{end}), leaving only commands. Deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Prefix argument @var{even-if-read-only} means to clean even if the buffer is read-only. Don't forget to remove any erroneous commands first! @end deffn @noindent The remaining command lines may then be copied to a source file or edit buffer for inclusion in a function definition, or may be evaluated directly (@pxref{Evaluating code}) using the code evaluation commands from @Sl{} mode, also available in @Sl{} Transcript Mode. @node Editing objects @chapter Editing objects and functions @cindex editing functions ESS provides facilities for editing @Sl{} objects within your Emacs session. Most editing is performed on @Sl{} functions, although in theory you may edit datasets as well. Edit buffers are always associated with files, although you may choose to make these files temporary if you wish. Alternatively, you may make use of a simple yet powerful mechanism for maintaining backups of text representations of @Sl{} functions. Error-checking is performed when @Sl{} code is loaded into the ESS process. @menu * Edit buffer:: Edit objects in a specialized buffer * Loading:: Loading source files into the ESS process * Error Checking:: Detecting errors in source files * Indenting:: Indenting and formatting S code * Other edit buffer commands:: Commands for motion, completion and more * Source Files:: Maintaining @Sl{} source files * Source Directories:: Names and locations of dump files @end menu @node Edit buffer @section Creating or modifying S objects @cindex edit buffer To edit an @Sl{} object, type @deffn Command ess-dump-object-into-edit-buffer @var{object} @kindex C-c C-e C-d @kbd{C-c C-e C-d} Edit an @Sl{} @var{object} in its own edit buffer. @end deffn from within the ESS process buffer (@code{*S*}). You will then be prompted for an object to edit: you may either type in the name of an existing object (for which completion is available using the @kbd{TAB} key), @cindex completion, when prompted for object names or you may enter the name of a new object. @cindex creating new objects @cindex new objects, creating A buffer will be created containing the text representation of the requested object or, if you entered the name of a non-existent object at the prompt and the variable @code{ess-function-template} @vindex ess-function-template is non-@code{nil}, you will be presented with a template defined by that variable, which defaults to a skeleton function construct. You may then edit the function as required. The edit buffer generated by @code{ess-dump-object-into-edit-buffer} is placed in the @code{ESS} major mode which provides a number of commands to facilitate editing @Sl{} source code. Commands are provided to intelligently indent @Sl{} code, evaluate portions of @Sl{} code and to move around @Sl{} code constructs. @cindex dump files @cindex reverting function definitions Note: when you dump a file with @kbd{C-c C-e C-d}, ESS first checks to see whether there already exists an edit buffer containing that object and, if so, pops you directly to that buffer. If not, ESS next checks whether there is a file in the appropriate place with the appropriate name (@pxref{Source Files}) and if so, reads in that file. You can use this facility to return to an object you were editing in a previous session (and which possibly was never loaded to the @Sl{} session). Finally, if both these tests fail, the ESS process is consulted and a @code{dump()} command issued. @pindex dump() If you want to force ESS to ask the ESS process for the object's definition (say, to reformat an unmodified buffer or to revert back to S's idea of the object's definition) pass a prefix argument to @code{ess-dump-object-into-edit-buffer} by typing @kbd{C-u C-c C-e C-d}. @node Loading @section Loading source files into the ESS process The best way to get information --- particularly function definitions --- into @Sl{} is to load them in as source file, using S's @code{source} function. You have already seen how to create source files using @kbd{C-c C-e C-d}; ESS provides a complementary command for loading source files (even files not created with ESS!) into the ESS process, namely @code{ess-load-file} (@kbd{C-c C-l}). @findex ess-load-file @pindex source() @pxref{Hot keys}. @noindent After typing @kbd{C-c C-l} you will prompt for the name of the file to load into S; usually this is the current buffer's file which is the default value (selected by simply pressing @kbd{RET} at the prompt). You will be asked to save the buffer first if it has been modified (this happens automatically if the buffer was generated with @kbd{C-c C-e C-d}). The file will then be loaded, and if it loads successfully you will be returned to the ESS process. @node Error Checking @section Detecting errors in source files @cindex errors @cindex parsing errors If any errors occur when loading a file with @code{C-c C-l}, ESS will inform you of this fact. In this case, you can jump directly to the line in the source file which caused the error by typing @kbd{C-c `} (@code{ess-parse-errors}). @kindex C-c ` @findex ess-parse-errors You will be returned to the offending file (loading it into a buffer if necessary) with point at the line @Sl{} reported as containing the error. You may then correct the error, and reload the file. Note that none of the commands in an @Sl{} source file will take effect if any part of the file contains errors. Sometimes the error is not caused by a syntax error (loading a non-existent file for example). In this case typing @kbd{C-c `} will simply display a buffer containing S's error message. You can force this behavior (and avoid jumping to the file when there @emph{is} a syntax error) by passing a prefix argument to @code{ess-parse-errors} with @kbd{C-u C-c `}. @node Indenting @section Indenting and formatting S code ESS provides a sophisticated mechanism for indenting @Sl{} source code (thanks to Ken'ichi Shibayama). Compound statements (delimited by @samp{@{} and @samp{@}}) are indented relative to their enclosing block. In addition, the braces have been electrified to automatically indent to the correct position when inserted, and optionally insert a newline at the appropriate place as well. Lines which continue an incomplete expression are indented relative to the first line of the expression. Function definitions, @code{if} statements, calls to @code{expression()} and loop constructs are all recognized and indented appropriately. User variables are provided to control the amount of indentation in each case, and there are also a number of predefined indentation styles to choose from. @cindex comments in S Comments are also handled specially by ESS, using an idea borrowed from the Emacs-Lisp indentation style. By default, comments beginning with @samp{###} are aligned to the beginning of the line. Comments beginning with @samp{##} are aligned to the current level of indentation for the block containing the comment. Finally, comments beginning with @samp{#} are aligned to a column on the right (the 40th column by default, but this value is controlled by the variable @code{comment-column},) @vindex comment-column or just after the expression on the line containing the comment if it extends beyond the indentation column. You turn off the default behavior by adding the line @code{(setq ess-indent-with-fancy-comments nil)} to your @file{.emacs} file. @vindex ess-indent-with-fancy-comments ESS also supports Roxygen entries which is R documentation maintained in the source code as comments @xref{Roxygen}. The indentation commands provided by ESS are: @cindex indenting @cindex formatting source code @deffn Command ess-indent-or-complete @kindex TAB @kbd{TAB} Indents the current line as @Sl{} code. Try to indent first, and if code is already properly indented, complete instead. In ess-mode, only tries completion if @code{ess-tab-complete-in-script} is non-nil. See also @code{ess-first-tab-never-complete}. @end deffn @defvr {User Option} ess-tab-complete-in-script If non-@code{nil}, @kbd{TAB} in script buffers tries to complete if there is nothing to indent. @end defvr @defvr {User Option} ess-first-tab-never-complete If non-@code{nil}, @kbd{TAB} never tries to complete in ess-mode. The default @code{'symbol} does not try to complete if the next char is a valid symbol constituent. There are more options, see the help (@kbd{C-h v}). @end defvr @deffn Command ess-indent-exp @kindex C-M-q @kindex M-C-q @kindex ESC C-q @kbd{TAB} Indents each line in the @Sl{} (compound) expression which follows point. Very useful for beautifying your @Sl{} code. @end deffn @deffn Command ess-electric-brace @kindex @{ @kindex @} @kbd{@{} @kbd{@}} The braces automatically indent to the correct position when typed. @end deffn The following Emacs command are also helpful: @table @kbd @item RET @itemx LFD @kindex C-j @code{newline-and-indent} Insert a newline, and indent the next line. (Note that most keyboards nowadays do not have a @key{LINEFEED} key, but @key{RET} and @kbd{C-j} are equivalent.) @item M-; @kindex M-; @code{indent-for-comment} Indents an existing comment line appropriately, or inserts an appropriate comment marker. @end table @menu * Styles:: Changing styles for indentation and alignment @end menu @node Styles @subsection Changing styles for code indentation and alignment The combined value of twelve variables (4 of three groups @code{ess-indent-*}, @code{ess-offset-*} and @code{ess-align-*}) that control indentation etc are collectively termed a @i{style}. ESS provides several styles covering the common styles of indentation: @code{DEFAULT}, @code{OWN}, @code{GNU}, @code{BSD}, @code{K&R}, @code{C++}, @code{RRR}, @code{RRR+}, @code{Rstudio}, @code{Rstudio-}, and @code{CLB}. The variable @code{ess-style-alist} lists the value of each indentation variable per style (and its documentation contains more). @deffn Command ess-set-style @kindex C-c C-e s @kindex C-c C-e C-s @kbd{C-c C-e C-s} (or @kbd{C-c C-e s}) sets the formatting style in this buffer to be one of the predefined styles, see above. The @code{DEFAULT} style uses the default values for the indenting variables; The @code{OWN} style allows you to use your own private values of the indentation variable, see below. @example (setq ess-default-style 'C++) @end example @end deffn @defvr {User Option} ess-default-style The default value of @code{ess-style}. See the variable @code{ess-style-alist} for how these groups (DEFAULT, OWN, GNU, RRR, @dots{}) map onto different settings for variables. @end defvr @defvr {User Option} ess-style-alist Predefined formatting styles for ESS code. Values for all groups, except OWN, are fixed. To change the value of variables in the OWN group, customize the variable @code{ess-own-style-list}. The default style in use is controlled by @code{ess-default-style}. @end defvr The styles @code{DEFAULT} and @code{OWN} are initially identical. If you wish to edit some of the default values, set @code{ess-default-style} to @code{'OWN} and change @code{ess-own-style-list}. @xref{Customization}, for convenient ways to set both these variables. If you prefer not to use the custom facility, you can change individual indentation variables within a hook, for example: @example (defun myindent-ess-hook () (setq ess-indent-level 4)) (add-hook 'ess-mode-hook 'myindent-ess-hook) @end example In the rare case that you'd like to add an entire new indentation style of your own, copy the definition of @code{ess-own-style-list} to a new variable and ensure that the last line of the @code{:set} declaration calls @code{ess-add-style} with a unique name for your style (e.g. @code{'MINE}). Finally, add @code{(setq ess-default-style 'MINE)} to use your new style. @node Other edit buffer commands @section Commands for motion, completion and more A number of commands are provided to move across function definitions in the edit buffer: @deffn Command ess-goto-beginning-of-function-or-para @kindex ESC C-a @kindex C-M-a @kbd{ESC C-a} aka @kbd{C-M-a} If inside a function go to the beginning of it, otherwise go to the beginning of paragraph. @end deffn @deffn Command ess-goto-end-of-function-or-para @kindex ESC C-e @kindex C-M-e @kbd{ESC C-e} aka @kbd{C-M-e} Move point to the end of the function containing point. @end deffn @deffn Command ess-mark-function @kindex ESC C-h @kindex C-M-h @kbd{ESC C-h} aka @kbd{C-M-h} Place point at the beginning of the @Sl{} function containing point, and mark at the end. @end deffn @noindent Don't forget the usual Emacs commands for moving over balanced expressions and parentheses: @xref{Lists, Lists and Sexps, Lists and Sexps, Emacs, The GNU Emacs Reference Manual}. @cindex completion in edit buffer Completion is provided in the edit buffer in a similar fashion to the process buffer: @key{TAB} first indents, and if there is nothing to indent, completes the object or file name; @kbd{M-?} lists file completions. See @xref{Completion}, for more. Finally, @kbd{C-c C-z} (@code{ess-switch-to-inferior-or-script-buffer}) returns you to the @code{iESS} process buffer, if done from a script buffer, placing point at the end of the buffer. If this is done from the @code{iESS} process buffer, point is taken to the script buffer. In addition some commands available in the process buffer are also available in the script buffer. You can still read help files with @kbd{C-c C-v}, edit another function with @kbd{C-c C-e C-d} and of course @kbd{C-c C-l} can be used to load a source file into S. @node Source Files @section Maintaining S source files Every edit buffer in ESS is associated with a @dfn{dump file} on disk. Dump files are created whenever you type @kbd{C-c C-e C-d} (@code{ess-dump-object-into-edit-buffer}), and may either be deleted after use, or kept as a backup file or as a means of keeping several versions of an @Sl{} function. @cindex dump files @defvr {User Option} ess-delete-dump-files If non-@code{nil}, dump files created with C-c C-e C-d are deleted immediately after they are created by the ess-process. @end defvr Since immediately after @Sl{} dumps an object's definition to a disk file the source code on disk corresponds exactly to S's idea of the object's definition, the disk file isn't needed; deleting it now has the advantage that if you @emph{don't} modify the file (say, because you just wanted to look at the definition of one of the standard S functions) the source dump file won't be left around when you kill the buffer. Note that this variable only applies to files generated with S's @code{dump} function; it doesn't apply to source files which already exist. The default value is @code{t}. @defvr {User Option} ess-keep-dump-files Variable controlling whether to delete dump files after a successful load. If @samp{nil}: always delete. If @samp{ask}, confirm to delete. If @samp{check}, confirm to delete, except for files created with @code{ess-dump-object-into-edit-buffer}. Anything else, never delete. This variable only affects the behaviour of @code{ess-load-file}. Dump files are never deleted if an error occurs during the load. @end defvr After an object has been successfully (i.e. without error) loaded back into @Sl{} with @kbd{C-c C-l}, the disk file again corresponds exactly (well, almost --- see below) to S's record of the object's definition, and so some people prefer to delete the disk file rather than unnecessarily use up space. This option allows you to do just that. @cindex comments @cindex project work in S @cindex historic backups If the value of @code{ess-keep-dump-files} is @code{t}, dump files are never deleted after they are loaded. Thus you can maintain a complete text record of the functions you have edited within ESS. Backup files are kept as usual, and so by using the Emacs numbered backup facility --- @pxref{Backup Names, Single or Numbered Backups, Single or Numbered Backups, emacs, The Gnu Emacs Reference Manual}, you can keep a historic record of function definitions. Another possibility is to maintain the files with a version-control system such as RCS @xref{Version Control, Version Control, Version Control, emacs, The Gnu Emacs Reference Manual}. As long as a dump file exists in the appropriate place for a particular object, editing that object with @kbd{C-c C-e C-d} finds that file for editing (unless a prefix argument is given) --- the ESS process is not consulted. Thus you can keep comments @emph{outside} the function definition as a means of documentation that does not clutter the @Sl{} object itself. Another useful feature is that you may format the code in any fashion you please without @Sl{} re-indenting the code every time you edit it. These features are particularly useful for project-based work. If the value of @code{ess-keep-dump-files} is nil, the dump file is always silently deleted after a successful load with @kbd{C-c C-l}. While this is useful for files that were created with @kbd{C-c C-e C-d} it also applies to any other file you load (say, a source file of function definitions), and so can be dangerous to use unless you are careful. Note that since @code{ess-keep-dump-files} is buffer-local, you can make sure particular files are not deleted by setting it to @code{t} in the Local Variables section of the file @xref{File Variables, Local Variables in Files, Local Variables in Files, emacs, The Gnu Emacs Reference Manual}. A safer option is to set @code{ess-keep-dump-files} to @code{ask}; this means that ESS will always ask for confirmation before deleting the file. Since this can get annoying if you always want to delete dump files created with @code{C-c C-e C-d}, but not any other files, setting @code{ess-keep-dump-files} to @code{check} (the default value) will silently delete dump files created with @kbd{C-c C-e C-d} in the current Emacs session, but query for any other file. Note that in any case you will only be asked for confirmation once per file, and your answer is remembered for the rest of the Emacs session. Note that in all cases, if an error (such as a syntax error) is detected while loading the file with @kbd{C-c C-l}, the dump file is @emph{never} deleted. This is so that you can edit the file in a new Emacs session if you happen to quit Emacs before correcting the error. @cindex autosaving Dump buffers are always autosaved, regardless of the value of @code{ess-keep-dump-files}. @node Source Directories @section Names and locations of dump files @cindex dump file names Every dump file should be given a unique file name, usually the dumped object name with some additions. @defvr {User Option} ess-dump-filename-template Template for filenames of dumped objects. @code{%s} is replaced by the object name. @end defvr @noindent By default, dump file names are the user name, followed by @samp{.} and the object and ending with @samp{.S}. Thus if user @code{joe} dumps the object @code{myfun} the dump file will have name @file{joe.myfun.S}. The username part is included to avoid clashes when dumping into a publicly-writable directory, such as @file{/tmp}; you may wish to remove this part if you are dumping into a directory owned by you. @cindex dump file directories You may also specify the directory in which dump files are written: @defvr {User Option} ess-source-directory Directory name (ending in a slash) where @Sl{} dump files are to be written. @end defvr By default, dump files are always written to @file{/tmp}, which is fine when @code{ess-keep-dump-files} is @code{nil}. If you are keeping dump files, then you will probably want to keep them somewhere in your home directory, say @file{~/S-source}. This could be achieved by including the following line in your @file{.emacs} file: @cindex @file{.emacs} file @example (setq ess-source-directory (expand-file-name "~/S-source/")) @end example If you would prefer to keep your dump files in separate directories depending on the value of some variable, ESS provides a facility for this also. By setting @code{ess-source-directory} to a lambda expression which evaluates to a directory name, you have a great deal of flexibility in selecting the directory for a particular source file to appear in. The lambda expression is evaluated with the process buffer as the current buffer and so you can use the variables local to that buffer to make your choice. For example, the following expression causes source files to be saved in the subdirectory @file{Src} of the directory the ESS process was run in. @example (setq ess-source-directory (lambda () (concat ess-directory "Src/"))) @end example @noindent @vindex ess-directory (@code{ess-directory} is a buffer-local variable in process buffers which records the directory the ESS process was run from.) This is useful if you keep your dump files and you often edit objects with the same name in different ESS processes. Alternatively, if you often change your @Sl{} working directory during an @Sl{} session, you may like to keep dump files in some subdirectory of the directory pointed to by the first element of the current search list. This way you can edit objects of the same name in different directories during the one S session: @cindex search list @cindex working directory @example (setq ess-source-directory (lambda () (file-name-as-directory (expand-file-name (concat (car ess-search-list) "/.Src"))))) @end example @vindex ess-search-list If the directory generated by the lambda function does not exist but can be created, you will be asked whether you wish to create the directory. If you choose not to, or the directory cannot be created, you will not be able to edit functions. @node Help @chapter Reading help files @cindex help files ESS provides an easy-to-use facility for reading @Sl{} help files from within Emacs. From within the ESS process buffer or any ESS edit buffer, typing @kbd{C-c C-v} (@code{ess-display-help-on-object}) @findex ess-display-help-on-object will prompt you for the name of an object for which you would like documentation. Completion is provided over all objects which have help files. If the requested object has documentation, you will be popped into a buffer (named @code{*help(@var{obj-name})*}) containing the help file. This buffer is placed in a special `S Help' mode which disables the usual editing commands but which provides a number of keys for paging through the help file. Help commands: @table @kbd @item ? @findex ess-describe-help-mode @code{ess-describe-help-mode} Pops up a help buffer with a list of the commands available in @Sl{} help mode. @item h @findex ess-display-help-on-object @code{ess-display-help-on-object} Pop up a help buffer for a different object. @end table Paging commands: @cindex paging commands in help buffers @table @kbd @item b @itemx DEL @code{scroll-down} Move one page backwards through the help file. @item SPC @code{scroll-up} Move one page forwards through the help file. @item > @itemx < @code{end-of-buffer} Move to the beginning and end of the help file, respectively. @end table Section-based motion commands: @table @kbd @item n @itemx p @findex ess-skip-to-next-section @findex ess-skip-to-previous-section @code{ess-skip-to-previous-section} and @code{ess-skip-to-next-section} Move to the next and previous section header in the help file, respectively. A section header consists of a number of capitalized words, followed by a colon. @end table In addition, the @kbd{s} key followed by one of the following letters will jump to a particular section in the help file. Note that R uses capitalized instead of all-capital section headers, e.g., @samp{Description:} instead of @samp{DESCRIPTION:} and also only some versions of S(-plus) have sections @samp{BACKGROUND}, @samp{BUGS}, @samp{OPTIONAL ARGUMENTS}, @samp{REQUIRED ARGUMENTS}, and @samp{SIDE EFFECTS}. @c The bindings are all in ../lisp/ess-s-l.el @c ess-help-*-sec-keys-alist @c @c S-plus only: @c @item b BACKGROUND: @c @item B BUGS: @c @item O OPTIONAL ARGUMENTS: @c @item R REQUIRED ARGUMENTS: @c S and S-plus only: @c @item S SIDE EFFECTS: Do use @kbd{s ?} to get the current list of active key bindings. @findex ess-skip-to-help-section @table @samp @item a ARGUMENTS: @item b BACKGROUND: @item B BUGS: @item d DESCRIPTION: @item D DETAILS: @item e EXAMPLES: @item n NOTE: @item O OPTIONAL ARGUMENTS: @item R REQUIRED ARGUMENTS: @item r REFERENCES: @item s SEE ALSO: @item S SIDE EFFECTS: @item u USAGE: @item v VALUE: @item < Jumps to beginning of file @item > Jumps to end of file @item ? Pops up a help buffer with a list of the defined section motion keys. @end table Evaluation: @table @kbd @item l @findex ess-eval-line-and-step @code{ess-eval-line-and-step} Evaluates the current line in the ESS process, and moves to the next line. Useful for running examples in help files. @item r @findex ess-eval-region @code{ess-eval-region} Send the contents of the current region to the ESS process. Useful for running examples in help files. @end table Quit commands: @table @kbd @item q @findex ess-switch-to-end-of-ESS @code{ess-help-quit} Return to previously selected buffer, and bury the help buffer. @item k @code{kill-buffer} Return to previously selected buffer, and kills the help buffer. @item x @code{ess-kill-buffer-and-go} Return to the ESS process, killing this help buffer. @end table Miscellaneous: @table @kbd @item i @code{ess-display-index} Prompt for a package and display it's help index. @item v @code{ess-display-vignettes} Display all available vignettes. @item w @code{ess-display-help-in-browser} Display current help page with the web browser. @item / @code{isearch-forward} Same as @kbd{C-s}. @end table In addition, all of the ESS commands available in the edit buffers are also available in @Sl{} help mode (@pxref{Edit buffer}). Of course, the usual (non-editing) Emacs commands are available, and for convenience the digits and @key{-} act as prefix arguments. If a help buffer already exists for an object for which help is requested, that buffer is popped to immediately; the ESS process is not consulted at all. If the contents of the help file have changed, you either need to kill the help buffer first, or pass a prefix argument (with @kbd{C-u}) to @code{ess-display-help-on-object}. Help buffers are marked as temporary buffers in ESS, and are deleted when @code{ess-quit} or @code{ess-cleanup} are called. Help buffers normally appear in another window within the current frame. If you wish help buffers to appear in their own frame (either one per help buffer, or one for all help buffers), you can customize the variable @code{ess-help-own-frame}. @findex ess-quit @findex ess-cleanup @cindex temporary buffers @node Completion @chapter Completion @menu * Object names:: * Function arguments:: * Minibuffer completion:: * Auto-complete:: * Icicles:: @end menu @node Object names @section Completion of object names @cindex completion of object names @cindex command-line completion @vindex ess-first-tab-never-complete The @key{TAB} key is for completion. The value of the variable @code{ess-first-tab-never-complete} controls when completion is allowed controls when completion is allowed to occur. In @code{ess-mode} @key{TAB} first tries to indent, and if there is nothing to indent, complete the object name instead. @table @kbd @item TAB @findex comint-dynamic-complete @code{comint-dynamic-complete} Complete the @Sl{} object name or filename before point. @end table When the cursor is just after a partially-completed object name, pressing @key{TAB} provides completion in a similar fashion to @code{tcsh} @cindex tcsh except that completion is performed over all known @Sl{} object names instead of file names. ESS maintains a list of all objects known to S at any given time, which basically consists of all objects (functions and datasets) in every attached directory listed by the @code{search()} command @pindex search() along with the component objects of attached data frames @cindex data frames (if your version of @Sl{} supports them). For example, consider the three functions (available in Splus version 3.0) called @code{binomplot()}, @code{binom.test()} and @code{binomial()}. Typing @kbd{bin TAB} after the @Sl{} prompt will insert the characters @samp{om}, completing the longest prefix (@samp{binom}) which distinguishes these three commands. Pressing @kbd{TAB} once more provides a list of the three commands which have this prefix, allowing you to add more characters (say, @samp{.}) which specify the function you desire. After entering more characters pressing @kbd{TAB} yet again will complete the object name up to uniqueness, etc. If you just wish to see what completions exist without adding any extra characters, type @kbd{M-?}. @deffn Command ess-list-object-completions @kindex M-? @kbd{M-?} List all possible completions of the object name at point. @end deffn ESS also provides completion over the components of named lists and environments (after @samp{$}), S4 classes slots (after @@), package and namespace objects (after :: and :::). @c This feature is particularly @c useful for checking what components of a list object exist while partway @c through entering a command: simply type the object name and @samp{$} and @c press @kbd{TAB} to see the names of existing list components for that @c object. @cindex lists, completion on @cindex completion on lists @cindex completion on file names Completion is also provided over file names, which is particularly useful when using @Sl{} functions such as @code{get()} or @code{scan()} which require fully expanded file names. @c VS[11-03-2012|ESS 12.03]: this is not true in ess-mode @c Whenever the cursor is within @c an @Sl{} string, pressing @kbd{TAB} completes the file name before @c point. Since ESS 5.11, it no longer also expands any @samp{~} or @c environment variable references. In the Inferior ESS buffer, if the cursor is not in a string and does not follow a (partial) object name, the @key{TAB} key has a third use: it expands history references. @xref{History expansion}. @c @node Completion details, Transcript, Completion, Entering commands @c ------ VS: this will change in the next release, thus commented out @c @section Completion details @c ESS automatically keeps track of any objects added or deleted to the @c system (such as new objects created, or directories added to the search @c list) to make completion as accurate as possible. Whenever ESS notices @c that search list has changed @c @vindex ess-change-sp-regexp @c @footnote{The variable @code{ess-change-sp-regexp} is a regular @c expression matching commands which change the search list. You will @c need to modify this variable if you have defined custom commands (other @c than @code{attach}, @code{detach}, @code{collection} or @code{library}) @c which modify the search list.} when you attach a directory or data @c frame, the objects associated with it immediately become available for a @c completion; when it is detached completion is no longer available on @c those objects. @c To maintain a list of accessible objects for completion, ESS needs to @c determine which objects are contained in each directory or data frame on @c the search list. This is done at the start of each @Sl{} session, by @c running the @code{objects()} command on every element of the search @c list. @c On some systems, however, this can be rather slow; it's doubly @c frustrating when you consider that most of the directories on the search @c list are the standard @Sl{} libraries, which never change anyway! When @c ESS was installed, a database of the standard object names should have @c been created which should speed up this process at the start of an S @c session; if it has not been created you will get a warning like @c `S-namedb.el does not exist'. @xref{Installation}, for information on @c how to create this database. Efficiency in completion is gained by maintaining a cache of objects currently known to S; when a new object becomes available or is deleted, only one component of the cache corresponding to the associated directory needs to be refreshed. If ESS ever becomes confused about what objects are available for completion (such as when if refuses to complete an object you @strong{know} is there), the command @kbd{M-x ess-resynch} @findex ess-resynch forces the @emph{entire} cache to be refreshed, which should fix the problem. @node Function arguments @section Completion of function arguments When inside a function call (i.e. following `@code{(}'), @kbd{TAB} completion also provides function arguments. If function is a generic, completion will provide all the arguments of @code{S3} methods known to @code{R}. A related functionality is @xref{ESS ElDoc}, which displays function arguments in the echo area whenever the point is inside a function call. @node Minibuffer completion @section Minibuffer completion @cindex IDO completions @findex ess-use-ido, ess-completing-read From version 12.03, ESS uses @code{IDO} mechanism (part of default emacs) for minibuffer completion if @code{ido.el} package is available and the value of @code{ess-use-ido} it @code{t} (the default). The completion command @code{ess-completing-read} falls back on classic @code{completion-read} interface if this feature is not available for whatever reason. @node Auto-complete @section Integration with auto-complete package @cindex auto-complete @vindex ac-source-R @vindex ac-source-R-args @vindex ac-source-R-objects ESS provides three sources for @code{Auto Completion} mode: @comment (@uref{http://cx4a.org/software/auto-complete/}) @code{ac-source-R-args}, @code{ac-source-R-objects} and @code{ac-source-R}. The last one combines the previous two and makes them play nicely together. See auto-complete package documentation (@uref{http://cx4a.org/software/auto-complete/}) for how to modify and install your own completion sources. For the default auto-complete ESS configuration, install the latest version of @code{auto-complete} package. ESS automatically detect the package and activates auto-complete in ESS buffers. To deactivate AC, place the following into your init file: @example (setq ess-use-auto-complete nil) @end example Or, to activate auto-completion only in the @code{ess-mode} buffers: @example (setq ess-use-auto-complete 'script-only) @end example ESS provides AC help both for arguments and objects (default keys @kbd{C-?} or @kbd{}). You can bind @kbd{M-h} to display quick help pop-ups: @example (define-key ac-completing-map (kbd "M-h") 'ac-quick-help) @end example @code{AC} binds @kbd{M-n}, and @kbd{M-p} for the navigation in the completion menu, which might be inconvenient if you want it to use in the inferior R. Bind it to something else: @example (define-key ac-completing-map "\M-n" nil) ;; was ac-next (define-key ac-completing-map "\M-p" nil) ;; was ac-previous (define-key ac-completing-map "\M-," 'ac-next) (define-key ac-completing-map "\M-k" 'ac-previous) @end example @node Icicles @section Icicles @cindex icicles Another option for comprehensively handling completion in Emacs is via Icicles (@uref{http://www.emacswiki.org/emacs/Icicles}). It allows users to have completions shown temporarily in the standard @samp{*Completions*} buffer, and interactively select completion candidates using several methods. As of version 2013.04.04, Icicles provides support for completion in ESS. Please consult Icicles documentation, which is easily accessible via @kbd{customize-group Icicles}, for more details on installation and customization options. Once installed, Icicles can be activated by evaluating (maybe place in @file{~/.emacs}): @example (require 'icicles) (icy-mode 1) @end example Icicles can be toggled at any moment by typing @kbd{M-x icy}. When Icicles is on, @kbd{TAB} offers completion, provided the conditions determined by @code{ess-first-tab-never-complete} allow it. Typing @kbd{M-TAB} will attempt completion regardless. Typing @kbd{M-?} in @code{ESS} or @code{iESS} modes brings up the relevant completion candidates from which to choose. Minibuffer input filters the available candidates. Use @kbd{TAB} for prefix completion or @kbd{S-TAB} for substring or regexp completion. Use @kbd{S-SPC} to match an additional pattern (repeatable). You can cycle among the matching candidates, choosing with @kbd{RET} or @kbd{mouse-2}. @node Developing with ESS @chapter Developing with ESS ESS provides several tools to help you with the development of your R packages: @menu * ESS tracebug:: Visual debugging, breakpoints, tracing, watch etc. * Editing documentation:: Tools to edit R documentation * Namespaced Evaluation:: Develop your packages on the fly @end menu @node ESS tracebug @section ESS tracebug @cindex ESS tracebug @findex ess-tracebug ESS @code{tracebug} offers visual debugging, interactive error navigation, interactive backtrace, breakpoint manipulation, control over R error actions, watch window and interactive flagging/unflagging of functions for debugging. From ESS13.05 @code{ess-tracebug} is on by default. You can toggle it on and off with @kbd{M-x} @code{ess-tracebug}. To disable startup activation of @code{ess-tracebug} set @code{ess-use-tracebug} to nil. Tracebug functionality can be found on @code{ess-dev-map}, bound to @kbd{C-c C-t}. Additionally, when subprocess is in a debugging state @code{ess-debug-minor-mode} is active and the following additional shortcuts are available: @verbatim * Interactive Debugging (`ess-debug-minor-mode-map'): M-C . Continue . `ess-debug-command-continue' M-C-C . Continue multi . `ess-debug-command-continue-multi' M-N . Next step . `ess-debug-command-next' M-C-N . Next step multi . `ess-debug-command-next-multi' M-U . Up frame . `ess-debug-command-up' M-Q . Quit debugging . `ess-debug-command-quit' @end verbatim These are all the tracebug commands defined in @code{ess-dev-map} (@kbd{C-c C-t ?} to show this table): @verbatim * Breakpoints (`ess-dev-map'): b . Set BP (repeat to cycle BP type) . `ess-bp-set' B . Set conditional BP . `ess-bp-set-conditional' k . Kill BP . `ess-bp-kil' K . Kill all BPs . `ess-bp-kill-all' o . Toggle BP state . `ess-bp-toggle-state' l . Set logger BP . `ess-bp-set-logger' n . Goto next BP . `ess-bp-next' p . Goto previous BP . `ess-bp-previous' (C- prefixed equivalents are also defined) * Debugging (`ess-dev-map'): ` . Show traceback . `ess-show-traceback' (also on C-c `) ~ . Show callstack . `ess-show-call-stack' (also on C-c ~) e . Toggle error action (repeat to cycle). `ess-debug-toggle-error-action' d . Flag for debugging . `ess-debug-flag-for-debugging' u . Unflag for debugging . `ess-debug-unflag-for-debugging' w . Watch window . `ess-watch' (C- prefixed equivalents are also defined) * Navigation to errors (general emacs functionality): C-x `, M-g n . `next-error' M-g p . `previous-error' * Misc: ? . Show this help . `ess-tracebug-show-help' @end verbatim To configure how electric watch window splits the display see @code{ess-watch-width-threshold} and @code{ess-watch-height-threshold} variables. A more detailed ess-tracebug documentation with screenshots is available at @uref{http://code.google.com/p/ess-tracebug/}. A short tutorial is at @uref{http://code.google.com/p/ess-tracebug/wiki/GettingStarted}. @emph{Note:} Currently, ess-tracebug does not detect some of R's debug related messages in non-English locales. To set your R messages to English add the following line to your .Rprofile init file: @verbatim Sys.setlocale("LC_MESSAGES", "C") @end verbatim @node Editing documentation @section Editing documentation ESS provides two ways of writing documentation for R objects. Either using the standard R documentation system or using in-source documentation written as structured comment fields for use with the Roxygen package. @menu * R documentation files:: Edit objects in a specialized buffer * Roxygen:: Loading source files into the ESS process @end menu @node R documentation files @subsection Editing R documentation (Rd) files @R{} objects are documented in files written in the @dfn{R documentation} (``Rd''), a simple markup language closely resembling (La)@TeX{}, which can be processed into a variety of formats, including La@TeX{}, @acronym{HTML}, and plain text. Rd format is described in section ``Rd format'' of the ``Writing R Extensions'' manual in the R distribution. ESS has several features that facilitate editing Rd files. Visiting an Rd file as characterized by its extension @file{Rd} will activate Rd Mode, which provides several facilities for making editing R documentation files more convenient, by helping with indentation, insertions, even doing some of the typing for you (with Abbrev Mode), and by showing Rd keywords, strings, etc.@: in different faces (with Font Lock Mode). Note that R also accepts Rd files with extension @file{rd}; to activate @ESS{[Rd]} support for this extension, you may need to add @example (add-to-list 'auto-mode-alist '("\\.rd\\'" . Rd-mode)) @end example @noindent to one of your Emacs startup files. In Rd mode, the following special Emacs commands can be used in addition to the standard Emacs commands. @table @kbd @item C-h m Describe the features of Rd mode. @item LFD @itemx RET Reindent the current line, insert a newline and indent the new line (@code{reindent-then-newline-and-indent}). An abbrev before point is expanded if @code{abbrev-mode} is non-@code{nil}. @item TAB Indent current line based on its contents and on previous lines. (@code{indent-according-to-mode}). @item C-c C-e Insert a ``skeleton'' with Rd markup for at least all mandatory entries in Rd files (@code{Rd-mode-insert-skeleton}). Note that many users might prefer to use the R function @code{prompt} on an existing R object to generate a non-empty Rd ``shell'' documenting the object (which already has all information filled in which can be obtained from the object). @item C-c C-f Insert ``font'' specifiers for some of the Rd markup commands markup available for emphasizing or quoting text, including markup for URLs and email addresses (@code{Rd-font}). @kbd{C-c C-f} is only a prefix; see e.g.@: @kbd{C-c C-f TAB} for the available bindings. Note that currently, not all of the Rd text markup as described in section ``Marking text'' of ``Writing R Extensions'' can be accessed via @kbd{C-c C-f}. @item C-c C-j Insert a suitably indented @samp{\item@{} on the next line (@code{Rd-mode-insert-item}). @item C-c C-p Preview a plain text version (``help file'', @pxref{Help}) generated from the Rd file (@code{Rd-preview-help}). @end table In addition, when editing Rd files one can interact with a running R process in a similar way as when editing R language files. E.g., @kbd{C-c C-v} provides access to on-line help, and @kbd{C-c C-n} sends the current line to the R process for evaluation. This interaction is particularly useful when editing the examples in the Rd file. See @kbd{C-h m} for all available commands. Rd mode also provides access to abbreviations for most of the Rd markup commands. Type @kbd{M-x list-abbrevs} with Abbrev mode turned on to list all available abbrevs. Note that all Rd abbrevs start with a grave accent. Rd mode can be customized via the following variables. @defvr {User Option} Rd-mode-hook Hook to be run when Rd mode is entered. @end defvr @defvr {User Option} Rd-indent-level The indentation of Rd code with respect to containing blocks. Default is 2. @end defvr @defvr {User Option} Rd-to-help-command The shell command used for converting Rd source to help text. Default is @samp{R CMD Rd2txt}. @end defvr To automatically turn on the abbrev and font-lock features of Rd mode, add the following lines to one of your Emacs startup files: @example (add-hook 'Rd-mode-hook (lambda () (abbrev-mode 1) (font-lock-mode 1))) @end example @node Roxygen @subsection Editing Roxygen documentation @cindex Roxygen @cindex roxy @cindex ess-roxy The Roxygen R package makes it possible to keep the intended contents for Rd files as structured comments in the R source files. Roxygen can then parse R files and generate appropriate Rd files from these comments, fill the usage fields as well as updating @file{NAMESPACE} files. See the Roxygen documentation found via @uref{http://roxygen.org} for more information on its usage. An example of an Roxygen entry for a simple R function can look like this: @example @verbatim ##' Description of the function ##' ##' Further details about this function ##' @title A title ##' @param me all parameters must be listed and documented ##' @return Description of the return value ##' @author The author myfun <- function(me) cat("Hello", me, "\n") @end verbatim @end example The entry is immediately preceding the object to document and all lines start with the Roxygen prefix string, in this case @code{##'}. ESS provides support to edit these documentation entries by providing line filling, navigation, template generation etc. Syntax highlighting is provided for Emacs but not for XEmacs. Roxygen is customized by the variables in the customization group ``Ess Roxy''. Customizables include the Roxygen prefix, use of folding to toggle visibility of Roxygen entries and the Roxygen template. All ESS Roxygen support is defined in @file{ess-roxy.el} which is loaded by default in ESS. The following special Emacs commands are provided. @deffn Command ess-roxy-update-entry @kindex C-c C-o C-o @kbd{C-c C-o C-o} Generate a Roxygen template or update the parameter list in Roxygen entry at point (or above the function at the point). Documented parameters that are not in the function are placed last in the list, parameters that are not documented and not in the definition are dropped. Parameter descriptions are filled if @code{ess-roxy-fill-param-p} is non-nil. @end deffn @deffn Command ess-roxy-toggle-roxy-region @var{beg} @var{end} @kindex C-c C-o C-c @kbd{C-c C-o C-c} Toggle the presence of the leading Roxygen string on all lines in the marked region (between @var{beg} and @var{end}. Convenient for transferring text to Roxygen entries and to evaluate example fields. @end deffn @deffn Command ess-roxy-preview-Rd @var{name-file} @kindex C-c C-o C-r @kbd{C-c C-o C-r} Use the attached R process to parse the entry at point to obtain the Rd code. Convenient for previewing and checking syntax. When used with the prefix argument @var{name-file}, i.e. @kbd{C-u C-c C-e C-r}, place the content in a buffer associated with a Rd file with the same name as the documentation. Requires the Roxygen package to be installed. @end deffn @deffn Command ess-roxy-preview-HTML @var{visit-instead-of-open} @kindex C-c C-o C-t @kbd{C-c C-o C-t} Use the attached R process to parse the entry at to generate HTML for the entry and open it in a browser. When used with the prefix argument @var{visit-instead-of-open}, i.e. @kbd{C-u C-c C-e C-t}, visit the generated HTML file instead. Requires the Roxygen and tools packages to be installed. @end deffn @deffn Command ess-roxy-previous-entry @kindex C-c C-o p @kbd{C-c C-o p} Go to start of the Roxygen entry above point. @end deffn @deffn Command ess-roxy-next-entry @kindex C-c C-o n @kbd{C-c C-o n} Go to end of the Roxygen entry above point. @end deffn @deffn Command ess-roxy-hide-all @kindex C-c C-o C-h @kbd{C-c C-o C-h} Use the hideshow mode to fold away the visibility of all Roxygen entries. Hide-show support must be enabled for this binding to get defined. @end deffn ESS also advises the following standard editing functions in order to make Roxygen editing more intuitive: @c not very precise, TAB calls it indirectly @table @kbd @item TAB @findex ess-R-complete-object-name @code{ess-R-complete-object-name} Complete Roxygen tag at point. E.g. doing @kbd{TAB} when the point is at the end of @code{@@par} completes to @code{@@param}. @item M-h @findex mark-paragraph @code{mark-paragraph} If the transient mark mode is active, place mark and point at start end end of the field at point and activate the mark. @item TAB @findex ess-indent-command @code{ess-indent-command} If hide-show support is enabled, fold away the visibility of the Roxygen entry at point. @item M-q @findex fill-paragraph @code{fill-paragraph} Fill the Roxygen field at point. @item C-a @findex move-beginning-of-line @code{move-beginning-of-line} Move to the point directly to the right of the Roxygen start string. @item RET @findex newline-and-indent @code{newline-and-indent} Insert a new line and the Roxygen prefix string. @end table @node Namespaced Evaluation @section Namespaced Evaluation @cindex ess developer In non package files evaluation commands, @xref{Evaluating code}, send portions of the current buffer environment (@code{R_GlobalEnv}. When developing packages, ESS sends code to the corresponding package namespace and (for visible objects) into package environment (visible on search path). All objects that are assigned are displayed in the minibuffer alongside the environment in which they are assigned. Here is a short overview of how namespace and package environments work in R. All objects defined in a package 'foo' are stored in an environment called 'namespace:foo'. Parent environment of 'namespace:foo' is an environment 'imports:foo' which contains copies of all objects from other packages which 'foo' imports. Parent environment of 'imports:foo' is the 'namespace:base'. Parent environment of 'namespace:base' is .GlobalEnv. Thus functions and methods stored in 'namespace:foo' see all the objects in .GlobalEnv unless shadowed by objects in 'imports:foo', 'namespace:base', or 'namespace:foo' itself. There is another environment associated with 'foo' - 'package:foo'. This environment stores *copies* of exported objects from 'namespace:foo' and is placed on the search() path, i.e. if 'foo' is loaded and if you start with .GlobalEnv and iteratively call parent.env() you will get eventually to 'package:foo'. Thus all methods and functions defined in .GlobalEnv can "see" objects in 'package:foo' environment. See also @uref{http://cran.r-project.org/doc/manuals/R-ints.html#Namespaces}. Ocasionally you want to evaluate into a package from a non-package file, or the other way around, evaluate into @code{GlobalEnv} from inside a package. In such cases @kbd{C-c C-t C-s} is your friend. @deffn Command ess-r-set-evaluation-env @var{arg} @kindex C-c C-t C-s @kbd{C-c C-t C-s} Set or unset the current evaluation environment (a package). @end deffn @node Extras @chapter Other ESS features and tools ESS has a few extra features, which didn't fit anywhere else. @c todo: sort alphabetically @menu * ESS ElDoc:: Display function arguments in minibuffer * Handy commands:: Usefully commands at your fingertips * Highlighting:: Syntactic highlighting of buffers * Parens:: Parenthesis matching * Graphics:: Using graphics with ESS * Imenu:: Support for Imenu in ESS * Toolbar:: Support for toolbar in ESS * TAGS:: Using TAGS for S files * Rdired:: Directory editor for R objects * Rutils:: R object/package management and help utilities * Org:: Interaction with Org mode * Sweave and AUCTeX:: Support for Sweave in ESS and AUCTeX @end menu @node ESS ElDoc @section ElDoc @cindex ElDoc In @code{ElDoc} mode, the echo area displays function's arguments at point. From @ESS{} version 12.03, ElDoc is active by default in @code{ess-mode} and @code{inferior-ess-mode} buffers. To activate it only in @code{ess-mode} buffers, place the following into your init file: @example (setq ess-use-eldoc 'script-only) @end example @defvr {User Option} ess-use-eldoc If @samp{t}, activate eldoc in ess-mode and inferior-ess-mode buffers. If @samp{'script-only} activate in ess-mode buffers only. Set @code{ess-use-eldoc} to @code{nil} to stop using @code{ElDoc} altogether. @end defvr @defvr {User Option} ess-eldoc-show-on-symbol This variable controls whether the help is shown only inside function calls. If set to @samp{t}, @code{ElDoc} shows help string whenever the point is on a symbol, otherwise (the default), shows only when the point is in a function call, i.e. after @samp{'('}. @end defvr @defvr {User Option} ess-eldoc-abbreviation-style The variable determines how the doc string should be abbreviated to fit into minibuffer. Posible values are @samp{nil}, @samp{mild}, @samp{normal}, @samp{strong} and @samp{aggressive}. Please see the documentation of the variable for more details. The default filter is @samp{normal}. @end defvr Ess-eldoc also honors the value of @code{eldoc-echo-area-use-multiline-p}, which if set to @samp{nil}, will cause the truncation of doc string indifferent of the value of @code{ess-eldoc-abbreviation-style}. This way you can combine different filter levels with the truncation. @node Handy commands @section Handy commands @cindex Handy commands @findex ess-handy-commands @vindex ess-handy-commands @findex ess-smart-comma @kindex , @deffn Command ess-handy-commands Request and execute a command from @code{ess-handy-commands} list. @end deffn @defvr {User Option} ess-handy-commands An alist of custom ESS commands available for call by @code{ess-handy-commands} and @code{ess-smart-comma} function. Currently contains: @table @asis @item change-directory @code{ess-change-directory} @item help-index @code{ess-display-index} @item help-object @code{ess-display-help-on-object} @item vignettes @code{ess-display-vignettes} @item objects[ls] @code{ess-execute-objects} @item search @code{ess-execute-search} @item set-width @code{ess-execute-screen-options} @item install.packages @code{ess-install.packages} @item library @code{ess-library} @item setRepos @code{ess-setRepositories} @item sos @code{ess-sos} @end table @end defvr @c If ``@kbd{,}`` (@code{ess-smart-comma}) is invoked at the beginning of @c line of an ESS inferior buffer (i.e. at process marker), ESS requests and @c executes a command from @code{`ess-handy-commands'} list. If @c @code{ess-R-smart-operators} is t @code{`ess-smart-comma} also inserts @c `` `` after comma. Handy commands: @code{ess-library}, @code{ess-install.packages}, etc - ask for item with completion and execute the correspond command. @code{ess-sos} is a interface to @code{findFn} function in package @code{sos}. If package @code{sos} is not found, ask user for interactive install. @node Highlighting @section Syntactic highlighting of buffers ESS provides Font-Lock (@pxref{Faces,,Using Multiple Typefaces, emacs, The Gnu Emacs Reference Manual}) patterns for Inferior @Sl{} Mode, S Mode, and @Sl{} Transcript Mode buffers. @cindex font-lock mode @cindex highlighting Syntax highlighting within ESS buffers is controlled by: @defvr {User Option} ess-font-lock-mode Non-@samp{nil} means we use font lock support for ESS buffers. Default is @samp{t}, to use font lock support. If you change the value of this variable, restart Emacs for it to take effect. @end defvr @c To activate highlighting, you need to turn on Font Lock mode in the @c appropriate buffers. This can be done on a per-buffer basis with @c @kbd{M-x font-lock-mode}, or may be done by adding @c @code{turn-on-font-lock} to @code{inferior-ess-mode-hook}, @c @code{ess-mode-hook} and @code{ess-transcript-mode-hook}. Your systems @c administrator may have done this for you in @file{ess-site.el} @c (@pxref{Customization}). The font-lock patterns are defined by the following variables, which you may modify if desired: @defvr {User Option} inferior-R-font-lock-keywords Font-lock patterns for inferior *R* processes. (There is a corresponding @code{inferior-S-font-lock-keywords} for *S* processes.) The default value highlights prompts, inputs, assignments, output messages, vector and matrix labels, and literals such as @samp{NA} and @code{TRUE}. @end defvr @defvr {User Option} ess-R-font-lock-keywords Font-lock patterns for ESS R programming mode. (There is a corresponding @code{ess-S-font-lock-keywords} for S buffers.) The default value highlights function names, literals, assignments, source functions and reserved words. @end defvr @c 2007-11-08 - this var no longer exists. @c @defvar ess-trans-font-lock-keywords @c Font-lock patterns for ESS Transcript Mode. The default value @c highlights the same patterns as in Inferior ESS Mode. @c @end defvar @node Parens @section Parenthesis matching Emacs and XEmacs have facilities for highlighting the parenthesis matching the parenthesis at point. This feature is very useful when trying to examine which parentheses match each other. This highlighting also indicates when parentheses are not matching. Depending on what version of emacs you use, one of the following should work in your initialisation file: @example (paren-set-mode 'paren) ;for XEmacs (show-paren-mode t) ;for Emacs @end example @node Graphics @section Using graphics with ESS @cindex graphics One of the main features of the @code{S} package is its ability to generate high-resolution graphics plots, and ESS provides a number of features for dealing with such plots. @menu * printer:: The printer() graphics driver * X11:: The X11() (and other X Windows based) driver * winjava:: Java Graphics Device @end menu @node printer @subsection Using ESS with the @code{printer()} driver This is the simplest (and least desirable) method of using graphics within ESS. S's @code{printer()} device driver produces crude character based plots which can be contained within the ESS process buffer itself. To start using character graphics, issue the @Sl{} command @example printer(width=79) @end example @pindex printer() (the @code{width=79} argument prevents Emacs line-wrapping at column 80 on an 80-column terminal. Use a different value for a terminal with a different number of columns.) Plotting commands do not generate graphics immediately, but are stored until the @code{show()} command is issued, which displays the current figure. @node X11 @subsection Using ESS with windowing devices @cindex X Windows Of course, the ideal way to use graphics with ESS is to use a windowing system. Under X Windows, or X11, this requires that the DISPLAY environment variable be appropriately set. @node winjava @subsection Java Graphics Device @cindex winjava S+6.1 and newer on Windows contains a java library that supports graphics. Send the commands: @example library(winjava) java.graph() @end example @noindent to start the graphics driver. This allows you to use ESS for both interaction and graphics within S-PLUS. (Thanks to Tim Hesterberg for this information.) @node Imenu @section Imenu Imenu is an Emacs tool for providing mode-specific buffer indexes. In some of the ESS editing modes (currently SAS and S), support for Imenu is provided. For example, in S mode buffers, the menubar should display an item called "Imenu-S". Within this menubar you will then be offered bookmarks to particular parts of your source file (such as the starting point of each function definition). Imenu works by searching your buffer for lines that match what ESS thinks is the beginning of a suitable entry, e.g. the beginning of a function definition. To examine the regular expression that ESS uses, check the value of @code{imenu-generic-expression}. This value is set by various ESS variables such as @code{ess-imenu-S-generic-expression}. @node Toolbar @section Toolbar The R and S editing modes have support for a toolbar. This toolbar provides icons to act as shortcuts for starting new S/R processes, or for evaluating regions of your source buffers. The toolbar should be present if your emacs can display images. @xref{Customization}, for ways to change the toolbar. @node TAGS @section TAGS The Emacs tags facility can be used to navigate around your files containing definitions of S functions. This facility is independent of ESS usage, but is written here since ESS users may wish to take advantage of TAGS facility. Read more about emacs tags in an emacs manual. Etags, the program that generates the TAGS file, does not yet know the syntax to recognise function definitions in S files. Hence, you will need to provide a regexp that matches your function definitions. Here is an example call (broken over two lines; type as one line) that should be appropriate. @example etags --language=none --regex='/\([^ \t]+\)[ \t]*<-[ \t]*function/\1/' *.R @end example This will find entries in your source file of the form: @example some.name <- function @end example with the function name starting in column 0. Windows users may need to change the single quotes to double quotes. R version 2.9.0 introduced a front-end script for finding R tags, which calls the @samp{rtags()} function. By default, this script will recursively search the directories for relevant tags in R/C/Rd files. To use this script from the command line, try the following to get started: @example R CMD rtags --help @end example For further details, see @uref{http://developer.r-project.org/rtags.html} @node Rdired @section Rdired Ess-rdired provides a dired-like buffer for viewing, editing and plotting objects in your current R session. If you are used to using the dired (directory editor) facility in Emacs, this mode gives you similar functionality for R objects. Start an R session with @kbd{M-x R} and then store a few variables, such as: @example s <- sin(seq(from=0, to=8*pi, length=100)) x <- c(1, 4, 9) y <- rnorm(20) z <- TRUE @end example Then use @kbd{M-x ess-rdired} to create a buffer listing the objects in your current environment and display it in a new window: @example mode length s numeric 100 x numeric 3 y numeric 20 z logical 1 @end example Type @kbd{C-h m} or @kbd{?} to get a list of the keybindings for this mode. For example, with your point on the line of a variable, `p' will plot the object, `v' will view it, and `d' will mark the object for deletion (`x' will actually perform the deletion). @node Rutils @section Rutils Ess-rutils builds up on ess-rdired, providing key bindings for performing basic R functions in the inferior-ESS process buffer, such as loading and managing packages, object manipulation (listing, viewing, and deleting), and alternatives to @code{help.start()} and @code{RSiteSearch()} that use the @command{browse-url} Emacs function. The library can be loaded using @kbd{M-x load-file}, but the easiest is to include: @lisp (require 'ess-rutils) @end lisp in your .emacs. Once R is started with @kbd{M-x R}, and if the value of the customizable variable @code{ess-rutils-keys} is true, several key bindings become available in iESS process buffers: @deffn Command ess-rutils-local-pkgs @kindex C-c C-. l @kbd{C-c C-. l} List all packages in all available libraries. @end deffn @deffn Command ess-rutils-repos-pkgs @kindex C-c C-. r @kbd{C-c C-. r} List available packages from repositories listed by @command{getOptions(``repos'')} in the current R session. @end deffn @deffn Command ess-rutils-update-pkgs @var{lib} @var{repos} @kindex C-c C-. u @kbd{C-c C-. u} Update packages in a particular library @var{lib} and repository @var{repos}. @end deffn @deffn Command ess-rutils-apropos @kindex C-c C-. a @kbd{C-c C-. a} Search for a string using apropos. @end deffn @deffn Command ess-rutils-rm-all @kindex C-c C-. m @kbd{C-c C-. m} Remove all R objects. @end deffn @deffn Command ess-rutils-objs @kindex C-c C-. o @kbd{C-c C-. o} Manipulate R objects; wrapper for @command{ess-rdired}. @end deffn @deffn Command ess-rutils-load-wkspc @kindex C-c C-. w @kbd{C-c C-. w} Load a workspace file into R. @end deffn @deffn Command ess-rutils-save-wkspc @kindex C-c C-. s @kbd{C-c C-. s} Save a workspace file. @end deffn @deffn Command ess-change-directory @kindex C-c C-. d @kbd{C-c C-. d} Change the working directory for the current R session. @end deffn @deffn Command ess-rutils-html-docs @kindex C-c C-. H @kbd{C-c C-. H} Use @command{browse-url} to navigate R html documentation. @end deffn See the submenu @samp{Rutils} under the iESS menu for alternative access to these functions. The function @command{ess-rutils-rsitesearch} is provided without a particular key binding. This function is useful in any Emacs buffer, so can be bound to a user-defined key: @lisp (eval-after-load "ess-rutils" '(global-set-key [(control c) (f6)] 'ess-rutils-rsitesearch)) @end lisp @findex ess-rutils-rsitesearch Functions for listing objects and packages (@command{ess-rutils-local-pkgs}, @command{ess-rutils-repos-pkgs}, and @command{ess-rutils-objs}) show results in a separate buffer and window, in @code{ess-rutils-mode}, providing useful key bindings in this mode (type @kbd{?} in this buffer for a description). @node Org @section Interaction with Org mode Org-mode (@uref{http://orgmode.org}) now supports reproducible research and literate programming in many languages (including R) -- see chapter 14 of the Org manual (@uref{http://orgmode.org/org.html#Working-With-Source-Code}). For ESS users, this offers a document-based work environment within which to embed ESS usage. R code lives in code blocks of an Org document, from which it can be edited in ess-mode, evaluated, extracted ("tangled") to pure code files. The code can also be exported ("woven") with the surrounding text to several formats including HTML and LaTeX. Results of evaluation including figures can be captured in the Org document, and data can be passed from the Org document (e.g. from a table) to the ESS R process. (This section contributed by Dan Davison and Eric Schulte.) @node Sweave and AUCTeX @section Support for Sweave in ESS and AUCTeX ESS provides support for writing and processing Sweave (@uref{http://www.statistik.lmu.de/~leisch/Sweave}), building up on Emacs' ess-noweb-mode for literate programming. When working on an Sweave document, the following key bindings are available: @deffn Command ess-swv-weave @var{choose} @kindex M-n s @kbd{M-n s} Run Sweave on the current .Rnw file. If @var{choose} is non-@samp{nil}, offer a menu of available weavers. @end deffn @deffn Command ess-swv-latex @kindex M-n l @kbd{M-n l} Run LaTeX after Sweave'ing. @end deffn @deffn Command ess-swv-PS @kbd{M-n p} Generate and display a postscript file after LaTeX'ing. @end deffn @deffn Command ess-swv-PDF @var{pdflatex-cmd} @kindex M-n P @kbd{M-n P} Generate and display a PDF file after LaTeX'ing. Optional argument @var{pdflatex-cmd} is the command to use, which by default, is the command used to generate the PDF file is the first element of @code{ess-swv-pdflatex-commands}. @end deffn @defvr {User Option} ess-swv-pdflatex-commands Commands used by @code{ess-swv-PDF} to run a version of pdflatex; the first entry is the default command. @end defvr Sweave'ing with @code{ess-swv-weave} starts an inferior-ESS process, if one is not available. Other commands are available from the @samp{Sweaving, Tangling, ...} submenu of the Noweb menu. AUCTeX (@uref{http://www.gnu.org/software/auctex}) users may prefer to set the variable @code{ess-swv-plug-into-AUCTeX-p} (available from the ``ESS Sweave'' customization group) to t. Alternatively, the same can be achieved by activating the entry ``AUCTeX Interface'' from the @samp{Sweaving, Tangling, ...} submenu, which toggles this variable on or off. When the interface is activated, new entries for Sweave'ing and LaTeX'ing thereafter are available from AUCTeX's ``Command'' menu. Sweave'ing can, thus, be done by @kbd{C-c C-c Sweave RET} without an inferior-ESS process. Similarly, LaTeX'ing can be done by @kbd{C-c C-c LaTeXSweave RET}. In both cases, the process can be monitored with @kbd{C-c C-l} (@code{TeX-recenter-output-buffer}). Open the viewer with @kbd{C-c C-v} (@code{TeX-view}), as usual in AUCTeX. @node ESS for S @chapter Overview of ESS features for the S family @menu * ESS(S)--Editing files:: * iESS(S)--Inferior ESS processes:: * ESS-help--assistance with viewing help:: * Philosophies for using ESS(S):: * Scenarios for use (possibilities--based on actual usage):: * Customization Examples and Solutions to Problems:: @end menu @include help-s.texi @node ESS for SAS @chapter ESS for SAS @menu * ESS(SAS)--Design philosophy:: * ESS(SAS)--Editing files:: * ESS(SAS)--TAB key:: * ESS(SAS)--Batch SAS processes:: * ESS(SAS)--Function keys for batch processing:: * iESS(SAS)--Interactive SAS processes:: * iESS(SAS)--Common problems:: * ESS(SAS)--Graphics:: * ESS(SAS)--Windows:: @end menu @include help-sas.texi @node ESS for BUGS @chapter ESS for BUGS @menu * ESS(BUGS)--Model files:: * ESS(BUGS)--Command files:: * ESS(BUGS)--Log files:: @end menu @include help-bugs.texi @node ESS for JAGS @chapter ESS for JAGS @menu * ESS(JAGS)--Model files:: * ESS(JAGS)--Command files:: * ESS(JAGS)--Log files:: @end menu @include help-jags.texi @node Mailing lists/bug reports @chapter Bugs and Bug Reporting, Mailing Lists @menu * Bugs:: * Reporting Bugs:: * Mailing Lists:: * Help with emacs:: @end menu @node Bugs @section Bugs @cindex bugs @include bugs.texi @node Reporting Bugs @section Reporting Bugs @cindex bug reports @findex ess-submit-bug-report @include bugrept.texi @node Mailing Lists @section Mailing Lists @include mailing.texi @node Help with emacs @section Help with emacs Emacs is a complex editor with many abilities that we do not have space to describe here. If you have problems with other features of emacs (e.g. printing), there are several sources to consult, including the emacs FAQs (try @kbd{M-x xemacs-www-faq} or @kbd{M-x view-emacs-FAQ}) and EmacsWiki (@uref{http://www.emacswiki.org}). Please consult them before asking on the mailing list about issues that are not specific to ESS. @c _not_yet_ @node Help OS, Installation, Help for Statistical Packages, Top @c _not_yet_ @comment node-name, next, previous, up @c _not_yet_ @chapter Help, arranged by Operating System @c _not_yet_ @c _not_yet_ @menu @c _not_yet_ * Unix installation:: @c _not_yet_ * Microsoft Windows installation:: @c _not_yet_ * System dependent:: Other variables you may need to change @c _not_yet_ @end menu @node Customization @appendix Customizing ESS @cindex customization ESS can be easily customized to your taste simply by including the appropriate lines in your @file{.emacs} file. There are numerous variables which affect the behavior of ESS in certain situations which can be modified to your liking. Keybindings may be set or changed to your preferences, and for per-buffer customizations hooks are also available. Most of these variables can be viewed and set using the Custom facility within Emacs. Type @kbd{M-x customize-group RET ess RET} to see all the ESS variables that can be customized. Variables are grouped by subject to make it easy to find related variables. @c Stephen deleted incomplete variable list Wed 25 Aug 2004. @node Indices @unnumbered Indices @menu * Key index:: * Function and program index:: * Variable index:: * Concept index:: @end menu @node Key index @unnumberedsec Key index @printindex ky @node Function and program index @unnumberedsec Function and program index @printindex fn @node Variable index @unnumberedsec Variable index @printindex vr @node Concept index @unnumberedsec Concept Index @printindex cp @bye @c Remember to delete these lines before creating the info file. @c Why? I makeinfo all of the time without following this advice. @iftex @lucidbook @bindingoffset = 0.5in @parindent = 0pt @end iftex @comment Local Variables: @comment TeX-master: "ess.texi" @comment End: ess-17.11/doc/font-cor-s.gif0000644005071500004540000003124313202324173012466 00000000000000GIF87av÷?? / ///?? 0000?0???@?`@@/@@0@@?PP?`P o/oo?@@@@O@OPOPPPP_P____`_``OooOpp@ppOOooP``_oo_```oo`ooopppp€o€p0€€PP`ŸŸ`ŸŸo€€p€€p¯¯o0OŸ¿€€€ŸŸŸ   ¯¯¯°°°¿¿¿ÏÏßßÐÐßßßߟààïïŸÀÀ Ðаïï ïï¯ðð¯ÿÿ¯àà¿ðð°ðð¿ÿÿ¿ÏÏÏßßßððÀÿÿÀÿÿÏÿÿÐÿÿßàààÿÿàÿÿïðððÿÿÿ!ù,v@ÿ©H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ%BT¼ ’#–,W²4Aâ$ )R°T"e‰5“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·pã6õBe¦Ý»xg²@7¯_»{köýë7p½0eÒdú£±¦zñurŽÉ–-'Õ,˜rg¬šC{Æ|Ùs鹦OoNýy)g§˜G“Vúúõj¹¸sëÞÍ»·ïßÀƒ N¼øÖÁ„ñî €psÄ‚ëÞ@z^Èc΄Jݸ÷ïàËÿO¾¼ùóèÓ«_6»bçxŸû}.?¹ýûAêçÕ¿ÿtÿûß}úñG`|˜ ]ÖMgàL&ø`"( æ·à†vèᇠ†(âˆ$–hâ‰(¦¨âŠ,¶èâ‹î¥Œ4Öhã8æ¨cîèã@)äDiä‘HÞ%£b±5éä“PF)å”TViå•Xf©å–\véå—`†)æ˜d–iæ™h¦©æšl¶éæ›pÆ)çœt‚9cŒÏ-9fÕõY]l~úÉ%_`RÇ'¡^ :™¢‰:i(Ÿêh—ŒBºè¤OVÚd¥š2úè¦T*ú©–œ:*j¦‘^ºé©Qjz¨¤¦Âà * žbJ«¤®NÉW­«Ê:+¡¼úúª¥¶¶úi©³&›(²Âªºh®uF+í´ÔVkíµØÞ_ „íåÞžÎæŠ(´UîÚ'©. 쨂By®º«¾›e éš*¯½õÒz¯¾£âÛ¯¹ùúç±ïÊ›î¾ÏL0½þ&œð£·›©Äñ®K.¦ª°Åº›q»«›/Èûv jÆüöÛ(ÊØ¶ìòË0Ç,³ËT°`óÍ8ç¬sÎy&îÌ@-ôÐDmôÑH'­ôÒL7M×{z„žA8mõÕXg­õÖ\wíõ×`Ë©í†RÿSöÙh§­öÚl·íöÛl½`Ù>W ÷Ýxç­÷Þ|÷í÷Ýr'H÷Œ¨:këŧxâŒ7îøã󸀃3)«¸Ä’Z®»‡ê*æ™ë&âŸgÎj訧*zá[v*%膧¾ùìó²n{²§§ {ìªËùïÀ¿÷äVþ³ðX/ŽüòÌ7ïüóKïŸñvCoýõØg¯ýöÂKßõ܇/þøä—o~ÒÞãþùì·ïþûðÇÏeú÷­/ÿýøç¯ÿþÍÓoŸý¾™H7(5)o€«+`Ë3*+º‚˜ÊŠÕ:~‰t¤`ÐxAÍQŠvm# ÿ¶æ¿äwì`¨ZEGÁҽ΂lVîج_Áðƒ…ò` {Ç,²ð…½K¡¯äBÞp‡Lø²"2Qv; ´ÆuDVP…G$×A8B§•°[ÿ=#\¯Ç²1šÑL&C[Ïø¸ª¹Q&p|£ãHÇoUxÌ£÷ÈÇiÍñu ¤§V·5i±\» §z;×Ñ‘†ƒ¤# Ä¢að‰ŠŒÕ#}IIÎ0ˆV”d xÅ*öñ”¨ W)È8RŒ„Ù뤼Y޲o¶œS-MIJ$–²’© ¦0»ÄÊb ò•–ƒÓ–ÉÌf6s˜ÐŒ¦4§ 7cZÓ•f‹“3—É€n>óvC¤Su8­\r‹ÀŒ%8A‰C^Róð Û5ç‰Ìã¹i›Ýd€3×9IvnR†ŽL§?ýÙÉ!R M$A¹˜&Q´v+Œ§D'z¶y¶RŽõ¼xã=·ÉQŠzô£ ©œ,jÍŒ­S“YJŠ&s*ð¥5äJ{ùKLŠô¦8I/ª˜lmœ£W°LwÎ~òn‹EECÁ™"q¨á¼eùéRšZ5§XÍ*vZL“­ªe«•Äê2…Fõªr"«µÊÖ¶Ö‰«ÿõª[…ÉQŽ 5sÍ«^Ã×UÊuf ]$mjT"œf%â]%¸XrõX1¥§ËI¦ЙùÜæbC¶×Îz–J}=¦Oj¬1ö´ãjPU° jð^;š 6†Zá5e“Z£/Ê[v63³šÝ¬k?KÜâN&´ü«q¡)Üá.÷¹yEn• ÝêZ÷ºÃÜH“‰Ýîz÷»f Ü]ÿrBðš÷¼è5ßɻݙh ï/|ç+ßúÒ÷¾ñ5€}÷‹ßþò÷¿þ 0€,àøÀN0‚¬à3øÁŽ0„',á SøÂÎ0†7¬ásøÃ1ˆG,â“øÄ&N1þŠW¬â˜Lv̯fLcÓ·Æ86€õ[`¿×Çý2Q<äûùÇðåñ•L…!3¹ÈGNò~™?‘Ÿ|‡(Ĩx u^>G—PåÿãyÊ+ˆ[žw|çIŸzÿ<þò w|ædúÖ³ÞõÂ|ŸT¿zÄûþ÷À¾ð‡OüQ­øÈO¾ò—Ïüæ;ÿùÐþ‘F.&ºô\dSö¦Ûˆ¾iûmÊ>øã4þz?ßèoÓ¼•SobÁnû ÌÝ`YçDµžSŠ‘Ýma{Ó£¾¶¨¬eYËòʲV1ÅAïçIù÷O…ÕCKô/“~ßµ~J­Ò~ˆJ·u9¸ ‚"¸&ˆv4‚(˜‚*è%%HH'¸‚0ƒ2Ø$-Hn3xƒ8x5øÕ€^PLSU@-åWS¤N£ƒ4E˜ƒL¸%;ø‚=H?èƒBd€gÅNCØîw;ò·CNdYõGU øXX…õ…û×…h%JKØ„nx%OÈmo8‡tˆ^qH}u˜‡zˆ]wXH{ø‡€ø\}KXˆ†8WÿƒÈ]‡¸ˆŒ(R‰hO¼eçÇÏr254Y‘UƒBµ’XA䉎¥…-Ô‰—(*¥Yüô‰¨X‰·)šHY©˜DhØ9®¸ßG‰úÇ.§8heDYxKB˜„2¤:C8\Vxnh7wå/N…%ÉÈ}C[¨Ò}½„W$0Ù˜TÃ/W˜V±Å2³Z“2Ïø‰#“R‹s}S1¬¥Z1óŽœEDÖÒZS2Ûh[œeLµŠRE~Ó¹U½Õ†ˆ5dÃØùNÒ…QxˆFc<æ„g‚‘j4Uî,õ‘Øä‡ Õ‘²(† ¸†-dVEY'¹AÙ’~܍ЬH“é‹3y9&9&Ñ’(’ƒ4‘>9”D‰G@ÙS$ù&uµMEÙ”N™7G …J‰YÞôM †)Y‹@åKE€³‰õCÿÚ—“½5V1ù”j'Q)‡jRWÀ5d)Np¢‘º4…“X-’Ø‘kÙ—iÒ–Bé—‚9˜Ø˜ÿI X¼„2í¸Z›(2ŠÙ˜•ަXŽñ(.ðèŽ5Y¼¨Žiy„)$V=I˜¢ c:gAZ_‡ffUVlͶ£¶lnFl/j_8Zar†d=Z¥Jj¥Xz¥ýÅ¢ÿuÓkQ ¢Q:¥M ¥ˆ–_tf¦A†¤K `5J¤dš¥p*¥vV¦ºæ¦Cz§gª¦hz¤Ij¤tJ¥Z§c:¨ÊægÁöekƤÒö¦ª£Œ§ª¥‘:© Æ¥3B©˜*©šš©œº©žÚ© ú©¢ª¤:ª•zk§)¡ªºªÕB¡r'•¬«²êGZš°:«¸š«ê§¹gBaäoÀ¬Â:¬ÄZ¬Æz¬Èš¬Êº¬ÌÚ¬Îú¬Ð­Ò:­ÔZ­Öz­Øš­Úº­ÜÚ­Þú­à®â:®:£xÒw®èš®êº®ìÚ®îú®4B5L13 1ðo—¯úº¯üÚ¯þú¯kFX.3áxÇtK!5p {°(`ðX€GàW×r`§r`g³s ;sdwr$˱&{vku"çr,°.û²0³2ë¯q÷?s§{Båv7=u·tòʰB«,`-àËuXW°d÷qRç´­r²vKs,«uTÇr!ûu#;³b;¶d[¶f«5ë«Ì±xE'Hzx°?«p]@/§_'v( ¶1—·ar(ûµ-R›²f¸g»¸ŒÛ¸Žû¸bat¨Wk;zJ'¹ —t„$·ÿuà:Ð?° ¹¦{º¨›ºª»ºpáÇʯ+±ë³æ ¯¶{»¸›»º»»¼Û»Cr|•7{–[{›Ç-—W"ãE{ B/ó!y "¼!B¼ÍÛ«Ô[¼³'¼ÐË#Õk!¾Û½Þû½àË|À;×ûy¼'{’'½“z°Gz±·!œw¾¥—¾R¾'¿®§¹­w¼¥Ç¿ÍÑ ê«!±w¼íÛ{<‚½ú«{’³û‹¾Î¾Á<ÁB2¾Õ {\lÀøayò»Áð˽ók¾©À‚tøÛÁ¢ÁÎ Âò¾ÊK¿ýûÁ¢7½$ÌÁ â¾:Œy8LÁ>üÃ@Ä!bÁB\į¶ÀFœÄJ¼Ä˜ºúÄPl'Áºc}Q|ÅQü ¸cÅйX’_éi4â„j³•XLQÒ·ì«8©“Ú÷/ÍHIDe;@Џ+Ü™‰5 –<™’œø•xì•™TEŸô¡”EµØHŸ™—‡ÌÈ|ÜÇi 9Z…‡ƒ—¸è+§sŒö"É …Šh9—Z C³ÔšèIÈÁEˆ¥šÅ’Œçh–oŒ…¼É†¤Œ‹Œ´Žß8É\Sɺlƽ¬‡Úu«¿<̽ÌËÄ|Ì“lÌȼÌP¬ÌÌü̳êÌÐ<ͪ*ÍÔ|Í jÍØ¼ÍªÍÜüÍ×éÍà<ν©Ì±lÉ”r0VšêL-Ö©žç™›ÏIÆä<¼šxÙPHžÜ§Ÿß¨‰ª,…Юù@t}¡<›t*þ|U²øŽ^X˺¨Ç¿äZQôÈ·iÊ l“¯ŒõlÏÆ÷ç\Å]œŠÅ•™Écø~š¬›W¸Èšt‰éÒÐ(Ó­Ó¢¼Ò¿¨€í]•Ò!=Ó3¥˜—¹ÏA]Fº•@MÑ%³˜í,ÔæÉúØó(X+…Ô"™›sÔNÍXÎX™›I™’©SR¹Ó{%Î eÕf½Ö`ƒÖlýÖéÖp=׋(×t}×€h×x½×u¨×|ý×Mè×€=Ø3(Ø„}Ø*ÿh؈½Ø!¨ØŒýØ(Øeœ—,)ÏiÅ›˜}Òšœ˜l’\ ÏQVD™ž¬—äϛˊuR›m‡÷L9 ‰ÆÄ¨ž ½ÐXÉ…­œÇ«Óžˆ4ÇËY›gEÓàIS¡YÙ8’sÙÈüƒ¾Íœ”ýܲmÈýTÜž³Ü¹ÛÆÜçeÎÏ=ÒÈ-,hÓ²éÊœä‰KeݽN¦\ȉ|Єœ†è™ÄÛ© š÷¨Þ7$Üø÷BÑÆóRÊÕMÐ$ÝÚæµŒÕYñ-Æw¹@é½ÎåÔà„uà>á^áþÔ^ 9ƒLÝMV¾ÝÏJÅ=â*( $~â0hâ†ÔT¯ì8¶ôÎaÅÏŒróâÞÝ¥â…Y«%åÄólŽê¸0 Øð2äX-ñRä¸5ŽüáÔ¨Úz9ÔùãN5Õò]ÐòHÚ^)°Uš9™á Ú1ãñ£â-µ“¥õÔhxËÍ­ÑgiÛ-Ùߤeãúœæ£å·ìÞ™‰I/éäa.æïÿCæe~ÓÍÈj¾Ê ÞœƒËfÈç÷mã±Iè£hè§,àÕˆç–Øç=®Ý~žã@™ª™Þè0éÜ©Ý80.Š‘ŒéŸîß›ž=€¾ê®no­Î&üi•¯^ëÔëk—U)—¸Yêb\†É™Ù¢þÛ(=Û²¼›šnëè…ëoùžûÜéDÖJ„+a\/íÙIÚ“è\]©àŸ³YD-1‹,Ú5®ìàÅìi‚O»¾L՞ܘ“ѽçl>ïëIìÄ}ïÐ îå™FãŽÞÉnîç®ã¶ÊãgÂQÓ ïPո嘌KM[æ}µÅðáþ휩ŸTíð]—Ïhߎð݆îh2ëÌXe ò(6"Ÿò,ÿ\+ßò0ÿYý/ê ^—Ïèîá ®êÆÎÑþ^ó1]3ïÎÝ…w›29Ý{ ÈÃ=èß}åþÛÂÝ@ôÕ5ô.ÝŸüÐЮô3Ù‚<ê Uï7Ï‘íÝóUoõ./ð]Eð×âë`nêNÃÛ š?Ïój¿öîöyß÷9…õÜLòË„à~/ôlW|΂?„_øWø~•øDoÚc á|foY¿µîÌÔøŽ¯÷?]’/-Ý~èFç)Ðÿžõ¦¿P)Úìíßšâìý©ïŸúéé4Ïôç½€©LJ½ÿUïíú©?‹‡„ú5DûÍäù·_\€ÏúZCãð³á1)œßùòÙüËÿõüؼøÌ¯ýžÅýà?þ§$þäþydþè¿þcäØìÿþúãþð?ÿñC<Ù[ÂLÿúFò¿ÿáEà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~ ’ ’%MžDy@ ,PñÂR •™5iÞ´™çN=yþôèP¡E‰5šéR¥M™>uêT©U©^µšëV­]¹~õìX±eÉž5›íZµmÙ¾uÊ‘¥K˜2áR1Õ@Ò½wÝþEÚ—o^À…ý6Kø¦Æ+¶éX‹à’)ç¼üÓ²PÈ\3NLôóÛÇŒE×]¶ôcЈ]·†ýZv`lÚ7å¶|3HáÔ8÷öžüpgá‘y~6³bÆÊã­<”øqçU)7Ÿ½6ß ‚S§ Þx÷¨â—NG 9æžÉÃë$xá‡'¾xãG>yå—g¾yçŸÝ *¦§¾zë§wIúë·§Þ%Àµç~{ï[?X7ÀA ``J A‰$˜(BŠ,¶€"O(pÿ½p¸‚ 4ˆá ˆÀÁ)ä{ÉA'Á6p€…£ ô4¸AvЃaE8ÂÍI/hÙÿ£Â ÷Ám|®#&Òðà@v`"X ü» )8ÑFŒà3˜D ±‰O´à+hAŠ\â‘HB.vÑ‹_cÅ8Æ.šÐ…0ãÉÔˆ2Ü|¯…A`#KâøÂò±¤pØAw ƒ <À@ rHEð€OÔbâ¤hE&6Ò[tb# yÅIR’Ž„¤%ɸINvÒ“Ÿe(CiÆŸ¡PŽ)[I£Ü(­vÁ1Žm$ßßÇZ汄€'8À&’‘—\œÉÈab‘ˆ¿f29ÅCúrŠ“e4¥9MjVÓš×Ì)}fJ8¢^+Ô¦ª_©ÊX:ªp,¦À¸ebò™Lf<™D"ó—ð´§<øH-Ö“’Øh@:P‚´ƒáä7SY­…ŽO›­l¥´è(KÁ@Z<`'$óYL]&‘žÂ4b¹Ï(îS‰uf>;úLyŠT£…iLe:SšÖ´q¤\ãB¿™ÆœF–8Õ©+%ºB®@ˆV`S¦6Õ©O…jT¥šÍ7nUí™C±šP¢ÿÖñu…S6À€©–Õ¬gEkZÕÍž¶Õ­oeààÚSÀu­wÅk^õºW¾>Õu}l`;XÂÖ°‡Elb»XÆZmm…ld%;YÊVÖ²—Ålf5›´Ç¾+¨Aeå)«ÚÐR´?;­ÐR[Úh­Ö³&sškyFÚÔʵ¯-íg‡ÚÕÚv³¿np…;\âv–¡°íæ)×(N6®$•> mEëÊ8Bw·ë‚îÉZÛÚqú¬¶îz.uU‹ÊìúÔ¹Ì ow{öJ”-4¼è%Úiå›4Þr·¹ÊU/qõ»_þö׿w3îºë^Ѿ·ÀÛ5št“«SM·fðŒ[ ûÖijF0uÛ›á [x»6ð{#<ÞÙÒÖÖp…Yû_·ØÅ/†1ÓŒ\×xÁÇ0‰<] _wÅ n0o‹cë8Å?žn}…ì]å¦XÄH›oni 4%+xÄ1Ær–µ¼eϘ•jüò“«a[wÈ;†¯}ŒÝêšWÍ»].sÅõ‡Ì)#8ÒS¾ðecäÿé ù¸Ånð±k¼ìZßùÅ·Žp²s½í g;ÚãwЏûí]úÝç®÷}ïÝîwwØó.‘“Ëï]¼ÚϾöÃËýæŠÇûâ¿xÆSÝò—H±Ûú®¬CýèžïxµÓN÷ÈÏûàhëD&Ÿzû|ã‘;Ø¿{Ãÿò°½é÷ýyÜWžß¬¯üí¢{×^øL9åƒ>|À»uèÆ¯yò}ŽyêS?àgt]Ù‰üÑ7Þí¾'=ê!Or‡]Ùä¯÷ï!BþÞÛï?üéÃßøåëþ}gþÞ˯øú{Ÿûßÿ¿”¼ÖÛ¿ãË¿êCÀ»¾RJ¥W+=·c¿Á›?Úƒ½ûck?“³=™#< ì=èÃ= d9Ç›¼ðƒ¾<;Ì@ÄC¹ù{ºícº÷³¿œ9ÔóÀØ»9Á«9ý{? @”AŠ[Á ä>ã+Á4B[@«Ê¾ä¿#tÂz1Á'”Â) ™¹²Â™t*ÔB€‰Â-ôÂ/d˜\«ˆÎÃ24Ã3DC0L¬ÂB^KÃ7„Ã8”Cn[C®ZÂ9ÄÃ<ÔÃ=›:Ì™6D6>ÄA$ÄBt?Ä:@7CdÄFtÄGDäóºç{ÈâË9›+¾¤ÀÚS¹†;9l㹯K¿ÙÃ9’ÄÉ¢ã½é Ɇ{¾ÐûI§ÓI „ÉóCA ”¹¡ÜÉdJmÿéÈ@d<~´·l½¨³È„¼ÿë¿©lI<Á >õËÊö#Àô?ŽS=úÛ@BðóJ²LA‘lʹ얧dçI¤¤JT¾®,9éC¿Œ€¹„|K²ÔJ¿4L¡¬Ášl«¶ìI–L̼ÜÊŸ|=·,=¼œÀɤËÍÌ»¬Ä|»~L˱dKÓ\Ë«œ;´Ì²DLŒB¹$@×LÔ¼@Û„Í Ô>÷ KÎôM§,E£!CùÛM†3»DÐuÐMVÃ…Ð ¥P^ ΢ñÆ ÕÐ ­> åÐÑ~óÐ%Ñõµ5ÑUÑ´AÑuÑ™…Ñ¥Q‘ÑÅÑ…˜ÕÑõQáÑÒ!¥— %Ò#EÒoÿ1Ò$eÒ&]–%uÒ(•ÒM¼P¢¹E…[ÊîSÍõƒÌÚü›´8[Mx³É˜ìRT:fá¹è«µ1=@‰)Ío„ÒúÌÍ:ÅMã³ÄSÑó:(ìÓ×”À.­Î½¤Îõ“½“ŒÌl¡SüãÍ0eÔv[TˆSmÌÏÌ=A%TÜÔIäKɦÛRÊ4ÉïÊÄÄINH-U=és½¨4Ó3]:™I¦[ÅÅ8zMáä×áíÚÊýa –C Ž_Új%Z„Ô¿¸4OæÖÖU;(`xAÙdbðtb”bV¥µ]!ÎC"Þ`ñ…J ®à$FͬÙ+¦À‘e»-æR¼„aݵEÚ±UcžíÀ®%ÎoÝ\äµ`ã8ãð5b Fâ6\„Åã;®Ê:=ZÎÚÓuãn-á×eä­uä¾›äÔb<ä!ãP^ÿßö`_¥¸,ÝÉŽËɽUõb Þäõ]O6æ7dõ-ä}QÖˆüf© çÐg‚ Þl¾ÇmöÞnFçv>Ruž_RvçyvRxeþí•)Ðç}æg~¦ç~O{æ`|æ•~6è}è„öMŽ^vÞˆƒÖg`„6ÍsVSb® ¾àÏmAãf…ŽO†Þ߃üˆ–h¦Niî䯿]YT.f½Eá®`‘ède‡Öˆƒ–艦h€|¹_6ÊimÕ[þ;4=å¶>ÕWmA^MVØ,Ucíâ^éáãiœþM’VæÏôƒþé~.Ô²½ä\k>˲VÎIFcÄ=d˜Ncbni­Îi†öæéŒë”Vis5j[ž[¬8†åŽÆT?¦i^lN¦ëÍäê»Æˆ¼ê ^ÛŽÎcƾlZ}dÂj:ŽZ»Íj¦ÍƶæÇ¦ËÈ–ç]ñi½Öç;Ýb4ÚÃË¿¾Úã¬d”ÅmJNÔ»}k«.l¬žkÔ^h.âÕÖ”®ì)daÝבéáÞháiâ†lãcɾˆžׯìéþRèàÓnê¾iëžKÕ&hÖæî½Fï÷Gõ6é¯noˆïûÆFù_üæïÕï2îï/Ðÿ^f7p%p¯Èó.o]Ó~pžZò¦`®%íï>pxÿLpgÆðïp—†k3aL–ëêÎðwÜðo©æ™ UÚ†H¾žašýÁ‡íÈmëÛ|Z\®Ø9l ßñOmì&däv–ÇN·6ñtÍñÌÎíµ–î‹åìÑ.qÍ6äæòs\ñï],¼ŠÖØ&·í1ïc Ÿò¯eWÖóq®õâ(ÏrtÜòŒü`g•mvòÓTkH–jÖäáæ]Znss-'rn6ò#7e'‰‹VUWVÖ¾&ºV¥t óë‘$»r6ìEVš4ïôpŒs.‡Ýçö=f5iõø.ôu>ô–)gáõVGïQ·õ\'H\×õ^§G^'îúÞg+ôuB·ÿëX×ja×gb/vqvmùóÛq‡ai¯j„Øg×6hfovW?öõ†öu«Ý+™˜žf¶ägmçgnïöm|vD?álê_}êKe8fôÅf]ô¢NS¥ÓÕa}b~çå×Lwu_ö¹jwoõžïHNkÏÖíŸóÖòbÉó fë Ek©íç°îgv_øünø{~ømélEþl|X|usÆ•øÁ>c‹ÆØŠÂGx‘yi|wUx•Ÿø ÷Ú¡Ç·˜×óíÜÙ=ætƒÀùåNxßùiìyŸÁ˜/óÖÜFÜq™Î'¿úÎúwÝtá;x§zà‹zž/y‡ßïp?õs,¶±WØx;xˆÖù´WÆ©§z}»ðmCuÐÍv³v…Ç{µÿö“·neŸ‚»/üaQÔ{‘V|Æoü`|üÉ·|U¬üË×üPÌüÍ÷|LìüÏ}G ýÑ7ýACŠÈÐÓg}G¤ÝÖ‡ý7|ýاý2œýÚÇ}-ü¶œJDíÎýß·Pœ14_ÿDvà7þ/¼ýãWþËKþåw~D[pSÛç§~-T^¸ršÐ‚šØ~íçþï÷þðß~ðñïþòGÿóWò_ógÿ÷wÿøOøŸùoÿúÇÿû×úßû-T´X @„lÈðሠ':”X‘"DŒ3^ìÈñãÆGzY’$H”&SžlÉòåʘ*gº”Y“&Lœ6sÞìÉóçΠ:‡úZ”(P¤F“%èå)Ô¨R§R „*^¬6ei`)X¥b»†%;–)Ú²iϪmËö­Ù¸k庥 w.ÞºyïêíË÷¯ÝÀ{û%¬…*âÄQ­bÕjµ°@>%Ÿÿ” ù2à”6S–i93fâsü š(çÏESÃez°kOåŒ2é׺içæ½{ôïÞÀQ*.^õjÖ­AFãŽ9»£éáÒ…3Œ®YKsßÚ§7i}avì7ƒŽ}6yŒán>˜¾¢ù¥ë»ý®~{äÊìi[o?}Ü8 €Rç–q BÅXr¦H©ýwg¡I^l¬A¤adäUHámíQ!¡GóMdÙ„/¥6¢ˆÔ|ñ=g|7AQŠјÔ!RØ#A$:Ô^l ]¨RŽØ½èžWãQç“åÙæ^{?îè"–.¹e–-ž¥ ‚ :¶ÜIЧdH”™š×Ž‚GÓwèUW^™jW¢ä¦–]r)té9åG¶y·’¡{¶v¨Bæ­ÇgA3ndâoN·f~ûI׿}Têè'¨}Šê%©^f‚b*ga¨.]H¢Žk¾e–fú)EƒjÊT‘¦úÚ*ž…Þ6T¥ÃÖ¹¥y¥©’AÈ쫽Ú*R±t™ù#‹[>:Rži– ,¸£þ*îk¨ÿ§*W/V;®³ÜÒ•©2È÷$q*\]vwÊt„rÉJ±Ë ‰ô­2ãZ"~Ì2Íê½7´ž9{ÌïÖ:{ÈŠ‘ùå›þù>ûí»ÿ>üñË??ýõÛ?þùë¿?çcZõ?(@­< ¨À2°| #(?ÿ °‚ÄJ%¨Á r°ƒü C(Â"‚ -H@䌉„.|! c(ÃÒ°†6tŸ UhA ÿ²P97ü!ƒ(Ä!±ˆFÄ_u8@ÊÎ*G|"£(Å)R±Š6D!³¨Å-rQ}=t¢Ã(Æ1’±Œf<£ôЧÆ5’Ï‹M ã(Ç9Ò±Žvb•@&6Žwü# )ÈA~yÔãÿøØÂB2²‘Ž|$$#9•C‹:T¤%©ÉMr²“ž<"%‰I0~²”¦<%*S¹ÀPêq”~T%,c)ËYÒ’z]¼%.ÝØGDò²—¾ü%0ƒ)Ìa³˜Æ<&2“©Ìe2³™Î|&4£)ÍiR³šÖ¼&6³©Ímr9¹ü&8Ã)Îq’³œæ<':Ó©Îu²³î|'<ã)ÏyÒ³žö¼'>ó©Ï}ò³Ÿþü'@Z΀;ess-17.11/doc/font-cor-s.jpg0000644005071500004540000010135113202324173012477 00000000000000ÿØÿàJFIF``ÿþSoftware: Microsoft OfficeÿÛC    #%$""!&+7/&)4)!"0A149;>>>%.DIC;ÿÛC  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀZ"ÿÄÿÄV  !1AQU“"STaq¤ÑÓ25‘’²Ò#34BrtðRb‚¡$±ÁÂáDVsu•6Cdƒ”¢³´ñ7ÿÄÿÄ2Q!R¡Ñ1"Aðaáq±Á2B‘ñ3ÿÝ(ÿÚ ?Ù¶»k± ŸÄ¡AÃð¥b.ÌJ²4мT¤2¨ŸœO¢Õ FÕm¼X‰’æÄ<[U¬y·¯ZR‚¡öV½ý´<ëŽë.)µ¥.YH6#Åo¦«°•Iƒ±iÇ^ov•¶Önn¼·>²Ö½³‡—Šâ˜›òûßæv˜füæó¿µÌ_ {s?fœŠçB^PA?kužÙ=ŠŽù?µ\[mñ Ww ”ç†4§ C²[Ä Á@¤Þé:eµÈ±«í·Å‰`YƱÊwgâÞ †¢µg‘ql¦öë§³‡¢iL;Lþ²ÌÌý¥3žÙ=ŠŽù?œöÉìTwÉøu³ÁÙìùŒÌ’‘…aз¬äYÞï,˜úƒagB~*«‡ Æ6‹ÄÙaiÆq‰8nY2Ó&.s¾u%DoÊE“¨)Ðêk1O 7µ¬þ|s>­Õ¼öÉìTwÉøtç¶Ob£¾OèsbÎØÝ€ÄY‡%ø“YÚCrZ»<ÒY%7±¾S|À\õ›ű……œŒGÅçãŒ)X›8zR—R,u> ·Œmo˜’nzèpöš¢Ž_ÖRòÍÏlžÅG|Ÿ‡N{dö*;äü:l¾Æv\ØÐ±\8|Ù̲“à eX+jÉâÉl,€ÐZ²mIÃŽÈ*@Æš‘‰An$˜r=‡æ¥Õ8½ë%ÄYJB3Öo{ £ÃgËw•¼îÇÏlžÅG|Ÿ‡N{dö*;äü:cXŒé]ýŸ0üÇÝiؘl‡[„¥n—+ ñQLÒê<öÉìTwÉøtç¶Ob£¾Oî]Jz§¼ù3K¨óÛ'±Qß'áÓžÙ=ŠŽù?¹u)è8~žóäÍ.£ÏlžÅG|Ÿ‡N{dö*;äü:åÔ§ áú{Ï“4º=²{ò~9í“Ø¨ï“ðë—Ržƒ‡éï>LÒê<öÉìTwÉøtç¶Ob£¾Oî]Jz§¼ù3K¨óÛ'±Qß'áÓžÙ=ŠŽù?¹u)è8~žóäÍ.£ÏlžÅG|Ÿ‡N{dö*;äü:åÔ§ áú{Ï“4»–µû_ŒáÌâ8~Ê6ìW¯»YœÂ3YE'E$ ôT¾\Û¿ûž×þ£ÝPv>Kÿ³\ù/¶ÃHKÙœqa)}`\ŸM[CÄ bü ly[»gܺ•å¿ ØéÀý•ðñj¢ŒJ©Š#”Îþ]"ö@‡µg>?„EÙ6œh­h „p BŠk|d‘~ÚV~\Û¿ûž×þ£ÝTkââÛ+³pfµ½Žî)3:3ÞÊ”F ƒÄ ýNÊ`¸9ƒÊÃa–\¥¶¥oV«¤°éµ”OHÏRžˆïål“…mæÓãr&Çöe§Ü€ànE§0…]CBR¾jµáV\¹·÷=¯ýF7ºµÏìÇõû]üÛ_ê‹ÊRLxV^R¹ÏžÿªßfͺͦòßáÍmk¦%TSU¢ˆøþñºEÛ u#jclþ'ƒ5Cè.\Hiì©Ê¢/•6×)Ò÷é®#Ž)KDZ­EJT§I$Ü“˜×N™ÿû4åÿÊåøÏÓ“ÿ™sñç‹Ú™ˆµãüÌ}ÖƒûWÀ1LrlMŠ_Ü¥[Ë-)Ët·n$u¡rØ;²‰Ùõ`)ݤ{}Fmu®©ˆþÚ¯áGá­OÅd£8k3ðøŸ im‰H*[ªZ–›'ÇO ƒ¯n8™Š)¢b&ß>Ksrÿ;QÙg¾oóU‘Á´S ÀK¸‡‚î·;2ZÙrçµ­¥« 5´™Òš}Ô-–RœŠi¥•©e×R.T@k t(ðákCRØKì/:ÀØ‚Ђ ƒpAÔjôÏú–$üÓŸ»9!È•²»p·£>¶$©Ø‰B#¬ËMÙJ Òshánù/e6ßB1‰2RÚ–´e!A*Y̲.­ ާ¬×WÅæ/Á§Mi)S‘£¸êB¸”’/èÒ£Aį érq8ØA †Ù°W÷~z®MÓ`5צâžå‰ÓŸ¹’í¼ûFjKò[wCò2ïœLðæQdæ9õ°Ð^¼FÀ´O¾üS9‡d¯;ënjR§U©ºˆ^§SǬÖðv±´;%e$´Ô„´†‹%Õ$ø8*±ñKÇK]^-½;Op¯¦?ëù2C‘á[=·x*Ý0"¸Ú_IKÍ)Ö–ÛÂÄYhQ)P²x׌Cev¿Ýï°X­îïoj3½¸äµøtðúë¨ârߎb1v—¥¿ºJÝIRQd-d”‚ ÑqoÑjŒÖ6˜É}¼MCzÌ¡*; VõE¤º,˜G¤üÒzmOqĽòÅÿ§òd‡4^Êm»Æ}lIS±„GpÊAS)IºBNoÂÜ(­”Ûu"ZÄ’™ª ” ¤Yõ˜øÞ1¹'^šégh#90ÇiÀ„îØq.©µ(㥲‚,2ªé¶¦àGŠk)Ú)([‹–mHℨ…%DYIº“ã pocWܱ:có÷2C™?³[y+¼!ðÌžžbNû'ÍÏuxÖè¿ ýù7·‡÷&~ÍàŸ¶'õOç|Ïðð®žqÜ42—U ¤)E$)µ"Ö¹RHºT@ßQSê{Ž'L×òd‡!of¶ñ¨ÉŠÚ&!„´¶CI˜ÚÍÖ›fà¢#¦Õ­ŽÛ&"¿¨o¶Äœ»æ“%.e7NašÆÇQzê8ö$æˆ{¹c 7KzP%µ«ûÉÔ”Ǧ²a˜¢f2Â^)ºR2•Ô6¼…Äÿ…WJ†§E O¾å‰ÓŸ¹’Ò.ý ÁCHˆgGC RKSR„¨…( /@Hõ+ñ/µnâMÅ0NVuÄåQ™,“q` ÒâI jmjßµ ‘5 ÆL»)†st³p¶wÙþ´Ù6ýßœ­4©Çhp´¶· …åF[ÊÿH ‚AFž8º’.›uŠžã‰Óü™!ÎÙ­©nK2°­ŸFû9¿K b‚•qn*uVÒãKq7¨Îì¦Û¿ˆ Eæ$¹1*J„…JApÛ)Íš÷õWYg‰"S‘šx)Öïq”€lllx*ÇCkØèljM#ýG?ãü™!ÅÞØ}­’û¿‡¸ë®¨­n.B ”¢nI9µ$×;QÙg¾oóWV‘'FÐdžÛÑgš[ÖS +°EóÚç9±¶–àjG,áâBØT€‚ÞlËZT–îJ€YI7Üe=FÚ÷<]£¿“$9Ȩì³ß7ù©òj;,÷ÍþjêŽímì@Ó ¸ùCþÚšSh 8¼ÖP ·Ç†ŠêÒÆ$Æ'2]Ž¢@VU ¡I=E*ƒb£¦žç´wòd‡ùµ–{æÿ5>@íGežù¿Í]®µÜ'™7s2 ÎR!ïÌ8h!Ĭ§0A9Õ®„p½þÊ{ž6ÑßÉ’ÛäÔvYï›üÔùµ–{æÿ5u‹ÉNü¤ËÃæ¥ B"5÷mæP +Žˆ,œÂâÿ6×6d‡eC¸üY¨„=øŽ»\ÚÆâ×@íGežù¿Í]®”÷@íGežù¿ÍO;QÙg¾oóWk¥=ÏhïäÉ)òj;,÷Íþj|ÚŽË=óš»])îxÛG&HqO;QÙg¾oóSäÔvYï›üÕÚéOsÆÚ;ù2CÿÑѾ@íGežù¿ÍO;QÙg¾oóWk¥}?sÆÚ;ùc$8§È¨ì³ß7ù©òj;,÷Íþjít§¹ãmü™!Å>@íGežù¿ÍO;QÙg¾oóWk¥=ÏhïäÉ)òj;,÷Íþj|ÚŽË=óš»])îxÛG&HqO;QÙg¾oóSäÔvYï›üÕÚéOsÆÚ;ù2CŠ|ÚŽË=óšŸ v£²Ï|ßæ®×J{ž6ÑßÉ’SäÔvYï›üÔùµ–{æÿ5vºSÜñ¶ŽþL⟠v£²Ï|ßæ§È¨ì³ß7ù«µÒžç´wòd‡ùµ–{æÿ5>@íGežù¿Í]®”÷@íGežù¿ÍO;QÙg¾oóWk¥=ÏhïäÉ)òj;,÷Íþj|ÚŽË=óš»])îxÛG&HqO;QÙg¾oóSäÔvYï›üÕÚéOsÆÚ;ù2CŠ|ÚŽË=óšŸ v£²Ï|ßæ®×J{ž6ÑßÉ’SäÔvYï›üÔùµ–{æÿ5vºSÜñ¶ŽþL⟠v£²Ï|ßæ§È¨ì³ß7ù«µÒžç´wòd‡ùµ–{æÿ5>@íGežù¿Í]®”÷@íGežù¿ÍO;QÙg¾oóWk¥=ÏhïäÉ)òj;,÷Íþj|ÚŽË=óš»])îxÛG&HqO;QÙg¾oóSäÔvYï›üÕÚéOsÆÚ;ù2CŠ|ÚŽË=óšŸ v£²Ï|ßæ®×J{ž6ÑßÉ’SäÔvYï›üÔùµ–{æÿ5vºSÜñ¶ŽþL⟠v£²Ï|ßæ§È¨ì³ß7ù«µÒžç´wòd‡6nãàð>B†ô(éP ¾^{¬®êºìu?è+Ô&öë Ïà;†ÅÞ[>å¶‘šÜ/eëÄýµÑé^J±©ª©ªh‹Ïõò՜ܳ·KÃÃ^ÙèÆaÇBKkñ–µ,WÇÇ#Õõ׈ж΄ȲøS/"ù\m–’¤ÜXØ…u].•J:#¿’ß«™`Ñ6÷8…„1›u.¼V´• ñÏØ*ÃÃÿ´›[’bÛ«Äüõ¾ÒµV55Mæˆï䳟`øVÔÊÛ˜xÖ5‡¡”¶…!kmi°DñU«šc?NOþeÏÄkèÊùÏúró.~#\ñ13Û•­ÿ¤CélGöÕ ?ª´A ÅŸžT½a¦‚rüÜŠpÞþœÿé[ŒÔ™¯ïS›*[¶¶ýÚÎÞ K¶müF¹«ž;² u×[̼¢éu ¾Ævî\¯_Qiq¤E]á°“‡Àn*C`"䆛@$’l‘À\úOY'ZØ’Þ¹b2qK/)A$”fR¸üÐ|Rz¥&·„ÁRÒã-HeO‚I° ñùÊ&É$ª—†òU{Y®âÎ#„Ì‚»2X[Yí|¹’EíÓÆ¢/Ÿ*ŒK“0q·YS )+BÂÆ`Tn.”ð¶—׫zäh>Hýó^\°æ›SŽ !JRœ $$›ÕaÎNÌÊ~[³$ÎhÈ[…Ñ»d¥@Ç)Ш›^8¾ºæ:ŠØ«`”œÑ–ÛÂÙ®ÛÙ´¹Ðõ‚>£ÕY¹’?|Ñf&9KMÄa9,Gq‡RÓñ]Þ´V‚¤\¡H7‚E–x­½UY# ÄìWØy…Ë^ d¾áhî<M '5í`‘ó¸›ðÒº/#AòGïšr4$~ù¢9â6iH%BPÌë:ýÛЩKþ.ºV±­ôË®†þ³.–â2ìÄ)¸ m¨Á-wiu¥½uQ ¤\XjtêèÜɾkp°§e½Qy€•8“˜X*ö ê‹i–‘'yÙ/¼ÔÀÙzPõW(ýâ›üïññHY$UÅlÜɾiÈÐ|‘ûæˆÒ±XÍ1ŒóM;ýèß6V•]µ¢Ä?¿~=ìîGšÞü8²ÝÅžXqyEô!@e½ÀA­ÖK87r¤Gadf vFRG]‰ôVvð¬9ÖÒãh BÀRT— ôY‰ˆ»Ÿa{4¬9¸i2ƒž úý]³eŠ#ÛŽœ3§¦°CØöâ6Ûmª+a•2B\ZPêúE^êQÝqarMŽ–é\ɾkËxVëiq´¡`)*K„…Àƒz#L‰‡½“)RB›{ƒiFROZº É ³Ÿ[7#AòGïšr4$~ù Ô†W‹GžÁ–k%¸çSf÷ônÿÖªälÒ¥¶äG¥.>ê†ìèSÁÀ«¨’ÕÛÅ»©±¿A^‡6§ ºœ#Rl’@¯\ɾh9ò°)R'"|©Í‰(P˜g*BRÛÉM‚мk¾MÍÆ€Z§áPœ 0ë©p…h)BBR $ÔI·`—#AòGïšr4$~ù ÿÒܪ§Ã1?n³c–™ŒmÆc”8¥(Wß9’?|Ó‘ ù#÷ÍŠÎ5 “!Él‰o!¶Ò¦˜ÊØJ ”.’I7+P:-kjFÈi·ÝCIwzámT ‚IÈ'[ú«ps ÃÚin-•eBJŽR¢l:€Ôטøv.3RXA[O - Ì¡t‘p~Ê-¦×kµUȃ“üzœÞáyòñì¼Ë¯Ñ[ß#AòGïš*6 l¢B’úÂ@Z†b@‘ ¹ kj3hsçö=·U4!QP$¦AKÞ ÁN…™wÕ#9°/ÆùðÌ&py ˜ãhf<é2i(ñR³AK„Øxuô>Fƒäß4äh>HýóDk4­›‘ ù#÷Í9’?|Ðk4­›‘ ù#÷Í9’?|Ðk4«öáaNËz"¢ó*q'0°UìA:‡Ugäh>HýóE˜˜ùk4­›‘ ù#÷Í9’?|ÑÍ+fäh>HýóNFƒäß4Í+fäh>HýóNFƒäß4Í+d8V ”µ á¹×6¿¤}¢±I……CKj} HuÔ´’3FÀp¹ÒçJ,DÏ‚•³r4$~ù§#AòGïš#Y¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾiÈÐ|‘ûæƒY¥lÜɾj7&DògïÿÓÜ©WR C}ºQ°$€³® Æ«÷°¼ÙÎ÷þ”kçªûláoðÔ…¥KiÄ ¥!A , “cûÃQëè¨ñÿm‘ü-þšÏëEäÓp8sŒÃXe€e8T1!$+† Ø‘Ðå‰è¦1c˜ä½Û.+3Ñœ¸‹šò•k¡ËãeýÁã ÝX‰5· ¡»6–†TÚÈMò§Ô.më§‚GÞïw(Ï¼ÞæË®|¹3zòéê®y9Yíõ_^k~^û¿c%HŠÒRPYYßÞ:Ÿ_MBÚ´Þ¥¼µ!)y’’”øÛÔåºF¤fµÀÖ×µYWáñ­Ìr³ÉMVª*Q`êÍÄ\ލNÈ[M^TdÒÏŽ’3”ñ67²“ÃJ°ŽŒX>“&D5µ®d¶ÂÒ£¦–%g§ÑS„ Y @Z½Tˆ³Ub^e¢ò“ÍCyÈøÓ®µˆ8Ø/ܰà-&çSâ«1éPµî+`Ÿ%‡¦%2ç°Ê\aæßÝ%Õ’n3‚8')úæ'[inh Ð8þè¯ÒÚ•!%#€#AR)˜u«š¦öÝL¹S„F\…-¦Ü}Hý²-,xùVºUd\ØeÎO‹m!B’†±L\ar¼=äáí*2\w>uöDÝC176*µÅ¬6rpxƒ_‰m 7J,- è«•˜Åˆ‰‹|ù»ZÂ'IV&†œ_©ªy4›îò Ù¾„h5µ¯–Û=y ¡**Jx55ê¬E˜Ä®+›ÄYIˆËƒiáx\ˆíZ÷Þ­)â¶mÇÔ«zD~D¦aÊvG¿?G›´¥’Ús)*åÀ¯Þ*ùÃcSM¬Ým¥G¬‹×¬©Ë–Ã-­kij™[§"#—åî¡ÁÔäöeEr@Ttä-®<Õ:´’I#zê×$\ßBcÙo‡áì¦k«˜b¡FT…/t T .rX‹j¸tÚ¶¡(BBGP m QRP£Ä©¤RN-âcí-Nf#ˆ·6JÖ¶X”Óª 6äå )ø¿¡ 9ó«›’-±'[8†æ|µÂ†Jšq/CŽ]A@¬ÀØ_\Äëm-‹hR‚”„•E„¬Yi D^™dœX›r³YÄ"F‘„[ÄåÊi¹Ì«x$+*¼k7Œ,‘|Æö9ïz±D˜Lá3ŒP¨4Òœ2V⤎S­É7µ¯–ÿï«P„„d =VÒ´%%)BBO†™IżZZÆ#>-–¥$©D¶Î&eжpEÒ‘® üì·¾–ÚkÂZmèm)=`Z½Õˆ³•Åsx…LÙ(…ÅzD­Äg"º•—ÊÖp¦Êx›f±_¤€zª¡X‚²ÍºœUÖTÞ)ºKËx…¥>SefãfÍì®r4­­HJÅ–¡ÔEëð´ÙÒA7 Žžº“L·N-1xøþ|ª Éb3?3Ššb3OûùÔ‚Jó’Tn‚P½új¯}´`øJ¡ÏvDÕ6ÂŒ§ »$*íðHJu °½†§6»fíEYu n"‰m Vd¡ Ú×¢¦UÕ‹O/›viøö.ë^%—ŠŒºlÎR’€E÷ OŒ. ¼kÝ&äÂßh1(€ÂU6:JäÅu º‘™ôÃ]E7ôUÁi²¢¢ÚJF´,´«fmÂÂé ežf­O/…n-ˆ´0¤»ô©KÈ|!jMÜ×(ñJoÆäc¨­Á1=+„ô –… ªvÀ•…©. …“Ã@zozÙwhÉ“"rÿvÚWài±Á´-㪭¦÷f1)Š&›5|*`f&ÎÊsqç±­½½~é_èTH ½ ÷ÐêMå­èÎ>ò±,Up%!Õ¥¶ü't” (äPI6]Å”I¾¤Ž‹ ÝÓ~/èÓâüÝ8QM6³u¶•²/R)jqbfökXŒ‰ ˜‘Ôò¼EB‘!ùŠŠ§\ÔÊË{ÚÆÆß8èmâË%¹‚DrCÉJx¢T†T|F†k(*É@3,,EÚ•‹-!C¨‹×îTåËa–Öµ´µ\©8±1f¿‚»åö£NT¤x#ng6 vöQÕ@ÆæÄÛ¢Ãa¯)m 7J,- è¯Ub-x•gªí`;8®*ܼbS fH1Ûß(Zí!G(ýÿüÍ@Ð[Æ×Ö#ˆ>¦¡µ3,WŒtºú;ÁS] P«) ¸½†dÞ÷·‰†ˆ²åÈSë|Êx;•iM›!!:X_‚R5ê©‹m[:«p¸½g,»N-11ÊÿøÖ9MR6|¥ÊSO0™ Jä-µ!j ¤¨ØÞÁ[}xÕ‹#,S°ùëÅ%%¥¥|)µ, ¤eI €Ð>š¶Ý ¤§"l£r-ÄÑ(J‘ÔªÅ,Õ‹{GÞÿÃZÂ'IV&†œ_©ªy4›îò Ù¾„h5µ¯–ØeÈKlíÄbÏfÃR˜oÂNV׺B€"ú‚»Œ¦ãBã[Xm QRP£Ä©¯ÍÓ~7èÓã|í8ÔË6kZœ×·åÿ!¯âlBV=sóÝf3Ñ]³É˜¦Û½ÚÊA\l8Úý—“äë nní£*2}j¹ñ^GŒ ¾v‰&æà}E^Ф„© ) Ф„© ) ¹~YŒ_ößì¢nK§b˜|̧˜„‡ÙaçËŠ.åÁ$ÞÚ7¥ì/鍸Dé*ÄØ@ÓëøB5O/æ“}ÞA»7жµòÛeHYXHÌx›k@Ú¢¤¡!G‰SL¦­6ž_?ŸËP4—¥”âeK8ŒÌb¤R† ¬u±7« zT–ñ2²–¡î‚’⦘ÁN\‚ À<¬./ru¶—Û–³fÝ£5ï|¢÷¯Õ!+ZB‡Q©–ZÖ¦ñËá¯Iœú°nÊšËKuâ…(>ZKàg°€2è¬Àl@ÑB³ìëÅ×¥´-ä¥-„+ÂHñ¸.À•^÷ö:,Ñm HJ’‘À ¢P” !!#¨ UËÎìÎ$M3LGËÕ)JÓJRJRJRJRJRJRJRJRJRJRJRƒÿÔìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: ŸÑÊþùÓ\âÏãñö‘x»ØúCÖK±¼„dŸK\ØúMïs}ïhp˜x¤&LÅIÈÀR‚X¦®IH×)×ë­oäÎýÌKÿQsßAïúsi¿–ƒø¯ŸñŸ§'ÿ2çâ5Þö~$hX¶Ò±.†“ ç”â¯î•WÆ~œŸüËŸˆÐ}UöÙÂßᩬþ´T(ÿ¶Èþÿ Mgõ¢‚M)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)JÿÕìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: ŸÑÊþùÓZõl8ŸÑÊþùÓZõ<éͦþZâv¾Æ~œŸüËŸˆ×Ð?Ó›Mü´Äí|ÿŒý9?ù—? úª?í²?…¿ÃR‚ËwXB–R’r§Š´à=5?í²?…¿ÃRƒhzí8¤-%*Iéj(B†5.^0Ãk5vD…‘dåµ%ž?4_2¿ÅÃJcXÔ´Ï“¨ó[Jm¦Âx¼îLã^ 'Äô“zÍ„ì³1f1%ø¬¥m4Wâþ•ngPõ&É ôzKÙffbŽÈr+!Èh¨ƒ®D]¯âRÎSþMrµV{ó`ê~‘çúìØ[Yq¤,¡H*H9UÅ>ƒé¨óå®2Ym¤…?%ÍÓY¾hVU(“è$úxtÔ†ÛC-!¦Ò„$%)p‚tC)--µ„?Íë*"à+)N£¤¢>ºé7³ÅM³sGfF&ÌÀ‰èàÁ•¸¹-’’ l’ ÓB£GEµËjKÁ¢ÓÌ•‹´§Q”:?Ãõkccn ±øÉŒ?u…0óJh¶ÂJs I$ðán³è£Pe¹)—g>Û©Š¢¦whÊT¢’œÊôåQÐXjz…Nn“’c›ñüm†'»Áä¹!´%iB¾ñ*¾ ÞÚeŠ5[’™vsíº˜ª*gvŒ¥J))̯NU†§¨Tæé9&9££jpõ!JZd5”¯0[ZÚ¬ç ,ž$úE®t©S1v¡Mn£Èuç[S†^R…ïÄ\éU*ÙÉîÅq§%G»­MiE-«A!Awô(}•šzå¡ÃP˨D”Ã{9-(´¢TÞ„ô|Å­ü_N¹½Væë“ jú_áÿÖëi{”!(Æ}qܾUVÒ‡A¸¿¾ã¢¼àÒ]›À”ù×ã6âȺŠA?ï¬h‡23.;¬rÞ¾·Rr”&À¥‚R«®¼á0ñ ? D']ŒáŽÂaIB‡ÍM®­}‡¦³ÎîÓå›OÝ“ ”™kš°$!I¦ŸŽíÂÄéb­Fbí4òˆòm³giHAAÖæÝ6«Ž•ƒ…ŠF!éD[rÞ¸B‚ ¥ Ÿðö×±ˆ§‡»0·îWТR¥(©V .IúýTçe˜£7Ë*ñDˆ±ßn,§L„ÒñÒ,rµÀµïQgãÞ‡±.4GŸ¾†”GèÎõ-©'_r@è¸ê¯ÌG~c­8WIKAJA {©!$Xªúÿ¯10'£`g 2QnNý•„Xhîõ!Cø´6¶•>¦¢0¢"g~Ë(óÑÖû¬»('0~ɰ÷БoucŠ5%àÑiæJÅÚS¨Êáúµ±±·F†ÞD92âI‰¸ÓˆÙh¡„”€’:“{›ÿ ¨X~Ïø$öŸR!€Á% m¢V…:ÜØhMìÙW›v›Ï3ÆÕ œ¸aàäv”D„6Ú‘|¦þ›¦—è±µåRNÁ¦=fSLÅ–—I+ARЧ.T½¬I']u6諆÷›¤oJK™Fb‘a~›z)¿2¼™c/çà ٭ÂmH[‹qym±u-V&Âþ€OÕXÅÒê_Ë fñ„¤­¢Ø ñ‰ lM…Í=Uû‹Âz|d2σ Z_ART›4 ƒ{ú+Ɔ9‡oŠË)e³L$†ÓkøÖ$››Øú)ÎäE/?/8&.î+ 3ÎA}…;.•© 6IÙ&äôé~ŠË/jŽ#ÈSL‹ºúP26-rI&ú M¬xdðZR1"¶FTëJFTæ$ÛÒmÒ:ª·ÙgqÌl¹ý .ϸÙS©Í{6°¸HÓ€ë©õY¸Œ)ě͡>f4ì\e¸)Ãä¼…2· ÛH9ŠJ8]COßÓjšìÖØˆ‡ÝBÒVV­ã©G‚@ëÿ¯FµL9Ž?c°™L´¶”’[!eDoÅÚð&¼ÎÂN%‡´Ôµ¶ëì¹½I)ñ3Ø‹ýÛ(޾ž5yófØs–ÿ»Ó˜Ó áÒf8ËéðTçy’‘¼BxÞ×µ­¯ƒÒ-Høä)2“Àâ”Qe ‹+.`=e¨z¶:T³ÎŒ'Œß°ôæw7i¢b.nnM”zmÃÓY„NåËTˆÿ¶"QHB¼†åcÖ?Öõ/SYp­<ÿ9)ŽbñÚ}H(t´…er@HÝ6®¢oê¾–< “1v¡Mn£Èuç[S†^R…ïÄ\éU’vY·$=ºj!jBÔµ—›*ZJ‰*¶¶:’EÁãnfô9+Ç#MKaÆ”‚“˜ç)7öýÄÿ­>¤˜Â‹Z>ÈÓñïÃØ—#χ_CJ#ôgz–Ô“¯Î¹ t\uUŒI*”ÑZ£=…[+À}:¥V³„JC‘}’÷…™M©!![íð{fÓÕVÑ4gT×YQ6 K(!#Ó­ÍÍÿÐU‹ß›5ÅmNé4¥+N%)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)Jÿ×ìÔ¥(¦T: ŸÑÊþùÓZõl8ŸÑÊþùÓZõ<éͦþZâv¾Æ~œŸüËŸˆ×Ð?Ó›Mü´Äí|ÿŒý9?ù—? úª?í²?…¿ÃSYýh¨Qÿm‘ü-þšÏëEšR” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R” R”ÿÐìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: ŸÑÊþùÓZõl8ŸÑÊþùÓZõ<éͦþZâv¾Æ~œŸüËŸˆ×Ð?Ó›Mü´Äí|ÿŒý9?ù—? úª?í²?…¿ÃSYýh¨Qÿm‘ü-þ˜…% Ì¥¥ ’I°Ôšy.¸ò +È«‹r…iÖ,¡þµ†V#’‰eR…À *6ú…BÁ¥4dN‹áÞ»’ÖwB”SºBºÅʪ)ŒÂ¶šb‰>ÚÔÃ$$HÊnVïŠ=ZXz}5éŒ(Í1WÚ/ýbˆ¼Ý~Û‰u´¸ƒt¬$Ú×½R•ærbD–\’ìt8ë!%ÄÝÍ{_ìáêërK,¾Ë8ëä†ÑÒ« Ÿ°túºÅUlÇs«ÖC˜”­ñ?8åuHEÿùIl@kÇÛ‰[Ýw8k>~Œî;½ËëÈÍýI º¨Æ|Q‰ 8¼¥2_ XÜ ’z¸>±Z6Ôm¨ÈÅ1¯>“8G†%°Ýnjͳ(gëÅ$tU®>üG¶»mx·¶î,—p$©%qÊ|oÝ-ïÓ–Ý4m+N—ˆËä’ØŸfˆx~Œî;½ËëÈÍýI­r~7"téC2">âaÉÉmµ6’r•6EÕ™:Ükãiƒ}¥kX¸rFÙaøz1wâ·"…ºÃN„•”-¬„tƒã/QÄ$Žº~NÏGË6ìœIøR&¡@©–Pã©B‰ëPCiÍþ<Ô#3â¿:D&ž ‘!O7ct\¤ýv?a¬ŽIe—ÙaÇ]|Ú:UasöŸWX­cg\޲ŨcTð˜2)Å…¨ ò ¿zÅC^ŒÀtU“^>ÜJÞë¹ÃYð{ôgqÝî_^FoêMÕb\–[’Ôu¸ëÁE´ŸÞËkÛíáëê5¥â³œŽö:Ô|eõE hÉ—áøY'P‘Ó¦¶è½íjºÇ‚Âp·x¼ëSáˆïfZ‚JAé»Jr稨Ð_Ò•íîáÍÆMîS»Ï|¹­¥íÑzIZ¥%+JŠUo”بƒõתÕvk–¹{ð“uÊ ßîÂófðV-–ýËÇÓ[U’´ei P* ¾¤ \Ûëh¯U©c˜{?,àÊ“ŠÌ†Ëd‚´ÉÝ¡ d‚t›tå¿EIÆæ¥/ÄÿF·÷;ÅH .@JWp—N€Ý¯ÒGMÉJÕ¶iǦ/ŒôéJ–Ò„øB^ %[Ï.§ŠÉ½ÁÔEWlî$û¸ˆ·=ˆâRÓ"­`‚•eŸºR›«7N_ñPoT®{µE*21LF+ϤÂá‰l7qã3lÊÁ:ñI{µܼQq¡I”´3$¶¶÷.ä©EFoMËX‘%—$»:ÈIq#÷s^×û8zºÅ`Ã"¢$K71ùhpçK»¼$8®Ÿ®«0‡0œQÇÞ,ºìù‚CÁYV—T„z,Ò[±ê 4õ‰¹,¼ûÌ6àS¬GJn.>ÑÓëê5¥áSœöÔŒeôÅ+tÆ—áø¡@¡Ñ¦¶éµ…¯j¿wÄÛˆ»­7ØkÞnœŽ5ºÍêÎõ½j ±Ÿ>.Ræ<e)+ T 4ë$®²"K+ˆ™i_èTÞð(‚<[^ÿeUm_Ñ æP?ý¶ªÝæ’û2»äq%*·Q ðĶ$©IeÔ¬¤%D€¡qöŠö·›C¶¥YN\ uØ\Ö%´#5!Øí:¡˜'ûÄ$?ÐT%)±2  ¥n’BŽ—Ý«ìãÃÓè¨ÔDJÖ±;!¦„¸¼¥Ã•:q!KItNåJ”-ÂÀ#¤Ûˆ5à­röÁQÔ¥°èh}(E­å8›ŸáKDüCÔ(, D: F|ÝÑ»¤7½Õ¦ºë­ysŒäˆ[Àó4J N[Û¬$¨BQÏÚ V ™Ð—!˜TŽLo2­!*6ñÏî‘Ãê½KÆ—"f$¥%™L0ê'#‰yiii× …Ž› uš ºR°Mxǃ!ô© -´¥‚åò‹ ëmmê Ê”!%E)¬ÝDœmkŸ¨õWªÔ¡mT©£°©¸JƒŽ¥6—³›itÚþºMÚ©QçHa3p”†ÝRq/f6ÖɵýTCñ£Ê@nK ¼€nâ€=z×—!Åy„0ìf\iÊÚ›)°°°èÒž2 Ç}JB‹%d·|¦âú_[zê¯l¤â0¶K•†8Ûo±× ÖMÒj7M¿x-}(,Ä6ØŠë0PÜB°r©¶Å’¢-šÜGÙQ0, Œ ‹>ìfÇ„–’•­ $u‘õT]ŸÀ—†>óïÆˆÓŠHB g]UÅîoœúMbÁ±\{@Z¡Ba¶e:ÃÎT èmÕ6JÔ|ÃóºÅÒàBqå<äFê Z›DZÖ&ÝZz¨ìO¡¶ÞˆÃˆhY´­°BPÓNµ‰[vÃd)•EˆòÙu¼«/¬¡E+([B ÔåôŠº›ˆM^"¬7 m…Hi”>òä’”,©)Ú’JêËéhBB[m!H)H°¨TvðèÍÈ–ðEü3)}T¬„彺ÊBAô$U;G‰¹‚7‰;;EX¸„¦s’Rß„ø97kÕj˜ö:`â8Ê'! ‰†Âjhq»•”+{˜Ö7FÖë ²!Ѓv†ì~ŒÞ÷Nšk®”j,Í‘1 —ä%jQ½’r¤uT£ëQª #k|?fÛ…xVmМ–ˆIUœ$[€:.="¼IÚ†Ûz#!¡fÒ¶ÁCM8 ɹkq¸Ý#u—&ï(Ë–Öµº­ÑY)A‰ˆÑâ ·†ÙA7)m ž½+ð™zlyŠ?-(RM®•™'¬”ŸZEH¥< cÇ)NÅLÕˆå†ÐXJ`¨(‘n¼¢ýyGUX? ™ãIt.)RšñB”2æ·^R = =u"”çÂg„ì9 –\H6Λê“è#Cè&¤R” ò´!Ä)·…• ‚:z¥”! ¡-¶„$”¤XÔ(´!Ä)·…• ‚:z¥q ¶"ºÌ7¬ªm±d¨‹f·ÑöTL cÃ"Ä»„±á%¤¥kB@ Ý@$}UgJ¼™¿ðÛÜÙ÷›¤æÍ{Þöã~šôü&dK%ÐT¸¥Jh_Å PËšÝyJ€ô(õÔŠPGŸ œJ°ä‚Xxeq Û:oªO  š‘JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPÿÓìÔ¥(¥(¥(¦T:¸”HÒ›`ÈŽÓÙseÞ *ÚŽõ² rN8añ{”û½­eþ©¯®¢ÐbðHÑp¹bŒ%mïKxÂsE^ìØþŒ¸î’N½Fƒû-CX£nʘ®TRTò·¾22ð6ñ@ÿO^µ"V¹Geo•ňâ]t8n·–ú;ŸB¬²zО‹ÔW6» jD¶V‰@Át·)[…e`…gQèAI¸=@Ö|sD$Dmk’Ï„JeæZΔêJî…ß-ý&‚Ö•O´xñÀb°è‡"IzCM~‰² §Pƒr8/AÒEªS8³aÏÏ}·á±)NM–ÊR‘r«‹tú êUD}£ŠüÖ!®,ØÏIQKI‘HÍd•~ ö‘×Yq©ÏDf32‰s¤&;%Bá&ÅKQþ!j¤€:h,ª-†³ŒaRpÙ u Él¶áiYTRx‹úFž£^^Řc…-·÷Ò[S¬6KvOUÀzEEkwÀ¤MÁZq/ ¨2‰M–êAÕ:ô stjz('@„`0¦Œ¹2®¬Ùä,)CA¥ì4Óýj&€5‚­e‰Ó^BÊÔ[}ФæZó©V·¢OÖjl ¬bXtiñ‰SšCÍ’,JTzEÁg=-™,KÊeÁ¨ï‹!Cø´(Ž‚Hè ñ'g£H·&[ ºs<ÃämÒx’-Ò46#íÖ³bK3ÜCÁ÷â¾—}ySÇ)67×ÿé¨ïm }ÆŽŠ/"Šs"”•Xñ¤W¹8â#n¯‡b.ïZ~Š*•–ý êWX ¯À07Ì9…b0Õ :ÒRðZ åæÔ?y$Ž=)½Mƒ³pàΑ3}&C²˜ Hð‡3‡R )*µÀQ£XçãŽò!•;ñ\¦"§Â™().:†óå<@ÏI¯xT™ÈÆ&áS¤¢R˜ŽÌ„¼–·z8§S–Àž«ßü^Š ð&aÊCÉ—1Ô5}Ó.½™¶´¶ƒŽ€.OÂöËC~6/ÉS x³IÞ(I Ó@R}@TŒsÒْļ¦\ ŽñH°Q°R?‰ Bˆè$ŽŠ² ­•‚5% Ÿ ”Ëì¶ð–œÊêÓÔ£muׇY¨XŒ)P°gàBÜÆLÆÜRBsOAiÐ:ên;9ì?iö2çTȬœÂþ+¶Ú¿ûTjÊ‚ áØ4XË Þ„fx¨‚¥:¯Åir¢¢m¥ÍÃÖ1Æq&”Ý’Ä”ýâÃëJŠ­èq^Šñ³³žÄög Ä$eßJ†ËÎe”€M‡¬Õ•·éûVÞ)?Û+jߥ·.  †T­À?ñ~еÄpõâ!­"+Ýo¥Å'VǨ*Ëõ¡>šŸJ¸“dáÏdžÿƒ¾êr%î–ï¡Pôr= VX±™…˜‘› 0Ãim´'‚R€ûe¥ =‡­Í ‰‰¤"” R” R” R” R” R” R” R” R” R” R” R” ÿÔìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: rÿT××QjT¿Õ5õÔ_ëúþ¿êþ‹•þOÅ_,ã?NOþeÏÄkêgþ‹•þOÅ_,ã?NOþeÏÄh>ªûláoðÔÖZ*Ûd †¦³úÑA&”¥µíªÿ²ÿŸþZØkÂÚmÛoJíÃ0½«TÕ–nóqX3ƒ8q6¿–…±Ì¹\U äKîºÛ K™–~°¢¡n MmJŽômªðÔ¶§1ÜPªSJZÑõ(8åÏAJGïU’c²…!–Ò¡À„€kØ‚ÄãaéB–óè[†ÜBl ù”sÔj×Vig„á牦f÷›ÿeD¸;FæÐ5‰0œ3$v_a´-Ç.¤¸¶ÕsdèFè}¦˜öÌòŽ$œN:rAe,8Ûï8Ú RT¤Q­ÁZ¸ñ¿Eµ±ªÆÐŒ%Èn 9o³#:J\-… pApqê55ךa!O:†ÒM®µ/õÖ¶¿#gæ·³pÈÛÍLnRÂÊ÷c+áòÔ›¨sÆäú+4Œ DücTÂÉñ,9Š[Rƒ 'ysÂÂûå}‚¯âËiNeeNckž¡é¯-<Óé*eÔ8mt(ªƒMc“Œí „·1¸rÖâü*ÌSàï#x»‹'U$X_UñÓ[¥aؼ\Fs˜s±8ƒÉyŽ›;JÝ¡¿ YZ6¤jH«o ŒTSá f #8¸WW¯C¥GŒáÒäHa™m)Èî†V3 TP•‹uè±Ã§Jò Nsj â-ª?‚Gˆó JŠ·„¸¤*ãKiºOÚz©³'a¸s¬OTu:¹o¾ E6qÅ9m@àVG¨ Ìþ.Ülm¬5æ‹iv*ä&B–hJ’u¸?¤IêÖ§¥IZB’ ¤¨\n ªÀã½Sà¸Ú·i–ä†]¶Ž%å©Ãõ¥jZmÔzjª.ÏcQ†H„b`ޤ xÙÞl2¶s«¨\ôVvžiô•2êH6º¿ÕA®a;:(Ì•¦4VÛÍœG’ó¥àRFBÐ «n8V8ôw”˜3£¶§œÃ¥‰¤‹•¤¡m®Ýd!Å(’:jÁ¹Qž6jCNÚÉX:êà~ÊʼnbÃa—Ö…8¥- ¶Úx¸µ(%)²F¼¹: 8¶+Äâ6îàáM-äfR]S–!$À õ‚oè±ñ 8γ+möcËšÀ(ŠÜ{„¬pl(ØZ×›ZÂþЏ4§‹!Ô.P3êúê4ÜQˆ˜cø‚?ÚŽœînHQ ¨Ž²sn&ÚP~ázpœ‡ ‰‡¶ȱPBBooª¢à1ÞJgNÚ™s–dn”,P„6‹õ†Ò¢: ˆè«T©+HRT• ‚ Á ĉC¡ mIZÛqµqmiQJ’}Dxb44ÞÙ|"Cî>ìwKŽ(­DIt\“s U…{“³˜\½Öý‡¹h4‹Hq6Hà4V¾³­LTøhQJ¥°•$Ø‚àý\È­åÏ%”æNdæp Ž±è ­•³Ì PpÿБ!©HÞ-KÆÜC€I ØÜ.kÞr1)xž"¨âD†Z`7¨ %²â¹Ü—OØ*DìZ4<=S¡ oÒÒÌâÔ”!7à.¥$\ð½ëÆŠ®l—áɆä9L!)¥­+ñT«¤‘©BŸéé Å€Çy):CjeÌFY‘ºP±BBÚ/ÔJJˆè*#¢­ª&ˆ#†BÚ’µ¶ãjâÚÒ¢•$úˆ:ð"Ähj]NÒGzVËl6§'Ãp„‹”ÉmJ?RA?U[TLKF¸…,.C,ž7q͍ƒõTº •ŽôM‘Á£HmM<Ìq )Pm ƒê5mQ0¬A¶ i Cs#¡ô¥\R §Z—@¥)AÿÕìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: rÿT××Q¯ëúÿ¬©ªkëþ¿¯ú¿×õýÔý+üŸŠ¾YÆ~œŸüËŸˆ×ÔÏý+üŸ‹úþµ?,ã?NOþeÏÄh>ªûláoðÔÖZ*Ûd †¦³úÑA&”¥”¥©[ÿgÛiÍÜ9”°¼YqÒ±èÑäzõê5uX\d¿–÷ªYÜZù²›åôåÍõ^ƒ]›Š”m|Y# ÄÖÌX’£¸â!8 V§)µ† †Õ¨ÿcÚ˜ÅÛ”¯Ó@ðpÚð Ý»™EJ(¸µÓ”f±¶R4¾»m(4¬N ÊØX1fF›=ÄÏa`¾Ki{$•"Í8æà ¹©bícXì 2ðàöÒb¾˜å &@.ÝBÂÄŒí_¯-¿v¶ªÁ [SàÇšÁQfCIu²¤”œª††ƒÿÖÛ]‡/hvq àÃ[S–[Íeb3Ä Çõ¦é¸^¶µïãk)Œ> bDìÞùÇ塸J))–’{Y³ :‘kߦ®àà\'Ñ.3KRÀñä‡ãˆÌ¢¶—Øžº´ ÖñhlÏÛ\)°÷dÆj¥©’¦BÖ¦ŠB£kÐôåéµHÙ9È«C‘¤FÉ2Ní·Ú-Ùyjlt!IªÖè«ÊÆÄ†e5½aĸŒÊNd›‹‚Aû"‚Ÿg[oÀ±6B¥µ>Vùµ ‚—]S©ôPê~»ŽƒT0%–¶>˜<Íî´1)ÿ9[> ãG)ýä‘u 4ôVîl:§BRBT»j@½=Bçí5ùC2£·";‰u§…¤Ü(Ph³ð¶—md3‚È3\uF ÄUf+,!mi¡Þ¥D©:ð$ð«M«Ô¨° p‰²$"DIM­0”µ4€ûkX½¼UeA¸ãÀVÕJ shb3à ÉäÅ<¦d°ðnD{:CèS€%Bú¡OÞÐt×°¨¯lö(Ôd8þ¿Ñ²ÇƒºêŠ Â¡Í`›+¬Ž£[(4|ŽÐBy8}Ã*Z”³…*jèPÏ{Ùj×-ˆ¸ Q _mè¤à³W£1§•ýжœe'ﺋõ ž®«Ã¶óKiÔ%ÆÖ’•!Bá@ñtŠ whàØ›{A‡ÃeÙRa:ƒd—”¯Ô’®:8“þ’t@©°aÀÙ ›PñRÌV”ô‡[h$º»]kÊ:Tz ŠË#g°ÉX›x“̸¹-8—­û€%@X¬¼4á­Íøš°q¶ÝHKˆJÒ…ÅÁ¸>°@?U~Í Ù|*”„¿,ºn’€½:ŠÁ³ß¥“MF¬KÄJ™W÷‚m•¾ÒíÖ,x³…-©ðcÍ`¨³!¤ºÙRJNU ‹ƒÃC^ÙCM°ÚJÒR€Bm èµ»/dÝ“1çøP¸¥€æ…«S}U›Séé¬ÓöeÉž g0Ñ¸Ž–Ž÷ C—"ÿ6êñS®‰è­‚”̼D-œ1ÛK­¹ñ¥Ĉºy¥ªÈæVTIÐT¬%NMÚC¤1Ø‘ã£Â-¨­ yJñN¶³‰××ÕW HfS[ÖKˆÌ¤æI¸¸$°‚+%.Ï~–N55±/*e_Þi¶T~ûK·X±àjê°C\g!2¸E³ n·VË–ÚZÝí¹ ºë­6âT¶TâAÕ€Eþ¢ NÕýÇþeÿÛj®«YÆqÇ#bŠ€C *ÛC‰¹%9U¨}U†‰?ˆï÷á£Ël¢Üoî­ÍwŠŽ7 ¬m½ùöcØÏý‡ÀòØÿþ4ÕÕxm¶Ùi 4„¶Ú”$X$^ëiJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRƒÿ×ìÔ¥(¥(¥(¥(¥(¦T: rÿT××ý_ô1¯ëúÿ~²¥þ©¯¯úþ¿èbñþ¿®¿õ鿌þ‹•þOÅýZŸ–qŸ§'ÿ2çâ5õ3ÿEÊÿ'âþ¿­OË8ÏÓ“ÿ™sñª£þÛ#ø[ü55ŸÖŠ…öÙÂßᩬþ´PI¥)@¥)@ªV¿K··šø6Îâÿ»¼qÝåºïºjýYG^·Uè,½>4âT—ã%hJ’~rlÉ>‚Rƒ×tmpCUÆ1i8~¶ ^,ã/Byj„⊑þÎÓ‰@ÓTçQOlm~š°ÅL¹;Y‡ÁŒ=<¨¸âÈI([YJIÄï ΠktÕÌŒ3— H“3Ï÷Ž4•+!܋؂tôžº' ÃÑ!™ ƒ/G@m—I m#*M®‰ÐuÐUa2—Šlã‰[+D§ã M©d4úГrÌR}5¹°ë}ÜsbðŹˆ:‰R °ãϰS¼ (J‰Ô.oÑ×S¹ ðOä˜^Ÿy¹ðtdÏkfËk^Ú^²ÂÃ0ü7?€Áylû†’ŒÖá{ xŸ¶ƒ]Øf[‡³¸!wëÀeˆêÑ• Ý… ÀIâN—¨¦!Š£”$§”Ûm­äøDg#¸Ã(J”’CD‡ Б¨þúMqc ÃãKr\x1™í÷6ÒRµÜÜÝ@\ÜëX¹ ð¿ ä˜^Ÿy¾ðtgÏ{æÍkÞúÞƒÓI‘eqyQQ!ˆ/8Ò’.R°‚AÖDǘkÙVÚÃñamÄKiަˆ9À²RÖ¡DæÑ"À›ØëÀßÕsXŒ-Œ1حʉF[„¸á \~è9Aãn$êh à²$ËÇñ%Ê}…¡ ¥8SŠB· Ö]#\Ä,H:Þá9vÄ™ŽGFŒ3‰Òzvšqvõ¸ã‡ÖH«$A†ÜÕÍDF)Äå[á°¡¦…\HÐ}‚¿0ø,á°Ó’¢¥-JYº–µ(©J>’¥ma®€PI­krr $bÊot/àr#¡¹âÖü==5°RƒXÜ㇗&5á{xL]öL¿Þ¶L·èù×ôV|¬Q¹Ë3Q‹%½Ñ·†HŽ´^ã€o[ñôqôVÁJi˜Æ-'À6ÁKÅœeèO-PœQ@R?ÙÚq(jœê)àM¯Ó[E‘†aòä `Æyà‚ÞñÆ’¥d ‚›‘{Nž“×AMŠ™rv³ƒz,yPqÄ5’P¶²”’ ‰ÞAÖ鬘L¥â›8â_Ä–ÊÑ)øÂSj@Y >´$Ü‚3 _MnlZ§ ÃÑ!™ ƒ/G@m—I m#*M®‰ÐuÖ.BÁüÁ9&ƒçÞn|3ÚÙ²Ú×¶— ƒ€¾î9±xbÜÄD©XqçØ)Þ”%Dê7èë¨ Ëpöw.ãqø ¡Z2¡[°¢A¸ 8l4Åd¨¤)KR–n¥­J*R¤©D›Xk f ,Ï“8)ù)B¥š„_*G ,õÝG[XÑvçÅÄRòtu¹‘²‘™HB¿û±õÖŲ¿ö¯òÍ^1}—sÅÑ?|€9›A'EeËs§fæ>‹X`Ø[¸nûz´+y–Ùo¥¯ï®óTd³á`ðø±Ægšy^®ÖÿŸºÒ”¥p}Ò”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥ÿÐìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: rÿTÐõÿ_×ý ^?×õ×þ½7ñ¥ÉJ–Û@xÿ¼{ÿ®>ég÷½×§ýüxÛ.¬$·b†¤7ˆDJÁ/¢ÃÓZŠ*žq N%ͦaeJ‡Ê°|á4åX>pšºuìζT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT?ÿÑìÔ¨|«ÎNUƒç ­é׳–¶T&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&R¡ò¬8M9Vœ&šuìkaõBe**Áó„Ó•`ùÂi§^ƶT&T:r¬8MGðø¾]m4ëØÖÃê‡î'ôr¿‡þt×8‡´ü¤^ö†PÍ”ìŸ%³ÁIñu½‡ ÞÖ6ܶƒy¸m5‡A3ÔåÂò¼†Ã`GÎ"÷·G¦µÎQÆÿîòÿúÆ?54ëØÖÃꄼéͦþZâv¾Æ~œŸüËŸˆ×|À¼)1©X„Q Íj+l6§²²‚áWÍ'¡Cýkã?NOþeÏÄk3-ÓU5EânúO’Ä4¼ü—ËHÝfZÔM†¾º¨‰‹á³Ý-CŸC9ŠZp(×§¬UÞ&@uÍ|Ÿà¨b¾}8|ž&Úµ~}•ím ó¨i¬R"ÜZ‚R”¼’TO5¯ÆÜ\lyÈËZ–ÜÆ‹íÜß"‘• €AAtç=UcqÖ*%ršml) ‘Ðó%GK‹‚PRJ“{f½®v›¸ÄÅÞæbPpìž1˜ÛËäÞ¬'5¸Úþ±^‹á®C\ÔOŽ¨Í«*Þ ‰:hOÖ>Ú™qÖ)qÖ*óg’L_ žéjøò ÌRÓD½=b¦Rã¬Rã¬UÔ›}ŸÿÒÛª·Æ™ƒ5˜-²ì©$¬0ÉMÒÅj* }5:žeqÖ*“Ù¸ø¦"Æ"’Âd²‚Ò¼!€ûn7©±I"ÄpAˆÔpû^ÜŸŒ·úžÛÚ$?KŒ@”옋(‘ 97­èH6*²L¤ÞútÛÎ ´ìãÏ•0” ®IÉ»J”€¬¿:䋨€ c‹€ËƒX‡>Wä¨xìáéBHI*B®MÉ7Q#Ñ^vwfÙÅ)˜Ø‚ yT¶ƹÂT ¬Úf"äz…¸Ö#=Ṍ;M¿o”©;@ˆ3X.ì·"HŒÓåM©*Y¾]¢  ºG®Õ^ÚG‰Š;‡+ ˜·š’Ük¤·e-ÀJ-up èéµC;àŬE ìI~Ûˈë‡1U^`W©‚žC¥¤ÈØó'wsœŸXBY° |Ý!C_G©3ˆÔFÞ»+{g þL1áËxbˆZ£”%?9Ì‚/pA¿ÍÖ÷°$XÁÅÅÛ”Â7Ñ%GQiæ–d‘¢ºAj Öžî /Ÿ³°ÙzKíáÞ³)ˆ+Xl8ÉÍ—1¬U$®A‰‰½µ¬$‰ËkØ×ÑUÊÇq'öòv^(Â[ñòeýjÚA*UÊo`¥eÐþá«L›ƒ¿%JĘ}©rœ’òb•gX×)Îl.A¨CbXŒ@™ XÊšŒ7ŠÐÛ0¹sK›ê -^X"póMöm5SŽm<Q‘$)K”¥ÀRP"mÂÚñè³{¤LY™Ñ¤Elâ®HÄV¦Ôô4„n‚ €q@e 6RO‘©62q ˆÆcC‹*3 =ÇIu‚² ýôñ§§Lq0¼Z*Pƒ‹ÇP.¥Ç–!ãÄUu‘¨á ÐaoÜc^)=‰;ØE 4´%©P÷Âê)%_8kâ>¾½3i³w¦ÿ(Gć‡73«y©6BŠúX I½€*ZTAàÔéS6o™‹7.DÒZ§ÁЄ¤¶¦Òâs›«+‰Ü\éŠ(Ÿ|$%hqØì”dtd)Îs•-DáO¹³/àeİÚ¢¶ñNpYµ’mqãdÐÞÞ0&Öµg‡kX…ʜÉݩ%¶#–‚ÔrxÊñÕr,=¹ýW‡išm('œæ!¸jDñ•º0\ñ^KA˃›ÆºP(jm®|[výÉ—ii.%Rî… Pq–ÙEÍ•óÆškï‘å)[·±2ôS+ÂKkkÇIï”®ú$‘b °:‹€œÒaNTõˇ‰BšC{—ZÞ6,TJ­˜Ç0x o¥–ªÅé»éS£ì„‰Žåf{pê²X„:$Ûˆ°>º’éÂ^Z7ÓÞa¥­!vÎéŸèÐTiØnM“‘„»…0µ «ôe)¹ÐuT—Rö#„¼ÑÞÀyö–€II[D‚¼Skôè~Îsg—t+“3Ý&~>*ZRœz7Ф.éÊ’œÇKg7¾¾‹kžŸF?>3’y Ã/!.þŒ©n‚€ÒÈOð¯q°÷Ñ=2åÍL…2ÒÚfÍd!*)$¬Ü…+ÄN $qÓ]Š‘~WY·;,ê9!ؘ#%…äu˜®­ µò¨$~ÑS®:ÅAÆã¹3Ä"°z+­¡7ê) ŸMj~§æ.Jp\é.ªDÑ qdäÞ)#Rth?Ý×H¸ ‘,Fr+ñ”´)Æw  â›tÛ2tP^yšÃØÆ") ’šSJ¥.ptJ¬M¯mzGª† •bÑ'.cD1l¸ØdŒåE%J7‹ªacÓ®ºNwä×+sù~5Œ´ãˆVáÔÄuA,Ë9wn ¶· ¥‰¸¿—ñ…·‰=¬6T‡šBº2© Ì/r ©"ÆÇ¨ ZÁÔØf*¥¥Xte!LÇÝÙiÈA@+¾©IÚâ¦äë|¢ ”âÒç"c@? ¡²É9 JŠTNoUªâãQmgÔ}/×1ˆþ øÉ\•K@q†‘`¥¢ÀæñˆF¦Ü@â@¬±å#ˆæén0à»n 3²»péqXê VšixNç#?#ktÓ¯F l¦ÀX¶ORS¨ Üu\TÜ>Â`:–ÐÊÖIp·”²’mk%7Òö“Ǥ ‰ªüÉŠmÈÀÝyÜ4™)å·&C[Å€ ‚ZEìà‘Ñ^¡ÈtbS`¼½ák#Í*Ü^`}!H_ùrñ7¯8O1†‘%¢Ã‹û»µ)$¤-Õ¨\‚Eì¡ÀרqÜŒÙÏ€…;•–Óqú´f±>’¥¬ú²è êÅíÚòIÆð¨o©‰8ŒV]E³!n¥$\\iê"½?‹á±ZeÙã´ÛéÌÒ–àcMG_öÔËŽ±KޱW›<Ñ-¼J×…N޲”:õ):tzzk&\Ì,É®´·%4‡€i²€¤ƒ—RomuÿJ™$<¶˜Ï6Ó¦ÙVâ3¤k®€‹é骈8$ØÃ iüI‡£á¶Ý¥Š«4¦ÅÕœô(ž&÷†¢Ö”7qwZ”¼EÁ/ÃÃJJRÑv¡—0(mu‚]IÆð¨o©‰8ŒV]E³!n¥$\\iê"žóÒ·“d¶ó-¯;,¡¬&úxÇ1[€¾¶¸g\uŠ‘U4Êø¾¦]‘>;M¾œÍ)n4Ôuñmb{ŠpåK„ëRÆõ 'và)Þ-IJA"öP'¦Ý¬n:Å`™©±”Ê)¥IRMŠT’•H tÓZÔݘË÷DBq¶eÇK®Å•k!å!¢Ò›NEZÀ¨ÞêËêê7¸„LèÒ"¶qW$b+SjzB7A@8 2…›)'ˆHÔ›ÌbI}+—ˆ°ãi¹ÈÌmÙQµµ%jÓ§K¯aÄÂñh©B/@º—X†CAUÔVF [†ƒ@…±1-ÄÇèõŠ0ütJžæ-5 ‹ãÇC]@ É%JR¸kÅ@T„Ïg ¼gŽÜ’Ð qk,˜‹Û§ýõžlA3ÁÒ§,ÛO%բ߬Ër‘~‹/*¿ËnÔ›Ž±Z´ß“7‹EÐÑ‹á®C\ÔOŽ¨Í«*Þ ‰:hOÖ>ÚDÅðÙî–¡Ï!ÀœÅ-8@ëÓÖ*eÇX¥ÇX«Í95x¸ŽÑ-ƃÆ9PjÏ0˜Š Hy•§çé$›Ûê«© eõ´ÌGånm¿S ÍÅìA “mr¦æÖÓQ|LÀšÞ6ôõÎaM<„¶YÈ!)+)ñ³ñºÍ͵·^žÃß]v ÔÅL’ ³’@ Ì‚Hʬ  B‡Š4ã|DLCs4Ì“1–¢ˆJi‡e¢rŠY\|ªä*OO×€µÉZöÞ/0ë“?ØTÆRê$)  (Ù&àAè ÚàŽ _‹ÇðsÀe1äY m•:–’Z›ü7RA¹Äê-qe ˜qÙ2_KòžJR·Œ‰Ê›åHṂ̀©&äôX 7IŠlDÅðÙî–¡Ï!ÀœÅ-8@ëÓÖ+ƒ<êkˆ· ”¥/$•À jÂã¬Rã¬V¹³ÉN7…C}LIÄb²ê-™ u)"âãOQéü_ ŠÓ.ÈŸ¦ßNf”· j:ø¶¦\uŠ\uŠs9!£Ã\†¹¨ŸQ›VU¼tП¬}´‰‹á³Ý-CŸC9ŠZp(×§¬TËŽ±KޱNg%{[Aƒ<êkˆ· ”¥/$•À kÔœo †ú˜“ˆÅeÔ[2êREÅÆž¢*uÇX¥ÇX§3éÙ ü_ ŠÓ.ÈŸ¦ßNf”· j:ø¶ˆÅð×!®j'ÇTfÕ•oD4'ëmL¸ë¸ëærC‰‹á³Ý-CŸC9ŠZp(×§¬V6¶ƒyÔ4Ö)n-A)J^I*'€Õ…ÇX¥ÇX§3“ÿÓØ$ãxT7ÔÄœF+.¢Ù·R’..4õ^ŸÅðØ­2ì‰ñÚmôæiKp±¦£¯ˆûjeÇX¥ÇX¯³Íð9!£Ã\†¹¨ŸQ›VU¼tП¬}´‰‹á³Ý-CŸC9ŠZp(×§¬TËŽ±KޱNg%{[Aƒ<êkˆ· ”¥/$•À kÔœo †ú˜“ˆÅeÔ[2êREÅÆž¢*uÇX¥ÇX§3éÙ ü_ ŠÓ.ÈŸ¦ßNf”· j:ø¶ˆÅð×!®j'ÇTfÕ•oD4'ëmL¸ë¸ëærC‰‹á³Ý-CŸC9ŠZp(×§¬V6¶ƒyÔ4Ö)n-A)J^I*'€Õ…ÇX¥ÇX§3’ œo †ú˜“ˆÅeÔ[2êREÅÆž¢+Óø¾¦]‘>;M¾œÍ)n4ÔuñmL¸ë¸ëærCF/†¹ sQ>:£6¬«x82$é¡?XûiÃgºZ‡><‡s´àQ¯OX©—b—bœÎJö¶ƒyÔ4Ö)n-A)J^I*'€ש8Þ õ1'ŠË¨¶d-Ô¤‹‹=DT뎱KޱNgÓ²ø¾¦]‘>;M¾œÍ)n4Ôuñm‹á®C\ÔOŽ¨Í«*Þ ‰:hOÖ>Ú™qÖ)qÖ)Ìä­kÃgΊÔ9ñä8*)iÀ¢Ek§¬W Æ~œŸüËŸˆ×Ð/á1?ñOà]|ýŒý9?ù—?¯ŸÄß?7Ôá-§ËwÔž\×¼&3OeKywˆ ·‹ÑzÌÖ…—8lCÿÈOº¿#þÛ#ø[ü55ŸÖŠóÞ^«C"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KB"á=—¸Oºœ‹„ö\>á>êJ^KCÿÔë‹„ö\>á>êr.Ùpû„ûªu*ÞRЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃîî§"á=—¸Oº§R—’ЃȸOeÃî‘…ölNá>긨T¼–…|Ü3 b&õ8d2R’lYMŒG®¨[‡¹‰;`L%M /z¨j *ý| }¾ƒkÍ¡Â0üR*Ä}ÄG RPÔ—¹%#\„_ëôõÖ¢Þ ³ËĆp,UmbJ±7wK¿@9ï} Å´·¤]y- ˜bwÚàÌ 1å(lÞe;˜Ž¢zOM‡Up géÉÿ̹øw½Ÿ‰-´¬Bem2˜ÐHK­Ór·¯ã(“ÿ à˜ÏÓ“ÿ™sñŠíÎk»0Ô·Tħ•‹ª:õ°µÅzOöÍ€%@‡ÎŸü:éJ|ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(ö`^_Ù×N{0//ìë¥(?ÿÕ¹ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκsÙyg])@ç³òþκÅÏ&ÏùsÿÓ®” ¯Æ´üe¦†7>$ŸbÛËÛçfJ¸[¢Üztµ?ÊÝŸÿ½¸ïv‡JPMÂ6óf0•M_+Θää´‡%›*)¶T§ûçë”âo7#–ûJÌÛ­i6µÁQ"” ÿÙess-17.11/doc/font-cor-s.pdf0000644005071500004540000034633513202324173012505 00000000000000%PDF-1.3 %Çì¢ 5 0 obj <> stream xœ3Ð3T0A(œËUÈUd˜˜ë)èXèYšE€,¨ ý s—|®@ Žl „endstream endobj 6 0 obj 54 endobj 9 0 obj <> endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <> >> stream xœì½”Õ•¨{*Ç?§þ;·"Q${ŒÁ6 "gã„Ó`{îš™7ƒÁBã™q€Á€ÉY !’B‰„²ZûÏ©r¼ûTu aËïzð»ëÝ;«6¬½ª«Ní³Ï>õýû„"Fö¾D± Í £cbþ–G“µ'dIçÜœ­‹"Y$‰DÇt=š&XdÙz‚åHßr=ÓóMDØy$¢‚$! ù4Báûˆðà"LŸ2ñÏàKøj øªƒødp•AˆtIÏ%]—´šµ€Â«l ûpêÅU;$aÓžG À–@C±}Ç3gÈýê« ò⹈)#R ÎÈÉá ‘"õÐgŸÀ×<2¬ŽDn<0^å°YlZá̸ !€xÀ%( ­£êø’›Àgpí&¢:¸ Nkªí“Žçs>¢ñí¤îSm\Ÿ›Aœ+CßîÇgØq\©'>Eù\ ͤg}ðü™paÿ<\<Ð$‰Âް'Àã> ,Wj+Œg+~6€‘DI$‘DÉû ]µõ©B·­iU‘IÛš EÓ´IFA„¯]¨É‹ûð:†710íQ Q.—‡††J¥’ E†A’ä* вuÍôN–ÙTrïÈ0ψ‰4¥š{:c>re Dª$²=Ò¥x±\iöçÕk*r9î#vRQëJ<ÿÜOãcoÐ,ŸÏ÷¸HÒd»(žhú¨ÌøI×ä)* ä¿rP/vàúà¿ëí,€Â^h*°¶ÎßgŠÓ³˜õΑµ4&ˆ9ªcLôã.£ aä!ÎT1Ñ?ä~AÁAWCÎØm2‰fü ¡köxæ<`¬œaÞ-éHG:Ò‘Žt¤ß—vg¤â¡D×9`*§Î¡×áHÂEfݶi–°m—cÇó|ߥ)–˜¡‡?¯`À °¡ÑP$™·M=&Ç\¯C“ „8äfj gp«¡¶cR¦£81‰ê(W;ù<ðŒõÛßÜõWÿÑnŽÇÙ—_}»Ý)ïàÉ©Éùvk·L§h‚g€Lm]±6¥²1ãeO“hBÄI'ß²mËqÀ!‚B C !ý ãbw g?à‹á¶â¼Z˜"‚Ô …“s>]"ÈÌỀÿ<øYê`Xñi hÒcMøâç’>Ø÷p&r&<BÙ»š  ‡ ®Ç„‡ïE,éÊø˜jx¤Îy¾@:iÏçHB÷H“$TlÁã€~}"¨ Ê€WðS6Ü‹½Âað'Ð>F3œÅ }2è./ð$8MgPÐ"|>¼J¾A›ud‘›Æ–è*Æl»ˆSxtg=ðiÊÇéQ¸ua4 ]d˜ž Á’ ²†ÌLwKéCàyxì)h"ÀkŸ'íàjÐb»#éHG:Ò‘ŽôûоÔlŠÉ¤ly»Æ@okÀižhÙA'}<ÉGLMô K;ìðƒÆF'¶ïØzäGûÈgXJख़¡Ô÷hG7ÚŽM0TÚ±ý¹ózu­£(j§=O›8;hqDv0háB ±žª™–AuåçòLr÷ž· vr`¨ûÑûÖ.½á?ˆ—6­úÀ?òøŠÕ‰øa¶Ú 8fc¢`†À‘¼ãX®¯!Öp)Õ¦u†eµ6á{´ïûAÐ4MQ Erˆ ]gÃü`tuv\Ò™áB#CLâ6SMlÉɂǡ/ƒò”·/Jì×^?ˆ9ŽÆŒŸˆÆ 93°îÎÄ›½—ÜoDØ ÐÜ™ý%³¿ÙH"‰$’H"‰ä¿.^Œ¡8Uo"Ôf)‘F ÒNËbL3§0$–ЈG`"ÚaYzxï «C=TQ”r¹ÜÕÕ¥ëºïû¬€hÓ"I'í:>A«–ÝÖu»§'¡#¤Ç kg‘Èp`ÚÂIÖr\7™(–¦Ú¦J§2b÷¶:Óo¾¼çû×ÿPÛâ”Z·á Sï¿øÜ¹|[Û‚\ƒó 45¤3ˆÍ§Ó–gŽ6G}ÔʦS–­˜–G I À„–AÚŽCÓ‚‡qЛ™Û‡N/0y<òdŒ8ûåâ H£ ž“G!ÂÆoE $Œƒ¤I ЦlœÍ †Œ=Ê'È€¾Ã!ZÒ%¨Ùä 7;í½‹†ïÎ) )ÇÅp†]Šá“#ø“0`M£º«al ° {`굓3ƒ×ûŽ1Ä¡`Åyµ°RšD6æqœÄœ™#0h0áÏ)tÝÀIS/FxL0 ñ0·qÁ¸w“8G—à.œð#¡nb_>¡ÙVÏãÜ9%ÐÐû&ÎHÈ‚Ä챘sÞ©é ïNñŒ$’H"‰$’Hþëâû¼‰€4T+!¢!s Éõ–K"š£Ìpî ^n€³ƒtø 6½¯Ø]©TDQTUUq•›`YÖ0ŒØ'PÇ®‹tĶµŽƒJ]¹D©R‹ ¤ã— »/9!‚•„Ir¶a©še¤å>×äÙ¼ëÁk}ª¾nÕóK–Ü@Œ ¿•Íu¿°ù-Çî;㌒˜AÝÞ™Iµ–•gú,ÛPP›F´Ù‹ïé.L•vÙ®¬~9:A’²cSxb)b*!½™LU˜pÚ·LϔܗcgRS¸L8³þ´i'NàAXÓCf0tkÍäáÂÁâ™!Ú\ !á½{ Äq~‘0÷ËA(ÖdÉÁ&ÝÄ6ñò[ oôf—˜àÁ_Ž¡0ã»àV0œibô⸄‚s{øAÁ± ̓qyrv\Ø 8/<ðfsz!þî[Lãú„å…Éëwã°ÿJo¿U;Á-xÆd„ƒ‘DI$‘Dò·•J§›¯-XÛ±c¼jE2åxRZHkF)@Æ÷DœôÁIŸgØŽÞi¹íÔ$"‹Kª¢«nG$å?,†·z<šªÔ%t˜Šš Þiã>²ó©œªNR |/À8h{˜ŽTÑ[4uRmÒ4òè#KÓy÷™'W-Y²„ØóöðÐAƒ/¾üª¦%.¾ðºf³ëmÆbæg_tþÙgsäBÏ7·lÛrûwß÷ðŠfÓ™;t„¦í¦Ûn Å2˰q Óë~¤2Cáð(œ·Þ»”#bö{G p‚À‹$t™æ´½»x‚Å3Þ° ?ÈÕQ> ‡žÃ±Î}z_¦0¬‚ž=€«à*ÜÅ`dgÈ`‡ºÕƒƒBpc=(/LD©à¼ºßèê¾VÀ+³%Éà8l Øq;ž@ €‹Wé@ëÄ`iGË ê Ú«ûÁ,Ð`VAè-®‹À—P`Ð™ÕØß3‚LÀ¿—Q¸šóŽ[ï¼á{×9žÿæ[oÆ™˜˜Èår¶mÿ¹y ®—=þÿ|ý™ÌÉív³ª<¶}÷–ÞîþryJƒÜ– gFŠÀKçÓ©Üïo¾ó»ÿúãƒûÏÝ:úÊŠÿÆð­Ï¿ô½ï}˜Þ])ôg7lÚXmQœw]¡«ïÃ't-<8?¼mç†õO]~Ù)0I$Ò=?ýSŠÚèë÷úz Ž-)îÞ»WÝwߪ7¼ÍpI9žyqÓïs¤x7Ì­ :ü°oÛº·{×ÏäÊfO%Üî\¶05ùÒDe-Ë BörÏÐiЉÎTéÑFrÐçuèÇc’¦7FÇïL¦ë"UE<‡†¿¨(ªï¡JõMC’Œ< å³_`‘Hƒó†¶¢OéúÓÓ¨« í܉æÏG²tC‹¾Gñœ¼c×oߨi!†Fjyä×ëí·*Õµ®Îÿ²¢Ø²LmÛ}S2þóÀ¾ã×õ::hΗ:Ƥa­¨7Qþ –»þTSYf¨Ø}!Ü;UzXÏŸܦ+O8J$?AÑN­ö€ª dK5tØaW˜:2¬&ø3]º_3ÑÁ}ºÕŽcyÙ˜œ¾»Õ@P;øYª ùsO!˜„ÌÒi4‘ñ\ÇEÙ4® \«$²ñ‰±›ÀÃdWÑW¼"•NÔªŠòE‰yk˽‰ŠÇ®@6͉YS§YF°,›ãxÓÒÞË©äìN„ô,pGI$‘DI$ïOžG¦·§Ñ¹gx|¸<µWàcZÃç8Á4k±8ßVZ’kµ-I’ÚZ9“V­\ýãü¸ÓéLrÚi§y0 ãà´®áu®™lvÙ²e-U[¿i󮹑£?êùVÓºw|ztïž1(| ¹Q3xÀÐ2L5•Š)ŠF,AÐkV¯_zýM":qÅê¥.1½nõóK¾¿”Û>Ò;§ÿå7_騉³Î¸Î0éDNËÑt‰7ÎAùÈÚ¾ã®\ÅåÓxI‚ðÞS)£¹ƒç7ÚR4*.I¥c[ߺ•ó»,ÎÅmWÙ¹ëžtuTô±}njj2‹ïÙý€mááÕdâBË· ™Ŷ‡÷>dèG_­4ùéÚøà ðÚ·ñ,Ôu‰·Þ3Û']RWÆcñm»~‘H¡”t± Òoí¼7“Á‰Ëtò“нÓ47êe2LÆs¥òõ}¬V~®ÝDCŸÓ­ÇkÆÐR^:Gâ$Q¦Æ&î*—Q_ÿ©óß¹÷%Ã|,W8[m 4Í 4á±L õõ]ÙêèÓ¥û¸ÊeϰêYAX葚©ëÈó³¹Þjå-Ä’]]â3«~[, E‹>;92©êÏ I )‘LÆvîZ&ÇÑt }àW)mß쨹¢Ji\–{eÂ,†cúÔ»[[GI$‘DI$“À»µˆ†êÜQ©×·m{yƒ’,Íz¾î¸ºié4ÃQ¤H±”i7Ç^óôš_üô†n”Ê¥m[wœtÒÇ$)®ªíp¾ \¸éL«U_³æ9Nêé^s3Gêypÿm¥ÝÃ{Æ=söÙŽj¬Ý°ÉÅiEîúØqDz"¿bÅJ‚ Ö¬^·ôú[DÿC+V/qÉñu«×c¬ŽLeº»6lÞÜV³ç|ü'®Ç3Ûê$A}ôøyÇ|PŒ%Õr}„f…Zų2±uk7]~Ég+Á’=7|ÿŸŽ;ö ã“UŠ¡+µ‡|„RÉ+L›`©˜áš…Ô€¦Ôê_ÚÁù‚ÁOµÛÚTåaÝ@‡º²—ÚvÁDu­}W¥Žº ˜äÒÙ‹S™B«UkµïmµÐÂ…Ÿò}²ž‹©ŠžL¦ÇÆÞj£ž®Óòâñœ§ÈšcÊ4§85SyèàC>¿wdW<ï´Õx<õæëçs(Ÿû"p!͸Š9ªë« ^œ|ú|dR¨bèOÚ&ìÿ¼mr>¡VZw€»é몫šú­ˆDw±‰ÚŽû4ôpeç\0ߺãèîlæTE5'ÆÖgòÈ2‘ï #ø;Ç*]ñ4@÷oÞ›K£têJ‚ ÚöD³ú´$¢Þâß—[uµù bI£É)tܱ߲L¯ÞØ¢ÏÚJÊ2BJŠy;GþàZháà’Vÿ& iÞqHhZ»=‚h9ãmó  Ïùó/@U/?Hø€žgôtL¼m/8Á¬ÓLî‹¦Š·>ø<áóšÙ(æ§Ê£ÁXs‚öÃi…áfàæ»{gFI$‘DI$ïKâX¾Réü¶Ú¬¾úÊÇ´2‰K³)ïé'I‚O0†‰÷-–ãðŽ¶ž^þìÒ%?0 kÏž]ÕjýüóϽå–?Äã2Ï‹­VHÎuí±±‰¯~õËË—?ay¼ôƒkn剳pvнe¢ôÎðžIÏ%´ŽqÉÅ—Ñ4ýäÊàÆ™gžá¸Ö÷?$ÇRA®Y³néu·Šè#ð®_±æ».9²nͪ%K~LÔF'Sùüê ÚJñ¢ó~í£"'8)®Ñ\¸@øàqÌœ¹-èr<>¼³366¹uË«¥©Ú‡>pÆ@ÏQO,ßD¢øžéI‰Lú„Óh? sÒǺ'›î­–uµ¤¶dD<©’牋ÉJmI"CCÍû‚Ö–ר+7BØZMþßw';mý©OE(‰n[+ _!j¿m•ö}Vµšû˜ná©`œN®´ßYO|Ì1}E_O¨­ ÃùôDYaPš@®Flu®¢¾ÞÏ«V§˜Oï¹qt-:ôªÛ±Õ広Xªö|NÑÛ¼H–+PJ$.sL;‘‹¿òömù,ŠSÿÈ$£šV‡!³¶W¢h’ [ˆ¬5÷h:š;t¥¹;¶=VÈz^LÖäÄc¢Œ›h6êë¿J©›ñøÂv»M¢.¼²Õþ3ƒ%>(Xh.Xñ‚“˜¦I$‘DI$‘ü•L½¢|r|ª~“á6víÜä9n6Ñ_š®±ò<‡$Iž—§K NàHF‡3/mxeÉõ7X–µuëÖ‘‘‘3Ï\üÌ3O¹® g|ßÅbétZÓ´|ä#6l0mëÙµkn¸öV]à!³éÞ8^~p9 EHºª_páÙ6 8žä‘GDQtðÇ;ˆ5kÖ,½îÑ? !Åšï¸ÔðºÕ€ƒ?!ƶí*ö÷o|õUÍè;çÌ_[v†¢&^v\~ùA ¦¥¸ËðÂŽ-­×^Ûqå•WÞ|㯾¼ã¤^ä;ñµ7öfLר4G ý©½{Qw£žˆ³àªœœR´mõQÃF¼ˆªU R²Œ H<¢…ã9”kÔ­5Ñig\Þj—GÇW;>:ôð¿ß³ãíÉò ‰x0ó’- -v6=HQ~©2:9}O"…&&Q*…rɳRb¿ã©£c„*ÒÙ·m_ÛÕ…z{O{fj oª€sº‹_#H»ÚÞ^¯¯•$@Ï3êM²9ÕySÑŸ˜Ù°ÅEŠŽªsp€ãè‹$:=Y½Y”Àí³»‹›ßþ^D‡ƒfžÉ%O­~ A¢t4å m¨"èÿTòlEóI$’ÈOg¸±±»Ú-|Å4ñÜA)†††.m7ÍÉÉeæ|ñèÈ[†µ]m \þA6§¦ƒ Ü ß''ý‘©»Tb_WEž¶Óu8é’䫯ˆ(éÓ•ûz%æ(Q.Ô+O¶›¨¯çtÓk›ê‹Í6Jf1ÙÉÌ)Ùâ1&ÅÑßå;ÚTB.¶”i¼hf߆ˆx¡ ?»(ç€;^FI$‘DI$•[ X š®t~×ÒË»vm¶-ƒñí¦žÍ&}ä6ê­îžfC-öu5Zã¾ï.{hùüäg@~årybbâè£~õÕW+• ÏãÍøLÓ$ðÆ*è´ÓN[¿~½aéë^xî†kn“ÐÅߌW^ôm À1Ýl~êS—>}çw ‚ÀpÈ¥:ˆt0~ï.Ñù8¼ñW¬ýή^‡³ƒ“;‡‹ý½_{YѺÏ<í®›’CmަLgË÷—\ÒÓkkFÕ2©Ç}mËÛ“ºíù¾à"I$ORíN!ÙSjîWu}9à¨#¿Q«¦ä–lèÃ4šÒ­µÐ‚Jå Áf-5¼T·P¡pžeªÍÖ³žƒ¸øßuåÙ=cÏ&JÇ)öÏÛµó>CG™äY²Ü§(&Ï$,µÕÛÛ§¥zclÁÁÝ/¿ôGÆG‚xC³må¡v¶èÌѱ•À^==‡Š²ésª•Ç+%tø¡_m©c½}©×Þ¸´˜ÿD³™ –MìÔí•àY.{¶© ‚䕚áÁbá È'êͶƒús_¨+{LôGœbvÖŒ–QÿæÚbáXñ;v®ÍæƒÖUPWñ¬B¾8ßhÖtM„úú>É l»ÝtøA@x¾µcÇ“àC2~ÄЂ®GYÑ•¦çÍý”G4«å`%:[ׄʪ¿¿Sÿ”O5QÛL“ Çãc’ÔQw±¢jiÛÇËë3)ÔÝuj£Ö6õÍ€þ|ìXGÑsÑGN¸è‰§HŽŸMxYèo7ÔÙýtlœ$õ™Áb pPŒp0’H"‰$’Hþv!ð,†a'«ÊOw ï}]à(Çà‹ù¾©é‰L&ÓjvVl·t†'[©L&ñÒ‹o|÷»×Ú¶½eË–±±‰3ÏÓ×;p×]w;®ê1:¢¬5kV-ýÞÝ¢sBÔŠ5ÿd×`¬L§º²Ï½´Ï<ë—ÈÍ“¼G–­lÖùÅ/¿$'´f­*r=W_õóRà iŽéò|‰%%×u}d R%éÖ–­·æò(>ß62Ò‡ÍÿèÛ;7‹­W_4›@<þ²•Ïþ{:™8â°ÅÏ?·>! F<^ˆzóyOC¦‹xk–C½Ýg/+u€% çýщJBèRt;&Ä,[Õœ±¾žRu‡åÔ;êFßE²p^±·oÇ®_$’ÙÃC*æ:ŠÉx³ÒF²ˆ€8ã±Ë{ûæŒmjh«p’’9 ¡EùtÞeÞ~gû­’„dé´¸8 [•†ºlr -èþd<ž}kÛÏóy$ÑŸ–cD©}ôqŠ¿ÜwbMãf¼g‹‡ö˜tºobòÑrqÔ©{ŸmµÑМ‹LUeù®‰‰Ût-:âr]WMEÇchþÂáûe¼Û‹*eh/³•åËâ)ôÚë÷qêêúxBîkécŠý$“ȯ"´šÂ0”a·iM&Ò,ÍÖFGÿF’ñ!—W[ë(õõ^ºõûÁH³ƒr=¨ÚÆ+©ãì¥IÅü‡êU“¦YÕj8¬«Iü`s!ÀÁpÛEçù GI$‘DI$IHD²xÌm²iýìÛgB…—6nêŸgZ2™¶LgºÜ8ìð£Ëå)Ë­%“±ûî}ô'ÿöïžçŽMLO—O>ùÄ•+Ÿ"¿Vkà‰†>AÓ$IÒ€‰=ôÅ ç7®½þÚÛeô)iMç瓕û˾-2dö£'|ŒDúÊ'G>{æ™gûˆxî¹u¦ë Ò[³v΢³ÁÉ«¾íÒÛ×­yzÉ ?&&vïÌ»7l~Ítz.:ï?5-îS:rê©GÝuà ŸD˲¼ÃædÑ!—FÒ¥$ÄH–îQT X¡XÛf8ÚGízóF§å.'=câív›eYé´Ÿ45”ÉL1Ÿ3lnß #Ï©tè¡_xý­[’ ÔûšãZ$?*lj;WŠyø9“SÛÊf.£‰˜ãQ¥‰<»{¿¨¨¿¯VÑ‚CηԒbm*®ÖÛÓ±œ¼gïí,Â1Ùž¢¢héTNW‘ÒqY:“ò­†¥+Zrk;! é Ž\`šU„Æ[Ö£ž‡2é‹=æ“t ø(Á|ž@lËüé;^,HÒDãvÃ@‡]Õ¨YŠõÓAÆÊã‘s-t~2}KöLMßÚVм¹Ÿ6ÛfK½¨1!Cr¬çR¢ÑšãÓ­Ç |Q×: ÝΧ «žº-C©Üyª¾ |K%.·LfªüÇXeÓ'2æÉ„ÛÕ¶Fƒñlަ1æ´›Û Îì´Ä‹ ³‹E!¹ý»b1$Jçöó>Ò\_Ù=ò,_J‘žÍ«¡ üh¡IÊñÔ`)I¸Ñ ¬#áfqÐÉsG:Ò‘Žt¤#éÿº^«”‰F ó÷o¼³ÕGå±±_þûoh Þÿ¥ÝRZ¢há¡—Ø1œÕi7^ÚôÚ K~`Ùö®;GGG/^|ÿý÷'“IŠÂß3M¼c1Ù…^xï½÷v÷ö=¾ü‰ë¯û½ŒN‹o›,ṃžÃœ³ør]×xàöBþ4ZiºvÙ%—ñBlÙòg<ŠX·æ™¥×ß& SÀÑÏþ«KïX³nùRÀÁ;7ÍŸwôÚU»”v÷g®ø7Íà\d‰’¨ñNúú·.ôÜV2–Ÿž0¾õ•L¹ˆê÷,{›|„°y|gÛ¦ÓHÓ‘ïáE!å:äàÏ!Ïl)wÛ긊å-–£ËÓVó^¸7!~ºÖù#MÀ](&)M«L—ÆSS¤3¹];n‚Z*%DR(“Bsç«61žî.ìÚù«Zås¨ÕB<úÚÒT ¹jºß¾ó¦…;¡'{|°-7…,JŒui5…ä»< ”dírå·¾zº¿LG0’ﵫÍ߃Iù³BŒ$íþM<Žò™oZj»iÞ -ø’Ù*5íÇt8îÿ¢ÑTHɯ7îÃè–¼˜½Ù¼\MÆ/ÉÝ–‰ÆÇ¦ªhhðêFã׎‹rù/BIŽŒ¶ÆHÂèØ¯%…+(Qö=`|ôð·Ø}u¹ükèq <ÇArerŸò}*.µj5NL˜Fç9QvÆÅyÓÔ+å›4c1-\øzy‘r*hT§;lõõ^kjŠ(uij++v:už†²ßWž‰`¿î}[Ìx³[RG:Ò‘Žt¤#éÿ²&‘™à=ÓÞ=öG’G¯¿µœd”óÎÿ„ÖøC¶ð+/[¶Œå^@j§¹iãæk¿û}UmjšöÒK/uÖyóçŽãÌšç‘$  V®\IÒã+6Ü|ブ.êvÃr_Ÿ˜œx{Ë뀵Za(–#ho$ìØžŒiQ‚”gXqÍê'—\óÓLüäf»¹qÓsdzküÁÒSõW ©ƒW?;áèŸûO-üѶ6B»/¸ô¸o|뮯© ó­×G~ûó{,+[íäAzMà¥'> 7º®çz<…’­¶þÎÖ7¯û—&cGµ:åËo¶¼±—^}êKo v?ÓS<ìé•»$ö°Å§_- ݆e"R!¹©ÓÎ<òü ?ÚÝ“£\î¥MïÜsûŠñq¯­?‰³J3‚›B†¥L½Ã‰¼eð'Ͷ®þˆ·Í"〷€tà“b)µ3UìY85±¢&H…p¯mä;±x¶ÓžŠ'ºjëµ /H€}–YGˆ¢™ÔÃ0J§’ÉöÖªSÁg¥ð u’(9žjc¼”r=ÀŽ"×!E!=6º¡Dð}6|A¸þH’aõ'8Ã#d¤2Z)Ø{…CHçż¡éÁ]à8åyîìÜ›H‚` ÂAv-4η# ¥3ÉZ|3©¾Vc NŠrZah- ·x2Ùnúr<­´G¥DŠ¢ývmnîê›?=¶ƒâSÐö`¢¡!& Zkº{à çŸÿ¾  Z Ï­)ðñQGýC«ÞB®…§(xØ7’M{ž…d’‰DªQÁîá ¡Òª %dY¬”*4K{ÐŽü¦™}Œ#‰$’H"‰$’÷+”ïxn»'/¬}þ—._fùcÕÆ®xB €%"›<°XFRÔÀQ«SÎfÓµZíW¿úÕðððÏþóX,&‚ªª<Ï+Š8è8N&“Áx`špid¸ÊÓ}?ù÷ŸÍš×Q*7­½ëî[}dQ4NÒùP;ЀÇpAH’öŸNÌ™˜,×k¥›~w—Ì-€«-¿‘“šO=Ôétt»žŠu7;My©XÚ²,Õlˆ! $kùIRžd.©˜m‘‘]×5=Dtx,SHXY±, ±<ÍÞ4GwRÅÍN!DÚŽqEô]Dñ­¹•¾b×ÄÔ„‡:2_PŒ&Bf69A7lÃG.O‹†cd“Ùj³Šp®ŒË&s•&àšÝ›?Ø´ôJs\bÓª¥'¥8xÛÔUÉ„ƒã–œÑ#8–3,#LW›Ó=sG&öˆ8A5« ¢Õ-=!'ÚJƒ¦]Ë©ÐTz·£LH†èìD"QoTiŠM§ÓåÊHO÷ ¯@!m˜àS2k64‰oÛöŠ•7ydé¹çZºôbÛ;c ç÷®]U%‰ìg|ž@)h‚È ucB¢IËi%d‰¡øV«Í"ÙE‚54Ö›Õxþ™(ò(†§xtˆÔh¨¶®T)$¹x÷ÞÇßìp8Ä™¨Á¢¤…ZJšÈ)—T'x2ax­—4LÃE®ÈŠU2*Ʋ,´x09WZ#‘Ê& Vsq6þ˜ Oå›Í¦å×%6‡wnDäœÁy;ö¾É ”3x‡‚ý{PšÉHS/3H²‘*3x`ºÜÚ+3yÅ. TJwÁ,P*ô‡gãe”„Z!¾Ð8óG'À Õv$%& Ðfú:„HfåŽU~”è¤ê€qˆÓADhìŸqn‡»€ßMÏêÚ=þV•B¼‹ô”Xhh8w(RÙb±0>1%9ŽSt…F¬‰Z:{ÁÄUâ,QIA›JÓAŠDeLW#qÂÓHÁòµ9”v‘M♂œñI$‘DI$‘üM/Ù—î˜5•“ªšÛ ‰”Hã –Ž{.K –c…ieœÃ_Òµ\äЬhZðšV3ÉžV«åú®$HðÆïh-Yˆ½ÕéVƒg’†Ý”˜¢m³"J”g»ZU²|¦eTm¤HœõEÌø‚HYª$â\Gi1”Ìø9Åi¬~æ~Ÿ*¯^ûÀÒ¾CŒ —ûûrÏ>³³Ó¤®þê5í¶¯ºˆ 臡IÏ1hŠ0\ÅFN%YVR,ä¿gzY¸@IiIs´L,Ö;u‘UUB´|+)%AF'F¤¦Ä.Äÿ?b*n¤#éHG:Òÿ7jÑx%0reD$Ó¬iWkix¿ÃkšD²€äð2 xC»¾çøŒíº€m¥“rµÍ1¼iwHă„”üJ¥¦§§rÖP|ùÁ8¾i!D¾È²¦¥–Ó©€”€ïÁ)Ã%šbœi4§X&%1yšAwÝ÷K1f®|òî¥K¿CìÞ»np`þ /¾.K¹—_Þ&I9ŠŽ3´l[>Ô*ò0¤\,Á  ”RËø3/”×é´lÛM¥2`¤O0 ^ƒÓétº»»išÚ¾}ë18 4M“ÝÅÁv˦)ê…Ö¡B1°Ùßß_.—FFFb±žSèyP]µ:­h5IŠ`uiŠ Ç’,¨ŠnÙòIŽgàÌÌ1'jŠkÛ>T f¡–l°HM††çó['&&àOh>ϳŽc$ K‚>ôÐCëõ:ôýîÝ»{zzÂÅDˆØ¼yó*•R/ƒ@“!°ŽŠÍø#6,ËCا§Ë`þ„¹|Ú¶ñVæP;hh2œß Ø_øIã`‰I¤#éHG:Ò‘þë5¢y: o^išÞˆ'Ç5²™¼e"ÏeÛ7M—a(’²™vËq]Uw³¹®J¥R(BØ»w/0 `¼ñ¥ àè´k#‰‹›º“LÊš®0 Y*Ouw€R‚×½ )8\„ð‚8Å04àçy„eÕZeÁ¼ª—6o~zÉ ß%¦«³™ì3«× b̲)O˜&©„($tň˱ŽÒ´ŒN>—@Èò|²ÏgßÃÀ>á(&JõV“£9‚¦ðg7\ǵìx*©+8.æ MÕ:J,™° S·L ¬ÀÆçÒ‰d£Ý2TMNÄhÒs‘kjPF/d MTKUNÄÿ(:þGŒ‰¹tn÷ÞÝ]¹.Åj¶bÉX£ÚÈä “cÓ‰T–gxͰ8†1øÇ“R«Q‘2›ŽKºA±"Ç7;m‰äD¼Q­Ï<ÃÚž >²çÛªbéÉP™´Ôh×)DQ,åÙÉpÜìà–‚O¤Oj¦gà´ª£VWT°?Ô?0Yš–‘ð·l1&×+UàõL2¥èØÇŒoÈ IiµyI„È$Ò)ˆ‰f]¹üÄôÜ þÀUÇ÷²©t¥^“®T- ôl gX–ÄãÈ ¬–už<”ÏäÁ¾©áXY†Àr¦cƒ5ö ½=ý}`zôÑ{µ‡ûôŸžt¤#éHG:ÒµF4`_LN8®fÙºãX²,;Žpá{tLNu:9&*jC’éŽRÇãPžåÄf½KÄi’ëíîq}Ï2LšelÓe ´i[©D²ÓQI‚õ}œ¹ó|GY×sk6›¢ˆ§úX ‚ ðè¥Ïд\)·ººŠåR]bñ„ÔlN "zö™eKn¸–Ø»÷ÁµÏ­u=`ðžt=Ц$×! ùâØè(ÇѾ§ù¾ÆÐ~°ÊA:“âã©d’¢iptldœ¢Œ%Ê•ŠÀóRLR;íx2Q«T¡I‰X|34î P’cXÐ A¸’4Cú,/H„#¦´•D*Ñj´@[†hû§ÿ. €ê˜¾‹h†—„x³${>nwGQÒ©ØØäH_±Ö¨P$FW‘‹5ZM¨±·¿oÛ;[»º‹àI8ä+H¢×n öh†>=95oÁÂf­ ~‚}ÃÒNl+-¨•f)h/Æ`ŸüÍs´ª+®íä» cã,Àn26%A¬Ök1IkV"ÀÒŒãÙ4í±<39>18g¨R*C”’ñ„í:J»ÓÝÛS¯ÖT]ˤÒU‘E Z ¿;À>ÇðP’g¹ÀšQ…G4öá½[az®+Ér½V‹Á³‹MLNjªÚÓÛ«k\¥) ®¶[-’¢:ív6ŸiÔêr\k𳧯wjb²Pì‚(µ•Ôh9v.“­7ÇC¯A+‚zÑŸh‘ ½P"gà.]ÕàIËåj¥§Ø­h*œÉò%Ðíf‹bhhãäôTwW‘¤©V£ g ½´Ú„«Ðkp QBžQ ˃·`ž7ðÓs\°ÃP4/ p g Âpúê‚'ð/Ùt¤#éHGúýj2Ȇy34›2,£Ì‚ó(ܶ9ø«>‹|꯯ş1Ÿ™¼ç½;w1œ;臤‡Éû@àO„'½€ܵø«$ß#öîž,¬[÷¼ë;@uŽïy.¯ÎZ­™Jf|Ï)äÒµÚÍ€)<9f$ÏóÃMÛÀ^‚@Ó´eY­V‡çùþþÁJ¥â{xØšaü­,xmIÂ_´S%HµZ Q‡—€šu]7t§Õ4úz òmS’b¼À]ß² Šb0BO8–ÝÓSÕÁÁ¹Ã{Ær¹‚®PW&›Ý;gnÿääX6—4 ¤P«Õèêêr<ÁO¼½ßè(P´¸»sçξ¾>8®Vš’˜„ŠjI²D¤ë:óæÍß»wŽ´¹ÛQê©t,4Œç¦ÕÃ/OƒM<ƒPס±SSS‰DÎCÓÂ$p&“Ñ4­\.Ï™3§ÕjA´9Ž çëõ:x%MKO§ÓívŒCa0Ô÷‚Ù÷Ìa‰‚¸…#õÐMpTšËåBkP)„(h,™˜˜ÈfÓ"ø%?2úú¦¦&Tl«²ïé)ŽMð<ÛÁ_7ñº»{¥mšögNh¸E¹R)ÕëÍ9spŸV«e’¤¡ ø…ö''§“É8 m©4ÕÛÛ_¯W†K$àÙ¨ƒÉdêØ? }øÑ#Ë"Ôl÷ƒqêÀ2\ÅðÌØ¶Ë²t±Ø366q€V€ý®®<Ô>Q®kÃ]ÿ'Ì2‰t¤#éHÿ7Ó>Þg‚˜ÏèàK`˜þpI¼s³ þ¢<š˜¡·ÿµ€qÞ~½þTÈ"Ä¥—\Ô1JzŒJz,¨µkV-Yr=1º£Õ7_·îUŒƒ å{Õ:ˆ¢ €\OKDV>—&|{db¯(s"€xq«¢š¯gt{áF)`‹¹sçmݺ ‡Â9Pøˆ7RétlÛ"Ù¶mÛG1= oeë ƒ§( ¯‰%9V.—«Íf«··Ç4­f³Ñ×ׯi*ÞNï@øå¸z*0õ}ÒÐ-`ÁééÒ@ÿM^ù¤ãXM´Zõt& dhNU þ d8Ó˜ š6wîÜÍ›7÷ööŽ EåRup¨b|jhÎÀ†ç7» <'xÆ ÅÓ<ÿBð‚&ÃÔ µ ãÿy^*™5tˆ6Î l ð Ž…Ÿ¦''''-Z´wï^è0 цV@Ø¡ `jgp9Õ]rÉ屘!2 û•W6n™uwwƒ`SÓtÀA 2 º«¯¾úG?úQWW×âÅ‹Ÿ|òI¨ È J®ü1 aãy©ž§©F"ë´U׳ ba“ÿÌRQ0ü}õ+_Ãs ™fH€Ú/n(MWÀËð#£Ã æÔî4“‰ôÔô46\òì–Ï<óÌ›o¾ú//—ÃÕ<á\ $ü Q:`.ºè"¸4þ|°Œ F `ç›ßüæo¼ÁÓO? ‚¦Á#tòÉ'CÃ!ª=ôÐÈÈH¿~dÜï»ï¾û¼_7þBÌe—]öë_ÿâŽÁ™puôÔòå/ù–[n²xSJ ž(8'X„…#‰$’H"‰äÿSñð(ð ÎâàþW‘·ßŸ$ÎúxÒá_kpÜ/yŽ|ïÂö)S'ÆA6>çÊðçš5ë—|)1¶s²w¨¸níKžçS4‹qÙ4ãã‰m¾Y-O_rÑgnÿÃïRÉ<éÓªbv÷ö½þæüà‡nºé&` *À‚XLÚ»w/¼ná̶mÛ-Z411Ų4œ¼À»ÃI?óãË]xQ(Z­@ÐÁððÃlÍé?üð£yä~ ‰… ~úÓŸ¾ãŽ;Þ“ýÚO€N;ì°Ý»w‡ÆO=õäÛn»Ä[Tc‚<{ñ+V<¦('wîØÃÐ’‰wbDçwÞí·ß~øá‡ïܹ®†iB@–¾¾>°LùtêÊàP÷ÔÔ$0Ä1Ç%ƒz{{ß;2ûžxû^1~Lî:餓|ðÁ0Éwå•W”PBcÿ ºD"î¸M“€€À‚´3Î8ã7¿ù ð«$áM¤í@à8Ld†D‘ sc‰DŠa¨Ð[@´:%z¶oßéyÎ'>ñɼ?•Ê(J[–ãZºnÎ;´yóË’$är@(¨:Üߎ¡.ðgåÊ•Lè&`8è ¼p¨:äþ¿ô¤^z饿úÕ¯PÀsÐÒC9ˆíÚk¯…Žƒ`ž“­[· Æ}xr üPƒÇÜgü…vqÇwÜš5köP¿ð anÜñ҆†ày;ÿüó×®] |0>88X«Õ ˜@ÛPÅ_jB$‘DI$‘¼_ ‚Ñì Bò½ç÷½=ß%EÊÿFüµŽ™(ÀÁÙÙp`!\Ÿ´paOÂ#ÅtÛp〃kW=¿äÀÁ=;z‡Ö¯yÑñ(Šæ\ßõ|ƒd]Ój&Ó‚oÛÇ}øœÍW#‡›or‚œÉå÷Žîíééùðñ~bùa¶ ð¨V«ÀûÐÞµð2nµ–é„ÃðÆ  —FJ>ýôÓ@xá¨ôøø8\mwšO‹`¯M›6h‚…|àëׯsE&$ωµZ=M—&‹ÅÜ9ç.þÃníë뙞žö}â¼ó.ܵs×–-Û ùâîÝ{õ\'öòù<à P&ƒåpŸÂ0«Bë†ð,€:a«*vã•W^6¼°$ ÷ÓùsÄ ¼÷†óóN9í”_xœªùà1o½ñ°ÔØØÀ À–¦+í©jë‚ .Z½úYUÕ!27n\ U]××4@ `n||ÜË€ÑÝݽs7 ·L&cšúì»?ð*ªVë}Ç{Üc=Ê0X†òÙlºÑhA] ¼{÷Îb±X 8IðÎFÙlB&hù@†‡‡=öاžz úh¨(',X'GGG¡L?ž±pÀ@“ä 'œ}‡PŸxâ‰ëÖ­ vÛa¡÷ìÙÞ†ßö9çœs}ôQxJçÍ›·cÇ(îÞ—¢ì`$‘DI$ÿd¿aÜ}©;"xSî~¤H¡`IpÕýàíUÈýö XïçC0¦Œ·šñ™Y,Au„“Dž¸võúG6÷öÏ_¿ö%Çe(ZÀŸ5ñM’³]¿í¸*á:g/þŠeÉ|®2iqäÑã¥ÝŸ¾ò7ÝtÓâÅ‹—-[oîŋτ-ÐÉ=÷Ü“Ëgàý ”ÐhÔóù€K2×=ÀK'…¦[­V,èyî¹çà… ïû‘‘‘ÞÞ^p@ä_ÿõšz½Ùh4€!–/_þo|ãºë®ûÎw¾v4Ÿj·Œ %™%vbrô¼óß{ß]@!áĸã;qõ굺f]ùÙ/Êr¼Ù¬Vkóæ;Î9ç¼E‹ûÉO~ò™Ï|æ‘G߀`€t–.] ôvúé§/[öøE]" 2À¦Ùl~á _ß|ðÁ÷¥œ`¿Ü ª+®¸â¶Ûnc\:òÈ£Ÿyæ)”%K–üð‡?p'Ï?ÿBßÃ?píÎ;ï>÷ܳ;õÅ_€ûÊW®ªÕm·Üò‡V«ñÿøÏ`öÆo'?~ÆYùBö¿øEø…V`¸á þF r¾G8®uÂÇNyú™'²™|©<Å2¼eŸ¼âÓ4ƒ·ö¹ó®;º Ý|_úÒU`Èø—¿ü%xxå•Wþìg?z’ƒÈ@íàóœ9sBÞš;w.tÖ#Ñ{ã7 s‹-Z455yÔQG­^½P !‚>ºà‚ ÷¡ð7°2ôÔ®¿ùKÏ>ü~€ß [·nݾön<øàƒÙ!¼ªªB7ÁCµÀ3 Ð|Ùe—Å~ó›ß„òP Îß|óÍP T*ÁÓø—ªˆ$’H"‰$’÷+dÀd°Ü#Àµög?ì VcdðòÒöˆ¿É`- áïûkßÁ{qpvra0 ÕqxclR'èI …ngW?·débtts_ßÜõk79CQ¢LÀ#Y×s; ‹8†>öØóæôwµkv±0wé~Ì îù-^¹rÅI'žúÒK–,ù~±X ?þôÓ+V€6zûú*• ¼k ÍHÀ ©T ^ð@oÇûQQd&¶mÛðÁ‹ù_°|Gàc Ä­YõìɧœºníšN<éÞ{î4@#ÕÒÁôI˜˜‚äy¶Ñ¬¤3‰}ì#[ÞyHPæC™7÷ gŸ]ÝUè9ìðE¿¿é¶L6ÑnO_wÝ5€hgœqÆïÿ{€’K.¹äÁ‡b¸ï¾ûø ÿüÏÿ —Î;ï51yú鋟}v%D£^oœ~Æâõë7üñ÷ß?àãÉ'Ÿ l 7Ъ†¹«O~ò“@ÏÇ{,ÐíœsÎYöè㯿ñê­·ÞúÓŸþ4z=Ó÷ïÀSŽgÛ«TK_¾ê«7Ýü»x,ɰωg-þøos#EÐå_ùêUwßuï—¾ô¥_ÿú·£££@Ã_ùÊW îÀX§vZ‚W]uð.ø6[éØb Èmö çíÁWå«pÈïö?Þ þ†µ®_~ùå€w²,ÿøÇ?ô³ºŠ÷*‡ÿšXüÏÌùçŸÇ]]] ÃË¡޽ð e!˜;wáGˇ?üáµk×~ô£…ãàÓÏ5 òßýîwPW8õðŸN÷ÿ"åþß$ÿ›I$‘Dò7 ‰— ûû>çÿÓ܇ƒÞlÖšÁAÂó ÷¯ÇA„—É?ûÿð²ƒaj³ åú"L‚ª`O¼ò¸µ«×aÜ»wÛÀÀœuk×¹IÓlðÉc‡bÀKÇum ·“O>óŽ;n¥ Žçåt&Éô‡?|ìúž;ù„‰Î?žü ­^û4ÐŒý4ÈB¬Ýl €)AÀŸ28î¸ÜrËÍ1¶m …“ÕN9å´—^Ú>#~í«__öÈC'xòŠå_qÙ?ü E1 ïãyÖ>a¨K3@4C–JS€J›6m4 8£¿¿Ñ¢#×­[ç8Þ)§œò†MCã(ò”O¸çþû>÷¹Ï=²ìÑ0)øØŠåguöÓO?IÑt&“9âÈ£ž|jå•W^ 0±p>^}@fýÞ÷¾wçwnÙ²°ì@½ã± ¤0êa7I`J€6 ç¿ýíoÿOöÎNªbYø}âäÍ‘]¢bDÌá^³bV¼L(’sÎ’sA¢&L˜¯ fôŠňv—Í“ÃÉç«êžÙ]dñ>|¾÷ô~SòggNèt¦þ]ÝU Öûo¼ñF€àX$êp9Ï>ïüŸ~ÊÄá°Ë/¿x Ú 8Œù L‡Ãaøhæ£>b¦ÓmÞü8ÀkëÖ­C¡GåˆC’xÒ˜/¸à¢÷Þ{'Kdee˜¦}þùç½ùæ[ÌÃ÷¢‹.xþù°Þ|óM€Q¸òÕW_ýÉ'Ÿœy晀PP~ýú§îÙ³:únWWWÈu„Esó„µk×2+ ¼Â„ŠíäûöÁÕ€¯¹þº··¿«êÁË:“ŸŸß½=7oÞ Gzé24 a35ØÙÿÙ+›]tñE›{†Ý»wüñÇ¡ŽÜÐysçÎ…}öÙg€‰lŸb³åb°‘ÀF'tÒÇŒ™uîuÅWðAEà\ÀVàæ /¼ª ,u '{ì±p(ÿÎ;¡=…o»í¶/¾ø¢²²à›-…›4¬K³÷…¡",Út4œÇïþú›V¥¥ÐÅÐÎ7ßzëÓO? WË+Èf”ÖíÆw}µ+Åx–€›ºiJ.‡E¡ŠK…Ý44:úêвtU×+_yíU·×{ÎyçnÚ´©C‡PY¸ïñÇûÚk¯jCíËm¿þúë„n:üÍÇí¿%¿ÂA’´ÿ8x8 ’4¦%-iIË_Pþ ‚–pA/à®]¨àOÐý,´òe—]òî»ïŸ{î¹ÿÜúz·›nØüØæ¬¬ Žz÷¾oþü…%­JBÁˆì”üþ`qq1DÍ…dddÂ5¯¹æšþwÑeggü}ÿý÷pàΆ Zµi ÷:笳·½ùÖU]»¾ðÜóÝo¹uË–-N§“ÆÔ¦hÂAPEš¢ÛþY–eUUáÊÀj@Z¯€5×^{-ÜÞ üë_ÿŠGc"á F/½ôÒW^±ëË]Õµ5—^vé[Û¶_|ÉÅÿ|ã ¨àÞýûzÞ{ï×ß~{Òñǵk×}û:uêp6~üøÕ«WøpG\IÀdjAh< ~ýú-Z´@ú êí ½ uùå—¬à¢ô‡ g2=lÚXil:ÜFHHšÓ’–´¤å¯'ÿ™šböÈ£7ÝØí…çžûá»ïAV®\Iš˜ØËUQV0ÌpùÃ?,X°ø²´´´¼¼ø`®¢¢îXWWת´%gÛÓ¦MËÍΩ¨<8uêÔ•«V޼¹í-8f؈áPΓO>¹WŸ>Pf`ˆ^x¡¤°®yçwîÚµ @sîܹÀ£G†:6Û¬À^P—¤¾à‚ þö·¿}õÕW:tz*‚[—••Mœ8 ¤rOÏ{]˜- ñÆoDº…KõêÕ î …€«à``5€9耤Q£F9¢A3ÂÅáÃfËÓà. Ö»woè2ÀAšÊІ»Ü{ï½@]~¿ÿé§ŸFðPhÀ€p¯ÜÜ\¸àã‰'žPu‚1ÿ’ãŽ;Æ PTûöí¡Ií„rÂE û M âãÆƒëøëêgÏLÆü¬ÇŽ —‚Æ™2eÊñljD``,¯8¦ý±ÍÆ5d,rÑÅ}ðþôðÎ=ÿüóaLC½  Ä}/\¸°K—.;wf¶O õÂÂB`M¶q°¾¾þß•„%úÏÿ¤º¤%-iIËÿŸòop˜ 4ú|pÎ9çÀ‡¨_ Sä` ŸŸÏV0Yˆ8æ7 äåå±å`¶.\ï÷KNIr`„dÐÓphb8rçΠ˜làtÐÇ@l@þüeß^—Ï ×ÔÔœÞå´šªªœ¬ìx4–ˆÅà,’2®ØM³Ô×ÖÁéCaŒ£°èÍ€Sp#øöúë¯ß¼y3€'˜,N6¥ìXPTøÅ_œ{î¹ðÕîï¾…Bª:vèyñÅ ‚uõ@™@-hž´¬Ý»wC¿àúÍ6+|›P1M ÆAôú>ýôSh%(É%—ÁPS J# îMÍ œ,z3\½A "€Mð°ûé§Ÿ <ð'45\ øéHSXÀBVøO>ùº˜óƒOà=‹äêõzÙ-ôfqq1ð4”`…’†Ð‡Š³5n6B 0G^p úZêÎbkçØ·ÿêk¯ö‡â¹Næb åiQZÂ’øÁŸ>`‘Œì7’.ô&ü —eFÙìÌ,øîW†¦ƒF†ö„?ar½ 3¨´* Th:6êþKËï•ÃiéHËÁìó?]ýF©òf~|ZÒ’–´¤å¯"ÿ@Iƒ:ËB~ ³‚e 6φaJ,gèÕ :Ã)@c t«êª hÈâa°XÁpü±ÇûþûïƒÊ‡áš¡HX·-›ç$^€kV¬lݲeA^þ÷ß~ÇÖ™0 Ä^%A„«ñ¼22OÕ-ZÁ@ Y\e¸Q·nÝž|òIøˆŽlYRºïÀ~–G`jêÍ@çÜ6íÚ}õÕWPr¸„S`XáN:1{Ò÷ßÏðôp „pYl(4#ðTÅ\tyÜp Æå¦.·A¿š”%&f‘qàšéñ)§œÂìpp:ð1´ÛèÆöbÂ{¸”–mÎk¶<¸…‘ö Ìì‚P)hph h%¨0b×®]áJJïáj,5Ôp®W`¡ýi4lÇ‘‹ÙžE8Æ\ªÃöº½Ø)ŒÉ …a<8$™ 88;7‡íSd>¿P5=¡Þ鄯St¸\P†¬$p¼KV6 aII ›À¼…9@Ãxî¹ç ã ápÓ¶mÛÂ`>Ú'ç¿. 6ìivË]ÓOþ8ØôÏÃ+˜&´¤%-iù É¿ÁAà<ÐÙ n…ˆ¼ h꽊F_jkk ‹‹@é‚êí^[]ƒ‰w³shw zçu‚JöPaÌÁˆÑHÑö‰'ž¸ÿ~ Ëü±Ó ÇÇ5µÖ9…[—¶LÄ⺪‚Ž/¥^)ÍVƒ™¾~øá Ðô{öì„…RhîÛ·ÝXa×®];v,--…’ÿ²o¯ÛéÊ/ĵB -8¸}ûö@Z†Y™1®v¤0Ôhös¹<‚r£-9ŠÓô}ðfX¡v墂BVBøðÇ=?Aû+#&: h3 MqªWc]£°–Õâ ÖbÐòPlh¨5t.°/@üI'-¥:ýôÓ°êú‡K1ÞT~µå®©»tÓjþyäð²ýÊ?úWì4¦%-iIË_Iþ „ÚU »mÛ¶ 8Y8bq̇÷@yYNn.àÑÁj¤:PÏ }‹ò ˜u°UiK8”´aé,‘ðœÈ¼\á  ÷@!€ À7e倀,+à ÀJœZ¤Rs9y ÆŸƒƒ§€Þ@ëwéÒå»ï¾Y{oA›A;@IÑàÍQ•‡õ ƒ6Ö˜p@|à³£ºÎ"8Z4z ÔÍå@{3óXÇ?=±R’Ž8L\NË0yÃj¡^ÌbZTPXSU- üý?mí;Z¡NŽ+WÊf Ò¹ytãêÿJ؇0‡Ãð'Làñ‡.K>¿^/L³` *˜ºxÝî4¦%-iIËÿ‚Àï0 ³Œ0‡ P¯ðC}¤=ñyyyß}÷¼fddTUUÁ›ºº:8%‰ƒð ^ZZúᇵÀ/>‹i ¿òèuÁó,¸1C"¶¹ÍTµ„ªº½>ÃÒÃѸ'Ëëryj\×Lb›'ˆÉöfU”(Ì/ŠÅ0Ìo³ÆV”€Rgv&Ô”nÌT‘Weƒñ„eŒfzˆüá \-hB1Xöøƒ òGwæfµó¸Ü±H=LËíCû¢El‹ç€E§Ã¢­©j¦Ó#4§>ÙB¶v̇9Ê`®Ž£ª¯mC‘˜µÎ„R”$¾ÕuþÆWMôð ´MÓÖM5‘Pâ FKPMÝ44´OZPshy5¡d»<Ìød¥Œm¬YbbÀJŒàiaÜfâU` ý™ ll\1‹oÓqõaÃÿT]Ãv)°å?̉‰k¡»`´³Tð:pOZÒ’–´üÿ&¿±ú¿½Ì„ÇlFÌ3õH8ª'''§  à“O>éܹ3ü¶³0p[·nM.·lÙp.Ú©S'¸shhHtÑྀ.‚hëFfn6ڽܧËSUWåÎÈÀR˶MѼ.g8v;eIvÅÂa“kžÀ ô€,$^X@ß4ð‚ÀOÞÌ `%P-ÙÙázõÆ•Dc4Â?D÷Ã¥ØJbVv¶IÓl°uUPäŸï¨nuq»ÜÐ{„ã•PØéré jS ·å€ƒ†e*†.¹/ÅÕQfqÐçóA‘ØR/n³£ŽØ wVݲ­~0`IDàt¨sï8ªëü!- í‰EÕn¬Ìp{`”ÌÔHôDB3tàfxMèš7çÛà hX Í&¦AÂÜqdG~vަ¨ÌpÅÁœ-¢Ñù§-(¹EÇUF“qå¦ãЏù󇡿EÁëñ¯{Ná!‡aFahÁs 㪨¨Ht8ÂÔM[ÊÿÓ´ZÒ’–´üÈo¬ 2WQB£y€®a{¥Ž”|¾bû¾&MšÄR¶~ýõ×ð»ýÖ[o!þòË/%%%;vì€C»té—PcqéeAö†ùóo„¢×Mà_׈C†7ºiÄ”„ÏãS•„,I–ªËN¨ç@yEvIK"ðäÈêm×cª³žˆ&²Sl‹ðDÓu£‘¬AQ&¯g7ýãwÉ¡ª×R5æiÅ`pÍ¥þý—EW5БÀ‚x»¾ek@8e¨Q0±EÞåôp˜¿š4ë‹Á¬z̆‰D Ö.ÈújIJÂ@;èbþ"GŠø?*6]ó5LÃ!ˆŒ“ÿ€˜+çqç(°´ b6¸©ÚÉ^`§7t;| ¨ déËÌÆO ÓR|–÷¿5$þXa%V5èN˜ˆWMG×xà¡üY$–ˆÃô&‹±Éüp„ƒ!˜]À6:¡C4îàä­ ŸöÙÿu¡Ó’–´¤å?HŽ„w„.à°ÀA¯× *”û‘âé²,6l2dˆªª;wî …Bï¿ÿ>â`EELîß}÷]àSO=•ñü²³P&L˜ÿ&¨t Õ›e·K‹†e— ÐÐT E¦Ú­Xœwº‰nÍ ¢@’ÙyüÊ#EQ·ˆªY$ªJÜÎ@Muv1†t1-ôämjAù}ÖÁ÷óÓ«Ë4ùo›:+Š+;˲ÂÚ)(°‰LSÕ B¸`Bª¢Ê4MKW‰ˆ.¡2Ì3™³Ìf­ƒ„®¡C›ÿŠÛŽäÑ|$iÚÎЭ, sš>ªëüQ¢h[rJ¸ü÷¢$¸R˜ ],"`Ø–¡h0z,Ü\H’Óƒ¦ÖAhçp0˜—›ä­¸‚od'ÍýùR³f{VƒJÑqÅ(PQt\ae›ÄTo?ufŽŽÇ¢^—.fùf»Š^o’é ¦$²ðç±Î¦%-iIË€„Ãáf?gäþìÊÊÊrssù嘷)$0K$öÚk¯ü±¸{}ôQ"‘DdÑFÞ{ï=À¾.]º0[ pCƒ«A r–Mpܤ~}g®zHÂØ!ƒæ-\ˆfBM#'2œä˜1tøý“§Œ¬÷õ\üø£h ½™zÏ[oÙðè&’•‰*¾5£b=oºyÃk[I<ÑûŽÛ×½þZ³8H(Ø2Û/«O°²&Ë…ê“-1+1âõ˜‰¸àr$íF¬<ÿvµ›¼úg]yùæÍ›¿øô³|Й͒aXDú­ÅîÃ/n$QF’¶"Q^ràJ1œª*áà’'ñhؕܫS ‚t„ê°¸Ó¤Iã44×ÑU÷0òûþûï;½Î(0²½.7’Åú_ö>öØcš¢Ž?zÙ†öv»¢‘73ÓÐu±aXŠMJ,æq{`þ ÖÔ­^¶"T[O4còÚUD¦ ðâê$~ ü‰Í›w~þÙÊUй9Øß¶•áÜ_íÔÒ|EyyiI)šÒ /;âuõîÜ<ü:Y8gîÞ_~YùÔf"‘4¦%-iIË(GŠ» ``ÀrmüüóÏíÚµ{çwغb³Çcò‹`ðÍ7ß\¸p!sWö³, ÎBÜw`?ÃAø¨sçÎð*p|C–†Bð@ÍJðgB[Ö§÷ÐӈϻjƬÜvkþ™§-¶HŒˆòúÉS‡£MÛÇ&LºµÇ=Òi'‘jÔ‚|ã†:BbÑH†×‡{ö"1‡Û¯÷/™3×g‰ûÌÛ°~ñÌé#Æ%™>"ˆÀÉMWäP8C}eà+Ó¢–$¾Q'ÁM™²å–º¨2†OM3Gßë¸Ã¯ú‹Ý‹–,œÿÐZÓÔ·X:bhSõÆñ w&M½Žn XÌÙuµµ×®­ßS.˜fvqQU}ufVÎØ±£¥¬<’ˆlªÔpÌíõ4.—ºý7sôرcÇK99v<Æùø÷žÒ^Eø1µlY–uUÓس /SqdfM%¡Ø¸¿Ÿ;÷Ó÷ ' ?ëÒ%ï¼G¸Éò¢†Ó-ÒgÞvˤç!²8÷Òkǽü2Ép‡@ÝCÓãšéÉð¦vÎÙNø!×TÄNÓ˜Þ«Ïä‰ME¼ž™3¦}ûËÏOl{õJ,Îy2èáTKTÕtXMUI$Dr¼xæšž®,K\\UÜNQ-$Ó´L·î¦­Sòs"Z¨ÏDlÜÕ'¸IU=‘s§ÝÚmÊkOšnN0Øb¥EqÜ—&‹X} ^ޝõ×åää3µ“ÜPÕ¹zŒ¸ø±÷~÷íCç/™;¯ÚV…,—b˜ËæÌ]°t1Uâ‘Ëü$+¬©Z‘DŒ8Ý¨í¢ ‘]C.¿jùó/ Ø$.8ˆÊ¡zCæ7©{ ”œ§´eÒ-wðŽnMÃÆA#.®}cy@qÆ¢D¢ûê8øÄú[—=þq{_àvj”x¼X*Ùl˜Pñ"À+Øo¼¦ª²ËeÒ‘Uá)ØJHÕTl‹óq l’Lº¹/n‘;q˧àO5q Ý-Ã5•òJgn1"E†hðį„ ξâÁ—ÿIÔ8ñJ$[B†R4ä·GÑ/â.¸x4óä I¬F^¯“D,¶Ùó¢‹7¼µ8*Å&]‰º9^q+'Ö N‡zAƒ+*¶ªÛVµ §L"aºö¢@˜Œ6®Úòòü’R`P5Wkê¹ØòÐwu ‚V­«%0ôîÅŽ<¾w@kÛz4!sGU~–yÏUWm|{¨©ÊÆeqÞ<̃D€ƒÒ)°ÖÑ:Þ0™Ñ”¨àóF£áLguÉÑh G…x\ÄLà*-áÁËáE‹D <°0 ˆ…™j4æpøp0ð‰Åqw‡,c\¸H¤¾Î———¤@¸f"³/J.yrs±õlküõ7ÍÙò ~›áÅ ÄY¾?™›M¢ 8ròíwN߸ ûÈ%Ú¢5ŸìeplGdŠâø•á¡Ñ‰[¸¾¾.77/¹‘V3“^U ­ õ±²pŽaòœDÏ•à¹À¹ÇI8#y2܆’a¬B¥àáÍÎ'•Õ¤¸¶$!‚œÈ»ñ1HKZÒ’–¿°  %¬¬, ·ýû÷·iÓæ­·Þ„^4rs0ìÑ£Ç /¼_|òÉd!i^ýõyóæ±o¿ý6ÇqÉÅâŸ().ùðCÄÁ.§t†`‘.kqŒrײ%懈Öcà4 Ã5Ó¦µów~ün›«.091¸óçNú‰OZ¾ˆx½sz(è±°?QêÔVµSÁá ¶mÑs¸ì’Ö¸Ê PÅñqÝL˜†Çåð…Y™‚eZU•|fÖ”î·M[¹š¸Ý ìH°ÿðá«_|D#Ä—E¢4üÑ5étà†3f<ˆFç÷¸÷ÄŽí®3|ÒÐA3—® .÷ØîwÎ{z3‘9ÔкMl‘„”9'jN)¬[¼l9°I,Û úÔWFî“G Èù£íY§/~ýÕ“ÿõ²*™N&þ Ú“&¨PFÝÂ×<˜×ª5êÔ¾!6â` U"èŽs2äì®+_}À;‰M-«Z2dü¸M¯e¨Šhº§ýãÖ‚Ö¥‚ÏÙgÔpjN”§ô¸¯EFNåî=yY9Å%¥Þü)\3뱇öª‹òŠP¡º'És&Leœ“™5fÞ\l 5KöÌ~ŽL9ÚÁ J"æu:ÆOŸ±fÁ¾³g½æÚ–%¥eee'w>¥²¦PÌ—›=rÑÔÂ6eJUŸÜ£OËüü¸a–×U/xüÑqC†Ì]½ª>P—“[ˆJb›â` TŸ™ q¿ÁÃ⽋O‚x]Kz ãÜÒ=+fÂáY*7ó®^Yy¹ƒ¦Mž7kš™P³¢æ€¥‹H®¬6ΣiS/ë>ýñ-ŒR)é?;Ô.Ï”¼€&aUõy|\4¶xìx9ž¨,/kuì±}gÍ2NËbº`b i#oºeÑæ'㢴켬 ôQ×b€çföXœ ÂŒŒZ´˜dà¾ÇM9ôŸ§×ÈSûöÉÈÏ Å¢ÓV>@œN¢k±PØSP˜:|„©hÏÛºí 7ß´vã†{î¹'§e¢ÂXäç„î>²4há<½®ZB·'Š•è(ã_4yº/’àu躇ÆÞqû¼gŸB^¥„¦Èno ©WjaÕ Þ_9í±ÇVΙˆEêË.Ù°꫆ýŽ‚K×ySZ2rÌþêƒÛ¶µk‚fO'Y2,œ,6ÞFG³PY6Óºòˆß“™1gêtb ÕÆØÚI–Y¨›»acìàAÏÁ‡ƒ®™»hÑ¢iS€öü«gm~Á‘y¸âjÙîÝ'v:Þv9+Âá¸Ï3kõJâpغÆAFc7ŸÒù™/w=4éþÏù±íy]FMž…QCaÅÔ3³(­5c&9*TVqRi»²=ûÇ?úÄ¢¡ƒG®[[]W-çËæOã`ZÒ’–¿´-²(ÑW_}µ¦imÛ¶]¿~ý·ß~Û±cG€ºßÂAfüà0©ÒçL+fz1™›äöûöŠUU«gÜßcæ$—/kÔ÷,Üô8io90j  šäÛ}÷6㩵ÄPfßÑ{†Mv†Ìµi…Lfó¦nØ‚ÌÉ‚A y@R"±MĘ®™ØoÀ¬ÇO.Õ×£z,*´#aŽUç!ýU·™ÅÎÆ">/š7¾Øuÿˆ!-»œpK»Ÿ|tsEYùŒ%ËçΞ1nõ‰hD Ƴ ŠsÿwÜ!䨉øêÙ³Ç?ô`Ä¥I§ !5õãæLíÛ·o6'g•vxèú;*ÂþÉ;·œ*ò×g÷0aÂ$MSüÑðÃO>1~Ù2ÿÁŠœ6-Qõ"b©][ÐV§=wKn"ÜÝñìGÞ~ŸdJD(ºæÌÈví­SžyÊæ¢œÏ;µÛÝS§Î„ãÃfâµk'.]Œ9U#1­òËoÖ,|`êô™¸Jîv$Ü’«M±áuê¦æJ˜„w,5fè°á„FÆ™5oî¤u«)éDUˆ$-ž;÷îîwxN§(Gƒ¥‹×ÕÖ.{ü âÀ·ƒïº{ú¬™ÙmÛÂñþúÚœŽí‰C¢¤ÇO>jò„i±ïŠÄcEç=¶O¯¯¾ÿþõOwR`i¬/.¹riÐeAnÿÎ]™<õ…çˆ!Y>²{ï]={<üÙ;±äÚ˜þÓ9 æJ^÷Í=ï:¶]{åÇ[^~ñŽcÌL„¯›cϹæ´Vío6˜tlY,[óØÆÉý‡É€N—¿²jÖÈÑ3GŒpÁTÁãïÛ·æ©'‡/_†;bKáM›D¢“î¸{æ“O·Ç„''J$èt¹ˆiŒî~Ç‚ù IL9øË¾ü¢MÏ<ÛkÆ4Û0¸LÏÏ_;£Ï}gžÐiÀ¤ûcõµžœì1ãÇÎßôî@ Î@“‡íqç]¹™9<áµu/½òÊ绿|øÅIM‘]+'N8hˆЭ)+×­™¸vú²dR#œmO>|ÂáÍ]úÀÊX¼zµ³e ঠˆró8¨&ê¾ýnù”Y>Ÿïž‘ƒ Î.Î+Z½xI¿Ù3áˆúÚƒ¹E-îï~ï´1ø6-~òi‹–Ç.:aØ눓k 7‘ªÞý|ýÂeDµÚv>á’ÞÝn±.<ãÔÓI‚`tÑÁ#'O[Z0yvÓæK–„k*2ZÃx&Jeõð»zµ?¶ÝÝýïƒ9ÿ‹Ý[^~é¾)“ø¬ÌíÈ祕³ç3 bd9â|íÚ„ažfÞ  Ìiÿ¸9/+»ß°0ðkñ}xèØQYyyÈ ‘ÄôC'›DâJ0^ÿôã£V.©®*+lÕ’˜dÉøû‡ß?ý£MŸsù•ÄåZLÜÎiç\4å¥WàW7KÉPvj\µxÁéq&,¶}‹H€ƒ1hö3ã_ïÚ°fa™µáp«cÛõ:í4áL˜0t¸DDãkkü™ÙYÁp¤¤]›a#)DÕ>§²öŸ/‘‚ܾW\³æ™çˆaÔñóOár¤ìYxñõ^ƒ‡âN5 U7;¸t[wßåW<ôþ{|É·ˆ\Ã/ïºäõ7³tbëJÌ™¡1ëjIF©ª&n®Ó Å€¹„ˆ[î:ë¬GŸ{¯PT8ÖíüsŸ{ç]ârE=hà¸Ñcr;tÄÝzJE÷üÕ”¢“O^5f|ÿ1ãqå´¨;·¾fÖÌéÍ·U…ËÍ׿ÿØQ£³Û´ÅpK€ø55#ÆŒY¼e Ä@muvI ¸\CÄ ¾a³œmXáïp÷úû¥ófÏÉ=ï Ofd×7+×®·jÒ8´Þžƒ¤°Ý’gCKN¸¶ëì_¯‹Öfçæ£É:Ä8çÂů¿ûákÏŧGô¸äv;¡ U‘GŽ0l()Î#yh%?–/œ>kÔ£ëÑÿÆK™#®¸n1L-Š2p^áÌqý‹·¿Ž#æ]ºÞû¬s×½ÿîÄ€¦sÈhNèŽÀLŒ;O?ë±ç¶œGpßò²)sfL{d-V!ªÜwãÍ-YAJ[ã’q$Bj«p:Ñ"wîº3FŒº¯û-N茻>à€ªêåë× ™?K©)w¶È¿ñ¿=ÿÊË”¥i<óò*[Õ¸;Y¨ÔææKGˆë™–´¤%-9ZìÑ£@Þ/¿üÂRжlÙrãÆÿf±¸Ù½ƒ˜ „¢Ñh^NŽ¢(š¢fdd„{hÆly×î²~èØõ‚òƒ•ÂÁxëcŽùN ŽÙ¸ÔÉÒ¾3ëãuUÛüíÔºšÊè×{Žërj]›‚;Ç\™ÜÛ‰!‚MÕ+ü°GqÇy"îÖÒtøÞýÃåtäåïÝóã«Ûß4yª›Û³k7ðUVF&±…¬Å•ûË‚ñh§.I HêÃãné6wÛVP.íúàëoÁÕ^såJPc ±Awß·â‰gpÛsQÇ&è;ëé È71ò.g<ûùÇt?¾D€Rkcó{öóösè jþ—\qÙIgÄêƒ5A¿'/·. jêB€¶¢<Ô‘¸u0¹Œ!®«þvÉš­Ê?ö’›æ=÷‰Ö¢n‹E‰Ë;åš›§my†¨‘£F–—M2[”Õר@}õ5+Z+ffâêV8v×å×>ºý¼(B˜ðàu„ªª2½yýο¸C»cr³s€×Ë*ÊUbUêVl}”«ê¯½óžϼöZjï M‚!l^—ÿÑ€ÏCnë¾ü¹çRað¸óŒ£–EÐëñij—jÁH•¿.§¨(¨ÆÇ¬\ *?Q[í*.¢,økW#½Ô‰)ª¯¼½ÿÀE‹HKªù2ÿÂIãF=±º®¢,/³””WO4púóÏRåÌ‘ÕÓ‡›üÒfl288aN¹¸Û´§_¤ùæxâ…ÆWï¾òúG¶¾Á\…ÆÝuwëÌÌ’ÌÌûö .gY 8û…籂åÀ1~? Þп_¸lûvdYŒÀià–JCƒnZ>l¸¦"‘˜šÐJJ[¶{÷ü—^"‘`X72Šòû^xáh.¨Luòs§öí=uùX$§çî«®|äµ­XµZ?ñøpo%p¦(&~ãM."t9õTx¨öìÛ+z]?íß»w»aûï¼óÎÇž}7B1lŒ!ÙÿŽÛ—®]ç(-2ã€áÅÃpТ~$º]]3¤û=¼ü2v:.ãâ—co»uP,Ì»$ÇÄËo8¹mûúH(?3»€s¾¾ãý9_½­ò ï%“'nõ­÷ô[³ž:)ñ2o°-§Akv·[N<ö˜ÊXÝwZ0'+×s0ªÄÕ‰›V‘èÐCüÑ©Ýîœ }d‡H¦ ¾×ù[¿ó#KÂl*PõyÃFŒ5“ä£Ã;ZOî+LGˆmÎï7`ÌšµîGQq+ç-Ý6¼ý* Ê ézݹ'tƒ#þììl- ê‰i¯” qÒ¥ïÙ»å‘'à)Ó#1øÙw°|¢ýOàLÝ]·Ý~É9çûÌæ1(©_3Êêëxù9ÜXéeÖ-[ ÏQ¢.\ZXüÕ×ßM{~ ÞTâmYˆèšOr¦]IÒ’–´ü¥åhqð£>*..–eN4¨äææÂ·š¦ýþR~ ¤¤äƒÃ\Iœ2æ±ECRc´;YrºÊ?þ¤4n<<n÷ñC.ߤ^Cf­XàÔì3O…b>ù"›8§:zÑ Wqþ¼[ï»jÅA^kqÖi¸Èk"Ùº)¸ÐQ@§³vËÐ%]]H"ÊférÊ(qâñô¼å¦ ›'’쯫Ï).FŸDP—á(ÊXÕLÛ¼nÀ¢˜³oº~‹OòuÝM 7<Ô5¢û-‹_}n‰]{ãŠ5Iv6EJà÷ÝxõCï¿a&b‚&ºþ†¯¿jÕ×ð™$!¼¯÷駬û嫸¿Ò[<èò«–O˜Î·iGj«ÑÆét(Ñ “­®¢kd6‰‡lÃiáÌX"êq{ût¾híÛo£bsRu_Y9¹Ï°é"yÞîW^þļ•œÓ¥„üD8«¤Ð‘Áçf–µÂÞãë}õë6=Š«ë$'7à ô6UÙî?ÀWÜ¢â»ïJNí ä„ëîyÙÀÚ)÷¼íÖ O=eø"TÚÇáÀ¢€ëd`¾›Ï¿à™w·cwÈ4{J} *xæ[[WùéîâvíÍ ß–K–­X6~ÅŠ$ûr)gÕA—8\G …e‡oð=ðö;$QöÔ„u÷¹g?òÍGx| û»ÿßÿ¾jÇ{l³%Qøá×t÷ØCr‹´GDç^ÁàÌN`dÊ3öŽûæ­_O$iÆ¡÷/+sÑnàéØÁCç½òŠôó/VzH <ïÜ•ï¾î8P¬xDIÄœùùzÜ=¢ÿ€l·[]´ú\÷n7mþ×Ghÿƒ™†e¹ñ†ù+WáÆM(—¿þÞÛoøb}-ÒÿÖ[V=ò(îF‡šV×*Ñ™“z_|ɺUëL%a´m=aÛ.€YF"ü}×_ûÐ /£’$ÑœŽ^7ܰþ•×bõµ²Ï'ù| æÑ4ˆ™¸=À´F^sÓ¢§žB/]Ž>*±Ä›o^þÂâqÌ4düà±$#n'úò+öÔ±#§~ò:qQ'gˆÐ»ýIëví&€¶DØÍ0v"J¦”sÿU7̘0–tlU­õy<θ8œÜ‘xhÔwNšÕõæ‰[ž$€Óñ‰³úžøâ³k a,6è†W<õ4í R=–xú ¸¡¹þ†ùPæú ),$&?ìæë—n}Í™12òÚfM˜ê<¦â¯uÂôƒ8̰_8©=ZÍ5“h†öÃ^3EQFÓ#OV?´¶ßäñ$;“D£÷3ðž^…¾,°X3 èD§C,Î'¶nj<©ÞùI&L"=¸`mÆÕu>ÒoÉb%ìwåXÄ´gqZÒ’–¿¶-‡yo§ªªª´´àÏï÷{½ÞßÂÁ½e8Ø¥3â 4£)*»(°š¦ì?ÿ\˜_àrºH\é{áùkÞx…dfõ:ï’õÛß!.^‹Çà¼ì˜r×SW,är²G_yý‚çž'YîP$ÌÙ\F6î"ÒMrÉá„Ê;03²ƒãC5ÂaÑã½æÔ.gžzÚäµkP7ªÚYgtù×÷ߢg±®sG“×Q»"¨ÿd°b7Ã…bƒ®½zÅÇïÂY½/¼lÝÛà˜¾W_±æW‰SXôóýãk¼t)‹ 8¯ß #‡yOꀪWj>ûlå#§­XF ‘œ÷¶¯òÀ´¾@d‹ÄtõçýÍ_:`Ù jÁЇ¼`ÂØÑ,‹TWøZ¶¤:œ·“jƒbNa“ˆ¼^çŸ}ï°)7RWJ´Õ­˜4éžknöžzRÌ_eZú3ËÖß7z :Q‚ÊJD î¿â à?^F%·÷†¿_ò¶·“ +BÁ٠掽¢àñêÚe³ç EŸŒÖC|Þ ={Ì~|S°lVë–_þëã-Ï<;cö´f,¡ 7aþƒ+I0 et_ŸO>Aƒ¤˜ÀOo~ìšntgg€šŸ9hȤًÔyºê“3øö[X·y4àƒ?4 ¼×ÑyÙ´€Z†\pÕò­À%Pݦ1“>ýò‹Þ|®ÜÂþ]¸êýwqF¶BæŽ9nÓzâ°Í„"HÎq—ÝtBËÖwA7AËóúøñ£î¾î–Nçÿ îu÷]ë·<‹.À4óͬ»îÜ[]³þ½p¥’¬º:¸!Y5jDÿ¹ó¬F+± áA÷öX±ùIêñm‘`hÕ´AE?wúŸ œQWwÏõ7<¶m©¨ 4ö½W_ýð+¯`™E9ôóÏË–.â°º4bÝ׿_fQ>—“Åb›±ÅÓë nZ7 D$S›;yÚÏoÿëœÎ§mMHÂІôPÜá´ÒùdPÆ5»~|é™-_pIqÛ7ßZzÜq“\ %™6b„GH<úÝgŸv>ý +3»:žýÀ2Ü…æóøüók×e;]–bȼЧo¿þƵîtÜD˜Xæì)S÷~õUë‚ÂI«WA§ ôóÞ_Žiß~Êò°Žq5\]³aÆ` `–Ïãkj¿¡ƒ Ž=†¦ÏÑB?îyô‘G w ˜¾üœË¯½ºÃ)'£ ¹¶Ö™—_þÕ×>¼1;ÃS^^>}挫o¼ñ‚K/7{6MׄTîTd@‹º¨›8~êê'ö0cÆôÑs¦wèÔÑÆnùÇ?òO; ׎BõO?-9ù´ãO¬ ‡”xbXß¡C† <梳†ÎŸ ëœ8Àð?ýºóɧ$8;‘!O^¶ œˆe¸|z•_òe»wmzü‘ýJÐíôdÄí¾}û ¥…$/ n¾rÊŒ_|í¼óÎé·|žVS¹iþò_íÊ<µóŒE `Žš°_÷ÈÅ­J±ýáš‚ˆiLª+õhȹè\‹õq%·´ ¿ºÊòHm}†Ì{y>“ÙåÈÊÌÎÎäa쌹­(¡0§[¹Å%ÐìÁšK–rZ—Q¬ª¬´£‘¬\_ÕêkkŠ’‘•™‘›KØ–mFQÔxÂ0,´æñvñqè#HÍQ 3‹ÆTEò¸òK[à4‹z ÍWê+*LUÉËËã%Ñ .Š9…EpeEÕ$gc²Á”ifm†Ù‚Eî9ó‚¼«Ö Dƒ>ÑåiÝ-”"ºý«JÌ*há°ŠcJÌ.neTVÇ83³M+ârXñx¸º¥D,.¹Ü0¡rÁsãŠY75c»®®2ì‡..ÌÈ• ¦º ¡„ëjÕúÓ)ûŠrqׇêÁ´F~~–‹n‚ ‡¢õõ E39‘s¹³ó e/Ý MP[eÇ¢0V=ÇOñº@ªkN·/3 ÝG@šQW®ó:» ²½ù¹ÔÖk5®(†¢.‡ ¿Š÷ffyK°•’¡¿qãš )ḢhN_¶žŸ¿Ç‚õujBÁ¤†ª.»Ü¯WÎÌ Ï‘hré0ÔiIKZþäH8xÚô¸Ïç{çw*++|¤$uè%ÌóÕÕÕË–-5‹ÅAC½ñÆGƒ„Û÷áÇmNëB$î»?étÆÙtYþd‹ôø‡÷>ìxî¹ðüí‡ïÖy¨fþ Mb5Bs0ˆÀ5`XÐDL‚†ÀáÎ$Ln*ØÀô!–ÄôYS$tiI ªbÐ5žî²2i €JçdJ×D·VÜ`' ɃÛ*Þç-‘ÚÛlMOp&'¹]Äà‰ÕD^ö:1g ÛÜejð /)Y"–a¥9±8Ó° nm²J¡ˆXK7x—Œ×´tKDw¼W,ž$iŒùLc C•m‹®ÑËDnÒyt‚‘Séˆ)"Ù2íXP±p,ô Þó;ót› -54¦nbDÛ ‘GK']j·iœa“nÝ4é®/¸5/&U¯ŽȰ7-H†f‹†kâ«Ð‚MãÛ–•Á¯1³ K‚÷Å•óxDç-ÉG¡0šŠ×ñ`þe¢˜f,¹œ<?Ü;'tñ°. .LÝÁ2ØÐ]J÷ŠAQÑØÆ’ §"­¯‡I6hí 5$1™¸SHk4;ˆ†Î4Pk5Ì °ˆÖ줇Y=­DÜ€^sºÑmÖ¢ ?,«1Ýî¥É6ðX:rLºà…ဲmÞ-ã^RK,ž^qœçPÚ&‰Šàñþ*IjºcÑÔ6µªnæ°1“̧&Qt¤Lxãâôx§ªãŽFÏP£ 68´?ªG÷1^¬+œ€ÿ0òŠešø;î ¡b,ÍÀkšh(™ÇP¼–fز+9G·›Ø”¨ý‹²…űd VR!&@ÀÀto&Õiª_ŽØ‡ØM⯾¡Ú.É´'tÍ 7¶k¶G8m‹g‘¨áöGó’ñ€Pº-Ú" KRÇ¥ŽÑ$Z³ýÑäc4 ˆ•Z%eêÏdã¹T>’d3%¿VpŸ#Þà ©$x|ã] CµÐô&P4LÕ¹!˜5ǧRß $õYã?žD)â26[›nÚQØâ6u[å’í '$sÈòhy²iñ9¡1µ{Ål.6^²i*¶&Ì, JL;Fß7©nÃ[}…,‰Ý—’ÝMi'“|4>JÒ¤Êà'…Ú ißÌTz7ÚV©g€¦ÐÐv2û¯m²TXT&.2^Ô²íǦÆ^ƒXAÄ4’Ü™ZM³½ñÈ0ܯÛu0Í^g6ôù!†mƒF09ô†JS›!Mׂã*¬›ª`ÓþeiÙìb‡~?0šÂôà¬TÀÔþ.¹w±×8Ö²<ÎØ >‘H”fæËÀ\Ù¬—éHãHrWnÃ6:A¢ãþ‰&/a -‹·tÂäá¹€©=³É³¨Ýž9ÑŽóÐ ¶¬Ñ.ñø$à‹hˆ†:;[n‹¼E£› ”JéS`[&fÙfåa èxü1 îíFvijŸÔ«ƒûŽ´£É8ž–´¤%-Fù ë &æy ¼çŸ^u]7M“ãšÿ݃²(Š?ýôÓäÉ“ á“7ÞxoÇŽGƒ<ýýUL=¦$|/Ó: [“8Y#š&lÝRác™Çœ¬ša¢LÆä³óáZ€T¨KS8Øhz¢Ê‰³tÎ6Ùx澘Zôi”ÉA–eº&£Ò K´©¶ÐUÃíP‰.PGUT†7°¦¢l˜¤Q$¶G¡ö~Ì"Ͷé€Ö -…»ÛkA¹ô¤¦9Í-[G&è~[—8‰c£&è$gshÃFë <§Ðc"®Éñk¼(Ⱪ±MGð¯÷¹¦%-iIË_QŽ„ƒñx\–e @·Ûýã?vèÐA£6{<|‰D^}õÕ;|÷ÝwáçuÛ¶mˆƒeûqð”S›ÇAÐà E^ÀåKª•xÄéñ!Ž¥XDU‡Ó‰6°„":1O®–²aü mj„kÈÊÀìôž}ú’š6Ør¯-³ßþÒOÑ€$Ø *í8Uÿ¸h%9Q,jE£‰{5´ß˜Q9¼ÃSVÓFsh>¸–ná)ƒš×N•Ÿ­;òI“HãÞÅC KÔäCMLd’òµ“')X¬d;Fã O 3´d‚´èQ€âRÖ4…Z‚DÿT(ZÛhQ4¤PŽ,ÙÔɸvvÒDREg+º”ò›F•fLN„&Ba‚ŽÆ MŽMŠIkÁ,;ÌÐ'Ö2&Ó3p¡`ˆ€_Ð22]^FÓ¡ë‰éÙ@Û¢€w²©Ÿ<£:’4Ðé¦A7Ãò\ÆLÙõqË Ð,sòÔèÄÓ–À çN^L €8J@­k¦„egmNxfy¢wGSmN\Öo`BŒŸ†'™‘f“ÍIš í¤Árw7ºèR¸E—4.È5\· jLרÝTæëë«rχÖLÄx>Ç6^¢?©K‚˜ÁÒr¼Ñd%YZµdê¦cÓÍ D)Ú"f?ä“c»ÂæØ~µÔ*s’!S>3–7Ýü@?oX°åš¶?IZ°éÌ…#©Nol¿†žàŒd;:©¨G/ ŸKµ5]õÅã8ÙÀ‹g2Ö§-'¤ö‹R`bKÏ’Í7ŽÚm;™>zqjÑsÒö×E³l™ÇA%jtÊE€É}òX€!B1]ȓ˵¶Õ¸ ›ÜpÁ!É&ð­Ð¸“¡áŸ˜DS;5aàès$£I7ΛÉf˜šÌIhinδÒ6}¤¸$ó™Ûˆ›&'ZÌׇРiLKZÒòW–#á`"‘€ßd`3§ÓYQQÑ®]»O?ýÔï÷É•Äëõüýë_ÿ>|8ü·ÞzKQ”;wþÙb1èØ¤ú±ÉÞAÊQþú@nv6¡^ÁP¯‹Â©iÆ ·Ï«jªhò¢CŠÆÉã4éµÜIRGš ›îdÈ¢¢Ó†)Ø–ˆ²T*f7n²™-Ei¼hãæ@…jpVê ]LZÑD´– ÑQjl»uÏmôG!I&Õ)ÌqÔʘԣ†•tõ%GâêŸaŽÔJ+׸„j§LDñÏdxe'¿–yfk4mK6‰È < Z*ð‡lsNÜÇ76Ñ¡„Än`êhË”ØæøÃŽÔS#°$h¦%;˜s ¼(òl³6Z)W!1µþ®QƒA?ÔÔ×€êÞh¯Å}“ˆ²2*vKvò†n‹€A1hÛô¦Ø2[|‡û)8¢›øXe±UL»!À!úÃð ;* Z βèb6—BÉT l÷'íW"I,¡éRhSà˜8†ƒ¼ Óôw Ì$iÑ%û_åâ3“µÄ¬Éyi0GZ¸†mÁ€O­eÁY+sIö±é@àSW5ŒäB}cìAÆÒ (j–ÓÃ!»'áX8Cp¡Ì%ÃL N‡´[§Cš£‹È”Œt‘Ó“³ÛÉlªq“®ãrÔ’Ü8„XéCÔâéÓèÃA0 G‹qü6âÄ3¡Äp€È<œ  †m›t‚@7å&[Þ {>èf?´ôÆèr¹‡ÒY’ÌujF—2Â\a<$¹¹CÜ‹brÞ•šþ5t™*0µôÁðÞ4$Y¤[)<š©&DÑ“cBd\h&­ï©½³iIKZÒòW•#á ¨oÇ#Ru²wïÞÒÒR`9 Í7ÿ«bÜÏ>û àaÞŽ;àà­[·þ„_üÁÅ0““隘¦É5`pD5 Qøù6,^B 1R¿ØbS˜HYSðMpéÄHm–ç’W°šZÙ¶}‚8ˆ¾Å&S®ºåb{ÇM\-3ì4´ 4Ü[E™¯!›)nÐBŸj “¶›¤ÀÊ:T•ÚM^›¼6XaØ­àªRÓÊRµdê†à™ý¬¡)TðeÄàÆ½†Ö!+ è“2à5ºã4u»áS8˜2d6i±¤eªI›§ ׄá„oâ8Ì7Y·í¤Çoá =_£ä ÚM(–Óþ{×'E‘õ«s÷ÄM, *¦Ï„ õPA”$æÀ‰¨È F@QDEÌ9+ &TDPQ0‹ù<½;L(°lšÔ9}¯ºv›–=àð Ôÿ‡cowÅW¯ªþõ*…ió=ÓˆHJ“uÇöš¶Cq;&'Khݼy³í–Ì3âí.žEƶ;–ì{ö:d¹D°ùÐ2MITˆ_¿Ù\‡6ØÉ„š§–ƒE9ð/Dh$;U70¹7Ûk™ Dšo;¼È7:› Èv<JPM\ŸkžÐ$KîÖ™CI1¬…Ø|>_&Ç=ËrDŽ” ‹'¶Í@UD»™ë4)§¢iZÕàYqVl"C¨‰€¯ÓÃfC].Ðâ¸h¦ŒŒæ1 gâ'5 á¯ooÒÎÀúïú<}6oùÁ|Çòmà­[ ïßâóËyë&¬µà1pYŸÔÙà«íâ™q`„¶ëø¨6ŸíÅFÅmEðÏñ = Æ„²lOé Å›¢ƒn`„Àkª««;uêôÖ[oáýÞÆ+ü1EQUuùòåãÇ÷¼þúë@—.]º;‹¹bsLØV£M¼ñ×'-ô S‹â ÖŸ Ý8¢&¦ÆlK3“Øp©~QŒ-O}Åȵè`c%¨…¼l"Š ’n mÁK3{[/6¡]¶"±Êi=RFË%RH+`ZЇpz´µ„…*µb¡u`6õë7íö[ÊlË¢[ÿ놉­gsc]ß(@´AQnæL¥Âåq(´2MylrÂ43õbŠ_ôiÝ(mMQ4š†%ÍKbC[9 Ù iÝžë"ûkð»½Z¿D¼`ÍmÓÄuÔ¹9%ë†Ca°ë×M¯UÕm½@×KS±_:YLAAñGÆ–C qSî[;†zKéà6Î%Å&@é Åv J)(((((((¶kP:HAAAAAAA±]ƒÒA Ší”RPPPPPPPl× t‚‚‚‚‚‚‚b»¥ƒÛ5(¤       Ø®Aé Åv J)(((((((¶kP:HAAAAAAA±]ƒÒA Ší”RPPPPPPPl×øÝÑAY”X ƒŒ‡à#ù×1ÿÀW|òÂlÓÓô¥̺hB¿,ÚšCÃö›_s¨9IAJÜæÇ¦÷EQ3~ A²ë¿^?­Lѳ¿‰¯ÅnÖGsH,Þúß¶ ¿¡¯(pv=OÍýfçLXò‡èáxCoÌú9ò×ÏËÆù*Ê»Ïà˜¸â÷̺4¿qÙûÍ ]ÏZ¯ÈH8ëʱIñ<ðÓäÊg}¦Ù{Ë…‹Z.ßÒ¼žƒ°”7È~¨sº6ûb™õ¿{øÁ 4]?Oa²×¼YhMzÛ./[¬·aQz̓7¨Xá=¯éo,%6,‹Mk(Åïÿ#:¸ò— é ǰ„lÓ’e¼ÁsI*Q;–Æ jTQ4Ž\1 b9乸w’øµ-KÀ‡CºŽ‰"âØ Ñˆáq¿e;Hàq² ÃŽÊ‚ë8<Ç«¹L4sT—£Mì²°_9šÆG#Z!IÄMÛâQu ¡ƒ3‘Å!cLCáe¤("[Ïá^з£>Çú˜’fòYð}ªà<Âq‘ÄÙ¶ÅK¼ƒ|Ó3Uˆœt™¬$i]Ç«&“ÑlA/‰*ÈÁ)Tsj´$ Q˜¶‹drTð-™áã¦Ï°\6›‰•—8XÎFB‘íg ÙxY‰ i¥iÔQD±E…œcK¸Z"PA&¯¡@W±2ržÅB° 5$àŠJAAAAñÃÿˆþÐÁ÷7¢ƒAË0q|މDäh´©AïeÙM¿óìÑ—ÃÃüG?îôÓQiSi†Qä‡o¹mø…AxϤI7ž//ƒž –Çý¢×lЮæ{®cèRDn\SªªB‡Y&Çy…DÍB7,ùúúxeyÀÞDõYN0‘ØQxY1$F=i6DâQ_á ÑuZ¦,RA(0B€ŒÃæ !U>aªy)u‘£Z†,)˜‹€*B—Éztñ@QÁ·¡¡¶¬¼ÒG^Á0b²œkÈ$KJ0*äQ$Žt`'qý®ë2@}>4R¢&û±Î€øÓ÷=Ï2 %©¯^[^Ù[éœÍͯ€0+$ºª;¢Â«–#‰˜º™T¤À>ä©…\è06NBº‹e_d`¸l¾¡¶"^ܡ6•‚ãY ˜ÚˆAa£“wˤIã¦Ü€-»>¸ŠmÛŠ‚y­Àê ØÔú†hE™Í°6ò€¤bópF–Íå²r,ÂòB:Ÿ)‰—p›€C`ç;–žwL11=4Rà7.ð6Aô-›`ä@As¡¸òyµM4êé–Ÿ²$!Ëö2*à‰}ÌÕ\Ýt|•'®ïò› qðßêêêŽm;À³V0E–áy.³vuÉ;@Ê5ð<ÑÌBc!á8¸u¶@üÅðÀ:ºZ°ò%©ÆÆzIŽ(JÓQ?(ieu#ªˆ9'—ä£Pœ¾…t õ²Ès(_Г1’ï«#ñžf±Ñóp­syÔh¢ì1 ,Ò’X}¦F<•É2?S¢1H ä2m¢¼$6J°VU£‰h`«´ã ‡ ¦ŸX.¦ámž‚ê KrØ/þ·ÍÅÿ¿=EѵAL]ç8.‘JAc¤käÒÒzõš;²ÑEÃιëñ‡Qi ñ臿ÛiÇÎÈ2O0`î s§œqdY+dÓAÇå:-àxÎ9 i®iɘ[ؾn0’¼æ»ï*Ë« ‰l<Þ”v]GŠ‚\ˆ£HГºAÏnøÀ_ @¶1]Ó)ÞÓ¾l%¢Hæò™X¢\Aïgeò¬éð%Iúk†å]̦\Ýà¢2žFc<ÕPøj†¹Ž*1Ó0#ØB‰¹[&›‘#mK¸®T0r)9²¯[ 6Çô]ÛF’Öò‰HBB|Û]o&ÿ´MK’dàRža²’¼jÅ÷mÊÛp›_‰áôš´"˪m—ÉdØPŸ)«(!…_W]ݶMð¡×Õ*ååv6ï™Hª(Ï:º€ƒõ$äÝ6áÚ˜ÏT–”Ÿ0â<(»XŒ>cy<Œ È1ä¯Κ ¹²”ÇóØç{Á´(üÏu°Í,‘ï¿ü²ºC‡Mµlßv˜ˆ¢òJ2^ÐTв 郀³9T’@–¢2™â4\KæDÛ±Ÿa¥@ÌxöÕvlÄ 9]/DÍò …¡ˆn<0ù&$0»a‚ŽÑ8$+úÍã ‚À¬[_S]^U©æ2Pö±dÒ³xàDYÍå¢ñvï8@¥±™Í(ä,+U^‰SeqIÆ`ûw®k#/d²1©‰dþÔÏÁ6]ÈÃùÀö98º¬ð†e)"ÈËv]‡g×pוb²CFA–Çör7¯sÛƒ,FDˆWsM(¯È/ËÁ†o[zÓ e%¸¸kkª+Úµ—™úúòD9jÌÚ"/¤â†ÊLŒ1'…ÁPcá¢a‘Ę>¦ƒž‚(¤   øãá7¦ƒ>6cAÇ@Lùl¶P(´Ýa È6î¸|Ì©g­Ú{¿'Ç_Û瘾U=º#[s8Ä+èáï»þúž½zî~p·ç®¾þ¨>}Ë{‰ÎÔ ÷|ØÆ¢¶" †éD$bRr ÇÕëë”Ò²ÇA|>Ÿ—$eĘK§Œ?á–©n6χÌT˜ÆÅdèR=Ïf8Aõ †²éq«3¾ª1v@0-ƒË–í視Œ— ÇC‹­;"ë1žoº˜sð:H×2ð *Ì%z^6WH–¤ÖV×Tµm¿jÕªvhLžB ¹µuÕ©T™ÄãC+›#Iø4cÒ䱓& }DTu"MA'MPDáÑ05ÁÀ„Æ0jCC´´ì‘;îdVÍmn~}Ó`}³h(c¦³R"U¿reùŽmÆjÌe+4h:âxÌ>K WÐ…ªÒF#—£òW|´\4í›o¸ùÇEmÊ4Kg•‹x`4xÉäES?úð£}öß_‰Å1•ÇëIÖ%åù84t.°ŠLpËÄÒÛ˜NK‰&@Zfuµ¬EË›c¦àŽ.*×µeNÂB&\IÅLÏmú˜ š6¶2ÀÉL\È·@¢uŸü}ÜÕã[öv§þ—ç]l ¬¯ŽÇ]³- ª˜\¢Àä鳫W§ªÚAÔXª‘ΩïO»äÒ˧ވd ñ F3u1 0¾§ÔX4¸°b ^ áó¶î àØƒ÷L™rÁ5W;éF>GѨÏc%¶'¦kÖ”–§ àmU¢14˜$g3*‰bGÀDý`ÙäK:G#J ˆ¾§êf^”•ãe QÇÙ\6Y^f™¦(I˜Èf (ƒØläì±Âr¼›/{Å-30ÇÅifóže³¼ÌHR`ŒgèúA Š?~{ë xsmG–eDz Êh4ª¯^çÄ 'Ÿ4åõ…¨1sÓ_Ï»òù9È×Pië¾û+ÊÊ{ŸxRÓº´Í̯,¿vÃTÈÝàÑ#î}ìÑQc®>ôظ gOŸŠ¢l]º®\ŽÍ¾û~¦:sú…#g¿ü¬ê8FF?gĈH§¶N0é‰g²³$F†Ûÿá×`ı*~·÷pŽsÓøñ;¶k·òçU—¿ŠM•Ú…‚Œ7mË ÖáÝ0qbCÍÚ=÷Ø-Ÿm}õ5wŸpá ×! Oš[ÙÂÓ÷<`ýTgøh"qÜewXwÆÍÓ»”¶ù×ÂwwÞµËJÙW#\YiÅE_€©" !ØÀØæ²ÓÆŒÞ}÷=këνê*Äy†®É±6¦:ÕÔ?q×Ý÷Úý›¯¾:ÿ’ËG 9ýÞ·_ÅFP¼‹„óÖ­ƒ8¥$¯>æÃkÖ|üî»5«Ö4Ô×s<Þu×=4õ¦ó.‡diêäIíbÉå/¼8°wï<òjLUiW~Îec y­ H2ÏòÕßÿÒ Ï›9UÍfÛ·« }°óxØM×?óÀ#'Ÿt‚/еºÖvï½N:÷쟫«;´kÏ8žêUµWy¸ÎÖës¹±]Š*Ë}òÈi—Œ ³¦ ?ÔÊòèG÷ÅvÓr¢<çùĢ粊Áý“ç×ý/ó—-Éͫ(™zuïë%Ëöêq9iãöñ†œyF}}º å,\tí]·#ÝD±`ŽÏ°ÍÅŸÝxýu»<ÊT˜ƒ÷ØOyÓõþïè#,ߟ_øÑ3ftìû—ïsug=û믿ޱ]û}»uCùÊf³ï.]vÇ̧k–šOgfLŸ>fìØ²ªÊ¬Z°·[÷ñ9‡m™𹼤D•?è/‡¿ôÎ;A~3(ÛÜüò [þLË”EÉsmˆ/ÕG.RÑÃϹíñ'°½P’0aÒt<9Èñx7Ç?8eÊQ=zìÒ½;Ϊækkf>ýÔ¨«®Bïz&‡ã5§1¤ßç›~ÿ¿ôÀ¦Š„MV^ñÒhL÷#.¸wjNd»Ü ‡ì3(ŸCräá {rè.½ûâY´âÍ7s :ít¾ªxƵ—_~Ê1ÇìyxwlwR (ÿǤkê8ÓV%:jР{ŸyE#ØžìD”‚Éâè Î%ÞøLÅ2H×/~Þ_Ç öjx››_ßGéì§ þëWu<¼û…G¸ûº›ÑÎ{L9ø„WŸ]]ýKûªŽÈð¯ï{üy#FTÚ'Û‰|¹èµþý÷ó¯¼O‚»žxEü'Ÿzóœç𨈠›6'ð"+c.I2¬³ xâÅH³pÖŽˆ“®ØÀ®uõkë˜r<¿ÿËç_ ¦]ÕýP×W¹düË>Úw? Ùx‡²­‰ç ¹þÕç ôqöM4fßÃo}ç=$[˜ÄÙâƒRÄ so½£{׃*I~ Õ¬¯yä™§FM¼ /ÿ±I“Üï Ž99øïóoG]6úþ÷ßÂ#›Ç{Á6ØeL­ãùr—wƒ%w–é‰'ß~Ç]¨¢ 9)çÛ "e%Žì׃âóùË{ôšöòKHWQY<غŒñ–`êú¿?øx×ú㕋E£p÷{KñÉ26îMèsÌ”—‚9kZDAqÉŧÙ¼å½rç={•Uî8xed›5K?øà«Ï_3&˜öÇöîsÁ=SwêÒeÚiçŸyƪÓúß¿÷‹¯½‰ „¦ûò½w·Ý³ËýúáM!«küUkf¾4gèmSj×ü\Ù¡#$|l¿ãGŒ±Û c1M/XãÎrË‹ÏáÄãÓqÐÙÝŽ|lÙ;ÁÚ ¨‘¼ÍøÇaÝò‚º R:HAAAñGÂoL=|ú…‘x¨¯­íر£mÛ³ošÑeMÃ7Ÿ~Üæ¨ƒÓ…BÝòo»qD]…rü…ç!Yy`ì•;iÂwß~³S¯nõk«ßûòˆcŽý"Áž:~Œ$EÒéTªá­$:$ #áƒÙN?ú¨Ù‹_G–‰é tÆZpf!ôôž6Ö¯ßãóæáÓÔTÜ+#Mrâ O/Z„Tù6òTmUÐ;¼JïŠáÃo~úi¼£X¦â…bü&è 9pF7p|ÿÔ£{? ù5¶Šx…ÿfæ¾ô }{Lùx °áõðëï —½æ”¯[2s_ÍFiý¡‘—÷ðýÈJ£Šr”v „Sô~ö͘¸+ZS‡Råõî{׋¬¶äÛ4NÁ›^l 8ëÈï›= %RxaœaáÍζ=ä¸O¿º)ÇÅï!¿r0™kª¨ï¸åšk¥œy`¢=jT}Ž}qÙë3>XŒÃÚ¨Oô×ñ³žA2€²ò‚»¶Ž+«IŽ8ø =÷©jÓ”ž•Åœg½ºôͧ–¼\ ”áìž½{õu,H[ ÒñãN>á–—žGÓAå,]N$Ä€ZŒWPK#ÁjÑštãÊ_æÍz¦mi…–ËGã±´¦ž>aƒÚƧXOÊe2©TŠ—¤¿ö殚vÙèá·OaeiÆØk®›>ãƒÚ=õTPóÿü>žõ'^0êâ['W”—_æßÆ_ýŠ2ycz#L„ 9س©éZD‰0d˧\ÄP(Œ5ròĉ±Îƒ%_Š&0Jç^¸Æ ëìã¯,Ä&%ЉÃ:ä¶™ÀÃTÌÃ|Õ8czuëï" ‹·Uƒaƒ£: _Ïp—vï~ûçï"ß04S>—+`uÊßÎ?eàà¨,ƒø*Û¶­ËeV7ÔrÆéÁ6ëü³ÎºÿÞ{P,FŽMFº†¢¯¾--Z†$eÐ>û¾ôå—˜)Æ¢ˆì´P"-¯vÌÆ§«cF^0éšk’8¿2µÍÍ/脇.þËw~½Hç¹Ýz>òÆ2d QÇö¹÷í—Piå „äóvÛ÷¡/>GÑ`w-“DkªÏ½ôüG^zóà£Àsêe§œ:}Á+ØjUpÚ êÌÀh‡Ð™G>óÝ÷š6”à…}Øj{Ù°aSo¸AÀY$\F@ò€CŽ@îÍkoœ<ô”!\:ßɉd~^ÍËòôÇî»öÕÒ «K«Ú#Ó»ôà£oX¬@ˆÙôß—vܧÐB— <åêk}Ç6të—ÚÕ{°ÿŠ5?íÛ³'ŠJ^ÍÚË.ºøÖ›f ¶U˜Ã“cÄ}z?øÁ’âÉbmâÓp ŽªH&‰º‰Ï!úqenmݪ~¬*¯À';GågçÏyóTìÆ¢pÎÁ‡<úÆ›Ø\È¡òR#ŸåïvÐ ·Ý±GUÇ.mÚ±ªSŒÆo¹ïîq‹æ6æSÑ$Pó3÷Úoæ'ŸàÕ®¬‹¹»"ý²fu‡öíAåFÛž8Ù³ôŸs:wðÒZ­ÚØñø¾X˜«Ôiçžsù OØí˜ëŸµO9 ÷̧žÃüÛp.=nà wÝñóO?¨«êÜ{µ!˦"Ê!]ñ|±ŠÇK#{sߢ×0s5 ÄÉCºu{ú³ç‘óÎÏ8ðY"Œ4Dþ‡ŸWvÜilñ$gýPë Å ¿‹Éb×vb±˜œÉ‡ÏUŸŸxÚ ×/]bÌàÓoóûìS±ËNøäèÍ̯c¡†† CN™òÜS¨¬tÜàÓoyô)Ä+£ºmÉËÈÁäeµk|Øa‡3nŠ'QöÒ¬Yûõ:¼ãû"ÏÆöEÝFŒpq¿þw¾òŠ`Æ€x®éî3àvy \Âè“N¹íÅyÀܽBmWE¶’,_¸ “nì}Ü Ì¶Ax~œ{þ¶ÛN¾x”‡ìsÏ?ï±™³1uegñ´ió–½~ﻯ#Ñ÷5Ó¨m˜|öE7Í™‹Á<²ëÓ¯¿±¨ß©C‚)ûÄŠ×ÿýã/N¸`ŠÄp™Zö˳xê)¨, Ò[õÙKæ½<ôª«±YÑ÷ßz÷¼E §Îz8Þ¦ŠuAï_lp§Ù²"‡;¾ab;Ã.™ùÔQÃÆIù"té°a·?ÿpw³“bñQ}ûÞ;oÞ]Z‚ïÞ»î5flp® ?¬GïÇ_]„Y2¨/®xèÁÛž~âÞo>Å< 0Zèsìý¯¼‚CŽFÝB~ÖËóO6Œçñ¡0ËŸ›S÷¯ý 4Ag`œ`xsîœ~â•£±¨ ܤãO^<eg ½pìS3‘ž>÷¼³™¿]nÍ»ï|øÅç'ümâLßiö“OŸz-®J>ƒêë'^|Ùõ·ß†ût0¿» ÿ{^œbøÌuàè×üõìën¿+ØnÌ»ŽþÔüy'œrª£Û©XÂQM>.m´ó‚‚‚‚â÷‹ßþÜAY– ¹¼(âSw Ã(jåzs'N>ªç%=qãu{»ë_É›ª‹3žË¹ÜÓ§x@×Ýõ½oê Gu=h·^}ðÞ^Œ€öyøT8 îÊb|Ü+YjAøà|8ïãůÿû»u™¼ K<Ã564œpÜñ»í»>=×÷–¿¹ä‡¾×4]„ÿÛkï®GŽOfÎg€»¦óöƒÏ¼ðÌ3Gœ:ØÀGp0ç^zQpXŒGNŽ^pÛÃo¼öÚGýÅŠ ±’Ô°³ÏÁ4Ë4ƒ]¢Þ¿/^»ê—_~^Íp,$r¯ý÷ßûÀñ¼a@þþ±ðõýã+Õ¶ÎËám°~Ï#ÚçÐCñ:HMûdÁ¢_VþؘͻŒÛy—.ɶUõ¬\¯¼ð­ƒø>Èp}øúë+V¬¨Ï4n~~Q:ýʼóî[õïÓ«_¿‰—ŒëuÈáÇ9ë¢çî×÷Ès/‰é í^ÝÿøaÆþ³æÝuEOÙy=÷îù”Šú†þäƒ y=ŋ˖,;¬ÇYäæ;rô¥P@¶ª¿6çE½®÷Ú¢×8(’H¤³¹3/¹Ó¨D‘Vøjùò¯¿úÒÒ4ßsX¸îþ´_ßÞå/Îõ úê~7ü„ Üý°I·ÞÜõ˜g_2JŒDƒV¼öö'~âá5BÞÐwÞy§ÞÇöã9ŠL«ö˼¹h”—í9¾ÀÒ£ûî]÷ÛlXägrÿü`ùgŸ~ªú–Äñì¸ëCO>~Ä™'3ø¸¨Rb ~2X޳=Žc]9ž…ôà¸ï‚vê±Çø{í¼c§ÆÆ¬(IÑTª¢}ûÃO:OèmÌf¾^öÎWŸ-Mem«à:{ì½W¯^½]ÔØsæù™üÿv§víÔÆÆ=wÝõÁ9Ï•rÀ%×\GÈûi鲟¾ûîç5kÒ†YµóÎí»ìzøÑ½ô¼ªàŒ„•K–|ÿ¯oÓjÀ»~ÿ“ŽOí½+¨Ü‚©w¼<þ‘' <ýÒÑç|D¿~ý]qéßÎ9ó€}öLÔc‘$¿óì3™†´]Ðêêwî²ËN{î¾c¿Xéz1{ô¾û—.~£Ïѽ‡œw¸œyÃŒ·–-8ìÔ£û¯ªD–óö¬çkê2ÑŠò‚ÂwÚc·î=z)¼È8Á1˜<µRPPPü‘ðÓAÌÿÊËs™,D&‹¢ã8ñxºÐ Ç2å©'£ ?øÃÏÌ–ã"—“d8H7ÇŸyÎÔ'CaÄIƒ|þ¼È,ñ\‡Å77 ô¼mY6¾ Œg‚ð’3$ÇýòãXIiÄï–×T¯9êØÁ6 Ós,6žœ?ë©]ºì–ΦïÓ7]½º´² ø€@èÿyó#×4Öê¾$Òh½ëàKç ðõŸ¯¼%Õ+K¦m½.Ÿ;¦äú¾®á£y1±Þž7·¢¬d$ë|ðÁM“¤*¼ —ãå+;uôx”ÕõL>Ó¿w¼%ÄvÛfÄÈ7Ë?J7fYU"±®à——š¤¾þ1Ôžï°äÐ;?¸žX€„¹Ÿ}ü‘ J[_ýýµEÈsܘ´ß‘=>[ü¦­YÝú üDz¥*ë|Ô‘Xà5u×]2æšÇûaÙ[šíÆcå?‰’ËqÌÇo/C YÙñÊâ) y ±¼ïô9á„`/­÷á¢Å G@õ–ÇÇ÷Dñо}0sÊk|,4èƒ%o¤qײÛeiîÁ>le–½øry4ÃG¢èú÷O?jdì#Žíã:N¾>]RZ¹|á"Ûq‘”È=Ž6 ÎqP­Þx½ŸëÛ¿_ÓÅÓ9 I‘¼ñ&2íÛµ¯­©îÜóȯ—¼e§R]8³XC…ŠõþKó"±D¬´ü‡5Õ}Žlª¦„ψvPp7ß›³gí²Ë®õõi¨œC¼@Šyþ߯/K&u¹Ì^=z|úìÜòÊÊN=»¿ÿæ"ðx@äZdä¢/_}-UV*E”¯¿ý¦×‰'àýΆC”O?ü ]ß óÂáG÷—_-~‹á9+Âpd÷à\nàõè‹W_Ãc9ß΋ì}ú˜ŽtШÍ*ÀË£¥ƒ üÆtPUÕÊÊÊB.‘Ed|¯}ç+:t„ÎUË »uªk׬ø¾c×}‘oýÅò½<ßš`»ä’:øgZ/âãÉÅ$¶íIÀÒ0W²ð!,ñ„o让h%o\»6UQÑtÖ Â!ت*D# õuem*uMcàp¬Èx&¶Áá«GÆÎy–$áUwxƒƒnÕŽóå²é†dUEc¾P‘ QôlF)I6.­ª(kX]]Ö¾ƒYÈK‰xpÀŠô¢ i j¶¢¢‹|ÍR“b”ÇKÆ|K3\ÇæQP$8.Þ³¼áÅá%u¶m ÏàÕx®‘/Èñ„§¬¬èêææWdŽ ö¬@Dør?,Ó¦m1$*|Ñú[ßcX°Õ¬AmÛ£¼- ¡®~U‰" ›àP^Ç“øÀ§9|ô`¡Pˆ)±àli'¸&óììÚšd»¶ ]Õ2‰ÂáX˜|uu¼m<؆Å:'Gìšz¡´'Ä0ð>9¶ÁHÇq PTX¼ý'˜E™F–çñD>›MÄ¡QŸ–W·ÁXA³ðž ¸,ç×Ô&*ʃåq>ZU‡*Rk J_R#Iôëi¦,KM’÷P¦¦6.I\,Šçˆñô(Þ­74(åFA"² \—çQc#º§«l2æz~NÓñ䞯ˆ¢¯êLZ¯cS%„ò"‡«­¯«,/Á»pð5‰¨… œˆËbSw %ß5kåÒ¼¹GÇ[…¬X’„aÃËúÚµJ²¯ƒôƒ´rÁ‘é–É+²a2#á›»ñÚG?—kL´o‹4,¬¥Éeaœƒw 10^u äÖ5…Ï糂çG•$*ðéÖ¾g!‡(yC/‘ãŒMj¤   ø#á·?w0‰šž9#c¶á¦ žc‰<ƒøl6W™LpfÐÍäTL2XÏR¡ó‹;®Ãûb`lkÚGá3ÁÅR<0¢w”A§è¸8|IHe`0½!¿Z&ÃK¢‰X†.*Šë¹@5Ó‚‹eY×c |Z ¶Ù”Ä]™Õ²ð~c&÷m“Â(H‡~Z»¦ª]»àXÌËjªWµoÛî§•?îØ©3–¬ ! ¹L>‘LjšÌß=‹ƒQ€‹äðn|e\.Û ³b Sfû¾7‚,Âc›âj¦ƒ^3ô€9‚Tñ®jrDžç9.+ʆº¹ùH"C.ÛàD×0¸^”™ih())Ÿ˜d”WL¿bÜGï.ýë)§7r$N„ˆwËæƒ;ß PXÑRÌ`XÓ³À—$t×8ŸÛ‡w¶x§³ÜGìsðÚñyž©©©mצ²fíÚª6•¦š—‚ØM`àÀqÝ`«u¨Ž… œøn¤™øøF$›Ï–çÓ,ì@A<Ž'> UÍ;ºYU^aÁ%l ª®«-­À7»®gß°WׯMHR"QÜ·Á˜ÈåU›EG€¦‹.()«izÏò£¦ÝÜŽµ‚ÖŒòøhELIƒðëê3¥±Ç5m<ª««M–W +hF,"{Ž/sŒ®YJŸÕçx6b9Ó´¢‚ì,>/|¡1™šÇXÝrf$²<)‚±óÜúÆLyE™×t)J` 5<¼~4Óµ|Ïg"B*§$úHȤëÚÇ*pP<þgâ-ì…R ß&RÓX/”ÄlŽ 1ÜžèeT‹ARE”=¼Aá2ÁùÞ è>žÕÆë+}&gº¶Ã•&èÚA Š?þGtpe@ß݈‚ÇqL݈F£à xL›ª*D®f5FKË x/f@"9o]tñ]Àøú8|¿¬‹\ÅÇ×|¹>N0±ð|$ Œª™±ˆìÖÕ|׋Æ"ùƆx*•Mg’¥å¶e1ÁvH ¶þD"žm³‚Ë牞ÊS Q|a+D…öÅ<ßi QZºÄ8œ`!GF¼™N—&K± Móé†xEô¦ïB]_p&±\ÐcXà+©xÒ0-Y’uÝT‰!™ò½¦Å ʇLé|äi+ÉVcF,)Á;mÌ×õµEÖA|ÂLp#-8Ðõ”_,Ë¥©Tcc&•ÚÜüBšš‹Gƒc«žëù,°õ€uúù<Q>\¼(‘ ìݽ;¶%ËÒ¹ÆhyJC–ˆï¾õ´êÚ’’>Úòͮ͋’íº2ǹ:”‡š…šýØf©ú¬Ï¥¿Eåa›ÿA~)(þ4øÒADb®LDªg8>ò9"#©²"íˆýš‹Ž‹$n½î‡„FÚÊM%zÙ[ÔÕÕA{ Ž¡ –e ˜ZBé œb—-|‘†š˜Ö]¶ÂVÄ»ù€N‚ˆ Y„ÀÓétiiéVÄ R…î§¢¢‚ü¹u‰$Œ™t] :èøÿ#ƒGA±B³N´pÛråmˆõªuǤ"€Lb± ”rú‚¾Š ¾’— (p¥@|è@€²ð<Ïc_P]˜ Bx¾‡‚WP“×á9¡™ýáñÕ::ˆ°=êœ|#æwp £2ºL×±9áx.`l˜BÅöÆfã¢×ü‚ ÂßÀI¶Â„ÃÄßÅD“åHºƒ`‹Âhž%€\@6%A`ƒXAoAh¤ömNéüJpÀC¨–P:!ŸÛÒ  Lñd J|Sëg¶Uý B#LÂÜŠ)$ü†B@Š’|¡m!Ÿ-ůš_ Š?~ÇtÐò-—á£Èbñ¦‰d ™Zã[*wðZ?Ç‘¡ëƒÎÁvšìL$éÛ(6Ù “¨I³-´J¡ãж-<´jÉð "´)[±üq‹âÝR›šHW6ˆ[/ˆ²I|KrK,!Vìg¨HÎ!ÅE„H·­”þ{´¢W­2ŽI¹âؘß[€ÐFvÂÄlËr\—t±„'‚îlÌypä{.õ+4àùë&|]iž%°¸G4l=.(fA(QGÓ˜˜èÞ0Ñôƒ ¶J9Ķe õ~!ººººpàHšàÚÚÚÊÊJÂ?4MƒÎ¦•pH²¡«N¥Rdººu“[ï–ÒØd’ÇL&‰$­áÅöR(0}èBInEª60ƒµ2:'VÒóÉ64nC´¢W›òŠ ‡Þˆ)Žð+|‚zïÓé4BŒ© ä üÙL”=+0#pÈ”q!Ÿ|úå:üQü`q ã7ýÑÄç0´žæ z>¥Ä œè™Ý Âa:˜îàSsRîEóÅ„¶Fm$‡Ø2ñß,Cf™`š˜‡`!&Û†DcâJÂgšH­ª©±H”L¡†Õü7Ÿ)&j‰k.ÄvG3¬¶Á+}0Ë·$:ໃÓ0WÛ ¢`LÃÀ9Â3å\q¡cÛgô[ÏôAìP‚¡1  â&Bgn`.ƶ­¿ÐÀ'ˆ—¼Üº&¨8ïÄ,GŠl›Ëg3ñkç—‚âOƒß+t‘¯9³ŸõŒaƒL …ž‰ &Ä' ³¹Ûi¶Ed55Yç ˆÍÙ‘ÖÔÔTUUAS-4¬„'‘Vò9O­Xû —ðM iøZi¾7…-wë¥Ð¡C"ü­Žz p 9]»vm›6m3ÛÒ–½Ø–Cº±ÖM ¨hR,ôò›„6Ʀôª/P‰Ú‡KW¡P —"ë#C› |•Ç;ì°Ã!X†é»¶‰8AÅäÐ,~PW¿Žað² ¿rYe乨‰8®·v|@/mø¶À0¶²t÷¯[rI ŒÀlÆeE+70þ1ë½Û,:ˆÐºÚE‹ °&¦ûPܘ`n<—0B †‚$‚îµk׎(êfEú«Ì„’òÚ:zZ¬ÒaÑ·‚mUÙ$F&(0|ÝÒô£¢Œo¼œã¿—ÏVà×Î/ÅŸ¿W:è ;g]>îúÛ¸Þeƒù"è™l„·H:,ÒQÍ7èÇ•ÿ*h9Ó±óncûÝËú˾Ŗ•Ö9 DG¶¦^uÕU7Ýt´Ðyƒ"!sétèÝm·Ý6~üøÖ%H67Ü{ï½_}õÕôéÓ¡-Þº–nKãÝ"À’ôè£BYBÈÈpàÅKDDÄuå•WÞxãÄJ·u´ìÛo¿Ýc=  %­K¬¸k„,têÔ ­O'hE¯Zñ5uêÔÑ£GÃТ´´tƒ±ø…zÙ?ÿüó;ì0xsÆgÆdÍ%èü‡ïÀ³èÀƒ»}¾|9¼Ùÿàƒ ©" Â2ÖõÃ?ÿÙØØxÀ¡‡â?Å@˜Þúg·»I4ïìþßß|#"VmÌî{àHâ]ßcQ“)9nÓò>Ž grQñ)3þF|1Q°T wX= {x)¡ï8L°­øŸ}nhú‡öñ²e@(:¼{pXŽ_½fõÃ>Z]]O& ¡ eò™ÿÇůRÐðN¥Rhóf'6d$\ZGðÍ7ßì¹çž­xÙ&õ—4ë$^xÍÅܹsû÷ï¿ )Ìx( ˆ~·‰|¶.1¿j~)(þ4ø]ÒA†Ãö?=~ÿKÃFB‹G‡d×-ôЕ••—_~ù4}ÿƒýÚk¯…Ð2™ „ÖºûMaKãÝ"@q^}õÕÀQB±‡¦ˆ-Š— ²yÏ=÷€÷±cÇnE³Nf‹&Nœrƒ‚rк•‘ÐAÒ¬Ož<2òÛvÿ­ ½jëiÓ¦ÕÖÖB_N ­oG!€çI“&ãë®»Ž¼ ©Ã“?aÚð{졇ÀÁyçDÁ)l„êÊ0dJ÷ƒ%oupÒIu0 qÞzÍõ~v`rçûá»ïŠ“©­ïÝïX½p‰ëiªj›x¯z<èÚ1˜uŒp Ï<,úUsYCÕ"ñ˜‹7½‡ôð¸ÎZª&F"þó³g«¹ü°óÏ~æLÇuO;í4F–Ó¤ÿÀ}÷¥3™É×_·fÍ"«­èó«4*w8DÙê$ᲨV í &€Â·n&܆õ7¬ƒcÆŒA#´i[šþ0ãDTøs[ÉgKñkç—‚âOƒß˜’íÁ—@–cÛP ƒNpÖ@B¤ër ¯pÈá†Æœþè­³ÎÁ=|Šn¶œ;‘™&Ô<ÅL¬z¡m¾’3>Š÷)‡6!(Ä;8#kÚȼ9®¸g*Þ3’Qh÷j1^pY|–![‡²‰…qF 'kŠ™1y€,“æxSñ¢¢Å4ä=Ꭴ»Êçó#9ò­Ã^xLÆÆÙ$1’“)È×VèñE&ňLŠÊ!¼vƒŠ Zð b{ ÐuUx.`h•„?!G-–o(XYlD\†{†Bê¿]ø•œ’Ê“<,“÷D—BùŸŽÖ’ž 9=xÿ}Ž>jÇv~àž{ú÷ï_ž*• j:Y„ ü[_|úé㇠A®ƒ¤@ή‡ÿ9仺¡‹±H0D`<×ñW¤³Ÿëê)Žcs²D쀦ª¹¶³ð•'ž|²ç8¬"“ÕŠ…Þ¼y²…—¶C–ÿª éhY©¯ ¼4-$‰³}ìŒsÎÆDR±;‚RÀHÆÛGxáÁ»ï>á¸Áå;ìpï­·ž~Æ©ª*¼¼3ȳñI–cI©…2l}åù …ÈøËˆØÉÐ.à‘ZŒ‚¦ |I6(º¿A¹yƒ-Õ+Ô¼Õ&8—‘'!÷¡†_äe‹õ—ÄB„¤‚þCvŠ—Xô‡ qO„Á‚öB%"i(Þ²ƒZ=I€)„ àᢋ.êܹ3„ |+LCxÂ$5¬³Å²X¼¬–tßY2k‰^»ãûK¿>¼Ç~±¦!ûŠéÇ ï·Et*ÿ5×\ â•W^‰Š:r2©‚AdÇŽ/¸à‚°ñ"KLÀ¡8«W¯~üñÇÃÆòí0qãÆ‘…ÉS¦L¬…çZ]zé¥$¢òòò‰'^uÕUÓ¦M#Í:i¼ZŒ—ÌÃB°7Þxc}}=4¬0ú'M8†÷?üð÷ßçw‚ÒäMŸ>½¸k„&"‚߆†pL:EÂI?Úb¼ðb„„AsL x“&M" ñ­·Þ’Nàþà÷ /leÒ6œË#Kã!@Ò”‡Gè…%Òú|1D BƒÔBf/¹äÈ,Y4räHÒFMN´®?ûì³{ì1ÒùA‡@A'OžLÎv¹ë®»BAµX¾Å >|øî»ï@DW_}5„E9jÔ¨Th! èøÝwß ù½âŠ+HdÀ 9üâ…‡ñãÇCq€/È NbiÜsÏ=PGf̘Ad…6AI,a÷FÜ<;û™cú,-]0o~¯^½°úqÍ•Á´¾þê+688ºË¾û>xûí#@ a:E_3¾ýÇ7ÉxüÇìzÐÑòRŸñƒ­#L°È¢ÿü£Oœ<ät`ãœïCŽ~Zñ=„¶tÉ[={ö$eªzÞGéñ,Û†©³ ÿD ‡Ûn»í§Ÿ~ºýöÛÃõ©dÿ>‰ZPTPW’—P†­WUr\<”;¤ò¾ÓN;#ÜÀX<ŠCA'Ïds(<Ô èx~øá¨žÅîA$ý-Ö_H*4GàBƒ,CU‚¶ýºë®+áßtÓM 7òr[å—‚âOƒMÑA¨&d[ýôSh_Ȫdr¼3´¹ðÚðì Ú5b-8ÿüó÷ßDMMM]]ph+Ñú«â6޾B1<õÔS$…PZr2á Dz£n¸Zü‹/¾xŸ}öqC[ ];´òd¤ÚÄ.]ºsiR‰236ŽM'ÐVh" ÛƒþzA bçw8=n0鿱Zi[Mˆ] ²*Ò€}ƒ3)Ztº0"\@ïä Ä ù…qèСäJ"ç<ôâþªU« «#öKè ¿ (zHÈd8bĈ6mÚ@¼-–/ôëÄžiƒ¯ è›!Á ¥06/ üP$ äüóðöxÿÐCA=ðÀá‹ P+ÈP±“µía÷Ö  ·Ø÷úøã>èˆøÛ¿½Ç^{!r\Ÿ B?öÕ—_–—–¥ëêËÊʲ™Ì×_}Ò!Á¢=ñܧËÞ+-)QóDŽE;ìÞ¢5[Ħ _Û›óø“'ž5 <¹·Î¶¬ßüTý·—Ò­–Œç—½ºî‡ãõðiOÏÿóË/Y‘ãÜ pÈõnûî Vÿý/¿ü²råʽ÷ÞÊ4¾c—/áqÈFcýó˯vßcà°?|óíN»ï2Ât0Øé (›÷æÓALBŒ¨ qëVŸ ,Í ùݺu#õ÷Ë/¿áCí€*Þáþ„AP“ÚÚZÈoUUÕ°aÃÂS¶H¯À/9PZ¨ÚPM@s€ÙÃ$"h{he‡Œlªþ1"«WaX.! ¬À¢ uý÷›Oé'Wƒ@ …ᨘŒB!R4ÝkóN9@»AŒ£PAÈzn–þWl çÄI!‚>ß…ê ]üU½ãŽ;P`à„„Ý{ï½ çë/ 2 µ„ЀM~öÙgàž¬å%z‘B, C(&ð»MòKAñg¦è 9Þ•´`ÐóÂÈsÑ¢EdZ¯E÷dèà¤I“ *AûðÃÉ›Öè ôè×ÉÔ'¦ƒ6Œ©ñLñåç=<íþá(Ò|G1 ¶“Ô‰ˆgÆœþâ­³ŽG:BÀDÔtîÌfƒ‹Ñ…G®ÑvñÌ iˆ©0h¸/»ì2034Cð|Á dš?xí ǃ8àâ‚Þˆ>úè£/4mÝ#Ñ â@óÏ£G‰A8÷Ýwß÷ß)AÍSÃàåÖ[oÀn¡9#‚%–h¡I…~…4ˆx$“2„Il*^òÙý€^⌨!вæº:~AT‡4ÁÄ í2ôX×\s ™! |­]x [yÂ, ë‚?¡; äh1¸ŽáÃW4ôÐ# á@IµR¾(èn!¿d¢ ÆFÐ+C˜kÖ¬Ž'œ«"\(""È)¤ (àW_}¼’ !@šl íÐ#)”Vèà—ÔBÀeјN§k–c˜¼(ýý“OA¶ût•͉‘è·ŸÕ°ï€ShYº¶¾ë!‡"ŸðþÅG ­{¯£L;È/à9\Û}ñ©YÇ;+8ˉìMAŽnøŽûÊË/8„H—¬4MC‚ùhÅW_í´cgo öÕtzÉ’%O:‰Ü2ÒX]½|ùò^½zᯠwÃàbQ¨Ø,œ³œ2­es‘DÇ¥i|4‚i¦ëÀšÓL·ˆB9cx×S#ìJ:hÚÏ=1ó”agã—QÙ(¨26G1¾aÎ|òÉ¡ç@è¹@S" ^&¨¢Pˆ>úüý÷SÁºIÒÙàðì‘#1 ŠlÎÌ™'‚W4Z‚¡šà,¼aŠ$£ð4Äæch<ŸGÍp¬ܒDZx‰ÉÑAh2¡ƒä¶îÚÚZ+ûpI°DÔÀæ¿ýöÛwÜuàÊÞúBTT TȈ5sÊ­Ð+²þ˜° †1Ä’G&HKÞ:Óbý%CÂ`ÄBÖ’%tá6ÛPñȤm1W#‡ùƒGpêd¨x$a­ˆšÌä‚Ë)S¦¯n‘«<ÔˆÝsÏ=¤©„€¨AÎd*™ˆšŒá7®¿àÆ–l²Ãš,1„”„ mII-#†Õm•_ Š? 6E¡ŠÁPêÿÙ»0+Šl]7Í 3ä8°€€#®kX#««.®Ã*ÈA’E0ð HŽ‚s˜ø\dÅ|Lb o~÷Ï=[Þâ¬XçÓKOwu…SÕ}þ>ue.„o³fÍ€å$Qj,Q ®Y³†›ÅxïýóŸÿÄí|ðÁ!à ß’x8¹©g™çC:ãã¹Tõ¾uö3o R|gºÃ*\®B>¬«Ãn}Ús×[zÁTH¾OÝ:ª:,aM8’*žo^bòû>¬ù(@roß¾pïb0Ÿ¿¸$n|õ§Ú¤ìxW _dxIÃa€x¹gee=öØcJ‹·]”ßúô鈃ھþúkÖ‡€!ºR‘Ïb¢dBÍ" ÑU\¥ý;Uk‰Æ[XXá„Qãêyøá‡esJE6Ú’k“lPÊfñ!Msta/j+wmjê·ß~{†½©ìà3šƒ€PáVÝŒ3TD@â^¼÷›6mÊ:ÑðÜ€dM4¿b@F,c÷Ȇ8¬Ct.a‘@8AÞxÑì%«9:÷i;ŽÄۣݘå[ce˜s„mØï²Á\Ueåk/¿rËM7»Rìç'TþÀK+WÞÒ½»´É¡ž}zÞçþ±ª¢—jd¤×¬[§`_ñigýÞ^áAKÿÎs+®êz«åâR€ƒ–G”ˬ¬\ºdIÏöÇë=P^VÈÒÞù¾^÷e´ ËÉĸåË/¿ìÖ»·…J=žÅ³gëèÐRÖ®TN+õœÓNBbÔòA»!˃ÚåqKÊ B _Uõ6‹Áp<}ÿ‡£ïÑÓ a…<ýôÓÊÆmgü0›0a‚@:fŽ÷~@ˆTw]á½Á@B´#Ô±£hõ${Üç—Ÿ=“'OÆŸ>øàˆ#з'Ÿ|0.¾pD'ÍÝRqT'?¹ðdOY·¥IbK'—¦L™¦áƉ'&Ù,V‘m£<=Np•·ÐXP²8&y~q’g7nLs´{ÿý÷ëÎ7Jûr;*ã5dèx¢DpP¼Ó¸ÿ†pÆ xr9äÑ1÷óÏ?ÇÃËݺuxˆÞÿýdp·ðâ©F“eùÞši©*OùÂä¹·ªzÊïS¼™ƒ¥ÊV%µ!¨ÝòÊìÅ7*œÄ»Ñéµ}«¡D»mÛ¶}ï½÷Ú·oÏmݸ F•Æ“››{ê©§âmNµŠöâó—2FÙ¯@æáÇCêS,á¯]¾Ëð^¾ï¾û”æRJqÎO|<±í‚ƒx?F 8íRy0iÒ$Ô&z¼%ñBÄË.êý®l·Ìâ!CP/bȃѣG£«Qz¸ØvéŠ1tèPL<äÎ<óÌ3˜D ‡ûìÁ•ÎçIXŽçJ‚õ†S3Á×ñ!SPlpåñüìÙ³»âØK‚ÂOia,øf' Jr¬MÊþô'Éá]»vÅ_q»A%”=øÅ-º“I—7è*¦ž,¢¥&øÖ²eËÞ½{ã^`A,'€TÌ;•»ÊÖ_žwÞyÛ¶mQ8¨4] ¸êNñ„m [W@Kn§+à÷oÛ¼Å[YuÆΪܿ¿F:ë>ûpùúº¨Tw ¢|ÏžÝ*oÛÓ;Z.Àweaá®Üì¶§žä¶ödÞŠ å ¤¦×|sùó×Þ|Sm¥y, ´á÷W_½ôÒK­õ†Iôz·eí8ñÄ©)>Ÿ÷…ç–ßÙõŽƒaƒÁ¢ìlk³øÚkÓ"ñß]µê/ù‹ °OAYÙ¶ÿÛÕU¡Çéü)ná`ØN¸ øf:0ºƒÁÁ¸V-8¨¯.>æœè$ iÚqâFÌŸ?ŸOœ`)+né›×tùSJͲ‚ßý­Ï-ÿNlzØ„G¼Ä,êyOá7ÞÑ#GŽä·»²C‹á•ݤI¼ã¸¯*ˆyàHHwܘpTžp @„ÜD§ 8~¹;STTÔ¦M›ž={ßèyâ¶«ìýj¼öîÝ 6L÷0dÃÓO?¾Q7f̘9sæŒ5 •É¡Ã(I¨Î¯a¼jQý”Ô·‰ÚÅ1^¯è6mwî½÷^€Ú‡m "N5‚‰\@hF̹¨¬M$ÑuÈ8}útpLƒä`Ø‘¸3‚é@m cD€È{Q ÆŽ÷>˜ÃÆ £ Š;¿X$X¾Œô‹1v€9ÀƒjÑyÔIë@B7Ô?aÂϰT¨Ýgë˜8L:–‹2˜P|wñöj­+°è‡Ö´Ô7c9q!‰bÞiïÈO¾ObŸ_6×ŲeËPã¢rQI^ñ¥Å)ˉ.T2h3z+Ö,‡T•M‹/ž/°KÔ~QfÞEE´žø2e Ó«`tàO‹-ú÷ïÏ-îÛÆ}~Ãv`¼o™Ô+œæ4´¥é¬Y³P'^‰Gq¼† 7”d³µQxnÞ¼™ÏW¹O¯¸Õ«WS‹ñé§Ÿâ÷qÑ Þ|OßàÌ·_mª*§:ðšHõ½ÊåkبVÛv­ê6±ƒk”«|¶5?¯ðw'4+-+ty|—v>_¥©jÁÁ(ã}3-Áéx+Veb¹‚7^¦üjìÕ«„:NÞ~ûíxã¯~ÀaàÜ…·6!ˆÆMÚíá‹©xÓ)-ÚEÜv©Ã/Y^^!Ê£-"†´à(à8 `ĆHÆâ*^÷h´C‡×\s êÁÀ!ôbl»ÜcÂy´xë­·âå‹×4Æ…w4 -¬Ñ ÃøÓïezײÏz¾ùXFA¿÷Þ{YYYttŠËg"'Œ‚R¸„JJ\ŠÄÀ¬lº„Ó$?v~q¾_¿~Äë´pG+»¨íºë®‹šA³¥Ñ>‰¦™@ $"€ì /¼Áš!éE0“ùDíè€HSá •¾´þ¤" ý— =·ˆNŸ.:ß¼ys+ŽwN8€å—š‘˜UU^ ŠÎ8ìOõ5L³ 4QQa!`„3l%öüÊé®ß°^5ÒxrC!t ÂK‚±B­Ka;±°C9¶þø  -òŠáܰ–jb,¡àfL»áxý"rB™¼ü¼Ì&™ÎHŒON7Wà!÷‹«Eq×›²ÏqŸ_>‰Þƒxù°s÷ð×XÊHÈ öÄ'††©Ö{C²nð¥JcDvIÿ r@-?bÙáÿœ{o¼ñ=/q˃Õz~Q€Ÿ©²½Ãϰ¨Ìæ?ßx :(d€<úEà Ç?þøc»víðaÆÍÉ–-[ãáÇ8C½žb|˜ 2oÎ>øð­·Þ:¤îб…q›å)¹¿¼–;ÃÁ<A;T­K)íª´LØ]éV´êýû½u›¦Z®$ÕhròŒá¦¨ÐMFF…ÁHxUéÖr„Â|ß%jWE‚ýà€õ‹zƒ¸ý§9?»‰¨±`gdû4‚|M2^ù2æ‡2ƒûã.L*Mm¦N î=öØcG †Yç¶mÛÚÚ£ÃI!£lÅÿÄ0Ñ(!`\>3H/Î3Gï—ZµjµsçNPLþ…bç—Z^e[< BxË@”h‰)Á  mpiøðáŒúA7j2PÊ {QÕìÙ³ñüÐARE¡>5À>¨¦Ú9¨HŒô¸°Iä•­ë’«tç't©¨´(zDe Ú(J%ZSÈ&Zss“S†ЧäíF‘Xús…`Êž~úiüâ«&;;[ÿx8‚ÄÙI(Ñzã¥Øç—ø`*íQÕGq˜ë ,B1ÔŸÜj½7Ä]cèСxGã’îtÌ×¾î¢^â°É“'£KÕÍÒ!úW¥=øû¼({5Æ–gÖj=¿~qÌ1øùÆkÈÐñDIà Ò4›¾úê+|×qw‚¥xMÑã63|]ã*„®ÓO?5¼óÎ;¨á‹/¾HAT¥Ð¡„^ ¶SaLÎÓåFbYŸ§J&,‹Â^åH³£ÌT_/@/Wn&êþùúÀ¦OŸ~ß}÷q›)//©r%D–Xš‹%n¤•σe]ÜÍ¢⟉Ú™*Kßl¥;B¢Í2Là‚¾Ù!C)'/¥€§ƒ¤Ð bß#FŒdu9O¥Ž¾yt87Š.D?™„ω 7>ñÄX‹˜t^Ö¡‰æ—[ÿflióJ+~ºéˆžrÊ”) ¹Äóñ›+_O®€3èÏ=÷Ü#{|œá*ÿÄ*ņƒ>}ú cA-¹mþËgƒnÿ”„Û²¹¯/'ý8“TW§¨E(rà’'£Z¤ƒã’’’åË—c¦P­$ë“ÕûsäÀ»ÞTÌó«bÒÉPA…ƒ#XWLR¢lM¤¼dâ¶›èù7nœ²Y7oÞ<|s”îJ‚ 'L˜€ÂÒº,0.f"Û ä f Y÷Ú‰}^’—W‡ýüRý¬gBy¦ú¹ÇkÈÐqC‰à d+о6ñ’êà§&ƒp9"ACuÂCÇ-|Žâ$=‘a;¨"®^ 4ƒû- JÀòŽ [D9]Žè€‚43„ñÉíNqYñeÂÕ†ƒ ¡g0SöË/zH ?-ëI4ºæFio%îMP-Çí!e¿©að0žƒkÖ žQíŠCÔ‰_Fä]Ô0Qy@E#QS`‹»4õ ÄòÊÞB¢ÈGsô݉mW¢l¸èÃTø+ê.nHUƒûöp˜%Oçðá€BzfÈ6ùËgé¨j¨„£¢nذaHT´ŽDó+$*ü’¡ %µG¨hÌÑs;µdT¡ÉIÉ©…щ ›àî]˜­Ý[§“NÙæ½‡ä³¾~TD/(¶‰¢´ãG™ÌËn,îÕ <³âÏNÌzô1J*¢¼”q%o7.‰PÇ[ H„i߀™¢G-ŠZoÊöXR1Ï/GéFat†|Žôê0Ö•è9+f:ÕzoLž<om¼hôCtˆVð+ZI¾úˆÔ%„§Øª¢ª(g©Ã$Ñbò+‹îºJ3¹ÑŸ—DååS­ç7*§úifäŸi¼† 7”$IÞB™™™xB´ñ³‡ÐM“ÆúxMÑê‰O¨Y³f–à·ßâSµÉõÆ’z±(ÏŒØùÅ a” ²ˆ!ftä*S£4ãtzTInbÚu lÒ™¬ël8¡HÞvLÿhQÎ@¯a»š¼ÿ7qrvnë$;þb¿¥Ÿ k‘t¢Žið¨‡K´Þâ>¿Ržè–›Ü@©îºb–sÑœÑÙ.Q»Â“ØçW¯lÄI>kò¢ã«OXÄ÷»Z2òÞ¨.Óôç(n訨çEE4 q/þó«¿„3<ù³Ž×¡ã‰ÁA2ѵãÇÄWýe™È -?¥¸MÁÏ?ªEpcóæÍñ'à nùüóÏ“ÁA‘j4ÂIàʪª —Ûár»œVd]k8ê7¸¨Â¸æ°0£Ó>í¬ Ê tZlz¸ß*I¢è¾*á?pŒ÷5wô$\0cë3l7þSðfÑe?ãl‹¾AĆ®óHÔ.k æ’¯? ‹ÚUQ¶ ÁíQ:¥„)íŒ>PÍ·]JtÙ#£xã6e0’AKtÉáH\Š èu8ßåbµ&°XÅ`¬(>suÒW· Õ ‚Hâί@L\%T’½<š÷Ñ=HfAX¡+„õP-a½¾ëGuº|QˆCkÃ0c­ÇØö_O¨S-þÓZWgùþ¢0ŸðM”gº5ª¬Æ¸_¬ê0ÛÕ)Ö!ªWú—ÀQ¤¸ëM.Å>¿Œ‹ÎO\½{ÕZWqA­œ¬Ö{Cö:äË|}÷mUÄrFE‹ÅF֬ўMðë…•Ç>/‰Ê³'Õz~užè®¿Ìx :(¤”Áמ/F0¥›Õü$ô ¡s!^GbG8ˆ§~ýúõ¸eÍš5Éà •(ʆŸt/°?½nKÆ„\×± [ÛÆ?yà ¿êœªÚ›Dº}*Îe9î@…#A^tQ$¨…o(n§â£GÛâ Kvõ¨{„qº&OEbÊĶ+ž•"ô]EÎÕϳ9É[ ­£?(£¿OµËzèñ-ÊkZ”ydÈ8urc]‚« ¹É(°ƒ¦Hı|ŽU7 paæÙÕ±K¢ùÕyB‘ÏI‘ÊŘ/*bŽn ¦³•ˆÔ'´"J bIy‚ÚEß©+Ei¦…ô)ûò:|Ë?á|"±JÌ( BiH·MäG>G]MÔn\Òw™„S&ï ñKU‰5¸ÿ E­7e›LÄ>¿J{0Å»_¾Á]ExÈAußòº JŒX‡öÇxéíß¿_¾Wå5(ó+Ö¢‡\]q)Ö°5ÊM;ªLÜòP(ùó«óAE‚σL°þ³Ž×¡ã†ÁA†§hܸ±²7‹ùz¡BGÊðí$6åL“‹ãV­ZáD™?üð®$$VÄ]KÇVÍa8"’C”vxã…‚Vþ—EÄó¤I“h×Ì´"}€b[—/( õÐÍ:Žá[[ìšE?G}g\“>¾ q‹¾1ÄúúNGX3ÉÚŠÛ.õO”[!;ã‹H G$ꇊ|‹ÓõÄÉ}Ìäi?ü°õL¢,D£yyyË—/oeÄý%Џ ²¼®ÕÐe§ `¥iˤ qNTÚ¦$—0ÇÌïá̯ŠÄûQ'Ÿ_=¡â<&Ó\ANê`"yŒÉY×ñ!0—LÔC† úÅ(I’:—_/ù½{÷r;—TqË;lŸÆ 9ñÄqæã?†œ:Dj¹ÿ?‡ƒ¡ˆ·3·Ò¸© yÖ¶mÛþýûË—7ý¹eÀ}ªÄ…BEÌÝ(P #hÔ¢"fRâ³&}X¡ ‹1Š„( pü%îeýéDLfggƒ{è 퓘ò8n»t,šq†VVÁñhˆaùTÄX‡Ñ#ÃvpWeg…ÂyÜ‚!È—7“Ñ¡ø·°{cÆŒs ³“keôèŒlž©êx†;¼:†à·ˆ®%àÓ+ Gúè¶áN;ñÝ„ ˆÃÌü&š_I3È!€‡àƒ°Œ_ GßõSvnÀ­[·âQâ&)»íŒ„Hþ´¢Ûhº}ûö¸®ÕVÀô…^¸nݺØrC† 2ôsÐqÃ!HMŸ(d» €ÈÉÌÌÜ¿?„47ò:tè°gÏJ5”aÎÐXUˆ~ ²HÂÙLPyd0˜8ÐDº ¢úéV¬n'¡ÎtOÃX¦$í6 jA» =ÍÉ“x­,Æø,h2õQÈîÝ»[´hAaOÆòvFȦL’©| ‡p£·¨»”­¸•Í8‚±Ç|£]‹R³ñ3@RŠQÝhæ7ÉüŠ–NÌ^ÙŸ¸ó+Ü“|ûí·×^{í?þˆjÚ«»D”Œ»x;¢Þ1* /ž 2dÈÐÏJÿ¥pð àáýÚíGË! €‰}ÇŽK‘Á6iÒ$?~Ê”)L°“÷Üs}oQÃĉÑÏ=z@¢£ 0 j3fŒ˜(á^È?€ËAƒ5mÚTl›¨Ub6LHîûî»oÚ´iÉ£FŸ¨d¼k´»råJ€-VZ(iÔLåÐÀŨ¢úÅ_Ä$áäܹsÑðŒ3µ :Í=ôÐCè6æðW ~øaâtO²bó¸gž|òIü<òš’îÚµ+ÎÌš5‹:$ŒH F„3L¢š„$Ê#ŽsrrV¬XAäGDgõöíÛ£!œÄÕ-[¶0ºÃŽ×£lŒˆ«Íš5Sš¶,ªœÄ¨ÁxÀÌoòùÅnAaÆ¿òz˜h~uóGßûï¿x¿úC‡bI<|£2Vó @ÕoÈNî'(ßñÓ’† 2dèg¥ÿV8xðl<¿â¸¿‘J(5•­YéСÄ-í¨yëÞ{ï…$†(b@ÈiB&»d (ÜY§N={öÕtY˜7o¤;CUã`òäɺU>$.·ÕÀ;ÚG}µAX¢?ÇǽD6¾@¥è‡Ï ¸éÓ§ïÛ·¼£‚ªwïÞŒ‰…Ö'L˜dì’››ËÄ/à$ Å¶K×nŒŽQ[Ç×§Or#EÓC† ìÛ8=}³¤ÃBUèðˆ#0vÔƒb8ÆF„þð^Bäb; -)áå0Ì9sæ‡Q™G“8Tؼys 0eïB‚󨟾«TÂq¨ÍEšî;I ºGŽáÀÌo’ùE÷€>qû€˜! hœ:L4¿Å,j×®ÝæÍ›¹¼&Iä#Ô†e@] _º¥£ƒ† 2ôKÒ- Åm&ùýAW$º/ÍÎ>†@DE¼"ø+ÆøB( H´nPá¡«;šALæää@ô2î"D/êgÉ]»v½òÊ+ùùùÀÊŽû?zôh*`‰‘ 5`ç ÆÕ¢¢¢ÌÌLÕ¡J‚ÅäÜBE¸:räH¶‹ÊÛ·oäÊiú&+¶] ð©§žÚ¿?ú ©>C¢£Beã°… Œ3†ÆmbéE»°s‡N‘!Bƒ ú÷ïÞÕ””àŒS‹Ì-Bar,éÚ ñï£i÷R%M ÀÉ×·ªy‹ø€KåÜ;FŒK2Ç" 3¿Q󋓃Ç0¡„¼?þx^^pÜùU‘X0²¡Ï;ã·ÑTÜ~=ª’G„ÞÇz uÂA ýÇdaÒÒ!C† ú¾nÀ„ðm¶$ÄùÆFe“x qedd@8 ‚aÀ‚gŸ}6;;[’±Œ1%Yy,áÙÂæŸâœR²IÌœ9“H¢¸¸˜² ÁÃnPeB×KeÛò—––ÆmW×f1ú GÎHaf›ã3”d¸2ÑÜÐÛ½”Áq‹-vìØñè£ Và/Y³fͶnÝ7_0)*xþÄ`éŒFuˆùÀä¡C‡¢ÀŒ3ˆWPx÷ra 2D@§¸k¨Ÿ†§Ñá¾™ß$óKóJL+øï°cÑaø’)$v~©&”„#iy%뿾T<Ç øˆJé†ÌH.¢ÔW›Nô“ÚVC† 2ô Ðq•rVTT9S<·'ìó[ùÑk×r»%UÞtOJ8ð¸Ü%¥êÔª­!Çå Yñ5Ü; ©K5¬ßÇ•_zj ¿?àTŽª²òôšµ&ÃsZ#8p ]2%ïÓ„ (ù Ì}š’Xi²,Æ] 6„蕘#’N „Kýúõ_TˆXT5mÚ4"Æd¾QÜž——þ¢@¢v™-Wüm{öìyÖYg 0`Ñ¢E›6mš2e YÆÍVN3ÀGãÆ™àDg+ú3uêTô}hÞ¼ùðáÃÕO¤E.p'š‹ú`¼÷Ýw°ª¨²Â/pþÄO ØèÑ£Ñ.Ð ú²o¸wÒ¤IâjU¹î‡Ë YÀ8=â‰0‡¨….Ã(ƒ¦%°Üoj~ù¸‰ïðܹs÷ìÙ3nÜ8É‚;¿ºÚ‘ò£fÜHΜ‡|bibHK¥íDËÙ,6dÈ¡_’þ;á`µ7‹¾ +Åãµaª}knéþf-›í/©}áÒʆuëøBÁ‡KùBuÓ\ùÞ²·ÛQP·?%Xە櫨dÔÌHKñV*÷»kÔW©î2oùSS&#FŒpD’“Μ9sèСÌC† iÙ²åàÁƒ¹õ aðޤ¡¶’ã…¼„f°eü ኚUÄßsòäÉ€&¢È!€ÇRF¡£Ú» DgjrÈ ‹h@Ùú0f9c˜¼Döæ¨ï‰R,q “;vì˜5k–²½pžû’R†Jµc(¶Ã19X• ¡˜'‡S#–…,숤b£r +›¸<ÿMÍ/±)­¨ð£Ê–XªDnéR•áf…T=¢†œœœ(l’,5l…Йd¶  €©0ʼn8Æ[èÖä5dÈ¡_†þká`uÈÎ[v9KU E¹Ò‚v$[—ºç¡ë5l0f舚Êr@®tÓ”kÉÓï¹ØÿÌœðû2«\݆ d8J¥ÂÊéúŸÙ“zäáÿ;>=œ>à9æ `â?—Ú·ßã?ž™™Ù¸qãÍ›77kÖì‡~?~|ݺu /¦L™‚“ëÖ­;í´Ó¶lÙ²`Áfá20n¤Üepì‡zèÑGUv¬»xµy󿝻wïF™1cÆ0t0g>æÏŸ{Ÿxâ À HS°½jÒ¤Iqq1÷×&rssédJ{ï½÷2¶NÏž=[µj¥~šÚ„.¨¨lòÉ'y5£!41jÔ(Ì_aaá²eËPf¬M@DsæÌÌ^<¤ÁÏDz|&IgÆža-õíÛ—%8 WÁv åé LPûíÌ/7@OtŒfŽä ¯Šw9N™á.J,A©£6l8L.ë¤F6yèA‰ì(›ãìŒÜ•ÈÔ!C† ý|t¼ÀÁ° ߥ8=Êéñ;¬85)*kïÞ›ÿ®ÌçÏ©¬m;šµo ‡†ÞÖ£}‡¶Ù•%¾Šò–®š#Gôþ®¶Ûá©q RÕHøÀ°€ËYÑRÛ“îô†ÆŽѤ<Δ4÷þý–^ð(++«cÇŽ@H:¿À& H}°ã¥oF„qååå͘1ƒ‰äû÷ï¿páBe‡5‘èt“&MÚ°aCÆ !qq;³™. fHtFm¾¨åï¹ç^)))8h׮ݿþõ¯–-[R “(/‰òP?HÜf¬€z\vbbB%†—cà$ÈNõÓT¹QÛs|tY•\é»ví:á„X'!©å¢ú¤  u:"9»0 ´£­L3ÿJ¹œœn½¡cÔ–áà™gžÙ¸qãÔ©SÉdv’†wyl3f *ÔPH‘ a[ô¼˜n>N˜0aÇŽ¨¼z“õ3]O$š4øFÅ7"%] Ç<ƒ (ârcŽãù•ýÜ'Ÿ|2??òäÉôeæƒÉ«S¦L2ž9s¦Òbw‹¯ šÃ§M›¦´Ä¾ê§¾ä‰ˆÁ·TÎvÙs𫮺¹° 2dÈБÑññÀiû†””Ë­üUªVZ ¨}ä‘G[åe«*WFzÊSêó•:uÝž&–€xk¹a_ó@вöŒUÀa{¦ØûË啎T+’$g‰-’Á¦£ ¢ð£€g„jk &zè!¦Ñ£G+1à^Ž  åi¿E,1Ÿ×s¯Qdj¬”””@LRŠc>p†à†âŸê:™TT2kÖ,êu¯W¯^4ó'D ÐXÀAk9€"ËÇÖâèÖ„b‘†?|ðÁ±cÇÒ3ãàg%Á‚êÄm…—$`^ÔÒ¢Ù]ƒ÷ÿ–æwöìÙÀˆfpþüù·Ýva.*äF-á~¿~ý0¿èƒî¾Mžàjß¾}Á(6$cÔK&"Æ~øá‡ÿþ÷¿‹²˜RL'Nœxß}÷C­³!C† ý¦èxƒ6yaw0ä*ñ©Ô¶;pX¹_ÐíqíøËÒË·Àér(=P³Vmo8äv8=ZZd¶EG”ä³4jÔ(ÀXÆ/ž°¼cÔÁ6šàâ *ÈIÇè¦úÔE‰¿-:„ÁĵC‡mÓ¦ÍÎ;™â R_E ‘®4Õ*a?]O&ÒaM°\¨¦"ŽÑã†ToÊŽr'à F‡žˆ~NˆJ#`BVS¿¥ù”Çqaa!Ød‰?e ‹iIŒõ@ÊÊÊjݺµ„¤&Wõ˜…‰H‚’ÜÐgzhɆLžÄ dÈ!C†~&:.à ÝaÔu ä­éLu–©ôšÊå,/9šQÓê*wª×³~Õ«•žžá 9*œ.‡Ï‘VZѨaýý.o½`øO-·×®&ÕÁ â*oEJjZ¥¤Æòzk¤Z›§²RºµzÎxôÇd(56Á”å”Í"S)›Q øEu‘®ââ†,o‘èqáHaÜ™ 4¦ã0ÜË’¼%77„¾™,)8 ‚ijÁóXð„ú1@æ¥À4ahÍ(ÌÊ£’Olß¾ó}¬ˆ\_žd´Z2ܱ䳤E‡ÃÐ0¿ùÅInÓo•3ô û¯_8¦PBüÈׂ΄äóŨpÕç…aäc5¸† 2dè ã†T0¤ÂÞšŽÔ”ýʪR<*P)n`»²ò€¯¦{î¿Öì¨*©ŸÙ4»°(’‘âp·ªÝ`çŽ-©Më¤ï+{äüÎ ¶Ña DoÀð§Õ°ì «üþTOj(àOq„”X4œwªƒ"ŸâP44ÔB)Í›’êÀpC:Oé ”€ }Â$”˜RS$¥®ÄB‹(€ó”ë"_uJn‰Æ‚:H=ôˆ’Ð<©" *A!áHj8îø—'2\zHWº¬J`á[ii)þdprɆ"ù¬&þ¦æWâf3¼3úHG}fYR×;ª¶“¸å<ÈýbÚz²‡T.êá¯éÉÄWɱ5B0dÈ¡ßpЊ3£B~ˆ‚HO'ªƒ dÖ §ª «}õĺöשQ¡B^gJyØ‘žš^3.-ݯ긔xŸ<ó²ÚÅþôÚž@e•»fZ( ;BU~_zJZ•·ªFjºžzAw)à6%û,Ê!‰Ù«‹4šLÉèÄ&O/¬œ›•±‚V“Ö”••Q̓Ù[*·OŽcœWÑcÕ¬YSôRQøF6+%²1ò\ ÚL|B%Q‡ôMFÄÀË4ã@0 œ‘øÒ²/‰>ëš0]_%\$Á&ôáL 'Û¯£@†Ž Œ"ÈOÜr©i£ÎŒ††l"*ºd%´¡Ô)cOÞnô’¶ëaCè‚>$Ý(€ÑIüç MK2dȡäêÂAîçHšV‰)ËóÇVªA-`Á  ­jœ‡J+5qýÇEõÒÊa¯Ë]öÔ«Sw_vNº•)þš¹ûž:£óÉ!«¢°ÏïHó(§Ú[˜ß¨a# ÖYØ*̤m37 ÿ4#¬ƒp 2[T*‚ØpwAAAÓ¦M "9RbA‹wć”v]ÔNQñ#øC ~¹«X\\ Ü â?''Íq“”!BØPT¾>`& !j'Q¼tERlâ]¨³†Kh˜‰™2eÊСC%ܱŒC&7ˆe•½¡I Mw£‚Šî ÌB ÊèzìÀ>ºßâ€Ú)êÌdD^›pIï=-$  Qš¤ÜP6v¤1îÅyÝhRö ñ‹ Q•4¤kE‡*xÑRØN+žæðˆm7Ñ’¦’LÁQè?Š$wnáBMùÏ!C† Š¢êÂAHH=ˆ3È& üâ˜rðXn‡UÈgÁ¾,8è;œ¡,Rêïß|RX¯Æ§Ãçt©°ý…@þìý7μáŠá±-þx¶rY©m¿â _ejZê‚ùOèÕÇ7ã …C+W®„TFWÈvu…1Ÿ¾«ˆ_Hkjˆ Ji{|¼Eð¾9(Û—œ1;C±§žz ÞsÏ=ÔöMJ%Q6pàð£>úðÃë® Ü÷Ä/!”h³¢¬¸PdÇ–^H‡rss©Ž’! “Û¥6á˜l:3é-Ñ•îµ .º3fÌèׯŸÎ@Fìc‡™™CÌÎO™ÿ#JKŽ¡*€W`qð_Dô S1ì#çev˜D˜Cë:™º /^¼ÌG 8?`À{IÚ»že–ŒBǘ‰$ÑúŸ>}:×Ùë’bÈ!C† %¡êÂA‚ˆHœÌÌÌÄ/Ž ޱ+‰ ûB¶!-8´\‹-8Xi»ÿÏ†Ï êeìw© ÃYK¥8ƒáÕ。rvþþž>¿+óOnqQËJUÃeG"¬(K¯SsÁ¢ù¿ÿ~ÖäéØ ‡KËËxàÈò©S§«/¢W ¡1e01Ÿ ?ÈfÊxs²µ*ò›çEá${µlK¶,¹u8f̘Ç{,¬eKÓCèâ ro¼ñÆÚµkgÏž­´øv¢Ã½bô&}`töœ OŒ:ï¾ûn†\f ôÌÀpæÏŸK*²IÊ_ôÄm“´[PP€zÀI\bŸ :™VUï¢ S_ßD©!‰¶‰áðç Aƒ:vìØ¿ÿ¨PydÅèÑ£5jtï½÷âœç¦69Æòz,b>±8ð‡¦9ÝzšÝ lÚ´ Uq—ù¬³ÎºýöÛñlð®$íbYÛ¡Qaûöí¿ûî»D›ÅÍYYYx\ Á¹ê¢| 2dÈ¡DT]8ˆóLñЬY3@üâgtc¹c“¤ÎRé9ÃéŠ:ƒ–¢ÏM8X8øÍšüúéû]gØÙÀçJw:_ìrÕYˤ´¬ŸžS8ÿ¤+Ûàn+Þ…ò…üÎ4Ë}v_IImwªÓåf2$™F­+ EŸGÙÂ(Ê¢Ò^ïß¿—èªÿË<Ö,*7  ǨGb6 *ÆÀ|nd×­[—Š>LZk†ƒ´¤‡žQv¼jÚ&RqE}XT^2 M„„_\¢‚“ý^Dsè÷ˆEŸÇàˆ² n£ V-N¤%fˆ„ƒÅÅÅè$žøM³QQF)íPÕ³³€ dæ_T¾k×. }ú´nÝZ²K9ô–M˜œ—–Žh5£&ŽÖTpŠ’H9C@‚8tm——ÓÎ-âÁoH8Õÿ|µ6¿Aú>—J÷«E¾E7Þ8úË?ݼ>åÄÆ§Õjp_Ãß·®T©RµÓÊüeµš6:PZ^¸o«ºm…Œ“Ú#@:®ŠIµ_8¤òÍ7ßÐ˸S§N;w¦m÷îÝ€ƒ¸úØcmܸ‘.çw^ïÞ½i,ˆ/_¾üûï¿gÚÜöíÛ9²ÿþLÛÖ½ûî»mt¶´š8q¢ø53q*ÿòË/P0€z¸]iîϸ˜ —Ю„&ÆùÁƒr{¿ÀO@~LLLƒ?ѱõë×c¦[¶lÉ”¾âÛd³uëÖ·ß~<Ñ7pÔÐIÜ;hÐ L+š`}ê©§dºp Œb Ü è†a¤¢{DƲW‹ŒHLÿeœ8{úé§»wï Œ?^ûöí ž`\Àa̧‡·lÙ‚zd-¡6ôÜÆ($K¯Š(Pq׬Y³¶mÛFE)=c¸>qãzôÑG1M›6©$ç·Æ‚òùùùgžy&n§F—qPE´ž\<±í&ZÑ¢¡E/]÷Ù2ª˜/Éâbc 2dÈ¡Dt¶ƒ4šò@;ø%::¦¶ƒ!:T0%Va7°ÎXpп”µù« Üjü?׿×tžá¯ñÄe— xïå¢T¯·AŠoó®¥ßÜhŸƒ:P5ÝŽtÏÎ}ùuÓêÖ@]^Jê¿ã¿PO£'ן/¼ðÂûï¿¿dÉeKú¡C‡vëÖMlùqÞôéÓi5Hª÷fΜ ,`Á?u–.]Ê]?Â,àZÚ-c =TEУGÅ‹KCÜa$€ ¥š²HÔR}Å2tž¥»4KÒÝÆÉÛo¿}áÂ…Ä.LžK„A¬ &`i‰¹!ëg°b X­oŒŠ«/X‡ócÇŽfZ¶l¯Ê¸p;€.cÂR½wÝu×]~ùåèÒJ›^{í5ÞË kBdY]ܵ'”½W+Õbà¸JÐ,›Åôb'y£ÎFÙÆåà&¸¨åa¾Lb¢v=~2_¬™\"×Ð!‡ÉjY'† 2dÈÐ!©ºpPErJùá—¸EÙ‚òÚZªÀr;ÑWF8¤‚aå°=„CN^-HSã×®Ím^ìv¦œ­ö‡æÝХLJ¯:+¨ŠSSj?tâÙ™¥vê:€Çt§#Õ‘òº”£Žrx5vEñ#pÂ_±b€Š5kÖ '{öì)¶b’ƒ`LüÁ8ÆÜéÓmÔX˜±QqÀ:œqûOìÉ8zÂz"c:O:é$€KF4$W…·h‚PEŒÙ5š´Ã#PS‘¸0ŒC«Âj@Cl…ÎÔ @£"J/Ü ^¸Ê{•0°ø‚ .`Œ£›o¾PŒS°ÇHe$Á?DPÃÀ[¶lÙªU«·Þzkùòå@¢ÀhK¶GÙU‰G£"‹¬£õ!÷‘eO “‚zŠ‹‹éõÂÕ ô‰¦ŸþyÚ fÑ ;77}èÚµ+`¨!'˜z˜¹ã8ê$í&!~iÁ³’D%9^ð ÍIöa³SlÈ!C†“އ¸ƒà « S•Ù°V˜¦„N+uøàÕ½©jü—ks¤yà`óçâ.]®zeI­Vvåfr?yÆ¥Í|6¬TV-Ž4Çÿþš®Œ”ªòÚ®T‡;-¬þ½mGéÑ‹1ÓÙ'Q(é óóó_xá¥ÁA}¼‚W˜¹Ó^KpरÁŽ(„ö‚Œ Hû6æº Bý%k–¸†Ô]©ŸŸI;ž”<üS¼Cø§lkâOö“ëhý!PãlâF @Ž"j¼vivy÷Ýw3F4 ãR¿~ý.¿ür®0åVs_ë' ÊçÍ›—••_vÙe·Þz«lÜc\¸‹º=q­ph¤l˜ËÀH\u„}`ïã?Ž ñ'Újܸ±äd›>}: Œ7nÆ mÚ´Á1³£02þ|®{k]LK>Œšáâ¶›±é ßpÜ´iSæÐ‹[˜Êyëa)MÂ7C† 2t8t\Ä ÛæƒnUjÃÁŒíYì°³’Ø-TºÔøõkó¤¹)AGÓ}áo½õæÕ¯e—]ÁÓÜ´9·¹_9€=Ê 4¥Qíâp°,X–öxœåpÕQ£¥§ 0`ÀÅ_ LÄ@yüöÛo¬uÑ«·°°»«`:€Nòö¾}ûžþù€5ŒH.¡”¡¿£‡è¤ÚÈ…š¯¹æt†<¤öˆ—˜î­0 JXËbÂn‹[«²w9‹˜3€Ú… –ÄÑÒWZEæ6kÖ “¢3èããpÏ76Y-ûŒ_FºY¶l}2püÎ;ïÜpà D´ôaß$‰°„ËáynCËö÷âŋ׮]ûÌ3ÏàxĈàäÃ?¬Cô]ŪÕcn-ø¢ªØæp‰F‡úœŠmŸD±VZô:îsS¨¯çœœ¬v´vñkCˆÛn"’Ä0 8¸cÇ*}c‰k€¾)è!:ŒvM’7C† 2t˜t\Ä$tª*{û4Ͳ´]IN\ñÛa¨÷*5~ÃùõÓöYpÐÙ°Øÿæ¢gÕI¿»èª?{Ò\MxÇ·»è„r3ÖŒßw÷½C[ýñô>½ú4»,ţ˹bå B®‘#G2ŒÚêÑ£‡ä®8pà¹çž väççC*öÙgK–,†lþàƒn¾ùf@¢[n¹•x <ø©§žêÙ³'D> *]uÕU@@ëׯÿÇ?þ‘••%VwC† ¹ôÒK#‹‹‹1aß~ûíÓO?M¦ÃÍŸ?¿wïÞ`)Æ7a„>}ú¨¤`‘¡C‡žrÊ)¨JÌø¸ $ÚªU+Lªz÷Ýw¶ºuë¦l‡þýû/X°eÐ(.áüœ9spW14.{ï½wÖ¬YÊVaþíoCÿÁÌ#Š]}õÕÜ/((”?~<“öâ Àýo˜øäÕW_]¹r¥¾ˆ·”/¸à´Kìˆóàd—.]Ø+ðmÅŠƒ BŸ;wîŒÊ©›|饗>ýôÓyóæÑåEi!ÑâóÏ?öÒw[’Ä€QD®ê§q §•°Û²âÄTøÇx1 çœs+Á[ö¥Dà ÏNIòï$uß}RT¯F™# 8ø»pº+~nÊcªC«‹:ÿ¹3mtÛ‹O°6Š-'e—ÃÊw|Kß;/ºà‚{î짪|*£F•¯ŠÎ­Ô!é;qàA! ¨R\÷ëÔsŽ©Hˆiq­ðÛ„´¸™¨Q¢ÆP£&Š%F%#ÖsÓé={öìСÃý÷ßÏÝdp[Jþøã'tRQQš&"‹ÊwG¿!týbÎziÈèÁHn "<ÚÆU‰Ñ"q­£R«•žsÎ9C† ÉÍÍEºW«ˆ±dA0"ôpîܹÀÍ@´ê§æwœ¯™3gâêÒ¥K¥~6GëɨÄzbʉ¡Ñiš„?ÑUf”æÞ:=9­²Õ.óŽnÌŸ??n»±¬ˆº*ÊEz¥$º….J*òÜÒâÓx2dȡäã"î á SYžÀ„ƒ! Ù ô6)õä¿>Ú_'­B…]agãP¢ü½ Zf.ž<ñÊ~=ÿР逦¿¯ ;ƒ¡ô—*«Ê)ÈoÐú„î½îzaþRåõ{C¾ÔZµD •̰yôä@Çì?‹áOŒx(;;»Q£FÄŽà#Ñž² ÷QÛ+¯¼ÂhÆŒüÞ1p ÊíÑ™™™* MƒË¨™ç tOgt†Ù28glº°°÷:”Iê¨T£¨²·zõ5.{aâéPL`Gh¨'íà2DBèZd2"Â=ˆéùËЉ¬¢“R›` ÆG”öíÛ—n¿,\ˆàϨ+—/X°`äÈ‘:¼(ðŽS6xð``µèÓœ¨Ÿf"ÁX¨ç½‰ÈlËô)f‚;DêÏ•1c=ÜîÛn"’¶˜¯=7nÜØ±c%/bEÓ§OWö· Yõ…`È!C† %¡ã"î`$ÐL•ƒ©¤U¡OY^&“¿|¯¬vª7v†\i¡ši5xËýÎ@­úµ»óÆ_Ò¥nÈŠKã „<'*: |åeeM3ê«*¯JO­¨¬`>4U露ÓÅš>¶uêÔ¡Á ƒó,êfa¬á®»î+lâñÇ— tTqQ¦4FŽ 1˜ 7ìÍ„i娖“üÂÜfå6oä A!]"Ø.õ‘¢ÔÅ3‚kÅåB6O%m‰(ç˜YO߬k¹¨cc jòDøILÃztGlvf—Œª-Ž)QêL\ÂeW—UI6$é-wZU$eœ”‘üβóŽKÌ΢#TVž¤Ý¸+šS¦o‹z8.qy°] ˆ˜$ë‰!C† 2¤ÓqwPÙfªÊ2 TiÅÍbœ‘ò¯Ëòÿ¯¢D…5Üiª*ì±Ò˜½!ŸÏú]Œ Ò7MO8w¼é.Žp•ËQ鯬çªa§¼³6£1BZ¼)Íó”‘ä¨C¢"‡AøôŒ*B(òaD"J€@æ@c$B¸F$´‰p„g¢T’q eˆót½ufTI¢ºw°óµSâäËX3ôqæÞ®°‚CÓëçFjÜñ*- !¡Ñd>Ë?V"Ck¢^ÆU!Ÿ©¾NÄ“MX‡¦YЧ`/9 +JJxE9#œ˜®»$¥á jKÔnÜ®Ê÷†$’n'"=µ´Î^C† 2dè”uз’ZBóRÙwaŒQ¦¤¤¤C‡¨á£>‚(ü%à Iªì0ÒéEí`Ø$ô¸]ްò:ÕKGLQ®45º,€g,Ç-JµÀŸUö¥xR\~Ë19·|_Zõ<¨Á‚qU©5*r(ã‰-$Þ£IÇvŒN ¼¥ ¢2O¿W‡’U‚J/=Éye£&¶b4#£Â, mè•^èøŒ­‹:P/GFˆJ2=×°à¡(5^Ö/5Ëö(¹$•äçç7iÒD*Ñ£´„íÜ0º;0Ëà*­ãòA*dqUt¼Qt«t’k=lÇ”æðµÄøÕô}æ’ÃŽÞ¸qc×á´«“$T‘8‘In62z£ÿ$ÊhgÈ!C† EQ"8¨lÙÇýÉ­[·2| DƒéÆÆÄy£LÆ éùÙgŸ¡†O?ýôg‡ƒÜ+öÛ6‚ƒn[¥§ìÔ'.”8­]ãT˜ÏØÞJæ]µ¼aY_Ã]¸¯ IF}åvUZ僵•Ë_åOIó0õ¥Q0KÔ`L)ÆÈÏôô‰Nbp8^Â8…ˆÕryLmLÃ;Þ‹cs ¢nÆZþé½¢ŽWÙx‚)}1¨›ªt^a êy%©¤ä¾'&…PO¬!Ñ“ÒÒRúüêz5’’#ÑxUDñÆ5$‹f¹ÄõÇÛ™Iß"TÔÑ|SÙøý¡g c"ê¤óAP£¾»ŠzØÑ€òFGœ²,Žƒ!2;ø`B»’¸YZ§ËK¢v“x“è>C4:L¾_,“õyÈX6† 2dÈ)„¨‚Ü'Z€äݰaÃé§Ÿ¾gÏÈ߸qq~÷îÝ;vüþûïÏ>ûlÔðÞ{>úè—€ƒÁˆËH8ˆcoP¹U)VÜ™ÔP0+;R)+q‰Ïc•u*:BÅÞ5kÖNñ‡•ËU®‚a§#C9 ó ëÔ«›’òo óv%R›QG%AXpDµƒ«¢e¥öH×îD™*…póQö’ N‚„iS‹&ˆ´T h0ÁèÁy) î¼ôÒK7Ýt“øXˆía]רMz‹â<Ùµyófj›i”À:£@á… Rk»ÉKÒý'ô.¡“Êö>ÆΰÌ]wݵxñbú2ëq§N:|øpe£ÌØñFMPé $ºCÂÊO>ù(…¢ø‹é$†ÆÄ!è9=ãŒ3È®X>3Ýyç—^z©`Vq[NÔ7Á¸n²Û‹.-]ºŸ>¥6ßpà øf û3ú–¨Ý¸-JåúnxË–-³³³=ø,ÃãÇ ÷îÝËHÚ‡lÂ!C† "%±dö lÚ´é„Nغukff&¡BlÜAœÇÕmÛ¶µnÝš6TkÖ¬8ûì³Ï~Ï∠ÀHŠß†ƒ)ÊçÀɰS9R­¿C¥ ¨0P Ñé.wx\Ê‘²±¤ÕZˆÄüpEº+½nÂ_nOaQQýÚuË÷•¦d¤zÒ­½@Bd8¡c)=º‡lnÒã - [¨ß"öv(ÃOGI,Áø P½$ BeËþöíÛïß¿Ÿ£{oèšK ¡G‹´¨h,lÅt;vƒ]Ò÷‹ÅEü©õ”Ö1Ý'Ÿ|23 $/·¼i” •í¢K-£dã –QEvÕi[©"p¶ªªŠè3…í\,ès\>Т‘ ™Z˜øDÙ`—™ôáÖ0Ý®UÄ›ÞÍ4 ]i¥Mø6"\&áùöÛoÑm°‹áµ›ˆh³Èï &G!hŽ[˜Za^¥lrÛDC† 2dH(d8úˆ€¶oßIÍj±q)‚³²²Î8ã ÔðÁàäêÕ«¡@3–1]†ýö· 8,ƒB\KQ!‡ WZÐP¥YÐÐUeáF•fY†¼a £ÇáV®p…ÃYê+kâ©ùÆ‹¯<»â¹W^}µ²¸¼F Ô»'ÛÊÀ» ˜sss6$ž]e1~ &,¾õÖ[E*ƒGü1Ž/»ì²—^z œmÒ¤ x$‘)³W¬XªÀÁ³Ï>Åpõâ‹/~÷ÝwQùM7Ýôæ›o¬pk•“c˜†‰ÆÉÏ?ÿ|Ïž=˜¤SO=•ÐJ”CôQ}þùçßzë­•+WJ¬V~å•W¢:ÿÍ7ßàäE]Ü ¬8“·ÜrËúõë1©è$·ÈÅÅá¹çž£–¸gÏž*½Z¶lY³fÍ®¸âŠ—_~#Š;ÞwÞy';;½½úê«?ùä“k®¹†yÿÆ¡ðòåËÁºgŸ}–+uݺuEEE`ïå—_NÛÇ¥K—â‹wýùÏFëÌ’v 80.0Þ=z ðwÜ!J\ÔŒK7nÄ*ÅаjÁ>(˜;tcË–-M›6Å1À+ã‡ãÁ¸˜eÓœŸ ÍÊÆë衲Ó[Ƕ›(vÌÁ}^ûù(=p VÚõêÕÛW¼/îÊ·VrZj•Ï«ûšÏbC† 2tø”žQ!K“-nuÆ;(çñ ) âq×/w•Ø¿Žƒÿ´)TTÿ©PðßÇ*h»™¸x#r³#Táó{RR}úf)[ 6dÈ`š÷ßΜ9õë×ÇíwÞy'Ð!d<lÀ‚ï½÷Þ¾}û€EºtéÒ­[7 ‡§Ÿ~ WŠ®¿þzHzÌÊøá‡JÓD¢¯Ù„ÛÑb÷îÝ/¹ä\%`_N¸µ=hР%K–åpÂþö·¿a(OuP0Ћ/¾¸hÑ"¶…Qüå/Q‘­í›o¾5£o24ªÃy f Ïë®»ýaP@ ŸŽ5åååè?»yófTtÕ·o_`GØ#? khZÇe+Õ®½öÚµk×þéOzã7x\BC7Þx# 'À+øI :&ëšKºHÓ³N:ô¤ ÈÆ¸dö¸sÍ {«V­B… b+[GGãââb DÙŽ#€žøeÔŒe€Ç†jKb»¸í&Ú¡¶£½4}~•ŠuŠçÓTÔg+'Y.q‡ÂÈ*|•²skÀjÈ!C† %¡êÆd`È5HÛ† â—Ñxþ˜Åž0zûí·YÐ[¯^½ð+Û ¸«sçÎ@Ä=Ô»^ÄlܸÈï…^P¶» ¸ÆFÆUÆ4Ð…[‡T¹IJ: à¿¥K—<µhѰ†AtRôOL+Œ“À…SH0”••Õ¦M\%~â-øbO˜äƒŸ¨KMÓˆŠ.]#E.‘cä*y»ÞÊUW]…QÎ$Ñc†ÜþæÚÂ-¸ à{à 7±¸ Ý›7ožžO…[«„ï*báGŒËþ£«è‘±8&³uÌNÒ—…fLHÍ¡Ñ]ãª`–jœAåhãf~?±üJÔn,ÑSÿºÃŽàcŠ+¤Â.§; 8<8™á :XÔåqW8hÈ!C†Ž”ªwr'î€ù~øáüâgˆMÜÁ£HÕ@’„ÇÜ¥"@G"3hº½pá–-[îÞ½p p A° ` V>êAm¢“­F1zc‹tÈàU¥yò§J6zò Jc eiQ°Ã, ŒÃÀÑgÉBob²|hРÑ/éÜPÃ>æf€FÁC*âFCDØ»wïN:¡ pˆÛo¹åÆçc‡™¯î½³• éÆ£9\ˆÂ’"ü –ðàQ ‚%6$¡êÙ(`%Ý€ØIjRÑ¥³Î: #zÿý÷Ñ4£¢{(À(Œ7Ýt“ðAÇü¨ BW€rÜvã,BÛ Э°ßãp…U¸†Çíõ]vô¤}Q _1Ón—ÓWå5pÐ!C† U7î •AÀ|ÙÙÙtv¤g1γ¸ƒG—•@-  Øã‹É#QÇà’˜j¡ó7Þx#¸‰ªp€3o½õj8RiÞ¼ùÆ øp#8EW¥!*‰Þ@½iÓ&àê]é3 Ž1 s ÐŒ·Ç «¸؈J AGP«lœGM/C´à.@F'ÖÁ¨q•¾â–½Ú¾}Âiˆ,Bm¨™A¤•O™Æ£M›6YYYÌ"S@8‰3tèPT‚ó¨w]o“ÞaÂ_ºKËÔp :wî V÷ïßÖ¬Y¯¾úêêÕ«% wíÑgÀ5nˆž!‰z•(d›ã†~NN¸WPPÀø;Ô¤âöÛn» ýáô1¥FŸ{î9eÃh œ¤æÏc]F¯µw2‚¦ÓTþeÁÁš)î*ŸÅg{‹ØŽòx0S·u&ÍÀAC† 2ôPuãÒG–ê$lÎзòØÄ<ºÄžPrÓø C~£¢·]~ùå÷Üsϵ×^«"Àèù矿ùæ›Á ~Ù‡¥%ÿ¤¡Þ¨Q£€ oØ•+WvíÚ•:$ 3jÚð'xàÆ·ß~ûŠ+®_]ÚÉ¡WT¡—à ñeæf%5‹¥¥¥8Žaåºnïõ×_¿õÖ[eRˆ{¨¨“!P-JuÕ¨\*b!H„3ô¡ÑçwáÂ…wÞy'û”Œþ ÒqŸX^`5|â{!fŽDä?Ýœ‘ô!±`‘Ǹ„z$*5gDÀ4Ñ—™4§ìÑh”ŠOf7A'‰ø™w˜L 7P’šZî/‹ïˆt@ÖxŽ«IÚ¢ 5)`9G9ÊŸª<àóÃ!ÍØÕZ«*¶ƒf8hÈ!C†þªnÜAZç‹-÷ÇpçYÜÁ£Kö·ÝvÛu×]wË-·ÞË/¿L¡~Í5×,[¶ ²¾øâ‹Ù[²1cÆœuÖY@@!………@Wsçέ[·.††ã;î¸8¯sçΨ€¨îª«®R6\6lX§Np/0ÍÒ¥Kß}÷]L€ìŸhâÆ:6íØ±cÕªU¯½öš²áËòåËq/ú€… [±bzöÙg½T0vŸ>}.¹äüªHì´Õ»wo@XÀG çÃ?œ={6jF¯ÐIôW_yå•óÎ;…á-ZD¿f´‹ ’ëÛ·ï’%K옺té")U0@ôýŠÅU vÞ¼y;wîlÕª=ŒÐt ;;ûÜsÏÅ™?~“&MØ1nÍ£ÛC† ùÃþ AÉe{«£\R[ÉXÙøÅÊò›>}ºD…” È LÊ¿þõ¯™3gâ*B£D¢±IG” Ü`»$në3Ì5ýc°BÀ«›nº‰©»?þøã)S¦4lØPvºã¶·EuÐ|0TØ_ÃáÁ£ârºCaK K8h+-G)žñ¸Ü2dÈ¡#¦êƤÙÐÀ1³’àü1Ž;xTˆšû§:tøòË/x¢_¿~*ÕuL8 ¡þæ›oêÊW_}5w?Q˜Å%/»ì2š‘T¡~À&`ˆí à*Uw^xaÓ¦MÁtà0Ꜹ) ˜„1`ÀÀmà'`í & 9T¾wïÞÁƒ+[•õþûïãXA—£âKS‡j%[š²5pûÛßpÝÔ»ýöÛqŒAá-nÙ²­Ù`àøÍ¡·[àP íó˜P޹çÌ™Cq[÷îÝ¥òÐ%Œ”œd œœœœöíÛÓkˆ CRhP â*ÖŒ˜r¹\*ú&5ׄrnn.:¹F øÐ(îb$qǪe,†¢¤¸ì0œ«¿‰óœŸŸÑï->òÈ#t!¢'ŠŠlµÇ¶‡èK‚§Ãíð‚°% 2R=å~¿rÙ:CÚ~óîr:«|2dÈ¡#¤êÆ„° jÙ²%@Å)§œ‚_ã ÎÓ¸ƒG(§2€fzôèqà 7ð<Aï .£ì!LÛLà% Ö •éØ+!NXƒHsó7RxPrW|x•!”­ ’(Í‚ð}P˜AOÄtOXgØŽe­ìÚëÙ³'1«žàÝ`6fû`ýt©V¼E¸&º.‰ H>èÁ´q†®Ð€Â(€óÒû,¹ ÎP-µe„θŠKŒ’ªîºë®o¼̤û0j^±bÅ«¯¾Êà5Ö8ÏV^xá…¥K—¾ýöÛQÁ¢ÉÏ—^zé•W^AÎUßz¶_N®lGñ<¬eS‘ŒÆµ²h|›ÊHÂbÜŽÞÆm7þdÊE<©ª*NsXáÔ3RSÊý¾€›ÖmCŸ =!`D—ÛSåõ8hÈ!C†ŽŒªw‚’bÀ†~–8#I+ŽeÜÁÿœˆW(P!×ûöíûüóÏÅìzZ3‰?®}ôÑG`.­ÁÊY³f¸è™âªKœ,z³¢9 ¿áÇ/Z´äFW,õŽÑtò¨Œ÷ˆ ÝÀ:E6lذåË—c¥~õÕWüòèÖ­ÛâÅ‹¯¿þzâr ÊBSœ={6Ϩ>\NŸ>½Q£F´eàÆ$1_IQ|NÄ·Œ=_KÈFiÙÿ$ÎÁD/iéª"¨R\ÞUìõ6Hµö¸½ßüeóKmí$rM@Á2¿íTT©®;ïê>uÚ |fÈœŠßŒ!C† 2tHªnÜA ˆìììÓN;mýúõgŸ}6~qŒ38<ÄÔ #ÏÏÏG·®¢…ú<À@ÊlÔ饗¶lÙ’9¡ÑÖªU«ÀzQøU‹$² ý}ØsQËåää !1‘÷ Q%s•’$ÐÚêÂzÀ,€-8¾ä’KpPPPP·n],P¬0Ú®R Ȉ†›6m:õÔSU>3‹Þ¡gBE]bŠËçD$ªVºMÌÍݲQ~0±¡•CG—”Ôª²SjãZÖî¼-2÷ÛJÃÚJÕS*#`ï»üG¸¨p_“&M5ÅAGØhÈ!C† ’ªw°¬¬ì„Nظq#0ß¶mÛð‹cœaÎ…_}ÜAe#'t†éV¡(³VýºÚò›hFß½¸¯ýîê)± õ$‡²$“a0]ñµIzL€l§ 6Ã%ò|¬+.³ô‡ÑÔROŽœˆÏ˜ßÒÒRð–hål½%âs’[ð]Eÿ¬(ÕÀAÖPåõ‡îªÇ×Þ’œÊÍêfúª¼©©5*Á<å «`]¿¿™ßqnzƒ”°ò:–+‰rº”STàÀG0.C† 2ô¤êÆÚ ìØ±ãŽ;233ñ‹cœÁùã!î ˜µUÐqá(öõKÊÚê‰BŽp>°4<²Mj1ï“Û >häÇP|ŒÌÌ(ÙQj­$¡‡7Q‚6Ó…>,¬C+*áPž&®qù,^ÆzvÅ#èd">Ç-,aqkg˜j…fTŠ«Š7*9+p×øØÚJ‡Ñ7.#žÈ%›Úùùùt¯Ñ=u0ô_0Y,Ÿ•íë£×)¾/Õêg">'"=ètÈ&Ù©—ýzVb '•Ú¥Ô”/?¨ª—ž—“ߺõ‰ee¹•*2ÓU8ø»R»Jç°³/o„%jç0ÎPwdP¨ÓzÈ^2dÈ!C¤êÆlԨі-[:vìÈœøÅ1Îàüñw0h7UKKKëÔ©ƒñCr-…ÙòåËï¸ãÓÃ@•SQ'š*4Kq3˜æ(¸ç+€R0G'²S¸*N¸Qå&iZÔi F­ìH.Xd¼JPKÞ(Çtîõ0³öÓ”CEŒDz çÑ!C† ýº¨ºq‹ŠŠÚ¶mûÝwßµiÓ&//¿8Æœ?âê„áåææžyæ™G±Îzõêmذ΀QEøšaêŽLö€_{íµz>Áøìeüdî'¾ýöÛ]tmàÆb”_’€œð+j-ôý¡ç¯î[S^^NZ­¬¬,Å&lРA\>K"Cnï&§ä|Ž¥þóŸgu–pÝ`knd¿öÚkþ󟉭¨–5k¨Te5ÔÄo¿Ü(ËÎÎkܤiÈéªÕªé6uÀ­B-øÚä–O¼èÊÚ+±qý)/s;]âŠÅCC† 2d(9U7î dÖ®]»N;í´Í›7âÇ8ƒóÇCÜAñºPÀ¨úõë÷É'ŸE[ºóÏ?íÚµê§&z¥¥¥àÌ_ÿúWQ2UTT€GàÕô=iÒ¤W_}ÇQ;­ §¢ïZb:{õêÕ¿ÿ«¯¾ZýtCóX‘ìçr hPiàx†i÷DJ ]rÉ%qùŒo”«®ºJbÓH¤Ã£Èç¸å/¾øâ‰'^pÁ Ö¨£F áúë¯>|x§N:”øÂ—#×¥öV­Ž–ô¾ûÄÛn?û‹w–•Ôs§8ÃÊ}-w—̼è¯U*ìQ!×ÁÌÅ¡Pˆ¾ÒŒ¥´qC† 2d( U7î Ä pÝÆe¿8ÆæÈýÕÇÔ‰AàˆÀRŒØ¬"YÑØgA*b–GWfÁ½€Õ"8ÃqÐt  KNNnB?’…Û™YàP9µAÄ@ì zUTT„T(é:€ èrK†Ó›Änð<5‚¼åp\Xt#ú,ÑR…ðOá€~K"cÿûùŒ3øúÑ£êŽÏè61™ÄÁIÄg* |(Û"; uaªêýíÛ¹éî–Áz/_Ë_ß|½*ÝSâ Á4G¨u~éüŽ—Ö*W åS¡T˳Ø!C† :BJ¢„ü‚¼ƒü‚tÆÀ1D?„fܸƒ8OË(>ùä“QÃêÕ«QïÌvÊ$ˆç?üpáÂ…¯¿þº\°FAç‰Q^}õUˆðK/½”YkW¬Xqæ™gžtÒI‹-úÃþÍôÄr»š¾á†ćCÙJT …q˜ïÚµ«[·n²1Šƒo¾ùXLC‹ï¼óÎUW]…?Q} Š V®\9cÆŒ/¿üRòIú駘?ÀšN:áÏuëÖa^QþŠ+®`.>´Ø½{w\½óÎ;é„q8û§Å?þ\Eí1f¸ 5rÊ)(ðÃ?a¼ S‰¶ªš5kþÒ9æWÁg´Ž†ü6aUƒ^x!ˆ´` œ¿üå/¢žLÎç믿¾OŸ>˜ëó£*àTîÂ4ÕgËû% j×É ¼>oi­SNùßÿäËpùÜa—;xB~ÙÂÓÿT»ByÓ-8XC9±^×!C† ýš)¤X¤Žfûöíâ¹¹¹›ûqãâ<$o~~>D-P÷š5kPɯO;Hý º!‘0â1Î…lذ}†,\À ÀªŽ.»ì²µk×Ο?ÿý÷ßgœÆÑ£G_rÉ%;vìhÓ¦ \pÁ¨5vˆ· ÒðáÃwîÜ Xݵk×ï¾ûíM/_¾¨ìC¶lÙ2vìXn‰èL›6 `ˆÝcˆDeÇ´CQ•¾=zÞyç·°£Wdh`覛nZµj•„)ÎËËÃŒà—Ú©ä6‹’ ¸ ýÁ]èí¦M›Ð1*SÿùϢعçžK䄞zê©ÿû¿ÿ›™™‰¥†n`–“»8ü*øŒþpt&€ z ð­lE#:YXXˆ§åÿøº ܉'$.Ÿ¹´^gsdqºTPýŸ[Üò¡7³QÕÿæ{JÃï<úØõÓ§”ÔMñ¹ƒé*Ø¢°lÚþT»JyÓTÀÖ8hÈ!C†Ž˜ÁA€ H(jÊw b÷îÝ5ŠwçqõôÓO‡¨=çœsPä5܇~ø+ƒƒÊÞe´ñåf+Ý6Á²T›ø§Š„»Œ¸øâ‹_ýuZn1ûXaÂD3r Kb¼¸š““Cô Ög°3¨õ0h®¾új°î7ÞÄÄ ÅÌ>s¶ÀF¬<õÔS矾²½|ðÁuëÖá–§DKO'DÃ/m“ð_6|iÀ.¡óÉ%ö€yAt8¨$»ÆÄ²ÿý|–¥K%ßÙgŸUþ׿þ•ºF,ú‘#GâI`*ãò`Öfö™æ6£Õ.‡õÇ¥õjUn/þc›ÓŸ8÷Ò~o½±+#èuë„‚Í Ë&þñOµ½ª*Õr%IUÊÀAC† 2tÄt8q¿ÿþûvíÚá·E‹‡Œ;Ø¡CH4Èô/¾ø5üú<‹i¸Ö¸qã~ø¬_¿>1 8Õ¬Y3cPt›g¸…#*--EùZµjáÆ¢¢"2¸¿ô?ÂC(F‡_F·©[·® ýøãÁY !À\ºì²ËÄÊ­¼¼œº@üÉ vJóÀ¥QÝ•W^ùÀî 6ì믿V?u°@Ç€ë÷îÝËЃQéÔâ:¹yófÜ„ÄÀ~¨qy0¹(@å8€VˆÕhªˆ±Hh˜Dô«à3š#Ž$«±fðl çÔùµmÛvË–-yyyˆ4—Ïœˆââb ó”SNÁUTU»^½€RÙJ=¸éâôW‰:­Aë§ÎþóÈwßþ1£Êë7ò›•=táŸjú•×c4pÐ!C† ý'”$î ä,1óxAÜÁwß}8áWf;H'Sˆç6mÚìÞ½›Pƒ˜†Ù„ñ'ŠíܹøcãÆž0"FïãŸ(Œzð 6AØÓ]€Z+z0@ðIà.æ‹#7d#•øƒµÅ8[Zµjõã?Κ5«S§NÊ1¨œdગ¨âÚ¾}{ëÖ­qõóÏ?衇PræÌ™˜§&MšèyJd.$t_’@3ÜèD‡•0„œœ (@(h†t^³f²iQÖÆxê©§;aD«W¯¦o¢Íâ_ ŸÿŸ½ï€—¢ºþ¿ÓËîlß×H“¦b/±Wl)Æ5±DE‚ˆ½ÑkŒ%&5j¬¨  Ô'M±+Hçõ÷ömßÙé3ÿ3;°¢¢?“üüEýÏùð9Ì»;s˹÷žó=·î(.ð;v„ ‡rÈŠ+N?ýt@{® àC÷Ço’³ÛÀ å–-[ÀýPM«`Xy†¼eÝ’4CqHkOÆ^~¡=Œi¤׬ڴtÝA‡ø d”a S¾×Ø#<òÈ#þ=ú&8– ¬¹;«æ®Ü´iXäT*µÓs!Ü;vÏ£ bø‘ÝJR!O¸;CÝÜÂ3ˆ°…;J´dÉ’Ã;Ì- wß À#wXJîaÊ sŠA<YàewË]u/þ€øÝûÙ>ýôSwzâY¾|ù¡‡êæÊpîÎ 7é ®J§Ó‰» 0PÒ*¿í¶Û  Ý£>zêÔ©ûì³Ä™äᎽ¹øž!9wwÈ7­ó•aÅÊ–ˆJx.—îî©ìËùÊΉo¿ïG!gˆÜ½YΕ‡*ädÈ!àHF„o+ûfÜMÄ_—³;íî;®Lp›‹mÔ‹¡©Zp0·µoáÄ›Ïøó™0¥fÔ°ª3Òû4‘M8GÌôÈ#<òè? oÙJâ.Üc fËÅyîþâž;èžpè°­­mÔ¨Q¨¼vÀ¢E‹~dpÐ;vìW\@Ä=òÖ Ã3Ï<x‚ã¸|pöìÙo½õÖ‘G 2Z³fÍ^{íõá‡àyþ½÷ÞÛ{ï½?øà÷Î>À4 èÆÆÆ1cÆ|ôÑG¢(z8öØcÝÁHˆß}÷}ä‘G ¾…„Æ·zõj7?ôÛo¿ ¢Ìd2ð2¼ðÇ?þ°‹»wÕÅ%.Ò:ðÀïºë.¯ 5àWòþ *ÈdríÚµ{î¹'drôèÑîù)ðΪU«f̘ñÄO¸ØÅÝ÷ðM© ªî¡ÊTÁv€ îä,”’s'I+'?»ëçÐÿt[ÆBÎ 1deؽßå˜cŽ™6mÚ%—\ÙCÛ›´»»ù›ä쾑/^¼øÞ{ï}ýõ×k²)JGh+BS×/íÄu^£s½éwî¸÷¤»ï.1˜‰>„ªÓÒ­{3Vî+TùÜA<òÈ#<ú÷è[n%q±CÖÝÝížUçf¼Ós!Ü-,ç^@•Ïëý‘ÁA÷>1wØÆŽª,A³ížx¯¼òʉ'ž8€K0Ì‘H$|>”¤pÐA¹§Ó-X°>(h â@¯ †W_}¸;õ ÉqÄsoo/ ì'Ÿ|Òý‚O*ߢr•¸q~ÓV ^>Ÿ¯Ü>¾¡¡¢š3gN6›ýío h#—Ë4qÇ¢™E"øÄs·Ùþ×o³øáËbsçÍݱØÊØ'¤ ¬Ü4èN|£ò¼ðNå\ƒî3Ô¼Ià mFhòº…ý,²Ø—NúÕÏ^|žôsZ 07Q(Ø›¹{£bš³£˜Ä·Cí‘Gyä‘Gÿ}t`ªà€îm`=Á’677oذaèСÀáBì™®­­]³f͆ï£>+<ãŒ3æÎ ï¬[·úÀ~ûíPoåÊ•ðP¹¡D-€ïo—s¥™¥Óiñ8†3²åÎyý±úý÷üëÅWž~óÍKz6î¶÷Þœb[F†Tã%ãΡG4XÛG½±A<òÈ#þú–Å€ÍÀt‚½« öŒ]*•Ï#FŒèì쌞7nÜ8lذիW0 ­­mÈ!`Á[[[¿üòË?&8XA€!s@ž+ƒI.öºKè[ïùý ˜ØñO÷º³¯oàÝql§Q};¬Y¦ÊŸ»$,Š¢{+š›„[ÇP…%EÛ7ÉVmù/Ò_Î-È­½½ýÜsÏ¡­]»väÈ‘dçÌ™ãbÁJ$n)¾IÎnëîî èf©$Ê<ÇmQ•§ÓŸ¯ØüyÄâ|‘H!êSM×–me9£Ú"nut³éœPèl>!zä‘GyôoÓ·ì,›åŽÑÎÛ{ï½—/_˜ÌôàÁƒ?ùä“ÚÚÚb±†ìÓO?4hPoo/Aà{챇¢(3V­Z€ ¾ý1ÁAT–ˆ{Y­;;î¢wÊ v%o•™J÷fÈ¿ûf&“q¯µp_ÛqÔ •‹éY¹› X–…­2¹ Ýw¨¹ ïøm…¾¬À‡¨|6Ú~( pˆ¶2 ^É9Í]²æ–H+]¦ÿ-Iþôc‘óŽ¿VvƸ躺º cìˆ_+t§rv›™³‰Çë}„RÐf%ÿR×gZgEƒá}YäÜ•WE²8Š< Xè×uÃk´ò¸ ;܃ƒyä‘Gý»ô-w»KæÜµUmmm---î!~øá¡‡úî»ïŽ90ßá‡!€ᵺººÍ›7777ƒ¥~õÕWgÏžý#ƒƒîŠ~Q¹£8îR¶ŠE«ÅûÊÞXwl¹{軟´rˆ±ûîÔ­{`¥°îj?÷6Ž tÛñ[xÞ1ÎR%“n~@ìMMM˜â ÷Ê57Ÿ•ÉÖ ^¬À¯ÿý(䌶OdŒSU’«œV]Áˆî ¬»£Ù=J}MÎnÓªU½íî@v&RHÔ¯!•a kåÄÐg$çd{ÂxÛIÉÉ Ž{pÐ#<òÈ£›¾ º È½WbÅŠpÀòåËwÝu×­[·Ž3fñâÅtÐ{ï½á­­­{ì± BwÀÀuÔQ¨|#€÷ßÿG+äéÊ)Á•ƒè*o!Œ7¼ãn¨Ü·Qî…f¨lûáµÊ6Õ§>ýÀŸînS÷ŒÃÊ^TH¾ÚñÛãü&ªÜç"ºypï¯ûŠxw<ðëYý?¦‘œ¿B;kw±›T^‰Ùø&9»V¡C6’rE",d¡6‚ÒÚŠ“ey¡(~Ó¯–e„‚™íí-ÍM .bŠ (I*êºé÷ó¦i›¦nÛ˜ÀùlÙ¢ ê2”´"8(o± ;Û{êëk—-[†Ùú´H¼ ¡A ƒ- Ã2$C;#!ÞB(<òÈ#<òÈ£ÿ*¾ úC!m]í -MK8pÇI8(¾¾¾þê긢h¹|Þ’vGUUÆq´pÉR@x§M¹ëÛ’¨®¯Zµl Ë=vs'‹¶}²Øƒ¶ )gQëÞ¼¡®©qÅÊì¨=v3mäL6#{Û½®†,8H`,Ë’ÎUø÷¿nÒ#<òÈ#<òÈ#TÈçwîLÛò|.›õù|ÝÝÝ-Ì~ùåP(T¹vGÂmL¿?ðúœ¹÷ßw_ª?‰XîýÖV„co.\0à`zÝç‘úú÷âÄn{îi ÌÆpÝ4á wΜA–áÌC—¢vî`u.\ðÈ#<òÈ#<òè{'­XÜi¸(Š‘ª*U’˜`0ÝÝ­«[0wnKKKooï×_¶TGó‚ÿÍ7æÝ:õV¥PB ¹tÞüp8<÷7¦Ü6“Ömàëjß_¶Ü°Q{íca¸“†eâĶ;amËÂl‹Ê2Î\Û#þ̧{Üã÷¸Ç=îqÿ”¹œ+Y˜³—ã+ÜÇñ©L:‹6ÓD5•ͬ_ûyA>ÿ×ß71\Å1YQÖ®Ysó ×Ù¦‚,´ré Š"ßœ?òô[±Â¦­Bmý»o/Ó½×Þ&NÙcáH·:ëmR"š@€)Òƒ‚÷¸Ç=îq{ÜãÿG<ŸÛÉžbà8B™\n@sÈBèo¾°úý÷ Jr‰Àð¯¿oˆxEWÒ‰þ7Ÿ}FÒŠB­‹Vª’øÞ»ïL™:ëÛÚUÝP¿lù*ÅBCGï¦Èdh› ‰œMĶ“ü£çáå¨=òÈ#<òÈ#<ú¾IQvŽN3PÔ‡’Etúég¾ö3¿¤(BQ´¯oI11K3D¡:¦‰RãæÍžÝ |²úÒ²Þzãuç’º5=M µËV,jzã a9EÕ0ÊÀq‚áíIÄ1¬Œ1mÅ2œÕƒßtŽÇ=îq{Üã÷¸Çÿ—8Žß^(æuͨ«vu&cñ(IàùB‘e¸¯¿oã¦lH±H §­ÍOQ»64÷·µúzi ­Z²hÆä)ØG—}øYº¤›véÈæJªe8©P†‹ú0Œ²1ÜF:$ha„3Y¡ñgyP³ŒX·ýÊobÖ¿„ÝÌï Û_ù ßá5 }‘­sè¼¾Ã'fù'ÂÂð/åÓŒk»[²px 'àWw‡öNrhíô'ËÍÔ¶Šfy5Ÿò~Í4J¥Nh$¡Hš2uôôÎöŽÁw)æ <Ï#ËÄ(J·eˆ]ÈŒ,Ë.á¹’WÛ¶UU…Š¢Ü(†Vt ºuy§´eüIJ¬êŒ–Z¸ï¨z°í–ÏvLIY¿”- X¾`пµ­-ššŠl3‰ä2iDaù|¡¢b:ß­I'Sáh¨/ÝË9‹N”JJ€ 6muHΉÏQ¶Ž­(%ŸÏ“UÇ Ë‚h½½IŠ¥ ŸnØHÖMÞ`H”J%}~ÀqE,TÅÃFds9P–\*ÉùøÚ†xWg¿RY’@*ÆrÁœ¤>.¥Jf±$V«ý)%Ÿ¯olhïíækªdK7Ê¥§MŒ°pÒB˜«ñξ­]m\Pðý²Z‚ cŽ,RRŸ_•å€?h*‰ùLJ;ÌÁn•M/ }ƒâø¦G–4+ ©Å,aiMUÑî®6–"UÔd½y—Á]}IŠæ Á€ð d³,ŸÉ9wu‹ù‚eê<dž¦Ê%–fü~¿(Šðy¹¤D£qöréa¨ñh8W¡ÅR -3_áe˲ e:Gpâx( lÙ²¥©¡ÎyÍìN%l†ØÔ˜ÞÜ…ú¥<Á1 I¨¤YAh›H§ªCqž¤eEúþäét=Ë‚<ʪŽÓ AP~?×ÓÙ…йtccýÆ ë8¿à FdÍFã`W] p\±$©ð I@ãq%Ó©€‹yhÆ‚—¥Ç1A¿ÐŸH1”N“%C„`ª§§Úa0,›ÍÇêªDÛL2áp´”ËÕbùtŠóqù’èF’éL0ƒfhj‰[¶®F¾¾Þîºúúή¾ê††¾d2@ÓÎzä2°Æ·ÁA„Â&9 dUOÊü,cªJȰ LÕA1i4Ë1 w%zkjëAÖÕÕ+2¤Ea&bHƶ1]WsÅL¼:–ÏçÃáp¡PPt]—$©¶¶¶¯¯ê2 š§ººº½³ÛÄéaê֬魊GƒÝד„—£á 4ж¹\N×M–ç¡Ï€cL#Ë.åMCÃh”b¢h,œLf®gé±hZ£UdZ4T±]ÊôMÓ-<@«#ÞN• ò-2ˆ*¾5l»P,24òû²™~žÀŸkšŒÖh*é–eh¤©Eƒ~ÈsWOwsÓYSYžkïꩆ£±Tb8–¤ø,ÄÚÕ#¿H׃¶"°’ª@ 9º½½³ª*YËå28á(pè’===PkPȶT*‚þ‡†y²4 %‚g¿/@QŒX(R. çóq\&—Ã("u'“4ÏYVC eqÐKÐ_ÐÎìÈ J Ïî ®]à2Ùµy@c´gËÆÃŒD«6mmkhlN$ûkkê è¿©T z4Ô{"‘€t„@@E‡FBA>-Û„ÈUE FÂ’$«šaÚ}¤X„×DÉД¯¤ U¿Bœð'T¥s"[ùWø©¿¿ÿ_ª_ùîå¥Y6+}ÂwMê—Áý?N×+ïO£¼ÐºY–“Å@ªŸÃ©R~ùk¯œ{ôQõ~nÞì§O½Û¼yÍÀÃZW|Zà‚ö°–Úr¦ŒY* 0¼™C@_`¬ªkE†U9B°HÕdÓ,Y0Á¶ÃlŽãoM;ñ¤;—,‰ì†[GðÁÇ›ƒÕ5+ œ²l  pxÖtð%Iá¦asojj‚ÆPÄ’,2¤¦®Jµ”T±f†fÀ$@¯±M¤—ô€/®dtf9]Äp ~K>? O}c=—5k6 2jZH_oï.»ì:móæMCI¥ûkâUŸ~ú)ô@ŠÖ­¨½ë®»æ‹bQ†„üfI•À–d?Ïà¨ÙVR,޳‡ š¤³é|8.䊆“4X6Ü„*à˜BAT }Óé‰_² œ¦)ÐbõRn¯áu«W¾ ÝÖÙ5©[’¢Ö7ܼµ­©yÀúõ°_lª£ Å@(þ4ëãséŒ_ØÊôôt ÔÒ—HCKK$SÅÔ7T©:ÊæŸŸ-JtН¥+ËxžàjB®Ê¦–„—J¶«ÁeÒC|*›­õ>Ê>åAY(ªª)€C!+ÝÝÝ£F ûégýnâ–¤vÐ’ÏfãµupäM`n&“®®®φ¡C?µ,S¥H$œÉdYŸFà@ht:Çá[ËžTûeS¸mŠª2[ƒî °¦f߯u‰tªð€&x³˜Ë’o ãJù’¥Ú–fÒN¥ú«jcšYò…üàSr¬À±CÇLÔd%à‹bVS €ƒ¡PÈrЯépz>Ÿ…Š¢drY0ŠJI® Vð%5•îí:dP¡(Q,ŠtS&ÙOs¼Ipþ /ÑÓׄK™G](Þtÿãÿ”mPçÂÖL1¨.Îuu„?~*9þŸOל—( Y$ËóÇVy~Y³ œ£r§Aà˜‡s™”Ttš¼:WUƒÂÈöönžóC[·œ2”gmÊã‚•)Uì‡æb4ןì5¸jÓ§kgÝt J&%"œ?뾚Æ'd EpE "šÁ!‘b±èÆÏ3ºªèš.Á‡¼÷ÏGÿêìïêtá¬Y#wÛ}Ë–-€{Ú7ÿuÖí(F6¡úFèpãoŸáã @ÀgŸ}JSD}mu_O/àò­[:÷Üßµí›} ­´'xš0jפ˜û·rùªÚ@,YÌGF –L3ÎLEÿ^åCZ¶ G·\xɬ^"Y,´"Љž6Ú+·À&S#Fï¹oº ÔT³¬>X½šØçÏå ÍíííÃGL§³ hÉŽŠÑG4Rªã5[º Jë%6ÆÔWŒÑ›šyÚoË¢¦ú+fNkÚâ(©l^°É˜ |¾ñ3UÓ©ï¶ç>[;»‚ÇQÖ¯YsÏ3Q!‡ÚÚþ´|Åp}™bN,ÂA¨ghÏÐêË™dwGÁÅuf:½TÑꢑBúº+®@tí†{îvK2d¼º ðÍrМ¡‘pÌïäÒÙ€òû±¾>‰fðd¦¿¦¦· ÁüCã§i²§§¯¾¾Ô±í ±ð«®›€2ó¢ ºÎÏû}¾¦?‹²h ñxxýú͵ ÐU$Y‘Uu·Ýâg8ExÔÑv˯VÕ7ë.kÈ!cèxˆ½ôâ‹/½äb¨‚XM}IVqš  ÅÉå³ÕU5y誜ô'ËpŠ*Ûò €×E†¥Å¢T[WŽ(]– Êä%¹¦¡.•Ê×Uß]¹º®:†tYóšRÚwÿéÅTDd“É*éï™yÉ%Ô®ÃõÎN$øÏ?¡º¶Æfrùªšê\>Uš½³ÞÜ‹Eð½ùÕÖVƒ¦TÙ.œ“oÁEO¥R ^ÐÆ²XLwõè7u<ˆºº:èwÇ Y¿~}_âá;gâÁ µaª¯Gª|íí·û#¾¦6WÈßzôq(uTu¡ˆjžX¯zðAÖ*ìM75ÔKy <ËéÞ&H  gÒY–c4UÆ"ðŒáÈÇûÓ™T^ÒLœ£ý¼ÐŸJÔV×ö§úá™bHUgU3u‹÷s8ÄE MÑA5ƒÇ¦ë:øjýý©p4êâ—$‰¤è/›ÂÊ¢ší—±Tà`R™JöÙ¥QWÔ¾žžÆº*0s=É>:,tõö:"›Éã¸3°¸aËæõ MTUÅ@¥A_´hu}&'Š´ ³Ì-µù¼’HôBHcc]ggO©$ÕVW“å‘?P IÐ/ŠT"4Î…ªã§Ëª"öeJ|0 ðQSei6N÷*$à U‘íïf)éšsÏA=ù{^™Ÿ“Íp}CÊ”}A¿\ÈpºÚ¿nÃ]—^ŽHQøï¾óyOÁ‡œu–³´‘4·­tqà m*šâ øXs9LW[êëò™,")Q‚æ ^18 ¾`(†D¡ 9k@‘µ}©ÿÖ”u‹¡L“&=òÁÅoÚº³fÀ'Ï9àà›_~ÅŒY6AÐT¢·»¡®¶»·/VÝ ƒéE˜¡)–©…B6“šrÉÅ·>òÔT,Ótãʳκæžû† iéìê½ù„cï˜ÿFIU|þ†“)¦ÿú”{Þ^©oÞ²©:¿áŠËQO´P-°x¤zÜM7Öxí¹ç¢õ[Íüé­×Ó¥"tÚÆž„  <óŧ‹ªšØÒ5rØÐ\Vúþ$JZf”e.>à€?µ¶²~ߺõ[ÁÌ͘:}ú1j¨F$B õö!’½mî¼T^  ,¤ÉSÎÿŠÆ¡8M›öð•¯{üq0œápxËæMà O>õ׈¥Q88á¦[ïºhÜÔ—^ЬiK$ÁÄúp¢Þ½øè£sÁúöÍñAÒ¥|.W1l úxõ;Þ?I"âWΜ5ë¬sîY¹¢$J}]í#v²uãºæÆúKÆž0í¹s’L±B *•+”ØÑöÉb·(†xJa–Z”B0}:Jö¢|ñ4øÍ·ÎšŽÕdвhØ#†×fÛ3Î9ëþ'žhëhèŒÛ¥o>ý´û-))r2—´Ë d.ëˆEÑhŽ÷ ·F7A•ð9–Qðð$ëK5·4š†] ÕÕÑw–¯úÛ ·ðõ %p«(jæƒNúù‰wÏ™[]ÿÍ^{=0>Ô—àã-šN_}Ê)Y¹¢-Ÿ%{Ë.¿úæ›GœIåº{»¢Uñ«Æ{ãœW¡AQÙtŽ£8[//%¥HÕúª]°ØN3T{_4˲A!¤ˆÙ›Ï=™ *)ˆã‘j ¿õgnyuŽnZàt÷ö´´4š•ͦmÓÌär`Ô°­X8"JCSÁX²ÝÝÝ‚šíèŠÄâù¢4rTSWŸžJeâñ(‰YºþÕtÅR‘Ä)°_`Ë ‡ÃÒ!êÎ2ìtö»Ö¯¢É Å~Ý~Sy%©Há”ah>Ÿ€ã(“É™&Øß;íjРæL¦¸7.wÉÿÇézåýi”0«õ—T•ò“Å\oœÅßzö‰?œ|¯”–/œçÀÁ­ë>h:²õí÷KBLn°zs§Ÿé’I˜¶ˆ5ì×µšä“Ùœò#’ euVü°†³¦Å`ºXÓÜýžîx4zå™gŽ›2%~z$ž)æ!ƒ*øß$S” á`8<N3HšqC Ê!)Cs & ŽçqAŸ’°¶O £//¬.¯›Þ¶Qc‡6aY¸eæ3éÚª¨¦×¯[c(rm<†é&˜g‚õ…kj»úûM˳©°à+eÓCw¸~íçÕõMIQf‚ÑH}c¼í?è)E¦  9gáÏr€°uóf(8@U—êOEýÌÕ‡À‹° Y–³ù”³/xô½ò¢’H¦(>ûä“H,Æ¢P:¨ @ÿðr0àÏç²×wì] èìì„ætͱÇÎZ²ÄYŸ!Š·ž÷›YÏ='kZ$÷ÆÇ Žñê{î¡8Á°Vº¦»ªÚ§ô“Ù$…Q’* œ`6®P,~øÁǸÿgŸ}ö§k¯½ïïO¥úz«««A6.»  <ÿB¡˜›xι=ÿOŒ93<P’çqÄ}o½eB‰l–²í¨ô¢`ù²…ìô)·^;}ÅÐà°€] 2q¦YÄÎP “B©ÀÓ¼¬Ë Q‚QM5äAˆŸõ§r)à A-<½zç÷zςŠÇ_rôØûß|+_(@ ‡:_"HMSý>_$å|¾®žhÞÑhäÝUïV__ï€V‡°¶¾|ç¾D2ZS“IgêÁ™Ô¯¦‹Q˜©šC°$k ÃÒ,`;F)†B"rûë—â¨R¡ñ|ÇòBn-Õ„Jûk9ëê-šûKÂq²T¡~Óé$„È2¸C‚cIJýÓõÊûÓ(/´sžâeMaC4n+‚­½ñÔß/:ñ„*ŠX<ïUg²¸mÃÍ-Cµ¾ßk‘þ½ö[—ÌKi%"D4I¼iÐÎ0-j&²„m“)ÅIС6fÂ!@¯ æÁ±fi艬&ÉŽ®?þ„Ûç̬ áŠá™òý*˜œ5Ñ<Ï»?£X,jšÏ`­ž+d²"ø—,„Cº ×0碻¼§ÃÁ>Ö;¿_ƒ.̧ScvøéûŸlnXûÉ'³Æ]ŠL êK"‚¼ûùçmŽ66ž³Ï^¨¥mÚ€pâÙ9sN?þ¤jH¡šÚ‹o4ïO$‹Å#DCᾌøýÁAÊ2¯;üg÷Λ‹4/„òE@;E±¹ã?áþ…‹Šb)uv÷L2íêë®­Ž×~Ð2—zÈŸ/Éç2Õ±h¡ Ž?íÜiO<‰Ç*f…Áþ®Ÿj_ö¹S~¤º¹!¡K:LݰUݯ¡kO8îOó_¡9šâƒÛ;¦ßp묿ü:;Eâ44/ÓÙ“qáϹõ•¹Œ/.”øPÀpú¯EØ8aUöš:ÝÜ&‘ª*à²4Ž«†&«„ÐïÇwç¢Å©B>ÀóB¥|N—Ä©“®Bm[¦¿üòuãÆ9ëòlûú‡U¹ªº†÷q¦ þQvò¹çB"‡ ¹ôòËý<à±®¦¦§¯oÊ¥—¢¾¾?µ¶^vðÁhèP”ÍÞòÐCPïÍMš®R8XðŽ‹.Bµ5H”ξþÆý8¸7‘`}AÈ/E3–*5†¸3wõÐÊws’fœâ¨8¿ —ÄòÙT}uÕ…ìûàÊÕ8E}ðñç#GïKôD£Ñt2Åù w<´7Ò)ºsN ÊrÎþ]Š8åLÙÅlÎ/qšuv á8T0M ŽDŽ9üoKéŠ š‰ä„tAJ”†úÚ‰ÎÛkÌc+V¶ëèîéK$þtóMÓ Ðk8ßÒe}NºNšÎÔ e8ºÕ†êa†Äpª¼+ €]gGá€A›bíí}׎=~Æë¯Ç£aP˲T‚Bëºù’‹f>þ8†,(T>“õ >€t Ò]M9ïü;æÎÍYdqÄàÚÞ¶”.Ц*· ð»ö½ñåç”Êf$Qxüí'¤2™X] ¸ ‡‚XÔAã´:ÞÏç29\ äýZ)Y†IáæUGzïË/Ð,ÉG=¼|y6W¼æÄ“ï|sŽH$™Ù°aÃý7ß‚”*¯xà0T[W·vÍšaÆŒ;ï|Ðü·¼øâ-—\âœÞV”®ýÇÓª¦ÇâÕµ‘-[Rœßg›ª³MíËéBÙ M‡’èŒý‡ƒ!Ã2 ¹¼3 G‘Øw­_(8<ÎÔùw+/Ôt4¨ °¿ÐOÀ v¶¾åû ™„*ÝÈ— ä_C±MS­ÿ4]¯¼?ò <_̉ B÷s¸YH­œ3û̃Qø¢7æL¿ífLJ·ñ‘ªÕ«×®M<ôó^yñ¼Öšh ÓB(Ø‘êqN.ÈJ»í¾G7Kšjæ%ÃB¶ Òp9 JöÛŒ$i]]Cî’Lô_s̱w½5”i*—§ý‚¬k,ËBçlmmînÑËÚíàƒ×®]˳hy°å=‰>@% ”Ýö㬀Vušç˫ڜY*;ˆ·ÃÁò,Úv´‡m+Às©žî¦Úªu4óÂóQ}Í“O<J.Âñ§ýæL©·kâG››#ÕQ)›púhkû{lâÙ焆ŸöÀƒD¼*cÛ}Éþ&?`Û´u]ƒŠ¿øŸAÒž?ê l縱ÇCêO,yûìS våñysÎýù±H±g½½.äÏ"¼áo¹å/Ïr¼ÿê3OAÉ 7ÿå‰ÈþÇnèTwñk´–4ÌÜøãŽEÿ×9 mÒW4MäqOuuL¹ìR”¹ç¾ Ï8ù¹YO?‰Bq éÈÙ¦]Ùbmá¶…Y~gÛfW]$”ïOLþÕ¯PI¾é®{[ZZ2%ñ–™3ÄdòöÇþ­o }][g-X;Ã])X•qæn9óΖµóãVþ;òûÖ|üÙn#]úó&ÜrCU$ç¦ß_ˆâuSx8ŽeóŠÀuU¹yüåHÓïxöÅBIös,t/|•L& L:éø©Ï¿G eù¦ó.˜þÌÓéT¶¹©A-f‹…I1ЦCcº}„¿¼6wk{$ ÖÏ: ‰/?êÈ{çÎ :hI†®5îè£þpõº5ŸÝ}Ú9³žyæÊ3O{iãº_¶°cõÃoŸ=[ Œ (ýùL&­mª¬aø_'ÊÒ¯;òæ½ÎñBw¢Ÿó9[J‡ïÚxò a3^üçÖ-~ð¡i·ÏPmbȈÝ6vô ÛlŒ.øío®œt År$ †³,;+’‚0P/Öu“&^5éjðO³,à£ÕÍõk{{MŠàYV—d¿Ž]yÜñ/m-èJ—”E,Ab¹ÒÕ—^2í¶R™”êÆ–Þþ\}s³ã+2t©ÕU| 'œ4ãõ7 Dèˆ$y¾dJNÞ>:¸íØÌÙY\,ü¯—ŠÅjb4ì«~ñókÞx#V_¿fÃn»!TS)ä4Q¼úŒÓEÝù÷Ç‘°ã8ìV½³µ·«&k4píu÷=ó,¨ÝDoßä«&Ž¿ñ¦£Föõô Á¨Ëñ¿9å wÍGøÇ?öî—^c Booï­—^ò×¹¯ƒ#ý÷²³Î¹êŽ»àA1¬æ]Z:»û}&`êø£¿û­¥ÎÈ&¦èF8A¦f(²H@¸è€®{ö9(L²~©T‚ÕÒ|é…·ªkk~IQ pzmü–ÝöØÃ6M€ª¼÷^M]]ª¿œdP‰ ÷³ÅÒ˜=÷Kr&•„.@âöÄÃvÏëÎ`€rm£èìçLMåmýc½ãÅ;º:¡=Ìœ:mn»oÑBöšT=÷¼šºZ¿/ « ô#PQÙ}ÌŽ)‚tW¿W_W“Jôƒ5|þh8L“Žcb¡ <æ˜ó^ÏÉÁÒU±h"Ù œ%¨S¥$B- yè,-©; ½úÚ¦ön.Zíó톩ȘMA-ÌœøÇÛÿñwÍ6lgvËúç£PœžLV1tÆA éR ³níZ†ã ‚Áþ¾>Pz²$Þ}wÚºRºùwg?öü3™\áÊÓÎxðyà>üþ×§Þtÿæìµ`:cÜe3ž|’vJB\vöÙ7̺+ƒk!“~ýK$+·¶ªº¾âyx÷› TÝ 9~ÆMŒ+EƒÂWÒ•Qc‰fÙL*…p<öƒA´í}ö“Ld›ZÂß±~m ãFÕ¿ky5EUDÉG;ö|ƒhÅþî7&‘ȶ´„_xá­ÚÚZ¿ß8Ø©_ÌÎKâè1ÿiº^yåeÂ`”?Àw$ÚhÚRÒ µ»ãôƒ~æ7´wZM¿íV¬sãµ>údËǽ醣šÿî§w¿ÑñÍ»úЀ&ÔÓ¢×Ýp=ÛPk û–ÂTÌ;7Ö ‚3ò4tðÄo … ‚ Å)W_uùU“ hXu]Š  g:NX±ˆÂY Þ˜I’¼ý©§ lе§]s êêD²†ZšPG ‡Q46é†ë«âuð*HÜtN] ÝsdPùp™òÂA­rô QÆ‚åí± ¨Q)á†2ñÔSX˜þÄc MÌûº ”®0^º}áÂîDwM8ÌêÆ•‡‰p qüÝ?$4µ$L3ƒcápÏ&3¨¼Ù›"ñÉö¾—^õR’Ä ¿ü ïyä/ãᡦê¯>xÁq‡!œûÓÊÍýÝíSÎú™-ÿ¾l}lŒfíÒ%G|tü‹òUá”&•>Ž5.9ò„ ÷>ór¤º1 ‚Ʋù,KX7Ÿxòã/¾TíŽ;âHdèÿ|wE¤hlTØ `3qç  7J² ¥|*Ærã~s&Ú²•"f6uç?žÒÁ‡Ã|,¾¾­½ªeáó÷¥sÃ:geXÎQy4`A 9G°`HÇ@pªŒô€ú¸˜ÍBÑn˜8eSë{ŸúÇcOºoÉÛåŒcJI"1«®ºjý¦Ít0‚ÓÎ G>—˜Bà6Ôû%ûï{ǯƒËaX·IÇŽ}xõ»rIÍ¥’ç¡(Éל>2쿾9íú C‡ PS]ÝÝÑÉ0ÔÄc¹é™§ Ms‡¯¹à¼;çÎf0ìò½|lþ[ç]öû‹Æ{xÚmÓ|èºÓÏûëüù[Uèt˜öc6!¾þ^áàá=0o.Áð’ªb8‹EÖ¯[3í·¿A~ >ÔÙ~ÿ¼ù¾pu_&Çø"†©!)K"ûÊ Q²á$ „Æ]ýðáà €êi¨«[¹jùƒ÷ÝgA?íïC¡èízÔ¢Y,äc‚~€G€Ì„Èù{ï÷ЂYEâj¢%K”Œkæ°Úº-Ÿ­¹~ÜïÀ¢dÕ7]}ë4œ¢ °yÃúƆ:€ƒ€oÆuÌío.20’ñ{fh«¼³¸ÝI’ÄsÅ|$̧ûã5¤¡‹™Ü•??yæªU‰b>Éùœ”L nl -낃|bYk¾àÌ3ö¤ú§M˜píC×TIÅü­'œ|ýSO577p¡itë¤SO½áÑGkjjÜýŽ:ê‘•+³Ù,ôo€SW=ö‘Ö¥  A)]ý‹“oþÇ?l3,P9„¬[wŸÿû;-f}ž¾Ãù8Ehówîÿ· _ ¤càŠ°]ÈgkbaÙ9V¹é'?²ê=ë¾`X7 ¥(CÂÄ3ÏtÔ D«i§ip>&Ý~{,y24Åxµµ¡¦&”Ï#p÷ ëÚ‡ …¢†¡ûR.d®=þ˜;f¿XSÏå‹:Fvõ§›‡ˆÅ|•ŸÍg’“.ùƒsǨnLyäáwÑm\·Ì@(8þÌß–ÓENºðÍ žûÌxÔI÷¶óÎuÒݺÅI7m˜B‰ÄÔçž2°é³ÏÖM>ãŒ{—.RHÄœ–Àó¬åœªDä²ÙÚÚjUwÂ~úyç!üþëÖ­¼ë¨þŒÌм­i`MI ðüe‡2kþ댟-*ò ù)W^ål1)*ˆ¤À†ê¿c»]˜ìØ….'Ã--޹qìBôªë¯¯ªª"LSŠ~–*H¥+Oúù¯ÍuLl&‰DÀÁËårל0öÆgŸ1lð–-m>ž•äÒu'ýâ–—^xEÙtææ_Ÿòôvttèå®Í°üï<èŽùoA#œtʯitw|=]§ýâ(q̹Ý2éÆÝõ©ÿBýf³®ü.åï媟—Óqýõ ¨³ rÝM7²4ãÔ/h~’@&T½æp†F;iÆš®WÞŸHy;»¢£–zÔ¹U uÄî£'œ~ZÃΛãÀÁîÍÕ ²dÑ»E.h þqGcûõ<&fc–J:çšú4(hÂÄc:¸ÈGãîá°¶s–€&ølâçžwÓŸ D¢:1}Ws` ‰3Äé%ê’j—wÐ:ñü p7¬ªP Ó×uÕ‰Ç#št.]€YŒà0‡ªbˆ#¯ýóŸI–¬…¤¾ÄÕÇŽEš‰(æ™·æçq²Ï0¸Æ†-›7†UùöSíl‹ƒ*Ïå@Ó!Mydþ›†¬² }þQG#žýÓ“O^vÆoªÎ~{ÑÏÜiØCïl-¤“ÆŽ@¦9wmÿçýR©dÄüøÛ …ªÇ?³÷…[Ø"!'üìœýöGx`öÛï­ßÚIC¶Ÿ×,õš£EºùìÜy›?úäúñ㙚ª+§O¸ûÞƒ**δ¨6çð!‡“+0–mËbž¶u†éÉÔõ—cTKðxÀn{ê)ÉF‘Ú:“a“E‘Bºiý(à ´?Mb†‚2p?ÇKr2S˜>qÒÌ'Ÿ :§,‰JùL¬¦6¯Ù`’jëZ†Á2dP\¼ß>·Í} ŒD2™L0é”SïxevIR"2Ôt¢ïú‰“n»÷>A‚O$S‚ €s¦•Ô ß9Ú™.„f‹Åºí{LŽòÓôø}6ëŸÏÕ ÝåŒÃ™õüó†;å·3ÿö79Èê8NëX4OKê÷ ¯?òg·¿øœ/ÿ/)D}dý×ýü„™/þ3 ŒwÙä)Óú2bÓࡪEZ¦îCF¢»#‰ùB.W«9ñøãï_Ò `¨Ë¨²LG’Зêk;;z¯ùÅi¿÷Ag!-™x¥,`IÄÑû‹9&‚ºQób½?œØºiàÀšb)¯[ÎðWüê´ë{¾¢p €Q(à¸0ñ¸ãX¹º+‘ℨµK;…ƒàýÙ8÷²TÈ`¬rý©kN;õº×_g#¡R6o«Ê®Íu©®„¥(“N>éÏó^WAÿÄ"Y©xågÜþÒ UŽEBøÙßßì=Ïó€æA›_qøá[½ZUU"€f®þÕ¯î~í5Èd__G;Ðÿ¯ËZ ¹l(:ïÀQ(èt|ŠAR 1>ÄrzöùÞþ”Ï™?B–"•ìeG~Çœ7¹pL6ðÎÞ¾úšZgÈÒ3ý}Uñèå‡|ÛÜù4ïÓmLÑT ø¿r"5áôÀu–`:Óôpð†_œøÈ‚ù€ÿ,礥ÀG7ãÍ¥€¡Õ\T…¡hdÓ¦-8AÜz啳þúhy•O߯œ%•û»3åâ×EØV…ã– hÏTÕ@ `( ÈíGùç·—”H¼7“€Þxº¿·¦I°4uõ5ÐSúûûï¾râÕ÷Ý݇ã¸T¢ŸÔ®“,ãó3LûÆ£îéî¼ñtè}/YάÚ¾|Ù­}'oŸïÞ_pÛ¬Ø k×ÔÕ7^þ›³fþýïО¡…‚¡jpÜ¡ß1ože ®CAàøø#ypù²\: ÀÕœpÌ1·¶*j ´Aó€[¶¶ßðË_=¼òIVJŠ  ò»WÖÿ}÷û,~ä•÷¥¼ð ØzÝÖŽålˆ´–¾ôÂïë×´·½éÀÁ®MÖï2tÑ¢w \ ùq{8ŒI€ÒHkDXÁuq†£Y*gÁ;逶-‰àï9g|454ž?f÷©³_áx¿=ý;gÚ9V׶ˇ§TˆÇÝ…måûþ…Éb C}íûì1òÔ#…Ýýì?‚PL§ã>?AÒu¶å,ãÀcŽn]¹lhSs®§çÖSOãêêålnÚÝw›& “­¯cHbÂ~û Yzô­·@ëå3Ùk.¸É¥;ž~zPó€Îö­ã.º峯­XyâþûƒŒžxíųO: QÜ}‹×°„uáC‘,Nzàùú‘ûÙ8)æ G\dZëV&ˆr¶)ç/8ðd0™·c|"h2?Ÿ.d¦\z1ʤPNŒW×&ûû‘$QÇL¾ç~Ì¥}ád¢|Yä\_å¾ÞDO}S}I̳ÈÚÔÐñéšÞMß{?°y§œòK$Áá~òÃû Å”XôE«œÃY|ôƒŸ,vGiaâ†ö³7®ojj¹ì´3&?þ¸D’ †§?Ñ=|ÈÀ­›6(šo”Ìü<'KEŸsЮ®ÈÒ䟟|ç‚%Y !Uׯ:ú˜_~yÀ€–Më7ÚùümW^ùÐ?ŸÃŠ èîÞD©ôÿÚûp»ª*ÿÓûíýÞד¼4€ˆ#2úWGdDZ!H1qFê„–H A)"ÕŠ £RÅF ©¤R„ž×ß»½ßsO?ç¿ö½//áñfŒdÆó{ùÖwrî){ï³÷Ú¿µËZÍ äó–JC¾Ó-ºý¿Ã´IÅm\`³Jg4úoïûà¯6o­Ùz¶RDŽixiÉßü¾ŸÏã¦E’J¡f›íñR:xùGO¸{ãú\©ÒT´ŽîžáááD,tþ'?qÇ£³4‘Íf}ÁÐùg{å?$XIâ§Y]zê)×?ò(ËsÐOS ýµ>tÝã¿2ÔÙ‘ìHÆ¿´è¨k|Øë“LM ‡£g÷áÛÖ¬1$¦ª)ÈŸª§ÿ7?öñ‡^|![«*QhÔü^¯¥h~‡þæI'^qÇwç-˜7‘/G¹ø¤OÝ´f 0¯GÒ›uÛÔ¡W^qún{n«¬™$'­øv“ÅuµAQ$$X ˜[<‰+åÚ§~êÆM›Æ ù#æÇv½>ÎZv" LsɧN¹ÿ©§EΗK¼ÏwÑ?~âöÍ[€¿–ò¹–,¹üÖÛâÑÚÕKã#7_³âÛ7Ý„f™€Ï¿øƒÇ¯úÍo¨¥IÓ2¾ñ©S~üø¯uµ™N§W._¾òÆ9ŽãEQòþôÚ6à7uYéìéÓTÅí¯¿Ö’.ýäI7?µV‡fv­‚¹NŽE^0ã+…üò%Kn~à¹üQï?4\¦©vl˜·ÄI¶›T-‚á5ÝÔ ³-°u޾ðÃÇßùÌ“ÈõŽ6Ôžÿ±“®}r5¨ßÙ]ñR.M‘ ÚIÍsçÿãÉ7þæqÓ4te› Nº#€'·b MEQjéO´öÉF­>«·+—)hššŒÇG‡‡–_pÁ—/¼¨ZZ׫¯î˜5»wbt"ôƒ=¶cÇ–aÞyéE7üò!’Ä!Áéô„"+ýï9²®û†‡öõ–=²woÈç½ü̯Üúȃš­O (N{_9JžI€ÙÿçK¦- ŒàZ8¨Õåo}âw®Ý f˱Kà¤aêË/ºøß–^–L&C~ßDz šöw.ºäšý¨˜ßÞÝ`(^xâ‰W=ðÔv¯Ç_(•@û.¿ø’ë~ðCEÕB¡†ö\ÐÓdzþ ò¿¥ãpH¹›ßw=¿h¤Ì K£Dè ÂÖ=ü«Å'RÐÕMm:8ºïO½“tЙ»ðÕÑ,có@šÎ:tdVÖä‚5[Ò&ãX`S#s ô Ìai0Mz­–ˆÅð„k{”âE‹8X~A86¹?´×äᤠ#ì¶G¼ƒÞJbëšß#Éåb$è;ûıjiÕÿÒj8™Löß/¾ëH®¼éfÉçA*ûs§A~öè£gŸúi 'î^½Nçø­ÛwœpüÎ;úH"]¾|yww÷âóÎÑFF1¯ï—=Šø•—þ¸âòË1U½÷‘GÏ=÷\³Rúíº§Où豘?xé]¿HÅÂßú‡#1ÇÄç¼ÿÚïÿ¸X©ÝröL‡ïŽŸü\íX°c_YÒò>V/–Çn¹l)V7ÿmÕ-ñÎYeM‹Ï=–Åõæqóæg^{½žÉ_µd ‹.¹úò£NøPº¬"W·6V.–n<ë,°‚¯ö^â«ráP›ù±‘ï}ñ Œc/ºzÙÑG½m`ßw—.Å‚¡ë$Ù0¼¡˜jZºiý¯ØJâ•ǰfµQ.J]Å«¾|ÆíOò~yh˜’xCÓ¡HiïÈu_<K–Ýp}oÿÂí{÷ݸäü›÷Hg.›Ž|$ ³ø„}Ãæbµ¡˜ëq g†­$Oëºfj:Ï’J©JZ¦D2—œú©kÖ8fª`HŽ® ™]ù¥/|óÎ;8âˆj­Vª×¿sîyÿüžD2eÙ&ÅKOüøÅ?û™ƒãAÜpÙe+îºK$È]$Û³k×w¾øÅk{ŒbÇÞzöW¿~Çí]©9sæ¼°uË _|åm·á$U©VßsÔ¢%§~æ†_þ* ¿øÊñX2àôJæâÏ|æþ-/ çd“5-™ì°uµVÊÇ"ÁR.{ÝçOûÑó/åŠEšC³x´æ`­('ꦅS¦’H$X–ÞùÆ6žÂnùÆ×.ºùFP˜Í€ñ~Ë7.¸uí¦F£a«5Â6Š¥ PÀÛ–-»ëÁ‡5Ó@ŽuPÁNúñAÏmQl»,ЉM2B¤‡QŒ%Cã, ̶öÑ;Ö®…–rîG>zé]¨Ñ4Y«V“Éøe§œú'Ÿ®á”ðÛ²ªËu ªg-:ö†'‘_'PYÐa´ {øÞ-4™08åC€Ön6Š›¸í¼ÅÞósšåzgõA~I’.ó¶i-ÿê™Wþà.žcTµyÝâÅ·<úI’£Ã#ÇsÔ¾}Wœz*ÖÕuÝ-·(ŠJÒØ*?Ü ¶Š^®V{º»†Ç<Ï;Œ.{hå;ÒÏ­‰2ìàëÛa(ÝüþóÛþdX:%’Zè ½î‘_-þ§O †ºqõSh+ÉøÀ¶doÿšµ@ýNÿüWG2 &8"ƒÐ, ÑAŽìÈ:ƒ¢°hbÑn Ñ¡ùbgrâÃöˆ^MmªÆÐ”¥r£výé_\þ裴(Y()(BnO‹ô:é7æÍFm{›Fí·s4ãá9Ì2KùLO*õÕ¿? ø±jé’ÄL{ÙÝ÷xÃáKÎ9«•10ÙEþîÿèÜsÎ!iÞÇ<þ{·nÌö=_>é­Hê½O•ÆÑDÞà^,_ù÷㬧Zk†¼胯<ýó˜¦Ýºú™rµÜ4Iš„®èŠó¾†v:{}h+ôìYØðÐmk×›Àsi¦¡êMÝ%Ör¸ƒÞŽfÅbQâù€À]Tƒ¥€ß¿ió¶{hÁëƒãS×b!_.=~ÍYgb~ïÒ[ïâ=>†¤äFÝëá•F=ð¿öÊË?âîñ{Æ ¥UÏ<íõùs¹Ü¬îÄ™ïÿZ½‘É¡uKÑ862JyĪU«^Êå3A¼ì_— ÅLÅ<|>¬Qÿþ“Oš²Í“«Î:«©˜×ç½?ÎUË@¯¿ðb¬Ž<ÖߺiíîááÙÑÎ\&Ëy=‡®H†EfÉþî®M[</—Ë«¾þ5 ÈØÈaéqláB¬*_s÷}@ Ñªÿböš ¿õГ¿>mÞÑØìyÐ"núÕC8ŽŒŒôõõ5åúå_9ãúŸÝsùÒ˰Á}ÍÜ|ß/c±‚iå'ИSSî $¾q ¿zå/ïØ™\0·a4¡Eå'ÆçźŸø±ûVÿî+'|iµHü»> ¨«+šOHäµê÷JúÏ·­^§šN¥®r^I³µÍ8TEGm*ž1j²—g£ÞÀ:áÆ§WWEä9¶äZ]â¹ËÀ(*æ°ŽŽ7ÝtäQ=ŸžÿÔÆ;RWÝv‡Ç+2®«ê¿/^Œ­ —Ý~;dÖï÷'úÞŠPðRé;_+_zöÙ˜mB{¸ñ'?8lñÑ‘+Ï?-Äñx1U¹å±ß öõ÷Wju´œÐÒ½¤ý­ÿaÙ£ãŒëHU&è1MiÄ#ÞÑÁ¡•g|éÆÇƒŠš/Wzz{‹å†[HËÜ\Éà$ð¹@0T¨È^¯ æÎU×c™¬Z$úgÛûö`$ÔÛV¬^ñÀÃ/¥–_§·“åå?øòùo[4ÅôԤ甚$쩾g?ýDÁÁ[Ñžlw MÇ€·WÊEI’†oÿÚ×Q3©TÐÊBŠºëÁ_¢¸vº~Ù—¿ŒVÔ€n$q,Æ¥÷µü†ïTIšóûEut“¶íËOûìn}6¯©@RÉö´5ò—ÆÙòÛš8Ø?° ‚>éë'~Íæ3Znc—Üy'|bIòz½’ij»÷ì¹¾`> þû¿ým]F“ȨŸb©b¾°ü3ŸþÑsÏ-†Ë ˜ ÝñØã•† Ö‚¢ö•Ь:=…?è í¶ŸÝƒ6Y‹ÞíT»ù=,ò í‹ÆhÝ2(‰: >xÞÉÿ$êêsÏ>ÍŒïLvÍZ³þUÎëÌ]ð§á4íðŽA2´×[#ø’†è`ƒÁÒv+JºÓ]?9e B/q‡¡èlfâˆy 0´ìDÿÖÉ'_ûèã(ÁI§…9ǰ7yD~‹·ŽýtðmÜPƒ];>6ÚÝ‘RåªeÑobl´§¯g×È`goo¥Òˆ„ÃÕššI§ƒ~î °Xr³¶ ª›)DS‘;Ó‰X\«å '‹ÇãcccµZ-.X|ãqäÒÀg2U ‡Ã‚ @‡”X«R„÷kï÷ ÿúá@¢~ºñRËeÛ4fµáQ£ul<_^Ð#I%à‘ôªi™ë åò½Ç¤^ß9¹¨ÈÛ¹BLh-áE–2 í¶0[·}‚¤ÔeMQýÁ@.Ÿï˜•Ê—ªÕz%ð˜MEb(ÏU*ÕvxÉV{£‰œQwu§ê²=>ž„‚‡¿j€ ‰Z=ê÷ ìM&¢…\>Ž(†%zé|Iôx)Ѝ‹ÉX°œ›>dP¼'‚kU-®I7M³T*¥R)‚¤2™ P'–e¡ž(•rW"Åpìî½û†‹'Rã#Ð à8ÙÕå}íÕÁX<’OOD£‘‰±ñTOWCÓ½‘­Ûw÷¥ºê»‡Eš w'F³éd²£0‘IJᆦg0óyK#™cŽèÍB7Ô„c™µê5ßüÆ7V¬è3¯\©y<"Xb‘€7•®ŽÐÖ­/ ^ÉIT˱ Š\Y¯ÍÓ±aã þÈqé y"›ñúÀŸe9#ÉD,è_{m[*™VM9TUnÈ®`F47ë Æ^ð‘\yïý*fè<HFêu¹7ž°ËMÚ±­…i¬ÇçÉøÁb>çG®P-KkšrÍç>¿äG?ä"’T¢x›É uM©‹¹Å#1CVŠÄ5ãÂOüêí?è_°PÕš>Ÿ‡&Èr¥l¯¯¯gpx$‹ïؾkî‚ù‰Ê䚃ƒC ,HOŒöõuE"‘ÁAÈ]²,h­ªª¶C“ç8üÅ_Cuƒ P$øp0ïÝ=V_ww·"×åÖÎ0LP$ð~‚¢u¹;°UWë+/¼påOïµIV EÊu…Â)†ÆÓ£Ã áÜ´ôÒïßw_µÞŒ¥b…’ÚT•–ï„?¯ §ô!C w@P†ÆÒˆ˜ÝÛÞ˜?§WkThù&óƒÅJ¸>ÎK  ‚>!‘Ó8Ipgš(ŒR8.y9Uk¦(àóØ¿äfr$F±£t´Üï1t«Z.Çêéê°e‹l­Ì£( Lµ`À‡vh´)(@8س‡a˜D26:<Ƈ–×WnÊšñ‹b)¥ ¼&7<~Ÿ|§¢n¥EQÀb¢=%‹[S2SåS)dûzºkµzµ.ƒ&¤ ò±t¡T†Œ7jU¯(ù^ÇР]ìÛ»·«««T.·¢ÆŠÅ<ßþô§~ú ­xôz{ÃP± k¾÷}sÇÓM¨Ø`Aü÷ú+ȶÒ>Hº0-”뻟r7¿ïz~[kï(öZ£ƒÅüÅ×ÐÚAõ¹ÕO 7ÔcÃ;S]³ž]ÿr•÷Úsæ½:œ¡1Ó Ž@1/ ­Ãu4W[c[£ƒæä¬b›@8“ôÍNĤ­[·Í3Çça·¿¶Þ š4“Ë{ƒ‘ýóÎ;—““Øä¦ãÏ©ƒ6OÑDzlÌç•úûÂÛ^ß'B/EáBÔ_¨T•šB9´—÷„‚Èea©Zl¥sÙp$áØT½¢Hb˜plE)'S‘¡¡áþþnEÿÊ»v킬|ý×gÍšÕNÀÄÄD0´¹SqÃP »V.]}ÞWÁŒ¾òþ_`ÛÝÛ[ªÔÀÂÎ+6%"ÑB nÊ1ëÃ* –Ä7†Çbó: ;„^£04ÞëñaÍf½&Sñ¢c›u-UJ~]V -®j4š¢Õºg º5'L2Î’$ ´[woÇð`:ÂÌXζ†æÂa_£aü¯R'Hl©PmÖ+‰(¨õ¦¦úÁÑtŽ},ïþH9aé@€6h†î0œ‚^д Å ½¾"C§Î3h_¸ÚZ?:­*ªýY6éNŇ%¯7‰@mª7õ\!¢#j†a"×Bh˼®•ËÅùs“;w§É[R”W$Lcž/Pœ(b"+›:Pm£ÞŒKÁ\¥yO÷pºÒéó§Ç²ÿú_„ã$‚ÂèÈÄò3κñ÷Ðtúï°ß76:À¶c¡PHÖt‡f1šÇh wœ¨„o{u;𤦦×Z=h¹\þb(&(Ž¡Kż×+q4£+*K0f;Τèis£ãf©þý«¿ Õ¹•Ü‹ólS–Ë™Ü{ºf•ÒiŠÃ ’”‘‰\ÑC±ˆ<]¯T(ÌZºäkØÀ^¬«ëç¿ûm±Ü‹(‚©Š½M:œÄX4媭ê"EZ²zõ%—`Õ&ÆÐ«î¾;_Ìutw ]ŽUkÈ@ìà]É[,V0ËQ}Ö¬X6«x}|©Z‚ ú(T*5 úІ,Ñ4Y,–V ¥d2Žœ3ËŠÇÃ7ª®4-ÛèNÅ^yåOG,|O½Qå9H!¼ÎD®¼ä` ÌðÂEŸ>+¥1ŠZõÈo_H6p¹µÿ€Â±î¤tÞég\ºìjŸÏÇ(j‡„öíqlýM 5«uH˜è ”ë /d†Á²ÙT“ Za•pܦ 1xk´Ç‰ƒ/„ >˜ªvvwŽŽg€¬ã%QX–ªäé¼TÈ„Áú5-Pp`dd Þêør©týç>{Á=÷´êO’ôX&;§®ªÛÀ¢ Å2èhÖZòàÿ‡Ôºù=Œò ªÕ$¡nÞ¢ƒÖ†G\|òI@7·£’ íìîžóôš«œ×ž;ÿ•Öè f¥E´7e^t²Æ1KâÁ€OƒêŸ;N¦¤Èº‰JÙ¦*7fuEuEi”ó±D²PÓ5¨vÀz)BÑ T£V¥)´ÿº èá’©ä+¯¼Ö?w~kH@U•zWwj箽¾@¨\®B×M„s…2ËðJ³!r<ÃÒÕb¨C<Ù70äõ‡M:XÉçÙ²õûKªˆÑêC—¢®›ešÊØáõ²iãÆTMþ‹¸S~|´ÖlÝÆ÷ û!’!††â"ŸCÔŠZ’U’÷`´ý¥+Ý©У‰LÖæÔú‡XÏù½žP€Ïe*,M²E0ô„RE;‹‘Áˆ.”Ééa<¢Ì`5]yÁ/ˆZ¦,q,FZªi44“æÅ¦bXîáʰÊ# £££’?¤¶7kÈM‚B­ž²ˆÖÒ–6SAf'ÉQÙbHž®Ô%†óóœ—cÞøÓö®ÎÞ‰L®^÷X¶(xÅቱ£½ùù]c£±X"ä—Æ† Á# l©\#ܰ5Q,ÛäX¾R-8 m9“ÎvuÇó¹*œ9â==¹¼2°o°ÞÜl6Ô0=>ÑÓ›œžH¦âÕrɱLŠ¢¡î½&(*á¶½>æ&Kb‰•ëU_´c4S40*B+gs–®t$â ¹F1͉ ®ÀØÀëà—㎈ˆ•šUm(ŠŽ‚ìÁ—r •Á-éfª¥¼Õ&5ùqÄH‚ÄÍ@Ð366±paòå—;;ºQ b¨Ö~ò×b­bré0v@cíº :¡\.÷Íê€ÊSòòpgŽ;nn.§ “ɢѰ®›…B~v_bb¢hhzWWbÏ®@ÀWŠ"'³…&‹÷îÛÙÝ7÷ég·4œ=gÛÐ…±ŽŽÑ­×è$ò;ÀHQ7idÌQh²Û¿ªï@?‡†ûŒg¹‰ô8G³Éx¼^­i†N²üþhjûMƒ€6†MÝÜšË8@ÛÓšÎ~:ØN :×vCCRŒ¦+í%q‰Xddd8 åòyÆÃÑ$ãa„z®Êã ðÏp88š ¤Â¹ Þ#™&€OIÍrèpcÍÒŠ®Ë GœŒ^JÓ5¹ Me¡ ÅpEi‚²Võ$)õJÈçéì|£\Ê·Cå*†­[D lÔjMUõ‡ùbÎç!qËâH©QWÑQP)Lð‰¦*“¦×ë~–;Û 5)\6U† |¼¦¶^o½Dz«Õº?R‰ÚÅ¡tªºâõHÐãa|l¢»«Kkjù‰L2žbi®”/€Æœ:h·úTn6tj º@GíÙ±cÞÜ9É÷ÆŽÑd §¸áññd²ƒ&ñôñ6ŠŽF€M †‰£Š`›4I(jX$Iããã@å¡@ŽÏd2PXQdIË•¢Ï 9®©h¹\.ÕÑU®UBé¡K%ãˆnÊ5¿:{²OÄôˆ7àµq­ÖhX:űPž{¶ï>fÞÂt¾`xxN’ªYäÛ0ÕCG Ìx¼…BÁ0Þë Gb{öìÔ¦G‡€{y}B>›ƒ²Ò-¬ÔhJ¾©‰+f3PŒ$Mà ÁêslÔíß¡i¸>žˆÚ†n›4žbäj-åš5›"P`¡¦J©&ƒ“ËZ$.ãVU‘¡z&2=áx½T!9š HÕ4 †7­ÖŒ<îÒéžÎx¥7 -•JUåf¾P ÅbrSÅÈÉ-o-:ØZòÑÚT ú¥½])(y†ÀÁ¼a1 x'‰3h±šcÓ<‡ÑxSSe]%hr°!£Õª´È+zkÕ*ò v“ îbÔÝÝ &œ,Ë~¿lä¥HQ€ÚB­€¦ …`;Ж$ÕjŸG¬U*¢À9(S04ÔšáæÌé‡êD“$e©P© í²‚,e 2ÕrtB",d3‚À£=vÀQL« 寱­Åý}´¨ ‰ ”˜­åiÊd¨²­«^‰3À ׌®¾9Ûvìíì+ä±kZS’<¨†ÍÝ»÷vttIjuÄþM$íÒnÕo1ÂÛk8áÛÉÍ:4œJµ JoΜ9Û¶ï„BF3‹@1B‰‰¢h˜ކ ¥r¹ä÷úY} hGðR°1<¢§Qm½K3hœÐu¤hÕ2l¹-kÓA¬=YŒþ¡ äwâˆÇ¶ì3Âwk°Z¯Š› ‰o6jýf£ls¬¶‹làŽ@ëáS²`¢”+ [Dž‡ŠÁ hš…ŠÏ $Í ^‚ˆ$ÿÓVyHA¼Ã­öáµöçÃÍï_2¿ôŒaé´@kͲ—ÂÖ<ú«s>ùIÞÐ6¯vÕÊoã»Fzz;_xiÛ¶]{Êš¾}÷^'}¯©é“tÁ² ËA¯g(ÔÝZÖ]pÞœ”ýç‘Z!öoM°ñw þÞúLl:|&•×~ëöÀ[&ŸÐq<ð{ú¯ø4×íõsnO+Y¢=yMž·'}ßÌŒjÃÚC§Ît›{Ú1>-ÎpK¢»5BG¢Û0Ê"&÷µ<>Ø@¾­iQ_4’‡µ‡E'Ó?½d|rsÏ´TÈÎT1NúˆœžúéƒÞ¶´ß5´×R´¿àôo½,©•àÖP\v{›¤3ùY§UÈÿ‚é%0U1¦U¡·,M˜ÚjÓ69¬VŸŠ¾Î´69õEL´W²Eqf~û_ûÚ›¶Ûí ßZß‹–ÖN+ü@1N>à-´1ìÀ0|;G­QäÉÿ¶ýLµëî[Ïcí…3¥§½’cÚS‰©6õ_¤÷/Di_:™|Ú•SÏš~å´zNL=ÐþŸÍÔÎÛÝNìOi«Á·öãÚ­õýyÚÿZ¿ÉÂ;K6íÞOn9i™ÌäÔÛ÷?ßžé³¾µ;y»Q„”ð‡Ìtr*ËÓ5áT¦4O»©Nmmv&?⯶ßóÌÿ“MOù4Uf¿íŒÇ›u(†½µ´Gì'ô^þ߀›_Ç´fÌ/X›`•á6-˜|íÛUÙ¨€v4`dåÚ6G‚! svïÞµðÈ…ã£Ã$f÷¦’ çÌò°Ü¦ç6\{íµøãÝÝÉ-[þÏ]°`HºD„ ¼…Ö¬"èW¢u;dN3\¸páÂ… .\¼ ͦ9ãyàdº®KÛhh•Jù(m- jä­=ûQ«¡md~¿_WÂTã±ÈÎ;=öX v¥R)—ËŒŒlÚ´ ÑÁ±|5ö®]·žrÜqÇÁ#€H»tZËMðý€×0 I‘Õ"páÂ… .\¸ø[F­®½ÝO@Øü>Þ²±R©æ÷{-´DÚ5dƒeišÂJe9áJ]³ EfhòÁ<ûì³Û#}Ï?ÿ<ðÈÍ›7#:80šîèˆoÚô¼eYGq„…ÜM‘8ÞÞñ…·€¶[P„;4èÂ… .\¸pñ×B½¡Îx¾å ½¦…ŽŽI’488hš¦ ÙlvjU4ÚùÇ0$û=ÒøØÈ¯ýëgžyfË–-ÑhtõêÕp×ÓO?èà탽½=Ï?|/ɶ(eµZksA´Œº5:Ø:ßÚtàÂ… .\¸páâУ^oÌxžã8`„ mxšHç€ÞmÞ¼¹í'µ££d>Ÿïééi6›år™Â1Ǽå–[€&Â]À iš^»v-¢ƒét6 ¯_»ÁƬ÷}¬|ãš¡ú<È_šÿÃ,Ü!Hšàž ñÿžÿ@WºÒ•®t¥+]éJW¾S)7š3:šQdµ©Ê±HxÚÄXzöœY›7mQu…g…º\ƒ3—\vñÝ?ù™å˜ïßßíÙ³ 9¦ ‡üq íÉâßÿþ÷¢(NÒÁÑá‘X"ú܆M8‰wìûqä÷4,ÝÔ­étbHxHäšàÝöÜíJWºÒ•®t¥+]ù· k•úŒçƒ°¢Ê<'b¸½{çžþysÖ>»Î´ –æ€Å}þs_•\ùè¯iÔäîÞäKß¶Ÿ}öÙ»ï¾{ûöí‚ lÚ´Éï÷· ">8°·§·÷Å^0 cîܹ 9Žc¹YÞGáà»z5A¦i¢è‘¦©ªª€Bô°pY³Ù$)ä€fݺuË–-knÞ¼¹V«mÙ²ÑÁá¡T* ~[´hQ{Cqûº6¦Ö$)jÆ4¹páÂ… .\¸ø‹£Z©ÌxØZ¹\îêî†ãõëÖmܸØ^>Ÿþ§ë:MÓpP,=P8Y–¹aF÷Ãþ°P(À]¯¾új½^î¹ç\:èÂ… .\¸pqøâíè ¢(ñDÂæÇ0ýsæŒ+Š ú¶U*Uàq==]pREMÓ€Öêh²¸¯¯oß¾}pM³Ù\¿~=Ïó“k]:èÂ… .\¸pqxâíè`;B7p6ÉãynãÆY³f[>™Lʲ\*•‰оvÈuŠfËmܸñ³Ÿý,ü Çüã«Õê† ­¨$ÃC©ŽÄ¦ç¶8˜µè¨c@8r2È›C8("IÑÇ $MLw¥+]éJWºÒ•®tå!•ÕrmÆó/Õê•P(ªª²®™Ï0 _«•%ÑKP8\cYºcãÀßLæhÚÁœr¹üðÃ/^¼¸ànÍš5Ñhtr+ÉÐÐH*•Ø´i‹ãX‹’ (SQ,áÇIŠ"8N ÞIüu.\¸páÂ… ÿT*µ#Œëºéóyhš%ìå—_7¯ÇŽ]ªÚ”$ïŸþô Ãp©jµ†y^Ü·oO{[ÉÆ¯¼òÊö$ðC='_xá…I:˜L¥6oÚd;ÎÑ‹$ ä”Ï8&Z|G“ÅÄáàƒÇ•®t¥+]éJWºòoAV+µÏ7c9NSU¯Ï380ÔÛ׳eóÖJµ*ðbá‘•ZYàD’&,Ã&€´å˜ÀBáE%¡ÉÃaàÔ•®t¥+]éJWºòoA–K•£’CÃIÌÐÌ`(P,”àxçö]º©Í݈%Žã$I®]»vÊ õSO=%ÂêÕ«W¬XïÙ³§££cýúõpѱÇ ’¢¨z½Î²,a·Çp†r͸páÂ… .\üµP­Vg<Ïqœ,ËÁ`°P(ìÝ»wË–-š¦ÕÞ&„  Ùl&‰J¥r×]wÁ3á`ëÖ­>ŸoÆ K—.ÅGFF:;;_zé%xè¼yó€'ç+—ËÈË I—lÓÁvœ:Àt—„.\¸páÂ… .ÆŒçEI&“¦imk“4]×í›ñz¸lêQù|>ïÞ½{bbèàòåËq`”±Xì7Þ€ß$IæÇ²,\jYÞ¤Z0 ãeØ… .\¸páÂÅt›ñŸRŒÈÀ‡zD"p›äÁEÀu]ÇÞLþÞŽ™ºpáÂ… .\¸8tx»a8às–ey<žz½ÞžÎ=È ‚Ð^_H°¾p8<>>þÿÍçw¤ endstream endobj 8 0 obj 116976 endobj 2 0 obj <>endobj xref 0 10 0000000000 65535 f 0000000382 00000 n 0000117646 00000 n 0000000323 00000 n 0000000186 00000 n 0000000015 00000 n 0000000139 00000 n 0000000430 00000 n 0000117624 00000 n 0000000157 00000 n trailer << /Size 10 /Root 1 0 R /Info 2 0 R >> startxref 117701 %%EOF ess-17.11/doc/font-incor-s.gif0000644005071500004540000003233113202324173013014 00000000000000GIF87av÷?? / ///?? 0000?0???@?`@@/@@0@@?PP?`P o/oo?@@@@O@OPOPPPP_P____`_``OooOpp@ppOOooP``_oo_```oo`ooopppp€o€p0€€PP`ŸŸ`ŸŸo€€p€€p¯¯o0OŸ¿€€€ŸŸŸ   ¯¯¯°°°¿¿¿ÏÏßßÐÐßßßߟààïïŸÀÀ Ðаïï ïï¯ðð¯ÿÿ¯àà¿ðð°ðð¿ÿÿ¿ÏÏÏßßßððÀÿÿÀÿÿÏÿÿÐÿÿßàààÿÿàÿÿïðððÿÿÿ!ù,v@ÿ©H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ%BT¼ ’#–,W²4Aâ$ )R°T"e‰5“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·pã6õBe¦Ý»xg²@7¯_»{köýë7p½0eÒdú£±¦zñurŽÉ–-'Õ,˜rg¬šC{Æ|Ùs鹦OoNýy)g§˜G“Vúúõj¹¸sëÞÍ»·ïßÀƒ N¼øÖÁ„ñî €psÄ‚ëÞ@z^Èc΄Jݸ÷ïàËÿO¾¼ùóèÓ«_6»bçxŸû}.?¹ýûAêçÕ¿ÿtÿûß}úñG`|˜ ]ÖMgàL&ø`"( æ·à†vèᇠ†(âˆ$–hâ‰(¦¨âŠ,¶èâ‹î¥Œ4Öhã8æ¨cîèã@)äDiä‘HÞ%£b±5éä“PF)å”TViå•Xf©å–\véå—`†)æ˜d–iæ™h¦©æšl¶éæ›pÆ)çœt‚9cŒÏ-9fÕõY]l~úù%_QRè“„ò™(ŸM.z¨„::Y¤“6ꤤ6Š)¦Zrz©¥€&jh¥Œ:ê©§Biª¤£’ú©”¬^Óº(_¨ÂªªT¶š)¢SÆz뤢¦Ê¨¬Â[ç±È&«ì²Ì6ëì³oÞ_ „íåÞž®ž:,—þ©¨·}Êê-¢ájÚ­¹ª*(¹ã²Ûn§åŠ«+¤àŽ .°ïÒ{n¨û¢Ëéºù¦+ï¼ßFJp¯ú\0Á3¼®¿³ÖkpÄñâko¾ + íÆwìñÇ ‡ì1,”lòÉ(§Œrž‰a+òË0Ç,óÌ4×lóÍ8ç¬óÎi!ÓÏ> ôÐB„ž>ó¬ôÒL7íôÓPG-õÔTgY4ÑX_mÿ4ÒUwíõ×`‡-öØd—³ÖY§½uËI›íöÛpÇ-÷Üt×½4Úx«­×v÷í÷߀.øàƒçmxÖG³ýª­dÖêj•¦âj,¼V¾íåÚJ^èã–oÙmÅX:.ºæ›wNyéµ:¾«—›NÎùå¦[Ùú˜ªÃúyí æê9鼟¾øë®çî9îºwþ¯ðÅûNøß‡7tâ3Þ.ýíƒB-ñobüÎÚ›Ù=ìŒC<ýøä—oþùèþûò±ƒ¿~ï _ºòìûíüýÐ3Yÿþü÷ïÿÿ à˜î§· åÏeiÚ”úÌõ­Jbøâ—»Xu1T jbÓ˜+8»—Qô×Ë+ÂòËa³ÝŸ0xÂ̬…ïk_—T'?Úð†û#`óض†ï‡½›•¥|¥¨ØEn{«^¦j×A$ÖY4L憸¾ƒñuML⡘h«ÔYv_Ä¡LjC‡dL£×ÈÆ6ºqcf4ãt‚ÔñŽv´£cx¬ÑuÊM^T¢(M)Ü(ê‹"ÐcßÜ&?A9Sà‰sœûä˜7Ë©ÏN’³TêŒ!C+iRò©ô¨H KûãÒ&õ©Oj¨.O ÕªZ•gKÅOS¯ÊÕ®zõ«`Ëê}¶ Ö²šõ¬h•™XíCÖ´ºõ­pkœÖšÿœ¶Êõ®xÍ«^¯D×j± ¡7-¡üt¥±=Îëˆ9Eì§Z¥½ÈÓt‡Mb`Éõ+÷}oUmc‹•Å rT¤ì²lMéGÁ`QѲ›e‹BšbS±4uì9YYzáj³°ó¬E‡[äuV”¿åVjyÕ[lrK²›+îg…XÚV†‰VÖä#­L»ÄONÖµvz‡ìš0f ^ƾ;0ÐYì_ý/ 3ºébŒ…å X¹Þ[=_zW|è5ïy3ˆÁ˶w¾æ˜x %1º×bê /{åÞ†1Xƒö=¯ ‹§_ò¶kå…!y5¼0 ClˆÞ/ˆÇ+;ów¼.1|㻪ôÿ¾P²&Faaâ ÖÅ+na…S,Á-õõ/ÜÝ«‡Lä·þ¸0½h‘—Ìä&Wu#I~©“§Lå*³ó·r”jå.{ù˱<òu¶¬*”ùÌfN3š×¬æ6ŸÙl޳›ç,ç:ÓùÎvÎ3ž÷¬ç>óùÏ~4 -èBúІN4¢­èF3úÑŽŽ4¤'-éJSúÒ–Î4¦7­éNsúÓž5¨G­g2]+o6€ªW½j5³úÕ 3œ÷ë2×zη¾µ§uÝf^ÛÚ̳îs°© ëaóÚ×ÀŽó°•fdûÙÙ¤Ž¶¨§íæe»šÕÂVužW]gkw[Ûw†v¡½f_/›ŸÜÇ®v³ÃÍn=;Ö¬¾6¼Í-hq«ºÜÕžw±õ­n|»;Ü÷V6¿S=oyÃÛà°Fø«o‚Üá ‡øÂ%Þp`Üâ§x«5pŒ?ÜãùÄE^q-è{ß'ùÆU~oSóÚo†¹´gþlšÛ\æ8¿9¢Éó5ó|Ñâ&ôÏ{þè èH×yÒ—®ô¦3ýéNÿ´Ë§ æª[ýêbŒ ˜ÿ‚Œõ®{ýëÕ®1· ö²›ýì+{4ÉŽö¶»ýíQ#™ÊæN÷¦²çîxÏ»Þ÷Î÷¾ûýßOÍ ¸ d*H¼ "“ƒ h 8€mXãšÚئ4¶¹üi4?ùÕpF4¨aJl`CyΫ¦5¨ïŒæA/øÖ»þõ°½ìg_äh•/Ò‰| ƒœê0¨AÐ9 ™r‚»¤€ J”nSùÔwÞó—wé›ôê³^ô©‰>”šÏ|çwßû´¿øÇOþò›ÿü¶+î+ €è°¿&§N’üçOÿúÛÿþøÏ¿þ÷ÏÿþûÿÿðÄ6 R€ô!~R€Ø#a ˜ ¸€°B!¨!(¾'! øÈ€ B-h€È!èø€h€ X‚$h‚}"‚#€6xƒ8˜ƒ:¸ƒ<ø!HÓƒ@„B8„DX„Fx„H˜„GBuÙ2?ƒ„ap“Qóµ,U=hR…ÕQ2ƒ…p×…Ñ¢vxj©âBøt]ÈT KÚR£R¦Ô„SÄQYNLtMØu‡Î¥QµZÑ¥ZªÅI¸c‡\è…„È&b¦ÿl‡u Lè‰Q¬i3(Ú,-*FU¸ŒÉ‹ÊB¢Š3Y¿YMÝ3£¹OôH™ÉI¤+)Ÿ>uœFª¤ÿ4ŸF”å) KŠ–å8’ñ¥,ù–¾—i [AÊ¥Yš…/¹;ð©¢Üˆ¤Ö˜¤×x¦6…œVz¤æø_èƒ zV )Hw*¢z(™­˜§€d¢´¨Ï¢£U©§†z¨v#wu·¨&S§ˆú¨ªTÚRŽ©–z©P³T ØTPשQç© ú©¢ª¤:ª¦Zª¨zªªšª¬ºª®Úª’6ulCmGp³n©–lÄ?6t¯uG—l¼ «½útèÖo1g¬ºêsrfoÌ&k–ö«°Ê«ÐziÓjrÝÆfÕ ip¬Ä†kþ6¬à*¬â®›ÿ&«3"sÙ uÓšn놭½æj횬ïÚ¬Âfg¸Š¬¿6®ú:hІlÅF¯òz¬îz­ø ¯ÔŠgÖÆ®ój°ñš¯BW¯7—°Î:± KsÒÊgÁÆ­ûº±äʱ¡j®Šá±;²"[²${²&›²(»²*Û²,û²D²R†©4[³J£©ê—¡6»³<[3Ò¨³=´B;2“ê‚H–Œš´J»´LÛ´Nû´PµR;µT[µV{µX›µZ»µ\Ûµ^ûµ`¶b;¶d[¶f{¶h›¶j{µ¨„nû¶p·r;·t[·vK#HÃ#02p~€¸‚;¸„[¸†{¸VA¦Ä¨z¡ÃÛ·P'0¹u´(`ðX€GàÏGzØzØg³qz¦«zÜçyª+º¬û}Ÿë|™Wz²‹¸´[»¶{»¸[¸éÇVë'ƒŸîG©Ž›·LA;p¼:ÀÐ9à0ºÔ}ŒË}–§|ÓÛŸ'à'º«'»ÒÇ|£wº×—º¹{¾è›¾ê»¾ê±»uÕ»º¼—!¿—¤9¼lÃp]@¦§×§}®[¾¨÷¿æ‹y®K¾³×ûºÞgÀìÁ<Á\ÁbÑ{ HšÌ1€¼G¿ök¿‰ÿƒ¿3 :Ð?°ÉgÁ,ÜÂ.üÂ0ÃoáNË5,7,|?x·<ÜÃ>üÃ@ÄB<ÄD²Ãó±‚h´%Ò-x"YÆ‚ ÂÄ1Ø‚ 8ƒ$BÅó‘ÅIü!Rì»õÄ0h![LÄd\Æf|ÆChÄû±‚)ØÄ%H¨Äö‚(Èm¼ Hƒ4xÇ&ÈÆ¿§Ç,| èÆ*8ÈÍÑ X\!)Çu\ƒ<‚Ä ,ò»o\ȃŒÆ˜œÉš¼ÉB¢Æb¼ÇüÅ ÈÇ<¢ÅqLȉü‚•¼ÊŒ¬Z €\Êv<ËXƒ‡ìÈøqÇ(ØÈ—œËcLȽ¬ ´ ʸÌÉÆ|ÌÈœÌ"¥âÉÊÜÌw›ÊÎÍÒ<͘¬“C{ÍØœ£Á Ôµ81zWßœÍâ3„j—«C†nJ7e¨Žmβ©¸W¨œ1ãÎãœT,Éc&¡Ýœ;öd†^Z¤šÒrª¥LºžçD[ÿì•´ÈèôMCºœ“éD?ÕÍ€(“jZÏ^VδÏc˜¦æy¤ôè¤ÇÙ›ý¬9Å›®Ó›qú;!mÐâÏ»5ŽÄé; Z*ÑNt¦Ñ\vuôŒÓ>]5u9³?=ÔDÍ%A½ÓEÔJ=%G½ÔNýÔQÒÔP=ÕS-ÕT}ÕJmÕX½Õ?­Õ\ýÕãìÕ`=ÖC+Öd}Ö;+Ö¼µ“ï\¦0 H=Œ·˜3ÿy£ú2aì ¦þTŒc¦ÎÎÕšqíŸvmuÿjÝÖ7z*ÃT¢U[‰Zm\Ú£{μY´ÅZÀr[‘]”Ø¢BŽ•â¥gɆ쨎ŒõÐr"ÚbºØ –[pÙØ¨íÑPŠ–™Í9TØ_v؃ØXÓ§yÓát¥Ú¤ž`Ûoí£—½Òé R"­šØÁ-ˆCÉ“rý›@ªÇøÜÈý“oøž#ívRÍ—lYÒ×hbwÝ]‹%¨w˜bvXèmDŽÉ0×`9,;ß彎7Fߺ=B)¤c,–_à.Øýtß"ä]ó}§~êÜ®ÙÓ½b_9V*&ÊÝXgÖ´ùàP‘PÃáQ©áh=â–*â$~â‡jâ´íÖ€c£[hCx.¾žSš×(îL*.ŽÇm[ðCÚíÙ¦Ã-ÑÝÄ‘·-¥ì 9éÈãíãaªäTÚ¥ ýß.]ã)uã)*×í½¦?NÐcFÙ=ä]äÐ8£=>™[ž<]¾ÝPžã.åDåUþ×0ˆ88kžÜçáÕ-ãlÎLn¾ç~žŸú}>&Û©•^è„èb2è—dèŒþvˆ&™•w.£ˆÑ ù¢ÙÛµ-Û–må>Š&õIèmH˜¤Ò[ùälÚä4™ÝÅ á•nçÂíÝzþéœê_‚—ž)¦QÎY&Yêªþ¤YÞê¦t–Ÿëo í˜ã¶Þ‰¸î%£¾è4^HÔNØ›>ípçÌÞ웨Ór¢èXÉíâ~uÞ>îæ>›å>OîâAŒ‰í™žŒ¾íšÛÚîéçîˆénšz`ƈ.‚…¤Â§I1=†b$FÞ…©<£˜i.ëî®æ÷¾Šùž›ù¨’aJÒÊ—cîÙËÉá1UÚ_ïp*òñoù7ñ¯×o*S£YÃЛýòeY[‘%ä1‰ìï®ìËnï&Oˆ(Ÿò”^íM£óFy=+ªé=òE{{@›ôN_Š?ÿçà~ OïóKŸ³jÝíŒô _ÐOÞoNëq©KM’GT_õ]õF¿êãò©YXÛHô*ôAÝÛÍÕ¤ÆÉÚÌ œêíeTh_ˆjæÂ¾ä3ßÝh~óÂeñu?¥Ÿøˆ÷°nJºnŸø^8ø„ï@†¹a˜.ðiØà~ý×áÒùóù ¾˜ÜíêJDöôi €ùiõ¼ÛôAëá‚~•S5û´¯ôtŠûl>õ¾ÿûm§ùÆŸüÇoûïÿ+üÊÿüe‡üÐ?ýX'ýÔý_fýØ¿ýT¦ýÜÿýKæýà?þ{%þäþrUî³>ôä©,u.7®¯õG£]ÿôþžŽÿ—ž,ÞΣáEà@ D˜P`A… ½0t¡Dƒ 6´øÐáÆ…f¼¸äHŽ-RY2eÈ’=&”H²âÄ–09ž4ù±æÌœ=y²ôùÒæNœA]ŠÔÙ1)Ñ¥B>U 4êO§S]iUjÖCiV•ª²iرd¯jÍÈU¬W´e©¾5{6nWƒT¼Á›Wï^¾yYÀû×.^­V‹vMK·pL¶P»E SfcÇ¿R–ÛQ-X¹‰/Cvuüt3fÑŸõ\Ù´gÒ™SwnÌ5íh‚©Y‡.lÚõMݲ)ûÖ½ÖqVÚ_çŽöõíÓ—'_ à8òÌ¥ŸÜW»ö¿do^üxòåÍŸ§Ž·zöíÝ¿‡_þ|¦ôíßÇŸ_¿øâêûóß/¼ì¶#Ð/À‚ÿì® d°A„0B '¤°B /Ä0C 7äм $°;¿S°COD1EWd±E_„1F›ûDîL°wä±G2H!‡$²ÈƒDò.%“drI'½ÏH)§¤²J+¯Ä2K-7¬ÑF¾DÌqÁ-Ç$³L3ÏD3M5YìÒK½À$QÇ5礳N;ïÄ3O4ÛÄK:?CÄ1N1õ$´PCE4QEñãÓÍ¡,qQI'¥´RK/¥“ 6å´SO?õ4Ðì´ ‚TSKEõTUSeuUW[…õUYc¥uV[kÅõV]såuW_{öWaƒ%vXc‹EöXe“evYg›…öYi£Í¥vZk«ÅöZm³åv[o»÷×ó Åë[R Ö]Õ ·]ssew]tߥ×]{¯Uöå·ß|OíW‹xY x`U †µàYÿmázñ­ÕapýÝ7V~Ï¥u_€ïMµâƒ]u˜]†æ˜d“KFùd’ÇqTw%þæRÕ•yÚ‘¾ä ö˜ gÞ˜á‘õ…×Ôš#øh•SfÚhYã…Yi¥‰~ZØ©oÚèAþ¸Õž^5g¤qÍzâtîøa¨×}:ߟ—†»i¹ã¦{nTYÿ³Þ²ë~uï„}¶XlŒ¦h‹¹œâ¯“]œo»O.ÛíÂÑÆúpb#¯VfÁï›`¯7Öo°KÆ9cË»öVq~ǦüêÇ_wüàÍÿœu{©çYu™yıv=÷èï·?{mwYÿ›¦þø?ЀDà˜@.Ð+3¹‚Ð@ >ЂÄà5˜AnЃá¹Å¿HaÊ„'Da U¸B 5ÊMpŠ e8CÖІ7äH£ü$@In‡?b…8D=i TGD" KHD&6щO„âŒì2%Ê)ŠWÄbµ¸EF)¨/;<Ð|ÈE2–ÑŒgD£B\è¥*:Êo„cå8G:ÖÑŽwÄcõ¸G>öÑd 9HBÒ‡Dd"¹HFòÿ1Ai„d$%9IJ$LÄd&5¹INvÒ“Ÿe(E9JR–Ò”§D¥ÔV¶Ò•¯„e,e9KZÖÒ–·Äe.u¹K^öÒ—¿f0…9LbÓ˜ÇDf2•¹Lf6әτf4¥9MjVÓš×ÌY)! W°ÂÀi„à/X@°¹Nv¶Óï„g<å9OzÖÓž÷Äg>õéL/PÁŸÿh@ýù—~ Ô ÿü + zPƒ&4›-S+A P` X J@%$ EB¶…À• i¥@`©Ò•za–i©A^ŠYÂt¦¯tˆB’–Ò²§:Å©KcùÓ}Õ¨ÿGEjR•ºT¦6Õ©Çì§£J©š”§T}¡UµùJ L _ýê :ÀìÀD°N*Ôšþt 1ekJãÊS¡•®km+^õT»5¨7•ë^ujW·Îõ©‡Elb»XÆ6Ö±ˆjV# FÊH¡X õ¢Yï°r«¯¬ÀD»làX@ֿΔ¥2ÕkakÙ×ÀÞÕ¶¯5l^mÛZÁò¶»½mnûXâ׸ÇEnr•«ÜȲ± X #_ÂèÐæf–‡z“V!Š—XòÀ»¢í,ÐRŸºT¦²­-poÙSÜÖ¶½ƒ}kzÕ;_Úú¶èõ+o—»_þö׿ÿ²p€‹Y]MµOÛ™®U lÝèZö¡«„%^€„)ಾÁÍoNç»aû²u§òM¯†AÌa¹â¶°î­€U¼b·ØÅ/Fê‚5Y;¸º®ƒ?ÛÊè…ÎíˆßK^ºz˜½q%j|KÌ××5Èø1‘óËá$ÆWÆr–µ¼e.ç²¹”mðˆ& æS³œíStºcVvyé@º6Àófhk§ÛÜn7× oŠ«ÛãyÈEþIvÛ䙕øÆï=o~å/W9Æïó˜;üäyÄåÈÂÙèN\³,¿¹ÍŽrçüÛBwv±;~p|¯üè#‡zÔ¥>uª×±ä3§¹Î‹Žu€;Jé4·øÎonô”=Üa/;Ҏ󢋻ë'zÖÁ.p´—ýíg?ù×a¾÷ª÷Ýï¼Ç¯þð?œì>»ÁñžwÂ÷|épßlÂyNxÇ{ßm§váëíøëî½ð@÷z×óMv_Ûò`Œ¼â™t…7Üæ‡}ìe?{Ržö·¿ýëq¿{Þ÷Þ÷z´ýï…?|âßøÇ§ÿ}ð‘¿|æ7ßùχ>ªÃTIêWßú×'ÔÅÓFìwßûß?•ÖØgQ-‘%)ȯ? 'Eí_ü埦ñ¸üVŒ úçRŸ4©"Œñ?ô@öÀˆ€Ü¿ AÀùc@LY£hã>ŸÐ¿ôh ô+ˆÂ0ê ü¿ô;‰ëXˆÙà@ÉÀÀ˜³Ó˜ŒÚ€¿¼@\AøÓ@ÎPAâÐ@´Á¬ˆ$A†ð¿ì@üÁÄÁAt,B"œ#¼ÁlÀ'Ä!Ò¼¾ˆÀ󊌎ÒX ̸@¤HÁ·` ä ÷ Æ(Ã0à \êÈB¶XBº˜ŽþøÂá  3dÃæ-l (ÔÃjI£AcÁTÂ!„C µPìŽ@ÄEÌÚ¯°Ã«HDEœCã¹ 4³èA'L“ ¬<ÜÄ©°ÃQ 4ÜÃT”¡ú ¶û”£PC,4Ä­ C²@ÄYÄÅ1¤pÃ:„‹Ü¸ÅG| Q¬E1,FGDÅ6äERTDà U„ÆbÅÄü»ÂòPÆSE<üÄ_ ”ØÆØ@Áp¤E_,óHBoÄ ”ÇüÂvÌÁCLÇ „GnDÇytFÔH?s<ÅzÆ5ŒÆ€<”iÜŽ*ÜÇ¥XÀêKHdȆ¼!Lƒ’HWtÈqœÈŠ´È,j’Œ|’4ºÈÉä"$IŽô¢éÉ”TÉ•¢’tÉ'#–”É™¤IzÉ›Ñ|Lc Å]\FHÄGóXHö#ŽðˆÍ1 ÀÑ DPDÂèxÍ›ðÄAìÍB¹Íc,’`tJÔDÉÈ@ãÔEÿÐl¤Hl$ÚÌÜŒìô@çä΄DÄíÈ ±Î\|Îé$OlOäÎTN Ä lDÚtÎÜÜM l¿Ù´Žß NûtÁóä@ú<”4!„EüMw‰"ÙT~ÆREÞ[ŽU4ÎÚ]¶à^nŽ_æZ½\U%fæPWY‹ê ݪˆ_HfU€LYYMØÃ•f f¨v>(‰¼_fTVfŒ-d!ãPÖXÆæu6]‚üÃå¤Fžç-¦ÚûxÚ/vf'Ögú â2öçÄh*÷„gûÐâkŽèŒNä‰þ’Š苦giæè½¨Â‘F锎’Î.˜Ué—†é`iq阶é›Fˆ™öŽš؆ŽZöéNçêzf\\fè~Æé™ÕéG)â[…è…öi…6j[-꡾]çåçƒ^j¦ö"Uòh jÐ}Á^¬Ö#Ü?Xî@N^]v|UÍ\Ûµ]ÖµR]îêªmê“ëg}ÇÏøVc döR .\ÑEä­ne(ê»ͼkäk¢^ÕàÈÝwl/öäuLëc”kSÄeá­bÆŽYÇæéëZÔæ³~e°ˆåͦÕÁÖÐ&XKßÅíÌ$øí§¦ µßýmP•] ­T&LfâFkãFnâv_Mî³%ìÿEÏá<äN¾mÌÌmÖªæj"ý‘â¶ÄÝ6Û¨®nϼn÷¼6Yôïõ¶ò¦Qö†ïŒvïÎŒïú–æù¾Xûæ–aˆÔïÆþê8ÒëÿÞoþ>ÿ&pÜp8ð½–j„Vl+ñ^ >ˆþÆ´Wp«{lÈNWNê3cîV7.h×pÉÄïcupÀ}Ûã^P ^eFà:fBîÝ`>ÑŸbú­ÔÊõmp¶T‚žaOqÈ\qÌeíKöfê•ZtÆjÓfrïŽmÃ.‹wýE"Çð¹>òÅÁLò QkM&TÙüSÙxîsÚvX%VsêXk.ò ïr$_ð7jp¨¾r&wm«Öl¶fà)‡íÌöóL† 8ßòAsÂür0ÿæÖN·®Rd-窎Ho]lÜnþÝ/ñ`æa#OôÁ\ôìîn—!Bÿî„°ð‚>ôI uÅuRÇçg!*]…@åõWçËXçuV¿è]ÿõºôu^7ð—óaïõ:w£;Wög·Ùb‡öimf¯ªÒ¦ölOLi×ön¿KLn÷öp‡ukÏ*l÷sgKpG÷u'vrw.sg÷x¿Ju—÷z'Kz·÷|Ÿww'?x×÷ïI|ø/J'øƒçIƒGø…—I…gø‡ÿI‡‡ø‰·H‰ïî<þ`¤–b&"ŒßmŽ'óñøãùôñ;-yasùXôqfØ Ñî\F¡3oˆe‘˜ßgñ6Y<—m®u/ŸŒ å‘áë€ß-úND_Mú­O„eQ'TïÏO£çÖ>¦ñ«‡_­' ÇãÞ¬ú¬ïc¡ï Vb3×_¯7ß ìqüuͨÇPõúûeûßMÕûÜ{Úäñ¥î°]nmSŒç_3ÔS°—Í÷$ûãvq7P¤§ÝôLrf®k\¹ g( ÔµíFÛˆ^þëÒ¬}o=Y²ÖsÉÎsoZI®ä¸h`@÷kÉ­e*5gëˆd=¯ÿl­ómb=ýTCDžä4—yÜOs-Eþ9-fõ¨|W½|óMù*ŸtæþÍ—eC­þñõQ”×SÑç~ª_å×oëÕ˜qÔ¾ä=õ_9îß×B´õí/_MÊlF¼_|tõÀgúD^,à „2$(°áÃ…¤8±¢D†n¤è‘£ÅŒ"5~ìèŤɓ W~l鑊— 2gÒ¬is& 2s” âH‡.’4$Ò¢J— 5š”iS§Q>=úsdJ§G³BÅØ’kÔ°ZOºÜ8uìW¨f­^%Ûµ-Ûµ[‡‚M öíÄŽT=ÞuëõoU¿pµžE;˜.ÿÑ·‡ ¼o`¹lÑîÛØ²ãÅvîyóóçœ;xv˜W2æ²r. 8+ìÉ— Ÿ­¬ÑµÐ¼%ù®¦Ú×"î×Õwü›)kã‰S§5ˆ®@Ý[“/Ÿþ|vðÁÁ£Süáp«Ùõ®_Ý{víÎe77m;rwéç÷ånùqò_¿Ï¸_±z·åGg ˆ“NAðSœ9ø „J8!…U8ß…j¸!‡zø!ˆÝ…8"‰%šxâƒV¨¢ƒ,¢8P(š‚¤1ø"Ž9êH_‡.îø#A ù£Cy$’á’c5YbŒ2†–à‚>%y%–Yj¹%—]zù% ˜aŠ9&™cE)¥M4ÂVÙ`™mºù&œqÊ9'uÚygg¢I“š6Z‰'  :(¡…z(¢‰.¤çž£Vš¢‘J:)¥•Zz)¦‘2ÚhŸfú)¨¡Š:*©¥šJØJ©ªº*•~²y*¬±Ê:+­µÚšdƒ¹Æ´«®½òÊë£7Þ:,±Å{,²ÄÂa§Â&û,´ÑJ;-µmnºg³V»-·Ýzû-¸^‹f¶¯†{.ºéª»n±ãJY.»ñÊ;/½õʨª Ák/¿ýúû/ÀF^‹Ðÿû|0 +¼pg 6šf«ž2<1Å[\¯»2|1Ç{üq²±³ ›|2Ê)cÊ*ˬ+ZÈóÌ2kAóÍ6ã¼³Î=×üsÎ@ó,´ÏA=ôÑE#½´ÒMýtÒP3-µÓQ[=õÕUc½µÖ]SýuÖ`s-¶×a›=öÙe£½¶Úm“ývÚp³-·ÛqÛ=÷Ýuã½·Þ}ÓýwÞ€ó-¸ßÛMáËAþ´ƒî8ä…G¾øã’[Nùä•c~¹ægþ9ç o>ºç¡›Nºè¥£~ºê­§þ:ë1#^£g¯÷íTßûê½'mð¹s½{ìÅûλë27n|ÜÁ/·óÿ—GüäÓ+-<ól_µó1?Ÿ|ÍßSá<ùDO}öé¯>øí£OùìkúžûÙØ3þ¾ûê/¯»ôãÿ?ûØ?¤ùOy<;ŸÍ€4æ äöx4û®€ëÝþ¬fA÷Qpi4`ÏÄW¼ÛY0ƒ43aÿ˜¿ ®°…tacX³ø¹ v"Zù¢F>Þ‘¯„ÛóÞö&Ä›o|âsHÀ®íîƒ`ëžaÈÂ.‡V  ¯8¼«EqhYÌÛ ûGÂ-‡FS õ~ÖC­u1…è £=øÀõ5ñ‰eáe(Å=RQ} =s¼6Ð×Sžñ¾XBœm0Ž:¢‹ ÙÁÂÑ…ÄϾøG>ЉûÓ¤™@N ”Ê#%÷¤WÊQpƒ‹|¤«ø;³‰’tµœ Ô¢GÇH²1—Ü$0ý(Ì<†dƒùĦ‹µdføx‰È™yÒ‘æ;£ßš©LNæ1Œô»åiyH»‰²’b‹â+§9KFfR’ÌDå³fNÏR…²<¡ ±É¿~œÃä&@·)Ðbÿí˜2Ùå@¯9¶O†³¡ „¥=ñ¨O\¦mž[Lh@™WÎuJ”ÔTh¹Òxò­’ß+à QxÒj/l¦TJ58NVvÓ¥«ì(AsZLŒòT§93hçÏÎt”±lçCÃÇ@"FŸ=)%›çÁ_Uš%*QSjM"®T(•)ã¾*ÇÎ=Ó¡µªS› QIÞ/•,L'E½è¿zVkàÌÝP¯ª×žbu¯ÿê_Ê׌ZÔ§ƒ=lÙòúF˜F®°}+d +ÙÇNÖ¯”½¬e3 TÄbV€‚­,g3;·Ï–ŒÐâà´ ÚSÂ3®«íìkEÛÐÒö¯Jls+[ÝÖ–·o³ý­oƒ»Ûáö–¸À5®pù¶Ùã·¹Ì}nr¡‹Üé:7ºÖ¥®t«»G ª¬»Þý.xëD…ñ’·¼æ=ïyI¦­ð²·½î}¯D6#õš ¾ö½/~ó[!ùꋾúý/€,`Š ì #KÜ€¬à·—¿SÈB0ƒ#,á _ÌÁ7Ù…3¬á Ó«e^ „9,⓸[è=1ŠÉëß³¸Å.V–ÃƧ¿¸Æ6¾1¨, ±ã¸Ç>þ1¡ œ þòÈF>2’ˤãš`8ÉN~2”´ä9ÊV¾2–Iôá-ÓWÆ^þ2˜Ã,æ1“¹Ìf>3šÓ¬æ5³¹Ín~3œã,ç9Ó¹Îv¾3žó¬ç=c‹Ë~þ3 -èAºÐ†>4¢­èE3ºÑŽ~4¤#-éISºÒ–¾4¦3­éMsºÓ„;ess-17.11/doc/font-incor-s.jpg0000644005071500004540000010635313202324173013035 00000000000000ÿØÿàJFIF``ÿþSoftware: Microsoft OfficeÿÛC    #%$""!&+7/&)4)!"0A149;>>>%.DIC;ÿÛC  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀZ"ÿÄÿÄW !1AQU“"Sa2Tq‘’¤²ÑÒÓ#35Brtð4R‚¡$bƒÂáCVu±Á6Eds”•³´%7¢ñÿÄÿÄ1!QR¡Ñ1"Aaðáq‘B±Á3ñÿÝ(ÿÚ ?Ù¹]Êë‡'îP ÛíJ¸»1*ÐÓ@jôR’vÒ¢}ñ>ÌT)ªå¼X‰’ç"-« ¼ÛŠßµ)APù«^þÚu‹¥Ö\SkJ\ÂpG¢ß]WZU&"Ó|Qy¾m*!m¬äåzr~2Ö½³‡—Šâ˜›í÷¿Ìò˜fûÌ-çk—{kÜÌþM9Τ¼ ‚~vê?žÙ=Ê?—Z­Û–÷ ­•ÛT§<±¥8J’Ø. j '9IÛN2F _rÞèìK‚+7«Œe;Éø¹„È!‡A(­ZÆädcIÎûíìÁáèšcSÓ?™ff~Ò™ç¶Or£ÆOåÓÏlžåGŒŸË­ž'¬—q÷™’Cr-Vè\ë:yÞs ¸8t(ð9ëÚª­àZ\Ùai¼Þ$ÛtÉ–˜¡1užyÔ•Î ”Œ'pS±ÜÖbžoj>?3ûñ¹õsVùí“ܨñ“ùtóÛ'¹Qã'òêس¹È ‹0ä¿k<¤1W%¬°ãÍ%’Sœé9ÔHô³Y¬—kÂÂáNEÆÇwŸ|aJ¹³oJRãŠF.§Ðô‚ñ¾uS¾O]ÓTQ·÷”¼³yí“ܨñ“ùtóÛ'¹Qã'òéÉ{kÈ·7eÍ áÓ†ß6s,¤ùZV ÚÂG2Y-… VNT›q䂤 ÓR.P[‰&…Oaù©uN/d¸Œ)HF  {Ns4xlùbŽò·žl~{d÷*aùºÓ±-²mn•º\ ¬ƒÅDuñ¥Õ¨±ÿi*‰%÷Tö9ä»6–ÕåJÙ$-Z‡ÈO¶û#‡Úô|Ûï<ì^yž{d÷*Ý8#~$׋%Â('Ûf¸dN÷/é/O¸”°©o2ÃJp¬„¢4•(ç Æk¬àðñÿóûø/<Ï=²{•2.ž{d÷*N^noGSé±Áp6ë¨Ë’áRÈ_¿)$çVRŒg…10xl:¦2|~ebfTþ{d÷*{d÷*LÒê>{d÷*LÒê>{d÷*ë%ãmf}¾'è[bR –ê–¥§ ôÓÃ@íã[Ž&bŠh˜‰·ÇÏ’Û¹¸TwYñ›üUdl¿Ú)…ä%Û‡’ó\Ï1åÃFŒcNxÆ6Åt¯í&t¦Ÿu e”§BšiejYu䄌•êJ<8ZÇÔ¶û Ö…p8 ‚6 ƒ¸ äwb½3ýK~ißòÎHr%rW— z3ëbJˆ”":Ì´å” å!'VÀá_%òS–÷!“%-©k@vR¥K#*بî{Mu{¼ÅÛìÓ¦´”©ÈÑÜu!\ JIömQ Ü³ érnp%°‚ ³€¯ðûõdœ§o¿^E=˦?É’í»7öŒÔ—ä¶íÁÈÓÏ8™à)Í# Ôuï°ÍxaþÐa>ûñLæ’½o­¹©JVç*!{ÏÓ[ÁåchvJÊIi© i KªIòpU‚3è—ŽØÊ½{v:žá_L¯äÉGjä÷.ì«tÀŠãi}%/4§Z[o …¡D¥C 3ŠžàyQÝgÆoñWT¹ò‚4HSÕÀ¹˜uh m\ÚÖ„’RŒ(Œ€r0{%G¼Á•)Qšu|àZÛôšZR¥$¤¥D¢0vð=†žçÊ;ù2CûåGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CŠ{åGuŸ¿ÅOp<¨î³ã7ø«µÒžçÊ;ù2CÿÑѽÀò£ºÏŒß⧸TwYñ›üUÚé_OÜñ¹G,d‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡÷ÊŽë>3ŠžàyQÝgÆoñWk¥=Ï”wòd‡6—qìì} èQÒ |6½yY^U•àîÐW¨MòêÛ¯È9;m‹Îc_2ÛHÕŽÂ÷â~zèô¯%XÔÕTÕ4EçûùjÎnYåÒíŒ[^äôã0ãŽ!%µúKZ–Nëãé‘ñ|µâ4.YÙ¹/jeägK²ÒTœŒ®Âk¥Ò³©GDwò[òæVhœ½±…hcUÅÔºñZÐpRV@žÃÓ?0«/þÒqމ‹ŽÏCñÖûJÕXÔÕ7š#¿’Î}gµr¦W.aÞ¯Vô2–Ф-m­8BÀØ(ž*ÅsKÏíÉÿ̹ö~Œ¯ÎwŸÛ“ÿ™sí牉žÛZßþ‘Ò×ïªþ}‘Uh‚v~yPW:ÃMé÷ºáÎ}ºÿÒ¶!©3_çS«J[ÆøýÚÎÝ®–lãøsW¨ý3Bbcii·NKÜaÔ´üWyÖŠÐTŒ”) HÂÏ7ÇÅU’-7$;öar×p2_p´y¤'SC Õœ`${î'<6®‹ÐÐ}Qúf Õ¦hŽxŽM)¨Jq§_Ë{"IÑß`JÖ7ÎÚwØçÂy2én#.ÌB›€–ڌћK­,…ﺈe##s·gFèh>¨ý3N†ƒêÓ4 ›ÎÉ}æ¦ËÒƒÿªÉGèÐDçßz¢BÈ)"®+fèh>¨ý3N†ƒêÓ4UÖóLG#<ÓNÅóeiV[Z0@#üyãÕQ‘c}ÈóCrçË-äa凤gbœäÄߺª?Lוڭͤ)ÄBr§ÜœǬ(9õ¯“J·7 &PsÉŸC¿«Æ­1D|qÛ†¯ôöÖ|n#m¶Ú¢¶S!µµ%Å¥¡¤Vr¥l Œ ’pvÇJèh>¨ý3N†ƒêÓ4TK{ÑîRe*HSopm(ÒIíWQ a €6V¢êùضV$";βÛÎcCk VN9;ÖfíVç[K - IR\$(Ñm1»Rr]Ú<íx °ëZ1ÇZ›9ϳ›ÿZ«‘É¥KmÈJD\}Ô% áЧƒYQ$9ÕãÑ»¹ÁÏCèh>¨ý3N†ƒêÓ4G>UŠT‰ÈŸ*sbJ¦Ò”¶òS€¢¯K/““‘°©ö¨N@†uÔ¸B‰´¡©)’ì$ã€À Ë¡ ú£ôÍFLkB® €±!(+ÒBÀ)É ;|ž®‹3ðÿÒܪ¦Ñl¸ÛííÀvlrÓ1ƒ-¸Ìr‡¢T¥°ìã[¼‹lí…˜Î/+B0‚Iô”ž<r{5—¡ ú£ôÍ 4Vm“P©2–È–òm*i-„ ©C)$“’µ¸ÛÁÞ¤[`¹ 2û¨qé.ó®Ñ¡éJH$0ÖwÏÅ[—CAõGéšt4T~™ Öj«¡Gù/:^]åzôñöž?åÏËì­å6«rÔ´¥EJ€p'àï¶Ä–½t4T~™ æ¯ò=·U4!QP$¦AKÞJ ÁN…©yÝ#YÀ3Ç9í–™Áä.c¡˜ó¤Èa¤£ÓÊÖèJÔA.€áØsÐúª?LÖáZ–ôD!EæTâN¡€¬à‚v<Ê-¦T­›¡ ú£ôÍ:ª?LÑÍ+d6«pp6PÔ ‚yÃ’2qŸhùÅzèh>¨ý3A¬Ò¶n†ƒêÓ5å»U¹ÖÒãh BÀRT— 4Ý+fèh>¨ý3N†ƒêÓ4Í+fèh>¨ý3N†ƒêÓ4Í+fèh>¨ý3^Sj·-KJPPt¨ ÒpûlAùh5ºVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf Õ¦h5šVÍÐÐ}Qúf£tdOV~‘ ÿÓÜ©WR Cžæ”p ,ï¸úÕ; àÎx¿ô ‹_œï?·'ÿ2çÚ5ú‘.ï{cF–a±L§9!KSš‰=yÒ>jüñyý¹?ù—>Ñ ýUûìáoìÔ…¥KiÄ ¥!A , “ƒûÃqñõTxÿßd f¦³úÑB6i¶8sy†°Ë…Êp¨\\PT„®ƒ‚GS˜'ª—ˆs¾KæÙqZžˆ”鸹¹ç”¬` ŽŸKOîHVêÄHñ±Ì2†ðÚZSŒ!9ÒŸˆdãã§’GçyÞeùÎwVõéÑ«ãÓ·Å\òmg·Õ}y­û{ó}Œ•"+HX!I@ edˆî~>ºó*DHÍÌy–›*ÀSÊ ì߯g¯*BV0´…Â3];ïyRrrD¹)”Èæà´$)·@S^†är“±ßÙPmS19;)Ë«=qÒÛÜëùJÿB¢@NpX@ÈÎÇrs´%¦ÒKi\@iÍ7èþ>½Û…c/þ¬^­¾•ÞŒãï*åu\ Huim¿)æ’” ' ȉ9Ü‘ÕõÕ´“<ëƒìBLVÔÔ…¼YSîn­[€q¶uŽ6¼SM¬åm¥G´Œ×Õ!+ZB‡a«•5c—ïáEq• r*l©-‡ËªiЮiGI<Ò¶Æ €IÆÛœcª§[޲©M\Üž£”-|øR3±÷©ôAÆ8üêÁIJ“¥@zˆ¯‰BP0„„ŽÀ1KnÌâ^™ˆ»]äù8Þž”¶$ƲQû¸NHVp7:·Ÿ*ëno”ñ5Ü"§›‹% ÔòF•kgc¾Çc·°Õ•²Þ‹d"%eÞa°Ú\Z@QHØ€8ÉYË ’Iiž$¤R)›-X”Ms6ÛuG(æEŠ"­wöä0B§PJsé :¸ðÞ¤\f%Èl;B|×t¿%•ç›o É = ”“Ô ;c"ÁM6³•¶•Ò3_B $öcj¶—8®""-ð¥Œôλ"%ÒLä1kTvÞ2; 9ÜêØ íÀãUî‹jóoA–ÚÄ—”ÛËMÄÈIËj iÒ‚TŒc¬ŒÖÚ†ÐÞt!)Ï WÀËIàÚùÙ#L²ÜbÓ½â÷kQ·Û®—*á%¥¦RVÓk˜½N§šo}9Ê÷p9Æ:±YïÒ¤·pC+)j4—4Æ s$Và1‘œ“¾6¿-¡J RT87R±…¤(všeÚÆµêЦ.¤%¹dˆä‡’”8ñD© ¨ú XPV €j$``ŒvWb{£žÔiÊ”$` ­Ígnç ;¨xäàœu`lS§NœcÛñ-¡')BF6UrîΤZbß>nõZt餽,¦æT°ãˆÔÅÀ¡Ô€¢ PÁèŽÒ'5¸×Že­Z¹´jÎs¤g4ª.˜X‘DÞbê´H¨åYRæ?•Æy%Ï+SH ÔÖ@GŽ3ÕRnšjÊÑŒòËn¨4—Ôñ@ÀÎJœ à’ºÊ†àÕ²•Œ-!C°ŒÐ¡% AOf6¦_•ÔÚ›ýšÕ’HŸ2}±rV ´ë|Ô庢J–RæÇŠÆÃ~²Edä·Ç·ÛÙL×W0ÅBŒ© _4 T 2t`Œn8uâ¶¶„œ¥ ØuP6„¨©(HQâ@ÜÔŠlÕXÑ7ˆ‹Dµ9—‹sd­ke‰M: ÃnNR£ú“¯PìÉÉ @ÝÞj£ÞæsWuÇæÑ ©¾t¶VñmjÒ¬„qÃ*ŒàÖÒ[B”¤$¨p$n+áiµKi$ñ$q¦Yæ±MãéýÙ®®á3 °ÃÞjsѤ8^Ò¦šJÖW‚AÀ@*Æp¬ä{ážÍ%OGšÓòZ1@)u¹…âÞBµe܉#=CM^hHiWŽ4 ¡))Jx€65rË3‹LÄÅšµª`f''e9uqç®:[{)_èTH Î 9ØîN}Äbßnº\ «„––™I[M®bõ:ži½ôç+ÜÀçêÅl¼Ó~èÓèûݸWÒÚ ¥!%C#qS+S3·Ï›ÿT¥+o1JRJRJRJRJRJRJRJRJRJRJRJRJRJRJRƒÿÔìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: ?ÙÊþùÓ\â'ïñùH»»×ô:‡°—cy9Ð8%>–ØÉÁöœç';ÝþÍðÄdÊ\„¥²¢/­°NÜt‘ž}§ãžâ-÷çíÛ9ßÅìÿχî†?íÎS-í;_Ÿï?·'ÿ2çÚ5úN'àY \\ˆ.H %Å<òœ$%GÒ;{å|ÿ üÙyý¹?ù—>Ñ ýUûìáoìÔÖZ*ï²?…¿³SYýh “JRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRƒÿÕìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: rÿTÑøÿ¯ëþ¢/ëúìÿN¬z2¥þ©¯—úþ¿ê"ðþ¿®ÏôêÆÀö\¡ükúþ¶–o?·'ÿ2çÚ5ú™ÿÙr¿Éö¿¯ëaùfóûró.}£Aúª?÷ÙÂßÙ©¬þ´T(ÿßd f¥{óE!x:u ³³AâÛ$JTµúT—ÂTÛàÙЃ‚vÁã&«æ\æ»uz# Me,6•ji¦ÔW©KôCo—=U.K”y’}تnK¼â AJ?îõ¯F$äÞ]˜Û±ù—PÛe Bµ¤¨ñÎ3éŸô¯TMÕ3´íáÚ2ÄÊ{iRJV²µQj=»WªR¼®*ËD×î.Î’TTÈ\xèÆÿ£% Qö—Çf“Äš.kïræÔhâD’FêÖT–Ò=žƒ„õú)ê&¼Ùb¿o\èN6y‘)É ;þ4º¢âö…©cøtõ“EE~?*æÛ.12*c¼Gý’›RÖÙø8à>ÐŽÓAòáÊ-κ‡1lGN©PØæ™ÔI$‚@N À?>Õëx‘kå<&0ü˜ò¡>¡†‚”\BÚÂÛ‹ŠÎN=ׯ¦ùÈY„ÜSЖtÊu•)ôjÉ9Ó„ä$m uïVómw§îðnqæCiȰÜeM©•¸·ÙVwÈHæÁß ¦¤Ç2#7N‚”¸“ìôÛ#¯ÒWPY“×82 ÌD¸†aRúMÞm_íIQÎÃ>‰Gf06È«Å~G* ç-±*£²OýªœRáø‡6ØÒ¾ÁAó”²¥D´Ã˜yÉq˜i Ò}¶ÔpvÎjrÓ!›j’‡ ÒPÉe ¬8n~J¯åC/½fO“GrBÚ™âÓ`)(ÚÕŒ‘¾”“VŒ¸^a·Kkl­!Z0¤äp>Ú |© |Ëu%´„„!<5+â'?5cTÕ*dT!.!-@ëFËrWÙÆ¦<Òel¸2‡R¡ì#Q¥¸ó [í”°æ 4n¡¤¤çÛƒÕµF¢b~YU1´¸RR²„œ)À=žÂkÌåºÒq·4€ê¤àAKHÿÔÔwm)SŽhK%(©Ei%@“¾:¾zÏ5‰2PÒÚJ¿I$œ¥A]¾ÁEÚðû:Z¢6…%•¹©iO¢6P¾Ý«3.—PTZ[{ã Æë.¿!Å 8•‚tå* ù ä-§óÉJ–)- iöï×÷Q6°ÜÄ-Ä ¶âÎ¥§[goòV&. y÷[1^·¢“¾þßš°·lqX|s-/8B¤ ñ>ÚcÈCΩ‡”¼ ¥jNH:Bvêàn¿Kܯ(*`G! º9ÒF} ~}‡ËXRÌ÷í mrÌikH%ä6’Psœ`äpÚ§V ’ H«}1ÞSѲZ²q°$|uY¾ÖCäÜ×î\˜µO’ §åBeçJ@'n­ÍYÕW%â¿’vx’[-¾ÄqŠT–ÒùÅZѾÙÙum;v‚‡¢•!R HâÎÆ§Ôu@†µ*# RŽI-‚I©îW&­­4¥¶ëÎ<ç6Ë,¤¸¬2@Ù)QÜð¢3Ê>‰:-—z*[SŒ)u’$€5{W®P[dÝa5?’ uš+BÓ¤í±E' õc®±rzÈõ£Ê ŠŽ„½¤"¥Ii$g*‰:Ž@>ĦƒÏ&9@ýúÙCÖÉQTüD>§”†”TÂN¢q¾Ùf¸r‹s®‡aÌ[ÓªD”69¦F5I ‚pϵb²Zî¶¶aÛ×.2­ðZK-4C®%)ÒdœpÁ8qÙT·ÎBȼ&àÒž„|°;¦S¬©O£VHΜ'!#lé¯z Šï~‡dv"f¡ð‰n)´8ÛEiJ‚J°@ßp“ŒÀðªû¯*d@¶³)»$ýNKi‚‡F@S¤—Ä…Ÿhߤ]­·y«´?D&ß‚é}Þqµ”­e¥·ƒ?H£¿`öÔ«•½û•Üu´IBÙ|-):9ÖÖ—Üt• uçƒ< ªœÂ\91VŽÃ}‰Ûô¨ËšûÜ£E¹…µ8‘$‘ºµ•%´g á=~Šz‰¬Öæîiçr‘Å+ŽÙJRwÜ’IÏn6ÚŽ¨¯Çå@œÛeÆ&ELwˆÿ²SjZÛ?çÚÚh0ŽTÅèIwUšÚ!ºYq…6žwP `'Vþø`q=YÈÎ[…Åø‰¶ÎÒ¦ã<ólÈeÄiçHJß¼(gRŽøLÂá^ùaˆn>bhDÉ-­…¡<ÙÒÙô€ÉÝ$öšÇ]]^¢¿p\M¶y“)¹»þ´ â@ö•¥øuuA.ä&›sý¤ iN¦CžõJ„«°`ž ·¯¶éÌÝ-‘nõs2ÙCÍê:T¸5òäô¦-Ϲ€ü œ2Ú½éYÙ:»“’{3_-VôZm­­-Knt0•+Š‚R öíA.ª¤Þ ª©±.P%+p³YÇéˆßldµªÉ–€·ü¶¦$Ä|ŸÕ»¾pâG¾ŸhÔHÞ‚{<èa°ùAwHç  *Æø«5Štæmñù×u(©A ¶•¸£Á)dýäàk+<èa¾| »¤s…„•c|g«5]Ê ØM4êP\Žè}žpeÂJp¡ÖR‡Ë‘¸¢Ý›—÷BŽœ¹iá¶FÙÆøØçYÈ8‡låT£q_j<¶¢ÌJK^kCkR†BsœƒÄn0HØœŒø²YÑÉö¦Ì}¸lëBJÄ6T”j99%DúGo˜nj«’VÛ„þIØØ% v#¹Íó*mîq­$!YÛ Zz€'HÜää-äòª4dÈt@¸?:–…He´ ”© ¨@§‡fõ&ï5ûs°d…RB1¿éB=¡ÂÙ…(ñ©%òJtɲZ­¨[®­H–Û L†’Tt”­:Ò1ƒŽ#&®oQ_¸. &Û<ɔ܇ÝÿZPq {JÒü:ºÀ —rM¹þŽR´§S!Ïz¥ ÂUØ0OÛ×Ûtæn–È·ú¹™l¡æõ *ŒŽÜùrzSçÜ‚À~PNm^ô¬ì]‰ÉÉ=™¯–«z-6ˆVÖ–¥·:J•ÅA) ûv —JRJRJRJRJRJRJRJRJRJRJRJRJRJRƒÿ×ìÔ¥(¦T: rÿT×Ëý_õ¯ëúÿ¤©ªkåþ¿¯úˆ¿×õýÐþË•þOµý[Ë7ŸÛ“ÿ™síýLÿì¹_äû_×õ°ü³yý¹?ù—>Ñ ýUûìáoìÔÖZ*ï²?…¿³SYýh “JRƒËŽ!¦Ôã‹J€T¥(à$$š«s”Q"òs§'ƒ9iO%S‚¤Œze#:xƒ·Udå®|™º[ãéç¥Cy–õ JA'ã5]Ê'äçaDrZ¦AXŽÖ€V´ŒƒïT ߬`ÐK³^¤]_q* ¶œ•±9/à“° ³¾þÊœ.vò–T'F"A)dó©ý!Nûï¶ÕŠÒ¶an³lrU¤¡ÖRڕLjßÿ:¡ä|Ì™)zÀüI •"G<û) Ò_Z›äàéRvžÊ Rã"R"*CI±©-€µ ÷‰à~jI—aÉrŽ‚t…:°OfOÅZ=ÆËwç2§fºì™ u‡ãÅiA «-Žu^’ p”õà$¼VÁtel^|¾DnQU,¶ËH ,,)EJÒvÂHÏW6;h-¼¾ÂØýw1úÁúÏð³dD†\yÆPóju¬sˆJR3¸ÈêÍi–»jä2Q Pì{Ó’K!E!©êR’“Ö­)» ”Ów+•æøã¤ÚÌûSME”â@)qá©@” ‰ uœõPlìË%Ç[bCN­“¥Ä¡aE}ˆ8š±›¼8–ÌèÁjp´Χ%cN3ÄdmÇqZ­ŠÛ=›Ì"´LdE K Æi¦ÔcZwXդޯz±Xg[r-\fÈÿ–KZ„5óIÔá,!°¤í‡¥gc‚ é&\hM‡%Èj: ÒêÂA=™?cé;~¦ÓåѲé ls©ôÉ€7ße$ü£¶ª'‹’.’m’'Ez"n0l)q—•)D¤œz@¤ÕÍŽÚŽõª3öIaZ›¶É$Îå(%Ä’¾:‚Jû»ö`64ËŒ¹Kˆ™ *B¥4 Ò6ÜŽ#ˆùë ·¢ë܆ˎºÚÝYfœ ŸiQ¼(þ騞ŒçïÏ2&æBÓ©8[l†zÇ£éx)jB¾§ý›–¯)Ý“>ÞÒ=EL­Ò°}¸y$°ÙA`nvð—”gF9 xó©ý'Vûo¶õŽEѨïÁÇš¢„>…¢Hϱ@n‘ûÕ«]aH’õñæ,Òè|ÒþPƒ¹;m·´ œªæø¤Ê·Úá2ÊšvTÈ®6Ê“‚Úq/P0–ÈìÉHë ¾¯.8†›SŽ-(BR”£€8’kÕb’Ñ~+¬¥aÄ……c#ÁØüF‚3w»K®%¶îÖµ”¥2J‰àͽÚZqM¹t†… ”©*€RGFj¶7&ä±)§•smaµ…ˆ §89Æ@ÈøÅ$ònKòy76ÐYPI€Ê±“œdŒŸŒÐ_6âm.6´­ IRNBàA¨—k¬;%µû„÷’Ó,¡K9 `„ƒÄà ‘¢ÄV™RÂËh * Î3°ø…TòÊ*æòB먊–û±m–Ò¥kRJRFx`ž=™ ÷f½Hº¾âU*m9+br_Á'`@g}ý•8\íå,¨NŒD‚RÉçSúB0÷ßm«¥l:ÂÝfØä «IC¬¥µ+Ž¿þuCÈø1™2Rõø’*DŽyöR¤¾µ6ÉÁÒ¤ì;=”:¥ÆD¤DT†“!cRZ+jîÀüÔ“.4&Ã’ä5é ua žÌŸŠ´{–î%ÎeNÍuÙ2ëÇŠÒ‚AV[ê½$á)ëÀH=x­‚èÊØ¼ù|ˆÜ¢ª:Ym–XXRŠ•¤í…‘ž®lvÐ[y|/…±úîcõƒõŸàþ/gȉ ¸óŒ¡æÔëX畤gq‘ÕšÓ-vÕ;Èd¢<¡Ø÷§$–BŠCSÔ¥%'­ZR;v)¦îW+ÍñÆ!Iµ™ö¦š‹)Ä€Râ ÃR€;(@ë9ê ÙÙ—K޶Ć['K‰BŠû8p?5c7;xq-™Ñ‚Ôáh'NJÆ2œgˆÈÛŽâµ[¶{7˜Eh˜ÈŠ—AŒÓM©:ƴI3Œõb°Î¶8äZ¸Í‘ÿ,–µkæ“©ÂXCaH9Û%JÎÇ ÒL¸Ð›KÔt¤)Õ„‚{2~*ÇÒvýM§Ë£eÒØçSé’o¾ÊIùGmTN $]$Û$NŠôD6Ü`ØRã/*R‰I8ôH'«›µëTgì’&µ7m“IÊPK‰%|t”÷wìÀli—r—2T„ Jh,¤m¹GóÖn EÖ=¹ —uµº²Í!8>Ò¢xQýÓP9=?Ïßžd"MÌ…§Rp¶Ø õGÒ ðRÔ:…}Oû7-^S»&}½¤0zŠ™[¥`ûpòH`+²‚Á7;zâ®ZgFTt*t:’„¶'8GÏXä]Žü@\yª(CèP) )ÔŒûöé½Zô«V.¯rm†ZÛ‹‰šòèÐéQŽZÒß<ã¸÷¢­9D„¹Ýma :ôøÊm  C.¥ÕŸ` lŒ¤uÐXܦ}¹ù¡…¾Nµ¡ø¤n¬²HxÇ]HmÄ:Ú\miZ’¤œ…ÀƒX.™¶Ûß›#W4 Ô2¥c¨²xÖH“°^¶rf×o‘§ž‹ –\Òr5%ŒPYT7n nóÚ[%R#¼ø^vµ6’1íçGÍS*–WþÜZÿðÙŸþH´®wÛ"¢B›.ÈaŒŒK`ü…yù*eRò¯öCø”ÿmªº R” R” R” R” R” R” R” R” R” R” R” R” R” ÿÐìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: rÿT×ËQ¯ëúÿ¤©ªk娿×õýÐþË•þOµ_–o?·'ÿ2çÚ5ú™ÿÙr¿Éö«òÍçöäÿæ\ûFƒõTï²?…¿³SYýh¨Qÿ¾ÈþþÍMgõ¢‚M)Jj¸¿Îäè‚-ŶÃåÒ°[$œüê5·×>þÕ?÷Wüoù+Ýý>Škâi¦¨¼oÿRôpÔÅX±û±ÉŽVßnwØQæ)¿&’\6V”·ËŠß’Ë/²ÃŽºù!´u«'æh®gÉݹshBTˆhæÀà2ÁR±þr¼ûs[»^Ÿ.%s»ó6Ö|Ÿ=ZÜwÓñèg?k§õ*(£œ‘h˜¾ßÞ[⩦+Œ±m“‘u‚åÕv´¾<± óŠh¤ƒ§ÑÉ>ù<;jeksnvöùqn×:2y»|Ä//$iW9c¾Çc·°Ô~S\.¼7 )q˜~NKÍÌLb㚈Ru(~èÒqׯÙ_5äl6Û\DuG·ÆLv”²áJs‚£Äüµ.´ë•ÒsœŒƒ5ëŠ Ì7ç™q% Hl“Ô PJˆm¶Â¤76U²á|¶ÂåÉøvæåÇa÷u¸§UÏŒñÁÐÞÝZ½´MyJе))ZTPt¨'àü„–´Õ¾z°µ”’eyl²©-ÃŽpýÁ¨ £¯‡U|¶C…k½^œ™|šÉjzJ•úäˆìœ”ñ^à§oð㪃l3â‹·€”¦KᬔOgÊ+ ÎËm¼¡(¸ÄD” (¬œ`ã#nÜ §½´™œ¶´DÅR­òʃ+ qC\rañðí¬êBTRTJNRHàqŒŸž©9<×”[.\âÖ‰Ü%¥çpàêBzˆi-ãØTð/¥Æ9º+Ë$·1¢àôÉŠµàêW8”àæƒu¨òä3ëjQçÊJ©CZÒŸ›$ìê­.|¹ GåuÁ»ôŒÙÞZâ³Ï (W“¶æ•‰%ÂR{í«ŽU\ŽÄ M]üÄË‹„"@J]iÇÛJЇï'N­þ: ‰kCiÔµ¥ œ¨ãrpÊH굎X°ÍÎÉS3žK-ΊJã=„ùKZ”HÛÑœõ`š”™aØîB ïž[ -ã*K¼úX:N #¨i'}íb“%˜q—"C¶›RWõÙZ}ž\Ž‚Ò§J 8µå¿/D°âƒkÀVP2sÀ¨$vUß(=)–6—¼w.CžÞ-:´gþ*[#ÚÕb“%˜lä8i$µp önxÕîK‘¹GmT9n=)hptX|! úCžNÞÜû)ÉÔÛÉ7«‘¹°øpJ\‡5ge¶{FÛü}tb%™‘‘";ÆœJ‡_õÙP92ô™•´=1KT— ²§‹ƒ +(Yöç5‡“þŒËãHÚ;w#ÌïF¦šZñÿNí&‚ê•©My\é j=̶§TRQvJFvÂtì=Ušå ìç’s \U¦2¾jæ–ð­òÞ‘íW]¼x–¾N[ænP¢êñœjjõJÿÑìŠBV0´… ƒ‚3¸9ç¯T¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥”¥¡ÔʇAŽ_êšùj-K—Žaµ„‚I<8ýqPùÖz¤7óÿ^ʯþË•þOµ_–o?·'ÿ2çÚ5úd]’åÚÚÐ*TF£¸§3±Ö¥àˆ#ý}•ùšóûró.}£Aúª?÷ÙÂßÙ©¬þ´T(ÿßd f¦³úÑA&”¥µ®Wò]þRù3%¶|Ÿ^u‚s«OgðÖËJë…‹^ q]0ÝÍf§å¦Ø¹:Õuƒ)ùÌ<Ü0àJR‚…¶{2¢~S[S°™zlyŠ?-(RN2•©'´”Ÿ"¤U9ZåòÁQÔ¥­ÐÐúPË[Êq9?–ˆüÃØ*ãc×VjþW¬I½I«´Û\ZœrßkQ%JS)$žÓµf~4yH Éa·B\@P·z¥v;LrúÍ%r­Ò‹Þ™ÂÊW$ã8Øó׋÷*l¸¦ÚË‘ÛKë\½ *J@Ò $”«âÇ´W5Ûâ¼Âv3.4ŒimM‚”à``um^“:d*JXl<±…85(vǨ|ÕE+”¯«“Qo6èaÒ즘[( ON“Ãß‚v#zÊÝõø=&‹ÒB­±5ÅÆÔ¤–•Îmƒ¾¡Í+眜u»“3fND…2éy!¸¨d— J)Ý^‹‹Øöæ­œ‡çÐû±™qÔcKŠl'#«z¤zë~‹q¶G‘ [¸ÊæKª%”†Öá íV€FÙÙXl²¹LýÞèÜ…ÛÔÌyèm`å ,2¢·ûÄïÖOUƨÑÕ!2TÃeä %©#°=g磣ÅAn3 ²‚rRÚA=»V¿wòÖ¹imUµ¶ÔûöéIYyÂ.0A qÆ¥ý.ʶ³\s· 6âu‡NF¶ÜSj#ØJ ÃAÿÒëÌBf<¹2Z+”R§F}¤:±Û¤$bGeAeÁ€µ,8UÍŒ•Œá\8îwöÕe•r&1s¹%@ÉzSì4‡ ÐÚYZšBvê%g¯+=‚±Då©Q91/˜e-Þ’9äê9mJާ†žÑè¿h ¸0!è1!ó—G6?Hsœ«m÷ßzðý¾Ú ƒ"RÚ §ÑÀHÈí;mPIåâ7NH0â–GT]W8­O6C¸HêV•c}²G¶¬9Jûñ؆±3ñŒèÈy.•§ÛJœm”¨êß°PZ¢4vãù2m,G6pxŒpë¯-ÃŠË a¨Ì¶Òó©´¶U‘ƒ‘×µSòºMÚ%¾3–µ°S#6át«>“í¤Ž£¨ƒì;Tô?s‹j“"lvdIi+[lÃ'ô€'!#Wï‘óPHb(«.FˆÃ+#M¶HìØRt&n1ðt(¥@¤áIRHRTQ h­~ÓÊi“î±áë·>‡ ‹‹akIm!$ðX‰Vž£V¡ZÜèÛpR‹ŒÀêIÁЖÖê‡ùƒZ±F‚ÍQ£ªBd©†ËÈK…RG`#X ‡(¹,¥ÏÑ Ùi×qʵ6‹k¸+8VÄzè/j<LÛ¢&3èIR‰QÊ”¥¥(ž²TI>ÓX,w]¬ë’Û ®dVŸRrV¬ž£ryko¤­ÅJZ-Ó )G'B›C©åèÄŠ ŠV¥7•R£ÎÂfÚRuHĽ¨`ã|'ø«5Ë”’!ù&‰vÄsÑéçRöäçtà{ÞÌïA²­q mÄ…¡@…%C ŽÃ^* q˜m”’–Ð íÚµ™WWî<—.ªDuó—±–¨šÂKk}¤­'P%+PÛ¨ÔËDv­Ü¦¹[¢…7â¾–ŠÊ€ZÖúTw$î@ù(-àÂfÝ1˜BJ”JŽT¥(•)Dõ’¢Iöš‘TüžZÛé+qR–‹tÂÃJQÉЦÐêGùCº±"®(#Í„ÍÁ„²ø% y§†=&Ö•§ÿô‘R*Ÿ• [v–…)$Ü`Œ¤ãc) GÊ qAß ›eº4À†"²†[ 9:R?©OÉ­ÞEØÜqJZÕnŽT¥’KiÉ&®(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(?ÿÓìÔ¥(¥(¥(¦T: ?ÙÊþùÓZõl7?ÙÊþùÓZõ;?íÎS-í;_Ÿï?·'ÿ2çÚ5úÏûs”ßËAûN×çûÏíÉÿ̹öê¨ÿßd f¦³úÑP£ÿ}‘ü-ýššÏëEšR” R” €å½bøÍÉ…¥9d±%þÑ êAøÒ¢¬{W²§Õjç<ï(QncHmˆþQ)Do…’–Ò>2— =Zýê²9.Ô›—H­Í´£Cà%e%I2”ü¦Ü-,Ïqߊúžz2ô,§Ž’pr3¿ÿôÖùI=¾é5ÄH ÚSr€dêN•Zt¬+=•öãÊvË‹V÷š’¹´§YCL•ó$ã‰#³zÎOF›jfܹ2ÐÛO!þqáÅ-*Ö $oéá_‘6XÂñ*æ§qrØLwYq@´PœàiÇûÊúF½¦ìÖ®‘a·ßl’ÛM•8¥IÓÇ)P ެÁo¸!—ƒ=+“pB¢´°âZ˯$zE#¬ç$uoAKÇ9ÛݺSÑ%FjËuQ1/%)--¾mp÷é99ÙwÞêW'£I–ì&[A Ë.éCÄ$'*ÎéJS±Xy5Ê>Ÿ·D¨£-ø¨}J[$5’!*kÛt™òIKZ[Î2BR ;|B«Ý»»f±G›ziÅ<²ò"¶\ )gdíÔ Õױ렓n·®ß"hBÒb¾ñ}¦úÛR·p|EY_Ƶ{*|‘€ÔˆN¢DÀ-î…Äožô%:1ïJN0z€Þ¬»0ýæM© ¿ÏFm.8²Ù á\Wxíì5ŽË9élÉb^“. …Gx¤`(à) Ä…¡DuGUw¹- ø×xîJ˜[¼+T‘ÎðôBHNÛñ_n<›jèÛ ¿q¸% †ðx JmAIYÛujçØ*æ«çÝÓo}-3äe:µGŽ\HÜí‘×µÕÚYzÕÑò}ô‚qyp(+ZUœqJ€#n¡X›±2˜3"¹.cæcE§uì¸AIÆ5štâ<‡Êú:ãŽw›æ¼•\ç çOøz³ÛY ]Óp}M3ãá:µHŽ[IÜm“×½(¶˜–Ô—§M˜¶ SI’èRP¢’@7Ò¥‰F³]í럢ÂÒܨ¯%øî+€P؃ìRJ}Š5>ª_å$öû¤× 7juMÊ“©8JTHiÒ°¬öPAå9×™íÆÐ„™(S²‹é£)!ÀÇt©H?î©XßurbL›sñá¿äïº {­¼ìT= dhãÊvË‹V÷š’¹´§YCL•ó$ã‰#³zΛ³ZºE†ß}°JKm6TàPV•'O¥@‚:°h$ÅŒÌ(ŒÄŒØi†Km¡<0Ì*-¢Þ¸Ý/­.J”òŸâx€Ĥ%Ø‘Xm÷#’ðg¥rnTV–KYuà¤H¤uœäŽ­ë&¹GÓöè’Te¿©Kd†²@$%G»EÝ*’_+-ðćjb£Ç+Jä7JkRI!C‰Ô qþ-ªÎ|Ö-¶é3ä’–"´·œ d„¤vø…ÉðY¸ÄTgõhQJ‚’p¤)* Jí h¬6ëK6çx>ü—Þ JÞ½K)NJSœ RùFMÝÛt{cWvœòË‚Ãd0ÙSm8wÐT:€Û'Ž’jS7f¼Éµ!·ùèÍ¥Ç[!¼+€ àO½†ƒå¢Þ¸Ý/­.J”òŸâx€Ĥ%Ø‘Sê¶Ë9élÉb^“. …Gx¤`(à) Ä…¡DuGU9æ¹B»súKoÇòˆª| „¸“ñ6AëÖGîÐAåÆÖëbÞõΔ¯’ñ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(?ÿÔìÔ¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¥(¦T: ?ÙÊþùÓZõl7?ÙÊþùÓZõ;?íÎS-í;_Ÿï?·'ÿ2çÚ5úÏûs”ßËAûN×çûÏíÉÿ̹öê¨ÿßd f¦³úÑP£ÿ}‘ü-ýššÏëEšR” R” ©Tw£r«ËRÚœbtDÇq@~©M)kGÈ ã™=E)½VÔ Ö/<žºË|‡LVؽ%EÇ +mE”µ€ÄØß9ŽÛ ÎT ›¼£·\œ11á:ÃéJ•«[…µ±€ZO¢jæ”È7Ûel$[Ü”¹¯¿ºÖqÅ8Fqœ…/¬Ü˜sµY¢Ûn"“;L4¸êQ+ N’Tà8{jæ”v;uÞ×µÇbYK(Z5]JS¥:OQ8'q޼ÕdžL]$ÌèX[¯-MÊeç’ã@¨”¨6=°0wÙDdñ5·Ò‚ÞÞ›µšuµnÓ2;Œ’´”ç-WÍMæïÉ”6Ã1âM|JnFJP88psœ1ƒŸe^R‚šÓj•j¹Ëm®`Z [(Ô¥:—0‰'ˆ8í$cÛîÃä¦té ©—.2ÌŽiC ChÏa(m*#¨¨Žª¶¥«çØ­×7Òü¶V·¥å£l“Á$³V «÷9kò"ææ9ÞwO”9XÆs«<:³ŠÉÅn¶>§â2´8¤è%O-{d $u °¥µ‹Ï'®²ãß!À“¶/IQqÇ‚ŠÛQe-`±67ÎF£¶Ã;=()•æï(í×' @ÌxN°úR¥jÖámD§l`“ǨšÃlƒ}¶YÖÂE½ÉKšûû­a°‡S„gÈRññ ¿¥7& \íVh¶Ûˆ¤ÃŽÓ .:”JÂS¤•8Úñc·]íqá[\v!”²…£QuÔ¥:S¨„õ‚wëÍ^RƒP“É‹¤™’ u婹L¼ò\h•Ç Vû(Œž&¶;½½7k4ëjÜ-¦dw+%!i)Î>Z™J fõtˆ®J|Z­²žh¬%)+So¶AÔûÚVSÛ·mXrm…"Ò™ªMÀù[êIÈÔ°0zÂR€z«jPTØc¼”Î!µ2åÆY‘Í(`¡!mì% ¥DuÕDÇzO*¼µM©¶ ÄTvÔGëTêµü‰ ·ƒÖT¡ûµmJ_Ê „râîû4ÚQIÂÖQTbëÜž§ÿeû×þüõ¼»îˆÃ‹ü#œ?&ž¾Ý¸ÒeÊ, úÈ)eoœ$ŸA8ÏËé º—†²U{Y.•ån!±•­)2£ŠúPAÜU—ÚR” R” R”ÿÖìÔ¥GL諚¸Iƒ% Ô¦ô€Û||£ç¢ÄLü$R”¢¥(¬2e1 :äIu,²ÔµœÕ_dHn3aÇ +BwR‚Gú‘E´Ë-)J!JTtΊ¹«„™2PJhH ·ÇÊ>z,DÏÂE)J!JRJRJRJRJRJWÀB€ ‚àŠ´¬,JbIt0ê\æ\-¹¤çJ‡}»ŠÍE˜·ÉJRˆR” R°ùSWäœê| ·Îsyô´çÇfk5Ö)JtYí©È’ò­*(9ÁÀ8ùˆùèZmtŠR”B”¥”¬2e1 :äIu,²ÔµœÕEˆ¾ÐÍJRˆR” R” R” R¾wV&%1$ºu.s.ÜÒs¥Cˆ>ÝÅÒÍJRˆR” R” R” R” R” R” R” R” R” R” R” R” R” ÿ×ìÔ¥(¥(¥(¥(¥(¦T: ?ÙÊþùÓZõl7?ÙÊþùÓZõ;?íÎS-í;_Ÿï?·'ÿ2çÚ5úÏûs”ßËAûN×çûÏíÉÿ̹öê¨ÿßd f¤,,´ào^²…iæÈ Î0NÙøö¨ñÿ¾ÈþþÍMgõ¢„4Û#sºj)Ÿ§TÂIu’4ùJrO³·´ûÝ©znq½ÌÒ™ä!¥ÖqýáE8ö‡¬qVÕ¹F…HŽÚ[)i ²)ù5ž†D¿Ï–ÒçyýDŸ£›Õôv®Y6µÞïSó[ö÷V†›~èº6Òa4¦‘+J†½Kð•ÑäŽÛŽñ$:üxŒ)F3MÝn2€ZJÓƒÅ!Js`F1€+`‘<¶Ãrc´úÈKˆ öà×Ç`Ä~:#½—o[`¥8Õ©¥Æ1bñ3ü![Üq›¼»rå9%-0ÓÉS¤‚¥8Ø ½õuš´¬)‹U%1ÚKëS¡)Cm‰ãÔ>jÊ9ÁáÆµ9W1TÞ¥îñ*;SgÇ\Ü]a¼-¤¶TˆRTuŸL¶21ŽÓµ‚ƒÀŠŽ»t_SîBŽ·VSŠi%D‚ ÇfßgBÓim´%@)HÀpTˆ˜–«®š©ˆˆøCº¾ë-°†ÖZKïœÔ¤‚sÙ’@HÏZ‡Eøó¬\\¸)¸®­¸‹ÒVâÆ?y#‡?xñÚ­Ö„:Ú›q ZRT2€râ€=¸5éæ’Ò™}¤:Ú¸¡i ¯¥¤Šé‹mñûÝw’á}ëŠä¨%) K`í¸qíãö ć§ª*ÚmöDS§IHÊSw%@‚G¾NÇÚßS-EÌÕ2S%„”%IÒâVês‘ÃðÅOv GÝ瞊ˎi(Ö¶Á:NA=[½¦±»j·?£žÎm!ÖÊN”Žm°öVr˶¥;mðy}ÔÄgÉŸÓÎ;¤ókJV±¥G*ôs‘“ž ®ºh\—Ü™ùRBƒhЕóemƒ¯ÓÖœ¤’s¶6Ò6ß&ÉVè+Œ˜Ê…L å-’R“¾àcg篭Ãj,g‚Ó1ud €¬q c=_5[MîÌWLQ–™ÒWiµÜ ÉSdJ ¡Æ0'VÈdŒ¨žжÚÆCÍSÂ˨‡$Hlu±Y­†mqoKNHi”²d% …-)xžuõVEÙín¸§¶ÄZÖIR”ÂI$ñ$â¤DÙº«£<Ì|n…x–ñ”ˆ‘• )çæÚ !>’öÇ¢­€ìá× <ùRù?ì™N„Ä}ÂúRyÖPáIÔ@9!)ÕèñÜ#ò`Ä™§Ê¢²þŒéç[ Óž8ÏÅQåÀ¦–‹l–`J”âÓ(©G÷¸ý§9¤ÄÞéN%ŠlÇnSÒ®&ùK¦.²Ë œiôvRøgß>LõŒYÖq“ S§K-¥±¤`` l2{;Mg­Cs;5YÒç§ÊÞL×Є)ÁÏ0¶–Ói‚y²u•$ ÇøÀ#j¶˜ãÜüRœ„ÒY¥ÆÈ uD@*a '?Æ8cy=nò(òÜö­|ç2Z³œçÎzë,ˆ±å¶“§ÐB\@P·³–]§™µ¡O=Çârnîëwe<ëZÛu! ´R€R“Äp íÔxmR´Ë‹Lá-˃èee, ¶¥H'qMô‚ð QÉÂA-9á”ðê«EÛ ¸+…@6šIôÈO€q^×;‘¼™qÚSÍ)§€Ç °)igR›D[ãÊžÅqyÛ„èO¸éÛiÏÓ¸ÚÖ µçtmŒ%>ÝÏh©6—[UÆðâITÄà ÿ@ÕLEº iÒˆQÒ e¼%¤@œ”ðàI'å›Uº3©yˆšq<†R’:¸V"J«¢ff"×k׻ĨíMŸrCqu†ð¶’ÙR6!IQÖ}0FØÈÆ;Mœòû×ø‘Y¸¸Ã/ÅukKzI%*oII#cé݇º°]º ¯©÷!G[«)Å4’¢Áã³oн1ëo&+!ÆS¡µ†ÆPž¨nv©–WV‹E£âꆮ2µ°9ükšìW%m–Е¸”¨õj:R3Ã+U•Eøó¬\\¸)¸®­¸‹ÒVâÆ?y#‡?xñÚ¬šƒˆëŽÌV[eÌëm €•d`äp;R4õy,VX×\Óa:±Ã8øêÚRq)ÞФµÏž©±¹ÎqÆegZy¢t•ØA'p9ØñÛx×çÜ~ÁxôõE[M¾ÈŠté)Jrä¨AÈ÷ÉØã}‘¨1¹ Åe·œÎ·Ø VNNO½ƒ÷y碲ãšJ5­°N“FOVçoi©–mf£˜®*³0 €AÈ<ª¾Q¾ìKRd3,ÅSrÂN•8”«P€râ€=¸5rÊF%11²–\éÎrz4Ÿ(LI^VÓJRJT“—ƒg#$c’Øí«øpë;:sÖX®)ie÷Sn%§P½:öA$¤+ÑŒœ¡Æ­ÝƒøèŽôV\e¼hmm‚”à``pQØ1ŽˆïEeÆ[Æ†ÖØ)NµbÒï”Z"ß x3&´ÍÉDÈ’ôxé[1]Ð¥~G¦Œ‚TAê o“â×>z¦Æç9Ç•juæŠAÒT aœmÀçcÇmï#ŲÜhí0‚rRÚA=¸ñ¨1¹ Åe·œÎ·Ø VNNO½2ÊÎ-3}¾ZäésÓåo&kèBàç˜[Ki´‚A<Ù:Ê’ãü@àµmU¢­ÞQåAžÕ¯œæS«Vsœã9Ï]K«0Æ%qTDD ^%*4D¥¢°óë ·£Ns‚£‚¢:R­Ï^8ð0,ßzå: Ëu^NÛK÷ZÁQ^wFØÂS·Ïh«§˜fKJeöëjâ…¤(¾¼3$e%LEe¥%:Ca$'9ÆÝYß´˜›ÜŠéŠ&™ÕTJ˜Ùqëîd¼”!JJRF³KdŽq¨’n·@ü¹eÔ®­ iO4–ŠRv* :½$Ž7Ø#Û Äp¹vF ›i)$vd ôìÈD‡¢²ãÍãC‹l'#ˆÞ¦Y³¦­9¦m³=)JÛÌR” R” R” R” R” R” R” R” R” R” R” R” R” T:™Pè0\ÿg+øçMkÕkƒr¸EŽÕ¾à˜^ûœ&?;¨dc÷†7þ»h}Ëòƒþð§å€?ÅófCÅŸöç)¿–ƒö¯Ï÷ŸÛ“ÿ™síý g¶›t«òd\ÄÙ«b':Ç7ͧSš:È$äüÞÐkóÕçöäÿæ\ûFƒõTï²?…¿³Rï0ÓÍ¡JËŠÒ‘€Nç¨{jm‰—V [Á?ÃR¸DJÁ/£ÛZŠ*˜ÚœZ)›LÃVµ^&ûzÜ¢ì™.+NJÂÒÒôxód¥#÷†ç—û—v˜Ã[І£iT’CêO£Ä¥) ÿ}oLN¶êç%å¶ÉFJqé©En¯üêÒqÕ§n4u0š©.ÎJ‚žmjFž(l„gØá+Ïɹèâ[áíõœ6{Þ6üþ|>?"Z¯6ç¡¡9&¥CŸ!”Ñ á¿¾P''Pêá"MáÖlÓå¦: ›zUÏ2¥œ¥!g Æà¤‚6ëã|bš›|ÉÍÌé7Ùu–”Ûe¥¨‚£‚IÒùpÎôy·­R-æjÒ™)!çAã™ÙD’1’6á°ØcÓÄßgQÃÎ[Ì~Ï„øOyÒ©ŽÉO¢ ºœÚÓŽ<z¾L6‡Vë·ôf™}‚]æœ+JÏ4Ù É÷JGªð̨¬Åq•]žuKÎ^hÈÆØHqÜ áKr@½Jtº½n!Â+Vœœ  U]:öÚYÖÁµ_T=νKbË„XM¿"] *wJÖ¦òŒ`FäŽÛ>f99»ôÃI[ïBx8Ù}A¤”©£žZ” Îã«…eèµ13!EÔ”)$¡æÒÁZ‡¿#:ÀäÇc“›‡€åÕ›ž´­–”Ðl …Nvϧ¯÷G·9ÓÄŸ´ºkàS1T}þÿ¯º<û­Åv–$Âi”/Ëín… l„ú')$(dààçÚ®"*Zš&cl¶æ­ƒ.Œ|d øÕK-[·9W]JÞ/‡S­ +ב€Ëô·fÕ"˜qu•Ü’µà¼¡°À ³ÕŸ˜cQ‡‰}âX¯-©˜ùZÕCw+›Òæ²Í½•"üÚ•Ïภ±¤cßa[ƒœnwľ•ƒð„ÕbË÷K£ÏÉ“ ·ä%C›y:_@m(êÉO½;' älœ:þÑ)‡‹ƒ¾j£ý®º‰3â6ʨ³!ªKNä…lQ±Ip=»V^$§“r®f3\ü^{S\áÒy¥©*±ÂIRI¶=Ì–fªã ¶ÚãéPq”à‚1è§«÷E`­I³Iµ&àø!K$•‚¤…’TH;ž9;êiârj1øm·žÛÿ _¹»Î-p™a6‡ÊõuiÇpOVÕ ê[ð¡Ü%Bmˆ’ÒÐIKº–…9€œŒc6$î2øÊÌøÐ¢¸ çf¬eCœ( ;{Ñ€‘Õ×ÛÆ«,-Dk€‰²ž ŽÒŠë‰[hq#†2Nà dl00ÓĿđ–ff?ßò³[a®UGRàçá¾§\QI)S $àlO×^n·æ­òÓ .ECüØu^T÷6’H8$’Aà:·ÆÙŒó1å;1$-( -á Q¤e=ñßj“-Û|—ÍÏ\W€Ò]`€¥'Ž“A߆FøârÓÄÞÐkà^3U·4ëtænP[–Æt9‘¿Q‚26;ƒ¸ØõTšª/À6åÂò÷0â•=¯ô™Vr zŽI;l:†6¬±§A¨âYp4€€·©JÀÆIë5¨Ã¯“•XØ;Ú¨XR¡ô¬„&+á «§_&5°ú¡2•¥`ü!4éX?M4ëäkaõBe*JÁøBiÒ°~ši×ÈÖÃê„ÊT>•ƒð„Ó¥`ü!4Ó¯‘­‡Õ ”¨}+á §JÁøBi§_#[ª)PúVÂN•ƒð„ÓN¾F¶T&R¡ô¬„&+á ¦|l>¨ÿÑìÔ¨}+á §JÁøBkzuòrÖÃê„ÊT>•ƒð„Ó¥`ü!4Ó¯‘­‡Õ ”¨}+á §JÁøBi§_#[ª)PúVÂN•ƒð„ÓN¾F¶T&R¡ô¬„&+á ¦|l>¨L¥CéX?M:VÂM:ùØ}P™J‡Ò°~št¬„&šuò5°ú¡2•¥`ü!4éX?M4ëäkaõBe*JÁøBiÒ°~ši×ÈÖÃê„ÊT>•ƒð„Ó¥`ü!4Ó¯‘­‡Õ ”¨}+á §JÁøBi§_#[ª)PúVÂN•ƒð„ÓN¾F¶T&R¡ô¬„&+á ¦|l>¨L¥CéX?M:VÂM:ùØ}P™J‡Ò°~št¬„&šuò5°ú¡2•¥`ü!4éX?M4ëäkaõBe*JÁøBiÒ°~ši×ÈÖÃê„ÊT>•ƒð„Ó¥`ü!4Ó¯‘­‡Õ ”¨}+á §JÁøBi§_#[ª)PúVÂN•ƒð„ÓN¾F¶T&R¡ô¬„&+á ¦|l>¨L¥CéX?M:VÂM:ùØ}P™J‡Ò°~št¬„&šuò5°ú¡2•¥`ü!4éX?M4ëäkaõBe*JÁøBiÒ°~ši×ÈÖÃê„ÊT>•ƒð„Ó¥`ü!4Ó¯‘­‡Õ ”¨}+á §JÁøBi§_#[ª)PúVÂN•ƒð„ÓN¾F¶T&R¡ô¬„&+á ¦|l>¨L¥CéX?M:VÂM:ùØ}P™J‡Ò°~št¬„&šuò5°ú¡2•¥`ü!4éX?M4ëäkaõBe*JÁøBiÒ°~ši×ÈÖÃê„ʇN•ƒð„Ô/‹ëÑóÓN¾F¶T>Üÿg+øçMsˆ| ¿Èå"íXʓ壛<ŸG|àà{qƒË”w›†ÓVè&zœÈ^—Øl÷Äg8êöÖ¹Ò7¿û¼¿þ±ÅM:ùØ}P—gý¹Êoå ý§kóýçöäÿæ\ûF»å‹Ê‘2õ*áC3ZŠÛ ©ä,¬ ¸UïIêPÿZàwŸÛ“ÿ™síÌÄÇËtÕMQx›¿IÞä± /?%ä2Ò9­KZ€)Àß㪈—{l÷KPçÇàN¢–œ víñŠ»¹sWö*Gh¯£ÃßN'‰¶­_¿e{\ ³<êjén-A)J^I*'€ׯÜ\kó‘–µ-¹ÛÉÎ…#J=€‚‚ëÖ{*Ç#´T;”UÊiµ°¤&DwCÌ•²2=I*Npq«8ÈÚnã{™rƒnÑå³ÎgG:°XãŒüb¼"ïmræ¢|uFmZVðphIÛb~QóÔÌŽÑLŽÑWvvC‰w¶Ïtµ|yê)iÀ¢nß©”ÈíÈícòM¾ÏÿÒÛª¶ázf Ö`¶Ë²¦<’°Ã%9J¨¨€vÜîxU–GhªKÏ&ãÝ.,\RXL–PZW”0mÆ÷8)$`‚r ñŽb«ÛgÁ£-þ§¶ùD‡âÉqˆ“e!§G:Þガ(6ÒNs·^<Ù¹NÍùâ Â’¦”É:9´©H Óï²HÎàÖ8¶pcËçÊü•M›zP†ÒG¢¬“’NTHöWžNòiÞN)LƸ!p—¥KaLo¬ %J Õ¶¢2A°cb3ޘôÛü|¥Iå Íb<¸O²Ü‰"3O•6¤©g:vJŠ€8ë* ¾ZG‰tvÜ«lżԖãe%¼)nQŒ«Ÿg^*äO“®-bKò–Þ\@§\:аêõ½ÈÜð;±&G#̛ӷ7.#S“ãËK82s«¬(oìáÙ&qˆÂûÏý²·Ë8Oôa[Âè…ª9BSï‘H#9ŒûÝóœEŒ£Wvå0Žz$¨ê-<ÒÂC¬’6WX ÁÜÓݲ˰Ïäì6^’ûvï)Y”Ĭ6ˆPÕ•jWÚ¡Y‚&ÉDÖ×rœ´©Ù+gÐÂvJB†NÜsÖIáJ*®gݼ•ÓDFß»øGäœÙsº¢d•È1.oGmk Btã8võUr¯·'ùy;/Z[ñôiýjÚA*VJs€¥iØþá«K%’mù*Uɇڗ)É/ F)Vµôg u„9Ä{Ä ¥ˆÑ ,©¨ÃœVdžK›däìßpijòÁ‡šoÉ´ÕMó”Pì*Œ‰!J\¥(6’茒T¢:¸óSbK“¢¼ÔÞi†µóÌs`óÙO¥Å8;íÆ¢^­O]WD˜Éi•)KbLD¾‡I‚Aß뮕^Û9SÞ3|$Û. ¸²ë‹…"!mÒÞ‡ÒV1é  wâ;*eUrvÈß'í†$)à][›ä%>õ ’BGÆwÉë«\ŽÑV›Ûtª×Ûà¥2;E2;EVJS#´S#´P)LŽÑLŽÑAGu˜[º)‰' 2B˜æBuHYRÂ’’­DŒŒú]y‹»£’ñnÎDzK®FiÕ3”¢ 3¤g€Îxð&\i2Lĵ§!!Åqà½^ˆ;ã‚Mˆë–ÅD·JM½À–CIPl6 ;pöV-7™t½6ˆ/Üe1’äxî:€¡‘”¤‘ŸfÕ)…zfç?)¹t—Â2‚…64¤lyÜç€áS¦Åj| ÝQ ÈiM,¤à€ AÇÏQ£A’'¦dé>ãM-¦Ã,–€ )*ÎT¬ŸA8áøõY½Ò&,€LèÒ"¶n®H¸­M©èiæ‚ €q@i V’O‘¹82n."óYQ˜ièî:K¬P¤ñ§ˆsý=»c‰k»EJnñÔ ©qåˆd8ñeEdn8l6`cíâÆ»¤ö$ó°ŠihKR¡óÃ*)%^øoè>^ݳi³w¦ÿ(Fÿpnu¼9Ìέæ¤Ù *Cé`-'8©iQ€sµLäÝÒeÙ¹r$óIh:Ÿ'BB’Ú›K‰Ôrr­.$p ñ©Zƒ—(ï%l&1œŒb–2•éÈÎp ‘ŒpÏnÙ Bz$¹ï;%·S-ðêR–ô–ðŒgQÎÈOfùíÙUÒf™§÷šu)‘Ú)‘Ú+£‘JdvŠdvŠ 5ܦŽHɽ4â9Õ°¹Œ¥Äe(o’é;ŸHœm^­åΘ¢‰ñ'ÂBV‡ŽÉF‡F‚‘gP)QáÃM©÷92ýŒ¸–[TVÞ)Ö 8ÂN2=-ãÒã¬ðàMjãår§0âyµ$¶ÄrÐZŽI^š²@F°×?ªðí3M¥Þg9pæ‘ÒÐ )+h@W¢qž½ÍÕ­ÙÛº ªå&eÚLû|ø©iJqèÞŠ¼§JJu±¬ç;û1¾xj}ùñœ”ëÍy p'ôeKt0ØBxç…{o}Ó.\ÔÈS--¦pÖ‚¢’JÎHR½îG·ÛÄ4HUú|§c-†”Ë,¶¥©'œ(S¤8Xãƒì©Úë6ÞË:ƒ|ìKÆK Ðë1]ZŒéPI üâ§dvŠƒ{ŽäË Â+)×¢ºÚ2¢’ÉöÖ§áŠ~bä©ËfzKª‘4EBœY:9Å$nOî‡þ]´‹t%ˆÎE~2–…8Ï:çà§“²€;ðØãÌÖ¼X¤E ÁrSJiAԥ€rÉV Æq¿Xø¨`ÉUÚ$åÌh†#­— ‘¬¨¤©@êôwBp0z÷ßi½ökkoòøÕå§B¹‡SÕ³,éæÜ'aò;@l‘Ÿ/ÞÝÉè [eHy¤!Ì£@J­C9*n’0p{‘å«:› ÅT´ªÝHS1ù¼-:(yÝ) c`}äó”A’›´¹È˜ÐÇC(l²N‚’¢•«ÒÝjÈÀêÜcyõKë—ˆþIøÉ\•K@q†‘€¥£êôˆFç@â@¬±å"ãÎin0àËn µ²¼pëq`î VM4»M¾+ÎF~E½®i§^ŒÙNÁlžÄ§pAÈìÈ©¶ø"ÓÔ¶†V²K…¸¬¥”“Œa)ÎÙÀÜž=``MWܘ¦Û7^vÚL‡”òÛ“!®q` ‡–‘œ8$uW¨r)°^_8ZÐóJÇרŸhRþ]Ò¥¬üZv5bö‚my$ÞíPßSn1YuÔ…º”‘‘‘·ÄEz~ïmŠÓ.ÈŸ¦ßN¦”· n;xž¦dvŠdvŠ»³²%·r†µÚ§GY ÒJNÄ‚^ÞºÅa“.e–,É®´·%4‡€i²€¤ƒ§rs÷ÿJ™$<¶˜Ï6Ó§Vâ5¤o¾ÀŒííªˆ6I±…±§îL=ÛŽm(ŒP¥a¥62­g©Dðê©7¼5´³¥sZå#L½,8ÃñŸZZKa)N•´ÚIÂÔ Èm…`ºËu7UGT©¬4†´ù êÊŠ–±¡XJq°Ï¥Çe~Ýtrè™ÍÜ⣚C¶…CR°…©'sÎ Ÿ@o·^Ý™åA’gªd0ã%§Ì— *)Æœ{õgW VwX˜Ùá‹Ìf-Pd]&EŽô–³úT„)ZAV“ÆOQ=U{k×5ãª3jÒ·ƒƒBNÛòž²ÂŠÔá²¢[ŽÒZAQÉÂF~jÏ‘Ú+qv'*K½¶{¥¨sãÈp'QKN;vøÅW‰W¹¶®“·*!±ÎLjëd(‚œ§Rõc< ÆvÏïUæGhª¦í³£4˜îM3 °Ú }N¶ŽÀ½XØl Ià3ó&%¨˜x¸‡uÇåÞ†Ò–¸á¯ÑaH%K*Õ€:±¶sYD[ŒØ°—"s°^ ´·(9p„õ¨+`B¸qÏ«ËÖû‰¹½2=Æ2BÀJôRái8H!cbFNÙ;g€Ä¾bOEù7–ÿµs<«›×§ôðã¾8T¶ò^-BµLæ-²&θÄ/’ÃòJRy½’ …(“Öš—ïmžéjøò ÔRÓDݾ1Yã0ÌH­Fa! 2€ÛiÎt¤ ¿°V\ŽÑZˆ˜ff%^×(,Ï:†šºD[‹PJR—’J‰àõ”·IàKjÒ‰-ÃvBPÈi)‰G goEG}87y¢ªoÖ(÷¸‹oDD>´ü¡èÁÕ¥zr œƒ»+5f¶ÍS4æ‹¥M‡"[­)›‹ñBU©,¥¬œ`å@à ®¿eA·½,YgJƒ©%ÅÄ~^@ QH ©*P#÷H«ÄÚü•—ÛaÐÏ6‡Zh¶­8(Î0àgÙY#0ÌH­Fa! 2€ÛiÎt¤ ¿°U¶é}¬ªäíÑS›qµ­ç°¢¦ZÊ6ظͩZµ{ÓÃÜ”×(,Ï:†šºD[‹PJR—’J‰àõæ¡0îÍò\î¬ 8QÔ­^š³ééÆ°ÒœêË#´RœÖZ¦›ìƒ&÷j†ú˜“qŠË¨Æ¤-Ô¤ŒŒ¾"+Ó÷{lV™vDøí6úu4¥¸XÛqÛÄ|õ3#´S#´UÝÑw¶¹ sQ>:£6­+x84$í±?(ùéïmžéjøò ÔRÓDݾ1S2;E2;E76WµÊ 3Ρ¦®‘âÔ”¥ä’¢x½z“{µC}LI¸ÅeÔcRêRFFFß;#´S#´Sséä†ýÞÛ¦]‘>;M¾M)n6Üvñ=w¶¹ sQ>:£6­+x84$í±?(ùêfGh¦Gh¦æÈq.öÙî–¡Ï!ÀE-8@íÛã®PYžu 5tˆ· ”¥/$•À êÃ#´S#´SsgÿÓØ$ÞíPßSn1YuÔ…º”‘‘‘·ÄEz~ïmŠÓ.ÈŸ¦ßN¦”· n;xž¦dvŠdvŠû;¾Èh»Û\†¹¨ŸQ›V•¼vØŸ”|ô‰w¶Ïtµ|yê)iÀ¢nß©™¢™¢››+Úå™çPÓWH‹qj JRòIQ<Þ½I½Ú¡¾¦$Üb²ê1© u)###oˆŠ‘Ú)‘Ú)¹ôòC~ïmŠÓ.ÈŸ¦ßN¦”· n;xžˆ»Û\†¹¨ŸQ›V•¼vØŸ”|õ3#´S#´Ssd8—{l÷KPçÇàN¢–œ víñŠÆ×(,Ï:†šºD[‹PJR—’J‰àõa‘Ú)‘Ú)¹² ›ÝªêbMÆ+.£·R’226øˆ¯OÝí±ZeÙã´ÛéÔÒ–àcmÇoóÔÌŽÑLŽÑMÍÑw¶¹ sQ>:£6­+x84$í±?(ùéïmžéjøò ÔRÓDݾ1S2;E2;E76WµÊ 3Ρ¦®‘âÔ”¥ä’¢x½z“{µC}LI¸ÅeÔcRêRFFFß;#´S#´Sséä†ýÞÛ¦]‘>;M¾M)n6Üvñ=w¶¹ sQ>:£6­+x84$í±?(ùêfGh¦Gh¦æÊÖ®öÙó¢µ|y ŠZp(¡[íñŠá7ŸÛ“ÿ™síýñSÿš~Âëóõçöäÿæ\ûF¾|û¾§ m=¹¿RyYs^ò˜Í=¥-éçG«5™«=¬¸¶Ä?ð÷WÈÿßd f¦³úÑ^{ËÕhcè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhAè[OuÃð÷S¡m=×ÀOÝS©KÉhÿÔë iî¸~~êt-§ºáø ûªu*ÞRЃжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'î§BÚ{®€Ÿº§R—’Ѓжžë‡à'kîØž~긨T¼–…|Ûe±ˆœêmÉJIÁe8>_P·:ÞåÉØ"ÄÂTÒùÕCPiYê àHÛçö^r†ÑoºBeWßq””5%ÆrIHßAù}½µ¨·eäòîNÃ6+ªÚÄ•\Ýæ—ž uç;ŒmhÊòZ-ˆeÛ÷(“0€Äh|ÊPؽJwQ„õž¼ÊàŸÛ“ÿ™síï|Ÿ‰Û”¬Bem2˜ÐHK­Ó’·³é(“ÿ¥pKÏíÉÿ̹öEvç?µÞL5-Õ1)Å¥A#*޽ð1‘^“ý³X Cçoþt¥¿=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JPÿÕ¹óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]tóÙbõÿW])@óÙbõÿW]<öX½Õ×JP<öX½Õ×O=–/_õuÒ”=–/_õuÓÏe‹×ý]t¥Ïe‹×ý]u‹Ï''ýyÿé×JPWÞ´ûá–š¹ðÙ$ù#ç3}©*ᎬqëÛþëy?ÿ{o¾?.” ›håç&-*š¾—1ÉÉi.K9 6TS)OøÏ×)¹¼Ü‹¬·ÚV¦Ü}kIÆ2 ‰¥ÿÙess-17.11/doc/font-incor-s.pdf0000644005071500004540000040244213202324173013024 00000000000000%PDF-1.3 %Çì¢ 5 0 obj <> stream xœ3Ð3T0A(œËUÈUd˜›[虚)è™ê™…ŒŒÌ¡JôƒÌ\ò¹œÿ Äendstream endobj 6 0 obj 56 endobj 9 0 obj <> endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <> >> stream xœì½”Õ•¨{*Ç?§þ;·"Q${ŒÁ6 "gã„Ó`c{lÏ]3óÆc0XÈa<ÁÙ LÎ ‘”BH"ƒPV«sÿ9UŽoŸªn!lù]sßz÷ÝU[¬½ª«Ní³Ï>e×÷ïŠÙ·…bšFÇ:Åüq,&kOɒι9[E²H‰Žéz4M°È²õË‘¾åz¦ç›ˆ°òHDI8Bòi„Â÷áÁ%D˜>eâŸÁ—ðÕ@ðU.>ðÉà*ƒé’žKº.i!4k…WÙ@öá<Ô‹«vH¦=@,†bûgÎÔ VäÅrSF¤œ“Ã7&" Dê¡Ï>¯ydX‰Üx`2¼Êa³Ø ´Â™qBñ€KPZGÕñ%7ÏàÚMDupœ ÖTÛ'Ïç|DãÛIݧڸ>7ƒ8W†2¾Ýϰã¸RO }Šò=¸šIÏúàù3áÂþy¸:y I…aN†Ç}X ¯ ÔVÏ Vül#‰$’H"‰$’"AºjëS…n[Óª"“¶5A Цi“Œ‚^»P“÷áu ob`Ú£¢\. •J%A(Š2 ƒ$ɃT@8eëšé9œ,'²©ä¾‘ažiJ5÷uÆ|äÊ@ˆTId{¤Kñb¹Òì)Ϋ×Tä2rÜG줢֕:yáùŸ"ÆÇÞ¤Y>Ÿïq‘¤+ÈvQ<ÑôQ™ñ“®ÉST@È…ÿäxˆvKäï;À'$Àh2ëex@eH38#à“z¯ ¾"€Ëì­P„,cíùˆ$pÞ è 3sŒAÇ¥fÍò\#ƒŠf#¸¿jböO78¦ID€ƒÌŒWdè˜*DÜÇM·} ^$6ìÀ7.ôÁÏÛY…½ÐT`'l¿ß2§g#0ë"k;hLsTǘèÇ=\FAÂÈCœ© b¢È‚:ƒƒ®†œ±;ÛdÍøB+ÖþìñÌyÀX78üW&Ò‘Žt¤#éH íÎ HÅC‰®%rÀT>N!B ®Ã‘„‹"Ì6ºmÓ,aÛ.Ç0Žçù¾KS,1C^À€A` B£¡H2o›zL޹^‡&qÈ-ÌÔ@ÎàVCmǤLGqbÔQ®vòyàë·¿¹çï¾þD»9Kd_yív[¤¼C'§&æ7Ú­=2¢ ž2µuÅjØ”ÊÆ<Ž—=M¢ '|˶-LJ 1 -„ô€Ž‹Ý%œ€/†ÛŠójaþ‰RƒNÎù@t‰ 3‡ïþóà²<ÔÁ°âÓ@ФÇšðÅÎ%}°ïáLäLx2„²÷4@\ Ž ß‹XÒ•ñ1ÕðHœó|tҞϑ„î‘&I¨Ø‚ÇýúDP” ®à¦l¸{…ÃàN }Œf83Š#@údÐ]^àIp šΠ Eø|x• |ƒ6ë(È"7-ÑUŒÙv§ðè2Î,záÓ”Ò£pëÂh@»È0=‚%d ™™, î—Ò‡Àó8ðØS:ÐD€×>>OÚÁÕ Ä,vG:Ò‘Žt¤#é }©Ù“IÙòö0ŒÞÖ€=Ò< Ñ ²ƒNúx’˜ ›è–vÄ‘‡ŒNìØ¹í裎õ‘;:2ΰ”ÀK3C©ïÓŽn´›`¨´cûsçõêZGQÔN{*ž6qvÐãˆì`ÐÂ#„b=U3-ƒêÊÏå™äž½ïìäÀP÷ã¬]zÓ¿[6­úЇ?öäŠÕ‰ø¶Ú 8fc¢`†À‘¼ãX®¯!Öp)Õ¦u†eµ6á{´ïûAÐ4MQ Erˆ ]gÃü`tuv\Ò™áB#CLâ6SMlÉɂǡ/ƒò”·?JÐ^?ˆ9ŽÆŒŸˆÆ 93°îÎÄ›½—<`DØ ÐÜ™ý%s ÙH"‰$’H"‰ä¿.^Œ¡8Uo!Ôf)‘F ÒNËbL3§0$–ЈG`"ÚaYzxß^ «Ã?\Q”r¹ÜÕÕ¥ëºïû­€hÓ"I'í:>A«–ÝÖu»§'¡#¤Ç kg‘Èp`ÚÂIÖr\7™(–¦Ú¦J§2b÷µ:Óo½²÷7þˆPÛâ”Z·áMSï¿ôü¹|[ÛŠ\ƒó 45¤3ˆÍ§Ó–gŽ6G}ÔʦS–­˜–G I À„–AÚŽCÓ‚‡qЛ™Û‡N/0y<òdŒ8ûåâ H£ ž“G!ÂÆoE $Œƒ¤I ЦlœÍ †Œ=Ê'È€¾Ã!ZÒ%¨Ùä 7;í½‡†ïÍ) )ÇÅp†]Šá“#ø“0`M£º«al ° {`굓3ƒ×û1Ä¡`Åyµ°RšD6æqœÄœ™#0h0áÏ)tÝÀIS/FxL0 ñ0·qÁ¸w“8G—à.œð#¡nb>¡ÙVÏãÜ9%ÐÐû'ÎHÈ‚Ä챘sÞ›©é ïMñŒ$’H"‰$’Hþëâû¼‰€4T+!¢!s Éõ–K"š£Ìpî ^n€³ƒtø 6½¯Ø]©TDQTUUq•›`YÖ0ŒƒØ'PÇ®‹tĶµŽƒJ]¹D©R‹ ¤ã— »/9!‚•„Ir¶a©še¤å>×äÙ¼çáë}ª¾nÕ‹K–ÜDŒ ¿Íu¿´ùmÇî;묔˜AÝÞ•Iµ–•gú,ÛPP›F´Ù‹ïé.L•vÛ®¬~9:A’²cSxb)b*!½™LU˜pÚ¿LϔܟcgRS¸L8³þ´i'NàAXÓCf0tkÍäáÂÁâ™!Ú\ !á½w Äq~‘0ÈA(ÖdÉÁ&ÝÄ6ñò[ oôf—˜àÁ_Ž¡0ã»àV0œibô⸄‚s{øAÁ± ̓qyrv\Ø 8/<ðfsz!þî_Lãú„å…Éë÷âpàJï€U;Á-xÆd„ƒ‘DI$‘Dòß*•,N7__° ¶sçxÕŠdÊñ¤´ÖŒR€".0Œï‰8郓2>ϰ½)ÒrÛ©ID2—TEWÝŽHÊ>X oõx:5U©Kè5¼Ó6Æ}dçS9U¤@ø^ qÐö0 ¨¢·8hê¤Ú¤;häñÇ–¦óîsO¯Z²d ±÷á¡C_~å5MK\zñ Íf;×ÛŒÅ̋νäÂsÏ=îè…žonݾõλï}àÑͦ3wè(M!ÚM·Ý@0Š1d–aã¦×He†0ÂáQ8o½)G(Äì-ö,Ž@áIè>2Ìi{oñ‹g¼a~«£|=‡cûõþLaX={W;ÁU¸‹ ÀÈÎÁ!8t«…àÆzP^ ˜ˆRÁyõ€ÑÕý­€&8VfK’ÁqØ@&°ãv<<¯ÒÖ‰ÁÒŽ–Ô´W÷ƒY Á¬‚Ð[\/¡À 3«±¾o™€'xª¢"l,3ýcÇÞÝÞß‘DI$‘DÉ@”ÍXïì¼#‘D©$Æ"¥Xçuµ¤øí¼ûÑì>™Ôà›o¾ 95…8¥Ó¨ÝF,{ëp¯b CžÕ¬ñéD÷Dõ·DÀe¶¼3»ÚtvÝ* C¡ñq44÷D„Šs‹½¸ÿï]bzú—¯»îûDe¸ÃÇù7¶¾ª[Ò™§#ÛU|ùõ;Ói§]kô“†1m;JRN©Ž=U1“ñn #Ãå¶>÷Ü+/¿´}r XJ&{HÎ'ÂÕáÀeè/‹\§ ©€Â!Z<@ìÌì„âÉÁ†,Õ™¹q®Dxqƒ‹¤Rgvf®ž{GÍ&ÀâôYÏßÃÁp²$Ö³CŸ>ùÞ½xtØš°æ‚QQßE¾¹ñ`R#ƒgïÀ¦Ý Ú–À¼Ð„pIº„³tV·‡’lâE'x1I†K0ðò—p•44'ØÌ%¬”À§èÂ=eœ( 7ÈÆcü(¬Ážø~˜¹´ƒ nð@¶ïæ"t‚¸â<+‰™5øϰôfQ;œ‰ˆfó…>ø…W‘à €Ø ±Áf@38èÎæC!ÿ Í#‰$’H"‰$’$„M±b&›‡¦kÓ¶®Øa+l¡P0Œ*`€$ù<ü^Fájλn¿û¦ïßàxþ[o¿ dbb"—ËÙ¶ýçæ¸^öäÿõÍf2§¶ÛͪòÄŽ=[{»ûËå)Q rCn X‚œ)v,O§r¿¿õîïýËOí?Ûè«+Vü+÷6¾¸åûßÿ>1½§RèÏnØ´±Ú¢.ºà†BWßGOêZxh~xû® 럹òŠÓ`’H¤{>yægµÑ×ïõõ[R:Üý÷®zàU/ox‡á’r<óò¦ßç H3ðn(˜[täoëÞžÝ?“S(›=p»sÙÂÔä–‰ÊZ–A…앞 Ó©Òã*:ì/ê:Ð)Æ$MoŒŽßL!×EªŠx ~YQTßC•ê}š†$yÊg¿Ä"‘ ç mEŸÒõ§¦§QWÚµ ÍŸdé"†}â9yçîß4¾±ÓB Ô6:úèoÖÛoWªk]-œÿUE±e™Ú¾ç–d ü};ƯëutÈœ¯tŒIÃZQo¢þüU,wý©¦²Ì6P±ûb¸wªô¨ ž?¸MWžr”H~Š¢Zí!UAÉ$‡E Ukèˆ#®2udXMðgºô f¢Cùl«Çò²19}o« vð³TAóçžF0 ™;¬Ó4h"㹎'вi6\¸VIdãc·€‡É8®¢¯xU*¨U+å‹óöÖû9]…lš³¦N³Œ`Y6Çñ¦¥½ŸSÉÙéYàŽ$’H"‰$’H>˜8vEœ‹Û®²k÷}é ê¨èŸøÂÔÔd,ß»ç!ÛÂëÉÄÅ–o29Šmï{Ä4ЇŽýºÒä§kッÂëoÞÁ³P×E&ÞzÏlwžvTH]Å·ïþE"…RÒ¥‚H¿½ëþL'.ÓÉO+ö.ÓÜ ¨—É|8Ï•ÊOuÔ?ô‰Zù…v |A·:¯5OAKyé<‰“D™›¸§\F}ý§Ï!IqUm‡óäÂMgZ­úš5/p¢ðä3Ïþèº[9êtσûï˜(íÞ;î¹è¼sÏuTcí†M.N+ºp×'N8žù+Vµfõº¥7Þ&úX±z‰Kޝ[½ã`ud*Óݵaóæ¶š=ï“?u=>˜ÙV' êã'Î;îÃb,©–ë#4+Ô*ž ”iŒ­[»éÊË>ïX –ì¹éÿxÂñ_Ÿ¬R ]©=â#”J^eÚKÅ ×,¤4¥VoüÒÆÈ ~¦ÝÖ¦*ê8Ô•½Ü¶ &ªkí{*uÔ]À$—Î^šÊZ­Z«}«….üŒï–åð\LUôd2=6þóVõt ”ç“G–‰|}ÔÿØ5V銧ºß|ëþ\¥SWѶ'šÕg%õÿ¶Üª«Í‡ƒHMN¡ŽÿŽezõÆVÕxÞvPR¾˜RRÌÛ5ò×B —´ø7MóŽCBÓÚíD+Èo›O}Οò¨zùaÂô"ÇRA®Y³né ·‹ècð®_±æ{.9²nͪ%K~BÔF'Sùüê ÚJñ’ ~í£"'8)®Ñ\¸@øð Ìœ¹-èr<>¼«366¹mëk¥©ÚG>tÖ@Ï1O-ßD¢øÞéI‰Lú„Óh? sÒ'º'›î­–uµ¤¶dD<©’ç‹‹ÉJmI"CC‡Ìû’Ö–ר+7CØZMþ!ßw';mý™OG(‰n[+ _#j¿m•ö}^µšû„ná©`œN©´ßYO|Â1}E_O¨­ #ûìDYaPš@®Flu®¢¾Þ/ªV§˜Oï¹yt-:üSªÛ±Õ広Xªö|AÑÛ¼H–+QJ$®pL;‘‹¿úÎù,ŠSÿÀ$£šV‡!³¶W¢h’ [ˆ¬5÷i:š;t‘¥¹;·?QÈz^JÖäÄ¢Œ›h6êë¿F©›ñøÂv»M¢.¼²Õþ3ƒ%>(Xh.Xñ‚“™¦I$‘DI$‘ü•L½¢|r|ª~‹á6vïÚä9n6Ñ_š®±ò<‡$Iž—§K NàHF‡3[6¼ºäÆ›,ËÚ¶mÛÈÈÈÙg/~î¹g\×…3¾ïÇb±t:­iÚÇ>ö± 6˜¶õüÚ57]»€.òÙto/¿8ˆ†"$]Õ/ºø\ÐÇGÏ?öØc¢(:øãÄš5k–Þp—蟂¿bÍw]jxÝjÀÁŸcÛwûû7¾öšfôwö¯-;‹GCQ/Œ@;¯¼ò‡ÒRÜexaçÖÖë¯ï¼úê«o½ùî×^ÙyÊÇ/ñøÚ{3¦kTš£†þ̾}¨»ˆQOÄYpMNN)ÚöŽú¸a#^DÕ*)YÆ$щÊ5jך茳®lµË£ã«~äßîÝùÎdù¥D<˜ùGɆ;›¤(¿Tœ¾/‘B“(•B¹ä9)±ßñÔѱ?BéìÉÛw¬íêB½½gŒ=75‰‡N4Õ À9ÝÅo¤]mï¨××J çYõ&ٜ꼥èOÍlØâ"EGÕŽ98Àqô%ž¬Þ*Jàö9ƒÝÅÍïü;/ ¢ÃA3/¼ì²gV?TÈ Q:–ò…6Tô*y®¢ù$Iä§3ÜØØ=í¾bšxî CCC—·›æää2ŽGó½ttämÃÚ¡6P.™ ›SÓO@ˆî$Žï““þÈÔ=ª‚ ±¯‚«"O[Žé:œtIòUcD”ôéʃ@½sŒ(ê•§ÛMÔ×s¦éµMõåf%³˜ìdæ´lñ¸N“âè‚ïòm*![Ê4^4³CD¼Ð„Ÿ]”sÐ/#‰$’H"‰$’¿J‚-P,MW:¿kéåÝ»7Û–Áø‰vSÏf“>rõVwÏ@³¡ûº­qßw—=²üßú3 ¿r¹<11qì±Ç¾öÚk•J…çñf|¦ixctÆg¬_¿Þ°ôu/½pÓuwHèRŒƒÎoÆ+¯ú6Pà˜Žn6?ó™+ Ÿ¾ûî{A`8äRD:¿è|Þø+Ö~gW¯ÃÙÁÉ]ÃÅþÞ¯¿¢hÝgŸñ ×MÉ¡6GS¦³õK.ëéµ5£j™Ô“¿¾õIÝö|_p ‘$„'©v§ì)5w«º¾pÌÑߪU SrK6ôaMéÖZhA¥Žr…`³–^*á[¨P¸À2ÕfëyÏA\üoºòìÞ± ¥ãÇûçíÞõ€¡£LòYîS“g– „ÚêííÓŒR½1¶àÐîW¶ü‘ñ‘ žÇÐl[y¤ÝAG,:{tl%°WOÏGÆ¡¢lú¼jåÉJ yøµ-u¬·/õú›w’óŸj63Á²‰]º½<ËeÏ55A¼Ró3XìqŠFI$‘DÉ_<‹aØÉªòŸ;‡wŽŒ¾!p”cðÅ|ßÔôD&“i5; +¶[:Ó­ÎT&“Øòò›ßûÞõ¶moݺullâì³ÏZ»öU툢ÌqŒ®›®k3 wÊ)'mذѰԵë×,¹þN ]d1QÞ4¼wÙrã4Mæ3ÆôõÜsÏ½Ž«zŒŽ(kÍšUK¿¯èœ‡µbÍ?ÙÁ5ë#Ó©®ì [Öṃçü¹y’÷HÀ²•Í:¿øåWä„Ö¬UE®çë×ü¼ÔpƒEšcº<_bIÉu]ˆTIºµuÛí¹w™wÞÝq»$!Y:#.èV¥¡.›œB º?gßÞþó|IôgåQjß}œâ¯ôXÓ¸ïÙâ!=.|¼\EGsúľç[m44çSUY¾kbâÝD‹ŽºR×USQàñš¿px×Å~ï6ä¢JÚ‹ÇleùŠx ½þƇºº>™ûZú˜b? Å$òZ„@S†2là6 ¡ÉDš¥ÙÚèèÁH2þäòjkE¢¾ÞË·½û ivP®UÛx%uœ½!©˜ÿH½jÒ4«ZMç€õ`5‰lŽ#8n»èüOôH"‰$’H"‰ä/ ‰H¹M6­Ÿ½»s»ãLÈ¢°eã¶¡þy†¡%“iËt¦Ë#Ž<¶\ž²ÜZ2{àþÇú¯ÿæyîøØÄôtùÔSO^¹ò‚ðkµžhè4M’$ ˜øÈ#Q zqãÚ¯¿SFŸñÖt~>YÙ8¼§ìÛ"Cf?~Ò'H¤¯|úIä³gŸ}®ˆ^Xgº"½5kWáì :œ\±êï]zǺ5Ï.¹é'ÄÄž]¹b÷†Í¯›NÏ%ü‡¦Å}JGN!õèc»nºés‚hY–wÄü-:ì2ÃHº”„ÉÒ=ŠŠ 2k»Ó Gû¨]oÞlà´Ü•¤'pL¼Ýn³,ë‘#öÓ¦†2ùO(æ †íÏí;ib䵃?üKo¼}[2ºsßp\‹äGå8±s×J@±£J0_$Û2GúÀŽ— ’4ѸÓ0ÐáC×4j–býÁt‡±ò@dÅ\ ŸLŸÅ’=SÓ··4oîgͶÙRjLHç‘ë¹”(d´æøtëIADC_ÖµC·óéªgîˆÇP*wª/ßR‰+-“™*ÿ1–EÙôÉŒy*ávµ­Ñ`<›£)FŒ9íæ‚3;í‡ñ"èìbQHîx÷žX ‰Òù}ż4×WöŒ<d'Ë—Sd†gójGE(?Zh’r<5XJn4CëH¸YtgòÜ‘Žt¤#éHGú¿®ƒ×*e¢Ãüý›ïnóQyll×Wÿö[š‚÷i·T†–(Zxäáev guÚ-›^¿iÉ-ÛÞ½k×èèèâÅ‹|ðÁd2IQø[b¦‰w, »øâ‹ï¿ÿþîÞ¾'—?uã ¿—Ñ™Á`ñ“%ómKm7ÍÛ¡EC_1[¥¦ý„Çý_6š )ùõÆÝ’—³7›€«Éøå1¹Û2ÑøøÏT ~½Ñøµã¢\þËP’c£­1’0:ö+A@Iá*J”}ÏØ½ ü-v½\þ5ô8žã 9Ž2¹Ïø>‡Zµ'&L£ƒóœ(;ãÇâ¼iê•ò-šŠÀ±˜Œ.ün½<‚H9•N4ªÓÎ]¶úz¯75E”º4µ‹;:ÏÇ C9à+ÏD°_÷þ-f¼Ù-©#éHG:Ò‘ŽôY“ÈLðžiïû#É£7Þ^N2Ê~Jkü![ x„•—-[Ær / µÓÜ´qóõßûª65MÛ²eË9ç\0þàøø8άyI’  á`åÊ•!=¹bí7?lé¢n7,÷‰É‰w¶¾øX«Õ†b9‚¦ñFÂŽíYÀ˜%Hy†׬~zÉuÿ™‰ŸÚl77nú£bî|~ÍÃ?\ú#bªþj!uèêç'}àÒóÿÑB¢…?ÚÖFhÏE—Ÿð­ï|Êõ5µa¾ýÆÈo~Ÿee«œçǃֆßöðn× uþa‡ON9Žåû.\¡PÙ¹1¹l¦+“ÉìØºZ/%ºÕÖdWïBA†w½Uì[ÀqÜÄÄ„ïûŽ¡"†b8gîÜÁíon:Ét÷תÕT:-Š"´l÷6FN¹®›Ëå:Ä%ŸëÝ=AÒi’¶c2×Û“ÍIO.¿.›CÍ&ÞhÚÐè‡ûgǦtïåÈò>Ax]]]»·¿ÔÝ?wrt4™ÍÂ¥J¥‚÷p©—8úCccc­Ú¨œ*x¾‹IõzÝ6Œt.g†Ö¬3R ᬛ <çgU0 I‡u Ü25¶}áá399ÙiÔ‚ˆÑœ$™j9S˜åGö¼•é¬Mïæälooo£Ñ¨—&zç•ËeèNUU³ÙìèÞ½ø»tžÂÉyS)ËénÛÖÉXyl¢Èß L¦Øcè&E1½½ýï¾³MŽÅ•¶Âò¼¥Uú‡ŽøøŽm¯p|—ãZ®ÝDd yü£…àÿüˆ3hI$‘DI$‘ü7pÐóÇ2=]ûÃöÝ­Zû-Ë+MMwww—¦”d¢è˜\­Ú^´hQµ6í¸z:{ü‘Gý«_©ŠZoÔ_ýu ¿ééi À$8Ò€]×™/^üîÖÑm[ÛÿðOÿ|Ö°Ýáw¶Ž–*£®gP”OExé‰O®ë¹O¡d«­¿»í­þùGÉØ1­Ngùò[-olËkÏüpéMÄžñçzŠG<»r·Ä±øÌ¯‹B·a™ˆTHnꌳ¾ðâw÷ä(—Û²éÝûî\1>îµÕ‚ã'qViæCp3PȰ”©w8‘·,þ¤ÒÖ5Àñ¶Ù@dðÜ‚bR,¥v¦Š= §&v@Ô©îµ|'ÏvÚSñD7Pm½Vá °Ï2ëQ4£€zFéT2ÙÞZu*øì¯~¡N%ÇSMcŒ—R®gØQ$ã:¤(¤ÇF÷ ”¾Ï†‚/×ÁI’ ¬žãgx„ŒTf Q+{¯p鼘74=¸ §<Ïý€`I D8È®…fÃùv$A¢t&Y«€oF"Õ×jŒÁIQÎC+ ­ôO&ÛM C_ާ•ö¨”HQ´ß®MÀÍ]}ó§ÇvR| ÚL44ÄDAkMwòâ‹?T«á¹• …>>昿kÕ[ȵðûF²iÏó‘£L2‘H5ª#Ø=¼S!TZ¤„,‹•R…fiÚqß4³q$‘DI$‘DòA…òÏm÷ä…µ/þòñåË,¬ÚØO°DdÓ€ËHŠÚ8juÊÙlºV«ýêW¿þùÏ‹ÅAPU•çyEQÇÉd2L. Wyºï§ÿö³¹Có:Je㦵÷Ü{»,ŠÆI:jðñ.IÒ>âÓ‰9“åz­tËïpõ‰å7sRó©§ïZºôblêµÞ®ÃÖ¬ÚÉÑóN<ùJuYÈ¥MÑÞA¹X”;d^W¾gÏöñ/¾±·Ô¤ÑBÉAc½†B(„#À*!§[ Ÿó-¥\’ ™žR ¸Äͧ‡:Žn×S±îf§é#/K[–¥š-1$"à€d-¿C"ÉC*À“Ì%³-2²ëº¦§“ˆσe ++–E!–§Y bÛæ(àN  ¸Ù©1„èâCÛ1®h˜¶‹(ž¢5·ÒW욘šðPGæ ŠÑDÈÌ& è†møÈåiÑpŒl2[mVΕqÙd®Ò\³{󇚖^iŽKlZµô¤o› *™cpÜÒó zÇr†e¤“éjsz gîÈÄ^1'¨f•!â@´º¥'äD[iдk9šJ@ïv”iÉpH$ê*M±étº\ééžB­VI$e X¸jF£QÅ´¦uâ±,„®Õêø¸#,žI¶ÊRÐ3,ËÒö$DLä €°ºeቿŒƒ‘DI$‘DÉ"†ÓÑÔ¼ÞüÞñÍšŠ'Ç5µŽBÑIßå<Ÿ¹”f6²™l½àäeò…ÊôÄÀÜõz½Ó¨ ïÛ&Í‹` Þæ¦¦Q,ëšf,• ô&¯9¦H šS›;041µ×²iÏ·á]~à.Ègá(¢ Ó|J¦b͆&±ómÛ^±ò,½ðâ#K—^GlwláüÞµ«ª$‘=ë¬/(My¡nLH4i9­„,1ßjµY$»H°±f‚Æz³Ï?EÅð4n‘ú-ÕÖ•*…$ï¾Ãûø›‡85X”´P‹CI™"%â’êO& ¯ã’†i¸ÈY ÊA†@ÅX–…ö/&ÇãñJk„#R@Ù$Áj®Â ÎÆS¡ó©|³Ù´üºÄæðΈœ38oç¾·”òqÏâP°j@3yB¢iêeI6ReL—[ûd&¯ØeJé.˜J…þðl¼Ìƒ’P+Ä:gþ踡ÚÀޤĤÚL_'‚ɬܱ*ÐT0.q:H£‘­ó‘à3ŽãÂípð»é™C½C{Æß‚£Rˆw‘ž çE*[,Æ'F $ÇqŠ®Ðˆ5Q+@g/˜¸ÊBœ%*)bSi:H‘¨Œéj$NxZ)Xžã¢6‡Ò.²I´ô¦ï#Ãåþ¾ÜóÏíê4©¯_{]»í«.búahÒs š" W±‘GI–• ùï›^®EPÒDZÒ-ËÀŸõN]dD@•-ßJJIщQ©)± ÏtY–Ë2ÂÙ¢ÄK-cZbc¶­[¾–3áfÜÕÖD01“ó/qnlëÉ@iÙDÞ4MÀQÙ<ÅÓ'‘nê.Ò82îzn"žÀù?×#à¿@ `¶Ö¨áÀ‘I†aàvI’êê”D§U€`>ZiOÒÙZ½Äs"ÃPM¥Í’4þ\ŒVèDˆP+Ç Eà…D$C‹M‹¸ç,ÛbV±[¹xP¬î5ã\º.AÛ«­ª‡w{$*¡ºu„Ø|¼Pn—IŒ˜¢åX‰X~L7G@‡ú‡vîöcÓ ­˜œª—1ûûßÝûºHfà·€Ü8oš‰LCEžçè>°2à¶6ô:Ðp&)ÕKôÁ¿M¼ñÿ·˜ŠéHG:Ò‘Žôÿ5h¼¹2"’iÖ´«µÎ4¼ßá5M"ÙG@rx†< ‰¡]ßs|Æv]Àƒ¶RŽI¹ŽÚæÞ´;$âABJ~H¥RÓÓÓ 9k(¾ƒ|`ß´F"_dYÓÒK‚iƒT@J@È÷à”áM1Î4šS,“’˜<Í {ø¥3W>}ïÒ¥ß%öì[780ÿ¥—ߥÜ+¯l—¤EÇZ¶-jyž"=ßµ€¯,S×TKŒåý™ìàûÀÒuÝ >!€%B»ÝN§ÓFP Î$ AMÓ IÍfš¦újµšçy‹-Ú»w'A:ˆp9Žƒ#¼‡sR.‹`PÊ)‚eü™ÊëtZ¶í¦R0Ò'¯Áét:ÝÝÝ4MíØ±í¸š¦Éîâ`»eÓ”õBë€P¡Øìïï/—Ë###±X Ï)ô<¨®ZV´š$Űº4Å‚†cITE·lù$Ç3pfæ˜5ŵmª³PK6X¤ &CÃóyŒ­ð'4ŸçYDZ…%A~øáõzú~Ïž====áb"ˆDlÞ¼y•J©¿¿ŠA ÉØNGÅf ü–å!ìÓÓe0Bá\>mÛx+s¨44΃oPì/ü¤ñ²Ä$Ò‘Žt¤#éHÿõÑ<„7¯‡4MoÄ‚ãÙLÞ2‘ç2Ží›¦Ë0IÙ ‹L»å¸®ª»Ù\W¥R) ! ìÛ·˜°Þø€RptÚµ‘ÄÅMÝI&eMW†,•§º» @)ÁëÞ”.BxA œbðŠó<Â2ˆj­²`a^ÕK›7?»ä¦ïÓÕÙLö¹Õk1fÙ”À'L“Ô BºbÄåXGiZF'ŸK dy>aYŒç³ïc`Ÿð¥z«ÉÑASø³®ãZv<•Ô•󅎦j%–L؆©[&…Vàá ÃséD²Ñnª&'b4é¹È55(£²‚&ª¥*'⊎ÿ‰11—ÎíÙ·§+×¥@ÍV,kT™\arl:‘Êò ¯Ç0¦ÿ 9)µ9!ñ鸤++r|³Ó–xANÄÕøÌ3¬í¹àƒ Kp¾­*–n •IKvBÅRží‘ ÇÍn)øDú¤fjpŽA«º!°1ŠauEûCý“¥iYIËcr½R^Ï$SŠ®}üÀø†œ”V›—DˆL"‚˜h¦Ñ•ËOLOÁ½à\u|/›JWê5IàJÕÒ@ïÀ¦Àq†eI<޼À `YWàÉCùL웎•eèð,g:6X3l ÚÛÓß6¡×H½_{¸OAÿéùHG:Ò‘Žt¤#ýWkDöÅä„ãj–­;Ž%˲ãx¾GÇäT§Ó‘c¢¢6$™î(Õx<åYNlÖ±Dœ&©Ññ±Þî×÷,äYÆ6-Q–@›¶•J$;•$XßÇ™;ÏwD‘u=G¸f³)Šxº¡@  ^ú MË•r«««X.ÕE!OHÍæ´ ¢çŸ[¶ä¦ë‰}ûÞ\ûÂZ×ÖïI×£hJr²/ŽŽrí{šïk í«DСs1)>>1‘J&)GÇFÆ9 ÊX¢\©±oÏôÀ`aݺ]ߪs|Ïs xuÖjÍT2ã{N!—®Õ&hLáÉy4#yžnŠØöš¦-Ëjµ:<Ï÷÷V*ßÃÃÖ Ãào`ÁûhKþ¢¢(±@ªÕj¸ˆ:¼Ԭ뺡;­¦Ñ×;h–m›’óàîú–ePsz±ì°(˜žªÎÞ;–ËtÍ€º2Ùôèè¾9sû''Dz¹¤aè$…Z­FWW—ã8à x~âíýFG¢…@ÀÝ]»võõõÁqµÒ”Ä$TTH’%‚ ]×™7oþ¾}Ãp|°½ÈÝŽRO¥c¡ñ`<7¨~yl℺ššJ$pœ&3™Œ¦iåryΜ9­V ¢Íqh8_¯×ÁC(iZz:n·Û` ƒA v¸̾oëL”Ä-©‡n‚» Ò\.ZƒJÁ ü@øCcÁÈÄÄD6›†Á/ ø‘Ñ×7055¡ª`[•åxOOqll‚çÙþº‰×ÝÝ«(mÓ´:sBÓÀí”(Ê•J©^oΙƒû´Z-“$ UÀ/$°?99LÆiK¥©ÞÞþz½Ê0\"ÏF|H&ÓPÀþAíÃY¡–`»ŒóPø–áj,–€gƶ]–¥‹Åž±±ˆ´ìwuå¡Þð‰r]îúßa–I¤#éHGúÿ0íè}p ˆùŒ¾†é—Ä;7» á/Ê£‰zûŸ w1á0ÑëO…œ!B\xÉõH£¤Àh ¤Ç‚Z»fÕ’%7£;[}Cñuë^Ã8ÈPN°W  ƒ(Š Èuð´Ddåsi·G&ö‰2 ·*  ð pFw±n¶˜;wÞ¶mÛz(œ‘C…€x#•NǶm ’íÛ·uÔQÓÓðV¶9äññqŠ¢ðª‘X’cår¹Úl¶z{{LÓj6}}ýš¦âíô†_Ž«§Ò Sß' Ýœž. ôaдá•O:ŽEÑD«UOg’@f€VáTEð àJ†3퀙R¡isçÎݼysooïØ(àQZT.U‡ú'Ƨ†æ lxqc±»ÀsâÁg ÀP<Íø//h2(@½P Ð0þðŸç¥’YC‡h3áLAÐÀ¦_jàXøiprrrrÑ¢EûöíƒN³mh„š¦Fq—ÃÓFß{LöÏ]@ ƒÇ›îôJ¥R¡PÀ;ikÇ»)R4܃>êè[¸pþ+¯¼6wîО=Ãm…Bž3ÏCsp\«UÁF»­4›õ|¾ë ÿ3”7M}ddìè£MM•ห«»Ói“;¡Qô  œaYÀ¬ܦRÀÁ;w2¦ÓÙ}ûöØÔ>@$Ü ^ÅãÀsd»ÝÐŒÅà'Þq³ÑhâB-P/xð>ïÞ½ï¿Ø†g 8;99Žséÿ_ÿ_F¤#éHGúÿ8íÌ|v&K‡?¼—‰Ù2þlV´g)$ÿjôÏ ~?ÇÁ*ðIË£‚¯‘yxåIàá ÈgÖ¬Y·dÉRÀÁFß`rݺ7à…O1$@¡ã»4ƒlÇEVSÚßþÖ7›õz©TËe‚ÀÜñÇ;þî;ßøÿÙé§_øâ‹O¬î—ìÞ½çÐCà ÷š dpA° ¼b¸óï|çõ×w-XÐ l´uëÈš5OâÀÀC’$W*(ðÐC~úé«V­ “v ˆOˆï¼óT ï~ÏÅiÈóÎ;ŸÅ_¨C,ËÜsÏ=>r@mÛôPœ»cÇ` pÅÉE]ôè£âàz€àsÏ=7oÞ<€B ¹ ìÞ³œ^œšš ׯ `WG€ªƒöïà-\€ê.»ìÊXL„†ýê«›7̺»»Á°©i:à PPÝ׿þõÿøÇ]]]‹/~úé§¡. 3( ¸ðÄ ,„ç¥zž¦‰d¬ÓV]Ï€ˆ…Mþ3oHEÁðwí×¾ç2͵_ÞP𮀖áGF‡Ì?¤Ýi&é©é hl¸äØ,Ÿ}öÙ·Þz+ô ^^.‡«yÂ/¸@Iø¢tÐ8\rÉ%piþüù`Œ@Àη¿ýí7ß|ƒgŸ}MƒGèÔSO…†CTyä‘‘‘‘þþ~'üȼ߄"öÀ(x¿nü…˜+®¸â׿þ5ă3áêè ¨å«_ýêm·Ýdñ¦”çÊðçš5ë—ü`)1¶k²w¨¸níÏó)šÅ8ˆlšññÄ6߬–§/»äswþáw©džôiU1»{ûÞxëÍø# ·Ür 0 `A,&íÛ·^·pfûöí‹-š˜˜bYÎ^à]ƒáN€¤OžýÉe/¼( ­V è€`xx¯a¶‡æôyä±=ö ÄÂ… ?ûÙÏÞu×]ïË~ @'GqÄž={Bã§Ÿ~êwÜAâ-ª1Až»ø¢+žP Œƒ“»vîehÉÄ;1¢ .¸àÎ;ï<òÈ#wíÚWÃ4! K__X ¦|:õFep¨{jjâ¸ãŽƒ’€A½½½ï™}_¼}¯ ?&wrÊ)?üp˜ä»úê«J(¡±ÀP]"w\ƒ¦I@@`AÚYgõ›ßüøU’ð&Òv p&2C¢‚H†¹±D"Å0Tè- ÚA‚’=;vìò<çSŸúôÃ?˜Je¥-Ëq-]7çÎÚ¼ùIr¹ TîïÇPø³råJ&t0ô^8Trÿ_zR/¿üò_ýêW(à9héa‡ˆ Ävýõ×CG€A° ÏɶmÛãÀ><9P~¨Ácn‡3 þB»¸N8aÍš5ûÏ@¨_zé¥0 ·î¿üòËCCCð¼]xá…k×®…>¬ÕjL m¨â/5!’H"‰$’H>¨„Áhv!ùþóûßžï‘"åÿ #þ?ZÇLààììÀƒ8p ®OZ¸°'á‘bºm¸qÀÁµ«^\rààÞ½ƒCë×¼ìxEs®ïz¾A²®i5“iÁ·í>zÞæ«‘ÃM79AÎäòûF÷õôô|ôÄ>µü©0[xT«Uà} èïZx·Ú ËtÂáNxãЄK£ %Ÿ}öY ¼pTz||H®¶;MŽ'‹Å°×¦M›4Á‡>ô¡õëׇ¹¢?’çÄZ­ǦK“Åbî¼óÿá·÷õõLOOû>qÁïÞµ{ëÖ…|qÏž½€z®ƒ{ù|p(ŽÁr¸Oa˜Õ¡uCx@°U»ñꫯ›^X…ûéü¹?b^‚{Ãùy§qÚË/½ Î@ÕÇ}ø¸·ß|Xjll ``KÓŠöTµuÑE—¬^ý¼ªê™7®…ƒª®ëkš 07>> n€eÀèîî^€9ˆÐ[&“1M}vŽÝŸ ø U«õ¾ã?á‰'g,Cùl6Ýh´ ®… ݳgW±Ø,œ$xg£l6 ¡´| ÃÃÃÇü3Ï<ž@£ ï ú¤ÂðbÅ x< nP®;ÿüó7lØÄ~<…ƒóÇ{,T€“ ,€“£££P¦¿¿ÏX8h Iò¤“N‚¾C¨O>ùäuëÖ»í°Ð{÷îoÃoûœwÞy?þ8<¥óæÍÛ¹s'wo‚KQv0’H"‰$’ÿä€aÜý©;"xSî¤H¡`IpÕýàíUÈöXàC0¦Œ·šñ™Y,Au„“Dž¸võúG6÷öÏ_¿v‹ã2-àÏšø&ÉÙ®ßv\•psiŲGd>W™4Ž:úØñÒžÏ^ý©[n¹eñâÅË–-ƒ7÷âÅgËèä¾ûîËå3ðþJh4êù|À%™Àëो¿“BÓ­V+‹ô¼ð ð†÷ýÈÈHoo/8 ò/ÿr]½Þl4ÀË—/ÿÖ·¾uà 7|÷»ß;š‰€Oµ[F’Lˆ;19zÁ‹ïà pb܉'œ¼zõZ]³®þü—e9ÞlÖ «µyóK€çwÁ¢EGüô§?ýÜç>÷Øco@0@ :K—.z;óÌ3—-{ò’K.`Ól6¿ô¥/o?üðÁ{„€RN°ßnÕUW]uÇw0 .}ô±Ï=÷ Ê’%K~ô£¸€“^x1€ï‘G¸v÷Ý÷žþ¹ŽúòË/À}ík×Ôj €¶ÛnûC«Õø‡ø'0{óÍ7ƒ“Ÿ<ëœ|!û‹_ü"üB +0ÜÁp£F9ß#×:é§=ûÜSÙL¾TžbÞ²O_õYšÁ[ûÜ}Ï]]…n¾¯|å0düË_þ<¼úê«ö³Ÿ=ÉAd vðyΜ9!oÍ;:ë ‘€è½ùæ›Ð¹€Å‹-šššˆ<æ˜cV¯^ „ (A]tÑE€ûP ø€Xúj ×ßü¥g~?Ào†mÛ¶íØ?{ 7zè¡€ì^UU¡›à!„Zà™h¾âŠ+€b¿ýíoCy(ço½õV(P*•àiüKUDI$‘DÉ2`2XîàZH{„sö«Œ12xyi{Ä_‹ƒd°…ð÷ÿµÿàý88;¹0ˆ†ê8¼16©ô$†B7³ƒ«_X²t 1:º¹¯oîúµ›¡(Ñ &à‘¬ë¹†ECüsú»Ú5»X˜»ôÇ?a÷ÂK¯\¹â”“Oß²e#PÂ’%?(‹ÁÀâ'Ÿ}v%À ÐFo__¥R ¶t¶ÃR³ÞH¥R$"€ÞŽ?þã¢ÈLlß¾=à›.—þËw>Æ0@ØšUÏŸzÚéëÖ®9éäSî¿ïÞpA42\)LŸÄш‰I HžgÍJ:“øÄ'>¶õÝ7Te;ì°ysyþùÕ]…ž#Ž\ôû[îÈd­öô 7^ˆvÖYgýþ÷¿(¹ì²Ëyä †x€"ðOÿôOpé‚ .$ùÖ[îì´U ÂÏþó7Þx#PÑ—¿üå‡zè ýCxOh𮼆˜@K“I)‘Hú‚yä‘“““gž¹øùçWB4êõÆYg.^¿~É'žøàƒ>žzê©À¦p#  j˜»úô§? ô|üñÇAÐÎ;ï¼e?ùÆ›¯Ý~ûíÿñŸÿéCÏ®NYõ‡ƒœyç;,Ï8¶W©–¾z͵·Üú»x,ɰωç,þäos3EÐå_»öš{ï¹ÿ+_ùʯýÛÑÑQ á¯}íkw`¬3Î8ª¦òšk®žÀÀß RŸ8øøSO>%•IK‚O&~üà ’È1,Üxíµ×B4€üîºë.xTð7¬uýÊ+¯¼“eù'?ù  g˜E†«€ƒ³íúSgæÂ /„ƒ®®.ÐáŽåÐGPËÅ_ , Áܵk`7üh9þ„®]»öãÿ8Ÿ~®‘ÿîw¿ƒºÂ©‡‘DI$‘Dò¿TH¼LØßÿ™8/`·ý8èÍf ©$<ŸpÿzDxp™$þtÆÖÁ²ƒaj³ åú"L‚ª`O¼ò¸µ«×aÜ·oûÀÀœuk×¹IÓlðÉc‡bÀKÇumxŸzêÙwÝu;Mpª*íÿç¶é3™I$$4ADé‹îÚÖ^ví½/vA@DDzS¤ƒ‚½±k/¨€ ˆXpU¤¨tHHBÊÌdú­ÿß9gB‰.¾û_Ý÷½ÏîçzsËéÃùÞç9çyPÙªªªQ£F=ÿüó6l–ªwLE‘@*€Q´£(Š`J@ˆ„7hÐ $RWWwÉ%—‚ùâ¼N8iíÚµÜ ŽÇÎ>ûlðšÆ÷ ¦ëëëq4³fÍP5PéŽ;ïzé¥ÂÑHi›6±hTàÂ>èàb£N`k ‘*¡3 Ä|Ê)§}òÉÊD" r'tâÒ¥Ëø_´É믿 ÀúpÙR”*ŽœwÞy_~ùåqÇ÷Öo¢:ýúõ{óõ×·lÙ‚Žö¸ÜÈ­¦¦&¯ ?¥©†pˆ]U_xá¼ M ææâز¨(L‚’wnßÔ@„øX±bêˆÑ£ÎÜ|óÍ/½ô*Øh†þ™å‰è¸_|‘ï¡QUõÚk¯]ùÑŠx$Ú¿o¿HŒF¯Éͧ[p–-[vò©§¬þtõ‰'øÉªUôs¥zï_Î=÷³5k0H0xþõßž-¶Øb‹-¶üËrÈõ| ˆ¶oÍŸØà™¤éNá_–ƒX„ƒÝåJÙ4ÃÊF”13Fؾ}{Û¶mW®\ÉýË04¹+Aà&ãã?À‡˩ªésÎ9÷£–Ÿ~Ú›6nè|ô1ï¼õ&¢ªªú¨£; DÚ¹{Ç1Çt-+ÛÕ²¸fzIvÐ-Ãg"“PQ]Ïõçœyúà¡òòr_ÀÇ ËlQXØû¸cÁ"©D²M›6={ôøhé²sÏ>çÛ¯ÿÙ£W÷å,§Æ78Šl‹6cn¿Û®­“˜2ÀUK–,i•––ÖÖÖ‚iªsúé§¿ùæ›@ÇYgõõ×_÷êÕ Onzöì‰?O9åСÛí6 ãÏþ3ð‹¿‚t·Ývۻヒ2üôÓO÷Ýwß'Ÿ||9d÷pW2TÉÊ6[Y–/_ÎͯøÃ,ZõØc}ýõ×¹5óÒK/°¢‘W¯^·)ð×Ï<óL°#Ø…ß¹s'ÊyÍ5×¼ð Á@€û£•+&Lšˆâ}õõ×ÀD ¦À°I4éÖ$Šƒ$ë=SèÊH`n×®]?ÿüsÙYÓ×9çœàCEÐËÀVãÔSO}ç½wééС†Ê¿ö˯ОÕUUW_sõ7ÿü¦rOà››ÂÁñ:±ŒCYtÏ<í´–-ãÞvhGû|x~ãúõ¥­J@{h«®ºjñâÅxL½ùìÝ P^·n²£NkjІͭíCйèAœýÞ;ïæx}'tÂ3‹žéÐéHTÖë÷}ôÑ'ŸrÊ{ï½wÖ9g£]7§í÷ߟuØ¿¼Ë[l±Å[þ×É/à fY€ Ý|î¹ *ü‰¹™»V>ë¬3>þxÕ 'œðÁ’÷/½ìâ—ž) ‚tÛm·Lž<µUëVÑHÌáRêê"…ÅEõñ¸ ‰’ ªétÐÖ׆ϿèüÞ£«èrrC­Û¶ÙøÃxæêk¯yrÑ¢vmÚ ¯ãÿø§åK—ýõÜsßxíõk®¼êÕW_u¹\̧6Cë#ÙíØºu+G½óÏ?¬Ò¼k.¸à‚>øçgŸ}ö_|‘H$€¨Ñ[o½yA^þ>üðCTpÇŽ7ÝtÓÆx(vÌ1ÇtîÜp6|øðyóæíÙ³çÎ;ï<´±˜]×BƒÐJÀA j$¹òÊ+Q6Ш tÒºukí¢0`å|ãù?ýéOK—.¨!©>}ú lÇwܪU«2©4Êÿý†õß|÷íÍ7ßüÑÊ•i5ƒ"µÈ/6ÕÒ˜…nGZ×)zóÄODaxôä@ tþöÛo©÷ïtšïü`¡)@Õ Þn¸Àtá…¢xè%ヌÇn¿ýöysæ€M1 ИƃÕÔÓæ>æ¾òÊ+ÈL ækÑ¢štúôéãÆŒE퀀¨ `M„fyùå—sssÑT=ùá‡hC” _UUUhÌC¶3ßYŒê ´øP{Æg¬Yý™šLqÖ-ûˆ0@}ïè7mÚ´+¯¾ýuÁE®_¿þ‹¯¾DoÛ»÷o¿ Ú¯[·k‹-¶Øb‹-ÿäpúf»Aï¾ûî'žx‚[#AK–až~Ú©Ÿ­þ  €ëÀ‚‡EµGÕÕo¿ý¶Çç­¬¬èlÙ²…n (/wù<†e'Ððk™LÍÞê¾}û‚Ø@oþœÀŽ]»Þyï]·×óÝ÷ßOš2yOY92 ø|Ï?ûÜe—\úÆk¯ý¸é‡9sæÌž=›,Z \ñºÝå»Ë`¾P(ôã?N™2å‡~()))++[´h`®¼¼9ÖÔÔ”––°FçP?üðܹs#Ë–-Ã3D­»uëèÁcW_}õo¼ôAš×_=Ð07qâÄ`08dÈÔñÍ –EÕ‘ú”SN9ùä“¿ûî»#<ô*BÖ»wï1b Rz‚À@c(ñ’K.¢n‘Ô­·Þм:à*< V£;pe¥roÕàÁƒË+ö¼ÿá‡iª¶Í ñ½•U K¹ï"¾†OöºSº]vÛm·¡Ë€ƒ,”¡…\;¨«®®nñâÅt?x4Ú¿ä•——‡,€]ºt¢.(˜Ûíž5cf§ÎGaÌ€Ø:vìˆ&¤Cû<ý´ÓB¹¹ÀA´3A÷¡MPñáC‡!ÚÚÚ &€Gù>ë¡C‡")4ΨQ£@á±X ´ŠéСCs~ 3úé§zœãÝ“N:iåG+ËB3Þ}ç]:úžÅ™á êŽ2#5Î^x É¢œ€]\ÄŸ\‹ÊlÎXLXtT™¢ÜZ’kAxhm¼Ë™Œ+/ñ0RÆó:»lrþã±zqdÆãùîÚµ«K—.áh¯# tCuUUN($‹"_ÙX€¦|Æ]÷q á„°%¡¨x(Be|hŽ­(ßZÁÕlõñúwçî]¹LÖ­_ߪU+١誦›—GC&6³7—s-:¥ÅÃ\‡+\UI‘+w!hÛîÝ»¯Y³†¯ËD}1$8æ,| âu¾k‡Ÿˆ´)h„:øG®yå¯ð+‰TªmëÖ›~ü17¤ß'©CÇž¶Å[l±Å–ÿ ’ÅAÐfßÏ>û PÒ¢E ¹•“0Ň>õfw“HLÛ¤ÈøC¢Î_’™4Ÿøétk°B:‘,*,¬«¡vU]ßÌ­©‘IM¢ ë"‡$ü lâžPÜN'ç3º……ÛI÷W}5¦öûÞ’¼ÜÓ x ¨ÝÜÎÙæèÌ-Ë@X ²Ãå¬PÛ®CV4ƒpÑwh.d¦C@êÿyáÑÈ<€2¥+UÕ2“­’Ä­t2™ÊŰ᱕168šó!ô?€CYpÏÞ¨#Fw7xÈ¢RD"ð—Ç6I¤’¸‚dÍfŒÝÍ ·˜£ ãúúzüÉ1úpëÅ/÷åÿ¼n;Ûb‹-¶ØòÛ æŽT*Å5#|ÆÇCÝq£ÙÁ’ŸŸ¿iÓ&1MWVV⤦¦¯dq.´*)Y½z5È 37À6¨âGy”0>eòÅmFFMe2Ÿ_7µúxÒô¹ÝÞT&©©õ@'H²@B¾`yÙ®–…©DLj(Vã<ÍOÂá05žf0ä¦äd<Áµ’¨õÈL·Ô‡±øNòߌƒ|“ ×z¢²_n6=Üévï^jŽÏÉÉ‘‘dÆ_Î(h(ÊëN·ä&ÙÆš€Çûo)?úˆoq60uá2øBRÐ-úß’/&0 Ræë,Qkª-nÆá!Ç 7X‘’â¡Î#ÅÃ@ø pÍ1WŸ£ñù¾œŸ‰§wHá+DùÚ^¾ -yXéü»äpÛÙ[l±Å–ÿŒ4§¶À ®à*<®Sà;S›ÃALy¹¹¹-Z´øòË/{ô臻[²dIÖX\ZZ D¢;wFB|CCvïHƒB W¨±S’-MÏÉ EÇÇér{+k*=I–M Ù’|nW}¸Þãr(w¢¾¾Ñ5 —Æ‹N¢j:ãu»³€K§6Mn:T Ý FjksB!ݤþœc‰}ÁÄšBá ò ¼@rÀ8߉Dø6‹ÃJøeê]qÈÌÜhŸÏŸŒÇ=~Ÿ¡ëà 4—ªkt㶬$’ ë0ýêeu·MÍÍ윚³Ù‹G£žŸÁ.ø6àš$Œî–’‡`¡ë šOÿ_$…¦ã;iøRBÿú°‚Ë¡ ¼­‚¡Á Æíæ ¯ßXEâ[žùP®´Fkà—Ò\}›¦8×¹)) šH ÄÅÃJçß%ÿ–v¶Å[l±åß.?c5â[x óæ±ùZ©æþÝÆ-ààúõë|ðA²õûï¿ÇÔ³lÙ2ŠƒÛ¶mkÕªÕgŸ}†G{õêÅõ:Ü/a,ÈOø&YQõh½ìóPÇšJœœh†žH§ü^&r(Š™Ñ@=‹„ËÊC­J‘?}˜›‰+ÀR¦n¤1#⿺AzÛÊÞ6SI›ˆ;>]ÓRêE¹éëû’û/ÁA´;±’C]øæbÈî°Ò¡kû˜í^qº²-`-™Pš®‰Ì§O,$ÑÍô‚Òa–óʱå×tYA®@€u–EL#¥¦ÝÀ#æ³°Urr4|4§õ<Ìþâ*4îÚ†ùºÂî_ªLƒ˜5«L•Â?žÒ88ÿEá` óe ¨8(ÿpµƒœ#¹nCÃà·Ò 6–ç×·³-¶Øb‹-ÿßäg>Ëù.LÂpÐçóa†Âl—r,ÜË¢E‹ Éd0}õÕW˜ÂV­ZEq°¼¼¼°°ðã?Æ|гgOÎ`€‹Õ |ÿ&U``nÐM’Q‰©[×;Ü.@¡®f@‹œçÌDRty¨EÕ‰,‡b²ørdÍ Qyt‘&¡–£Q‚tèu¤ï!jš }ÆK†i—v°é´ŠæåqAøæå=TÙÔuÙ‘mj’ɺ.qŒ`{%4—Ì)6¸é&Íì€nNø‹bCvYŸ54¼‰DTRT&CN#Z/ Ê›Z&­ðDAˆÖÕåäæ2_óðû íÆÙ+‰ƒA~‘ë°ù|S½æ>Цàjˆ»‘,B•{é´;4-ãpµƒ„ý8ù¦ÂÔøt Ëa¶3a» ð›:à{àW¤óo‘Ãmg[l±Å[þ3R__Èë˜/€g€?€ÝîÝ»óòò¶mÛ†ïùæ´ñºï½÷àûÝ[³fM*•RäÞF>ùä`_¯^½¸.;æï7â Q0-’V1å?Ø¯ïØ¹sˆ" pפ©S©šPU‰ÓEYAq޹gàȇF‘@pÐ-7?úÂsYaSÍ×-i ì‹>?1(Iúh:n–5%ÁH%,Q úHöæ~º«ÿ*í Æ[,È7ó¶=ŒT¬†ÿ›–‹9üLK—H#Bà¢) .¿çñd‚öZ3;²›KžCd›æhÑÕm© "í#…js­x½ãQñ]tÕ©¢\yÙe‹_}õç²9œs‹*ßÎÕiü[åçêpðŸMˆH²žHX¦©àËÉ"ñ½{}-[Põéa¡p8 …8r„Âoï×­±Ã’ï©"´iýV[7»m±Å[lùHsÚA¾Ü(à,W\\üÅ_pÀ8äó<äÄgŸ}6þüíÛ·ã_øÕ«WƒCö9šA¸„t{÷îÍ÷‘p7ȤÂ-ÈtÍ»(Q†« îÛwêâ—ˆ®Ý|Õ•‹ž{†s¨6wAuñÄÍ—]±è½%$™ºíºkŸXò×W‘qP²dTA ̱âõaÂ&lÃ2JWV¸JŠ(fÒ‚ÇÅzÿU¸ŸL~?üðÃQGu˜©P‹§(HD’2uag0„k‘Ý»ƒ¥¥‰½{½€´[¬Þ¤z;Ý4h°èÃK>«®¸ C²îݾcþì9’ VUT>>µïÓ‡L¢ˆèµh$’Ã"ˆ\rá…¯¿õÖÏesøý·k×®Ö­[ó½®Ü•÷ÏÕ4Â&Ö”•½ôÒK߬ýzΜ9®v ÿkÇ~~%%%„í9Üâ|•aŸ}üÇÌ·ÕÿÊ¢ü›ä0ÚÙ[l±Å–ÿˆ4çw™ú†3 kcëÖ­íÛ·_¹r%·;òy<‰D–.]:uêT¾ìgš&Þ¢8¸c×NŽƒ¸Ô£G鮎†(#|ªäjªÎŸ)õñÛo»gÌhâ÷Í3îò«¯*8®7QSÄå&±‘O>4ꆛú8Û¶{þ¯ês£Ò³;QØ&S>é6N½àÆpÄbFNì©xjÁ“{víö*Š i‚$ddÁr:GOL [þff+ξn DöYÙLbŠôh±#5D›T‰%p³gÃu³áy¡‰‘‚ŽIwíà-q¿BR<µš®0÷Ýʾb6­3®ŠO¶ÉjHú˜iãÌTZe´é¸aÃG<2†¸ÝûZ&›‹¸_ò=É/é:½O?6eÒö-;rƒARFM?ú¡QC† ñäåkɘâñ#;-šP~ššH ­hRC? +5-¡ N[؈ÖU²ÅÖ÷UÖÂ’T4âÎ nþæÛ ×?lð…‹£[-5%øÝõ©DÀå§õM뺚ŽÅ9¡€èñfÛ_`ío5öQC+Ð M7N±»áeFÞ™‘Ã†Ž™þ8>?ˆâ¤c0wûٖϦi5`«@;‘c•Ánñ\ð#H•ß|?í±G§,\ º‚¢Gde_ éq\í£I–¾ è†!+JÍî=ù…-'zøþ‡“:‡cÖ²&Ãh>¨¬ýªÙ0Dpë‘!C‡ß?\@'™rWÄgTÌçÏÙg…†â4&b5Ð:i$wsßø9‚+Õð)Eû—·IS¨ÐðJ*3bÈÐqÓ§[–&8èÇe"žôúÄ[l±Å–ßNš3sï"¡U mÞ¼¹cÇŽŸ~ú)÷ xÈç5MËá™Q£Fñ ‘Ÿþ9˜€HqpKù®VÅ­>ûôSºv°{eºtÏr8ZFUÓi°g‹üŠ#'HÔ ‰&†ýù„‰kWarøÇ3[ù R$èÃ+D3IT{õ•¾þ,qÈϼ`Ø[ïo€8™ÞØ¡e’jÆ—“`Ò™´Û᢫ E¹lËàˆÛÐ' ôàC#¢n%Ôº5&pS‘~¿ƒè$’$ÐÏ%K´‹1÷îÞÕ¢¨5I¦ˆ PWˆ5µBaÍ@!‘ºp0/D fß$’J‘ŒFòC†©J(•…9ÞÊì,w¶(b“®E2IÌI«)—ÛC'Ît†Bg"A¼^f¼¦ÊQ#—Ðú F[ÊO2ÃSœ(2&R ªñ´D5|½LD“–<§VuºSåÑG^|Ř^$Á‘Ö)$^1iÕÓ°VÛ_K‡¹Ü ©øw5âÙ’¢õaÙí3mBU¬~îÂù²ìpz\D%Fulv§%'FÆ-9LMˆ”n…4ñ2‹d,ILŠ2™Á0I¿”A;ב€¥5,SRÜ$ÉÖ'-ËvºyóÅ—.Zü ñɪ@Ò„* ´r2ÄW %6[ñ© o E‘bµQ ꤭a1@LÕ“Ü€–I( !ƒQc"M®,½IeWNP6T)e‘HüÞ˯˜þÁ¤>Fróikƒf¨ 4gXzFF§××ã“…Èn‚ç=žŒÓL[™Mfô˜Ö‰!“z³ÿyçÎY»<- áʪ¢–ÅÄ”÷!#§ö} ZMÚ\tIUÒF]#¡ª [çZ÷%—Í|÷zC².‰d,Çí¥Ô®´O^¾B”ö;œD³úŸuÁœ×Þ¦k11]Á@Æ©Àˆ‰k̯¸Sb+D ¶×Òt]ÁCññ{éõúAFôÁ–¢AÒ-•Rð;EÖhU$‘?]‰ë”jÚ+;HmŠò«‹}d—ô²%¡:j”¼ë‚Ëf½¿ÄT#bA1¥HSûó¬-¶Øb‹-ÿIi #Â`0rÛ¹sgÛ¶m—-[æt:y”ÝH$Ò§OŸ7Þx·ºuë¶gÏî’æý÷ߟ4i÷â²bÅ A²ÆâÍ{vµ*jµz5ÅÁ^Ý{€odf,V“Ô Zi)¯­£»3êüÑ£Û×E¾úüã¶=ÅäÈW[ìÜu³˜|pÆ4âóM¸­‹°–¨¯K•xÂÕ•íÓ’âðÇJÛÜüÀ¾ÒVTµÜ¥e2šæt»$A”Ñ2MQhØS¢©wÿù¤™o¿IBþX4ì/h*ÚUW1wÒ¤cˆûúAƒÇÝq{0?7QŸºÞ\ðj†šª© äçãõ ÷22*ÒlÛ¾ÝÅ—_6sþÜû~ˆxØ4œVg›°åÇŸŽ<âÈ;F£®æ“N‡È3RÿØÐ‘F}|Èìydçö™/>›DªÚ#ãÇ)˜; óáë¯oÛ²ðÆHqˇïÒÕ#Úw¼}Ø0ZàH¨÷èȵ‘°?6e<‘Å:ü¹2BH]ýäûî£âÔ˜àwÿÈÔ©“‡Œ{×¹tjY\·uw—=7FÂe±ú£Ž9zà„qÉÚOaA:™P¼”¯˜h¤P[0yÒå—]–Û®­šÓ©×V .対·=÷Ò‹€’L]XLi çÌÛµis(X0dÖ\"QG:GvÌû[%•¾åé™Ãï¸eÂÂ'IBýǨɗSfF<ÁB«6:kĨön× wõ{ì‰Y»jª]²cÂÌ9€W+rs@^j8æn=ï¢'ß~]#IÝé®%š“(ùÄ!hdò]ƒÐ»9Á`ß1q -%q B[+ëêgŒ›¨×FêãÑ.'ÿñòw {àþ±S&Ê @`¨%½­ŸšLu<¦ó†]Û&>½ /i™Y·ÞY¬x6ý´µ¸mÛ´('‰„‡¦OKj)OnN2õ8$é´!CüŠR[¶wøœgÌH­Ú¶ôçSi´ºx²æá±cIÍÕ†O}bâ WûèïQbúˆ¬'2NWàP8h€¼ëvízlÒäVyy;~ø1?<ýñq÷ ñÄB=‘š=z´©ßüÕÚ^]»»BÁ]‘i‘ßäpW(ô‡b“><2 ÇŽMà#É)nܹuÁâÅ©pÄÈ0`ˆVMWDйÅÅ%)ËÚ©yèù…{ë* Š‹¨.µ6"ÎI#GTÄ"¡œœQL¢cÕ§€ƒo8ó‚NíÚ?8kƨ»ï=m&PrÊý‡`œ‡rðaFgäí}ýnO,ƒ^FÕd’JÆœßÄ¡tÎ8/rÿýƒo÷´È5Âñ1³fŸ¿»Q÷ .V|µßþTܶõ®€U/’nMšúqû0ÿÿþSg‹-¶ØbKór¸8ȽDŸwÞyªª¶k×îÉ'ŸÜ¸qc§Nu?‡ƒ\;øéA8(³R0LHÍGƒ¹)¯¾c»\Y9oÌÈ>ctûƒƒ/¹qê3/6¦SÂ+RÆ wŒ|ï˜W==þºÛXøñøIÛ¶l¢µ ]µ$Qr(U‰P̓¡kI¡š !Ui÷ŸuÖä·_'nG*v牂¹õ»o¦Ýz×ñ¹qÔ½¦Zæ|`ĘW^ F:ƒjnÆ ºçº¿Ýà-Q¨«®Yòö;_~úÙ K—ÓÖÒõ±÷ÞsùµW—´k“N©ó§Ï1y2æ:)@½áP•O$9äúósB»}üùç$‚érwìz 5úʼn ?̘8Á—Ÿçø®½åQáOß}䟎§Û«çÌ!ƒïx¯©ª&1ÆM? ³¯âL¦TªTŽ™pã5×Ðݾn1N~|ZUMÕ¢çŸ'{ÄH#¯ùÛ#c' G´Õ©‹E[Ý™Ÿ"ªé”âq›äPÚA4TMí ›ú<úâ³TM˜ãKFê<¹¹f2ùÝ—k{žôgNÕÏL™rÅW$’É‚‚–óg=ñ·~}Ýí[š±zq{íƒ7Ü ´+>ñ‘±ãÇùÇý7öô‰'¾8¿ÖÔò‰/¶á§Ñ·Þ~d§ö7Ž\•ŒëiméËn¹ñ©¸¥®¦e¯‡ê ó¦ÓÏ~jÙûÄAÇJ’µ¨¤ÓŠà*ÿôË|Îðxô¥ˆß…î%)»œ0åÔƒïºùÕ¢I{ëkÇ>>ÍpÉÓgÎPÜ^â¸û†<”覥ëa=5cÑ‚‡çÏ"±xrÃ&f<ôÑYstAŠ›V°¸˜î:úé§L,}ÂÝ®ºàüö­JѪÓ'<~ï¢ùa1êq{It‹9lø=÷Ü7ȧ ¾˜öÊØ™ËwÜõÊwê9ç‡sö Áßmß¶`ÙRâuW}ûmž 2läðaš(: [–eR%=º&uÝ­(f<&©ÚŒ#n¿þÁ2÷bn΄É†O ZóíÆ|§oÔÀá£G¥ªG[u+޶E$àVµŒCÕМ3 »{à=I”lÌzdòýóç`QTݹ÷Þ;ûË>ßøGF?1uf¸¶nðÃŽŸ6ù‘¹s©‘ÐíÊ·_~Å‚ÙsÃ5µ¡ââq£ñÈ䨈?¥ªï~˜z}ÿîݺ^7eDY¸ºÔ5tèèWžF–­ÛJ‘i}?4gÆÞ\R'hír[:^Ê%¢ƒ¶Øb‹-¿™ü üë_ÿšL&¹oµ.]ºÌŸ??•Jñ@Á¿Œƒ‚¹ÏXLcæšÔ3m2OÄâ­ŠŠ“‰„Ç uµÄGŸyʨw_%yùœ~éCϽ@ZåR«PT¯MºòÒ¡ÿxŠx\£?mÔ›ïQ¨ÏOÜtÉW:•0EÁíñ¨†ŽR©jFM¦‚9Á¬iŽYfï;õÔioüƒNötН«µ|¿Û}kãŸüÇ?ˆ¥’¢–@ÀkNþóKk>EI49îŽ;î~¿ï˜NÔ†hÒ%b‘6D‡XÒ†ì©xfΜ>ƒ’¹ô®nª[+,\xר‘Äã¤?kóŽî8~úãÔoN.DKº3×¢fMÌÖimð¹gO3gO]mqï^Ô°K | ¸ú…=vÍWzZܦêØ÷ß/xåÅ'(2ò·[Fê騑ÔUScº[Ú»í'¯ÏçEâ˜e5sÀI§ÍXù1‰FHÝ1£…k•‚|ª=ͤDEVd'3þ‰òÜrÆ) ?YŽ ~oeY‹Ò’d<æsëÌf˜HO>üº>+ìÙý-í\óÝ’åKo9XL%‰éyõÕwOGÚ—ÜuÉų¦Ï&ù­¼æš^Zź„,8Ç\pÑÈi“HÇÖDÏ@°fæçŸ{ñÞ‰-=#8$ªh GïºüšY‹_"!/º|¯šòºEbij«5H߳Κ¿üCjýLŬ´zã-ãxHn]JÛ\MŸ+Q]‘°ôP(¤Ðå€ ©Žo‰ÆiãK¤ïyçÎû5ÚGºN‘‘ýîóò+¤b/¡ž,%f½5h ]ʤ÷ÞzÍ5y]ºQK´!pb¤ñ÷Ì›˜Ê$óœÁ±}ûõ1$¿C[è®×ɖʉÆ [þK#å{C…E`FG3ì¿Ì@lZ$™¼ùÒKžx|¦TRÊ ©Q²§’äåí¨µyiÚ ={?÷ù—t‚ÏCêSÉ¢á|RNY&šžÙô£³e!Q\¤¦š´Ì¿þô??ÿÙjü¨]vÝ}ƹ3ßZB·R•í¤i:Ì&jFöV/œòØß.½RiÙ’Zôù×ß?óÂó7?4X(( Uá1÷ 6ú!¥M»οdü칤MÉ€Ë/ŸñÄ‚Á“JN~`ÄýS¦’D’xý$Ží)_¾êã‹ï¸h)º,¡:zßÉçM{óõt@sáwµn<þ„§×® Æ}´Oetþ5ýú.~)iTxZ‘ †í’ƒ¶Øb‹-¿™.öéÓ·mÛ6RDXZZúôÓOÿ‚±øki„ AŠÇãù¹¹étZMÓ@´ŽïX·a÷?v:÷”²=Òžd›#ŽØ”‰Üÿô“IJ¦÷½3§6YS¹§íÉ=köVÄ¿ßrtÏ^5­K®6XòyõLZvSMŒa™ ㈚J¹]n=ž”Ý+žeø9çLxãuªõq(t6Aeš`˜N>sÆ;ïÅ"µu$·åľý†-˜G“w{ά—T´p Ý<¼UÕ’`êîsΙùêb:‘Kl¹•è¹é¼óžúøCü.ß*,ÅýË…“Þz‹dRÄ­¯‹ÚµÝÎTMÄ-9ATO?í±QýŠ–!˜é.¶ÜM¾áÔSjÛ® ô:åe»Ð+»"á9Ë?¯$+ªo¿î†çßzÐ@÷®Š‰G3–êôº©L½‰Ìð+®™ðÚtºøT‘¦F£ÌÙ²È=3š|ÈÚÁ”zÛ™g>±r)]™—Iˆn§žQ.¦·‹¥ˆÓ=âo}Æ-z’ÙåÙ–U¼þÌ3ž_½”jR«SwþñO³×I"Õ÷Þ~Ûô…Ïg¨ï§Îùô})"‰DSãþrþˆ¼LBn¶åV$ñä¥gžýÈ ‚ÌR‘£¯¸vÔ3OÙ$nĦé]Ó†Jí®$¾À=W^ùø{ïú:RK=G‚®\žëN?ë…÷—RLÔ“/í Z#£ÉAªê¦Þ?ddëvÛ·o¶È_»þ»™+–Ñ…q©q:n=ï‚'_yB a¶ØÎM•a@ö½Õ7]}åY:>¼kWޤ SªùÏŠO­ù€êÒv×õ½öÚùoÿ~“ xà›Úô#×_7ø•¹ž6­ˆ&R°SV›ìl¬4ÌÌÖ-¯?ûBº¦N¯Oä{}U;Ëúþý%â°HÀmÕÔºùH¿;zú)ú0:ÑéTÓ G PS]_QQþðÀûz”¶Kî¨ÈÏ %ëë-›&à;¿êÜ|R^qóU×.úè“ìÖ%0(FˆÏ©ªæøo;锣Û‘››Kü®òÝeÞ´YQW3qÙÛ´ˆrU—n¯|ý%áÍ]{-úú;‰ÞzýuO.[J‡Œ®ÝsÕÕ·ûˆÖmMU£ËGrCo¾ûÎkß~ÍV[WG|Þèe<’®«uIy3n½mÀÓ3,…?ºcʉç ÁåÈ@ÚH¹â&QÜ´þMñm±Å[lùr¸8¸fÍš¢¢"‡Ãu&yyy¸Ëƒ‘6‹ƒÛÊvµjÕêÓƒ¶’¸4~†C–©û1ê Í¡¸ÜeŸY’ÔŸš<ñšá÷8Ýþo0nÖܰ ×Å ùMˆ¸tÏicÜE“®ºièœy¢^t\o¶íÑÄä«Ô™™nèI¦~•5MK¦>?[;¨ß}ÒI3—~H×ë…‡ƒ¢‰nŒ<ïÒ1³g‘ü:}îõ»þúy+–S-QF»ïŠË§½ðÑÓ$HµtVUPOÒl¾%ö9åäg>YE×ËÓ™8èÒgýô’×é† mXÇûýå¯ó^}*ù"À& û9"XP3HRyáEc^y‘*¦Æx pC}e×E‡Ý}ÏÀ¾ýZîÚ°¡u÷îT»éIqKÓé%Ç—]5÷Å—H]˜ä‰š Š.™-M 2òíó§“ŸùøcÊX~?*«ªô±}É$•N¹\ÞCá Ý4èŠËÆ=:ÍÝ2îHE‚i•¸ÚÞ°‚òkÖ_Ží½äó/—5Iâðõ»à‚Y‹Ÿ¦¦Þ$áE¼÷*àcÀÅÏxùïDð ¾è‚©«Þ·LKˆdˆÃ3õÌ¿ ~ùD›'©~4'0ñÞû†=:ÕÐ2Ê™Lâè{Ü óW}Jdƒv“S4 #YQã+(¢Èe‘þçœ;çÃ÷³ü!Òè¼€Ôþ—^>‡fgQ 2Ú! |étP–Je^œ>ûÚó.¡JÓ=U$C’‰ÁƒN] ¤ÓˆKÀŸCî¸kʴLj/HŸ‰Çé3á0Ý$Q{ß 7ÞðhRªI÷£´j™É‘œAê{ꎾVSDr“˜JL׃—\<öã·"áš ÓG|~KÕ”²8ÈtÌèzUÓ~øIVuAtP5ÈsÏ,¼á‰Çñ ðÁÎÜ|úÔ¡úÅí6“I1/Ï´,êÛÇ0çÓ÷ú¿ée{dGˆì)'¥­®¿ââç¿ÿ'Ýð “`î\2û¹çèH05:ðß²@ì­Óÿ®A·÷÷oÛ¼©}÷$ž¡ùöE¤®†ä´xô¦[-\€‘?òìóǼý.‘äIw:.©­%ùy7yÖS‹%"õ©X<¿m»Tõ^w(HÚ”Pu^eê_®¼`9"Žœ­áû®¾jÚgK‰Ó"ºHjbO]{×MO!GäÐ¥ŠU ª¯u)Ž¢l±Å[lùÏËáâ )xóz½•••%%%€¿ºº:ŸÏ÷s8¸}÷>ìÕƒâ w4£¦3A‘œÁ4à iØí«×ãõOÌYpÇÈfeµØ2Ÿ6T:þÐÃxh„3'”ª©^8{ÁõW\lw$|ìíw >ØÓ¹-deý„›oþÄLÒ2àå—?öòbI ¼áo}ôŽ–J*Ήkcþ|F§Ží¯\4—Úyܽ÷Üz[¿–G´£æ{ð–n‘´ùð%W<üò+tÏ,Õ¦äÕM†cthZ½¿OŸÉóæŸ›ºC×­H}&‘œ2füÈ™3I²ž„¨–™ˆ=øð¨ñcÆݼâÌ¿üýÀ½ƒ»¢|ê¾A{öV˜6™´F_ÇÑæ·_}Í‚ÅÿÈîŽÅ'Nž2lüx¯/µe뤇F>üø,°,íúdúÉù3ÿ6ôI‘$Á¹÷믟zí•¡ãF“ú4qúž0dgUÕƒOÏ‘ ó)[[’åÔìfõFí ÇA}Æ :‚j" ¶k^ï<ïÜÙ_~R^WÕ*7ø5è¶ÛÅwo‘”»îè?ëÉì·?ûä>\³†¨µPËò’ÉW~ó夷_¥£($Á¼+N;íï}Ì\ áùè˜)‡ŽáðÙc¤ªjö#îœ1Í‹Êè'ÞÔgس 芋„~Óɧ<µj%‘•©×ö4’.Û÷û(jVlû¶ùsçÕÕG^—JÌ`Aè‚‹.ìܽÕ#*Jõ†MO<ñ„èv§TMR” .½¸çzS=_:­Ð¸,Y“19 æõDrÛº/?û|ŽÛKý{ÝÕñh¿Á÷–vlÚvJrÕ¶]‹=›¬¬õ{¼w@òCÄï$uuOŽž¸uÓ¦[œþè'tÖi§ß>rì §Úéôœ2Ū©\¾±§óàcÎX8«ÖÒòZ^rÅ¥Ýz²½ØÂ=wÞ™'¹J\þ5ï|Ø»g1è­6RçM|n£>ñèø‰f"md´õë×ÿáØÞ–"…±q {½P7ÒåÇOÈÍUÕU‹‡;à½âÊ«:vïFL¡jÝúçæ-ô;œ±šHn0çªk®5æáöê?i»¨À—S½³ì‘Ç]uÉ%Ý/8ó ã©¥XÓ-ƒG…k0sO“Ô^|ý¹çöèttžÏW±cGQ^¾šHß2d Ú¶•Èq t-úãMšâ ’šiº<7ö½£ýÑG2¯/flçÎÙS&ˆàK5™ºñî;úß?¨óŸþ0-Ô3˜¨¨œ0n¼–¡:|Œ¨~wö/ìÔ‘…V©ÿΪÚÉ&hNÉïóéÕÑAŽ [iµµsÇN.Û¶#¿u«û§L½ùÄSO9éä>ãÇßsõ•Å…ΞE2iŒ«Ø¶ æÍÓSS7Šrß°¡$/D—@Hdü½ƒk×o+,*òÌ\Ôvâ-wmÛ¶­e—Žcf=μÛägß<óâó•n3#ZGæŸzÆ™íñc‘l´Å[lùÍäpqüçv»yôùx<îñxxغ_ØJ²³ öh‚ƒ<'º¡¢I:Üè{Ú9óß}‹æ-—]¾ðåW©3‰ÇH2u÷å×Ì|íU¢¾_4ÿÙèP—ÓR²ÓÉÐHv=œžJ'êc(´™Œ(J*“¬—_n^^n@3¢ÆcuÕÞšhn(Hòü$£Æ+ê’]ÉË÷µÌSÜbèF$®EâF"ehº!UZv>’ûÚ5-˜¢†c:žI¥óŽìLÈÁé1-7kêhÓ§èu ¡€”ë—\nBdeì_·A2ŒŒLt—à x¿× n ÛØ‘Ìh{kbuµ’iÒ˜Ô ,ÊÙM*Ét:Fë•T“‚Cvû½¡¼\ÉÍ¢†nEc€¹êpÄévy0íûýôŸz…ÆvÚ&¶X+ê:‰ÆÕh\K¤è¢‘h²Pù}ÓŠ§ÕH m’I¥rîHÕBè#”¢¼JO§!¿œ›Ù³'OÝ5S^¶+YßᘣôhJqîí}Âô•+*7~%„ÒºYzLWf²ëÓ±x}L«‰º’j®¥(¢˜´ÑZõêF×ÇÓõq=‘e³ò º`¹ý>ÔWÌÖ×4ëc©dOêºjJ’Ûï åP—ITǶîŒEЍä¡íãñ(Áh‘G}ìºÍ(VŽÔE-"ääåçà§#»êÎ0ÀÇéh ’IéŠÇ,-!‡eê‚Æ¼@kÑ=FZ-ÊÍWLG2Mxä`Q¡"¹Ì´*zûyüæ-ŒîËdªËË‘z¯Ó!YDM%ƒþ  )ûýÔƒ%pPÓH"nÐq›Œet~ÃpüÜñ9IÖgª÷f¢õMpåç—‹Gu§**Dɵ4õˆ©®Ö†ñˆ|yy„G„ÃW]a™üUÄèÝR.ÉÏ#9Žd<¦VÖ ÕépÈ UM¤\­Š¬tèçòyéfú/G¼¾¦ã™úƒtº\x7@Ý\c¨G«k¥z5”›G—ÒªéÚªj|¤yC9!<ãp±bÓ|+caüˆ B¹^”œ ·qÐ[l±å7“æpTVWW×¢E pÞºuë6lØPUUfãfâT*Å}âØðù|<3cÆ \œlÙ²eÛ¶mß}÷Ýáã v¬þ¼ízEØôù—ý?e‘ú¹•eL'?~²ºÓ '€Ã6®^uôO¤v4§dI‡ÀAC7½ˆÙÈQ7è:*C#º¦J¢àr+"µÌ¦¨Q7á§(:8©®ˆÔkÔjéõ·Ã² ÁÐÙ¾Z‚J,É<(…%#9•Ð80p×I=*;H†mpà)PsR¥ø' Ä¥dQeeÄ›.!RL´KFtEºµ©&[zhTÛ‡g…zœ¶Z€}qM,š5Ýì­IÀbÅÉæûÖ}Ÿ™¼%ªãQìLæZv4i­ÆÔXvMë+²úÊì޼¾Ûx«ZÔ4IÝòY´Aõ)ÚÈ…8‚Úâõ¦Ç%yÜ´Ê«&ÞqïðǦ‘Òͤf§è¤ï0MrÖßàcÓlL‡°ø$݈¼ñ"s†ã±ìx]h‹YKqCçQbSpht Œ@7:³!‹a”«<Z<ÅbzMúa#fXyœL霢­ZΨ@3 °PÃ*ë< #MCa¯²»zöGÄ´†EÕ¥ ƒ èYœE _UiÐ6ÖQL Û°MÖ¦[cãB÷_çk‹-¶ØbËo Íá P×õ6mÚà|ýúõ¥¥¥UUU¡P(wèÐáûï¿/,,Ä38âWpDøÕW_p @;¯×»víÚt:½téÒ_ƒƒtþJk_|&‘L2ét3·Ì¢¨ÑèjÞ¬á È”ÎHgssI ‘†©—éX¨Ò³'UM1åK‚²‚ÐuºÚ‰Á‰pgHMý_`òÒ„,Ñq8tF@Vh‘*]¨‘™Þf,f8H§J²`"7+SípPfÛpÑbËÙQæ˜6™£f–¨h²©Ô¤qTè4ŒÿÑ=°8(XÙ} -ÓÈYÊiÁ›Tƒð­Íà ÉZÁJºÀ©,ëàNðõ²õå“=·ŠR¯Ž¬‰µ=‘h<'Ç'0ÂÀípm‹îðð!QU2Ärêð†2‚D}6Së­NõZTC)[)Un¹¬Æ"Ñýضñ¬)–VÒ°IˆÑ`À%Ûaìµ [Dj–¨Pµ$úPO ¦,) ·›$kš§¼iXTwɡޡ7û¿Å˜Lhj¦jÈlYtfAWMô¬¡mª ã‰^P5cž­§k\s`隥ˆn«omL²´•5îÓqÄ×:bø²úòÇéBÖ¦ÈÉÖ6d³nðqc©]5«HŠ“Ù}uV~´9uK)ÒÌ<º.Y‚¥Èl„ïkM£y¥Qb·ÈwIg­Ùtí%Çxº£Á~nQaÚk’ÒT‘ÕWä0ÝðéД˜m±Å[lùÏËÏl%¡fHê˜N·nÝÚ¥K_QQÑ–-[Ž9æ˜Ý»w·hÑGœãJIIÉöíÛ{ôèñÏþóøÞ]²d‰aøó@äÆbAÚ‡ƒL]Õdí [pUWÎ ……63•JùÜlï§a$R)ß—Q3²!ÊN%žH»=x¥™É¤qؤjê3ºG`ö6ÉA¬¬²"ÉöTxÔ °EgK¹dp pP6L™„ÏöL¯Æfgâ÷M·4SÂDM*ÄIÒÅA*«Œ€Å&Þd†ªCÑ¢†bê;;»š*]eÅJ%Št&ÍN±i¶É€Ïä5sôP4µ54‹EÑEÉNÈ&Ý­c1k/Û¢¨µ•ÙÊ©I517´O yE^¾H‘À•}õ%,Ø´hRƒ´âT(™T+¥KLéà ÞhãH} (o™†”ãVx.éš½®€/ír¥ˆî'™WC`û5ªTËöšY½Æ>nЩšÕd 9MEbœ¥3»¦ Y K fÐ7øÊK¡©oßR7±‘ÕX.õè‘n«qp/0ÌK#õfÛG竹yXEXle†ÿ úDöƒ%‡#–…áÌR5i ?\{ÀÊBžJS½#¾Lƒ®‡4D‰í ¦ŸB“Ô¶«3º¢%¸&±qä:mZ:HÌ}*d$£S‚tJ²dˆ LÍ~"IÉ–FLf"a0)Õû©„+}iÃJÙ±¡óÏ‹š€÷aÖ}†À¸ZÔÍ<j*ÿð ILª,É®›¸Ôø®d¯´Å[lù-¥94ØÒ¨㱯¾ú ´W[[[XX‰DpäüWWW‡#Îq¥²²2///Nçæær+ó7ß|#IÒ[o½õkpPçÚêíÄ`Al‰¡ª…!›@2†ŽIE¢›qM‘ù—1§þ0i˜ôù#ÜX,i*]"&Ê8¨²´[ñÅf&ɲ¡HÒL#F§â¦4Äî« 5O¤Q_G#·Qå™JTŲ|fQÖ@Ö„d×é Š:«aá?iÜ,Òt1;;™¦Šãà>¾a3tVƒÕ 3ØzBY0…}åæ.6ÙŒq ¦I¶¾rcÛqk°V_™#Hûü1ƒï^µð%AûTf„‡ ŒzM IÊ+J<U‚!ÕÒ<‚"5XD÷ÃAÖ†TkkêSÎZ(E²_ð_fèß§ÿcõÐ8¹6*5ƆÁ¶i4ôŸgÁW¨YP“a Ëâ¹XËÊnRnÌF÷!VGÍ4‡˜ÍsŒešªj)ôûÚþ-ÃI77d-7ƒƒ,x±©é" Ñfêì¤q5^V·ÙØÃbcäE‹énY¡èÖqÁL§Na¹QwjÑo 6HL•žy²æöhfÜGwâ ½‚45º%(øÖÉì";êLé'îSþq·Â­ìÉêúÚŠ÷ß=Ì«Lõ‹V–ù™ºe2 I±ñ®­´Å[lù ¥9É¥R)&ôX,¶gÏ !XW@~mÚ´ùé§Ÿ:uê„#Î+**Ú¶m[^^.˲ªªGu×z<ž•+WþŠÅ’Õdvh¢ØhöʾB:è•FöM± +ÝöMc ªKl|z¿õyû'Ô¨ŽzÀj¸›}­Æ¢7à×A©Xܦui¢Ü’zp_Ö~7U í÷hSÜ_¬ý³‰¦j?°=*7–Ü: Çý+q²7B›`5IT M*ûŒÔ¤ –õÀúïWþƒß8ðÝ&Ë[µÙO‹¦•i¬ïÒÄTÛ4K8à©fÊðVƒMº ²ô*_IÙLj ½&x™¯Gä€É°#_Àw‰ÉšY&6òmh[Ò$5¡iQ5š–j?Ž?xTØ8h‹-¶ØòÛÉÏì,žq‡‚à<˜´ÇÁuëׯïÝ»÷ÚµkqÄ9®à:îâa°\ëÖ­ñúG}„ãÇükpð?Ps[l±Å[l±Å[ÈÏî,v2I§ÓªªnÛ¶­]»vµµµÄ;wvéÒåÇìСŽ8Ç\ÇÝöíÛïØ±£k×®Háƒ>p¹\€Bm±Å[l±Å[~¿Ò‚Ö4Mãkׯ_ߦM›-[¶ÕÔÔ€×­[ò«¬¬Ä縂녅…œý~¿,ËŸ|ò RÀÑÆA[l±Å[l±Å–߯4‡ƒ 9P_Aèp8¾øâ‹c=vûöí?ýôS·nÝÊÊÊ‚Á Ž8Ç\Ç]<³víÚ?þñHaÉ’%>ŸoÙ²e6Úb‹-¶Øb‹-¶ü~¥9›©ªš——‡óï¿ÿ¾cÇŽ8–––r_ÓëÖ­+))‰D"8âWpç6lèÔ©“ÛíA®^½)Økm±Å[l±Å[~×Ò‚ä|>¨.NƒÜ¾ýöÛ.]ºìÞ½»  `Ë–-ݺuÛ¶m·ãWpw»ví :<öØc [;èõz³n¨m´Å[l±Å[lù}ÊÏl%¡ñµƒ[·n ƒ999‰D¢M›6ëׯïÔ©(G¾²×@UUUnnn‹-@t«V­B"+V¬°qÐ[l±Å[l±å÷+Íᠮ뇃;š ‡Ã|Oq*•òûýååå]ºtá^fpÄ9®àz2™âáÎ;#…åË—#{í -¶Øb‹-¶ØbËïZšÃAŽgÀ;Ó4ËÊÊøRBY–A„………?þøc·nÝÖ­[‡#Îq×Aq€Hy¤ã+Và-[;h‹-¶Øb‹-¶Øò»–ŸÑºÝn°™ÊdëÖ­€¼ššŸÏWQQѾ}{óóóÏq½ººº]»vÛ·oïÞ½;RøðÃ].×òåËm´Å[l±Å[lùýÊÏD%æææâdÆ `ÁÍ›7†ÃapÝîÝ»y`bqŽ+¸Îcs¿ƒàºU«Višfï,¶Å[l±Å[lù]ËÏøêÏ’ÉdS¿ƒÄòòòââbÓ4ãñ8Ž8Ç\?Àïàûï¿ïõzíµƒ¶Øb‹-¶Øb‹-¿kùWürÏ‚ëׯ/))áÚÁ={öçÀ‹8âœk¹ßÁ£Ž:ÊívƒëV¯^Édì¨$¶Øb‹-¶Øb‹-¿kùí ×ëu8©TŠûìÚµkYY×–––Æãq<†#ιvp÷îÝݺuûþûï{÷îMlí -¶Øb‹-¶ØbË…üÌÚAÓ4ƒÁ N6oÞ …ªªªrrr’ÉdQQѶmÛxüâÆs\Ç]<“ŸŸ_PP¢ûøã‘ÂÊ•+6ܱZö"Ы:!21z*°'šm±åÿ¦XÍ\ý”pÈ·„ƒž9ð…früÿú¬ƒs<¤4”Ðþ¹Ûb‹-¶ü{¥94 Ãápx<]×Ãáp]]] H§Ó¸RYYÙ©S'îeGœã ®ã.ž‰F£¸‚–-[ºûè£E†ƒ A4EI)‚‘Ê$N‡@R„8‰šKo¨„øØÌ šDMËL¥Rx]–eÂÔ›Hígj^VVVRRÒôITG¼Žžˆªªh~𢒸X[[›——Ôå¾Ñ‚¨6®g2äÎ+Â_ÁÅ={öã$‰p¸& ´Q}œ Yùnžã!óÅŸ¨—Ûíæoñsä…\p7û|¾Æ²AÏùIcš™¢üȯ£Ãd&狇].ŽÈÙ% ¯×˫ƫñŠã+×úÇ’â%çeàmÎäwÑ>¼)šŽÜÊÆkǯàµ@Qq Ék!1á·xO¡5xûóŽh¬r£²Q;¿ßß´Èeæïò[€§ÉÿÄo£eà©ñšòçù(E;ð€?M;úÿ±÷`VUWÛûÖ¹w ÃP¤ƒ Mòi4†X£i¨QQAP)"Ò‡. ¨ø! ½7PDª5j>“à/šh4¥†^§ß~ÿ÷œwîrs ¿%ÿ|gÉs=sÎ>{¯½vYïY{¯µõn~ð:s&o¬rII Y’·T$ Îð·q‘á+.öä2è÷¹¼žP0è4»w89tôHƒú ¢*êP¶Jì +´þ²!°Íá8]Zœ“ףލ2î†"`«$äÏ6 ÅKEI©7;ãÿsØì]ö´¨Á›'ÃC¡••Udey+*Б2 gIIYNN–Y߈ÓiïÊ®Ê+ʳ2BJ¤{qÈ/®\è~¼ˆd¢Š-uî€aV0j¸âÁ‚*†M•9É2s\—ƶmÛÚ¶m›ª\æÉfæ|ÍéX P(góTN”R*!#„Ω(.bâô°¯Py°ô£GÖ«WYa´ Å«×E0âŽ;.¼ðB©rË–-‘Ft*™àꕪ}¡3ðEïÝ»= °Ÿ@ž¨>ÓîÄMˆ =A5…FR˜x X|Ka˜¹Lbz©²Å» »–2u¿ô:ö+db/|9)[¤¼Üît(Š Ëœ‡Üü(ºNݺD€ÀR§OÌÍ©á°ÛmBÑÊ"ÃÀ7õ…ƒ.‡ IK‹Šjx2Ã¥N€K§:]\”[#÷‹Ðͼ™—;ì÷;X–-Þ²ˆÁi3š>˜‘ñGð_¬ûÔ©¢šy¹à* x]nÚL‡Ë} EJJì5r€þ”˨αS'ïŸÒÒÚyµtÜs.a"½ˆ:r& ÔI>„T Q±ùp…rÜÉ÷ [÷îÝ-Z´P˜¦<÷~…_y]p??’ö7~‘²,}üêøƒR8{¤¿úØÁ¬Ø¸qc–ÂyC™£˜‚T3ª’ê!%F4ª# â ;e+5U±/¢°ÑŸg9°!Ó…Û¤Äñ‹d” çI™-õ/XÔ¡jŒ‘ûmÕ×"‹ª U5î F æ+ŒD()üâwpÿÛ‹;hs¨Š–«Ñ,œ<³oØe,;¢†*³ÙüÁc—ËëÙ“66ouAy°dÏÁ­m/orù/.mذ!> ‘³þš”P%ŒvÔð¾ûî[¹r¥ÈŠsí:Èçxæ™gøÓ7¦š@•6±8pU»öÚkQù+V¨3¿5qWé8+)s^cM•9£!CÎYIË•IŠìqêDà‡ÙÊw³±&'zZ8^yå•?úÑæÌ™£Ë'U¹,N7à˜ÃrëÚµëºuëÒO—,7bØ*-1¢ƒ4#V*Õ¿jŠd´QGL"2–<©w¥i(p´5jW¨!å⦠O¦OÚ¾ÌY·úèV^IFYéfæ»ï¾{ÕªU¸ƒû¯x]ì©nø¡Øi"Â}ðL5ɧH·!¾" ¨Y³f¡¹¥ÑÁÀ;|Û ÞÔ¡Ã_ßy%ÞØ¡îËË]^O1zWíZf²ÈgŸ}väèÑßýîw•œC¶ˆ0 ÈnàHÃü†‘çrèD¶|ü—çÄ¡#íuƒÊpø~Û4JXÖEû=8‚¼!l‡a-‹š6HCh;àRYii­,¦…Õ³³ Ðu33‘Ðf·—–”d×ȉCÜh³Ïý¾ó‹/w½ã×·ßþ¯>*-/»êÆ_™‹êè±££ÆŒ>yúô ̘6bdŸÑXRbg“/•Œ “:›´MV´¨1ª‰†44Aá3¯~ýúzÏçš*õ+Ý Ìß8ÌšØßR_ô: ¾ËIY¡R©Æ/e(&öÎ;¯Y³})9WóSYˉ„§õø™G†r‘PŠ, $ñ™,M'œ2&¿ä ¢@uøÕJ£2Nõ‚¿•úZdQu¢ªÆ¤Â…¶Â¬røðaüâwxZÉ·wp0¨'ÔŽ=å gfÕUn ú”—?¬ìU®žžôÅwÿèÀ‘¨ËcsdW©=?º¬%‹n3K?ãC5bíС—~øŽ8ÑÜ|ó͘An¿ývÜÄb Ìט2¨¸™ºö¿þë¿0¹ðƒ’X S<~‰ 9û@ÜÈŸ¯MBÖ©Ê…"Á/xÜÆÔ†k}i˜DÅÀ™)õ/oûbÆ£·ß~û÷¿ÿ=²¨G­“X.¸%rU±é8N˜xMûì³Ï.\¸žäI%,¬B¸/r.û2à @24ƒé¦¯8öë_ÿúµ×^CJÖ‹–B]ì4¨Èš”`M*H/6iÒDòOÚ¾”ª$ø®¬j‘g¸ØEúöíÛ­[7|!èöN P7„ðäGÜ|ùå—¡¨6nܨbଊôسgÏF†Ý»w<<‘æõW_ û}]ï»ÿ¹¥K³srÐÄm…‘v»òââÃG|ôÑG:u2`±±=7ªüAc4áÍ{vã7l|vEœÊþÅgÿÌv{>ûÛÇwtéR\^œ“W3„üLð }öÉ?~úÓŸªÊšÖ@mO_ØØ¿aæH¤NT–ÙôÞ_®¹æ—ÊéVѰ²9‚~ŸÓëáÛò ·ÃµæùU¶p¤Ó½÷-ž3§f­¼;;ÝŠF2rsbý‹‚áp×N1Ä,}ÖωpŒÄH /ׯ‘n«Fb¢tÝ¢vÇwý#s.ñ£ŸÈ·*õ+Üa-ð@÷hß¾ý|ÀΓØßRÍWÄ4Ê4}at0@•0~i«–¨ñ½÷Þ{î¹çÐ'i¢–uöÄO8Ë! „@;ظí¶ÛÚ´i3nÜ8AÒÔ"üWHŒáÌw)vÚ”¡.«Äñ«ÎÜ D>ED/o¼ñ°ò[o½¥bƒñÿ½¾YT¨ªqùA…yøàÁƒ5Â/-P¸ÿíÅTsÏ i~Àœæ2~ ÕÉu×E˜ØÔ#ÿòè¼ëŒÅbÌoóŸ;¾i‹1;p åbR@ ‰ø‘Ê%]ð‰i‚È È—K¨TÃúG'^çl‹ œÒ`(çwQ-œÝ¨º8©ñ¹a6LZ.‹-†bXBJ'‰C‡5hЀ‰ùõÌO[}… lƒ+´Íq:)±\¾Å¬t´Ç%i –*ê¬ l#7ΰ˜šÉ•àoZndA- ¡·Ah_|ñÖ­[ãæhtSä†D…ˆÐH""0ÃÎ-JMJÚ¾ÂWlå6Ÿ.vä)+V"ô(䬿HaêËR, £èŸÿü'ZSœ@P¢A©>õ*s=éŸ]¾âÆë®½ iÓ5Ï>wõÕW£Ö^N8\^R’ år=³páýúáv4Ä`3VŽËÊ £P‚±²l 6ðíóû¼žâã'kdå¼¶fÝ­÷vUv‚9E£`°´ìþô§›nº À5„¬ð5 ÀK/½D{낉¸W¯^¸ÿË–-ãÖFÜ—­N©ÊíÚµ+ª A­[·RÅ'>-o¾ù¦@Ÿ—_~ù•W^Y²dIšm4”âEÙ˜¯bÚQ´êEn㬞z&xÔ¥Kä°aèô(î X¼x1Z/B_Ž3íŽ6jÓ¦ÍôéÓ!|‘p¿×}÷݇ê¼þúëhw´5Pãœ9s¸Ø—¦}düá@>ëׯ''4vNœ8bÛ€ˆz÷î Y¡½8A´ÈBDÜ}÷Ý4#­ZµŠ‹Ñvè0S¦Lᤠ×Q(a‡èùsçõЯèäIÔ´ã]w‡|>§ÝôA½B¡O?þ8à3,Ž?ûùU¯¬[w[—.þ⢌ÜH*)-Ü»¯èä©ìÜ ›4öÖÊ‹„ƒ»Ñ è *‡ë…‹ºôì¡23JŠ  ÿùOÁÖ§ŸüãŠ+®à(ËÍ«Y???3·†¹ÜFéåÅE‡:}òdš53\®&^ÔoËÊúü£Ê}¾-Ÿ}vUûöŧOãi(hsI»¬Úµ¡°ŠDÝ@„QµaÕ wÞÓU[¹hñFýzFXp( DètF¢—ÃI0ÁqHJµ¨‡Q€FdC˾Ò4Þfú"¨_¿~DhGŒÜ{ï½÷ùçŸÇ#|œ´oß~éÒ¥è]èä@l ,}®UêWݺuø†H1¢ûÛߢ:ÿûß/½ôRôÕ¤ý-ÕøíÔ©Š€p^xá°nÖ¡CÎ?©Æ/3Ĺk×.|t½öÚk .¤âvD$%î`æ˜úÍo~ƒ9ÿŽ;îŒK¦oê@Ý! NÂ{÷îmÖ¬$‰öÂT¶bÅ qÅÃÀÁ°EúTãåBzÓñî#<‚@¤„ïv( _|‘Ño¥¾YT¨ªq‰0x¡ÁFð‹kÜÁýo/î r|ý¶ÔÊÎ;núâõS ‹ æÕ  á훿Êsþ¨`ÀÄÖÙ½ÛvøÝ5#M/¯©œß˜åp¡o.I$ªg|Rsú¡åLörq¶N:\¼£‚¼ë®»ñ‹_@y7oÞ|öìÙPáA¾ò1çö!+¨LµÄ1¸9jÔ(Z!¬7ÞxˆP Ht(IZ.¡%0¹ßyç(óþŒ3Þzë-HpûÖ[oE¹˜s7nŒ·fÍšõÞ{ïL?Se3bÄ̪`éÙgŸ…*±s7U¹(hôèÑÐ|@TÜŠ @ÃßýîwÄ” Tù¬BYñÄ—7=] vLå4=B…³3(MO'w°nܸ%‚åË—£óaBó÷‚碛¢84ÖW&á;vpÆp޼îºë† B×'ÔñÝwß@bû[£o  P.Ôÿ€î¹çž}ûö Ð~€ rHé·Q)ÒiL¢½ßyç_ýêW¨#.Àó¤I“†*›ðQU·n]ú:poÁ ŠFÅÑ»h‹b«ášH²e ø-š?v nݺٿÍÀ¿>ÿ<'+Øå–—•¡è=Îuá’ãÇO9†ÜUØØ`•[#·nmo^®¶àk|}­š¿°kïU†3è«p}FÕÎ/¿t;]èx7\{²Ø>{ê6l` O¾U[ÿñI¦'£¤¨Ø›•Y«fÞ¾ýÿþé/Úãé©ý…徊Íÿçƒßuøýé“§²r²}å Z_h¬(;\øžóz¼…»¶}Õò¢¶€GÑUš4©\ÈŽFñ®×ìKv‹;-Mªé=Ü=£EŒújû’’€Ë„]}õÕ_üÞ:u*º"@~,á[ }ÒH$‚fRÕ~…/7.Y ·¡'à[}£2i#°K¿«W¯ÆX@A@Hœ0'Üxã©Æ¯¸÷²ÖÂÄ`¦bkçhUÅ´ƒïI´ ¦&°G×~ä@/+ÙÛ'kø…¬Ð‘ gHéó0…B‹¨Ø>Ht9L¤Iǯ2Q5-²( 0÷½à—ß]@„˜œ!"L¤ßb}-²¨zPUãrÖ¥»~qM“o/î`ÔaØKUÁƒÎ^õ„±ðäeäAc¼*7¹ß5sÖ C =á5ÔO$#j÷žá1'{““w”Sû‚ª‡>ÁŒÐ¨Q#Ì_üvg^|Lc¢—->\¿“}ŠÈ8Ó7nâÏÍ›7ããˆPÌ`âOŠÉÓœìá㶤Är!\ÌqP6PhL€’@6˜à qdÀ¡L4HIhå°ˆt2‰/ch&î(çl˜ª¾4ãAçá[•BÊn¸³0!·3ʆH}HÓÃÄÀ­`xðàÁÈÒ^µjU—.]¸dµªÛc’6$Éõ#°'K<ú¾1Á¦¬-¸E•¥C£¡‰o¹åî,šÌåž¼¤í‹kY÷§ãüùó!ºŽ;ª˜9YPMe¸æzœŠ\ð 6sæL¨dÜ„‚ìÛ·/ZŸ^®HO±Å2Î;™óY¡+pÄ™ZÍú†Éç©“'1íf¨¦þº©n:-Û^Lߣ;w}òÉ'¿¿»“*/S™žíÛ¶FüÁ‹~òjE#ÿÞ±ýTiq»ŸþØé1CÛ”•eº‘¹}ÕÜ]û÷ ÊY™•žÃæïê¥ÏÜóÀ«éök6\0Š„®}[¿jzÑEÂüòyóz q{ íö¥³g÷*(0”•)tc›­Ü_áÍÊA¡Y™Y†—4ø•±œAúH0`Ïp›%Gƒa#x0.:-w2Ð+<Í·„2mKèuø¨mÓ¦ W!!%È Õ+\Š¥TÙ¯ÄT¿råJ4Ú‘)é+ÆŽ§û±“W©_a¤sOcÁ “·k×`ˆp$±¿‘ÃÄñ‹˜0Þ7lØ@ÆÀ-°&~S_Z11«ˆ…•¡y¸çÒðÒ¢Õ¤覛n¸J[ßÐ}Èd¦ÅMÙì žñÑ‹±I‹6Â\÷Ì3Ï`ºcÜ“”tüÒbzøðaT‡_˜¯¿þ:.0õqb—ý*¶Ø‡Ä·U_‹,ª6TÕ¸ƒô= ÑŠ»V$ ÊùÄd1\ÊáJŠ±Ò¬\ªØ°î6yÖÓ£T Ó4H¡ò«P†ªPãzÍýïe {aÔ\Jö˜öƒªCaáBbr–äÎ6™5dQêܸItˆù8 üË¢u†ì5áœÎ%-|ª>ûì³ÔŒ9‚ÙJl™Ì!i¹xr»üòË‘’Œƒ¢eQö8³\L…øðŇR€ƒ^,ŒÆR+®¢¹íÙ³ÌÓ>'û ëKeƒÉ  ˜Ü1YStÔyÜßÞ:(Kö²|~ùå—Üp ¨ºdÉh20víµ×ŠóJ‹P6¨”îÈ žÑyÀ$XÅ÷¡.Èz”(“H”ø‰]9 B8Nø•´}Ù+øéƒ×¹Ô®4gU¢L[|¤@(@1CC#10:´”¼%:ž:RšUo~Û0Œ“Š!l=G0p:œÜóg†$`á¼ù}ûô±{¼‘â;j…où¢Å=¨òR•“õâšÕ¹™ÙÍ›5+:~€Î=uâö. o¶š?¤ìÎùÿ=±ÿ#cTدCa ?{⤂ѣ ×¢¾ [¦õ€3 ›ÓþùG/:u º™æ ÿÎÀŽ~¿‘Þë?eJÿ‘#•ª„ƒ’w­š•Þ(Ò•bþ²²Œì,eÚûÝž Þ¶›B&©v°Û|ñÅ`ƒKí a™˜ñIÈÀh>eNIÇ/÷ ¬KWçEUû?¯i F2:Ñ Wq¾ó*æë8~AÀ—Û·oçZ}Ÿ®øJ+sO* `‰s x£-M÷J³"ϾºbÅŠV­ZaÒ_¿~=:¿lL:^èŠG³7îcÈ\wÝuH†â¸˜@ ŸˆL:~Q.R~ðÁÐȇŸ÷˜»¾ëúZdQu¢8î ^£KL+ ’A3 `H=ØqÒÓ/6€ #fŒ ôPîzrÞ†G õ +¯£Jpãüp˜ÎœF%<)—lTÌ#Œ :ôꫯ¦Ë—•¹•MT&_âK_.»víÂ„Ž¬ p2‚XW­ZµlÙ2™tR•«Ìyüå—_–€g˜¿òóóññMýG £²† îØ±wèµÊ­{œÔH7c¤*Wbâ  àéc=ö׿þUVÜÄÀÊdª»a¢Ïᑊԙ¡ÚRuGY ”©°;®[·…BòÀH %!ëãø“¾Æx„:Òe»eË–P™¨KÒö¥ñX̖܊Α›€ÛÒi®ÐÙQhÀ»ãÇÇëóæÍ£{#…¬743§“„àf‹?ñ1@wé3(×ð4÷U¸=n›²ü>#¡øù½öâK·v¸Y¹ÜÑÒ2PcT½¸bEÇnÝϪ#³VNnãF‚>C×Fì¶² ¿NƒúNOF¥¿¼¹XlììÛÇ€„@„¡rg,[° gß~f9ÆOéÉ™YYv¯OÿùOëÕ® økdçTø}E§NoýjÛ]ï5Ë +§cýòwÝŸaôûT†éƒâ°Çœ“&AŸ//ϲ™6xt׊òìÌ,Ý\§ÎÁEobÎYŒØ—ÙèK„¯¼ò ڋ랉ãd|M"ÔC‡¡e¹â_Õ~%$ûkéëʾÄ>#ñØÓÌFøúꫯ~øa áN:uèÐA¬pÒã*êø‚ñ” X¾mdQÒæ”rÖítè¨{÷î0a8co©ã…üK†ÈüwÞaPz*”xÓM7¡î¬Wªñ‹l‘ùÛo¿M¿@ä`7qâÄ÷Þ{ï{¨¯EUúáãÒ,Ïý[ø5â…(¯™©ŠÔc£_?ýÖˆ]Ù]f¸i†ÃÎÅÓÆ¿8ü¿;óØe\WUë ¿¿ÅUö'aÀ”)F"$Ë‚/÷rõêÕë™gžÑ§`$¸í¶ÛÝ¥ï»ï¾K/½tĈ˜tpS³x•b¼üòË?þøcFD­!TåB-\¸‰ÔÆ<ðôÓO‹k-_‘H]GxÓ¦Mk×®’C>ȼGÏ>û¬ÌËÔ7©ÊE¿úÕ¯z÷î}çw"à 6àk{õêÕx:‰aüD,g•vÒ-86ÍÆ£Î ¹rQñ/¿ü’nM¨õÝwßýâ‹/²¾={ö¤úÁT޲ÐyÛ¶m² wíÚ•NÊŒYsóÍ74H˜‰k_ª sÃ4(¢? oà\\l±€ \¢…øž{î¹ãŽ; I<…$—,Y‚¡b$ô°J«›CììKÜMÆtpÙÁpÈnÀ)åø2ÝžD:œÎÛ¾Ú·gï7ýˆòDáC…>ùøã®ïqÕ®…Á²m˧ÍÞ¤áyµ0¬N<°kïž+®ù%á= £.ݸvýÍ·ýAey‚á  ˆ$Z ×þgã×\s›‘¯·mkÖ²EFvÖé'ÞzãÍ{ºÜcšQ>HêäÉ>üð77Ý”m´pYÙ[o¼ñ‹_þ²VÆè¥'N|ñÕ¶Ÿßp}ü6”}åžL/E\lGHF OôlQŠ¢g‹9GÒ'Ñ‘PVÿþýgΜ)Ç/G¤«<úè£sæÌaVUêW«Ð"£G–x\´eÐAô¨•+WBþb^B£àä¹xñb¤¶°îСäI— ¤¹õÖ[ÿûß÷éÓ'ÓRˆÊÒÑ„7Ù‹¸“ÒFf¤@óÀ9ã@€³PÀì÷ùŠNž",9]T»V­üzõ1&›7izÙ/Û+‡½¢´Ä_RvàßûËJK]n·Íé¨{Aƒ: ê#F‰ŸÿsK¦Ó­¡/?ýçO.û/{¶7â°]rÉ%¶HÔéÎVû죌ðoåå¾ š!;«ÍÚfÂáïÙ»oçîL/4(ÆxØãÉü׿¶\rÉÛ¶mã2Ž¿‹ؽ 1¡ ssó²²³›·m›ôbÝD‡F!zM¢"«ôÕ™Qr8¦Róq1Š‘`A±Äñûꫯr³Ú×_}ñŦð# O«Ô¯€1ÒuNfÏž½eËÜçl ôCo‰“tü’1 ¨^x71!ÜrË-¬‹~àF.º%žrHŠ RQôIÌ-0ËfŒ™&hCâ#Ì_|ñrK:^ôXKL,ì¥üŠO¾¶mÛr©è¿©Æ/2ÇdÅð:H†‘ˆiÔwZ_‹,ªNôÇÌÌÌÄËÌxŸ&.ÜÿÛ_?Í Öµùk"ÙQ-è:uøÛ·o^iô«/?( aVqÛ½åÅþc?¿þ FÐ=w¢Eõð ˆ?i=zZ`¡a‰aAÀ*fj0‰ywPU 4ÌbPäxšÓ& Ìò@lÈ¿K—.\ÆÅ\)¬ú`¢Á+˜³…Kì…Œ–X®aǰ5˜(Áô-FÈáÙgŸe¼Ö|Ó° j4àDVñŽ6läŒ&ïÞ½»¾†›X.öÑD Õ…*@ÛQ¥ÝtÓMH,¾œg5 ê[òÕ™vXŠ! „üõcÜxৃ4¨¶ÁäÆñ‚ èHöNÔTSM7pÔï¢OB¹¢[rI=iû¢iú™ú@ÜÜ:ÆK›"ÍHzX]e¢ºIÈöÝwߥe*µzõjz a(àBùAíAi±!¸Lwˆ3¸C;òØCSFÍqaší¢fðÀhMãΠ”w}½9׫S·QÓf…»wƒ¥æmÚT~;û¿úº¬¸Äíõdfg5nÝŠa¨A;wl¯áÉtFTéÉÓõóó÷;±Û.nÛÖ0BšÛKŽŸ0bª¢ùý›jÕúB' Ulßáîí;ÜNW0öz3ò/h¼ïܚujI0êïÞéóÂá`^^íüFðÐäÊrfÓWø wcìLÝœÆn‰(w.j»JŽ¢ñøí·ß&ˆ$pI¿³fÍÂ÷Þ‰'pETµ_!1àˆ2Ý™¹§0ÆÑ™Q(-ø„Ä“/éøE§blÜÁ5Ë«'ï`\0(•ÀbÒGÀ@Ë–-Q–{ï¬çÅGÄܹsÑXIÇ CÐ ~åR8¾÷Xwp„§7kªñ‹G€‰È]=??0÷b|}ÏõµÈ¢ÿ¯éŽ;(»g0&KJJðkèøÓÞ ¯¢»ªC>È¿ÀˆFæ÷©hð¤'«–ò™JÃa,Ag†oºJpP™‹&~øáÇ<~üx”+ç8'`‹÷ßÁ‚œ­$ê¯Òbéé¶ÌטÍÅN&oIld—0]g”¶Ç.±\±¨éA­eÕŒ¾t¦Ó7¸pœÄ4Èœ_Éx^Õ¦jòrÅûXvOê­0½€öîÝè_iD‡åf0v”_â¡ÃI‰»'Qq|y4iÒ„yê›ÆØ…èBˆ©œSàà–Ç$ˆÃ ÌøÒ‚IÛWŠ–8ä¤8iˆoðß’%K æÅD^‘õM9¼%\}õÕÐmº&[ð<£|/¾øbîÐglƒ[_…Ëã²ÅÌãFP¦pÐewØmö±F øý¶HÔ%&4›9‚*½õÙ¡ŠpÀîr:\FTøÊ½—ð2lnêËpDL¬i¦VÂÏH´Æ™ÿxô\I™q@¢Ëîf¡Ó×Úïó±ï½Ñ6ìæ™Ú~¿ÑkÖLË+Ê3½™'OÌôx! & íðyúÙgŸI¼tŠ"M$snj¶ÅΖ¿é1̉Zx¯¼7~IC”†|îì¬R¿Ræ4B—y¥¹å¢—"O|p °Ûˆ‘X%Œ_P!–‚‚‚-ZbBøœ4ä”Ç{ Øôª«®âZªŒ#г6^!†£Ð¥_yç–;Œ8 1\ÒŒ޾¨ì×±²¢£L“dkJÜøÕÃnˈfšïº¾YTmèŽ;ˆÁ/®$\£4´W$¢*ʔ߮Y*SU„Ê<^;t™ÃVÑ"¥rT…·ô¸Ê¬¡ìî¨Ê ™jÍU¥ÍƒœO1ƒüõ¯e€e°!VªØÂyóæõïßß 'Ë-)@W˜¶È0Oû øàÜÁðÎ2×xÉá¼r‰LgrEÒr1]¢8š¯Øq†¥á!î %§@zñ3 'â"›Ð™>U¹¢YéÀ+>Èx!0 Š¥K—vêÔ)ÍI_:ÑòÊýãˆÆJ]Ñ&%ºmŠ»†4"±Q2d%¢°AàŸêªsý /¼p×]w-[¶LìÞ|“¶/ežÈmI2Ch<¥É'Ί€”k×®íÕ«—@:¥J1ŠO´x‰ÎŸ?À€â†‰¬§´…¿åË—CÉáÝûî»AR 4J#DmQšÇÃѰÓfºm†ƒãÅÒ’:îT¶x8lD|Ï H0¬%.·CËáÍ„‚v§¹©ÿ"Æ®]ÃZ *¯ËÜ›èw9œÈ03ÃãÊ0¼FŒ¡/™pÐp剡«@0ä´W:°ÅÐþN'0.šž£©2¢ •*½•UìÜCªeå†!67;'öP­]½ÆØ'P^XìŠ>Ì‚ÎÝ–C)&öT„/F`ÈYš&Õøe°:½ˈ«j¿â¸fçä§W†î§ZF"äF=•0~;vìÈLð9Î — ÆÄ —ܤøÊ+¯\{íµ`I>\¥G!7Œ‘aÆ 8c0ú¦ñ¿ÑŸŠˆ8¾R(rÀSʯ\¶Ž|Eãshýúõ©Æ/s“MŠ'4Pþîêk‘EÕ‰~ฃÔå<Û—k²˜2Êæ…ŠJœ5˜hËüÊ_^ì¯Y£†M•+å­8îõ昭º ¢Šœn¨˜Ì*û’ÄH¦€877’À‚ë’^RòEA“@˜!ø®ÌY&AÍȱWœnÒ”KHÇô’L6¾`âCnÜÄ-0K?ùY‰iMJdE’–«›²À9š–ºG/—Í—þ§TÞ!\é#`•H+Êœ“æ# Frøwÿ%1ºHœ?â Y“Â[è”K–,¡ŽìÝ»·:Ó€zÖöeÆŽŽåMr++Ý LˆEAêHn \ã"¤è§ŸIèAIŒÊÌ€mŒE’áñD*á“ò|·Q\8t™À.ØM¯Ž²ÒRn¼#oeÆvþl-°‹?0j4g/ó•gy2ý(4à à–ùË3³²‚¡ Ûë*ÆštÈæt]:2*ÖE%Ŧ½Ñ.NGeSú|˜2Ü€"€}…ee»•Fµ@ ”áv2C*ÚÌq}ºèt^®áêÄÉZø ‰„òJÂDcÁÌS‘DeÇKo‡–`u< * $ÕøUZ F°“þsîýІv5âZ.x”Yé…&¿6l Ü)1iðàÁìK‰ŸôLð.Þ"Šå‚Å+'¶©3ç¥D"8&·Âdšñ"vS©² CÝ™ ã‹ã%éøÕ'¢¸™ù»«¯EU'úãJyQ= µÃf¶5ÈÔ¶P4¦L¿b‡Š:Ey([ÄTN—.ÆX08‹¬éÈZŒØÕ011`˜LǼ©b‡—ðEÜ¡QHÕ™Ë Ì0jSä„¢bøF¿–iKŸÙuP"kXr–T"$MU®,K†b&T±yY|uïTuæÚ Ëâfje.å+-¼Ÿ('ê¿ôžwIÛE@’ÞRqˆ0MbÚ²TÄ€Übh3Ϫþ_Õ¾\xªoÚ×ãN×¾•Ößʰҕo•–›žéhßÓ§òjæ¡þ†K¯× ¹¸=•R£—qrqÌ Ç·KªÎ ãéèN¬ ÚH°qtMýúÖEYdÑ÷C©à ãr…Æ<@Aöa'ÆT¦bâÍ–-[âOAÌög‰;(å «ìÆ‡HdiRX©°i =ª :øÐ¡CPEú÷õ«´£%†ˆJ_o‚·q< ‚atY¹¦s‰îÔ¦oLÑñŠ:ÓMqËÈC4v¤}ªrÅ@è0ÏÌå}.|ˆQ„ð•—U¾ÈõP[ÈA¶ÃÓØÆ?…áýû÷7nÜ8ýÆš4íB®Èí:d9 Ô_Ô3—-óâR L\bµošöeM.©ëŽá©ÚW(M›Ü'—¦]Ru &À„‚Q™hZæ—«yVa‹,²È"‹¾-ª*ä¢hbÜAZ 08(š5n{¸îK¡bKz–˵<,n{¸ì¢cTWrœ¥an"† ÖŒ ¼ '<ð ÑWA]ê*So—ª\ÝAVmhzÑ—r„yY»¡ Mª·1Ÿ~ß6óHÙG[Qš0­©ÚEiGx©X¸2±±‘[u¦»‰dÅÌ¥qeû¿ìè·Ú7Uûwê¦YÁp©ÚWçS?Ë!U»$íB4ˆÆ™®FÇ…W´È"‹,²è»¦ªÂALÚIãr-냃$p19QšN’øTü¢‰é…*›çd‹a_è‡(w$¦k*aÉ–Áô&jʤûßåQQx“»u SÒr¹Ú¨NKz`ƒlÀ·_.ÞqSšám`J‰Pƒ&4¹Cx®ª›†Û…a;WZõêËS®ŠèPºï(» ²”:ÃGÛjßTí+ÛU‰Âi#ä0IÚ¾‹Ò.`•žºäõvIEz»¾ëøO¯©î`‘EYdÑwMU…ƒ<#41î wþpPfíB¬:wî¼~ýzuf¬Ú^½zq‰: ,¢ªqH”ŸnYQ¦Úã¶ô5jˆ¡E·Ñņqò¦\36ÍýÄ* šˆôõ¸x uëÖžâ>ê¡.êq9’ËyÊÄÓ§OÿË_þòú믧?\.i»›2q‰°J€Â°:Ö”sôl)CâTâB´ïÏ~ö3«}Ó´¯¼ÂåZñP¡G˜Jh_ÆCæ esO™2eÛ¶mË—/OÕ.iDÄfª]»6OñŽ K‰*#+ ]ÌMç½P`‘EYdQ•è<ö&;øïTš&–=dD¡,EßçDMCXåGð![ÐvíÚÅ ˆ­‚ÁYˆ‡׊Zö 'M“ ¤q‡øI?ÿ@®¹¾†²(\¥íÜ?uê´,’qËÜ1¬Œâ#Z9i¹O‘X¨¬{l³ áØé¢J;¾ÁP”i3«<-ÆÅòc©I(uQ1×ãsoT„ÖGYf¤1¥¾¥bÐlóûCÏDqóýø&Mš@€Vû¦o_u¦}‘$Uûr˰„P¦Ð0ò¿üòˤ풪3(m‹¡„ìá .²f-žÝÑs8 Û"‹,²È¢o…Îcï`Ò¸ƒ?üÞA‰àÏõ/è§)S¦´iÓæÎ;ï”PÉÝ»w—«W¯îÑ£™†*Z²d‰˜aúöí‹ëùóç²L›6!÷¦OŸ.p硇âNIÔŠ;ëEm>|Y¡¦¨ÅÂ… yüÚâÅ‹ù–\CïŽ?lŒ7꟯£&L˜€*ð´+êiZnÆŒ³oß¾ 6à>^;v,'–‹f·?üðìÙ³û÷ï¶¡éQ0J$Î '$ž‹¯¸âŠN:I–aÆ1HÞðááò‘ígK—.²!ÆZ³fͦM›p'sqÒv!"$ÔÀSž5räHü‰§@lè-xà â)‡,nJ¶$âBðŒëE‹õêÕËjß4íÛ»woâ-äLÛÞ-,,D‰iÚW?Á)ÁáC‡Ò·K" p·iÍI÷ã"=]¬ÀYd‘EßUrïxbÜAÞÿ!á u•„ŽœrÈjòôÓO£\`eÚ<ðgÏž=¹JY¬Zµ ºöÖ[oÍË˃EM Ý-ÈR·nÝ®¹æ$ƒ¶¦š”cÐPjÛ¶mËÊÊ )QS(øI“& 8€&OžLŽï¾ûnÇŽY}Úuxà«®ºŠ¨å‹/¾€¢¥9G™à 0 uëÖhèl¤¶†§?ÿùÏ‘41ІÄ_xáü9gΜÁƒ£Ê\u]°`0ûÝï~g† þ&„ÏM¡ôx×òåËP5† ù,[¶¬OŸ>¨2XÕËCz:%m}yQ:á2Œ8qâ¡ê9ãO}—çSAÂH€|ðTÀ3o #êÌ›7Ïjß4íûÒK/á‹è™gžpxsîÜ¹È y"i;0&àâ²ÒbͰYæ!Ô¡b{sÓï?´idžrœLÜü`‘EYdÑwJÕ$î Tö1+7ÑsUŽkdr0”¬Cé‹•\éC(Ü A\C ¿ûî»È¨EtoÑ4‹'ÌסDXiš4iRXXÈEC<êÚµ+дx~~>àÂÆi!Sæâ#ô.·|q‘Ž9Sb6íÌ4:–P†È2G}Ñ~ŒèÁeP ùæˆó¥LǤçŽ4 “àã¹çž*B)7Ýt0M¶IJ‹ð‚WªÅbf¥»¯;vì©§žB/dÐ<' e¡Ó<üðÃH€§»ví¢',Þ’(ÓxJöTla1;š(ŠÁ–éÏkµoúö ›g×̺!g°G°«böWÖ¥;ÙÈÉi¢mƒF&\+õ—àºxŠ¢¡áø– ˜(aùòå çA|‰ ï»ï>®u"ÏãÇë§ mðPvþ)‹›ò'ÒÛ¥K—¢tŠ2EqýúõËŠ«ü“àðâÀzüù…_ú,X° žxâ‰!C†4mÚtذa´¤ÒóTlo}tqéfEñé4ètB3¡nhg„=0u"YpÐ"‹,²è?“ªIÜAª+}oT @ €êJÀ6ªFÔ‡•áÙkº„’;}útT‹ Â~W¯^½aÆW_}UÅl'PŸóæÍCÐî/¿üòÖ­[ÇŽ‹×Qâ´iÓ&L˜ 4N•5=U™ç=÷ÜÃøôrEÎ|ð²‚.Ä»¨B÷îÝW¬X¡bÑ }ûöÉÁ*”~­Zµ€qß|óÍ?üpôèÑyyyrÅðááãY4.)ð£Ÿ3! ‚ÍKÈÊÞ¯=z\y啨&Þzë­·6oÞüÔSO¡O0‚Ä´l¥"F'"nÿnz$È¿‰gûJby]ÎÐc‹K¸AevhúaX훾}‰éiÔKÒˆ\§¦IùpY_šC¬Â»wïnѢʠ¤ VÅ6ZÖA‹,²È¢ÿ祥ÄÔO5à³PH³gφ–1cõ"ø|â‰'ž~úé¾}û"Ô04+™™™mÚ´¹ùæ›`P‹ûï¿åÊ•ýû÷ž@E† 6þ|ü>þøãŒ·‡?:Ä`ÄO5*‚êPÑ¢”Ï?ÿü¢‹.êÕ«2ÛìOáLš4iûöíË—/§ÕΙ3 §k×®ôìÙOˆjrì <øÒK/Å£4M£c5eBZ’û gbˆ¸ƒãô›ÜñQˆqU`WáŸì—4>úè£hq0fµošö%²ÄpXºt)$2¼ë®»Lœ‚™ -‹oªqãÆ©˜Ë°îPûÓŸþ´  €'óØè¸ÐÙqdÁA‹,²È¢ÿLª>qULÙpp7Á¤.XÖT—¶œê5C±Ðí ƒ%rˆM:÷‘ùm·Ý†G@‡Ü" "+¼Ü86RyË®Á8ËŸ2c\«ØItòÈ;ÇL"EË#=f®[þÐR#åcµoúöƒz³fͶlÙÂðlb†!DM/¹ä’°Ž µH?𢣠Ñ·lžõ? Zd‘EýgR5‰;ˆŒ‚Ð1v›r¸¢¦WCE¹*gêÔ§‚a߀Á}kfײÝ* ”ÛL °a$3È|Å¡@$’“ç ªH(\ \6„Nó$ÖÒ Çãr¸ “ô8¤ÆÒQ‚¨m2ÃÆOXìhá»!“¸—_Å4:_çbíg² ’eÑwxü=vé^@ø.ýmQ.}QQÜ€.½ôÒnݺÑÀ… ‹lcz- 9žzê©cÇŽñÈðŒLÀäž={š7o®´ÐÍ( ¢   ñ ^!AZ²š‰ºÈm‚¬üJ„dY_¦s.3§“¸žýÛYýHx·X‰‘!zªxþê,<Ä!²ùßÓ¾¼L10Ñ”‚ª:Ô A\ 6 †Êö#ž§7hР¦M›¢õÁH†1MLr Zd‘EýgRuˆ;ˆ\"*b¼Š(›=ì°‡•rE ¼çø×¼´âæN×;Ù¹Á†¬Pª+…¢xS…¼¸ö¹ ïy¡Ÿ+N”׫™iŸñ‡å^êÔ²²2Zh(Àûï¿2/,,|õÕW;uê´xñbî ct_QÆD$TÃHÓ³gÏô‡Œ ذ>|¸nZcƒÒÅUyî9’¾_Px;«d„a¼h%†·ôµ .Tgî_ËLôIh»dÉÆz$ŸÄ¬ä -ûÊ+¯Ü~ûíçrp_œØ¿Óü-²È"‹,:?ª*L…¸õüƒƒaq¾…€çP8!¥2ñÀ®¶ÿû_šäzU-[¡¹¡ /Û´B#Ì?톥0œ§ÊU°$êʲ©,è­ârÇ«¢6<*/U™5dTö¢Å%äu"­Y³fÛ¶m]tÑ­·Þ Ý,ÁAªT/Û›/aŸ¹'OÉ6ý(ÜGJà(Ý“'O9r$??¿oß¾´¨•””0ÔŸ`Ám;wîlÕªUkŸT™åê€OvP…놽*‘¾@œæ´_’àlúíò­ô0K|œÕ™ ÖU¢¹sç‚+ˆ÷†nàV®˜ëžÔÂ6ÏÇ«j¹ÌA>9ôJ%¶o³fÍzôèÁÖIܺ—ؾ\ú¯]»ö×_}ñÅÇíþ$úDnÛ¶­ŠEn⢳:²}ûöÖ­[WUnßOþYd‘EU•ªŒ˜p0ªÂÀÎÃõ ŒªŠP¹=Ã.Íúˬ×±5:Oû¢á-ÏåŒ:»\¶ˆ;ã‚£¡ã¿î׿´ÓçÈðTø#µ3"å Ÿreå*ô¨“'}±8ª[¨Xšè’²Ä§\ò£)( Æ:+Ñd vÔô‰*ŸÑ€£±Ðtt)à‚#Q£œ8q ¾0Y¶Ó¡L¼¨cèDÓBÉÀ(xKŒaéO§HEI¥”ÞÆ—æ:#(=ÆJšÕy4 žÄÐ& Dæ¦U2ÜϣÜ8Û³ô¤í·’GN3{ªö•Øàô¿–‚Ä=_ÅZ™è“ý p Oy‚ܹØné»Îß"‹,²È¢ó ê*l GÃ&4–ƒÊž¡¶ŠÐï¤.³ËÚÝeH¸N®ÇmìrÚƒa[î‘èÁ'߸WÕR~»:ròdãZÑp‰Ý ø|¶Œ\›-Ëaì'´3f ‚œ…¥£tžl&«*quX6éó4dE/.ê€@J×7Ø ‚¤•‘›=ñ”»Ö¸S¹á)®Ó¯S£©3w}éæÌ³:$­)íg3²%nH¿ÔŽ* wÒ¤ÄcÜÒÀÉ |‚gbÇ4VÞ4${òX}Ù ¨ÃZ…Å«©ªå’[qÚ׋Nl_é„È”¼ìJLÚ¾Ò@HF@Ñ+ޤŎ‰õÀ@<òŽ0î<äö]ço‘EYdÑyP5ƒAq©¨-0á`F% › ÉvåG2‚öÿþÍß=E ì~t8µÝ¡€Í¿+3ÛVä³s>ñÁmª†:ídÖ°‡ƒÇ½®h4Ra³gœ…½Î<E †7Wødà:(×T,ñ8?ÖÄÇBž¹ .VýiR œØöÐrr\–Iü“^‰º–/¦ßðwHR…-'ŽÐõ¡JõeÊt(QiϷЉgÏ \’ém„úáuRV•H 0%€¢Ñ¸-âuË`Ñôù•v¯j¹R‰”¤/Çëí[¯^=^ãWü²ãHo_q "cqÀÇ–05 åÑ#t‰ÆŽBN³w6=}×ù[d‘EYTUªpP ç-T6°{qÇT¿&"Œ¨0Çæšð«yO7Ú+ÜÊå × ŸðÚŽ6kQÿñÒâœ#Þº2j‹”¸C™yЧÿ_ê›hPDÀÒ×dÓ³D.‰ê.Ɖäà×|çaŤùSdÅêËŽn€#X§xé}îå2Cm‹ÛPÒöEY„§e Ìq¦}qÍV£ƒ ÞåŽ|ªŸÈ*+Ó¤§ÎËùFÏó»Ëß"‹,²È¢ó£ê• #»+¢ìÀÀ°Ýðap™õßWYËß&,³¾ÂvG°´U#OÛ‹óþçÊ:§zl¸Äp!ÉVGOŸªW+§èÄÉ,o©³æ 3\™ž'¥EE?þ8TTû¢E‹ÔÙ¶Çùý~e©ðè€}~Û¡¸épR5I¸¹`Á‚Ï?ÿ|Ú´i€¢DÅ„‰›`@À_aaáÚµk‡ ÆMÙRF#–4„2›33b#úPCãr{¢^»­[·^|ñÅU­©î‰ÂX$»vízÿý÷»wïž4}œ)-òÒK/uèÐ!"\±bÅÕW_ÕŽÙM³W2=«ŒÉÎHKø]¶lÙ¾}ûpÔ¨QÀ:¨áiUËe êÐmÈ!rIbû>úè£x ¡á‘þ  Ì‘œØ¾tÜNÜ@ˆ©ÛEÂ:xÅMv¶ªöçï:‹,²È"‹Îª„j±EGÄ|a±©°SUD•צŠÕø+ÿÑÄqY8ˆDýUQ«†£ýOj_Ð\-Z²­"ïÄ×~©.0€cØ)>q:¯f­‡ ÆÖ®wÁ Q}í.UQìÏÍÍxê©§ ˆ¹sçîØ±ú5ÍʯhzQrçg3£²7nܤI“!éÜH…ôˆÒô |©x%ƒÛ1cÆÿõéÓ¿42éö'¶qzÌZÖÙ°aCß¾}%’Ÿl‘;vìøñãÏï€TÒ;vìØŸþô§Í›7Cæg9:t(ê™$M6pàÀ_üâ7ÞxcݺuYeª*“ þBgóÉ“'ã&À1d‚Ì!¢‘#Gâ>yWç].«Æí‰©Úxüøqýã$qK@\û’sôOe~´È–G½£²÷ê_‰ðôÌE+»}^ðVä¾±½ª‰º‚‘@¦-K…íWnÙ©"G–‘9”&±Ïœ…îÔ£~@ãêÞš*¦ÂÅy“qõÇ®šÉN;Šéé2BÏY ØËd7¡õ¡D™‰lãz¥Xò¤‘8Š„¸¼€gý±5ê'³éÈ";ÏtŒÂ‚÷Ì –4à§nàWÀŠäd^Gä " }¬Î p#itèTÔ´iSÔQ­bV1FããN5¶ˆ8Xˆ«kÁƒŒ%Hž27]&ї킹N‡kH)Ç„ÉTå¦ëÕU ËL)é"ÖÆ;‹,²È"‹ÎRÁAÚˆO¶nÝÚ¼yó/¾ø¢qãÆŒg}„@œ@½ -Ü®]»={ö@µnÝ¿ï¾û.ôÝo¼ñ}ÁÁˆ²…¡#‡Ý„ƒ~ã‰m,rͼá“§[¸Ÿ£¬ÌSö@ï‹ïU¯¿ô7wVÞÑÁÏÿX5 †íþ ÞfŽ.Óü‚6½û?¨2T ¤Ü#6!‹«¡Ú<ÍBØ[°`Áþýû¶&L˜°cÇŽ /¼pdüøñÖ´iÓyä€kÈ‘æ+12AÖ„ 9 Ù˜1c¹;….Y²dàÀÄ2AðL¾~zõêEãЬY³„ñ‚!ܬY³!C†ˆ 'xÀ#RÆŸàÜNœ8‘uyâ‰'€ G5|øp ËÇ/]ºT‡†¸LF>¥3½‘#G¢áQ”EøˆQŠˆe×w¢¾ƒ š3g3¡é‘;É}ôQ€]ä•‹lq???¿{÷î(U8vì°×”)Spá]HÝqôèÑv‚ky1sæÌ#GŽ vÊÜ©&–N䌶”DO!ä¦ÌµZ}dgpÿ©§ž¢OñE]ô·¿ý­Aƒ„ª \°D¢ÞTå¦ìÕ´È"‹,²èû¢TpghQ_oÛ¶­^½zÐe<ï7CB Ó5½B™þøÇ?†*üôÓO¡÷7oÞü½„¡Ž*GÔ„ƒ6åwëÄ^Ua3|ŽÆ’±-ªŠ½³®ÿ §¨…Û©pT”Õ YÒfÞ[KO„.À@!€,R"”…›xð× DÂÁ¤å¦ëÕ´È"‹,²èû¢TpN T[{öì¡&¢b"¡á¿Ü•}øða(Óš&AýùÏFÊ÷ßÿ{‚ƒÎ¨éJl8è·©ˆŠâ›²‡U‘ ‹›¹¡rÀÁ¼ÐÐY?Z0hW°Â]\šålX4zcs•(µp+»ázl«]ð)_@eÛ•Í^ZæÏÎ2V]¸¼Ëµ?9dvåÊ•ÓÀiP8q"@ jÎSÅèã9jÔ¨‚‚¼~ôèц çÑ’„ûåc=¦L]NàH›# C¬4ÅüG'` HµI“&^Æâ:/[EŒOÄ"xYÑ»…ëÈ Y‡GŒ‰ƒ›à¤nݺ@3² š1c€x¸apceÚ·ð:²<-,,”&x Ã3‚ãà ¥^]t„ÃUo¤™5k2úÔ¹eÔy Š‚Û´i3`Àúô€a@RYn¦._d„E~¬€+ÙEǧÍQ÷oÐ;¤ÙÖ p˜Ôï•»%Ä 0 1=òKÒrSöj Zd‘EYô}Q*8UhAmôÝMJƦÁ‰hþn9tèÐ…^°ôÇ?þªówÞù~Î,V†ÿˆaŒøÆ™Å*häBë 3¯ÿ¨FQSºJNy‹F­¼jv—/<¶üÓÅY¡ÚÇy»‰Ê §‹[edÙóÊ|å*äWFX èx€ c¤1î1ÏŸ„Ž;–ŸŸÏUWÜW±msx "£E±â>7ÎsK™2õ:~‘l×®]t;€prTBœ?â?Ú þ€WhT1ø%»â¸DÜ_èLCäÇ4ÜËÏœé5BI? ðL‹1î³±ð xÜ3'aD ‰ñظ|ŠŠ:£?APmÛ¶ýôÓOÑ]QÈ–kße(T„q³içÃM`_@I`JÜòÉ'™†(ì£`†^8$0Ï>ÊOA™õPÁ'žx¿õêÕƒäÁ 0%8óÈ¥Œ?ž9ãY¡Êx±~ýú½{÷f°ëó;‰Çågõêî z¹iÜXpÐ"‹,²È¢ïÎ ¡V ÑhlBbºQ&ÂAš…4\³f žnÙ²ºlÓ¦Mß9T&"4ޤ°Gý<¤Î8¶Î 41VU‘šqç& úœ'»÷Yû›Ç®{³nn» OÓîÂQ¯5Ru#aWiPùÜ!w¦+ÏÓå¯ðWø*T^ͺ4P‰åI÷,ÆÍGyu5kÖ C´ÇFÉYöù)’2À¯J¶®qÜÓ¸qc”ؼys´%·H2 ³Ð3’³À>â3ZŒÅã˜×zAû÷ïºeÑH6mÚ´–-[rÛ^3f SŠlÐ|(ÈFdˆŒê£5Šñ¥²P‘À)ÞÔ­ž²’+ÅÍ›7öm•A‚T{ì1¤™4iA!ÞE3!7”.%êõåŸâ—Ã*$-7e—¶à EYd‘Eߥ_,¦¦°–¿I.ê‹Å´”AÁ}øá‡;vdÔ°?þ°ð{ƒƒ! ‹Å¯ ÍåcÂA»§]ÿenQ3—#r.Íüzð3X_ðù¡=‘šµrĶÄ[U-ͨˆ¨HÔ缨Y»7’׸¦rEüA_†ËcæbèZÈ‚GÑK— díÚµ_}õÕ„ äp6ˆ‡~Xb‘ =dÚчVVêï#Fàæ“O> X–““3}úôDz„Ç8ÆD`¸˜2e  'Ð JÇÍúõëùä1sŠKêˆôü3Î);ñÌYÑf×EC3!JGq­ZµÚ¹s'¿“‘UšrS@ Zd‘EYôýP*8¨L0@¸wïÞæÍ›ïÞ½›ޤ®$Ф Š TCo„Í›7C~f*Ar‹„”Íé³»‚fäiäâŒTL¢JÔ´·ä5ÏP®ý¤=oÿUWÿW‹úî…ó?ñÔhvÒU8꟨l´•º¼¿}ܘñõë44¼/qeKz£M;ôúèÑ£óhþS1«ÕðáÃsssq„jÓ¦MAAAˆcÆŒ:œ8q"Þ…Äøž0iäÈ‘„eÈø2AþEEEHéóùèœ0¾råJ ¼A#"`Mt@B€GC† ™1cdØ·oßW^y¥gÏž¸Éými¯0N¡H›nÅôá@Ñ`¸W¯^šŒˆf#‡hQ”ˆ›(7nž80??¨n¢äåå 4ˆøé.\XXXˆºs+!0’µàæØ±cQßÚµkä!¼…‚¢1’=Ê 6DY¸ÐY·n]H°€’"B¥/^  ‰ž'~9`µ{ôÑG¹k… ¶ÃÓ¹sç=#A¬,‡š(SòÄÝ …VUݶÊÄüB&óæÍC)H >kÕª…ëiÓ¦é§Ò¥*7UŸ¶à EYd‘Eߥ‚ƒÐVP(ô‹Ø¹sg«V­6mÚÄ=Zqfp;T[ï¾û.t1’b" ü ¨Äåf "îDÅÔ P:ür«Û€Ð¯Ð5o!ƺŽä>Að˜ðþÛßþ¶qãÆ*U‰câ4¹µqæÌ™x¥N:s`o!+ \ˆ_”Ø©S'`P`A Fd5lØ0€5¼BÇü (Üvï½÷ÒôÅ@V!·ŠfD\ªT©25îÆµù‘9‹/È×pdDBŽÒ»{Ô<îWo|´©Ì}pÄìΪ®y7¢ᨊ 5ªn½ýûxÁrì´ ˆ ;¾º²‰èZŽÃM.†MÄÈî±ÄKcOBÛ¨Øî=eºymÈ+ÌD¼zy‰Ä|Ñ9Œš¡p€™ãÎÆ‹@3-[¶d€eVM,j„&rÊјD4”ºæÒ„F ²D„Þ†<)Vœ.)dF*¥{Ìp£ š$ë:4jÔ($à"r"=þøã`ƒÁÿT‚kι}–eÕ˜ð‹öˤòÖ?r ‚ɼuëÖÛ·oOõ óôݓ֩Yd‘E;U8 * AÍ€3&ŒDCYö,U¡ž¼c}vEÓŒò ²µO¶{®œÐÏnlóú_×ÙòÊÆ.ê¡j™û=ªÜo¸ÌT³gÏ1|” Xçä‰ìÌ,*㸣É` ØŽ‹?D…é¨NéUʨ(Ê ò‡ÌðȺœ€†KÆâœ«—®bAU’."wûéEãæÔ©SyäC$êO²Å[Ä:,”Vh¥cAHYVVFäljÆôÍpÄ"qYðð !&JÑÏÌEJü‰Ä<ÙFjÄX6sçÎ>|xúú9ábáÂ…={öÔÁ®NÄDJúù2+ÝÝäÜ -Nƒ+™jqò¯j¹L u@ɆKJÍ‚5‰•ã\,²È"‹,²( U78h˜xƒ„ƒÊ¡BŽˆÓ€ƒ'ÔÔÁkBGs£§s3l9NgH9ƒÅþ£ÙõÝÿ>ýunc÷ãË2ÜOìÆzqQñ)o–Çát**ÊË­m7³#–ncÃ5!”2•±l;ãF1zFÛ5½Xà Î•ébÌcëFŒA¸ ‡³¡P4£½È"#_gVz¶Ê4J!±°'>úQrI½t´*§ÀI‡à^qÑUgÆjAbrËUQF{Á}S ˜Ä?Z_-%â´igÊ1‚## lJ¬/í‹ ¸Mã\ú³¡å`e” ‚ê| ib¤ "{ å_¥rÏý+,,lÔ¨Q*f¤Ýqw!s vm‘EYd‘EªšÀAƒƒÊ Q›jd‹ìQ§ ØU™úà¥íöò\U^Ó£2Ü.RþÌ®åGÊUQF-ÕþŽ‹üÊáUÎ,ýEUÈç÷y2<ÆY'AÃŽÅU?ɈNˆ±‘$‘§TkÁ‰xùБ›ê@‡q +ˆ=Œaóh6‹3,¥‚A+[Å" »´ÒÑ-œ ¯È”F,V–‹ãÊD«ô!¬ÁM°zòäIÜgä”86âöÆÅ­n o´ÿñO”ÂGr^°Š"œhHc†ì6quO„cªÆÙnÏ 1Î"›žZäå²"‚ÂÓÃV&˜ÎcµÏÃêi‘EYdÑÿBª.pPÅà diªé ¯ÔÔˆŠ%Ns!™ÆCF£AQ¥rÌGvóO› FBN‡p0fef•—û23³ue¯+f  ÑÐFH›èrB(¥ÙÀPY¤D&999‚™ð'`ÝPÀ³¼¢¥K·È_Öy 8A‰Ì–Ñži—¢_­Š…¶&ϲ<-Ëĉ8’ùÄ)”÷õÕ^Z.å|9fÈ`4tÑåëH,  ©¼È$­€²GSö&Ö£ý’§¨³paVâÕË‚ÎÃ:¨¿·3©üϯ\ö'^¤Zÿen}Á:)6µÈ"‹,²È¢¤Tà Ð\Ô„ƒÌ5jÂ;[Ȉ4¤qfÀ‰m±Õ_ŸRY*âSöl (—×H »Tdeym*RVZœ• ®Œ`0LôÃÅAZé…×”žH\%dXc"©5Ã92r#ÁAƒÕ f¢‹‘DQYrÓ]4’ˆũ7nøÃŸ\–åS&*âÖ¾i¥k0êÂx:¸™••E£—D®AthH8‡Tt? ö'®Œ#g”NŒ;ȇªšLZ_ñ#aˆŸs±‡ÉŠjܽó z 3D§À»DùWµ\Š%©õ¬¤Xd‘EYdѹPµƒ&[„ƒ‘Øm ‡`¹rÛ•-ô]žî±L¿i F•Ã8Í×€Á°²9“M2\š ƒ§M…C6èx›ÝD}Qªy‚Ý?T·ü1#Oé +±nã[„q¨ñÀ’Ò¼zñ" …x%ÇÊ×™ïË&6MFˆ9oáä;™™™²7‘ VÈÞüS¢';üæÍ›7zôh=¸ýÊÂ%«0‰Ç– [JŒeI¡Â¶,­ê^Éõe‰"“¸è€II2dÒpçÚ×b„RðsÙ‡“Ê¿J岉s¤'Í—”ÄŽ(8[ÃÁ'Yd‘EYDª6pÐÄ€Qç7p¾$¶ˆ²_3MTÙñ·¹&Ìí…¸´GãŽeÅÕP_ÈëqýI“Ÿ|ôÑqPÈÊ „h„;š9~üøÔ©S•¶L¬bk”º.R¢4%w¸3{òèj ð‚]˜z8\ÈépH `1}út<êÛ·¯¬Wêë°Ü/H9£ ý½÷Þ›ŸŸ¯{­ÆmMã±ÅÌDG‡LÀeb@‘l…sbTœ§’UƦhKá=z´^½zò¢Ž]xίä6tèÐ3f@D<‘FD¯¾*ŠGóçÏ0`ªr¯$7ùqÛ%³¬)) y+mó¢,= 4û±R(‹Éüq¼…ê ‡<ùä“Ò €ÇŽ›ªÜ¤DQKS¢E&Mš„üS¥§g±0»à*½WEYd‘E U8¨*¢ãJ±¬p05U‡U„hbpèÇ5ÍkãÂlÚ¸!’Mxb²÷èXyyFfv…¯õ‡VÞ¿?°ïq ™ ¾Ç/*Œ­ÏÝ€e€ t Ã€ãóÑÕ”¡-Ï¢@ ³gÏ.(( î‘eßÇÕM˜0 •’ã×yiŽÒ×%Á92™8q"£=è‹­`ü3ð5²¢µ’g¯¡âº%ŒËÊÈáé§ŸoxD×W±wŽ?~ĈÈŸ üIÇ"–b]IQ™à‰‹æ*ÈÒëÞ½û5×\K»,âÁÊØà:5Ò<¸M›6ÀÇôË&Û4FâwÙ²e›6mZ±bøGM‰tPÆíÀc?¦s7ôñí¨Û !X”É ÓlPp;nÜ8ÈoðàÁFH?}út$&{“&MBžD9<øŽ]ËVK"BeF4ܽ{7×@‘õ‚zè!YTü¬X±¢[·n-¤‡×iãFüú믹<­;µð ¼-Z0b¢`2Üœ?~aa!WrAé!| HJlÖ¥@Œ€øÃ.ÆÁ5[ìa$Fõ¹(ŸXnÊîl¾¨;ʤ‡ƒ|ªGÿá!‡"´È"‹,²è\¨ZÀAÙ/h7‚ÉœWÿ×m²ˆ«š²™Omt@‰ÄR˜¯Úe¥å99¹€m@xÆïÇeÚ–Œ¡"@3Ôñ\„Ž_¿~=€ 0×[´ Ù¹sç2Wèuèæ|ÒÁűcÇ€>L»¦ÕmøðáÀRÀya\i…d¸ú)KÏDu„>Hà5f̤˜kÒ¤ ײù.¹àKä'ÇM -DÏ`Y†žáj#Z½uëÖ`H wÀ˜î5gµ’JM@|àÀæL£gx àGeÂeÀG¼…^"¾8äY:‰€Z\€€0J‚Úºu+°¦kðÈ‘#ùùùtˆ‘S˜‰2•L[= b¡rìa+£sKž¬ ÝfžD¢‡³áª=äZ0 eB2Æ*$-7iÖá „‰L!z¥H' j#NK`•]Ñ"‹,²È"‹ÎJÕÒ:hÂÁˆá/Ž˜«Àve·™–@[DÛS¨bKıšÆW> øCÙY5Á`EEÈãu"/§Éƒu1²Òœ…ÁüÂ… ¸Å°qãÆ}úôáv.ú|6ÉÆAþ‰×k{…(M"îÀCuêÔæàáâ“Á¬€ ‰´TÌNgFDE^x!À"òáz(3çɼPš‰‹™Ó4Å•G60½=Ð@Ü.©ïGäqÂ]aÄßYwš¤kÙ²%Šà)Ïø4hPx%¬‘5PAN¸h׮݇~ÈÍšA9A'­†Üe(AU,ô#«)Ù² Æg™3g;.^¿~}°G#å]wݨ÷üóÏ£Êx×(‘ð À´S§N¨$üh£AŽÉ” ÜñK9$–›*: Ž)pãmsý:)ѵEÅP>É =h‘EYdÑ9Ruƒ±µáŒÁÃ4pP[YŽ!Bü?¤ìÎÒÒ²zuó‹K*œNšUYiyvv¦,ÛÑV§»PàæÈ‘#ÿ/{W§Eñ÷gëé¸ç’.Á.DÄVED$>º»»¤;%Dõo#b¡Ò ÇõÓ¹õþfçnÙ;Bä{S;;ó_ ‘cÇŽUªT šj1eÊ•©.ŸHq"‚ô.AƒÂLÓ?a–ÄþhÍñãljR+ØSS#t<%" ’øÛV­ZõèÑ£P*sD5y„?‰") ƒH’ÿ#¾)ÄéÁëõ’ 6$F dDê¤8T¼ˆÿ/ÙªŽìVLŠG^¥ÖxN ÅGbÄ@™{öìIô§/œ‡Â4ˆ¸¡¨$‰äB"Ršý‘MV®\9--mÚ´iP#øE^N¤†j½ <$Ž¡Ý$¤¦HÀð©<÷À/Ðn¨þŒ3àjŸ>}bŽ©:è/"†Û€žB–ß¿CòB _¿R¾—…È ‹ V kÀݘæx™'BoV+íVüé¡MÕ(åj"ºg±:tè¸Fü+è *d*¨ªtP9-_þÎB ò£W“=HT6“›ëNHÀáÕ°ÃÀˆÈ‡L·„Ä;)W®\·nÝTú  ƒ„;! _HÈ®rrrÊ–- „ƒ81ÀSÀo€!Š0uêÔ~ýúClEuS@Š®(d§næK,Õ½q !I-#$‰ E”ŽUÿ;zôh௧NúB$R>ÔN¥Y„€ªvu„à’ÜÕÖ€KÄš€lÄ gF)@ŠÚtÞ¼yíÚµ#³$`Ñ)©š*%…æ"~9¤^p?Ù©PXâöAb÷@½HÜ(0EífÊ$k¨ð6Õûê¾½W©/PaHG­*pL†’¬ÝðZó•1†‘÷û9“K¦Œ´=ÁÍ%tÐ (ÓÞeG´`?yïQ$´žlåGšN·Ô¡C‡ׂ üû@ òúôéŘ1¨ÀÞn†;áqà¸P tP<"0`$8 MAš ² Öuje’PóêÕ«§iT° ‘ÿ©¾´p¿jk/Žá‘~øš—t*UtJÜeªT©rðàAu?h•,þ¥~BÚS»ë Ð÷Y³f‘„Ð,Àï¡FÄJx=ùÊ ä!‹¢í…gŒq> *Á’Ì2Ðf$0ˆ1Ä’$ËI¢@*[Äçý/ÕK‡:tü7¡ÓÁBÐn%>žì€§:Õª BR$¢ qSÍÌÌê©ø!Yx©ªžTËÒÒÒ*V¬Ø»wo’¬6ŸvO<ÕþŒì¹B¨ÙÈDu°%{o@}¡T$2‹ª­VËL®jß&TlïAf¤ljØmâXM¼jÔ2wíÚµråÊðKbˆé$a¨@XÕ`Új5g̘ý•ÄkÔ†¹&MW;6wî\µqŠÙþ«P##Müp"„”¡¡€¹B3Λ7ïÚó••xHІ>ˆwÒ¡ähÐ[µÆ}{ûÑe‹:h’9$Ñ("!‹5DÑ“μŒ,µËýi :tèСC ‚Je€uA1fÏž ¤êLìðŠì$‹ Hz‘H%À jpÙPŽpíµZêFämÀlV­ZQ`³Ù Ñ8íHè4ÑÂU¸Ÿð<Ûˆéñn?¡„Ï‘-OˆiUxÓDç;dÈY‰½B)»™Aúp£%„†Ð/`9Pw’¡_D>§5€#<˜ð9ÒŒpËå‚_â¼ròäI`“šDF½‚44š@Mî4—-[¤œ¼b×½{w8nÖ¬™êÉ«6ì¸qãRSS“““ Öî wƒlÛ¶-’Tçºm‹x·@KB‡!»ª04;éĨqêԩמ/|aüÆD‹ÌäÇMç¥9‹fwLëÌ‘žC¾AJ!Ì`Ç’!}úÌžö¶*q$žIÚ‰:tèÐqèt°(T‘0|Ž06˜×aŠ%ŒMõ)&².íft—¤R+•ªN„WÁýD8¤úê’€À„®©qøTR¥Æ|†ó„u+"29•ͨÚR8I’Õ”&†w„ÿRNò¸½OzMŒÛˆ R›9Ö*‰#³–á] •‰’ÛHãÝ爆)We½E6µûSw×[¢‰‚›Ü¬2oâÀñ—ÚYí`¤$¦£ÙbÁ®$Ùèíf{ìžryYQÖâŒy#c6°§q”Îõ;ÎüðIä@²IT”Fœfëm:tèСã¯A§ƒE¡r"ï ­Sa*ªÊlRB)ÛÓA“‘ò_¸pÁårÁdOø¡sæÌéÔ©“ØÒT¥b„†ªÜB•&jíÌàÙ€„¨ž‰”Q Y¢Š ‚¨)«KDñM$X„¾ô‰ËðUÚ_µ~#âRR U#IìäH1T!¢êlAt—ªÈð*Yÿv&*µ…òÀ $‹¿ÔÎÐÙHTmU޹¦ÑÈÇ!Œ¦?õ)“žèp”ˆ*^Š…„øp¼Af´×w¶÷®Ú@±2+ xþ¼sëСC‡—ƒN AeD¢³páÂöíÛ«»ŠÁôOT@ÈOt©H ’¬)’‰ŸLXQÍ/±!#Ti¼€¯@»k‡ß"B5­=œª…ãéÓ§÷îÝ[ ȇ ÂõAÊÄåYM²X´hQ÷îÝÍ*ûæJMD4¤T¿f¤Ð,âOMòR=[É pJ¹ýéU^Á­ÒÎK—.­_¿> ‰4,ö¯¶3¤¹dÉ’Ž;ªE¼# Ø šôÐÇ)‘J _»-+ŒGvlù$%RÊ$YBt0Ï™Ùs×3ÈN6­S~u+A:tèÐq½Ðé`!b½LÒxûí·QHIÕ÷E¤ÖP iŒá*üá¡eDdD¡OŸ>d—[m$Hg„ ƒV‹¡š¾iÝ„áq²»1䢚â©lŒÜüõ×_%ñíˆ_‹ê¼¬ ‰‡ áF HJJêÛ·/œ!ÌIÕÿ^©‰´jPµ0¨Àþ®Â±V7 ©Aš*ÇÒ>~)n•v†Ä?>sæL²Å3ÙO…*Ø•ø¯¶s=î¾ûnXxŠÄ9¹ÑÌÿ+GßùJËÄ\%ÔC³{mOÈK2Šö ÍsfõÜ]ÙÈ(ÿt:¨C‡:®:, âHK‚ö‘è}D£–Š0 í¬¯RÕÉ´H,m\=ÕÌÒT7†Û Aíª  êŸ«õœ@æD ÑB¼ SHît¹\Ú`+d‹aU9Â=À<òòò qò" A¸ªuC¹ªª—T_‰‘”eÍÆÊjv¨pX•6])ý[¢Nç±cÇÊ–-Kò"¾>PxÒm®½‰Ù®ªV‰8Ö -yâsNй„ÉoÎnµúŽÙ©›­¼ÃϹά¾»_ÀÒAY êtP‡:tü? ÓÁB LhÇâÅ‹úé§åË—«žY³fA »téB( Ô8Aûöíá$4âš5k ½:tè°bÅ â9ѪU+" "!ZæÏŸThAß¾}Õ]I  @StïÞ}Ê”)IIIÐPÀo Õ‘¨†QYwêÔéí·ß†û Š£.™1cÆ–-[† x$YC9›4i9®^½:==riÛ¶­ÊÛ  +V2diKuZ¨NP$bÉ]$;;.A.999dSæéÓ§'&&z½^8†ì<p ¨Wjjj‘7—â–hç#GŽ@FÄëZ:L|||³fÍHŽ©Ik´iÓæþûï‡ö!¾)F“º@/}~¿Å]îŒï¬”ôÑ££šm(ã«t0@Çrâ2~ü–Ê85Þ¿˜ÒmuèСCÇuB§ƒ…@dEð s9Ìñ$¦ R&ï~ýúS!’6hµÁƒñ"Ñ›áLŸ>}€½÷Þ{;wªQ½zõ®]»ªÞ@/àΕ+W’Z«ášáAhÓ… 6oÞ<%%®ÿ˜8q¢8pÕªUÐnD"ëñÇCBd«ZWHžªZµjFF)3ܯ ¸àºuëà¶Ö­[C:vì܈Η™xrÄgOúMÈ„²X$S¶¾%:tè¸NètðòP%m$Ö R(T¥J•222 ¨ÄÕ€„ÄÓ>ª’9-§;^#INNîR$|1\Âþ¤Êqê¾p$ÂTÚµk'„D†òÔ¯_¿eË–²ÄÔäH,öœN'ÉèŻᄏgÏž”””Š+]#ò9¸“Þˆß É‘œ„·põ¸€€!C†@:ð, ã YÍ*Q¢ÐD¸h4Ù¥ƒì¹%‡LǧFu¹Râ·J;Câ$6aVV”¤W¯^Õ«Wë­·-Z”žž5…D´Ì/ÛÎHá”Ĉ” WñQ¶„ ýÞ–u[ˆCn6{ÀÎj³;þd?oìƒ/;áäÐÏžš‹r ˜:t:¨C‡:®:,bñŒŠÔ\•¢‘óÀ-à qà]½zuZZÚÙ³g‰j•¨C ‚øÕÐyyyðq‰B@d8á"@AˆT ÎW;pàÙûò]µjU«V­ÈælsæÌéÖ­›v7B_¢“UKÂã@DÔÛ=5jcúôép t§V­ZmÚ´Qc; á7Zîr¥ö¤ HÐ8ê伪“U V‘ÕPh: O@"á¶"»BiÿâßÎP6pfОZ1ÐÁ &ÝvP‡:t\7t:XPC˜¡{öìyï½÷¶oßžˆpˆR¯AƒÀ¨¡Ùºuë¶mÛæÎÛ¥K¸aÉ’%©©©ãÇ4hü9þüÞ½{Oœ8±Gð'P ¢T:tèØ±cÉÆÁ¸ÄŽŸ{î9à$ÐñçŸNü'Hp“yóæÁ#@M€CøýþÇÃø“ìäKŠ Ø©S§§žzêµ×^ž…„fܽ{7?(dóæÍ¡"¤›7o~þùçUWܵk×~óÍ7‹/Öù»öæ"´†Èÿ´*`b§nú|©Ý*í|ûí·÷íÛlOB -_·nÝ;wnÚ´ ÐD¢P†ß«´3´Ôë—_~™9s&6%d¼IÍô—8_eÖe½;ß}Kéq;+ã«`­~6ë:;à“‡e‡^†·bݳX‡:t\'t:XêOd9ÚmÙà ~ýúåË—‡¦Y°`AÛ¶m‡ ÓùŒ3~ýõW¨#ÀmÀN`Ö/S¦ ¸ ÷@ÃAÊáp8!!!77×l6¯X±‚Ô”¤ LîLOO/Y²äªU«ˆèËëõN:õСCÄÊD`b4Q¦I Ðúð,äYXwp¾Y³fp H äY_q:ðàÊ•+Q_srrà¼fYþ³MäH›‡ 5ô ô$8 åÔî GnZF,ê®®,V[£˜·3ÐAB¸Ui"‘ÅæE"Ò>"ìT7J¹´Õ}ST•7î~®xA@¬½SÿdÖ±RU+e =Þ-;¥ýÏ îd ƒ!:àŽ»Ðo÷C8î †Z‡:tü¿¡ÓÁ¢PùM«V­}ôÑ:«/ ÉÉÉp ªtÇårA¹ÝnbÁ¦š²©†bðKN¥3p/bKGX´#Ñu€{ˆ=Ÿ*HSNáøÜ¹s„ä©>¼À]€Uh¥nªO0§5jtîÜ+¹©%„½$ñœÝ·o°"µúW x)Y$˜¡v@¤HÄ>¤hWá2"{h¥ƒê­rK´sÇŽï¾ûnhg²ï0öÿ`˜Í 6nÜHÑn[·páÂ˶3ñwY´hÑ7ß|C8:~Ša…bsÑÂF¿D™ê5¹=jAw·F“;ïsºŒ’9B…¼Ž¬;kabƒšÕé :tè¸~èt°È|”"33³|ùòo½õLáZ†tèСjÕª‘cu¾×*þ´A^ŸˆùóRÍ)!($ ]Tñ~U9 !%Hñ„ ìŠøÛª<†ò…ÛàñiÓ¦¥¦¦–*UŠ\"Ô„Tê¼ X ¹¦¥¥-^¼8##JHœf®.ºCN²ÄG¤Èþ%j”íæ"Hƒ†*ÀŸ¾ˆbÞÎÀSÇŽ =rÙ°a©`ûöí׬YÝzñ5!1eàx#—mgò^H7ƒÏ,%%ë—#’Á@S>4»þ—ÉR¥gê•6$!Þ…/üÂì¶™$cLŽmÙƒ>¨w‘êÒA:tèÐñÿ€N U¨âãã¡>¤H*U‚3ðKš.©Ô„ò§ªt.²ùhð-eQwKƒK.—Kë g€X@vE8¹Ø ãBÄZÄް5Þ4,°R ø“8íR«›¼©¡þ®²g1©¸ú vË`TÀrTRHn+Â/ âºqK´³J6lX¹rå#GŽ€Û7nDšð×D8z¥v†Wç¡ P$RHlªÈ°¢„¸0ùÜZ[8I dC¢ÑMçBÉ“¥d£d€jš=#¶6Gæ.¨Û êСC‡Žÿt:¨CGñ|a@ŠóND³>÷äñEY¨¨•—Ìù8>3°réjI·Õ.é¬BÉ’6¨ uèСCÇuC§ƒ:t/ÀU¢2nåˆÎ—ÿI¢9år!BN|S„Š"—)ŽÑ%„:tèСãz¡ÓA:Š$åò^3mqðFÄ+§e :Já‚’òK+g8>‚ ÓBŽÑãêСC‡Žë…Nuè(^:F"|‰Ãjc^!&$P(–¬x×f…¢ˆÀ < ‡ŒI§ƒ:tèСãÿêÐQ¼t0€x Év™¢E oA'Éaàˆ²l5™þ1¢„é BJ 1HF´ 1º²X‡:t\7t:¨CGñ‚ X 4cR( ‘F+ÒŒ€è.hã%ZækB4e±êبè“uèСC‡ŽëƒNuè(^ ®$*æe„˜Afg’ &Q"X$d ñ ’XD£‡¢2²Ð:Ô¡C‡×bJ• $€þ¥4ÇäW.tæ_eC¾ÜÉ]á$Ó<ëâLED3ÈH¤ƒ²âZL±<¦‰1VÆ‘D#Ù§+ÂMÜßÝBE^ÂMînWËî/•L½ùW@VG"mVÚ¢þ+;°¬ÔëZ~uèÐQìQé Í0’`Æ£ } ” ŽeLሾ¥ÇÒÔ¥§.{†ºôî¿»4²f¿4#ªPq®£,Å«¾Å šzKšAp‰"7ÉÊyúº&ÜK[»ð;• _¼¡q I½´µP­ )õŽ?…¶|7wE!+Þ>rÁöÑùmuÕ¾åûòµ¼-nù ëÐñïÇ-@i ¤ ä‚ÿ9:x)ùº tð²y]¯£,Å«¾ÿA\T)Ú¦ƒâ%ÒµB’¶âMIØpY)3‰I©(üÉ {ˇ ×é ÿ:G:XDYLiå‚2¨KUÆÿÞÑæJÃî ­°|Uº§á ÿÜöÔW‡Ú7pèɱˆtýU:xÙòÝ,]-‘¢‚Véà%âmêС£Ø¢˜ÒÁ‚³VüÿˆmÊM®£V¶qe¹ VŸø7û1üÞiñÆÍ|ò%ºit-tð¿ý_--¤)¾œh°Ðm·:tÛA:þE(®t°ÈòúJP‡›[}Ĺ²I‘:¨jqë{åü´rA™·úþÇpM‚³›è qÝõÕ¤ÅEúÉ•tÅ7ÙýéòVƒè_Hu*¨CÇ¿ Ř^‹ÑµzÏ­>ê\®²EÔvZܤéä’áü²\ýMtðŸ¯ïB˜n®íÝ¥RWº ž¾¤0W7¼IË•P VW{õ­ÞŸu]±ÿ>c:HP0\~»¬pàVÄ%Õ»Ô¨_ æÆ×ø²R:m‘Š”ç/§®¢xÔ÷?…+ÒÁË:ôÜ|Wž«Ó i¡K­/]´ÜpúõgF:Ô¡CGñFq¥ƒêùËñƒ›àíx³q ôHKÎn4=úÓá¾PÔÇë(L1«ï—WäÉ—;¾itðY†BåËŽrQîu3”³ráƒKsºdM{«wfêÐñïCñ¥ƒ>Ðn·Â˜ÎKÜæcF΀ 4 °4Ã)áeø˜Àq <Ǥ|ZB gàÉ.‹Á%(èßÐr7¤uQP\­)‡´)eh½ÑT8&ðËCA«Å F¢“Ñ"4;ËâGQp M l6Ûß’é?Xß1®Ôÿ#‘(ƒÑ¨Þ)KÜwñÉ›I±qîT±pJÈ ¤èè²áØÜù%*äO ú§$áÀSÐE6È‹¼‰án8¼×xžå¸P0h±|G&Ó+ÈMÔU””~EÑ2*èWŒÒ¯¢8o4\ìW’,1”¾¡¶ÅÅ”†Ãa³Ù,ˆ² "ÜJ×£ÃRÔLÃ|˜¥9†FFŠE#c`YZR(#I‡$Ç<ÏC‚Ú"Béáê­BUÀh e†ùÛb±@M)74Gòbü¿Ýf‡ƒp$l6™¥ª-‹ oPæïüþÖâÜüúþG öÿH ˆy È0‘Ãç¯òOw†¼qo@émP 4ËPØVD†ÎFþxµ%)Dµl º(,CA³Í&Q¸ƒJÊŠâÆJ—/õ#.Œ€ßo³ãïÈ®ÁlΧ¹·xÖ:‹’ï:_£Ù õ(ãŽÿé’êСãšPLé 3±pÐ`¶ÆÄ(Í%$yC»Å¤0ñÙMŠDQ–XÖ…àAÖpùɃä¢ò UXr vcp™©D9E¤ dþPçh_£År¦BÊ‘Òh… :%‰H’°€Ð`¢QÖhüKå)žõýWâÒþOc>%R,ÿGaþ¶Z¡‰™«¿Á-%¼´àD¾b ÿ‰E}—ý¨ ”ÅŒ*TÿágE¸ˆÅÌ ¸/y‚~‡Õ~“”Åšj/ážl2+ÕT6üW¸ã[V6U(!ŒÆp ¿x–Q,DcQ,&¼ÅkªCÇÅ’ÒŒ°œŽE#‹YÆ»¸ò0ܰ íf+™ø@ƒqVB8„¢8ÖN~DRÕ€_`3ÅjqEzL‹3(.•?—@e q7Cº@^ äŽE5@±Ž&z=‰çi(˜ ÀkG¢€8öÿh}ÿ}íÿ2ÙICÎ-„B¬Õ*„CXdn4\läÂ7Z † f‹r¬ˆœ•ü0UµY/s+ ƒ sAR\>† P9ÆÇ &c@lßäb8ÌX̤0…P@/vI#ŒñXÝ,‰˜rÑ@yÖÀñ¢À17Ü\X%~jß"Q–3bò e€dÄÝâtPÖtÅ^ó¢q Âhžß¯˜[[ªCÇÅ•º½H’›×aÝÿ>‡qó¥'ÿà«/#ÙÙ&»=œAÈÈêѹëÜeË‘ÅÖµYÓ¹[7 §I4b‚ @é‰KŠê÷ZÌé`¡ˆê€ s6EÙÿ#Ìg¡@ðÎZâÑ–"§åÆN'’ÍV[þà.££¿ÿžy!ã±gŸÍ¿æ]…·1¢ßà—ã¯ÒÁâUß)¿ï‹ý_ÂtðÈÞ}Ápèþ§ž”Êní/ðÈ„]zeªÄí† g!§pLEÊlþmÿ~ørïy¸Öb›M Ï(|s‘ƒÒR×Cßíu%Ä8øÇs_Vb(ÞÊ|Ì@\•od ŠÄÃ"}¾‘H h6Ûðú–fà¦Ìß~?›•ñP½gÿîo"`­è ¬ñ ÓÁ_÷í …B<ù$Ö@ß“ úU±wuèÐQÅŽš F¸€B|pÿïlßܱoŸ¼“gßÝø^ç‰ãM”‘ÙŠÎ_ˆùKW/ï1ÁäPÈ ¶.+ÐFQê9º¨®§"’òŸ”4€:#v|ÔÌ8wöí Õ‚ â¨`¡‘DAÑ`ý OÑ4+•ÒžÏxi¸+(ã ŠŸ/ÕPŠH¿°òÕß~÷Ý;ÞU”qÊT¦(øúµï0eé"ÄÑ‚’˜"n’”§¤‚Z#DÂLPš*ÃUJR¤PtA«´\ŒŸ>n|ØÌ:«Ôצԗ¥¡¾n¤R~â…ZOI\ÖrF©è WƒTH©m®Ân¯R…ϱ+ÒÚûÌÅf—µÍŸŸHSÓ‡3’ò<¥¹ ËZh¤‘¢^ÌJ.¨‹ò2OžLHH`qÿ§±ÌŒaómÿyq\ßÙçÒg.\ˆVüp8ŠÌFøˆ  Ux1ÍBÆž—“ôh¿RmF‹J¡ÂÂau<"ÑÞ=z21qê´éÈQ`P$²¥T¸©Õ,F6¦ßÀ’)%¾üòË•ïmùe·â³ |žÒÅV îWxn¡RM™V\“ ~É7}ñ›RÎçKß§òŠe¥ÜùÒAÖˆ•ª¢$ž¿°~åª/öí]¸c‹ÌКWVä-jߣ漶7jŸ•/éo—ÞsiúÚ~K¸©¬©=¨‚cJ±&í IÞÃljñ(Þ‰ïɸC*JyXFŽì; ïLú¬…óQœ"ÜD°Ð—Åã‹4Ä™€.Ü1Ô· OµeÖ>«\-¸±àû•èB7|nªì–Ö\Ô@º8¨%S:@~ÓJRþ7(îüráæ¥Õž­KCuÜz¸ItðôÙ¢t¡hB !E!Æ ‚‡qq@€PVΜŽº­]†Üž©=†ô]²q²rŠ¢eúF¶i9òƒõHˆ|ìù‰{ö ›óŒ8Ÿ÷бu«W]ÈÊ,_±BŽ'·K4[‰$Ì`8.ßõø™ôX¹ØX†«2þš ;bœ$S(†‰¬+] ùÂÈhB‘0²Û#ÉE4¯Œ30"’p[ÐH<ŒD ð­hLDAñ4à3“yƒ /£aÄ„{€ò¸=Èd^6}±°É`b‘Az\›_X¾u+SŒÌR1„r|î–±*ÊdEœ3 (·Dƒ še „°žÉ¯’”¯ Ì:w6¹lyÍP[”*E… *CŒÅÁF8ØâÍf+6®gíV2Db?ƒ—™¢÷Çù³·—.KóQn†^y…C¸¡ròPR2Ÿ™Ã•* -ƒÔ@y„#ðBc¿Åb²ªÌÊ2” Ù¬0å2ÍZøµIÅ6ŽŠÁkÂ^±`À`·AìC¾¤¾Ê[æ1[’P!†%).24òææ: ÊÑe"L' µ‚Å+f”¸o¸© QˆÄ"&è$²2eB†o€ž9 Ô’UÚ_â§Ë÷Ô G¢ k´™¤#,ùBXò `uм^ÞfæœÎ¬óÙÉ¥R ?B:\WÆ.>@3 #¯YmíêÔ]ºû#ü" &l…)K²ÑÀK¢Å÷°¶]ǯZLÊÔ^à &Q²Z wNJ\" Fq (Ùï¥\Îp®Û Ÿ'gà¡ÀKåKâ%ŽU¾&QÂícäp9€@/åJ…p˜72ŒÉ,#Ñ_ OÚ]<Ã× ý>FÐd‘—c”ÅCÔoVIg2ôF¤Q ÒþµfKÖ¯Gf þ ¡3B~˜öáÃÂÇì #Ö„ÍR™x– óa'gÂ-€>;‹K.«R6{(à±8âpO ”O8¢t @øˆâ# …4 /kÊ'CJs±¸—± å‚î‡Ö€ÊA÷†–õúÓZ¼1û“]"Ç1„ΈšOB^Ÿ×ép*Ë '¿ðuâˆç±­gÁ7+ó<ö ‡ÞÉBׂK:Ùp8½Æd6_”¸“õ[,·…~³ÍÎûœEé™—dQ°•%%î¨ųŠ] ²^óE‘ňÝ_X…P…b½ŸxvúG;‘L°z‡A@ŒYLP=+,ê3=cZu¾zŠƒòˆ¸ÅÑg¦ƒÝ¯7#ÇæLD‘(qïàëÆ£¥R EhxP)ÜΊxóLI."z”a ˆ5|ã‚X`)‰ t ûŸÃg€ëË(ïYéÒøs3(fåXP !ì¸_¼Q›Ýˆ?8Iø=« ×TPH! Åp#Íøa³Ó]†f<õýÈ`DŠÏ“ ÓK~¢ØÐš+F<„ÄH„±:‘jQÇ­†›DO*tð›Kè R‚ÌYÍx˜¥éôôtÈ2zòTBfnŸŽm&lY Ǧt<~ÚtO’5îîjp¿û׃®œÈÀ^Ý»ÍV¦TʤÖ )™bºÿä œØÿã{>k=bæu~/r9;¼öʰÃËÞ{ÊóäKG1!þÎ{²üæ1#«ôðCx®¥QžÛãJH•¡‹‚ a ¡0ò[#RôB¶œë·[íþ`Ð~çíÈaFBŒ H¹`”áF)(Ã/ŒŸWr‚˜ëÎNO‡aæüùóeË–‹¿½jÞ©Óqñ.:.ž4ßáo¾K±Åû<ÞrÔÒ#¬Ú“O‹ˆ:¾Ô`áö-xdd¥³¼n³Éä2X‘;œñóïV«ÕG ®{*Ë&sD »ƒI û~ŸÕns•/‹ìÖcûömO pw­G0íyŠ3æKA ¿úç÷úJ—È‚eï®e ‚"¡eÞ*s(*umÒ|îêw0ýe‘Íq ‡ƒ0¢…2r!÷D“=âó›îº%˜‚2v^ñžÏ4ºÃ‰•«eøÕ±FK¹‡T8=6F æåY]ñÇ~þÅÊ3Ξ¯P¦¬ëöªžS' .ÚÃg¿þ:.>!&R nCθ¨?ht9=oœË ¯ãû?¼¿bÅàùô¸j oÑ|ôŽ­2ðiÄ^4TŒ†M&=;â=¾Ó‡—NL4W¬têÇýqIÉh¸L…òXñÊq1ŸÏ`w`íó‡ }4Uï½—º‡à÷}û9ÝYíX;~, ³&cùòåY›Bƒÿ¹t*Â…Xʃ÷úòrÎxoN¶³tÊß~WÅœà¬\åÄ/û9† žºPíù:ÈŒ¢û¿ý¶¢Ù± cÚàáCòª§dF#·Tþî{2Y‘³ b™0øð3ßßp2ãgÏdVxúiÑbôYŒÁë1 ¼@ÖomN‡;(]ó~AŠ…$FT1eãño÷¢¼]¦}¹'kñ± —’•â}ëÜÑÙ¯¾MrÂw$:o+‡âíÞ×a·S²œwâ´'#.;vºL©ÒöR¥Bþ€å¶ øk‚¥uQø -äÉ %ÅãN••™™’_@ÐwæÈ93°œ,S¥î¾¯ :åm&îÔ7ß&ÛmøºitöàA_(LËtõc£&Xdò™Ÿ~0˜ p°ò£à0—8ŠÓ-ÝV‡Ž˜Â|`6›YšÉÈÈHp¹lNg4Z0|D™Œ¬œôÓ¦ªŠ2sæ³kÖz<Ãe|½s[k‰ƒÞhõTr¥Cüj¨^ÊÈQžo~½÷Î{s­ö×LJBôzýÕÖá7 š,vˆ@&®SË·,XŒxùí¾ƒŽýôËìù æ®XF™MñÉ)Uî¬þ`½ºð‘û¼>G¼KÄÏä㢀 Œ`\ò2îÀ¬ÑâS,2ÛíÍRÛqU+ÁŠga‹§*LÕe(6 _0 Ç¢qqN¼Ø•…Œßn\¿N„p8œXï…¶òÃxœ:~tÓú Jp&Ôy©~Ò}wfyr .»‘3š`ÁíÁxÕæ…—²K±‹ ‡Ê…©«?rì»~Ù·ÿб£ŒÃÒ²[GgÉä|1X®bÍÓ{ôÍÊÊê5b°@£í|…¥p$2dì˜X4 ³¾Ùî¼,Äá:±è“=’Õà“d+MqxjÏýðÃ6J‘ˆ''·ÚwÕkØ mÇ.ë¿üÊ€Ç7fÐÀƒ{>Ù²ùÝ¥»·ÉÉ2PÆW¿Zý¾‡ð´jf±$ õ¥ÛÕ}qéÇ»+òBÌ•,v‡–àPÆÁß7¯[ǃ0qjÙ¦-m2™ËWÚµû©3éÕªT:m–>2Ô쉎žôäã埩 ÇÇ•À³–C)fœÂV·ø€÷ž<±{ã¦S‡Ÿ;zâûî÷CÈd¶–*Ù®d`eJ‚¥I¼ÃÕï©—FùþÞÏa0å†Z¥¶£ï«„¬XÀwþ‚”çoé*£b|вkgc…²˜q…à ;òç¹½N—“4OÀ4s,càüYÙ{6où`Þ’%[7¡ò ([×ìŸ}>ÿ“­(ÅÒÛý‡üüÞ®åŸ~:oéL¯ßw·%¹æ£µ“ê?•åÉLNJA14ê¥f#ú ZýÁû!#uÒÕ¼UË{kÖ‚Zù£»Íqö«ýŸlØÂñ¸¶nšªIƒjÔYîÔéSUËW ‰0ßåõ7æ­Z…é %!+R"ÃP|Ð …fŒ™PJ6Q¾°Ób{½ctw¥lwVRRòÌñ÷nÝ=wòô¯ö~ûÇÁÃV»ë•f¯—~à>l÷ÝÒdÊ9~bñ¼° ІÂIñ /¼ðÂÀ¡CVìÜ»‡ß:wjÍòå>o ¥t¹§ëÖ+]£&–B'4š¢>Oîùs[׬‰eåijlËfovïÓsÖ7_JF†vDåK£á Š2ŽÝ¢8F3X“ Ï5úÄo¿÷êÞcëG»³½î„”äWš¾VîŽêŠ~êü¿|´sWnV6Œ*·ßuÇý5kT¹ÿ>bŠ¢¡9Óf|ýÅ—Ó&N–Eqû޹>g2ö‡>ãƒÇëNÏ\8{®AD@ã^löúm5B!Å`€Ç•¾÷@ïnÝ7îÙ T¾¢-á¾îOz²¦ LŸ>ÝŒä|öÍÝÞû“!$Z-·ÙK´é3¸; 3'7Ùš0ü±FŽºêç=9¡Dj76d‰ð %r6š›ÊË]³t‹18š÷èSÏÜõH-wêÜ™ åÊŒnÝÖŸ™™šÖ³Y·ôQ„9ãâßzãMs‰RðÝeÿôóº5ïXlfG¼ó¬t×4œ§u:¨ãÃ?LívûÙ³g6»Á`ˆ†ÃebJ ÊÈ„¯vð£5Æÿò-|çc_l1ôý÷Ì›ñJ²(”:6ø¹§Ç²ÙÍCï¯=öÓoU©&¥îmZÍÚ¶Å‚ÈfB´böBÓ5î¾gß?c5žl—.W¶ý‚¹XOŽ ê×g¢EX¼çPhKêwÑfIvù°30ã»ö½GÍž¬ààoÖºU;g•*ˆ–…œìßþñᮃ'L ó$ð´²w–\`ãCjN÷ùZÖqõû[°‹Œ3^Ü‚áâßcÚd¬!¢)!2qÒ I“ó9¹žI'¥è4b¦ûŠ%ß[O¶ž”ŒYÿåFe~X¡QÓ}õùçoöì¡(X sº¤µïÓ•.cJNRTÞr¿ÞwGõ7»w@¥K C'ç,^ÔmÊXdw ‘‘"‚l5D»”*óœÄcåf8 ÒÐfoŒ……Ñ„_D8„\.˜/dœ/Y"…cÃ_x­DBR—U ð &J·ìÑ%ß~Œ\V‰æ¥g|¾yÇ+^E;²˜‡wëÔºKÇJÕÀêK–Ån@Œ°–œÁߥ0ì7 DÓ3¦vé5dÅR”€;/:ážÞ5­÷¶wð«Ä–Ì´º¯'”Hn½z6–&fG¼ÜhÒ§ÛÝ(#´D·ðéç{üõ±£+(×.œ{Wåê÷<÷ÖÄÉÒÌnzŽ›„{ˆßì}Ûµ˜úîZŸ'Ç‘˜ˆmX⥞Mߘ¹v æ,‘7‹(àGFã°^=ÇL‰2¼ÈâD^_·fMæ|ý2P¸ú2úÌ µ¨ÑºoK8™møàCÛ€L(A”~ÿê«wìè7jŒbìaBn÷ÄáÃËVªðf4xeÞ㇗̘ÚÞ/Vþ2 GŒz±Q£²5)/¾ÿlÏ'Ûw ž4{“ðÂ{={ï?zxâ{$F@ö¢53M¬eަ¢  Xñ°ÒèÛàå»îº«õø1Äqê°A:u¶Ù,t\ô®iýõè¡IÈhûÆëËvîBÞ\ï‚.  {Ûv¥’SœNgçÁƒñÈ£xm‡ÓÓ£Áж ›ÞjÕ%$Cþ#{tkÓ>µü=÷!މøóLޏ^õ_}àž{[޲²‘?:bÀ€Qï,ñÉHÔÛ›öX<•4#‹eá“MÌ™œÌЉ%QPûü«IÉ®Žëæ"*oêõÚ­ýês8¨ŸžKÿ|óκ¯¼‚lNxãûö~¾qýž¯C,_âÉ ;>ƦJ¤ãFJCÛáƒñë³ÚýG/™>»×´™ –Žþü+ +>ZC±n¾Y¿ášMÛð÷kwÁ ]:|DP»O›ŠUÒ$ ¥±Ö•.ŽuŽ.Y©Â¨FL™‚¿_†÷.ÏûðCe%`<–5v¯SçÁÇjÇ—J©õôS‰wÞ™o¼ë œ?xèëÏ>{¾ß¶u™š––Ú»—óλÐwfסãïÅ?L9ŽËÊÊJNL2›ÍA¿?”(]:÷ן"áÞ¯4˜¾k«''gÁ É,ÌÈ=[â±Z0c‘?NM>¤çôÑ0ó­1¾CÏ(¹4ŠOB)É­ë>»â“_›œ€ä^F#¹cËV §½é Õ1ðÙzwïB±^Î&O=±é«¯P$„lV¿Ïcw%ªõ»¨LĶ_!Hçð®=•K”fì.é|:¬âGNž8fÓ:d€±†QöÖåò]Gäü‡e¿Ÿ²˜‘ÛÓ5µýôIeËâ³0OyÍÌ@%Ka»ÎÐø©Ç7ó96fb­8â†ÁðVã«voi*‹X )t°í³Ï.ûx2À| c¬ÌQ ÓoÕ¬½ †->‚J§(/ µé¥%»>È· ÏÊCyrï>ýׯ’ƒÊ‡¥JTØX$$ɲIÙƒ®(„7ïÍÚ»÷ø9 ð‹Mµ,ÈÀõköÚä…s¨¤x%è4…e Œ±× flߎ¬XiŽds#ŸwdÏž#‡÷geÚÎsgÎ9“’íÕª!Έ`1Š2áHûÚO,ùîkdVô˜aZ¾Ôpõ{ï Fû“òxbìød…¸¾¶C÷‡Yƒ«`|>)ý|,èwggX,&£ÍÒ§¿¹Û¶!£«›ƒ±nÍ[ÌY²%%@^=Z·z{ÙRlA¨÷‡‚~ P½3uF`D`]Ñ9}úvlמ£h_®Ûh1S,c¨TAñÚa`:iP»ööÊᕜ‚ëβQ¿ßèpÆrr ñ |vgµ¥¾ùæâM›Dw“OÖ|(ÈÙ­¯×yvéL8h©Z-ïȉe¹hÓûøEmž{nÞìYb$œ—‘Y®bäv2hîgÿƒ—ù˜ìöu¥éœ€+Î7<Ýò™gVù²XQXD´J‘”]؈E”ÏËŠ¼ º=žœ¬ëÔ[øá.…- Ӷ“$Xe E[ÝùðÊ~DJøg”šžÖµ÷†å˜´‚¯Ôyaæè åJ•óœ÷ÙÞPžÂV\6Cj×ÔÅ_|Š«c2B^ˆæP$ÖµÙ›s×¯Ãæn˜ 1a›·_öì©XªŒÃäBgÒáï±S' }oþj$EÅN š,€¶¢É)ÆñíÛž1 9¡HÑn­ZÍY¿^a!t~,ÌŒ ÌΡ‘ lã'j/›1Ö–®Û«e:"3Üࣗ¾¿K鄨€~}'Í›‡¹¸/€ÙbƼÑtØÎ°,WRyR´bà¨òa ƒbà( ØÞ4ëòÔ³ó>û ?0šÁŠ×fjölõ{>Æ_ŸÑÈ9Á9ìÑŒ¿ß }²ß þË?ûyr1ó³Ù ‹cZ³i3ÊÍE‰ xЃUBˆz¿Ù¢{j§W‚I¦/de&V(7høÐi«×*^sQd²t{ú…9[·#‹"†Œ¡¶µk/Ûÿ5"{ÄDù¡O<7v÷‡ÈIcŽžBV'¶FxpÎ×¶úCË~úÙÓ›¼ÀÈn]G®[ƒ;¡'üæsugŽž”T¶Œûô9ÊÄÀ"|òÜc¦ÏÀ623ÌØoµ fç8RJ ¹Ù>9ÿà½ø¼\·]ÓæÓGŽ“"1W•ª¹‡ñzÀ¨á+·nÄßÃÍî;¾_b}¹¼—Ëq•*a¡·Rù.êÞfшÀG¢6§/œ`Í& ò‰Ó‚Ïõóçyíq®Ž½z,„fbÈfÆ<>ÏÛ»~ýé;?Ä£´-]°Q«gž[0k– çdfV¬T! vdµ9Ü0DöíÏ•-Ì͵Æ'@Y§4hÜoÅ2ä0 1†åZ&Ó/4X»{g>‹ÁœÄ¤=Woö¶­ØÑÇãø7ç:õÅWß~ú‰ ZlLŒyC_~;0o÷G˜ ˆ2ZæõéߥÿT*åÐW_|òÙ§ÝF„ZÇýÔ)M(&l2¶ž>Ò û¼f“uhãfcgÍBÅÙQXjöÌ3ë÷~)R6ÃÆîÝàq#C)¾ )òÇrÝ4š³fæŽÐÙl˜ý>?ÃÁë"BO}µUß…‹FÙÙ(®T»š/ýék,OÔº] ³#Ád£¢¼ÁaË¥¥ƒgO¾½b¥b… ‘˜Ía•5_J Û~QXÑéñu~±Á| òP^¯×,8‡6|yì® È®øYEQŸ‡ž¶s*…åÈO÷xöù·÷|ˆ-Þ°õ|ø™™|ˆ9H¼\’Ô§éÓ6¬‡ãï?úøø×ûéÜ€ÁÁÖ«ÿioΰë1Qöy±ìS‚v¥5o1øLÛ -;¸ˆ¢pîüÌùs¥`ÄA6™IŒOزg×ü¿ÂYDà»3 jÔt¼ùÈj®-þp«:õV~û5ÊËAɉ-ž{îXrÀ¢(¬ømÀýØb,‚=Z"áîmÞº³Li ƒ2ÍDc‚3!ÉæLxµg̼)ªÁcµ7­_g(‘‚  KïÜìõù?íW¼”½|D™‡B²´êãKñ‰Ù&!eà õ'BÇsšPÀ‹Å–B쵺Ͽ+@è'§Ï,_¸øèoŸ}ò©³gÏ&$%~óýÞ™+—CóÙOŒoôÈ£[¾ß‡»7,в3QR"q~í±Ç¼óžJ¥ËF½È772XÌ]GÅÈi†¯)õñ:‹?ý I ƒŒ¢þMÞözÅs…õ|ýï®AIV|?mEë‹x¡¾ÖŒDvò«-û/š‡r$/Ó”Pⵚ¿·oï÷s΄ÑoµK¶8œVÏó&‡-Ý“{>/{ÊÚw”$@ó®7Ñ€h_N®ÙjÂ׺KG¶RyfMŽ7Ç;›õLSÜ8`ØA3»÷ÌJÏ|¢Öc'NœÕ¾ßR%•±‘V·ºQ]†ñê%Œx<ö¤ÄŸ¶oßÿ¿¯¢nËdŽEø¨(¥{òFmX_V^VF|J àG5l0†#)†`Øôæa©*Âtðå‡kPH—¥i¿ß_ªlY¼æú?óÄä¯>…ÁwÀÓ/MZ¹•+‘¿6å Ä6|iâî÷ahK{°Öìo÷MÄÜL h›:°w_WÕ*øN,M‰;øÇ¶mÛº 臥PS—ú æmUt xj§úvë2uÉ",H‡cHÂÖÙT>]Pc/ÄÂM`XÿìKÌK,túx§.|° O ÀóHh^ÂÚ©Ë YŠd\7jĘÉSðŠ8_NJL„+¿|¼çÞZµ‘Í>ºGZZï.. Øà™Îúå—»wt5<Ÿñ DaâïóÊ+ÓÞ߀…fÅ‹f…C§ÍœÝ&µ½¹\i, ‰ÏÜÿó† Ò&GÑ0¶ ´GÎôê’6ã#¬eÚ “œÿÌéYsf§¶kŸ\ª4v{OHÀvâí>~‰cOpìa›Ú¤Éâ­[q}½ä‚L#Èl‚75eÀ€~i]ñ«—),É éôo¿+Uã!ÅS•ß½ñÝJeËWyö¢i…¢EŽ6ÝsgX–ÍV[îÑãÃÚvž·^Ÿ€9* KK³n¹â‡«àÀÀ$8 š¤:°Lr˜L,LŸÐK9Cê /-^¶÷7¼\Ž9tÛwQf÷–œ¼!Mی۸ÓA@MjÕjÀ{+Q,$…Âs&MkÕè5g¹ŠXuýÐÀä=_ñ¶˜ÇkˆW´Þ´")‹âÀ‹ÖV“­DüÁ šLz²S°ò‘¿ù}â¸ñƒÖ/AIN\AOxL£ömuguÝ^åÅ4zeÒ';0ÿ3Ûßñ©nÙœ•LB´|þ—_6¬XÝkÊd$GztíööÔÙˆ³aÉTøÐo]ûõœûùô"§KÊʤàË¢ú¶l5uÕJ…”Ëxíý9kþøë¾þ?å #`-'NöêÚqÆÿv"ö:v:2 C·E°®@¢âÎönÐpúö­ØuÝa[<~\ݺuË=ô~<[ù~)ôËžï­] ®ŽLë6rÈ`øñû…å¢Î|û]¹‡VÌ9M㇠薚ê(_åyq”¨sé:už´}‹ÂÎDƒ£ñˆ•;màà}AýáÁ Ÿ=•KÆ´Æj>¾÷»M›ßï?-¼^«ö†/¿Æß¸Ïô4oïw#Fš k*XbƒX@îñµjòêÊ]á—âq£—²<Æ–…³†kÛ¼… :<¥ŒWáî·9y¨B9"îòR“yîBb“às9côºxrZ/iàgêNX¹ •OÆ*Ñ Ÿ~èpÉûîÀÁÌ¡Of»5k5¾\¼Ã¼Ã×ÐVmÆ®]ƒµ"ðüIÓZ4~Í^¡"þ*¡³¸1ÛÆ>P_«=tð°¥Êí(+bxkJúÕÇjmüò¸ÌáÈüqã;wëìNe$Ç+®{¿©Tó!ÅÔ!*fç1Ð]áù‚ø[‹†Z7~yÅg{é Ò줇G½(/8E¢=Hr§—.xw^2QÊÐ}úô[-[¬úá;¥çÓRn-q#7µå}üà£Æ,ØÉ‹[׿[¥Lù;žy¿}øB)8zÄöЃ:ÔqËáŸw%á8Ž¥8°[­^¯7>) FœÈ÷?¼ûÎÊV3§xþø}åŒ=`ÕëTJ’y‘²;Bû~Ù°nmëicó~ùuû²Õ­&OB«/rXìHGvì:¼ß@ož; Å''.Y¹´+¬Ô“0;ûÓþ ãÆ<¬Ô½)Ýy _i¼xåòRwß™¿C}1Ü” 'çøÊ'%¿Ú¸ÑÚw׿Ä"Ç”­R3%|”^½Û¶ogu9Ó326oÚÔgôhÌØ€‹M(;D‡VmÆÌšA™ n¯÷ö€…r44Ç^‘JQ ,œ<í•ú/ó|ªV6xH®7oèØ1¥î¿îÊ:r˜•iNFíZ¶ž¿x oµxþj܇T–íڨє ‚A¿Ñh¦YÆ‹nؼ¥Çðá¸`X¸" ¯õL­î«Ûá--ycÑÍÛ·÷;¦±-ž=wNÌõÝ_¢ÕKÖ®[ëŽy›\Y©/EOíÕ»]‹‹Y¢áXxÙª•?þúóò•+™ÒeIÈ” Ò²C*”ª/Ìš4òòؤ„/Qãeè „•Åmž}væ¤ipÑÈÂáP\RÒ¬sº«H­ eyTÏ>©íÚÆÛã2/dp‹ H+–-Sµi⯆ :~üxŠe¬6›­b%n…²IÐ>u@ïáHÌçrûü›¶li?jTþþ¼¹Ùk/­óÌ3v³‰–Äp(°~ÛÖNS&q ù<¢;0¤]ç´Î«Ô¯ƒUü‡O´ëÜqðÜÕﻦÞhžÇ˜ H((Šœ‘#;ÐÁ„ÆÈ’ÒFÓ¸´žC 9}ü¸#>Á nܱ­ÿ˜1H6É9~b\Ç>ã&޳Ü[8zà›_{wï>dÞôò5–]bõ¨ ¯5jd²:.dœ7¦$N˜9mÊâ%p> ½7Î% 2mÀã%¥8,›(°$–^$6·[ï®;÷ç$8;¯ýáû½–-0T­ŸèèÐö݇f{æQhÕœ=ßÌ™3§Ë¨AÉÞ#|¼'ЧY›»þ½÷€³³*óÇÏy{¹ýNÉd&Þ‹îêo]uQX@AQai „J ! éZèEE@Š€ôâÚ`•–@Ê$“Ì̽sÛÛëïyÎ{ïdàþôóßU?ÿ{ Ç;ï}ïûžúœïÓ÷ØkÚ3×oÙ˜Êgï¾ûîKæ/f¡ Èåçwù™ÓIÅ”_Êæn»ùÆ7Ö¿3wÙ’ÂûÁµ¶o7ªu R§žzÚíwÞ's,pÙq€?¸jÆŒoœø­Î|Þ¬¦ÿ£ïß÷Ûwþ0cõâîƒ÷«u§R›{Á¥gœqúnŸÿ,àHã÷oÍ™}ŬysŠŸ8—M^µ`ÁW>FST™í_Q–xôáisf¡xLçžzÚ¥\àØ^6›¯Öê?}ð¡3`~“(-Ž}íŠåÇu”3RÝmÊ®Ë/9Xk,¼ý>Ÿ“2M£7Šb ˜Â²¯"ÇhTJ¨LjÆâNîèé>邳äbvãÀ–?pÿ¥K—†¥ŸÉ^?oþ©'œdWë@v€R߸ö¦÷6¼?kO}2ÑKT·ÌuÅE^(I4¸°ÇnÍÜâ,äê‹gžòßÊÊZµZÕr™UW­žd6ðìšcÛœpêÊeËóŸ:æÓúÝ›gœuæÊ»n·ß^8Ù^xÃYçN›uÙ{ôŽ¢_5|ø‘é‹ ¥–×oZ0íüÅ‹jûïŒkù7¿;ïÜ æ¯¹jÓ°òü= ã«_S3é­[ÇMì»dά•w£g @ºo~Ä­7ÜÄELk”M ÿèg÷_¸l‚rU^bþ™g_4ãB×v3¹L¹QÿñC÷Ÿ}åð³‡Þ~o¢ê¦ëì¾çGý”Û±àd2à*ŒÆás8Bé‘cQwö´îb·(ñ§]0cõÂ+m?˜µp[¼få²Mïmê*ä‰Sž3‚(ßÙqþE3X8·ôòÊœà¸6œBvàIªrÑì+H–­ ÐUuÎ!_šÿ³ïZ~å6×Låòç,–u˜_ËwÖ¬Y3´îýɹNo° Gé.l)Ï»îz(Ìblݼti­2’Τ\ß9oé’E^À‹âÌK/G)&5€%8ë›ß¼éî{P¹–„c3ë9V’Jag8ˆÞª™—„¶ÏS@‡\‚ªž·t!;ü,”=Ó¨´iË#?{èý·×k²ºvÑâÅÍ#äªË/‡ÉÂD8®³Û{|ù诤'MÄ·[bP\?k¶F¥jmâ.»ž1cFbÁÙü¹çß¼jåæ÷ßëÈeEž;{ñB"qèsÁ sΛ1Yɸ–=uÖŤ¿úÂK ÏëfâøÉ€}áôâ5-ä¹Q(¦/fQëÂŽ«k.ŸA¹ZíÝmÊ´‹g°XŒˆ—OÚÈÅο~÷„¾]&ßvéÂòР—×g¯XŒJÌ­¾nY ûÅgjòYçO—::qÕ©hc`ÔM\Þc¢4&DÛ›¥f¬3ÏŒBIΙ}åÜ3NÛó O8ûL¢¦Ÿs¶ÎÉ…c¿u‚ºËä;æ-* Ê]ùó/¿4Ö¤Ù3.ÉÓ,Z1ç2‡e]»VŽá`Tj‰„¶}í•K¨é >¦`>{Ù’Õsf™žÅÊå8ƒË–Y53—ΔËN€áééëýÊW¿Z€‰bóæÍÉeÒþ`­(«§^4óæUK¼bú´ó¦*ÙÂuó”6l4iÂwá¹î5³æÁÂâ0F,ɸE /)q¼,Âþmdó¹é3/!¬ Gë/Ãq®ŒT§LÙõ»ÍhZ¬¢ÆÖ… ~Ù´s` k¼ðéܸp¡“Jqþ¹z±;ðAU€‘)L*mG¾Æ‰Ôq%ŽK,h/>ô°ýüÚ+/ ]÷ÚãÈ£¿Rœ8GÚÄX’×ΞãÖŒ”¤]>gù²U_$jʹs¯@’èú+/©WªŠ${ËòÒ+f“”¹Ì‹ImãæÇ|xÃÛï*Štò¢¥K‰¯ëÖW¯\%Vm‘ãÏ[µ$¨TÖ.\!kêf»:ÿêU8’(Áo5»ÊCµêžYQ5ó?gêô\ÌwvtsÒq™]§Ü2wþÐðpœÑ]¡ÝÆ´¬ß¸r•mÛÀ8ax1\ODwõúš•«`©Ã{1$ì£=÷:òè£Ò“'ãs-‡máêÙ—‡~4R-Ã>:óâ ØæÂËg^Ž¿‰À3mA‘/\¶UF-»Ì¨å¶³˜Ú¦c¦…¾_ÝÜÿÄOÚôÎ;Æë9öôï^³|i˜R/\² \/³Å5gÏÈŠJÉ1Ê®5å ý?æ˜ »L ÃãV‹`¨o[¾¢ÿ=Ø¿98ÏZ²[Õv%i—¿·òqp0‘ÜuttÀ¶îÐ˯ýk¢œ`C)^¡0<< 5|†+Ÿ‚ xá…æÏŸawòä“OÅ~ñÅÿ|8Hè]KW|ûÜ󉯽úê3§ÇºòHLb 0zóÊÕgœ|{ó5לqÎHvuáPƒÆÂºoÍóH‘-(`P«@­dÅÓY‰ uvI6$\(XÄ×iR0C A4ØŠ+.¢ÈD6SÔk$ÍXC³a:¶>nÆ©iz:ß[Ž£))a€§k¨—AŒEW‡·gÓªH@>Êår±§¾ LKTGô”¤ BDÑP ‘–0 Œ‘rZÐ FXBÀ—JÕØÚˆªÅ š0¢nÖ2Z] #æ{(ˆ0¾ ëFQˆ'“à„aÀ Bæ£ZË¢ƒ9~•N7ÿ$ìø‡ŽèZóíA3Hõ¶·ÞîÙ{o¸âŒÔ•bŒŽ6w§\R ôs|ë­ž}öˆ"/–(¼ËÑô©ÕIG†E2G[¤¢ñI‘‘Ð÷`§œr13âdqéº÷Ü #·UGÄŽ¦è ˜ÑƯÖD16T*þßR&…b˜|F·ÊMR‰¨ÄƒC:Åsv½¬Žëb¢ACÆnr®åÉšÒ29…I ï- AŽ‹¦f œ²™¸ŠÑ†?0”¹Î<‚æt+¡…æˆFi[ª¯Çª±(Ð.Js!1(ׄ޳µ}«6¾c¾•ÆbaÏiËTÃõBÓD·ž˜maÊ$oðy¤îÒðv«ARhG‰0¨èJ3·nÑwécôaôüzCìé i9¦–+†fƒ§"aû·62œííÖÁ´l­2¢­o½Ù»ç>¸HFªl7Ìjª#…1…Ú[of÷Û‡}[%0ÈÍ€<©Õˆšf{­¡aôbqm ™îHEVT ¾38„«!/P'p_@=œ¡!%î3z…Ä$ÙG„43²õ­·{÷´neDnî#œà ZÒù¦(&Ó ;‚1É’ˆü°žv#­¦hH”™ØÌ†²À§è‰Ç®éÄ—¸Œ¤›­ç¤²SŽ9vEð)ɰ\âs9˜¤ÒÛowì³’Ív ™vù{+H§iš$I¯¿þzWW׫¯¾šä†‚vÀŠâº.Ôð8"Ã0Æÿøã/Z´ÈceãÆ€#þùpòq¥NÓdU†œfÉ1GӦƤ10œîî„?Cåt±¸#* !‰²²y3±ÈòcšŠ¢'©Z›Žm²¤ì™¾Ñ@¿ æ†ÜÔ£Œ,JÚ‡P×r¶mÙ:a×]ñÀCxÁÛ•2‚v†aDyŒ? ÿìÀSXŽ× Y`o£ÐxæC0ZÜt<¦žmC©ÀaòM'>‡¶ð6ËwÂTÁæÁ£ð–*²8×ÐDW.OÝØÍìC³ bq(R—%~àá$ö(P.Ÿú‚$ÒѬЫ0äZ¢©á`Ü(€àVËæ€LGQËò&j AUU>ÉÏ‘X©û8¬±ëâCÐ{‘‰`m¡"ØêV+2 à$QèÿÝë?˜·äÒK.&ŸØM³ôTjœñ)Ýp Q’dŽu¾‘ô—┃ ò|19Þä€XââÀànÔªÃ[³ª¾yÝûwßyç¹Θ|ð'ÑqÞŽqòØáh[ª–JààÎéªB7bX­#:ÌdPÏ+br¼¦uWàIËò_pÌëˆeV$¤™bq¬œ À8°G¢ %Ïç›ãÏìíLWQ'IûØFƒ–Úš¦6»†Â‹Ø`uØhÿà°'2ÀL\| EŸDQ‚”D3ÁP2êØA›7›>-vTWY´oδÌp ^ÔHãêÈú"1l_¥léÑý·2¬$Ç NL †ob’ˆöɸ"¶J¢Jm¤Íã+ðÕÀRÕ 3‰ã›”`–Ñ3>Nù8d±,š®Û¬[|TÐ³Ô ã†A;’ˆ˜ “$¨è“. s#& •Y| £ÖHé)Xìf­&PAN¥¼†!Ï€ <ˆ[œžëyÛ¶-={îŠr|4E-1[:™mÏ?dK˜HÔ <9–X|Š@‚RË24-8¶À‰‰r¢¶]‹Ê’@ya4¡\Ì’gÀTR ŸÎQ± ”26g(Ž™ó3ƒ²€~ßÄt=Y–,ßà Ô!†›ΰÿ•Wo»úÚsf\Ðñ>™DhǼ3A ‰R²±ÍÕzb¤knÐx)r£<3Šcp^;µ:úT\Ë”U5!Иn'ÃþÅ¥ù{pÿÆ<‡A«šÑcÁyóù’ZÎ =>ŽTØGŽÇšê¡&‰ `ÀëVCÖÓ&Ñ‚Øo´Y¤u× cªÉ ²lŒéŠ-“­£I.;·I;+I»ü½•ƒƒÉ1—N§MÓ|ä‘G^|ñE@–eÁ ðvoè"p®Ã™n®³'=ô\|ã7þ|8ÈR»!û tGfT!î>怗Às;¨j’€@"æpÀ4 ‚ø¿h¸>¢gÓp‡Ä"õb²/Ã$z×1e b@Žy>°,. |ó™¤)Öjž÷”&á |86áEèE˲½… ùʪÎñpœòΉm6ê-á "KCÂÈX¶$‹4Æ‘’$…õ—ÇZàZLÙ Ê‘4¯R•Æ÷|èb\2pø£µ84/ƒ@ü§«Ï{ÄK‘Ã|XĬˆ…ûË3(¦œ²i€Ù*Fê™LŽÙÐĘ&N` ,€ j’‡ž#­‹ À)@®6RRô”G'Àqˆ]e!ÉmꙎ¤3äȉo%M¦CQš6ˆ-ÌmVJz¡# œR¹|ÿ÷¬ûåóÿú¯_8ôä㔞qL…Ä53-3± 9Rkàì+ˆ„cÀ)¢ž³EÅ,õ|/±Ë¬Ö+…ßso»á¦o¿Ó/–K™BñäS¿3~Ý^¡f½ÆË’¢ª­ˆƒÈJ œžA䆂(2ïTå±GÖd8ÙŠJTÄÕ£Ze!É$°˜ HØVµjÔars¹Ž;aVEì9¶&ªèkÙð|ES’q”eTiìXNà»)M‡.ña;¥å1Ñ#ÕŒ1ŒvT2Ä|Nrx¾âÅL»Ž›êÆ"¦°}´C˜w;N¼®³³8 ÏÐ,ð:eù—CžÔH06…™ã"—rAìêLp‡n)DH`|6]¶j9-kÕª-qø°\¯ôf;=Û2C?ʘ–‘áJ0éç-–Ä ždükÊ…:GN} Mˆ ×RR†‰ò=k¸¦ww{Jó nÃÞQ´ªÞÌ…\HcßD%¦aŒ[j ÕúqŒo SDAKZ57Š Á<Õj¥ L<Ò!Tdž…YHÉi¤u(›# B3&"oæÀàÏòÓŸüÅ^ûíê…çɰ­ˆ¼8Ьe©€Ú¡³–ƒR4fáú¯ÈÍ´¹I÷CöT«7ê°ñ%U¥ø†PE,YÕ-“Fà l˜•|öXÞ¡+O£‘ãtÄvªXõ XɼÈE… R XWI1œ‚ƒä Yá%ÃL20"öB»Šp–M™4ždQ„=‡ä®Ç˜7&f×I©£B I)¬@ ŽÚÛŽ)ɘçÐ4lQâíB1ß÷€‡„C(v}^biÖ“ý+b6yH“V³±ð¬Ë;M _’ù=ò<ÌBèx,õ`/‹œ¬«&1uRTÁ1ÂO³Ã@â%Œîà4’¬â¡eÓ¨¦ÔˆD/ýwIÒÛ¥]þæÊÇÁA@~ù|° $I'Ÿ|òúõëGFF€²‹Åä«íÛ·7jø W:;;«Õª¢(CCCï±?|÷ÝwŸþù?˜ Ðá “r‚ò¬Ð( `büζ0ÞðlHTëò A¢Y;AÊÅ£°,DTû‡ÀÅ )ÆvÆö{;㨠*ŸÄuŒ›œ³ `”8\ÓÌê™D=Êf,Q F€Ôt& NFà(5Þ«š´®£Ä! —`*ˬi™l@Bl Ž!³HØ=£%±¥ZY¡GKÔpl uKFµ—Àµ(ú€ì Žš2>ÚÜ{à#xs,D$ó.×QÍM}ì—# ô1å3 ±@ÇÊ9Ã.Jd!žáH,8³d6V\"‚Œ`B‘ðሌ‡b“A†Šh8£p)ÄC]ÆJ!š#`ô $M¬iY"»[»ZšM§QSÀ醡åðZ0 Zk¸– jQ£ÆÁ΂¨Ã1O}Ô\F\bÒÅ»vƒ¤Ò†×( i×j¾A“ ÂK1Â-¿^‰‹y;²3 ™ÈGñuäÛNFÕ-ÓÔ´4jt´Ë57q ˆËÈ%º¸±Qý›%*±€®é_BU ÙstYI2öV#WÁT@\Â̸ɰ£c A <%NVH"5äºQ¦e[ï™&—ýá¬Ð–xú ñ3L¾‹YtÆë¿a÷LŒ›"Š‘óQ Ë®ÑÀÑQTD,LR¢ÑÄÍâK†ë$æå¡tGÐËqY ¡¦È¾åŠŠ¸ž H¶HQbF1’À˜Š¤%<Æ í.ÇËV¬ iÖSØöÑb¹Î%„V@%\ÛZUµhù5+ =Êó"Zõ„qŒB$ꇮ Èð-, ™iLh X ÇŒó¡òÈl7÷iâ6|'Ê0áù@IGQƲGÉ·ËW‡ý›JÓ–€6ÑfMMg‘61ÊÃ11ßì2î#è¿“È•FžË‰bB©€ì×G:2!LÈ$0ËGè5Šü ¥ÊM<—üC£"ñRJжá`»ü½•ƒƒ€¾*•J_Ò oÚ´i¯½ö*—Ëš¦Üwß}_~ùåÏ|æ3¯¼ò |†+étz```×]w}çw>ýéOïî¿ÿþñãÇ?öØcŒTÌEÌdDjí«ÖA'p*ÕörMáD”ØŠE¦e½TRºK|Ó¶²¦Ò-C2k[<@´òÂ3°:RîééÙñ|L®À¢Ž¢7̦êjÙÎVÂ͸â&„ŠY¢ô€—1}ªe{@6t‰­çZ‘g.˜pø‰Ä¸tÇvEM_uÐóóTâ$v¤EÄ‘Yn‚A‚å°Eµa @‘)n±þ<œ¼‘a5®e4•g"x\ >ò¶ï’âXFZ‘\ÃâHKé²ã–ÍZ+{ïGÀAyQHTs~Ô˵®Î"üÞ%´ìÆ’Pƒì˜h³Ø´—Ã#Í÷}Yb‡\ý¯U«0¿œÙqÈNç¼]7r©|¢Ä(Þ‰2¦¦)\hI1v˜IQx¦TUUž ÌBÄÇF¸E{q!` Ÿ•·§òY9•h ¨åؼ$òœÐR‹'~…ÍþÆ, Jâ=Ó‚§JjË*Ž6íÐñf/rŒœ”¼ÆèžMF5_”–‰fŽóL3Œ"¾Âó:n®¢$ùID|¹Ï I`ëÍ–Lå¯$¡ ¾'°ðÞòöÁñZÑdаLð ܪ@4]Í2LÑìFK«;jDØ&çjˆòì‹ß“R*ÇtÌAÕÄ@”šŒÀZ«[Š$Ь»F§ž¥-³À— ×H±00n€ŠPùIb8ÛrTUùÙ £:S®éúCZêæ˜Agž÷MCDõ}sÚ¦¥²35ÆN•GŒJO =±j¾-Kj©<Ô›ï 4ꤘA/†¸0OÖõD‹ºÊr%/†®Ë‹qQŠ'bk›Æ{I{lÔ²ºû7T ¯£äïœk.ïÅF×CMñ€YÍerÄr4¶–uI£Ñ`®ß±äÉ"ï9®¨ËcM6)Džëßuä´ŽÊS ³˜Àhü>´¶Ð•0N$Âè{>‡’V¼!°AW¡žëJ¢æFaȪeÛÐ;%­Ãn`:Ú´„c”õ)-™ý†cg—‘׫Õ|GÞw|Qc9 “ÔÞÑÒ•( ÛÈdPFl²îdbÜ åqßÕ=€†ÛÍZçøîd¹…Éð¸ó}æ å ­ 3⬙ârô‹ft¬á(šÄi©lvt¸(*¨-EÓ‚÷îXÀØ~äalÓ2 4M`"ðd׎ë} yè:i5ÀëˆH¸¦õ(u [û·‰öâVÿY"Ï‹1àQR |¼åX*Г ;UX¢?ÃÅ @}Ë’a±q‚ÅŠýƒ±ãÖUš½RSÇÔ.íò÷T>zž ˆWWׯ~õ«)S¦†q©Tš4iÒk¯½öÅ/~ ÞGß•7 |ýõ×ᶃ>P# Å¡¡¡ßþö·¤M"ìzp¾Ú¡Ã x´"Ó÷…!$ß÷„È ”Dí°x ”RÜ:H㕸±¼]nàÁ¯5ÉTÕ4sz¶i‡ÊŽ6e„18`TÑB²e°‚27žØyÄÏv­´¢E¡¯lu}J5â¸Äè0F¿Ž =%¶¤O¨ð€çÃA*6£ Íp-àìUßñD]uÙUÁvyÊ(‰@- f3¦0«ÇØqm8ÎÒ*2Ä®/JBŽÓØyŒDÂ(5´}ñ#¢q—& Ú!R/”v$f‘Iä- ‘Éx>úL¸%ñ¶ëÜL¥É`AOR¥dx}?"HTe£ý;êuÐ\ ­¨†õjÊ9G“¬å!#\JçM/ø‘˜ø“Eq\¸ï‹/h©ÄÚßõ"YRJ,+T3|ÂaãÁnûh ³CCAÐÜœ`<6tŒ¨¦ âhB¤P:D$p¢ê€$GLÍR³m¨f€Ïð@Ô«¥Q*…GnÔ¤Úòœ(9fSˆjÄÀ—¹-Z()ë¤ípºbp¡å:]ŠN›jtTyïĨmoùM'N-;M>cykŸI%0+>bà•›„“4‰ E”çß’g€Žž2¡Š,(^/ØV#¥ª1G"WâÐD1°MÆ^ÆìvÀ—%ßÒEMdH /Œ §ˆ ÓÌëzsUó¤¸Ràg–¨)ex î‰÷m`äd…MŸ ¤šxàü2ÙR"ͪ˜Fš…7JTÁʧÌ$šÉ«%Š%ŽŠ˜(ô)S%¿AaCYƒâ”Q•0@º!ˆ‰tµÏI@ÔÎâFwãH+Sz6â;dv@œ€mHœMò§£ ».£R‰·XSSh.FzÀñ^“UóÜèŸÁÃÓ¢´€ýµ]OR¤Q©!.«#.é,‡;4Í,€ªÛ¡ÏÄùM–)Œ|xšÄñ‘ç3ý,ªo€Hyì¶d¸â Bãg— ÙŒ–ïËìf`¤U稹ì|ŠhÞ§ÅÒ#áïcºCvÛ¤éSÈã:ätÉ!±á9èÈ•°µa¬ðÀ¢ú‡6€~à&Dž­þæžEÜF·D‘pº›Å]™Gét[UÜ.w¥Þøh8`x)RÈ<ßœÐ7aëÀVÀÀrHüŽ¡N>ST,¸ãºæÎž³dÉ/Bäðƒ{ïÛwß½ï¿ÿþù ÐuÛÞé×ûÒ+/ÆýÄŸ@C8cö‚ç–J%MWüÐËf²(} |bšç÷×Þ÷c8,O>öëw?Ί³È·žï¹ýîW¾qÛ÷ï#¢|ÒáGÜóÊKF©A0¸y“,ðÅBŽȩ̀Ôç%»¹sm ±$œË¶LYÖÂDÚ硊ÀtH¿bòoŸ=äñ_@ãB8]æ`ǘIR‹Èãºd€,)ÊXÑ:É¡´¹q³Ïèê¨(˜\«¡ñ›é]D»5GÎc&=›)7köÈx5רV唆þ(„”#…4F^0°#H²é˜9%…z ²(£ø"Ï'ù]˜q¢`e£fSIÒÒ¼o¢lŽçêë¯çº:+Û·æ?qÊ]<_P3µºYdJØj¹¦eUmÇÑ(§Ñ¨§ÒY+t^æš:hÌÝÁ·¤qaKKÃZˆT9hIéhKB9Џf£ 5*Üõ/£fZIÅAŸ ür‰‘øN@wl󴦹Ò(@l½ý…ó+y¨YvºíÃ¥Õ6¶g>ðe4æùÉ=¤åòÒJ1=d v–‘–4sð$?ÛeúoȘnrÉRG„Áþ_nÝ„¨ù“ˆ4-3š-;t\ó‘;ú”ØhŽZ€j³Gïà[+aT~Ì'–cú8vFÆözì;#ñ˜õ}Ô=;½q” ŽáÎ"cØšæØc~§ß醨iµ¶‘1뇌Y´ì:—@ŽÄú•=3íìØÝ1¶Œ©¶–£ßÔhLcvZêcvèŽûÒDp£3=ÊŽþj̾mó&‹}ûÑS3¶ ñ¾üè~\ß?4þÉõ„‰’µÚlRÜ44ŠGÍRvnÕŽkqkmŒ~O?8›¤µêâfœ€÷½]Úåï Ô?†:“2°ió¦É'?õ †¡6—ÎçV,Ë* žç¶¯kË‹?þøÒåË × ò쳨âg~ùËßx«·§÷¥—^Žc„P‰I1h®ëÃÃÙ|F8UQ£*z.)U®]ºüÜ‹‰ãÞ|ýõgÌ»%a¤4XèêÚöλw_µæÒÙs‰ܸhÉÔ›oAcç08ïÛ'ÕG†ïÀ\aèóâ°e)Z e5®‘—Õò¶þ®în a ™\©f¤ó©á²ÑSL¡4 IݺbÙiÓÎŽE‰¦t7±×G¹#IÂÆ¸h3\æ^t·o•'ô\túi#om¸ý‰'á²_)‡©¼P+^¬Ihê,Gäý×^ßå€1ˆ àJ•7Ñé ¥ x ;‰3B…ÙYv‚Eu9Ó”80­’.A ¯.q^CÔëš–…z:mŨ;9!1¶‹ÃX\k¤®e ‘ükÄ<4ãË¢ºhãˆ^cuÑo€Ø!QDÆîÆ7-]&“øÍ·ÿxí}ß#ã:ˆ TÐ¥C–Ê]Eè¬G-0×GèGïDÏKS€¡©532kÉ®¸Q“8¡ FñL»n×íº]·ëvÝ®ÿju½a|Ü·Qä²…˜„›6õOž4ñ©§Ÿ‘e,™fÃ÷ÃTJ C€>`º´ªÇv$ñâc šž8à  ¦_&ppëæ÷Æ÷ö¾üÂK?qÀ'à7 T$¹\.§R©8Uj4jéÎN´ô Ü3ûâÚG'¦3猩óï¸ùöŒ†at0Å)_9úÎ[n%™üG|eÁ÷~躾•CÝwÎ<é„¥?¸'ŒœHKYh!.£-£ƒ˜Î3êR^!”nþÃÛ1Ö1}—bP=@‰&=…ƒìU\Âkü°6íÒ.íÒ.íÒ.íò«þ§à`*—ȱeSßä‰Ï>…pã¸p0Ö·oêîît¯Z«é™4/H‰tÐumŽ#O?û\’¤nÑ‚+éà†]½½¯½ð2<î ?A#Ê"Ä‚ ¸¶-+2 ‘*¹VCΤJëÖe\뼩gÞøÃÇ?õ˜oÞ Ò× èå¿^zab¶ãܳ¦ÞyçíÔ²gŸ6máß'¹¦l§1ÍK¿òÕe?÷o°Á¤´k=ÑÜx¤*t4¨6†R{M"ºD,góà° «ã'ï‚¶ÌÃC"ÜÒ CiÒ´¦QU£¸ƒáÒ"Ár†7m\˜WUŽ“«C´¯(wuX„µÁ…ÿ~æÍ?º¿ü‡×‹}¬CÍh/ÆÊîý÷&M9ý°/ßòƒ’À·ÕªHz>q!€íRÏ爎ª-=ßÔ¨’­ï¬SE©Ðѹeó¦\1WiÔ'LÙý#1ú«4¸eKwºˆiÝ9tð«¾þÇlwݽ¯ZÊå» ãýϼ0aÏ)dR§m”ÞÛ´a÷}öx{ÝÛûí½·cÛ¡mׇ*½ãz\×5LË £q'òè ZÕxS›Øæ±Ÿû—û_{ `0US>æëà¼A¦‰ŒÔêp(Gϧ{&`Èl«¡‡†_ÒBGOÒÄ¢º…pTm©^þ„·]Ú¥]Ú¥]Ú¥]þ‹ƒpð£KEZ.§öÀ¦Íã'O|á ü›ßü&—ËI€Ü\×÷}Ã0ŠÅân{íY ,*aÎâ•Ë–Ù6æNøåóÏñ$~ö€ƒ èö ›»{{_}ñeу<­¥9ŽÆ,š¢Åõ¡íšª )øî½×ÝPÿýë~£f©â.¦¬{ñ·ûî·ß&¿1ýÚ•Ä2Ö^³¦#–žyòÉüÂ!F¹¾?0nüämŠtþm7»JTeæg¿¸tåêkï¸ÉU•FLO:ñ;»øhf  Nägýu>t¯¸zá@}dÙšëS–\wà ̰$¼â´ïˆqhÖjËî¾Ã}±tAä ¢@jUo¤qݲÁÒ¤Bç)§M[=n¹S^tçõÃV½3S˜¶ßgoX{ÇÍkט$(—ê ô#"FqixÁœ9Æ`Y4¼)½0˜"æv›ü•¿•߃HÓ'2ËÅ7%fqÓ¦……ÑêK.ûÕË/Ý÷øãóÎ;OOë1ÏM=mjzÒ~,±3óâ‹×=ÿ«Ÿ>óÑb¹wL¿xýö-‹žø!¬vP ý½Kf½öÚ+«n¾ÆŠÝypýûë2™Ì¥W¯&##+f]n–ëóæ^yëõ7mÎwuœ}ñÅ$—ÇŠÒ¨iIlwÞ׿zÍý?&F¬-•*]ÑÖpk‰8Ö÷o¾q ²5¸¿sFß§?ÕŒž—`¾¹Bð­Œa;IÛX°]Ú¥]Ú¥]Úåo¦X¦ܲisK:(Ÿzê©èk¼µ_$@tŽçŒ7þ{?úAƒó8xíÒe Ó÷ì Ïq„>ÿ4ƒƒ[7nééë}ñÅ—QY|àÁqD“@3Çyž# l.Ä, v¦§«ò»ÿÊ÷M9ÿ_ý›—‰¤.ø‡½âÑGIW]ú}£Žl­¬™6uúo'®sç gžrÓ­¤«HR‘BR._ùÕoMêî>å®›Q*© Ï¿xö…³HW'Ñ‚ò{ï»&ý¹ÏävŸxÀ¿rüÙç²è¦üжm]]]L_’Ámçžqúµ<×CǦZšLãyµ7ÞXqõꅷ܆@Ç~zæy¯¾ñ»¯íê5Ó(Yvúéç^4C=è@¢È˜Ô8B§ëoþswýè¤wó+•еáÛ»áâ‹§-˜Cz‹D +/šyÒ™guï¿_Ш y–^,1Öõ@haÁÄ!€o]‹Ûu»n×íº]·ëvý×®õz’€óÃuGùl."ñæ›&MžüôSOIŠ  áð#þÍ6-Œ¹æûì·ï-ko¶Cßá>ñØ(ž{þ—<ÀÁgž[8}ËæžÞÞ_z€ 4ƒ‰€ã8’q¤<,‹|Ow—e6·OÙe2Ù^"ë¶\wùåç\¿ðЪoOŸqýM¤7OòÌ3xÃfR–LŸvÙ]ב\vÑ—ŽuïˆH‡„ kŸÉ$ô/?äˆÅ=Btšu>[ªö)‡}õ{Ïü‚yD{5oÎ×›ÿðÃ$ LÛ÷1›GoŒf€«SQýû>ß/Ÿa².£›`bP{î´³®üÞ­hêý[3JŠðéó8üê—Ÿ(U¶utw—Ì:ä¨E?ú!™˜òlC²øéßü÷5=˜¡ uó¢ãO\ùãŸ^Â4 ²`ùN,+Ð µÀQò¯Y˜ŠÑôÓ=ô–'ŸlƆʥK¾uâòŸþÀéeI9þÓŸÿÑSϲ11è9Ÿ?dÍú—ꄤkÇ¥ aÓ¿tøšŸÃ$ž fƒÀ~ÕªhÅ躧yÌ­=Í# ƒLèÀ7óô3–®½Ñ¢8 4ŠYû.:îØ•?¾ó¸x˜cƒøÚá…‡¹ú¶ÛHJ$Õížk“\çy—Íš·xa÷»yŽS3ήî³Y3óA†5cšä%q’௽ôÛu»n×íº]·ëvÔ ëOÂAÁÁ-›&õM~úY„ƒpê/y”娻Lžrûw¼õÇ7wÝ}ÇwAxò±ÇW-[n[Ž@øçŸý%Gé³Ï<·hþBºn`coOï‹/¿aêO`b„ƒè|ªª²ïØAè¥dE¼øsNŸ¶_(®óúÁ{H‚hýzýn“w};j̽ï.À×{!÷þPµZÉýÓÞýý›òÃv6S¬23ïºÉçÑ5uâì{ï%n…ŒïÂ8e¡0ó˜o-½ïû6WWu™ÔÃé_øÒšGŸ$…ŽD^…V{Iì0#&“´þí;ü®'Cã=ü5Á(¬ùÏþÓ½/ý‚¤X6^¸s{ã¢OXù‹‰Ê¹†% ÚÌCŽZ °i—¬K"Ù¢çqôµýŒx&*#òíþÜ]Ͼ€ ÀSgÆÐŰã¼D“¨/IŒ7œ–VYO ©™góøëø)fÚ3ê$“&Q4ã°/®zæá*o*ªvÑ1'\wÃM¤Ç{¥hõÙ§žõÄ]ôÆ (¥xÙ׿¹ä±Ç‹ƒp£yGhÇg~ùصßû>Iep 8 ÛuÔá‡?úÒs” ³óšÐˆ“ýÂÝ¿ü‘¹Øu¨šÅVºäÌϺçÄ ™¬º­:Pèé)Ù$¥+¯».r,.­Ao,‹%*ˆIS=Li“,‰øÊXþê‹¿]·ëvÝ®Ûu»n×X×íÆÇ}EaNÏÇ$Ú´uóäÞIO=÷´,K¦i×]©T?þ¸xpûömûïÀûï¿§ÉŠÄ£tpŲåžãr”{þ„ƒÏ=ýÜ‚E éÆõ½=}/½úŠEûîw`LGe³çy‚ȉhFÑóëj˜p{Þ_¼æÅ'â\rØqË|ˆ„uÒG`P¬žó¥C¯ûÍÓ$p/üÒ×Vÿø’É8N+¤$âŸ{ð®½ív²÷$Ì ¥i#·¯¹hþÜ;n!i#&©G—~ùØeO<ƒ‚:?D½í¨¯kUÕ3?~íÏÁÀ¦ª„1QàúpíöÅ Ž¿p*ÍhZ®ƒÔ]òæ¦y³.÷ø(ßóBbýÓ+_|&L£Ž7É·ÿÏgïzí 'Ìaþõ3=üæÇ~B¸bÆöw7ì¹÷žheç¢é K14KØÒÓcüÿ˜`’]–=í¸C>s×·«S¦úÉçÈök/›}îmkª‚©*ú·ùÒ}OüãìX.ùíÆ…Wμä…j$ꄎ Õ‰9çKG\÷ÌSD11†¦à™þš˜æ™Ç|sí÷€3²J8Z^÷îÍwÞ~ñÜÙ4¯b‚^³P}çˆÃîxâQ‚_²*µ‘J.]œwÖÔ³N9yÜ?@0,74]ßüŸ¿Ÿø©ŒÍ:Íe¬ZUËú×­‚pÒž{Ç&ðhÃ2d úŠNõíº]·ëvÝ®Ûu»Nê†i²ÌRÜNuµROgô|ºè†öðP¹{\çË/½ ×CÀHºŸÆD¤ÀñžþùÅ ÛAè×ëÖ­ëïïÿío?ñÚ¿á; ^~ùÕrxP@(ø8¦¾ïó<Å”C˜û;8ª*’@¸ð÷ÿuÝ kλi•e·_¶äœ¥ËIFŠyL¨àlÚ¦íÎe‹NY1»n6ìÜ¥«‰a‘qù²3BkµùGŸôOô¥3OÒ&öV\ïê%«—-¿‰TKQ§‡ï ~Ôòµ·†z*à}âäØ jµZ®³8üöÛ:´ÂµÖ\}Õ%³.ó8)¥ô„ IJlmÛºú–ë¾;õL·ÚèÒ ×wÙ@ihñ?A6Gœ s¾~êò;o«w‰™q]þ6^~þ…+¾wÉgÈÈ‘å[®\rú)§’Ba¸4¨Nè1Þ5×Ý´nÝ{ûïºk£jj=‘F-8(1@ŽÊë(þÆ?ýóÁûï7ëŠY £‘î,\xÖ´Õ7ÝJòj¬sƒµ¡‡WÝú/Ÿø‡ {î¡IÊÏæ^õÚ»o{çÒ]öÙ?gº”ÊäwïÌ_¼ä‚ÕËÅŽ¼ë;Ù®Ž°^ãÿQL,pú‘_éí7wÎ<Ç÷ÔŽâesæ,\¾œïÈ4ÜöþÝu‚z}ÅŠEκDè*4êëÝ…Þ+W¥tvƉ'Ì_4gÄáß››rÁ´ó®ºã6‚©ZÛ‡§OŸÎ~õÊU™¾‰ÈcpÄólIU“…ó—Ùº¶K»´K»´K»´Ëÿç¥^«}äuQUM«V*º®oݺuò”)>ð@.—áÃ7s1u '•Êüü‘G×\{mih˜(êož@Å“O?µà`é?{{ÿó@”üÿðÉa$‡ù(å9Ž¢qÄ‘H8YQI_ñÕo,X{#éÐÿã›_¿÷žûJPŸäRÄñ¡m+?å¢9³È“O=þ›·_s#ɉ¨Ž#:Áw¿Ó5h]vûíw¬^òÚúwå\ñš•×XEU©“ػ谣wïé Ta»QçõôÌ+æ*½°ÅYgjqÜÛQøÃ믧óY;â:§LþîùçgÆw“Ø&®Ûö¢+ç ¶_ä´Óç-}ܱ ŸýÙú¡=ã'ŸsÚw>%÷ œzà hìòÓÎ¥Žû^iÛM<€¯Ôˆ–]têw‰ P]kÈâE ææòÝáêÛ†²ÝMÈ‘¦ ü²¤€·m_4s֬Šo½j•a[ÛJƒË¾/ %R«‰QäÓM#wß´¶l¥Mý‹o¾wíÅÓÿX ®]™ äxýæë¬°áv¨ëËÛÔ”zÕU«R˜`>&†MyÚ×¾qòü‹j Ã¥dåwž«•«Y­cîÔóƒÁ¡Ý'öÙfÝ$Þ0ñù|vÑŠ•TÔ1ŸjƒÌ?÷Ìacxòä)•÷K o¿76j¤Xˆ5šÉM?ùä¾îÞKgÎDWe²ÙÊîеLYe:÷vi—vi—vi—vù(^£ñ‘× Ã(tu¹¦)g³å­[‹ãÇ?õ裓'OÞ¶mÛ‡oŽ1g†¤¥SO>öø• ¯têœûÏ=þD>Ÿô±Ç,Y@ï¼›êéýõK/„”ðÉO…r|€énÅæ3BÌ* ¢Î’.;åôKoº¨ôôOºåÎA:2ï ¢DÞÕÓgœ¿æ"ú3¦O]uÃZÀPðJ¥+3bÔ šŠ‰5K$«‘|“àrhëæVjòxÖ“\Fä}bÁ;%Åm/§g<± x¨»ÅÌ™4 CMxÉ2+¶])vH’í¼TÅœnbê’cŽZþè½bÆ$%„ïöËã'!Ž]›J)²}L@…íð–M]ãÐÏÈsĶH!c†žÀëŽcgeµÒ€’h âˆFM}.fIáÎ>êÈëQ]&‰C°ST!¾ådß÷e€††E Ÿ¿¥D:raA¶ë㤠F„üÌÁÓ ’™@ä;¦¨ÈøðZýk‡ùÀó/z­`lJˆ¢°ì¤"l`¢¿JCØPd4 GavŒÍétŽh"©ÁëЇT]| Ë×ÿbÛ­×lW‘Ô´¶d!»‰L“o7Vä$ðß‚½D»n×íº]·ëvýÿ÷Ú®ZQ’.󃵮j¥‘rGËCf¸¥ÊÈ;o¾U7Œžúðý!å\ŽÚŽóæÿ8wöåqèfxå¹—EQxò‰'æ/¾’ÖÖoÊôö¼ò‹€|öÿä?†€%) yãæ?ž¢³„*aøÒo’¢ŽSs”tÌ'‚©é –,8­¢XP0û+ òâ›~Љ¾ÒŒ1Üp5ìÊ¢'kHñy²a²»Ð&|èÁ+b¾yh€J1W3añ\ t&%›p^¤h,D³~«`èç‘ï$›¶]wÝ5笽šääRd‹!— U‹‡¹ODlƒC7eLÀ ‰&Øqˆ&;ïÎ ® YÊsv$\ RöJÄbÍÔŒÒæ-³/»üúk×ð}½¤Æly!1µÍ~¡G8—˜.”2gdJê"©úq—H9cï0#HŠNÐ*QpXá³yR­žsâw®»åÒÑ?Æ<óœe7´Tº<`uŸnD0•žLXJ:âZ XÂK+,ѽJJÝã;ཎGD•lq²yEd¸7­âúpm4M„ñ7}„š\ӕ䯾øÛu»n×íº]·ëvu­ú>Å1ãŒT«S&åàØ¿ýÖŸüço~ Ñ´- ø¡ûžðiÍñòàГ÷Ýkz 8îŸæ×4~ý«×,œO6 Œ›ÐóÂ˯Ú!Ùë€=ÊYŠx„„å±åy†cÒI0.J)$ŠNLæËa»¤ »AºÓq¢!`’w›A„þÜIðJÕ—EQÕI’o¥,‹ûÖ3ù™Œ£»0)ûDg±P†í];Um*‡`eg!±)¾=Íak·a/œ6#ÅK¼"?®ôo»íï¹nèò=><”1[½N´ )ÃCœ(¯p®GâªÑבâ8²­æ|¤§x; ºžhð:—IH9S(”¹’¨<9ãÛçdÓ¹þþþvWȼ h]3CôT+ñˆ°$‚65j,°_D2QP ŽÉïPêGÈ;ïîµ{7 ÚRm᜹(7 £¥Ë—Ųìò\ÅsŠãŸa5ß"< éø!Ùâz,ñ*À?b”Èø:»À(½³¥1iRz¸tèш…bD &e›±GO ³:³ÉEwŽuM ߃¶K»´K»´K»´Ë_½8ÎG_§eE 7È¿ÿûÉo½ù‡T:+мãxvI iäFº»Ã3̬ª>þàƒ}ÅÌÿù†E¿xì瘤îýÛûúº_üõ†çMØ}Ϫíxœp³lþú»þ-“úz_úÝ›%ÛÍNš¼e¤jzQqD£8)å)áq1ÄQ"¥jJ( ™I)†ãŠ”#^ >v}M‘ã0”$±fÔRÝÅí¥r!Sl”+»Œ·eÃû½ã:DZ,'•ËGŠÒ?\îß[©–å Ò8N„Y½àxQÃó¥tÚr(]ÅBup0¯É\¤4e¤VÕsÅ-¥áLW·é»” ø0ä,O%7¥4,³'U°Ëõ¢š*UkB>]³Í|:ãÇQÉ5*öɹZ©"euÛu<ËîÌf%/[Vår£"䳦ïõöŒÛðöÆ.9›Ïf+N-ƒ0Q ’t '—ÍÂY®ãAº³}¯nÕÕŒêÛ† ÓbGI’xJFê5ªÉ’"F <¯oüøþþ~À‡‚$ó’æûmœÕ=Ϥ˜ÉdŒF½+W( n‡WÀÃ=‘¯ùnœÒdk)Þ)+–Ó©§xŽÖL#JiÏçÞ7ü"04Þ:°©³oœëš±í)Š"H¢a;¢$Õj®ŽN×°â› £˜Ï ’T· ¬ªª–Cãÿ~çÿ­Ä…•œÙ À‡Ñë‰p3áX» oi•–Œ3N¾óÀæÝÉ_\íøêc£cfïaí Œ;‚QÈáì-\"Ø›ßþO$ªõãÖËwt½uZÁ†$nzB!ˆÃØjÕØŸ´”ÉÏw¾ t€ý xQŒ"0 ð¿®'O`ko5ÛÙjŽúè=ìel.iòÞ¤UûÀìX“o ›ýæ3ã1íÆö‚]bw´¦£ü%Yo­qøo~ÊÌ*B쮊»<:žÍvü9Íû ²ÃmǓ٨·¾­Âd¸šƒö±jݲã«d1ï86Æ”_£Í]-;=v§'D´y7ì”±û¨5«\ó‡4;ûcúµãñÀÓŠ“º£µQs£±mæâý]Q;5;ùyò‹ÑÛÆv±Õ†‹„ûÐ$ÿeýÿX>8Eÿ}ù›"æAi÷÷OÏq³Ù¬,ËÃÃÃ]]][¶lÉårp= ø›Æ¾og² ‚È2¨e¼ñ‹‡}úS=éô/ûù²ùWÒu›Þ›0q—g_þí`@å½÷[7TqÍ(›Ê»¶çúŽÇ™Tî# QÜZ-«¥¼00+y^@Y›,ˆsâ ìß¼q·]v5«uMWCØÿ¢èŦX–d ­z(¥Ðô #]b¼k×uUYT´zƒ$Iq¼ Fwôe8(‹‚*+¾mÁîMŒ"›»š°h:ì"o¡Äçpo=*’Ëê6ôç: ^àsQX(†«%t@!$­¥c?6ÊÕÞbWeh¤XÈ••¬Kœ/PË´Sj^ޤ¨î³³[ŒÛP@› jêA¿Š}`{I„/¢Ðò£€VžŽ —´tZ œmV;;‹„£•j=ŒygÕÒ°¦i½}ý[†d1Ðx>ò8UK× —×µÇ h¨ò\O>ï —¬z­·¯ïýÁmjO§ùAò‘CÔË žBÐëˆrb:½aËæT:ɦ\+ZvRäMë)×rÒé´ï"'Öʵ´¦'ebLÚÇdŸ“x&÷!"øW+°B€9)rn£c4±«¸uËFEÜ 4mÒ®»oÙ>,Jªã{0)<‰E©b®n£VB_Sa^< E’S©”apÌ£m9Åb'°7Õr‰ÜÎb¾Z7`FDY]T«p3L.¬LQ€yær™ôûï¿?±o<Þ¦g·–cYÜeâ„ò{›;s¹!³Æ«2,?Nj/ŠxÞK+ƒåRw®S$Û1ÿçÆ“¢ÝÀxÎv}X ^L¥Ôþ­¹Fµçæ[„þ z=¹|‘w …JÕ –mC5ú¼[·n4d˜ªj©t6VW/WPÙjµ*ŇÁB“ÝWK§2Iðïh_x÷ù>;¸¿žûì 5 ¯û#†@BðØß‚\qK8]H‚Âæ ¥ÓéÿÞ¯ ÿAÿpºðSЦýåý!éþTÞÍòÊŠærñŠªšHy’©•>zíÕKO:±^ä×½òÒ’EóˆÝ»·0lóŸ¾)ó^gXËíEK!l y8 Äæ(M® Å GU5%@¹àšã°.²¢9”pxž/æs‹O?ãö÷ßH®;ÛÙúÅW»½Ñ˜bêÉØŽ)‰^x†×º¡š†M3¤e:¼À•KUŠ&à·È•8ŽEÓl­V…b@•‘}b-<úkW {“ØÿÛçSâOð´EŸ9ÕÈçó^ŸèàâXàZµJ 8X!Í|±H)hpCsÏžÞX(Ì LU«‘<‘—‹¥ÖØØRÍ+¹dahs£­£\®‰z”šCR( R)5[ÈPW­Y…B³‚ϵQ­É‘P@Ñ,P¤bQXxözéDoÁEcp„‚ÔÕE«ªåñP•Š ÊâñR‰ŽhgÝ„FtàÏ;RyÚëSyÊâ’Ý)JUilújË'`‡2r58¨%#W8·ÍcmD[åì-oQ•z³@³²àvY†žìí9|TŠ¡j•RU•Õ 7f’" ‡‘`äðÉRû¦ÝþØa q»Fµ”ì,¥º#~Ñð‚jÇšev‰Á£C§¯ÊeeËÌ,Ë+AEYrØ—w»ù/¿ø üN,ëM$=ôÎîp@8(Q–±õë¯ÀÛñÛ¶ïŒÆë†Yª”a@Â_98Q•p(P*Å¡[º%ŸN:ãä3™ùTRÁä‰tjä& eAoÅÐE’Éö&ƒ>ÿW?Àüu>qÏÎ6‡b}¡t*¯\Ý+ „¥óXA¼Á`g"[ёܕr±9(9–‰„ÛÚ;}þ ¢è|¡@âRˆFÿ,Ž$ ]ðf8t3RE×3f ¹ðÊÊÙüÐHlç·;@ŒrÕ²·¥®fào˜5ÕcQ4†0d JÖ –s—ª²c€1&|n¶}×Óãn ;`T¡TÕ ª¹%–ÉUa,C&úç]ñ(&M¼™Õ–5õMX–¢Åü>¥Tùìã-+ÄëEo «µžt²y@kWoO<^ŸËÜnÉÿO± ÙB,Z§éŠÇ/V•²¡› K34KR@q´¢Öš›¤¿|ÕY_×ÍeàÓ2ü¾@M7 &MËá]lW{‡Ï+EÃË0€uLÝ­ ¯ODøŸîî^޲=„^È&=üè\YëÍ8·´8å»v÷TKùºhº°è È*ü áö<€tð¥Ê0\Ÿ‡)w¨ªn$¦LÂÉç‹ø{ˆä9V“e4‘æ<~!™,úý¾Z¹èXÂT¡b-Ë„™|EAp{Ip_"mSÖ÷ìØÞkˆ…rÅí¡ ‚× ßÛÛö…z;Ú Ýi4€òHM_@9»zsŽ0iAÁ¶D–ËU°.}®5Ž=|ô·úŒÕ!C›¶~³£¡¡>ݽ{àµð'˲ Šùd—Ä“;vPÈŒ„côÍ×7k:aÚ …”J~ ¾M]]@•‹T# °  ˆT~µ¦r¯é&†xU9ʳj<$†Oƒý2‹Ä¡Ãødw×ÀÆÆÄžŽ–Xì«o¿|È]‰^ uÁŽ»m]‹…Cåb j`ÛŽí Í-#GÔÞ“ð†UO^tîØ>°u€[’:»{ P®êY/Æ T(?¸šMÙfGÐRnÝü¡í –¼2 I€opÀúê™-ÂÊó7v×uR”U™2¶tf¯à™ý‡~·éjvM©ÂûªVs î°5Ýó§ í ž6¸ÖðiZp¸´øÒ0ðÕÝ?¼?ÿTÞÿËå$‘šÖ¶Œ²d)½òÒ%ÇÿJДÏ6¿»dÉ<¢m×7 -ƒÖ½ó‰ê ë­ƒ¾lO¤ˆ\PHÓ¶I‚õ Ål¦ÅÕA/}B¶Pˆ»AJÀ§‚(ÔTMÓUP ÈJOOÏ»ö¼ß^9u²‹f¶¶” …p¼® ޼eææó¹h4ÏðÚ4 p°lÛªVå@ÀŸÏ\.P# Àk€:·[Ìå²ápþÖíâí€jÿÖî]¢Ú77ÿŸ8Ø¿NÖÔìÞ¹-•˦·6Á7+Å- –Äp¢T+Õl +v6›ŽÄCºUsûÄT&Í»$Þå1 ÂÒi]Q½¡R-€G 8èóùlL¿V?€C¥ã(Ù~(i¾X£¨Ö”˜7àEP4´T.Ñ5tÈ rE-®ÅÉgÒ,/X/zÝ©Þô“¯AV uw¢pÓšGŸSÀ›–¤¶|q¨.ì/v÷´JÒµÇÙĤ瞎\RT( mÿû¦KI‹ù3Iž)–q‡ +ì÷óY¹‚»Tx4Ö4“!莎¡¯Û¸ }+‰¼°÷/©ÿJ8–€`ùt&}ààÈ®o¾[1wʤði"’ž´bu¬±•á¥|¹®4DS#ž²]­ÔÀD‰ghª¡«à|ùÅçÏ=ô0>£ÝÝêª+uðž={€{;v?¼âVäõ£»P}# ¸I·ÞÖÆž¾ýö–¡êãÑdo¸¼mO×Ïÿåw»Ý«v¤–i=px¦ZŠÇã´%î e*¥ÀÈÁ²e…] ãü´í¨0 HtËU׬xq-íryV«ÕTo;‹§ËmÇ“Éæ5‚:èg¿Ì•ÕXÔårП}Ƃ싥rCcsGGLjÈå PГ±ÄèÀQ€Fj4ëÜÓÓ8hPΨ¹|Ÿ×]É–åDvÙ¸ ñÆÛ¦ú–-nÚ‚EªP’:$IßïüVÓu õQ?ûE[Wð(x‘ ´}ëÖU·/Cå"jo¿ë£- Ç'ó•bµìñ{>Ýç¤)›è›ûdzƒà‹’XÎ,×uãÇ_wÍxh‚P¬¾¦h$ë`€âK…h$V‚¡Ê»A?]¯jŠc#Q^¯r.¶Z‘ãu1pì@t]®NIVb uÙl©.êýôãÏê¢!d(jµ¤«µ_~d*Wd†¨L.çõ°Z­Ú³§ã©U«P[ײ7_7,[ x» Ö튄£{vïZ5s°ÐD,så²[8ôÐd2™ÉdX("‘Â˪ZU«U Ô'¿¸kEþb.ÐX.—}“Ù¯Ï4Ey©ZfÁÓr *”VûKƒÝ£T,À–J`À=VÁbêŠp/‰ÿhºyH×ë¯@º çÜûÁînãÛUí¿«?ÿTÞÿ›å †‹…H*#ѵJ:.2zuíU§L• Ÿ¼ÿÎâ%·©ž]‘ºæ ï}ªù"•ú¦/ÛzêÃÍբʓ´j´äʦÓMî]2ä-+²Ša@1Eä yŸöÐ À„·9hÎèS×¼· üÚÞÞçdÝ"yV¤t6ÆÓÙ4¼f8ZSÀÝÖ-ÃD|b˜ ® Íàl†!B:Ì<ü¾,Ët_Й¿zìß;²ï2–ý8ØÇ† Eg3é! UKöö6ÖEÀÌõf’¬_eþé'ß÷vS‚ÊGÙø8 mí[ðt,UWÝ·‹&ªÅ"ah-õu¥|ÄÜ\ðÀíæy·×"(ª\– /Ðõï¬"‘½oÖßìÖù¿þT ›c(B—œv½ï½í*¼í–¼—q̼—_½!Û¡(–I%zêâ=‰d(Ú €éE„©«¶¥û=R!Ÿ]xÍøù<- …tÜòÛßÎXµzÈ–®îļ1§€¨iª[ô$ H±äÜ߬úà#H}÷ž]ÑPxö Pow_°%‹¢çΉpó¥—¢í{ËÝõΛ¹ZíìÓÎÀñ/‡ ^öÒÓMKíé>`ØÐbAþñj”¶­ ‹ÄwmÞìÝÛ¶·kvÛ¢蛯PCŸ™‚æM$íZúƺlIÐó06Ò•…—_‰‚a(ÎÕ‹ß?eêÌGöû ¬¾ð‚óÎÅÁ2ýÞÉsçßqõÄEk×ÄÚS&7IÕ‹Áñ'ôèÛ¶wìjÍÕJÅbÙǹb¼ï«Ï>yhÍ2$WlÅŠß^²êã?Õªr²»cäð!m;·57Ö_sÚ˜ÅÏ¿T”°àž€¯Ö× Ô>Dû‹-Òf8ð”!l­"ûÞQ´›ÆŒY¶áý’\kjŽV«Š\®€¯ìæÁá¡"±H{{§×ã7 Õ5»Z“adÄ(µJss¤£#‰ã€rœ×ë‰íŸ×‰Çƒ_|ñm0lnŽïÜÙÝÃ熢žöÎ è˜mè>¯T-û׌àÏÁ@Wo: wõô‚o`ÖdR-̹îš5O?Ÿ.TLš'ÖŸžÎ$zÁ¡¼õ¼sîÿäQ½ Þí!¦"ŸÏØœ+TxNP´Zÿ3^ë p)|1(Éñ,衦)x Þ©B‰>!Ÿ«åò™»P2 TÊák<Ýîù+VøC±|E©šÎð‘ñbÁ˜rôhÄ«îX5éÄ“žùü“B© >qÓ€–žt *dúqÇ-}se9AÉ[(§ž>úÖ÷ÞÝ%,q¨[ á‚èÆ¥6-x¯Y“$h²-¥Í½úœÖ¯±>×ä |§½½íÁyó Kxþ“DÓ—,]vée·múÈãe®9è?¼¶¶5IôvÂïxƒ‘‰'œ:{í+5Uk¨oš|Á¸Û~p`KðÓO¿òzýðS3Çœqç¦M˜ž§X.ÃQÓ¶4ÃâÝb*t ¥ ¤«È2Þ†¡K‚ø ¨ü·×C°`¼TÕP½¢›£i£RÉwõ,»â $¸½ür¨.ÔÓ¦gÞu×]6áúC†â”b©¾±á’Ÿÿbéú·žwh:_(-…æÛ°¡·«mþ¹>üùŸÓÙ\ Neò / ¸¡f@a ]ŸG"it8Wø¡í«ê €ì·ƒ6;Ü©¹y1•Iý¡b¹à•|²\aH#¸["I”Ï- 쯯úÕ AÍù|poúŸmâŸnµV¡I¾¶¾YÈMÛ€÷á7mÓù©¼ÿ.åfu»Äš¦1"])&Â.òg¿vì‚ZûèÝuÛ¶}Ñ2ô€Íü¹&…”¦ÖÏvw‰¬Ï-Ð ˆÕ/ꪥ…L¡hùDDS´b¸ðŽ—‰÷´˜v ÅºŽ'ð“½=á`pÊEM\¸0 ~z œ¯” ƒøß4W‘Ë~ožá5T®¡™4KAuÃ;<^P @Ü9š1uŒ˜ ¼ `ÇÔ-Bö¾Eaô·«û¶îÝJ¼Z«oc»MÚV)Ÿ‹G‚n–ݾm«©*ñpˆ0,0Ï”ËíÅ»Ói˶«…¬_r× ¹¡lÿîûh}S¦ªpÞ` ¾1•ÉD|b.Õ[«TL›[A5@ïñHm»wCÁU%·Þp>›öû½K‡Z:‹F!—ª£Jµr‘ .¨PˆÈQ#RQµO ÁùŽŽu’VKN9ù$dqO~øgYG¤Gê(fð†EæLý–ß^ ‚ÖÕ…HâžÍ›z«2ã ÙˆÅÛù¿"bÒá%º—\-+åâЦæO7o »E0í$ËYYSõC‡%Ò™ÆÖ–t¾ZSTŽw;ûâæµkþ_‰1ºÝ|6 ŠÜMÇàE9øØM¡T^xñ}þE©ª¦29Œ2^éÛ¯¿„B.OJ ô_özÄR±0óÔSîØ°P «« ºÓŒSNYñþûxFµ:ÿ² W<ÿ¼¢ë ôàÞ¸iò '.Y¿û$.>›Jz}ÒÌ“OyèóO{:;‡ ÜÝÖ9mÌèe¾çhúMÇœ€¢±Ìtà@¢9¿9‰þ÷Ý+ûxŲF¶´lýrg(wÐU§€ƒv)7gâ„=¢ê†äñ±,›Ltßráy«^~Œt}}<“ÍO{ö² ›ê[»we'>zõ«¯¹¡'‘šÓt´»ý¾O>Íd2 .¡€ïÆãŽ¿sÃÛ<Ç©Š<ñô3‘ŠV¿·¬n{¢³¹©•§)+[zâ‰kÖo¨9z•&lú&-04UÖ§_tþ’V7¶4oßÓ¹hò4”ÈLyæ@ð:èöÙb¼êpðª#^ºþÝP,”/Y*42`÷»7ý8Ø·!܃ ÀÁ´=gUÚ±‚tÅQGÜþÁGP·Å|.ì÷ œ‹tìÞÎNpGiš.‹$Ũ†>pð0o€ïM”,Ûà Ú½®®lvµZ=è ÁსÑÛÛ Xã±g!Þ-Êq4,•Èù}¼ïO‘{zzh–­TäãŽÿå–O·µ T…4”pøv›ÕKÓO;eÅ»ï× GðFÀ£e«– ‘ £ÐõcO¿iÕ*†wSœ«u@ô›­=‘(ôϪ×íÍ2 ÁÈš,ñ’C9ðZ·u7ç®é5x]¨<‚‡s1,AAjrMÏ—ñæÅPHLt$=nfÆIÇ-ý,ƒw%ÖLkà°!½5Ks.¢¹>žO¦š|ü‰÷¼ÿ~"‘¨knÌ e¹ZרpãQG/zíu7ͺ9:íô³N¿cÓ¦T*X¬›v8ZÎfó¶ãàû¯D©—Ô Ú_“Aü·ûôYƒÚ úÀ¢6ûÚk篺Ð êÙ0µ¹7LB=É+ïyhØÈSÏ>ãÎgŸPŠ9p­#ñºª¢N8é´…¯½ÁòÀ_©˜—¥QÀswÞyçu& 4ºôÖÅë:^®½èçb._Àé’”i¨%¨'ðÕ4¡ÿ4¥˜*/òmm‘p>èmk_1áúG^|é²ãOœóú:RBA%Ÿ',+à‘ÞµcÇN[Lç²+W­ž}˼r­ojRT}î—N›7‹²Ì[.¹ãžûÀ£Nå ñúF¢Ã@r6^GÔáCâ–p®ª?´}ž©•kGÁwʵ²À Š¡À§ð Åi–æ}ðŽè³Å,<ÓøF4:Ø_ïµYì/fˆ$ñò½$ys¹ ¼£(àIØ"ÒŒö§K0„¥Yð}í2‘ië6 n ÁsÓˆþ©¼ÿ.å­Õj#(ºêò±¤£JŽþÖ“]}ú˜C½·îx±¸}ÇÍ-C6nþs¦Åÿ8l[¦$çÔ€Ðe xÓdñ4[Õ-D(Ç¡!S†‹¤ACÂöø}0ða¸Âp±ƒYV(Í=æÖ×_‡¬J~ŸFù¾ûUð©UÓ„1 ¯ûçü|žS©T@à5Xkšå|R— ’…÷!]‚¤a(:}‘Qß©‘¿ÂAó¿à`? –rÙCG øæÏßhnøîë¯WL¼ÔIJfE¯|á‡w/ùÅ –´k"©g_ýüÑc¦#ɇbññóú‡ª¹ôÄѧà˜Mõ¨·±ÌŒÛn1|¨*×®ºä·xê%ƒ¿E=ÝPB*¦·cù+¯‘ASû5rÀ³xd˶ËÎú-¾\$Ó{åMלzθÏ3\Õ "dÙÃÔDÁ¹âÈÃÉ=¶ñã|ES²Æ —„LïÚ±ôò«|ô‘ß_r ²íÛ_z.2xXWN6 vô³ ´ÐyµZnˆEMùz˧Þq‡Gp—wíÆ«!H”nåeÄâŠí=©Q?žHÉýuˆgeú·öaöþx:ÿ2ÒEÓV­8óì±K(ög³YŠá&Ÿ~öäÇŸˆ7´VeïÙ7=Zö¶w7åKe¿s¹¡É|7sÇ[ok!‰Þh4zéÏþcÁk¯E"QE­ ,Y,äÜ¢|¦rE®©Ê—] ö:j¹\ÿ8iöèSozòIÌø\ŽgòYcg<ûT,˜t©/½ûÞ9GþbÉë¯Î;vöÏ,ºôªûÖ½U¨L¥⤠ϟÌW<dlkæqGß¹î ‚bÉW·øTªåüòkÇßÿú+åb¶T(xÈ¡ãÆþæú¹ ê £«åS3ÇŽYóîÆJµ ‡ºzz-\|ÓÌ›£á˜Ç#‚ÊLøÕ±÷¼÷>Xèh(X.W'»tñãO!FØ>7ÝÝëÖœY_ºèþ¢Í )C6(ÆßÑ QG79õ®õ¯²<ËÞKfÏ_ñàÃ0Øšd¡{YøLÆUG;ÿÕ78·'W® >‰Ç¯M9$=pï5æ4MÅÇX’ÔL½Z‰H¾ßŸvêíßË–KA`ª•І\]4}jß³äå—gNœˆç¥gÖ}÷W5%ám øG…—^Šc= ! Àc],Ö›L.¼î:”LÞµyóõǃ†E…Â-÷ÝíÞÜØ¤x`ÁåW_â1T•/ž5çð#ŽI¤R.·ò˰œ­É>þ¢ƒ¼ïãOqDŠW±Ä‰6.M” Ùúhäª#~yïÇŸ‘ óÅWßpÀˆdªÀ+—ÉònÈýÆEÇw… P6¾õ´” ð±ÈJ¡(J^’uáÓB€Õ*K!žF“O>îïo4T”‰æ¥\YΕÕxC½ª•l]±ÌÁ3ÆœùèŸ>d9מö=ᆆ|1ÃõW_yã¤iøü˜áx|¾¹®½å¡‡†¡80@ ¼ÍÍ­8@ª à€Zýú¬™€ü Ïn7[Îñ± °N ih:|Á¶Løß©'œpÛú·¨¾dÁ€PÞœqÅUÏ~ôæ¦MÛ>X«,°‚,ɰ®ïvì¼sÎü…?ŠF»iÇ´à}ž¥Àö±4}íñÇßüè£ MMEC~† ¸cG§Û-’4 †€dh@C|7”‰X`ç€S«øÀVÀ öÈÊWJ8†À57ÇÛöìá)ræi§ÞõÇWC‚ûüc~}Ïçß&JµĨ hjÌfÒTßÚ·¦ª3Ï;oÚÃuð°]íi“ph†³yáï.@±hõYÓa”µŒhvçîݾ@¢±„> î(ØÁJ ÛAÈd ôCÛjÕÁ‡*qŒßrµõ ¯a” ¢PÌ)p±ŸPÔôþòÒ`5ƒéKÆI_ºV©/]hèW Bß|æ¾9Ç¢ÍþGÓ…¿21þÒµ*^ëð{}¦m•‹%¼ìHÑ?•÷ߥ¼’ TŠU‚B&eˆûî»\¥ñ„_}ŸPÞ[·9Œ±$+ù¼Ù^ú¯ :øiÕtÍ*ÉnÎÙ‚õ÷åá°Ã•e½»»sÈ€™TzÆÉ§ÜñÎzÓl±ÄŠ’bàX'@`óæÍðÜ¿Ùè{€ºsÌ1à—Ûß}÷àâAåÁ–÷¦’@%P)£9œBBä©/ô!ê·{W5ûq°/^ÚÚã c{>ÛÛÓlûê/Ë®ºÕÇžxüqGÓ¼0î‹äD÷ÔÇ 67¢A¹P˜|þ¨­ãö?<2õâK|#F,¾û^*É;N2“n]Žr,Ç0thøñÇ Iß³~´ØÎ‰§†Ôÿƒ‹Ï;ìÊ£ë^¿ôÌSê¬ø`[Ø+\<ÒG{Sl¹åÁgyA¼é¢ß ÌŽy>8ü”]Ú@QgõŒi'z ²…‡_סÝËB^äÈlwçÂë¯C¥ê«V_uÁHäW<ýò… Îgà{Hö² ê;Ym¶ˆmv×|¥tjÁ9ç š2÷Ž;[ZZòµê-Ën«f2·>òX°¾¡jÛÚ»â`íÌþ‚}³2xÝ?ÛxÝÙ¶ÿ•âPûD÷Ö¯¾5rÐugŽ™|ËìHÀ gîï¯BáºEwßïñ‡ ¥2CeRçMš€tcù³/•kŠÈ»`x9à«äóA¯gú£½ðb8,<*ÊÜË®XòÌÓ¹l¡¹©¬T¥\éw:Ó­“'?øÚmí_ è]x#ñ„O¸ó×½˜–ZO:ñþ/?Û¶õÛ•ã.YñÌ3S.·vç¶³‡ {·sÇññ·¾òŠ’8IRÓ¥|¾Œ7íßÃðO0¶1ó„cï^÷&/H=©4ïaLÞ8vаÛ^z®mÏÎûï½oñ­·i5d䨽ȱž+~wá”é3O³À¼m;^¿_•UD€¼Ø3§O6ý&ð€§].Á#£Íõß%C .—!+¢AL9uô£›6— µ[. ë÷zA ‰bí¦ë®Y¼tv6Ÿ@‰6¶$ÒÅúæfì+rl­\04|ÂÉcθíÍ·M|%M BÍ’qÞ7;¸7ì OW*e‘ŒZEb\zµL›Î´³ÎœñÖ[¡úðö­;F Bi–Z.êÕêMœæöÇñüÀ&×þúØ»·|Җ莅C;v¬¹yæêgžÙM%’ ¦M4gîÈHö&$¯ärÒ… RùŽ7^Wäšä'Ž>måÚÁH’”H$æ_wÍÃo¼ œã÷úß^2mùðB5íæ-]=i7CH„6éÄãV¾³É$9Å"TÃôûÈÒMUFŽðHWqÄÌgŸ}~Ú%ʵt¨–ïÚ߉ÆãQ¬©ª N¯ã€ß2êCËTýâóÏcuuÙtÐ $t¿P©ú³ŸWkJ>›!@“ÎÔãŽ^õækØZ(Ç«øä8ªê–h¥Vv¬cèÓÆ]tË}÷€_Œ²åŠnjÑxÝŸ>üà™%·uq§;…TuÚ½÷tè¨]»öPz˸8äݵg7Ž–jàÉÔ£±>Wá}Ðg·‹‡òy¥d2 íß?øàQ¦ahš6ïŒÓïØ°A×4ï–À‰ŠÇ£Å’’.ÈõñúJ>í¢Q9— ýßoßvïª;W?þtQÖŠUyèˆÖÞ®¬À3r©æ1ÑÓuï7Þµa ^6_€ÇÐ\µ&[–-y½Édú†\U:ä`KÇéʵ ϱùLLi8ÌæÒP™¿<üЮd4q±r1·èòËï}æ)¢¦ŽwѼ—×sŒâXÈW-WlÓo0‹å3Ùy“n˜½òND’ÁpÔÀ1kÈRªÇçè•lbá- Pw6rùÊ•AU·wws<¶ƒOls=‡ö³TªÐÔâÿíëÏqšaÀ§GsLµ\f8nÛwßqѵó‹xcë_¾ÞóU"×pÒ‰ë?ýæŽIs°oÞD­M¨·•”‚3gÏr5ÄMäÜrúYÈ@•bh<ÙÖÙ‰†ž:gŽÏçÝç(ÆØÂ›¦M˜6}Pë`$ †E/ó–k®A• ¾á„¦q,m0“4}ë“OBÙÀŒ-ž1uw!EG-M¨³ùý(š>{V$\_µpD2¶7Ä ^Öì‹}Eèû#=Q},Øw<ÖdÕiªSÏû ª–—<þÔ…^-¹)¶¬Önž< ¾të»ïö¤zb~¿Ë0§w"Ä +ï¿OjjI—I~¿—,dò]¨ï°7C“ 9×êµ/²4S“«“Ï>y½«xp¼ˆE~èÞ+Ný5"ù»>ÞîéXøÛ£jå±·É!X—S»æ˜HNzéK!â÷É9ZMò.óšŽG„tç3/¢è,Q(\”=ïô±¾´6ê–N=þdÏ}ú§^YÕ]Aàö›Eâs6iÖ%è“j¥lÈÅO¼ð"´§’V!{ûSO`Èý~!ÞÞÞii¥Üb2Wd8Ž•aãPy,° ÃÖ88XÏ¿BS‚‘n­W (Úì©“P! ¹¾óɧn8íŒÕïЗqB­É4a×E#Ûwíf½’åÀ6”ŠYÀŠt Ý¯9ü—Ëßz³/ÂÞâ0ý”ÓîÿìS¥¦³™€ÄƒóP‘•—_ŽLçá·×·}ÇÐaÀbÑhOgÇ1SO9yî3O›º Ö×ï÷ϸâ²Ûßx…#ˆ ??ò‘õï\výﯞ4ñþÅK—Ü{ßÌó/{xýú6 FëgE¡dàë;êîuoPœ kA²¡P`û¶­‹w!¾Zr£®Ž5ëÖ»ýÑd¾È¹¦¥#¹@#gÊä©(“ÆWi{|gÍ1b˜ž†ºº·|tïêÕ6ŒÓtù‚·ÞõͺŸ›óŠ€G@f RàòŸv߆ UæcÁšm€Í&ukX¼nÏ·[gM¼I.”)£ú¦›æ/&¶µµu÷Ží u€ƒÀ7“N<ùÖ·7š͹½½€YÖî;Y¼û€*Š•RÀã-åÒámÕ|qÊ™c—mÙ’ª”ŸR*Ê™ìàÆÚ¶¯8êÈÇ?Ü\*—IŽéͦOž|ó}÷øc¹Rš?fì¬'Ÿlnn@aY´uúyçÍ~è! P$è“O<ñ?. 0¾-]›vÚ)lÞ ¢tÓYcç=õ”㦠’C)†½òòßß¾ñ=—ÛÓ›Lq¼›§P€µ®<òð5ï~@¹=5ƒWÄŰåR!ò+8<¬:÷¬±lù`Ýíõ–©Vd¯OšzÑEXágñ©X±,8Óo½5 -€®£övÔÔ„J%î¾iß|ÿ>_Ð4 7G+åüÍ£O^þÊK±h¸XªÝÎ56)Ê%ÛÑX†ð ¢V­M=ñä?ü0“Ëø2¢0Zª”Œ;ºD> {pÀÎ7õÞ{ åtÁE¨VÇ9ϳx¿ìíO>©¨Ø{_€õ¹éjŸ>wöéspú¬™ÑHjuê§ÏÇ3è>€C;0L$ÉÝÓ›õøã8.C°ÈÊgzçM¼Ê»ê¹ç5›rh–—|ÛvîÐܤé2C$áL;ýŒe¯¬…:‡lCÏ!uíᇣ¦F”Jãeœ½v!gÇ ^¯÷ïhßB¡ß.ßg÷Õ³ÞWÞ½õ<­¯¼à½L;ó, rÛ_QB]î™sç¸XÎãóNå§)dÙø| ßíËRHgÞæL€Ã"Š„Oß|Ï=´‹Žú|r2uÓ)§!ÝB ÷Ì;ëK$4M¾±aÏî~M¹õ¼s¡Áp“‹È´@Xÿ¶ ºÀ±—Ÿx\w=ñÄõ\ˆ4í•6žyÂaH'îû¤­œMM?m$²¬7¾KŸ)6C"yí¯G!_tÒ3Ÿ‘n‹«B))ÑC\rØáˆô¼òÁçÛÛºX¯ÏÝÖfœø+dXϾ±n÷_¾ž5i‹LY²`ÀÁ?Ï›LEÅËv²RÃÛzÜâèÇþüçÎÎNApØŽ»á¸ãþðÙg𦂛zÓ9ç¬|í5Èd2™äYŒþ¸¹\,ø|¾ËŽ<ù¼xà3’kˆs*Ýõì ‰tÖ×ÇÅÐjáúŽ[þúÛ¼?¤˜dW"Y‹ãE Ûȧ“‘pp¯ŽYúÆzVp¡êþ÷D¤¦úîð4Lÿ‚a[–)ºÀÁÙgþÀ†õÕ ðÁ¸=7œtêmoo"X’áÉ\&p{,MŸvêèÛ_yÕ%ð†c˺êEÈÀÍç7燢Á‹ÀkR7œ6æÞ>ì;—·L€WPªTûë íÛ«ý·áÙ÷e~_àèþxÔ3ÆŒ™ûÜ3’à†–køó ?€âòþZU!-Í1噞wï_qOw—K м[C¤¢©„c .€XhÒÚìÑ£W¾ÿ>IЀÎ%@aD„ÃáT*%º=ûã;ûBÈã“p8XôÞ£HýÛ]p¨zÂ&RòÉîŽàáàm6Ê‘'„qÎ3/„þD²'AŸ×u ¬éÄ#ºcÓû$Ié¦Y,᥺`$ZHtù‘Ê sâ•WCÌ¿ÿP¬.•Ë7´´æ¡þm(õ½1±ê5”ÿ¾Ç¿ÏâÿŸÊûO)/ü ØzÃÑ)žR”‚¶7­}ñ÷£OuýƒocìÞõeýÀ¡7~Ræ½hè_u$9$Ò€Òi{/"¢Ì‘‰x££ÿgo†¤V­¨2ŽñÑÔÐxù¡/zåU^uÐùœiV×qúcM÷ÿtÿq_ÌjâïZ,f”ììøÅ!œ7òÄ+Ÿ} ÜÕJ.‡/ó Ù¿tµmóÈ“OÚüñ‡C›š‹½½óÏÇ×Õ+…ââ•+½Í2¦åª¯ãhjòa¿@ŠüÐ;ï_—ò…W\”Úò§ŸÔÜÚÕÑ6ñêñ¨TxíOŸ.¬ƒí¥‹Ïø5bøÕïmuQöUÇEJuúÝ/Ôp˜CÒm]qÄÄon㼨¸£ÍCÉÁ°pÅ‘G “{pÝ&‚sWùE!WÎ/¼n<ÊgQ±ŽÆ3é4’efÄ«Öî ëögRi𿾾ºÀ{܉To}S}­Zr!ghSCç7[»v÷óÃÀæýæ7g£j‘ä_~•.W²ÕŠ;ÁÁYÜô/¿XÜ?;È’$T&iª~ѵsçö¦¦–ëÇ]°àѧ|àÉÏóéTψ!ÚvíPu3Ü2(S(‹¯È7ï²MCUäg޽}ÆšRõI>Í0¦tòœ—_nmmÙµ}§S*-2å¾çž'(†bØžDªV«1"“Érp(zÇ|ðš7_G>Τ‚¸TµØ‰Üðó#ŸûÓ–²­§Š9˜†Ç}âãŸ}’!L‹¢”lÙ6#yT¼ù¸£þ`S:_¬)ZCsKGGG<œ0æä»Ö¾È1$ØQo 8áÒ+gÝ}ɉ"/8µÒŒ±§/}i-Ç»\œ›f™«Ž:fÑ«¯ 56Ô5ÔÅ.:xÔÂç_ôxESSC¡È%¿8võƆȖ4GàSõzÁwýñ'¾ðÙ§©rIq‘ÙjÙçñXŠæs˜ëO9iæ]· 1¬7SF™rÊ·oÜdà‘D½V±MlÁ¸ V¸EÖLÊ%‚¯øZ,®¨Uš¦ Ã`nñ¡ÊÇž±ü£z²™‡G·ÓÃYv<è'Msü§?±~½¢È™Bž÷z'Ÿzòš?} üšÏ¤—ó«c‘(>ÕKR]+æ/¸åöål Çú½¾«(œ~á…7Þ¾|À€ЄåB±®®nûöíºé0B`ðàè–÷?{põŠgŸ}²³cÇ h[{W¸¾ª¥¡±~»§«- ¥zË-š»x‰aYèð³ÀëÀå5ÒLû¯&°9a÷ã ±—Êì¾ÐúŽa©Ý=¿:ê°r6[I¥¢>]•/=y̾ÞÕ[¨1x½&À´$ásÓ;wíxhõšÙK[¦í–<ðËÅx|‚)«¬R¸æ¸£Ú´9[(Î8û¼o¯×¡íYuïlÑ«Êß\õóÛ÷ñü¿»¥ãÇËÏýüSyÿ‰åÅ3eaXí&½4zÿÅç®=FÐÕúq°k÷W ­{qÐ:ò/])ÖæY|5 8?!â0Ÿd™Å 8sBýñêÐ~gDŸDǰr*å28^WyÔ—ׂ h‘?”/ðÀÞwµ×¾›‚öº§vD¼|”ÄÖ5Ÿ$Ê…\8à½ü¤“P)¿ä©'ý­†“L¦nš25Ô-¾}…è•°dŸw.àk×^>öLDox_wñ[¾ûþ¨#ÿý!‘Ñȼyóš››¯þýZgòxŸ}áyâ/ÿüù‚›oFªúèKk¯¼òJ³˜íý·O?î?/0ížg꣡I'„“üË…«ÈË+/ÿÛà½ëÁÇÔ†ßï.ˆZÆËé¹B÷Êé3PżaÉÊXãÀ‚¦Å†êNvzíÆ'¿þ¦’ÌÌ?E#ãçÜ<ê¨c‡ºµQ!—_~é¥HQ–¾û/ò%¹„/áPk™îÎ;.ürq“çÌ=äC¾Ý³û¶3P ¸èî»hA” ÃŒª¦¥›Ö¿ÅQ(8†mÔJÕBÎP*n·{öo·æ­uÉVl:°–‹& ¹ô¢ßœY_ºé#YÕšÖU%ò)5xpîœYÓ¦M#IÒÔ-00ë’Ë<þËp•BañÌ‚š¡YŠáŠ¥J¬¾~úé§ßþæ›$I»\¬¡ë»¶o_sýµ«ß|½\.j–inRÓáÙdWçʳ/˜óð#:ã 9\7¬î=íKοdöSO¹šë`$UÃír˦ùãá m[3/:wÁ+ÁÙˆ7¶$R醯ú¿|ñéš+/_øìÓ–‰oàèèé½ãêëÖ|ô‰¬Û0c^áâƒF!ž¿é¡‡dY †Bó/¸pÍÆ‘ˆÐÖ–©UÊ Î=…"3W­0u"¨¥ÓfÞ¸xihH‹‰£nzµ6(»ä翼ú¶e¿>õØ/Ú;h‘74= çwu.ºpŠûç.[Ú:däw»v/?aÅëoB>Ó©DØï¥H$¸Ø«:fÕæ?åJUÅDc–ø’Ð<£ëš©é}Á=÷¢¥ G£;·o¿õ ç¿ü2/“$ï¼ü²kîZÓÔX?xðàO·|¼lÊ”Y«W],•uðø±g/{ö¹p$ôÙ—[cÑ:¿GЋÉ)gŸýÄÇŸ¶÷¤eÉšVW×`ëj9Ÿ‰†ùtjÑùçÞÿÉŸÓ¹ã³x|æ‡zÿP3 AVª5‹ «5%s³më·JÒ³çÛºÖ!ßô9C†ÿ¥3É"ÁÑ0 ߯AIÇ÷CTX|[‡í>ûaÎ>QÜM­ªÆ2´¥rµ¼tÜ…óÖ®eÜ¢ÕwÕ²ÓwÈÿûsŸ«·ßÑÚ7fî,D臚‘x²Ì|&ÙR_ÙÑGà-&¥"¾…L{îÃxB¡©W\Ê.»›øû¯¼â ŠáÍÎ$ùݲ¹«-Õ~{ÊÉ}7 ¨¾õÖ¥¿»%“ȱî~áÅ[æÏÍtwƒ;úÂÿxîÑG¢pø‰§¹âÊ uYAáÖÕ÷Þ5ñ„Ÿ‘áÐ’{ŸqÉx!ž{â‘»wv&ŒÈp·Ï?ûWG  €Ô<2 „ÜH £’¬yýš;kVJeT)Í=–ÄðB^Û.-~ò ‚“JåZÐãàN{{û @Cùü3ÛþÜÝ]˜vùåÈ6a<,ðAÁÅôtuΚ0oÄ‘h“ø$– ¨vǸåškV¿ôr®€RB_u|í{ÿ!Ê¿2lý÷Qõeiï|Dÿ$¹ÿ S ꎃ² îÎöŸ4R-–'üælkš÷"Á7ÿ±§òù|Kk3ÀtOo—$¹çœzÊ][>7Á²ñ.7´N·¦²Šûøj);ñìsQ¹ºøÍ·DÉ—Ìæ<^¿#]쯀ýëæ}Àú[÷õ´ˆÝg÷<“ho/ú1sôãþóSyÿ‰å…þÉ F· Z$ýààó¿}š[W?|÷-h¦§c[]ÓÀ›>/¹<ÎÐ_u$‡w Š$ŽïaE¢†q°Ê€ƒŒw¢þ q÷-C† Õ€aÍÒL*Ù{à°ȶ4MŸ4zôµ¯â ÿ@ü«q…Ð߸¤ÿ-ZÇ>ü?„¡v±\OwWsC½*—,Ƚ½Ý]-Z¶w¶5¶¶‹Õp(T*«ÉD"à“|­‘%×*ø²&ÝD”©¿-Æ´r,Y,ëîî.—ËáP`Ĉº­[{pH?áÈdªN¶ `P"gs¾Fò>pí±‡C¦úàSJðç Û4ZiÈÈQ]Ô“)Œàïlë¦(Å/‰zÉ´Lš“‚íéLë¡õßlëñ»]7o§³Q¡o 4¢p´ÁÒøD°…lÝö ¢R‘5EõüéL¦a`}&Îm1à—Ìš"²´—w‹EÕvxQ¢i¶ZÃÁ¨›šë+²ÝÓ“ðÿúa¨á!ˆîj¹ñI{vÕÅ#ÙtÆ +†åöø™¼[òÐ4YÉåê¢BºxÈ yÉ„?,—ðõ€€ ‘`€"ñÌÈ}}}=IÑÉdÔœã8è'J±Ð¯g]ÜŽ]»YÖ‹×wtu.ÕÔäùú/mÑX8“èD½Ý=õ-MUM‹·†·|·c@}SeG‡›áBÍñ®T¢®®!Û›¬CUMO"Ýåõä;“‡ØÔ•üÃP“Že–Kó¯¿îº Z+Ë`ÛÀ û½„©45·lùBðx)—H÷vÁ7WVÊC7lþàÓcý‹D¯Ü›J‚msë÷{-Ëéìh‹Ç£û믿­¯‹UÓ]’«2M(ȈDbf¥êEÜÄ_ÿzÖ£O¨ÈÐyÖ_®TäÖXÜ.ÔðLŒV„Ê4INòz÷t&½þ@.“öáP¨–¥Õ M™ÞùãïhøAÛ@RžæYô?…¡.+·ä†Œq2dE )B3n<é¤ËÖÜ;dÄHU«y½CR…bhoÀ€–¶ŽÎh4öýwÛ‡Ž.‰t2]kkk1bD¢·kÀ€ÆŽŽîp8ÜÖ¥‹[ø6AUÕþ‹ŒaÈ»\ÄgŸ}ûIâ›àCX,´kÇðúš››¹"÷,ñB$M÷“4£›8Ü­Ê„ZY|ã‹zÔ¦8w0\¨(4A³ ‘èê`IçöÓV=þx©R‹ÖG³y€¬/vÂÿ·î×C–Äá$QlïNø}A^`w|»uøàV­Zdð‚§é rÅ*°>Á‹…j™å€Ñ†X¡›»¶ï9r$ŒçØšm*8€c­\‰‡"j¹ #"ÔP§BYðõCsP.·8È/ý_U—Ü;/Ø·ô´ßìû«¶6J:Ž E€´víÚnhJÊ?ÿeýö¯ÓÀï 2="%«ãk÷x¸.™É@ýƒæ×ú‚:¥sYNô¥úî>F}7®ö_…ƒíÅA‡Ø?¢ˆ½·RõÍ|ìeDÜ@UMŽ×GkÕªR*I «•J ¡p¹¢äsÈ 5}¿­ã˜P82îõ éd¡ïZØPà.H_e—ó=>¿È°‚¢êÁp°­=‰ÇAJ ë¯7€Úû׋÷ëôÜ/Ú?þê*×+??öóOåý'–·oïmØVßì`ÎgŸ¹ ïT?ÜðCÝݱ­¾ià»›¾(ñ{ð°¿t$Ä#t‘øÎ ƒÆûðÜ:^«-s}³ƒæþ»x8{ñÍŽGÅ-[¾ýÚ;ÓßHÎûÎ×}÷Ý;H69£áÌX–=ÖNœ¬‘? @ € ;y qõ¾Þõ2 Ë ù;ð¾2 Ê bɽ‰"[–æ&9’¬HŽæ>8<»ÙwuU×}íï©j’=NV“xäIü| üP¬®®zêéçø<×ï9~ìX&Å_û—ðd(Iw;Ýt¾4Âôá=’ÝïŠOî0­ÿÏ&uP‚0,ÕÚÞΤ•¥#Å+ïß•¡–bHi&ÛSG–f1›S…1 %Ô½õÅT†0M]3òõJ?òû¦.AãÕvóJÖ5,Ž@“«ÆcSÎÈÝ‘Fð+p¶m‰Â‹ó4Aê´ÆâìÆ½T„»Û0Œ8V(3ã±÷b“:Iὑ©«sÕ™ÈsLÇÎæò[­'gx1õ+”æTà.68žq)’а—g¥¡Ö· ¨ÔE­ ‡ªÃ­f ~5(ÜyiÔ+÷î)ét¡T‚Ô¤›n§×E»#:žç#×BhÉ¼ë ‡ý“Çk7nµ8%=°ÆLZ¦|ïD&×oö ™7|PÛÓÍŠ’ï¨jéã–:—ɶ¶Û¹Bv¯ýç/¨¸ªyik³ùõßÿƒÿýÊ?9®çºn1›ÙÞZã©0 ¼B¡`8nÄò+¬BFÑŒB^yïp’鸚n@[b8Ô_<í ŒÀ±ƒ~7V–s-›§8£”à3”Àó­ ÿŸ¯ý)Z‚* /üÍ_’"oÆp·óñù£ƒV‹HЦ•\©Ùég‹EˆYduUeˆà¹ÿþ߈µ;Äüü_ýã?ô‡&´ˆŠ•hªÙ¤Ž¤IŽãLcÚ®ÌÐaíË_&F&Á±ßzñÅn¿3Û˜Eþº¢@Éì·”’î÷U"ˆlË=z´Ün[éŒ8 ‡a@õ¯ª€¾ƒvCVX–î¬ìõµZÐÓ0¬TJm×2ƒÐkÔËï¾û³gžþ¸>‰‚ŒœÌ‘\yù\‘¥ÿñ;¿M ZÃ|ëûÿWÊ 4l9 #‰FMùã/üþÿzþk™L†“RÕ ù;…î# ™#&grC}œ†—áˆv³]¯”èЫ}?Ãíö†sG–Úª.¥S™,qíê­r¡Äd¥ÝÝí†I°” (cÛ(ÏTßÓú*4Ö+ù’íºÐˆ7<äU€2pa6›wцæä¤„ŸZG²?Q ÊXò`x-@S9—A#¿²,Ò4«k*ü"–{ûîæl)ÏSºÃ~¯V«¥3™Íæ€dša¡ø‚¯gd1ò\ ‚#ÈcÛ)U³¢€ð!"´¶;¬” ÷)J*E¶¡ó(‚¹Íæ¤áb.å%k8Œ,G–3 £q&ŸDJ ø¥G£!/°P2[&<·4ia€Z͹žU(Ƚ^§PšŽ4Óp«³sÍf«T®Ú®7©h’$“ŽŒpMs@ñÃÿ=ßø}Ÿœ÷…¢Õ§ý0 $2ÆÁàÂ÷¿÷¥ßü ÀÁ•dW’õõƱ×μ=Òáñ“ïÆ½ƒ„G‰P¡K²‹­q”OÌLb¿W Úè"ÏÉ¢èXvµœZ»³SÈå°lôpâÃÓntßôÇ8sígû©áà).Ž?#p0™;iôÉ0¨Vä¿zþ×?ó_•·¾±#Òív§¤³|Š(­?òCh# i‰“D× Fݱ̧«Y¹Ûsø ¯‡hß‚|v§Ù¨Bî*ÐTɘ[UU8óþûÀ…‹ðD ÚÙÝÝ:”ƒÞŸ|þó„åKKDk §oýÅ_d e¨âhÓ\_Õçæó®cèƒëqéT øs­K´ä#5-sJ4ä4ë¡ =MÜÓTª4šÚÝÜ^¬7(ÇWÛ}ÉAU~ÈÑ.éso¹vi&ghºë A–T:{åÊ•¹ú'µwZãñøøÉc»ËpƒÒŒÒl›¶1>:?ãZÖxØ-Wk=Íu Ùõ2”"£N©±6b‘5OE¨´jõÚ»ïþËÒñ“ˆ¶¥Ï7ê7nÞÉä ÃáH’•™j±Óòœh™cY9žõ{€•réîÚz:[ô)pPívù¡5“Íl#7“G³}R‰(Ýõ‡,È8›N{†’ÞØÏMP÷uw¶–Ž>å†äí{Ù\æh‰c!ºdŽêvÐFjcË6-¦VŒk5êU¨ú›»íL. ä”lú\,xŽØÙédÓ©BNììª'¥ÂÁƒÃ¸j™ô|$J`H?ºcf²¶éŒÕA^I‹$åŒF"/I™4vÛ;N¨š yßhÌÜÛh%£ä²ˆ–ɧå,¢ÛtÖõl74£(ô!µóbÆ.ÒÆõ†Š'³›Èp2ƒéq-6ˆ{d­÷+Ž“_ø ü¾OÆûFT ]L™¶Í~Σ¥$¿!»ö峯¡Áâ;wo4ŽíU““è§Ž]Yo2¹?Æ¥!ÿ‡‚‡²™ÉR‰Ü‘@‰°7«oªD  t„È ÍÖŽÀòµJEiŽçÒ‹î/Pþu}` Aìy2(°÷¼dX3ÚÃÁ$(“â[ ç¸V2¢Q-—677Š…B§ÛåRKs)NÒ;#‘ä€?‹ÅüÖîf®^lvšbJñ=hÐJ2£˜Cp ØØ ŽaucœJÉ“ÝKYV3´|>o96U(AZ– ÅŸ=Ö ÐÊÔÕ477çBá2t“­r-/t*WÈ5Í´íl¡Úíw2)š VƺðÈ’ÍRFömƒö=R׳¼ØíöÒ¥‚Ɇos•åÐr]Ý̧sQE°ž-ЈOè0 '4yÓ)J7 I’v¶›ùyÇtºÍÝZ¥Î³Â Ûa¿wp0$&Ó@é¤ýdRÚt¡$¹}ýú‰ãÇRJæêõë3µ:É;;µÚ,K“c¨ãC´;4BFò|äÃ%„ÐgiʲM :hýïììÊC„p‚¸»»›+¡2Py¨ö3é+¦åt:úìüPBìPnoo×k„›†–Í@eOkpGÂ-¥sét´ñ8p‡ø¼}íÖ³'žnu{^JeÔF°=ß~|8a.•îõzž‰ét±T¾}û6„¶µµì•ÎHÝvâÊ ˆÁØT2ßõrŠÐoïB4Ò,„AC«/‚ºõ•Bª†ë+Õ™ÐsC?€ì#2œ1ÒJ•rÇÔB†B ™6cûI <ФA#Ë€äÝkî.+ú@¥–bhÛ÷)NôƒxDžŒz­ÖÂ\Eíu}Ï©×ë#ÃìöÔB¹l˜6AO–¼í÷¡%%!g•;kksóuˆyŽ"¡yÃp'Mr–e¡íD`IÓ± ×.W«¾ŽÇšÝh{ A§å´6q<ÏðÐnr #÷LÓl4Є3 #›EU>òRdY€¶* k£¥µäe+¥(š¦fR²¦ª²$Dhߟ>¥9ÒË ÇŽ-Arbiš lHTwy)-e`–ÑpeBµ”ïµw%IŒgÐŽ˜o¯,þпoB)*)2'óº>6M#—R<Û];­´Âoþȱ+×ïÌ->µÛïrÉ2tFVî\¿ùì'>Ùn·!ñA1•Îf4c É-¨²K7*Å’ª ¡öÔa&—Õu`¢mŠåûû8H$„qsœn š8|ñ|4@D˜VRhS"êcí÷c£A}&™Ú¨Š¨8¤®PÎd¡„„×NdYUÓ(1 Håzއ µŒfàäópŒ2ÝßM‡ Üë wg“Þe’0|GN¥<Ç‚wtC È‚’‡nÆK’u“(ñÐluÚ ñJjÂw\ÏóË3Õ­ xnÑóœ€@;òùQ¸»Û9~âä;ï¾ßX8b&ƒ¸Úë.Mê¦h/HQÔ#.•Ÿ¬¹?,ü¾?Ï÷EKæ9/pY‰uÌaš!ÎüýßýÑoý–è9+çßøÖ JÞ\Û\Xœ{ë+WnÞ:îµ[w  ȤÒ1&¸„T€ÚB$Ç ê6öq!º?({çÃé¶ãôdäà^ï!t2)¨èƒO‰¦¼RMÝ!œþ4™wL'.UÈ M¯Y£Å£"ñXêý+ÚIòOÜzŽöBßëà˜œÚg˜ '\÷СÂù{¡&k‹Èx·€o„51úÉ Ø³Cþ阉ÈÉâž©P¼Î~4N|DN‡~ÚaÐCcû¦¤*J~Áéßz¯/iR'Å0Æ)–Jq¦ü¢=X@OÇÀ~˜JBLM˜š)ÿñôëLåÉý_ħ¨$»’‡?ý穽Œvßrû½Ž ÔXŠÇÒ¢…<ˆÆÉ ¸eHLÕúÉÔ~Æ™ø™JÒîƒç‰dâÁaᙌ=ÜõÀ}É:¤÷&¢$—NÂCN]¹¯é+§Ò9µÃðßW=O÷}à“½Æ>ösÆë{ï´÷+Äßç áÑ@L}÷àÎñå¾ß¿ƒ§ïÒ¡Q:}[òp'2ñ ?81goôæ|q¢Mýš œ%¥üŽ«OöºïÿJŸd-ö²ÒŸu˜¨èàÂä»à ‡‡¤Ÿ¤ âƒYæþ8y¼ù}/Äþ:ëÝþç~ßÈ}_hmB;6—ËA›6iÒ€ ‰ÅÅJvF­ÜµÓJùCD·nÝ|úOïlmÐD¸X¯=}ìhŠ–/]øæ7¿I^]Ûi4j««?…û~ìcËÆ›ˆ@#’Œ*BùJŧ‰Çæ4 ë>™¦èy`2×u…Uì'ç Þ’ÑMÓˆxd×¶(ß®”K7nÜ8}ú4 Ý`0èt:›››ËËË·»£R1}öÜ ÜåÓŸþ4Ü@è2YäOî Ãq4óQx\ÇÂÂÂÂÂÂÂÂBÒtça°e3bƒ–ͦ4EõÚ çY–!C#ŸCn2]'ð,ƒcéï}ï{_üⓞ¾7ß|8reeáàÚVkv¶²¼üfÏ<ó Xää)îL@ˆ»yž¡p× ÖG%}lz>öòi? ¶¶¶E¹wïžïû’$¡yÃ{³¢ÑÊ?Ž£)2›Rv¶7ðƒüä'?Y]]™™yýõ×á[¯½öÂÁwî-..¼ùæ[pSÀA°|Œ”£‘–° šF÷ÆçãEXXXXXXXXX_º>>ô¼ @„)E„ãf«x·²²’øIÛívLÓ‡ IH"p8øío0¾\ȲìÙ³g¶ZíR¹xþì…þ˧N‡ÈÇ1éxv&…ü¥EðE³”À‰òôþoñˆ-¶Øb‹-¶Øb‹í£ZclêhÆ2lÓ6Ê¥ pZs»õÔ±£+Ë«¶k‰¼¤œùòŸüÏÿìσÈÿÕ_ùµÛ·o"Ç´ÅâøC€¿d°ø•W^‘ey‚ƒ[›åêÌ¥ Ë$M|úô¯’Èïí®ïÓ8Èp4<,Z"ö‹öÜ-¶Øb‹-¶ØbûË`5U?ô|>W´lCd‚ oݸ½tâØÙ7Îù¡Ç³PÜï~þ÷ k Wþý¾?ÖŒÆâò¥†o¼ñÆ‹/¾xíÚ5I’–——³Ùlˆä½µ; ‹‹o¿õ–çyÇ+ÇqÈÍòžHmçIêѼÆ`aaaaaaaaý›¥Ç«ƒrÂÕZˆ"À»=ýô¯¿Ž|‹ú>ÏÇûîØ60ÃeÈ«(ƒМ;wîùçŸOzWVV4M[]]E8¸±¾V¯×á³S§N% Š“ëíϤ‘ïM,,,,,,,,¬B#U=ô<ÐÚp8œo4àøü¹s/^Úëv»À®ë², ý~?•J†!É©ñx D÷Ýï~·×ëÁ·Þ{ï=]×/]º„q ëÉÕÃpв¬JµêùqÜÒ±c;;;–åäóYÀ6UÇ-,ÌÃIY–Ç4Ôt4X|äÈ‘»wïÂ5¦iž?^ÅÉÜAŒƒXXXXXXXXO¦†ƒyB¼ó¤’J]ºxñèÑ£@k’„¶†¯Õj†a ƒjµ Ø—l¹Î°<°ÜÅ‹?÷¹ÏÁ§püÓŸþt4]¸ïJ²qo½>[]¾´Á©O> –BÛûEhG.ša)—h–:ذ[l±Å[l±ÅÛÇiGCíÐó’¨hºZ(ÌØ¶á:¾ r'jÚP‘ÓCÂ5AàF! üæ{!ò ‡Ã—_~ùK_úR²ÁÝ™3gfff&KIÖ×7ëõêòòj§N= –¢°{»CRpL’4ÃP‚ 1²ÿ:Ö¿GªªMíÙ}`]×ÏdR,ËSñÏÿüÞ‰KׯߴmSQÒ?ûÙ»'ÌÍÕG#}f¦(ŠòÝ»·“e%/^üêW¿š ¿ôÒKpò­·Þšà`­^_Y^£èS§N¥) ì¾Ï8¦bÑ`1õ$øàÁ[l±Å[l±ýe°#U;ô<°/Žm§3©{kë‹GVW.«£‘$ŠM ‡,üôò˺¦},Ã0º®ó<ÇE…±àÎ0ØÑ ÖG¥ÑhtèyA ÃÈçó½^ïÎ;«««ŽãhÙÂdšfµZUUõ;ßùÜ._¾œÉd.\¸ðÜsÏ‘›››sssï¼óÜôĉÀ‰À|Ãáy¤i`É“}ê@Ó. ±°°°°°°°°ŸÆãñ¡ç-˪Õj¾ï¶%æº.Ð!`ß¡×Ãeû·êv»ÅbñÖ­[Ífpðë_ÿ: DY.—¯^½ Ÿ)ŠäÇó<\k™Xžç=¦ÆÂšðØ¡çišF ˜Â1 !œ?ôzÛ¶S©T©T l4ív{8 …Ë—/?ÿüó¤ã8ðå›7ojšÆ²l²Ÿ$Ipw8ˆö7¢b‡>Æ—ÆÂÂÂÂÂÂÂÂÚÀØ¡ç3™ PY¹\^__/‹DÌ|Çz}†@zÉTÀd¼HÀïܹs/¼ðù£ýhcccmm ž—Ëåà3Ó4“ŽÀ„÷G‡“áÁb,,,,,,,¬_¬úýþ‘#GÚíöîîîg>ó8èõzKKKðï¡×+Š€,Ýn ˆ` ð¥—^"K¥|?<¸8Ñu]â~ø{™baaaaaaaa=>=¬x.‚T*¥ëz2œû!o(IR2¿¢( ¾b±¸³³óÿEåê endstream endobj 8 0 obj 131379 endobj 2 0 obj <>endobj xref 0 10 0000000000 65535 f 0000000384 00000 n 0000132051 00000 n 0000000325 00000 n 0000000188 00000 n 0000000015 00000 n 0000000141 00000 n 0000000432 00000 n 0000132029 00000 n 0000000159 00000 n trailer << /Size 10 /Root 1 0 R /Info 2 0 R >> startxref 132106 %%EOF ess-17.11/doc/getting.texi0000644005071500004540000000067413202324173012350 00000000000000The latest released version of ESS is always available on the web at: @uref{http://ess.r-project.org, ESS web page} or @uref{http://lib.stat.cmu.edu/general/ESS/, StatLib} @comment @subsection ESS subversion repository @comment @include inst_svn.texi @subsection Git for ESS development For development and experimentation on new ESS features, there is now a GitHub branch for @ESS{}, available at @uref{https://github.com/emacs-ess/ESS}. ess-17.11/doc/help-bugs.texi0000644005071500004540000001533713202324173012577 00000000000000@ESS{[BUGS]} was originally designed for use with BUGS software. Later, it evolved to support JAGS as a dialect of the BUGS language via @ESS{[JAGS]}, however, @ESS{[JAGS]} is documented in the section Help for JAGS. @ESS{[BUGS]} provides 5 features. First, BUGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in BUGS model files, command files and log files. Second, @ESS{} creates templates for the command file from the model file so that a BUGS batch process can be defined by a single file. Third, @ESS{} provides a BUGS batch script that allows @ESS{} to set BUGS batch parameters. Fourth, key sequences are defined to create a command file and submit a BUGS batch process. Lastly, interactive submission of BUGS commands is also supported. @comment node-name, next, previous, up @node ESS(BUGS)--Model files, ESS(BUGS)--Command files, ESS for BUGS, ESS for BUGS @section ESS[BUGS]--Model files Model files with the @file{.bug} extension are edited in @ESS{[BUGS]} mode if @code{(require 'ess-bugs-d)} was performed. Model files with the @file{.jag} extension are edited in @ESS{[JAGS]} mode if @code{(require 'ess-jags-d)} was performed. Three keys are bound for your use in @ESS{[BUGS]}, @kbd{F2}, @kbd{C-c C-c} and @kbd{=}. @kbd{F2} performs the same action as it does in @ESS{[SAS]}, @xref{ESS(SAS)--Function keys for batch processing}. @kbd{C-c C-c} performs the function @code{ess-bugs-next-action} which you will use a lot. Pressing it in an empty buffer for a model file will produce a template for you. @kbd{=} inserts the set operator, @code{<-}. @comment @ESS{[BUGS]} supports "replacement" variables. These variables are @comment created as part of the template, i.e. with the first press of @kbd{C-c C-c} @comment in an empty buffer. They are named by all capitals and start @comment with @code{%}: @code{%N}, @code{%DATA}, @code{%INIT}, @code{%MONITOR} and @comment @code{%STATS}. When you are @comment finished editing your model file, pressing @kbd{C-c C-c} will perform @comment the necessary replacements and build your command file for you. @comment @comment The @code{%DATA} variable appears in the line @code{data in "%DATA";}. On the @comment second press of @kbd{C-c C-c}, @code{%DATA} will be replaced by the model file name @comment except it will have the @file{.dat} extension. If your data file is named @comment something else, then change @code{%DATA} in the template to the appropriate @comment file name and no replacement will occur. @comment @comment The @code{%INIT} variable appears in the line @code{inits in "%INIT";}. @comment On the second press of @kbd{C-c C-c}, @code{%INIT} will be @comment replaced by the model file name except it will have the .in extension. @comment If your model will be generating it's own initial values, place a @comment comment character, @code{#}, at the beginning of the line. Or, if your init @comment file is named something else, then change @code{%INIT} in the template to the @comment appropriate file name. @comment @comment The @code{%N} variable appears in the line @code{const N = 0;#%N}. @comment Although it is commented, it is still active. Notice that later on in @comment the template you have the line @code{for (i in 1:N)}. The BUGS @comment constant @code{N} is the number of rows in your data file. When you @comment press @kbd{C-c C-c}, the data file is read and the number of lines are @comment counted (after @code{%DATA} is resolved, if necessary). The number of @comment lines replace the zero in the @code{const N = 0;} statement. @comment @comment The @code{%MONITOR} variable appears on a line by itself. Although it @comment is commented, it is still active. This line is a list of variables @comment that you want monitored. When you press @kbd{C-c C-c}, the @comment appropriate statements are created in the command file to monitor the @comment list of variables. If the line is blank, then the list is populated @comment with the variables from the @code{var} statement. @comment @comment The @code{%STATS} variable is similar to the @code{%MONITOR} variable. @comment It is a list of variables for which summary statistics will be @comment calculated. When you press @kbd{C-c C-c}, the appropriate statements @comment will be generated in your command file. @comment @comment Please note that the @code{%DATA} and @code{%INIT} variables are only @comment replaced on the second press of @kbd{C-c C-c}, but the actions for @comment @code{%N}, @code{%MONITOR} and @code{%STATS} are performed on each @comment press of @kbd{C-c C-c} if you re-visit the model file. @comment node-name, next, previous, up @node ESS(BUGS)--Command files, ESS(BUGS)--Log files, ESS(BUGS)--Model files, ESS for BUGS @section ESS[BUGS]--Command files To avoid extension name collision, @file{.bmd} is used for BUGS command files and @file{.jmd} for JAGS command files. When you have finished editing your model file and press @kbd{C-c C-c}, a command file is created if one does not already exist. @comment However, the command @comment file was created, it recognizes two "replacement" variables: @comment @code{%MONITOR} and @code{%STATS}. @comment @comment Two @code{%MONITOR} variables appears on lines by themselves. @comment Although they are commented, they are still active. Between them @comment appears the necessary statements to monitor the list of variables @comment specified in the model file. The behavior of the @code{%STATS} @comment variable is similar. @comment When you are finished editing your command file, pressing @kbd{C-c C-c} again will submit your command file as a batch job. @comment BUGS batch @comment scripts are provided for both Unix and DOS in the @file{etc} @comment sub-directory of the @ESS{} distribution. The Unix script is @comment @file{backbugs} for BUGS major version 0.6 and @file{backbug5} for @comment 0.5. The DOS script is @file{BACKBUGS.BAT} for BUGS major version 0.6 @comment only. These scripts allows @ESS{} access to BUGS batch features that @comment are not readily available with the batch scripts that come with BUGS. @comment node-name, next, previous, up @node ESS(BUGS)--Log files, , ESS(BUGS)--Command files, ESS for BUGS @section ESS[BUGS]--Log files To avoid extension name collision, @file{.bog} is used for BUGS log files. The command line generated by @ESS{} creates the @file{.bog} transcript file. @comment from the @file{.log} file when the batch process @comment completes. If you need to look at the @file{.log} file while the batch @comment process is running, it will not appear in @ESS{[BUGS]} mode. You may @comment find @kbd{F2} useful to refresh the @file{.log} if the batch process @comment over-writes or appends it. Similarly, @file{.jog} is used for JAGS log files. ess-17.11/doc/help-jags.texi0000644005071500004540000001056013202324173012554 00000000000000@ESS{[BUGS]} was originally designed for use with BUGS software. Later, it evolved to support JAGS as a dialect of the BUGS language via @ESS{[JAGS]}. Since BUGS and JAGS are quite similar, @ESS{[BUGS]} and @ESS{[JAGS]} are necessarily similar. @ESS{[JAGS]} provides 4 features. First, JAGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in JAGS model files, command files and log files. Second, @ESS{} creates templates for the command file from the model file so that a JAGS batch process can be defined by a single file. Third, @ESS{} provides a JAGS batch script that allows @ESS{} to set JAGS batch parameters. Fourth, key sequences are defined to create a command file and submit a JAGS batch process. @comment node-name, next, previous, up @node ESS(JAGS)--Model files, ESS(JAGS)--Command files, ESS for JAGS, ESS for JAGS @section ESS[JAGS]--Model files Model files with the @file{.bug} extension are edited in @ESS{[BUGS]} mode if @code{(require 'ess-bugs-d)} was performed or edited in @ESS{[JAGS]} mode if @code{(require 'ess-jags-d)}. Three keys are bound for your use in @ESS{[BUGS]}, @kbd{F2}, @kbd{C-c C-c} and @kbd{=}. @kbd{F2} performs the same action as it does in @ESS{[SAS]}, @xref{ESS(SAS)--Function keys for batch processing}. @kbd{C-c C-c} performs the function @code{ess-bugs-next-action} which you will use a lot. Pressing it in an empty buffer for a model file will produce a template for you. @kbd{=} inserts the set operator, @code{<-}. @ESS{[JAGS]} does not support "replacement" variables which were part of @ESS{[BUGS]}. Although, "replacement" variables are an extremely convenient feature, creating the elisp code for their operation was challenging. So, a more elisp-ish approach was adopted for @ESS{[JAGS]}: elisp local variables. These variables are created as part of the template, i.e. with the first press of @kbd{C-c C-c} in an empty buffer. For your @file{.bug} file, they are named @code{ess-jags-chains}, @code{ess-jags-monitor}, @code{ess-jags-thin}, @code{ess-jags-burnin} and @code{ess-jags-update}; they appear in the @code{Local Variables} section. When you are finished editing your model file, pressing @kbd{C-c C-c} will perform the necessary actions to build your command file for you. The @code{ess-jags-chains} variable is the number of chains that you want to initialize and sample from; defaults to 1. The @code{ess-jags-monitor} variable is a list of variables that you want monitored: encase each variable in double quotes. When you press @kbd{C-c C-c}, the appropriate statements are created in the command file to monitor the list of variables. By default, no variables are explicitly monitored which means JAGS will implicitly monitor all ``default'' variables. The @code{ess-jags-thin} variable is the thinning parameter. By default, the thinning parameter is set to 1, i.e. no thinning. The @code{ess-jags-burnin} variable is the number of initial samples to discard. By default, the burnin parameter is set to 10000. The @code{ess-jags-update} variable is the number of post-burnin samples to keep. By default, the update parameter is set to 10000. Both @code{ess-jags-burnin} and @code{ess-jags-update} are multiplied by @code{ess-jags-thin} since JAGS does not do it automatically. @comment node-name, next, previous, up @node ESS(JAGS)--Command files, ESS(JAGS)--Log files, ESS(JAGS)--Model files, ESS for JAGS @section ESS[JAGS]--Command files To avoid extension name collision, @file{.bmd} is used for BUGS command files and @file{.jmd} for JAGS command files. For your @file{.jmd} file, there is only one variable, @code{ess-jags-command}, in the @code{Local Variables} section. When you have finished editing your model file and press @kbd{C-c C-c}, a command file is created if one does not already exist. When you are finished editing your command file, pressing @kbd{C-c C-c} again will submit your command file as a batch job. The @code{ess-jags-command} variable allows you to specify a different JAGS program to use to run your model; defaults to ``jags''. @comment node-name, next, previous, up @node ESS(JAGS)--Log files, , ESS(JAGS)--Command files, ESS for JAGS @section ESS[JAGS]--Log files The @file{.jog} extension is used for JAGS log files. You may find @kbd{F2} useful to refresh the @file{.jog} if the batch process over-writes or appends it. ess-17.11/doc/help-s.texi0000644005071500004540000003411013202324173012067 00000000000000@c @comment node-name, next, previous, up @c @node ESS for S @c @chapter Overview of ESS features for the S family @node ESS(S)--Editing files, iESS(S)--Inferior ESS processes, ESS for S, ESS for S @comment node-name, next, previous, up -- don't use @ESS .. @section ESS[S]--Editing files @ESS{[S]} is the mode for editing S language files. This mode handles: @itemize @minus @item proper indenting, generated by both [Tab] and [Return]. @item color and font choices based on syntax. @item ability to send the contents of an entire buffer, a highlighted region, an S function, or a single line to an inferior S process, if one is currently running. @item ability to switch between processes which would be the target of the buffer (for the above). @item The ability to request help from an S process for variables and functions, and to have the results sent into a separate buffer. @item completion of object names and file names. @end itemize @ESS{[S]} mode should be automatically turned on when loading a file with the suffices found in ess-site (*.R, *.S, *.s, etc). Alternatively, type @kbd{M-x R-mode} to put the current buffer into R mode. However, one will have to start up an inferior process to take advantage of the interactive features. @node iESS(S)--Inferior ESS processes, ESS-help--assistance with viewing help, ESS(S)--Editing files, ESS for S @comment node-name, next, previous, up @section iESS[S]--Inferior ESS processes iESS (inferior ESS) is the mode for interfacing with active statistical processes (programs). This mode handles: @itemize @minus @item proper indenting, generated by both [Tab] and [Return]. @item color and font highlighting based on syntax. @item ability to resubmit the contents of a multi-line command to the executing process with a single keystroke [RET]. @item The ability to request help from the current process for variables and functions, and to have the results sent into a separate buffer. @item completion of object names and file names. @item interactive history mechanism. @item transcript recording and editing. @end itemize To start up iESS mode, use: @example M-x S+3 M-x S4 M-x S+5 M-x S+6 M-x R @end example (for S-PLUS 3.x, S4, S+5, S+6 or S+7, and R, respectively. This assumes that you have access to each). Usually the site will have defined one of these programs (by default S+6) to the simpler name: M-x S @cindex command line arguments In the (rare) case that you wish to pass command line arguments to the starting S+6 process, set the variable @code{inferior-Splus-args}. Note that R has some extremely useful command line arguments. For example, @code{--vanilla} will ensure R starts up without loading in any init files. To enter a command line argument, call R using a "prefix argument", by C-u M-x R and when ESS prompts for "Starting Args ? ", enter (for example): @code{--vanilla} Then that R process will be started up using @code{R --vanilla}. If you wish to always call R with certain arguments, set the variable @code{inferior-R-args} accordingly. @comment Menubar access to other versions of R and Sqpe If you have other versions of R or S-Plus available on the system, ESS is also able to start those versions. How this exactly works depend on which OS you are using, as described in the following paragraphs. The general principle, regardless of OS, is that ESS searches the paths listed in the variable @code{exec-path} for R binaries. If ESS cannot find your R binaries, on Unix you can change the unix environment variable @code{PATH}, as this variable is used to set @code{exec-path}. R on Unix systems: If you have "R-1.8.1" on your @code{exec-path}, it can be started using @kbd{M-x R-1.8.1}. By default, ESS will find versions of R beginning "R-1" or "R-2". If your versions of R are called other names, consider renaming them with a symbolic link or change the variable @code{ess-r-versions}. To see which functions have been created for starting different versions of R, type @kbd{M-x R-} and then hit [Tab]. These other versions of R can also be started from the "ESS->Start Process->Other" menu. R on Windows systems: If you have "rw1081" on your @code{exec-path}, it can be started using @kbd{M-x rw1081}. By default, ESS will find versions of R located in directories parallel to the version of R in your @code{PATH}. If your versions of R are called other names, you will need to change the variable @code{ess-rterm-versions}. To see which functions have been created for starting different versions of R, type @kbd{M-x rw} and then hit [Tab]. These other versions of R can also be started from the "ESS->Start Process->Other" menu. Once ESS has found these extra versions of R, it will then create a new function, called @kbd{M-x R-newest}, which will call the newest version of R that it found. (ESS examines the date in the first line of information from @code{R --version} to determine which is newest.) S on Unix systems: If you have "Splus7" on your @code{exec-path}, it can be started using @kbd{M-x Splus7}. By default, ESS will find all executables beginning "Splus" on your path. If your versions of S are called other names, consider renaming them with a symbolic link or change the variable @code{ess-s-versions}. To see which functions have been created for starting different versions of Splus, type @kbd{M-x Splus} and then hit [Tab]. These other versions of Splus can also be started from the "ESS->Start Process->Other" menu. A second mechanism is also available for running other versions of Splus. The variable @code{ess-s-versions-list} is a list of lists; each sublist should be of the form: (DEFUN-NAME PATH ARGS). DEFUN-NAME is the name of the new emacs function you wish to create to start the new S process; PATH is the full path to the version of S you want to run; ARGS is an optional string of command-line arguments to pass to the S process. Here is an example setting: @example (setq ess-s-versions-list '( ("Splus64" "/usr/local/bin/Splus64") ("Splus64-j" "/usr/local/bin/Splus64" "-j"))) @end example which will then allow you to do @kbd{M-x Splus64-j} to start Splus64 with the corresponding command line arguments. If you change the value of either @code{ess-s-versions} or @code{ess-s-versions-list}, you should put them in your .emacs before ess-site is loaded, since the new emacs functions are created when ESS is loaded. Sqpe (S-Plus running inside an emacs buffer) on Windows systems: If you have an older version of S-Plus (S-Plus 6.1 for example) on your system, ir can be started inside an emacs buffer with @kbd{M-x splus61}. By default, ESS will find versions of S-Plus located in the installation directories that Insightful uses by default. If your versions of S-Plus are anywhere else, you will need to change the variable @code{ess-SHOME-versions}. To see which functions have been created for starting different versions of S-Plus, type @kbd{M-x spl} and then hit [Tab]. These other versions of S-Plus can also be started from the "ESS->Start Process->Other" menu. @node ESS-help--assistance with viewing help, Philosophies for using ESS(S), iESS(S)--Inferior ESS processes, ESS for S @comment node-name, next, previous, up @section ESS-help--assistance with viewing help ESS has built-in facilities for viewing help files from S. @xref{Help}. @node Philosophies for using ESS(S), Scenarios for use (possibilities--based on actual usage), ESS-help--assistance with viewing help, ESS for S @section Philosophies for using ESS[S] The first is preferred, and configured for. The second one can be retrieved again, by changing emacs variables. 1: (preferred by the current group of developers): The source code is real. The objects are realizations of the source code. Source for EVERY user modified object is placed in a particular directory or directories, for later editing and retrieval. 2: (older version): S objects are real. Source code is a temporary realization of the objects. Dumped buffers should not be saved. _We_strongly_discourage_this_approach_. However, if you insist, add the following lines to your .emacs file: @example (setq ess-keep-dump-files 'nil) (setq ess-delete-dump-files t) (setq ess-mode-silently-save nil) @end example The second saves a small amount of disk space. The first allows for better portability as well as external version control for code. @node Scenarios for use (possibilities--based on actual usage), Customization Examples and Solutions to Problems, Philosophies for using ESS(S), ESS for S @section Scenarios for use (possibilities--based on actual usage) We present some basic suggestions for using ESS to interact with S. These are just a subset of approaches, many better approaches are possible. Contributions of examples of how you work with ESS are appreciated (especially since it helps us determine priorities on future enhancements)! (comments as to what should be happening are prefixed by "##"). @display 1: ## Data Analysis Example (source code is real) ## Load the file you want to work with C-x C-f myfile.s ## Edit as appropriate, and then start up S-PLUS 3.x M-x S+3 ## A new buffer *S+3:1* will appear. Splus will have been started ## in this buffer. The buffer is in iESS [S+3:1] mode. ## Split the screen and go back to the file editing buffer. C-x 2 C-x b myfile.s ## Send regions, lines, or the entire file contents to S-PLUS. For regions, ## highlight a region with keystrokes or mouse and then send with: C-c C-r ## Re-edit myfile.s as necessary to correct any difficulties. Add ## new commands here. Send them to S by region with C-c C-r, or ## one line at a time with C-c C-n. ## Save the revised myfile.s with C-x C-s. ## Save the entire *S+3:1* interaction buffer with C-c C-s. You ## will be prompted for a file name. The recommended name is ## myfile.St. With the *.St suffix, the file will come up in ESS ## Transcript mode the next time it is accessed from Emacs. 2: ## Program revision example (source code is real) ## Start up S-PLUS 3.x in a process buffer (this will be *S+3:1*) M-x S+3 ## Load the file you want to work with C-x C-f myfile.s ## edit program, functions, and code in myfile.s, and send revised ## functions to S when ready with C-c C-f ## or highlighted regions with C-c C-r ## or individual lines with C-c C-n ## or load the entire buffer with C-c C-l ## save the revised myfile.s when you have finished C-c C-s 3: ## Program revision example (S object is real) ## Start up S-PLUS 3.x in a process buffer (this will be *S+3:1*) M-x S+3 ## Dump an existing S object my.function into a buffer to work with C-c C-d my.function ## a new buffer named yourloginname.my.function.S will be created with ## an editable copy of the object. The buffer is associated with the ## pathname /tmp/yourloginname.my.function.S and will amlost certainly not ## exist after you log off. ## enter program, functions, and code into work buffer, and send ## entire contents to S-PLUS when ready C-c C-b ## Go to *S+3:1* buffer, which is the process buffer, and examine ## the results. C-c C-y ## The sequence C-c C-y is a shortcut for: C-x b *S+3:1* ## Return to the work buffer (may/may not be prefixed) C-x C-b yourloginname.my.function.S ## Fix the function that didn't work, and resubmit by placing the ## cursor somewhere in the function and C-c C-f ## Or you could've selected a region (using the mouse, or keyboard ## via setting point/mark) and C-c C-r ## Or you could step through, line by line, using C-c C-n ## Or just send a single line (without moving to the next) using C-c C-j ## To fix that error in syntax for the "rchisq" command, get help ## by C-c C-v rchisq 4: Data Analysis (S object is real) ## Start up S-PLUS 3.x, in a process buffer (this will be *S+3:1*) M-x S+3 ## Work in the process buffer. When you find an object that needs ## to be changed (this could be a data frame, or a variable, or a ## function), dump it to a buffer: C-c C-d my.cool.function ## Edit the function as appropriate, and dump back in to the ## process buffer C-c C-b ## Return to the S-PLUS process buffer C-c C-y ## Continue working. ## When you need help, use C-c C-v rchisq ## instead of entering: help("rchisq") @end display @node Customization Examples and Solutions to Problems, , Scenarios for use (possibilities--based on actual usage), ESS for S @section Customization Examples and Solutions to Problems 1. Suppose that you are primarily an SPLUS 3.4 user, occasionally using S version 4, and sick and tired of the buffer-name *S+3* we've stuck you with. Simply edit the "ess-dialect" alist entry in the ess-sp3-d.el and ess-s4-d.el files to be "S" instead of "S4" and "S+3". This will ensure that all the inferior process buffer names are "*S*". 2. Suppose that you WANT to have the first buffer name indexed by ":1", in the same manner as your S-PLUS processes 2,3,4, and 5 (for you heavy simulation people). Then add after your (require 'ess-site) or (load "ess-site") command in your .emacs file, the line: @example (setq ess-plain-first-buffername nil) @end example 3. Fontlocking sometimes fails to behave nicely upon errors. When Splus dumps, a mis-matched " (double-quote) can result in the wrong font-lock face being used for the remainder of the buffer. Solution: add a " at the end of the "Dumped..." statement, to revert the font-lock face back to normal. 4. When you change directory within a *R* or *S* session using the setwd() command, emacs does not recognise that you have changed the current directory. Solution: Use @kbd{M-x ess-change-directory}. This will prompt you for the directory to change to. It will then change directory within the *S* buffer, and also update the emacs variable @code{default-directory}. Alternatively, if you have already executed setwd(), press @kbd{M-RET} within the *S* buffer so that Emacs can update @code{default-directory}. ess-17.11/doc/help-sas.texi0000644005071500004540000007043713202324173012427 00000000000000@ESS{[SAS]} was designed for use with @SAS{}. It is descended from emacs macros developed by John Sall for editing @SAS{} programs and @code{SAS-mode} by Tom Cook. Those editing features and new advanced features are part of @ESS{[SAS]}. The user interface of @ESS{[SAS]} has similarities with @ESS{[S]} and the @SAS{} Display Manager. @comment node-name, next, previous, up @node ESS(SAS)--Design philosophy, ESS(SAS)--Editing files, ESS for SAS, ESS for SAS @section ESS[SAS]--Design philosophy @ESS{[SAS]} was designed to aid the user in writing and maintaining @SAS{} programs, such as @file{@var{foo}.sas}. Both interactive and batch submission of @SAS{} programs is supported. @ESS{[SAS]} was written with two primary goals. @enumerate @item The emacs text editor provides a powerful and flexible development environment for programming languages. These features are a boon to all programmers and, with the help of @ESS{[SAS]}, to @SAS{} users as well. @item Although a departure from @SAS{} Display Manager, @ESS{[SAS]} provides similar key definitions to give novice @ESS{[SAS]} users a head start. Also, inconvenient @SAS{} Display Manager features, like remote submission and syntax highlighting, are provided transparently; appealing to advanced @ESS{[SAS]} users. @end enumerate @comment node-name, next, previous, up @node ESS(SAS)--Editing files, ESS(SAS)--TAB key, ESS(SAS)--Design philosophy, ESS for SAS @section ESS[SAS]--Editing files @ESS{[SAS]} is the mode for editing @SAS{} language files. This mode handles: @itemize @bullet @item proper indenting, generated by both @key{TAB} and @key{RET}. @item color and font choices based on syntax. @item ability to save and submit the file you are working on as a batch @SAS{} process with a single keypress and to continue editing while it is runs in the background. @item capability of killing the batch @SAS{} process through the @file{*shell*} buffer or allow the @SAS{} process to keep on running after you exit emacs. @item single keypress navigation of @file{.sas}, @file{.log} and @file{.lst} files (@file{.log} and @file{.lst} files are refreshed with each keypress). @item ability to send the contents of an entire buffer, a highlighted region, or a single line to an interactive @SAS{} process. @item ability to switch between processes which would be the target of the buffer (for the above). @end itemize @ESS{[SAS]} is automatically turned on when editing a file with a @file{.sas} suffix (or other extension, if specified via @code{auto-mode-alist}). The function keys can be enabled to use the same function keys that the @SAS{} Display Manager does. The interactive capabilities of @ESS{} require you to start an inferior @SAS{} process with @wkbd{M-x SAS} (@xref{iESS(SAS)--Interactive SAS processes}.) At this writing, the indenting and syntax highlighting are generally correct. Known issues: for multiple line @code{*} or @code{%*} comments, only the first line is highlighted; for @file{.log} files, only the first line of a @code{NOTE:}, @code{WARNING:} or @code{ERROR:} message is highlighted; unmatched single/double quotes in @code{CARDS} data lines are @strong{NOT} ignored; in an iterative @code{DO} statement, @code{TO} and @code{BY} are not highlighted. @comment node-name, next, previous, up @node ESS(SAS)--TAB key, ESS(SAS)--Batch SAS processes, ESS(SAS)--Editing files, ESS for SAS @section ESS[SAS]--@key{TAB} key Two options. The @key{TAB} key is bound by default to @code{sas-indent-line}. This function is used to syntactically indent @SAS{} code so @code{PROC} and @code{RUN} are in the left margin, other statements are indented @code{sas-indent-width} spaces from the margin, continuation lines are indented @code{sas-indent-width} spaces in from the beginning column of that statement. This is the type of functionality that emacs provides in most programming language modes. This functionality is activated by placing the following line in your initialization file prior to a @code{require}/@code{load}: @example (setq ess-sas-edit-keys-toggle nil) @end example @ESS{} provides an alternate behavior for @key{TAB} that makes it behave as it does in @SAS{} Display Manager, i.e. move the cursor to the next stop. The alternate behavior also provides a "TAB" backwards, @wkbd{C-@key{TAB}}, that moves the cursor to the stop to the left and deletes any characters between them. This functionality is obtained by placing the following line in your initialization file prior to a @code{require}/@code{load}: @example (setq ess-sas-edit-keys-toggle t) @end example Under the alternate behavior, @key{TAB} is bound to @wkbd{M-x tab-to-tab-stop} and the stops are defined by @code{ess-sas-tab-stop-list}. @comment node-name, next, previous, up @node ESS(SAS)--Batch SAS processes, ESS(SAS)--Function keys for batch processing, ESS(SAS)--TAB key, ESS for SAS @section ESS[SAS]--Batch SAS processes Submission of a @SAS{} batch job is dependent on your environment. @code{ess-sas-submit-method} is determined by your operating system and your shell. It defaults to @code{'sh} unless you are running Windows or Mac Classic. Under Windows, it will default to @code{'sh} if you are using a @UNIX{}-imitating shell; otherwise @code{'ms-dos} for an @acronym{MS-DOS} shell. On macOS, it will default to @code{'sh}, but under Mac Classic, it defaults to @code{'apple-script}. You will also set this to @code{'sh} if the @SAS{} batch job needs to run on a remote machine rather than your local machine. This works transparently if you are editing the remote file via ange-ftp/EFS or tramp. Note that @code{ess-sas-shell-buffer-remote-init} is a Local Variable that defaults to @code{"ssh"} which will be used to open the buffer on the remote host and it is assumed that no password is necessary, i.e. you are using @code{ssh-agent}/@code{ssh-add} or the equivalent (see the discussion about Local Variables below if you need to change the default). However, if you are editing the file locally and transferring it back and forth with Kermit, you need some additional steps. First, start Kermit locally before remotely logging in. Open a local copy of the file with the @code{ess-kermit-prefix} character prepended (the default is @code{"#"}). Execute the command @wkbd{M-x ess-kermit-get} which automatically brings the contents of the remote file into your local copy. If you transfer files with Kermit manually in a @file{*shell*} buffer, then note that the Kermit escape sequence is @wkbd{C-q C-\ c} rather than @wkbd{C-\ c} which it would be in an ordinary terminal application, i.e. not in an emacs buffer. Lastly, note that the remote Kermit command is specified by @code{ess-kermit-command}. The command used by the @code{SUBMIT} function key (@key{F3} or @key{F8}) to submit a batch @SAS{} job, whether local or remote, is @code{ess-sas-submit-command} which defaults to @code{sas-program}. @code{sas-program} is @code{"invoke SAS using program file"} for Mac Classic and @code{"sas"} otherwise. However, you may have to alter @code{ess-sas-submit-command} for a particular program, so it is defined as buffer-local. Conveniently, it can be set at the end of the program: @example endsas; Local variables: ess-sas-submit-command: "sas8" End: @end example The command line is also made of @code{ess-sas-submit-pre-command}, @code{ess-sas-submit-post-command} and @code{ess-sas-submit-command-options} (the last of which is also buffer-local). Here are some examples for your @initfile{} file (you may also use @wkbd{M-x customize-variable}): @example ;'sh default (setq ess-sas-submit-pre-command "nohup") ;'sh default (setq ess-sas-submit-post-command "-rsasuser &") ;'sh example (setq-default ess-sas-submit-command "/usr/local/sas/sas") ;'ms-dos default (setq ess-sas-submit-pre-command "start") ;'ms-dos default (setq ess-sas-submit-post-command "-rsasuser -icon") ;Windows example (setq-default ess-sas-submit-command "c:/progra~1/sas/sas.exe") ;Windows example (setq-default ess-sas-submit-command "c:\\progra~1\\sas\\sas.exe") @end example There is a built-in delay before a batch @SAS{} job is submitted when using a @UNIX{}-imitating shell under Windows. This is necessary in many cases since the shell might not be ready to receive a command. This delay is currently set high enough so as not to be a problem. But, there may be cases when it needs to be set higher, or could be set much lower to speed things up. You can over-ride the default in your @initfile{} file by: @example (setq ess-sleep-for 0.2) @end example For example, @code{(setq ess-sas-global-unix-keys t)} keys shown, @code{(setq ess-sas-global-pc-keys t)} in parentheses; @ESS{[SAS]} function keys are presented in the next section. Open the file you want to work with @wkbd{C-x C-f foo.sas}. @file{@var{foo}.sas} will be in @ESS{[SAS]} mode. Edit as appropriate, then save and submit the batch @SAS{} job. @example @key{F3} (@key{F8}) @end example The job runs in the @file{*shell*} buffer while you continue to edit @file{@var{foo}.sas}. If @code{ess-sas-submit-method} is @code{'sh}, then the message buffer will display the shell notification when the job is complete. The @code{'sh} setting also allows you to terminate the @SAS{} batch job before it is finished. @example @key{F8} (@key{F3}) @end example Terminating a @SAS{} batch in the @file{*shell*} buffer. @example kill @var{PID} @end example You may want to visit the @file{.log} (whether the job is still running or it is finished) and check for error messages. The @file{.log} will be refreshed and you will be placed in it's buffer. You will be taken to the first error message, if any. @example @key{F5} (@key{F6}) @end example Goto the next error message, if any. @example @key{F5} (@key{F6}) @end example Now, @samp{refresh} the @file{.lst} and go to it's buffer. @example @key{F6} (@key{F7}) @end example If you wish to make changes, go to the @file{.sas} file with. @example @key{F4} (@key{F5}) @end example Make your editing changes and submit again. @example @key{F3} (@key{F8}) @end example @comment node-name, next, previous, up @node ESS(SAS)--Function keys for batch processing, iESS(SAS)--Interactive SAS processes, ESS(SAS)--Batch SAS processes, ESS for SAS @section ESS[SAS]--Function keys for batch processing The setup of function keys for @SAS{} batch processing is unavoidably complex, but the usage of function keys is simple. There are five distinct options: Option 1 (default). Function keys in @ESS{[SAS]} are not bound to elisp commands. This is in accordance with the GNU Elisp Coding Standards (@acronym{GECS}) which do not allow function keys to be bound so that they are available to the user. Options 2-5. Since @acronym{GECS} does not allow function keys to be bound by modes, these keys are often unused. So, @ESS{[SAS]} provides users with the option of binding elisp commands to these keys. Users who are familiar with @SAS{} will, most likely, want to duplicate the function key capabilities of the @SAS{} Display Manager. There are four options (noted in parentheses). @enumerate a @item @SAS{} Display Manager has different function key definitions for @UNIX{} (2, 4) and Windows (3, 5); @ESS{[SAS]} can use either. @item The @ESS{[SAS]} function key definitions can be active in all buffers (global: 4, 5) or limited (local: 2, 3) only to buffers with files that are associated with @ESS{[SAS]} as specified in your @code{auto-mode-alist}. @end enumerate The distinction between local and global is subtle. If you want the @ESS{[SAS]} definitions to work when you are in the @file{*shell*} buffer or when editing files other than the file extensions that @ESS{[SAS]} recognizes, you will most likely want to use the global definitions. If you want your function keys to understand @SAS{} batch commands when you are editing @SAS{} files, and to behave normally when editing other files, then you will choose the local definitions. The option can be chosen by the person installing @ESS{} for a site or by an individual. @enumerate a @item For a site installation or an individual, place @strong{ONLY ONE} of the following lines in your initialization file prior to a @code{require}/@code{load}. @ESS{[SAS]} function keys are available in @ESS{[SAS]} if you choose either 2 or 3 and in all modes if you choose 4 or 5: @example ;;2; (setq ess-sas-local-unix-keys t) ;;3; (setq ess-sas-local-pc-keys t) ;;4; (setq ess-sas-global-unix-keys t) ;;5; (setq ess-sas-global-pc-keys t) @end example The names @code{-unix-} and @code{-pc-} have nothing to do with the operating system that you are running. Rather, they mimic the definitions that the @SAS{} Display Manager uses by default on those platforms. @item If your site installation has configured the keys contrary to your liking, then you must call the appropriate function. @example (load "ess-site") ;; local-unix-keys (ess-sas-global-pc-keys) @end example @end enumerate Finally, we get to what the function keys actually do. You may recognize some of the nicknames as @SAS{} Display Manager commands (they are in all capitals). @multitable {123456} {123456} {really-really-really-really-really-really-really-really-really-really-long} @item @UNIX{} @tab @PC @tab Nickname @item @key{F2} @tab @key{F2} @tab @samp{refresh} @item @tab @tab revert the current buffer with the file of the same name if the file is newer than the buffer @item @key{F3} @tab @key{F8} @tab @code{SUBMIT} @item @tab @tab save the current @file{.sas} file (which is either the @file{.sas} file in the current buffer or the @file{.sas} file associated with the @file{.lst} or @file{.log} file in the current buffer) and submit the file as a batch @SAS{} job @item @key{F4} @tab @key{F5} @tab @code{PROGRAM} @item @tab @tab switch buffer to @file{.sas} file @item @key{F5} @tab @key{F6} @tab @code{LOG} @item @tab @tab switch buffer to @file{.log} file, @samp{refresh} and goto next error message, if any @item @key{F6} @tab @key{F7} @tab @code{OUTPUT} @item @tab @tab switch buffer to @file{.lst} file and @samp{refresh} @item @key{F7} @tab @key{F4} @tab @samp{filetype-1} @item @tab @tab switch buffer to @samp{filetype-1} (defaults to @file{.txt}) file and @samp{refresh} @item @key{F8} @tab @key{F3} @tab @samp{shell} @item @tab @tab switch buffer to @file{*shell*} @item @key{F9} @tab @key{F9} @tab @code{VIEWTABLE} @item @tab @tab open an interactive @code{PROC FSEDIT} session on the @SAS{} dataset near point @item @key{F10} @tab @key{F10} @tab toggle-log @item @tab @tab toggle @ESS{[SAS]} for @file{.log} files; useful for certain debugging situations @item @key{F11} @tab @key{F11} @tab @samp{filetype-2} @item @tab @tab switch buffer to @samp{filetype-2} (defaults to @file{.dat}) file and @samp{refresh} @item @key{F12} @tab @key{F12} @tab viewgraph @item @tab @tab open a @code{GSASFILE} near point for viewing either in emacs or with an external viewer @item @kbd{C-@key{F1}} @tab @kbd{C-@key{F1}} @tab rtf-portrait @item @tab @tab create an @sc{MS RTF} portrait file from the current buffer with a file extension of @file{.rtf} @item @kbd{C-@key{F2}} @tab @kbd{C-@key{F2}} @tab rtf-landscape @item @tab @tab create an @sc{MS RTF} landscape file from the current buffer with a file extension of @file{.rtf} @item @kbd{C-@key{F3}} @tab @kbd{C-@key{F8}} @tab submit-region @item @tab @tab write region to @file{ess-temp.sas} and submit @item @kbd{C-@key{F5}} @tab @kbd{C-@key{F6}} @tab append-to-log @item @tab @tab append @file{ess-temp.log} to the current @file{.log} file @item @kbd{C-@key{F6}} @tab @kbd{C-@key{F7}} @tab append-to-output @item @tab @tab append @file{ess-temp.lst} to the current @file{.lst} file @item @kbd{C-@key{F9}} @tab @kbd{C-@key{F9}} @tab @code{INSIGHT} @item @tab @tab open an interactive @code{PROC INSIGHT} session on the @SAS{} dataset near point @item @kbd{C-@key{F10}} @tab @kbd{C-@key{F10}} @tab toggle-listing @item @tab @tab toggle @ESS{[SAS]} for @file{.lst} files; useful for toggling read-only @end multitable @code{SUBMIT}, @code{PROGRAM}, @code{LOG} and @code{OUTPUT} need no further explanation since they mimic the @SAS{} Display Manager commands and related function key definitions. However, six other keys have been provided for convenience and are described below. @samp{shell} switches you to the @file{*shell*} buffer where you can interact with your operating system. This is especially helpful if you would like to kill a @SAS{} batch job. You can specify a different buffer name to associate with a @SAS{} batch job (besides @file{*shell*}) with the buffer-local variable @code{ess-sas-shell-buffer}. This allows you to have multiple buffers running @SAS{} batch jobs on multiple local/remote computers that may rely on different methods specified by the buffer-local variable @code{ess-sas-submit-method}. @key{F2} performs the @samp{refresh} operation on the current buffer. @samp{refresh} compares the buffer's last modified date/time with the file's last modified date/time and replaces the buffer with the file if the file is newer. This is the same operation that is automatically performed when @code{LOG}, @code{OUTPUT}, @samp{filetype-1} or @key{F11} are pressed. @samp{filetype-1} switches you to a file with the same file name as your @file{.sas} file, but with a different extension (@file{.txt} by default) and performs @samp{refresh}. You can over-ride the default extension; for example in your @initfile{} file: @example (setq ess-sas-suffix-1 "csv") ; for example @end example @key{F9} will prompt you for the name of a permanent @SAS{} dataset near point to be opened for viewing by @code{PROC FSEDIT}. You can control the @SAS{} batch command-line with @code{ess-sas-data-view-submit-options}. For controlling the @SAS{} batch commands, you have the global variables @code{ess-sas-data-view-libname} and @code{ess-sas-data-view-fsview-command} as well as the buffer-local variable @code{ess-sas-data-view-fsview-statement}. If you have your @SAS{} @code{LIBNAME} defined in @file{~/autoexec.sas}, then the defaults for these variables should be sufficient. Similarly, @wkbd{C-@key{F9}} will prompt you for the name of a permanent @SAS{} dataset near point to be opened for viewing by @code{PROC INSIGHT}. You can control the @SAS{} batch command-line with @code{ess-sas-data-view-submit-options}. For controlling the @SAS{} batch commands, you have the global variables @code{ess-sas-data-view-libname} and @code{ess-sas-data-view-insight-command} as well as the buffer-local variable @code{ess-sas-data-view-insight-statement}. @key{F10} toggles @ESS{[SAS]} mode for @file{.log} files which is off by default (technically, it is @code{SAS-log-mode}, but it looks the same). The syntax highlighting can be helpful in certain debugging situations, but large @file{.log} files may take a long time to highlight. @key{F11} is the same as @samp{filetype-1} except it is @file{.dat} by default. @key{F12} will prompt you for the name of a @code{GSASFILE} near the point in @file{.log} to be opened for viewing either with emacs or with an external viewer. Depending on your version of emacs and the operating system you are using, emacs may support @file{.gif} and @file{.jpg} files internally. You may need to change the following variables for your own situation. @code{ess-sas-graph-view-suffix-regexp} is a regular expression of supported file types defined via file name extensions. @code{ess-sas-graph-view-viewer-default} is the default external viewer for your platform. @code{ess-sas-graph-view-viewer-alist} is an alist of exceptions to the default; i.e. file types and their associated viewers which will be used rather than the default viewer. @example (setq ess-sas-graph-view-suffix-regexp (concat "[.]\\([eE]?[pP][sS]\\|" "[pP][dD][fF]\\|[gG][iI][fF]\\|[jJ][pP][eE]?[gG]\\|" "[tT][iI][fF][fF]?\\)")) ;; default (setq ess-sas-graph-view-viewer-default "kodakimg") ;; Windows default (setq ess-sas-graph-view-viewer-default "sdtimage") ;; Solaris default (setq ess-sas-graph-view-viewer-alist '(("[eE]?[pP][sS]" . "gv") ("[pP][dD][fF]" . "gv")) ;; default w/ gv @end example @wkbd{C-@key{F2}} produces US landscape by default, however, it can produce A4 landscape (first line for "global" key mapping, second for "local"): @example (global-set-key [(control f2)] 'ess-sas-rtf-a4-landscape) (define-key sas-mode-local-map [(control f2)] 'ess-sas-rtf-a4-landscape) @end example @comment node-name, next, previous, up @node iESS(SAS)--Interactive SAS processes, iESS(SAS)--Common problems, ESS(SAS)--Function keys for batch processing, ESS for SAS @section iESS[SAS]--Interactive SAS processes Inferior @ESS{} (@iESS{}) is the method for interfacing with interactive statistical processes (programs). @iESS{[SAS]} is what is needed for interactive @SAS{} programming. @iESS{[SAS]} works best with the @SAS{} command-line option settings @code{"-stdio -linesize 80 -noovp -nosyntaxcheck"} (the default of @code{inferior-SAS-args}). @display @code{-stdio} required to make the redirection of stdio work @code{-linesize 80} keeps output lines from folding on standard terminals @code{-noovp} prevents error messages from printing 3 times @code{-nosyntaxcheck} permits recovery after syntax errors @end display To start up @iESS{[SAS]} mode, use: @example @wkbd{M-x SAS} @end example The @file{*SAS:1.log*} buffer in @code{ESStr} mode corresponds to the file @file{@var{foo}.log} in @SAS{} batch usage and to the @samp{SAS: LOG} window in the @SAS{} Display Manager. All commands submitted to @SAS{}, informative messages, warnings, and errors appear here. The @file{*SAS:1.lst*} buffer in @code{ESSlst} mode corresponds to the file @file{@var{foo}.lst} in @SAS{} batch usage and to the @samp{SAS: OUTPUT} window in the @SAS{} Display Manager. All printed output appears in this window. The @file{*SAS:1*} buffer exists solely as a communications buffer. The user should never use this buffer directly. Files are edited in the @file{@var{foo}.sas} buffer. The @wkbd{C-c C-r} key in @ESS{[SAS]} is the functional equivalent of bringing a file into the @samp{SAS: PROGRAM EDITOR} window followed by @code{SUBMIT}. For example, open the file you want to work with. @example @wkbd{C-x C-f foo.sas} @end example @file{@var{foo}.sas} will be in @ESS{[SAS]} mode. Edit as appropriate, and then start up @SAS{} with the cursor in the @file{@var{foo}.sas} buffer. @example @wkbd{M-x SAS} @end example Four buffers will appear on screen: @multitable {buffer-names} {long-mode-names} {much-much-much-much-longer-description} @item Buffer @tab Mode @tab Description @item @file{@var{foo}.sas} @tab @code{@ESS{[SAS]}} @tab your source file @item @file{*SAS:1*} @tab @code{@iESS{[SAS:1]}} @tab @iESS{} communication buffer @item @file{*SAS:1.log*} @tab @code{Shell ESStr []} @tab @SAS{} log information @item @file{*SAS:1.lst*} @tab @code{Shell ESSlst []} @tab @SAS{} listing information @end multitable If you would prefer each of the four buffers to appear in its own individual frame, you can arrange for that. Place the cursor in the buffer displaying @file{@var{foo}.sas}. Enter the sequence @wkbd{C-c C-w}. The cursor will normally be in buffer @file{@var{foo}.sas}. If not, put it there and @wkbd{C-x b @var{foo}.sas}. Send regions, lines, or the entire file contents to @SAS{} (regions are most useful: a highlighted region will normally begin with the keywords @code{DATA} or @code{PROC} and end with @code{RUN;}), @wkbd{C-c C-r}. Information appears in the log buffer, analysis results in the listing buffer. In case of errors, make the corrections in the @file{@var{foo}.sas} buffer and resubmit with another @wkbd{C-c C-r}. At the end of the session you may save the log and listing buffers with the usual @wkbd{C-x C-s} commands. You will be prompted for a file name. Typically, the names @file{@var{foo}.log} and @file{@var{foo}.lst} will be used. You will almost certainly want to edit the saved files before including them in a report. The files are read-only by default. You can make them writable by the emacs command @wkbd{C-x C-q}. At the end of the session, the input file @file{@var{foo}.sas} will typically have been revised. You can save it. It can be used later as the beginning of another @iESS{[SAS]} session. It can also be used as a batch input file to @SAS{}. The @file{*SAS:1*} buffer is strictly for @ESS{} use. The user should never need to read it or write to it. Refer to the @file{.lst} and @file{.log} buffers for monitoring output! Troubleshooting: @xref{iESS(SAS)--Common problems}. @comment node-name, next, previous, up @node iESS(SAS)--Common problems, ESS(SAS)--Graphics, iESS(SAS)--Interactive SAS processes, ESS for SAS @section iESS[SAS]--Common problems @enumerate @item @iESS{[SAS]} does not work on Windows. In order to run @SAS{} inside an emacs buffer, it is necessary to start @SAS{} with the @code{-stdio} option. @SAS{} does not support the @code{-stdio} option on Windows. @item If @wkbd{M-x SAS} gives errors upon startup, check the following: @itemize @bullet @item you are running Windows: see 1. @item @file{ess-sas-sh-command} (from the @ESS{} @file{etc} directory) needs to be executable; too check, type @wkbd{M-x dired}; if not, fix it as follows, type @kbd{M-:}, then at the minibuffer prompt @wsamp{Eval:}, type @code{(set-file-modes "ess-sas-sh-command" 493)}. @c (solution: @code{chmod ugo+rx ess-sas-sh-command}). @item @code{sas} isn't in your executable path; to verify, type @kbd{M-:} and at the minibuffer prompt @samp{Eval:}, type @code{(executable-find "sas")} @end itemize @item @wkbd{M-x SAS} starts @w{@SAS{} Display} Manager. Probably, the command @code{sas} on your system calls a shell script. In that case you will need to locate the real @code{sas} executable and link to it. You can execute the @UNIX{} command: @example find / -name sas -print @end example Now place a soft link to the real @code{sas} executable in your @code{~/bin} directory, with for example @example cd ~/bin ln -s /usr/local/sas9/sas sas @end example @end enumerate Check your @code{PATH} environment variable to confirm that @code{~/bin} appears before the directory in which the @code{sas} shell script appears. @comment Specify the path to the real @comment @code{sas} executable in @file{ess-sas-sh-command}, i.e.: @comment @example @comment /usr/local/sas9/sas $@@ $stdout 2>$stderr @comment @end example @comment To find the @code{sas} executable, you can execute the @UNIX{} command: @comment @example @comment find / -name sas -print @comment @end example @comment @end enumerate @comment node-name, next, previous, up @node ESS(SAS)--Graphics, ESS(SAS)--Windows, iESS(SAS)--Common problems, ESS for SAS @section ESS[SAS]--Graphics Output from a @SAS{/GRAPH} @code{PROC} can be displayed in a @SAS{/GRAPH} window for @SAS{} batch on Windows or for both @SAS{} batch and interactive with XWindows on @UNIX{}. If you need to create graphics files and view them with @key{F12}, then include the following (either in @file{@var{foo}.sas} or in @file{~/autoexec.sas}): @example filename gsasfile 'graphics.ps'; goptions device=ps gsfname=gsasfile gsfmode=append; @end example @code{PROC PLOT} graphs can be viewed in the listing buffer. You may wish to control the vertical spacing to allow the entire plot to be visible on screen, for example: @example proc plot; plot a*b / vpos=25; run; @end example @comment node-name, next, previous, up @node ESS(SAS)--Windows, , ESS(SAS)--Graphics, ESS for SAS @section ESS[SAS]--Windows @itemize @bullet @item @iESS{[SAS]} does not work on Windows. @xref{iESS(SAS)--Common problems}. @item @ESS{[SAS]} mode for editing @SAS{} language files works very well. @xref{ESS(SAS)--Editing files}. @item There are two execution options for @SAS{} on Windows. You can use batch. @xref{ESS(SAS)--Batch SAS processes}. Or you can mark regions with the mouse and submit the code with `submit-region' or paste them into @SAS{} Display Manager. @end itemize @comment Local Variables: @comment TeX-master: "ess.texi" @comment End: ess-17.11/doc/hilock-sas.gif0000644005071500004540000002416213202324173012536 00000000000000GIF87aJK÷0///?0 / ///00 ?? 000???@@/PP?@@@@O@OOOPPPP_P___`_P_`_``@ooOP_```oo`oooppoopppÿPÿ°/ÿÿ€€p°°p°¿OpOŸï_ŸŸÀð€€€ŸŸŸ°°€°°Ÿ¯¯¯°°°¿¿¿ààŸÐРÐаïï àà¯ðð ðð¯ðð°ÿÿ°ðð¿ÿÿ¿€Àð€Ïð€ÏÿŸðÿ ðÿÐÐÐßßßððÀÿÿÀððÏÿÿÏÿÿßïïïÿÿàðððÿÿÿ!ù,JK@ÿ™\" ÁLȡÅJl±âĈ/ZÌÈ£Ç5Šì²äÈ$OšLɥ˕/UÊl ³æÌ˜4oÚÌɧÏ?u í ´èРDMʩӥ«èÐÁbÅXá!D>„D‰¢â@UUª°XË6íZ·lãÊ w®Ý»xÙ®ÐËwí^¿}Ï,¸ð_Ã+N̘ðbÇCž,¹òcË‘/kÎÌ™òfÏ1ƒ-ºôgÓ¡O«NÍšôj×­QÞ-»ökÛ±oëλʒ©Àƒ  ’+W>•øÛߣg"•êa Áï…Ë]-Zïu»·ÿU+^nùðàÓÓÞ½žwû÷¸á³O¾}÷õñß—¯¿?ÿÿù¸_€h &æÛTË%qÆ!× s:8‡tÑ=uvèᇠ†(âˆ$–hâ‰(¦¨âŠ,¶èâ‹0Æ(ãŒ4Öhã8æ¨ãŽ<öè#‡ œD'dˆG—d‘I‚Øä‘K"Ç ”SF ¥ˆQRéà•TJÉe“N*id—LN‰dtYfyæ˜dzɦpÆ)çœtÖiçxæ©gŒ@Já矀š è „j衈&ªè¢Œ6êè£F*餔¦e饘fªé¦œvêé§ †*ꨤ–jꩨ¦ªêª¬¶êê«°Æÿ*ë¬´Æ è­R¤EݧÓU‡k &P¨°ƒ;챂©²ÁÊ,²Ð6[¬¤Ì>;íµŒZKi¶Î"«m­à†+î¸ä–kî¹è¦«îºìªú럺V7a’½Nõ®ŸÛæ«ï¾üöëᅫ¶+ðÀlðÁ'¬ðšޛkZ:H%qÄOÜç½ g¬ñÆwìñÇ ‡,òÈ­:liÅ(O,ÕÅï’ìòË0Ç,óÌ4×l³º&C¬rʳü+À@ì¾ÚZô¶Gc›oÒ…ÞìôÓPG-uÍ9ïluϾÞ;´rÃ.gtr‡6訰\;ëu±¢MlÙɲÝ(×`· vÜrW 7ÓÁžm6Ùk‹8­¶Ûyî5Ø &7õáˆ'®øâ¯VÍóÕ>ãÊøä”Wnùå˜gÞ8Æ:?Žrä·j.ú褗núé.;~ÿõΠŠÂë°Ç.ûì´×nûí¸ç®ûî¼÷îûïÀ<êÄoüñ§ªî¹ÅY¿û:²C»ôÑWÿüíÔ_?=ö´gïýïÙ£~ìßë>¾íç‡OýùÚ£o¾ð( /ÿüô¯üêXÛ{/üü÷ïÿÿ  ÿW¿ð€•»ßòtÐ:x!ðŒ '¸0â¯~¢ 7ÈÁzÐ]œÃëš÷+˜ð„(L¡ WȺð…0Œ! °ÂTgS7TØ >ÈÃúPdô¥`B*'… Rᕸ19Hlâ ç5E(ÎЊE\" g¸L-çRÊIK-õE0–1T/Hc¦v·˜ÆbªnL ÛøF5^ŠŽUÀããHÆþð€üc!GBÉòˆL¤"7Hž q‘Œ¤$'é±FŽPï’¡&7ÉÉNzr‹” ¥(GÉ8K~®·*"QHC%®R•žlåYéBYÒr–¸L¡§`€)^nÊ—iæ.CåÇ*“”ÈL¦2/eJæa²„ŸŒ¦4§ÃeZóšØÜX3󧃪eó›à g"s¤Õ«›!§:×ÉN ’³:æÿÜ*EÍzÚ““¶WCë–Ò–j,¼…-ZG³–²¦*ÔªZõªXͪV·ÊÕ®zõ«#j‡\ú3°šõ¬hM«Z×ÊÖ¶ºõ­BÝæÊæù'­kt›××è8¿éuoÒª[`ûØ¿þmPÄ´¢ ½hC3úÑŽŽ´€´ÑâLf²¥¦sJÐN^FMêR›zÔNtª­jI³úի޵«eÝêZÃzÖ¸¶u’Y:¤^CÉAXÊÐr¼„ia‹IBÀÞƒ’-!N(McÚÒ¯½ì‰BÈ6°×tìn“èIœ¾Ò°‹Lîr›ûÜèN·º[Äëu»ûÝðŽ·¼çMïzÛ»GC¬ì²ˆ66®:±38fk,É:lk|íë³W7§òÍnn3lÙ"ÎpEÝí°|Õ›`þ¯Áõ-p{[ENò}\8d5dÉWÎòÅÊ•tÍ`ËgNs¾<ßúÎ9ZkÎslÞ<æRHªÒ¤ ­Gk°Q}êЩut¥ }Qÿ&ºÓ‹–4¼«çXWæÏz+{¬Yû(·>Ù_‰ýìh%Ù½™ö¶»ÿkßßç<öõÎîÖ Þ·×¿½ûïí€wgè̲ãêzʉÞrf—xÆ/~{ŸÞãŸ7!ÉK/òâÃ|îŸËC¯óžW|çA»9þó—7½çIOyÍ/žõØ _àgÁ¸¯˜ö¸ÏýmovÝûþ÷ö¼¹9Ð{ÿøš¾ò—ÏLáæ\§ç _ KêW?Ÿšlè-YˆýéçÒûºìT1ý¨X1‚‘Œ˜?©ø˜Ç;¾ÑRì_£üÝú·Ÿùø¿ïq…üþû¿†ù€¸·¡#€x€"å|Ã÷bØ€èX ¸@CôXOÝG*ÂÔ)¸*å÷€H(} EQT Q/4‚¬„‚T„P&XEX*00ƒU@ƒÁ4ƒ¼dƒ7¨ƒ;˜ƒèEÅ1FfôDèA!è@E˜„JH0'§! ¸„P…äÒ„‘5x…Æ'…Z˜YTØÿw/Նݧ}a¸IdX†Ö÷}¶t[؆.·R-6V_˜IXX‡Ôä†xxR]X!sØ{yø‡€(*{˜rˆ†xˆ™2ˆ}ˆT_uøˆ‰’8‰”X‰A£ˆ8÷pxÅqç7Ü"8'qqCqg‰¦xЍ˜Šª¸ŠV…‰@ÇŠW…ˆ²X?®}uuSÕÂTNwtQ§tKµ‹¼è‹I•X³XŒ–S‹:P`#¶ŒÌØŒÎøŒÐÒ8ÔXÖxؘ¶E`Æ_êõF_¬å_̸\é]þ¥_㈎ʥÕµãäåŽÓØZöŽèØ öµøuàˆê…aâ˜ôX]É^ؼ%á[ù^åõ¹Z™`¯¥Ð5&‘Þø]à(^éÞ’™_" ‰\ÖòÅ%ÉŽ$-à-0“2I“3“7Y“8i“<¹“>©“@™“BÙ“AI”Cù“GY”Hi”L¹”N©”P™”RÙ”QI•Sù”WY•Xi•\¹•^©•`™•bÙ•aI–cù•gY–hi–l¹–n©–p™–rÙ–qI—sù–wY—xi—|¹—où„ƘQHN¢ZœU˜žµˆ…(˜Œ …Èxo™’9™”Y™–y™ÿ:rdk±°E? ,@@§vš¨™šwAk·¦k¹Öš°Éš²ùš³éš¶›´™›^&*èEUÁ›šyp" ð , ÀDÐgx¡g§&ªYjµ‰›·yÚ©›ØÙÛ™ÜùÞžî!•¶ Åv$αæÙlîɇÁù98€pÆgx–ŸÞ±g–ÿùgûùÒ)žJžà™ ã© Ê º Ú MÖžE…žÆÆ‡¿yÕöžž€Í¡øY$Z¢y!¡(ú )ê ,¡*ú¢-º¢.ZkUp˜¡u££Uˆ‰£ ¿i£@j˜ÿ7†™DZ¤Fz¤Hš¤Jºcíö&Þöm¢&aâ¤O#RzlÅÆ"Y$'‚iÐf&ÜÖ%½¶¤dZ¦fz¦éÖ¤`Z%ȶmQŠ&Ñ&¦oÊ&V¦vª%Pªmqª%Ãv¥aZ§vº¥pê!^úlXÚ§m‚¦Šº¨ŒÚ¨p¢¦E&¨Žz'’:©–z©˜š©Ñ©šÚ©žú© ªŠŠsnet°˜/™ªæ‚Œ77 7ŠWŠƒ“-šh6r£6_r WЉrW{ÓTi³‰ccXP'8ºú«ÍBŒªº¬É‡Jâ¦ðùŠƒ…tÂXX”’‹¿ŒOGUû6uP…(Ø4á:­kƒ(Êʬè*ˆÎZi™T¦zª9•®ò +93/öª˜€2¯úŠ»G(sûú¯¾×¯°K{[°x›° ›v Wï ¯ÿÒ°û°®j7·Š«!7­aS«h“±Çú±lC¬´J6º« GŠ~¬¸:U¾ºqŠts®;‹K®ÚгO)ãštF³‹ï®= ®M׫ÕJuF›³ØJ³5‹ˆ7±@µëSMû¯ [µXËrW›µ\p[Ûµ`›b_¶d;pxA@W¶jË…g+D@Gwtçwp;·t[·¼³¶†ÿ(°™—yê“zÞ{­÷y”Ç·Š×z–çx„¸šWz£'zëSyŽK>󢸰Çy’Û¸¡÷¸ªzw—=xˆz+>y'ºŒ—wx§>äÃ=¥ËwíÃ;¨Ûº¤ »¬+»î³º³;º¸›>¸Ë¸±ó¹€ºrû?Ák·Ä[¼Æ <¾û‡c›¼ÌÛOËۼлNϽÔûMÓ[½Ø»L×›½Ü;vmKH¶è'vXÝ×I¤Ý[Œ{E/XE.ø¾+E廂í›Eï[‚ò‹E-Jž"„Æ4!é÷¿Çä¿btCÌ)xldGy´Gu„¾ Ì~j”ÀrDGñ×Eé |ë ~b˜PÔ7¿)h} D<†ÛÇÁú$~Œ~8t~æ‡Â£"Áö'Gõ×)ñÃ3,ÛrÁ½™Á€·Á l‡?|…NÁ< °Û[ÄH ‚ßëHi›ÄN IÙGüÄRÜAQ<ÅVà½mÞüýßßh^ ‘Ø­‘¹}’úÁ%á~ݹ‘æEß6Þ$I_ÿåá ãËhŽËNãä•ã¾ã8ßÙãѸàžÞ:náø­áÉa+iâèEâ"àü]aêmÞH~ÞiåÇ}ßSÎä.¾‘]Nä"~‘2~Û%IŽdî厒e~‘.\,.Üpçr>çt^çv~çxžçz>a ­Ø~~0®ì)„Ð^è s×Ð:èmèŒ>0äô\Ýè’΄ iŠÑ“žéèR¯÷Úéžþé ê¢>ê¤^ê¦~ꨞꪾê¬Þê®þê°ë²>ë´^ë¶~븞뺾ë¼>뻢éÀî4g-ªÄ^ìÆ~ìÈÿ^nÁi¢ÌÞìÎþìÐíÒ>íÔ^íÖ~íØžíÚ¾íÜÞíÞþíàîânš PðN0P0NPB@`0îô^ïö~ïøžïú¾ïüÞïþþïo¢ÆQ_ðRð/š–ðß¡l¡ Ðo pMàNwA¥æñò"?ò$_ò&ò(Ÿò)O¡r!÷ê…o¡¡n l¿P3 20€àþ û‰DO úiG)Cߟ*ÿôPõR?õT_õV_¢,_Ñ.¡ ÿ¬nZókQ4@3qjþÉŸj¿öMßñN?—" Wÿ?÷t_÷v÷xŸ÷Ôžõ·õƒÚõáÖ$`¯À!£¦ŸåQôoŸg‹¯ôJ ¯÷’?ù”_ù–ùúnž¢!~?¦€?óê)YrS! PºöF¯gL? sÖŸq÷±û˜_û¶û¸ŸûºOj|r–P>ŠÚËS!Ð00»ßüÎÿüÐýÒïí³¾£¾ìÓŸýÚ¿ýÜßýÞoïÞìâ?þä_þæ_#Ú nÒ¥ã&&•:$xÍ¥2ÒþúþÏFÿsjmí×ñŸÿ¡€‚ 4˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%Md¡R¥!„,)ºTÈæJƒ3–”ɡͅU*Ä”+\½90'Ä«Xof(Ñå΂ZÁf%K–kײmÕæ|;q¬[ºjvëõ Þµx¿†5ûwê`Â… FœXñâÁU‹Ö­(¬Ï–DÞ ¸­`‡[á~…9W®eÍg/síS¬åЧ)3†[ölÚµmßÿ~èxaë|;ûÝ‹Õî]¶Á? ôêùuÙâ{KËLÎüeK½Å{‹Ž<ïòÍ­kçŽ[üxòåÍŸGRåùðéÝ“~_þ|úõíkÔ}_ÿ~þýýÿ0@££BŠ4P d°A„0B '¤°B /Ä0C 7ä°Ã*>1DG$±DOD1EWd±E_„1Fg¤±FoÄ1Gwä±GuD0H)>\‚ #‹<ÒH&€À…ì0J)§¤²J+¯”òG-·ä²K/¿3L1Ç$³L3iÁócH„&×K3A,çÔ:)¼êN='Ì3Ã3ÿ4PA%´PCE”Ä8ÿ $r=‡Fx“ EܳR*íœÓ 5µ4JN-L4TQG%µTSOEÍ'W]ÓQÎtpÓÉ8ìÓ„O»zPÓ[¬•O]ÄÂOiý•Áa-Ô•Sey•pÙ=%ÖXfµsÅ«RÅ6[m·å¶[o?œ´QæšÓRYW-V`§]—Ýc‘mWÝf…e×Ö w¥¯zÅë]~ûõ—×~÷ÅôÝoF8a…f˜Ëp«`s¡XáDWN[‹•–^y3æØ×Ží7×z¡Å“ÚŽ{…VÙ€3¸åA–ÖÚ†g¦¹f›oõá%\eÈ\Šg…¹S>…&ºh£Tœ—fºi§ŸÆña&Fa«I«¾Újª#ÕaÒ‹Wî4Ø£Ç&K¨ÏF;mµ×ñaT‚ûm¹ã†øçŠÙÆ;o½÷æ»ïmݦ{nÁë–´bFýFyåÓ÷ÖÕ\>zé§§¾Û懟üáê·ç¾{ïϼ^òç-.»|óÏïô{õ×Ï<üÜ }ùç§ßCöïÇßo÷?Ýú==Z¯Æ6°\íB”Pþ¸Àµíný£Ôÿ„fÀ’ÁkN¤`/Ä@vi$ü*­—}Md%T²0F¬w«V$ÃP²F¶¯0B2|Ù ]ö±“-ÈZJó`…h* ‚(¤aÐ`–Áxåph'tbš°$E²PlC™ÆN¦/‰‡VìÓÅ8FnñmG¼ØÇZ¨Æ&6k…Jlcå¨Aš¬‡9ÌàI¨Ä7âkŠ˜’9HðÙ{Òâ+‚JX6&JБcK!%9I0™1{•3¡ù¼øHNÊ’Ÿe™, ÁP–Ò”§´ž!qÇ¿D&•¯„e,5ÊVN–·Äe.¿DKîN—¿f0kÄKÊÅI˜ÇDf2ODLí)Ó™Ï&3 MjV–Ò4¦5µ¹ÍObónÜg8ÅèM!¡ÀœçDg:Õ¹Nv¶Óï„g<å9OzÖÓž÷Ä'>ŹOé‘sUùh@:P‚Ô M'?š<"¡=' ÚΫL4žýZgEŠQ„.Ô£¿ÿkh‚,:Ò‹ T¢%=èIß©R€²¢…)íBZ sj.íŠ:UŠStÚÔ§éÌiF3ºÓžÞs§,EjQÙ™Tyº4¢%*TŸ*U¥ê´ªeiLµ »™J¡¦@½êTÅêÔ°2u©BëMíÉS¨â%¬=åèM±øVµ^5®5u+X‡šW}nÕ¯ÁSå!XK¯Ê5­uµêWËJUÄ*ö¬‰ulcÉŠVÃFÖ¦’MëeWúØÊ6±l=¬e'ËYsþÕ´œëjdG:Z’¶Öµ¯Í§SO;[Ì¥6¨«Õ,lu»[ÞΓ¶¿e\W;\âöM¸ÅEnrÑv\å6×¹6cîs¥;݃E—º×Å.ª¬›]îv÷PÛõnxÅk&ðŽ×¼çuX`WÿiD¢׽ïÕRWI0_úÖ×¾÷Åo~õ»_þö׿ú…o€_)ßÿØÀFp‚¼àR8Á†paúòèZÙzƒ5ü7õ öŒ„¥pˆEüà ßwF@$Š •á ·8a¾ }K,ãÛwÆ3ž/ŽkÌßã˜]ɯs|ãú ™)B±Š« ä]xÉM“»Ò"W¡ÊzA•¯|eqË âr–Áõ“MêT¯HË"z´• =kXw™Ì·–5£sÝêH÷Ekq„lÿ2ÌË„´¯•ݶI ¶Ò@&6‚¡í/ÌÑËÆ6¶Ê›mnOwÛÝ·r¿nrwÜåF÷iðÏnvkuÝí†÷Bßoz‡sÞõÆ·5ïo~;ÓÁÔxÀëÛo‚·ÙαÀð‚7qÿ^øÂ‡}àÁb:³Ã5Þ%ˆGÜãÿ5²‹.®¢‘ã(ÙG9޽JÿÎ4òËGmi ËÜåî³ÌCŽ¢’[yÊ•þë•#²—«šyÔëüé‰óøÓ?ÞïÔEuŸhèB·xØn¢°‹=’¼^zÚ_c›ã|ë\{ÛžõPK}Î)êyÏ^té½ïC7‘“¥¬v¯Ø§3âóË­¤Þñò¶â‹¼cÉÏ×ñ—o¹Ø¾1¿yJMIŸ½‘¸ÖLΗžŒRãÙB|ötè™Þõã4dIJúb~óõ·÷ ê!B{ÒãÞ÷øÓýCx?Íߟ}ÁÔè‰o|æwù ~6›?ýí=¿gÊ—>õµ=ë«û«|ø«½}ò‡©û³ÿ¾Ä¿~þ–ßý^:B¢~ö»êãþ}ƒÌ_ýõ¿Ó¿T¹l’=ùK?¨s¹·‹¼™“3ë´¶£¼Mƒ@»ë:$k<$@þ+½ÿSÀŒ:Œ;»ºªÓ: Ä3 TÁaнÔC¿–ó4 5 A¹ÁÄ»/;Ûº ¤ôÁá@‚ð@©Á𻿈;»TÂ*ÂrI@"lÀÊ‹BÅ[Â*T‘&BW²Â-ÔŸܽ'ÔB.üÁB0´¥1DCæñBá3CËIÃ7„š2$%8¤Ã¦‘ÃöªÃ<¼™;d½0ÔÃ?d>¬=_ÄBDAì=CTDmADLê¤G„ÄH”ÄI¤ÄJ´ÄKÄÄLÿšFŒMôÄOÅPÅQ$ÅR4ÅúáÄÅF:ÅVtÅW„ÅX”ÅY4šT„Zü"\ÔÅ]äÅ^ôÅ_|$[\•=ºZ¢?R!52ÆEJ£9Æg„Æh”Æi¤Æ FEâ£$ò#VD¢\dF’áÆjÇq$Çr4GGºF‹©£\ì£8–v ™)ª¡s¤Çz´Ç{ÄÇ;IGÿ Ç ÊÇȀț}TM e$È…dȆtȆ|,’È6|H*YÄx몊œ’‹„7ÔK‘,ôFêÇ*A Ê.J Žd7ƒ< ɲ –Á•\É5L>42š#¡'‚¢ulÆ  =’&££I4C¾~é?ŠÌÉ?BI8Ê—+Â"mtÊ¡|Jfüš`9Jt³¾™ÿÉ*L¡;Ê<‚IbŒ?úF—éÁ­Ü0–ÔÈ(IB·|K›„>¦ŒK¡Ëp‹È‰ÇP#@‚@Á$LÃ,ÌÁLÌÃTLÄtÌÆ„LÆ”ÌŤÌÇœLˬÌÈÌÌËÔLÌôÌÎMÎÍÍ$ÍÏMÓ,ÍÐLÍÓTMÔtÍÖ„MÖ”ÍÕ¤ÍלMÛ¬ÍØÌÍÛÔMÜôÍÞNÞÎÝ$ÎßNã,ÎàLÎãTNätÎæìMÀdÎé¤M€Nê|Nì¼ÎåäÎììÎíôÎðÏñÔÎòüNóOô$ÏódÏôlÏõtÏø„ÏùTOáLñ´NÃì ÂìŠ÷¼L¨Ï⼊Լ ̼ŠòÿЕO…L¼ˆ¼PÖìOþÐE‚ϬPØÌÏÁÌPÍP]Ì=LL€9ѽРePþlL,rÌ®0õP }Ì•Ìý$Ñ”ÑÈÔÑMNõOâ´ÎÛìÑ åQôì—É´ÑÍÑð„ÐÅÑ}N!=ÑEÌ"¥Rú¬Lé<Ï-Rý´N$MÑ"Ñ]Q!5S 5Í%Ó4¥QÆ,Ð…Ð,•QuÓ•Ð~±Ó7EQ.uNÕÒÓmÒÓP¥R=åÑ9}SDýOÍ5SµÌ-}R'MÌüLÔ}P6ÕÔ, Õ ÅRŤT&ÕÌS-U5UI%RSKÿ­ÑJÕ5UδRÕTUQURH%M[=Î8%UWõÔïÌUb¥U@ Íû„ÑYuÐÊÖ]%UýÒK½Òj}Ñ?}P€ÁÎ -ÔMÅÔ•ÓEÕLÝV]Í:ÍBU×]ÎýT<5×E•ÍåÔ5×$ÖÝÓMå×C­MaMQk5UõTxR‚W4%TY=×\=ÖvÕW`•ØkNˆ-ÕOÕ05ØVÝ××ÔVmX¼Ó%ÍØÍ ×b-ÙgQmMÙiíØ‡ÝÏFåSS¥Ñ)ØþY=Å¢uÙ~ñÒììWj-X|¥L`ØTUÖz5S†µY\ÝQ§ÝÖQŸWeצXFÿU#W[hÍW ÅWE­ÚUÐ_UN¤mSlT±=Y6Ö=Yi%Ö¢ÕW‹ [»ýXÝDÚ]­T^Í[mÐW5ZÁ…R9…[…íNÂEVídUT•Ü—­ÏûO+…PŸµ×íYš-SíÚ£½Ó •Hší›õSuíÏÓSXÍ\p­UguØ„][¼]Yh-Pt½Q•Ú™Ý]ÜÄ"ÑýÖÏ|ÔFÍÌà•Y§eÝ4E]Ú•\ÓeÔØU\-\ ¥^2=RæuÛÜÄ\GµT®=Òï-^¶íÌðåÛ@E^8¥Þ»íV–uÖö4ÙÏÍÙeÓ OÇu^‘]Úü ÝþÝ_ÿuWæßÿ%àùH Ýõ¥ÝâEM`†Îcà.àv^Ë•à ¦`Öà Þ` îà æàö`á6áFáîß9ÜËÏ ½nC¦á@’1ÈÆaò²ËÓèÀÎá6¿ö>â"Þ’¾ôK¼ b#fbñHùÊ&–b'¶KrqÂ%žâ,®tAÄb-c‘­!ã2¶®4Vã5fã6vã7^Œ©1ã9¦ã:¶ã;Æã<Öã=æã>öã?ä@äA&äB6äCFäDVäEfäFväG†äH–äI¦äG;ess-17.11/doc/hilock-sas.pdf0000644005071500004540000002213113202324173012534 00000000000000%PDF-1.3 %Çì¢ 5 0 obj <> stream xœ3Ð3T0A(œËUÈUd˜™ê˜(èY˜˜éYX…Œ,L¡JôƒÌ\ò¹œ¬ Èendstream endobj 6 0 obj 56 endobj 9 0 obj <> endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <> >> stream xœíÝyÓÈú7`¹‚$@**ØP{*8œ ^¶‚ ,[ÁI¨¶‚l¨`“ üšŒ"iF3’låûÞëÚk¢™‘?~$›Õßÿ]=¸¿¿?;;ÓÖÖÖÖÖÖÖÖ>êöjïž>}Z°ßãݧOŸæž ïåQ¼{ùéÛiÛêÇÜŒö°½´µµµµµµµµ§n·âǬ;Þ=ÿðŸW¯žÿç?¯ž¿{õêÕö¯»»»Oþüíõ“ëÿÞ~þõý«Ïï¾~ýúùêúÛö{íÒ&…rXoÔ‹¯j7Ú·ËÈám6÷gmmmmmmí’Ûc®½ËŠwíQÚgi«”êÝÆŸÞîJw>|øôËï»Ugï~½ó¾¾qn¤Kw!¶B5¶Äª^½—ôIõnëG2}ÿâ{¶ÛüÿÍ›7_ÿõgwzýq„Uñ.´Yd¸žžËø| ­­­­­­]Zûø®½{öþÍ»wï¶íçÏŸ_¼ûŸ÷Áâ]üälÊ”R†ˆ÷ ÐþNk]»®6¾z7蛳µdúïۛׯ_ÿÜùÓV;½>üñ®3ÕåþÌžkï´µµµµµµ§mׯ½ËwUÀ~÷®ïþúë¯÷ïßoúýúú&ÔãàH·“õÍÙ*\ÌKüæl»çö.!ƒ¯½KÜ>tí]|¯Øµw¿~ùóßÿþ÷ùùùvëM¼ûòòmwz]¶2>hkkkkkk—ÖÞ¯ëëë‡÷g?Ö†ÚÛx÷Ûo¿õn¹mׯ½Ë¥çwï...~ùå—ÍŸ?þðáÃÝÿû¿ €­·Ás¬Óx¨ÞåŽÒó»wßÛo_n"áÏŸAioS_²$s&ÐÖÖÖÖÖÖÖÎm÷üîÇåQ¼à؉w‹"Þ,J¼küìÞÇ·¿§úµåí>Û "ô¯°E¶| Nf7}̧÷ïÕT#î–·n;kbí¹E¦º×»J“ïâÿhƽûÖ7Ȩ´·üÄÙk¶ëœÌþv‰ìØyk,æ¾€Bˆwû%Þ [8`ˆÙïk(Äx×8s:àÌZ$2îÚõ³Àé‡ÞòÛ'Iw݆¤sô¬ÉTx×^XŸLc†í ˜F{2õÃi`õøFyà¢q«ní»²¾)ïڻƛeãò¸ô÷éÎ7ÚÎГ{^$ÞuvÞþ³ê v»L~¤YΚFüƉßxÕ ^‘…YCÔwOy ©ç°`c«w/]³ŸxaÖìñ.^xËOnt«÷3I:ïFxúSÝ×õÍÄ;NÍñn|Îh/,6Þ…&Ÿ2Ÿ‘•¹H80™ø4"K†•¸Áä÷u}•xÀ‰˜2Þe¹;Æx7ìe$Þ½ìºþoLvãôòÈO¼5r(÷¾ï8³}µ¢þgýM·¾pXŽy¸Ü­saä@BY¤z¤,Ru7l ™OÖ4GÑž^ï c<ÒdaÊ‘´Ú>ŠÐ} s*ÿj…j œñŽSá1À‰8•xp"Ä;€EïåQ¼{ñâÅz½^­Vÿ¿8¿˜{¶œœõæ?X®ûûûHú:??ßlóåË—³³³Ýöñöååå£x÷üùóÈðâ‡'Þ°lwww‘µÛxw{{»Ik)½]__¿}ûVõŽ¢‰w,[JõnïR.¥ûðáûwïTï~XU‚DÄ;–-½z—ï6Û¨ÞÕÌïVÿ_p’z€âË–xíݳgÏÆ»“®Þ 3a(Ìêêkƒæ,Þ°lªwåïÒ‰wÐ2øÚ»Îiеw»Sl«Ko¾õspÛ„vl¬Ý’òæ>rV‘)Ez^µ6îì!®Þmû`·FÖ¸û¦Ï§·ÿ”Ú‡¹Úû®¶á.uìÍÓàÛ~kq€c2¬z·ÉvÛF#á ­Þ5.¢Š„’Î÷ïøŽí ˜øf=fV¡]RzSE[µB[¤ç¬q'œd–Þ9WÉ·äÅ;–mÀµw»l·UOxC¯½K‰e¡œÙqd<«Þ ÆÄ¬¬áö—Øæ:“Û;çÝ’ð œ`Ùr«wl·µKx#ªwâ]z·éÃu–¯ê²ªw‘}ã³ê4xwñ¢ÊøÝ;ñîñnÌáäÖ§2`ΓÆ;'g8Fe|s6å*·”䑲cz.3«øYñnð9ÓÞëÒªäqÇ\Â8FÊœ«è<»î²¬x'ÛptÊøÝ»íÛpè› ÓsíwÛøWzw<«ÎÓ‘ëÖÚuןírÓE½Ãvú©Âkããöî»'‘qWvΧënJŒwJw©bªw¾‡–9+FKw²Ç(ñÚ»›››Í–ggg»½B퉮½+A™³b4_­`ÙRªwÛ“Té2«wñS«s)sVLA¼`ÙRªw›œvuu•þÿæ,EïX¶”ê]•™ð2ªw»˜ÄÌÕ;ñ`Zªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(3Wï.Î/pn½ùŽÙÌÕ;ñŽÒˆw;Õ;xD¼àØ©ÞíÓªŽŽxÀ±S½Û§yãÝêáÿåd•Õã?;'¶9§Œûh}97 ¡zWž CaVW{ £éO;üÞÄ;Žê]yÄ;ñF( z·;·;‰Öx{­Ÿ°ëÜ&´ccín””·ï‘³ŠL)ÒóªµqgqõnÛÛ¸5²ÆíÜ7´{Õºq"Gæ¿û"k³Æ­­Jw›'É·í×â e)£z׸â*J:3G|ÇvH/# žUh—”žÇ”¯Úù&ÒsÖ¸#'Ù>2çøÝ—rç&Ž[ûS¼àØP½«ÒbY('Evyšoð¬z7³²†Û_b›*Þ¹SæRØÉYŽ]1Õ;ñ.½Ûôá"§2·²ªw¡}ã'gãçÎ9rvµ½62n{ßJ¼`!TïÂïÆNn]0¥‡a=ç®Í×ÉYŽ]1Õ»*'ˆ„V¥ì˜u¶nð¬âdÅ»ÁçLs¯T‹Œ;æÆÎ†Í9>«Ä%ËkãfÅ;Ù€•T½Û,p.´*e÷Á³ê•¹îú³ÝCn~¨wØNKUxm|ÜÞ}S¦ÔÙsžsïÙäÈÚÞqG”ï”î(V1Õ»ß%Ëœ{–ïd;ÊTRõ®4eΊ=óÕ Ž]Õ»ø©Õ¹”9+öO¼àØ•Q½ƒbˆw»™«w»˜ÄÌÕ;ñ`Zªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(ªw‹¢z°(³Wï.p0õÜ€³WïÄ;Ž‹x@éTï ‹x@éTïFY­ªµ·ûÓâþ tªw£Ìï6£o”“/·óÙéœØ>æœ2îtй¹ @õn†Â¬®öFÓ;ŸvOØâ¥S½›x'ÞÀþÌ_½Û­Ûbk¼[×OçunÚ±±v7J½«ÁãFôÜ8™vD½Ûv¸ioÖ¸û†v¯Z7N¤óÈœCwPïÚ¬qÛ«RtJï(]ջƛh$²t&’øŽí¬ÐÈÃÆ í’Òó˜‚S;ßDzÎwä$#ÛGæÜ{EÖfß2D¼àÍ_½«ÒbY(EEvì};•¹]ÒÙ½‡a%¥ªöåÜγ¨íµñq{÷M™RgÏ‘9÷žMެíwÌUÁD(ÞPºRªwS\•m®q9 ‡‡G ¥+¨zwxâùfÜöèÛÍÚC,ø|7…+¢zWJUW‹§¥øŽí ˜ø~;fV¡]RzS½«WàÚÕ¸Þê]U‹#ã=WƒRÝV=µsÒ.iunR½ m3xÜöª®)Þ0—ù«wUZ, å¤ÈŽ#¿Ù0xV½Äûïzó\ÖÉÙܤ8ìÜng®Š¸x,KbÀ¸¹ƒÀŒJ©Þ‰wýÝÎﺦs¢ñ®j–ö(Šê]x?Û;zŠ#w)C89 À\J©ÞU9—Ð…V¥ì˜žùÆÌ*¾AV¼ûùçÔ×ÞMøgç’D^{—˜äÇM?9Šw²³(¨zÿŽjX[…wLÜ=dð¬â_€mtÿ.ð£å#¾9Û^ÛØ ±Wï×oÛÙ®þç€oWl¡pß`׎œ?íܽ÷‹±Ûå¡?CÝVJw̪”ê]oƒÅÍê$³Â‘~Aé€T½+Mq³:ɸp¤ñf4õ®÷×ãfQâ¬N/Þõþ.1ÐVDõŽ$§ï€æ®Þ«ÊLiîêx0)Õ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½XÕ;€EQ½X”¹«w8È…X¯çžpæ®Þ‰wéÄ; êÝñw{´ÚD² »ï€ªw{4o¼{}s³ùÿÍë×Na€Í]}›»l ¢zWœ`(ÌOH›„—ï²6β}0í£g Mõ®8â0ÆüÕ»ÕCcýkªíºUmaç6¡kw£¤‘³ŠL)Òóªµñ£ÒÒöœlõpZ¶Øvk«ÚyÛúÂöÚø¾)v©íŸQÏ9\˜JÕ»zTªºX<-ÅwlÁÄ1fV¡]RzS½«ç¹öµw´ÿ3ÒsïÆ èÖYÌï`*óW華XÊI‘G~³að¬z7ˆ÷38ÞuÖêö”Ørã]#·9] ûSJõN¼ëïvt¼kŸ„ͪÞEöïàTï‚ïRÂ_(±åÖR⓳0•RªwUÎ%t¡U);¦g¾1³Šoï~þ9îÚ»ÎJ^â¥x½ûÆ%^{'ÛÀ$ ªÞÅ¿£ZÖVáw<«ø`Æ¿ ühù oÎVoȶ׶7èì6´oÈ.ÛE¾9«t*¥zWà{q³ZnúQº€ T½+Mq³€€óWïz=n%ÎJ¼Q½#‰x$˜»z÷c&‘R½»½½Mïðòò2§z'ÞL*¥z·‰w›´–ÒÛõõõÛ·oUïf“X½Û¥µ¸Í6Íx§zpHéÕ»ñNõàTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïeîêÝÅÅ4Çq Öë¹g¹«wâ]:ñH zw<Ä; êÝ­6‘lÂîÄ; ê݉wÀá©Þ' Å; ê]qÄ;`Œù«w«‡Æú!ÖT?Úu«ÚÂÎmB;6ÖîFIII#g™R¤çUkãG=$Ç»Í÷°¹8§¨ˆê]=*U] ,ž–â;¶ƒ`bê3«Ð.)=¯Þ‰wpÊæ¯ÞUi±,”“";ŽüfÃàYõnïÇÉY`ŒRªwâ]·â@õ.èx㓳pÊJ©ÞU9—Ð…V¥ì˜žùÆÌ*¾AV¼ûùgN¼“íàdT½‹Gµ ¬­Â;&î2xVñ/À6:ŒøÑò´Ä¦t'®”ê]a¤¸Y%Ç;ÙNYAÕ»Ò7+¡ H0õ®÷×ãfQâ¬Ä; AÕ;’ˆw@‚¹«w0•¹«wâÀ¤TïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`QTïEõ`Qf®Þ]œ_Ls<¸»¿›³z'ÞL럻"kUêÝ>­ªj=÷€£z·Oâppªwå €TïÊ#Þ#P½[=´ÖÕ÷FÕ 7«ÚÂÎmB;6ÖîFI O#g™R¤çUkãÎÂʨÞÕ£RÕ•Àâi)¾c;&¦1³ í’Ò³ê0BÕ»*-–…rRdÇ‘9ið¬z7ˆ÷#Þ#S½ïÒ»S½ ï€#TLõ®Ê¹„.´*eÇôð4fVñ ²â´ä(©zÿŽjX[…wLÜ=dð¬â_€mtÿ.p{\€¨bªw†˜2gURõ®4eÎ *±zwss³iÜßߟmW…ÚùÕ»Þ_›E™³è“R½Û´³úôoÎÌ&¥zW=œu½ººJü¿sö„¬•7 0÷÷÷½Õ»¬l·ù¿êÝ ï 4www‘µ»kïR®ºÛ¶///UïNˆx¥I©Þm¿9›ÒÛõõõ oÎr´Ä;(MbõnÏ¿{W‚Æ¿Q1»”_cÞÇœ3Z¼€Ò¤Wïöù»w…Èú¡»½þ*^Ö¿œ6á4ò{ï 4ªw5âxÇïä«wõŸ/n‡›Îû5þOÊÆ÷ í¾Û&¥óÈœƒ¦¯Í·¶*=Þm>qó¨JÜ&·z÷òåËöf?~Ü6Ž­z×Î7ëÀÚÞ?#=÷nÜ»{hUcÎa.qmÖ¸µ?Å;(Í€ê]#áí²]udÕ»ÎZÝžÛTñ.>ç¬ùÞæñ–NÎ@i†]{·KxõlWYõ®7ÞµÏWfUïBûÆOÎÆ;Ïsäìj{mdÜö¾•x…|íÝ&á5²]µ¨ê]JJ<ß8±‡a=ç®Í×ÉY(Íisvðuld]å–>±ÁsŽÏ*qIçòÚ¸YñN¶€ðÍÙuWZªÂkÛtvÚ7eJ=Wá9÷žMެí7pD‰ñNéæ´«wŒ–ïd;8Œ“¯Þ1ޝV@i«w777ÕC<;;Û® µUïN‹x¥I©Þm¯›J÷(Þݾ¸Úô8œGñîë‹«ÛÏ÷ÕÙÙúþ~uv¶É“ÚÚÚÚÚÚÚÚÚÇÕnVï¾þ}?oÞ`ŒfõîïÏeÏÎöõ‹ÕõÿÖåÌG[[[[[[[»¬ö¾«w×/ίÿûJÈa:œ|#mæó½Ñ7«í–íÍv=¤t2ù¬˜Vè^.SÊl<ãF>¤Sž)ÃzžÝ_¾ÿ:0~ÄÒ^»ö7ŸyßË:Ÿe§Ø÷…ðìiÐPÿñqKxIßïµwÛJÛnùÛ«ï7ÇïŸîVk·Ö·Ù_ž½¾:ߎ;¦þ1Ÿ”cßÞJןî:·Ù®ð¸Þþ˜Õì·OáíÝ£w{ûïÛƒωÏú³¦þ8Ìóh÷xÛoè1™þØŽ¿VDú=GÚ·a»ŸÆ6õûñûÍø°ý¼·sã6¯?¯¯ºÞJ[Ǹ[Þy›Ô·íÛ¹q_¤ï[7wßø¸¹ŸÙ_:ï»ô÷…ÈãpOïeÇU»ÿÈs?åy7ÕÜ6·Cý¾óº1æqww¿O>Ÿ¬ö~«wíÏ%‡ü Rfoä”&ÿˆPÂgŽcÑûðÙ[d˪õ9òÀwYdÄíªÜ)MòÊr¤¿(5n繞¹¯¢õ?ã•H½³ó0÷íí3wÜ¥½¼oMò0žöu&kè½n3lJígåþ^ {_åzÿœ÷a¹ÇkïR>ŸÕ·ÙÕ:?¯„>Ç´?F>guÝ^úñVáú\¨¶×¨I´o‡Ÿ«¾¿nͪ³ÿxåÑÐ?Ó4f•¾ïì÷WçgÊÝã-ôYmd=#2n㹓8nJm ëØ{o“auŽPÍ)ÞgÊm˜RÏÛ>_ê·sû6?ðc,ý¶J¬+¤÷ŸuíWñ×Þ¬q<~_cÛï“ìÛ[ûù\Øß{YJ]°w› çÖ{ì)·Õ°vü¾›äõjïíýUï:skoæ­ÂÁ<²°·çø¾³h\œ‘ûi8²6^uHüs@­"«Ú‘5«2µ?¢Åë(‘àYÇÛ. ·sƒô9D–©Þ¥<ª³fß þÉ»ýÿôƒ/>á¯rcJ/é7ï°‚Ó>ªwéÅžÎ9ÞwÌÍø^6ÉÝ´¿Ò]{›®¿ø$¾z7Þå¬ãÚ»øµo»ÖÆ?ÇOõ¹³7SG>;Föêx|.©juµx.ýÚ»Îí5¹Èuc®!ËÚ·1Ïñ×®¾Ý®ë4ê ñÛ¹÷ú•ø¸í:SʸmÎî}n¨[ «e&Þ†‘çQüº™Ðý{ÈÇXç±Ä_{ëϦÜçiʵwûÆWcÆ\k‰Ÿ/J¬ã~þ{~¥œÇØÓ{Ù°úwüvˆÛ;çø|zÏ7ôÞú.Aû5$ò|åî[\õnä§–ÞŠQ9¡ÄzUnõ.^ùè-„>¬$ªïšFhƒø¾ŠWwÚ[…+Kâã¶çÞóøKCBÏÍæ’Ã^J5¬ˆzàõVg`@õ.¥‡Äþ³zκ÷'¯H%Þõc ÛéÏîÞYÅ•S½ÛSyxð|z7Øká0ÒybñøÀ ºö®·¶×ûy¨·&Qæµw¡Ï ñ塚D¨>WÕªw‘Ïñ:_Veûk_[Ù{\ñëÕÊiǯÍð7ëÚ»öÒë ½uî¬9tn3ùuTS½æ¤˾¿8øv.óÚ»½¾¶~ÌDÆí½³ö ½>õµw¡aäØ'ÿÎlÖëÌ^¯½ËÍóv1Õ»?ñ ³§ê]oÏéæN)·çôY•)^½ÛmògÖñvVM\”>bïl»cÊ„³*—)#®°NeØ«hÕUƒLYYß··Ÿ1ã¦ö¾0U1/4S«ÞícVñûeöê]Ê­1Wð8èïÞíòõÏãïú=§Îïô%ž“>ðo n·¿»Ú¸M:w»¶q6Ö¶ûoÜU×ÚÆòÆ7gëÛ¬[u¸Æò”qÛßGëÝ·Ìvä;\íÛ$ò\Ø=¯Ylßבß6‹ô“û™²}UP{Î#¿s©Í‡nŸÐ¬z_7Ÿ ã:ðµ¡íúDÇÁ¶jN‘ïã7֦לBû†^oës3îø÷šøûBçc5kßÐãv@­ß½kWâsO5Åú ‘kû¦}nFÆí}½Š¿W¦}èß½›QQ“HQHɰðqË|y?L :íýßœ-¤f6æs¡¶¶¶öŒí_»sø:eb-¤¨9Ï5ïeÚ©í}ÿ›³Ò~¯½ÓÖÖÖÖÖÖÖÖ>pûQ¼{÷áKuVU»ú¶¶¶¶¶¶¶¶ö±µÅ»/^¬×ëÕjÕùÿóóîoÖ0Ìýý}oúº½½MïðòòòQ¼{þüydkñ`Zww±¯BïâÝ&­¥ôv}}ýöí[Õ;€Ù$Vïvi-n³M3Þ©ÞRzõn`¼S½8¤ÁÕ»—/_~üø±Ñ›êÀ̆Uï6ÙnÛh$<Õ;€™¹ö`Q«wþùçÙÙÙvá&FÚªwsJ©ÞmÚY}ªÞÌ&±z·ý3^·Û¶›?k¬zpHé×Þ¥ôÖñ³Æªw‡äwïeØ7g3~EõàWïRÖXõàüîÀ¢¸ö`Q«w777‰ªÞÌ)¥z7êg8vâÀ¢|‹wégs(\Þ©\ ÷ÿzÁ[[ endstream endobj 8 0 obj 8302 endobj 2 0 obj <>endobj xref 0 10 0000000000 65535 f 0000000384 00000 n 0000008972 00000 n 0000000325 00000 n 0000000188 00000 n 0000000015 00000 n 0000000141 00000 n 0000000432 00000 n 0000008952 00000 n 0000000159 00000 n trailer << /Size 10 /Root 1 0 R /Info 2 0 R >> startxref 9027 %%EOF ess-17.11/doc/images/0000755005071500004540000000000013202324173011332 500000000000000ess-17.11/doc/images/ess_176_176.gif0000644005071500004540000000623313202324173013531 00000000000000GIF89a°°çÿÿbÿbýf þgûkÿjûkùpùp&ôs-þt!ñw-÷v'óy7ð}7ë=ö;õ‚Cé…Møƒ=æˆMì‡Hÿƒ9çŠUÿ…BïŠQëQÿŒLÿMù’Yô”Xó”_ÚšsÙ›y÷—aØ¡ƒínìtÿš`é uÕ¦‹Ó¦‘Ï©’ÿ iü£p㪅̱£ôª~õ¬€ÿ´ȶ«ÿµò¶7ö­‡û·ñ¶?ú¶%ÿ¶ù¶0ä¹Tõ¸/º³ê¸U˹¯þ¹åº\Ø»zøº'ë³”îºH÷º2ð»BÒ¼“ù»3ï»QÚ½|íµ–Ç¿¥Ã¾¼¾À½×¾ˆÆÀ¬¼ÁÄþ´‡ÄÁ²ÿ½-ì¿SºÂÊë¿ZÀ¾®Å×ð¾Z·ÃѰÄÝõ¿F´Ä׫ÆÞ§ÇäÂÄÀ¤Éë Êò©ÉæœËù÷ÂH˜ÌÿªÊçÄÇÙÎÿžÍûÿÃDõ½šÏÿîÅs±Ìäÿ½”éÇs ÏýÇÉÆóÇaÿ¾›þÇFéÈzäÈŒùÀ ¦ÐùóÈi¢ÑÿÉËȽÍàõáÿÉPÿÉWþÞËÎÊ¥ÔÿõÅ©ªÓüÄÐÞïȯÞÌÁËÐÓ°Õø¬ÖÿÏÑÍïÊ·ÿÈ©ÇÓáìД®Øÿ×ÑÐÑÓÐóуëÑ›³ØûþÑkÉÕãÓÕÒþÒróÓ‹¶Ûþ»ÛùÝ×Â×ÙÕ¹ÞÿÒÚâÕÚÜÙÛØÀàþûÕÂÄàø÷ÚžþÖ½ëÝ·þÜñÜ·øÙÄÃãÿ×àèøÝ¦ñÜËÞàÜØáé÷Þ­ÈäüïÝÒßáÞñÞÓÿàáäààåèÿã¦Íéÿ×çûêäãäæãÿä®ÿâÓÓëýæèåñèÍÚêþüçÂðéÔ÷éÂèêçÜìÿæëîöêÉúçÜéëèÿê¿áíüäíõüéÞëíêþíÀãïþõíæíïëëðóÿìáîðíýíèåòÿøïèÿîãðòîþòÑëôü÷óäúóÞòôðõôëóõòíöÿþõÙýôíúöçô÷óþ÷âþöîðùÿöùõý÷öýùêøú÷öûþÿùøùûøüûò÷ýÿûýúÿüûøþÿüÿûþÿü!þCreated with GIMP,°°þÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝÊ!=_ÚT£¬Ù³hÓª]˶íÙ]]¶Ó䶮ݻx—ðŠËpY¼€ÖËWá.Áˆ»%\øà5Å#›eܘà¾*’3'¦\YàaÍ sîŒ'´i»£ï;ͺmêÂëZËNûšï¸Ù¸ËÖŽû.7îÝqÿúf ¼« á­‹sõ…œøÞÎó o®Y9×ÏliA½»÷ïàÃþ‹OI”çÐzÉþä‘1mðãËŸO¿¾ýûøµÉKOÞµAÂßOåð ¡ ø:JøŒ‚>ᣇZ6Ø";„¬`À‡ †(âˆ$–h≠Þ1+6¨åÉGܘ0Š4Öh£  Ô1:¨ÕGG‘pãD™#Qå¡–ùht‡‡EF)¥‰G%ÏjaF«@9å—`VYÔZt`¦ù¥˜EMB¡…É¡æœQ²Y”+-¦õâDÐéçvuŒiýÑ=^þ©h‰ „Ì/F*餔Vj饘^ŠÍ?I.ÙäCÐ,**£:t ¨¦ªêª¬¶êê«þ°¾Úˆ5ÿÔcE–[:D̨¼†Øè?ýðë°ÄK,œ G™ qÓ볿þó±ÔVk,äfZ6tÏŽí?™XkšñGAxºØÐáŠ[jAö˜î½ÖšQ‡AƒúÈ!ñŠ:î?ÀÆ'¬ð ?!ÅÃR\Á]„AF±bÔiZL*4+:ð?ˆKÊEûàS;âDË)ŒpF¬R T¸*tŠ „€B @-ôÐDmôÑHË0¯Aä\›HÝ”RÆ«Wà“вiáð B÷L`âí½—ßØd—=ß~ b, "áCн¬^6BÛ¢eƒ, ±s@þ‰xT?lkF/#Q·ª\œ³‹j]’P5 HÀ"IMclV‹dùª\ˆÃP¿iÙ‘8hÀ+I5bì&$²ê´2´1Z„O 3Š8À!HÅsí6#Ù³ªÆ8tsÎ)²ˆÔ€Ô©ÅÆA’Ú©‚±tBy0{Ð,(Â=Fkl,#5j´D„ÉZx#”M$FÀŽQÓ;ÆÜ •Œ*ú±‚Cã ™GHÄ€jÅuÅJÄH`‘ª1ˆb"Ê ZD—˜uD±Gàˆegˆ LÖDС$Ž}ê DÈ]ˆvWd+ ™ûˆ>R…­Š/-ZJˆòFÔ¼¢èXþ' ‰þÌà·Šd/kËH÷¼>¡¨ãZŠÉ'P¥/Œ¬O-í;8à7"ù %k I<6Á…+¨!#þ BH@¥tá@"qØQ#T bÁN( , TBÚÐ ) ƒR®b±î'øÀsu2AÑ`±È< -8HFBtѽ} ‰>)Xô„rÅ´dÑ [Œßü|Ò«BqÅÿÒâ¸5pD €ÆOÌG¬1¸C(y Bú(¢?úÄR PHè©„AŠä]Oô±Áaup(‘DÞA ±¼“=q¡ c”OžÅID)ItÊž¨®XAþJ+Ñ¢ŠÑ9€D˜¥N|·É(E—z<$AØLaîŒÅb[Q”‘'´¡LÔ‡ €Šˆƒs$J'ÖÂtX›"@ vR?ba®(m`KØYròð;æ°™|¼ã§@ ªP‡JÔ¢õ¨Ò„[ô yš•6Ñä±:‰VP48(ž?*P›¨’XÒKˆU¯ª(ìÃc¿Q0sbKX}!}U%«fŠÀ †”@£p¦Mˆ «ƒiõ c•kdl`‰†\sDØN ú*2Háblf¨à›2§6¬®P‡³FV²‘iB=âTÕ³&›kÕ²`и‚2QxþšCÀñÏÔ&÷\Õžð×Ͼ61O8æCæ¡!À¡3iiªÌ .$°¿ Ì ²0‘à•£3é‡#âVšº6ºB¶&rØ”*6& \U²à¹†@¼vÁÁ®×Ëš³.Imçû÷Â×-HPƒg)RÚyª)‰GUÅÜÂö÷¿wBºÚru%ý «¸ ï*Ä¿¶x«â¹'žªÀð„ö>8ÄkñÄPWŽXwDèèI”‹*ÇÂ" ¯ p@ƒ YÅh=”†Hn0‰=ü.)ŒW"´h˜–·Ìå.{ù bPC!Da o Qþº*Å «aÉjˆ.Ê"xC$¿`ÕÁ´gˆ° DHøÚc)ü¸Ï ±€‰"€àŒèƒÊ ¾BÂnXúҘδ¦7ÍéNwº«àŠZà‘)¾N ÂÊBæ'ƒ#êTÕÁj”U³šN#ðEÇBV(¶¾µš@k‹Ô2nеª…=§T"#éUÕÄ Û¡›Ù`úFš¡gåÚØž’ à<Wù×,Á†ÖMމ€;ÜQ’Aµ%’aîšù$¦6ƒ\üwÃ{HpBª%¢âTi½/!fÎ(ÿÛF .ExŒ†ÝÒß©âºûýp)àÊ™r•þÛ¾J!îîx‘à„‹+ÄÔˆë.L4Œª1dáÞ q¸ÊKx"y^þ’b¨J ‡ˆÎwμLx"·8L}—'déLÿFàíˆ<ºÊI_ 9 Ýã'àOéY7‘$ SæïðK¦ÑMTa]Á:¼`€P =H2¹!bt¡?Â-QÜ3~h,ùñ|˜Ç\æŠðÚÇ,±2¿Ü÷ùØ‘f„>úAúÒ›þô¨O=êõax¨ƒØ@Æ->AvW-ÑÔ×ñ>s{÷À/ÖÉãLÐàÿU6Ç9_´{üæ· éqŽ¶ó§†ªC(ÔŸ>Ìt® ‘gúwWP½¿?ý+4¾3'¿ñÍàyþP\ýÀ¿=¼ÿã÷~@øPCä÷ÏþÇÑ€8€X€x€˜€ ¸€ Ø€ø€8Xx˜¸Øø ‚"8‚$X‚&x‚(˜‚;ess-17.11/doc/images/ess_32_32.ico0000644005071500004540000000427613202324173013361 00000000000000 ¨( @bÿbÿkûMˆæUŠç´ÿ7¶ò/¸õ”³ëÄÁ¼ÊºÑ÷ÀÄÂëɤùËœÿ̘ûÍžzÈéüÓª‹ÓóþÛ¶ÂÕû·Ýë­Þ÷üäȦãÿåèæëïíüôëÞóúòõó÷úøøùÿøûùüÿþ""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!"""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""ess-17.11/doc/images/icons/0000755005071500004540000000000013202324173012445 500000000000000ess-17.11/doc/images/icons/icon_external.png0000644005071500004540000000034013202324173015722 00000000000000‰PNG  IHDRÔºS PLTEp)A}ÏÕäÔÔÔ7zÿÿÿwƒ¢¨~ÅKtRNS@æØfbKGDˆH pHYs  šœtIMEÚ;%ËÔDIDAT×c`À\\X\\BÃD€thhh#66VQÓF®¡`Z%¨–%ØÈB«‡€è g Ô¦]€€'¸ì ¸ƒ¾øIEND®B`‚ess-17.11/doc/images/icons/icon_mailto.png0000644005071500004540000000060713202324173015373 00000000000000‰PNG  IHDRJ¾“PLTEHÁïšÉôøZ8üýþúüþq±ëþþÿq²ìØèùð÷ýðöü×èùÝëúâîúËá÷³³³èñûÄÞöÒåù÷M"óøýÒåøÇß÷Øéùéñû¼Ùõåðûãîûíôüîöýùv^àíúÁÜöÜëùìôüöúýÎãø÷úýæðûÇßöôøýåðüaaa```›Êô²²²ÿÿÿq²ë(z¤FtRNS@æØfbKGDˆH pHYs  šœtIMEÚ3$³£ãmIDAT×c` 耀è0è郋— .”ËÎ*ª,-Ϭ« ä0²±È©ó2‹0iƒeYT¸%$TÅÁŠ9 8e8…5Á\vVMY-%1~!)^]`a WGGG[Dhi XëÏ‚bñIEND®B`‚ess-17.11/doc/images/logoESS.gif0000644005071500004540000000627713202324173013270 00000000000000GIF89aÀ½çÿÿbÿbýf þgûkÿjûkùpùp&ôs-þt!ñw-÷v'óy7ð}7ë=ö;õ‚Cé…Møƒ=æˆMì‡Hÿƒ9çŠUÿ…BïŠQëQÿŒLÿMù’Yô”Xó”_ÚšsÙ›y÷—aØ¡ƒínìtÿš`é uÕ¦‹Ó¦‘Ï©’ÿ iü£p㪅̱£ôª~õ¬€ÿ´ȶ«ÿµò¶7ö­‡û·ñ¶?ú¶%ÿ¶ù¶0ä¹Tõ¸/º³ê¸U˹¯þ¹åº\Ø»zøº'ë³”îºH÷º2ð»BÒ¼“ù»3ï»QÚ½|íµ–Ç¿¥Ã¾¼¾À½×¾ˆÆÀ¬¼ÁÄþ´‡ÄÁ²ÿ½-ì¿SºÂÊë¿ZÀ¾®Å×ð¾Z·ÃѰÄÝõ¿F´Ä׫ÆÞ§ÇäÂÄÀ¤Éë Êò©ÉæœËù÷ÂH˜ÌÿªÊçÄÇÙÎÿžÍûÿÃDõ½šÏÿîÅs±Ìäÿ½”éÇs ÏýÇÉÆóÇaÿ¾›þÇFéÈzäÈŒùÀ ¦ÐùóÈi¢ÑÿÉËȽÍàõáÿÉPÿÉWþÞËÎÊ¥ÔÿõÅ©ªÓüÄÐÞïȯÞÌÁËÐÓ°Õø¬ÖÿÏÑÍïÊ·ÿÈ©ÇÓáìД®Øÿ×ÑÐÑÓÐóуëÑ›³ØûþÑkÉÕãÓÕÒþÒróÓ‹¶Ûþ»ÛùÝ×Â×ÙÕ¹ÞÿÒÚâÕÚÜÙÛØÀàþûÕÂÄàø÷ÚžþÖ½ëÝ·þÜñÜ·øÙÄÃãÿ×àèøÝ¦ñÜËÞàÜØáé÷Þ­ÈäüïÝÒßáÞñÞÓÿàáäààåèÿã¦Íéÿ×çûêäãäæãÿä®ÿâÓÓëýæèåñèÍÚêþüçÂðéÔ÷éÂèêçÜìÿæëîöêÉúçÜéëèÿê¿áíüäíõüéÞëíêþíÀãïþõíæíïëëðóÿìáîðíýíèåòÿøïèÿîãðòîþòÑëôü÷óäúóÞòôðõôëóõòíöÿþõÙýôíúöçô÷óþ÷âþöîðùÿöùõý÷öýùêøú÷öûþÿùøùûøüûò÷ýÿûýúÿüûøþÿüÿûþÿü!þCreated with GIMP,À½@þÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠùž¯Nmª‰Á²¥Ë—0cÊœIÓå.’8s"ÜW³§ÏŸ@a.ᥳ¨Ñ]5iA´©Ó§P£JJI¢F³jýWîHL/ù4Þ  ¬Ù³hÓª]˶­[ °ZìÇÝ»xóêÝË·¯_¾d8 „Ç3‡ÜÞ*^̸1\¹û±ù{×L¯‘ÔÌèårn!+1/%¬Æ@-E[S´7™23ÎDb»;FðDt^a‚MHd@Ú‡Tkeí ™mÂ%æ)œ,¡.j?ÜKN2^qã©Ot…#¦°çþePËšvä\‡yb,a« ðãÇ·a©!iì9_qšÞ1O@¶Ð{òh`LH¨±EÏ©åÁtü ”^^dHAK„Bd[@¨S~ˆ(Å#É‘Sã]dzÐ=°µÀ£Íÿ  HÀð€Úø‘G ö.’¸ë._ C^¥›X-ÝYØ·‹g ‰Óì¸=[¡IˆxÈ®pÐ5¤ÉÍ:‹ ë%8X†±…eEj6þÅIƒüÒt® òFƒfá ŸšvZ´‰;)äy*¦'d\Gˆoº¡Kl C„ -Ã]Šc™8uB&<@Gºò±5RuÑ­¼åä°2/_ÃÃØD3òÕÌÁÈ ,ô’ËõÍÌ—³ûANt•-dAÂy™ÙІL›9 #ù…^ÀðÌä/QR5k€d¡!ùf^Àðt¦F·ä¤ %B‹PÙóžøþƒ ! c|ò#ÍØž@×64XˆMhqzÂÑyP¡¥Ì4 JÑŠZô¢ͨF7ÊÑŽzô£ ©HGJÒ’šô¤(M©JWÊÒ–ºô¥0©LgJÓ‰´C¢4”èT'¹œêÔr‡ÛG|º°BD-*P ·Ž¤*Õ ïpꡌŠ8AH5PK-\>wUùPr^˜ øç?šõ¬h`C Z&5ý>ôØB$ì Ä , €eœ¹¤Ž¡ƒ˜ô¡#‘(`5e¾=Éc 11‚90²Š¿.6SÔ$êzWŠÈᲵʬ¢ŽáV˜6"÷°,h‡$Zˆ03¢°½þK#ÈT+Dv²!Æj7ÕZˆ<4¶%%ÿ±Y˜Øµ!÷PìnY›Õ‡ØC3À…¨ê`Ò–!„X.s9òBÊÄÐ"ûÀG=Ü!ŽhðÂŒàBþ"„Ô ·UÈÜÒ€  øÍ¯~÷Ëßþú÷¿–As#â«â@+$ø tór…µ¤¸/±,ÂŽ¬å5 —ŠS†zdÃxá4b]˜Ø!!਀Z ðЏYg¡È‰=š™0†¼7¾QÄ,Ï€ mŒÅ‰ÅH‚Vˆ`B&FH6 –°#\¤L¹D2L»ŒAfQFi_râ„`Å-Ž”ƒèáèƒGÃÈþa"Ù„è8-=Ž”:®C†ì|ä–ÓÅÈ‘c’䃀ƒÉiq²¢ú"×”$ò‡¢5¢eï(äËia±¢²×@5á¾lÆíAÞŒ–À`PotM×´g˜ôÙ nò“õ„>¿Œa—kj´‰ f=é£5”›.ãƒ@bÇfñ´žC8•ú%ª@±ÔUÛÉYŽ“2(õ#´Ã˪-‹Pq§ßþ¥ÃpjÃLŠPfüÎ/°q\s…„²«@ÁAý¼ì´4»NÝõËæIwÃû'EÈ™BJmHzNÐîKÌÜýïQÁ!çîtºåbbfÁÎl¸|¢`L†€£Þh¹7œþ¼ýŸRãð¹6%r‚‚oÛMUÆKºyr”ÿªHÄyõn €`’hÀ#‰'° ‘Ûãž- øºGây.À>9›Dò{…ÿøV‚D˜âûœG“ÁÀ7Èõ±ŒÀô!a¾]:Y}œL×vƒ÷ÄIþò AJÆú´:c[aÈ ~•ñµGQ]°5|õb [Ó×~†sQW~Óu[òWQM· ehP‚Å€q•‚*¸‚,Ø‚.ø‚0ƒ28ƒ4Xƒ6xƒ8˜ƒ:¸ƒ<؃>øƒ@„;ess-17.11/doc/images/skyline.jpg0000644005071500004540000001144313202324173013435 00000000000000ÿØÿàJFIFHHÿþCreated with GIMPÿÛC  !"$"$ÿÛCÿÀ½À"ÿÄÿÄM  Qa!1ATU“Ñ"q‘’”¡±Ò#2BRSÁb¢Óð5st²á$%346Vdr‚ÿÄÿÄ<1!AQSa‘’¡Ñá2qð"¢ÁâBcd±ñCDÿÚ ?ý”ˆ‹åzÊöE¤‘Á¬`.q<€! ”ëÙYˆ1%}Ρâ)¤‚”™–c[²ã*’Nd’v¬ _O`ŽBØb/y6¿Z8z;#š ±ákþ¡mȱQ~ð§üÿµu÷où¾«oEˆ"}àÿOùÿj{·üßU·¢Ä>ð§üÿµ=Ûþo‡ªÛÑcvg½—ZW1Îk„­Èƒ‘ã["Ö`Ö·ÒèhØÚ×¾àx*Ÿ ûšW¸¾VóDDWнêÔYë 2ù {Z5’ÓÀ»|K–70äE»WÓXàá¹b®˜Ç J&’ãmf›K¥„q´ò–ë?¡…*-p\¿Þ° "{tZç ò5/—’–¸RÕ;@œFÃÀýe½o™ˆ6Zs4#HÛþ¿Ê‡E®²Íf{ö[é× Á ­{w’ÑÑ´½XZŸ»÷ý—÷*y/ÇÑdµþòZ:6—« åSk°ÒÓ¾¢¦ŽŠcn“Þö†µ£Y%~øýÀ\Ôïî_£¤w6xú,•Šã·;¤™ÑÅBúÌŽZPRâ-\›å`û~»ÙbùÕcº3BÓcZÞïîVì“x¸¤wo¢âµiÒÿzߊÙVPÍÓ0ÛxsN`Šh¸®»÷äÃÂñÔÇüŪèûðü"Dj®o•·×ÁTbX^'[ ÙÜ,-Åi³}ù0Ç0¼u1ÿ17äÃÂñÔÇüÅ}¯pîhUþîâ|’´„Y¾ü˜c˜^:˜ÿ˜›òaŽaxêcþbkÜ;šÝÜO’VŠâ: Ok7 {'daå…“45À!#Þ¦Uœr6V°Ü•L±>˜Þ,FÂsÖÖÒÑ5®ª‡š]ʺê‚;•ºJWä ±ß…Ȯц—ü—é×Ë¿¶ŽƒÒý´t„•šTC%<ï‚V–ÈǸB¢¾DD\8ªcŠJ ´BÓ»ûhé=)ßÛGHAéTú<+_WKL4NŽFé4é»å__n¿ŸEë»åPŒ#aöz)bjÃü·ÕZûûhé=)ßÛGHAéUOn¿ŸEë»å^¯ÂfŒÃ©Ÿ±²Ô ‚„ÿØ{=ÍX?€}umïí£¤ ôªÆ$µZîÓìÕP}5Ù—BB]£S¾*áj¸[Æut¯¼Z\¾‘À¼X¡{¡?ù Ä K£´8…#›!Ò$e°õp+ꓪ¦¨m…×FÄUVY[$}(qÃÆˆòåŸÁhÔ•0UÓ²¢šVËÆmsyT>(Ãt÷xÌÑhÃX‹&\ØîÕIµÜ®xfäø%Á¡ß[϶ƒúzóX+*ú9 §«»à? ··¨ùvp[!‡i’à ÌqúÿkTXÇí z©ú}‚'¹”âQ0í¸¸†ƒäÑ'ϱkv›•%ÒTÒI¤Þ'4ý¦D,³ö„°Ï!£ÄPF_lú=FCì ÉcŽÌÜF~Mjó¤:|-ϧ7ÆãxßëÔ¾ú,#cg;m~6ÙéÖ±ä^ZÒç´fIÈp¦ÜÓÔ@É£¡Aã1¥ %æ”Ô5Wö,.¶v^³UˆSQÛÛÈ|®U9×zì_Ì¢ëBo]‹ù”]hRµ&!Éwb‡¯ðÎ{{U)×zì_Ì¢ëBo]‹ù”]hMIˆr]Øšÿ ç·µR‘]w®ÅüÊ.´&õØ¿™EÖ„Ô˜‡%݉¯ðÎ{{V‰¸ý!7ø‚´uKÜŠÅrÃøzZ+œ")LÅÀWEê˜\nŽŽ&A#ÀTžº:×rl®'¸?Å”l×å GZ¾‹X+¡nPÎ|p>ëÿ×Ò«kX×2®¢³Nké¥ë _kšæ‡4‚Ò3r…åU°%×»Ó›lÎúȆqxÛ«Íðò+4Ò¡|®†4¸å±e*#0<µÛ–’ÌnõáÕ¯šÖz­ù“ë_5¬õ[ó,÷¼¸WÞY2}Û©Þœù2ü!Šo˜ó-º¾žSL•Mœ§ñ3Q÷æ#SÀé_0´ÖH^ú‡»Œe÷N̸½”–<Á¶ÜWC£P±·(*Z›2Ê'aûf#¶:‚ç›8Øöð>7kiä?‚ß옋s¼A]4ï Òÿg«Œx’Âá¯[O¿~\·K}Ò‚Z…;*)å=°íK¾+ƒG\:2 œ?_­Šf ŽÉ‡ÆœNͧôú±UÎñÝ*¦I¡Ktcs’Ÿ>ës5œcÞ®+óÎè8*áƒ+£ºÛj%uuÆv»)!wËÜG¹_74Ý. Çq´ßØ.G&G6Y2sÈ?uÇWäÔ¡aØÓÛ/ØëÆŒƒ#¹Þ¾ÁOÅpßÛ°ã¥Ìoo ícjÒ‘i–IF(»¶ÕBK52pDÝ_½æRÕPÑRIS;´c`ÌíØ6¬Ò¾¦ªõuÓÑ.’WhÇäO¡¦#þæ¡VTÀc>"½ì–éï.å¤íôæðä9|åitðÅO …‘±¡­.,?kŽÕ@Ø“¥w+ÿ»ŠåWRj$Òݹu¦§2Û÷¢"(ªB"/€3<yEŸÞk_yÄÐÃK#„m‘±Äæ¼.þµ%"x : ¤_ä¸Ã0–äd ¾kÊË7kÅ7ì?s·Ãh¸:•’Âç<ØìÈv_x©¬OöŒþÙ´ÿ‡ù–k¤’É÷Æâ ÆÐls QÑXc›c%hp±ØEÆGЬo“ºqþÏÊ›äãnœ³Åòª’/4Öu¼çwšõ}SAÈgty+nù8Û§ìñ|©¾N6éÇû<_*©"k:Þs»ÇÍ5M!Ñä­»äãnœ³Åò¦ù8Û§ìñ|ª¤‰¬ëyÎï4Õ4†wG’š¿â¼C~§e=Úç-L,vf‹ZÜõäÐ3ó¨PH ‚A „^ôðË<͆9ò<äÖÂTgÉ,ï»És¥JŽ(iãÑcCZ8Xú[rûÔ×ÜGYRâú† ®¤ž2GþÎàìÕùW°/p²÷r2uCË¿ùàOXVr²_k3œ¯©cöq5¨«Ø³Ù1åYí±MØp^²È%¢ otO“Æ*Ä‹¤T4°»J8ÚPr›«º2ÊçÄÿ’ˆˆ¥(h¹êhhª^SIO3€È:HȸWB"..ôÚº2‹¨obw¦ÕÑ”]C{j"..ôÚº2‹¨obw¦ÕÑ”]C{j"..ôÚº2‹¨obw¦ÕÑ”]C{j"..ôÚº2‹¨obw¦ÕÑ”]C{j"/X£dQ¶8ØÖ1£&µ£ À½‘ÿÙess-17.11/doc/include-matrix.org0000644005071500004540000000620413202324173013445 00000000000000If you look in [[file:Makefile][Makefile]], you see that we currently (2012-11) have 6 (six!) master files which '@include' other .texi modules, of course the main one being our manual, [[file:ess.texi][ESS Manual]] (ess.texi). The "shocking" observation was that e.g., currfeat.texi has *not* been included by the manual ess.txi. Another surprise, only when compiling this table: We have much too many "bugs**.texi" (and then bugrept.texi for user bug reporting). |-------------------+------+---------+-----------+---------------+-------+--------| | File / Master: | ess. | readme. | announce. | README.M..S.. | news. | onews. | |-------------------+------+---------+-----------+---------------+-------+--------| | ess-defs.texi | 9 | 7 | 7 | | 2 | 2 | | ../VERSION | 60 | 14 | 14 | | | | | license.texi | 392 | 80 | 66 | | | | | stabilty.texi | 396 | 86 | 50 | | | | | requires.texi | 400 | 92 | 46 | | | | | getting.texi | 310 | 98 | 38 | | | | | installation.texi | 371 | 105 | - | | | | | currfeat.texi | 202 | 122 | 42 | | | | |-------------------+------+---------+-----------+---------------+-------+--------| | newfeat.texi | 297 | 128 | 70 | | 3 | | | onewfeat.texi | 298 | - | - | | | 3 | |-------------------+------+---------+-----------+---------------+-------+--------| | bugrept.texi | 35.. | 134 | 58 | | | | | mailing.texi | 35.. | 140 | 54 | | | | | authors.texi | *1) | 146 | 62 | | | | | credits.texi | 304 | - | - | | | | | help-s.texi | 413 | - | - | | | | | help-sas.texi | 35.. | - | - | 25 | | | | help-bugs.texi | 35.. | - | - | | | | | help-jags.texi | 35.. | - | - | | | | | help-sp.texi | - | - | - | 19 | | | | bugs.texi | 35.. | - | - | | | | |-------------------+------+---------+-----------+---------------+-------+--------| | ms-inst.texi | - | - | - | 12 | | | | bugs-ms.texi | - | - | - | 32 | | | | bugs-s.texi | - | - | - | 39 | | | | bugs-sas.texi | - | - | - | 46 | | | |-------------------+------+---------+-----------+---------------+-------+--------| *1): authors.texi is included *via* credits.texi (Numbers in table are *line numbers* of "@include .." in respective .texi file.) ess-17.11/doc/info/0000755005071500004540000000000013202324200011007 500000000000000ess-17.11/doc/info/dir0000644005071500004540000000116513202324173011444 00000000000000This is the file .../info/dir, which contains the topmost node of the Info hierarchy, called (dir)Top. The first time you invoke Info you start off looking at this node.  File: dir, Node: Top, This is the top of the INFO tree This (the Directory node) gives a menu of major topics. Typing "q" exits, "?" lists all Info commands, "d" returns here, "h" gives a primer for first-timers, "mEmacs" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: Emacs * ESS: (ess). Emacs Speaks Statistics (S/S+/R, SAS, BUGS, Stata, XLisp-Stat). ess-17.11/doc/info/ess.info0000644005071500004540000076571013202324200012416 00000000000000This is ess.info, produced by makeinfo version 6.3 from ess.texi. INFO-DIR-SECTION Emacs START-INFO-DIR-ENTRY * ESS: (ess). Emacs Speaks Statistics (S/S+/R, SAS, BUGS/JAGS and Stata). END-INFO-DIR-ENTRY ESS -- Emacs Speaks Statistics ******************************  File: ess.info, Node: Top, Next: Introduction, Up: (dir) ESS: Emacs Speaks Statistics **************************** ESS version 17.11 by A.J. Rossini, R.M. Heiberger, K. Hornik, M. Maechler, R.A. Sparapani, S.J. Eglen, S.P. Luque, H. Redestig, V. Spinu, and L. Henry. Emacs Speaks Statistics (ESS) provides an intelligent, consistent interface between the user and the software. ESS interfaces with SAS, S-PLUS, R, BUGS/JAGS and other statistical analysis packages on Unix, Linux and Microsoft Windows. ESS is itself a package within the emacs text editor and uses emacs features to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages. * Menu: * Introduction:: Overview of features provided by this package * Installation:: Installing ESS on your system * Interactive ESS:: Interacting with statistical programs * Entering commands:: Interacting with the ESS process * Evaluating code:: Sending code to the ESS process * Transcript Mode:: Manipulating saved transcript files * Editing objects:: How to create/edit objects and functions * Help:: Reading help files * Completion:: Various completion mechanisms * Developing with ESS:: Tools for package development and debugging * Extras:: Other ESS features for the S family * ESS for S:: Overview of ESS features for the S family * ESS for SAS:: * ESS for BUGS:: * ESS for JAGS:: * Mailing lists/bug reports:: How to get assistance with ESS * Customization:: Customizing ESS * Indices::  File: ess.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top 1 Introduction to ESS ********************* The S family (S, Splus and R) and SAS statistical analysis packages provide sophisticated statistical and graphical routines for manipulating data. Emacs Speaks Statistics (ESS) is based on the merger of two pre-cursors, S-mode and SAS-mode, which provided support for the S family and SAS respectively. Later on, Stata-mode was also incorporated. ESS provides a common, generic, and useful interface, through emacs, to many statistical packages. It currently supports the S family, SAS, BUGS/JAGS, and Stata with the level of support roughly in that order. A bit of notation before we begin. _emacs_ refers to both _GNU Emacs_ by the Free Software Foundation, as well as _XEmacs_ by the XEmacs Project. The emacs major mode 'ESS[language]', where 'language' can take values such as 'S', 'SAS', or 'XLS'. The inferior process interface (the connection between emacs and the running process) referred to as inferior ESS ('iESS'), is denoted in the modeline by 'ESS[dialect]', where 'dialect' can take values such as 'S3', 'S4', 'S+3', 'S+4', 'S+5', 'S+6', 'S+7', 'R', 'XLS', 'VST', 'SAS'. Currently, the documentation contains many references to ''S'' where actually any supported (statistics) language is meant, i.e., 'S' could also mean 'R' or 'SAS'. For exclusively interactive users of S, ESS provides a number of features to make life easier. There is an easy to use command history mechanism, including a quick prefix-search history. To reduce typing, command-line completion is provided for all S objects and "hot keys" are provided for common S function calls. Help files are easily accessible, and a paging mechanism is provided to view them. Finally, an incidental (but very useful) side-effect of ESS is that a transcript of your session is kept for later saving or editing. No special knowledge of Emacs is necessary when using S interactively under ESS. For those that use S in the typical edit-test-revise cycle when programming S functions, ESS provides for editing of S functions in Emacs edit buffers. Unlike the typical use of S where the editor is restarted every time an object is edited, ESS uses the current Emacs session for editing. In practical terms, this means that you can edit more than one function at once, and that the ESS process is still available for use while editing. Error checking is performed on functions loaded back into S, and a mechanism to jump directly to the error is provided. ESS also provides for maintaining text versions of your S functions in specified source directories. * Menu: * Features:: Why should I use ESS? * New features:: * Credits:: Authors of and contributors to ESS * Latest version:: Getting the latest version of ESS * Manual:: How to read this manual  File: ess.info, Node: Features, Next: New features, Up: Introduction 1.1 Why should I use ESS? ========================= Statistical packages are powerful software systems for manipulating and analyzing data, but their user interfaces often leave something something to be desired: they offer weak editor functionality and they differ among themselves so markedly that you have to re-learn how to do those things for each package. ESS is a package which is designed to make editing and interacting with statistical packages more uniform, user-friendly and give you the power of emacs as well. * Menu: * Current Features::  File: ess.info, Node: Current Features, Up: Features 1.1.1 Features Overview ----------------------- * Languages Supported: * S family (R and S+ AKA S-PLUS) * SAS * OpenBUGS/JAGS * Stata * Julia * Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia) * Syntactic indentation and highlighting of source code * Partial evaluation of code * Loading and error-checking of code * Source code revision maintenance * Batch execution (SAS, OpenBUGS/JAGS) * Use of imenu to provide links to appropriate functions * Interacting with the process (S family, SAS, Stata, Julia) * Command-line editing * Searchable Command history * Command-line completion of S family object names and file names * Quick access to object lists and search lists * Transcript recording * Interface to the help system * Transcript manipulation (S family, Stata) * Recording and saving transcript files * Manipulating and editing saved transcripts * Re-evaluating commands from transcript files * Interaction with Help Pages and other Documentation (R) * Fast Navigation * Sending Examples to running ESS process. * Fast Transfer to Further Help Pages * Help File Editing (R) * Syntactic indentation and highlighting of source code. * Sending Examples to running ESS process. * Previewing ESS provides several features which make it easier to interact with the ESS process (a connection between your buffer and the statistical package which is waiting for you to input commands). These include: * Command-line editing for fixing mistakes in commands before they are entered. The '-e' flag for S-plus provides something similar to this, but here you have the full range of Emacs commands rather than a limited subset. However, other packages do not necessarily have features like this built-in. *Note Command-line editing::. * Searchable command history for recalling previously-submitted commands. This provides all the features of the 'Splus -e' history mechanism, plus added features such as history searching. *Note Command History::. * Command-line completion of both object and file names for quick entry. This is similar to 'tcsh''s facility for filenames; here it also applies to object names and list components. *Note Completion::. * Hot-keys for quick entry of commonly-used commands in 'S' such as 'objects()' and 'search()'. *Note Hot keys::. * Transcript recording for a complete record of all the actions in an S session. *Note Transcript::. * Interface to the help system, with a specialized mode for viewing S help files. *Note Help::. If you commonly create or modify S functions, you will have found the standard facilities for this (the 'fix()' function, for example) severely limiting. Using S's standard features, one can only edit one function at a time, and you can't continue to use S while editing. ESS corrects these problems by introducing the following features: * Object editing. ESS allows you to edit more than one function simultaneously in dedicated Emacs buffers. The ESS process may continue to be used while functions are being edited. *Note Edit buffer::. * A specialized editing mode for S code, which provides syntactic indentation and highlighting. *Note Indenting::. * Facilities for loading and error-checking source files, including a keystroke to jump straight to the position of an error in a source file. *Note Error Checking::. * Source code revision maintenance, which allows you to keep historic versions of S source files. *Note Source Files::. * Facilities for evaluating S code such as portions of source files, or line-by-line evaluation of files (useful for debugging). *Note Evaluating code::. Finally, ESS provides features for re-submitting commands from saved transcript files, including: * Evaluation of previously entered commands, stripping away unnecessary prompts. *Note Transcript resubmit::.  File: ess.info, Node: New features, Next: Credits, Prev: Features, Up: Introduction 1.2 New features in ESS ======================= Changes and New Features in 17.11: * The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put '(require 'ess-r-mode)' or '(require 'ess-stata-mode)' in your init file. This is for experienced Emacs users as this requires setting up autoloads for '.R' files manually. We will keep maintaining 'ess-site' for easy loading of all ESS features. * Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor. * ESS[R]: New command 'ess-r-package-use-dir'. It sets the working directory of the current process to the current package directory. * ESS[R] Lookup for references in inferior buffers has been improved. New variable 'ess-r-package-source-roots' contains package sub-directories which are searched recursively during the file lookup point. Directories in 'ess-tracebug-search-path' are now also searched recursively. * ESS[R] Namespaced evaluation is now automatically enabled only in the 'R/' directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file. Changes and New Features in 16.10: * ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls. * ESS[R]: Backquoted names and '%op%' operators are recognised as sexp. This is useful for code navigation, e.g. with 'C-M-f' and 'C-M-b'. * ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode's code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set 'ess-roxy-fold-examples' to non-nil to automatically fold the examples field when you open a buffer. * ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set 'ess-roxy-fontify-examples' to non-nil to try it out. * ESS[R]: New package development command 'ess-r-devtools-ask' bound to 'C-c C-w C-a'. It asks with completion for any devtools command that takes 'pkg' as argument. * ESS[R]: New command 'C-c C-e C-r' to reload the inferior process. Currently only implemented for R. The R method runs 'inferior-ess-r-reload-hook' on reloading. * ESS[R]: 'ess-r-package-mode' is now activated in non-file buffers as well. Bug fixes in 16.10: * ESS[R]: Fix broken (un)flagging for debugging inside packages * ESS[R]: Fixes (and improvements) in Package development * ESS[R]: Completion no longer produces '...=' inside 'list( )'. * ESS[R]: Better debugging and tracing in packages. * ESS[R]: Better detection of symbols at point. * ESS[R]: No more spurious warnings on deletion of temporary files. * ESS[julia]: help and completion work (better) * ESS[julia]: available via 'ess-remote' Changes and New Features in 16.04: * ESS[R]: 'developer' functionality has been refactored. The new user interface consists of a single command 'ess-r-set-evaluation-env' bound by default to 'C-c C-t C-s'. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set 'ess-r-package-auto-set-evaluation-env' to 'nil' to disable this. * ESS[R]: New 'ess-r-package-mode' This development mode provides features to make package development easier. Currently, most of the commands are based on the 'devtools' packages and are accessible with 'C-c C-w' prefix. See the documentation of 'ess-r-package-mode' function for all available commands. With 'C-u' prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with '[pkg:NAME]' in the mode-line. * ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change 'options('html_type')'. * ESS[R]: New specialized breakpoints for debugging magrittr pipes * ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process. Bug fixes in 16.04: * ESS[R]: Roxygen blocks with backtics are now correctly filled * ESS[R]: Don't skip breakpoints in magrittr's 'debug_pipe' * ESS[R]: Error highlighting now understands 'testthat' type errors * ESS[Julia]: Added getwd and setwd generic commands Changes and New Features in 15.09: * ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with 'ess-offset-' give the actual offsets, those starting with 'ess-indent-' are control (commonly Boolean) variables, and those starting with 'ess-align-' are vertical alignment overrides which inhibit default offsets in specific situations. See 'ess-style-alist' for detailed description of the new indentation system and provided default indentation styles. * ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring 'ess-brace-imaginary-offset', 'ess-expression-offset' and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by 'ess-offset-continuations'. It can be set to either 'cascade' or 'straight' (the default). 'ess-arg-function-offset' has been replaced by 'ess-indent-from-lhs' and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to 'prev-call' and 'open-delim' in order to produce a consistent indentation. * ESS: A test framework has been set up. * ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with 'ess-offset-arguments' set to 'prev-line' is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation. * ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the 'examples' field without squashing the surrounding code in the comments. * ESS[R]: ESS can now format your code! This is controlled through the settings 'ess-fill-calls' and 'ess-fill-continuations'. When activated, '(fill-paragraph)' formats your calls and your formulas/continuations while making sure they don't go past 'fill-column'. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set 'ess-blink-filling' to nil to prevent this. * ESS[R]: Fix occasional missing error location fontification in inferior buffers. * ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace. * ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on 'julia-mode.el' from the Julia project. If you install ESS from the official tarball/zip file, 'julia-mode.el' is already included. Otherwise, if you install ESS by running 'make', then the latest version of 'julia-mode.el' is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running 'make', then ensure that you have the 'julia-mode.el', which you can get easily from MELPA for example. * iESS: For naming inferior processes, ESS can use 'projectile''s project root and it does so when 'ess-gen-proc-buffer-name-function' is set to 'ess-gen-proc-buffer-name:projectile-or-simple' as by default, or to another value beginning with 'ess-gen-proc-buffer-name:projectile-*'. Changes and New Features in 15.03-1: * ESS[R]: An indentation bug has been fixed (github issue 163) * ESS[R]: On windows, if 'ess-prefer-higher-bit' is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R. Changes and New Features in 15.03: * ESS[R]: Full native support for 'company-mode'. * ESS[R]: More efficient caching algorithm for R completion. * ESS: New offset variable 'ess-close-paren-offset' to control the indentation of the closing parentheses. * ESS[R]: Ask for CRAN mirror only once per emacs session. * ESS[R]: Detect 'library' and 'require' calls for better completion caching. * Buffer display is now customizable ('ess-show-buffer-action'). * Use 'y-or-n-p' instead of 'yes-or-no-p' throughout. * More support for ODS in ess-sas-graph-view. * Makefiles are now both UNIX and GNU friendly. * ESS[R]: Simplify directory lookup in 'ess-developer' (#137). * Make closed paren indentation consistent Bug Fixes in 15.03: * Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R). * Fix git version lookup * Don't check directory modtime in R dialect. * Declare all ess macros for edebug. * Add 'ess-smart-comma' to eldoc message functions. * Inform users when retrieving RDA aliases. * Line ending in '~' is also a continuation line. * Filing roxy paragraphs works as expected now. * In 'ess-developer-add-package', remove incorrect 'wait' argument from 'ess-get-words-from-vector' call. * Fix #96, #117, #120, #125, #134, #137. * Fix ess-quit-r. Call base::q() even if it is masked. * Fix 'ess-show-buffer' to always display the buffer in another window. * Makefile: Fix cd bug for directories with spaces in them * 'ess-kill-buffer-and-go' modified to not restart R Changes / Selected Bug Fixes in 14.09: * ESS[Julia]: Executable is changed to 'julia'. * ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported. * ESS[R]: Running R with 'gdb' debugger now works as expected * iESS: Inferior ESS buffers are now derived from 'comint-mode' * ESS[R]: 'ess-execute-screen-options' uses correct screen width in terminal sessions * ESS: 'ess-build-tags-for-directory' works when no TAGS file name was provided * ESS: 'ess-offset-statement-continued' is now respected everywhere except inside of the 'if' test condition. * ESS: New variable 'ess-offset-statement-first-continued' for indentation of the first line in multiline statements. * ESSR: Starting ',' in multiline statements indentation is now ignored to achieve a more pleasant alignment. * ESSR: Improved behavior of 'RET' in roxygen blocks. * ESS[R]: command cleaning with 'C-u C-u C-y' was broken with lines containing " + " * ESS[R]: fixed "empty watch window bug" * ESS[R]: don't ask for help location on ac-quick-help (request of github #81) * ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands * ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1) * ESS[Julia]: recognize function names ending with ! * ESS[Julia]: fix indentation of "for" comprehension syntax within brackets. Changes / Selected Bug Fixes in 13.09-1: * ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in '~/.config/ESSR/' directory on the remote machine * TRAMP: PAGER environment variable is now correctly set to 'inferior-ess-pager' * retrieval of help topics on remote machines is fixed * org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature) * 'ess-execute' is now bound to 'C-c C-e C-e' in 'ess-extra-map'. * completion works again in 'ess-execute' * ESS[R]: 'head' and 'tail' methods were replaced by 'htsummary' in 'ess-R-describe-object-at-point-commands' * ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation * ESS[transcript]: 'Clean Region' now works with multiline statements; 'ess-transcript-clean-region' etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by '+' * ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2 (https://github.com/emacs-ess/ESS/pulls/mlf176f2). Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately. * ESS[SAS]: 'ess-sas-edit-keys-toggle' default returns to 'nil' * ESS[R]: support for 'prettify-symbols-mode': contribution from Rudiger Sonderfeld * ESS[SWV]: knitr now evaluates in the current frame * ESS[developer]: ess-developer doesn't kill open DESCRIPTION files anymore * ESS[roxygen]: 'ess-roxy-preview-HTML' is now on 'C-c C-o C-w' and 'ess-roxy-preview-text' is now on 'C-c C-o C-t' * ESS: installation with 'make install' was simplified and should work out of the box on most *nix systems * ESS installation instructions simplified * fixed font-lock bug introduced in 13.09 that was causing very slow process output Changes/New Features in 13.09: * font-lock in process buffers doesn't "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input. * ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types. * ESS[julia]: a much better eldoc showing arguments of methods and data type constructors * ESS-developer: - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package 'ess-developer-packages'. The old behavior (activation on per-process basis) is still available on 'M-x ess-developer' in a process buffer. - integration with 'devtools' package. New command 'ess-developer-load-package' calls 'load_all' on the package containing current file. 'ess-developer-add-package' now offers IDO menu completions with available loading methods, currently 'library', and 'load_all'. Loading command can be customized with 'ess-developer-load-on-add-commands'. * 'TAB' now indents region if region is active (a contribution of Matthew Fidler in pull #41) * 'M-x ess-version' now reports full loading path and recognizes git and ELPA versions. * warning and error keyword are now highlighted with 'font-lock-warning-face' as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification). * eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process. * org-babel: evaluation is now org-friendly * help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by 'ess-help-reuse-window' custom variable. * help: ?foo pops IDO menu on multiple help files (so far it worked only for 'C-c C-v') * remote evaluation is considerably faster now on slow connections * ESS[R] tracebug R source references regular expressions are (mostly) language agnostic. * 'ess-function-call-face' inherits from 'font-lock-function-name-face' rather than 'font-lock-builtin-face'. * 'ess-inject-source' now accepts 'function-and-buffer' option. * Documentation: The "New Features" section (and 'NEWS') now represent recent changes: within the last year or so. All changes can be found in the new news.html (news.html) (or 'NEWS' and 'ONEWS'). * ESS[R] 'ess-rep-regexp' should no longer inf.loop (rarely!), and hence 'M-x ess-fix-miscellaneous' should neither. Changes/New Features in 13.05: * ESS[gretl]: Support for 'gretl' (both editing and sub-process interaction). A contribution of Ahmadou Dicko. * ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when 'ess-tracebug' is active). * ESS: 'C-c `' is now bound to 'ess-show-traceback' and 'C-c ~' is bound to 'ess-show-call-stack'. * ESS[R]: ESS stores function in 'ESSR' environment to avoid kludging users' global environment and accidental deletion. * ESS[R]: new variable 'ess-swv-processing-command' to control weaving and tangling. * ESS[R]: 'ess-default-style' has been changed (from 'DEFAULT') to 'RRR'. Use something like '(setq ess-default-style 'DEFAULT)' or '(setq ess-indent-level 2)' in your '~/.emacs' equivalent _before_ loading ESS, if you do not like this new "incompatible" default style. * ESS[julia]: ESS stores its functions in 'ESS' module. * ESS[julia]: Eldoc is now supported in julia modes * ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes * ESS[R]: 'ess-use-tracebug''s default has been changed to 't'. Set it to nil if you want to keep the previous behavior. * ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with 'ess-debug-minor-mode' and 'ess-debug-minor-mode-map'. * ESS[tracebug]: 'ess-tracebug-map' is an alias to 'ess-dev-map' 'C-c C-t'. * ESS[tracebug]: 'ess-bp-toggle-state' ('C-c C-t o') can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan). * ESS[tracebug]: 'ess-debug-flag-for-debugging' and 'ess-debug-unflag-for-debugging' work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in 'ess-developer-packages' ('C-c C-t C-a'). * ESS[R]: Eldoc (activated by 'ess-use-eldoc') has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user. Note that you can turn off ElDoc, by placing '(setq ess-use-eldoc nil)' in your '~/.emacs' file, prior to loading ESS, * ESS[SAS]: long over-looked 'SAS-mode-hook' appears! * ESS[SAS]: 'ess-sas-edit-keys-toggle' now defaults to 't' since 'sas-indent-line' is still broken, i.e. 'TAB' is now bound to 'ess-sas-tab-to-tab-stop' by default Changes/Bug Fixes in 12.09-2: * ESS: new 'ess-switch-to-end-of-proc-buffer' variable that controls whether 'C-c C-z' switches to the end of process buffer. The default is 't'. You can use prefix argument to 'C-c C-z' to toggle this variable. * ESS: fix in 'ess-eval-linewise' that was causing emacs to hang during R debugging with 'ess-eval-visibly' equal to 't'. * ESS: fix in 'ess-eval-linewise' that was causing emacs to recenter the prompt in visible window * ESS[tracebug]: A better handling of "Selection" prompts and debug related singlekey commands. * ESS: fix a bug in 'ess-switch-process' that was causing '*new*' selection to fail. * ESS[R]: Solve missing 'ess-local-process-name' bug in R-dired. * ESS[SWV]: 'ess-swv-PDF' doesn't ask for a command to run if there is only one command in 'ess-swv-pdflatex-commands'. * ESS[SWV]: 'ess-swv-weave' gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr). * ESS: 'ess-eval-*-and-step' functions go to next empty line at eob, instead of staying at the last line. Changes/New Features in 12.09-1: * ESS _Breaking Changes in Keys_: - New keymaps: 'ess-doc-map' bound to 'C-c C-d'; 'ess-extra-map' bound to 'C-c C-e'; 'ess-dump-object-into-edit-buffer' was moved on 'C-c C-e C-d' - roxygen map was moved on 'C-c C-o' and 'ess-roxy-update-entry' now resides on 'C-c C-o C-o' - ess-handy-commands is not bound anymore - 'ess-dev-map' (including 'ess-tracebug' and 'ess-developer') moved on 'C-c C-t' - 'C-c C-y' is deprecated in favor of 'C-c C-z C-z' * ESS[R] new command 'ess-describe-object-at-point' bound to 'C-c C-d C-e' (repeat 'C-e' or 'e' to cycle). It was inspired by Erik Iverson's 'ess-R-object-tooltip'. Customize 'ess-describe-at-point-method' to use tooltip instead of an electric buffer. * ESS: New command 'ess-build-tags-for-directory' bound to 'C-c C-e C-t' for building dialect specific tag tables. After building tags use 'M-.' to navigate to function and objects definitions. By default 'C-c C-e C-t' builds tags based on imenu regular expressions and also include other common languages '.c, .o, .cpp' etc. But it relies on external 'find' and 'etags' commands. If 'ess-build-tags-command' is defined (for 'R'), the inferior process is asked to build tags instead. * ESS: 'ess-switch-process' offers '*new*' alternative to start a new process instead of switching to one of the currently running processes. * ESS: Switching between processes ('C-c C-s') uses buffer names instead of the internal process names. Use 'M-x rename-buffer' command to conveniently rename your process buffers. * ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where 'proc' stands for the internal process name and 'dir' stands for the directory where the process was started in. The default is *proc*. For customization see 'ess-gen-proc-buffer-name-function'. * ESS: 'ess-eval-visibly-p' is deprecated in favor of 'ess-eval-visibly'. * ESS: New evaluation pattern 'nowait'. In addition to old 'nil' and 't' values, 'ess-eval-visibly' accepts 'nowait' for a visible evaluation with no waiting for the process. See 'ess-eval-visibly' for details on evaluation patterns. * ESS: New "Process" menu entry with process related commands and configuration * iESS: Process buffer is now automatically shown on errors * ESS: New 'ess-switch-to-inferior-or-script-buffer' command bound to 'C-c C-z' in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command. * ESSR-help: On multiple help pages with the same name, 'C-c C-v' now asks for user resolution directly in emacs. * ESS[R] ess-roxy: new variable 'ess-roxy-re' for fontification of cases where the number of leading '#' differs from 'ess-roxy-str'. * ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods' arguments after trailing ||. * ESS[R]: New 'ess-display-demos' command bound to 'C-c C-d o' and 'C-c C-d C-o' * ESS: New 'ess-help-web-search' command bound to 'C-c C-d w' and 'C-c C-d C-w' to facilitate interactive search of web resources. Implemented for 'R', 'Stata' and 'Julia'. See also 'ess-help-web-search-command'. * ESS: ess-pdf-viewer-pref accepts now command line arguments * ESS[Rnw]: Add knitr support. Customize 'ess-swv-processor' for the default processor. * ESS[Rnw]: More thorough renaming of remaining 'noweb-*' to 'ess-noweb-*'. * ESS[Rnw] new commands 'ess-eval-chunk-and-step' and 'ess-eval-chunk' bound to 'M-n C-c' and 'M-n C-M-x' to mirror standard ess commands in C-c map. * ESS[R] Auto-completion: new variable 'ess-ac-R-argument-suffix' to customize the insertion of trailing "=". Defaults to " = ". * ESS[Julia]: Added index, apropos and web-search to julia. * ESS help: More evaluation commands were added to ess-help mode ('C-c C-c', 'C-M-x' etc) Bug Fixes in 12.09-1: * iESShelp: Multiple help pages with the same name are properly handled on 'C-c C-v' * iESSremote: Evaluation with ESS remote no longer freezes emacs. * iESS: 'comint-previous-prompt' 'C-c C-p' no longer stops on secondary prompt "+". * iESS[R], iESS(Sqpe) [S] on Windows: The 'options("editor")' is now initialized to 'emacsclient' instead of the previous 'gnuclient'. The user may need to add the line '(server-start)' to the emacs initialization file. 'emacsclient' has been included with emacs since GNU Emacs 22.1. * ESS[Rnw] Fixed "connection to R" bug (in 12.09 only). * ESS[Rnw] Explicit 'ess-swv-stangle' and 'ess-swv-sweave' functions. * ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched "\"' * ESS[R] is more careful with the 'R' code injection. It now happens only once at the start of the session. * ESS[R]: Fixed auto-scrolling the comint buffer on evaluation. * ESS[Julia]: Solve several indentation and word navigation problems. * ESS[Julia]: Help system works again. Changes/New Features in 12.09: * Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs. * ESS[R]: On Windows, there is now a new customizable variable (currently called 'ess-directory-containing-R') to tell ESS where to look for the 'Rterm.exe' executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find 'Rterm.exe' executables when they are installed somewhere else. * ESS[julia]: _new_ mode for editing julia code ('*.jl'). Start with 'M-x julia'. Full interaction interface, imenu and basic error referencing are available. * ESS[R] noweb: 'noweb-mode' and 'noweb-font-lock-mode' have been renamed to 'ess-noweb-mode' and 'ess-noweb-font-lock-mode' to avoid conflicts with the "real" 'noweb-mode'. * ESS[R] noweb: The long standing font-lock bug has been solved in 'ess-noweb' interface. * ESS: Basic evaluation keys are now bound to 'ess-eval-region-*-' functions: - 'C-M-x' is bound to 'ess-eval-region-or-function-or-paragraph' - 'C-c C-c' is bound to 'ess-eval-region-or-function-or-paragraph-and-step' - 'C-RET' is bound to 'ess-eval-region-or-line-and-step' Each of these functions first evaluates the region whenever the region is active. * ESS: 'C-M-a'/'C-M-e' now step to beginning/end of paragraph if no function has been detected. * ESS: 'ess-eval-*-and-step' family of functions are now smarter, and don't step to end of buffer or end of chunk code ('@') when at the end of the code. * ESS: 'ess-handy-commands' function is bound to 'C-c h' * ESS: ESS is now _blinking_ the evaluated region. Set 'ess-blink-region' to nil to deactivate; 'ess-blink-delay' gives the duration of the blink. Evaluated region is "blinked" in 'highlight' face. * ESS[R-help] New key 'a' for "apropos()" in help buffers. Also available through 'C-c h'. * ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers. * ESS[R]: New customization interface for _font-lock_. ESS font-lock operates with predefined keywords. Default keywords are listed in 'ess-R-font-lock-keywords' and 'inferior-R-font-lock-keywords', which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through 'ESS/Font-lock' submenu. Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators. * ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set 'ess-use-auto-complete' to nil to deactivate. * ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default 'ac-auto-start' characters. * ESS no longer redefines default ac-sources, but only appends 'ac-source-filename' to it. * ESS: 'ac-source-R' now concatenates " = " to function arguments. * ESS: Menus for ESS and iESS have been reorganized and enriched with _Tracebug_ and _Developer_ submenus. * ESS[R]: 'ess-developer' and 'ess-tracebug' commands are available by default in 'ess-dev-map' which is bound to 'C-c d' in ESS and iESS maps. * ESS[R]: 'eldoc' truncates long lines whenever 'eldoc-echo-area-use-multiline-p' is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also 'ess-eldoc-abbreviation-style'. * ESS[R]: completion code pre-caches arguments of heavy generics such as 'plot' and 'print' to eliminated the undesirable delay on first request. * iESS: Prompts in inferior buffers are now highlighted uniformly with 'comint-highlight-prompt' face. * ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like 'Sys.sleep(5)' no longer stall emacs. * ESS: [R, S, Stata, Julia] have specialized 'ess-X-post-run-hook's, which are run at the end of subprocess initialization. * ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on 'C-c C-c' and other interactive commands. * ESS no longer auto-connects to a subprocess with a different dialect than the current buffer's one. * ESS: 'ess-arg-function-offset-new-line' is now a list for all the ESS indentation styles, which results in the following indentation after an open "(": a <- some.function(other.function( arg1, arg2) * ESS[SAS]: Improved MS RTF support for GNU Emacs; try 'ess-sas-rtf-portrait' and 'ess-sas-rtf-landscape'. Changes/Bug Fixes in 12.04-3: * ESS: basic support for package.el compatibility * ESS[R]: correct indentation of & and | continuation lines * 'M-x ess-version' shows the svn revision even after 'make install' * ESS[SAS]: improved XEmacs support * iESS[R]: better finding of previous prompt * ESS[Stata]: adjusted prompt for mata mode * ESS[R]: resolved name clashes with cl.el * ESS[R]: removed dependence on obsolete package assoc * New 'make' target 'lisp', to build the lisp-only part, i.e., not building the docs. Changes/New Features in 12.04-1: * iESS[Stata]: New interactive help invocation. * iESS[Stata]: New custom variable 'inferior-STA-start-file'. * iESS[Stata]: 'inferior-STA-program-name' is now "stata" and can be customized. * ESS[Stata] New sections in stata help files Syntax('s-S'), Remarks('r'), Title('t'). Bug Fixes in 12.04-1: * ESS[R]: Better 'ess-tracebug' error handling. * ESS[R]: Corrected 'ess-eldoc' help string filtering and improved argument caching. * ESS[R]: Indentation of non-block if/else/for/while lines fixed. * 'M-x ess-version' should work better. * ESS: Filename completion now again works inside strings. * iESS[Stata]: Fixed prompt detection issue. * ESS[Rd]: R is autostarted also from here, when needed. Changes/New Features in 12.04: * ESS: Reverting new behavior of 12.03, 'TAB' in 'ess-mode' no longer completes by default. If you want smart 'TAB' completion in R and S scripts, similarly to iESS behavior, set the variable 'ess-tab-complete-in-script' to 't'. Also see 'ess-first-tab-never-complete' for how to customize where first 'TAB' is allowed to complete. * ESS: completion is consistently bound to 'M-TAB' (aka 'M-C-i') in both Emacs23 and Emacs24. * ESS: The variable 'ess-arg-function-offset-new-line' introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to '(2) results in: a <- some.function( arg1, arg2) Changes/New Features in 12.03: * ESS indentation: new offset variable 'ess-arg-function-offset-new-line' controlling for the indentation of lines immediately following open '('. This is useful to shift backwards function arguments after a long function call expression: a <- some.function( arg1, arg2) instead of the old a <- some.function( arg1, arg2) If '(' is not followed by new line the behavior is unchanged: a <- some.function(arg1, arg2) This variable should be set as part of indentation style lists, or in ess-mode hook. * ESS[R]: 'C-c .' sets (indentation) style. * ESS: In ESS buffers 'yank'('C-y') command accepts double argument 'C-u C-u' to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files. * Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features ("Completion", "Developing with ESS", "ESS tracebug", "ESS developer", "ESS ElDoc", "IDO Completion" and "Evaluating Code") * RefCard: Reference card was updated to include new features. * Eldoc: Eldoc was rewritten and is activated by default. See 'ess-use-eldoc', 'ess-eldoc-show-on-symbol', 'ess-eldoc-abbreviation-style' variables for how to change the default behavior. _Note:_ 'skeleton-pair-insert-maybe' prohibits eldoc display, on '(' insertion. * ESS[R]: Eldoc shows arguments of a generic function whenever found. * ESS: 'TAB' in 'ess-mode' now indents and completes, if there is nothing to indent. Set 'ess-first-tab-never-completes-p' to 't' to make 'TAB' never complete on first invocation. Completion mechanism is similar to the completion in the 'inferior-ess-mode' - a filename expansion is tried, if not found ESS completes the symbol by querying the process. * ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by 'completion-at-point'. Also in accordance with emacs conventions, ESS doesn't bind 'M-TAB' for emacs 24 or higher. 'M-TAB' calls the default 'complete-symbol'. * ESS[R]: Out of the box integration with 'Auto Completion' mode http://cx4a.org/software/auto-complete (http://cx4a.org/software/auto-complete) . Three AC sources 'ac-source-R-args', 'ac-source-R-objects' and 'ac-source-R' are provided. The last one combines the previous two and makes them play nicely together. Set 'ess-use-auto-complete' to 't' to start using it. Refer to documentation string of 'ac-use-auto-complete' for further information. * ESS[R]: New unified and fast argument completion system, comprised of 'ess-funname.start', 'ess-function-arguments', 'ess-get-object-at-point'. Eldoc and auto-completion integration are using this system. * ESS: 'ess-switch-to-end-of-ESS'('C-c C-z'), and 'ess-switch-to-ESS'('C-c C-y'): Automatically start the process whenever needed. * ESS[R]: 'roxy' knows about previewing text version of the documentation. Bound to 'C-c C-e t'. * ESS[R]: Solved the "nil filename" bug in roxygen support. * ESS[R]: 'ess-tracebug' is now part of ESS: New Features: - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don't have to source your file, but just evaluate your code in normal fashion. Variable 'ess-tracebug-inject-source-p' controls this behavior - if t, always inject source reference, if ''function', inject only for functions (this is the default), if 'nil', never inject. During the source injection the value of 'ess-eval-visibly' is ignored. - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer ('C-c '') and jumps through this buffers if still alive, or in original org buffer otherwise. - New keys in watch mode: '?' and 'd' - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook * ESS[R]: New package 'ess-developer' to evaluate 'R' code directly in the package environment and namespace. It can be toggled on and off with 'C-c d t'. When 'ess-developer' is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with 'C-d a', and remove with 'C-d r'. Source the current file with 'C-d s'.Evaluation function which depend on '`ess-eval-region'' ask for the package to source the code into, 'ess-eval-function' and alternatives search for the function name in the development packages' environment and namespace and insert the definition accordingly. See the documentation section "Developing with ESS/ESS developer" for more details. * ESS[R] help system: New Features: - 'q' quits window instead of calling 'ess-switch-to-end-of-ESS'. This is consistent with emacs behavior help and other special buffers (_breaking change_). - 'k' kills window without asking for the name (pointed by Sam Steingold) - Help map inherits from 'special-mode-map' as sugested by Sam Steingold. - Package index: new function 'ess-display-index' bound to 'i' in help mode map. - Package vignettes: new function 'ess-display-vignettes' bound to 'v' in help mode map. - Display help in HTML browser: new function 'ess-display-help-in-browser' bound to 'w' in help mode map. It depends on 'R''s 'browser' option. - New custom variable 'ess-help-pop-to-buffer': if non-nil ESS help buffers are given focus on display. The default is 't' (_breaking change_). - New menu entries for the above functions. - Bogus help buffers are no longer generated by default, i.e. buffers of the form "No documentation for 'foo' in specified packages and libraries: you could try '??foo' ". 'ess-help-kill-bogus-buffers' now defaults to 't'. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning. * ESS now uses 'IDO' completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set 'ess-use-ido' to nil if you don't want the IDO completion. See the documentation string of 'ess-use-ido' for more information about 'IDO' and ESS configuration. * ESS[S]: "','" is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from '`ess-handy-commands'' list. If 'ess-R-smart-operators' is t '`ess-smart-comma' also inserts " " after comma. * ESS[S], notably 'R': Variable '`ess-handy-commands'' stores an alist of useful commands which are called by 'ess-smart-comma' in the inferior buffer. Currently containing: change-directory 'ess-change-directory' help-index 'ess-display-index' help-object 'ess-display-help-on-object' vignettes 'ess-display-vignettes' objects[ls] 'ess-execute-objects' search 'ess-execute-search' set-width 'ess-execute-screen-options' install.packages 'ess-install.packages' library 'ess-library' setRepos 'ess-setRepositories' sos 'ess-sos' Handy commands: 'ess-library', 'ess-install.packages', etc - ask for item with completion and execute the correspond command. 'ess-sos' is a interface to 'findFn' function in package 'sos'. If package 'sos' is not found, ask user for interactive install. * ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of 'ess-tracebug' and developer status of 'ess-developer' in all associated buffers. * ESS: New 'ess-completing-read' mechanism: ESS uses 'ido' completions whenever possible. Variable 'ess-use-ido' controls whether to use ido completion or not. Active by default. * ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future. * ESS[S]: New custom variable 'inferior-ess-S-prompt' to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation ('comint-previous-prompt' and 'comint-next-prompt') the inferior buffers. * ESS[R]: Internal 'R' completion retrieval ('ess-R-complete-object-name') was rewritten and is faster now. * ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged. * ESS: new functions to manipulate process plists: 'ess-process-get' and 'ess-process-set'. * ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in '> '. This could be overwritten by setting 'inferor-ess-primary-prompt'. * ESS[S], notably 'R': Saved command history: ESS-HISTORY-FILE now accepts 't' (default), 'nil', or a file name. By setting it to 'nil' no command line history is saved anymore. ESS-HISTORY-DIRECTORY now allows to have the history all saved in one "central" file. * ESS[R]: more Roxygen improvements. * ESS[R]: 'C-c .' to set (indentation) style. * ESS[R]: Functions with non-standard names (for example 'aaa-bbb:cc') are properly handled by font-lock and evaluation routines. * ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in 'ess-get-words-from-vector' and 'ess-command'.  File: ess.info, Node: Credits, Next: Latest version, Prev: New features, Up: Introduction 1.3 Authors of and contributors to ESS ====================================== The ESS environment is built on the open-source projects of many contributors, dating back to 1989 where Doug Bates and Ed Kademan wrote S-mode to edit S and Splus files in GNU Emacs. Frank Ritter and Mike Meyer added features, creating version 2. Meyer and David Smith made further contributions, creating version 3. For version 4, David Smith provided significant enhancements to allow for powerful process interaction. John Sall wrote GNU Emacs macros for SAS source code around 1990. Tom Cook added functions to submit jobs, review listing and log files, and produce basic views of a dataset, thus creating a SAS-mode which was distributed in 1994. In 1994, A.J. Rossini extended S-mode to support XEmacs. Together with extensions written by Martin Maechler, this became version 4.7 and supported S, Splus, and R. In 1995, Rossini extended SAS-mode to work with XEmacs. In 1997, Rossini merged S-mode and SAS-mode into a single Emacs package for statistical programming; the product of this marriage was called ESS version 5. Richard M. Heiberger designed the inferior mode for interactive SAS and SAS-mode was further integrated into ESS. Thomas Lumley's Stata mode, written around 1996, was also folded into ESS. More changes were made to support additional statistical languages, particularly XLispStat. ESS initially worked only with Unix statistics packages that used standard-input and standard-output for both the command-line interface and batch processing. ESS could not communicate with statistical packages that did not use this protocol. This changed in 1998 when Brian Ripley demonstrated use of the Windows Dynamic Data Exchange (DDE) protocol with ESS. Heiberger then used DDE to provide interactive interfaces for Windows versions of Splus. In 1999, Rodney A. Sparapani and Heiberger implemented SAS batch for ESS relying on files, rather than standard-input/standard-output, for Unix, Windows and Mac. In 2001, Sparapani added BUGS batch file processing to ESS for Unix and Windows. * The multiple process code, and the idea for 'ess-eval-line-and-next-line' are by Rod Ball. * Thanks to Doug Bates for many useful suggestions. * Thanks to Martin Maechler for reporting and fixing bugs, providing many useful comments and suggestions, and for maintaining the ESS mailing lists. * Thanks to Frank Ritter for updates, particularly the menu code, and invaluable comments on the manual. * Thanks to Ken'ichi Shibayama for his excellent indenting code, and many comments and suggestions. * Thanks to Aki Vehtari for adding interactive BUGS support. * Thanks to Brendan Halpin for bug-fixes and updates to Stata-mode. * Last, but definitely not least, thanks to the many ESS users and contributors to the ESS mailing lists. _ESS_ is being developed and currently maintained by * A.J. Rossini (mailto:blindglobe@gmail.com) * Richard M. Heiberger (mailto:rmh@temple.edu) * Kurt Hornik (mailto:Kurt.Hornik@R-project.org) * Martin Maechler (mailto:maechler@stat.math.ethz.ch) * Rodney A. Sparapani (mailto:rsparapa@mcw.edu) * Stephen Eglen (mailto:stephen@gnu.org) * Sebastian P. Luque (mailto:spluque@gmail.com) * Henning Redestig (mailto:henning.red@googlemail.com) * Vitalie Spinu (mailto:spinuvit@gmail.com) * Lionel Henry (mailto:lionel.hry@gmail.com)  File: ess.info, Node: Latest version, Next: Manual, Prev: Credits, Up: Introduction 1.4 Getting the latest version of ESS ===================================== The latest released version of ESS is always available on the web at: ESS web page (http://ess.r-project.org) or StatLib (http://lib.stat.cmu.edu/general/ESS/) 1.4.1 Git for ESS development ----------------------------- For development and experimentation on new ESS features, there is now a GitHub branch for ESS, available at .  File: ess.info, Node: Manual, Prev: Latest version, Up: Introduction 1.5 How to read this manual =========================== If you need to install ESS, read *note Installation:: for details on what needs to be done before proceeding to the next chapter. In this manual we use the standard notation for describing the keystrokes used to invoke certain commands. 'C-' means hold the CONTROL key while typing the character . 'M-' means hold the META or EDIT or ALT key down while typing . If there is no META, EDIT or ALT key, instead press and release the ESC key and then type . All ESS commands can be invoked by typing 'M-x command'. Most of the useful commands are bound to keystrokes for ease of use. Also, the most popular commands are also available through the emacs menubar, and finally, if available, a small subset are provided on the toolbar. Where possible, keybindings are similar to other modes in emacs to strive for a consistent user interface within emacs, regardless of the details of which programming language is being edited, or process being run. Some commands, such as 'M-x R' can accept an optional 'prefix' argument. To specify the prefix argument, you would type 'C-u' before giving the command. e.g. If you type 'C-u M-x R', you will be asked for command line options that you wish to invoke the R process with. Emacs is often referred to as a 'self-documenting' text editor. This applies to ESS in two ways. First, limited documentation about each ESS command can be obtained by typing 'C-h f'. For example, if you type 'C-h f ess-eval-region', documentation for that command will appear in a separate *Help* buffer. Second, a complete list of keybindings that are available in each ESS mode and brief description of that mode is available by typing 'C-h m' within an ESS buffer. Emacs is a versatile editor written in both C and lisp; ESS is written in the Emacs lisp dialect (termed 'elisp') and thus benefits from the flexible nature of lisp. In particular, many aspects of ESS behaviour can be changed by suitable customization of lisp variables. This manual mentions some of the most frequent variables. A full list of them however is available by using the Custom facility within emacs. (Type 'M-x customize-group RET ess RET' to get started.) *note Customization:: provides details of common user variables you can change to customize ESS to your taste, but it is recommended that you defer this section until you are more familiar with ESS.  File: ess.info, Node: Installation, Next: Interactive ESS, Prev: Introduction, Up: Top 2 Installing ESS on your system ******************************* The following section details those steps necessary to get ESS running on your system. * Menu: * Step by step instructions:: * License:: * Stability:: * Requirements::  File: ess.info, Node: Step by step instructions, Next: License, Up: Installation 2.1 Step by step instructions ============================= 1. Download the latest zip or tgz archive from ESS downloads area (http://ess.r-project.org/index.php?Section=download) and unpack it into a directory where you would like ESS to reside. We will denote this directory as '/path/to/ESS/' hereafter. Alternatively you can use 'git' to fetch the most recent development version to your local machine with: git clone https://github.com/emacs-ess/ESS.git /path/to/ESS 2. Optionally, compile elisp files and build the documentation with: cd /path/to/ESS/ make Without this step, info, pdf and html documentation and reference card will not be available. 3. Optionally, install into your local machine with 'make install'. You might need administrative privileges: make install The files are installed into '/usr/share/emacs' directory. For this step to run correctly on macOS, you will need to adjust the 'PREFIX' path in 'Makeconf'. The necessary code and instructions are commented in that file. 4. If you have performed the 'make install' step from above, just add (require 'ess-site) to your '~/.emacs' file. Otherwise, you should add '/path/to/ESS/lisp/' to your emacs load path and then load ESS with the following lines in your '~/.emacs': (add-to-list 'load-path "/path/to/ESS/lisp/") (load "ess-site") 5. Restart your Emacs and check that ESS was loaded from a correct location with 'M-x ess-version'. _Note for Windows and macOS users:_ The most straightforward way to install Emacs on your machine is by downloading the Emacs binary by Vincent Goulet; either Emacs Modified for macOS (https://vigou3.github.io/emacs-modified-macos/) or from Emacs Modified for Windows (https://vigou3.github.io/emacs-modified-windows/). _Note for XEmacs users:_ Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.  File: ess.info, Node: License, Next: Stability, Prev: Step by step instructions, Up: Installation 2.2 License =========== The source and documentation of ESS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ESS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details.  File: ess.info, Node: Stability, Next: Requirements, Prev: License, Up: Installation 2.3 Stability ============= All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated!  File: ess.info, Node: Requirements, Prev: Stability, Up: Installation 2.4 Requirements ================ ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS. ESS supports current, and recent, stable versions of GNU Emacs (currently, 24.3 or higher; alpha/beta/pre-release versions are NOT SUPPORTED). Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ended with ESS 12.04-4. To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi).  File: ess.info, Node: Interactive ESS, Next: Entering commands, Prev: Installation, Up: Top 3 Interacting with statistical programs *************************************** As well as using ESS to edit your source files for statistical programs, you can use ESS to run these statistical programs. In this chapter, we mostly will refer by example to running S from within emacs. The emacs convention is to name such processes running under its control as 'inferior processes'. This term can be slightly misleading, in which case these processes can be thought of 'interactive processes'. Either way, we use the term 'iESS' to refer to the Emacs mode used to interact with statistical programs. * Menu: * Starting up:: * Multiple ESS processes:: * ESS processes on Remote Computers:: * S+elsewhere and ESS-elsewhere:: * Customizing startup::  File: ess.info, Node: Starting up, Next: Multiple ESS processes, Up: Interactive ESS 3.1 Starting an ESS process =========================== To start an S session on Unix or on Windows when you use the Cygwin bash shell, simply type 'M-x S RET'. To start an S session on Windows when you use the MSDOS prompt shell, simply type 'M-x S+6-msdos RET'. S will then (by default) ask the question S starting data directory? Enter the name of the directory you wish to start S from (that is, the directory you would have 'cd''d to before starting S from the shell). This directory should have a '.Data' subdirectory. You will then be popped into a buffer with name '*S*' which will be used for interacting with the ESS process, and you can start entering commands.  File: ess.info, Node: Multiple ESS processes, Next: ESS processes on Remote Computers, Prev: Starting up, Up: Interactive ESS 3.2 Running more than one ESS process ===================================== ESS allows you to run more than one ESS process simultaneously in the same session. Each process has a name and a number; the initial process (process 1) is simply named (using S-PLUS as an example) 'S+3:1'. The name of the process is shown in the mode line in square brackets (for example, '[S+3:2]'); this is useful if the process buffer is renamed. Without a prefix argument, 'M-x S' starts a new ESS process, using the first available process number. With a prefix argument (for R), 'C-u M-x R' allows for the specification of command line options. You can switch to any active ESS process with the command 'M-x ess-request-a-process'. Just enter the name of the process you require; completion is provided over the names of all running S processes. This is a good command to consider binding to a global key.  File: ess.info, Node: ESS processes on Remote Computers, Next: S+elsewhere and ESS-elsewhere, Prev: Multiple ESS processes, Up: Interactive ESS 3.3 ESS processes on Remote Computers ===================================== ESS works with processes on remote computers as easily as with processes on the local machine. The recommended way to access a statistical program on remote computer is to start it with tramp. Require tramp in your .emacs file: '(require 'tramp)' Now start an ssh session with 'C-x C-f /ssh:user@host: RET'. Tramp should open a dired buffer in your remote home directory. Now call your favorite ESS process ('R', 'Julia', 'stata' etc) as you would usually do on local machine: 'M-x R'. Alternatively you can start your process normally ('M-x R'). After you are asked for starting directory, simply type '/ssh:user@host: RET'. R process will be started on the remote machine. To simplify the process even further create a "config" file in your '.ssh/' folder and add an account. For example if you use amazon EC2, it might look like following: Host amazon Hostname ec2-54-215-203-181.us-west-1.compute.amazonaws.com User ubuntu IdentityFile ~/.ssh/my_amazon_key.pem ForwardX11 yes With this configuration '/ssh:amazon:' is enough to start a connection. The ForwardX11 is needed if you want to see R graphic device showing on the current machine Other ways to setup a remote ESS connection are through 'ess-remote'. 1. Start a new shell, telnet or ssh buffer and connect to the remote computer (e.g. use, 'M-x shell', 'M-x telnet' or 'M-x ssh'; ssh.el is available at ). 2. Start the ESS process on the remote machine, for example with one of the commands 'Splus', or 'R', or 'sas -stdio'. 3. Start 'M-x ess-remote'. You will be prompted for a program name with completion. Choose one. Your process is now known to ESS. All the usual ESS commands ('C-c C-n' and its relatives) now work with the S language processes. For SAS you need to use a different command 'C-c i' (that is a regular 'i', not a 'C-i') to send lines from your 'myfile.sas' to the remote SAS process. 'C-c i' sends lines over invisibly. With ess-remote you get teletype behavior--the data input, the log, and the listing all appear in the same buffer. To make this work, you need to end every PROC and DATA step with a "RUN;" statement. The "RUN;" statement is what tells SAS that it should process the preceding input statements. 4. Graphics (interactive) on the remote machine. If you run X11 (*Note X11::, X Windows) on both the local and remote machines then you should be able to display the graphs locally by setting the 'DISPLAY' environment variable appropriately. Windows users can download 'xfree86' from cygwin. 5. Graphics (static) on the remote machine. If you don't run the X window system on the local machine, then you can write graphics to a file on the remote machine, and display the file in a graphics viewer on the local machine. Most statistical software can write one or more of postscript, GIF, or JPEG files. Depending on the versions of emacs and the operating system that you are running, emacs itself may display '.gif' and '.jpg' files. Otherwise, a graphics file viewer will be needed. Ghostscript/ghostview may be downloaded to display '.ps' and '.eps' files. Viewers for GIF and JPEG are usually included with operating systems. *Note ESS(SAS)--Function keys for batch processing::, for more information on using the F12 key for displaying graphics files with SAS. Should you or a colleague inadvertently start a statistical process in an ordinary '*shell*' buffer, the 'ess-remote' command can be used to convert it to an ESS buffer and allow you to use the ESS commands with it. We have two older commands, now deprecated, for accessing ESS processes on remote computers. *Note S+elsewhere and ESS-elsewhere::.  File: ess.info, Node: S+elsewhere and ESS-elsewhere, Next: Customizing startup, Prev: ESS processes on Remote Computers, Up: Interactive ESS 3.4 S+elsewhere and ESS-elsewhere ================================= These commands are now deprecated. We recommend 'ess-remote'. We have two versions of the elsewhere function. 'S+elsewhere' is specific for the S-Plus program. The more general function 'ESS-elsewhere' is not as stable. 1. Enter 'M-x S+elsewhere'. You will be prompted for a starting directory. I usually give it my project directory on the local machine, say '~myname/myproject/' Or enter 'M-x ESS-elsewhere'. You will be prompted for an ESS program and for a starting directory. I usually give it my project directory on the local machine, say '~myname/myproject/' 2. The '*S+3*' buffer will appear with a prompt from the local operating system (the unix prompt on a unix workstation or with cygwin bash on a PC, or the msdos prompt on a PC without bash). emacs may freeze because the cursor is at the wrong place. Unfreeze it with 'C-g' then move the cursor to the end with 'M->'. With 'S+elsewhere' the buffer name is based on the name of the ESS program. 3. Enter 'telnet myname@other.machine' (or 'ssh myname@other.machine'). You will be prompted for your password on the remote machine. Use 'M-x send-invisible' before typing the password itself. 4. Before starting the ESS process, type 'stty -echo nl' at the unix prompt. The '-echo' turns off the echo, the 'nl' turns off the newline that you see as '^M'. 5. You are now talking to the unix prompt on the other machine in the '*S+3*' buffer. cd into the directory for the current project and start the ESS process by entering 'Splus' or 'R' or 'sas -stdio' as appropriate. If you can login remotely to your Windows 2000, then you should be able to run 'Sqpe' on the Windows machine. I haven't tested this and no-one has reported their tests to me. You will not be able to run the GUI through this text-only connection. 6. Once you get the S or R or SAS prompt, then you are completely connected. All the 'C-c C-n' and related commands work correctly in sending commands from 'myfile.s' or 'myfile.r' on the PC to the '*S+3*' buffer running the S or R or SAS program on the remote machine. 7. Graphics on the remote machine works fine. If you run the X window system on the remote unix machine you should be able to display them in 'xfree86' on your PC. If you don't run X Windows, or X11, then you can write graphics to the postscript device and copy it to your PC with dired and display it with ghostscript.  File: ess.info, Node: Customizing startup, Prev: S+elsewhere and ESS-elsewhere, Up: Interactive ESS 3.5 Changing the startup actions ================================ If you do not wish ESS to prompt for a starting directory when starting a new process, set the variable 'ess-ask-for-ess-directory' to 'nil'. In this case, the starting directory will be set using one of the following methods: 1. If the variable 'ess-directory-function' stores the name of a function, the value returned by this function is used. The default for this variable is nil. 2. Otherwise, if the variable 'ess-directory' stores the name of a directory (ending in a slash), this value is used. The default for this variable is nil. 3. Otherwise, the working directory of the current buffer is used. If 'ess-ask-for-ess-directory' has a non-'nil' value (as it does by default) then the value determined by the above rules provides the default when prompting for the starting directory. Incidentally, 'ess-directory' is an ideal variable to set in 'ess-pre-run-hook'. If you like to keep a record of your S sessions, set the variable 'ess-ask-about-transfile' to 't', and you will be asked for a filename for the transcript before the ESS process starts. -- User Option: ess-ask-about-transfile If non-'nil', as for a file name in which to save the session transcript. Enter the name of a file in which to save the transcript at the prompt. If the file doesn't exist it will be created (and you should give it a file name ending in '.St'); if the file already exists the transcript will be appended to the file. (Note: if you don't set this variable but you still want to save the transcript, you can still do it later -- *note Saving transcripts::.) Once these questions are answered (if they are asked at all) the S process itself is started by calling the program name specified in the variable 'inferior-ess-program'. If you need to pass any arguments to this program, they may be specified in the variable 'inferior-S_PROGRAM_NAME-args' (e.g. if 'inferior-ess-program' is '"S+"' then the variable to set is 'inferior-S+-args'. It is not normally necessary to pass arguments to the S program; in particular do not pass the '-e' option to 'Splus', since ESS provides its own command history mechanism. By default, the new process will be displayed in the same window in the current frame. If you wish your S process to appear in a separate variable, customize the variable 'inferior-ess-own-frame'. Alternatively, change 'inferior-ess-same-window' if you wish the process to appear within another window of the current frame.  File: ess.info, Node: Entering commands, Next: Evaluating code, Prev: Interactive ESS, Up: Top 4 Interacting with the ESS process ********************************** The primary function of the ESS package is to provide an easy-to-use front end to the S interpreter. This is achieved by running the S process from within an Emacs buffer, called hereafter _inferior_ buffer, which has an active 'inferior-ess-mode'. The features of Inferior S mode are similar to those provided by the standard Emacs shell mode (*note (emacs)Shell Mode::). Command-line completion of S objects and a number of 'hot keys' for commonly-used S commands are also provided for ease of typing. * Menu: * Command-line editing:: Entering commands and fixing mistakes * Transcript:: Manipulating the transcript * Command History:: Command History * History expansion:: References to historical commands * Hot keys:: Hot keys for common commands * Statistical Process running in ESS?:: * Emacsclient:: Using emacsclient * Other:: Other commands provided by inferior-ESS  File: ess.info, Node: Command-line editing, Next: Transcript, Up: Entering commands 4.1 Entering commands and fixing mistakes ========================================= Sending a command to the ESS process is as simple as typing it in and pressing the key: -- Command: inferior-ess-send-input 'RET' Send the command on the current line to the ESS process. If you make a typing error before pressing 'RET' all the usual Emacs editing commands are available to correct it (*note Basic: (emacs)Basic.). Once the command has been corrected you can press (even if the cursor is not at the end of the line) to send the corrected command to the ESS process. Emacs provides some other commands which are useful for fixing mistakes: 'C-c C-w' 'backward-kill-word' Deletes the previous word (such as an object name) on the command line. 'C-c C-u' 'comint-kill-input' Deletes everything from the prompt to point. Use this to abandon a command you have not yet sent to the ESS process. 'C-c C-a' 'comint-bol' Move to the beginning of the line, and then skip forwards past the prompt, if any. *Note (emacs)Shell Mode::, for other commands relevant to entering input.  File: ess.info, Node: Transcript, Next: Command History, Prev: Command-line editing, Up: Entering commands 4.2 Manipulating the transcript =============================== Most of the time, the cursor spends most of its time at the bottom of the ESS process buffer, entering commands. However all the input and output from the current (and previous) ESS sessions is stored in the process buffer (we call this the transcript) and often we want to move back up through the buffer, to look at the output from previous commands for example. Within the process buffer, a paragraph is defined as the prompt, the command after the prompt, and the output from the command. Thus 'M-{' and 'M-}' move you backwards and forwards, respectively, through commands in the transcript. A particularly useful command is 'M-h' ('mark-paragraph') which will allow you to mark a command and its entire output (for deletion, perhaps). For more information about paragraph commands, *note Paragraphs: (emacs)Paragraphs. If an ESS process finishes and you restart it in the same process buffer, the output from the new ESS process appears after the output from the first ESS process separated by a form-feed ('^L') character. Thus pages in the ESS process buffer correspond to ESS sessions. Thus, for example, you may use 'C-x [' and 'C-x ]' to move backward and forwards through ESS sessions in a single ESS process buffer. For more information about page commands, *note Pages: (emacs)Pages. * Menu: * Last command:: Manipulating the output from the last command * Process buffer motion:: Viewing older commands * Transcript resubmit:: Re-submitting commands from the transcript * Saving transcripts:: Keeping a record of your S session  File: ess.info, Node: Last command, Next: Process buffer motion, Up: Transcript 4.2.1 Manipulating the output from the last command --------------------------------------------------- Viewing the output of the command you have just entered is a common occurrence and ESS provides a number of facilities for doing this. Whenever a command produces a longish output, it is possible that the window will scroll, leaving the next prompt near the middle of the window. The first part of the command output may have scrolled off the top of the window, even though the entire output would fit in the window if the prompt were near the bottom of the window. If this happens, you can use the following comint commands: 'comint-show-maximum-output' to move to the end of the buffer, and place cursor on bottom line of window to make more of the last output visible. To make this happen automatically for all inputs, set the variable 'comint-scroll-to-bottom-on-input' to 't' or ''this'. If the first part of the output is still not visible, use 'C-c C-r' ('comint-show-output'), which moves cursor to the previous command line and places it at the top of the window. Finally, if you want to discard the last command output altogether, use 'C-c C-o' ('comint-delete-output'), which deletes everything from the last command to the current prompt. Use this command judiciously to keep your transcript to a more manageable size.  File: ess.info, Node: Process buffer motion, Next: Transcript resubmit, Prev: Last command, Up: Transcript 4.2.2 Viewing older commands ---------------------------- If you want to view the output from more historic commands than the previous command, commands are also provided to move backwards and forwards through previously entered commands in the process buffer: 'C-c C-p' 'comint-previous-input' Moves point to the preceding command in the process buffer. 'C-c C-n' 'comint-next-input' Moves point to the next command in the process buffer. Note that these two commands are analogous to 'C-p' and 'C-n' but apply to command lines rather than text lines. And just like 'C-p' and 'C-n', passing a prefix argument to these commands means to move to the ARG'th next (or previous) command. (These commands are also discussed in *note Shell History Copying: (emacs)Shell History Copying.) There are also two similar commands (not bound to any keys by default) which move to preceding or succeeding commands, but which first prompt for a regular expression (*note Syntax of Regular Expression: (emacs)Regexps.), and then moves to the next (previous) command matching the pattern. 'comint-backward-matching-input regexp arg' 'comint-forward-matching-input regexp arg' Search backward (forward) through the transcript buffer for the ARG'th previous (next) command matching REGEXP. ARG is the prefix argument; REGEXP is prompted for in the minibuffer.  File: ess.info, Node: Transcript resubmit, Next: Saving transcripts, Prev: Process buffer motion, Up: Transcript 4.2.3 Re-submitting commands from the transcript ------------------------------------------------ When moving through the transcript, you may wish to re-execute some of the commands you find there. ESS provides three commands to do this; these commands may be used whenever the cursor is within a command line in the transcript (if the cursor is within some command _output_, an error is signalled). Note all three commands involve the key. 'RET' 'inferior-ess-send-input' *Note Command-line editing::. 'C-c RET' 'comint-copy-old-input' Copy the command under the cursor to the current command line, but don't execute it. Leaves the cursor on the command line so that the copied command may be edited. When the cursor is not after the current prompt, the key has a slightly different behavior than usual. Pressing 'RET' on any line containing a command that you entered (i.e. a line beginning with a prompt) sends that command to the ESS process once again. If you wish to edit the command before executing it, use 'C-c RET' instead; it copies the command to the current prompt but does not execute it, allowing you to edit it before submitting it. These commands work even if the current line is a continuation line (i.e. the prompt is '+' instead of '>') -- in this case all the lines that form the multi-line command are concatenated together and the resulting command is sent to the ESS process (currently this is the only way to resubmit a multi-line command to the ESS process in one go). If the current line does not begin with a prompt, an error is signalled. This feature, coupled with the command-based motion commands described above, could be used as a primitive history mechanism. ESS provides a more sophisticated mechanism, however, which is described in *note Command History::.  File: ess.info, Node: Saving transcripts, Prev: Transcript resubmit, Up: Transcript 4.2.4 Keeping a record of your S session ---------------------------------------- To keep a record of your S session in a disk file, use the Emacs command 'C-x C-w' ('write-file') to attach a file to the ESS process buffer. The name of the process buffer will (probably) change to the name of the file, but this is not a problem. You can still use S as usual; just remember to save the file before you quit Emacs with 'C-x C-s'. You can make ESS prompt you for a filename in which to save the transcript every time you start S by setting the variable 'ess-ask-about-transfile' to 't'; *Note Customizing startup::. We recommend you save your transcripts with filenames that end in '.St'. There is a special mode (ESS transcript mode -- *note Transcript Mode::) for editing transcript files which is automatically selected for files with this suffix. S transcripts can get very large, so some judicious editing is appropriate if you are saving it in a file. Use 'C-c C-o' whenever a command produces excessively long output (printing large arrays, for example). Delete erroneous commands (and the resulting error messages or other output) by moving to the command (or its output) and typing 'M-h C-w'. Also, remember that 'C-c C-x' (and other hot keys) may be used for commands whose output you do not wish to appear in the transcript. These suggestions are appropriate even if you are not saving your transcript to disk, since the larger the transcript, the more memory your Emacs process will use on the host machine. Finally, if you intend to produce S source code (suitable for using with 'source()' or inclusion in an S function) from a transcript, then the command 'ess-transcript-clean-region' may be of use. *note Transcript Mode: Clean.  File: ess.info, Node: Command History, Next: History expansion, Prev: Transcript, Up: Entering commands 4.3 Command History =================== ESS provides easy-to-use facilities for re-executing or editing previous commands. An input history of the last few commands is maintained (by default the last 500 commands are stored, although this can be changed by setting the variable 'comint-input-ring-size' in 'inferior-ess-mode-hook'.) The simplest history commands simply select the next and previous commands in the input history: 'M-p' 'comint-previous-input' Select the previous command in the input history. 'M-n' 'comint-next-input' Select the next command in the input history. For example, pressing 'M-p' once will re-enter the last command into the process buffer after the prompt but does not send it to the ESS process, thus allowing editing or correction of the command before the ESS process sees it. Once corrections have been made, press 'RET' to send the edited command to the ESS process. If you want to select a particular command from the history by matching it against a regular expression (*note Syntax of Regular Expression: (emacs)Regexps.), to search for a particular variable name for example, these commands are also available: 'M-r' 'comint-history-isearch-backward-regexp' Prompt for a regular expression, and search backwards through the input history for a command matching the expression. A common type of search is to find the last command that began with a particular sequence of characters; the following two commands provide an easy way to do this: 'C-c M-r' 'comint-previous-matching-input-from-input' Select the previous command in the history which matches the string typed so far. 'C-c M-s' 'comint-next-matching-input-from-input' Select the next command in the history which matches the string typed so far. Instead of prompting for a regular expression to match against, as they instead select commands starting with those characters already entered. For instance, if you wanted to re-execute the last 'attach()' command, you may only need to type 'att' and then 'C-c M-r' and 'RET'. *Note Shell History Ring: (emacs)Shell Ring, for a more detailed discussion of the history mechanism, and do experiment with the 'In/Out' menu to explore the possibilities. Many ESS users like to have even easier access to these, and recommend to add something like (eval-after-load "comint" '(progn (define-key comint-mode-map [up] 'comint-previous-matching-input-from-input) (define-key comint-mode-map [down] 'comint-next-matching-input-from-input) ;; also recommended for ESS use -- (setq comint-scroll-to-bottom-on-output 'others) (setq comint-scroll-show-maximum-output t) ;; somewhat extreme, almost disabling writing in *R*, *shell* buffers above prompt: (setq comint-scroll-to-bottom-on-input 'this) )) to your '.emacs' file, where the last two settings are typically desirable for the situation where you work with a script (e.g., 'code.R') and send code chunks to the process buffer (e.g. '*R*'). Note however that these settings influence all 'comint'-using emacs modes, not just the ESS ones, and for that reason, these customization cannot be part of 'ESS' itself. * Menu: * Saving History::  File: ess.info, Node: Saving History, Up: Command History 4.3.1 Saving the command history -------------------------------- The 'ess-history-file' variable, which is 't' by default, together with 'ess-history-directory', governs if and where the command history is saved and restored between sessions. By default, 'ess-history-directory' is 'nil', and the command history will be stored (as text file) in the 'ess-directory', e.g., as '.Rhistory'. Experienced ESS users often work exclusively with script files rather than in a (e.g., '*R') console session, and may not want to save any history files, and hence have: (setq ess-history-file nil) or will only want one global command history file and have: (setq ess-history-directory "~/.R/") in your '.emacs' file.  File: ess.info, Node: History expansion, Next: Hot keys, Prev: Command History, Up: Entering commands 4.4 References to historical commands ===================================== Instead of searching through the command history using the command described in the previous section, you can alternatively refer to a historical command directly using a notation very similar to that used in 'csh'. History references are introduced by a '!' or '^' character and have meanings as follows: '!!' The immediately previous command '!-N' The Nth previous command '!text' The last command beginning with the string 'text' '!?text' The last command containing the string 'text' In addition, you may follow the reference with a "word designator" to select particular "words" of the input. A word is defined as a sequence of characters separated by whitespace. (You can modify this definition by setting the value of 'comint-delimiter-argument-list' to a list of characters that are allowed to separate words and themselves form words.) Words are numbered beginning with zero. The word designator usually begins with a ':' (colon) character; however it may be omitted if the word reference begins with a '^', '$', '*' or '-'. If the word is to be selected from the previous command, the second '!' character can be omitted from the event specification. For instance, '!!:1' and '!:1' both refer to the first word of the previous command, while '!!$' and '!$' both refer to the last word in the previous command. The format of word designators is as follows: '0' The zeroth word (i.e. the first one on the command line) 'N' The Nth word, where N is a number '^' The first word (i.e. the second one on the command line) '$' The last word 'X-Y' A range of words; '-Y' abbreviates '0-Y' '*' All the words except the zeroth word, or nothing if the command had just one word (the zeroth) 'X*' Abbreviates X-$ 'X-' Like 'X*', but omitting the last word In addition, you may surround the entire reference except for the first '!' by braces to allow it to be followed by other (non-whitespace) characters (which will be appended to the expanded reference). Finally, ESS also provides quick substitution; a reference like '^old^new^' means "the last command, but with the first occurrence of the string 'old' replaced with the string 'new'" (the last '^' is optional). Similarly, '^old^' means "the last command, with the first occurrence of the string 'old' deleted" (again, the last '^' is optional). To convert a history reference as described above to an input suitable for S, you need to "expand" the history reference, using the key. For this to work, the cursor must be preceded by a space (otherwise it would try to complete an object name) and not be within a string (otherwise it would try to complete a filename). So to expand the history reference, type 'SPC TAB'. This will convert the history reference into an S command from the history, which you can then edit or press to execute. For example, to execute the last command that referenced the variable 'data', type '!?data SPC TAB RET'.  File: ess.info, Node: Hot keys, Next: Statistical Process running in ESS?, Prev: History expansion, Up: Entering commands 4.5 Hot keys for common commands ================================ ESS provides a number of commands for executing the commonly used functions. These commands below are basically information-gaining commands (such as 'objects()' or 'search()') which tend to clutter up your transcript and for this reason some of the hot keys display their output in a temporary buffer instead of the process buffer by default. This behavior is controlled by the following option: -- User Option: ess-execute-in-process-buffer If non-'nil', means that these commands will produce their output in the process buffer instead. In any case, passing a prefix argument to the commands (with 'C-u') will reverse the meaning of 'ess-execute-in-process-buffer' for that command, i.e. the output will be displayed in the process buffer if it usually goes to a temporary buffer, and vice-versa. These are the hot keys that behave in this way: -- Command: ess-execute-objects POSN 'C-c C-x' Sends the 'objects()' command to the ESS process. A prefix argument specifies the position on the search list (use a negative argument to toggle 'ess-execute-in-process-buffer' as well). A quick way to see what objects are in your working directory. A prefix argument of 2 or more means get objects for that position. A negative prefix argument POSN gets the objects for that position, as well as toggling 'ess-execute-in-process-buffer'. -- Command: ess-execute-search INVERT 'C-c C-s' Sends the 'inferior-ess-search-list-command' command to the 'ess-language' process; 'search()' in S. Prefix INVERT toggles 'ess-execute-in-process-buffer'. 'ess-execute' may seem pointless when you could just type the command in anyway, but it proves useful for 'spot' calculations which would otherwise clutter your transcript, or for evaluating an expression while partway through entering a command. You can also use this command to generate new hot keys using the Emacs keyboard macro facilities; *note Keyboard Macros: (emacs)Keyboard Macros. The following hot keys do not use 'ess-execute-in-process-buffer' to decide where to display the output -- they either always display in the process buffer or in a separate buffer, as indicated: -- Command: ess-load-file FILENAME 'C-c C-l' Prompts for a file (FILENAME) to load into the ESS process using 'source()'. If there is an error during loading, you can jump to the error in the file with the following function. -- Command: ess-parse-errors ARG RESET 'C-c `' or 'C-x `' Visits next 'next-error' message and corresponding source code. If all the error messages parsed so far have been processed already, the message buffer is checked for new ones. A prefix ARG specifies how many error messages to move; negative means move back to previous error messages. Just 'C-u' as a prefix means reparse the error message buffer and start at the first error. The RESET argument specifies restarting from the beginning. *Note Error Checking::, for more details. -- Command: ess-display-help-on-object OBJECT COMMAND 'C-c C-v' Pops up a help buffer for an S OBJECT or function. If COMMAND is supplied, it is used instead of 'inferior-ess-help-command'. See *note Help:: for more details. -- Command: ess-quit 'C-c C-q' Issue an exiting command to the inferior process, additionally also running 'ess-cleanup' for disposing of any temporary buffers (such as help buffers and edit buffers) that may have been created. Use this command when you have finished your S session instead of simply quitting at the inferior process prompt, otherwise you will need to issue the command 'ess-cleanup' explicitly to make sure that all the files that need to be saved have been saved, and that all the temporary buffers have been killed.  File: ess.info, Node: Statistical Process running in ESS?, Next: Emacsclient, Prev: Hot keys, Up: Entering commands 4.6 Is the Statistical Process running under ESS? ================================================= For the S languages (S, S-Plus, R) ESS sets an option in the current process that programs in the language can check to determine the environment in which they are currently running. ESS sets 'options(STERM="iESS")' for S language processes running in an inferior 'iESS[S]' or 'iESS[R]' buffer. ESS sets 'options(STERM="ddeESS")' for independent S-Plus for Windows processes running in the GUI and communicating with ESS via the DDE (Microsoft Dynamic Data Exchange) protocol through a 'ddeESS[S]' buffer. Other values of 'options()$STERM' that we recommend are: * 'length': Fixed length xterm or telnet window. * 'scrollable': Unlimited length xterm or telnet window. * 'server': S-Plus Stat Server. * 'BATCH': BATCH. * 'Rgui': R GUI. * 'Commands': S-Plus GUI without DDE interface to ESS. Additional values may be recommended in the future as new interaction protocols are created. Unlike the values 'iESS' and 'ddeESS', ESS can't set these other values since the S language program is not under the control of ESS.  File: ess.info, Node: Emacsclient, Next: Other, Prev: Statistical Process running in ESS?, Up: Entering commands 4.7 Using emacsclient ===================== When starting R or S under Unix, ESS sets 'options(editor="emacsclient")'. (Under Microsoft Windows, it will use gnuclient.exe rather than emacsclient, but the same principle applies.) Within your R session, for example, if you have a function called 'iterator', typing 'fix(iterator)', will show that function in a temporary Emacs buffer. You can then correct the function. When you kill the buffer, the definition of the function is updated. Using 'edit()' rather than 'fix()' means that the function is not updated. Finally, the S function 'page(x)' will also show a text representation of the object 'x' in a temporary Emacs buffer.  File: ess.info, Node: Other, Prev: Emacsclient, Up: Entering commands 4.8 Other commands provided by inferior-ESS =========================================== The following commands are also available in the process buffer: -- Command: comint-interrupt-subjob 'C-c C-c' Sends a Control-C signal to the ESS process. This has the effect of aborting the current command. -- Command: ess-switch-to-inferior-or-script-buffer TOGGLE-EOB 'C-c C-z' When in process buffer, return to the most recent script buffer. When in a script buffer pop to the associated process buffer. This is a single key command, that is 'C-c C-z C-z' from a script buffer returns to the original buffer. If TOGGLE-EOB is given, the value of 'ess-switch-to-end-of-proc-buffer' is toggled. -- User Option: ess-switch-to-end-of-proc-buffer If non-'nil', 'ess-switch-to-inferior-or-script-buffer' goes to end of process buffer. Other commands available in Inferior S mode are discussed in *note (emacs)Shell Mode::.  File: ess.info, Node: Evaluating code, Next: Transcript Mode, Prev: Entering commands, Up: Top 5 Sending code to the ESS process ********************************* Other commands are also available for evaluating portions of code in the S process. These commands cause the selected code to be evaluated directly by the ESS process as if you had typed them in at the command line; the 'source()' function is not used. You may choose whether both the commands and their output appear in the process buffer (as if you had typed in the commands yourself) or if the output alone is echoed. The behavior is controlled by the variable: -- User Option: ess-eval-visibly Non-'nil' means 'ess-eval-*' commands display commands and output in the process buffer. Default is 't'. Passing a prefix ('C-u') VIS to any of the following commands, however, reverses the meaning of 'ess-eval-visibly' for that command only -- for example 'C-u C-c C-j' suppresses the current line of S (or other) code in the ESS process buffer. This method of evaluation is an alternative to S's 'source()' function when you want the input as well as the output to be displayed. (You can sort of do this with 'source()' when the option 'echo=T' is set, except that prompts do not get displayed. ESS puts prompts in the right places.) Primary commands for evaluating code are: -- Command: ess-eval-region-or-line-and-step VIS Send the highlighted region or current line and step to next line of code. -- Command: ess-eval-region-or-function-or-paragraph VIS 'C-M-x' Sends the current selected region or function or paragraph. -- Command: ess-eval-region-or-function-or-paragraph-and-step VIS 'C-c C-c' Like 'ess-eval-region-or-function-or-paragraph' but steps to next line of code. Other, not so often used, evaluation commands are: -- Command: ess-eval-line VIS 'C-c C-j' Sends the current line to the ESS process. -- Command: ess-eval-line-and-go VIS 'C-c M-j' Like 'ess-eval-line' but additionally switches point to the ESS process. -- Command: ess-eval-function VIS NO-ERROR 'C-c C-f' Sends the S function containing point to the ESS process. -- Command: ess-eval-function-and-go VIS 'C-c M-f' Like 'ess-eval-function' but additionally switches point to the ESS process. -- Command: ess-eval-region START END TOGGLE MESSAGE 'C-c C-r' Sends the current region to the ESS process. -- Command: ess-eval-region-and-go START END VIS 'C-c M-r' Like 'ess-eval-region' but additionally switches point to the ESS process. -- Command: ess-eval-buffer VIS 'C-c C-b' Sends the current buffer to the ESS process. -- Command: ess-eval-buffer-and-go VIS 'C-c M-b' Like 'ess-eval-buffer' but additionally switches point to the ESS process. All the above 'ess-eval-*' commands are useful for evaluating small amounts of code and observing the results in the process buffer for debugging purposes, or for generating transcripts from source files. When editing S functions, it is generally preferable to use 'C-c C-l' to update the function's value. In particular, 'ess-eval-buffer' is now largely obsolete. A useful way to work is to divide the frame into two windows; one containing the source code and the other containing the process buffer. If you wish to make the process buffer scroll automatically when the output reaches the bottom of the window, you will need to set the variable 'comint-scroll-to-bottom-on-output' to ''others' or 't'.  File: ess.info, Node: Transcript Mode, Next: Editing objects, Prev: Evaluating code, Up: Top 6 Manipulating saved transcript files ************************************* Inferior S mode records the transcript (the list of all commands executed, and their output) in the process buffer, which can be saved as a "transcript file", which should normally have the suffix '.St'. The most obvious use for a transcript file is as a static record of the actions you have performed in a particular S session. Sometimes, however, you may wish to re-execute commands recorded in the transcript file by submitting them to a running ESS process. This is what Transcript Mode is for. If you load file a with the suffix '.St' into Emacs, it is placed in S Transcript Mode. Transcript Mode is similar to Inferior S mode (*note Entering commands::): paragraphs are defined as a command and its output, and you can move though commands either with the paragraph commands or with 'C-c C-p' and 'C-c C-n'. * Menu: * Resubmit:: Resubmitting commands from the transcript file * Clean:: Cleaning transcript files  File: ess.info, Node: Resubmit, Next: Clean, Up: Transcript Mode 6.1 Resubmitting commands from the transcript file ================================================== Three commands are provided to re-submit command lines from the transcript file to a running ESS process. They are: -- Command: ess-transcript-send-command 'M-RET' Sends the current command line to the ESS process, and execute it. -- Command: ess-transcript-copy-command 'C-c RET' Copy the current command to the ESS process, and switch to it (ready to edit the copied command). -- Command: ess-transcript-send-command-and-move 'RET' Sends the current command to the ESS process, and move to the next command line. This command is useful for submitting a series of commands. Note that the first two commands are similar to those on the same keys in inferior S Mode. In all three cases, the commands should be executed when the cursor is on a command line in the transcript; the prompt is automatically removed before the command is submitted.  File: ess.info, Node: Clean, Prev: Resubmit, Up: Transcript Mode 6.2 Cleaning transcript files ============================= Yet another use for transcript files is to extract the command lines for inclusion in an S source file or function. Transcript mode provides one command which does just this: -- Command: ess-transcript-clean-region BEG END EVEN-IF-READ-ONLY 'C-c C-w' Strip the transcript in the region (given by BEG and END), leaving only commands. Deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Prefix argument EVEN-IF-READ-ONLY means to clean even if the buffer is read-only. Don't forget to remove any erroneous commands first! The remaining command lines may then be copied to a source file or edit buffer for inclusion in a function definition, or may be evaluated directly (*note Evaluating code::) using the code evaluation commands from S mode, also available in S Transcript Mode.  File: ess.info, Node: Editing objects, Next: Help, Prev: Transcript Mode, Up: Top 7 Editing objects and functions ******************************* ESS provides facilities for editing S objects within your Emacs session. Most editing is performed on S functions, although in theory you may edit datasets as well. Edit buffers are always associated with files, although you may choose to make these files temporary if you wish. Alternatively, you may make use of a simple yet powerful mechanism for maintaining backups of text representations of S functions. Error-checking is performed when S code is loaded into the ESS process. * Menu: * Edit buffer:: Edit objects in a specialized buffer * Loading:: Loading source files into the ESS process * Error Checking:: Detecting errors in source files * Indenting:: Indenting and formatting S code * Other edit buffer commands:: Commands for motion, completion and more * Source Files:: Maintaining S source files * Source Directories:: Names and locations of dump files  File: ess.info, Node: Edit buffer, Next: Loading, Up: Editing objects 7.1 Creating or modifying S objects =================================== To edit an S object, type -- Command: ess-dump-object-into-edit-buffer OBJECT 'C-c C-e C-d' Edit an S OBJECT in its own edit buffer. from within the ESS process buffer ('*S*'). You will then be prompted for an object to edit: you may either type in the name of an existing object (for which completion is available using the 'TAB' key), or you may enter the name of a new object. A buffer will be created containing the text representation of the requested object or, if you entered the name of a non-existent object at the prompt and the variable 'ess-function-template' is non-'nil', you will be presented with a template defined by that variable, which defaults to a skeleton function construct. You may then edit the function as required. The edit buffer generated by 'ess-dump-object-into-edit-buffer' is placed in the 'ESS' major mode which provides a number of commands to facilitate editing S source code. Commands are provided to intelligently indent S code, evaluate portions of S code and to move around S code constructs. Note: when you dump a file with 'C-c C-e C-d', ESS first checks to see whether there already exists an edit buffer containing that object and, if so, pops you directly to that buffer. If not, ESS next checks whether there is a file in the appropriate place with the appropriate name (*note Source Files::) and if so, reads in that file. You can use this facility to return to an object you were editing in a previous session (and which possibly was never loaded to the S session). Finally, if both these tests fail, the ESS process is consulted and a 'dump()' command issued. If you want to force ESS to ask the ESS process for the object's definition (say, to reformat an unmodified buffer or to revert back to S's idea of the object's definition) pass a prefix argument to 'ess-dump-object-into-edit-buffer' by typing 'C-u C-c C-e C-d'.  File: ess.info, Node: Loading, Next: Error Checking, Prev: Edit buffer, Up: Editing objects 7.2 Loading source files into the ESS process ============================================= The best way to get information -- particularly function definitions -- into S is to load them in as source file, using S's 'source' function. You have already seen how to create source files using 'C-c C-e C-d'; ESS provides a complementary command for loading source files (even files not created with ESS!) into the ESS process, namely 'ess-load-file' ('C-c C-l'). *note Hot keys::. After typing 'C-c C-l' you will prompt for the name of the file to load into S; usually this is the current buffer's file which is the default value (selected by simply pressing 'RET' at the prompt). You will be asked to save the buffer first if it has been modified (this happens automatically if the buffer was generated with 'C-c C-e C-d'). The file will then be loaded, and if it loads successfully you will be returned to the ESS process.  File: ess.info, Node: Error Checking, Next: Indenting, Prev: Loading, Up: Editing objects 7.3 Detecting errors in source files ==================================== If any errors occur when loading a file with 'C-c C-l', ESS will inform you of this fact. In this case, you can jump directly to the line in the source file which caused the error by typing 'C-c `' ('ess-parse-errors'). You will be returned to the offending file (loading it into a buffer if necessary) with point at the line S reported as containing the error. You may then correct the error, and reload the file. Note that none of the commands in an S source file will take effect if any part of the file contains errors. Sometimes the error is not caused by a syntax error (loading a non-existent file for example). In this case typing 'C-c `' will simply display a buffer containing S's error message. You can force this behavior (and avoid jumping to the file when there _is_ a syntax error) by passing a prefix argument to 'ess-parse-errors' with 'C-u C-c `'.  File: ess.info, Node: Indenting, Next: Other edit buffer commands, Prev: Error Checking, Up: Editing objects 7.4 Indenting and formatting S code =================================== ESS provides a sophisticated mechanism for indenting S source code (thanks to Ken'ichi Shibayama). Compound statements (delimited by '{' and '}') are indented relative to their enclosing block. In addition, the braces have been electrified to automatically indent to the correct position when inserted, and optionally insert a newline at the appropriate place as well. Lines which continue an incomplete expression are indented relative to the first line of the expression. Function definitions, 'if' statements, calls to 'expression()' and loop constructs are all recognized and indented appropriately. User variables are provided to control the amount of indentation in each case, and there are also a number of predefined indentation styles to choose from. Comments are also handled specially by ESS, using an idea borrowed from the Emacs-Lisp indentation style. By default, comments beginning with '###' are aligned to the beginning of the line. Comments beginning with '##' are aligned to the current level of indentation for the block containing the comment. Finally, comments beginning with '#' are aligned to a column on the right (the 40th column by default, but this value is controlled by the variable 'comment-column',) or just after the expression on the line containing the comment if it extends beyond the indentation column. You turn off the default behavior by adding the line '(setq ess-indent-with-fancy-comments nil)' to your '.emacs' file. ESS also supports Roxygen entries which is R documentation maintained in the source code as comments *Note Roxygen::. The indentation commands provided by ESS are: -- Command: ess-indent-or-complete 'TAB' Indents the current line as S code. Try to indent first, and if code is already properly indented, complete instead. In ess-mode, only tries completion if 'ess-tab-complete-in-script' is non-nil. See also 'ess-first-tab-never-complete'. -- User Option: ess-tab-complete-in-script If non-'nil', 'TAB' in script buffers tries to complete if there is nothing to indent. -- User Option: ess-first-tab-never-complete If non-'nil', 'TAB' never tries to complete in ess-mode. The default ''symbol' does not try to complete if the next char is a valid symbol constituent. There are more options, see the help ('C-h v'). -- Command: ess-indent-exp 'TAB' Indents each line in the S (compound) expression which follows point. Very useful for beautifying your S code. -- Command: ess-electric-brace '{' '}' The braces automatically indent to the correct position when typed. The following Emacs command are also helpful: 'RET' 'LFD' 'newline-and-indent' Insert a newline, and indent the next line. (Note that most keyboards nowadays do not have a key, but and 'C-j' are equivalent.) 'M-;' 'indent-for-comment' Indents an existing comment line appropriately, or inserts an appropriate comment marker. * Menu: * Styles:: Changing styles for indentation and alignment  File: ess.info, Node: Styles, Up: Indenting 7.4.1 Changing styles for code indentation and alignment -------------------------------------------------------- The combined value of twelve variables (4 of three groups 'ess-indent-*', 'ess-offset-*' and 'ess-align-*') that control indentation etc are collectively termed a style. ESS provides several styles covering the common styles of indentation: 'DEFAULT', 'OWN', 'GNU', 'BSD', 'K&R', 'C++', 'RRR', 'RRR+', 'Rstudio', 'Rstudio-', and 'CLB'. The variable 'ess-style-alist' lists the value of each indentation variable per style (and its documentation contains more). -- Command: ess-set-style 'C-c C-e C-s' (or 'C-c C-e s') sets the formatting style in this buffer to be one of the predefined styles, see above. The 'DEFAULT' style uses the default values for the indenting variables; The 'OWN' style allows you to use your own private values of the indentation variable, see below. (setq ess-default-style 'C++) -- User Option: ess-default-style The default value of 'ess-style'. See the variable 'ess-style-alist' for how these groups (DEFAULT, OWN, GNU, RRR, ...) map onto different settings for variables. -- User Option: ess-style-alist Predefined formatting styles for ESS code. Values for all groups, except OWN, are fixed. To change the value of variables in the OWN group, customize the variable 'ess-own-style-list'. The default style in use is controlled by 'ess-default-style'. The styles 'DEFAULT' and 'OWN' are initially identical. If you wish to edit some of the default values, set 'ess-default-style' to ''OWN' and change 'ess-own-style-list'. *Note Customization::, for convenient ways to set both these variables. If you prefer not to use the custom facility, you can change individual indentation variables within a hook, for example: (defun myindent-ess-hook () (setq ess-indent-level 4)) (add-hook 'ess-mode-hook 'myindent-ess-hook) In the rare case that you'd like to add an entire new indentation style of your own, copy the definition of 'ess-own-style-list' to a new variable and ensure that the last line of the ':set' declaration calls 'ess-add-style' with a unique name for your style (e.g. ''MINE'). Finally, add '(setq ess-default-style 'MINE)' to use your new style.  File: ess.info, Node: Other edit buffer commands, Next: Source Files, Prev: Indenting, Up: Editing objects 7.5 Commands for motion, completion and more ============================================ A number of commands are provided to move across function definitions in the edit buffer: -- Command: ess-goto-beginning-of-function-or-para 'ESC C-a' aka 'C-M-a' If inside a function go to the beginning of it, otherwise go to the beginning of paragraph. -- Command: ess-goto-end-of-function-or-para 'ESC C-e' aka 'C-M-e' Move point to the end of the function containing point. -- Command: ess-mark-function 'ESC C-h' aka 'C-M-h' Place point at the beginning of the S function containing point, and mark at the end. Don't forget the usual Emacs commands for moving over balanced expressions and parentheses: *Note Lists and Sexps: (Emacs)Lists. Completion is provided in the edit buffer in a similar fashion to the process buffer: first indents, and if there is nothing to indent, completes the object or file name; 'M-?' lists file completions. See *Note Completion::, for more. Finally, 'C-c C-z' ('ess-switch-to-inferior-or-script-buffer') returns you to the 'iESS' process buffer, if done from a script buffer, placing point at the end of the buffer. If this is done from the 'iESS' process buffer, point is taken to the script buffer. In addition some commands available in the process buffer are also available in the script buffer. You can still read help files with 'C-c C-v', edit another function with 'C-c C-e C-d' and of course 'C-c C-l' can be used to load a source file into S.  File: ess.info, Node: Source Files, Next: Source Directories, Prev: Other edit buffer commands, Up: Editing objects 7.6 Maintaining S source files ============================== Every edit buffer in ESS is associated with a "dump file" on disk. Dump files are created whenever you type 'C-c C-e C-d' ('ess-dump-object-into-edit-buffer'), and may either be deleted after use, or kept as a backup file or as a means of keeping several versions of an S function. -- User Option: ess-delete-dump-files If non-'nil', dump files created with C-c C-e C-d are deleted immediately after they are created by the ess-process. Since immediately after S dumps an object's definition to a disk file the source code on disk corresponds exactly to S's idea of the object's definition, the disk file isn't needed; deleting it now has the advantage that if you _don't_ modify the file (say, because you just wanted to look at the definition of one of the standard S functions) the source dump file won't be left around when you kill the buffer. Note that this variable only applies to files generated with S's 'dump' function; it doesn't apply to source files which already exist. The default value is 't'. -- User Option: ess-keep-dump-files Variable controlling whether to delete dump files after a successful load. If 'nil': always delete. If 'ask', confirm to delete. If 'check', confirm to delete, except for files created with 'ess-dump-object-into-edit-buffer'. Anything else, never delete. This variable only affects the behaviour of 'ess-load-file'. Dump files are never deleted if an error occurs during the load. After an object has been successfully (i.e. without error) loaded back into S with 'C-c C-l', the disk file again corresponds exactly (well, almost -- see below) to S's record of the object's definition, and so some people prefer to delete the disk file rather than unnecessarily use up space. This option allows you to do just that. If the value of 'ess-keep-dump-files' is 't', dump files are never deleted after they are loaded. Thus you can maintain a complete text record of the functions you have edited within ESS. Backup files are kept as usual, and so by using the Emacs numbered backup facility -- *note Single or Numbered Backups: (emacs)Backup Names, you can keep a historic record of function definitions. Another possibility is to maintain the files with a version-control system such as RCS *Note Version Control: (emacs)Version Control. As long as a dump file exists in the appropriate place for a particular object, editing that object with 'C-c C-e C-d' finds that file for editing (unless a prefix argument is given) -- the ESS process is not consulted. Thus you can keep comments _outside_ the function definition as a means of documentation that does not clutter the S object itself. Another useful feature is that you may format the code in any fashion you please without S re-indenting the code every time you edit it. These features are particularly useful for project-based work. If the value of 'ess-keep-dump-files' is nil, the dump file is always silently deleted after a successful load with 'C-c C-l'. While this is useful for files that were created with 'C-c C-e C-d' it also applies to any other file you load (say, a source file of function definitions), and so can be dangerous to use unless you are careful. Note that since 'ess-keep-dump-files' is buffer-local, you can make sure particular files are not deleted by setting it to 't' in the Local Variables section of the file *Note Local Variables in Files: (emacs)File Variables. A safer option is to set 'ess-keep-dump-files' to 'ask'; this means that ESS will always ask for confirmation before deleting the file. Since this can get annoying if you always want to delete dump files created with 'C-c C-e C-d', but not any other files, setting 'ess-keep-dump-files' to 'check' (the default value) will silently delete dump files created with 'C-c C-e C-d' in the current Emacs session, but query for any other file. Note that in any case you will only be asked for confirmation once per file, and your answer is remembered for the rest of the Emacs session. Note that in all cases, if an error (such as a syntax error) is detected while loading the file with 'C-c C-l', the dump file is _never_ deleted. This is so that you can edit the file in a new Emacs session if you happen to quit Emacs before correcting the error. Dump buffers are always autosaved, regardless of the value of 'ess-keep-dump-files'.  File: ess.info, Node: Source Directories, Prev: Source Files, Up: Editing objects 7.7 Names and locations of dump files ===================================== Every dump file should be given a unique file name, usually the dumped object name with some additions. -- User Option: ess-dump-filename-template Template for filenames of dumped objects. '%s' is replaced by the object name. By default, dump file names are the user name, followed by '.' and the object and ending with '.S'. Thus if user 'joe' dumps the object 'myfun' the dump file will have name 'joe.myfun.S'. The username part is included to avoid clashes when dumping into a publicly-writable directory, such as '/tmp'; you may wish to remove this part if you are dumping into a directory owned by you. You may also specify the directory in which dump files are written: -- User Option: ess-source-directory Directory name (ending in a slash) where S dump files are to be written. By default, dump files are always written to '/tmp', which is fine when 'ess-keep-dump-files' is 'nil'. If you are keeping dump files, then you will probably want to keep them somewhere in your home directory, say '~/S-source'. This could be achieved by including the following line in your '.emacs' file: (setq ess-source-directory (expand-file-name "~/S-source/")) If you would prefer to keep your dump files in separate directories depending on the value of some variable, ESS provides a facility for this also. By setting 'ess-source-directory' to a lambda expression which evaluates to a directory name, you have a great deal of flexibility in selecting the directory for a particular source file to appear in. The lambda expression is evaluated with the process buffer as the current buffer and so you can use the variables local to that buffer to make your choice. For example, the following expression causes source files to be saved in the subdirectory 'Src' of the directory the ESS process was run in. (setq ess-source-directory (lambda () (concat ess-directory "Src/"))) ('ess-directory' is a buffer-local variable in process buffers which records the directory the ESS process was run from.) This is useful if you keep your dump files and you often edit objects with the same name in different ESS processes. Alternatively, if you often change your S working directory during an S session, you may like to keep dump files in some subdirectory of the directory pointed to by the first element of the current search list. This way you can edit objects of the same name in different directories during the one S session: (setq ess-source-directory (lambda () (file-name-as-directory (expand-file-name (concat (car ess-search-list) "/.Src"))))) If the directory generated by the lambda function does not exist but can be created, you will be asked whether you wish to create the directory. If you choose not to, or the directory cannot be created, you will not be able to edit functions.  File: ess.info, Node: Help, Next: Completion, Prev: Editing objects, Up: Top 8 Reading help files ******************** ESS provides an easy-to-use facility for reading S help files from within Emacs. From within the ESS process buffer or any ESS edit buffer, typing 'C-c C-v' ('ess-display-help-on-object') will prompt you for the name of an object for which you would like documentation. Completion is provided over all objects which have help files. If the requested object has documentation, you will be popped into a buffer (named '*help(OBJ-NAME)*') containing the help file. This buffer is placed in a special 'S Help' mode which disables the usual editing commands but which provides a number of keys for paging through the help file. Help commands: '?' 'ess-describe-help-mode' Pops up a help buffer with a list of the commands available in S help mode. 'h' 'ess-display-help-on-object' Pop up a help buffer for a different object. Paging commands: 'b' 'DEL' 'scroll-down' Move one page backwards through the help file. 'SPC' 'scroll-up' Move one page forwards through the help file. '>' '<' 'end-of-buffer' Move to the beginning and end of the help file, respectively. Section-based motion commands: 'n' 'p' 'ess-skip-to-previous-section' and 'ess-skip-to-next-section' Move to the next and previous section header in the help file, respectively. A section header consists of a number of capitalized words, followed by a colon. In addition, the 's' key followed by one of the following letters will jump to a particular section in the help file. Note that R uses capitalized instead of all-capital section headers, e.g., 'Description:' instead of 'DESCRIPTION:' and also only some versions of S(-plus) have sections 'BACKGROUND', 'BUGS', 'OPTIONAL ARGUMENTS', 'REQUIRED ARGUMENTS', and 'SIDE EFFECTS'. Do use 's ?' to get the current list of active key bindings. 'a' ARGUMENTS: 'b' BACKGROUND: 'B' BUGS: 'd' DESCRIPTION: 'D' DETAILS: 'e' EXAMPLES: 'n' NOTE: 'O' OPTIONAL ARGUMENTS: 'R' REQUIRED ARGUMENTS: 'r' REFERENCES: 's' SEE ALSO: 'S' SIDE EFFECTS: 'u' USAGE: 'v' VALUE: '<' Jumps to beginning of file '>' Jumps to end of file '?' Pops up a help buffer with a list of the defined section motion keys. Evaluation: 'l' 'ess-eval-line-and-step' Evaluates the current line in the ESS process, and moves to the next line. Useful for running examples in help files. 'r' 'ess-eval-region' Send the contents of the current region to the ESS process. Useful for running examples in help files. Quit commands: 'q' 'ess-help-quit' Return to previously selected buffer, and bury the help buffer. 'k' 'kill-buffer' Return to previously selected buffer, and kills the help buffer. 'x' 'ess-kill-buffer-and-go' Return to the ESS process, killing this help buffer. Miscellaneous: 'i' 'ess-display-index' Prompt for a package and display it's help index. 'v' 'ess-display-vignettes' Display all available vignettes. 'w' 'ess-display-help-in-browser' Display current help page with the web browser. '/' 'isearch-forward' Same as 'C-s'. In addition, all of the ESS commands available in the edit buffers are also available in S help mode (*note Edit buffer::). Of course, the usual (non-editing) Emacs commands are available, and for convenience the digits and <-> act as prefix arguments. If a help buffer already exists for an object for which help is requested, that buffer is popped to immediately; the ESS process is not consulted at all. If the contents of the help file have changed, you either need to kill the help buffer first, or pass a prefix argument (with 'C-u') to 'ess-display-help-on-object'. Help buffers are marked as temporary buffers in ESS, and are deleted when 'ess-quit' or 'ess-cleanup' are called. Help buffers normally appear in another window within the current frame. If you wish help buffers to appear in their own frame (either one per help buffer, or one for all help buffers), you can customize the variable 'ess-help-own-frame'.  File: ess.info, Node: Completion, Next: Developing with ESS, Prev: Help, Up: Top 9 Completion ************ * Menu: * Object names:: * Function arguments:: * Minibuffer completion:: * Auto-complete:: * Icicles::  File: ess.info, Node: Object names, Next: Function arguments, Up: Completion 9.1 Completion of object names ============================== The key is for completion. The value of the variable 'ess-first-tab-never-complete' controls when completion is allowed controls when completion is allowed to occur. In 'ess-mode' first tries to indent, and if there is nothing to indent, complete the object name instead. 'TAB' 'comint-dynamic-complete' Complete the S object name or filename before point. When the cursor is just after a partially-completed object name, pressing provides completion in a similar fashion to 'tcsh' except that completion is performed over all known S object names instead of file names. ESS maintains a list of all objects known to S at any given time, which basically consists of all objects (functions and datasets) in every attached directory listed by the 'search()' command along with the component objects of attached data frames (if your version of S supports them). For example, consider the three functions (available in Splus version 3.0) called 'binomplot()', 'binom.test()' and 'binomial()'. Typing 'bin TAB' after the S prompt will insert the characters 'om', completing the longest prefix ('binom') which distinguishes these three commands. Pressing 'TAB' once more provides a list of the three commands which have this prefix, allowing you to add more characters (say, '.') which specify the function you desire. After entering more characters pressing 'TAB' yet again will complete the object name up to uniqueness, etc. If you just wish to see what completions exist without adding any extra characters, type 'M-?'. -- Command: ess-list-object-completions 'M-?' List all possible completions of the object name at point. ESS also provides completion over the components of named lists and environments (after '$'), S4 classes slots (after @), package and namespace objects (after :: and :::). Completion is also provided over file names, which is particularly useful when using S functions such as 'get()' or 'scan()' which require fully expanded file names. In the Inferior ESS buffer, if the cursor is not in a string and does not follow a (partial) object name, the key has a third use: it expands history references. *Note History expansion::. Efficiency in completion is gained by maintaining a cache of objects currently known to S; when a new object becomes available or is deleted, only one component of the cache corresponding to the associated directory needs to be refreshed. If ESS ever becomes confused about what objects are available for completion (such as when if refuses to complete an object you *know* is there), the command 'M-x ess-resynch' forces the _entire_ cache to be refreshed, which should fix the problem.  File: ess.info, Node: Function arguments, Next: Minibuffer completion, Prev: Object names, Up: Completion 9.2 Completion of function arguments ==================================== When inside a function call (i.e. following ''(''), 'TAB' completion also provides function arguments. If function is a generic, completion will provide all the arguments of 'S3' methods known to 'R'. A related functionality is *Note ESS ElDoc::, which displays function arguments in the echo area whenever the point is inside a function call.  File: ess.info, Node: Minibuffer completion, Next: Auto-complete, Prev: Function arguments, Up: Completion 9.3 Minibuffer completion ========================= From version 12.03, ESS uses 'IDO' mechanism (part of default emacs) for minibuffer completion if 'ido.el' package is available and the value of 'ess-use-ido' it 't' (the default). The completion command 'ess-completing-read' falls back on classic 'completion-read' interface if this feature is not available for whatever reason.  File: ess.info, Node: Auto-complete, Next: Icicles, Prev: Minibuffer completion, Up: Completion 9.4 Integration with auto-complete package ========================================== ESS provides three sources for 'Auto Completion' mode: 'ac-source-R-args', 'ac-source-R-objects' and 'ac-source-R'. The last one combines the previous two and makes them play nicely together. See auto-complete package documentation () for how to modify and install your own completion sources. For the default auto-complete ESS configuration, install the latest version of 'auto-complete' package. ESS automatically detect the package and activates auto-complete in ESS buffers. To deactivate AC, place the following into your init file: (setq ess-use-auto-complete nil) Or, to activate auto-completion only in the 'ess-mode' buffers: (setq ess-use-auto-complete 'script-only) ESS provides AC help both for arguments and objects (default keys 'C-?' or ''). You can bind 'M-h' to display quick help pop-ups: (define-key ac-completing-map (kbd "M-h") 'ac-quick-help) 'AC' binds 'M-n', and 'M-p' for the navigation in the completion menu, which might be inconvenient if you want it to use in the inferior R. Bind it to something else: (define-key ac-completing-map "\M-n" nil) ;; was ac-next (define-key ac-completing-map "\M-p" nil) ;; was ac-previous (define-key ac-completing-map "\M-," 'ac-next) (define-key ac-completing-map "\M-k" 'ac-previous)  File: ess.info, Node: Icicles, Prev: Auto-complete, Up: Completion 9.5 Icicles =========== Another option for comprehensively handling completion in Emacs is via Icicles (). It allows users to have completions shown temporarily in the standard '*Completions*' buffer, and interactively select completion candidates using several methods. As of version 2013.04.04, Icicles provides support for completion in ESS. Please consult Icicles documentation, which is easily accessible via 'customize-group Icicles', for more details on installation and customization options. Once installed, Icicles can be activated by evaluating (maybe place in '~/.emacs'): (require 'icicles) (icy-mode 1) Icicles can be toggled at any moment by typing 'M-x icy'. When Icicles is on, 'TAB' offers completion, provided the conditions determined by 'ess-first-tab-never-complete' allow it. Typing 'M-TAB' will attempt completion regardless. Typing 'M-?' in 'ESS' or 'iESS' modes brings up the relevant completion candidates from which to choose. Minibuffer input filters the available candidates. Use 'TAB' for prefix completion or 'S-TAB' for substring or regexp completion. Use 'S-SPC' to match an additional pattern (repeatable). You can cycle among the matching candidates, choosing with 'RET' or 'mouse-2'.  File: ess.info, Node: Developing with ESS, Next: Extras, Prev: Completion, Up: Top 10 Developing with ESS ********************** ESS provides several tools to help you with the development of your R packages: * Menu: * ESS tracebug:: Visual debugging, breakpoints, tracing, watch etc. * Editing documentation:: Tools to edit R documentation * Namespaced Evaluation:: Develop your packages on the fly  File: ess.info, Node: ESS tracebug, Next: Editing documentation, Up: Developing with ESS 10.1 ESS tracebug ================= ESS 'tracebug' offers visual debugging, interactive error navigation, interactive backtrace, breakpoint manipulation, control over R error actions, watch window and interactive flagging/unflagging of functions for debugging. From ESS13.05 'ess-tracebug' is on by default. You can toggle it on and off with 'M-x' 'ess-tracebug'. To disable startup activation of 'ess-tracebug' set 'ess-use-tracebug' to nil. Tracebug functionality can be found on 'ess-dev-map', bound to 'C-c C-t'. Additionally, when subprocess is in a debugging state 'ess-debug-minor-mode' is active and the following additional shortcuts are available: * Interactive Debugging (`ess-debug-minor-mode-map'): M-C . Continue . `ess-debug-command-continue' M-C-C . Continue multi . `ess-debug-command-continue-multi' M-N . Next step . `ess-debug-command-next' M-C-N . Next step multi . `ess-debug-command-next-multi' M-U . Up frame . `ess-debug-command-up' M-Q . Quit debugging . `ess-debug-command-quit' These are all the tracebug commands defined in 'ess-dev-map' ('C-c C-t ?' to show this table): * Breakpoints (`ess-dev-map'): b . Set BP (repeat to cycle BP type) . `ess-bp-set' B . Set conditional BP . `ess-bp-set-conditional' k . Kill BP . `ess-bp-kil' K . Kill all BPs . `ess-bp-kill-all' o . Toggle BP state . `ess-bp-toggle-state' l . Set logger BP . `ess-bp-set-logger' n . Goto next BP . `ess-bp-next' p . Goto previous BP . `ess-bp-previous' (C- prefixed equivalents are also defined) * Debugging (`ess-dev-map'): ` . Show traceback . `ess-show-traceback' (also on C-c `) ~ . Show callstack . `ess-show-call-stack' (also on C-c ~) e . Toggle error action (repeat to cycle). `ess-debug-toggle-error-action' d . Flag for debugging . `ess-debug-flag-for-debugging' u . Unflag for debugging . `ess-debug-unflag-for-debugging' w . Watch window . `ess-watch' (C- prefixed equivalents are also defined) * Navigation to errors (general emacs functionality): C-x `, M-g n . `next-error' M-g p . `previous-error' * Misc: ? . Show this help . `ess-tracebug-show-help' To configure how electric watch window splits the display see 'ess-watch-width-threshold' and 'ess-watch-height-threshold' variables. A more detailed ess-tracebug documentation with screenshots is available at . A short tutorial is at . _Note:_ Currently, ess-tracebug does not detect some of R's debug related messages in non-English locales. To set your R messages to English add the following line to your .Rprofile init file: Sys.setlocale("LC_MESSAGES", "C")  File: ess.info, Node: Editing documentation, Next: Namespaced Evaluation, Prev: ESS tracebug, Up: Developing with ESS 10.2 Editing documentation ========================== ESS provides two ways of writing documentation for R objects. Either using the standard R documentation system or using in-source documentation written as structured comment fields for use with the Roxygen package. * Menu: * R documentation files:: Edit objects in a specialized buffer * Roxygen:: Loading source files into the ESS process  File: ess.info, Node: R documentation files, Next: Roxygen, Up: Editing documentation 10.2.1 Editing R documentation (Rd) files ----------------------------------------- R objects are documented in files written in the "R documentation" ("Rd"), a simple markup language closely resembling (La)TeX, which can be processed into a variety of formats, including LaTeX, HTML, and plain text. Rd format is described in section "Rd format" of the "Writing R Extensions" manual in the R distribution. ESS has several features that facilitate editing Rd files. Visiting an Rd file as characterized by its extension 'Rd' will activate Rd Mode, which provides several facilities for making editing R documentation files more convenient, by helping with indentation, insertions, even doing some of the typing for you (with Abbrev Mode), and by showing Rd keywords, strings, etc. in different faces (with Font Lock Mode). Note that R also accepts Rd files with extension 'rd'; to activate ESS[Rd] support for this extension, you may need to add (add-to-list 'auto-mode-alist '("\\.rd\\'" . Rd-mode)) to one of your Emacs startup files. In Rd mode, the following special Emacs commands can be used in addition to the standard Emacs commands. 'C-h m' Describe the features of Rd mode. 'LFD' 'RET' Reindent the current line, insert a newline and indent the new line ('reindent-then-newline-and-indent'). An abbrev before point is expanded if 'abbrev-mode' is non-'nil'. 'TAB' Indent current line based on its contents and on previous lines. ('indent-according-to-mode'). 'C-c C-e' Insert a "skeleton" with Rd markup for at least all mandatory entries in Rd files ('Rd-mode-insert-skeleton'). Note that many users might prefer to use the R function 'prompt' on an existing R object to generate a non-empty Rd "shell" documenting the object (which already has all information filled in which can be obtained from the object). 'C-c C-f' Insert "font" specifiers for some of the Rd markup commands markup available for emphasizing or quoting text, including markup for URLs and email addresses ('Rd-font'). 'C-c C-f' is only a prefix; see e.g. 'C-c C-f TAB' for the available bindings. Note that currently, not all of the Rd text markup as described in section "Marking text" of "Writing R Extensions" can be accessed via 'C-c C-f'. 'C-c C-j' Insert a suitably indented '\item{' on the next line ('Rd-mode-insert-item'). 'C-c C-p' Preview a plain text version ("help file", *note Help::) generated from the Rd file ('Rd-preview-help'). In addition, when editing Rd files one can interact with a running R process in a similar way as when editing R language files. E.g., 'C-c C-v' provides access to on-line help, and 'C-c C-n' sends the current line to the R process for evaluation. This interaction is particularly useful when editing the examples in the Rd file. See 'C-h m' for all available commands. Rd mode also provides access to abbreviations for most of the Rd markup commands. Type 'M-x list-abbrevs' with Abbrev mode turned on to list all available abbrevs. Note that all Rd abbrevs start with a grave accent. Rd mode can be customized via the following variables. -- User Option: Rd-mode-hook Hook to be run when Rd mode is entered. -- User Option: Rd-indent-level The indentation of Rd code with respect to containing blocks. Default is 2. -- User Option: Rd-to-help-command The shell command used for converting Rd source to help text. Default is 'R CMD Rd2txt'. To automatically turn on the abbrev and font-lock features of Rd mode, add the following lines to one of your Emacs startup files: (add-hook 'Rd-mode-hook (lambda () (abbrev-mode 1) (font-lock-mode 1)))  File: ess.info, Node: Roxygen, Prev: R documentation files, Up: Editing documentation 10.2.2 Editing Roxygen documentation ------------------------------------ The Roxygen R package makes it possible to keep the intended contents for Rd files as structured comments in the R source files. Roxygen can then parse R files and generate appropriate Rd files from these comments, fill the usage fields as well as updating 'NAMESPACE' files. See the Roxygen documentation found via for more information on its usage. An example of an Roxygen entry for a simple R function can look like this: ##' Description of the function ##' ##' Further details about this function ##' @title A title ##' @param me all parameters must be listed and documented ##' @return Description of the return value ##' @author The author myfun <- function(me) cat("Hello", me, "\n") The entry is immediately preceding the object to document and all lines start with the Roxygen prefix string, in this case '##''. ESS provides support to edit these documentation entries by providing line filling, navigation, template generation etc. Syntax highlighting is provided for Emacs but not for XEmacs. Roxygen is customized by the variables in the customization group "Ess Roxy". Customizables include the Roxygen prefix, use of folding to toggle visibility of Roxygen entries and the Roxygen template. All ESS Roxygen support is defined in 'ess-roxy.el' which is loaded by default in ESS. The following special Emacs commands are provided. -- Command: ess-roxy-update-entry 'C-c C-o C-o' Generate a Roxygen template or update the parameter list in Roxygen entry at point (or above the function at the point). Documented parameters that are not in the function are placed last in the list, parameters that are not documented and not in the definition are dropped. Parameter descriptions are filled if 'ess-roxy-fill-param-p' is non-nil. -- Command: ess-roxy-toggle-roxy-region BEG END 'C-c C-o C-c' Toggle the presence of the leading Roxygen string on all lines in the marked region (between BEG and END. Convenient for transferring text to Roxygen entries and to evaluate example fields. -- Command: ess-roxy-preview-Rd NAME-FILE 'C-c C-o C-r' Use the attached R process to parse the entry at point to obtain the Rd code. Convenient for previewing and checking syntax. When used with the prefix argument NAME-FILE, i.e. 'C-u C-c C-e C-r', place the content in a buffer associated with a Rd file with the same name as the documentation. Requires the Roxygen package to be installed. -- Command: ess-roxy-preview-HTML VISIT-INSTEAD-OF-OPEN 'C-c C-o C-t' Use the attached R process to parse the entry at to generate HTML for the entry and open it in a browser. When used with the prefix argument VISIT-INSTEAD-OF-OPEN, i.e. 'C-u C-c C-e C-t', visit the generated HTML file instead. Requires the Roxygen and tools packages to be installed. -- Command: ess-roxy-previous-entry 'C-c C-o p' Go to start of the Roxygen entry above point. -- Command: ess-roxy-next-entry 'C-c C-o n' Go to end of the Roxygen entry above point. -- Command: ess-roxy-hide-all 'C-c C-o C-h' Use the hideshow mode to fold away the visibility of all Roxygen entries. Hide-show support must be enabled for this binding to get defined. ESS also advises the following standard editing functions in order to make Roxygen editing more intuitive: 'TAB' 'ess-R-complete-object-name' Complete Roxygen tag at point. E.g. doing 'TAB' when the point is at the end of '@par' completes to '@param'. 'M-h' 'mark-paragraph' If the transient mark mode is active, place mark and point at start end end of the field at point and activate the mark. 'TAB' 'ess-indent-command' If hide-show support is enabled, fold away the visibility of the Roxygen entry at point. 'M-q' 'fill-paragraph' Fill the Roxygen field at point. 'C-a' 'move-beginning-of-line' Move to the point directly to the right of the Roxygen start string. 'RET' 'newline-and-indent' Insert a new line and the Roxygen prefix string.  File: ess.info, Node: Namespaced Evaluation, Prev: Editing documentation, Up: Developing with ESS 10.3 Namespaced Evaluation ========================== In non package files evaluation commands, *Note Evaluating code::, send portions of the current buffer environment ('R_GlobalEnv'. When developing packages, ESS sends code to the corresponding package namespace and (for visible objects) into package environment (visible on search path). All objects that are assigned are displayed in the minibuffer alongside the environment in which they are assigned. Here is a short overview of how namespace and package environments work in R. All objects defined in a package 'foo' are stored in an environment called 'namespace:foo'. Parent environment of 'namespace:foo' is an environment 'imports:foo' which contains copies of all objects from other packages which 'foo' imports. Parent environment of 'imports:foo' is the 'namespace:base'. Parent environment of 'namespace:base' is .GlobalEnv. Thus functions and methods stored in 'namespace:foo' see all the objects in .GlobalEnv unless shadowed by objects in 'imports:foo', 'namespace:base', or 'namespace:foo' itself. There is another environment associated with 'foo' - 'package:foo'. This environment stores *copies* of exported objects from 'namespace:foo' and is placed on the search() path, i.e. if 'foo' is loaded and if you start with .GlobalEnv and iteratively call parent.env() you will get eventually to 'package:foo'. Thus all methods and functions defined in .GlobalEnv can "see" objects in 'package:foo' environment. See also . Ocasionally you want to evaluate into a package from a non-package file, or the other way around, evaluate into 'GlobalEnv' from inside a package. In such cases 'C-c C-t C-s' is your friend. -- Command: ess-r-set-evaluation-env ARG 'C-c C-t C-s' Set or unset the current evaluation environment (a package).  File: ess.info, Node: Extras, Next: ESS for S, Prev: Developing with ESS, Up: Top 11 Other ESS features and tools ******************************* ESS has a few extra features, which didn't fit anywhere else. * Menu: * ESS ElDoc:: Display function arguments in minibuffer * Handy commands:: Usefully commands at your fingertips * Highlighting:: Syntactic highlighting of buffers * Parens:: Parenthesis matching * Graphics:: Using graphics with ESS * Imenu:: Support for Imenu in ESS * Toolbar:: Support for toolbar in ESS * TAGS:: Using TAGS for S files * Rdired:: Directory editor for R objects * Rutils:: R object/package management and help utilities * Org:: Interaction with Org mode * Sweave and AUCTeX:: Support for Sweave in ESS and AUCTeX  File: ess.info, Node: ESS ElDoc, Next: Handy commands, Up: Extras 11.1 ElDoc ========== In 'ElDoc' mode, the echo area displays function's arguments at point. From ESS version 12.03, ElDoc is active by default in 'ess-mode' and 'inferior-ess-mode' buffers. To activate it only in 'ess-mode' buffers, place the following into your init file: (setq ess-use-eldoc 'script-only) -- User Option: ess-use-eldoc If 't', activate eldoc in ess-mode and inferior-ess-mode buffers. If ''script-only' activate in ess-mode buffers only. Set 'ess-use-eldoc' to 'nil' to stop using 'ElDoc' altogether. -- User Option: ess-eldoc-show-on-symbol This variable controls whether the help is shown only inside function calls. If set to 't', 'ElDoc' shows help string whenever the point is on a symbol, otherwise (the default), shows only when the point is in a function call, i.e. after ''(''. -- User Option: ess-eldoc-abbreviation-style The variable determines how the doc string should be abbreviated to fit into minibuffer. Posible values are 'nil', 'mild', 'normal', 'strong' and 'aggressive'. Please see the documentation of the variable for more details. The default filter is 'normal'. Ess-eldoc also honors the value of 'eldoc-echo-area-use-multiline-p', which if set to 'nil', will cause the truncation of doc string indifferent of the value of 'ess-eldoc-abbreviation-style'. This way you can combine different filter levels with the truncation.  File: ess.info, Node: Handy commands, Next: Highlighting, Prev: ESS ElDoc, Up: Extras 11.2 Handy commands =================== -- Command: ess-handy-commands Request and execute a command from 'ess-handy-commands' list. -- User Option: ess-handy-commands An alist of custom ESS commands available for call by 'ess-handy-commands' and 'ess-smart-comma' function. Currently contains: change-directory 'ess-change-directory' help-index 'ess-display-index' help-object 'ess-display-help-on-object' vignettes 'ess-display-vignettes' objects[ls] 'ess-execute-objects' search 'ess-execute-search' set-width 'ess-execute-screen-options' install.packages 'ess-install.packages' library 'ess-library' setRepos 'ess-setRepositories' sos 'ess-sos' Handy commands: 'ess-library', 'ess-install.packages', etc - ask for item with completion and execute the correspond command. 'ess-sos' is a interface to 'findFn' function in package 'sos'. If package 'sos' is not found, ask user for interactive install.  File: ess.info, Node: Highlighting, Next: Parens, Prev: Handy commands, Up: Extras 11.3 Syntactic highlighting of buffers ====================================== ESS provides Font-Lock (*note Using Multiple Typefaces: (emacs)Faces.) patterns for Inferior S Mode, S Mode, and S Transcript Mode buffers. Syntax highlighting within ESS buffers is controlled by: -- User Option: ess-font-lock-mode Non-'nil' means we use font lock support for ESS buffers. Default is 't', to use font lock support. If you change the value of this variable, restart Emacs for it to take effect. The font-lock patterns are defined by the following variables, which you may modify if desired: -- User Option: inferior-R-font-lock-keywords Font-lock patterns for inferior *R* processes. (There is a corresponding 'inferior-S-font-lock-keywords' for *S* processes.) The default value highlights prompts, inputs, assignments, output messages, vector and matrix labels, and literals such as 'NA' and 'TRUE'. -- User Option: ess-R-font-lock-keywords Font-lock patterns for ESS R programming mode. (There is a corresponding 'ess-S-font-lock-keywords' for S buffers.) The default value highlights function names, literals, assignments, source functions and reserved words.  File: ess.info, Node: Parens, Next: Graphics, Prev: Highlighting, Up: Extras 11.4 Parenthesis matching ========================= Emacs and XEmacs have facilities for highlighting the parenthesis matching the parenthesis at point. This feature is very useful when trying to examine which parentheses match each other. This highlighting also indicates when parentheses are not matching. Depending on what version of emacs you use, one of the following should work in your initialisation file: (paren-set-mode 'paren) ;for XEmacs (show-paren-mode t) ;for Emacs  File: ess.info, Node: Graphics, Next: Imenu, Prev: Parens, Up: Extras 11.5 Using graphics with ESS ============================ One of the main features of the 'S' package is its ability to generate high-resolution graphics plots, and ESS provides a number of features for dealing with such plots. * Menu: * printer:: The printer() graphics driver * X11:: The X11() (and other X Windows based) driver * winjava:: Java Graphics Device  File: ess.info, Node: printer, Next: X11, Up: Graphics 11.5.1 Using ESS with the 'printer()' driver -------------------------------------------- This is the simplest (and least desirable) method of using graphics within ESS. S's 'printer()' device driver produces crude character based plots which can be contained within the ESS process buffer itself. To start using character graphics, issue the S command printer(width=79) (the 'width=79' argument prevents Emacs line-wrapping at column 80 on an 80-column terminal. Use a different value for a terminal with a different number of columns.) Plotting commands do not generate graphics immediately, but are stored until the 'show()' command is issued, which displays the current figure.  File: ess.info, Node: X11, Next: winjava, Prev: printer, Up: Graphics 11.5.2 Using ESS with windowing devices --------------------------------------- Of course, the ideal way to use graphics with ESS is to use a windowing system. Under X Windows, or X11, this requires that the DISPLAY environment variable be appropriately set.  File: ess.info, Node: winjava, Prev: X11, Up: Graphics 11.5.3 Java Graphics Device --------------------------- S+6.1 and newer on Windows contains a java library that supports graphics. Send the commands: library(winjava) java.graph() to start the graphics driver. This allows you to use ESS for both interaction and graphics within S-PLUS. (Thanks to Tim Hesterberg for this information.)  File: ess.info, Node: Imenu, Next: Toolbar, Prev: Graphics, Up: Extras 11.6 Imenu ========== Imenu is an Emacs tool for providing mode-specific buffer indexes. In some of the ESS editing modes (currently SAS and S), support for Imenu is provided. For example, in S mode buffers, the menubar should display an item called "Imenu-S". Within this menubar you will then be offered bookmarks to particular parts of your source file (such as the starting point of each function definition). Imenu works by searching your buffer for lines that match what ESS thinks is the beginning of a suitable entry, e.g. the beginning of a function definition. To examine the regular expression that ESS uses, check the value of 'imenu-generic-expression'. This value is set by various ESS variables such as 'ess-imenu-S-generic-expression'.  File: ess.info, Node: Toolbar, Next: TAGS, Prev: Imenu, Up: Extras 11.7 Toolbar ============ The R and S editing modes have support for a toolbar. This toolbar provides icons to act as shortcuts for starting new S/R processes, or for evaluating regions of your source buffers. The toolbar should be present if your emacs can display images. *Note Customization::, for ways to change the toolbar.  File: ess.info, Node: TAGS, Next: Rdired, Prev: Toolbar, Up: Extras 11.8 TAGS ========= The Emacs tags facility can be used to navigate around your files containing definitions of S functions. This facility is independent of ESS usage, but is written here since ESS users may wish to take advantage of TAGS facility. Read more about emacs tags in an emacs manual. Etags, the program that generates the TAGS file, does not yet know the syntax to recognise function definitions in S files. Hence, you will need to provide a regexp that matches your function definitions. Here is an example call (broken over two lines; type as one line) that should be appropriate. etags --language=none --regex='/\([^ \t]+\)[ \t]*<-[ \t]*function/\1/' *.R This will find entries in your source file of the form: some.name <- function with the function name starting in column 0. Windows users may need to change the single quotes to double quotes. R version 2.9.0 introduced a front-end script for finding R tags, which calls the 'rtags()' function. By default, this script will recursively search the directories for relevant tags in R/C/Rd files. To use this script from the command line, try the following to get started: R CMD rtags --help For further details, see  File: ess.info, Node: Rdired, Next: Rutils, Prev: TAGS, Up: Extras 11.9 Rdired =========== Ess-rdired provides a dired-like buffer for viewing, editing and plotting objects in your current R session. If you are used to using the dired (directory editor) facility in Emacs, this mode gives you similar functionality for R objects. Start an R session with 'M-x R' and then store a few variables, such as: s <- sin(seq(from=0, to=8*pi, length=100)) x <- c(1, 4, 9) y <- rnorm(20) z <- TRUE Then use 'M-x ess-rdired' to create a buffer listing the objects in your current environment and display it in a new window: mode length s numeric 100 x numeric 3 y numeric 20 z logical 1 Type 'C-h m' or '?' to get a list of the keybindings for this mode. For example, with your point on the line of a variable, 'p' will plot the object, 'v' will view it, and 'd' will mark the object for deletion ('x' will actually perform the deletion).  File: ess.info, Node: Rutils, Next: Org, Prev: Rdired, Up: Extras 11.10 Rutils ============ Ess-rutils builds up on ess-rdired, providing key bindings for performing basic R functions in the inferior-ESS process buffer, such as loading and managing packages, object manipulation (listing, viewing, and deleting), and alternatives to 'help.start()' and 'RSiteSearch()' that use the 'browse-url' Emacs function. The library can be loaded using 'M-x load-file', but the easiest is to include: (require 'ess-rutils) in your .emacs. Once R is started with 'M-x R', and if the value of the customizable variable 'ess-rutils-keys' is true, several key bindings become available in iESS process buffers: -- Command: ess-rutils-local-pkgs 'C-c C-. l' List all packages in all available libraries. -- Command: ess-rutils-repos-pkgs 'C-c C-. r' List available packages from repositories listed by 'getOptions(``repos'')' in the current R session. -- Command: ess-rutils-update-pkgs LIB REPOS 'C-c C-. u' Update packages in a particular library LIB and repository REPOS. -- Command: ess-rutils-apropos 'C-c C-. a' Search for a string using apropos. -- Command: ess-rutils-rm-all 'C-c C-. m' Remove all R objects. -- Command: ess-rutils-objs 'C-c C-. o' Manipulate R objects; wrapper for 'ess-rdired'. -- Command: ess-rutils-load-wkspc 'C-c C-. w' Load a workspace file into R. -- Command: ess-rutils-save-wkspc 'C-c C-. s' Save a workspace file. -- Command: ess-change-directory 'C-c C-. d' Change the working directory for the current R session. -- Command: ess-rutils-html-docs 'C-c C-. H' Use 'browse-url' to navigate R html documentation. See the submenu 'Rutils' under the iESS menu for alternative access to these functions. The function 'ess-rutils-rsitesearch' is provided without a particular key binding. This function is useful in any Emacs buffer, so can be bound to a user-defined key: (eval-after-load "ess-rutils" '(global-set-key [(control c) (f6)] 'ess-rutils-rsitesearch)) Functions for listing objects and packages ('ess-rutils-local-pkgs', 'ess-rutils-repos-pkgs', and 'ess-rutils-objs') show results in a separate buffer and window, in 'ess-rutils-mode', providing useful key bindings in this mode (type '?' in this buffer for a description).  File: ess.info, Node: Org, Next: Sweave and AUCTeX, Prev: Rutils, Up: Extras 11.11 Interaction with Org mode =============================== Org-mode () now supports reproducible research and literate programming in many languages (including R) - see chapter 14 of the Org manual (). For ESS users, this offers a document-based work environment within which to embed ESS usage. R code lives in code blocks of an Org document, from which it can be edited in ess-mode, evaluated, extracted ("tangled") to pure code files. The code can also be exported ("woven") with the surrounding text to several formats including HTML and LaTeX. Results of evaluation including figures can be captured in the Org document, and data can be passed from the Org document (e.g. from a table) to the ESS R process. (This section contributed by Dan Davison and Eric Schulte.)  File: ess.info, Node: Sweave and AUCTeX, Prev: Org, Up: Extras 11.12 Support for Sweave in ESS and AUCTeX ========================================== ESS provides support for writing and processing Sweave (), building up on Emacs' ess-noweb-mode for literate programming. When working on an Sweave document, the following key bindings are available: -- Command: ess-swv-weave CHOOSE 'M-n s' Run Sweave on the current .Rnw file. If CHOOSE is non-'nil', offer a menu of available weavers. -- Command: ess-swv-latex 'M-n l' Run LaTeX after Sweave'ing. -- Command: ess-swv-PS 'M-n p' Generate and display a postscript file after LaTeX'ing. -- Command: ess-swv-PDF PDFLATEX-CMD 'M-n P' Generate and display a PDF file after LaTeX'ing. Optional argument PDFLATEX-CMD is the command to use, which by default, is the command used to generate the PDF file is the first element of 'ess-swv-pdflatex-commands'. -- User Option: ess-swv-pdflatex-commands Commands used by 'ess-swv-PDF' to run a version of pdflatex; the first entry is the default command. Sweave'ing with 'ess-swv-weave' starts an inferior-ESS process, if one is not available. Other commands are available from the 'Sweaving, Tangling, ...' submenu of the Noweb menu. AUCTeX () users may prefer to set the variable 'ess-swv-plug-into-AUCTeX-p' (available from the "ESS Sweave" customization group) to t. Alternatively, the same can be achieved by activating the entry "AUCTeX Interface" from the 'Sweaving, Tangling, ...' submenu, which toggles this variable on or off. When the interface is activated, new entries for Sweave'ing and LaTeX'ing thereafter are available from AUCTeX's "Command" menu. Sweave'ing can, thus, be done by 'C-c C-c Sweave RET' without an inferior-ESS process. Similarly, LaTeX'ing can be done by 'C-c C-c LaTeXSweave RET'. In both cases, the process can be monitored with 'C-c C-l' ('TeX-recenter-output-buffer'). Open the viewer with 'C-c C-v' ('TeX-view'), as usual in AUCTeX.  File: ess.info, Node: ESS for S, Next: ESS for SAS, Prev: Extras, Up: Top 12 Overview of ESS features for the S family ******************************************** * Menu: * ESS(S)--Editing files:: * iESS(S)--Inferior ESS processes:: * ESS-help--assistance with viewing help:: * Philosophies for using ESS(S):: * Scenarios for use (possibilities--based on actual usage):: * Customization Examples and Solutions to Problems::  File: ess.info, Node: ESS(S)--Editing files, Next: iESS(S)--Inferior ESS processes, Prev: ESS for S, Up: ESS for S 12.1 ESS[S]-Editing files ========================= ESS[S] is the mode for editing S language files. This mode handles: - proper indenting, generated by both [Tab] and [Return]. - color and font choices based on syntax. - ability to send the contents of an entire buffer, a highlighted region, an S function, or a single line to an inferior S process, if one is currently running. - ability to switch between processes which would be the target of the buffer (for the above). - The ability to request help from an S process for variables and functions, and to have the results sent into a separate buffer. - completion of object names and file names. ESS[S] mode should be automatically turned on when loading a file with the suffices found in ess-site (*.R, *.S, *.s, etc). Alternatively, type 'M-x R-mode' to put the current buffer into R mode. However, one will have to start up an inferior process to take advantage of the interactive features.  File: ess.info, Node: iESS(S)--Inferior ESS processes, Next: ESS-help--assistance with viewing help, Prev: ESS(S)--Editing files, Up: ESS for S 12.2 iESS[S]-Inferior ESS processes =================================== iESS (inferior ESS) is the mode for interfacing with active statistical processes (programs). This mode handles: - proper indenting, generated by both [Tab] and [Return]. - color and font highlighting based on syntax. - ability to resubmit the contents of a multi-line command to the executing process with a single keystroke [RET]. - The ability to request help from the current process for variables and functions, and to have the results sent into a separate buffer. - completion of object names and file names. - interactive history mechanism. - transcript recording and editing. To start up iESS mode, use: M-x S+3 M-x S4 M-x S+5 M-x S+6 M-x R (for S-PLUS 3.x, S4, S+5, S+6 or S+7, and R, respectively. This assumes that you have access to each). Usually the site will have defined one of these programs (by default S+6) to the simpler name: M-x S In the (rare) case that you wish to pass command line arguments to the starting S+6 process, set the variable 'inferior-Splus-args'. Note that R has some extremely useful command line arguments. For example, '--vanilla' will ensure R starts up without loading in any init files. To enter a command line argument, call R using a "prefix argument", by C-u M-x R and when ESS prompts for "Starting Args ? ", enter (for example): '--vanilla' Then that R process will be started up using 'R --vanilla'. If you wish to always call R with certain arguments, set the variable 'inferior-R-args' accordingly. If you have other versions of R or S-Plus available on the system, ESS is also able to start those versions. How this exactly works depend on which OS you are using, as described in the following paragraphs. The general principle, regardless of OS, is that ESS searches the paths listed in the variable 'exec-path' for R binaries. If ESS cannot find your R binaries, on Unix you can change the unix environment variable 'PATH', as this variable is used to set 'exec-path'. R on Unix systems: If you have "R-1.8.1" on your 'exec-path', it can be started using 'M-x R-1.8.1'. By default, ESS will find versions of R beginning "R-1" or "R-2". If your versions of R are called other names, consider renaming them with a symbolic link or change the variable 'ess-r-versions'. To see which functions have been created for starting different versions of R, type 'M-x R-' and then hit [Tab]. These other versions of R can also be started from the "ESS->Start Process->Other" menu. R on Windows systems: If you have "rw1081" on your 'exec-path', it can be started using 'M-x rw1081'. By default, ESS will find versions of R located in directories parallel to the version of R in your 'PATH'. If your versions of R are called other names, you will need to change the variable 'ess-rterm-versions'. To see which functions have been created for starting different versions of R, type 'M-x rw' and then hit [Tab]. These other versions of R can also be started from the "ESS->Start Process->Other" menu. Once ESS has found these extra versions of R, it will then create a new function, called 'M-x R-newest', which will call the newest version of R that it found. (ESS examines the date in the first line of information from 'R --version' to determine which is newest.) S on Unix systems: If you have "Splus7" on your 'exec-path', it can be started using 'M-x Splus7'. By default, ESS will find all executables beginning "Splus" on your path. If your versions of S are called other names, consider renaming them with a symbolic link or change the variable 'ess-s-versions'. To see which functions have been created for starting different versions of Splus, type 'M-x Splus' and then hit [Tab]. These other versions of Splus can also be started from the "ESS->Start Process->Other" menu. A second mechanism is also available for running other versions of Splus. The variable 'ess-s-versions-list' is a list of lists; each sublist should be of the form: (DEFUN-NAME PATH ARGS). DEFUN-NAME is the name of the new emacs function you wish to create to start the new S process; PATH is the full path to the version of S you want to run; ARGS is an optional string of command-line arguments to pass to the S process. Here is an example setting: (setq ess-s-versions-list '( ("Splus64" "/usr/local/bin/Splus64") ("Splus64-j" "/usr/local/bin/Splus64" "-j"))) which will then allow you to do 'M-x Splus64-j' to start Splus64 with the corresponding command line arguments. If you change the value of either 'ess-s-versions' or 'ess-s-versions-list', you should put them in your .emacs before ess-site is loaded, since the new emacs functions are created when ESS is loaded. Sqpe (S-Plus running inside an emacs buffer) on Windows systems: If you have an older version of S-Plus (S-Plus 6.1 for example) on your system, ir can be started inside an emacs buffer with 'M-x splus61'. By default, ESS will find versions of S-Plus located in the installation directories that Insightful uses by default. If your versions of S-Plus are anywhere else, you will need to change the variable 'ess-SHOME-versions'. To see which functions have been created for starting different versions of S-Plus, type 'M-x spl' and then hit [Tab]. These other versions of S-Plus can also be started from the "ESS->Start Process->Other" menu.  File: ess.info, Node: ESS-help--assistance with viewing help, Next: Philosophies for using ESS(S), Prev: iESS(S)--Inferior ESS processes, Up: ESS for S 12.3 ESS-help-assistance with viewing help ========================================== ESS has built-in facilities for viewing help files from S. *Note Help::.  File: ess.info, Node: Philosophies for using ESS(S), Next: Scenarios for use (possibilities--based on actual usage), Prev: ESS-help--assistance with viewing help, Up: ESS for S 12.4 Philosophies for using ESS[S] ================================== The first is preferred, and configured for. The second one can be retrieved again, by changing emacs variables. 1: (preferred by the current group of developers): The source code is real. The objects are realizations of the source code. Source for EVERY user modified object is placed in a particular directory or directories, for later editing and retrieval. 2: (older version): S objects are real. Source code is a temporary realization of the objects. Dumped buffers should not be saved. _We_strongly_discourage_this_approach_. However, if you insist, add the following lines to your .emacs file: (setq ess-keep-dump-files 'nil) (setq ess-delete-dump-files t) (setq ess-mode-silently-save nil) The second saves a small amount of disk space. The first allows for better portability as well as external version control for code.  File: ess.info, Node: Scenarios for use (possibilities--based on actual usage), Next: Customization Examples and Solutions to Problems, Prev: Philosophies for using ESS(S), Up: ESS for S 12.5 Scenarios for use (possibilities-based on actual usage) ============================================================ We present some basic suggestions for using ESS to interact with S. These are just a subset of approaches, many better approaches are possible. Contributions of examples of how you work with ESS are appreciated (especially since it helps us determine priorities on future enhancements)! (comments as to what should be happening are prefixed by "##"). 1: ## Data Analysis Example (source code is real) ## Load the file you want to work with C-x C-f myfile.s ## Edit as appropriate, and then start up S-PLUS 3.x M-x S+3 ## A new buffer *S+3:1* will appear. Splus will have been started ## in this buffer. The buffer is in iESS [S+3:1] mode. ## Split the screen and go back to the file editing buffer. C-x 2 C-x b myfile.s ## Send regions, lines, or the entire file contents to S-PLUS. For regions, ## highlight a region with keystrokes or mouse and then send with: C-c C-r ## Re-edit myfile.s as necessary to correct any difficulties. Add ## new commands here. Send them to S by region with C-c C-r, or ## one line at a time with C-c C-n. ## Save the revised myfile.s with C-x C-s. ## Save the entire *S+3:1* interaction buffer with C-c C-s. You ## will be prompted for a file name. The recommended name is ## myfile.St. With the *.St suffix, the file will come up in ESS ## Transcript mode the next time it is accessed from Emacs. 2: ## Program revision example (source code is real) ## Start up S-PLUS 3.x in a process buffer (this will be *S+3:1*) M-x S+3 ## Load the file you want to work with C-x C-f myfile.s ## edit program, functions, and code in myfile.s, and send revised ## functions to S when ready with C-c C-f ## or highlighted regions with C-c C-r ## or individual lines with C-c C-n ## or load the entire buffer with C-c C-l ## save the revised myfile.s when you have finished C-c C-s 3: ## Program revision example (S object is real) ## Start up S-PLUS 3.x in a process buffer (this will be *S+3:1*) M-x S+3 ## Dump an existing S object my.function into a buffer to work with C-c C-d my.function ## a new buffer named yourloginname.my.function.S will be created with ## an editable copy of the object. The buffer is associated with the ## pathname /tmp/yourloginname.my.function.S and will amlost certainly not ## exist after you log off. ## enter program, functions, and code into work buffer, and send ## entire contents to S-PLUS when ready C-c C-b ## Go to *S+3:1* buffer, which is the process buffer, and examine ## the results. C-c C-y ## The sequence C-c C-y is a shortcut for: C-x b *S+3:1* ## Return to the work buffer (may/may not be prefixed) C-x C-b yourloginname.my.function.S ## Fix the function that didn't work, and resubmit by placing the ## cursor somewhere in the function and C-c C-f ## Or you could've selected a region (using the mouse, or keyboard ## via setting point/mark) and C-c C-r ## Or you could step through, line by line, using C-c C-n ## Or just send a single line (without moving to the next) using C-c C-j ## To fix that error in syntax for the "rchisq" command, get help ## by C-c C-v rchisq 4: Data Analysis (S object is real) ## Start up S-PLUS 3.x, in a process buffer (this will be *S+3:1*) M-x S+3 ## Work in the process buffer. When you find an object that needs ## to be changed (this could be a data frame, or a variable, or a ## function), dump it to a buffer: C-c C-d my.cool.function ## Edit the function as appropriate, and dump back in to the ## process buffer C-c C-b ## Return to the S-PLUS process buffer C-c C-y ## Continue working. ## When you need help, use C-c C-v rchisq ## instead of entering: help("rchisq")  File: ess.info, Node: Customization Examples and Solutions to Problems, Prev: Scenarios for use (possibilities--based on actual usage), Up: ESS for S 12.6 Customization Examples and Solutions to Problems ===================================================== 1. Suppose that you are primarily an SPLUS 3.4 user, occasionally using S version 4, and sick and tired of the buffer-name *S+3* we've stuck you with. Simply edit the "ess-dialect" alist entry in the ess-sp3-d.el and ess-s4-d.el files to be "S" instead of "S4" and "S+3". This will ensure that all the inferior process buffer names are "*S*". 2. Suppose that you WANT to have the first buffer name indexed by ":1", in the same manner as your S-PLUS processes 2,3,4, and 5 (for you heavy simulation people). Then add after your (require 'ess-site) or (load "ess-site") command in your .emacs file, the line: (setq ess-plain-first-buffername nil) 3. Fontlocking sometimes fails to behave nicely upon errors. When Splus dumps, a mis-matched " (double-quote) can result in the wrong font-lock face being used for the remainder of the buffer. Solution: add a " at the end of the "Dumped..." statement, to revert the font-lock face back to normal. 4. When you change directory within a *R* or *S* session using the setwd() command, emacs does not recognise that you have changed the current directory. Solution: Use 'M-x ess-change-directory'. This will prompt you for the directory to change to. It will then change directory within the *S* buffer, and also update the emacs variable 'default-directory'. Alternatively, if you have already executed setwd(), press 'M-RET' within the *S* buffer so that Emacs can update 'default-directory'.  File: ess.info, Node: ESS for SAS, Next: ESS for BUGS, Prev: ESS for S, Up: Top 13 ESS for SAS ************** * Menu: * ESS(SAS)--Design philosophy:: * ESS(SAS)--Editing files:: * ESS(SAS)--TAB key:: * ESS(SAS)--Batch SAS processes:: * ESS(SAS)--Function keys for batch processing:: * iESS(SAS)--Interactive SAS processes:: * iESS(SAS)--Common problems:: * ESS(SAS)--Graphics:: * ESS(SAS)--Windows:: ESS[SAS] was designed for use with SAS. It is descended from emacs macros developed by John Sall for editing SAS programs and 'SAS-mode' by Tom Cook. Those editing features and new advanced features are part of ESS[SAS]. The user interface of ESS[SAS] has similarities with ESS[S] and the SAS Display Manager.  File: ess.info, Node: ESS(SAS)--Design philosophy, Next: ESS(SAS)--Editing files, Prev: ESS for SAS, Up: ESS for SAS 13.1 ESS[SAS]-Design philosophy =============================== ESS[SAS] was designed to aid the user in writing and maintaining SAS programs, such as 'FOO.sas'. Both interactive and batch submission of SAS programs is supported. ESS[SAS] was written with two primary goals. 1. The emacs text editor provides a powerful and flexible development environment for programming languages. These features are a boon to all programmers and, with the help of ESS[SAS], to SAS users as well. 2. Although a departure from SAS Display Manager, ESS[SAS] provides similar key definitions to give novice ESS[SAS] users a head start. Also, inconvenient SAS Display Manager features, like remote submission and syntax highlighting, are provided transparently; appealing to advanced ESS[SAS] users.  File: ess.info, Node: ESS(SAS)--Editing files, Next: ESS(SAS)--TAB key, Prev: ESS(SAS)--Design philosophy, Up: ESS for SAS 13.2 ESS[SAS]-Editing files =========================== ESS[SAS] is the mode for editing SAS language files. This mode handles: * proper indenting, generated by both and . * color and font choices based on syntax. * ability to save and submit the file you are working on as a batch SAS process with a single keypress and to continue editing while it is runs in the background. * capability of killing the batch SAS process through the '*shell*' buffer or allow the SAS process to keep on running after you exit emacs. * single keypress navigation of '.sas', '.log' and '.lst' files ('.log' and '.lst' files are refreshed with each keypress). * ability to send the contents of an entire buffer, a highlighted region, or a single line to an interactive SAS process. * ability to switch between processes which would be the target of the buffer (for the above). ESS[SAS] is automatically turned on when editing a file with a '.sas' suffix (or other extension, if specified via 'auto-mode-alist'). The function keys can be enabled to use the same function keys that the SAS Display Manager does. The interactive capabilities of ESS require you to start an inferior SAS process with 'M-x SAS' (*Note iESS(SAS)--Interactive SAS processes::.) At this writing, the indenting and syntax highlighting are generally correct. Known issues: for multiple line '*' or '%*' comments, only the first line is highlighted; for '.log' files, only the first line of a 'NOTE:', 'WARNING:' or 'ERROR:' message is highlighted; unmatched single/double quotes in 'CARDS' data lines are *NOT* ignored; in an iterative 'DO' statement, 'TO' and 'BY' are not highlighted.  File: ess.info, Node: ESS(SAS)--TAB key, Next: ESS(SAS)--Batch SAS processes, Prev: ESS(SAS)--Editing files, Up: ESS for SAS 13.3 ESS[SAS]- key ======================= Two options. The key is bound by default to 'sas-indent-line'. This function is used to syntactically indent SAS code so 'PROC' and 'RUN' are in the left margin, other statements are indented 'sas-indent-width' spaces from the margin, continuation lines are indented 'sas-indent-width' spaces in from the beginning column of that statement. This is the type of functionality that emacs provides in most programming language modes. This functionality is activated by placing the following line in your initialization file prior to a 'require'/'load': (setq ess-sas-edit-keys-toggle nil) ESS provides an alternate behavior for that makes it behave as it does in SAS Display Manager, i.e. move the cursor to the next stop. The alternate behavior also provides a "TAB" backwards, 'C-', that moves the cursor to the stop to the left and deletes any characters between them. This functionality is obtained by placing the following line in your initialization file prior to a 'require'/'load': (setq ess-sas-edit-keys-toggle t) Under the alternate behavior, is bound to 'M-x tab-to-tab-stop' and the stops are defined by 'ess-sas-tab-stop-list'.  File: ess.info, Node: ESS(SAS)--Batch SAS processes, Next: ESS(SAS)--Function keys for batch processing, Prev: ESS(SAS)--TAB key, Up: ESS for SAS 13.4 ESS[SAS]-Batch SAS processes ================================= Submission of a SAS batch job is dependent on your environment. 'ess-sas-submit-method' is determined by your operating system and your shell. It defaults to ''sh' unless you are running Windows or Mac Classic. Under Windows, it will default to ''sh' if you are using a UNIX-imitating shell; otherwise ''ms-dos' for an MS-DOS shell. On macOS, it will default to ''sh', but under Mac Classic, it defaults to ''apple-script'. You will also set this to ''sh' if the SAS batch job needs to run on a remote machine rather than your local machine. This works transparently if you are editing the remote file via ange-ftp/EFS or tramp. Note that 'ess-sas-shell-buffer-remote-init' is a Local Variable that defaults to '"ssh"' which will be used to open the buffer on the remote host and it is assumed that no password is necessary, i.e. you are using 'ssh-agent'/'ssh-add' or the equivalent (see the discussion about Local Variables below if you need to change the default). However, if you are editing the file locally and transferring it back and forth with Kermit, you need some additional steps. First, start Kermit locally before remotely logging in. Open a local copy of the file with the 'ess-kermit-prefix' character prepended (the default is '"#"'). Execute the command 'M-x ess-kermit-get' which automatically brings the contents of the remote file into your local copy. If you transfer files with Kermit manually in a '*shell*' buffer, then note that the Kermit escape sequence is 'C-q C-\ c' rather than 'C-\ c' which it would be in an ordinary terminal application, i.e. not in an emacs buffer. Lastly, note that the remote Kermit command is specified by 'ess-kermit-command'. The command used by the 'SUBMIT' function key ( or ) to submit a batch SAS job, whether local or remote, is 'ess-sas-submit-command' which defaults to 'sas-program'. 'sas-program' is '"invoke SAS using program file"' for Mac Classic and '"sas"' otherwise. However, you may have to alter 'ess-sas-submit-command' for a particular program, so it is defined as buffer-local. Conveniently, it can be set at the end of the program: endsas; Local variables: ess-sas-submit-command: "sas8" End: The command line is also made of 'ess-sas-submit-pre-command', 'ess-sas-submit-post-command' and 'ess-sas-submit-command-options' (the last of which is also buffer-local). Here are some examples for your '~/.emacs' or '~/.xemacs/init.el' file (you may also use 'M-x customize-variable'): ;'sh default (setq ess-sas-submit-pre-command "nohup") ;'sh default (setq ess-sas-submit-post-command "-rsasuser &") ;'sh example (setq-default ess-sas-submit-command "/usr/local/sas/sas") ;'ms-dos default (setq ess-sas-submit-pre-command "start") ;'ms-dos default (setq ess-sas-submit-post-command "-rsasuser -icon") ;Windows example (setq-default ess-sas-submit-command "c:/progra~1/sas/sas.exe") ;Windows example (setq-default ess-sas-submit-command "c:\\progra~1\\sas\\sas.exe") There is a built-in delay before a batch SAS job is submitted when using a UNIX-imitating shell under Windows. This is necessary in many cases since the shell might not be ready to receive a command. This delay is currently set high enough so as not to be a problem. But, there may be cases when it needs to be set higher, or could be set much lower to speed things up. You can over-ride the default in your '~/.emacs' or '~/.xemacs/init.el' file by: (setq ess-sleep-for 0.2) For example, '(setq ess-sas-global-unix-keys t)' keys shown, '(setq ess-sas-global-pc-keys t)' in parentheses; ESS[SAS] function keys are presented in the next section. Open the file you want to work with 'C-x C-f foo.sas'. 'FOO.sas' will be in ESS[SAS] mode. Edit as appropriate, then save and submit the batch SAS job. () The job runs in the '*shell*' buffer while you continue to edit 'FOO.sas'. If 'ess-sas-submit-method' is ''sh', then the message buffer will display the shell notification when the job is complete. The ''sh' setting also allows you to terminate the SAS batch job before it is finished. () Terminating a SAS batch in the '*shell*' buffer. kill PID You may want to visit the '.log' (whether the job is still running or it is finished) and check for error messages. The '.log' will be refreshed and you will be placed in it's buffer. You will be taken to the first error message, if any. () Goto the next error message, if any. () Now, 'refresh' the '.lst' and go to it's buffer. () If you wish to make changes, go to the '.sas' file with. () Make your editing changes and submit again. ()  File: ess.info, Node: ESS(SAS)--Function keys for batch processing, Next: iESS(SAS)--Interactive SAS processes, Prev: ESS(SAS)--Batch SAS processes, Up: ESS for SAS 13.5 ESS[SAS]-Function keys for batch processing ================================================ The setup of function keys for SAS batch processing is unavoidably complex, but the usage of function keys is simple. There are five distinct options: Option 1 (default). Function keys in ESS[SAS] are not bound to elisp commands. This is in accordance with the GNU Elisp Coding Standards (GECS) which do not allow function keys to be bound so that they are available to the user. Options 2-5. Since GECS does not allow function keys to be bound by modes, these keys are often unused. So, ESS[SAS] provides users with the option of binding elisp commands to these keys. Users who are familiar with SAS will, most likely, want to duplicate the function key capabilities of the SAS Display Manager. There are four options (noted in parentheses). a. SAS Display Manager has different function key definitions for UNIX (2, 4) and Windows (3, 5); ESS[SAS] can use either. b. The ESS[SAS] function key definitions can be active in all buffers (global: 4, 5) or limited (local: 2, 3) only to buffers with files that are associated with ESS[SAS] as specified in your 'auto-mode-alist'. The distinction between local and global is subtle. If you want the ESS[SAS] definitions to work when you are in the '*shell*' buffer or when editing files other than the file extensions that ESS[SAS] recognizes, you will most likely want to use the global definitions. If you want your function keys to understand SAS batch commands when you are editing SAS files, and to behave normally when editing other files, then you will choose the local definitions. The option can be chosen by the person installing ESS for a site or by an individual. a. For a site installation or an individual, place *ONLY ONE* of the following lines in your initialization file prior to a 'require'/'load'. ESS[SAS] function keys are available in ESS[SAS] if you choose either 2 or 3 and in all modes if you choose 4 or 5: ;;2; (setq ess-sas-local-unix-keys t) ;;3; (setq ess-sas-local-pc-keys t) ;;4; (setq ess-sas-global-unix-keys t) ;;5; (setq ess-sas-global-pc-keys t) The names '-unix-' and '-pc-' have nothing to do with the operating system that you are running. Rather, they mimic the definitions that the SAS Display Manager uses by default on those platforms. b. If your site installation has configured the keys contrary to your liking, then you must call the appropriate function. (load "ess-site") ;; local-unix-keys (ess-sas-global-pc-keys) Finally, we get to what the function keys actually do. You may recognize some of the nicknames as SAS Display Manager commands (they are in all capitals). UNIX PC Nickname 'refresh' revert the current buffer with the file of the same name if the file is newer than the buffer 'SUBMIT' save the current '.sas' file (which is either the '.sas' file in the current buffer or the '.sas' file associated with the '.lst' or '.log' file in the current buffer) and submit the file as a batch SAS job 'PROGRAM' switch buffer to '.sas' file 'LOG' switch buffer to '.log' file, 'refresh' and goto next error message, if any 'OUTPUT' switch buffer to '.lst' file and 'refresh' 'filetype-1' switch buffer to 'filetype-1' (defaults to '.txt') file and 'refresh' 'shell' switch buffer to '*shell*' 'VIEWTABLE' open an interactive 'PROC FSEDIT' session on the SAS dataset near point toggle-log toggle ESS[SAS] for '.log' files; useful for certain debugging situations 'filetype-2' switch buffer to 'filetype-2' (defaults to '.dat') file and 'refresh' viewgraph open a 'GSASFILE' near point for viewing either in emacs or with an external viewer 'C-' 'C-' rtf-portrait create an MS RTF portrait file from the current buffer with a file extension of '.rtf' 'C-' 'C-' rtf-landscape create an MS RTF landscape file from the current buffer with a file extension of '.rtf' 'C-' 'C-' submit-region write region to 'ess-temp.sas' and submit 'C-' 'C-' append-to-log append 'ess-temp.log' to the current '.log' file 'C-' 'C-' append-to-output append 'ess-temp.lst' to the current '.lst' file 'C-' 'C-' 'INSIGHT' open an interactive 'PROC INSIGHT' session on the SAS dataset near point 'C-''C-'toggle-listing toggle ESS[SAS] for '.lst' files; useful for toggling read-only 'SUBMIT', 'PROGRAM', 'LOG' and 'OUTPUT' need no further explanation since they mimic the SAS Display Manager commands and related function key definitions. However, six other keys have been provided for convenience and are described below. 'shell' switches you to the '*shell*' buffer where you can interact with your operating system. This is especially helpful if you would like to kill a SAS batch job. You can specify a different buffer name to associate with a SAS batch job (besides '*shell*') with the buffer-local variable 'ess-sas-shell-buffer'. This allows you to have multiple buffers running SAS batch jobs on multiple local/remote computers that may rely on different methods specified by the buffer-local variable 'ess-sas-submit-method'. performs the 'refresh' operation on the current buffer. 'refresh' compares the buffer's last modified date/time with the file's last modified date/time and replaces the buffer with the file if the file is newer. This is the same operation that is automatically performed when 'LOG', 'OUTPUT', 'filetype-1' or are pressed. 'filetype-1' switches you to a file with the same file name as your '.sas' file, but with a different extension ('.txt' by default) and performs 'refresh'. You can over-ride the default extension; for example in your '~/.emacs' or '~/.xemacs/init.el' file: (setq ess-sas-suffix-1 "csv") ; for example will prompt you for the name of a permanent SAS dataset near point to be opened for viewing by 'PROC FSEDIT'. You can control the SAS batch command-line with 'ess-sas-data-view-submit-options'. For controlling the SAS batch commands, you have the global variables 'ess-sas-data-view-libname' and 'ess-sas-data-view-fsview-command' as well as the buffer-local variable 'ess-sas-data-view-fsview-statement'. If you have your SAS 'LIBNAME' defined in '~/autoexec.sas', then the defaults for these variables should be sufficient. Similarly, 'C-' will prompt you for the name of a permanent SAS dataset near point to be opened for viewing by 'PROC INSIGHT'. You can control the SAS batch command-line with 'ess-sas-data-view-submit-options'. For controlling the SAS batch commands, you have the global variables 'ess-sas-data-view-libname' and 'ess-sas-data-view-insight-command' as well as the buffer-local variable 'ess-sas-data-view-insight-statement'. toggles ESS[SAS] mode for '.log' files which is off by default (technically, it is 'SAS-log-mode', but it looks the same). The syntax highlighting can be helpful in certain debugging situations, but large '.log' files may take a long time to highlight. is the same as 'filetype-1' except it is '.dat' by default. will prompt you for the name of a 'GSASFILE' near the point in '.log' to be opened for viewing either with emacs or with an external viewer. Depending on your version of emacs and the operating system you are using, emacs may support '.gif' and '.jpg' files internally. You may need to change the following variables for your own situation. 'ess-sas-graph-view-suffix-regexp' is a regular expression of supported file types defined via file name extensions. 'ess-sas-graph-view-viewer-default' is the default external viewer for your platform. 'ess-sas-graph-view-viewer-alist' is an alist of exceptions to the default; i.e. file types and their associated viewers which will be used rather than the default viewer. (setq ess-sas-graph-view-suffix-regexp (concat "[.]\\([eE]?[pP][sS]\\|" "[pP][dD][fF]\\|[gG][iI][fF]\\|[jJ][pP][eE]?[gG]\\|" "[tT][iI][fF][fF]?\\)")) ;; default (setq ess-sas-graph-view-viewer-default "kodakimg") ;; Windows default (setq ess-sas-graph-view-viewer-default "sdtimage") ;; Solaris default (setq ess-sas-graph-view-viewer-alist '(("[eE]?[pP][sS]" . "gv") ("[pP][dD][fF]" . "gv")) ;; default w/ gv 'C-' produces US landscape by default, however, it can produce A4 landscape (first line for "global" key mapping, second for "local"): (global-set-key [(control f2)] 'ess-sas-rtf-a4-landscape) (define-key sas-mode-local-map [(control f2)] 'ess-sas-rtf-a4-landscape)  File: ess.info, Node: iESS(SAS)--Interactive SAS processes, Next: iESS(SAS)--Common problems, Prev: ESS(SAS)--Function keys for batch processing, Up: ESS for SAS 13.6 iESS[SAS]-Interactive SAS processes ======================================== Inferior ESS (iESS) is the method for interfacing with interactive statistical processes (programs). iESS[SAS] is what is needed for interactive SAS programming. iESS[SAS] works best with the SAS command-line option settings '"-stdio -linesize 80 -noovp -nosyntaxcheck"' (the default of 'inferior-SAS-args'). '-stdio' required to make the redirection of stdio work '-linesize 80' keeps output lines from folding on standard terminals '-noovp' prevents error messages from printing 3 times '-nosyntaxcheck' permits recovery after syntax errors To start up iESS[SAS] mode, use: M-x SAS The '*SAS:1.log*' buffer in 'ESStr' mode corresponds to the file 'FOO.log' in SAS batch usage and to the 'SAS: LOG' window in the SAS Display Manager. All commands submitted to SAS, informative messages, warnings, and errors appear here. The '*SAS:1.lst*' buffer in 'ESSlst' mode corresponds to the file 'FOO.lst' in SAS batch usage and to the 'SAS: OUTPUT' window in the SAS Display Manager. All printed output appears in this window. The '*SAS:1*' buffer exists solely as a communications buffer. The user should never use this buffer directly. Files are edited in the 'FOO.sas' buffer. The 'C-c C-r' key in ESS[SAS] is the functional equivalent of bringing a file into the 'SAS: PROGRAM EDITOR' window followed by 'SUBMIT'. For example, open the file you want to work with. C-x C-f foo.sas 'FOO.sas' will be in ESS[SAS] mode. Edit as appropriate, and then start up SAS with the cursor in the 'FOO.sas' buffer. M-x SAS Four buffers will appear on screen: Buffer Mode Description 'FOO.sas' 'ESS[SAS]' your source file '*SAS:1*' 'iESS[SAS:1]' iESS communication buffer '*SAS:1.log*' 'Shell ESStr SAS log information []' '*SAS:1.lst*' 'Shell ESSlst SAS listing information []' If you would prefer each of the four buffers to appear in its own individual frame, you can arrange for that. Place the cursor in the buffer displaying 'FOO.sas'. Enter the sequence 'C-c C-w'. The cursor will normally be in buffer 'FOO.sas'. If not, put it there and 'C-x b FOO.sas'. Send regions, lines, or the entire file contents to SAS (regions are most useful: a highlighted region will normally begin with the keywords 'DATA' or 'PROC' and end with 'RUN;'), 'C-c C-r'. Information appears in the log buffer, analysis results in the listing buffer. In case of errors, make the corrections in the 'FOO.sas' buffer and resubmit with another 'C-c C-r'. At the end of the session you may save the log and listing buffers with the usual 'C-x C-s' commands. You will be prompted for a file name. Typically, the names 'FOO.log' and 'FOO.lst' will be used. You will almost certainly want to edit the saved files before including them in a report. The files are read-only by default. You can make them writable by the emacs command 'C-x C-q'. At the end of the session, the input file 'FOO.sas' will typically have been revised. You can save it. It can be used later as the beginning of another iESS[SAS] session. It can also be used as a batch input file to SAS. The '*SAS:1*' buffer is strictly for ESS use. The user should never need to read it or write to it. Refer to the '.lst' and '.log' buffers for monitoring output! Troubleshooting: *Note iESS(SAS)--Common problems::.  File: ess.info, Node: iESS(SAS)--Common problems, Next: ESS(SAS)--Graphics, Prev: iESS(SAS)--Interactive SAS processes, Up: ESS for SAS 13.7 iESS[SAS]-Common problems ============================== 1. iESS[SAS] does not work on Windows. In order to run SAS inside an emacs buffer, it is necessary to start SAS with the '-stdio' option. SAS does not support the '-stdio' option on Windows. 2. If 'M-x SAS' gives errors upon startup, check the following: * you are running Windows: see 1. * 'ess-sas-sh-command' (from the ESS 'etc' directory) needs to be executable; too check, type 'M-x dired'; if not, fix it as follows, type 'M-:', then at the minibuffer prompt 'Eval:', type '(set-file-modes "ess-sas-sh-command" 493)'. * 'sas' isn't in your executable path; to verify, type 'M-:' and at the minibuffer prompt 'Eval:', type '(executable-find "sas")' 3. 'M-x SAS' starts SAS Display Manager. Probably, the command 'sas' on your system calls a shell script. In that case you will need to locate the real 'sas' executable and link to it. You can execute the UNIX command: find / -name sas -print Now place a soft link to the real 'sas' executable in your '~/bin' directory, with for example cd ~/bin ln -s /usr/local/sas9/sas sas Check your 'PATH' environment variable to confirm that '~/bin' appears before the directory in which the 'sas' shell script appears.  File: ess.info, Node: ESS(SAS)--Graphics, Next: ESS(SAS)--Windows, Prev: iESS(SAS)--Common problems, Up: ESS for SAS 13.8 ESS[SAS]-Graphics ====================== Output from a SAS/GRAPH 'PROC' can be displayed in a SAS/GRAPH window for SAS batch on Windows or for both SAS batch and interactive with XWindows on UNIX. If you need to create graphics files and view them with , then include the following (either in 'FOO.sas' or in '~/autoexec.sas'): filename gsasfile 'graphics.ps'; goptions device=ps gsfname=gsasfile gsfmode=append; 'PROC PLOT' graphs can be viewed in the listing buffer. You may wish to control the vertical spacing to allow the entire plot to be visible on screen, for example: proc plot; plot a*b / vpos=25; run;  File: ess.info, Node: ESS(SAS)--Windows, Prev: ESS(SAS)--Graphics, Up: ESS for SAS 13.9 ESS[SAS]-Windows ===================== * iESS[SAS] does not work on Windows. *Note iESS(SAS)--Common problems::. * ESS[SAS] mode for editing SAS language files works very well. *Note ESS(SAS)--Editing files::. * There are two execution options for SAS on Windows. You can use batch. *Note ESS(SAS)--Batch SAS processes::. Or you can mark regions with the mouse and submit the code with 'submit-region' or paste them into SAS Display Manager.  File: ess.info, Node: ESS for BUGS, Next: ESS for JAGS, Prev: ESS for SAS, Up: Top 14 ESS for BUGS *************** * Menu: * ESS(BUGS)--Model files:: * ESS(BUGS)--Command files:: * ESS(BUGS)--Log files:: ESS[BUGS] was originally designed for use with BUGS software. Later, it evolved to support JAGS as a dialect of the BUGS language via ESS[JAGS], however, ESS[JAGS] is documented in the section Help for JAGS. ESS[BUGS] provides 5 features. First, BUGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in BUGS model files, command files and log files. Second, ESS creates templates for the command file from the model file so that a BUGS batch process can be defined by a single file. Third, ESS provides a BUGS batch script that allows ESS to set BUGS batch parameters. Fourth, key sequences are defined to create a command file and submit a BUGS batch process. Lastly, interactive submission of BUGS commands is also supported.  File: ess.info, Node: ESS(BUGS)--Model files, Next: ESS(BUGS)--Command files, Prev: ESS for BUGS, Up: ESS for BUGS 14.1 ESS[BUGS]-Model files ========================== Model files with the '.bug' extension are edited in ESS[BUGS] mode if '(require 'ess-bugs-d)' was performed. Model files with the '.jag' extension are edited in ESS[JAGS] mode if '(require 'ess-jags-d)' was performed. Three keys are bound for your use in ESS[BUGS], 'F2', 'C-c C-c' and '='. 'F2' performs the same action as it does in ESS[SAS], *Note ESS(SAS)--Function keys for batch processing::. 'C-c C-c' performs the function 'ess-bugs-next-action' which you will use a lot. Pressing it in an empty buffer for a model file will produce a template for you. '=' inserts the set operator, '<-'.  File: ess.info, Node: ESS(BUGS)--Command files, Next: ESS(BUGS)--Log files, Prev: ESS(BUGS)--Model files, Up: ESS for BUGS 14.2 ESS[BUGS]-Command files ============================ To avoid extension name collision, '.bmd' is used for BUGS command files and '.jmd' for JAGS command files. When you have finished editing your model file and press 'C-c C-c', a command file is created if one does not already exist. When you are finished editing your command file, pressing 'C-c C-c' again will submit your command file as a batch job.  File: ess.info, Node: ESS(BUGS)--Log files, Prev: ESS(BUGS)--Command files, Up: ESS for BUGS 14.3 ESS[BUGS]-Log files ======================== To avoid extension name collision, '.bog' is used for BUGS log files. The command line generated by ESS creates the '.bog' transcript file. Similarly, '.jog' is used for JAGS log files.  File: ess.info, Node: ESS for JAGS, Next: Mailing lists/bug reports, Prev: ESS for BUGS, Up: Top 15 ESS for JAGS *************** * Menu: * ESS(JAGS)--Model files:: * ESS(JAGS)--Command files:: * ESS(JAGS)--Log files:: ESS[BUGS] was originally designed for use with BUGS software. Later, it evolved to support JAGS as a dialect of the BUGS language via ESS[JAGS]. Since BUGS and JAGS are quite similar, ESS[BUGS] and ESS[JAGS] are necessarily similar. ESS[JAGS] provides 4 features. First, JAGS syntax is described to allow for proper fontification of statements, distributions, functions, commands and comments in JAGS model files, command files and log files. Second, ESS creates templates for the command file from the model file so that a JAGS batch process can be defined by a single file. Third, ESS provides a JAGS batch script that allows ESS to set JAGS batch parameters. Fourth, key sequences are defined to create a command file and submit a JAGS batch process.  File: ess.info, Node: ESS(JAGS)--Model files, Next: ESS(JAGS)--Command files, Prev: ESS for JAGS, Up: ESS for JAGS 15.1 ESS[JAGS]-Model files ========================== Model files with the '.bug' extension are edited in ESS[BUGS] mode if '(require 'ess-bugs-d)' was performed or edited in ESS[JAGS] mode if '(require 'ess-jags-d)'. Three keys are bound for your use in ESS[BUGS], 'F2', 'C-c C-c' and '='. 'F2' performs the same action as it does in ESS[SAS], *Note ESS(SAS)--Function keys for batch processing::. 'C-c C-c' performs the function 'ess-bugs-next-action' which you will use a lot. Pressing it in an empty buffer for a model file will produce a template for you. '=' inserts the set operator, '<-'. ESS[JAGS] does not support "replacement" variables which were part of ESS[BUGS]. Although, "replacement" variables are an extremely convenient feature, creating the elisp code for their operation was challenging. So, a more elisp-ish approach was adopted for ESS[JAGS]: elisp local variables. These variables are created as part of the template, i.e. with the first press of 'C-c C-c' in an empty buffer. For your '.bug' file, they are named 'ess-jags-chains', 'ess-jags-monitor', 'ess-jags-thin', 'ess-jags-burnin' and 'ess-jags-update'; they appear in the 'Local Variables' section. When you are finished editing your model file, pressing 'C-c C-c' will perform the necessary actions to build your command file for you. The 'ess-jags-chains' variable is the number of chains that you want to initialize and sample from; defaults to 1. The 'ess-jags-monitor' variable is a list of variables that you want monitored: encase each variable in double quotes. When you press 'C-c C-c', the appropriate statements are created in the command file to monitor the list of variables. By default, no variables are explicitly monitored which means JAGS will implicitly monitor all "default" variables. The 'ess-jags-thin' variable is the thinning parameter. By default, the thinning parameter is set to 1, i.e. no thinning. The 'ess-jags-burnin' variable is the number of initial samples to discard. By default, the burnin parameter is set to 10000. The 'ess-jags-update' variable is the number of post-burnin samples to keep. By default, the update parameter is set to 10000. Both 'ess-jags-burnin' and 'ess-jags-update' are multiplied by 'ess-jags-thin' since JAGS does not do it automatically.  File: ess.info, Node: ESS(JAGS)--Command files, Next: ESS(JAGS)--Log files, Prev: ESS(JAGS)--Model files, Up: ESS for JAGS 15.2 ESS[JAGS]-Command files ============================ To avoid extension name collision, '.bmd' is used for BUGS command files and '.jmd' for JAGS command files. For your '.jmd' file, there is only one variable, 'ess-jags-command', in the 'Local Variables' section. When you have finished editing your model file and press 'C-c C-c', a command file is created if one does not already exist. When you are finished editing your command file, pressing 'C-c C-c' again will submit your command file as a batch job. The 'ess-jags-command' variable allows you to specify a different JAGS program to use to run your model; defaults to "jags".  File: ess.info, Node: ESS(JAGS)--Log files, Prev: ESS(JAGS)--Command files, Up: ESS for JAGS 15.3 ESS[JAGS]-Log files ======================== The '.jog' extension is used for JAGS log files. You may find 'F2' useful to refresh the '.jog' if the batch process over-writes or appends it.  File: ess.info, Node: Mailing lists/bug reports, Next: Customization, Prev: ESS for JAGS, Up: Top 16 Bugs and Bug Reporting, Mailing Lists **************************************** * Menu: * Bugs:: * Reporting Bugs:: * Mailing Lists:: * Help with emacs::  File: ess.info, Node: Bugs, Next: Reporting Bugs, Up: Mailing lists/bug reports 16.1 Bugs ========= * Commands like 'ess-display-help-on-object' and list completion cannot be used while the user is entering a multi-line command. The only real fix in this situation is to use another ESS process. * The 'ess-eval-' commands can leave point in the ESS process buffer in the wrong place when point is at the same position as the last process output. This proves difficult to fix, in general, as we need to consider all _windows_ with 'window-point' at the right place. * It's possible to clear the modification flag (say, by saving the buffer) with the edit buffer not having been loaded into S. * Backup files can sometimes be left behind, even when 'ess-keep-dump-files' is 'nil'. * Passing an incomplete S expression to 'ess-execute' causes ESS to hang. * The function-based commands don't always work as expected on functions whose body is not a parenthesized or compound expression, and don't even recognize anonymous functions (i.e. functions not assigned to any variable). * Multi-line commands could be handled better by the command history mechanism. * Changes to the continutation prompt in R (e.g. 'options(continue = " ")') are not automatically detected by ESS. Hence, for now, the best thing is not to change the continuation prompt. If you do change the continuation prompt, you will need to change accordingly the value of 'inferior-ess-secondary-prompt' in 'R-customize-alist'.  File: ess.info, Node: Reporting Bugs, Next: Mailing Lists, Prev: Bugs, Up: Mailing lists/bug reports 16.2 Reporting Bugs =================== Please send bug reports, suggestions etc. to The easiest way to do this is within Emacs by typing 'M-x ess-submit-bug-report' This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug. If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer. Note that comments, suggestions, words of praise and large cash donations are also more than welcome.  File: ess.info, Node: Mailing Lists, Next: Help with emacs, Prev: Reporting Bugs, Up: Mailing lists/bug reports 16.3 Mailing Lists ================== There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to ; contributions to the list may be mailed to . Rest assured, this is a fairly low-volume mailing list. The purposes of the mailing list include * helping users of ESS to get along with it. * discussing aspects of using ESS on Emacs and XEmacs. * suggestions for improvements. * announcements of new releases of ESS. * posting small patches to ESS.  File: ess.info, Node: Help with emacs, Prev: Mailing Lists, Up: Mailing lists/bug reports 16.4 Help with emacs ==================== Emacs is a complex editor with many abilities that we do not have space to describe here. If you have problems with other features of emacs (e.g. printing), there are several sources to consult, including the emacs FAQs (try 'M-x xemacs-www-faq' or 'M-x view-emacs-FAQ') and EmacsWiki (). Please consult them before asking on the mailing list about issues that are not specific to ESS.  File: ess.info, Node: Customization, Next: Indices, Prev: Mailing lists/bug reports, Up: Top Appendix A Customizing ESS ************************** ESS can be easily customized to your taste simply by including the appropriate lines in your '.emacs' file. There are numerous variables which affect the behavior of ESS in certain situations which can be modified to your liking. Keybindings may be set or changed to your preferences, and for per-buffer customizations hooks are also available. Most of these variables can be viewed and set using the Custom facility within Emacs. Type 'M-x customize-group RET ess RET' to see all the ESS variables that can be customized. Variables are grouped by subject to make it easy to find related variables.  File: ess.info, Node: Indices, Prev: Customization, Up: Top Indices ******* * Menu: * Key index:: * Function and program index:: * Variable index:: * Concept index::  File: ess.info, Node: Key index, Next: Function and program index, Up: Indices Key index ========= [index] * Menu: * ,: Handy commands. (line 6) * {: Indenting. (line 58) * }: Indenting. (line 58) * C-c C-. a: Rutils. (line 31) * C-c C-. d: Rutils. (line 46) * C-c C-. H: Rutils. (line 49) * C-c C-. l: Rutils. (line 20) * C-c C-. m: Rutils. (line 34) * C-c C-. o: Rutils. (line 37) * C-c C-. r: Rutils. (line 23) * C-c C-. s: Rutils. (line 43) * C-c C-. u: Rutils. (line 27) * C-c C-. w: Rutils. (line 40) * C-C C-b: Evaluating code. (line 64) * C-c C-c: Other. (line 9) * C-C C-c: Evaluating code. (line 37) * C-c C-e C-d: Edit buffer. (line 9) * C-c C-e C-s: Styles. (line 15) * C-c C-e s: Styles. (line 15) * C-C C-f: Evaluating code. (line 50) * C-C C-j: Evaluating code. (line 43) * C-c C-l: Hot keys. (line 50) * C-c C-o C-c: Roxygen. (line 45) * C-c C-o C-h: Roxygen. (line 72) * C-c C-o C-o: Roxygen. (line 37) * C-c C-o C-r: Roxygen. (line 51) * C-c C-o C-t: Roxygen. (line 59) * C-c C-o n: Roxygen. (line 69) * C-c C-o p: Roxygen. (line 66) * C-c C-q: Hot keys. (line 72) * C-C C-r: Evaluating code. (line 57) * C-c C-s: Hot keys. (line 34) * C-c C-t C-s: Namespaced Evaluation. (line 36) * C-c C-v: Hot keys. (line 67) * C-c C-w: Clean. (line 11) * C-c C-x: Hot keys. (line 24) * C-c C-z: Other. (line 13) * C-C M-b: Evaluating code. (line 67) * C-C M-f: Evaluating code. (line 53) * C-C M-j: Evaluating code. (line 46) * C-C M-r: Evaluating code. (line 60) * C-c RET: Resubmit. (line 14) * C-c `: Hot keys. (line 55) * C-c ` <1>: Error Checking. (line 9) * C-j: Indenting. (line 65) * C-M-a: Other edit buffer commands. (line 10) * C-M-e: Other edit buffer commands. (line 14) * C-M-h: Other edit buffer commands. (line 18) * C-M-q: Indenting. (line 54) * C-M-x: Evaluating code. (line 34) * C-x `: Hot keys. (line 55) * ESC C-a: Other edit buffer commands. (line 10) * ESC C-e: Other edit buffer commands. (line 14) * ESC C-h: Other edit buffer commands. (line 18) * ESC C-q: Indenting. (line 54) * M-;: Indenting. (line 70) * M-?: Object names. (line 37) * M-C-q: Indenting. (line 54) * M-n l: Sweave and AUCTeX. (line 16) * M-n P: Sweave and AUCTeX. (line 22) * M-n s: Sweave and AUCTeX. (line 12) * M-RET: Resubmit. (line 10) * RET: Command-line editing. (line 10) * RET <1>: Resubmit. (line 18) * TAB: Indenting. (line 36)  File: ess.info, Node: Function and program index, Next: Variable index, Prev: Key index, Up: Indices Function and program index ========================== [index] * Menu: * backward-kill-word: Command-line editing. (line 22) * comint-backward-matching-input: Process buffer motion. (line 31) * comint-bol: Command-line editing. (line 31) * comint-copy-old-input: Transcript resubmit. (line 16) * comint-delete-output: Last command. (line 24) * comint-dynamic-complete: Object names. (line 13) * comint-forward-matching-input: Process buffer motion. (line 32) * comint-history-isearch-backward-regexp: Command History. (line 32) * comint-interrupt-subjob: Other. (line 8) * comint-kill-input: Command-line editing. (line 26) * comint-next-input: Process buffer motion. (line 15) * comint-next-input <1>: Command History. (line 18) * comint-next-matching-input-from-input: Command History. (line 45) * comint-previous-input: Process buffer motion. (line 11) * comint-previous-input <1>: Command History. (line 14) * comint-previous-matching-input-from-input: Command History. (line 41) * comint-show-output: Last command. (line 20) * dump(): Edit buffer. (line 35) * ess-change-directory: Rutils. (line 45) * ess-cleanup: Hot keys. (line 72) * ess-cleanup <1>: Help. (line 172) * ess-describe-help-mode: Help. (line 21) * ess-display-help-on-object: Hot keys. (line 66) * ess-display-help-on-object <1>: Help. (line 8) * ess-display-help-on-object <2>: Help. (line 25) * ess-dump-object-into-edit-buffer: Edit buffer. (line 8) * ess-electric-brace: Indenting. (line 57) * ess-eval-buffer: Evaluating code. (line 63) * ess-eval-buffer-and-go: Evaluating code. (line 66) * ess-eval-function: Evaluating code. (line 49) * ess-eval-function-and-go: Evaluating code. (line 52) * ess-eval-line: Evaluating code. (line 42) * ess-eval-line-and-go: Evaluating code. (line 45) * ess-eval-line-and-step: Help. (line 115) * ess-eval-region: Evaluating code. (line 56) * ess-eval-region <1>: Help. (line 120) * ess-eval-region-and-go: Evaluating code. (line 59) * ess-eval-region-or-function-or-paragraph: Evaluating code. (line 33) * ess-eval-region-or-function-or-paragraph-and-step: Evaluating code. (line 36) * ess-eval-region-or-line-and-step: Evaluating code. (line 29) * ess-execute-objects: Hot keys. (line 23) * ess-execute-search: Hot keys. (line 33) * ess-goto-beginning-of-function-or-para: Other edit buffer commands. (line 9) * ess-goto-end-of-function-or-para: Other edit buffer commands. (line 13) * ess-handy-commands: Handy commands. (line 6) * ess-handy-commands <1>: Handy commands. (line 6) * ess-indent-command: Roxygen. (line 90) * ess-indent-exp: Indenting. (line 53) * ess-indent-or-complete: Indenting. (line 35) * ess-list-object-completions: Object names. (line 36) * ess-load-file: Hot keys. (line 49) * ess-load-file <1>: Loading. (line 11) * ess-mark-function: Other edit buffer commands. (line 17) * ess-parse-errors: Hot keys. (line 54) * ess-parse-errors <1>: Error Checking. (line 9) * ess-quit: Hot keys. (line 71) * ess-quit <1>: Help. (line 172) * ess-R-complete-object-name: Roxygen. (line 80) * ess-r-set-evaluation-env: Namespaced Evaluation. (line 35) * ess-remote: ESS processes on Remote Computers. (line 6) * ess-request-a-process: Multiple ESS processes. (line 15) * ess-resynch: Object names. (line 56) * ess-roxy-hide-all: Roxygen. (line 71) * ess-roxy-next-entry: Roxygen. (line 68) * ess-roxy-preview-HTML: Roxygen. (line 58) * ess-roxy-preview-Rd: Roxygen. (line 50) * ess-roxy-previous-entry: Roxygen. (line 65) * ess-roxy-toggle-roxy-region: Roxygen. (line 44) * ess-roxy-update-entry: Roxygen. (line 36) * ess-rutils-apropos: Rutils. (line 30) * ess-rutils-html-docs: Rutils. (line 48) * ess-rutils-load-wkspc: Rutils. (line 39) * ess-rutils-local-pkgs: Rutils. (line 19) * ess-rutils-objs: Rutils. (line 36) * ess-rutils-repos-pkgs: Rutils. (line 22) * ess-rutils-rm-all: Rutils. (line 33) * ess-rutils-rsitesearch: Rutils. (line 58) * ess-rutils-save-wkspc: Rutils. (line 42) * ess-rutils-update-pkgs: Rutils. (line 26) * ess-set-style: Styles. (line 14) * ess-skip-to-help-section: Help. (line 58) * ess-skip-to-next-section: Help. (line 46) * ess-skip-to-previous-section: Help. (line 46) * ess-smart-comma: Handy commands. (line 6) * ess-submit-bug-report: Reporting Bugs. (line 6) * ess-switch-to-end-of-ESS: Help. (line 126) * ess-switch-to-inferior-or-script-buffer: Other. (line 12) * ess-swv-latex: Sweave and AUCTeX. (line 15) * ess-swv-PDF: Sweave and AUCTeX. (line 21) * ess-swv-PS: Sweave and AUCTeX. (line 18) * ess-swv-weave: Sweave and AUCTeX. (line 11) * ess-tracebug: ESS tracebug. (line 6) * ess-transcript-clean-region: Clean. (line 10) * ess-transcript-copy-command: Resubmit. (line 13) * ess-transcript-send-command: Resubmit. (line 9) * ess-transcript-send-command-and-move: Resubmit. (line 17) * ess-use-ido, ess-completing-read: Minibuffer completion. (line 6) * fill-paragraph: Roxygen. (line 94) * inferior-ess-send-input: Command-line editing. (line 9) * mark-paragraph: Roxygen. (line 85) * move-beginning-of-line: Roxygen. (line 97) * newline-and-indent: Roxygen. (line 101) * objects(): Hot keys. (line 24) * printer(): printer. (line 11) * q(): Hot keys. (line 72) * S: Starting up. (line 12) * search(): Hot keys. (line 34) * search() <1>: Object names. (line 21) * source(): Evaluating code. (line 22) * source() <1>: Loading. (line 11) * STERM: Statistical Process running in ESS?. (line 6)  File: ess.info, Node: Variable index, Next: Concept index, Prev: Function and program index, Up: Indices Variable index ============== [index] * Menu: * ac-source-R: Auto-complete. (line 6) * ac-source-R-args: Auto-complete. (line 6) * ac-source-R-objects: Auto-complete. (line 6) * comint-delimiter-argument-list: History expansion. (line 28) * comint-input-ring-size: Command History. (line 9) * comment-column: Indenting. (line 25) * ess-ask-about-transfile: Customizing startup. (line 30) * ess-ask-about-transfile <1>: Saving transcripts. (line 12) * ess-ask-for-ess-directory: Customizing startup. (line 7) * ess-default-style: Styles. (line 22) * ess-delete-dump-files: Source Files. (line 12) * ess-directory: Source Directories. (line 48) * ess-dump-filename-template: Source Directories. (line 9) * ess-eldoc-abbreviation-style: ESS ElDoc. (line 24) * ess-eldoc-show-on-symbol: ESS ElDoc. (line 18) * ess-eval-visibly: Evaluating code. (line 14) * ess-execute-in-process-buffer: Hot keys. (line 13) * ess-first-tab-never-complete: Indenting. (line 47) * ess-first-tab-never-complete <1>: Object names. (line 6) * ess-font-lock-mode: Highlighting. (line 11) * ess-function-template: Edit buffer. (line 17) * ess-handy-commands: Handy commands. (line 6) * ess-handy-commands <1>: Handy commands. (line 9) * ess-indent-with-fancy-comments: Indenting. (line 28) * ess-keep-dump-files: Source Files. (line 26) * ess-R-font-lock-keywords: Highlighting. (line 26) * ess-search-list: Source Directories. (line 62) * ess-source-directory: Source Directories. (line 22) * ess-style-alist: Styles. (line 27) * ess-switch-to-end-of-proc-buffer: Other. (line 21) * ess-swv-pdflatex-commands: Sweave and AUCTeX. (line 27) * ess-tab-complete-in-script: Indenting. (line 43) * ess-use-eldoc: ESS ElDoc. (line 13) * inferior-ess-program: Customizing startup. (line 43) * inferior-R-font-lock-keywords: Highlighting. (line 19) * Rd-indent-level: R documentation files. (line 85) * Rd-mode-hook: R documentation files. (line 82) * Rd-to-help-command: R documentation files. (line 89)  File: ess.info, Node: Concept index, Prev: Variable index, Up: Indices Concept Index ============= [index] * Menu: * .emacs file: Source Directories. (line 30) * aborting S commands: Other. (line 9) * arguments to S program: Customizing startup. (line 46) * authors: Credits. (line 6) * auto-complete: Auto-complete. (line 6) * autosaving: Source Files. (line 83) * bug reports: Reporting Bugs. (line 6) * bugs: Bugs. (line 6) * cleaning up: Hot keys. (line 72) * comint: Credits. (line 6) * command history: Command History. (line 6) * command line arguments: iESS(S)--Inferior ESS processes. (line 32) * command-line completion: Object names. (line 6) * command-line editing: Command-line editing. (line 6) * commands: Entering commands. (line 6) * comments: Source Files. (line 41) * comments in S: Indenting. (line 19) * completion in edit buffer: Other edit buffer commands. (line 24) * completion of object names: Object names. (line 6) * completion on file names: Object names. (line 43) * completion on lists: Object names. (line 41) * completion, when prompted for object names: Edit buffer. (line 14) * creating new objects: Edit buffer. (line 14) * credits: Credits. (line 6) * customization: Customization. (line 6) * data frames: Object names. (line 22) * deleting output: Last command. (line 24) * directories: Starting up. (line 12) * dump file directories: Source Directories. (line 20) * dump file names: Source Directories. (line 6) * dump files: Edit buffer. (line 27) * dump files <1>: Source Files. (line 10) * echoing commands when evaluating: Evaluating code. (line 22) * edit buffer: Edit buffer. (line 6) * editing commands: Command History. (line 6) * editing functions: Editing objects. (line 6) * editing transcripts: Saving transcripts. (line 18) * ElDoc: ESS ElDoc. (line 6) * emacsclient: Emacsclient. (line 6) * entering commands: Entering commands. (line 6) * errors: Error Checking. (line 6) * ess developer: Namespaced Evaluation. (line 6) * ESS process buffer: Starting up. (line 18) * ESS process directory: Starting up. (line 12) * ESS tracebug: ESS tracebug. (line 6) * ESS-elsewhere: ESS processes on Remote Computers. (line 6) * ess-roxy: Roxygen. (line 6) * evaluating code with echoed commands: Evaluating code. (line 22) * evaluating S expressions: Evaluating code. (line 27) * font-lock mode: Highlighting. (line 7) * formatting source code: Indenting. (line 33) * graphics: Graphics. (line 6) * Handy commands: Handy commands. (line 6) * help files: Help. (line 6) * highlighting: Highlighting. (line 7) * historic backups: Source Files. (line 41) * hot keys: Hot keys. (line 43) * icicles: Icicles. (line 6) * IDO completions: Minibuffer completion. (line 6) * indenting: Indenting. (line 33) * installation: Installation. (line 6) * interactive use of S: Introduction. (line 30) * interrupting S commands: Other. (line 9) * introduction: Introduction. (line 6) * keyboard short cuts: Hot keys. (line 43) * killing temporary buffers: Hot keys. (line 72) * killing the ESS process: Hot keys. (line 72) * lists, completion on: Object names. (line 41) * motion in transcript mode: Transcript Mode. (line 17) * multi-line commands, resubmitting: Transcript resubmit. (line 33) * multiple ESS processes: Multiple ESS processes. (line 6) * new objects, creating: Edit buffer. (line 14) * objects: Hot keys. (line 24) * pages in the process buffer: Transcript. (line 24) * paging commands in help buffers: Help. (line 28) * paragraphs in the process buffer: Transcript. (line 13) * parsing errors: Error Checking. (line 6) * process buffer: Starting up. (line 18) * process names: Multiple ESS processes. (line 8) * programming in S: Introduction. (line 42) * project work in S: Source Files. (line 41) * quitting from ESS: Hot keys. (line 72) * re-executing commands: Command History. (line 6) * reading long command outputs: Last command. (line 19) * remote Computers: ESS processes on Remote Computers. (line 6) * reverting function definitions: Edit buffer. (line 27) * roxy: Roxygen. (line 6) * Roxygen: Roxygen. (line 6) * running S: Starting up. (line 6) * S+elsewhere: ESS processes on Remote Computers. (line 6) * search list: Hot keys. (line 34) * search list <1>: Source Directories. (line 55) * sending input: Entering commands. (line 6) * starting directory: Starting up. (line 12) * starting ESS: Starting up. (line 6) * STERM: Statistical Process running in ESS?. (line 6) * tcsh: Object names. (line 17) * temporary buffers: Help. (line 171) * temporary buffers, killing: Hot keys. (line 72) * transcript: Transcript. (line 9) * transcript file: Customizing startup. (line 34) * transcript file names: Saving transcripts. (line 13) * transcript mode motion: Transcript Mode. (line 17) * transcripts of S sessions: Introduction. (line 39) * using S interactively: Introduction. (line 30) * winjava: winjava. (line 6) * working directory: Starting up. (line 12) * working directory <1>: Source Directories. (line 55) * X Windows: X11. (line 6)  Tag Table: Node: Top268 Node: Introduction2303 Node: Features5264 Node: Current Features5897 Node: New features10170 Node: Credits55228 Node: Latest version58795 Node: Manual59330 Node: Installation61875 Node: Step by step instructions62205 Node: License64428 Node: Stability65091 Node: Requirements65588 Node: Interactive ESS66269 Node: Starting up67123 Node: Multiple ESS processes67906 Node: ESS processes on Remote Computers68940 Node: S+elsewhere and ESS-elsewhere73096 Node: Customizing startup75871 Node: Entering commands78551 Node: Command-line editing79709 Node: Transcript80946 Node: Last command82723 Node: Process buffer motion84159 Node: Transcript resubmit85662 Node: Saving transcripts87636 Node: Command History89489 Node: Saving History92939 Node: History expansion93735 Node: Hot keys96946 Node: Statistical Process running in ESS?101021 Node: Emacsclient102300 Node: Other103107 Node: Evaluating code104159 Node: Transcript Mode107708 Node: Resubmit108857 Node: Clean109920 Node: Editing objects110916 Node: Edit buffer112034 Node: Loading114083 Node: Error Checking115110 Node: Indenting116159 Node: Styles119429 Node: Other edit buffer commands121803 Node: Source Files123459 Node: Source Directories128069 Node: Help131211 Node: Completion135506 Node: Object names135727 Node: Function arguments138585 Node: Minibuffer completion139124 Node: Auto-complete139623 Node: Icicles141170 Node: Developing with ESS142536 Node: ESS tracebug142982 Node: Editing documentation146154 Node: R documentation files146704 Node: Roxygen150624 Node: Namespaced Evaluation154959 Node: Extras156955 Node: ESS ElDoc157938 Node: Handy commands159461 Node: Highlighting160656 Node: Parens161985 Node: Graphics162566 Node: printer163075 Node: X11163831 Node: winjava164170 Node: Imenu164582 Node: Toolbar165423 Node: TAGS165831 Node: Rdired167183 Node: Rutils168235 Node: Org170611 Node: Sweave and AUCTeX171553 Node: ESS for S173677 Node: ESS(S)--Editing files174112 Node: iESS(S)--Inferior ESS processes175229 Node: ESS-help--assistance with viewing help180897 Node: Philosophies for using ESS(S)181217 Node: Scenarios for use (possibilities--based on actual usage)182336 Node: Customization Examples and Solutions to Problems187019 Node: ESS for SAS188756 Node: ESS(SAS)--Design philosophy189479 Node: ESS(SAS)--Editing files190432 Node: ESS(SAS)--TAB key192286 Node: ESS(SAS)--Batch SAS processes193652 Node: ESS(SAS)--Function keys for batch processing198678 Node: iESS(SAS)--Interactive SAS processes208164 Node: iESS(SAS)--Common problems211918 Node: ESS(SAS)--Graphics213442 Node: ESS(SAS)--Windows214225 Node: ESS for BUGS214803 Node: ESS(BUGS)--Model files215818 Node: ESS(BUGS)--Command files216598 Node: ESS(BUGS)--Log files217143 Node: ESS for JAGS217480 Node: ESS(JAGS)--Model files218468 Node: ESS(JAGS)--Command files220902 Node: ESS(JAGS)--Log files221677 Node: Mailing lists/bug reports221973 Node: Bugs222237 Node: Reporting Bugs223862 Node: Mailing Lists224671 Node: Help with emacs225418 Node: Customization225973 Node: Indices226736 Node: Key index226911 Node: Function and program index232262 Node: Variable index241683 Node: Concept index244814  End Tag Table ess-17.11/doc/inst_svn.texi0000644005071500004540000000337613202324173012554 00000000000000 @c There no longer is an anonymous CVS repository for ESS, due to lack of @c interest, little demand, and problems with security. @c text below modified from R-admin.texi (thanks to Kurt for the tip). The latest development version of ESS is available via @uref{https://svn.R-project.org/ESS/}, the ESS Subversion repository. If you have a Subversion client (see @uref{http://subversion.tigris.org/}), you can download the sources using: @smallexample % svn checkout https://svn.r-project.org/ESS/trunk @var{path} @end smallexample @noindent which will put the ESS files into directory @var{path}. Later, within that directory, `svn update' will bring that directory up to date. Windows-based tools such as TortoiseSVN are also available for downloading the files. Alternatively, you can browse the sources with a web browser at: @uref{https://svn.r-project.org/ESS/trunk, ESS SVN site}. However, please use a subversion client instead to minimize the load when retrieving. If you remove other versions of ESS from your emacs load-path, you can then use the development version by adding the following to .emacs: @example (load "/path/to/ess-svn/lisp/ess-site.el") @end example Note that https is required, and that the SSL certificate for the Subversion server of the R project is @smallexample Certificate information: - General name: r-project.org - Serial number: 04:9D:4F:0D:53:03:DB - Valid: from 03/10/2014 to 03/10/2016 - Issuer: Starfield Secure Certificate Authority - G2 http://certs.starfieldtech.com/repository/ - SHA1-Fingerprint: F5:15:96:DB:F1:2F:35:1B:96:06:C3:A4:2A:E2:80:78:76:4C:A4:30 - MD5-Fingerprint: D8:7D:4F:8F:ED:92:65:EE:EE:A5:73:2D:BB:F6:35:E6 @end smallexample @noindent @c The above *is* trusted. The R-Project paid for it. ess-17.11/doc/inst_tar.texi0000644005071500004540000003661613202324173012537 00000000000000 @node Unix installation, Microsoft Windows installation, , Installation @comment node-name, next, previous, up @section Unix installation @enumerate @item @code{cd} to a directory where you keep emacs lisp files, or create a new directory (for example, @file{$HOME/ess}) to hold the distribution. This directory will be referred to below as "the ESS distribution directory". @emph{Note for XEmacs packages:} ESS is no longer available as an XEmacs package. But, you can still install ESS into the XEmacs package system by choosing @file{ESSDIR}=@file{PREFIX/lib/xemacs/site-packages}. ESS requires that the XEmacs sumo tarball (all XEmacs packages combined) also be installed. For information on installing XEmacs packages, follow this link: @uref{http://www.xemacs.org/Documentation/packageGuide.html, Quickstart Package Guide}. @comment It will contain, @comment at the end, the tar file @file{ess-VERSION.tar.gz}, and a directory for @comment the ESS source, which will be termed "the ESS-VERSION source directory". @comment Note that the .elc files may be installed elsewhere (as specified in the @comment Makefile) if desired. @item Retrieve the latest version from @uref{http://ess.r-project.org/downloads/ess, ESS downloads area} to @file{ESSDIR}. @item Extract the files from the disribution. @display If you are using GNU tar, @code{tar zxf ess-VERSION.tgz}. Otherwise, @code{gunzip < ess-VERSION.tgz | tar xf -}, @end display The @code{tar} command will create the subdirectory @file{ess-VERSION} and install the files there. @comment If you are using GNU Emacs 19.29, decompress/unarchive @comment @file{ESSDIR/ess-VERSION/lisp/19.29.tar.gz}, @comment read @file{ESSDIR/ess-VERSION/lisp/19.29/README}, follow the instructions @comment and you might be able to get ESS to work. @comment @emph{Please note that GNU Emacs 19.29 is no longer supported}. @comment For a list of supported versions of emacs, see @xref{Requirements}. @item Edit the file @file{ESSDIR/ess-VERSION/lisp/ess-site.el} as explained in the comments section of that file. @comment Installations that are using ESS only for S-Plus @comment 6.x will probably not need to make any changes. Installations that also @comment have one or more of (S4, S+3/4/5/6/7/8, R, SAS, BUGS, XLispStat, Stata) @comment may need to uncomment corresponding lines in @file{ESSDIR/ess-VERSION/lisp/ess-site.el}. @item If you are using GNU Emacs add the line @example (load "ESSDIR/ess-VERSION/lisp/ess-site") @end example to @file{$HOME/.emacs}. For XEmacs, if you followed the XEmacs package system installation advice, add the line @example (require 'ess-site) @end example to @file{$HOME/.xemacs/init.el}. Otherwise, for XEmacs, add the line @example (load "ESSDIR/ess-VERSION/lisp/ess-site") @end example to @file{$HOME/.xemacs/init.el}. @comment GNU Emacs uses @file{default.el} or @comment @file{site-init.el} and XEmacs uses @file{site-start.el} for the system @comment installation file). @comment Alternatively, if @file{ess-site.el} is in your current @code{load-path}, then: @comment @example @comment (require 'ess-site) @comment @end example @comment to configure emacs for ESS. @item That's it! ESS is now ready to use. (The remaining step below is only for a custom installation.) To edit statistical programs, just open files with the requisite extensions (@file{.R} for R, @file{.sas} for SAS, @file{.bug} for BUGS, etc.). To start a statistical process within emacs, such as R, type @code{M-x R}. @c @item @c (OPTIONAL) If you are running S-PLUS or R, you might consider @c installing the database files. From within emacs, @code{C-x d} to the @c directory containing ESS. Now: @c @example @c M-x S+6 @c @end example @c to get S running. Once you see the SPLUS prompt, do: @c @example @c M-x ess-create-object-name-db @c @end example @c (this will create the file @file{ess-sp6-namedb.el}; if it isn't in the @c ESS directory, move it there). @c Then, completions will be autoloaded and will not be regenerated for @c every session. @c For R, do the same, using @c @example @c M-x R @c @end example @c and then @code{M-x ess-create-object-name-db} creating @c @file{ess-r-namedb.el}; if it isn't in the ESS directory, move it there). @item @b{(OPTIONAL) READ THIS ITEM THOROUGHLY BEFORE STARTING}: If you want to place the compiled files in other locations edit the @code{LISPDIR}, @code{INFODIR} and @code{ETCDIR} entries in Section 1 of @file{Makeconf} in the @file{ESSDIR/ess-VERSION} directory (if you are using XEmacs, then uncomment the XEmacs subsection in Section 1). You can compile those files by: @example make all @end example When that completes successfully, install the compiled files: @example make install @end example @c This will install the compiled info files and lisp files. If you are an @c XEmacs user, then you should be done. If not, then you may have to @c edit/create the file @file{dir} that is found in the directory specified @c by @code{INFODIR}: see the sample @file{dir} in ESSDIR/ess-VERSION/doc/info. @c If @file{dir} does not exist in @code{INFODIR}, then the sample @c @file{dir} will be installed. @comment An alternative, if you are running XEmacs and have access to the @comment XEmacs system directories, would be to place the directory in the @comment site-lisp directory, and simply type @code{make all} (and copy the @comment documentation as appropriate). @comment @comment For GNU Emacs, you would still have to move the files into the top level @comment site-lisp directory. @end enumerate @c >>>> FIXME (see comment in ess.texi): error in ``makeinfo readme.texi'' @c @node Microsoft Windows installation, , Unix installation, Installation @node Microsoft Windows installation, Requirements, Unix installation, Installation @comment node-name, next, previous, up @section Microsoft Windows installation For @b{Microsoft Windows installation}, please follow the next steps. @enumerate @item @code{cd} to a directory where you keep emacs lisp files, or create a new directory (for example, @file{c:\ess\}) to hold the distribution. This directory will be referred to below as "the ESS distribution directory". @emph{Note for XEmacs packages:} ESS is no longer available as an XEmacs package. But, you can still install ESS into the XEmacs package system by choosing @file{ESSDIR}=@file{PREFIX\XEmacs\site-packages}. ESS requires that the XEmacs sumo tarball (all XEmacs packages combined) also be installed. For information on installing XEmacs packages, follow this link: @uref{http://www.xemacs.org/Documentation/packageGuide.html, Quickstart Package Guide}. @item Retrieve the latest zip file (@file{ess-VERSION.zip}) from @uref{http://ess.r-project.org/downloads/ess, ESS downloads area} and store it in the ESS distribution directory. Be aware that http browsers on Windows frequently change the "." and "-" characters in filenames to other punctuation. Please change the names back to their original form. @item Extract all the files from @file{ess-VERSION.zip} into the ESS distribution directory as @file{c:\ess\ess-VERSION\}. (It is possible to unpack the zip archive in Windows Explorer by double clicking on the folder; you should then see a new folder called @file{ess-VERSION}. Drag that folder into your ESS distribution directory.) @comment @item @comment Add the line @comment @example @comment (load "C:/emacs/ess-VERSION/lisp/ess-site") @comment @end example @comment to your emacs initialization file. (GNU Emacs uses the filename @comment @file{~/.emacs} and XEmacs uses the filename @comment @file{~/.xemacs/init.el} for the initialization file. The tilde is @comment recognised by emacs as your HOME directory, i.e. the value of your HOME @comment environment variable.) Replace @comment @code{VERSION} above with the version number of ESS. Remember to use @comment forwardslashes @code{/}, rather than backslashes @code{\}, in your filename @comment inside emacs code files. @item If you are using GNU Emacs add the line @example (load "ESSDIR/ess-VERSION/lisp/ess-site") @end example to @file{%HOME%\.emacs}. For XEmacs, if you followed the XEmacs package system installation advice, add the line @example (require 'ess-site) @end example to @file{%HOME%\.xemacs\init.el}. Otherwise, for XEmacs, add the line @example (load "ESSDIR/ess-VERSION/lisp/ess-site") @end example to @file{%HOME%\.xemacs\init.el}. @emph{Note:} Both GNU Emacs and XEmacs require that the HOME environment variable be set on your system, otherwise, your initialization file will not be utilized, and therefore, ESS will not work. After saving your initialization file, ESS is now installed. Start a new emacs and you should be ready to use ESS. For example, to edit statistical programs, load the files with the requisite extensions (".sas" for SAS, ".S" or "s" or "q" or "Q" for S-PLUS, ".r" or ".R" for R, and ".lsp" for XLispStat). One further step is needed if you wish to run statistical processes, see below. @item To run statistical processes under ESS, Windows users will need to make sure that the directories for the software they will be using is in the PATH environment variable. On Windows 9x, add lines similar to the following to your @file{c:\autoexec.bat} file: @example path=%PATH%;c:\progra~1\insightful\splus70\cmd @end example On Windows NT/2000/XP, add the directories to the PATH using the @code{My Computer/Control Panel/System/Advanced/Environment Variables} menu. Note that the directory containing the program is added to the PATH, not the program itself. One such line is needed for each software program. Be sure to use the abbreviation @code{progra~1} and not the long version with embedded blanks. Use backslashes "@code{\}". An alternative, for R users, is that rather than adjusting the PATH variable, you can add the following to your emacs initialization file (and restart emacs): @example (setq inferior-ess-r-program-name "c:/progra~1/R/R-2.2.1/bin/Rterm.exe") @end example This assumes that you have installed R-2.2.1 in the default location. Change the path otherwise to point to other locations. Windows users who place S-PLUS anywhere other than the default location will also need to add the following three lines (properly adjusted for their location) to their @file{%HOME%\.emacs} or @file{%HOME%\.xemacs\init.el} file: @example (setq-default inferior-S+6-program-name "c:/progra~1/Insightful/SPLUS70/cmd/Splus") (setq-default inferior-Sqpe+6-SHOME-name "c:/progra~1/Insightful/SPLUS70") (setq-default inferior-Sqpe+6-program-name "c:/progra~1/Insightful/SPLUS70/cmd/Sqpe.exe") @end example The above example uses the default location of S-PLUS in @code{c:\progra~1\Insightful}. Please note that ESS considers S-PLUS 6, 7, and 8 to be variants of S+6. These users may also need to modify the emacs variable @code{ess-SHOME-versions} to match their installation in order to get the full set of S-PLUS versions on their machine into the @code{ESS} menu. To start the S-PLUS [678].x GUI from ESS under emacs: @enumerate @item If you use Cygwin bash as your primary shell, then @example M-x S (or @code{M-x S+6}). @end example @item If you use the MSDOS prompt window as your primary shell, then @example M-x S+6-msdos @end example @end enumerate You will then be asked for a pathname ("S starting data directory?"), from which to start the process. The prompt will propose your current directory as the default. ESS will start the S-PLUS GUI. There will be slight delay during which emacs is temporarily frozen. ESS will arrange for communication with the S-PLUS GUI using the DDE protocol. Send lines or regions from the emacs buffer containing your S program (for example, @file{myfile.s}) to the S-PLUS Commands Window with the @code{C-c C-n} or @code{C-c C-r} keys. (If you are still using S-PLUS 4.x or 2000,\ then use @code{M-x S+4} or @code{M-x S+4-msdos}.) To start an S-PLUS [678].x session inside an emacs buffer---and without the S-PLUS GUI: @example M-x Sqpe (or @code{M-x Sqpe+6}). @end example This works with both the bash and msdos shells. You will then be asked for a pathname ("S starting data directory?"), from which to start the process. The prompt will propose your current directory as the default. You get Unix-like behavior, in particular the entire transcript is available for emacs-style search commands. Send lines or regions from the emacs buffer containing your S program (for example, @file{myfile.s}) to the *S+6* buffer with the @code{C-c C-n} or @code{C-c C-r} keys. Interactive graphics are available with Sqpe by using the java library supplied with S-PLUS 6.1 and newer releases. Enter the commands: @example library(winjava) java.graph() @end example Graphs can be saved from the @code{java.graph} device in several formats, but not PostScript. If you need a PostScript file you will need to open a separate @code{postscript} device. (If you are still using S-PLUS 4.x or 2000, then use @code{M-x Sqpe+4}.) To connect to an already running S-PLUS GUI (started, for example, from the S-PLUS icon): @example M-x S+6-existing @end example or @example M-x S+6-msdos-existing @end example You will then be asked for a pathname ("S starting data directory?"), from which to start the process. The prompt will propose your current directory as the default. ESS will arrange for communication with the already running S-PLUS GUI using the DDE protocol. Send lines or regions from the emacs buffer containing your S program (for example, @file{myfile.s}) to the S-PLUS Commands Window with the @code{C-c C-n} or @code{C-c C-r} keys. (If you are still using S-PLUS 4.x or 2000, then use @code{M-x S+4-existing} or @code{M-x S+4-msdos-existing}.) If you wish to run R, you can start it with: @example M-x R @end example XLispStat can not currently be run with @example M-x XLS @end example Hopefully, this will change. However, you can still edit with emacs, and cut and paste the results into the XLispStat *Listener* Window under Microsoft Windows. @comment SAS for Windows uses the batch access with function keys that is @comment described in @comment @file{doc/README.SAS}. @comment @xref{ESS(SAS)--MS Windows}. @comment The user can also edit SAS files @comment in an @code{ESS[SAS]} buffer and than manually copy and paste them into @comment an Editor window in the SAS Display Manager. @comment @comment For Windows, inferior SAS in an @code{iESS{[SAS]}} buffer does not work @comment on the local machine. It does work over a network connection to @comment SAS running on a remote Unix computer. @comment @comment Reason: we use ddeclient to interface with programs and SAS doesn't @comment provide the corresponding ddeserver capability. @c @item @c (OPTIONAL) If you are running Sqpe or R, you might consider @c installing the database files. From within emacs, @code{C-x d} to @c the directory containing ESS. Now: @c @example @c M-x Sqpe+6 @c @end example @c to get S running. Once you see the SPLUS prompt, do: @c @example @c M-x ess-create-object-name-db @c @end example @c (this will create the file @file{ess-s+6-namedb.el}; if it isn't in the @c ESS directory, move it there). @c Then, completions will be autoloaded and will not be regenerated @c for every session. @c For R, do the same, using @c @example @c M-x R @c @end example @c and then @code{M-x ess-create-object-name-db} creating @c @file{ess-r-namedb.el}; if it isn't in the ESS directory, move it @c there). @item That's it! @end enumerate @comment Requirements duplicated? @comment @node Requirements, , Microsoft Windows installation, Installation @comment node-name, next, previous, up @comment @section Requirements @comment @include requires.texi ess-17.11/doc/installation.texi0000644005071500004540000000467513202324173013415 00000000000000@c This file is not used anymore and is the same as installation.texi @c @section Unix (Linux/macOS/Solaris/etc.) Installation @enumerate @item Download the latest zip or tgz archive from ESS @uref{http://ess.r-project.org/index.php?Section=download, downloads area} and unpack it into a directory where you would like ESS to reside. We will denote this directory as @file{/path/to/ESS/} hereafter. Alternatively you can use @code{git} to fetch the most recent development version to your local machine with: @comment @comment @example @comment svn checkout https://svn.r-project.org/ESS/trunk /path/to/ESS @comment @end example @comment @comment or @example git clone https://github.com/emacs-ess/ESS.git /path/to/ESS @end example @item @b{Optionally}, compile elisp files and build the documentation with: @example cd /path/to/ESS/ make @end example Without this step, info, pdf and html documentation and reference card will not be available. @item @b{Optionally}, install into your local machine with @code{make install}. You might need administrative privileges: @example make install @end example The files are installed into @code{/usr/share/emacs} directory. For this step to run correctly on macOS, you will need to adjust the @file{PREFIX} path in @file{Makeconf}. The necessary code and instructions are commented in that file. @item If you have performed the @code{make install} step from above, just add @example (require 'ess-site) @end example to your @file{~/.emacs} file. Otherwise, you should add @file{/path/to/ESS/lisp/} to your emacs load path and then load ESS with the following lines in your @file{~/.emacs}: @example (add-to-list 'load-path "/path/to/ESS/lisp/") (load "ess-site") @end example @item Restart your Emacs and check that ESS was loaded from a correct location with @code{M-x ess-version}. @end enumerate @c -- NOTE: keep in sync with more important ../../ESS-web/php/download.php @emph{Note for Windows and macOS users:} The most straightforward way to install Emacs on your machine is by downloading the Emacs binary by Vincent Goulet; either @uref{https://vigou3.github.io/emacs-modified-macos/, Emacs Modified for macOS} or from @uref{https://vigou3.github.io/emacs-modified-windows/, Emacs Modified for Windows}. @emph{Note for XEmacs users:} Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs. ess-17.11/doc/lectures.txt0000644005071500004540000000203713202324173012376 00000000000000Date: Sat, 11 Oct 2003 09:37:10 -0700 From: rossini@blindglobe.net (A.J. Rossini) Subject: More teaching/training materials. To: ESS HelpRUS Message-ID: <85d6d3vih5.fsf@blindglobe.net> Content-Type: text/plain; charset=us-ascii http://www.analytics.washington.edu/~rossini/courses/cph-statcomp/ Lecture/Labs 1 and 2 are on For ESS, ESS-Noweb-Sweave. Lecture/Lab 4 is on parallel computing with R (each Lecture/Lab was just under 2 hours). Comments/corrections welcome, they were used last week here in Copenhagen, so "most" of the bugs are out. best, -tony p.s. Lecture/Lab 3 needs to be completely redone for WWW work; it doesn't translate well (some might say, "at all"). -- rossini@u.washington.edu http://www.analytics.washington.edu/ Biomedical and Health Informatics University of Washington Biostatistics, SCHARP/HVTN Fred Hutchinson Cancer Research Center UW (Tu/Th/F): 206-616-7630 FAX=206-543-3461 | Voicemail is unreliable FHCRC (M/W): 206-667-7025 FAX=206-667-4812 | use Email ess-17.11/doc/license.texi0000644005071500004540000000113713202324173012324 00000000000000@comment ESS is free software; you can redistribute it and/or modify it under The source and documentation of ESS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ESS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details. ess-17.11/doc/mailing.texi0000644005071500004540000000117113202324173012320 00000000000000 There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to @email{ess-help-request@@r-project.org}; contributions to the list may be mailed to @email{ess-help@@r-project.org}. Rest assured, this is a fairly low-volume mailing list. The purposes of the mailing list include @itemize @item helping users of ESS to get along with it. @item discussing aspects of using ESS on Emacs and XEmacs. @item suggestions for improvements. @item announcements of new releases of ESS. @item posting small patches to ESS. @end itemize ess-17.11/doc/name-completion.txt0000644005071500004540000000374213202324173013643 00000000000000Name completion (for R and S-plus): ---------------- Want to keep an up-to-date list of S object names, on which we can complete. Additionally, list-component completion "x$a" also work, as does slot completion on S4 objects "ob@". Historically, for S and S-plus, we had made an effort to only reread the objects of database entries in search() ``when needed''. In particular, for "non-compressed" directories, one had looked at their "modification time" and kept as timestamp. And they were only re-read (by listing the *files* inside !) when the time changed. For R, this is not available and for newer versions of S-plus, with "compiled" (or "compressed") directories this isn't relevant either. ........... I (MM) think R does never re-read things as long as search() is not changed by library(), attach(), detach(), source(),.. These calls are, BTW, given by ess-change-sp-regexp in ../lisp/ess-cust.el (initialized by dialect specific ess--sp-regexp "defcustom"s). How are things working in ../lisp/ess-inf.el currently : o) ess-search-path-tracker is added to `comint-input-filter-functions' hook; it just sets `ess-sp-change' to true when the above regexp triggers. o) Main user functions ess-complete-object-name and + ess-resynch {also sets ess-object-list to nil ..} | call the "main work horse" | |-> ess-get-object-list either uses | |--> [V] ess-object-list or all the following | |-> ess-get-modtime-list {when one of the following var.s "says so"}: | |--> [V] ess-sp-change |--> [V] ess-sl-modtime-alist | \-> ess-extract-onames-from-alist | |-> ess-dir-modtime | \-> ess-object-names | |-> |-> [V] ess-object-name-db | |-> [V] inferior-ess-object-command \-> ess-get-words-from-vector | \-> ess-command | |-> [V] ess-cmd-delay | \-> ess-prompt-wait ess-17.11/doc/newfeat.texi0000644005071500004540000013251713202324173012342 00000000000000@comment @itemize @w{} @comment @item Changes and New Features in 17.11: @itemize @bullet @item The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put @code{(require 'ess-r-mode)} or @code{(require 'ess-stata-mode)} in your init file. This is for experienced Emacs users as this requires setting up autoloads for @code{.R} files manually. We will keep maintaining @code{ess-site} for easy loading of all ESS features. @item Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor. @item @ESS{[R]}: New command @code{ess-r-package-use-dir}. It sets the working directory of the current process to the current package directory. @item @ESS{[R]} Lookup for references in inferior buffers has been improved. New variable @code{ess-r-package-source-roots} contains package sub-directories which are searched recursively during the file lookup point. Directories in @code{ess-tracebug-search-path} are now also searched recursively. @item @ESS{[R]} Namespaced evaluation is now automatically enabled only in the @code{R/} directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file. @end itemize Changes and New Features in 16.10: @itemize @bullet @item @ESS{[R]}: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls. @item @ESS{[R]}: Backquoted names and @code{%op%} operators are recognised as sexp. This is useful for code navigation, e.g. with @kbd{C-M-f} and @kbd{C-M-b}. @item @ESS{[R]}: Integration of outline mode with roxygen examples fields. You can use outline mode's code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set @code{ess-roxy-fold-examples} to non-nil to automatically fold the examples field when you open a buffer. @item @ESS{[R]}: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set @code{ess-roxy-fontify-examples} to non-nil to try it out. @item @ESS{[R]}: New package development command @code{ess-r-devtools-ask} bound to @kbd{C-c C-w C-a}. It asks with completion for any devtools command that takes @code{pkg} as argument. @item @ESS{[R]}: New command @kbd{C-c C-e C-r} to reload the inferior process. Currently only implemented for R. The R method runs @code{inferior-ess-r-reload-hook} on reloading. @item @ESS{[R]}: @code{ess-r-package-mode} is now activated in non-file buffers as well. @end itemize Bug fixes in 16.10: @itemize @bullet @item @ESS{[R]}: Fix broken (un)flagging for debugging inside packages @item @ESS{[R]}: Fixes (and improvements) in Package development @item @ESS{[R]}: Completion no longer produces @code{...=} inside @code{list( )}. @item @ESS{[R]}: Better debugging and tracing in packages. @item @ESS{[R]}: Better detection of symbols at point. @item @ESS{[R]}: No more spurious warnings on deletion of temporary files. @item @ESS{[julia]}: help and completion work (better) @item @ESS{[julia]}: available via @code{ess-remote} @end itemize Changes and New Features in 16.04: @itemize @bullet @item @ESS{[R]}: @code{developer} functionality has been refactored. The new user interface consists of a single command @code{ess-r-set-evaluation-env} bound by default to @kbd{C-c C-t C-s}. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set @code{ess-r-package-auto-set-evaluation-env} to @code{nil} to disable this. @item @ESS{[R]}: New @code{ess-r-package-mode} This development mode provides features to make package development easier. Currently, most of the commands are based on the @code{devtools} packages and are accessible with @kbd{C-c C-w} prefix. See the documentation of @code{ess-r-package-mode} function for all available commands. With @kbd{C-u} prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with @code{[pkg:NAME]} in the mode-line. @item @ESS{[R]}: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change @code{options('html_type')}. @item @ESS{[R]}: New specialized breakpoints for debugging magrittr pipes @item @ESS{}: ESS now implements a simple message passing interface to communicate between ESS and inferior process. @end itemize Bug fixes in 16.04: @itemize @bullet @item @ESS{[R]}: Roxygen blocks with backtics are now correctly filled @item @ESS{[R]}: Don't skip breakpoints in magrittr's @code{debug_pipe} @item @ESS{[R]}: Error highlighting now understands `testthat` type errors @item @ESS{[Julia]}: Added getwd and setwd generic commands @end itemize Changes and New Features in 15.09: @itemize @bullet @item @ESS{[R]}: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with @code{ess-offset-} give the actual offsets, those starting with @code{ess-indent-} are control (commonly Boolean) variables, and those starting with @code{ess-align-} are vertical alignment overrides which inhibit default offsets in specific situations. See @code{ess-style-alist} for detailed description of the new indentation system and provided default indentation styles. @item @ESS{[R]}: Deprecation of old indentation settings. As a consequence of the indentation re-factoring @code{ess-brace-imaginary-offset}, @code{ess-expression-offset} and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by @code{ess-offset-continuations}. It can be set to either @code{cascade} or @code{straight} (the default). @code{ess-arg-function-offset} has been replaced by @code{ess-indent-from-lhs} and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to @code{prev-call} and @code{open-delim} in order to produce a consistent indentation. @item @ESS{}: A test framework has been set up. @item @ESS{[R]}: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with @code{ess-offset-arguments} set to @code{prev-line} is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation. @item @ESS{[R]}: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the @code{examples} field without squashing the surrounding code in the comments. @item @ESS{[R]}: ESS can now format your code! This is controlled through the settings @code{ess-fill-calls} and @code{ess-fill-continuations}. When activated, @code{(fill-paragraph)} formats your calls and your formulas/continuations while making sure they don't go past @code{fill-column}. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set @code{ess-blink-filling} to nil to prevent this. @item @ESS{[R]}: Fix occasional missing error location fontification in inferior buffers. @item @ESS{[R]}: ess-developer now correctly assigned the environment of new functions to the package namespace. @item @ESS{[Julia]}: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on @file{julia-mode.el} from the Julia project. If you install ESS from the official tarball/zip file, @file{julia-mode.el} is already included. Otherwise, if you install ESS by running @code{make}, then the latest version of @file{julia-mode.el} is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running @code{make}, then ensure that you have the @code{julia-mode.el}, which you can get easily from MELPA for example. @item @iESS{}: For naming inferior processes, ESS can use @code{projectile}'s project root and it does so when @code{ess-gen-proc-buffer-name-function} is set to @code{ess-gen-proc-buffer-name:projectile-or-simple} as by default, or to another value beginning with @code{ess-gen-proc-buffer-name:projectile-*}. @end itemize Changes and New Features in 15.03-1: @itemize @bullet @item @ESS{[R]}: An indentation bug has been fixed (github issue 163) @item @ESS{[R]}: On windows, if `ess-prefer-higher-bit' is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R. @end itemize Changes and New Features in 15.03: @itemize @bullet @item @ESS{[R]}: Full native support for `company-mode`. @item @ESS{[R]}: More efficient caching algorithm for R completion. @item @ESS{}: New offset variable `ess-close-paren-offset` to control the indentation of the closing parentheses. @item @ESS{[R]}: Ask for CRAN mirror only once per emacs session. @item @ESS{[R]}: Detect @code{library} and @code{require} calls for better completion caching. @item Buffer display is now customizable (@code{ess-show-buffer-action}). @item Use @code{y-or-n-p} instead of @code{yes-or-no-p} throughout. @item More support for ODS in ess-sas-graph-view. @item Makefiles are now both UNIX and GNU friendly. @item @ESS{[R]}: Simplify directory lookup in @code{ess-developer} (#137). @item Make closed paren indentation consistent @end itemize Bug Fixes in 15.03: @itemize @bullet @item Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R). @item Fix git version lookup @item Don't check directory modtime in R dialect. @item Declare all ess macros for edebug. @item Add @code{ess-smart-comma} to eldoc message functions. @item Inform users when retrieving RDA aliases. @item Line ending in '~' is also a continuation line. @item Filing roxy paragraphs works as expected now. @item In @code{ess-developer-add-package}, remove incorrect `wait` argument from @code{ess-get-words-from-vector} call. @item Fix #96, #117, #120, #125, #134, #137. @item Fix ess-quit-r. Call base::q() even if it is masked. @item Fix `ess-show-buffer` to always display the buffer in another window. @item Makefile: Fix cd bug for directories with spaces in them @item @code{ess-kill-buffer-and-go} modified to not restart R @end itemize Changes / Selected Bug Fixes in 14.09: @itemize @bullet @item @ESS{[Julia]}: Executable is changed to @code{julia}. @item @ESS{[Julia]}: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported. @item @ESS{[R]}: Running R with @code{gdb} debugger now works as expected @item @iESS{}: Inferior ESS buffers are now derived from @code{comint-mode} @item @ESS{[R]}: @code{ess-execute-screen-options} uses correct screen width in terminal sessions @item @ESS{}: @code{ess-build-tags-for-directory} works when no TAGS file name was provided @item @ESS{}: @code{ess-offset-statement-continued} is now respected everywhere except inside of the @code{if} test condition. @item @ESS{}: New variable @code{ess-offset-statement-first-continued} for indentation of the first line in multiline statements. @item @ESS{R}: Starting @kbd{,} in multiline statements indentation is now ignored to achieve a more pleasant alignment. @item @ESS{R}: Improved behavior of @kbd{RET} in roxygen blocks. @item @ESS{[R]}: command cleaning with @kbd{C-u C-u C-y} was broken with lines containing " + " @item @ESS{[R]}: fixed "empty watch window bug" @item @ESS{[R]}: don't ask for help location on ac-quick-help (request of github #81) @item @ESS{[R]}: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands @item @ESS{[R]}: fix vignetes display and hyperlinks (were broken in 13.09-1) @item @ESS{[Julia]}: recognize function names ending with ! @item @ESS{[Julia]}: fix indentation of "for" comprehension syntax within brackets. @end itemize Changes / Selected Bug Fixes in 13.09-1: @itemize @bullet @item ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in @code{~/.config/ESSR/} directory on the remote machine @item TRAMP: PAGER environment variable is now correctly set to @code{inferior-ess-pager} @item retrieval of help topics on remote machines is fixed @item org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature) @item @code{ess-execute} is now bound to @kbd{C-c C-e C-e} in @code{ess-extra-map}. @item completion works again in @code{ess-execute} @item @ESS{[R]}: @code{head} and @code{tail} methods were replaced by @code{htsummary} in @code{ess-R-describe-object-at-point-commands} @item @ESS{[roxygen]}: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation @item @ESS{[transcript]}: 'Clean Region' now works with multiline statements; @code{ess-transcript-clean-region} etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by '+' @item @ESS{[SAS]}: Three features/fixes with special thanks to Matthew Fidler @uref{https://github.com/emacs-ess/ESS/pulls/mlf176f2, https://github.com/emacs-ess/ESS/pulls/mlf176f2}. Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately. @item @ESS{[SAS]}: @code{ess-sas-edit-keys-toggle} default returns to @code{nil} @item @ESS{[R]}: support for @code{prettify-symbols-mode}: contribution from Rudiger Sonderfeld @uref{https://github.com/emacs-ess/ESS/pull/65} @item @ESS{[SWV]}: knitr now evaluates in the current frame @item @ESS{[developer]}: ess-developer doesn't kill open DESCRIPTION files anymore @item @ESS{[roxygen]}: @code{ess-roxy-preview-HTML} is now on @kbd{C-c C-o C-w} and @code{ess-roxy-preview-text} is now on @code{C-c C-o C-t} @item @ESS{}: installation with @code{make install} was simplified and should work out of the box on most *nix systems @item @ESS{} installation instructions simplified @item fixed font-lock bug introduced in 13.09 that was causing very slow process output @end itemize Changes/New Features in 13.09: @itemize @bullet @item font-lock in process buffers doesn't "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input. @item @ESS{[julia]}: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types. @item @ESS{[julia]}: a much better eldoc showing arguments of methods and data type constructors @item ESS-developer: @itemize @minus @item ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package @code{ess-developer-packages}. The old behavior (activation on per-process basis) is still available on @code{M-x ess-developer} in a process buffer. @item integration with @code{devtools} package. New command @code{ess-developer-load-package} calls @code{load_all} on the package containing current file. @code{ess-developer-add-package} now offers IDO menu completions with available loading methods, currently @code{library}, and @code{load_all}. Loading command can be customized with @code{ess-developer-load-on-add-commands}. @end itemize @item @kbd{TAB} now indents region if region is active (a contribution of Matthew Fidler in pull #41) @item @code{M-x ess-version} now reports full loading path and recognizes git and ELPA versions. @item warning and error keyword are now highlighted with @code{font-lock-warning-face} as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification). @item eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process. @item org-babel: evaluation is now org-friendly @item help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by @code{ess-help-reuse-window} custom variable. @item help: ?foo pops IDO menu on multiple help files (so far it worked only for @kbd{C-c C-v}) @item remote evaluation is considerably faster now on slow connections @item @ESS{[R]} tracebug R source references regular expressions are (mostly) language agnostic. @item @code{ess-function-call-face} inherits from @code{font-lock-function-name-face} rather than @code{font-lock-builtin-face}. @item @code{ess-inject-source} now accepts @code{function-and-buffer} option. @item Documentation: The ``New Features'' section (and @file{NEWS}) now represent recent changes: within the last year or so. All changes can be found in the new @uref{news.html, news.html} (or @file{NEWS} and @file{ONEWS}). @item @ESS{[R]} @code{ess-rep-regexp} should no longer inf.loop (rarely!), and hence @code{M-x ess-fix-miscellaneous} should neither. @end itemize Changes/New Features in 13.05: @itemize @bullet @item @ESS{[gretl]}: Support for @code{gretl} (both editing and sub-process interaction). A contribution of Ahmadou Dicko. @item @ESS{}: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when @code{ess-tracebug} is active). @item @ESS{}: @kbd{C-c `} is now bound to @code{ess-show-traceback} and @kbd{C-c ~} is bound to @code{ess-show-call-stack}. @item @ESS{[R]}: ESS stores function in 'ESSR' environment to avoid kludging users' global environment and accidental deletion. @item @ESS{[R]}: new variable @code{ess-swv-processing-command} to control weaving and tangling. @item @ESS{[R]}: @code{ess-default-style} has been changed (from @code{DEFAULT}) to @code{RRR}. Use something like @code{(setq ess-default-style 'DEFAULT)} or @code{(setq ess-indent-level 2)} in your @file{~/.emacs} equivalent @emph{before} loading ESS, if you do not like this new ``incompatible'' default style. @item @ESS{[julia]}: ESS stores its functions in 'ESS' module. @item @ESS{[julia]}: Eldoc is now supported in julia modes @item @ESS{[julia]}: Adjusted error reference detection and interactive help to julia internal changes @item @ESS{[R]}: @code{ess-use-tracebug}'s default has been changed to @code{t}. Set it to nil if you want to keep the previous behavior. @item @ESS{[tracebug]}: Electric debug keys have been removed [breaking change] The functionality was replaced with @code{ess-debug-minor-mode} and @code{ess-debug-minor-mode-map}. @item @ESS{[tracebug]}: @code{ess-tracebug-map} is an alias to @code{ess-dev-map} @kbd{C-c C-t}. @item @ESS{[tracebug]}: @code{ess-bp-toggle-state} (@kbd{C-c C-t o}) can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan). @item @ESS{[tracebug]}: @code{ess-debug-flag-for-debugging} and @code{ess-debug-unflag-for-debugging} work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in @code{ess-developer-packages} (@kbd{C-c C-t C-a}). @item @ESS{[R]}: Eldoc (activated by @code{ess-use-eldoc}) has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., @R{}, and the user. Note that you can turn off ElDoc, by placing @code{(setq ess-use-eldoc nil)} in your @file{~/.emacs} file, prior to loading ESS, @item @ESS{[SAS]}: long over-looked @code{SAS-mode-hook} appears! @item @ESS{[SAS]}: @code{ess-sas-edit-keys-toggle} now defaults to @code{t} since @code{sas-indent-line} is still broken, i.e. @kbd{TAB} is now bound to @code{ess-sas-tab-to-tab-stop} by default @end itemize Changes/Bug Fixes in 12.09-2: @itemize @bullet @item @ESS{}: new @code{ess-switch-to-end-of-proc-buffer} variable that controls whether @kbd{C-c C-z} switches to the end of process buffer. The default is @code{t}. You can use prefix argument to @kbd{C-c C-z} to toggle this variable. @item @ESS{}: fix in @code{ess-eval-linewise} that was causing emacs to hang during R debugging with @code{ess-eval-visibly} equal to @code{t}. @item @ESS{}: fix in @code{ess-eval-linewise} that was causing emacs to recenter the prompt in visible window @item @ESS{[tracebug]}: A better handling of ``Selection'' prompts and debug related singlekey commands. @item @ESS{}: fix a bug in @code{ess-switch-process} that was causing @code{*new*} selection to fail. @item @ESS{[R]}: Solve missing @code{ess-local-process-name} bug in R-dired. @item @ESS{[SWV]}: @code{ess-swv-PDF} doesn't ask for a command to run if there is only one command in @code{ess-swv-pdflatex-commands}. @item @ESS{[SWV]}: @code{ess-swv-weave} gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr). @item @ESS{}: @code{ess-eval-*-and-step} functions go to next empty line at eob, instead of staying at the last line. @end itemize Changes/New Features in 12.09-1: @itemize @bullet @item @ESS{} @emph{Breaking Changes in Keys}: @itemize @minus @item New keymaps: @code{ess-doc-map} bound to @kbd{C-c C-d}; @code{ess-extra-map} bound to @kbd{C-c C-e}; @code{ess-dump-object-into-edit-buffer} was moved on @kbd{C-c C-e C-d} @item roxygen map was moved on @kbd{C-c C-o} and @kbd{ess-roxy-update-entry} now resides on @kbd{C-c C-o C-o} @item ess-handy-commands is not bound anymore @item @code{ess-dev-map} (including @code{ess-tracebug} and @code{ess-developer}) moved on @kbd{C-c C-t} @item @code{C-c C-y} is deprecated in favor of @code{C-c C-z C-z} @end itemize @item @ESS{[R]} new command @code{ess-describe-object-at-point} bound to @kbd{C-c C-d C-e} (repeat @kbd{C-e} or @kbd{e} to cycle). It was inspired by Erik Iverson's @code{ess-R-object-tooltip}. Customize @code{ess-describe-at-point-method} to use tooltip instead of an electric buffer. @item @ESS{}: New command @code{ess-build-tags-for-directory} bound to @kbd{C-c C-e C-t} for building dialect specific tag tables. After building tags use @kbd{M-.} to navigate to function and objects definitions. By default @kbd{C-c C-e C-t} builds tags based on imenu regular expressions and also include other common languages @code{.c, .o, .cpp} etc. But it relies on external @code{find} and @code{etags} commands. If @code{ess-build-tags-command} is defined (for @code{R}), the inferior process is asked to build tags instead. @item @ESS{}: @code{ess-switch-process} offers @code{*new*} alternative to start a new process instead of switching to one of the currently running processes. @item @ESS{}: Switching between processes (@kbd{C-c C-s}) uses buffer names instead of the internal process names. Use @code{M-x rename-buffer} command to conveniently rename your process buffers. @item @ESS{}: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where @code{proc} stands for the internal process name and @code{dir} stands for the directory where the process was started in. The default is *proc*. For customization see @code{ess-gen-proc-buffer-name-function}. @item @ESS{}: @code{ess-eval-visibly-p} is deprecated in favor of @code{ess-eval-visibly}. @item @ESS{}: New evaluation pattern @code{nowait}. In addition to old @code{nil} and @code{t} values, @code{ess-eval-visibly} accepts @code{nowait} for a visible evaluation with no waiting for the process. See @code{ess-eval-visibly} for details on evaluation patterns. @item @ESS{}: New ``Process'' menu entry with process related commands and configuration @item @iESS{}: Process buffer is now automatically shown on errors @item @ESS{}: New @code{ess-switch-to-inferior-or-script-buffer} command bound to @kbd{C-c C-z} in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command. @item @ESS{R-help}: On multiple help pages with the same name, @kbd{C-c C-v} now asks for user resolution directly in emacs. @item @ESS{[R]} ess-roxy: new variable @code{ess-roxy-re} for fontification of cases where the number of leading @kbd{#} differs from @code{ess-roxy-str}. @item @ESS{[R]} Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods' arguments after trailing ||. @item @ESS{[R]}: New @code{ess-display-demos} command bound to @kbd{C-c C-d o} and @kbd{C-c C-d C-o} @item @ESS{}: New @code{ess-help-web-search} command bound to @kbd{C-c C-d w} and @kbd{C-c C-d C-w} to facilitate interactive search of web resources. Implemented for @code{R}, @code{Stata} and @code{Julia}. See also @code{ess-help-web-search-command}. @item @ESS{}: ess-pdf-viewer-pref accepts now command line arguments @item @ESS{[Rnw]}: Add knitr support. Customize @code{ess-swv-processor} for the default processor. @item @ESS{[Rnw]}: More thorough renaming of remaining @code{noweb-*} to @code{ess-noweb-*}. @item @ESS{[Rnw]} new commands @code{ess-eval-chunk-and-step} and @code{ess-eval-chunk} bound to @kbd{M-n C-c} and @kbd{M-n C-M-x} to mirror standard ess commands in C-c map. @item @ESS{[R]} Auto-completion: new variable @code{ess-ac-R-argument-suffix} to customize the insertion of trailing "=". Defaults to `` = ``. @item @ESS{[Julia]}: Added index, apropos and web-search to julia. @item @ESS{} help: More evaluation commands were added to ess-help mode (@kbd{C-c C-c}, @kbd{C-M-x} etc) @end itemize Bug Fixes in 12.09-1: @itemize @bullet @item @iESS{help}: Multiple help pages with the same name are properly handled on @kbd{C-c C-v} @item @iESS{remote}: Evaluation with ESS remote no longer freezes emacs. @item @iESS{}: @code{comint-previous-prompt} @kbd{C-c C-p} no longer stops on secondary prompt ``+''. @item @iESS{[R]}, @iESS{(Sqpe) [S]} on Windows: The @code{options("editor")} is now initialized to @code{emacsclient} instead of the previous @code{gnuclient}. The user may need to add the line @code{(server-start)} to the emacs initialization file. @code{emacsclient} has been included with emacs since GNU Emacs 22.1. @item @ESS{[Rnw]} Fixed ``connection to R'' bug (in 12.09 only). @item @ESS{[Rnw]} Explicit @code{ess-swv-stangle} and @code{ess-swv-sweave} functions. @item @ESS{[Rnw]} Fixed completion and smart underscore problems cause by unmatched ``\''' @item @ESS{[R]} is more careful with the @code{R} code injection. It now happens only once at the start of the session. @item @ESS{[R]}: Fixed auto-scrolling the comint buffer on evaluation. @item @ESS{[Julia]}: Solve several indentation and word navigation problems. @item @ESS{[Julia]}: Help system works again. @end itemize Changes/New Features in 12.09: @itemize @bullet @item @b{Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs.} @item @ESS{[R]}: On Windows, there is now a new customizable variable (currently called @code{ess-directory-containing-R}) to tell ESS where to look for the @file{Rterm.exe} executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find @file{Rterm.exe} executables when they are installed somewhere else. @item @ESS{[julia]}: @emph{new} mode for editing julia code (@file{*.jl}). Start with @code{M-x julia}. Full interaction interface, imenu and basic error referencing are available. @item @ESS{[R]} noweb: @code{noweb-mode} and @code{noweb-font-lock-mode} have been renamed to @code{ess-noweb-mode} and @code{ess-noweb-font-lock-mode} to avoid conflicts with the ``real'' @code{noweb-mode}. @item @ESS{[R]} noweb: The long standing font-lock bug has been solved in @code{ess-noweb} interface. @item @ESS{}: Basic evaluation keys are now bound to @code{ess-eval-region-*-} functions: @itemize @minus @item @kbd{C-M-x} is bound to @code{ess-eval-region-or-function-or-paragraph} @item @kbd{C-c C-c} is bound to @code{ess-eval-region-or-function-or-paragraph-and-step} @item @kbd{C-RET} is bound to @code{ess-eval-region-or-line-and-step} @end itemize Each of these functions first evaluates the region whenever the region is active. @item @ESS{}: @kbd{C-M-a}/@kbd{C-M-e} now step to beginning/end of paragraph if no function has been detected. @item @ESS{}: @code{ess-eval-*-and-step} family of functions are now smarter, and don't step to end of buffer or end of chunk code (@code{@@}) when at the end of the code. @item @ESS{}: @code{ess-handy-commands} function is bound to @kbd{C-c h} @item @ESS{}: ESS is now @emph{blinking} the evaluated region. Set @code{ess-blink-region} to nil to deactivate; @code{ess-blink-delay} gives the duration of the blink. Evaluated region is ``blinked'' in @code{highlight} face. @item @ESS{[R-help]} New key @kbd{a} for ``apropos()'' in help buffers. Also available through @kbd{C-c h}. @item @ESS{[R-help]} All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers. @item @ESS{[R]}: New customization interface for @emph{font-lock}. ESS font-lock operates with predefined keywords. Default keywords are listed in @code{ess-R-font-lock-keywords} and @code{inferior-R-font-lock-keywords}, which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through @kbd{ESS/Font-lock} submenu. Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators. @item @ESS{[R]}: auto-complete is now activated by default whenever auto-complete package is detected. Set @code{ess-use-auto-complete} to nil to deactivate. @item @ESS{[R]}: R AC sources are no longer auto-starting at 0 characters but at the default @code{ac-auto-start} characters. @item @ESS{} no longer redefines default ac-sources, but only appends @code{ac-source-filename} to it. @item @ESS{}: @code{ac-source-R} now concatenates `` = `` to function arguments. @item @ESS{}: Menus for ESS and iESS have been reorganized and enriched with @emph{Tracebug} and @emph{Developer} submenus. @item @ESS{[R]}: @code{ess-developer} and @code{ess-tracebug} commands are available by default in @code{ess-dev-map} which is bound to @kbd{C-c d} in ESS and iESS maps. @item @ESS{[R]}: @code{eldoc} truncates long lines whenever @code{eldoc-echo-area-use-multiline-p} is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also @code{ess-eldoc-abbreviation-style}. @item @ESS{[R]}: completion code pre-caches arguments of heavy generics such as @code{plot} and @code{print} to eliminated the undesirable delay on first request. @item @iESS{}: Prompts in inferior buffers are now highlighted uniformly with @code{comint-highlight-prompt} face. @item @ESS{[R]}: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like @code{Sys.sleep(5)} no longer stall emacs. @item @ESS{}: [R, S, Stata, Julia] have specialized @code{ess-X-post-run-hook}s, which are run at the end of subprocess initialization. @item @ESS{[Stata]}: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on @kbd{C-c C-c} and other interactive commands. @item @ESS{} no longer auto-connects to a subprocess with a different dialect than the current buffer's one. @item @ESS{}: @code{ess-arg-function-offset-new-line} is now a list for all the ESS indentation styles, which results in the following indentation after an open ``('': @verbatim a <- some.function(other.function( arg1, arg2) @end verbatim @item @ESS{[SAS]}: Improved MS RTF support for GNU Emacs; try @code{ess-sas-rtf-portrait} and @code{ess-sas-rtf-landscape}. @end itemize Changes/Bug Fixes in 12.04-3: @itemize @bullet @item @ESS{}: basic support for package.el compatibility @item @ESS{[R]}: correct indentation of & and | continuation lines @item @code{M-x ess-version} shows the svn revision even after @code{make install} @item @ESS{[SAS]}: improved XEmacs support @item @iESS{[R]}: better finding of previous prompt @item @ESS{[Stata]}: adjusted prompt for mata mode @item @ESS{[R]}: resolved name clashes with cl.el @item @ESS{[R]}: removed dependence on obsolete package assoc @item New @code{make} target @code{lisp}, to build the lisp-only part, i.e., not building the docs. @end itemize Changes/New Features in 12.04-1: @itemize @bullet @item @iESS{[Stata]}: New interactive help invocation. @item @iESS{[Stata]}: New custom variable @code{inferior-STA-start-file}. @item @iESS{[Stata]}: @code{inferior-STA-program-name} is now ``stata'' and can be customized. @item @ESS{[Stata]} New sections in stata help files Syntax(@kbd{s-S}), Remarks(@kbd{r}), Title(@kbd{t}). @end itemize Bug Fixes in 12.04-1: @itemize @bullet @item @ESS{[R]}: Better @code{ess-tracebug} error handling. @item @ESS{[R]}: Corrected @code{ess-eldoc} help string filtering and improved argument caching. @item @ESS{[R]}: Indentation of non-block if/else/for/while lines fixed. @item @code{M-x ess-version} should work better. @item @ESS{}: Filename completion now again works inside strings. @item @iESS{[Stata]}: Fixed prompt detection issue. @item @ESS{[Rd]}: R is autostarted also from here, when needed. @end itemize Changes/New Features in 12.04: @itemize @bullet @item @ESS{}: Reverting new behavior of 12.03, @kbd{TAB} in @code{ess-mode} no longer completes by default. If you want smart @kbd{TAB} completion in R and S scripts, similarly to @iESS{} behavior, set the variable @code{ess-tab-complete-in-script} to @code{t}. Also see @code{ess-first-tab-never-complete} for how to customize where first @kbd{TAB} is allowed to complete. @item @ESS{}: completion is consistently bound to @kbd{M-TAB} (aka @kbd{M-C-i}) in both Emacs23 and Emacs24. @item @ESS{}: The variable @code{ess-arg-function-offset-new-line} introduced in @ESS{(12.03)} now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to '(2) results in: @verbatim a <- some.function( arg1, arg2) @end verbatim @end itemize Changes/New Features in 12.03: @itemize @bullet @item @ESS{} indentation: new offset variable @code{ess-arg-function-offset-new-line} controlling for the indentation of lines immediately following open '('. This is useful to shift backwards function arguments after a long function call expression: @verbatim a <- some.function( arg1, arg2) @end verbatim instead of the old @verbatim a <- some.function( arg1, arg2) @end verbatim If '(' is not followed by new line the behavior is unchanged: @verbatim a <- some.function(arg1, arg2) @end verbatim This variable should be set as part of indentation style lists, or in ess-mode hook. @item @ESS{[R]}: @kbd{C-c .} sets (indentation) style. @item @ESS{}: In ESS buffers @code{yank}(@kbd{C-y}) command accepts double argument @kbd{C-u C-u} to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files. @item Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features (``Completion'', ``Developing with ESS'', ``ESS tracebug'', ``ESS developer'', ``ESS ElDoc'', ``IDO Completion'' and ``Evaluating Code'') @item RefCard: Reference card was updated to include new features. @item Eldoc: Eldoc was rewritten and is activated by default. See @code{ess-use-eldoc}, @code{ess-eldoc-show-on-symbol}, @code{ess-eldoc-abbreviation-style} variables for how to change the default behavior. @emph{Note:} @code{skeleton-pair-insert-maybe} prohibits eldoc display, on @kbd{(} insertion. @item @ESS{[R]}: Eldoc shows arguments of a generic function whenever found. @item @ESS{}: @kbd{TAB} in @code{ess-mode} now indents and completes, if there is nothing to indent. Set @code{ess-first-tab-never-completes-p} to @code{t} to make @kbd{TAB} never complete on first invocation. Completion mechanism is similar to the completion in the @code{inferior-ess-mode} -- a filename expansion is tried, if not found ESS completes the symbol by querying the process. @item @ESS{} for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by @code{completion-at-point}. Also in accordance with emacs conventions, ESS doesn't bind @kbd{M-TAB} for emacs 24 or higher. @kbd{M-TAB} calls the default @code{complete-symbol}. @item @ESS{[R]}: Out of the box integration with @code{Auto Completion} mode @uref{http://cx4a.org/software/auto-complete,http://cx4a.org/software/auto-complete} . Three AC sources @code{ac-source-R-args}, @code{ac-source-R-objects} and @code{ac-source-R} are provided. The last one combines the previous two and makes them play nicely together. Set @code{ess-use-auto-complete} to @code{t} to start using it. Refer to documentation string of @code{ac-use-auto-complete} for further information. @item @ESS{[R]}: New unified and fast argument completion system, comprised of @code{ess-funname.start}, @code{ess-function-arguments}, @code{ess-get-object-at-point}. Eldoc and auto-completion integration are using this system. @item @ESS{}: @code{ess-switch-to-end-of-ESS}(@kbd{C-c C-z}), and @code{ess-switch-to-ESS}(@kbd{C-c C-y}): Automatically start the process whenever needed. @item @ESS{[R]}: @code{roxy} knows about previewing text version of the documentation. Bound to @kbd{C-c C-e t}. @item @ESS{[R]}: Solved the ``nil filename'' bug in roxygen support. @item @ESS{[R]}: @code{ess-tracebug} is now part of @ESS{}: New Features: @itemize @minus @item Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don't have to source your file, but just evaluate your code in normal fashion. Variable @code{ess-tracebug-inject-source-p} controls this behavior - if t, always inject source reference, if @code{'function}, inject only for functions (this is the default), if @code{nil}, never inject. During the source injection the value of @code{ess-eval-visibly} is ignored. @item Org-mode support: Visual debugger is now aware of the temporary org source editing buffer (@kbd{C-c '}) and jumps through this buffers if still alive, or in original org buffer otherwise. @item New keys in watch mode: @kbd{?} and @kbd{d} @item Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook @end itemize @item @ESS{[R]}: New package @code{ess-developer} to evaluate @code{R} code directly in the package environment and namespace. It can be toggled on and off with @kbd{C-c d t}. When @code{ess-developer} is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with @kbd{C-d a}, and remove with @kbd{C-d r}. Source the current file with @kbd{C-d s}.Evaluation function which depend on @code{`ess-eval-region'} ask for the package to source the code into, @code{ess-eval-function} and alternatives search for the function name in the development packages' environment and namespace and insert the definition accordingly. See the documentation section ``Developing with ESS/ESS developer'' for more details. @item @ESS{[R]} help system: New Features: @itemize @minus @item @kbd{q} quits window instead of calling @code{ess-switch-to-end-of-ESS}. This is consistent with emacs behavior help and other special buffers (@emph{breaking change}). @item @kbd{k} kills window without asking for the name (pointed by Sam Steingold) @item Help map inherits from @code{special-mode-map} as sugested by Sam Steingold. @item Package index: new function @code{ess-display-index} bound to @kbd{i} in help mode map. @item Package vignettes: new function @code{ess-display-vignettes} bound to @kbd{v} in help mode map. @item Display help in HTML browser: new function @code{ess-display-help-in-browser} bound to @kbd{w} in help mode map. It depends on @code{R}'s @code{browser} option. @item New custom variable @code{ess-help-pop-to-buffer}: if non-nil @ESS{} help buffers are given focus on display. The default is @code{t} (@emph{breaking change}). @item New menu entries for the above functions. @item Bogus help buffers are no longer generated by default, i.e. buffers of the form ``No documentation for 'foo' in specified packages and libraries: you could try '??foo' ''. @code{ess-help-kill-bogus-buffers} now defaults to @code{t}. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning. @end itemize @item @ESS{} now uses @code{IDO} completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set @code{ess-use-ido} to nil if you don't want the IDO completion. See the documentation string of @code{ess-use-ido} for more information about @code{IDO} and @ESS{} configuration. @item @ESS{[S]}: ``@kbd{,}`` is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from @code{`ess-handy-commands'} list. If @code{ess-R-smart-operators} is t @code{`ess-smart-comma} also inserts `` `` after comma. @item @ESS{[S]}, notably @code{R}: Variable @code{`ess-handy-commands'} stores an alist of useful commands which are called by @code{ess-smart-comma} in the inferior buffer. Currently containing: @table @asis @item change-directory @code{ess-change-directory} @item help-index @code{ess-display-index} @item help-object @code{ess-display-help-on-object} @item vignettes @code{ess-display-vignettes} @item objects[ls] @code{ess-execute-objects} @item search @code{ess-execute-search} @item set-width @code{ess-execute-screen-options} @item install.packages @code{ess-install.packages} @item library @code{ess-library} @item setRepos @code{ess-setRepositories} @item sos @code{ess-sos} @end table Handy commands: @code{ess-library}, @code{ess-install.packages}, etc - ask for item with completion and execute the correspond command. @code{ess-sos} is a interface to @code{findFn} function in package @code{sos}. If package @code{sos} is not found, ask user for interactive install. @item @ESS{}: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of @code{ess-tracebug} and developer status of @code{ess-developer} in all associated buffers. @item @ESS{}: New @code{ess-completing-read} mechanism: @ESS{} uses @code{ido} completions whenever possible. Variable @code{ess-use-ido} controls whether to use ido completion or not. Active by default. @item @ESS{} now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future. @item @ESS{[S]}: New custom variable @code{inferior-ess-S-prompt} to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation (@code{comint-previous-prompt} and @code{comint-next-prompt}) the inferior buffers. @item @ESS{[R]}: Internal @code{R} completion retrieval (@code{ess-R-complete-object-name}) was rewritten and is faster now. @item @ESS{} is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged. @item @ESS{}: new functions to manipulate process plists: @code{ess-process-get} and @code{ess-process-set}. @item @ESS{}: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in @code{> }. This could be overwritten by setting @code{inferor-ess-primary-prompt}. @item @ESS{[S]}, notably @code{R}: Saved command history: @var{ess-history-file} now accepts @code{t} (default), @code{nil}, or a file name. By setting it to @code{nil} no command line history is saved anymore. @var{ess-history-directory} now allows to have the history all saved in one ``central'' file. @item @ESS{[R]}: more Roxygen improvements. @item @ESS{[R]}: @kbd{C-c .} to set (indentation) style. @item @ESS{[R]}: Functions with non-standard names (for example 'aaa-bbb:cc') are properly handled by font-lock and evaluation routines. @item @ESS{[R]}:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in @code{ess-get-words-from-vector} and @code{ess-command}. @end itemize @comment @end itemize ess-17.11/doc/news.texi0000644005071500004540000000005613202324173011655 00000000000000 @include ess-defs.texi @include newfeat.texi ess-17.11/doc/onewfeat.texi0000644005071500004540000011502013202324173012507 00000000000000@comment @itemize @w{} @comment @item Changes/New Features in 5.14: @itemize @bullet @item @ESS{[BUGS/JAGS]}: Batch BUGS is back! For recent OpenBUGS versions, 3.0.8+, a batch BUGS script is once again available, but for Linux only. Therefore, since it seems that BUGS and JAGS must co-exist (rather than a transition from BUGS to JAGS), .bug files are now in @ESS{[BUGS]} mode and .jag files are in @ESS{[JAGS]} mode. @ESS{[BUGS]} now works like @ESS{[JAGS]} rather than the original mode @ESS{[BUGS]} mode which was difficult to maintain. Although, @ESS{[BUGS]} appears to work, there still may be some features missing as well as bugs. @item @ESS{[R]}: New customizable variable @code{ess-swv-plug-into-AUCTeX-p} Commands to Sweave current file and LaTeX the result are now available to AUCTeX users, if this variable is set to @code{t}. @item @ESS{[S]}: @kbd{C-c C-c} (@code{ess-eval-function-or-paragraph-and-step}) is now skipping over comments as the other paragraph functions do. It (and similar functions) should no longer wrongly find @samp{function()} beginnings inside comments or strings. @item @ESS{[SAS]}: improved by better support for GNU Emacs @end itemize Changes/New Features in 5.13: @itemize @bullet @item @ESS{[R]}: On Windows, for R 2.12.0 and later, the Rterm executables (in subdirectories i386 / x64) now are found as well as for earlier R versions. @item @ESS{[S+]}: on Windows, both 32- and 64-bit versions of S+ (``S-PLUS'') are found now and made available on the menu. @item @ESS{[R]}: When prompting for a starting directory, the R version is (always?) correct now. @item @ESS{[R]}: on non-Windows platforms, the @code{use-dialog-box} variable is no longer temporarily changed (to @code{nil} for R-x.y.z version functions and to @code{t} for @command{R} itself), but rather the user customization is obeyed. @item @ESS{[R]}: more Roxygen improvements. @item `Rd-preview-help' now generates preview buffers with navigation facilities the same as regular help buffers. @item @ESS{}: New functions and keys C-c [up] / [down] for evaluating the buffer ``from beginning till here''. @end itemize Changes/New Features in 5.12: @itemize @bullet @item @ESS{[SAS]} Font-locking: update of PROCs keywords (up to SAS 9.22); error/warnings. @item @ESS{[R]}: Roxygen improvements: S4 classes; also optionally keep spaces when filling arguments @item @ESS{[Rd]}: support new keywords: section-name \subsection plus a dozen ``new'' keywords; should match R 2.12.x now. @item @command{ess-display-help-on-object} (@kbd{C-c C-v}) now @emph{caches} the list of topics, thus speeding up the improvement feature introduced in 5.9. @end itemize Changes/New Features in 5.11: @itemize @bullet @item Filename completion within buffers now adds only trailing characters to complete the filename, rather than expanding to an absolute file path. This filename completion is bound to the TAB key. @item @kbd{M-n P} in Sweave buffers now prompts for the command to run instead of using @command{pdflatex} unconditionally, offering completion from customizable collection @code{ess-swv-pdflatex-commands}, the first of which is taken as default and that defaults to @command{texi2pdf}. @item @kbd{M-RET} is now also bound in S language (R and S+) buffers to @command{ess-use-this-dir}. It sends @code{setwd(..)} to the S process to set the working directory to the one of the source file. @end itemize Changes/New Features in 5.10: @itemize @bullet @item @kbd{M-RET} in *S* buffers is now bound to @code{ess-dirs}. This function will set Emacs's current directory to be the same as the *S* process. This is useful if you use @code{setwd()} within a *S* process. @end itemize Changes/New Features in 5.9: @itemize @bullet @item Toolbar: The toolbar now has an icon for starting Splus. @item Indentation: New documentation and code has been added to make it easier to change how ESS indents code. In particular, see @code{ess-default-style}, @code{ess-own-style-list} and the documention subsection ``Changing indentation styles''. @item @command{ess-display-help-on-object} (@kbd{C-c C-v}) now offers completion candidates for help file aliases, in addition to object names. @item Font locking: is now turned on even without @command{window-system} is @code{nil}, whenever @var{ess-font-lock-mode} is non-nil, i.e., by default. @item @ESS{} script editing: ess-eval-deactivate-mark default is now t, as suggested by Leo Alekseyev and subsequent ``unanimous'' ESS-help discussion. @item @ESS{[R]}: Editing support for ``#!'' (Rscript / littler) editing, thanks to Jeffrey Arnold. @item @ESS{[R]}: Now finds all R versions, both 64-bit and 32-bit, on some 64-bit Windows machines. Please report back to ess-core success or failure on your 64-bit Windows machine. @item ESS Manual now more visually pleasing; @uref{http://ess.r-project.org/Manual/ess.html} @item @ESS{[R]}: Roxygen on XEmacs no longer font locks for now (as it required missing features and hence broke ESS startup, there). @item @ESS{[R]}: Roxygen has a sub-menu on the [ESS] menu. @item @ESS{[R]}: Function @command{ess-rutils-htmldocs} in @file{ess-rutils.el} offers an alternative to @code{help.start()} for navigating R documentation, using the @command{browse-url} Emacs function. @end itemize Changes/New Features in 5.8: @itemize @bullet @item @ESS{[R]}: New @file{ess-rutils.el} with utilities for listing, loading, installing, and updating packages, as well as object manipulation (listing, viewing, and deleting). It also provides an alternative to @code{RSiteSearch()} that uses the @command{browse-url} function, so results can be viewed in an Emacs web browser. @item @ESS{[R]}: much more extensive Roxygen interface, via ess-roxy.el from Henning Redestig. Ess-roxy supports filling of roxygen fields, generation and updating roxygen templates, completion of roxygen tags, basic navigation (marking and moving between entries), folding using hs-minor-mode and preview of the Rd file. @item Emacs lisp files have got better names (partly, for now). @end itemize Changes/New Features in 5.7: @itemize @bullet @item @ESS{[R]}: loading a source file (@kbd{C-c C-l}) now works in Windows, similarly to other platforms; (further; it had accidentally been broken in ESS 5.6 on all platforms) @end itemize Changes/New Features in 5.6: @itemize @bullet @item @ESS{[R]}: help() calls have to differ from old default, with newer versions of R; currently via .help.ESS <- function(...) hack. @end itemize Changes/New Features in 5.4: @itemize @bullet @item @ESS{[SAS]}: The long overdue change from @code{make-regexp} to @code{regexp-opt} for font-locking is complete. The new @code{regexp-opt} is now the default since it is better than the old code in many ways (and especially more maintainable). However, there are certainly some special cases missed (bug reports and patches welcome!). Setting @code{ess-sas-run-regexp-opt} to @code{nil} will result in the old code being used. @item @ESS{[BUGS]} and @ESS{[JAGS]}: typing @code{=} now results in @code{<-}. @item @ESS{[R]} function arguments ``show'' @code{(ess-r-args-show)} now uses the new @code{(tooltip-show-at-point)} contributed by Erik Iverson. @item Toolbar icons now also work in (beta) Emacs 23. @item @ESS{[S]}: New function @code{ess-change-directory} for setting both emacs' current directory and the directory of an *R* or *S* buffer. @item @ESS{[S]} when transient-mark-mode is true, the mark is now kept, rather than deactivated, thanks to a patch from David Reitter. @end itemize Changes/New Features in 5.3.11: @itemize @bullet @item @ESS{[SAS]}: work around bug in Emacs 22.2 & 22.3 which fails to set case-fold fontification automatically. @item Rd mode: support new keyword 'Rdversion' @item @ESS{[R]}: now again works with Emacs 21.x @end itemize Changes/New Features in 5.3.10: @itemize @bullet @item Fixed noweb-mode bug accidentally introduced into 5.3.9 @item In noweb-mode, e.g., Rnw-mode, electric ``<'' also inserts closing ``@@". Further, the code chunk boundaries are better kept up-to-date, such that code[R] <-> text[LaTeX] minor mode switching should happen more reliably. @item In noweb-mode, fix a buglet in rare [Enter] or [Tab] behavior; further, by default disable the former `[[' .. `]]' code-protection-when-filling behavior which has been found to be buggy. @end itemize Changes/New Features in 5.3.9: @itemize @bullet @item @ESS{[SAS]}: evince PDF viewer now supported as well; search order: evince, Xpdf, Adobe/Acrobat Reader @item @ESS{[R]}: added support for Roxygen, potentially to be extended. @item @ESS{[S]} (and R): inferior (@code{*R*}) and transcript modes no longer fontify language keywords (such as @code{for}, @code{in}, etc). @item @iESS{[Stata]}: Customize the @code{ess-sta-delimiter-friendly} setting to @code{t} to convert embedded semi-colons to newlines for Stata processing. @item Sweave fix for embedded blanks in PDF reader and PDF files @item Several fixes for Major Mode Convention violations in @code{ess-mode} and @code{noweb-mode}. @item @ESS{[JAGS]}: @code{M-x comment-region} now available! @item @ESS{[S]} The @code{ess-swv-*} commands (and keybindings) are now in a submenu of the ``Noweb'' menu, when editing Sweave files. @end itemize Changes/New Features in 5.3.8: @itemize @bullet @item @ESS{[JAGS]}: more separation from @ESS{[BUGS]} (as much as is currently planned); now @kbd{C-c C-c} on an empty @file{.jmd} creates a template as it should; symbolic links are created for CODA output so BOA is happy: from @file{index.txt} to @file{.ind} and @file{chain#.txt} to @file{#.out} @item @ESS{[SAS]}: buffer-local @code{ess-sas-submit-command} and @code{ess-sas-submit-command-options} now recognized by @code{ess-sas-submit-region} @item @ESS{[S]}: When trying to evaluate code in an S language buffer and there is no associated process, now start R automatically instead of signalling an error. Also, restart R if there is an associated process which is not running. However, do not start R just via the ``electric'' @kbd{(} (@code{ess-r-args-auto-show}). @item @ESS{[S]}: For (one-line) functions withOUT '@{ .. @}' bodys, the end of function is now correctly found more often. This notably improves @kbd{C-c C-c} (@code{ess-eval-function-or-paragraph-and-step}). @item @ESS{[JAGS]}: cleanup/re-organization of elisp code; symbolic links for CODA output are now only created by the new JAGS @code{system} command in version 1.0.3; specify whether this command is available via @code{ess-jags-system}; if not present, then no links are created so that the @code{*shell*} buffer does not become unresponsive during the batch run @end itemize Changes/New Features in 5.3.7: @itemize @bullet @item @ESS{}: @code{ess-default-style} now *is* customizable, i.e., changing its value in @file{~/.emacs} now does have the desired effect. @item @ESS{}: @code{ess-font-lock-mode} is a new variable (default: t) which controls whether font-locking is enabled in ESS buffers. @item @ESS{[R]}: for XEmacs on Windows; another tweak to find R versions @item @ESS{[SAS]}: font-locking updated for ODS and SAS Bayesian Procedures; a more consistent handling of SAS options by @code{ess-sas-submit-command-options} which is buffer-local; portable snooze for MS Windows via customize-able @code{ess-sleep-for} (floats welcome); Xpdf now supported as a PDF viewer @item @ESS{[Rnw]}: now also works with ``emacs -nw'' and Emacs 22. @item @ESS{[JAGS]}: now requires JAGS 1.0 (see the new ESS for JAGS help section for more information): both need work; suggestions welcome @item @ESS{[R]}: [TAB] completion now uses the R-internal completion mechanism (for R >= 2.5.0). @item @ESS{[R], [S]}: interpretation of ``_'' as assignment has been removed in @code{ess-continued-statement-p} for R and S. @item several internal code cleanups. @item @ESS{[R]}: An experimental version of a new command @code{Rgui} on MS Windows to send lines directly from emacs to @code{Rgui} is available in file @code{lisp/essd-rgui.el}. Preliminary documentation is in file @code{doc/rgui-doc.txt}. @end itemize Changes/New Features in 5.3.6: @itemize @bullet @item @ESS{}: for XEmacs, using ``gnuclient'' (without a ``-q'') works for things like fix() after M-x gnuserv-start has been done. @item @ESS{[R]}: M-x R-newest should now work in more situations on MS Windows, e.g., when R has been installed in a non-default "ProgramFiles" directory tree. In these cases, there's no need to specify the name (and full path) of the R program anymore. @item @ESS{[R]}: For XEmacs, startup (with new tooltip code) works again. @end itemize Changes/New Features in 5.3.5: @itemize @bullet @item @ESS{[R]} a new defun is available, @kbd{M-x R-newest}, which will start the newest version of R that it can find on your system. @item @ESS{[R]} add Sven Hartenstein's ``R function arguments tips'' functionality, via new file @file{../lisp/essd-r-args.el}. Note that this includes an ``electric "("'' behavior inside @code{R-mode} which is @emph{active by default} and can be customized via @code{ess-r-args-electric-paren}; i.e., use @code{(setq ess-r-args-electric-paren nil)} to turn it off. Further, @code{ess-r-args-show-as} allows to switch to the ``tooltip'' mode. @item @ESS{}: functions @code{ess-get-pdf-viewer} and *-ps-viewer; built on new customizable variables @code{ess-pdf-viewer-pref} and @code{ess-ps-viewer-pref}; currently used in @code{ess-swv-PDF} and @code{*-PS}. @item @ESS{[R]} Improved @code{ess-swv-PDF} to run pdf viewer only if pdflatex was ok @item @ESS{[R]} Improved @code{ess-swv-weave} to start R automatically if none is running. @item @ESS{}: Do no longer ask @emph{which} ESS process to use if there is only one. @end itemize Changes/New Features in 5.3.4: @itemize @bullet @item @ESS{[R]} now better work with options(error=recover); and the new default of CHM help files on windows. @item @ESS{[R]} some more cleanup in the ``sweave'' functions @item miscellaneous fixes @end itemize Changes/New Features in 5.3.3: @itemize @bullet @item @ESS{[S]} fix buglet (5.3.2 only) which left command prompt in ``execute buffer'' and hence help files. @item new customizable variable @code{ess-display-buffer-reuse-frames} set to true (which changes default behavior) such that execution or help *frames* are reused. @end itemize Changes/New Features in 5.3.2: @itemize @bullet @item Classic BUGS now supported by @code{(require 'essd-bugs)} with @ESS{[BUGS]} and JAGS by @code{(require 'essd-jags)} with @ESS{[JAGS]}. But, only one of them can be used at a time since they don't play nice together. Also, @kbd{C-c C-c} is now bound to the function @code{ess-bugs-next-action} (@kbd{F12} has been retired). And finally, note that @file{essl-bug.el} is deprecated and the replacement is @file{essl-bugs.el}. @item @ESS{[R]} Improved some of the ``Sweave-make'' functions (yet scarcely documented) in @file{ess-swv.el}. @item @ESS{[S]} No longer mess with .Last.value (nor in other ``languages''). @end itemize Changes/New Features in 5.3.1: @itemize @bullet @item See the docs for 2 ways to install @ESS{} for XEmacs @enumerate @item by uncommenting the XEmacs part of Section 1 of @file{Makeconf} and performing @code{make install} @item by unpacking either @file{ess-5.3.1.tgz} or @file{ess-5.3.1.zip} into @file{PREFIX/lib/xemacs/site-packages} on unix or @file{PREFIX\XEmacs\site-packages} on windows @end enumerate @item @ESS{[R]}: fixed bugs so that Rterm.exe can be found by XEmacs @item @ESS{[S]}: @kbd{ess-toggle-S-assign-key} is slightly changed; in particular, the default @code{ess-assign-key} is now @kbd{C-x =}. @item @ESS{[R]}: @kbd{M-x R-site-search} is a new (slightly experimental) utility similar to R's @code{RSiteSearch(..)} but with the advantage of using Emacs' preferred browser, see @code{browse-url-browser-function} @end itemize Changes/New Features in 5.3.0: @itemize @bullet @item @ESS{[BUGS]}: sanely re-format statistical output, @file{.bog}, from scientific notation to numbers rounded with 4 decimal places with @kbd{M-x ess-bugs-sci-round-to-4-dp}. @item The keys for navigating among section headings in help buffers worked, but only for one language per session; they should now work for multiple languages. (They were also broken on Windows machines.) @item @ESS{[S]} long standing buglets in the internal logic for loading lisp code on Windows. Particularly fixed behavior in help mode with S-plus GUI. @item New variable, @code{ess-use-inferior-program-name-in-buffer-name}, which enables using the executable name instead of the dialect name for R. Feature request. @item @ESS{[S]} @kbd{ess-execute-screen-options} now also works correctly when there is more than one window *side-by-side* in the same frame and runs in the correct buffer also when there is more than one S buffer. @item @iESS{[S]} new functions @code{ess-eval-paragraph-and-step} and @code{ess-eval-function-or-paragraph-and-step} are bound to keys @kbd{C-c C-p} and @kbd{C-c C-c} respectively and to the menu in @ESS{}-mode; also bound in the help mode (for evaluating examples). @item @ESS{[S]} new function @code{ess-toggle-S-assign-key} allows to assign the `` <- '' insertion to an arbitrary key. @end itemize Changes/New Features in 5.2.12: @itemize @bullet @item @ESS{[SAS]}: @kbd{M-;} fixed, but the XEmacs function @code{comment-dwim} may be broken, if so, use @kbd{M-x comment-region} and @kbd{M-x uncomment-region} instead; only valid PROCs are fontified which is very helpful finding syntax errors (currently supported: BASE, ETS, FSP, GRAPH, IML, INSIGHT and STAT); the ``feature'' where @kbd{F}-keys take you to an empty buffer when the requested destination is a file that does not exist has been fixed, now the request results in a no-op. Further, sas-mode now also works in simple terminals. @item Rterm/Cygwin combination works under Microsoft Windows. @item @ESS{[R]}: internal calls use baseenv() instead of NULL and define 'baseenv' where needed. @item New experimental support for installing ESS. See the file @file{lisp/ess-install.el}. @end itemize Changes/New Features in 5.2.11: @itemize @bullet @item ESS Info entry and @file{dir} handled more effectively for GNU Emacs users @item @ESS{[SAS]}: temporary files created for batch submission of a region are now named based on the current file; see @code{ess-sas-file-root} for details; all @code{lag} and @code{dif} functions now fontified correctly @item iESS[SAS]: fixed a few nagging bugs, however, still does not appear to work at this time; please let us know if you have any ideas. @item @ESS{[S]}: Support for running other versions of Splus has been added for unix. Two new variables, @code{ess-s-versions} and @code{ess-s-versions-list}, are used to tell ESS what other versions of Splus you would like to run. @end itemize Changes/New Features in 5.2.10: @itemize @bullet @item @ESS{[R]}: ess-r-versions can no longer be customized (since the customization was not taking effect unless customizations were loaded before ESS). Its value has been changed so that it will also find R executables beginning ``R-devel'' and ``R-patched''. If you wish to change this variable, it must be set in your @file{.emacs} before ESS is loaded. @item Installation with GNU Make enhanced: unix and unix-like operating systems will now be able to install @ESS{} for all users in either a GNU Emacs site-lisp or an XEmacs package configuration by editing @file{lisp/ess-site.el} and @file{Makeconf} accordingly, then issuing @code{make install} @item @ESS{[S]}: Filename completion (inside strings) now also works in XEmacs for R and S-plus. @c working around a bug in XEmacs @end itemize Changes/New Features in 5.2.9: @itemize @bullet @item @ESS{[R]} for Windows: the \ directory character bug with respect to ess-load-file has been eradicated. @item @iESS{[SAS]}: @kbd{C-c C-r} and @kbd{C-c C-b} once again work as intended and documented. @item @ESS{[S]}: M-x ess-fix-EQ-assign is a bit more agressive. @item @ESS{[S]}: Imenu now also shows setAs(), etc. @item @ESS{[R]}: R function pattern enhanced with underlying code such that @kbd{M-C-a} (@code{ess-beginning-of-function}) etc now work for many more cases, including S4 method definitions. @item @iESS{[R]}: myOwnhelp(1) no longer wrongly triggers help(1). @item @ESS{[R]}: Improved detection of bogus help buffers: valid help buffers containing with the string ``no documentation''(e.g. contour) were being treated as bogus. @item @ESS{[R]}: In R help buffers, if @code{options("help.try.all.packages" = TRUE)} then @code{?rlm} will list which packages rlm is defined in. This help buffer is not bogus, but instead is now relabelled ``*help[R](rlm in packages)*''. @item @ESS{[STA]}: add ``//'' as comment starting character to syntax-table. @end itemize Changes/New Features in 5.2.8: @itemize @bullet @item iESS: [Tab] completes @strong{file} names ``inside string'' as in earlier (<= 5.2.3) ESS versions. @end itemize Changes/New Features in 5.2.7: @itemize @bullet @item If you use Custom to change the variable ess-toolbar-items, the new toolbar is used in all subsequent ESS buffers. @item @ESS{[SAS]}: new feature: if ess-sas-log-max >0 and your .log grows to more than ess-sas-log-max bytes, just the first ess-sas-log-max bytes are refreshed; this is helpful when your .sas program generates lots of error messages and gets too big for emacs to display @item @ESS{[R/S]}: @kbd{M-;} in R/S editing modes will now indent with either one or two hashes depending on context. @item @ESS{[R]}: David Whiting's Sweave extensions (to 'noweb') are now available (from ess-swv.el loaded by default). @end itemize Changes/New Features in 5.2.6: @itemize @bullet @item Removed non-ASCII characters in a few files. @item @ESS{[R]}: now works better when UTF-8 locale is active; in particular, you get correct directional quotes in R's startup message for R-devel (unstable development version of R 2.1.0) when using environment variables LANGUAGE=en@@quot LC_ALL=en_US.UTF-8 @item @ESS{[SAS]}: toggling of .log mode improved (@kbd{F10}); toggling of .lst mode now also available (@kbd{C-F10}); killing all buffers associated with .sas program no longer bound to @kbd{C-F10} since its a bit overzealous. @item S-Plus 7 for Windows is now recognized. @item @ESS{[S]} (incl.@: R): in auto-fill mode, strings are not wrapped anymore. @item @ESS{[S]} (incl.@: R): font-lock now correctly differs between R and S, e.g., for "_"; both now fontify warning(.) and S does terminate() additionally. @item Support for `bell' aka `beep' aka `ding' aka `alarm' in all inferior modes: When \a is output ``to the the console'' at the beginning of a line, the bell is rung. @end itemize Changes/New Features in 5.2.5: @itemize @bullet @item @ESS{[R]}: @kbd{C-c C-q} or @samp{Quit S} from the menu now should work (again and less klunkily) and do not append @samp{-exited} to the buffer name. Further, the behavior of @code{(ess-cleanup)}, called from ess-quit, now depends on the new customizable variable @code{ess-S-quit-kill-buffers-p} which defaults to @code{nil}. Consequently, the question @emph{``Delete all buffers associated with ..?''} will not be asked anymore by default. @item @ESS{[SAS]} -- ess-ebcdic-to-ascii-search-and-replace will now work with the @code{recode} application as well which is available on many platforms @item @ESS{[S]} (incl.@: R): Name completion for slots of S4 objects now works! @end itemize Changes/New Features in 5.2.4: @itemize @bullet @item The documentation now includes an overview of how to use the emacs TAGS facility for S functions. (The distribution also used to contain a directory @file{etc/other/Tags} where a ~1990 version of @file{etags.c} was distributed; this is no longer relevant and so has been deleted.) @item @ESS{[SAS]} -- When you are working with EBCDIC files on an ASCII platform, .log NOTEs may display as gibberish since the EBCDIC characters are not converted to ASCII prior to their display. So, the function ess-ebcdic-to-ascii-search-and-replace is provided for convenience and is bound to @kbd{C-F11}. This function requires the @code{dd} command (only available on unix or unix-like platforms). @item ESS: Completion of object names is now always done dynamically rather than allowing the option of using a pre-computed database (by @code{ess-create-object-name-db}) since modern computers seem fast enough for dynamic completion. (We expect few users, if any, have been using the pre-computed database method.) @item ESS: object completion in iESS buffers running on Windows was very slow (for GNU Emacs, but not XEmacs) and has now been fixed. Further, it was more or less broken for all versions of S-plus 6.x, and has been fixed to work everywhere but with the Windows' GUI of S-plus. The list of objects now shows unique names also when an object appears more than once in the search path. @item @ESS{[R]}: Completion of object names now also includes those starting with ``.''. @end itemize Changes/New Features in 5.2.3: @itemize @bullet @item ESS: When new inferior ESS processes are created, by default they will replace the current buffer (this restores behavior from pre 5.2.0). If you wish new ESS processes to start in another window of the current frame, set inferior-ess-same-window to nil. @item New variables inferior-Splus-args and inferior-R-args provide a way to pass command line arguments to starting S and R processes. @end itemize Changes/New Features in 5.2.2: @itemize @bullet @item bug-fixes for 5.2.1 (require 'executable), html docs, etc. @item ess-lisp-directory/../doc/info added to Info-directory-list if ess-info not found by info @item @ESS{[R]}: If you have other versions of R on your exec-path, such as "R-1.8.1" with Unix or "rw1081" with Windows, ESS will find them and create appropriate functions, such as @kbd{M-x R-1.8.1} or @kbd{M-x rw1081}, for calling them. By default only Unix programs beginning "R-1" and "R-2" and Windows programs parallel to the version of R in your exec-path will be found, but see ess-r-versions and ess-rterm-versions for ways to find other versions of R. @item @ESS{[R]}: Other versions of R, such as "R-1.8.1" on Unix and "rw1081" on Windows, are added to the "ESS / Start Process / Other" menu. @item @ESS{[S]}: If you have other versions of S-Plus on your Windows computer, such as S-Plus 6.1 or S-Plus 4.5, ESS will find them and create appropriate functions, such as @kbd{M-x splus61}, for calling the console version (Sqpe) inside an emacs buffer. By default only programs installed in the default location will be found, but see ess-SHOME-versions for ways to find other versions of S-Plus. @item @ESS{[S]}: Other versions of Sqpe on Windows, such as "splus61", are added to the "ESS / Start Process / Other" menu. @item @ESS{[R]}: (bug fix) ess-quit (bound to @kbd{C-c C-q}) should now quit the inferior R process, when issued from either the inferior buffer, or from a .R buffer. @end itemize Changes/New Features in 5.2.1: @itemize @bullet @item @ESS{[S]} (R and S-plus): now have toolbar support with icons to evaluate code in the inferior process or to switch there. This code is experimental and likely to change as XEmacs/Emacs issues get resolved. The toolbar should be enabled if your Emacs displays images, but can be disabled with the variable ess-use-toolbar. Thanks to David Smith from Insightful for the S-plus logo. @item @ESS{[SAS]}: ess-sas-graph-view (@kbd{F12}) enhanced; you can specify external file viewers for each graphics file type via the alist ess-sas-graph-view-viewer-alist; also .jpg/.gif are now handled by image-mode on XEmacs, if available, otherwise by graphics primitives as before @end itemize Changes/New Features in 5.2.0: @itemize @bullet @item @ESS{[BUGS]}: new info documentation! now supports interactive processing thanks to @uref{mailto:Aki.Vehtari@@hut.fi, Aki Vehtari}; new architecture-independent unix support as well as support for BUGS v. 0.5 @item @ESS{[SAS]}: convert .log to .sas with ess-sas-transcript; info documentation improved; Local Variable bug fixes; SAS/IML statements/functions now highlighted; files edited remotely by ange-ftp/EFS/tramp are recognized and pressing SUBMIT opens a buffer on the remote host via the local variable ess-sas-shell-buffer-remote-init which defaults to "ssh"; changed the definition of the variable ess-sas-edit-keys-toggle to boolean rather than 0/1; added the function ess-electric-run-semicolon which automatically reverse indents lines containing only "run;"; @kbd{C-F1} creates MS RTF portrait from the current buffer; @kbd{C-F2} creates MS RTF landscape from the current buffer; @kbd{C-F9} opens a SAS DATASET with PROC INSIGHT rather than PROC FSVIEW; "inferior" aliases for SAS batch: @kbd{C-c C-r} for submit region, @kbd{C-c C-b} for submit buffer, @kbd{C-c C-x} for goto .log; @kbd{C-c C-y} for goto .lst @item @ESS{[S]}: Pressing underscore ("_") once inserts " <- " (as before); pressing underscore twice inserts a literal underscore. To stop this smart behaviour, add "(ess-toggle-underscore nil)" to your .emacs after ess-site has been loaded; ess-dump-filename-template-proto (new name!) now can be customized successfully (for S language dialects); Support for Imenu has been improved; set ess-imenu-use-S to non-nil to get an "Imenu-S" item on your menubar; ess-help: Now using nice underlines (instead of `nuke-* ^H_') @item @ESS{[R]}: After (require 'essa-r), @kbd{M-x ess-r-var} allows to load numbers from any Emacs buffer into an existing *R* process; @kbd{M-x ess-rdired} gives a ``directory editor'' of R objects; fixed ess-retr-lastvalue-command, i.e. .Last.value bug (thanks to David Brahm) @item ESS: Support for creating new window frames has been added to ESS. Inferior ESS processes can be created in dedicated frames by setting inferior-ess-own-frame to t. ESS help buffers can also open in new frames; see the documentation for ess-help-own-frame for details. (Thanks to Kevin Rodgers for contributing code.) @end itemize Changes/New Features in 5.1.24: @itemize @bullet @item The version number is now correct even inside ESS/Emacs @end itemize Changes/New Features in 5.1.23: @itemize @bullet @item Minor more Makefile clean up. @end itemize Changes/New Features in 5.1.22: @itemize @bullet @item Besides info documentation, PDF and HTML documentation are also provided (instead of built using "make") and available on the web as well; see @uref{http://ess.r-project.org/, ESS web page} and @uref{http://lib.stat.cmu.edu/general/ESS/doc, StatLib} @item Now that info documentation is available, the README.* files are no longer supported. However, they are still distributed for what it's worth. @item ESS is now an XEmacs package! See @uref{http://www.xemacs.org/Install/index.html, XEmacs Installation HOWTO} for details (specifically, items 10-15). @item @ESS{[SAS]}: more user-friendly enhancements for remote SAS batch jobs with Kermit file transfers (LOG and OUTPUT function key features now supported). Multiple shells now supported so you can run SAS on different computers from different buffers by setting the buffer-local variable ess-sas-shell-buffer to unique buffer names. @item Major re-vamping of Makefile/Makeconf. @end itemize Changes/New Features in 5.1.21: @itemize @bullet @item @ESS{[SAS]}: info documentation now available!, see ESS->Help for SAS; @kbd{F12} opens GSASFILE nearest point for viewing either within emacs, when available, or via an external viewer; more syntax highlighting keywords; more enhancements for remote SAS batch jobs with Kermit; new framework for remote SAS interactive jobs, see ess-remote @item @ESS{[S]}: info documentation now available!, see ESS->Help for the S family @item Makefile: tag now independent of rel; info files made by doc/Makefile and installed in new info sub-directory @end itemize Changes/New Features in 5.1.20: @itemize @bullet @item New `options()$STERM' in the S dialects (S, S-Plus, R). The S program can determine the environment in which it is currently running. ESS sets the option to `iESS' or `ddeESS' when it starts an S language process. We recommend other specific values for S language processes that ESS does not start. @item New `ess-mouse-me' function, assigned to S-mouse-3 by default. User may click on a word or region and then choose from the menu to display the item, or a summary, or a plot, etc. This feature is still under development. @item GNU Emacs 21.1 is now supported (fixed for S dialects, SAS & BUGS), (some from Stephen Eglen). @item XEmacs 21.x is now supported (fixed w32-using-nt bug) @item XEmacs on Win (NT) is better supported. @item Workaround for bug in Sqpe+6 (S-PLUS 6 for Win). @item should now work even when imenu is not available (for old XEmacsen). @item @ESS{[SAS]}: XEmacs-Imenu fix; @kbd{C-TAB} is globalized along with your function-key definitions, if specified; you can specify your SAS library definitions outside of autoexec.sas for ess-sas-data-view with SAS code placed in the variable ess-sas-data-view-libname, also the dataset name is defaulted to the nearest permanent dataset to point; Speedbar support now works for permanent datasets, please ignore first./last.; new font-locking is now the default with more improvements for font-locking PROCs, macro statements, * ; and %* ; comments; you can toggle sas-log-mode with @kbd{F10} which will font-lock your .log (if it isn't too big); submit remote .sas files accessed with ange-ftp, EFS or Tramp (Kermit is experimental) by setting ess-sas-submit-method to 'sh; ess-sas-submit-command and ess-sas-submit-command-options are buffer-local so you can have local file variable sections at the end of your .sas files to request different executables or specify special options and the local file variables are re-read at submit instead of only at file open so that if you make a change it is picked up immediately; @item @ESS{[BUGS]}: font-lock with `in' fixed. @item for STATA: font-lock bug fixed. @item for Rd mode: @kbd{C-c C-v} and `switch-process' in menu. further, @kbd{C-c C-f} prefix (Rd-font) for inserting or surrounding a word by things such as \code@{.@}, \code@{\link@{.@}@}, \emph@{.@} etc. @item new functions (ess-directory-function) and (ess-narrow-to-defun) ess-directory <-> default-directory logic (Jeff Mincy). @item Re-organized Makefile and fixed a few bugs. @end itemize Changes/New Features in 5.1.19: @itemize @bullet @item S+6 now supported (Tony Rossini (Unix) and Rich Heiberger (Windows)) @item New BUGS support through @ESS{[BUGS]} mode (Rodney Sparapani) Templates assist you in writing .bug and .cmd code (.cmd and .log are replaced by .bmd and .bog to avoid emacs extension collisions). Substitution" parameters facilitate "automagic" generation of data...in" and "init...in" filenames, "const N=" from your data file and "monitor()/stats()" commands. Activated by pressing @kbd{F12}. @item Fixes for `ess-smart-underscore' SAS breakage (Rich Heiberger) @item You can change between PC and Unix, local and global SAS function-key definitions interactively (Rich Heiberger) @item @kbd{C-Submit} a highlighted region to SAS batch (Rodney Sparapani) @item New and improved SAS syntax highlighting (Rodney Sparapani) To get the new functionality, set ess-sas-run-make-regexp to nil. Also available in .log files via @kbd{F10}. @item Open a permanent SAS dataset for viewing via @kbd{F9} (Rodney Sparapani) You must have the library defined in autoexec.sas for it to work. @item User-friendly defaults for `sas-program', `ess-sas-batch-pre-command' and `ess-sas-batch-post-command' as well Customize support for these and other @ESS{[SAS]} variables (Rodney Sparapani) @item `ess-sas-suffix-2' now defaults to .dat via @kbd{F11} (Rodney Sparapani) @item Emacs/XEmacs, Unix/Windows issues collectively handled in ess-emcs.el @item defadvice solves problem of missing *ESS* (thanks to Jeff Mincy) @item Improved manual a bit by including things that were only in `README'. @end itemize Changes/New Features in 5.1.18: @itemize @bullet @item New `ess-smart-underscore' function, now assigned to "_" by default. Inserts `ess-S-assign' (customizable " <- "), unless inside string and comments where plain "_" is used instead. (MM) @item Fixes for longstanding interactive SAS breakage (RMH) @end itemize Changes/New Features in 5.1.17: @itemize @bullet @item Documentation for Windows Installation (Rich Heiberger) @item removal of ess-vars, finalization of customize support (in the sense that there is no more use of ess-vars, but that we need to fix ess-cust) (AJ Rossini) @item Many small (and large) fixes/contributions (MMaechler) @item addition of the "S-equal" variable and provide @kbd{M-x ess-add-MM-keys} a way to remap "_" to `ess-S-assign', typically " <- ", but customizable. (MMaechler) @end itemize Changes/New Features in 5.1.16: @itemize @bullet @item BUG FIXES @item Better SAS support @end itemize Changes/New Features in 5.1.15: @itemize @bullet @item BUG FIXES @end itemize Changes/New Features in 5.1.14: @itemize @bullet @item Yet more fixes to SAS mode, (Rich Heiberger and Rodney Sparapani) @item Customize support (for most Emacsen which support it) (AJRossini) @item ARC and ViSta support out of the box, and fixes for XLispStat (AJRossini) @end itemize Changes/New Features in 5.1.13: @itemize @bullet @item Version numbering finally all depending on the ./VERSION file, thanks to Martin Maechler. @item Yet more fixes to SAS mode, thanks to Rich Heiberger. @end itemize Changes/New Features in 5.1.12: @itemize @bullet @item Splus 5.1 stabilized, thanks to Martin Maechler, Bill Venables, Chuck Taylor, and others. @item More fixes to SAS mode, thanks to Rodney Sparapani and Rich Heiberger. @end itemize Changes/New Features in 5.1.11: @itemize @bullet @item More fixes to Stata mode, thanks to @uref{mailto:brendan@@essex.ac.uk, Brendan Halpin}. @item fixed bugs in ESS-elsewhere, thanks to many testers @item README.SPLUS4WIN has DETAILED instructions for S-PLUS 2000, thanks to @uref{mailto:brahm@@alum.mit.edu, David Brahm}. @item Fixes to SAS mode, thanks to Rodney Sparapani @end itemize Changes/New Features in 5.1.10: @itemize @bullet @item More fixes to Stata mode @item primitive generic version of ESS-elsewhere @item Small fixes to SAS/Stata. @end itemize Changes/New Features in 5.1.9: @itemize @bullet @item Stata mode works @item Literate Data Analysis using Noweb works @end itemize Changes/New Features in 5.1.8: @itemize @bullet @item Bug fixes @item R documentation mode defaults changed @end itemize Changes/New Features in 5.1.2: @itemize @bullet @item able to use inferior iESS mode to communicate directly with a running S-Plus 4.x process using the Microsoft DDE protocol. We use the familiar (from Unix ESS) @kbd{C-c C-n} and related key sequences to send lines from the S-mode file to the inferior S process. We continue to edit S input files in @ESS{[S]} mode and transcripts of previous S sessions in ESS Transcript mode. All three modes know the S language, syntax, and indentation patterns and provide the syntactic highlighting that eases the programming tasks. @end itemize @comment @end itemize ess-17.11/doc/onews.texi0000644005071500004540000000005713202324173012035 00000000000000 @include ess-defs.texi @include onewfeat.texi ess-17.11/doc/readme.texi0000644005071500004540000001071413202324173012140 00000000000000\input texinfo @c -*-texinfo-*- @comment %**start of header @setfilename readme.info @settitle ESS - Emacs Speaks Statistics @comment %**end of header @include ess-defs.texi @node General Information @comment node-name, next, previous, up @chapter General Information: README @cindex README This is the README file for the distribution of ESS version @include ../VERSION ESS is a GNU Emacs and XEmacs mode for interactive statistical programming and data analysis. Languages supported: the S family (S, S-PLUS and R), SAS, BUGS/JAGS and Stata. ESS grew out of the desire for bug fixes and extensions to S-mode and SAS-mode as well as a consistent union of their features in one package. Installation instructions are provided in sections for both Unix and Windows; see below. The current development team is led by Martin Maechler since August 2004. Former project leader A.J. (Tony) Rossini (@email{rossini@@blindglobe.net}) did the initial port to XEmacs and has been the primary coder. Martin Maechler (@email{maechler@@stat.math.ethz.ch}) and Kurt Hornik (@email{Kurt.Hornik@@R-project.org}) have assisted with the S family and XLispStat. Stephen Eglen (@email{stephen@@gnu.org}) has worked mostly on R support. Richard M. Heiberger (@email{rmh@@temple.edu}) has assisted with S/S-PLUS development for Windows. Richard and Rodney A. Sparapani (@email{rsparapa@@mcw.edu}) have done much of the work improving SAS batch and interactive support. Rodney has also extended ESS to support BUGS/JAGS and has an interest in improving Stata support. We are grateful to the previous developers of S-mode (Doug Bates, Ed Kademan, Frank Ritter, David M. Smith), SAS-mode (Tom Cook) and Stata-mode (Thomas Lumley). @c The name is ESS. Not ESS-mode. @ifplaintext Table of Contents @itemize @bullet @item License @item Stability @item Requirements @item Latest Version @item Installation @item Starting an ESS Process @item New Features @item Current Features @item Reporting Bugs @item Mailing Lists @item Authors @end itemize @end ifplaintext @menu * License:: * Stability:: * Requirements:: * Latest Version:: * Installation:: * Starting up:: * Current Features:: * New Features:: * Reporting Bugs:: * Mailing Lists:: * Authors:: @end menu @node License, Stability, General Information, General Information @comment node-name, next, previous, up @section License @include license.texi @node Stability, Requirements, License, General Information @comment node-name, next, previous, up @section Stability @include stabilty.texi @node Requirements, Latest Version, Stability, General Information @comment node-name, next, previous, up @section Requirements @include requires.texi @node Latest Version, Installation, Requirements, General Information @comment node-name, next, previous, up @section Getting the Latest Version @include getting.texi @c NOTE: The above INCLUDES inst_svn.texi (Subversion/SVN Installation) @c vvvvvvvvvvvv node name *must* match the one in ./ess.texi ! @node Installation, Starting up, Latest Version, General Information @comment node-name, next, previous, up @section Installation @include installation.texi @node Starting up, Current Features, Installation, General Information @comment node-name, next, previous, up @section Starting an ESS process To start an @Sl{} session on Unix or on Windows when you use the Cygwin bash shell, simply type @kbd{M-x S RET}. To start an @Sl{} session on Windows when you use the MSDOS prompt shell, simply type @kbd{M-x S+6-msdos RET}. @node Current Features, New Features, Starting up, General Information @comment node-name, next, previous, up @section Current Features @include currfeat.texi @node New Features, Reporting Bugs, Current Features, General Information @comment node-name, next, previous, up @section New Features @include newfeat.texi @node Reporting Bugs, Mailing Lists, New Features, General Information @comment node-name, next, previous, up @section Reporting Bugs @include bugrept.texi @node Mailing Lists, Authors, Reporting Bugs, General Information @comment node-name, next, previous, up @section Mailing Lists @include mailing.texi @node Authors, , Mailing Lists, General Information @comment node-name, next, previous, up @section Authors @include authors.texi @bye @c Remember to delete these lines before creating the info file. @iftex @lucidbook @bindingoffset = 0.5in @parindent = 0pt @end iftex @comment Local Variables: @comment TeX-master: "readme.texi" @comment End: ess-17.11/doc/refcard/0000755005071500004540000000000013202324210011463 500000000000000ess-17.11/doc/refcard/refcard.tex0000644005071500004540000002426113202324173013550 00000000000000\documentclass[a4paper]{article} \usepackage{multicol} \usepackage{parskip} \usepackage{verbatim} \usepackage{fullpage}% +- ok for paper 'A4' as well %\usepackage{svn}% and {fullpage} are both in debian/ubuntu pkg 'texlive-latex-extra' \addtolength{\textheight}{20mm} \addtolength{\topmargin}{-16mm} \newenvironment{tabI}{\begin{tabular}{p{18mm}l}}{\end{tabular}} \newenvironment{tabTit}[1]{\underline{\textbf{#1}}\\ \begin{tabI}}{\end{tabI}} % \newcommand{\Sect}[1]{\par\noindent\medskip\fbox{\large\textbf{#1}} \vskip -.2ex plus 1ex minus 1ex} \newcommand*{\Ecmd}[1]{$\left\langle \textrm{#1} \right\rangle$} \newcommand*{\sEcmd}[1]{{\small\Ecmd{#1}}} \newcommand*{\RET}[0]{\Ecmd{\textsc{ret}}} \newcommand*{\TAB}[0]{\Ecmd{\textsc{tab}}} \raggedcolumns%\raggedbottom \setlength{\columnseprule}{.4pt}% default 0 \setlength{\columnsep}{22pt}% default is less (18 pt?) \pagestyle{empty} \begin{document} %\SVN $Date$ %\begin{multicols}{1} \begin{center} {\LARGE ESS \ \ \ \ {\large [\textbf{E}macs \textbf{S}peaks \textbf{Statistics}]} \\[.5ex] Reference Card for S and R} \smallskip {\small updated for ESS 12.09-1}% {\footnotesize --- needs \em{more} updating!}} \\[1ex] {\tiny September 2012} % \footnotesize --- as of \today \end{center} % takes a lot of space % \begin{enumerate} % \item \textsc{Nota Bene:} S is the \emph{language}, % R is one \emph{dialect}! % \item This is a list of the more widely used \textbf{key - shortcuts}. % Many more are available, and most are accessible from the Emacs % \textbf{Menus} such as \texttt{iESS}, \texttt{ESS}, etc. % %NN \vspace*{-3ex} % \end{enumerate} %\end{multicols} %NN \rule{\textwidth}{.2pt}%---------------------------------------------------- \begin{multicols}{2} \Sect{Interacting with the process} %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For use in a process buffers ({\small inferior-ess-mode}): \begin{tabI} \texttt{\RET } & Send a command\\ \texttt{C-c \RET} & Copy old input\\ \texttt{\TAB}& Complete object or file name.\\ & Also bound to \texttt{M-\TAB}, \texttt{M-C-i}.\\ \texttt{C-c C-c }& Break \\ \texttt{C-g} & interrupt Emacs' waiting for S\\ %% SfS-only (others need C-u C-a for comint-bol ! \texttt{C-a} / \texttt{C-e} & Beginning / End of command \\ \texttt{C-c C-u }& Delete this command \\ \texttt{C-c C-w }& Delete last word \\ % \texttt{M-C-r }& String search \texttt{C-c C-r }& Top of last output \\ \texttt{C-c C-o }& Delete last output \end{tabI} \begin{tabTit}{Command history (part of Menu `\texttt{In/Out}')} \texttt{M-p }& Previous command \\ \texttt{M-n }& Next \hspace{1.4em} command \\ \texttt{C-c C-l}& List command history (\& choose!)\\ %% MM has these on the arrow keys: \texttt{C-c M-r}& Previous similar command \\ \texttt{C-c M-s}& Next \hspace{1.4em} similar command \\ %% MM-only: %%- \texttt{$\uparrow$ / \Ecmd{up}} %%- & Previous similar command \\ %%- \texttt{\hbox{$\downarrow$ / \sEcmd{down}}} %%- & Next \hspace{1.4em} similar command \\ \end{tabTit} %% == ESS-transcript mode ?? --- %\begin{tabTit}{Viewing the transcript} % \texttt{M-P }& Move to last command \\ % \texttt{M-N }& Move to next command \\ % \texttt{C-c C-b }& String search and move \\ % \texttt{C-c C-v }& Prompt at bottom of screen \\ %\end{tabTit} \begin{tabTit}{Others} \texttt{C-c C-v }& Help for object \\ \texttt{C-c M-l }& \textbf{L}oad source file \\%{\small ($+$ error check!)} \texttt{C-c C-x }& List objects \\ \texttt{C-c C-s }& Display \texttt{\textbf{s}earch} list \\ % \texttt{C-c C-a }& \textbf{A}ttach a directory \\ % \texttt{C-c C-d }& Edit an object {\small (\textbf{d}ump to file)}\\ % \texttt{C-c ` }& Jump to error after \texttt{C-c C-l}\\ % &\hspace{-1.5cm}In tracebug works for all errors (aka \texttt{C-x `})\\ % \texttt{C-c C-t }& Toggle Tek mode \\ \texttt{C-c C-q }& Quit from S \\ \texttt{C-c C-z }& Switch to most recent script buffer % \texttt{C-c C-z }& Kill the S process \end{tabTit}\\[0.5cm] \Sect{Inside ESS Transcripts (I + O)} %% ~~~~~~~~~~~~~~~~ Inside (\texttt{*.Rout} files): \begin{tabI} \texttt{\RET} & Send and Move \\ \texttt{C-c C-n}& Next \hspace{1.4em} prompt \\ \texttt{C-c C-p}& Previous prompt \\ \texttt{C-c C-w}& Clean Region ($\mapsto$ input only) \end{tabI}\\[0.5cm] \Sect{Sweave} \begin{tabI} \texttt{M-n s} & Sweave the file\\ \texttt{M-n l} & Run latex\\ \texttt{M-n p} & Postscript file\\ \texttt{M-n P} & PDF file\\ \end{tabI} \columnbreak %%%%%%%%%%================================================================ \Sect{Editing source files} %% ~~~~~~~~~~~~~~~~ For use in \texttt{ess-mode} edit buffers, (\texttt{*.R} files): \begin{tabI} \texttt{\TAB} & Indent this line \\ \texttt{M-\TAB} & Complete filename/object\\ \texttt{M-C-/} & Indent region\\ \texttt{M-C-q} & Indent this expression (use at `\texttt{\{}')\\ % \texttt{C-c\TAB}& Complete S object name \\ % \texttt{M-\TAB} & Complete file- / path- name \\ \texttt{M-C-a} & Beginning of function \\ \texttt{M-C-e} & End of function \\ \texttt{M-C-h} & Mark this function\\ \texttt{\scriptsize C-u C-u} \texttt{C-y}& Yank striped commands\\ \end{tabI} \begin{tabTit}{Evaluation commands (Prefix \texttt{C-u}: \emph{in/visibly})} \texttt{M-C-x} & Evaluate region or function or para \\ \texttt{C-c C-c} & Evaluate region or para.\ or function \&\emph{ step}\\ \texttt{C-\RET} & Evaluate region or line \&\emph{ step} \\ \texttt{C-c C-l} & Load this buffer's source file\\ \texttt{C-c C-j} & Evaluate this line \\ \texttt{C-c M-j} & Evaluate this line and go \\ \texttt{C-c C-f} & Evaluate this function \\ \texttt{C-c M-f} & Evaluate this function and go \\ \texttt{C-c C-p} & Evaluate this paragraph and step \\ \texttt{C-c C-r} & Evaluate this region \\ \texttt{C-c M-r} & Evaluate this region and go \\ \texttt{C-c C-b} & Evaluate this buffer \\ \texttt{C-c M-b} & Evaluate this buffer and go \\ \end{tabTit} \begin{tabTit}{Others} %%-SfS-deleted: \texttt{M-\TAB} & Complete S object name \\ \texttt{C-c C-v }& Help for object \\ % \texttt{C-c h }& Handy commands \\ % \texttt{C-c C-d }& ``\texttt{dump}'' -- Edit another object \\ %%\texttt{C-c C-y} & Return to S process \\ \texttt{C-c C-z} & Switch to process buffer \end{tabTit}\\[0.5cm] %% Is it worth putting here for one line? Autoyas is a much more general snippet %% generator. % \begin{tabTit}{At SfS, or activated by \texttt{M-x ess-add-MM-keys}}%-SfS-added % \texttt{C-c f} & insert function() definition outline%-SfS-added % \end{tabTit}\\[-1mm]%\\[0.5cm] %-SfS-added \Sect{General Commands} \textbf{ess-doc-map} (\textbf{C-c C-d}): \begin{tabI} \texttt{C-a, a} & \textbf{A}propos \\ \texttt{C-d, d} & \textbf{D}oc on object\\ \texttt{C-e, e} & D\textbf{e}scribe object at point (\texttt{C-e} or \texttt{e} to cycle) \\ \texttt{C-i, i} & \textbf{I}ndex\\ \texttt{C-v, v} & \textbf{V}ignettes \\ \texttt{C-o, o} & Dem\textbf{o}s\\ \texttt{C-w, w} & \textbf{W}eb search (dialect dependent) \\ \end{tabI} \textbf{\underline{ess-extra-map}} (\textbf{C-c C-e}): \begin{tabI} \texttt{C-d, d} & Dump object into edit buffer \\ \texttt{C-e, e} & Evaluate expression (\texttt{C-u} in temp buf) \\ \texttt{C-i, i} & Install package (in R) or library \\ \texttt{C-l, l} & Load package (in R) or library \\ \texttt{C-s, s} & Set indentation style \\ \texttt{C-t, t} & Build tags for directory \\ \end{tabI} %% ~~~~~~~~~~~~~~~~~~ \end{multicols} \pagebreak \begin{multicols}{2} \Sect{Reading help files} %% ~~~~~~~~~~~~~~~~~~ For use in `\texttt{*help[R]($\ldots$)*}' help buffers: \begin{tabI} \texttt{SPC} & Next page \\ \texttt{b, DEL} & Previous page (`\textbf{b}ack')\\ \texttt{n} & \textbf{N}ext section \\ \texttt{p} & \textbf{P}revious section \\ \texttt{s} & \textbf{S}kip (`jump') to a named section \\ \texttt{s e} & e.g., \textbf{s}kip to ``\texttt{\textbf{E}xamples:}'' \\ \texttt{l} & \underline{Evaluate one `Example' \textbf{l}ine} \\ \texttt{r} & Evaluate current \textbf{r}egion \\ \texttt{q} & \textbf{Q}uit window \\ \texttt{k} & \textbf{K}ill this buffer\\ \texttt{x} & Kill this buffer and return (`e\textbf{x}it)\\ \texttt{h} &\textbf{H}elp on another object \rule{0pt}{3ex}\\ \texttt{?} & Help for this mode \\ \texttt{a} & Display \textbf{a}propos\\ \texttt{i} & Display \textbf{i}ndex\\ \texttt{v} & Display \textbf{v}ignettes\\ \texttt{w} & Display this help in \textbf{w}eb bro\textbf{w}ser\\ \end{tabI}\\[0.5cm] \Sect{ESS tracebug} %% ~~~~~~~~~~~~~~~~ Commands in \textbf{\underline{ess-dev-map}} (\textbf{C-c C-t}): \begin{tabular}{p{20mm}l} \texttt{?} & Show key help \\ \texttt{C-b, b}& Set BP (repeat to cycle)\\ \texttt{C-k, k}& Kill BP\\ \texttt{C-n, n}& Goto next BP\\ \texttt{C-p, p}& Goto previous BP\\ \texttt{`} &Show R Traceback (also on \texttt{C-c `}\\ \texttt{\~} &Show R call stack (also on \texttt{C-c ~}\\ \texttt{C-e, e}& Toggle error action (cycle)\\ \texttt{C-d, d}& Flag for debugging\\ \texttt{C-u, u}& Un-flag debugged objects\\ \texttt{C-w, w} & Watch window\\ \texttt{0..9, q}& Recover commands\\ \end{tabular} Commands in \textbf{\underline{ess-debug-mode-map}}\\ (active during debugging): \begin{tabular}{p{20mm}l} \texttt{M-C}& Continue \\ \texttt{M-N}& Next line\\ \texttt{M-Q}& Quit\\ \texttt{M-U}& Up frame\\ \texttt{C-M-S-c }& Continue Multiple\\ \texttt{C-M-S-n }& Next Multiple\\ \end{tabular} \underline{\textbf{Others}} \begin{tabular}{p{20mm}l} \texttt{\small{C-x `, M-g n}} & `next-error' (emacs)\\ \texttt{M-g p} & `previous-error'(emacs)\\ \end{tabular} \columnbreak %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \Sect{ESS developer} %% ~~~~~~~~~~~~~~~~ Evaluate your code into the package (in \textbf{\underline{ess-dev-map}}: \textbf{C-c C-t}): \begin{tabI} \texttt{C-t, t} & Toggle developer on/off\\ \texttt{C-a, a} & Add package to the dev list\\ \texttt{C-r, r} & Remove package from dev list\\ \end{tabI} \end{multicols} \end{document} ess-17.11/doc/refcard/refcard.log0000644005071500004540000001537113202324210013523 00000000000000This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) (preloaded format=pdflatex 2016.8.4) 13 NOV 2017 15:13 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **refcard (./refcard.tex LaTeX2e <2016/03/31> Babel <3.9r> and hyphenation patterns for 83 language(s) loaded. (/hg/s/linux/9/app/teTeX/08.16/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/hg/s/linux/9/app/teTeX/08.16/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) ) \c@part=\count79 \c@section=\count80 \c@subsection=\count81 \c@subsubsection=\count82 \c@paragraph=\count83 \c@subparagraph=\count84 \c@figure=\count85 \c@table=\count86 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (/hg/s/linux/9/app/teTeX/08.16/texmf-dist/tex/latex/tools/multicol.sty Package: multicol 2016/04/07 v1.8p multicolumn formatting (FMi) \c@tracingmulticols=\count87 \mult@box=\box26 \multicol@leftmargin=\dimen103 \c@unbalance=\count88 \c@collectmore=\count89 \doublecol@number=\count90 \multicoltolerance=\count91 \multicolpretolerance=\count92 \full@width=\dimen104 \page@free=\dimen105 \premulticols=\dimen106 \postmulticols=\dimen107 \multicolsep=\skip43 \multicolbaselineskip=\skip44 \partial@page=\box27 \last@line=\box28 \maxbalancingoverflow=\dimen108 \mult@rightbox=\box29 \mult@grightbox=\box30 \mult@gfirstbox=\box31 \mult@firstbox=\box32 \@tempa=\box33 \@tempa=\box34 \@tempa=\box35 \@tempa=\box36 \@tempa=\box37 \@tempa=\box38 \@tempa=\box39 \@tempa=\box40 \@tempa=\box41 \@tempa=\box42 \@tempa=\box43 \@tempa=\box44 \@tempa=\box45 \@tempa=\box46 \@tempa=\box47 \@tempa=\box48 \@tempa=\box49 \c@columnbadness=\count93 \c@finalcolumnbadness=\count94 \last@try=\dimen109 \multicolovershoot=\dimen110 \multicolundershoot=\dimen111 \mult@nat@firstbox=\box50 \colbreak@box=\box51 \mc@col@check@num=\count95 ) (/u/sfs/tex/tex/latex/parskip.sty) (/hg/s/linux/9/app/teTeX/08.16/texmf-dist/tex/latex/tools/verbatim.sty Package: verbatim 2014/10/28 v1.5q LaTeX2e package for verbatim enhancements \every@verbatim=\toks14 \verbatim@line=\toks15 \verbatim@in@stream=\read1 ) (/hg/s/linux/9/app/teTeX/08.16/texmf-dist/tex/latex/preprint/fullpage.sty Package: fullpage 1999/02/23 1.1 (PWD) \FP@margin=\skip45 ) No file refcard.aux. \openout1 = `refcard.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: External font `cmex10' loaded for size (Font) <7> on input line 59. LaTeX Font Info: External font `cmex10' loaded for size (Font) <5> on input line 59. LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10> not available (Font) Font shape `OT1/cmtt/m/n' tried instead on input line 75. Overfull \hbox (9.23132pt too wide) in paragraph at lines 75--88 [] [] Overfull \hbox (11.87013pt too wide) in paragraph at lines 97--111 [] [] Underfull \hbox (badness 10000) in paragraph at lines 97--111 [] Underfull \hbox (badness 10000) in paragraph at lines 118--124 [] LaTeX Font Info: Try loading font information for OMS+cmtt on input line 146 . (/u/sfs/tex/tex/latex/R_latex/omscmtt.fd File: omscmtt.fd ) LaTeX Font Info: Font shape `OMS/cmtt/m/n' in size <10> not available (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 146. Overfull \hbox (6.9257pt too wide) in paragraph at lines 142--154 [][] [] Overfull \hbox (14.05339pt too wide) in paragraph at lines 155--170 []$[]$ [] Overfull \hbox (49.64578pt too wide) in paragraph at lines 155--170 [] [] Underfull \hbox (badness 10000) in paragraph at lines 171--179 [] Overfull \hbox (51.25189pt too wide) in paragraph at lines 192--201 [][] [] Overfull \hbox (28.4812pt too wide) in paragraph at lines 204--213 [][] [] [1 {/hg/s/linux/9/app/teTeX/08.16/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] Overfull \hbox (5.63393pt too wide) in paragraph at lines 229--248 [][] [] Underfull \hbox (badness 10000) in paragraph at lines 229--248 [] Overfull \hbox (14.11595pt too wide) in paragraph at lines 253--267 [][] [] Underfull \hbox (badness 6961) in paragraph at lines 293--295 []\OT1/cmr/m/n/10 Evaluate your code into the pack-age (in [] [2] (./refcard.aux) ) Here is how much of TeX's memory you used: 427 strings out of 493014 5664 string characters out of 6130583 97445 words of memory out of 5000000 4029 multiletter control sequences out of 15000+600000 6660 words of font info for 25 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 23i,12n,17p,144b,288s stack positions out of 5000i,500n,10000p,200000b,80000s Output written on refcard.pdf (2 pages, 164293 bytes). PDF statistics: 71 PDF objects out of 1000 (max. 8388607) 51 compressed objects within 1 object stream 0 named destinations out of 1000 (max. 500000) 1 words of extra memory for PDF output out of 10000 (max. 10000000) ess-17.11/doc/refcard/refcard.aux0000644005071500004540000000001013202324210013517 00000000000000\relax ess-17.11/doc/refcard/refcard.pdf0000644005071500004540000050070513202324210013513 00000000000000%PDF-1.5 %ÐÔÅØ 3 0 obj << /Length 2962 /Filter /FlateDecode >> stream xÚÅ[[sÛÆ~ׯ`^b°5WØ °‹¾Å²Ü:׉¬i§ãx&¹’“ €²”_ß³܈APNû"‚äòÜö\¿]½º>;ƒƒæˆà€Í®ogÄLjøÁLø1Ag׫ÙGïòÇù§ëam8ÃEA@ÔÚ€!Í|³æ£]ÁÛ+("ð`W\ºh$ˆ¨Vlâeá"C"DiµÈ) GŒ×Œ¶óឌ?;‰Q‚kje\&E™ÔŒ»RÄÃzí'»¤c°  á!B!¼ê¥WòVæ2]Êù‚úÄ»ˆó•yºÍrõ€A ý>NíW–¸“Da¨i³1¦ sb ï”r‘·ŠK9Çžú-£–(<¨‚âa‚üh ÍpÆP$0Õ¦ Pr "Âk¹-åfNï~x¨9=ð¢(œ]^Ÿ}9Sfðgxvæì‚£Ùrsöñ“?[Áç?Î|p1ûªWmÀB…<®gÎ~éüá(šq c «CúÌ’x¥µ³•<@Tp I!‘Qæm:§Ø+e/Ë$½…xà}MÊ{óTÞKó°Í3xÀÞRE_IÂb>AÌ®¡à+2o(­¥˜EàjËo•03nô{3ÔÓûM©·+¤yHRõʼؼÕÊa”ÓŸÜì~õ1•yaÖýê¾Ãá0 ‘/êPKRðâ$Ë@f±1$WÒü®-c(À™ÂêW@ÿÍg­U:R(U9_H­>÷f%ñ[+)œUärY:ˆA²†eÒ—‰a0kY>Hg`ˆØ`™m6*ö å¨-fHPÄH©Íüþb±tA|‘:=üYšÖ² .²í¶áɨ‘­W•lw.ê]mÂ#%-ç!÷â·´³Ãv¢FØÍv-K뤤— ô~—ËÒ~WÞˆÙÚ.JãDŠ,ÐèlÁë"³¾¬1ÛU[ZfŽm !7„µÕÞ-\ºø¨1üM‚#mBؤcÛ—.a!ê¢FÖ‹…Ë B„ƒÚÙËsq Èç}×]$h|¸ºÆ=,ÕW9TÍãcânŒ¤%Ø)HÆùnk÷üRùö^˜÷_ÕŠ8±¹šVÅ ¼âÃñ‚Ä}A hBùª9wЂdä× .޼FU±¬7KÒ´–óÜHyYyavk^OÈ,v{vcæ|-›`*ï“bZ* { ¿Na¸Žõ¶•­mËòSÔÌǸ^ë·íšØ—6çíÊ&×Maœ®n›'dü6O¡M«jš¨jÚ…Ý‘E`ŸÊ,WùZ˜º»óÒ|¥uƒOßA+'¡o!ÞÎ|ð›C;Õ(ø¤vØ·éù{§DCST/{¡ª±³‰ Sz°µ!`HŸ‘nsÒŠsm¿˜N«üµ3ôϹ|H²]qRļ[¤côÿ)ÁÄćŒ}z8®Ç¸ü”e£ò–8µM9¸i³ï°@íû÷v톓ûLÏ(Y!¿«6h’tïÆ£¨kã"Ù$ë8?¹ù±\‹ –o±ÜÛãÁ"‚2ï¡OÏ §ß2¨ìÊò¿…ñD5í£nË‚ (û;ÿ0¦å?äz»W­ts˜æfº]×Ãì9›C&$¢º!Èb[‡Šl—ë¹³i¬\òDH„Ñ ï?ïû­®®8!ÊF=êuRl×±éyûä)´N´Îv…Œóå½£3ÄýºC[+Ù]í“ké`¹ü2&ê/»Äå6Ï6“»˜šÑcŒ>À@»T&¹7LJÛo²jWr¹„Š)ƾ/–yRµ`Õ,è /Ê¡~€­¬¼×ÊÀpOŠ0Ç#S3Ä ¥£Ã= "~EUôŠdexƒuÀÃõ‰ZE} Ý«è8„ˆUÀ»øóO ãªXIîCWë$ŽÚh?j‡ ÜãøgàÚœºqmc~\Ÿ·!î£õºXœ$¢hÈ„¹TpÃ]2ÇP‹§pú2•S³Yòq›ƒÏ۶´¤6^˜Û忹lKƒ6ruëðu>Ùƒ¬öu"¾êvI·SJÅcJíA·SdÞíì—.Ëdš å»=LŸÝtF÷cŒÞÅùçýmê)–‡ôËUÜðRÐó"€ž¨Æ ;ò‘‘ hò'Gt@å"uøüG¥Ô8µ¢%j}d#W0¨8O½|˜‡àbë]\ﬡ¡‘Tå‹Ðe«Htµ¦3Ò„w­f‡5 zÔ^h)¡Ò¤Ç$=HŠäfýä ÍÏXûD´_«jpu€b T6q W¤Ð‰ç0ŸàQãB£¾ú0‡„¥mkC9¯G‡¦.ÞVÞk°.ûé6Îãcýùˆc¨‰2)î¨+P[Lê}o7¦›çU£V7xE)·ÎT£æð¨w’öü t✠ÕGbš}tqÕß: Ã]Ø„ì!0Wm ’×{ùS L6)ªêƒ^ûåèX2ìU¿O÷ªJ"z\#ö`Ûçóì¢wÙ Šß>GˆÛ‰e©¥ü·áÛ6=ÍÛ碲È]oï÷$)JÝbmO'Ž<6’§oÇ·à:Ùû`ØÍsÄh#ÓÕÿ6|Ý8p^EŸWU5žùq=ëЪªñ4Zœ}j=óÔjx¯ÿã8tN1|?mØ„4{AÁ:5 Ðè…Ñ\°`Õ#b¡Ðä j,ÿ.S™Çkˆ\´úÛ=DDŸÎãér8ì$Ô}Ó öÐÊt/ TÄ ÁTèJ l¬ÔNo¹ØÄ®ô ’ÑÖBcti·Áí5ªS¿X¬íMMu] ì6#>4oëMÀø÷Ò8d;  ø~s£®ÊM˧åZBàyŒ°ýŒ˜Xs'£.ðÖ~@(Wß§«Ìœëä··Í–ïÃ(ß¹´ÍåÕä.•e)‡Ü¾w(•YÎÙ¨ƒÉC8‰Š5nïð1Þ  N¡ì?ë‰õÕŠõuÔ ÿv¸A~Ë_nl#¨îè;; ìµJâuíà+iÑ9k¼§Û9ž»Ð†Êµò±Ìã*Ѻ‹ƒ>N !…¸FEÑМ&Õ•—‰›9·ë†¤€}ŒŽHÜ*ZÕ8-ÏÃÌyÀ‰v›í@z±ù$³ek?¾­9:gö;I4ê`QDBÒC¡†ÓZbé•Òè¯FçÛù‚so(Aa®Òso^ßKP‡àߢŒ×ëj6ÒŽÿY«{׺‰Pý»Á•cu¸Éãüéø~ýòðÁ¢IøŸÈU¼<|ÒÚ4¹²vÅ*Ä VV”úêÒH£´œËQX{—T÷ÿËø®Â+WIQ’UZù/涤 endstream endobj 21 0 obj << /Length 1934 /Filter /FlateDecode >> stream xÚ­YMsÛ6½ûWhz‰Ô Qâ›È¥Ó¸N;I:¶3=$™1%!2kŠTHÊv.ýí]€ %ÊH%DÉäîÛÅâí>ðË …ð‡G’Œ"ÌQÈøh¶<ùð)Íá÷×£Qì]ËÆQ¬à:]¼;ù²õ<ÂJ¤Šaø ¸[ 2gâåõÉ/¯°ÓHqNFןG’#ÉQRÄ9]ÏGÆ—:ž'ÙbPÉÇ·:]ÕWCÌR]N>]¿>9»Þƒ#Š0þ@Û1ÙÇCFŽÉ‰ ()¤601D¨ åÕ$¢ã¼€(¯K]_$™ùdã dDmY` ±È ²ÏÿlÂÿpùécÈCw3Þ¾Y¢PÒææ“ Yøxjà ÒÞFñÏõ]Û1à1Ñ"xVCvË §kXª‹Òç À˜ !àS *j W§O‚”Œ'oõcUûYÅ í³ëîlé8ÃÓç“€>þýì¯>…¾Oòu¹åÄcòêVl'V†Hª6Sy7ÿgïž™„z“ÂB„)sè]id·;Yyê6‚+Ùü¿MZ©gU’g>×<Â>ïx^õz¾xêY¢ˆ’æÿlò"¨åŽó²×ùUO¶ï’UíØ.Þ¿ëåªN¼ý­Êë…ë¯Y¼Ôs¶Åx?T¡et«­/ÝW]-ÐsO\£¶Û­|j†!nÙ¤WÃG¨TÊÀjûÔÙc¼\-¾ðXï°ÃOÞÊ„°p^'ì´/Þ³û ã8]Ç•ÛGyæ¨íÆáyæIâL4V1£pŸì®Ô—ÞÍôÎÇ!"l9d8yH²ynbxØC#<Ú¡‘»^ço¼¶énIšºŠ¿Mʦ»LðØ6³]‹}”ÆUËcߪ½ñúª;Yý{œ9¢(tµ.²-ŠÑ¾Z&0k´Yô¹‡Y¢-õ¤ÚÛ”DD1Û0YÍmofÿìk ©ã’Üq–W·M¨ùˆÿ6Ú3~íKðŸ­ËÏõ¼ÃÚLÓñ JkÞßÚ»¸ÏÝïI¹JcS¯_=É¢ýM·ò㈋–BWE¾²øòÒ»D!дTÝÙ#ù‘“&ÌæúÑÌLâ;ì}ÿ#‘ùŒ!n {‘éªÒ{òÆÁ¢‹îát®Š€š-{ÛVY⛟¢ñ¶á=øöÛôc=­-M‹Ü×»%’!é±ÅÚÞ®‹§½ ć,´©jÇí=2‹Sèx‡eÉ`™ÅauISÂgWWµ°ªŠx¦§ë…§ÛrD‚|†nàq ÃÕð,ø„7š"¢5øÓ|¹Æ.ƒ€†¹©T]–Á\ßËx剓r{/ÇQ*`¦“d?P†(4˶v#ߺ{ E²-¡Ó`Á€\< *HÐÇåæ—_4g†Laá¤ØÏÝ0°ÍÄ}ë:¿MæÝ„ȱþº¥û|¤]èpâiÐ(²i¯GíÆŽ—!VhCÃà;®ÜÖÏë›f_g©Þ×A;HxƒäÎ!¹ëC² ^^ 7Ÿ9óYŸù?ò&ˆÌÉ5v”£•s´îhµ¥ÎŽqvs\™\Öö¯Í G "ج©Ûù)N˼F‡—zfß[juë;kZ˜-$ÉyÔè±ïjrÉÀLÜ”@Z7< ó ŽŸ›ñÓƒ­™R¼ }·ÍÎÔØIäùÚPD}¨ëjËÖ¾FÆ$€‘‚ÊÚìypÚ—æÓ¼Vá‰ýXë¡Ky¼í3½9¡LݹĎx¼ë3üÎ(ðÁ8ß÷n«F„ñRß:çÁUÍhG¥×®åù:­’Uz¤³lx»:ÕßÝ5nØúÛÝÒ;ŽÆ“‡ªR¤°è;áV\ ¶ufDˆB’´!=ºžåá¨öœz¨}c )AÓ=Sw2ÕžÜe¿äæÐrï9šÚ%ÛØAˆû ü6Ÿ7oÇÜl ˜{Q¶y'aK¢AèúaY ‡S88EœK½Ü™ û\äË$ÖB2…ö?h€>› endstream endobj 39 0 obj << /Length1 2048 /Length2 15994 /Length3 0 /Length 17229 /Filter /FlateDecode >> stream xÚŒ÷täÛÒÀ ÛN:œØ¶mO¬Žms&¶msb['Ml{b¿9¸÷œû|ßZï»z­îÿ¯ªvaïªÝÝäÄŠ*tB&vF@q;[g:&zFn€ˆœ°&#€‘‘…ž‘‘–œ\ÕÂÙø9,¹:ÐÑÉÂΖû_"Ž@C癨¡ó‡¡œ-@ÚÅÀÄ`bçfâàfd032rýÇÐΑ jèja£HÛÙ`ÉEìì=-ÌÌ?âüç@iL`âââ ýs9@Èèhalh 3t6Ú|D46´¨Ø[=þÇ%¯¹³³=7ƒ››½¡½£?-ÀÍÂÙ  t:ºM” 7´þ]=,9@ÕÜÂé/…Š©³›¡#ð!°¶0Ú:},q±5:>¢T¤d ö@Û¿Œeÿ2 ü½9&z¦ÿºû{õŽ,lÿ\lhllgcohëaak0µ°ÄeéÝi†¶&Z;Ù}¬7t5´°64ú0ø3uC€¸Àð£Â¿ës2v´°wv¢w²°þ£F†?Ü|l³˜­‰ˆ ÐÖÙ öüD-ÆûîÁð÷áZÙÚ¹Ùzý‡L-lMLÿ(ÃÄÅžAÍÖÂÁ(%ú·Í‡ö™ÐÀÆÈÈÈÁÎ :€îÆæ Põ°þ©dúCüQƒ—½=Àô£  …)ðãÖËÉÐpvtúxý[ñ¿ËÄ0±0vÍ,laÿñþ!šþÅçïháÐfüh?&ã¯ÿ>é~t˜‰­µÇ?æ1ÃEEyiš¿Kþ¯RXØÎàEÇÆ cfc01±³8>|þ×¢¡Åßyük­”­©€ë¯t?öé?)»þÝ”à}ÉÛ}t.@ùO£ë0²1¼1ýn÷?—üÿëò?¼ü¿6úÿÍHÜÅÚúO=å_ÿ?zC k¿->:×Åùc äì>fÁöÿšjÿ]a;k“ÿ«“r6ü˜![3ëÿn£…“¸…;ÐDÑÂÙØü¯vùK®öÇ Y[Øíœ,þ¸ZtLŒŒÿG÷1]ÆVׇÓGOþ©~ Ïÿ†³5¶3ùcʘ?NØÐÑÑÐöã?ˆ àÅô1Ž&@÷?»À@okçü±ðQœÀÔÎöeg0ý!ú‹8 "ÿ'€Aôâ0ˆý—8˜ ’ÿ €Aêúð)ó±dÿ¡rÿÐGùè#‚‰“À ø1”þ¡x*ÿÐGõè#‚Æ‰ëƒ ÿ¡xFÿÐG<ãÿÛ‡ÎØÎúã þ#ùã<Lþ…9ÿ…[`úþAÿÒ~¤hö/d0˜ÿY?vÈÜÃÞøï`²¯ÿHÇú_ø‘«Í?ø1à ÿZûq¥0Øý ?r±ÿ'؇­ýÇ=ok 4uþGÊô·ô¯ýïž|쥃‹3ðŒY¸þ–þ¯1ÓGUŽÿœþ…¾þmüq.ÿÂ]ÿ…!Üþµ›I»ÿ ?²õøÿ§û]?*pþó~úÿðŸ_8@ ;ÐviÁΘç«eÝ׎‡ïBxnt{“|³ä{©Tt^KŽ.OˆPIT5™ŽwBI#}È«;b”·‚ËD¯^'­ P!m JíÏÞ/úqÊ3{í°¿¦1‡¦ O„ê `ðéT÷½_¼Õ¬À[A»¥És\8óÑÜ$ÜëËWƃö”ökØeà^ÊÒE©Eê”Ì‘çeÍc“@:Ó@S£^º#ÍÝÞÍ¢æL½IÇÑÀúœF±yim2G?Î{®Uª2;õàáha€ß¢ŽÏPx &Kc-z•Gnð-fs„ÅüXþ:?/£ŽCâ«ˆíøµŒŽ/Ã_¶¬'ÇÍ8ÃÑZÝxJ@ñ™¨Úëy©„iB5éH©~¾…ßã+)J¼&¨ Mg/aÏé¹Z7µw| 67SÔÁ¤ áÚvW–/ûË#$C…ጄ,D’)È:é²¼æÏ •<1姨†B/íÁ÷<úâ{:KpËïbguî8wN,ÅÉg#ņÄ‹³×¢îXóíÆïè·AÓÈú]\¡;ÓÎÌo, MW_i¥˜±„Ï*²8H§n0ΣÛ8á«iL+=™hžãÏ Î¾fu• ¬(£ž²ž•#$£àtgÃéÓìýô§'ð2v9ϳ¹íޏ›Õp] E´´mÒô~6ήîû-°¦@7Zß°þˆŸÇÜs–åõ¥ ÒHÿVé&kÈe†ªÝë`¾¥äŸ>™‹ÙcéZ=CõíBשÖA™äuºføéK,𼇠9éñBKÆOQò2ÎQ<ƒ÷^L:¿î9os†^Þ÷¤Ì_}ö»´¬4þ ´ålÃ6¬óÛW™¥|¢N Ž tšì¥’C4¯z¼”ÐÂ7ÜãG.Ã(ýõÏÇâ¢Í\¤êíE‚®Vá#Î-ôbøÞžÝZù<Ùòµð 2D œO8$—Ð3Èe’BË] ü$ÙYXΧÉ#n<Ô3{¡ÖlpÝpââ»OLßT‰ßÁ ™©Oñ ç& ð"9¹5cÛ~[«UàBµ|•Ê¿Ðv«ÃÝ7†¡Ð:0(Á™)ËéZÿïd" /NùŒÙBí´ˆðs:@Õ„kNØp³09ðÛ²vô¸aY²YSû‹)”Îaã Ç¡¡ò” eú‹,–% é±Û:s;i»í˜ã™wÄûŒ*ê™,Tb‚î´W…f‰Áûë ½D’ZSåâ³ð±ÙjƒÛµ‘Uø÷l8¸ùÊSKžhÒXköÓ ‚>3°ý¯Ç[êÇõó³œ84Z¥]DæâöüçJŠÏ¥¶U8:uºJ_ƒ¸·×ZûØ­ql¸‚mt;.¯hO–K‹t¾±ãjÓ¨‰…“µDÊå)œR"LÕÑ‹¾lÉÖl—cëÜRo >x²|.)¦˜Nb/þzÉœ² ÞMAC™t“nåoP‡-ºñÆP÷,ÉŠu$>:Æ*Ù¾ÑÙàNïH¸ÿ){{¾VG2À÷ø šþ]ÙX|Ãô3š1y’/%:ñ2¬´ë¢"’Oê0—ÂÛþô¦×N.{0jõ¤ÓdŠÜ×4˜ %º~ûÀƒÏaáiru (­(ÉÎZÏŸt ü¼Ù’äJZØHê©»jº N—y¿GN&‰FGÖÓ¶Ë^›ZÒ$ÆŽvuvÞäŒd‘¸3öÝ›“‚Wl¸h .ûl.‘,ÁŽ˜HʼnQÃÐ,»÷u÷]é{Ý[¡1Ê`.â­Äz¿Xç×û˜„ÐÓ¥áê‡oEb“ üŠùˆÊdv0E,mk¤H<Ð5CðàWE›¼(:òBûo­ø-²:ú–N‘AÐÑÜ¿Gžµºô àÏÔÆÿЦ]¨·:eyö$½ì #øµ#HÎÂçñ[— ]L5zªˆH6›€×ÊF•²ÊJwì!Ò[ÕÖÌýam6>Úi¯û…já“ãÒ-çç‹6þMÉœÜvÐh¨¿ÏMT(ްmÛM?£ës$FjÀŠòÁµ|3DR`#Ôè?!ˆEˆ´o±ä@ø,||Ý&”l‹¡ÅU?ˆ¼h»O¸WÛö‰86’ªZ´Ñ#ßXc”i#ǃVž "ôÃ8[rÀA³ Ê­yl{ݧÝкlÜRFW¶à¿Þ>)º8]q UŸ×2·ªµKmª†ØDÎäüD –öé₲{ˆ L^ Wɵ„‹̳ý=ŒuñÞ& `ËIE šu¼a¤;¼” õÎ{1¡Fi¶wûëq²Ð@9%¢õµ{ÅÓˆ‚qnì–[Uý»WG ̃¾äEl„^ˆvÍZxx{!%šà…5Rþê`·ç)³•Ÿ¿›˜S¢”0M—þ™Ñcf㬠;'šôVZÀ½±ŠÇ¡óü Õù’­z‡%*‘(º²çWÛ'¬R¤¾omåô­Z~¶©(´¯åYŽÍ·ðîÈæÕæÄ;Vêc*?ª9B¤àTͪ&Ü¢¯ÙŒÜ¦¬†×0qR“zà»Ð}šMC–óž…H3‘~ÐùR®ŒX!ááÔÌjB‰¼!³ƒßâE‚iý¨еúQÍ©›özq)tÁÇ7õàx PßÕó»£Þ³q¿¥ÞWâÿæÓýNüø–Û/Ü”mÄé?Ý:£‰°&Wö½³!² õWÉ6ª¬}ôfjÕ°ãE|®ïîÓu:\ßbL:/Ÿ mÞ,{Ñži­býd©÷eµU‡2gGã !¿\(dhS- ×ýµ>3Kþg>¾`ûwsÔÃ,ƒmañ®uZYò95üÌŽC´a 5Ùw"[;÷-òmßµ:Y—v¾voäë·TS5Ö·ˆ¨ºl%HËÖëø§¯õqáfí!Df)vë«Ääj¸è=æaEeí«”sYæÛÃÖÅœúîÚ üZÀVÃfZ§¶öthü¤¾Ž@´†óïo <­Qð$ûÊøU6k}Õ9TÕweèbÑ:Ž?4˜à{ggâ틦Ñ@.©0¥ÿž†öûÄá\œô,H°Ž¿y4¸ÅÒ&6ùˆ\Åûn+ÅtÐâ½Z’Ñ,ý¨”±ŠBPbà Ë• *·{ ¾2R¥:GªAÊ%‰ ®çot;Zs}®ßò&âg=N œuXµx²i0ÜÖq„‰âBªèßÔâ}t¥)…¬‘ÙmOš¤)%Xá‹AOÆôˆ wù¹4”CØ­Všä³¤#µ‡êH”5ú4Š%m†ŸÕ³Å½¿"*€[6 ˆ‡¢Ìø‹ÒKŸ|JÀ¥© oÀ°òÔYêÅeP͹‰±=°,Ž*J!8î­?ÿF?R™ïjx¼©²—ÂáF>nž# /,lpîlUè#Ö·‡Ôè¯*©Œ04A"žv|¦‰ü=Ä{ÕcêÂÅwO żªەUj¶0ãUF£m2‹óª4ѯ-ôeþˋޯ8º3ù%JŸT¸ùúë8 ‹ ß_ñø@Ý‚Jð+p}Ç3µÀY+ççòÈüî<ëˆ#°%¾¡™Æ ¹’‡S4„ÑãäÂ6GMtÓð˜Ù*é̯ÁÔWƒb‰Ãv„<Ý¡óíS û(ÑmìÇÚ¥ð²È çÈv-½xͪð¿W¡ËòÄÃëøù:¯~q^6…“Åfç˜ìEP2ÍØ=$:»h7Ì*MŒ?‹© ãcŽé­Ç:¡¹‰½_?TÖ,²·Uh,FÁ£)q œÕó“»[Sà•À.ÜT!Ÿû ›oómŠ7äo0ë´êÒîúÍÖ :)K­Å¨ÿp¼,E-ÿ2(„«µW o±ð‹xtöц¾Ç4â}Äãã{ÌüÉå42mÛˆ8Ü4SîÆÌºŽ¼ø­Ç„Áè\ÔW›ªæÊŒµ$åðuM‚„Á^>¨)‰`‰§ªÃ9a4…4Ûþðþý±ÏÇM.…Ä ¦hªÒ¿€‘Þ¨,eÇ’Xk'Z7¢p!ðîÍÓcÁzŽêý•¤°ry+“‡6µÔ³¦fc÷3íz‰¹Ä,ŇÊ?kçÀ3a“‡¥öþâv嫸#L®]ßå`rYöî¡„,’Ǩê2Ço^±•‹í·‡0 _‘†üG›/8×|Àzò'ø}Fþ÷bž ´î˜æf²Ý+½I°\~Ú/™ôâÏ«‰… é9ä ‰ýXmè–]´ ç˜j“*•åŒHÇix‘©*Uf]:;-}Ïái'k3ŸhÌ9éCЉGJâÞY} hÇGnòR/LDÆòxîN%º¾ø j‘ 5Äcç•Õ_üD:ˆµò#u+˖þùËü$ó^Õ¨J‹˜½aP”¯‡Ô›Nb¡f”¹Ý 8x]j¦ò™¯–>’3#ùIÆöÄy¥ßeV!âÄ,ÒÈA+“•ƒ4Ÿ-=Ù>9E•»Ÿʺÿ„¸ÊD Úg×V‘ÜÚŒ…!E¤iœ¥xÿË7¬™ Ppmø;pW¯hõc„`6‘Ê’@¡xÙ0`ˆ gçñ¥—[ñ“‚ m#%ìú`¸‚<¿›—×m»”ÏJ q|åÍR°RÑßêÓµ@üí4ØÉ‡Zóµÿ—L±eIÚµ±½®Ÿo'oàNlo*KSeësVH y(‡üä%™§o¬^_o8¿l¿¬ü×½GØI}/Nð)4Àp‘ rŠHí…J”^`bd«#«Æ”Uù޹ü"zF³µuÚ”I_ÙZkÜ…ÊakÓ ð„v‡x Íb¾£rº‘q ˆ±‰"::ïIÅ ={:@¾Ò·«¤Ë;g70n:á»`šÁçÙÙŒ.=PQ)J¬µÒ5/#Š7òÓ¸÷þ˜r7_{8›>ëhZò¨E3tä[™tÌm¸"ÇC|éaŒ2M‹±ÚVªê(e6QÓ‹˜ŒžÉ yCÉï7•z™Áò o‡·y‰Wœ_OÙd›êa3òy]¿Þ¬m~²;0ëHûm¦D¶­‚LtŸ’„ ²P ÀæÂÊsJsÔ}šÛbâ(Û[ið¤ãÁÞxÀF1°#w"DQ  ÇÄòèÅ -×ÔH‘S_úî#R6ñH41–eÖ}XfJAûCç×ÂÅõ&¯ÃÀ©ÿJƒf>F•{¼ÝÔyÿ–„þÛºîË‚ÍeÁ]mû©¼51åìRVò…òóœè|G¶.]èý®âµ)ÕçS×Öð©Š^1iu¿Im®n›"°ÐSÇXDG0â(àéÄ)Oƒ»ÞÏó Uù Ôñ´£Ê8KâcÒŒúŸñ³P‰‹£õ#ÃmÂê”~›»XÚ»R%B¼‚-‡;|ßÙïjÐŽÌ@P"ÉTG%ÊNPóådÙn—@&âd‰®]Âé¢AÙÌô]ŸÀ`e÷íŠÄjZ†ò}¥¨dˆY4¯&Ý:Qá@d•î÷P½î{S'‰ôxwÆC:tÐ%B9B©½ŸAXäFм×êvÖ€…eö7µNhzœ2L©ÏÔf ‰¥Ë•Ç*x^ tmˉƯ®2E08?VªÜ55‡HÁ¤ì¾qDÀE÷Ü­¢ÌoÁ•JosШvµCRRí K6>‘œþpÒ¥H©YÙÖÍ´º>ëSi½ð8]׳|KU^lâ½Øüo‡vdh®èÅÊ0ƒê]õ ØY—) Åˆí³CgS‘D •ÉAÂÒ¦€_¬ÄÞ¿1„ÏÅøÍÛaÒJ„ü©¿nc{Hhéó >§ ‡‡’ʉË(ÊE┦ç[¶ÍÑ‹ûâM˜… qT•“KÄt¼IDýŸ#¶H­¦ÀµuGPÒ¸ºŸ†‰ÇÚ ›4RlýÌ¡Õê ãÉÌœJ[»¹ÊšLënU „?¡ÿâS9nXR£u‹Ñ–Ó%Þ÷7/Ðn)¯ €ŠýÛü|h~j\õ—u³p~®²ûé òªã„)qwÁ"†Û¦-"Ñ2RkàHPèI&]À,ºï“|œCðqÊ'V:NdªÕ¢ ˜AcÔµÒTe•Ö)™Ñ î+Ö‚kôUèdŸ%Þä•ãÑFÞ《šØdDŒý rû) › PLþþ•‘ú1¨.þ]—ƵºB ¡\•óò­Ê¥™>´¾nc.ã·ðêc:‰QÍùÏúC ïxè­^K†x*®Þ Ï(¾Ô½,&"/‡ºeж¿E&ÈÙOòjÇD1N ”¾‡yÀ´Tobh¾•)kç[=˜ N•D½£cÍ`%B|ë&)w@Ô«5Z¸üÞµ±ô†zçÅçíÔñþtéÊ»š›»YB>VX¡WÍqdUÒèÒP¢FT±æŒŒŒÕY¶£¹FÚ´¶Cê\^ [d!Ó¡Ñ^& …v¨ žß_$ÞÖ: šãs¶iEƒÝ(ÓàV÷·}‹·ŸßÊPö\êlz×€òSþ 9i`‚L<aáçSŒs-ʼ9,²ŒÐv[Ò‹gÀ´›¥‹MÖÝ5uaá€2Ùƒg÷ &'ý²JJæÑ­Ý.-úÙUX ûµm¼€c nVdƒKSç˦}ò 'ЍmÂPÅÃ’6‹üÍ–ä€óÚTyo‹*<ÏÁyüs’F¢®¨h­ ãTü|¡Ò‹6Ÿ§ÿÛh‘bµŒˆšC¼U.HbÐéºÀUëw8*9˜«³g |eÂïÃRD$Ê_8.K4ÞÚW‚Ì/ }? »HÛa¤œ¬ŸW]“W¸ÁŠ,\90l—®p÷ðmåÄùábߘïÐ&ÀvñçL›ÊéUÞ„7‹4ºfzóH­BnŽ’s0ÍH¬[éDuÙ™¾Ï”ý÷t!¯_ }üüpõ^žûŽßTŽ‚Åb¬A³#ƒŽ±ÝT˜ ÷8é'Ñ€{>A™;¡=æÔæâÝì#ø*D3YI…¥ÔŠò\#D.hÅØÜ.\¨–g"»¾á¤ؤ‘å¯Ó è+CR¥œÙÊj*¥˜ÌÇ;4¶QÄ äÕ7ë¿#ô‡c2(¶P4yf‰|b^_G…#Òºc‡ æ9Šî@‹éÒÁÂLå‹éhef ‰¯¸\8÷íè’GÆ×Ãf#Mx°v–Ö3𱝮Äp¥.fIÜTŸðú0»é~|*‡7µOö³æ¥vB’nÄ9ëÈÏì2ŧ6v@TðÁûõÍ·¿ U—¦ÙPFÑœ“ÖÕD”¤;-ç#%l°Ç&qLSu#2 Í—;ä³Êø wžR~!ÃêÎ`¦š­2›šO®Zž5s9‰,\E„‘¸«.xÐØ=Ó—ÆÚe}̨—¤ܤßùLe.ÁŒèžBÐö7(%Ь‰=i©ÏXµ|!N3 Œ®®Dž^Ê}¹ùVcöëûQ0iÑs/xÎ$É#«OCÙ>Ї^Tek …õdÆæÚ*¦­+UMå G/¤;6jÙ U¼þÐ}…£Ó&»üŠxf#ÓÓ}w¸&aP:F˜†P ½…OÕâwÅÚBqI¾tŸ¼N$‡%"1 ø/zÎûu&ׯ¬£ä†j57ް±ã°ÜÁjõMŽ~ud"­Êã_5Æ2,ñµ«e0ˆ¶¡á:Xx!{ì.ZYŒX±O÷TAæÚvzCš†“Ê&iûi©U õ«¹:vŸ^xEu°êK1Êi´ô/DÖÆŒÒ€»üÜ7&&¿M‰·ÒúUÃ(•¤XÉ\jBxAÙ)f¤ˆ÷:_Ì2UÍB}°0„¸¶vK°â™›ëv,ÞÀø|ÎöVÇW§K¡Eœuy˜Š]AüW¸Ÿ©öuÑX"”…­ OÄŠÀHœ^•c×^.öL¶E 2É+ »’ÒüIS‹;ö`Q¨M•|ÿ/>¸+uY Jæ†Zœ!Ÿî¾ïÐ:1k%Î'+ejŸFo¿~Ÿ«iS”UGŒ… ¯dý]fÉœå,¦ÿÀwœl4lOd ¬¸ñ?êØ1¤lâœÆÁ¬\Üöˆ]j õrx®eø8õºÔåHëý¨j*ÝÓä’€œ‡C¾*¾^w€3*IvÌ¥`÷ÜOŽÇU·G@¸9q¶ÿ×o‰ÏPs´¦7ÕëéU´!˜“éõÛìRa+÷§¸“Sw}}‘Ý‚Zg¼ŠXÏ}D”ÉÙÝg¾¯¶ªSaïŒM§J=QÈVžùë·”H2t(pÍ>•ïëìRòý5¬÷WØ[4A]‡<€}¬íLV^·®Y¬!®î§ÕXËee—ï“•!5C©±ó<=bˆ»¸;D™OrBMõö­\È¡áëXìsš[ôÑç«0`5´²¬M ß’ºË’eNf.7Àîš ŒÄèöß*ƒƒÖN)Q²¢ãClºDIGÉ"m, mõqË à0Øv^ À5@¢õ72ƒ×MSL}7ìh<°zÔÀr™››ó42ä¦ÊÈ©³äâE~1Íp¹Uoùý–ê®òôbÖc%|ŽÏØ1;lygüS°ÑvO÷¾—0/8¸ã‰ù®YÛQŸ ©Ùê$6ˆÖIÁÖÑÆ¥DM»©÷±Þå¢Õ¨QDÅ7! taŠÎ™ œ¯ÞШ¼c­V°Ó“ªÓ-¸D*k aªÔ ´¾ A¿4“ÈànC‹õ1Ãìh½n•§BUþÌ`ª]‡!¨(¹×å5¸q|öš ᳶÆ\’HŒÔÕèéqØ:–¡„h0šÈ9‘œî@Ø‘ºarlJ²gPMÆ?’S¼¶ÕýÌPüóS (êËTáA õ”²ûë9€1.Ü>K /:Ç…fo®FAu§EU4/ŽÒϑׇ{íBŽyAÞ”±8Êç‹ôüTK£Û/$ÓãQQ·2¬ì'3±D= ›IØÖã2¼÷O\ñÎ/Ž{>Ÿú·hü;Ëí'NÊw˜ÇìË«Z?炦_Ã*¸¨q/OMíìˆñ,~M,–›è°WHý_(ûQ$Œœ™?È”ö›«ž{¨:¯4÷¦Õ¾(ñÎFÔòûÓ-‹äva²¯w ÀJüM|JÓ ðEàí¦ðëìê`Åà/§˜^2×HKÖE%ª3>+]ï¯&6Ú5(OòBµ”Å ›²ŠÚUSo0Pnº`M~¹¯æÉNÕUzgßFy̦šG¨ë»¾àJ›ƒjÉO²Ùj´ûüÆbô–èú):M½£Ó2CµŒˆ±ï®`,·†íàå8±QKD$´`Q$¥ÛKa¾d踪€nìëpBÕdö;UR‚A@G“nРþå×8bm)lêÀ©['Ô eÿ©b×ÉågAˆI@(>”{;ïŽI¤ÇKhCG17Ò·:¿ ß=ÞÍ­c¿Ç¹ëm ðUãÞa'ÁÙÍ“*û,ëà2‰ì¯ÀœÖχՎïLl\ÉŽŽG|Nâû”‘’H,¶Ä<ÍÄG€:Q ½¯ØÇÛˆýC„Âq.Mªÿ'ºzYuòka9õL£BñìE]SGiž–¡çäڳئåàö§'4ªx4JF%„2‹!öP§hAb•³<$‚/¹æ¤îŽHòÏ;‹;n’?GêtiSp裉`gCÊØøÊtš7gïð.ÆÁTè¢SL^­Ù·º£¶¡DTÁ¸|ÊiŒì«Ÿ…ï©(4*X¯JÎíå´>è!V§Õ†MölZaY^"×ÌvgWrî‰'‹ÆN© 5û“x¹N'ß¯Þ =~mz¦¤•¹-t2©ÄHl¿ŠPf…´°Ãð_•ر{š ΪՂˆ·à>LZÛ†¼LšsÖ³‹:p“W,kT²¤k•ÂŒ3ç|¡‰H&:âÍa+´¡$O ±¯%ý¼€ñbÒ'””»"‡L«Ô¿I¦ÚÐȬSuQ.¿S8¹£J d<‰G\áÏýr°k/Óp:ø#šòïAB5ØÕ¡þI¹.” >ô³ÆV§pRX´`Ë¡Q›îŸg5­ÒéÏÕ‡E7œ :[ÐFæHŸÜoÇá^*]šºxÅRÉαB,Uºññdýk¶ê™Rí"Ÿh2CSuWùõpcÞËXi íÄãØ)sšO',›‰¸ù«Ô߬øÂ¾oIŒóä`2t ÷‹È©ï“ £¹Ë£:)Ó¬U]>ªÂqYîd¦ÂŸ}£ºFèl‚`ó3È‹°9gv›8Z¼ÉÅ:}†rCïÔîiçïØ>0ñœÊ½-óy¶(®ƒ: s8ÓÊ.÷:­þ°çpê¹0÷±;&c/ZŸ ˜-þí÷žlb>~é–…fØ¿[JdÂzÎ|H™Ã>ùéè1VÉ}«:zNSv±cÙ.Q¸®1$B¸ó±‰ÚõÜVV£ó@’ßÃ7Sœ^*ø~Ö'õà ‚m·†âsV‚÷0  ÎÝÉpWO1æpægF?kÞp,ˆ‚‰Æ²RÄ;±t8zLPŒTSÔÙŠ,éAþúÆÀA”}ÿ[»KS÷ð€îˆònNa¤„¥4„¥†ÑŠQÔ³ƒþª­`žÆýi^Fä{íú6ÁåŸôï1Ô“ˆ_¯]Àµmú‚Oú¥¹àŸy1Á…v'Ç}1ðýšàÌçÖ÷Âç%jËDŽÛ„+­°u&ƒ ¹¨·7#¬ÃaÛå Jî;.‰íFzÙ4ß·¹嘢Êuªò¸m}›Èé‰Pß~³süÆj‘,s°Ídd[`!µ˜Êœ"-tÃu:“Ú_ Ù4ØÅ!%™w`Žø oõ<Õ(](òNÒ=…CØ?~gC¹·_ÖéJvH"· ‡s©7?.g±³þ‰xÚôšx§DôEÛufÏ’@/+ø8÷Ë;M’#¯|&ZÇ·@`7w¡¸Û#¸Œø+“¿ÈEx[ÓÑ*E«YV¶†ÚùØ"û`ò qõû RJƒ´O †OETÈ计]&}"bzI µè¹â”¡ýFáâ‘»‰erTÕØþ ;~ùtwòi&˜Ú œÐU-ÂCM‡‡W`Ý^ó6\Bª­h*K:Öæˆ4}èØY¢v"þ¤úÇÚ‡m•¨ò$þäø~¤ü.%¬ó¿$6&ªZ0þnøóW‘6D¥'H—âšýÉ›¦þý'¼Ï¿™À@H׌ß@Ê’5™ZÆ÷SšmRîtfºzߤ0åšÆêÀ$ÑËm3z‚"ØÄOí£m3!x%w¬ÖR¬Ö¶V)Ù¾$›Ammx!ñ(ûÒzø)õ©´.\}Ý4JN«ÜRׯH©B]Sj]ÒŸe‡×’åû-.W™Þ vèK¶®¥í‹“å¾fpò›P²*À³§œêD`âq}±–jd7îÕÒÊÐ8èŽy°È/HÝŸ¾Í;‚o¯Oþn§’q¨ob‰^]F`í`!Ãâ» ïf †Rå&O«Ç4zn^t#x(?ªPÔøuqÞ–;Û€ÖVnü.b)cÏK†5«×öË:|Ï6Õ[ƒîyp4+-lÛ²(/|hå]9Ù'¬W€ Á'¶ „Æô~ ²[8K«RóGÊ I‚¾þ{:çÖ…7D6QpÔbÌq#∠ƒï™6P=Qqofòü½h¨ÖTîX!ÄDßRÓµøî·5Ïoå¡0¯/á8Äœ:DqLŸ}Ŧk.KBSï3†]7”¢VÛÜÏm5¢ʯس•v"„ $ª%}÷ÉKîœ`3qš^Bí¬Ô*Õï¢bÝP7Rº’¼Rƒ{í{]ÖÉ’mßÁé ¸¦ng}î¼>1©]@h¥’ÎäƒñèiÂ/É€qEÁ…87ñL8 Ú“—V D 9ç9DÁÀ@,“ž‘Ä•ig„Ã(”lym&Â8|V£À*}¥¶¶E2ÎAN ô³c‚wÜÆ”¤¬Ðm}I†Wʳ‡/!£•IXgNQ\ÌÃ7°”aR¥Ÿé–CÄlz"Šqó›(œ(Ñ,}‘FÔô—å))ÉuO#¸ÄÔƒÎøŽö³ù†¼¹»%CÚŒµÇšÂÑFÚÃEëGoƶp®ä8êr%TŒeôfoî2Ï^hÅàoåP¿¨ï|öúè“¡-} L`—<'kqîb¯¿Ø”ö›ã»4¶;L"ÌiÌ›ñLø*ô\À…Úx•”ßñ¯ _冯öQ »8ÕÛ°°‚+‘C˜F§6‚‡ä¼hÆòóOæ1µ渖uáñÝŠ¶7&»]æ5+žž?´¡4{;\•[€Ü^0‡ßn|E,1ƒ¤•e.øšôÈ  6h¼BYe/q¢I*â¹d)D%s õÖ¾òÁ|AëIªÏã‹Øm€ÇûØb¿iÜ™;ß‘ÉíÌ´ûèA}\©d£jjø†VV†#NX%ªúÜÕp…ßÇ Õ•‡%K‚ 8ßý Hâ¾ðoñ^áŸ{|¯@“(6 ̬ï³áÄÆ›^¦u$Ê¢úø C@PÖ¸M—ܨo5JC0Ë‘×+…håú«jŒH y#1‰¬q_·èAiÇ ¸&ËNöj\ˆ¥HT—E€Y#7r¯Ad…š Mc40qèÁ|B\²Äì3F>(²êO&–,¹á¯)^`Ë4m9YXÄ—4IŽ?[èåIê2žW](ºäƒL¥CÚÇB8@ñÁòVæË5à´}.™.ŠB¾Ý‘uÛÝ2>¦ñá]ïaÒD^~aV­DÑåÍèll |âÚMbÁ2êàõ¼˜nûÃ¥>`Á¥zYã´žÓõÝg‘ך}6ß½2õzï©Ôr}7ÍÓ2UÖžÁŽçWôìf4wòJjU’ô=4²·¼äè™[^YI¼^Ã|aoå&÷)ïÆgЇGvåôO®/ô71[ÕjÙ~„¦¿Á[4¨ÒQ§!CÙ2Ä•H¸ŒΚ xêc÷°/M³›ŒØ”?7ì×ü¢‡2 žBÀ¬©Ü þÞh°äM[Ùtb‘%c`@£Çë#øÒbò½öÅï:EÏ"tIБƄü“TþôXÖÙ‹÷4ÿôÀŒ$n³'~i®›Õ*‚U_­gQ\JEF̓¦·9¥n}Ê—b -"曉GM;ò§6 ­B䬄+Ü'̸‰<æ§¿¬rz Lóü,1·ù»Z?½žÁ1±ôÍ-üb0E(àYŒ*kQì&YÍY_¦§CÞ¼ùcpùÛ­?ͰGÿ‘$2|$ =½ôiÚ *û8Ë«nŠúŠþ5™îÝc ¤†”A‘зñF;r§+טõ¸ 9M«­7ºž;_m%q|ü £ãTb >rôGwåË%•nN(;´§ŒÄZns(H#ýXçJ‡žÒ‹¯¯Á¿ò+„°ž`ÒEÏÒ`LÛ^81´?\·¡Nx%,¢´£!Êi¾\‰ ˜Ñ†»f¢ÀzЖjÿeçÞ ¢ãï”YuI™ð2OÕ”kâºc=e:?øš%©-'Ô.&µìPP¶¾zKqߨTY)ù08Ÿå _F‰1 .]®;Lj*ú¿¥«;F:ôfEUÇ”t–‚Þ|Ì7À¬®)Í-èÕø©ˆšt{ƒž´ü$jŒ"wð5€{ÃÕú„¸yÀuÊD˯ïsƒúó¹uôeF]ÐüõG÷-㊒Q¢PD¯Öd×°{ Þè.W-—½ó²Wˆ_ï©w9²þ¤W,&pE]&–Ý,©šNqËLËñ³Ê7¸ ­jDÝ%#ÝÃ{„P“Qræôgú{*4l®y´ KX›V¾2„S¤!á.aÔV¡HSZâ6°!ÂX»£²mnk#åÈ€çÅ“½@±0M©ÏÑA]2–l]KÂk× iIeAi]æ"º ‚Uañô™6礵K‚¼œtT.h‚ša`r2 ŒÊ½ÁyW±‚„&”X÷âÜo3áÓäu(Ù±IÑ×ê#Þ¯I¥öC’_ …í3)ÇÇDÒýÄáÊlaUñT×–#ï{Î3ñhó$ØA~vç‹ÇôD¢ÏMvµ(±bV"E{Xp+SŒƒ0èŽFõ%ؤ–ßWè°è©5ôk¤d*ÐPø†««GjÐ{ËmµƒQÛàÞƒ‹™¼©ðs„IF–ü Ñðœ Kô6t‹{Zœ"Ô^,ãSPjCX»f113ËIÇŠ…·«1MPÏÎ d¥¡½Ì¥•Lao aȈ噇FBÝÐr_íI»’!uB„ Qý-’âÁU¼>ǬÐS6Á£Z3¶(>Þ˜Š*ç6œ¿ #@Òµ¹y%ªŠ[ß–¶AÐ[¨žÈ(’•ª AÆúÁõö¸Ç6J¸+Ô"+EòŸ­ƒw,¦ðo¨ ö®®ˆª%§Ͼ©Œïv8½×OYž,%Á;«é~p‹ÒAI×çeµ6K2”¥šqJ…J,Jœ,9ú $Å#ÿ'¼HXFµ.ÙciŠÒ’T ¨¢T8ð±ç¤x¥ŒÌí€ÅwpÊ0Ã6ÔÞ3Ùœ¯^±¡;'`NÈöN±ÄÐb;™´Ëv_é¢4*û%-ªæ¨J$„È«-û FÓÅóE‡2̤–ìŽóÖÏ“u¾EÓF7§~]ª C!™xÎ e¢w²=/\2AdDnÑMü æãï ×—„J!ìýI„ªá¸ÒêÚîÓ5´Ç“‘‡<‘‡Tð…“Ÿª:'Å۩욀WTÊStuKïríŸæ†¹ýËŽe¼éÁkŒ×ÕVÃb´jLŽ™ þ¸Ï?¾û¸¾­/רç”E?Ô‹8P¿ã/[ 9±«Û¸#¾|¾ÝûÂ뢢:víšRچߢµÀN‰n¸Œ{J&(lZ†îukÉ#ûƒMÑ]S³?©ñû6’h¯T¤>§ŸÙœ÷d/Aýûš«·³™ÉšÃܨ¨³{K¸mt!üüÙHf”d©½GË–þ„KM°3CQ¼> °¢0`#iCælø\±ÿfÉE‚¢ÒŽ.jˆ¦* d`sÝp£81díÆ[vwÞßÏBWãr?½©øyQïÚ”–Š·µÇ\ót­ ]ˆ¨ú`þÚ ,RßúÆÅxXÀwIL‚Ç.å³TióžjPøfÆ*`oÏUêéòó?¯‡C+¨Nóó$] v‹`ºH <™k‡¸lECù›‰]OUUDBDi÷Ri™pÎCwøcdÁ¸¦Ï a—%cÒÈñr:×óï3\gëì¨?3¹°ó¿KÀ4y^µ9ûÜg;G°×æ=Ü‚–“½Ê•Í â˜àçd—,¦ÝĪ‘ű3ÅC‚{!ÜÖ3á{MìÚWƈµ§J#HxOO5˜U.±¾‰,èŒe GîTËÜŒ,Ø ‚§’{%ÕWÒi…&šã»á¬&«+¶G<êÐø÷P lÍÀr8ÆVZ›Sg¬C,= *E±ò³¯Ç}â^ÒøóG¨º©B9†ÙŸ4Õ€Átp×o̳z†ÝÕ­ŸžtÝ… u¾«üÀ̪Ö6³¿ç™ŸKXø•¡¤ÃªïÚ1ƒí…'h‚UÁ­sº\bPZ¯øj½œ¯Ù¼÷9Õ¨93¤¢dQÝ,ÍF¬ê)¢›Ž“÷XRcú ŒâÛ¨k¿—Q¬-YÒ ¦B7ßӠ¶,j>†ì‹?mûDÓ@·ð.$}ªÆA(Ñpyõ@ؽXFHØ·¤û섦 ý!€Af¶ïQòdæåbõuöÝqlЄlÞS>Ó}kŸP6.µ@öo¾/êç·ÜfÙºNlú0Oo¦Ýæî–7·¡Õ9E`˰ÍÇ["@jmeÎËç=Ÿnøí°‰P­Ãi¨kÉ•X*в6,šñr™5xbîdÈ‘ãÊÏÎ!¥Ÿ ½®.»¡ûèŸ/è‰ÔBÓeÑäØf¿Ö9\P…ìÓ15¼a‰+²¢ãQ,—PcŒû#Û‰ePRxЄ¶F!†fex™bM?Ù ±”ƒãg'ÜÓ·|¥vs}ŒÏá=³‚‰©N²ºŠúÝä!£1­þeåkÙ›©ÓƒY{eª6Ö–½K®M'¿€÷Ë{&U…áï0ÀÂå78÷;Ý}ý|W߸ \Z±• 2á³ö»pçÀç1Ÿˆk—ì+ãñD4[‰/r D¨“¾§lñyv+9Ö2Cõv)ÂÂÊ/ÜWú_A‘üIõqn'(»ùÒ<¨¨Ôv”íjyŠÄ'h Ôž¯m’JEÍG¿¤Q‰NO¤Ùeöƒ¡d÷'¹h݇8N&ÙÎOÌú™?D‘®Q] 8'±Ó&Ѿã›g_£Ïˆüâ¾á7š!vß\$"ÚÙoY+s59ü™›ÞÓÜxëð[á*gõ^Iëò:él 0{7?\ÊöÐ]l…·ðm›Nü‰·ö°‹0 ãÖÜc‚ˆ’èómPŒ¢/ .n=ÜÝŠì¯Ñ¶á’Òg콄5<ÈÚ€äsîd¢ÞÜÂÌ pšx©s˜úÒð~„Ã_?%Z›íd"âª7÷Ôlcs ÊÚƒl_ÏTu(¶†¸:ð¥W[½™ã6ŠþÖæA¦¼Šèv|¡ï™"~ËöâÔÜ…h+÷3O#6Á…nÌ\f-¿`(*<ïùžû™_8Ê¿#“lÀïšD„^4- %hu>…Çî´.qPKH·¸d}¡!9žIe·fÙ×AZbIÉué¸i`¬l›cÆKÓ‚°¬ƒ)±éõa³nµíåù;; ”§`ʉA”1s»«£dI8ÖrG%?„}Þ\3|à´à v1SR.1o û[ßÌ %•Jq(j4å÷Œß¡o|¡Ós¿ÙÝd> ˸îPìø šçVïeÜÀO˜/2í¼‰kû¤«Ó5´\E»u?m ÖÇå ªz¼©……1N~9ïV9ùž¹¬KË׎Å^vx݇eiûÎ,û°Ø_ŸdÃ/*À’Ä!??q’‘˜j¸Æu}n9h~dB;®ö Ëè§| ±@é_‡þQµÊˆF6uMs8˜£ež‹*Ý7Iúãöòæ"úZ‘ºz“¹ÁS,áÓ¬+`ôgÕT`º ÀÒµm‚€šdð¹Æå‹“…Nç9–1}f½AËd¤Ã{'¢¢ïñCí ¨&v5}j0Þ’bñÏŸýïÔU¬Ñʸ>%B÷Ü xĵÏHAµí̤ëo%Ýc~!ÌR­È r¼ëýÜù5Ñ_ˆyˆrƒ ÝúñÛ€|ê‹Zø7­ZB_§ÀòÉöYúJù¨kA'6Ë1™÷ø½²ã¸«$“PÈÏ2)ª·•¨Ct‡[o„^úa}GÝc añmq>Ú$G€w¡UÐö['>PŒmÄäüå{¶Gôløâk!‰[#ánuÇ=œ~©{²ž[w_ô•Ž"lÙNnPº[…Ûtã·5{c I¥{”4Z Í⺯¸ÆßAð1ß´UY×f9Yr½÷˜ê,Ñ‹÷X¥á 8,ÕÞQi°Q²êðT`ãÝOªõ‚…8R†j½½kZUij‡™7¤¶ø¶²—‚“ d¼eÌGm˜ÙŽ?VŽW8ñ÷‚£ a#Jlúö¨|UXNüš©isê®5Ø âfÓ=;š»g±Ã3Ùæç¤ÃX¸˜=³Þ%ÁɿӚ3KÂñ:" ?ñ<&Ôý¼¥Þ!Ò«Ñzƒh<˜.‚c‰Ä³ òqkÜü2\ñf=a4™[v«EG:L!ó LùˆŸ3Å}I²†ráH|ž8h´yi¶t¨îíB´q{ì—¹9ðù6v‹…¢õ9ÈxL0=T«i©É_!vÀƒ£D£ƒõZ-¨>^WsäUèÑÒ}.dIÃ÷jWâs¥¾LBOŽWzOÏk|Þpõhð>tvÓORž*ÑÝ©E è¢ ËL?˜Ã³ShºÇXÉí]«{Ih³¿s‹ö|9t—5+Çð 1>D¹LdÜ#ÇØZë }Z§2zäVk—ˆ0ݘCåMxM+ŒPHYÔ5PqŒeUÍ1Cî܇LGé)*H¼%žQ Ù!오(¹¤ï¤Bh1ãܹpVçó .Aé2îƹ9´ÛZƒéLÌ€ð,Lë8_àaM´Æ&Ubg‹yœó%ÒÐL¥€ È8Žß¡©/ÛmõÙAÙa@ÌX&=Lÿ$= ³‘Øiª)½; ]¤¸zPa> zœæ±#xšîqäÁûÚ%þRœdzFû¡âÙÃ1|M¸_ðq󦉿E·é·PV ÑDç†eÛW¿œu†4ªƒâÁ¶qö_,z°îS¬dlÃ0º#².ð«xÝ4i§ã9d<œÍ‰"×Î\ùüƒ6µ®ò7t˜-…å¹´Þä¿ý®:"Sboô\™™±s€Ž{Lx+/[Ð K,wµïYÁœkOeº›?!–5ŸC%]‰ÌRS+oîÙ&ƒdéÆV%H¾È$²?AJõ,8Ïl¥ qú> stream xÚ¶T›é. ¥¸»C°nEŠw)ÚÁI ¸;ÅŠ”ânÅŠ•àîPÜ¥@‘b¥¸½tfÎÌœóÿkÝ»²V’gïgÛû=û]º‡¤Ô ,…¸ppsr‰¤U¤ô¹y\\¼œ\\<LLÚ6.öàÿØ1˜tÁ0g(Dä_ iäòh“¹<U €¢«=€›À- Â-(ÂÅàáâþ È€Ül,*œE(ìŒÁ$ uô„ÙXY»<ÖùÏ_³9 €[XXýp€¤fc‚T@.Ö`‡ÇŠæ {€ÔÜìâù_)˜E­]\E€@wwwNƒ3'f%ÎÂp·q±h‚Á07°à÷ÈUø¯Ñ81˜ÚÖ6Î:´ –.î ðh°·1CœC\!`à±:@KA æ†üIVþ“Àøëpܜܧû+úw"ÈÁ ss¨ƒ#âi±XÚØƒjrÊœ..ìÄâ7dï }Œ¹lìAf„?Zä$5 Ç ÿšÏÙfãèâÌélcÿ{Fàï4Ç, ±†:8€!.οû“±ÍÏÝø×õƒ@Ý!ÞÿA–6 ËßcX¸:u 6N®`™¿8&ŒlV`?— €0ì{˜[Ðötÿáäþm~œÁ×Ûê°|ìkc ~üÁðv¹.0W°¯÷¿ÿ0¸¹6æ.3°• ãŸìf°åŸøñùÃl<†\òãpýþüýÏøQaPˆ½ç?ô?1ðµ¼¤ŽŠ4Û_#ÿí”’‚z¼9øy<üÜnn^a€ ?À÷¿ó¨ƒlþêƒëŸXˆ% üg»çôŸ–ÝþÒó_ Âøï\ªÐGå‚Ìÿ݈‹ŸËüñ‹ûÿYî„üÿ©üw–ÿ«Ðÿ·#9W{û?üÌþ?~ƒ½ç_ŒG庺vþ>V´´ù—÷±¦Õ¿àcQëA~ðßäDzöÿ‚uþÜu!ÿ‚u¡ÿ‚…ÿ†|\ÇÇ;b¶tùÇÊý—õOñÿm~ìÑÑÞÕù_ÉÛ„ý >¶ùo¯èò/øxt®ÿ‚C¸ý >áþü/}˜»ÂûpùcƒÅóüÇ• {€Í1f¡æ/Bl?‡´\UIRºslŽŠM1mꥰpx/ÀZ]¯qPY*3‚¾Á.$»ð–6d™Ï_.ÒÞyï5ÂQß6%h4ßøÜšÆkNl6cÌ“ôìIÖôR£Sqh¿Üò¹sòÑ ´CjDlWdÊqrÂQÏ#¼rï‘÷¨é-ý:6»©±U) „y[:ÉñN'Ú(°hš)×,s†ŒÅ…ƒ•àÈwúübŠ {ìV1ž Ã÷ç;ÞBoƒUž˜_3^ËŸ´yœ;ÈÉ È¨‘Î †'žyKí$)’ÎyŒU ‹úhIm2[/ÞŠ r⫦k_-["Û5 ”.Åݘ‹5×Xg’ܵ×Ên##È©,š¼ã6ÍÇpÖhÛ¾#ñŠ*ŸÎ€KôÙ¹ì«ó¼Mí~oOrÎ,Ò¶óv'iN`ž<¯¯WØoò9üýƒÿËøy³\ÃNoö~ÛÁ«cß±1yZ–á™öë}qíqªAÐnkºì(oö³ôú*ìÄ)KÞM ¥ã¡¯LÜÃUp+ÊÆÀ 22‡Ü™e¼z ùœÃã§íŠœ$sÓÔ¢)Úä*ƒ?ékÅC`dÌäŸTƒú‰³’°ÖƒÒÅë l;/¬ókÙRtîÝ+Ž70náŒqß»Ç×ÖôT9¥ ™u'U·¶¨rZ»xñq§%%NìMñœ;KTÂÔë/K1Ûb<-µ<‹×fÛÍVñGºß»R;Æô]¨¯ÄU©ºÂfY”Å\­Kbf‚&dFr›:Õ§£LŠ|Éêh‘;:¦1¾szé°Ž|¥áý´íw±ñªÐ4ØkSCäÉÌ j3-ÎìÚç‡ bs¦R’|7²äR æ´ QÑHù4~¥¯Ói5ˆSl^·øò­¹\ˆ,þ°×Ÿ"Eæ*‰ÍóI¤°Krtgïg7sôÓ5±k3„{ Ò©|ÌI¡!o«ãƒŒÂTÂü ©~lîc]äs‘ßY*c¥ÃžÎÏ>Ml TëyðC[\ÙI/ïÀEDzÂüåùâm`r§eu0ö-°Ð\/9X&¥ÿ޼X1øËµf³nqHÓ(aÞÓž…Éö´[FÇ#ºqzê¥SášhM€˜ Á‰oIÆRœ1Ûž8”LÕ0õ :ŠC-Gë·ŽU¾DŒ te 8*“:+R§õ•’k+±òêrý´]/ fÕöj¸‰ã?Ñý ¤ò¥?ä+ÞFŽÞ]šlïEekb*Õ•#5ßâíå­"ï²ëÅ´þiмbßL¼- A‹ûJÛ¬ ª¿PíèÇžn9Ê-2Leɶ·1'žMµ½“¾Qáùþf˜V¡{*’Oö½¦`àzµ¼mÄoõÞ<‡`Nå zñj!¥°©¸úJ_4¹‚’‹rqäù­ÂĺÔM4¾„j!/ð46E²}ä_ävøäX¢âì¯ü*LÊuÄ+ýð VüXž “&Égs™†°M¿EIæ¹j‰sH³Ùú5šÉ«N,ùyÖ+nPv0¼"13"´®n€è°‡Âà–Q?›H+h¢ŒÿðKø£›˜µl‡©>sŸg\˜êU *³0EÑ6©ÿ¬hÞŠ>_)r3?!]ì–¾t:J•,âELY[=žÑü´±~.YS ¼"ývÁžµaz˜Rä5U-‡8•ã àEbƒrÓ ¼Þ «_Ú¯¦ßþü×ù§H‚f‹Tî‚`à5ÀŠŽ¨£uÉ÷].ŽÆ(Ûª0¯®7 -Qãýìž|EmÝ:¶ Ý Ú'ˆžNlk[eÇØ“ŠðDÉ=dô-·K[ l|f1#Ø€Z…¯Êr–MÍQß4ÜÅÀŸd«iÀ(j#½âžÒJ{|ç.IøÁÝÚ¬ÝÿÕ/^Yß ZCÜB‡Ÿ^—‰šÄWŒÔS·H†²9|Þ„¡=Ž^š@½_»8èÍÅ Sä­Úë„R°åÉ󖆀mC§ôú"4ÎÌYi.W*¼K꟭ÏJ7¿²KN »sгñÕ0®ŠO6¤ˆ1T€_*±ê=i‘¨tyj:È¡Øú¡ÓŒz4ÿmþ©EìQ‰õÛ¤¸ÏQ±=âªû%y+ޱÎH3å•Ô ­ÅO³§ ïΦörŠ3):_)²9`ŒÒR)’ß}é²#'Œ™u¦GQż‘™ì4l=ìX ¸{Kâš‹Š­T¸ù¦ãª#H~C›dôq–œKþi©ÔÇvVÎMXþ®(A ò« wÃá¿)>k˜1uV­‘Íñ/Å›Œ/NC)Š¥€ekN¸'«Ö/Dß‹y]wP="é£Ãç07QD$vic× ›W£–ñüŒf ¼õ”1Rãk ¿š?Òx×2“ ³<“/2¹5âç›È°±àFlúz ÎB¼M¢ô]«Ð„ îiL-W¡Ð¿az–/Âî³`¼O^NÄ4qêÎ{޵û·÷¡~âkÐPòfYAÕ“i±o†R€,¤;.$RØ„p€q_ª¿W~0‹õùtÁàˆL/ЮôG™V]è›—ÎÇlƒ0óÉK߇À}&Råy%K5ÜåŠÀõU³ê4\'®’~h…ùgGŸ¸bi–5zFkÛÙ“ˆ7=_ýüj kEx"ˆã˯ö×jŒW6"{¸Åùw¾Úݯseç· $WÚŠ(†"ÈŸÜF)nC·¢%ô"T¯¢TˆY›°«T‘m”-O-å¦E˜ùàx£Ã¦ ºœ%ìu©.Æç^AF­¤éÈŸV>hSa|{;{$*×ÅI$3ésrîþ‡`þç1Æ'þpƒõÇƹ¹º°J‰õ8PÈ î¨rÂs$Ê^Œ1sbüÒ¨¥K^yßBmDòíçi‹¹±†ñ'±“9³Ïs8Òž¬,É]µ¹«¨iÇUÊ8+¦ iP6Á¯;ƒ½QÑo[µWÚêÏx*tÉã+T¿MÆÜœàú·1I/ZGŸ|e¤šc_;ÏÞzKq ÝUJ^¤•9V‰3›h(ã•Â+Ö|®XÍ\wØLÝŸ>qRnέ®°·vÉiŸ£1h;(Çd›]¬Çà>hö2ã¬¨Ö XQasPªiìë·d§_òúå÷T¾¸¹HÌ v–‹ A9¶5™"·V!ITŠRuT/![ˆ’\»]ÖDšrÂUÙÚ³XÞqÌyÏRŽ¿…Æù‹ Y·S\>œÇª<Øvl£gcÍSþdŠ“{Bªò°.¿>àV„"ñFKduODì¨Ù7\7ˆ{å¿.œ^†3´,úúÒ2\W~Ö¿ò$fhjµmm6Xèãu;=m\Œ`ÆŽ“úØrÅ2$7)6:{³‚ $Ž¥îN)[+\t>ƨÚ²(šwWüNo«Ü¬ïŒt§£˜ÿ![ ÿ™9£|K¿C÷“Õ’Œ-QG2"~ìË,v ^‚Ž Á¤cÊöÝi¤XøÃáÍæ`â k!i”Y^0á›|{Íà•ú¥Q‰Ñ³µÆ ˜XˈDð#Å¥pŒh:”PJïÇÞ‚`gÉ™T݆¦ µ¦PDO¦KG¸ñŒÚŸÛj«hï“SŠ]¢XRØÏh€wKػʖåW†‡ißå@HMZn/'ómvëÜ·'=î,Òžt †á19ùæ—n„þq5eÌs¸ˆ!²yâi*˜ \ZòÍÙÜÏžÍB{ùY¤/×þÓu¯3hKhg¡M¾iR7Ò²ùL¿%w©m¯pXQôMãA ‡ÄÁ¹ñ ŽÓ=y_-FÖåk®ÎÎõù¡{:Þ]e²g ‚Ü”Çn8 QcB¯ë œTJzLÜS"MÍt¹…/™àVd=±ÚLv;G×8„»nR÷è—{0ý[%¨—…Yˆ¢é'ùÃpöŠ%Ÿ¼Éð'»÷ÌÞÛÝ#"Kh©µ÷+Æ`Åúy3ŠÄ!óÀ âêìÛaëÁKg6‚Ñ<ÿÈë>ÓZçô¬>­Ï¤™;Ôì —bOÄêã‰aØ}#üDŽ—üÖ ¯0»p%êYžŠïü×âÞl»ë7a®âߎ_\Ú4JRš¶Dc@åL'RÍíÎUÓ§£®h!oò®ÝæˆgXxÒ¿¦¾ÿÎȰ-ðkÂûþí¶l{½¢ÎHÎí\ç§5f{€ý“²¡|o?ÔVÀ¯@sšx‰þý{;{éχž¸MKLT÷´,ãL:½¹ 5 ‘ ^ªg¹ÿ Ñô¶ß©Së~É"­B^h ãÇlé!ítVàÒ^ã›Òí$–3Z›lDD>ƒô$]„ic‡Íˆ@Ý)„øEµ›„À€Šó+›ûFŒ&Ž'Š:}9†–UÚú‚Ó@NŠPó·$Qh:OÃÙ/­…TòøÆ~P¡{í‹l ׬ÙÞ;ÀÜÎÓÕÏb°Åßç ™xœ4o˜^6RînèÉÆô, +M®:ãÇÐ| ô¶ÜÓ>ö-³øÒ60wá7¿«Ù¥«Dâk¾Ëžˆ;o޶TχÖï´«L±™*–Iíq¿q%$Iâku.äØ Eu?fq?áõgÝ…+në&ôhÁÈm,­oõù·)Ŭ‘T'ƒ@ªxóŸK˜Þq#¯Ïº¡p/Y¹Ilð Ô¾ºˆ'Ù£»?­U=»ë´Í[Wã£.n%Zh3[~Ø,h|‡è’+wây²U³y~üìÐûÔ]ÃÍ Rñ}žS[ãÚKÌà û7[ˆ¬¥–f±¦ç¿BØf¹Jjé1E0ã,HµPÊ˺*tÜÏÕèeçnü©ÇNöÄäb»Eûhsp' éC=¸ˆð7î0SÏ ¼½ƒÞuŸ­Ðr†aí õ?¯3@‡wŽ˜‚˜¬,°ýšýãÌ6v”ô¦Ëötr¼ÂN/ò¢¾¨f†å]°+ÆÁ6èÛOìÅën·Ë×Ì7òÃ:Ù€öR9~DH^¡—[9˜mªÈzÄ„zæÍ°ØqÂÝÐÒh ÿ.]v‹D#Æ?¹Pikv0©uÊüôoWÎv~í!gàü –ñ•Ù¾¨g„âY|É~>2¢$‹•ôÜ1a 4Es±d*OŠÈ=kƒsûå$+‹³ÄGßþQÔðÇà'_dÁA¦ù¦Ôí; B]Äóò"w$3Ña©D‚ Ÿþ¯×ã1+Úí;ä¼çKÙ‰/2¶ …1Ÿ³‹ÛïQå89½¬zCAF$UuÀŽ#@¾ès¢C¾óÙ§¿ÄûªaxsËûÌ´†*òQÜö™-†Ìç)K²Ÿ6Bã2žÁ•è8¹\vY>ÆáYÏLŸ &¢ÄØO@ÒTÜ7õE30}±Û¯rŽVÜÉxš¿ˆø ·¬äÎñ½úUU8m;öSA)t8›>Ns+¨4cï2Ló( \À{ú²>eF¥LZßñüš–wHäM¡¤ t¬Ÿ>›éVJ›&ƒüwIÝãH™ ì68ú,WÀ:k ë7ä¯^gfßI«‚Rª(÷Ê`¯'ö?~V¬Ê®c: ·BC8 ÐÑf=.7¯Ö¶}z½:­7ÊSm²Hv‡ˆã%_¹ °QÍ™-»»ó´l5Õz _¿á´zsA!% ¿q7°'•Hs;`¡WKtÓ¨/ë‹P±ºÖ#h6Ýɶ·×(!¸C±‡¾—­‰£àN½5@º_^We"YÑ@1q%[ŽêöN&[-’g'ÀØ¥5¾ï4&Í¥«#¶ftû¤[¾".µ_ ãýøÅðÛ[¯>œ^ ¥è0øõ]QsûŽÅÄ[£Óvè»”ýÊéùŽF Ù.!ùC¼IBKx‘çËA}Ã,¼(DÔ] ½çÍŠ’Å7òçŠÀCLF?iê:øºoöFÀS¥LÉz‘‹ò¶Nìøx¨/Ñp…œFîŠH”V4IB½ºµ*ÉèÖ¢[ã]šN¾M ¢PÙâ!\ÀØäòÑÂpw˧„`WÜPÖ4MÑÎo'ëuô‡"œH{~£©WhÏÊoÂjµÑ? (Sª ×Èû‰±F[A¹Àë¹°ff8ÆF;Ò—©˜p©uÃØÀõz>¤u’ SÉOtiÈ#eÝÕ¤Êp¬aN*4ùŘdhú1¨«¼éÞ=,BǰSÅb{O£-õ~Å:^ë.²¼Ì0„óÌxG¥éE:k½@üùíº‰Jפç¼Eã¹2U‘Ýg&¥ÇÕxö´ ˆc' ²Ÿž ›ó =yŠÏžÜ¨feD¨ú|ÈJò…Ÿz'¶yg8`$xxñ|ôìQÉ$ÅÓJ”Ä5Zâœ~ˆ±2J3ˆCKÐ ƒã/òÝÍ‹I;cÙK7&º‰pÆNŠâOyŠˆË¢lf˜¦bbhOÜ0ò>´ô¤í)-J~/pë«>)ê û/û ½TD…/2&ó‡:-7—­Ä“^]I‡ÒÐ&SÅ¡qe#‡±jèÑìa]¶ž°£U·±ƒrγ»Oð}„ro¯Aš:’ÄqLt‡~¼A½¡–4…—¡s'Ÿ=Õ èd\ÖÕëDË j­¹Ð×ufͧÉVAJ½´‹­«jónî.ÚÓÏôdŽS‰‘M‘@3ëõk†­°ßT-š0Kdl2Œ‹†8qÏwaV™èÇíú0q0ðóx¿3zà‚¾¥ÙµV-5Ûóh™G881ó®\%ÉŸ íñ¢*U?œLký"èÒÆL-CÐð¦õ}æžæäKµõŒï‰&ã’®ÏCé^P5[v41R~ì†çŬa´€¢.]ßl×j¹Y<2Z0–ëMa|+ŽŸ¢hLHìÚò^ù›ÖA²Å>¡×þ¤pÖQ岎n…\Âîì…dÞC‡Ã±™i_YT‰õNczAOK5zõ2©Õýº«üð¤œi¯¸úqjQKcMqž>ÎèÐJ1?ýkxúþhÀÖ÷ٴʰ™.xÜë]xõ6§nÇ0Y1ks§Øëù[4ºuË!HL|ÒûóöÈ“õš&•ó¸Ù«XË£Œu˧]ÈæI ÕåÑÓpžç¨#QâèW‡ox+€UþÑ C e3š"qÇý²OP?­¹5yüÌIà [-Cö/Ç@Óò<¾Âd¼Ú æ^ÓõíøøãWÈ“*àõg6:ßúN´hÝÖõèìLᔢì.š ù§þGðÁ6¤ Áç˜8Z/Èš÷%2ˈŒ—6„› hK+>Y;’Å<SÆÿ GpPym4»*)åáÚ¸ 5ÊÌ¿^\qT‰´šT9c勃ü´é@{GÝNáq…ÑoKíÀÏÜ` .mBjŽÿlŠw—7\JœÜP>Ó}qe}·®ñ³³cŸ¡LbÑ·¸¨ªÑgÕL=œ"]_=÷?øãn#™#ö¥hø¢MƒúXêKƒ 4¤‰¸´`o µ£‹MÕAŸ‡SU$‹‰üžÀ?vCQ¾ùªÅñœNãâu”„Ô Z(œI4s°š5&r¿‡_TQ¶  ã'|F‚Sµx}M'¿õX#ºʼó¬ÀC?÷!gËêþ¤¥spÉ–ot€ÍFÔm²ki[óGÜ|ÀƸ!Žàܱý®Jz¬7ÀG‡DC,åáÔ »Èø!^“’åŒôúéÚÙíiï†*r6• sáç.P£ä9‹‡ S¿3Èwì¸û´aæí딹Zùêå1éHõEüdso4 NšQÙ×ïjçi:N¹>Ð’¹wLÄ´(Þ;l^]ã6>ÅýK“rsžDXu ²‹¤.w ¿–Ò…ªc´Q­4§"Rm(#š^ üRîéK1#! ±½V ×Z§LöÇ€àmÝxA‹¸û¡ì-|µša„1Q‘ì|w‹“𮎾¯mŠ«:œ½ÔÛãòJæþʶû€| ehˆ×,³Êvw¿J=×8¶ˆõìöÊÄüžr»TúêI þ‡‘h‹‰©¼ÐŠ˜ ùždô~îe$Dwñ³Ö)Ãì!Z†ñ&$IÍ€i‚K?œ;3ß…ôQW+8³uHìPÃi¤j†¶Š¾ {{-{Ι%0X¾„¼SG`°ü”ÈKÅLÚaµ!oñiyõª|±ƒ:÷ës$T€ÿ¥|j×Oܧ®&tXôØŸëðqBvß*vÊdyy¥XmüÌÊþ¾ðÁ^‹j‘Ö(FEïk¬Wx«á5Ïä÷:Xì—¾Ðæ$ÙJá:º¾âu¸â3Ò írZ˜r’nÐ+žSNŒLÿwïˆ5™šxwoÆJ 0Õ*˜K‡Ï¯Ø%Ÿ;V<ýëýû#·bbÙáÝ—GqFšœRÅ|°,¿Èž„ÄŒiŠXI,±ãÍsņ`¦›Žž`oQ[ŒMä¿ry‡­!À¼À§•©ûÂÏmVtÒœJª’óŸ¢Iue˜¤´ U«ù[–MYtŠ®=iŽÎ>EÛ™\žþÕ/eÚžh÷?© M í6|;ÎC)t)é˜Íœës5Ĥ5”„›. ÷?{k§fnE@=ú5ó=ÕñraãÇÕ-*ìÌM%E£ /¸û60 šú0“B¶=7ݾòrƒ‡ù«]|RJð`ÛkÙ¸é]Ÿ¸œ§窬e$~-´/#¸IÙR÷µ-Ö­|šÃvmféHšm±ä&o~‘£eËñAØÆ¦º¤€…é°c­3À^˜º9“v–z[ïò³n&‘R|>µ»™ lnÛ•[dèæÕ¢"Ïr[aMͰy?%£ïYŽSVh’…P–±!f|©6ÉHˆšÁ¦Y/¹¿Ò†¡ÑŸ—ÖÒŸ¿bNµŽ©\p^¤ü¶UàxÈÖ¾^óÒ¤iNR‘å“÷žELØâUÇöâÛoÁÄâ•RH5}j/±ñ Nž•˜,¼rÉ‚¨OÒ^`Ǥ„y Ñ|÷8‰èìS&IÍ•v±o<é^:¯2$ª%% uýÇûð³X&LJØ÷óÏ%]š9´Æu~–›è~½Ö)@ó&:âæÚää 4>—KÐ%ö­ÞÓÑŸXS›|Û :Å»a{’Ÿ±¯ÝÇë]ÞGÁ?é¢Ä[56Nór7œsn#ëÉkêŽy‡yx|HFBñ°ÛÊ cÈŽÃé†4—Š7ƒâ#³£tM­ai²Ïi2ï„Æ_í½kòF‹aÞ“Ê}¦¤†à*ÛÏ`ð`d­îû$$q(.è¥U`*"›çÌÏJ¥ž^šŒùŸëî› g$Ñ[TŒõœÅæ'œ"†h&¢°Oûì§™(>±"¼ÜU4MÄ5îÛ±†æÙŒÉÐ+Gy›_Û_ø-Pm¼l^´«˜{A(øw «ÁëŽÏF׿¢³$dÈùÅ.CÞŸ"ßgý½ölm 9‚Wƒé0›n²f6[¹[…kÒPô¨H×΀“_H å¸ ÿÂít‰tyFá1Ц7=”kMÁV)Cúä³{´º¡CM9$­¤é†ä¦Vo`mÁÿÚ?AóâÉn¼ûˆã¦dû€ãæÊ¿Ï¯ž\¬nÖ`lÙ,߆íà-$Çag±9®¹±)íÇH„Îö‡Fx}Ñõs:;Ì»ú¦x‚pšF® FûðF@SïÛ™{9nš©7-²Ó;xeVfåûöÓóqnd!GÁ¡.Ïת*•qùæ¨ÄÂ4n”ÚGd»?…8ô5F·‘…ëp °¾¾ý©Ç½OÒ\Xš•ÃòË0ˆŇ=ø3Æ=:Q)sƒ†ÑÌbt¼ÓvŸ…@ÓÓÊö0fêjr2–/pîî–®AuUB‚$ŒÛyVR\l>ñ–”óH—î€Vl¯@3} >-â–‹Îã®Wß_¿ZÈáQO¯˜JM9RÓHòS$^äJõ-!¯#§{Úβn¶–$¿™X>}´Ž)1@¸à¶µ¹ÿ3ež%É—Øvs],[b” ƒS8×þ|€O爚ڇ: †‹½kÈqèjlʼnËÐK;¶Êà¹X!•µ¹…bg~Û¦Ã'ñò‰‹°/~óζ½ïÄä°ò}•f¯÷–F×w]šN$G((Ήã€Èê!!Ì“Ðùn²¸¨Rbb·ÿNÑdè—>¶ ÒW:ËÅOŠO¢#Y s˜6>€ñˆ}§¥%—Z»Ø.çÖ Åùß÷úßž;q«áKˆ²>C5°,JÊ­Ð>~1#†¹BÔâÕc$?1· -T¢3†C~ÊÑÜ›/á+ˆÃ_‚Ô>ÝÛßRÀ9pÓ'CFyþl›Ø4Æ@ô­D[ÈrNê^ؽ`žåê[ò‘!ê`'Cr¿¿¬\'D@OL+ùšÆR†’ÂÅ£RÏ=œTW Ø\‰!†&¾¥Á›Ú{ÓKD)n!:|] âÚYnH 6™_Bt‰¿B$£ûzÄWHñ| [Í̸¬¾WÇ%‚?€¹ëìu#}Gû[ÐCt›ÄúQýyuÕzüFU¾Cе+f~™ß?[.ÍgmØ;8Áª°m+¼Û K¡: Qb ÍvLK‚Âv$é…ŸÏQð{ñóò–zczrñöjžñÑ8°áÂÜ^h‡ó¸=›õ—w4DµTÇŸt*?‹ŸH =\%·¦”~غ8¾ÌÆtÕ~Ûÿ´$l§·>ê³þíÐcO‡Ç^o·±øÎ N1œ³ÛY2¾á=F<öâTÄ4%ìå°³ñèݪ¾/kòðm…CÝ,´Æ\6ôVð®§=| Œ¤"…ßcå×x;’`Aýpr9€ÐLÉùºŽå5𘙋O˜ 8°Æô:å4 ŸX‚‰‹ð®äAðâ|e·ó;rEjd€;Ób]n|2ÎKÚZ­…† áÐh/+òîR,Mí’FVƒpÚ³–•â7jœ.F×gô˜k£iJw¯à3=ÁžëŽùøuTXïá{—Ènxn)|u>3)Ý%ÁÃR¶XMßX†KTð¥ýåöÚA,lI-ý|OB¡GÕ©o”Ÿ}¬Y]}s{I~$Vdˆ®Ù80ƒßI8ä3ÒÓy÷åÖp‘|4ùFEOøœŸú$á‡*~ðú§Ô}µSÚ7Ká›U&ì Å\ynÑÈ6RÐâðu8ö½5¦Vc²@VŽûޤŽcª“ù^›“ ބ™);fžá¶™0-—èÌ>tfÄ&ñÈJ’Œ»ùÔ€ý]~FgGZRnŽ——Ã+’–/I< Uæò>¿aÅv1Ë—ÿL9rûa¹¾g$mêí¦g-À0c2¤½>h4‚<*&­’u·Üoy..×ÇÅ®Q{ýR^ÈVvsoPÆð’ï,YÿEy¨™q¥I_§Ú ”wÒàÐCªAZE{Ý “Üêkv’ä“% ÇÇ—&áOï—"3««rî´¬nö 7ÏË׿‰{“Ô)9ˆhXÇLuôµØ:*LxÛ€žIL•akÎÌýE{XoÔN(972Ü$®^M˜”òq7bÝ2tNäÉ~m›‹K…Cãxnå¾·Úd:™¿RšûùMëÙŒrÁŽÖ­xø+Gƒ~|Ñ¡µÓ0 {bÒ‡øë‹0µÛ¦­\þü÷èþâéÕôá¡Ç¬rÝnk×Ör-Æ–‡z¯}fW¹šj#ë…¾½ÓQQ?F²¯ àkÆk•©Ö.¶†XÅ‚VTуŸ æ¿¡ù¶,Ô¨Øz;d`J“rBTùfƒÄ%y’2í8‹‡˜( ~ä‰ïù¸à4‡p7ÒµLEŽï¼·ßîM`{w‰4èÙf³Žßçˆ4 çžPýõ-æoÀ8ëᎩ®5ù“då{+‚³ŽÎpo±T½JS³@ï‡`!7½kU?ܤí5‹Ï?eÌÜJ­Cкç‡1¨A“¶‡ yJ‹f7$Ó¯G-3“¿ëó½LZ‚8iæ`2R ù…ˆßò¿åþ¦#Ú&—H(XÔ~×½ó¬CDÂßÌB+2x¹{ýEïÒàdÓç§å¤(‚:ÈËÅ~ïÍç¢ýíó4t†ŽG.ö²<;‹ûÙÊîÜ‹6¥ƒ¨ýeRôa¤$Ö S!ÁukX oªšAÜÆŠÓø!—sµ×r-`ñÒ6³=X„2Œ±/0Há éS…ššzÏÕpÃà’{±H4<ûuç•=‡55órô¬` Ž«³l¯D ôòY¨ùk×0e;äs8ßH1–óÏ=¬‹5ËROZ¥'"•@Ì=Zß/¯ë!æÉŒ‰N+áÝT¨…Ÿœ3(oIÆ_Òçñ/™Eý|ÌÙZ¥þU®»kÍ‚œåº¸“) 5ŽiÎdw Ó ;“ÃïÆd,Hùòn×îÅeLƒsnŽi[-Uô=8Ϫ»'‹_Öé+÷ôq…=Íû2Ž—{.Ì0– û£Í=„ÎlÀ9ª~<ÑÁÚ§á—©COΟØ`.ÖºU6Î|_/’B"ï’¨¤•ýÆß ½=.׈Îú0:Š:Š7“èǾ°Š€|híZ¡l4È4•byÿë+–ö5¼‰£íƒq;¦6ßÃow´arbƉˆƒ³‚·üW‹‡Í‰a=yÏ‘»Uí%$zL½¬A±î¯Flãd¥QT[núbd¼k$Q Mtùè&WŠì¹]Ðq{º”Œ’3f–&ö_BIe6ýðå>ÎA~ŒÛXd“ ì-æQÖWòBì7§¸Ö£Ë‰™×iZ¶K]£š5³´yÔþ¥å$ñ2z‹s$µµËs!Ì%vJvŸÛÝÆîd¶P£Ëÿö¼h endstream endobj 43 0 obj << /Length1 1498 /Length2 7130 /Length3 0 /Length 8125 /Filter /FlateDecode >> stream xÚWw4Ü]×ÕBˆÞ…0Dg½FÔQ£“ Ä`02f˜Q’ Dšè½…è-zI¢÷Þ{B”ø&yž÷)ï÷ýñ­Ykæ·ÏÙçÜ»ïÝç·Öp±ë•ì6P0Šd*÷”kŠ€ ˜$JÂÅe ÃÀ¡gH¸L¡(4 ‰ýG…`°1UK½‡D´Üà1€ˆ¤¬ˆ”,dþCD¢dªw˜àž@ ‰€¢I¸T.^(˜ƒ#»Ò¼¶|)Áßå%g( f AîA0ŽPg슶8Ài ƒb¼þÕ‚WÞƒq‘öðð‚8£…(>A€ ã0„¢¡(w¨à—l€.Äú—8!.€±# ýGÊiñ€  l³…"ÐØ"7„À®0ÒÔè¹@uþ þ<€ˆÈ_íþ¬þÕ†ø] ±µE:»@^0„À‡ôÀ:BOŒ ‚°ûE„ÀÑHl=ăCl°„ß›‡ÀJV㟠Ѷ(˜ -„†Á©þÕ{Ðj;¤³3A“üÚŸ* µÅž¼—ð_Wüô@øüía;û_RìÜ\„M0W7¨¦êŸ,lˆäï˜@RR"¨+êië(ükc/èïäï0V‡Ÿ Ò`•õƒÙC±?$>hˆ;€A¹Aý|þ™ø7"ØÁl1¨ AòwwljÿƺóX€°&€~}þz²Äú̉€{ýMÿ}ÑÂzªÊ‰þ+­¬ŒôøEe@Q @DTJ %!ðûw'}ìÏü£VaÈü±aìIýgÓî:÷ÏAáü»—.ë`(€÷oÃ?I€l±_"ÿoÛÿ.ù¿Üþ«ËÿÃðÿ½'°þ›ÁûÊÿb@œap¯?9X»a°óp‰ ÄSïCÿce$Üî¿sšv*”XgEÄ…@âÄah0Ìj§ÃØ:þáœ?â&¿æC@õ‘hدw ¶ ú¯vØlcß'h¬=§ ØYú÷ºj[¤Ý¯¡•@P(ˆ ö¶±Hà#‚N;¨çoC„…H ¶€Uè°G¢H~]­Œ4@ØæWè7I„aÿ€Ø,üoˆõ—0âKFÿÅ¥°A;þƒ€-wÿŠŠ„½~ÃI°uC¡°sýÛmX}ÿÁ¿_"P¨'Ô–dr i+äTÔpZ¦Äì\ý,*NÖùíåÑõû+jLîë*ò?Å2Ã&”ZFÖÂ~,Po‹æ]U?~@zl5ïû&L–~²²áš½Í² ïõ³m´Ž›èšvs³¹µÂÎþka·Ç‘â0ƒ ëÁêhʦº‰´ÞÕ2˜ì¢œ]UR9°y“NÈu1ä¯7ĵ¢ÁoŠa•ú`ÓöSÒäŸ(m¢dÁ×­`øÄ‰QÏeoù²ZÔGï“OK“³;|s ó9Ÿ•:6>ð|±´Ý?{,¶÷žêÂçm£-3g+*+˜š ¾x ÝE_h…ë‹åZUÔ´@¥"}œU¿À‡ 9Å(í!6zÜAÝ×Úý“à±w÷†ÃZ’qµNžo}-!ëb›ð'õš»,¢Ù:6}úhËÓãAÙÍ`=y’ödôŠô`«ü¤¸ÿcUÙ¨tfÃwaâ3 Y½Ö§ë[É¥Ôg&Q'YÝcVIvÂhÆÂsŸŽé½Ø"ƒÍ¯ÑŠqšpTùºÉtãÖ¯C$‡Ðy5Ó7¿-åŒd_ c9IßÙmÚXâ=üXÎ*ù3½ÿ+ƒ x†ì$ˆmñGR¥¿fÎgŽ¥¤jK”,z”UýDæ(ëÍތƳâg…û÷[Óú^“ÅÅA4ÌÿPÙ7ßH¹_<›6ÑFÐUö¤µ H!ØM=1ø”±}Ñqxyç°Â;ÂŽz3ˆZíºD[’[ê'¦ª¯ŠãÄ)ïä"¶ñb©Ì…ýŠÀ`÷%>c³ó UŠRîô°Q«ªG~ _èíä6oåA/)òRþ]Ðz¶°™Öa-©™œö›ØÃÙ¤t¨\Ù@‚‹1k—Þ4ªýh6~熇’pTf½V)IêV·Â,1s‡ƒ@­±e^|DËxw‘d8*á<õ @Ò²¹)ÎG+¯#tÀ>8WÉ)o3€d±‘®¨ñZyš<™7N«• ´«,˜“¿5r îJcÞUƒâ”— ì×%~J»œ`ý=“3T·W±R%>—™¦(¡jk‹žÔ½–wз‡ÿjrQ!÷>ÜñcÐÝíúÍ$¦­r :¦ýŒÖîùN¹¼Ý¨ƒšæø÷ÆÕ¹n£ãcW(›­9Á4^+ñ^¤7³SÏ C-ŸMâ×7+¯ì±ù<‹ŒKµ­«ŠÕ$p´Ü×€“.?]ìÄÄjQã<·‚+hxe+³i’dR(~–0âúƒq6HÍJ[¥><ºÞl2JhŠƒ—²ÜOèù0ëV|œÀVP¿ûòx…¿v6Ao”Í“×w †q!y¥ºb›“´ƒ6«íŽÌaGÏ-©zÍ­U¨9M'À %‚jÕ‘Cƒ\=´Hëû3—Nž±¢äijàŸóù¥ü`÷ú½/œŠe—{DJŠ–Ð‘çÊÆ¯V øõ øD¯ÑÔË¢vZ“ç¥@Ë«i<ùý$VÐX· Ö$ÇðgÉÈÆZ7Ÿç³ˆ;{ü~Ä)!Þ.ùœžÙA}V=&ü_)ß¿µÇD!—qJ‡4 lîöÜ7¨× —ÊâTæåÐ#à’{™­^²tõpG¸P<ƒs˜åFîSºëDÿM0hŠ«ÃìS††‰Çø³æ%¿î™ù0ì X>jÅ™V³]ç#A¸Xʺg;©°Ah¥…ýHÝË«',ÔP´—!§ 5ât+‰á·¬zmγ¬U} )5:?#Ú„CYY’¦âëgÎ( F´ùî±ØŠÅZe¤‹ „bO„+ ȃtª±r,'$ø/QÙ{åmSÞ¾­ ¶1âZv؇\ÛÚ+™­ðŸ¢sY‹•É’KR¦løô[‘ø¥Z=»Öšö>_‹•Ôô'‰×‡¹»Ï7è•UÊ_'ž:Ý«©±Ñ^-z¸uõ ôÜ)l%ŸüùxN9Àgœ_æÕ`«…2¬|¬ä(ÿ"*Õ_ÔWZ<ã¹¹ˆ¨X~Çú¸yH+š²mMµäAð£ü ¿ÇRàžíÐÔàýŠ‚î+É`Üôª¢Þ8ü…PíØɳњñí«Ý6᯦Ám2—=ý¥£êMœ_:µ ]ƒ§ZSòowí’zÀææ´¤ÓJæ9‰§ØÌ¾‹êäyähMû÷vŒÖèT$VàÚÏ4Ç,[å„ñû¬ãŸ¶õ­ˆê¢zœÕ<¿ì&p]’œÞ±ø.š§`G‰8õh)ÝY‘A¤ˆMw¯ÝÉ:5˜å-f¾›‚¹[+œ–’Xž¾ga•iöÁ†ÿ{úµ¶ül‚\ò°NF­ÛÏ‚Þ3ÉQc×ZඇÒ9e?èÉŠÄøjÛ¼¢­WÌw¥|t´>øi]B”Dzl8÷\©”7>ëÛˆóŠ:à‚+6 ('­¸8¦ƒY!Õ‹7wÁêtÛY€zÁ”Ô„BÂÝÞDŠ™»Y¬{†u_<„ÓµJj‘I…\[¼ÓÎ×ÕT‚'$¼Qן[ô>þ1pêF°<äW>4íjÒ¥‚„Ÿ'rWK1†äMœOË×”û²«q˜¹šãÒãæÐhë¾–Í¿wUætË$à1Ë$“V±u)ëî~\9!\²¦íÌÅ”s0爯G›gy®0OøºlQ;¡®Èœ>é5¡N{…È‘—½Ç{Ym<ç·üöïd Økm:´T‚ök<6›ñ×À›ŠÞº5ð¦ak«yb¦¦!‹Ñ‚Ei‰=½ðýè,ºV±¹| Ìv€ ü´k[œå˜±´…c9ª¨œ°CE±°7@ûC’*éõŒ‰*Â7”uÀÕJËÇpÑñËIJ^n|›,ø‚trý\˜û—åjÖJ)¬ýÂ{sÛ6Þ÷W¥:’«ÛÅ…Ü·t^×¾ Ða¸ QÙmŸˆÆaàl[˜ÆLÄŠÕ®ghàñï%eí.ÕK–}ɪ}'Ã6óÙC°Ð VËs#4úVâ§È>ø§ž>Ÿ ül—^N cÇÙª¬€xoîC>ÃéfÞ©hÓU÷¼‡¢öÌ;Á£–BòB±’‹ñu|ºÊýyƒ†&?mÖ¾\¯Œ-k½F9câѰzÙÖÌnÖµk×a2Ü܈`pÒwn{Ú¬Fž,Éò:÷úƒØ×úìw¬)oÈšg$Þ˜Q®72›šaRÑ<êŸ^ŒiäsˆZ3„öК´MçŸOQ \éÒZe+ncªþRÞ)¹ÓìQ1®ÉiæKe·Ž*½Ÿ÷Îå¨yw¼4„¯ª7–ïÔ>º×gõZð[VAáùH¬ý “ìÎíÕj±¾²pØóÑ!Ô®\¬›Å—x&•0);Îp†ðfFö;³R5±“ÖäÓ.Ì®Uq|mK±×{éLN'КÆÞØÞ©1Pê{¢œ°­|$fQƒ§½Þ6L%•YÙ·\W{’MÍ@]Ž7¸•ç’ÙIOuÚúÌÛœÁr›{VjÐ#ŸÍNikc òHÒ1NžÝ0û©Úøvb=g0¸ðªRžž/TR*OoHÓ¤Ã'ÄS‚1æ÷8˜BXmG›éMz£@sc¬rÈûüÌ–áÚ ôW +öq~ï Ô ”÷ñ>HE‰¾:yåŽcWq/}¢þû?Æ~íÍ9mÝüjÌÖì/ž€ßÊw :ÓØç+› ŸÌôäªcßÞ­¹—`ï÷mÛäΫ{Köç¬yŠ:§!ÑüÝõžPe_w‚n¸¸§x¶/ã0 …Ÿêˆy—¹t#½¯Ò¸t`Êãbä¤ìýØ^’!/è’üÜ®X!¦ÿJß·f{uRDé©ÒÀÐíö¬W*>ŽB·†xkèôË5¹Û÷4„!¤-²x‘×oïɹ]ÄÈÜ<Ò¹šY™£ZNÆñ{Rd¾ºn9î¦QRÿ¶ªÃd²?¬­´šð¥¾÷óJXÈ!—ý£C34–.«?2Ä~dç/ÎßN4ðl^'§—YòÅó£ÂT_|¹ º^#1·›ÍÝ™ë»ÇKµ®´¥wyˆÙ:3NùàUgâƒdœk³Ì.éRC)<õÉ¿K‘oÄûy\ÏJþù1~.ùF=ãÖáüTtÜ>Ÿ Pd*€è.’ä\ÂE2Òà™6oàz{ƒÈºšd__ªRþCCéŠÒ÷ñð×­(ø§t¢ *îñÊ‚ûl 'ˆ‡ï‡ã² à©O‚múµ–뉕çDè¡Ë!)½OÜQ³ï/ÔWÝ“4h^ØP+¦ ê 9ãr.¾V-‘¨HOdØx3*_«E~g§7¯ÇŒ§˜ÏÖ—vçñ³nϵÛjßÜãÛ©D·¥¨B;oNMŠöói|±ûNêÂm`¹'A”'C|ePq+S™d˜‘g¯ñFúÏÁ'BÏÍ•|yê|këw9|^¬§<›êðÜ jãÅXËWÝRÓJ÷ð >41¬¿Ù ‰°ú<"šm¿¹ˆÖQ©5i)ž„<ÿÉ¿äxûx­XÒxý£q*ÚX˜WÃÁ(ÔhRqàR{­®´Úòy«ñÅYKüÿʦZnJY_Oh[˜ìiðY›còÍl¾:Ô3­» O½ÇSa‡K&¹Sg+€‚Á2î²¶³T£¯ß} yEÚZìx^°$¶azÄ*R“Rú±<¶­õ øe#®n•|)>­íCNuž^üåJr},WDsïý‚I^üf>ZöLC¬‘ûQàaÅG|²¾b^M¯¬Å‚iš}‰M" ÕoÕs8ðN3„'H84Ä—0.®·o€rlF:æ5…©uvA×gg]ÇŸQŽX'·?@_˜ÊåYlŒ¼žÄ‹ú|‘ïçüü̯þ$)ëö¤³‘ßEõcãèÈœÝï}ò?ÉêstrÜGžŸB' /ºzOX}¨Ê…"¾-™ô„VÂ.cK/% –(Ïi¶MêÎÇWŠs?Î’•å#ão.…ÝÕóà8?õ8] ‹kiÐÛGåÒ}¼Ë4xFmüöyXwHÛ¡¯‰˜·ÑO‹EÞih(¤œŸÆId ;jÛ®œõ|JO¾Ñ·š¶­åÓ¡¡Ô$C°Ôõ¼y³t&TΗ˜»Aòž#¤‚@ùA„2éé}f’SÃÒeýÚ²Úò‡jí‚B¡GüÃŒ.¦ „›Z´¥7zŸ¼ó¾m’‹_ÍÒƒoµ8_SáB¶pç ?²îütÔUâJÛ¢ÓIb±D1Ú1ZL¼%„OU[WõéQ’ßE½su$®ƒg×ó×—j1&c#e™Æ ºýܹå«qÕè’zD*œÜšUʪS$aØîÛ}ö7lpÖ½‹bÖhg½™¤}ó‚ýÇC’üz‡Ô§šð‡}VÚWÅ[:W£0DÇ ðõ8Þ‚ÔĤÔk¨ÍIÃTãYÄoå¸tú¤7γèk+sÛRÎlž)“ ª4vÇRN†â3¨ô'ÕïúY{I3¯\½dIgÆ]W;÷"Ò~/T@¡nygMQ˜ í”g¦§pG­Ïh§=dz?,«'!š&£ÛUŽù­·Xõ‹Ù ^º¦oH·ÒÙâýðgŠ-ù›Wjûcs<ÐMwí¬Šr.†bÎëõ.}Š—1+·ÏBT£¡»ªk/‹&áGïñ»Â™‡ÍÙ?4²ä?’ çúAÆ›¼îoõ·ùÌ×Ts²ðIŠÏ–ƒ.iyч|÷Vê.äL£¸Èœªñuy#>f³×Ë{¿<­Î‡¿w+‘7ez“ÆD—Ž»w«DӻˉSïºx¿M×èÅ~B3²ÀÀ¾‡’w÷ŠAå“MsÖG¾U˜á¦uý#Jk‚YÞ;‚Z ®)?#8“ïmy’T× ¾%¾+RÔÊÒ­|vÒNrd™¹Å}ÌÖ^¿•’T’Äð-@4so©þ=?i—€.¦ëýéíG³ˆL‰‰7‡]c\A¸üàVítŽ]À¼GW³„Ym—«EƒJ‹B÷"üƒ N~`ÿÜ1“Õä;ú;øø&»O:8Ò6Óù²ê4úå ÆÑìªÜE}(¶ˆn¯;íòκeŠ*¿ùœÃ'}`@ëµzIaà[ûÃY?Í2%‚ÜKö¾õå¶oöqííì£”É <^1 ÙFö*;kUœÝl[¥¨UXgëV{•óÂÔÎ$áÖØQß=— ºãW?š¶ö¶ñEù–«ßúX=¯\P“\c®É{ cÿî+À¯¡Íï~ç|Œ¢ïüfOMˇ’Ü›ƒRÃg9³¤B  °ˆÔëFÎ䵨–ñfÛ<Ú×"2Ðf¿ÛIpíküŸ2ifhÑ_èY޶Ӯ‚õ*Â3ª„•ÞŸjY\’ÕPfJv«Gɨ&êȦ{¸l–¿;IøÂ±œÄ‚ìç·ËŶø¨‹~8h©4y¥Ff¸c#ÎK-¯ÉIÅÛ°YZªnêäáº6u®Ë [¦C,¸Nˆû0êl5%˜eþ¾(w É·–a„cê {¥„N>5°¾TlqP€ ‘·¹.¿.¨Jî^Å씼æSXw˜2–ë„äTY®Ñ3Z[—oí/ÞÈËŠ—ߦ˜Ùjl5 «» ž>‚PW#²Í9ÙÂ;¦_¨N.¨|e½Îp|wŽû8@+s]A Ø}¬_…MP': e+ywp¬/ê*¾_sB®îòDTŸÜľ_¢¨£0Â1|ô޾¬TsàÒ¹:Üq£~è.çÏ!BIA×xjŒ:p½a³¯ïG‚kËCy€ÃÕko×i·Œ„ý<< —ýag|wuñú®Å%+ûˆS?ý~÷·dÐM‘¯L™Eö Àþ ÌçÔ*݆ìrÐr22àc7Ìkºžãk™ÛâFƒÆ7xâRǰXÑ™@GXK~È•ƒf$løþ²ˆŽ_8žVÆYk1RzD,Úv•ÛÔïôõ(b‹û=‘'ñµh fLøÁ¹Ú =޼óLLUâS6ç·*ó›ÚfwÔ#8O²Ý{+"˜ƒPsHhnû¢ÑòìÍÑ5~5µ+¢]M‚9’„"Â7¡Š ¬´½´´Æ¡€Å°/êRmîÍ0Ï„4wDíÉŽjÃRhßf”—›S*A—õPL¶£Ã‹/8>(Ƶ¨ÓQ»4èZÜ¿¬8É–'É S‡JÓfŸT®t¿~r{ìó¤nƒŸ‚ ¨ûK‡`ìèîŠÜ8ö¡+!A‹ð·XÒ¨"É¥Áø#\Ó‰˜Ãñî¯Kš,¢‹b I9u÷@ó]0®™¥'IÈ% ;)«Y‡ «¯vþ¾HªŸz¸îÝ+\.óÊ2K¹Ÿë‰7È·œÂ}‡Ì¼ÈîN›:†4fjדI<ãú´Ó¼`D<£e“§+Þi#F23o²ò¸úÆ~ Xæ´B³uðë®rìË2økZùëà)©ŒøIò(H²˜Ô“—rÊ2Ú¥ÕŽS7 >_’ëjðO9wŠŠ(tÞã‰Â3ßr1á=>뛵?9:ìåJ›!e&ú@ë¯2¶t¬«ï€-Hs¸ÄÛ­Öé~"ÿ¯c-ô®¥2ænÂß]ú­&Nœ;™"ãR-Ò.‹uÉ µñz]õ…!ÇÔëËûEríWK¯ÓÇùŸ~:¸ÖLüLx‹%²¥Qù¼˜¤³¶oćC¸öÓXEh.A·áŽ”ç·‡A±Ê\ÌÁG|CB‚ÇS©ÿèĸ endstream endobj 45 0 obj << /Length1 1454 /Length2 6850 /Length3 0 /Length 7828 /Filter /FlateDecode >> stream xÚtTÔmÓ>Ý Ò¹tJwJƒ€°° ,±‹Ë²4ÒˆHwK(Ò( RÒÒ *HH ˆ(°´ßêSïóþÿç|ßÙs~{ÏÌ5sO\sssÜ1Và ZpRXL(P7T7S€@  Pœ„›ÛŠô„üm á¶„ | p˜ü@Ô£Ó!1HC8  çë “ˆIË‹ÉÈq Pî/ !С `€¡@ƒøp«Ã½PW7$梿Ž>g~€˜œœŒÐow€ªuÁ† ¤Ä s£3È`w†Bÿ Á§è†DzË‹Šúùù‰€¼|DàW%~!€é0…ø@(ð«h€È òWm"$Üs7¨Ï3¸ Ò„€0 O¨3æƒññ…!æz€™®ÀØûlð@ðgwb"b‡ûÓûW (ì·3ÈÙîå ‚@a®¨'`¬e ‚ôG @0ð/ ÈÓŽñ¡@POð;w@KÕ”øg>Ψ7ÒGÄêù«HÑ_a0}Ö„Õá^^Ò‡äW~PÄÓøÑ¿æëƒûÁ‚þ] 0°Ë¯BÀ¾Þ¢0è}_ˆ®ÆŸ ŒŠä+ ÊÊHÅûˆ¿³›è¯+̼!¿b¿Ô˜*B‚¼áÞL!¨ óGäBAH„/$$è? ÿ–HÄÄ`¨3àq…ÂHþ‰ŽQC\þ1@@ý¶@ ÅÀ_¿¿Oö’á0π࿧,j©«®®n"øWÍ[ÕÔàþ€ 1I€°¸ ”‘È`!ÿŽsý3ÿpÕ…¹À¿býÊÓ¨¿rFýI¾?—„ðï`Fp {!¾Èn”:c>bÿgÊÿvùÿ1ýW”ÿìÿ’–¯§çoߟˆÿò‚zü ÁÐ׉YC8f!`ÿ µ‚ü±À†0Ô×ë¿­ºHf%Ta®ž÷ê£õ‡€ï@‘Înpæ½Å¯}ó„ wà>Ð_O @X ü/fÉœ=0ψ†˜˜@>˜Cþžâ/‚Ù©§  s†ƒ-Ÿ¸”4„@€H0“ÇHR"`¶ ñÿMm€¨ ŽÄ¸0å†\à’_S–“ˆ‚~©þd¢NKbŠBþ1¼Eü‡( Eþÿ•‘³/Iù70éþ%ÿ~ ˆ3Éâ;¸³B”û˨öÓzU?áqEüƒìSkqáñ²{DÈ~Íi‡ÕT³‚ü÷ú•Z‹}bZ÷Ü;ÔîŸ.ÏÿúÜÀÞ y"Ì®µíÊî”üîç ölZú&ç;Ê×XÅV™jlòåˆ~¬;¬ñT]ÄÊ`×~3nÊ`Þ—½ i~Öîøp=TÄÆ7®$µ¦ÂàM IÂ:Ë%—Eå¨Ý\š 'mZ•]p¥íF0„ `ùÉrðBÞ®O™?Z3g¿ìò){¸/4-‚H_…çdò:uY€;“FWïÛð–[´Öݰ­­€\¡×´ÇE‹Õñ`?Ùç~òÚº+dÅŒQòÖ’|ØÃ Í‹xñ°Wª%LF¸ :@7Õ—ððŠZ¨ˆ…Ý+ûÅ4ÈúiKòfŸŠðÓOÏ~üØ åïf ¡®Ò'Êž3p×z³Ú¬åwÂ`/ÿÓ@Ó*}hSa xs¬"¹©ÀY‘¾È2ð£T{”òðyŽb™9ø`ìôÖ|Â]Qõd…Ç˓Dž=«]T—QÎtu{w#iôªgûÄ7õþø®Èyd<'zr8BøÈ+¯PVÍÎv£ÖtHºò¢ OªÀªãáv)ÍdNÑ@àÐy<¦ÚñD{Ö7&a˧ biYÝ3h{oÕ)µÃ-–«Œ;Þ=Ê™Â_ÑÊ#Ç¡C$4µý$Ç>ª€yhR+;ð¥I•æå§–‡ÅB£”ÊA§ÍŠÃn¾qH1\Q爩8K°èeßœûµg‡ceýÓ§åï:ÙcT~q‡ÐËÞ®7_hÉ&„NÍAUmñ nIWÂ6ê$®ÉfZù\$ëв¹…L½ Ów Ò|}ë3£¨FbÜ’lì?»„žeÜX·:Þ0q5ãÔv×>x[Å÷í#Õ·¯ÁÆnÞW®Ò£!ÎKá³W‹èb`â›×PIÕ¸[216)Gî ¬²gÇñÚ²‡¡×yÚ‡¯ÛzZ%•Ü7ÅZ^ÕH®™‰:Û ç}+Ê— „€ÄîÇ’]å³ï3¦6b–Õ†„c¹¬K­Œ^Šú™|0½P7ÖŒr2D9Ä;Û‚sü‘%5d·bˆò;éÚ‰cªd)‡©T&â˲ç5•Wã±TœæöÞHkÁ^Ïú©á)YÛ‚eq>ER—¬2'–të “é­¬[L[¶ËÛ LÉ üç£c3;VŽ’N+çŸ?ݘºt¸ží¤»ÓvŠ-êØ4¼·M{Ć®Ee]bý”|M‘´¸iÉÆæV,kÊü®rË¥Éü˜BÑmäÉ0/ññ[@ÎM&ÿÌpešbo?C¦y¹Æus¿D@c4'Ô²|%)é8Øå·6“ðû2²—¾F9dIŸ[¼‰Ù5B3Ó­ÝÖ+ »SK*,~èZ!¹Å´ä³±y˜ý…÷=Uj(Y7›‚Ò”ºóvËÜÀ¼\ï6vmÀMÛÆÎVCw÷1'ƒGèpÄqä'åXöL* îØ~&îÒ Ç”x…u VÀ«à*õl)Wbq8¥b†<^Ûþ¤Â‘ðÊa}Ÿ-y¿ÑöENšÄ{ü³f°FnÌ HTãP?¢QƒQ1&MË“Úe~OSŸøy#á-ñ|Ñ(µà .Ù ÀìÑ÷o,©Òa3îFbŠÑ“=Ä1mÙ¥ÖG$êik(œÈpÉ2–l˜MþZö³NÐ$ß©‚²á2s©§ðqך©¨¼Ÿ0ðëx®Гš7%ƒ_ž1 Ó–F„8YŽ¿æ9·X+éGpÚ×¾K Á/3\>qŒeqèÍP$™~j½º¿/“ÃFÐeZÕ"ª7)Yìý)vÐ0SËõXOuµ‡æëñ¢2C²…AäÛ¹òô„­wš[µ"àYjWVï’ËȬ5ÈgÓäÄ÷©Ò6ž‡Õñ<ÏS]<ö)7<¢kãê¢órÆ&&‡Ú”ƒgÒfEÃåW*ƒán×ÕóÙ0uÜPETãaÌ·¤õùb=i8ÙÄ ƒ—™ lÂGº±ÏdXA΃é{§}e‚ã¤,M¢(bfä½½Ã>©ðÑöPóiî<­©eUØ¡÷^l…€4êÐzñÐ…71:Ós· †â(Ò~›2ò”äR_µÒX°Æ±ŒUXîrð€†”ÚÌçnŠ_- 4qœÂx›½©ÂK·é#B™êdiGúãGdgŒ¢¼°ˆÔ^V¸Ô D~ø ~]_ä¼(e(‹Xq{ò~a)œ µÿŒÅ$ŠŸ=)°·õ¦$Ê&wœl¼øèMã8¢'Èrœnx—u“µ|S'Q’›ô‚ÌÒiu¥kÉï¬=óáä»HSÆ9’cõÆW™F ·* Å£«=¶ŒMÏ …[º@•eª'^d«#;G\.E$ é6¦HØ j«œ¥³û:jC`s/¹ÌX3"k¦X|;Ñ%sx§›Šáœ^¿±†×Câ0‡‡Eƒ‡õ“c2)oÒZõ˜ Ëy 2+æ8¿`).œAî>»ìX„GLÕ‘æÉùcµq! ½mgO²âê%‹¨Ê çVõ§U5šíøò8üPUÒCSÂ7Þq\E7Õ…ohçÜÇ^o¢W»ØÇŸ©í‰r~àOÒ&[s¢ùôX„ö'©Òk6Þ9á«äÕñø«÷2óã…e«é⊀·yU!÷6Ç—aóà¨eý‡Öã¼04ÊVܾfqˆí¼©3kMêœ3”8nùöö¼^îÓÝ÷bâêÆ‚L [[]U);ªï\2rTœ¢B̈èÞñ–_M\ÆÅ*í ™mדø9 OHx®V˜ñÛÓ)MѳUV5)·M{‘‰o?T ~´Øè›n;K&Zz¢_õ›rÁZ¯hPr1"Øsy‚ãA¼4üÍ ›{™¬Æá‹úÕƒ?zòA ç½kA™^7ýµÅMàiK$òêÌ\Žõ\êlPíë9OA|9£Ëízšct…IDÍ›-ü˜·H*ëé 6ß'ê|P2ì±mÖm³ëîNY¨­„Õ9º×çM9ÃÈDàÔ¸34"{›žìÃè×Éóún•FàôKÒ Ò–PVè˜1{ßsmÂe²jûiPb+¥‰aúœ¬<—ö½e‡>3c‰t®);’-½†¸ešÅãWðw«=Ÿe?©ZÛk¼¸þ,î„û j¦â|çLµ}ý’«½ÚÀ¶[ÿD´ÍùÉ“:Á.6êì)?’s3ó ý8帣 l³´±•ø PösûBªqNZ¬{O8ø³)ê«Åk4}ài±Úûôcˆ³â éOJ\¸câ˜ÖªÐ?µ¯}p£M#þ°•îéú8Gé7»ê1™]Óy©”¥££;´…rL¾w¤Ž‰¤|ãp'Š5ß@lïQê1•±R„K¿·ß¡Ýª(v*­ÍòRh< <6ä<Àžma$az·$ÙÌ_E2wÛäVû OPzåSFý‰ÐB‚NxFäcLæWçØY!u!kôÝìå˜KRl…lÞoxé¦çPH+Gñhóíe-ž7jÒ ‘¦u÷>M/ÊUÓ–‡e”Ø ÍĪè|y“dÄ#äêÔ ßk„¯*tT–L«fâ?È[~€,ÊoM,Qê䬼;CF=òCàâñtÞ-"ß„D{›; Y¬ÍÞÙã¾±íFj"µ]²×Mo iTL–ŒË¹æÁ -2æk\£½@ýáðnj‚ZV:ÒkusâúV+ ¤©oˆ£ÚãjÚ3¶GÙ\.²ù¦AÙA©'ýRšKý¸ÛôTå>熖ÑÇY»ì}×Ê4‚õÌó¥Æ3tì[Qè•d„hxlê§Š½u§Æ‡/G?*¿½zXn1E`= ÛíH"Q2/\7L5õëȤ¾Iáó¿â6ÿºþµ‡R§îYÞÏ"9%Å«Ÿïéž Fê¼p5› Š˜ éÿº½0è_Ca“¿Ž‡O/X³k‹Òì ˜_Ôàçöì £ÛCN)ctO]wIp³ëçëÃPp‡hÐô›åe ò8{«˜]1“‰;ù|êO¶Ni°9 ·LF¥žÃúôÍÌ7VNxÕ;–ò€6ž¹åÅÚm•oä]…”]¾jܦÄÙ‚îûGúœc·X(8™×¼Œ'3:ÝL‘ZÌLŠ=®JS2 Æ #üáÌ|¬uxX!¨V¼Õ…“JÍjöŠûÁ{0ûsxשԻgj±Ï<ª¥Úkß*uó>‰<õÃòD;*³1á,bù'g0AŸÁ>G$éÜ'™[+24UwÅqúp6ã^õšš§&íXî[p&%)p£•ïÇ3²ÏlìàÓƒÓ7WW”ÑÎ[ÍŸïëÒ%nªh†yf`©?V̔Ɔ5ÀCç1ÔC¤æzIÔÝý}ϵ„Bª7ÌUïOö-Ž\©~ŸÃ¯[n0ùŒ#§-íl¯F»€NÎ |Ö«öªÐI®ž]ê0n²{Y¬$zÑjP9vç"èå™Ú÷«i³ª1‹k·‚àä{|Ó+`½Qyܬ*gÐñÖ3£Y[imQ….qÜõù9ñKÉ]×…GKÎ=J|¾‹¦\"š´ØÊÏò¹oÂ.Žk$"Y“Ã_1£Bhó/øãEO¼#Ú'»JPë;¨*åpXLF"ºª³œ°Ý¼ÌPU-£ÇË[³…#Hÿ#é3 ywçÔ픇,¾ÛÐu¥xþbâ²myó{³ h­Ó$ïü ^°}‘V) ø‚û¶˜ÔôŒ¼–s·¹Zà’Ò² T²Ôn¯Ê5ïãa³Ùnë³P2-Š9»bøÂkní~—•O¼ø¨hÕ‹SÞÿ³D×ôugU(°Zö(÷¾á™ñ”™räCù÷'×þö×Þ„¸ÎíÞËhåôal“ä:±tÞgG©%‹„ Œexz3•6µYJþ%„R$A%X [ÙôÓjâ‰Æ§¹JÒ2ÞIÝâ·ìâ¾Ü^{M•B4‰ÓdõZÔéYX;O«"]HUéw‘%j^L†{@úÞÆ›}~ õBÚK]úOžkï_H`¯ö>.Rã\£kõßžë¤ayç4Ä|×düÖÄ’M¢Œ]ËEÎášh#­‹âªÎÜÌ;ƒ»A¾±o¢Û‚\S(ýÈ D†èàŽ1.çÞyaJ8þi‹%\î'3–QY-&n‚Zö½ñîh&!ÇåÛîOQ–^0 (vòQ½cUB³x~zRh—ð¨tÍÇÙè({díFŽ»u:î‰ Q_m ªNi?%o/¼º¸»ý¨’?XññDf·h¯îu}ô$ó¾j֬Ǯ—ûôļº‰©<‡Í7â’2€Dmðµ˜$k“õT×ÊfÚ±{N2"nsúbŽô‡¿ã'ö̈9~îR6¾ émZ“Ãw”:0¦„†@(có¤p‹¡_ߴ⤩ù‰Wà- pŸõ>-ˆÕQÔöVXÊž¹Ð]·»“…†‰¶Æþ6‰Aj.§;Í7òÓÔQôÌÁ6žGÄ¥s½Óñ¼e‚®®ê´Ð1[OÔ»Šëe…óïbž•>Šhá —/W‰âš)ó ƒ¥M8Öyð¤ëÃ3,kå.xWML»6Þà1Á¥’ïR8¡‘RèÎÀ´3~ôìýçïTÄu7[l{*߯‰†eûéNƒ³N"ò/ž¯UÇ–.©ô¦÷Üû8erÒànT¦ýdÈ.=Ø•Á®ÜþÖ÷f“·®,izö¯ðì÷nLŸhJ?k2^?¹]t¼•²Ï=U{ðiú ¶ô˜Ô|¾®÷Àì’—Kžz™–ÈÉ‹ýy÷‚žŽ™¸½/±~”“¡¤ò¬Ï2ß¾šOßúê‰û@ §ØÖ_°‚îŸÍF‡ôOùùµ8Ô@3Ü¢Nß–¤;óVØ tçhç\_UpØ“¦Bí’zÄ&<€ï\øÀO2ˆóÕ¨¥VJ˜j”sfïã`r3ñgOaéo^ ç>OZ¨p©@…‰¿Yä•3Ì|÷"ãSy™sq+u·˜áâ#ÿW^uøÕ£Ï^'ñÕy”>âI™C|Ñ óælJ©O¤ëfÂq÷Z`ÖÊN[A†JzKX¢ €s>z´—N§°,zØ¢´¿Õ~Yoˆê1h7â=©eúšà‹¨tïP‰_ìÚ†ÈGZ«n\UuEµ[¿X+’¥¸”°*Ø®Ü&L[äÆ]¡Â>¾È4—lbéº(šçˆ7$r»D¼Mº]ž¼S_s4wÅryßR¯Ø\8èÖŒç®EWð“ÓßÄѽù›Œ<6ÆD¡»‚}OÖCÖÞ™P¹B r5£¹Þ§63¢S³Ò=˜—"Õ®K´ŽEf>F=^ð5ù¦º•EY… ¿•n͛϶µ—DDß3,ã™Ôm§ï(½IZ8îó¾6b5…|h1àJ–#у{[åiº¦€î0_wRÿi{üùeÊІ¿Í´ý³zYïýÀ¤µ7™)2/‘¾Îká¡7Nå•7èÑ-ÄédØêhhÖÒ]XM3ÓV(k™¨¯l¶¦n­4¼{@Îâô€mÂ)ë°t¤ŽlÑ:¸X§çäkì¦éø¹å#Lѱ¼á›u•¹aÄ* «]µs™êKŒÅ+ž=2.mXªP®ø‘CC‘(þ>TÖ ÔÙø±üZ¤üé”wP)á,±néý]¼ >Ò<5hæVa#këÍ+¦‹ì͈Ûf^øštû}Á§3ˆäDº‘•ÇYôø¤èÞ‡I©¦æbÛÏŸ6|x Ûß—c”Ê)ÀO2¢CÞʳîlg¹ÏüUÀX%AñÔ4G=犂`}eÌqewÿÒe«qMÖ4ÈŠÖáGm;§OöMêÙÚÈF·ãcעȓ}îÔí·Zœ‰·Tž© yT¥q4jOTÊp#%ѽµ.k^…‰G°Ó™ê³úÐp¿´‚T­ÄZiìfGÑ@ÔXWàçüJkßÙ>Éâ‚…ÏÐ3uÎ[ÔÖÃÖèP9^¥1݆·#¾tYª[Ý Ì/f©ÓæôVTV BŠÜ£ f¼j÷4³¨7yà634Z'wölÁ¬ôü”Ûx×9Ýá5^›TÈñžFÇ…„íYý^goÊ'Øæ¶/‹cÀ.7÷7îç~5½Óœæ…¼û=œ_:Z­I&7xÔ%‹¨¢•Þ½"™¬^Ûèˆx®aØ[Ú¤© œl¼to©f¦æE§¼ÖhÜt© ¤ãû†}Ff`ÄBÎE•sG,¾@!Ïmò;LWíD,>¡;&WŒàK|?§tDP@]­åYâ¯jX!€•ë´ªã5¼–¯T(âÚáŬ6¹6tcþ–`ÓŠWiWãk‹Õ;^¬ž+%êÏ'Ÿ‡Ý$IµÊcc yFk7ªÎÒL”T¬2Êm²üS‹zC¬/mÁa&×Õk$5¨JÞ¹>™y–Ï꣥è­=ÈY8’5MÙùq£W äJrOÖÌ3øÐ“q<^ä~µw¨hÓŸú e‰àÐÅwf~S]‹ë¾BÒ¥\®×ʦ{£XBdþM‹ýÜhw1¹ÃÓk;æršõà ª­;ä£ú¶ï곇÷ziµÃîä¯<¾{øJMW¿ÁËÒé.Œmf¸¨ÏLåYŽwïYŒHçZW9Å”ä­ë 5â€Î##>qål®6v5‹ÕŽúè)áëåÀ0/ªVÆù5¦¯Ž <ÎÇEý‘ŒÛâîÿª€<± endstream endobj 47 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 49 0 obj << /Length1 2319 /Length2 19751 /Length3 0 /Length 21098 /Filter /FlateDecode >> stream xÚŒµPì²-ŠwwwwwwwgpwwÁÜBpwwHÐàîîîáòËÙÉ>ïUÝ[T ³ºW{÷7äÄJªôÂf&@ {Wzf&€¨¼ 3€‰‰•‰‰–œ\ÍÊÕø¯–\èìbå`ÏóAÔhìú.3v}çÉ;ØdÜl̬ffN&& ÷ÿœybÆîVfy€Œƒ=Ж\ÔÁÑËÙÊÂÒõ=Ìÿ|P™R˜¹¹9éþ6Û­LíòÆ®–@»÷ˆ¦Æ¶US+ «×¹ â³tuuäadôðð`0¶sapp¶ ¦xX¹ZT€.@gw ூ ÆvÀ*c€%¨YZ¹ü#Wu0wõ0vÞ¶V¦@{—w 7{3 3à=8@UZ è´ÿ‡,÷ðooÌ Ìÿq÷¯õ_ެìÿ6665u°s4¶÷²²·˜[ÙŠr ®ž®tc{³¿ˆÆ¶.ïöÆîÆV¶Æ&ï„¿37H+Œß ü·<Sg+GW+Û¿JdüËÍ{—ÅíÍDìì€ö®.°å'få 4}o»ã?“µ±wð°÷ù˜[Ù›™ÿU„™›#£º½•“PZì_Ê»ö·Ìè `gbbâäf@OSKƿܫy9ÿV2ÿ%~¯ÀÏÇÑÁ`þ^ÐÏÊøþÖÇÅØpuvúùü©øoËÌ 0³2u˜-¬ìa{ÍÿÁïÃw¶òè2½ï3€é¯¿ÿ|Ó_/3{[¯ßô¿ç˨¦)©%¯IûOÅÿщˆ8x|èÙ˜ô,ìLæ¿–Œóý‹ß»Q2¶ú7?l¥íÍÜÿdûÞ¦ÿÉØýß ú÷8¨ÿíKÁá}kªßK®ÇÄÎdúþÁüÿ¼ê›üÿmø_^þoKþ¿’p³µý[Mõ·þÿ£6¶³²õú—ð¾´n®ï ïð~öÿ›ª üçhåfVnvÿ[+íjü~Âö¶ÿi£•‹„•'ÐLÉÊÕÔòŸmùG®þוÙZÙ•\¬þzVôï£ù_º÷Ó2µy:\ÞWòoðýrþ;¤¸½©ƒÙ_'ÆÂÎ0vv6ö‚}ò;bø0¿ß¢Ðóï%02Ø;¸¾›ÞËó˜;8Ãþ5Qv£ð_¢€Qä7â0ŠþF\F±ßˆÀ(þÄÉ`”ø˜Œ’¿ €Qê7b0JÿFïÑe£÷èr¿Ñ{tùßè=ºÂ×{<¥ßè=žòoôOå7z§ú±½_Éoô]ý7z§ù½×§ýÄý®3þb}ÏÅØÎñýþzÈþÃy—šüFïö¦ÿAìï:SÛ÷!ÿ„í/‰Ýo¯MŸÑìø^ðwÌ÷:ÞÇhkl÷ã½RóßðoþüKiõ¾Û›ÛþaûŽ-þ€ïéXþNî½1–^Ž–@û?ï²?Ü1½ÏÊúøÞ ›?à{½{oÆy¿¿NŒxþ+q‡?à{⎿Syç:¾ÿBÙÛÍ]K™ÿ•þóºüGüžÔûX¬þ˜Ê»7'7W ™‰í¹`eû­øo/Üÿjþ›Ïý¯ô¿ÉÌÌï~œÿ€ïmrùÐ{[\l],ÿ ¼{ÿÓüáö|oœûð=¨Ç#}o†çð½ ^ÃÿzLÝœß;ãú÷£ýþ^üþû'ôšÂ.Î9˜ò†Z׆¶?T ãyÐïŽóO“ïj~¦¦÷Ytîp{B„J¡®Ê ^w¾NéE^Ù§ºZ"zõ9n©‡úØš¤Üöìûb˜ 2µÛ»0‰98Qx,\7@ƒO¯&´çûêä«dÞÚ%Cžë䯅¨”öàÑ/éY7Pº<>·«¼WÅ! ÷Rú“>F=Z/¨x†<Ï$k›Ò•žšõÂiæön5gâH&Öï$†µÈGgƒ%öqÖ{µ\Å¥‡ G›üutŠÂGä UkÞç[ÑÊà‚g _Q]Ú =2ÃKF••J”}S_ûèb'óNn ”om'©¦¤ ÝЙD£ªÍ0 ͵†ÕHpÐi.²Ú~§Ñcn†¿Äý³î 0ƒ myØÜãó\ï´:ò}þ><­õa¤éûvŸf±à€ ¾…3¸¥näÊ2OAÚ‡R×1°nM 4:2Ý’{ ×Ëã0>ŸàK‘'\æ­B&&®} £øgì¹¾—±~  3(ó¶¨ú!o! o&]i…8–¬âF™áTyâ=ŸòÖâ(•yk 3!¥Œ˜ b%^Dr‰[ì —CdElÒ’}»ó•#‘zÁ^ÖÜ gêmñìÊÄ;'Qôc AÃ"!aýÜwf[wee"‡"#±›jœ¡yŸ:Usº]Ó%…£À¾ÞoÏöÁ˜žª‰¸Û5Å!iªñ?mu}ñ +•#§,Z”=äû軨¿ VÔ‡S(„ùé¶)¥¶Cñ >y5–©÷HßüϱmâSÛd>¶zÅlýÍ^öètpÛ âùíÀ/×ëüTÑ‘¿Ì#›×Ô=„ë—ðk2fë'ã"¤P¬Lèã'R€ÂÊÌ5¹"Zô·¹¤lë-ï,¡'¢¸fþJ½Ú5ô[¾°2~½nmP²u1Áõ#˜É½Ž”œŸž’yÊöCex_"qv¬ªÈç’³‰ç§`åX@°jt³¿ ÜlPG›‡iC› DAƒlóÍR¢ׯ¥^ª )±Šç‡ÒóÔ P¢lüšF”Aªbø°Ø_+*3"ãZ BÑçà ÏQK¤1Ù7Ù}<;'5‹—tÅXòQbÞƒD‚=9ÎãR5‚Ì·ê-ÈA™o|< nÊÈ¿‘/‹™©Ä:ý¯íÐî¼¾éq!smÄòb-7t½â0º¡¡º:CpÇHðš3õÎp4÷ƒnJç5—§ó,Á5¿ëăÈ/GzK³Ÿ³¬ó!ëóuQV_0ë¥\+j§¦ýî¼° ç~ù›’ë­;êµ¶î±)²¹ëfÞK·æWŸ×U½` î™Fá2­”]ÉË<Êçh3•ƹûp¬c'Ïé=ôÀœsœF¾°âð߃'g©ýÔ–eX‘Å>¡î¡Ã’ü.ëc!ª#"™ÝKHàµL…)KÞÇ¢È4­‘VÉ!­DFfû|øTÞLŸ„µ¡Û}<‰zÂ…Æ‘§`!·H6©òþx/3Š“Nçæà/_ÎÒí½æ–˜žûq†ƒæKÍW„^„²©7î®ñoë‚ý²É˜¦ÔØ?&î7õ.,r\+(K¶c'úoží!ÕŽ=:’öÚÉrÍôD›3 Ç—ïæ&„Š4Y<‰¸œˆåÌ~Vnã9ûï0k0F‹ð ÕÜ<3%öhç9x?’>NÞ’÷WtM`xl®m²è;”ö­* _¥- ¹䉨I@bñ40#B/¤šA— {qÜw/­$¾…bËÙ³«^yP”ÐOWWeKz?|ã>Âæ¦LÜ¡}m—~±TxªŸóÙQD ~f—s7µÃø`Õðµ›b˜DþäÈ®_¨Is6¼»°ÂnÅ„œiñóš'£/ÇPýyIëIŒæ·}Y¶äJâ,y<„ÂÔª"rŒ{|¥˜gìh¥¢ÙÂë÷Y¶¼•>?ºá¨H[´>ØK@&’@G| åòQYpHDééWâÚ1Ô¼3þ ëë gˆ67¦‰²þ ?¡ÁkGþà#°,·Æ ãÞØ5›ZH‘ù81 Dâ’(¹‘Õ‹4}ÛI^~~Rr@çuUÜ®ü­Õ{"Z"Õ¶ô±Œ¤WF ± !§)‚ï·¯A±¢:¼l…C—w´V|®‚ŠÙŒYÔÑ&3^Ú¡”ÅpÐ!1èùñÛPw\K#kèúF9· AMéíÖ=$÷ø.Ññ×nˆs€eÒSs’æe|h´­­.ô=Pù~.ÞPÈ‹ƒWj]ÉØ}ÊG} ð:g }P§Œ™¦tg(µ*NžvÈÄ10œ×gµt&¨B™ó@Cƒw!¯},bµR‘A1{Ê®‹«lŽ0ä¤/<Ì"‡_CˆDbãIVâA-ÏäùsB§FP¬-•­EeOÖ’ÉÏŠ˜UâæƒÒÙÔÙz›¯ÆlÊÌXÕ£þ€2î-'¢æâÑ"@¢‹Íi¾‹Yl†=¢wB4TEÁ~!Ͼ\¶7Ž~,ÊE©3\dQ~iˆ»‚Xg”¼$'7™´œÕ/Š$á ¼M{[/Ð20qŠ W|²0»ÇJc…бÂÂØßÝÓÖ~ÚæSì7щqáþJi´]Aˆp⼤ùÈ£\t2ì2};”ÜD$iŸi@ ¹FÁÂæZbë ·G6âyŽVë±6x¢ÈmòV°K¢ø5íû˜fªþ*ãW#¯Òh嘈‘d=å”^< šÒ+5Ì˘À™a¼QHa¸*¹ZB«,g\4­Jú܉®sQÆË°öíÚ©¶Я½f¾(ê~Aû£ÒÓ ì¸¨ºxþÉõ¯è‹iÙîY$©hÊÚPe¡q$éÅ Wò‚·ÔÌnÝoÔœý/¹–ãöYð58‡Ú”3ËÆ½j}—”ZÎ3ëéŒö†ö)à2ry˜pÐT©B°µû¹?&¿ÀV4(øÈJ4¬/_Ød˜¬õÚùcžÉUèC/ªç¶ ø¼D ºoË­¯´îå³%Ý0& @s¶~;sIAï¼¾²×Y§Ioã/¹ÿîr{án"ä“à5M,*Jåƒe Í  ÓxrN¸Ç„e·aâfá¢ôÙŒŒ~Jï®j|&ƒBŽÏ± µÉ Þ·Å?£žëà‰a¤?µ‘Ö||ÈÛë›{Ѧa­ˆwå÷9á7,‚î3íÐ`G×í·óû´@ ˆ¹pf í`S—?b[x,CÁB?pîJÀh y©êû_†å€¥W<Ú:ˆÌ–'Á¥f¹3=4EJ$ï®?•ˆ¯ëF›?(y²J…åbøAi¾Ôó.KΡ#k£‘°ŠÜ°/^¿ì=lJé‘L—éB>0§Ž§Ÿš²+5*Mðƒá¦aزzbƒ6æ`oŒaõäé7Y‘kÀþÆž¢ª„fXäÛ.eÇ„pܲü€iêîðƬdž¢+Æ^(UJxƒ–[žW™k¡#tϲºq*&Éï¼ã­ËÊN`±%CÉ6j”-ÙȼÙ|ñNxö ;nA®¶r¢ÌIZýö1Ü4X§„ù~§ŸEA‚;Q“ÞÌ¢ª´ÝøJÌ}þ„À0U–18Ö2™Tù¥ï¡)¶T—Ó dЄ­Àå]F;GvYNPÍW`¤/ußòšq¤TjņNËt›[Œº_×@ÿ~ßÍ7HtuÀñT픓#GâPièíÝoÓ98²ä¦EâUÍ'„Ïü"‹£ÒúxªÌ÷ÒëéVKÄQ]åp9ËRmúÝ`Uç_^Æìy%mÉ’ÙI^Bnˆ|}ˆ’),m̨0!öÀÄÕõ)*\؇̸¬¾¦1)ëùÈÛ.ÎÁž+©°{ ½K“sUUy6i•K¶ý¼©U¤|ûK_ª¯€ñÔæS;ÞFMCM‚ùÛÒ¦ BªR©|oÚÏ €îö \hAYÁøzÛ5¥¬ׯÂÄ^^íÛ<—Ó´è٦ĞRƒM&äÍ}Úd4÷c]OÍ8þñuh›D²$¥bŸÒ\Þe j†HKSýÕï审©Y»¿!Æ.pfžÜzlˆXªóÖËF¬¾¶`î•F­”Ò¶¹¯5Ä»õ/y·ÓJ½ßO|’ó!Å«>Ÿó;À-X+Ú€e5el;><ÁWp¹y­9_¥®^§¸Ášû™:õѲ÷xù¿®êÏf=á=tŸ ªÓU€vºæRïYñH]åv*†õ/SUƒ $4:9MBb ”»lôÓKòDl^ö{‡d‡eHéè‘Ç©Ÿº/tƒ"Lzo`oü‰ñ"TPÛjndåÇ®Ô:Þl·C—I|À¤Ÿf ½'°Úž—Z‰2ŸyµiVa8θ}u§ ²c@¥SÝîk]´õz!ÂæLÂ̇׾­«°;l0h¬’tc7”Ì€zhXdþúŒäÊ=÷k#ftëvƒíS s…}„᳘€Ÿ#$ížy©·%ÁÓ·P}¡sùG£ƒŸ-’²w¼ìe…CÇm;ÒÎNçÂßXÍ…ƒ×µQ¬ÜÊ{Wwú®:¦ÎO~¢j;#ˆÝÞñÄÅ,™B©¯’„]QàéKãéЩ·ZK GZ-·&¸ugŠÝÞ U÷±¹eqBQúÕdKŒµÈv<,F’Ct·À<£ðœ†B ¼ ¤©RßÚ­‘ÙåŠK¥»Mü|- »É¼Å¶ÐÔ'zã=Ú´ch;^ËuxÆÏ÷û' 2™»®lÝxC FnB`¸¾å'Ds+õ_ –8ð㽦žŒ/òP¿#DêVG"ýìÏ.èõÀíùpbLˆŸç½gu%gŠ…êgý½zDè¹ r×o Àiï\³ñTú®ýG—ØÏLö4ˆ>ˆU¶‚:%Þ×Q)ßQ£š÷¹N‰éå¦(† žÁÏeFõßÈ{RóÏV»F\J[Ý´ è½|¢IĘ{Uþ¾ùMÁÄ<Œv¹½s-4Û&f±X¦Ý{êÚâÈbÌx'6Þ­^"w*¯MëÉkµ¹´|쉦lØâîMP‹E¿7ží›Ô—±üŒù«/=“Nr@‡ÚÌÏê§×þð÷E‰‰“œ'Ôƒ…×éRöñÙ`­ß*„9I}ÄÂUøY\_å†n]v¿>ÛpKkÝ$š”dNo½M¼>Ó¢-~Õ?)NEf8Ú$îžì#¡‘YVåDì^Ò&¬‚Æ?øpn½Œ@@ñsQø@ž¶l/¢«¥ u •ÿ6U!o—ŒÃ½VWMåé2v¥\ÚÛxñÙ¾`ÈåÝÉ}ßc€–™†¤Üí>¦ F¹ä¯Â Ææ§ú>ˆ‘;PËè¤òÇGÂrïP±W!xÖ{ ê—Œœù!kj>MK£ùö·ùü‘7ÿMàÆ©†˜Ì¬oZk«’ßT±¨sä0Ö Ú°ððœ9ö+Øç‚Äd%?Þ‘$Óí²wÓ¤ã j¹Mˆ÷Ozû¸¯÷3Ià¸àp¼é0ݾG*1½þ`)·Ž7å×ÉÏ”YʬÃ&¼ž¤Í±D¬×Dª£<¥Ö&(§ËäÍ®2 PŒßóßÎ2 œ5Ö‚zq<õ«[ Û¨·Îszôm³ÁÙ:‘u÷ó&%x‘é(¾Q¢Y•DêÕ((÷H_IÍŒÝLu ªñœ -Hœcí+¼ÁA©jõ¬2Õð•S·YnhÎAu°™·Hˆ5YÆ-3,Ô©Q¨~˜¢' ³÷ð{¥ƒ‹ÐQhǘ½©º‡Ó†‹Qùlðî¹»`mÿ©Û¸àzúë—ö&»Q–„¿a†gOL¸z¶o¥VbÃÐÇPI!$õ9di8=¢ôÐý•;ž Ãg°Ù¯Ü4ÒL~˜Ó z$> Ðç¬êKÞƒ—#n;™æà£‹…a·Jëß¾S‹ÇGp!¿¨e>yPW^X EþÀpšáÙ0³&-j©ZÁˆ°„r‚+Êlwq@ oJ„•—äŒÛ&©ðUžü¶Wú´ йòvñ ö+è—›­WE‹,â 4/µk/îf=›»P…céçÇI˜Ó­3kZHz‘ÉÔ[©Ã$¬À¿Â4=YÂ|yDò…üáÚiÍ<5˜!¼ïü+£²{ªòΨŒ{/,‘/(ÌU}ØDŠÆZ||&ìç— åÐzÝ•5>õ-|ˆà¥eASÚ;ò˜S…¶Uvîð‡ž:ИÒl’¾¹þÌ:‹µÃöÕ“ÍhÈeªZ2@´dùÃ5FdtÒv˜º±sEŸ¶w_Q8–s¯°™´(žcD,½5”Ã[ï‡íÒèkd¦,.ÍX,=Îüªf‘ê®RÔX¥p©$eH?fÿÊVÝäÏQñs–…I)%ά*ÂSíÍúZ‰Tqù„yý/Ã"Ÿ¶rÈPAô/YÈù”[ö¶ü÷À- 6 ·GOª †H—†|̾:zL…€X=Y9@s;'©ûØ{ÿðãPÕ¿æW2Ü>Å úÔ hWVsT.RPÑ-޼Wt(|ÕTä(e0ܬÀ"ÞŸO;6À­ÄÚ—…«\mâ%w] kcü°§JÛ¬Ùƒ ÛŒ–@8†·—!5™f‚%ò—|„ç-%N‡PHû)ÑŽÑ}³cæððh9 ¶à*Ú$Ūl¿µ ;¸C7Šh©‹)JÓ8b•ãûë×5ð°Þu=ä)}ieÄ&aUÄVéœHŒáY¦L[RèAj4¾”õyþÅYÃìèÔÒôRd*^”Ú¶us!½‘­r´—f¤ð{tÓg0†ÏAðœœv¥&ˆ Ø;w2TyrAÕ}´ã¹lWB›$ëz)QÛ„^ o„ßÍ:å0xFЕ/I:f‡È~’r꜇2+§ ”t<„H2mfK âÂÞÞÍÕž`ÝkŸ~®W ´A†ŽhšßR Å~BÐñ)m¦gI_<šSØ»‚"n[Ù¡P1B²çÔ®Ã.ùÓÙ¦©ì³ÛÅ5opìì9í’Glb€¤ÎÍë*AkÃ#< ø¸úÌÁ“&ŠöærØY~‰0¤õ Pðyå{`¶UáÉ,2¦ÛýVÙ‡‘–iKßBæ-ÊG‹¤®Ãï´yÛS8,^Ez\TÖ¦óBpÅà’ ïŽÀt”rw…ì?eþ{¿À @ƒžÜÃöóÖ̸‹‘„}Š{o²Ræ¾»¾p3H¤¤•ªS %`ZQQ AÈûóÅ’¬öÅHÌë§ùÍU›S,¡Ç ¹¨S© v$`3 ¢…䲪§¶¯†µ¤ãž¶ë‡«‰)Cu°/"Žu×SÏz·ê(€Ç`n©o[^)$Fª„6 ßÞýþA»½ löJéÞ¢ˆ'øqAÚż$ÍÇïÀ)®É¹©jp*P(‹3íÀ¿WÆ+ˆ³ãò¡$b뀖Kl`ÄV°#d>ÂN©¥<<:²ar2Ëpô†wßÅx| Tã§Ÿ&æÆáòž3&GL-©¹u=ŒMåôÉ*Cž,¼ÛÁî‚äRðözÚdrUhcîq„EW7ÏM Ag²-Èȧ’Y½ñÜãy[Wèkz2¨¯«;¨öNEõs>é)¢ ÿà•Ô6Je;×}iîIæ!<-gµé%àçœ bÚÂmÍúJ­ îc²F}ú™Ô¶äSI”)QÈbÄùóú¾[»ÐÍDo]¯1²YhvEý‘%ÇÖ×ì m7¹¬öã+"ôë†ÈÅp›žIp”ñ4vžª+c'[º&nѼŸæó±S$‰…÷®÷¸ÅªÃΚ•®ðƒV‡Šh£²R*IKzÈBžËÑʵžÜ«A¡(‹¢^4Dׄhä.‰I¦ä4Èthû/á(…W“Þ ¹rr£ÄçÓ{[âŸïä²?Ö|åʪ²¤®Á$P×WƒáêOy{Û¹fÊ SË8$|ÖµeëÚÂqô_™eut®ýÅ»Ü7н³Y&in¯á5býÒ¦“‚óµsì;èv¥7DZɻÿT™t£jÿq”t ar/eźÃÇVÅ é×çÖ¸åB@.I*y±“ Ï~Æq‰÷NPEOÉñ7TŠ˜±\çó¶c÷-Éml±Ã]q=Ö7Ü­Õ˜ií£îN{cý0›¹àÕHX Ý-Ö}~Ø„nÖñaåVS£þ‹v6k,¹8ãϤ­Wd‘³bjù?üOŠB‹úØxY˜kU«Ô:9ø•!L¾fèúÄð¤ÏÆœòOiƒ[NÓiu@ §H:ª8$š²zƃú´aL›:´L×=Õ,xõ,?Ñ*`»g[äüœ0| ÚÝ$µÎHw‹Þe…Úm ïz@YY¢_ çè5­e†ð¸Š¬T[³dø3ªš¨Šu°]ýmÓ^gÕZÜEëðÔ×gòQ ñ:Yò,Ž'Ü‚5÷«!øäræ’Eÿp7¶x8(qW¦ªÍc=³€,o›ŠM³UG5­|LcÉ5Q8sâ.äÌð î¹r~»ÛCAÎÐw÷•ûÒ=dWÝ»tÿ‰×àôåÉŸ‘˜Iv;O. osäÈ~ž¤ð0¨Z«²îf‡²ÝUv©^&B|Ü,¾5z¯Œs&Ní7X¹Ó×ögø"Q¦<›ñÞ81*]”8<‹bLt5šQˆ«† kû-¤ ÃLä Ó×µ²¤l_ '¿Ȧ«l&ôq_^‚TÄ|_ÞÔ ž)2ð¢Wü2–xªó©ïéSøŒùcŒêŒ;¨ªô%l¡“lqÕ:ÿÛÞ“\‰þ Ô>t q$¤øÔ^ rÖWÏÏò™Y$—öBØ2i}–;_sÀsÎö`vB&A©¹Ìöp÷míÄ14x(2to:õ$73T =€îVìeMÊ´ð hë°šG {–²:l€ÐPlSX—(ûáA:Ê3ðÂXÃ>z—‘A•ÖŸ  ’"çjU»*ôO/H(OÑÎvká·íýmï¦õW×Ýgw%ø£syeçˆá¢DR ›È¢éS¶HŽħvôaWs²šÇÛ~”öëx_¿Ù_ºÁïr,‚Õ²Ó¦OI»a¶ÿ …»¯)ƒí6duÂê²^ÿˆ«æË*‰—ñvŸÐ¯rñùú "½½‹aq"wiSúNŠ4‚plé´Rà \‘¢P“…ÌS¥UcÖÔO)²¶?^ËIœÆy_q—˜%¿{N%ƒiü0ŽAô‡°YÚüh!ƒþ5/:*Ž|àX¨h™ß5¢5 ‚Äó|ÉÈä¾WøêWr¦çìCYwa«Ù­Ó¯¶¥¢0§š3æÙ ¸ë–n:Zé. sJ9xq·{oŠ`ÃE×¢}™¿°k馣ÉÙkiJaã(OܳiEù© Ím®{r‡Ws» ŒsÈ‚gb*}Ãûá«z˜ì_m@€*ÿ ^»²m⠞Ɣþõ…ÅR¬šMDr¯ÿÃSæ]Îp„A]…Øå–þíݹ®Á¢9‚zÚæî·z‹»\¶swd}‚ø©žçôö/Ñ7¤£;mQ™ooæ/ 9!GÌbðùô]ÁJ:_Y›f¯"W…G³(õ'ê1‘§¿¡ƒï8/-Ûs÷qÄ3ÍÙ'ê7ÍÊ_t„å³_éîÑ5’© Ñ-å?b C¨ÄR”»žÁ¨¸Hm2«"µnq‹õFŸ)?ÎÛÝÆ’«k¼]Ù˜Å=ûdƒÛC YŽYŠc=‹¤ZuÛ:Å6™/pv¡°¦F'‡^üjP†ÈíO(§ƒ<îrÇ‚Ð~ˆð|—0tl1ÆÞÚ¾1Àbñ˜Ê# ¤âQÓÔ `úvq3;P¢¡¤&àãÀ{šâZÓB Îá™%?…ÇLßÕ„814’H_±­ùÌ‘äPâk'$û˜ãˆ‹™m¸1‡&¾¬üe‹»ÒP1Ïiqê>TFý+ì‡P ÖcSù[ù»r±Ñ}ÆÙý†÷sÉE„Щީ MUtõÍß­gÑøžO?(ÕnYÄõJ@’&Η¬½c*VÄçG8êYäœDÿ ªHN¸“z¾ÓP5®áZ~V» ¥ü Ñ„a±e„ºÇÑnÙÐ(/>Å©m$­\ìáüÞ—¤æ,ˆ_«ÑQò˜ñl "Ÿ  Õޱ \{‚‹.ÙJÕõu ‘‡.”ô Œ3ó$œ(âoòÏôo5ßì"=Âü»ÑÎù±Ø_3ÞV‚ônÍ·Š•§þ8%ðÐŒ2çR2Ul¶`Ü{3›À \Ö;® ç†ÖÁÄNOô}§Ù7ïo™{¾gßH•£°øè*A‚Žûsïd0›_ Ì·YÈþœmøf5&ZO͈jåÞ4¸<®Ä6DpËé÷•ëvó`DRó3ã;éͲ:cï®¶êz á:D’Í86œøÆI5õëñ½‚Šê=$àåçe|é ¼áƒ’mÓzG,3´è7þÁ:SDÕ8àm'_x`³˜ÌLëœEÈú­«&º6ѵØi ¥ð<Ø.Ö7°¯ÃÛ˜êA]*Ê!”_^“¨0¬$’CCH š›w^ Ì(òøŒeÝ?öÕ`CÂÜ,?ÿjA½JŠb.;ÕbGÔõ7=KµÄ‚:¦–G<Í&ë}+Äj­§üYGk.. A@'ÿh “5ùM˜hI¿«JéESÞ: ùöKIb‹¸£Óî$Uœ_ñM•ßÜ™±ôÐ[¨^óy…W%„Sô$ eµ975yÑž'R:ÑêÞf.• Jºf—} 3f¶Ñ ºb‡!´oÈVô¾H=¢ÙP÷ˆÌŒ¢¿%o¶Ìš’#ö#øfåÌ l„¼×IëæØÚÁi8]¯Ðø½ÑhMÔ'4B½% šÆÕRt7ð"‚®6{šZ… xm9åGOþʶ70(Ùíp§ˆ÷ëXy­wëŽ`­”é×µ€TQ@ ÙÐ ø=㨺.5¯8Ç`Ey‰‡c-Ôàr–·×uÑÖ,[ß‹K~î|ñƒ Û¼ {bQØ-î$;…‚‚ºø[B¾ªr–jJ“\Kü@Nd–Da7äªHìÓõ[AðdFŽ£¾Py3ç¦w‘WÇÞ¦·õÒ­(sÓlŽõšOÚ¿R ›8§;cžá¬zfC^F^9Srƒ0Êib)\êUذÂ0…NчܯZ†(£Ìúx3W„Rž>>aû=óÌT0l”щՃÖdúÙ$G_œoLøcONvº¹Ý¬»žº˜ ¡µ,rËj¸™ãJO|O†aIo‘ÏZ)¶¯¨×‰CÂEÆÌýÔ#c¤–Äý9?ލcÎ4‰9™¸J€ý|襁»CÈëàô'€g+¦Sy÷›ëcþÍ[…˜¸OÿOç)+–TõHä,1†Zi±sMfJª®Gš±µ Æ“³e)b…Božy3ÌJgْл§Â¥l~|í¡Í9ÑTL,ÂéìßÁ}ýÈTÆ' Wýöò“v>Ob&Ãã­Ž^Úøª¾™½®<˜„f‰FrHe•I8QG‘£ªlqk‡ç´Î)íä> Ùã³n>´fNw|†ãñˆ/\0Y$F¯\Úªeù™wP9ÿÏË?èiÃ…z‚pš³Û¬ñ {£øäüN€ù…4æÑºµV ™ýˆÙHŽ'=…Öy›lvVcsç{1‚¢ÙSv0¡‚LÍ‚‹aúì£@Xã—P¬GZ–ñºm@¼›’…Ô¸Y=¸50H gé-û6{äÀUË[ê t¿í„ç¡EýU y¯ø¼ÔO'Š-86˜.#Hè,ÏVV˜¯bCc.s_j0ÉÅö—â8l»J$Ú/<]\¬ÔóX7htu´LS&NýꄈPÖ®xY†pﻥ[3”¹¬üˆF–\Ý®I©7JdŒ<5\â«'iý±vun©R)+pVòÀNA¢ºC˜H#²­¡®/¯½L¤•Á" ·á’ÄŠ?ÉsÚ/c-í5¢0¾•;’a”¡ŠS8ã¯À²Û ^Z[vZÎ]ýL·ÌZ,1Œ,é§4ª,QoFð6š["4ijÆ|½äu«Š6àÊ¡#v«ÀÎÕSƇŠz<³âª0=¦CŒ8aêÄ÷Þ¶@\×M*콋^22ªž{-¬ó…p3ºq±g˜xØÝY3ËQŠuœHí˜Å¹&´ÈŒj F¶%+ÏæÅboúô" Gtœt‹Ïʼn[H¯ýU莯ÀôŠ|Ž®¢0½ó5±XìŠH%' &öS¯° ªÕMãùG_ñhÑ«ÝÇIŠæRÕõÒ £g´W»a±— TøÄ_çúþ”‰W;_¸‚s@âgYе¦?ö¤>„‚< Ïk)ˆô…9•vµ¢ñ { °Hl“Ðîô'ÿlZˆ.BœÜÁ}©>¶‹wTÇÀ3‹®<£É‘iæGïîãl£TÛÏËX\ÇÖ×hLf„H^è]Ë&†òÃâþ=áløÌð¥>i¨W~Må’Ï¢|‚ØtáY;’ õ9†ÝBó‹‡óÓØWʰ–‘8>KÚQùµX•¾ä³ñë¡Å&Yö» ±nƒóÙ%¼¿¢¹nî!>Þ'ûòLfµ¡Õ¦.¾ó:•ÞïHÕ·~)äšOqhXÌûÐÜF-•Õ~àÎ 8Ç­Âht´]m]•÷ß¹ÈÝL ú1s7äý—zñ_ÎKˆIÅdM†\“ÅŸz¿®‚·ëžFWÒÙòÉýLÿ¨›3œ¦J/Ÿì¿YâØùy~ãï³Ò|dzð+jN@°úGÈ>â$>°IGZÉyâxý l2É^Š×_–¼\Oz8P—ðÛ²?™w7¢>Uo3kŽ> Ä[W|JŸ&"¾RuÌ-ø>r0t&ÂämÛZxt‰p‹ –8,y‚ò+ÔÌýÈ…O_¿0âÃÇ™ŠûC´Ð FiŠE™‘-°àŸŒQÐ{à ¦œEòóÃÝä?2ÏÚÛÛ¦ Ò€üB¦ýZWž;PüR8 =)Üá¯qÅ¢ÚÑ”è\øÌǾ¡ì£IëGz.þ~ #8á:_&S˜©’'C£Ÿ(-Ë9УëÖ³ÝLú?a¢•8ëŠFßò™D\,‰’rìtœ{«\“§3¯s‘¡M²±ñå㇔u‘vVñªÔb£œ¢¬5XÇ,ò†¾¹R/ÐîŒþ^ûè>Ž/ð$æÂz †V2Ö¸eXE+ŠÚ5'-ûA"ÑP LA°ðÆÑ£i&O~“[O@ÊWÒÛS†|v ²‹nñÃ:Ï 9垃‡ïØž¼ u0c²«¥tÊ{m«d.oúµÚšÚ7 ³IóïÚÊÒa¾àÚÈåݺ»2@\7u½áß±¼— ¤T†¼–¼˜ŽBQ5ûiæ>­ß©¼øT~6C–Lh×8„ͦòþNéÓÄþŒ u ¡ó ß&»B¥é­$9wþôe¢€i:¡*:%„œÏJÐ ;3%¯¿„ž‘Š¿—­GÄ!7eQRÒ¹M}ÖeÇ„æ¿Ü‰ |-‹OØQ¥n7[èÇóÑg<¢Ëô„¶p8E7!ó'ñþ¸Rµ)¾ìe^¤Ž/ ˆ¬Â¬ê4jËinà–“-È,›21Eçö-é ÍÅsŽ¡ ¤‚Ÿ¡}ð  âÖà䜂óJ‹^g˜_€Pœ"¹¥[Þpk»„£R|âœã(‘Ê‘Ý{Ä…îŽ Ñä"sp€šO«÷†HÀ5%±g9?ã¯'D;/˸ ˆ#Ú]¶QÈÇÜJ4ÄÅ­{‰®!wð%K8&1Q ,SDçyƒ.z¡Öêm=‹˜„Êœu'õÞ«´®$õ –ãlæß4,CTtðªÈµú-¦k$ÛtÛj<Ù!@»ô¿p“IQ) ½1œÏt,¹i<ðK˜÷váCç¿÷ô­¤nc´6È]‡«®«~’¿yfâ‡^u¦aŽt·ýì0BQjiÛ\Æ–'2Î9‡¬ü¦¿Ñ O«= †¹N•~{"DÆôàãMɰũ͗SÊÀ¥kHø @6‹xǯ ]É5§Ë赃UoaUÎ^…"΃õš-,1ftd¬1(hü2ûTK÷Ý )ûý½›R6R/SÖd€µ–ܤ«ìÛÍÌÝw0‘Öü K»ÐBs¡öC=qák§†­ _[¬zµ¥\nûÇ”xã°ƒ.OŸ@x+ƒ­Œ¶ðG©êÌνªS\¹»ª'½Ñ7OjÈ•òÌ1R×ÇÍrYÊbO ‹ ÷š»Õ§n›NÐÍf´5m+ÑA±DÄwdàQ¢ä BOKF”¿æbßTNõÌ(1Yêao² –vèÂâ…é5à9kÄX]Û$ÍæèõØžjÝNÊÌLÅ´§;fŒ1×È{àSµˆªÔÑàbé}¥©ëíýgà…æ#mÄÍ,Ž}‚m 俬¡Ä á×|Œ+ÖùŸ¶GDX±‹þ¤+sHdðÂ:WèY¡5;\v^èÂ_”åA?æA\—ÃB¢Ãä‹tÕB’Õš$T±1òËhN"º,ä¯HZ_ÁWo|ÀK]î™!ãG€Ë•?;×FV³‚%î ³ùBû†#À²Ë÷ –&¤€ªVZñÜ‹œ§°±¿u³;Öþ˜B_ûM9-ïáh§›´õQÙ¹2n49Î(óùÄ·sGñDŸÃ ýêÌ=7·ïÁ UÙh½ ­ ¯52´·U%½»2ŸÑÞüÁxéAã-SÄÀÏvVšÐõõ®-ôû¢©hjFm¨Ðã/t6B$â*­Hó™ #»™ÖdÐaf™ýØúV]Ö°šI§ˆ¯a臆ÚBéÁq)¿¢²U27Ôq­²G4<‚ÖµÓ©»3ìç¬úyà&¬!#n_­¾ßg†ðŸ¹ò´FãéY­¤ ¯a]Ñ„0®&‡f‡µ– ëXRÙ$ 94SÈ>;øéç"¬j|+@„†pú¡a¿s35ÙTüƒi‘1‹q6lŒæ“ëUyu¦ŽÛÃΎعSO9"Š·ìâê%m¿¦Š©f‡Í’ûökCŠ“bôK«çêR´a‡Ü⡲~f;òU¢¾]“_ÑþyãÖã(¬…ËÏHp9=Øùï‘GON’£ÈE¡(b3½ÐPaÆ!Ð7È\ùEÐØ¹^‘䡚¾½l_Iôr8÷‡}dÛÏ Íñ1gáF[&>aGÈŠ5|»4Øzù8Ö 4pJD?@æìJ;Â].>¸•¡FULHð‰ß•t§¢þ›§Uá§}U˜£ê¬±†¨Ó3y³òL@„X·Xs æ/ä\£5‡ŸdU‰s@qÀ¥»ö°k[ïÆu¼]öƒýÒèm«p2Ì2Ë?s©µ à·ÏN‘ʸQ&åÕ%)_ðUHd"¹XAË?Ä|E9ì«;ÁÆá¢2S­u™ëËB5&Í’¥ž–â†ÎäÙ8Üf8e ¶$Ã× O"4ÐlR½€B=é$°ÿrˆýg6uC½dT²TQè Þ‘ˆ˜`ú xäg9ݺÃç:é6_ÜE_Y‚;|ÅY? %}Šò(E¤'Éà; 8ÊPYbÚïäX {ú—;í>;ci¾àë0lj…˜ŸDŸj1',Ødµ»Sm1Øžæ'?†C$4‹k~–Adž0ž”®&}L–™á,_ÃS•n8ƒGõT@ô~…ÓÛ4³ð¯IÕ] PZ ¿ø ÒΠÓVß&v¥Ñ¢òiË@2) <à¶¡.rÕ×RCÆŠqÁÞ&¹§Í¤&jÙ9ßfãôEA³ôËwüœ<OG ü_ÓDa¹IéôRÜ;˜˜Ã¶³¥“(®¨=¥ËòŽÆ¾/·cðØÏS)zJöþ×°„ÈãLA;µ˜Ç皀 e¼[ÈŠu¢Gã%­â6ÝO©ƒñ΂õpÚ¡oWH¹ó\yÂn4Ñs-l‹v-G´x "CîO…&@ÙHx…ŸE7’uõ&*:AÒ R ŒÃÕuNg‘ïFaIúE¾°T.„÷.ë û¸#,“·ÉsnA}ÅKQK÷E] µØ’4…O°ì4Ž:i¥üK(bqš^—çÇ>йÙëãµ ;u ò=Ö¾k§ÇÀý#ÆŒ²ç+òÓyï#ì‰ç@¯aŸ(æ½ùþütçAÊUÖAU4BôÕXù¢ñÝ…=Ö3¥<͇†žj#.$º;9Ò¤zŸsçFPúÝ ì  vAWs꘼v;q­ˆv¼¿.Ï ÎŒ ñ®S?(Îe6ÕB2ˆ5g%‹ò^+J#³2Öt ·+R &æ3yZ£©Û®€ƒNíò)p2î5Tª—UµîHYjAHDN ¥/È,ñÞvCÃЀØ=¡ÆBNTÒ* 9LLJÙ-ñMFĬ xÐRV`ÏôöÓV:l‹\bI¸žpûW) ö>’Í.Њ̟)ñº´®E0L­ÛˆSÔ¤Nê§òRÁBƒ ®’ù‰’x"»Ò'õ}j³ÔS1\–Š¿ÌØSI&Uu¹kZ…9ç&eÌgã×=Û´%ú>g –Mkêg´ÞQø6(ÀŠOƒ_¶û˜u®43Ðq¼0õv1zqLŸ-EA”vƒ—ÙW`ÁŒ“Áe“%†çòê˲'äó‚)¥¨:–®Ý‚Îq @ë.â—~–ÜyL 8']FsúõnŠŸÊ"À^·´¼0‹ÍŸ;ÚÂìšÑ9Ûħ}¥ž«HÂ|›-nÍÿñÃ+)Œ¢ºLFWÖ÷nŸüäÍNØŸòC7”ùa>ZSe9ê%:˜GnûüpDü\«µ¶³Ü7c#)¹ͼ`¾»õ«úðÍ^[²¨Cù‡qN¥íÃÓä5ëhòÞ£NÂæãL…eß™RÎb_˜Õš+yýú&5ÚMœYÝQéö¾ -›ôs³7=hßïÚªSeœìWu=5¡B>H¢Á߸p´á‡Eˆ\`N”«ÁÊt6(•éwÒ¦K•€ÈY³]ãB’_#‡‰°ÝYwD]jKÇ=áƒA-)Ôa ìâ3…H¨ ²+"ŸÒæèWïl ù¼–µð…®n›åœë˜äǹQý}¡Q‡º¤¶ôZÈzÀmÛ&-ÓÅ|žõ†ð÷´½Xj¾í%tl€ï$Í0;°á‚Îx¾ŒRÙÛ˜° M›ãˤÁ}ÿÒ¨0\ƉpL bÊ®Ñ6ÅfaAlg«£6ä9’ÂÃî™Þzl ‰qo1ŠõeΪú“KÒJÛ‘$gGêÄ&Dê&¨Pl¾ûûÜ#7Ø-ªVùcÚ`ˆlðnƒÒ4*˜†҆¹jñ Þ¡ˆãÄkb>ì;ZN’ 2 àp‰üÂXR; |înWÆps™Õ[áès©E—Pk>V(m[‰Ê‹ØÃ9ãˆÃy‚à ÿ'Ó,ï±*,þƒ±÷»çšôpC&—nÄŠÔáÝË…6në–"má:˯wÛ¬¹PqÚ_‡´ïÐf®f®ˆÐ1…; hÒÇ`Žõë://kø¯r€Ö»åÁTùÕÕîÞ°‡ v…X€‹ËÁ|¥UÉšL5œ¬EÙšœÐÝÚÃÖÑ0—`Ù·›È‚HúaGäÍ\Âi¼ `B3ØÛüDɆ‰sö¿B‚a c7M§p N渧ºs—q÷Z°–wóÐMh+o CŒW\ûŬ¦ ˜‰Œü J#Ä讼¸µ4?”x9û6ò}óàÅ_µ¸‡V7~bK·5 e3¼èrˆ½½µË3pì¦?¢Ç} =r‚÷Ã\Ò#Q†%Ýæ¦<àYq ÎEòÈyYhAfP‰=.ÖÐ{îñb”Q9½Ñ®·I_B%«J!S½Pµ ¤KÁ"Æ—9R¹VÅZ@:¨ `˜1§ýo!]êZªåýÒô+Š Ø_  ú#-vÆIT6ø¬ "âVgñ¨Ájð°ìië ¤kš»ï`Šªt«Rõ7¯˜±Ò¨«ß°RIÄÖÙÇŠSA2ÃD‹ùD¶š‚›Å¤%rÐÇT/Vq î6§ÝŽCA®‹œœ;.Æa\u$…í”ð·OMW˜äYµU߇:Á¡xýÖUú³zúgÈ–Ìì%Yn¿¸O´Éf-ùÓz᪰/°ç@÷ó —¬¶†Ãîµ»÷2I†û­‹¦¥ÚQ?Ñf^,¿/û.“š´„ó`>i.âyC,Ôõås³'Á,Ú™Ë_A¿jKöÒëO!ËçuæöÈT4×Ë.é ^iX} › (‰“Ó+€¥Q6æéCÂLˆ•z@ SOÕÔ˜²í¾ræ©à‘O5rÊeûb%UQz‹[zWCéñŠ *0ì-9é®;/²0æi#Ê àEò¿€õ[‚ðjÿq^PQ¯?ŠÑ;ï}ÊÚ&lÀQ‘Yï(‹ü_žj gŸeƒÊ5¾z_-^‚䤡n”×NP•˜†cÅ÷ªB¥â'aã©›ÐR5ûR‡$ôI¬“†~p dkw–(ΘwăÓÞ\³%ºˆÎ:•%ä¹Å+–NŸzôäÓú”-Á#€2Ž5ÏÛ&÷>ÊÆ<¨µö^2ý–Ðâʸ ­AóS®â4\ºnˆ{@QÎ#*ó‘(ñ¾‡½Ÿ^¸8o¶V&A>0õN¡°#Gxq;âÐXĵ"Ù¶ x.n9½Gò–bãþ¾ËV½\_&<¬Ý»d{é혱õ=ìV (y‚’k•°ñq¢%·S–!õc|AûR[¾çÐyª7?;%ÇŸÓ}Ä,)a½Ÿù•f /\„É…>ß "Í»µª)ïÈëq#ª·³Z¤iK?¨vTóȽsóâ2ˆÐ_*ë@²ª¼ž­hk¯³ÖM€ ¾»EíEMðØxèË‚$±?bе6# ŒoB–è…"£6¡É÷ßeœ¾‰¨Ïá½–²™ËÀ“1"úý³KE´gBÓ¨ptQ,3°yqÊ#-ÇHE]O%!SÏ;™éjë5±ÇeêunÔóëZ[8£ä9™2÷„¯JjWÙ•¬–N<ú©ü]õ­S¢x†—:ÈeÀâGj‰ßô Ò‘^À±7è¸!y[âHaâòA+ãm°š*Žx;FßðØ=BGÈÐt îÔI+[x[y´½ª'ál©•O¯×7¿„º]¯O_gÚŒ'æ}ïËŒ§vhÚJéÍö5Ì ÉÐ1¨G$öàϪäŸK—-E÷.ˆ[à:é#=ƒ™² :ÑY‰7Œ?¡Ð.ÒüÃR1ÙezŒž€ì?eJ¤g„¾›ßѪ,Ü_ÖÈʪCMà ©Dþÿ‚?î èl$’rßJïµõµlu!â7ðë7Ç”¾ò:›z$ ל »´¸nÜÈS$¶«>»‘vÒèwÉÑBƒ\®K0)â±îJöú]VJÃWN•^¤ð¿¶ô®ˆíÇ÷Ω•™A_ øÈ…$0GQ÷qx#ÆLæå^ÊÍÃÚAsKöÄÖšc. ¼Ë"Ü¡qÚÿ4é9÷°»Ä…xP½[ ¯«Àz[ÿ¢i|÷?tmæÏÏd_;?«¶zë+þÞbʱä\î»Ýñ|âå¾{œ…ò9)§-¦¸fõ•;œBÈrpîž‹æ5§bH ®ÑO!­Ÿ´¤ê=H•ðÜ8ÒS÷S¦…£)†}-[#­ˆô'‡ ¿jɧ=‚Ò<ÇDPÕÈ’½^`‘ïEÖ¬ö'Amzs.ï¾ã¥·›ª#•¾R$/z2.ÖTçJ ÀôÑ¿aÝÄ­Þ‹[ŬҮëN{®ïÔ2˜–Æê8  ”ôB s—…®}>C­,}½ÍlN´WAöÀæ©–Þºu{êEú1ÝîgûrPh’–!â,ÿ—/Í—Zëõ¤@`.ºéö¹ý0o'ÛAXvl¤Ý/xô g¨>Æe-/ÆŸIYþ wÆØ½™0ŽžWaõŠt^ÂTëºÖ³ß+‹Š4jG]X£¾Æ\£ãnïÙwˆ™¯é}2ÝõceUKÂÁW{Ù€<ã×ÞaUøh½ðh°w9„[i>îÆÑ3,ˆxêÀ_VÚ3œò;„¢ã\ÍÈ5:ä}¨rÁ«¢ª/•äyB%%˜˜°ìÊš]9ÕpÂ:[‘LªLšÐ4C¤$ ‡€dN¾h!öàYç‡ÉÕ‹Ã^ÎWû¡¥ù;8^Òý/ß4•“òïÕl!JÕ¡ö¶´îg Ýw•UW¬–¡bkÇ•ë,;,Ç¢L £®!xä ”ŠK<¹ÔÛ"ÊÒ îÖèblO£4L.ÄËW$Còuµþ¶ÓWB¤úÐkʪá|yî×\”Bx¥z]Ü“.ð ÄÃÈFÏ\¦ûÇ}¦ô;ë }ÌчÊ:]¶/‘»±Çñ‹· ­îêsµ¤õ§-› ˜’vzGæG4ŒnÄØKhÞoÝ•ñ5 ÉóÀ…ë/I}ˆ?F¾*¶©S2ÃÝ-ÿ?.Ó‘êɦٺ7IcO-*ïs¸'„=I’ã2Xá¼6ÉúÍa¢HØ–IÌ0÷L ; ˜ì#Wµus€“wôæ“óûÒ–¥ãüÐ,¸Âì© N=ŒÅð÷׭þÔ\n¤!wgÖ}Z¥Øó¹¸ºd »ÖGE!Oé‹LDÅ銻& Ÿ&?€¸+ 9_Fz16ãFkAG—¤*óÊê’WJ›Å/ ¿ã¦Dç@ ÓU¬ªGŸH1³õî.Ñ ,¡‘gÖή¿¯%ÑÓ¤úõ5_«Ã<•Êöâ1~ ãî³¶•Ùɽó?5ŽUÃ>f9H|†å=ɳmô‹îµÐ¼ö–-¹öæm&÷ìGIÉ‹:×å,éÍ»cã̇<{fàP(QlªæÂPæ§ô2PözdŸºÞë¾7`9_Û:Ï“ÀíN«Ó9²Š=$ß-^QöÈ35Y÷Áß°Þ .@iP|‘°ú Ë#ÅCäà–z«µ=Î#N…VqâöD¡‰o1öSa›†±éwÝ4kÇSç0}:¶´x´Ÿ/2Ù(Ã"ä%ÁÁh S‰{su¹Ñ²5MêËQ ¹hЬབïy¥“ú¨ëŽšY¬cƒ|ØžB–îvÉÜ¥ßëØ—5¶>¾ÀJ• æ½;"a¤8Óí4DDÜëˆÑÁ‡±ÃÓ,`’)É[»{yHŽ'´àÔIøÖîTõÅC<Á[Á½Ñ¥KªéÌeó)ù¯úµaŸÞG 1¸¤EO ‘‡Jó¤3mÊgÀKáöª¸šaՈ̡Mârldz÷­+|¹É‹F§Æ°/ ÍÆªâ§S3¶ ›¦íÉ÷H![bNzÑ #%§v¼^©çÄ¢ÙEòÐ_j% ýªa)waªUϘ˜d¥Ç 1£ªú“U-NðX¿FOB}a³fe™Ø©÷n£¨|ä$j¼¨¹6TzuNÔ‹È.ñÎ÷‚}ëÏ¿û¶«.“–.Dûœ«À »?mí{L¾¸¿¼¢n3G#vI"nÞs•¿£Õcº°à ^ÙàpÔÑÍ æc”RÑ›ÈÊyeäíï«$¿÷q ììcÏZ¬Mçê1Ȫ´A4†$™²X¥3•CÆ¥<ÁÌ@º_k[íeyW¥QÖ9qš~ß®þb¹½i3k‘ÎE·?'\ô).{OÊêyßù7Í–žÅ̾|ΨdŽó‘è³4«À,ÿÖoÛkWfaz8† <æ’T<Âß—SÆŽW-Óy…²jøÁ†,”'S¡caP¹¹“ú:||·&Sl/Ä¥¥s_—f3á›pïº^9f÷œ°µ©‘™£;ôï5“C.ÌÈãËoX´;xÇÓÅ{ÎðY­T|–ÁRø†¿jÜÍÉ@AÈ؃b{•Ztû}Lj7L?ò`%%y2têìÒ‰%ûX@ú—»iá(·`jZì‰é¥ª!cɘl!–pä“ t+ùœy“Núž} 5Žåy£XW—¹­hTô SD}ùù§·YÌñæ7%Õ¶¸rËtÄi€ÞÆ[Á°=DY%ú/CèNÑ•ÇH.ç ·×”æZ}wdh~¥x@m¿M,Ž ƒf=…ÕtÖÞ'­ð¬=(–ø!˱„k¦ÌªÈ#€©ó3SÉjÑj´ÈÚ %ƒM««“¢¢Ï]œÜ Ú¦V¸Þr0m¹sS@§ÄNG%Ù .öhÓ;EVbû~§,T¢…ݰ˦uL`%bÊ endstream endobj 51 0 obj << /Length1 1500 /Length2 7359 /Length3 0 /Length 8359 /Filter /FlateDecode >> stream xÚ´Tl6LHw×Òµt7HH§ Ä ,,»Ë²twH#Ý%H§´€¤"!"*) ‡ú¼Ïó>ïÿŸó}gÏÙݹ暹gî¹æfgÑ7âW²‡Û‚ïÃa(~! 4@EÇPHŠÂxììÆüŒÇn FºCà0éÿ"¨ Á Ô-¦ BÝòtà0€– $—’Â@ Ôˆp¤4@ä ±è´à0°;» Ⴤ8:¡nùÏ_—7@HJJ‚ïw8@ÉŒ„Ø`Ê ìz{¢ 0‚ÛAÀ(Ÿ¥à’uB¡Ò‚‚^^^ Ww8ÒQž›àA9 Áî`¤'Øð«a€.Èü§3ÿ³¼•—=õù‡þ{¾‚*¦úÚ¦f¼:þÛ§¬ ÷øñ‹ˆø…Å„R’’ 1 àßYôA¿ªþª s€¤þ{{Kÿ)Øó¯ùsýµÜ€ç҅ߊ àúGãb@»Û/¡ÿg¥ÿùÿø¯,ÿ7ÿoA÷= Ðßn®ßþÿä úüE¸Õ¬êVÿ:ðÛ-€ý/Õ ügguÀö×ÿõj¢@·{ s„þ}÷ûo°½>eçôG,p“_K…ÀÀúpwȯWÀ/þïv³ì\n_÷[EþvoçßGªÁìàö¿6LXLB"A>xÀ[! ‹‰ü„nWÑìý[ÃAu¸m/àGâýš¨”@ô úc m‘ ;ðíSè€úùÿ3Ï¿RA»¿-¡[ ‚ÿ˼Mîò_æ-ÙõóV£‚ˆÿ2Å‚î¿Í5hçDÞ®øo Þvÿû÷{{ƒíðfáv2áÎá]çõJô^ü[oå¦Ù·Ì2¹ùýÝ—D8iÜu¹¡kÈ3¥´×¯H–7Õ¸N™úíµ7ãDu¤tþð¿²N6œÜêÄ›G54Qº§Ô4ȈËÀo¬¸íÿÓÍß4ij½G‹½ÐÍC’H¿˜üÜk@Ý»i°ri,rvË`»NüþUå¼IÜãòö"Û¼÷4¬Ø(~Æ»‰[ëÐHq-gIÁÍû¶¬µæ­y$ÑnëΧ—¹ÑƒJ4‰âKmõ]4ùîàpQ6>ä‰2t¢Lkb†õ‹E1¢4qE—l9_ÅS¯>¶[]¡hi“"²Qclïþà˜Ûè²»bÌòzÙ{DsæPËw*Úsw“JñíÄ.>Ô³=înïJk…žÆÞÒ*·Sß‘V ŠÏKÿ„ª)ÑãLª‹.ž--7»°]¤EØÚ²qkŸ;§n§sÐ ïS´“õà}è³x…êIaGr½%Šã‰TšË^©AÜ í˜e*w× ÓMm)$¬>¸ää??Õ’©¶#ÄÓí}ÊsL¸¯ÎÐû¬t}Á?'e¦Ÿ)Ú¤ôÆn¼v­x‡èut&h#U|Ê)[ë®ðÂZË»‚$&f‹uO““ìÐ.}vnÓá6"×osUyŒddr] ¼OÕT'Z ýî™áÖŒ%c)YX> A tþ~†¡ÅñâÍù£Ê‰ΚßépB¨£‚G2…3è~6(b®ÊÙ n2%DñoÐ(?‹r¥0t È¡Œ3ÛäO9q"ª§6y½Ó<ÇD6*<#UŸ!Ue”εz‘ØR4]ÄÃÑ.zˆ˜G~ðŽ¿Úc2&Z9ç¸(Y%l1«@­¬°Ç_ð»I)vL®oVq:¯Ÿá¶úÇzéÄ"Sí(¤Öô)¹>æËºHvâÔɤUJ k¦–´Šf.jÐtн¬™ÆžÝ2i¡œã»Ïà?γŽI^ bÞBÄÑ„é¼{ÄÂQƒEžÄ°5x/ÈÿýwWv yãî —ú»»HˆzsEXl«Ç[3v:bIÆ/uGÆàk™.|û2ì¶eè(wœ®]ø'AªÉÆñ©G¯ø‡L•Ù'ìtƒæÆ§œ†'qÃtÎShðY!FJX€öu"/Ú·Ti½ëÁ1›ïŠaŸ¦ ¦¶(Ñ(_‹¶%4Wiá…+<¹Wez_¯A‰«”ä¤Ò4xJ{,»*ƒñÃÓ_ö@gF}á£"*ÞíadœüÆëD„&u {=ÓÃÏ´Ñm‰¡f)th•R݃ÅÚ`tfñ2Ò»éé–©}$¼Ù—ë ÐäkqÊcÎtÚ½w"Ë6.<Æ/¸jŸ[æ÷‹‹Îó?êãR«ÙWÒbq—Æó(^.#À²¸®QsoÖŒsm¶{Wy( °t!Oõ*zú(WÞ 'Š£>}Ø»vko¬Ý–IÔé¢RQïàfÆ¿ö3LÜ-ŽÃ“‰à8st†Z"™œPô‰oD¤…ËP ‡ >ô÷³X¼dÏܘ¿ÔwÞЙ&ò£y¾!“­„]Ú¦Ô*x›ë¾åÕÊÚ¬#ç(¼·Ÿó#I߇ì3‚øûD=&Œ.ìĹ^Àøc>ÚiÍGi”äÖLoÃ`ž:']Ö惥W"[ݤ‡G» !UzNZJÃYÙM]òVådRžÓI><ô8œš®¨¶éZi{]¶¯¡%Oµ§é·A†Þ…ý,Wö,݆øèOs‚¢³[x ±Cz>JmRÕªÚ“»Ì÷Ó¥ØÞ«¿4=ެ´B¥‹8‰“W5t£‘5še|z­8âœëe´¤Ðâ&æÈ¼ð›H]½Ï4‹lÞ 4ÜQ=ãü»¦[ü\­,Z-­/}®ávW°XÖùÎ-+Î ¼~~AI vƒ6ÁŸ˜ªªÝ,f\ÐØÚ­qs -¯dB~*%Ùq¯ÓgO}â ¨¶ÿÜ“Þë]8£ôÓno0s´c¢¨øÊÜ~…+œG:ÿoo]\¬¤s©oÉ+MŽÚ­CÝI±dk)‹‚:r¼žWdÔï¤ÛŠÙ“Oòè©áŠ%6˜;]Ò®@={¤:é­¹Ñ/fhÇî!Tr²‡öIxǸÚtpßw-êÿ0}’¢‡(FÙ©Øt¼/üÌIh ®•«6WâäÜM‰ÒÊÆç& «#:-7 SPC$$l€ÜH‹c×]|æä~c-ºÀø2àyQo‹ý¬¼•ݪéñ!2 šÅŠoä'9-w5ä Ðcnª™.ƒ‘>£‡H*‹]ól…gx¯Ãº™ûÔ~`¨êßÈw‚ïQhž.í[µÁzAøæ•ò”çEÅ.lëµ^ }ˆþæ›ñÔþŸ¨–<*Æ¥^k!@×ô€=²Ñ¯ìÊž e“/uJñÈ’wþErw¬Ê±oû)ŒÔïÎ.Ðpߤ¶çÁaÇûÅ]zæúÇtC5IËß i+×WM±i}lDoùÖ{|ÝØÆˆ ¦RŽ(ÐÞ>ŒÐ"#M~ a¡­Ê *I;qØÖª`P˜qFõs¾–”äŠÓÌW/*XÄÁFm¾C•I(Æ[Ôøy8ÏõΟwy#ÝT×)Õ³åÛ¯ù’åγ¡HR°ºnÏC]„RLº(¶‰»¥­Œc2:S<¿¶ô§¸ï‚”Õ‹µcrÐ|ú]béÍwBÞÃOF>Ú$c›ö¦r¨©a„(¼°#¡!š=§ PYÊÎ’hä·^¸w§®FÇs ç3ãg*ÿ¦÷¸·µâYÙ`öQR½H?†‡À¸Âí2à3pæïåÖûOáÂD›²+•¸Ñ Ä}ÄLQÞ:Iš=VxÝ'5îÙ«¶˜%¹ ˜êwh]M…øë |R“ò²5ÂèpTÆñMÚ˜ÍifiÉvü†Q:{E!^A²¾4n‹c‡Ìdn?ZJ6£" Rb]ƒ=,;jAï€%‡<`ìÓSá§ÒUz¾!'Eí(&w`få=>Æ…åÒäU«l»\’DºMOâ5AMj&|G™T Žß|Êû"Œ¸©ñaF^0D€jðçrïÄçô#È¡4,¸"WIDAí,AÀ¤@™} k+$ËnÂÄ_拓·Ý„ñ^3rRn!*&©––ô³ù“˜ÍXZ ßú†àÌ7+¤Œ˜Ôèü7byƒ\Ý9u NXõÚ÷ÜdÇŒH„œ_ä´5ñHpFc\žëM³‡Y÷t™¯ŽñX󦩦ÎfÏZI¸ø+Jœ1»Oµ‹V²¹†bãžü^µ<[:Äó‰ÑÇéB¡¦ÅÏ Q ‹Cµ”" ióö Ÿaà@ü>j°5‹:ásE Ò;váI¾äŸM˜ûÑ=N¡xΰŸCs³Meœ‹mŒ¯“‘®_Ójó1]dãçwÍ™“íMó•’7;ï µìYÔ\Š”nöBߨTSƒ±pÅ=¯_î«;˜¸~ìÃØê³ R!­·•Ïyâçê{žk?Êjˆwç±sÎ~Øy,à~î3ž—}Àµ %sÐ ìýè¾=€ýÝ+fû„úS½ûp‰:¡OôãRj•#-´Bî޵^Wvú;›…c=8Ùï(õô½;’@¨T–h—“•i)·OÏHOs /J\oÄeÂjp=õ?p“«×]mnéÓ°7:X²'ê¡B‚Û·6i ]J.8ŠÈä_ÏDl´0¼PŒ¶žhmܼÁz~lFÁñ©‚‹íâí\p}vÜìÞ"ê{¯“„·!ÖYÏ•ó|=ï|µa°TÙ¶´ãÝ ™ŒëoÆâ ½h©ÝÒ¡¶wE~/š{<>r b^:N8ví0Å{ÎWfü¨ë»daþ•s™°ør¡õ­o¡À.ʺeŠ3øÙ+}îÅãwåùHžiÒ Q³ÄܽB|?Fþ¸“¡Ê1ôÇ€‚¸H:·Å¬b<Þ˜¿ÛfŒ}&VÑêÆ[‘]:ÌéþŽ{Ÿý§t /[ùmâè×ëžËˆoë\úô;7xT>j€qÁ»n°gBé² jÄû^©­m}³á¼ÁqAˆûŦ‡PŠDÕ‡ÌÅùêøíL¶Â:à­ðÜÜùÄpé¡·d»ÒN†̈,í±!ev¡O†ÚôqHÎ+̬WaôÎWÆRB4_õSË‘u/N,ý&=€Y¾ëf:±FŸäê“R1aôè+taS.99×ñwÁ3ñ|;ñïÏ™•JfïçÍ»4 Ú>>ÝÜiôÔ\ù¾ý£³È€l•ì8]µaæóñ—s÷ôb'ùÙ6É øçúõ\Îìúµ‘m#¯å‰ñZÔÍ iÚ!“ YyQ[¾]<;»³’üœ£/ÖÉ㣛I =òI\hü ûe‚”Ýc}Vu.ÖU‚Á•?O["7ö±^÷öQ¤M‘ ùFÜaˆ+ÈàeMýLßF±ØViúA#6+åt‘¶%^H}±à»†wìsâ®]ãÆñ©ª×èîIüý£8ìª>•¦ÆB7i¼PL))o°¶¥á´Ÿ¯JfT‡‚^‡Ñ¬À6ïº1›Í• ë< wÈ%9×EX)G~‹ƒ!̪qe‡ÖÐwRÎ4f7ûÜÑYi%•Ó;ÊVYß^¶n³Ìj*oš…¸¿Èóý–ë<¾Krlmƒ Q#ÆÈ+ 91©€‡Œ– E6.•„yuÃì÷X?x¢ÝÇU;MyôU€¸èí´…®n¨*=ãæ«OÌN4”q%þÌdß|’›z" Æõ`ã’rZž'2ŒW´Óç½bå*V^Â;å÷_™3·u==Å­fä·¹"K‹yš|8žÌRVÎïÿüÔÐT)ŽkÔ9þ{•W-˜® £&þ€‹]ÀFàìˆÕ›ŠgCs8¿sÖœÚrÃ|'—À†yëÁl° ׫zõ× ‘4^¯¼ôç¤8L Ä(›w„Z‘ƒ¸;6ùñÀ¤eož­ÙZK±îjbÔÿ˜âØM\uNã©©Æ4#pvTÒ‡õÇŒ¤[3û$wäJ>¢%ïP|Ë3k¡Ç¤’ôcJvU1™o•i5@]Óoæ=ªµX«$#uÊnö7Ç4eÙV‘¥´OÌ¡†ܺT fºÇ›“R‘M¡„Ý|¿§k¯â´ñeË\×:.Áþ“M¿ÁkI¾2ÙN3¿JñŽSbÆè¤Ÿmƒ9®¡»\ìT­ÁøûÝAL‚Uñ&²ÏÚXÙÞ‘ÛˆïÆúZÙE×&‘UÚö+#Rï¦1 ÈanLcÎ%äó_¥KôìŠÈ(éÅJòÇFš×`¶Jnº2ÄO{ì«ZÒèó¹X:ÞœõWâ¹aœ¯Œ&|÷`Ù€¶¯iî Œ§öÕ舤P=Ûg¡æ«ôÇ=‰ 8Ïÿœ8…tãÊå["¨!rÝ­Bc 4g• ÌfSßœžò|Ç,c…Çðˆû©}6ÿøÃFÊL_/ªÎ«'æŽgvVad‚çíËmzƒŠç®<˜;">c »G+á~µ˜º­ú«{œlï½NòÂkW˜VГj[3ÛVI5Ë-6¿4j1Ž?QM©„Ùö O\…ý¦;XÝÂ75U±çúܰjµ x¤m ›Æ%Ùú؇ÌÍñ½Ï™øvô"²„tX ¸ý¶ÛÞX4ÆJý̸2â,øÌ=©>qX>H¾+è¼YÄ)D­ñâãXdÊåª"\ Å_J®Äðœ4Îù™‘E´³¢êc8 !¨(ùÆ@£†°“ÌàœeY¿ .®1š†@ðB’—êùp~§I ö÷ÈSº=×\6²µÒA4 mîC¨ÇU)YÈðËvüt"²‘öÃf¾`¿¡b±?»{5«Láüu œ:¿!¢W^³6Ú—£å‰°‰wûôuÆ(•&RFe¤V0ŽÔ®8«@œÒ&!TF} ±A÷Ý\÷º~g’ë÷uÅH‰›@Z¾áB%Ý’4'5ÆiÁWGWýëŽä"”ë#¤ß®¥;f±¸T]hÛuÌýMºJ§#×/åõ‹²ÍŒ4f³Whx ‘fŒ3èè¹ú°ÍûŒvªYÙÖ±”ËÌÓÒQ¦•ŸZN¬ïŠZî©Øð^P,mòO÷q‡‚C7º’ö„Eaâ#ü‚å æ[G Á\tŽFƒôAÊnÁj#w‰C¼$š†}IzR½l­tn¨Ì'×9f¼ÎìÃùp–¹‹…Œ®¥TÀmdµ ™×N,D§Vðîb¤úç̱üÅ•ðPe<󱿑GÇ£!Y߷רë?:¬Kó׌ác†Gk:øýÜ|œå…ï­ðXžš39›Œí]m!@ø‚í[ÄxÈØËìûwÏ܇«WP])bŸiß?Yêch–vY7¨~¶ŠÙAÆ_û½&½pˆÙù x£à ÁI†d´alBxø)äò~X:õ²hk~ÍÌ‘—,V]m£;NŸžMS>¶òs{ä)ù¼Q¸ŸðøJ`ñ†Ø"\sϦÛvï„ð<Çp(î³1Ç+;´Ö¸þÅ}­BØc½&æ–Óºê‚ïxÂÖry|±ˆ¬;ÄÔÆV”íí:se“ÈšÄ(Áó9êÎòš!õ¯Îê´ö¿´ì!þ^˜â³'(Ô÷Ð?¡v§Ÿ3fod¬‡¬ˆ|QÕ„æÎÇz HLqËQeé²a€TtÙƒ—¿¬©È;±KNDRSÖû¯Ç¿ñ¥ðàñcàÉq¤…Xî„Ç9îËÿØ« i µŽcy”T[}½Þ(¿íÊ'0‰!ÕÞ‰T¦f‹ÜéRa> stream xÚ·PœÛ-Œ»Cp4¸{pww‚3ÀÀ0ƒKp÷  î<¸— ÁÝ‚KHp‚$çžsîýÿª÷jªf¾Õ½ºw÷Þ«w}CO­¡Í&i µÊA!nl\ìœÂiU-.'';''7=½È üËŒF¯tqA!Âÿ"H»-Üžl2nOE¸C¬.€§ÅÚŠ*u' äYåð×޸عþN÷Wô¯D Èï` ++¨£“ı؀À@€ºœ »›—+Àbý‹hv…>Å[xX€À–O„ß•[ä$5O þÕž«• ÈÉÍ•ÝþÕ"ǯ4O», ±–†::!n®h¿ê“¹­ž¶Ý›ãÏÉ:@ žŸ¿€ bmó« kw']ÈÙ¨(óåÉ„öÍèàãääâ@/+;Ž_éu¼€¿\¿ÌOøù8A6OMý@6À§4W  ÀÍÅèçóoÇ#4..€5ÈÊ ` ´AÐþÉþdÚüÁO‡ïòs>i Àùëó÷“É“¼¬¡°÷?ôßçË!©(#§¡Çò§ã¿}RRP/€€› ÄËàøýw Ð_Upþª±„þû´Kÿ)Øã¯ógük6˜ÿK ú$Z €ñ¿ääã´zúâúVúïÿ?ÿÊòÓøÿ$çÿv3þöÿÜŽ °÷_„'ͺ»=é_ú4ÿ¥êÿ̬*Ðäîø¿^E7‹§9„Ø‚ÿÞF«È h­r³²û#–?vÝ_CA€PWЯ[ÀÆÅÉù?¾§É²rxº9\ŸùÛ|œÿ^Rbµþ5aÜ|ü  o4Î'!qóñ|¸žFÑèõ[ÃvÔí)ðÔžÀê‚öëDùÒ¿L€Cöo$È àÐúñ8´ÿFBOqÿ §8«¿Ñ¯>8¬ÿ¹ÀÁ§´6ÿ@®'2ä_ð‰ ýäp¸ü†ÿÕ¶•»‹ËÓàÿæÓžüÿ¾e€@/ ÚÒ<ÔêE¨}]hûM$™'Ûî¸è ý®~›Ï’K‡û,ä7LÕYÁë.W’o>õâ¬lË2^J,S=ø|h@ŽhMÖl»ó½7KÔšÚmC[œ$˜(:¬ï§@%gÓ‘øâûàì«äÿ¶K‰>ÏÙ]K£ÿÆó£¼W}ùçÑðù]Í/ÕüÊè÷åÓlqº±/ƒJféó-³çˆiÜØ(P˜ñN½°g/¯fðr'©”YÐüãxŠ}Œ6¸_ßνZ­Ôáví&¡#1"¦€¿Äbð‘úúV‰hÁ§ô] N ûwÁƒR¶ÉaÚ¢5£én`Ÿý¸r²ÌáÕF4ƒ0¼cäËu Êé+¹v锘/úa†ò^=¢­ŽšäДO¸ìVp8FW]¾7sîGJS%„ Ë@ÌQÎεѯŸ¹¤ 1 ëå”'ø±º{i/õtžÚÈöG¹ô 6Jâbí¯k̈¿‘_.ÈÃAü¬‘.Љ½šÙó%UÌ<Æ å{{ ^Ü ,Ç`‘›Øy9Õ­» ½âRU¸MÚ…)o#ùŽ«³XjƒÍÔk?[g¡l<¢CLÂÄKŸªIŸÈ±›p­°£[‚·½ Ûúsû—¼A_¯˜½¶ì¦Û×y#)=ß:a'‰äÈΟòè}õÈœzÿ HÉ~v\Ô­3Q•ëkb½_ßlÕïŒ 9cÕ©Ÿ£²D1_cÖ±A"ãÿËhýƒ\QKFB„©|þ¾ð'k(y·vlòu`K®­Åø²Ö1M²È©£|`6SùÌf=6ie¯™$ 2~¿Wµ,ˆâ%»¬íá÷é†ã½Ìá( ×½ðŽ¶µÕíYÇË^²Úñé)Ý~t¶ 6Ô ‹X™[ïˆX {³¸¡5A0ôí¦=ãtŠ[~µCyºï9 àÚo¾ØîQvh2@]'bZüƒ¾G‹¾*3¡ª‚_Ÿ'¾@(NNô‰–º޾ÅõXbû„)D€7xç/Ñ‚c…“n2f¢DºN<òº£A•-ïlÑtº@©€Yr™ÁM¨Öaq)kms]àJœ='³†‚3ÁæãmúF³• eÛ‘›*Ð3AK6`C¸ãk6š/©p·éʳK¹WfŠžyË6w_6ªîéERãõ«å:LÂk&.úÉnùq§bÆ]=©'RˆñÔ™…T‡§iàjó=¤ðc/ß÷oŠ1Ù”¼…˜øYOÅGI-ד‚~v@ryRæñì_¤Äº¹“Kª…jû=Û (+ 6-‚mÃóLµ Ÿ¨4S®1[â‘D±@,”y‘e²m÷1’HÌ¡àµn½¯èEQ>Ô,~pÕýÕ«jäŬ­áÜ€ŽàÑÃsr \îw/4îešy2Ï$|ÝÂI§É'ÝLzt%rrlxœ^ªÊ£`MÈR?:c—ײ;H+pIÉ©‹¡£Ÿë<7©m>žæ|;²¼Ü(¤5±e¶Ð“8'/ÙquŒ…XXü©íM©g‰¾¡NïÚ@Èvà±õwßÙq»!dfÖ©‡E!l;o¾Š+úb\»Œ#²5{Vu¯™ˆæË•4÷È–åNå>MÍ7~ÏÏ u‹aâü‰J1“æßô”= L·BÛ®œV&ÈT÷ƒ@~Ö‹H¡í>8ìS¿áÀ¶èîÀý‚ä>¦7r 9𳞩œãJ”háq(UÐ7H±%£ìW'w»2ï9K‰Wy% D§x¬¾·=® Ö4ì¢8ÐôÞØÊÍçµYà{¾ê`ky|óò9|!sâŒ1ŒV×Ï]Þ¥Ñóoîqš;¸ýûáÊĪõYÖh–£é=Bµ°-îÉQ®:†÷vŠ…”Ža&Ö«½"ï1x ðð«&/Ë/ãcD~¸Êqÿ`0.ª=Ÿ5/AÞ[Ë~¯w;GZlN‡Ï!öªÉR`)çá¹ýž" khú•÷nj»·“}yf”»ˆIB¿ªð¹šnÅvý‹áèóå¤0NQY¦rf&Ô%ãB[Qpó¼ö*Ìùí g{–aaXSÖ›ùÈÈ„áÝqeªÀû›Ÿ©(ݽì€úKÛ+Û­ú§·fM'l89 ËÍi\˜« $,ÕH"Tá²rJb=`øKx„ÀpôO¨¦¶Ò‰ML9@4úT…§öç%hÐÝåEª9«Ã¢Æ[Š.‘›¯¦]lƒGéŒÜÕã•mšn±²´Õ|x9ÐèP²ª'Ÿ™áT°sQJÕ­”h­+ÌÞ²UkªmÂë¥y}Ã^mII›rYU: HF6µ6¦SMÄ?MˆÜjqú¯ dÎä“To¾üÐà ,ùøæÜ“gJ'oSw“[a&`dHqJÝùÒ0äÍRÕŠyúÍ ¬© 0iVº@1¿·ª¨>ƒrïäÂs¶¶±¥òc1˜,­Z¨› .ê)ˆÚÞ ‘e§¹‹¡U¤6§“Tóm‘³÷"RK´Oq’¯Üøƒ®ã!÷NéµG,Çm¢±Ajtø·tEÍät<¶ÓÆ=ön¦ödÑ—¶YE•)ÍgÞL‡8D¨MÌ‘âÆ¶]ô“ÉŸch¢¾–ý1¢Á㟫^©à§ ß¹–XuœÈ"í¦Šö{£ùÂ=ª“°l¼Ýa–d˜Ñ戹û¥!­Ùm– i¦áå<ÝáßPjMI '˜œuz×Í ÊÆ|ypu=›ø%´µ™ãkz¥€1àôÉà€#ŠMWAp`7Â/ÉYŽât+€$Qw‰·ó(46SFBìñY7Bã^ðÑ QêíOtoöÝ8œYR½Â9R¤– ®4ø à‚%úMÊ\ýD§H<N'4ë9:‰ š×ÂÌýêñœß”€Ë¥ÉÍÁ½=jÙšdûá¹(àÖ+CoñìÒ‘¥NÕò{¶íeÓjE`ñ42|Psª¸xƒF¸BÞ˜&{Lú]w@~)R¹â!c£æt1ZÒ4_SøšNÅy·ÍÄmËE†Õ¨L„b‚ÊLÁµ1‡tâµ=žº8u&¿±ºÁÙ‡õçj¸Ý»–PfÒ#²Uš®­»À†{:f÷Ù²‘¥÷ jNoÅAýl­–8ìY>œ˜ë³«¹ùÎ-î7b£!§ËxüõÙ™;—¥p¸>£Áœa—mÙ& õ$oSôBý+ǧ» ­WHÔRšQ=0Ó<Ä'ªt èóñXÈSzv{û»FcdØv!º\òM¹*ègÑCer+jâûƒŸž[‰S˜Á7Ïy`ÞZyê¼{e?fÙ²e–'¤:yÖüÓŠ jm?Ms¨Òm0j¢BÄ¥à´r·&½®vjknvj\©LŸ5ÏL¤\ª:E˜RÞÞl‘Â;Oª‚ ©~œù’q\l:ÿ‘ßôÐ’pøÕ ¦Ô[è–6 vê«cY]¥¬2Ь®$OºЗËVÍð\jeí5.4Û(î­;í¼€ë½›r_! üPêí“Ü“0"åÝÛ‰¥h¯šÐ7ôiŸú=Æ(öê°Ÿ•­ã¥”D¤X!¼¯jBº€G‘lû8—Цõ¬ $ÃH¨#>\Z»Mµ»¶õrO(të+"¢’A*ÁД©¼º.¯½uU{½µà'òÝ—› žæ ž-áT¦Ô!µ|Ôk8nÛŠòþ*­:¾Z°ó[ÒVª—±'¡âs³ ³›p>ÐéMÊ­Ÿ(ÂV#PÓÂ&Ý÷ßcR;™‰çôXy²¢ŽùÛGÖò¨ŠEÞEÎã³QŒ˜œéú¦_ˆIU…àiˆx®‹~F¤³\Ó=~Îéý3pG±/‡dožoBAˆeà¥Ó„6Úv ¾ïA€}4]3ª‰2ŽÁzfùÀÄrÍ\X¼3|⮪ôçÛ£’@çÛsËs·õÖ[týb¨#>îÞÃ(YV©5ê“í&¬"ñ7l›ØoçSÜ[ï9œ…š6êdŒÖžµÌâšVá2-ÏÏ·z0´1#‰8/Ô²J§¤Å?l¨ùc1ÊRÄ4Zˉˆ ¨&n~½ômGÐq¶±Ô/¶¶Ú.yìŠ.9ú}ˆ©Ñž2<{]½*/÷‘\˜" ùÌ©ªq¥1BI„‹Ã¸ÐøöƒÀõ˜z•c«;DSå|ÑzAæ G¼ò¥âJ’×g8]”ÄFhÃkUŒT˜ìFÀ™¯ž$M#ê"ì9+íÅ\´ŠÖÇ»’4ûDöÕÆ“ÐóèN}™ñ^ë[^ÚqŽžØãöG¥Û ¬s8vДbÞÍ &F7 x\Ö œ¦2 ì1‡IÕ^ÔÚÅ ~„{MÜ0Œ!•ÔO÷_$_ç6KŒ\)y\²îeºë§éÌæ¼>¼Ö~Å1°CçÙŸ*WM`¸‰–‡8¸)HOõß²‹£‰ÙKªëÒ{¯b<§«ûâ²\ƒŸ uûCa4‰ÇÞÆp3o 2U§»2#2ÄÎ'ˆs™o©X`~’/M3$X°}“+–ýl{Lû꼜ïy)áøi ·*;C/ƒg’6ãP3v†bk~aïZq ‘>ù¸ÞMhÖ›2ÀB^/z­Õø€ìHÔž»SwžÄ½¬ª´|2ã—›i“ Wt}ø"vä^Y €U·…ŒèÏkH®ªy¬gݼa¥„‰Õ`ã%À©’¡—¸Ê~‘ßóÏYB½®«¯!h­¯^úålǨï4|—žŸû ÏÔËÛ$"Oòuµ_a< \•$I·ŒÕЉs'’%·_æÙ@ÔúI~†ÿ³êôï"A ±O»^2æ Κž6¥No;äÊ?·Ü–Ó2*ÅI<‡÷›ì=–¢¤6¿?c:*ì´y Rç€:¾óˆ:Ƕj¨ƒO¿åÏ8.W5Á™ñ„ÎDIgVcyïÆˆS hÓbM5£j ÇúƒŠì'ôâú)óë¾ÿ(ËEP±ôê9ß± d´¤ôä½0Ì„ãº2Q™Ù|cî¸Yê!Jfᔾs5X"‹^ª}¡$MhÍ“¢38ŠIðßG¤ESµÄו<¾Ž‘#d¿YeಧÍ$¢Ž^‘Eª½ø9°µdBô°!<Œ(/ùÑ ãœ²u€t¯Zˆ_>«y¨d‰3žñÞT's¦£ÏÞæû$pÍã9×± -À¦ 9œ"Y^Çv55–“==¼Gì•G¤ÐIÊŠXÕKÍTÔĸŸk¬©¤XÚ%éØÀQoqÇ=+“ädþg>éöÈûÌd®ávÆ'¨{º&uN^kÈ%Ô‡;÷Ã#Û××±b­îöÇ„õ…ÄZù•Ðõ• x]G—!2/µL86¼D(4ñ É'};F²IÛQ¿þKj  M̃‹¬ÇÒn$íFòe»³ü¬:Ý`%ƒ¦V¡ô ¥(ÿÔ¼R‘gÎCe,iÞ…6$CËÌÁGþ9ÕÎÔšÏNÜœƒ5ÚºÝÏÐ/•V½Çö«“†¬é‡ÓÁìeÇ÷ ‹¾òÉè(уYL–ìà¹|ˆ &ì{Ao Äž±gØtN;ˆèv­î…É´Ç +ÝYŒ¤°êìZ„É’BÝð€³LÍv ú@Ž420s³ß”¬0N†øV†ªÙI¹ˆ(õ=30ªA·ªY'WŠ<ªŽ|t2i,÷ÃÎv+íþ´NÓ'Ȥ-es Ï\h¨Iò‚JE‚¬‚–}<ôÅb¿µ ËŠº¶ !ÿ”³|>ÕK0‘0;Òéü>I•æè^[ ß™ø»cŠ~MZ–íÔbâO£°W’å(á¹»&M ¡^±¶³¸+ü>Í£OÝÁ1›~ m‹,6Òµ£ñeœ)ÚÜXä4ý}¸ˆ–I‰ µ‚Ä‘«ÒDטôÇ«.ªNÞâÏ?“ÝóoegÝ/§(ç—ŸQ)‡ÿD; ?Oª@o# í-ña&]¨Œº}žæP'œl0ăyÌøÂí]ªË‹² 4ÊtîçþýZù†¡†Ð2è‹5»ÈMÖeOÎXüõcM¥þœÌb4úÆ[óZ5ª-öøGéî4¸•+£pT±7¦Ê¨µs”ÓñDÈ•Ë×!eï¶Ô(zU?ŠéÇh:zà´—Ìèÿ  .‡ŒeâØk9žÌ’Û1|ú¢*÷fôæ,c¿6vfý <½úi÷à[דÇèÈl†Õ{”c7üÍ™ýÌ^ltk÷º÷>Îöl3კ\*ß•{½©©B¯ûÏÚŒÎF꣖tÞ A¤k¼²…~BŠÔE9„e´ñG&§õ‚W5€œÙZ!ìŽÇEÉ˲5í dWòјãºÌ¹ç¡¡b|õ]¯9 -8Ù>Á½/ cʾ{éû#x2âË·CÀÉÍàw†\åòÙ³ m¬XÞ¯µQ&Z.‡VEMk5xÆœ«ƒäÈF–ãñÔDon(|;^öSÙr¬7,¦™°\VNÍû$Jî ª¾Áf!"ÑO™é¦¡…QA¹bÃç¨6ùJ%˜å°^òeÉýÙø O^©¨õýˆ Ö¿o¦!{”—‡Ah äH´õb/t»kI-šê2{ÀâíX4;[Õ¡ŽF² ß§øLYs)uÙwLþ3œôBe–:xÎ’TQíp:Aø íÊõjYÙ2tY²_×ß(1.fa߯Œ…NÓÏÒµ{¸ØßÅ|'à•ó-)¼6Ë@)YsÅ.¤¼‘FH¥TëPÃîÞ¦Ï7¦%Õï‚RëÍr"v*xyæIˆ¼&:7ÓðR%hi‘ ;˜´ Åêk[‘3ÌÁr Ë‹y¶˜E—¬ºÍ“Ãk¥Cw=]õѰó©öŠ%Y_î ncü¨yü+ú13v[èq—•on® tÁ(žèÃ’Áœ*°¹Ù·Ú ·¿äèEû‹±çè§”QöîqÁ´â¯ŠÔQ„å½êre¬>>ã!«èb°X¾ºKéñ°S] $ÅŒyiò‘Íø•èÇ9Eýþfo3 N=FɲBŠf/ª‘·’÷I0/ú<›u£<ãFäž…ÕåÃ1ÇϾêR‹Jýû&©¿¬Û'$ò*²ÞÜä ¿åȬ©›ÝF’_Æ×HN·Gܘ…š HQÈczöÅü¹„¿ÏIg³¦}ÁE…É„xwÃáEý ÁTüt âÛ;w̆·}—j FÄ×Lf'gÙnÔû'¨-©J*JUI_‰·‚fÇ*ßXma…º;š„T õŠòê`5Y@ÂE>$仩ß4¼pÈ¢-û~ßñÁ©ã“!rt÷.zñ¹¢§ô ‡Õg»f¥+ùŸib2ÛøÓëòŸæ1†hùWà±·¦S™¶ðzç74%·Eó¢]×|˜ô~RæòV«9…è©J`r%òjõo®b4¯7/”oÈÍ-'^0lúZ9“‘nòFBµ%UŠ_‰¤Ú]õ¾á—÷IpÔªª¥Ð+ˆ5‘:i¤,²$à GÿÐ8ëe+Ö·ƒÐO;`xŽÈƒSv[G‚›J¾£Wѹ[¶ÑµƒgG§ýXäð¸±WÚkÕK› É¥à-º»Éc_ô‚܎σ ^ó^†}ºù0ÚæÖ¡ÒÆda9Ž_lýQ%)¤°ÓŸç)¯}(%é N1²~ÖÀÇ(%'sŠ’——yùh*Êüp”s—ÁK´üéaWï£"•=¹v9¡`ÁA9•ºy)7ÅåÆp¬½ª¡Z5q<+RÀª«QP'fº=É0CHyhPöеV{È Œ©>Xi3ت–׸âÚÑ÷z ¯>ìj÷P =è‘r8±êÒÿëàkûÌWLoÒ$›M0†»i=«8ºÏ<.óµQÔwíp±RaÃ\åM`"¶­:ÕÐç½P‹«L;ÒØªw4¹4=ü¤B¼~[aªu$FØCoÉöH½{C^ÃGµRœqŠ?¯õ:š3”YþpQõ q²Éž'¾o,<×m-Zl†•Trvl²ÈNâ¤{/3† qï&Tº²AuôLÃ}öº!úú4d掱€hY»6z¦?n÷2o‰«Çh½J4W$ 0ºz2Áª¨}C­®Eêõ¾ú!Q@¹‰bÉÏ~ç•ë^’"%¼ÔÈÂãóÇ•æO*s¼cVÅ(u²TAÅHi ½pÎêkײ-_¤Ñ]GËéûkðFµ0M2­º#¥\”Q“ÅR13dÞÝ=pÀ¡k4ÚÑ’kœ=57L‚ä:NM4zAßù ¦=Épð¢qÙ(áj)M§üÅK¨Ú6aäW(LÃ70÷T ®*Õ>K­á’Æ|[–¾Ün Þ­xÍþŒÇÆ=.&Àºl|H8æÎTR-ñV%Æ.óV2Þ–Þщá78YšùÛÿÅÀ#ƒ endstream endobj 55 0 obj << /Length1 1493 /Length2 7504 /Length3 0 /Length 8511 /Filter /FlateDecode >> stream xÚ¶T”k6Lww RC§Ò ÒH÷Ì Cƒ¤”t‹€Hƒ %H—tƒtH+­”´|¨ç=ç=ïÿ¯õ}ëYëyîk×½÷½¯}¯‡•Q[GÖfR‚A<ü¼@ €¼¦®0äpXYõÁÐ)«!î†A%þK/Y#îe Öˆ{3M æáàð‹Hð‹J Pü?†0¸@ÁÚlÐä¨Á  wVy˜«ìàˆ¸ßå?K‡-'€_\\”û·;@‚ƒm­¡Mk„#r¿£­µ @f !|þ‚CÊp•àãóòòⵆ¸óÂà9¹^`„#@ä‚{‚ì¿Ê<±†€~Ƌà Ðw»ÿëÁì^Öpà^à¶AÝï< v 8à~o€žª@Ëýc¬ñÇ€ð×Ñøyùÿ÷—÷¯@`èogk[[ÄÕê†:ìÁ. €–’/ÂÁ °†Úý2´vq‡Ýû[{Zƒ]¬mî ~'n P’ÕXß×÷Wuî¶p°+Â×ìò«B¾_aîYj'ƒ@@P„;ίüÀpíý©ûðýn«3æõû³¶Cíì•`çáÊg»y€Tþ²¸áü#s!Â@ PTL r€¼mù~×÷qýVòÿßçàç sØß— Ûƒî?8~îÖž î ðûoÅ¿??Àl‹Ø€ÀPœ¢ß‹Aöð}çá`o€)ðžxüà¯çï•ù=·ì`PŸÌ7—OCCÇDK‡ëwÁ«ää`Þ?~ €G@xÏU @ô~ðï(ÚÖ࿲þã« µ‡Äÿ${JÿIØó¯îsü5œ€Çz»g,ÀñÁÍ€Â@Ûûÿÿ3Í»üÿ±ûW”ÿ Áÿ7%—ßZŽ_êÿÖvñùKÏWÄ=÷5a÷ý_Ó§ ?㪠²{@þW«Š°¾ŸY¨ƒË߇vW{ƒì´Á[Ç?Tù#7ø5`.`(Hæþu¡îüÝýTÙ:ß_î÷|ü­ÝÍ¿·T„ÚÂì~M—€°À·öÁ¹oñ=øñß¡Èû7ƒ|¼PâÞp_^ÀÇùÕO1AŸÞ/Ño$.à³ùñß³ô_PÀù Ý£û í5¿€Ïõ¿ €þ_PÀ‡øޗÇð‚ýì~c_üà_ÚzÀá÷ãý›€÷Õÿÿ¾K@ o-Îü ÌV2Ì©&¬å¢J–Ö‹gkôÑ'Ö­§œ<~óðV+ÌTÎʬøÙÔ.¢¥ EŽ3™†[¿½Æ÷˜MÉ:Í×þ7–‰º[Í8sã½c{²µ=tØxôe¾øßºù;£6"·«±æºyˆhç‘^xu+{×ö”-‡Ïlé|©Qǽ)›ä‰5ˆ1 .žb}c“=MÅ„à¡ÃzHòÝ›pêìÇ'’×cw j‰\8û±‚…~&«q—Ó¾ËåúîÔ,Ô&Tt¨g$Ãl~rÛij”³~%…K½sÞR… ¯ñ¹Ó—xˆx·^U‚u_@?|¬öžoãßÌM„±Óö’n&W—~ ³„3i‘W6[¾ ET :ƒè¶Ûìå(Ìtgy“Îr ÷Þ´‘¢²â$èö$ÄðÅ|K€ð…¿Î“]Ç• N/Ríú¿+†zgûfDêμ§J-¼Åë^s˜ûlc°l£Úð¬+Ó&‘U:»èf½*Á.-@[ÿtrr=êé{Œ96 »"¤Hài!Øø,zYBcß^9§W ‡ªJ¿itNì(¤µRÚ Í[ñ§ÖZNœ¥¤éFDÖ”¹¾`‹«2?™5ìýJ#*FÍŒ›Òn<â ý¸}2õmès(û­¤!•C˜¦@}T."àAðn"z´](o çA•ûƒ®EEo•Ž™o9Y±žŠ~#yÆï`âíõ²èÍUR€¬ `çªdÖ±3^,_Ùƒé§ø£ÿÛÞðÎêÅÒȇ=6v¾&â“"³0š)"Œ†Ç¬¬ûK•Ÿtiw„Ïh ˆ^™—jÞÞ¾/nN U?Çzý”Z,Žžð̦´P—÷Ép€ˆ AæH@:³"‰Ø©²¢ÿñI¦g{3þг$ÿC7«Š—…Goeuh~œ' )Å>\½˜¸ª™Û("v *xWÅ/'Ögz²e˜¥NPÍ”JÉ:{°wÚq¬e‘+0÷öŠã¹Cý¾|šCå.wò°WÎþ®:à shÙx|I`äl8‘óHaï'’¹ÄдÚ$Ÿ@’Å4æ¢Ò©¥vVЭsÍ£Sůßóm<ÊUOëä=9Wo^Òu×Õ=:GÚÁí/ÃÒ=>j-›–Š- ór+þ¢$\ÕäjŽ«±°dí¥I±±z‚½J­ÖÞ!êDª|1­£iw]/<âx{&Ïó©Ç„g@Š.þL-Ë0q¶6©ÿÄÐVr´dq0åPFèóÚ¡5s,Zž6Þl½6Tp"šPcäŒksŽ‹u¨U_¨ˆáOÑÏø²ö–.±X<×¼ÎVÇÞÏ­Ôù%w‡_$»fW>“|V}\¹"v¼½bÔ™?gÀòÁ\ü«Ï¡cçp½ç—ÂÃÁÒÑ¡™˜@–mÒVÖ#H óù•†. ¥ŠZŠ5©¶¯YtóÄ× >õºv*”&éªøœïï1"Ì1âoù–Èÿù#UI#Jÿç"aÅp&Žî9&=Ÿ¤¸¬~ .Æ»÷H_<Ê£¿³j T•›oeµ0ÍwÉ»_ÆT™B”×—†Ò‰'! ×$Ã^aÌÀº,*Šc¦\‘üàíÚØåŸ?h³2!­è˜ú{ù}SÉwE ¡œÔmM˜-PŸæÈP‡¹êž:ý¹&‘]Áû'WÎÅœ/Úd6ÚkŽìõ*c…_=CÆ:=Ü’ÜYäÄÖ>ŸŽå)o5UmK«ñ~¦qëe¦OA¾€-þCŸùÓìeõƒŸÜvpë4Näú,_(Ëj§ ýmée©­–ð‹ÚcJÇüÔ-åöó4¢cÆjvB·Ѳ‡OPÜ0ÛŰG¡ ê®†»<]g×Þùî‘ù}#C9´øUñûŸ­4ÞK‡‚N+• ¬ì„šVÌœ«ˆŸôŽŠ]·½ï.<ñ–ã; n½õõÌsX÷©˜5²Í˜Ã-c…pŸÂL½ÃŒEœR³ˆ<-è‡xcÇ.Fvß-¨#9ã½(êt÷»:ÖÁt»›íƒ¨@MÍ)Ý9Ùé/™Þ<娼 73o"Mw5&[H¿®v·dw¡v~ܱVMI£IàïgÅwBÎIš¶ö-¼B±ácEp©\±­š9n š¡-ï¹6~á°^¦ŒEE¿´‚ñk\Ū2H?= ¥õn:Í:+W—‡¿zš'ˆn§Ü_ Nl‹žX⪺n28­L ò½Ê™TP«ÑêsµÊƪ”,PSía®z,'ðúƒ»ær•5NØ5?ý:•')ßCƒ¦„u›W62Œù1q}%ÒOð²ÜLKKaÙ½Ÿ:N}Q³NŸáÛTÛà«N^ûüŒR¤í´4Ç5ìQh̉h*wƒ'I±«£W4e²êf˜/ö9ùy¦‹„ 5Ã^y/…y½S写þòžvy¢ž³ºæ•ØÏBñÓ«'^‰—åψaßs‘>Ä=mŽ!* 4e,¡‡# —xjŒµ‘#1 g13¢ÙÚL;“ðQyÿÌŠF"Û,ã' ˜¼Æެõ— $î#Èd-„ãc5 åº×5ZjŠhä»müsФõ¨LX"LÎ’2Äê«Q§fD¢7™üx“R‰\¯m(“÷„n9!ò6´:ÙªÞ…yþÓuÃäSÄ4y}8i”²Y1äÈòD»æ<‘¾EJ‚{“¾¶Ì¸–摘×rMM[6H´"øŠ›@’oáà3á³×bþþ%™YÁîJŸPo2»Îþ?¤ï¾«O~gJ]¥Å™EÁÛ;}•87åÝqAj«ù2rrí;ìÏõ[eQñ ø:’œûš2zذZ°¦D—!w‡•³-]™çúaËÕr WjÝH¡‡~¼:þÉÅB¢öp¿›Sãd.þ]QCš¤1;E¤`7ùô4šê‰0!ÿ¡v,Žt°;ÔxØÕ›ÅY­Q¢ÐÂéÉdú‘~‚ˆH”NÑñG20åpækêìN_JÏÁÚ÷©gñÊöÔI»iHPnŒàmÍÀûÇî_™ˆÛ+ýî°}3Ÿ&ÉhÐévz:¾C{æ-©8VENf@Õ¾ LÜ×#Ú´¾…ô¹—@Vè„Ce†ƒnëCóML*6®Ã¢+ùO„ µ0^ñƒëyÇ$ •ž^“7Äl^–ÓÏã]]hÑ#çx8;xÎy*E~ûiÙ –.œç“.:"ª<ûØE~xGåz¨™”›}jcË7y 2ðÝåPýg¼ÛþÍܸjïmÕ25äO†Ôùö^¼¸Ëâ5FÔ”ŠÍtHÆ[ÜP2U3óE[LsfÝÅZ.dqSƒhœ=êrâÊÖ¥ÏóÛ]Ýâä2e™b¾þYòTôsdfC§ w,ßúbTSQ ?áðñËŽs^H¾"ûæV'A!Áu]äµ²zTaû¨¥ð‰»ÿÑØôTcn‘[ë4%rÚÖë)Õ^룻êÆ¨›DÙ»²òŒ\×¶ÛÒÞúÆ!AQÛüƒRùºWó凃åyÒÒd‰+ƒÃÒ¶Tíf}®½=s>å…;dó öÖL5»,_;—GI%ýºV_ñ¶Nr |Ãõ>c;ŠÜ…êó^Ŧ)\3qY»æ¢îŠdH¸ízš·ú2Ûž]‘¦«8ãd™”Û&¨,’Ùå­} Zà,6v½H¨lT¦”ˆ‰éžä1MŒâé«+@Ò‰˜,„c$ÏéO<8á^Íq^G¬Êjì¤ØVD|›BªˆÞNÐó>­.|XR"ˆ8çý>;ÿn÷BÅžÔ÷{‹F —rˆêeÉݘ’£«Hßõr*ËYä¢;úîÖb­F!äúYådûà)ߢ݈´:":êê›Baœ€[WŸ“ÊbAk'j¯Ä7ÂxÚå`{‹ÚetŸêN=‹šA³z¯X0‚ü–µBüöcúÉŸŸql»×umãFZ08ÈŠ^ÖÏmÞõ7¶| $ý’sÃ7 wÁçAϲFs§$5#Ï æ.ÝwáÆäšD³o|mñšùeΟõO/SfC#-ìW¹Í’~Pð³Ê<ÌñÓ§„Y¤ªlP6Miå[É=ƒ4føwðèιŽnD¸ž5™<ñ¼™Ø ’à wcu¯g®½Ÿ%XÒ8_ØÍ{daÙ´e¿6‰ ¡ÇVÔû§q]™abàw—pDã<Öù¶ÄÌ 5G§zŸ§tîªÙ=–°phy–¿$‚îáï½Ît¼"W@½usëjÍÛô¹K¯µ6ÊÀlºÇ‰½XÚêÙ¾|Qý1ÈA—»ˆïÓ[¶óÉ$MŽ Î)G¾"kœ¹x˜Áh-´ÁRzõsôOŠ›èâé’3î¼@¶‡ò´L^ŽhZÞoèüÌ5LÅ¥c¹»ôzŠäPöMfÞð©Ýr Jõíí«ÕbE=Ü*È(W}Jzx콩lÍ”T*]vœ #±n·& ovâ0MŽižHóu§7MúÀ‰ÅEìgpÊáCëÝš"CDphÖ9ìØ­VB <,­06¾S;—RE5ÂdW_Ï[›ŸbÍQN(Ú…FwwJ„;®= kØ®íRu.̵ªt1~j²ž½*Í3hŸ©“xg8¦¹Hh:a!ôšÅA·×—-^nÑ'Ù£þ¹Pˆ5;¹XªÍ¬Âµj 8\p¡å0õFRÂÕY¦Îb'Ü=¹„74ìªè¥SrŒØô j¨$ð"Ñzž{c/øGEá"Í—&j¤ ½O +µ?€Ü]¤¼´Yþò^Ì-½7Ú˜ÂíRZ¯ *MmŽÄí¹©Ð™g#„ö43~ÑI,,rÖÄ ~f”§÷¡°ñ\”§Ã¹RK„ާ~GÃ-ø¬ÃV[úÜ%ipIá ^¿; ®^ÅÅ6ÁÌë<¿•ª§ÃHQ”Æih‘MÇËje"DÇ– r¯ã#UÃ…o(/G•‡´ï™ 9JVËü®»£¥ÎÔ¹Múvnüþ;%¯y k£m€Ö<]d}ÒÐîÂÞ[ŸXÂç… ²ÏÚÌ]„‹<é_¦ -ÕÕz$‹»žïkõΪTdZ1'Ô´IFɾ#ÄlUMi¬ƒ~{FP¶2?Ù¯ý8¹î[‹úz|¥žBµÝõ$—²¸Ó"Mä±34òròõ2˜ZŽ›xÚÊDó³÷y+·]ê’Ò«¾”ƒuzOÓÉ×­8‘ì7©™l,®_V©–òTµHòàý8·9^a ŒSûÑþU,6¢z(z~~C¯5¦¦kŠ-Æ +zVçÁi“£œµ‹ 3pJiafj>A¼_åævÑZÀ° ,«#ˆºÑ¥1¥7XÂóŒ¦Út÷ê1p¹+‡º:vEåL-#ÆôÌm.Í‘íá÷¢Î "¹ã‚/èsê ujÎÛ®ØÞ-ù"#%Pz+-³ŠÃ¤ÃÜuYáûÛ@– ¦õàÊV¬†¹j=*'šºO­S±ºÑbð9fð~ÐL\Cì°§¾æè–*–ýøážJ ªìëué] ãlâeñaõ¯¢ú%m1i?R„¡Ï I½jÜ,>n¿²9ÔÁI|˜ ÐóCsŸ6a)›CqëO”œf:–ël^B®Pu aí²Ã§¢~bÔyU{ål4¹†>ÆÏ|²Ÿ&üÑýÅDÑsÁrgöÜôЖԧ⫣Υ!ü¹\rWPŒ£èó£›%Ié«?U¿W†&gZ¨?A΀3 ãÚIœ}(¡'î ê‚r¦gGø[5 š¹k½Œnàß ;®ÕÀö8Jó7סLmBÍ ÷$ÌyÍõwC)Oßú†9,ý¼-’­1ø÷Ø]’Á«½CϬ“ZÚÓXÕx?ÎòÔ¡¿ÁíeÓtiΫ¾¡’D²dI| ¦w9à$j L( ›g`ð·­Tž/aÁ×5§ÜfwÀVÎÉúÙŠ*Üü5o¸t°ûømGüæò@óµ"ÅR^ð~†ðkaRÃ<ߣadÅŽJeÖifÜç’ÙˆÞútÍrÄ@S¦Û;Š:7Á·/û ÏWrŠLwõ!¾*›>9m9YwÚ`}„þ¢Ü)|ÿ*}‘er©?ÁŽ.+Í[ñËÇs2µ½GÉ}ឯ"dߪffÚ‘=¼Û`ênkGbb;nÚ÷‡‹s "Ý:©JèÖúibI>Jô¥<'Tu[|µÐp=®¤7løÂò^¸hÛ=m-r%,ª­“.]à%.¾ÞŸvɵè`‡ýÌŸK~º’!¡+ݦy÷ÎŒç\_€<1U-ßït…‹ðôçŽñ¹åÏÔ³Ã*Û”¦tõwsF»ÅGùµ^1Þ/;ªÛ2ôÛtj/Û&Ò‰Ø°Š£ƒÞ ·®¹rWœEȹ¤_:ÎÿÀdv dnú"ˆø°Nó5ÔGH]Û*ôåkI_or|½‚£Ÿ”N¦4*f~v½hçK{M¦ÙoUÃG™¢Äówo£B £#¼,Ô:cåóê¤vWRÈ^§¨ÞœG'‡ärz 4çµLžæ¹de‘~¾çcƒvÔDFSÝÞL¨õ˜£³½Ø¦=ySùIÌ(cZ÷iËëiaZ¨Œ«‚Ðî-qÊ^MFÛRÇ`¦_äí'Œª $ÜzÚK{Á$“Ó ®îë¯ï^à—Ìå¢L/qo¿ïáɳ5ŠŠ<eò™¾ã‚¸ÑRGè<ãßÃþbZÛTTž®)àWéÈ­}ûCi”Yÿá×ù-‰Æ{(µÏC¾?ÆÝAÞõðÀH $Ò˪TMìŸ~âRžËMœ;spT,Eè{™ŸVÊ$`UGœ41¬P¿5ï±Lu6)á¼d\šlP$Ooèø¢ÝôYÙᨠ¢à 3w\›ßo<˜”† š7£´àg£ß:Üb¾~ûEöXÙÓ¹ß(SÑ]æ‹3ù”¸Ðêíi5Ÿž‡}«ñ¡?)ǪsщÌ.Ù†&vÍzªG‡ÒDî^ ŠøLìëSþ^àä˜IÈ0n™,’ߌÖé1•t®Ær ÷cuR[T‚âzÜCqE§ÆÚÒoɄѓr Zõù<Ù]Ò‚…„³jW~‹V^ñ‚4qfà²Éñ#¦¯‹‹¦Zujçù¤àg%ÃÍáNÎÈ¥R$“ùZ÷á°Ù·y“”mNÆ)‚Ž¥êVeQrï®H™HU÷»+ËMΊ¼èÈjw~,\•ñ£w{lM¹hÊ삲X°ƒ"ÛòœÏŠY§3ÐEKp¤¬VV¾Ü»ŒMîåð@g\°Ø>+C)Œ¤/Ò‰¡õi Æ5xÃP-»±¤=¾Šr1Î{Ÿªê˜4³7\¼å„# ûWcðO²é¹ìhÌΤ¤šÞ·c_ãé@G·•m'(z3 ii¡|v™Ç¹¥ÑèF‘Ë"Ð5 ãJU8'ÔkÃÏh2,IÎëɇøBEÁ¾„‘ˆþRG&i‘èØš ](Åš x@B©>§”HR­ýî#Ç铨ðÐØø±J¸¶)]ö1séUY †è- س'(QÞ,ýIÝç'²ÐõH &ø ¹v_Ü%Þ ³Vð¦07"\»sçαË'Þð[Ó€ÝÌ]‚ˆÒÀðΪm™™Ü`¸¹h KPTKª#Xp¿‹Y+XrÇIb8æ EB‹kFÁrN¾ü­‹qJæt!£‰½¬äBz[Úàeø"Øv…¼߈ ö„6 Œ³Ô¦ÜBÁP橃žàMÑeeôŠ-*ž¯Š=JqÆÁJÄ~?ŽŒž—ý%4޳Q1Ë´pæÑ–2‰AínØÄtp éÍ–ËÇ›p(•mëÖÁ'¨\¤K¿˜©¥t"•©ÍÁ¤7@^—ô1öºv“qéÖYZâ¿;¤£ºœ5á±ô¢7»Or ¦^bI×—ŸÎ ˜j;ñ+fgg«ošnê4t5Pœ“ñ:§apÇ ûf¼—Ò¤Ôåð†Ü¡rOýhÚÙioK±ñ=ó؈Ȧô6‘4Ý¢=d˜}i4Þ|ê0—àmcÖ½ßí}3¨KŸ©.#¤F^õ=;gú$ʼnÔô“3öª\Ò$ñÛ2öigÁ×R'§Àûzµ—º'ûDµwXÎ}V “èÔ×Ý©¬ ¦°^pÉ îòºÄëËJZ¼> stream xÚ¶PØ.\\lpww‡àî. 2¸»Üà$¸»»×wxdwïîÞûÿUïÕTÍœ¯¿ÖÓݧ†œXQ…^ØÔÖ(a v¢gf`âˆÊ)s˜˜X˜˜XÉÉUANÖÀ?¥ˆäê@G-˜ç_¼¨ÐÈéU&fäôª&g H;[˜YÌ<Ìœޝóø|]šÿ)6±5ý½],ì##wÄ׿"v€'óëšÝþ˜`#ØÖéÕðZž7ÀÌÖñw?9¸Œâ¿E .V£Ê߈›Àhô7ú£é¿ 3€ø/È`4û²±-Üí,^Ÿ4^e Á×È6ÿ@æWïÿ(³¿†¿^À¿ø×p¶ÿø5¶ý/ú5¼Ý?4Ç+z-ÛåËÌ`tø|ÍÆñ_ðÕÂéŸð¯É8¹Úþ‹~ÍÇù÷\F ÃŸüµÃÄÙÁáõ1úc]^{õüÇ˺MçlMxƒ,k‚Zo«„ñ\éwÆø§Éw4¾PÓ{.:´9ß#Ã%RW¦¬;\ 'v¡®l‰S] -=y5×Á…~‹Wjyðz4ˆUžÜiA\˜ÀîÏ?®í%@À§WÚõz²÷R÷·‚j†ø.MžmïÌ…¬˜‹qëÚ#éVÛ[º<2·£´[É!óö±tŠ>J-R׿h†<Ç8c—Ö‰žžý—ÊÌÕõ4zÖø ‘t,-¢÷qk§öKôݬÇj¹*‹cÇ{²÷Ú¸PWè#“ž"ûIÒ8óžÅ+} nÍ|DYHtÉ+ô¨ û,i• åpcwµËÈb;óvv" ˆ¯c;¾º¤ÓÀD«²Å éšÕ H°ßn&²Úz­Þif™Œ¿Ä=Uû˜å$ޝFÊ s]ÕäéxÇš“•/íús4ÿ$ö‹” ¶åæƒÙ{Gœ'©Ç V.¢Ã#«ìÕQEæËÚWÉ× >+zÄ2$nÝý a“ÎÇÒ3‘‚£KGwÒ8öao òÏDôó&Í)ùXÚcc·ãðU¾Âz`g@ 06[­ïµýlWüJbyÖå·‚ë´á­ƒ¾DŠ•¬c·»c€bðîä,Cè@ îdóšx°ùÁqmŒÈÙgešñ—H”…Ö3vÎ …Œ¦îØ«àa%ÄŠ:£±Jìþ¸ð«èTxB¸ZR>¬˜ëðݯƒxÆÏ݉“áqåyœPÎ *,/—.-«cþÇï|>íº;]˘’ í˜kgŒ 26ô÷œŽ\©ÚÔçŠí“Ì{7=`ˆéVêWœ5âÓCp78{Çcë¥ÜaÆí¦É¢M÷æå•'¦¹Ëùð³§ v"¥Øð.±962Á…vsøJü}^VähGëggäP4\±ÃhETÛ¤ÉV“;>+UëïQ‚ïÓ7õˆVSæ—›×¶žû £‚̃ò¦ƒ-ùð™«}¤l¸ï‰ ´)rÔrаT´Ò•†mh;5óß÷ß1I žªÓyŽÎvóò¦}9zIXßoÕâØ+ËJùOóy¦ géKðVg<‰8Pb3p¡ÍWÐ)”¶ª´¥têù4 Ⱥsm}0lˆ·{!ÆŽNÄø/Æ¢“]žWúIv·¯~ôt.a7Wû³aÉï;kk7f È*Û)œ·æYÜVøã Yòî™\ê©VêGƒßïT <@¢¯¾6j§)•{ZÔç¥X;›«o¯æÝBñ;fÑTæsèÖøæBVfâÃ^˜=¬§$µfwÚ nà(ëºJ» Œ+Û]WíPù„üXñ¼Íù¥†rh h¬ªùÁ³6º—“ll·!¾H{‚É„öBØÄTó"£,MÃÌ@æR¦áätá)ZšÂ:*Êû´Ëdɦ¢ƒØ€t©ÈÍxêÆŽ]^ç™FÙÝ19ìˆÇ˜ñ¤V •"<$sáiV¼¸îó…³bšèá~S º³„jbä.¦R/BX‡>A³¤Èxµ(®YzŸuX‡yÿDÞÁ›È§Úßò‚oˆýv¤âÙÁGÑ ßb’lÉA çÄ6U.|ø.:r OŽ)Eg5ëwS…à4Y?ú·Jóáæá÷-arVÜ3Q>êëd¦}ô#‰â®îˆŽl_“yF·0¨«Ò˜Y±ßíZ¡Ò(9¥B4}`Ë‚qŒ1XkÏ(#)g<4¦Ûš\Á.…ÝÚ÷HÍ<ÚÙmWè2ϳ®¿}¿ÌeÐ #Yli9î&*¡ZÞ“§AÒÊ삟A‘¯Ž#ä-• QT”ûmÐ)†Û ÞÜüöfm ÎqaU†À† æ­·›ÎU?1ƒ¶¨ùªpÖÝr9ÑÈÔ%·Ë8¡Õ¤©÷8a„­Ì$Û„ŸàwM >æŒo 6aøÏ°„XÒ4î°@¦ìKqzáã bØàE1´ÕT2‹À1M”¿?å‡pòýðyÿw8Èsœø3¹vhHçß™áÚß¼•÷”]ä¡­è~*¸ …êMJºjâQ‹¾†£>²8æ+ZuZZð,°d~§”YAÏê’˜G´¢Šˆ©âL¯‡ Mó ÝГ®Þ—J½a¢e/›h½nÉ¥î{w1íÌœ¶^á%Õ ‰&8ÔE^˜P¤Õ!Ï/æÞÌj(‹ã Îúa¾yøq©å*|¯Òd‡=`Pàÿcö”‚ªëí•#Εöwu¯ˆZNáÉo¶R¸?ćõƒæwUî­ÍËS¬wÔ [ì $ jv©^ƒ6µ9Ò5¯é™(%ˆ.›òqë#èÕc=­|†[ÃYãšõž:=|.»Éo³ÏorV ÏšŠ\t`´”?k¤®Zû*(4–j?vUu«ÞÖKu`tõ†´ŒË}CýÛGj5‚n©û8®«ºá˜žQå‡+/ÞË1XÚi#¾:x:™bÐ ‹È§W6”Aʼ¬ÿ8¦»Iz¹Hð¢K¬,|úé@ÒøˆŠœ·1æÍ,v¡ü\éÕôˆQyÛüÌÞHÿ;èõ %¡M¨†Á;tE&Ýþk­`lŸœS¦«,Ÿ6ÊÝ©Õɦ3Ä7¸lO î²rM Û²¶ÔãlŠÓ53ÚÌ‹š§[c¿ÁL~5ƒ®UýÝòQ‚e¬ Ã3Æ¿öÒBÒÉï 3{¡w…;ÖT,31¨®õor‚°Û.Ïc>%Yí9<祃†wÓ¦“Ÿqæy¡Ê EõÑGA¦WVHôô î‘ú¬éï³äômÅ;QJ”Põ—Ü8¯XÚõX‚„'ZÓxàŒ‡òí+x3Ÿ¬Cλ¿»ô© ߎyª+ÞDŠßýÉn9= M¦…ºtt¢²á/9pTyðù †QPÁH*ݸ)×ë–NÛK±‰_jªêÇk‘Ñm•ïñáݪkO3m6âX""27œëö»–^ò*Íê%/O|Í„¢Ç …Ź„©‡å­©þ¾Ç ê1«…6®SE’LXØÊZéï>Rp›‡Áå Ü-2€5*“»¥û’ƒzk YðBºiñºO˜Ûbß-}«~h´ Ãí5é|ÕxPªèr7øÎñ^&›¹Ï@룧¡›ÿjŒÛE¢y¹n¯T£SØ)QZutÄ'v›ò, þÓI>4£/«*ÈÃõ:pûÆÞ{(©@þj÷®èy£ö"_J(yƒÄO­) 3‰<ÆUyd©'8ûè[ ÜqMN¡²¡Ð鹕äÞ¯«:í4a0æ‡Y †ôþÚþSåœJ<vTÚgBÌYÙ8Ø ÁÐì[OóëSUb-B£$ÚA²­uMæ'dN,â8•ÀÙ±çuCÛw‚pÜwaEž{QVÜ"hˆ²Ì7G_Ým©”p%cɘRæ«ôX¿’BÒ)Hryùlž’Dþ?mžíïV¨±5§êiqÛÿ!ºn~’ÐËæ­H|‹BakÝŠË7tCÙÔHî«%p?¦Þ"o{ìß¿tiÝ·Š o™ÉÏëö3ò¹çëeÚP+Ê5ì"±ä…SMË‚™´Þû`*ø«!Ïjsc’iºV°9ŸÚÝ|ˆÅÚ³÷å–CS”>½œmøØêã­Z;ëåXWväïÕÜF¨ªmð1BsÔùeÝ„èÙÄí¨¦”ܳ5œ¸FHº¾œ/¤ü<âa?¹B‰¿V¿ôÛ7 tv¬˜÷¥dåíê?ù7œ©¼+ïDþ,€ˆBRŠünñƒÊË7Ctáä[47ãÁŸâH—S©i TÒÑ«M—5Nƒp’‰AýF&Æô ‹#×:îñ½T*AÒÆ6˜#ÒÑò_·o8G—C0Äf-èèHÓ?@$5m–Îkò/Ÿã EšÄGU½g´ØŽ >ÞáL£UWÃbG¨Kuá ©^-=ToÁ:XT‰Âœh¸ˆ›s‹:û}:èr@)ÌÑØ¥Ñ ïÓdwk™€û)ÿý¯½ðr±ïD+EÊž¿632vm¯îÀ˜OÚÌÝA ªôàHÜ)ࡊw‚9§{׎ÕÖ£ÃÕâÍWsç[Å‘Q&Üž¾Ú´t·‡,ͤ„À‰å+áÏß®ƒßwŽÑÌòßBBþ¨tYO\gyŠ;îß߸*œw:$ÝÂíFÀ·®kzÅ8[úGØÇ¾Ð4zÆ'Ÿ9¹5 cÍuNYCÆS¨Ïˆ{• "Ï!c*cÒšîwй&f÷ÿP/²É®‹ñi½ž|ž¡>¹õ’ÚvO/ðmLÅÂAÌýü"L•ʶ‡6ðE³Šáé¡”"ãEðÈüš)Õö¦íºß˜@KSYm:Ï:ú>›/hÀ¬~×!R&Àq…Bç¡ÎǹW•ÐZ÷ ìdr¦{‹#û N5ym8ú8ú† ›ØšÃjœêö³²4[ØTÑÎX¨‡Õ PãêóA¢x“ ö¤™Êø£<÷Éa>ºÔ›±Ë(ûA¹˜L’OÒØv7xëµè­ ‘˜.Ùy7î#fª·–AžnúŠBðWó?g¦4WÍUhðO>j&Ýw)ÂKР .,´ ŠwòÕ•H3¥y{Êß—B°¢Ús,Èhú+™• <Ë¡óUßy<@Ql2è±ØE•Áo ˆ€vPp¤–„´l¥ñB‹ßÞï,ÂfMšu/ »;«ƒHÇ/ð¹^Ø(*ÅxM( :$ø”˜ ìB­zkûøDBû(6D—bå 1žËè™vv*cÞ›óÞFÙÔ¿Ž|öÚ¡eŠ‘CÆ?ÓŠ„a7³ÖYÓhBmI·<Þq>£ŠQ^)Þ˜Hî í–{8Mç T“¨š8Y¯/Yhá0q꡺è&쨅U²9𦶱@hÁ¨;ÀøÖj`vØX…ÇAQ§+eþô C[¨ûÞQ;Ö~äʘàyØr‘û¸QõIŠ•wœ-Ú|óÒ‘®zbw' 7£3¥sùÄTÉñÝn«Õ'‚ã`Ú@÷ˆ¸ªÂà3ϼ_Db˜2¬P½ôø”¢ÁŸO>ÑÅã— 4Ó’žôy²Ü›Ãa:Yf0Kf_™ØÒET˜¯²W: ’†4]{ÙT2±¯Á ïLÙJ_Úõ|Œ<­k´uö|{B€žÿ¬Èì=‡Â¥PE²êÌ%þe¥ lƒÂ™îü.¸‚lì}‘¬S›‰#PX6ê~=Çâ÷i¥¡§b´8Ây'W‰GaËŠUJŽ«ÐP És…±S‹ö-Ó¥áº^ÝÖO¥²ñ·ÍpÈy8Egê- KSëÉÆ§Ã:øFÒH“*³Dõ÷”ˆ¥ÚЋp°•ÔãÒ«~¥„ïDj×<¢›„³,Í~VC ɟ僉LþŽ,a|&1[™Ëué‹ Ö̪O–"ˆƒ–èG^ÅÒt¤Ù2$éÞ«œn^ØY„ŽÑ’r>vÇÕtü*ˆñ–p„9“ ãûÅD O¾$L…iåž=Dñ¥<™´y)Ì=XÖqÛSÄ^kHÏò}b½Ù³–È’ÃQtøIÐÕ9¨wø‚½ÆN%¶¬S´¶&Ûž1Š›Û h«§<íé!Z úMÐ]á›ÊÃ.í†*©á£4M]Mq…‚Ãè<Ï[fúšVI#T MãV8–/½ ´|€-Å;Ì~Uj­7TFê/2ˆ„o ª[´ã&sF¢„>}ZmWàɨÙv¨ÖÞå‘+äv,}÷œ5i/D#w¯õÅÕwšï”±€èPç4ºYh¢H<€ pÀT†3‚(cæð~@Ù26ÝŠE8M`‡?P¿fuÿ½²Ç$¿ZØAõ­¹¥ðj<¥[¨±ˆ¢)_åVþT4Ý41JwŽËìŽÍÂ[iâØj¾ŠjF•È.H~¹noMeeÖÍ{aZù@Ó#’.o$8įât~2 äŒMkËˈáluíYàbEæy¡ÿ’Ù`ŸŠ``§’ټǚ … ¤ekqŸ*ÆZƒÉˆž™=ÕÑ"jjM¸B(' 7|D‹L Kˆ=%.(¢÷*¹RV—sà@0%C³Œº)s­~Èúö5ꄊœÁáúÉ©#Ñ÷lÀ÷Sæþu] ˜yÇ€ö˜\*glø‘‚ïl¶1ת ŸCp]»\œiäûo‘­Þ¸™„g¤¼¨çÍtr—ì²çªbÌGc=Ë;?Ÿ÷M»Ì dðWI…¥À¢@i Õí™ÔëÈ0ÖXÏ!Ε_+°[Ä2ê>eŠ3‹iµŽY·L#Š‹E½«³ƒÛuà9«º @Û™9VB…æÏÛ~»ùc$C£ ›Ë“0ÖFTm¡‘·QÉéo+C§"\{½Ͳ/µÎK J‰h`W”K8¾pŠc»½s/æ/uy¡.]‚Õ‰¬ÌzS˜'µJÛk Š,kÃü1ÅÍë³®üfÎ?ƒéøˆ•V„‰MáÞ~=ß½æSlÇnûÞ ÙÇA:JmÙºë\"ö™¼{3ÛGó”n%æíDÐP-¤Ãþ/ qDq0«ë‰ÀËl¢!îÙ Ï׺ »ƒå ò<Éõp.¥á€r_J~’ŽýºBvÄJNœŠ{Ì¢@¹Tò"XŽRã á¼Ú%ìbω«ÜvÍÙ‰z\ ¶±ÓDªŽw8º/úÆ5EQdAµjÖ%«òQºtÆö øÌFÛú¦‰sŠ2@úri}éìawN”!5èÇß1G³?paÕÌõ|+ˆpÌÌΗý}o9=ÇÞÀ¼ýø2E¯[O"¶(b^œ]*4 ©ó˜± ÏÒ |ú›²Üñ–„c› «D›5{….ܼ£”®¤hk!Ä’}cé¦W/D>Ö\rô€´Ô3í©‹‹R9jÁŒ¨IwJ-,"mÅZDΔyñêÉSè4^“tf~c9Rós=تh«>:)£Ü•›Í\¡Š/£É½¡s}™2‚,Æ®‹u`³pgf-«^êFîz¢óÈôr¯¨Ë$§$¯ê˜™²\n WˆŽ|DNi”¢7Uãüpp@¿ÀÉ‘1‘àúî^+™|HbÃÒ/÷fìÕXžö÷„þþD‡¶ºJ%z‹s¹vo;¼Íãò` v¡q¸Y­VaÚF4v¿Æ«¦®¾[.`¸Zÿ²ÕúƲ %zÒcɇf^âØ˜i$@j› Ó&_ð¦¶a~kÖ‹9_hV#ß¼þcr¡§¿L)ó7a¤ ”6wlVœ©kù4eœCRM.Uõq„/%ö{öK%•vɽØTXH¬¤””äa}×±EéôFPE¹u±Ó›¨N1þëkt>Wµ½"T°GùSëª<D!#iÔf{¿FÎøfsˆ+Û!oJθΗoC™Ôáy—fݽ aݪÑÎ×.y}´|ļ¸ŒÓ2kdj.ØáËb5µKhFJMÌvÏ¥7†H…É«™I YŸ5Âcun†Âo³K_Ô.ø ¶N°ýÃâŸð}(“[œ~xó|K<9Õ&Û’8Êÿv€'´哱/ñÕxEbb/zÐ=,›{¡LÜé¯Âµ½ôýEžŸ»|ŸÐ" "ÒÏJçÊ.E ·¿¥eQï=ƒµ~LèìCØP&Ï2º¾¹_Íìy³)OuX[[Чjw=Ü¢„ n•*W±l¯¹íq¨ë~‡|sÜð‘g§&L;ÚÚ›bè°å{Ve׿…† Ô,Òvd¸lÇäܱ¾à¯ëß<ïØ—§Gõ¿Ô¬?Áˆë eÌ‘>aÛìuç)’ìG&že´AêOù¯ ,kêÁœl²–W‰6_$*ÆÜE÷Üž>ú…_¦ì{f³7¶Ûfª½¤ç&ãÒpÞ´;œP#¾(_k~B–¹Fñû’ò>؆¸ÃÏ–%‹‰æ:X@Ç:ÿI­å½ªòõdξ¥ÕE¦‚f1ݳûp,oíœr¥Ý3ýÔƒ@Ç—ò:Û–~×NÓ³H§A´ùŒêï¶îñ6F,^,êN\}fµzÜ6@ëûb«iºrM':õöZ䯧ðSY·£žÓ£L>º}åÛ ó‚p¢¹ˆô}Ípžð{Ì7Ze@*æp½~Óp‰ÊƒÃ÷ܺ"ÕÃɪŠÃénÚ`l9%g#CE±U@Œ#tåêm ûæ%Õòž¼ˆ‹‰Ì*ƒ$‡`oåÉ–"h+*§)O|¦ûƒ_4Ô‰ô5#¹-äYëÇo–ÒU¡®á³ˆè¤â¶?:Î̯æ²Ò⊄Y{(gmÀ/X®?¥¢¬¹w7»×ý¦J®i>I]¦h¾z ø©0J‚öþP¿†á—Z,ÕAU™§žõ]„€§,9ÉÉì]$$™¸"´A;W†%û=+FÝ ¼%ôaºÀ´™ŽVâ@ Û•<{qjU©¼ZÃW¨¤Ñ;½rQí91Ke˜ÅüqËϼ‘ ¯K6VV¾9FîjCXº§sÍ ¼‹º¨‚­²8dFã¡2–>•ÁÌÒ@ðþøÀºù<ûy;ìÇP}¸_¬Ÿý‡«4L¶“aj3íôˇA¦¯ü*ÅÂq^¡¤†Uë£RýÈT¾Nýi+æ¹`Ôþ¸Y:—"~æÎ4~vô?¦IÖãVÚâ<=>kè*5ïÅJÇ Ö¢+aÉ&ÉÕ6ðä.ˆá—þªK2XSq·GºG}¿— ¤£Ç~ˆö礻¥DóÓ8BÎ&‡ˆAœBê"wÞP¬É•VÓÝûÖÙ{哯çÐkyÁ‘…ÏDÜç8mNÖx„ì¸ þï2Ã‡Þ &vbËäzŒöÍÄ(¯Ž™¾TµìX†€=Þ§”rØë.£Í®©!dÈ/Ô] »'øx~]…—mSßo¬Lôÿ&6‡Ê&PE¡#ti‚6Cøì Ï"Ûð®tzõô¼µ¤áÞʲogÄÃ÷ürSùÅ }¼TP’Ò¾J ‚’×fºõ®õ8T ¹üd ‘³¤>Uœú Ó̱ó³°?Ê‚áwÂtÄÁK‰ $xu ”MâÓ˜ óvòAKlh0¶}¸ÿH­bÅAèÊÏyTì\êâç¹KÞêâÃãtš÷™}ÇòÖ„ñ™ä6¥ýƒÝ —$>5{â¤^ꦦ>@˜J"ËO*Ö‰0{g²Ð?Úv…?ÐO[Tõͪ'èÒŠÄWo¦Xº ab±7*ó«LˆVÅ[lóí¿áì"@ÊJmh‘cÔ"€1$ ŒlïQ–«}*4Ø,q€eÆ.€¿¨/}ø&“ÊÎ ÁóýçœX¢£,OR—¶Þ @…ãa-©>ÀCüúyÅ#¡„üýII2úFå¡ ™ªîö{¼ZnšîÇÍ´¤^id•zÖ]‹¯Âªïq+S.¿GÕî6ÓÙ…+ŽÝYßõ÷sU|?D‹CuÐ寢H¢ÙæË<Â:›|Â/VF#`áÍ‚±bHÛ¾Ÿy# gÅK¢*¶¢tU|Bù¹pb‚ƆJ ÏAÎaç¤Æ{o—÷ãçC—mŒ·æ½?;€,}êû!n•s™o箵=\ <5—:ƒq(i _ÖeÂÝñž–ù¶>óŒ±Ç~Õ…Ê„®ü|̸üv7²$CLò¤/Rb–do‰eö×CM,Ò ÑM6­ÄX'ÅÓ-óÿ;›ü¸Î dr.ò¼’üûÕg–= =‡ ø(`ì­.Q~Ì3“%Šflc?Ê^Hƒ•ëœwðË[ÈÉYCR Á£˜CˆÍXÔ̪J¸ºÙ…<÷ƒ%Þ{W5ÑÃÃ¥_ŒŒªàGÔÖÌ%ælQ*}…uøF÷PLbRXætʽ¶„BÔðŸÔjPhÃY†Â<ÝÉR…ßÝ*59ªð÷€=î÷§јìʶšéceß,õȱí.ù©@xð?¦öéc!oʯ….HÄÁÉ'èèl‘Ù;ް?GÕÿ ™½÷çžÊú¡Ä\Yw“À£,™>?JwïnPY%0@Úýædå].ÚÀaš¡¬ÅïAUfQ¸£nÈžu]ì=°\ÆÍræ_Êy_X çܾx5,¦±ñ0ERÃn‡ø¬Õÿ 5”)oÃ"ßjÖ+-NÕµL¶ÇÐÚöT̃¡ª#CKÕ$t¾ ÒOùIFÝÍB"‹mRº/„õ€¨´õC‰É?ª}lmp÷õoW@e\eÐ/{l¦ËÍÍÒõ‘icéM«â†«tD<" K¨ß52¯KEi4¾ìÑ®Ë.HHk€ÍæH™15uëÍh'F‰BÍÁû>YJ°,“ÿ¿tæÞB”æS€ÙÓmW.‹ôàöœeÝGÜE‚"Ï7EE]`kdyEŽ…—v¦®>;wF¤~ô¦Ÿ¶) @Û ¢œldc!Âò`sêŠÓ3x¸“˜ °cßÈn¥SÖȬlYŠr("ÔØq’_¥zN?ÚËÃe7VÆ7×Ád%³ˆÔϱvÔÁMâESWÓ¥„ÕUŸV/¿€2¿†è6JÇÙDtÞoº²CfiQ‡Û®î©ñm­ÀD"ZAÌ`M@HWÅÃE ÈPO÷Áà+CÚñ$ÉZõð¥¥ÆÙÍOÄäûåìŸëÜJáoâ¾ÝœîéS\´^k[ŠÞpbÙÍ}+ëœÿ㽑&¢ˆüÛO;½kWÒ©ÙÝç V‰Q­ùríÕH¡}VF¼yÑÓß:tÛ?éÊ´,s[|×Ò'üOf/– ö¤ãqû‰Æšë+¶M?EÓ¸ ÂthšLª1™è'.vÀ·â‡A'P {×í.MJ1ähæ»éùÒm¾œ?¶0åþc—š¿uqKˆN-qþ²©%rŸ\TY Aå¼Q‹Q3•[£Áöå‡G·!$ÆvÕ̧\…•ç©Ñóbíût[˜Ån1({§JÜ;&Éq„>&ìSl%Cº<ü¬~ÑÑt ªn¢žÝ±‹ÍÝó!iZ|ÈQ)€å¿ºR5b‘,Ñ×û¸6 -ïpªó¹%àeΗåS$l]¼²œâP}žù¢û˜<ô/uš³ªyçìCßÇ¥ ‡f¡¨ýÞoo½Ê•6Û!#iî7-Ž“+7Ìö:÷á9È+úU'Û² )ݴĈ9Kà/ás·Tx†-ÛSžîOs4ÞÚÅo§$úÈy)™<¿sü¼”~ߨÿFšüèÕ˃àjÑÓET—¡x¬¶Tv–ï¼óåŒ%a=™óÙNÔ@ôôÛž¨]Óõ—rܼ9‚ü?w”]÷¤[Ô»Ñ8uÆa.Ü,ƒXýâ÷–ŸÒ#T‘ç9¯"µE‚UÝðèô,#õ®yºвýÔ&>†eŸp íôtNëOlønZ¸ð-}M£fßãfÆzö)h¨`çܸDgoßUE|jj—? „äaãÙqSg†ƒ¬k+Žr5³[®¶Î´î€'+g¿Dı¥W¼ñ—ø5FÅ…ºH†] _#êM p´É•òt*XWÌÓ¶sÞ€äzõ®ÂvHÖÍidhN¸;Ä([ÛH•ãÙ”›Â:tRà–û±ìnoVÞÕøN¡Äkî±­ÅT=<èGÙ>‰!Þró=œŠÂ[o$Ç:6’×ÀFPn‰=\Ï‹;Ö9”R—_o9»6D?ÁƒÐÁÀQŠeíQls bQ}wÑ=ǘ%Í"Èø`]r âÙ¦·gÇQhnÁ=zóAHSÌßgGÖrêVxîRÌDwxc³³À†ï¼èØGY+¡Õÿÿ&÷eÊ endstream endobj 59 0 obj << /Length1 1484 /Length2 6551 /Length3 0 /Length 7552 /Filter /FlateDecode >> stream xÚxT“ÛÒ6ÒAzï¤÷^¥÷Þ»”„Hè ½ Ò‘Žô. E:J•Þ¤©€¥‰  ‚~Ñã¹÷žûÿk}ßÊZÉ»çyföÌžgv²ÂÉfl&¨â‚pk"à(AQ!9€š™¨@DD\HDDŒ“ÓŠ‚ÿ¶rZ‚}P\î?j>` mS¢ÐD ë ˆŠD¥äD¥åDDb""²>ru Ô` ÐEÀÁHBN5„W ÔÕ …ÞçïGˆ *++-ðÛ â ö‚€p€åöDïÂfŒ üGž»n(”—œ°°¿¿¿Ð)„ðqUäøCQnS0ìãvü*`ôÿ)Mˆ`îEþ˜! ( €6À  0‰vñ…»€}èÝf:ú#/0ü/²þ_ÀŸÃˆ ‰þ+Üï_ ðßÎ@áé„Bá®iê ¡P ÜåC"Ðþ@? tF~§hª˜€è ÿÔ‡ù@½PH!$ö«Fá_aÐǬwQCxz‚á($á¯üÔ¡>`úÜ…ÿ4׎ð‡ÿ½‚@á._e¸øz [À¡Þ¾`õ?´‰ðß6W0 )"+%%) {À 7á_˜zƒ¿ÍèBƒ½^º p(F#~`ÊÇüŸÀ?W„¢¢(p»Bá„ÿŽŽ6ƒ!­Ñý÷ìDÐòˆüzýëÉ­0øoúï Ùª«ñÿ)ù_ ª*",(& ”•ˆŠŠJ¤¥%¡ÿŒc „þÉã?|uà@ö¯tÑçôwÊ~4Àóg@xÿŒeˆ@+ àù·Ðï‰HŠ€Ðo¢ÿg¹ÿvùÿ©üW”ÿUèÿ‘¦/ öçù‹ðÿà@O(,ð­\_z èY€ÿ7Õ ü×è€] ¾žÿê €èiP»¢-(*!$"ñ—ŠÔ„€]Œ¡(Û_ªùËnñkÞ`P8Ø„þºaÐ^""ÿ…¡‡ ä¾Ehiþ†Àèúç¾pÂå×°‰IJ€>>À@Bt¯Ñ+I@°(z*]À¿Å ‚#PhºÆPáCø«±¢è<…pWg ÈŒ¾ !¨_„?˜äb5ôoP\ùø üÿiÿrÿ#:aO …ømúG _ô<ÿÖº¾¿×¿/08 "\]B€ä£ÝŸF÷\5©0ú ¾ŸÂÝØìKHµŽ—Dq-?vÓÇËÓš÷Vuri ›xd¼R;·ÂÈ÷éj:àÞ‹‚ˆõlíb†Æð¶ê‰`ɨ׳®`ƒëŒô£„mòã4fR';l;î «¥ëéñÝ'Êoú»¶²‡O@å[6#*Y¥¨ïó Ç&jÜæÙC »_s‹™ÌЇ—ª=Iô_·í掯­½,~$~Zª7Ø(ÕKIO¤ËV4‘>JOV û ‰Á¥*y¡V“•ÊN_á˵Žå$½þ}¡t¤;mTÜ·ÍÕP-â¶ÑýÉvß„ä’BÑÀú)“ãN¾ùWabºŽô7¦Gªœ.ã9Çâ°âAlnKß›Ÿ ˆªêK}Ì×íIx÷£Ä>ÌÒ]9%祉ŠÙg)ÀdFß•©JÃX¼& V¯¯ïf(8)u° ÙÜ7}'î})†ÖY³fÀÏ÷:^öŒÄ 8>1SÏG¤Z÷æ¤=Ó‘¼xEnɧ!…jÖ[Fô;ò¦¥,„™aw÷iÉÛ*ˮ̲§XŠ“–˜“/›ëïbäØÈŨ„/‘Pz|ªa~òº^jò±Bd‡B–L¸Èý7³'·ÔM>¦5oß6øŠãêìs",†ï WÜgëæTeÈ­‹’H…¶¦^ï©ÚÌGœH/­«þ°s¤¬¾¯’üýá—Ýó¶ãbk•–x[XBfÿ|ضcÙ$s¯íÈC¦œç³{¹³v´Û¾]`ŸP:kɲGWÀêÚS$»ÔÖF¨,ìF€ú=çø>“öó¯D¢v—ò;^{m†Ç^ßk½UÕ¤Ü+1²âÛ á\²ÁØDñ–aêÄ_d(ˆ³m‘bKp! 7H;áLIï5Mé¡ǃŽDò–oZ^'ƒLk”]ÍLº£A K¬ŠHM™ï~Æâoß [I½ TAô7º¸koåͨiЉo#±QuÛA^j“²8Yjm¬q¢#¶í(Öy»¡³¡L(J0OO5vÀÝßãKÒ ¾ºøfeÈÊlš§‘yZy”Û™²€yþ+s;ƪù“æ^˜>9¦©›èÍ"çÏ• 3¡üq0bµ+{@eÅ›üh&?È""Š2CW`pxÄÚz Sbñ­Ç³jp3­ÿ`_ë»Cö Z­Wk46ÿMçvÒÓ…§ßw龘’ÿpD-XÉçöO~ÎõUæ¹S‹â›¬¢\¸mñ¸ 8dûË“P ø{ÍjVVß™Lv=#^ù<*]ÛJ¥z aK¾…íµåúìbµ®qª(KDË£7~]EÓ•Z2Yå3 š&Þ* DlWÕõÝc¯ûÚž•G;gz„ãgª–µR]`¢îFHO² ì(P4J3Q@ÚëAA“ì íªè\;`Ö¶äú¯æQVºèŒiyð€.Å£¾§²$ŽE|4·0ÖiëM×L!bˆ>MÙ4ö” ô{‘2cWÒù}…¥CŸÓ¨Dù0W;*6ƒâîº1÷Cݲ‰7a~i‹#­ìnUJç-‡J›^|KÑÒ~$Ë´ oŒE‘¡ÛZ¤Êå†é’'âY æï[d ]±†@“ʸ¨N#ÞèVâzé…óœ$1ÑZDåßÒMƒÊ(ÏÎ ûÁq³äênoÏïî”çæn©fM,…~{>²Z„ƒp«®o59Ž>Yx¢lb‘Éh†3H{sGѸ¥-áa¤@{ô£NyÉ^ý&°fŒÐx°NûÁóU.‰4¾7–Ýk6Ü—ßžM¯ì-ÜCtG:,s<ãJzvjO.ËJÙy†ì䊎~!œºµåÀ›Çfþ~(H|†¹Yÿiu¶e“&¢×Œ½D>e/ëÚ×Ã,PEò4WJUüM©üM®ù6~CnJóL{ÌÜe ¥½0î”`XhpüÜȘrñB6ÿ¦<(É­›pÚ >öf»uáÝbp-±aM$Ʊ'òkíþI£syÓ°œ&rç}½åëéѨ~`MžýùžÒ¢æÑ©3ª–‘ãF&•öÓ(ÞoÀ± ×t²E6Õ à€e|ÄfâuIð"•ñ²ÓGê²ç…|E‹mö^ÿÈŽß ‹¬Q ùCš6íô@/yõ±åm@†;ý‘hÁ¬Ü‰i´}ýZ¾s–š;gdx­ÂŸm¯9{J*y¢ÂÔxãóN¹Ÿ½¯xÇzjÜYÙ«pá®|ßÏ(ØÙNôR C˜qÀùùahÜj?cÒÊ[Z"ω˜FÛk†¡R}™™çç«É ‰³¶Õ*f}b¾¾vÅ«.½·çgíE¼9_ð¼‹ø—߀l³†§º+ŠóoR:L&Ý8 *·à‰PXâÞ0rŸÌ4Ï^Ԡ̪ÇÊI]”Öš­©±)y¢l¢b†.= ­Úlži®ÜÝS mÉÞ÷hy3ˆ·azÄózqÆAl…“LSåúæ£gt7FÒ4é>,Ä3 ±ðòc½Éû.ê†è’ÀBÊŒ”×~¬Çü÷SË‹Y†25Ú@_=]ÅJ79\n¸`¦9D­Ä`]kƒóbWÕZ÷ý ?í²kI…U~$þ„W\dß&Z¢B›ú<)“?d·‰g§ÓrñóF¢Vu=L:RÂhE´îSìx¤ð]‹=˜»Vb"ÖÚPÉÓO7˜Õ{L$ü¶¥}5h^Ð6:¤3Aýˈ„ é×M#¯öD[³og*£›qõøñ-/7éW:Tv2;_ô¢`}ÍÓÚ7%væÈiƒRæã¾ÖÇ`pMJ%¤²ÃßãuË•¶(¯4~u ”=yvð8’C„yåGDkÝ ¥´Ÿ‚"!èlWfd8¤¿BÑå§{ y^rÄ`›¥çè‡G›ôÞU“®jãôigiÇ+Ï»ònÉát¿7W[BÝïJΉũB0ó=’Mñ™YÔyP‚po´8Ò»  p/é"ÀºâwmZzú™hP'¦®lb‹%qÙn,Gœ÷œörßµéÝÀ ~¾"I*–ŽHâÓ¼óÈ%îs9âav°½Z­"Ç,M‚ W¶Ùx¾2DÆŽ{â+AÃïGSS ˆS™”a=×µd¯>QJ’H¡¥ÄøÂéÃf"}Ë„ûç/^_ySÁ€ÓÄöœT…Ø+R»kŸ˜<ƒ2…1ìx=¿~È2އ‡LÇ” ²ŽJÁbšŸzÂûùS©yÉFå…‹¨^q©G]Ýd¢ûZX])>#\$ˆ¶Vë ó&«w³”C`•É>gPôîÓÎër†Òq”N ÈP_™ö„a»Œ;åÌQêw4^E¦{y5jòÕUi^Ïñ;ö1Zp™†KÃo—“ÏcAd£ø?ZË}éÛUíÉ“ã›Z×g†`N%SʦsÓÝåù™ƒ©»Eâxg_«¤»6éñDXë `¾±lçZµ=›Ta~ÍKÿt1s»eѼ'“|07õþô‰îáñ龃:´úÆ®òDy·ðm‡ØÛgªu‹¸o!ùÙwp¿JZFBæ,¼#B/¯çC~&å¡Ï H…âî!ód?W±< ÝyŸÁGÈÌïê¥.Ð$ðB!ĽNL’\m,R:ÿË"QúqvcÛ£&²0¡}aÍjFƱΠ‘Òl”iÁfW"¦;“?˜È¾ŸÄ8ü1xgÉÓëô“n¢U¹©y+;â§ãÉÊ|˜xÕ– õ~¿*‹åù}ŽYÒ.šTwÂöJ€º½Â`œFGRIñË ÍO® ý-…ª¹{;ùUªë(6{½ŸÎœL²n<_Ÿ“hÃKd‰+Oý$úÄB÷Š þL`Él¸Xê|»‡é±Oy•]ÚÚ ?§wD=mÍß“iÏûÃ.µ8~3FWÌ…–tNßžÌ|VMûv¦Os*7ÔÔœ—©@×ðÂF{‹•o¢·VWx×w(ÁT¦‹GyuõA^1¨£WyÐKÇóQÑZ™¢5ÛKÏ,ðçqåi ‰ÕOöyK5í½«B™W´‹i8w¯ }‰™xÕ½ÃB•#ǘ(ÃÖŠ¡x˜ØS²û8^Zƒ+Ò°v³Ò?m²Wám ‘ɸ¸¹)‹\Õ|™GÓ¸¯Aʤ[t×\ÏÆBînL—?ºìc™c8j¢øy°ZËŸ "io¿[r?Ûó#òn®Å~„¬›cf•IÏë/;Ü•†ùZ­Ç›89Š$˜ÃÕSÏÝí[)àgâÖŠº%AJ«êGá †W1·záÄÌÉÁÞ´Î6<Šì«2|{úƦ<ªů[‰Woág ÚÛÄ)êþ[WöåáD½Œ©Ô‡.ƒ5Ò©Ç+øG¬Òoæ’ qP[nîº1  .‚<8<<8ì%©±O@Ž’odÝjØVÙʧgßÅ /y±ÂLg˜|ÈMÀvÞ¬¦ö:»Õvö˜É<ûOsNÛñÇ¢ yz?üÒäÞÏRO½‡Á\Aòwû‹p#Ž56ŽíPs¯]ô˜’MÊ8¾q°4¥’HOÖ>Ô…‘1O¿UÞÕOöŽ`jÌéÉ—OòN‹Ô»TfñµåZŸ<Þ´ÑfvÍhÛêÖ îð5u°™Ë£' |Ì¡Yý*[[}õÔ’AÉë/pîQ'•ñ:§¦BwäÀèˆjîÅêE‰–ÞŠ±[Ë}ÃV»lqǃøp5üsš õyÁ.ÁÝ…ì̤ëˆ[Nèoe Ñ%]îž›Í5§PS\ÒH¼×a÷ªÃÉ· Å< ¥À3„¯®´xaÙAë©ßæAÿy˜Þ«àƒ…uq¥å”äƒSû¯rVôòTä~¬©1d98Ö[ò8Ѫ¬é UÖ”)BÆ›:òJÅlæåñ¡ÛÏ4±.,ìwžD¥+ÌY'þ¸}“.Ùú<1Ü'Ü¥¨ÐË·ᬆÕw߸5̨âÓ\ãn¿®Ìº>»uïür¥xŒI?ó0ªÄ8ƒK…"żðÕ ’×s•x}6—Ì"ÿÌ——}¿EþÛ[³¬ì¿Þ‰“ë/j÷[”úu£º…Ó5Ù¥,„šDwq1Ïùßê™,D‹Ð³/ÔÍ)F|Fî¯E tí7—kÙ&ý¯¥ŒÖ„B…£'Â$ÉOJ-·&jZøëÉ+žÕ7<¿f–Nl±@Fæ=Yª Ü}?>”g^œ¤&y­åãºe;D&9É‘÷(‰+¤)¥­?ÿ~ÖšVíΊLÑ£â’F\¿÷<î´¨ª¨í ñç™Røç£|ûiûaÌI+º£•4†xO¡¤²‡ '¦v}´³9ûîw>àÿàŽÜêm \!y.ÊJzsÏ ¬´Ä#·NiVºˆ‰Ý¦´Í•`Ñ‹wîÞ+¨Ù%¥TN*0¯Ï,r/Ø9GôBœLôBß•¾Ü>õU-ÈH =ã ¿’‘ºYªêÞufðSñ‡iôó+IVÆsÁdÏ­;gá®ç:š»rJ¨Ì•T\3 £iЉ»˜š§]Å»:#iÅ«o¥5½˜ÖÜQO?1WÒRܵ¨zºløFFáâþ¹L"N§H”{‡‘ásöŠÛ:Ë…Z–_CºùÄp?×%I&xØþ4ɳ³P8ŽþöÈg²¢îå‡Ô. ~ôl0cqm²/~°ú#¼(Ï÷sÙr5†Œ ¥5•t3CîÆ¤²[§ ìù/\3T “¦‡W?=<—Wu0I1ªÉÿÚϧz[¼%ÊÞÅñlCg„äàg±£.ø‡Ó+BÖŽçN‘¡‚²Ô&ÂCï ZÀáEJ+/FÇæ›Ún±}tÛÁ²O¬t>é'¸Ùï>¨s<»;w5•=ÂMöÅ4PÛd7SÐO¯[ò£ÆH¹œÓ M'r}ŸUٶ⇻x¡SØy{nðÔÀR“z\Dòç4¿‡Î{1+YEHvhÍ3ÙìÕPû¹8*®½îgW‰{mlå`{Uë‡óO©K„Å£cvÔ ú‰nŘm(¨[xW’ÒÔ?2îp†ái§ßè˜9G6"Ž*´‹îjê‘oïÄ­àL¹UÝî´•š¥‹ÁðXŸs3´²¥H!ÁšÖ¥ã~Öt9®P½óÖßð}a V+—Àqe$¹a¼í?è8› !’Ȧ·.ž0;Áîð~î««÷Y‘fˆÆ¼»ÂqhY(ßC y´¨6q±H`ôõó¡Å8~•WzNpÇFµŽ­Z¶Þ–°S¡'^ÝÛq³WOL¾³Ì©éŸ—ž¥uÐäø¼ë«dŽÑìXÏÇá"¾Ï½£‘¡8Ò.ï„M:Lä÷óŠõu£¹Ýh ×þ8Œ™È®õÈ‚Á=y£7:0ñå°(çëb’FãkèHõÔÜ…=£¶Ì™÷…Q¬ý ¬1à·”ÿé¶”õS5²~u=#<úq|We{H¥eîÄ€ÝAØýÃ$Qͯû,¤*â~õ£[Fù~óLíb·üˆƒ¾½7ïXÿ6!²ºFå|ç"ÿ–]~PàLú"6X´þÇ¢ä#S•N<Ã1ÊÁ© 8VŠý'ñ;ŠßÒw•? ÿì´Øü†ÿû/…AmùQPpöÉÝ@UgéW@J× ŽrMÜ«ã,|A—ì7½¾;÷0¦0?°ç„]rû~¡fS|#þ]¤5™v°§ÌañI&ïb®`ð3£”Î&£¥obd¦Õ­¤/÷ñYãM†ñÏýU]gÓ¶znÌnº‹òÙ—kaùÎ'AòÍ9:‹÷4–q^L$xùT{=SÆUs=,ž•O@™]~âdŽ8âÝö2½Z_}^ËN'ÖæK˜£N—¼âZmBVÙžr3àS5wV}Éy·ëoò”áü¤É FQì>|H¥gÂó£Ç [ߺÏ)D©tϪ$1z÷zû’FãO`l)6O®`@‹ ä¥ŒÐZ¾+—›g°X›ëP_~™ÁNÚobÕõ8ÊèæË\šŸQÐ÷.!PÇ™;(³Î†ëzãíÊÊ eÊÇ…CiŠLºÜÖ‹«—'*’ðq ÍÄ,á¥ëÉÄÜMb{ R¨Õo÷©yW `N6õçT»’‚9Ë<Ã;ö=Ï K½ë­Ç>µ§~.k†¨¡7õõÂ|ªÇê=?©ÀÏL”›9Nüû«VJlùðº'Lí\E/ëT u<È›¯ÎáþùôŸ¢†{$û‡’+_ÍÁ(±š ä|#º2£À¡·ýºŸ¾ŽQØ{GÍ[ÒËf³PèRÁ¾£kæG& Mc!#Ä‚!s<´<äõ”e`¿E]”æW=|5ŸÜ¢n‡¹4P*M¼èÊzOÑ>]­‹Ã×ji‘áo-YÛRpØX÷j3×åäT¡òÃ*nÌï¹Ñ[Aо¶p'=Ý+JuÌÒ…C†©¡;¨¥º¸U7"xê´ÙZÉ‚ÅîVzÑÐãfXŒœX>n­gÁ@>m¢™tt·´Óò×'F&«&º‚,×–˜_­ž’psz)ËGJ•ô–?j3}I$P¨Ðûç%ûתâ>߃Uï¹°xŒy@™î†éWY~RýºÆ`[”Ç#“î¡léi e²ošÔW·n6ÀaA •—-z…,w7E’±”3¥i4„±î1Ó.J§§ËQOr&ÓA2~òÄßܾéµu Û¡¢~×RÏ|–üüô»RGí”™ ©Z÷¨˜îWâg¸žr‘¸‘5YØoCY¤.ç(p e§Vå±p~ùB‡²òO,¼_§"ô1_óGRßÚu·P<Ž­<ÊÃó+«—Þ sx¥Q z5E€ äK ¼5ï“YØ~Œ·Ç€ùdǵ¥/Z ù1­” “!ìƒoÅ_Þk-“íbËñ—T³Œ¦î_¤ Î_VÐdl¶›ºµ|£òã|üS™ ƒ¾èm#ë7oÏç¨x­‘¸˜>Ü|ÜȨZ‚Ë7uc[,­†¼¹ôsð ;ÙW’¢zžf®Ý8€ Ö[ñoK‘jtJ~¼Ú²ms×F5Á‹ÒX•íŽÃ=ñåŸ4\“’(L¤±*;€vçÈ8bº È4Ä¢­ø&†3í#³åÌ¡….5iT·¹‘tÇÊ0Õ¦¥Ú³©O°Òn±–¹Nå~…¬Ž!•¶%‡7çí{$dÕeì¾uÃC…‘&¡GÚJJ+í»s¹Ó¤T3{Ž9) fb·È©^÷/|O.-W&nùJ½ÞCrÛÒ›¼7êmæ$ NÇèy\ß½o aåÊ[ή9z;éóDï©ÁQÒaÐF?þƒw®ÌïÊNOùî¾y}¦bG´Î­sTi°ö·~¡<ÂVš_©mYþó2Ÿ² endstream endobj 61 0 obj << /Length1 1422 /Length2 7302 /Length3 0 /Length 8267 /Filter /FlateDecode >> stream xÚtTTÝ÷6!Ý¢ H×ÀÐ ÒÝ¥Ô0 0Ä 0C§”"R" H#ÝÝ !!Ý©”Ò%ùGß÷ýÿâûÖú¾u׺÷콟½ÏÞç<ÏeeÒ5à•·EØ@•p¯¿@AËPM€ÀÏ/ÈÇÏÂge5„¡œ¡ÿøñY¡îH.ñow(uçS£î€Z8@Ýà ‘•àç€øùÅÿ"Ü%Š`O˜-@‹ Ž€C‘ø¬ Ww˜½ênŸ–'@@\\”çO:@Þꃀá-0Êêr·#ì 0@@`P”Ï”àr@¡\%€@///>° ’án/ÃÉð‚¡úP$ÔÝj ø=2@ìý{4>|V€¡ ùWÀa‡ò»Cwg GÞ¥xÀm¡î€»ÝjšW(ü/°æ_À߇àøßrgÿ.ƒÿIC W0Ü·ØÁœ¡eM>”7ІÛþ‚‘ˆ»|°'æ ¶¹üi P–×€ï&ü{>$ÄæŠBò!aοgþ.swÌJp[„‹ ŽBâÿîOæ…Ü»ðïËu‚#¼à~ÿXv0¸­Ýï1l=\Fp˜›TMñoÌ ÿ_>{( ÌÏÏ/@ÝPoˆð÷†>®Ð?Aßî»ü\®»»1 0;èÝß ö„Pîпü§…/ °…AP¨= Žÿ¯êwn¨Ý_öÝý»Ã¼Oùïè'àÿýüïÊâŽa¶¸³Ï¿à®(¯hb ö„ûï‘ÿ7øø1ÂàÇ+( à ó@BÑ»EÀÖÑÃþîãßrÕàv€ø_íÞÓ?-{þÍŽ¿ øÏZÚˆ;æBÿ"º9¿0?äî%ðÿM÷?)ÿ7–ÿ®òÿ$úw¤ìáìü'Îñàÿˆƒ]`Î>#î˜ëºSâN ðÿ†š@ÿ’®ÔæáòßQ5øN òpû;Fó ññ ýå‡!•aÞP[] âðkþòýÖ›3 ÕE a¿ÿ0wYüüÿ»Äéî/‚¼£æŸôNCÿ¹¯‚°ý-6°ìîöÁ¿»ë;Kà'p§J[¨÷2€|pê.p7cÀáŽÿûbîÈ„þöýe €@×3…@ä¿™" êùM@<ÜÝïù‡-wþcÿ‘?ê …àÏL" ’aŽaMçeò÷½x¿ „ˆz_㚬+Ñynè…(Hý:ü5-ß6þ=ê×2ù(ÿ¶ÖÉ”šßÉrÉ?%J‚z¦ª ËÎfÇ„\úb©éú®ÑÚúÄZnkO½W§ÿÙëXnŒ“†ÇíàÛDÚ–Š[]ÉY±Ã{Í>BŒ¡è(Z11ABŒ°fù´æ’Çåòcã-j,ÈC¹¡Ÿ ”·~¥t€„W{f yÐa+)÷··‰\5ŽÓ¶eÞnvˆÐkXÆX×;”h/_s„7…=ã°AÈ>’LW[9T=\VÓ·¯Sí]ÆìNÆTX~ͼ¿Œ'ÿÁÛ†}ÕR’«U1¿áåL’aޝ 0{aGQ‘ …´2A×4žòè° ¾dþšå}£ñ–†È¤ô±”žTŠ]ƒ#¿)QÞ@T¨{ Œçqóƒµ ýP´÷Ñ8ŽSÎV !èr£ì¦NUV&’——w…g3ø‹ 愈Ã2©’/MìÀúÏäñÀ´ò]ºÞNÛ‹ ĤÀQO—É@”•Ê‹®IüŽÈ÷å`BOMfW0¦ÁÅÞü<Ú,ûšç¨ÃÆ9?:¶¤‚³±“tëH5üPÿ¹,$Ù(Ìnìº~aà¹ÅmX¥Æ Zß«ò°ÛÔ7Îéû&É·áŒÊíâ^ gºE[BxÂå>%ù½¨éÜ[’}©nÐZQØUéyÂ’Xy «df9¨Ðy…ŸõŽñƒñŒ^œìÚÂ&.í°è“ H¡G6zþÀuy…GàÇŠ&´Õ‡Åk߈Ÿ´~ë,ôEK:ǎφüpìsÑ}P#‘ÊÃ1ÂÚ‚ëÏ2Ç™5?Þ'Ÿ½øP˜«¥˜kWrµlîëeÌý䤔ìR¢Ç&¥$§ãÂÁ2´5aêIÏeò ½£{ïf^‚ç`zc$IŸÃ× f5íý*Œáˆ£•⻡ÚCÐj¸B’t☛$LÓuù`å¶%þ„¦CqI:€ôtg’­eƒG^·æœDÿdÿ‡¶ X\kemdcSÁŽô¥ž73DêUÂìR ¶CñKVþ=ëÙçŠÅß–¹ŸÇ¸íÌ %〧¦ÕùiZh h„^OlË`‚{ÆQ)ß™¹Y8„'ˆýùõÏvc¬§UžQyO3h‰#ÙjzEiÝXq¹¤§jŽY®?àúÆTT–gÝ‘{í”ó•qùè«-0£Èâ½ýQ׳ÐÀio®”ùe$ëR|Ø„#”RØCz‰íë¢íG5¼l;“²&T‘Eò/ ¬–mAã †ÍáVÁ{,cbŒêQƒÀ`“‚’j¢M¶Dëë-‡eS¤ŠÞ ¯-˜5  °î8|—}ý,E¥ Ôè0 w·˜ô®„ž£q ˆéfùõa½‹€¨·õÔ¶`ÄxÅ¢¤¦à£Y¾Ì>WÞ«x¡¡TŒk ûûzöï²7À8(íå7ŸÅ™ëå +r°ô6¥‘¯úø˜gòÅuв•Hý|˜_§ëÉ{Fsaô<“É ï>¢ÕˆˆKÄÈ“º?Õž ¡‡ã‘ÅpYüléî÷¤þQñjigº«ýÆXڂЈ˜F,pph}%š0wx.ôœ+XxCòÁuk½¤ãôšzè ÷ùt=")j£0Ó'žÏRŠwtûÃí¸¥½¶³±ÄÁv˜*ÁüG6åã¨# ßë_q s4}2_ÏmÝ×ÉÚÌ2};¿(Ò[23r\.úÄÈ–Î] ‹Ð"Ša´¨¡‡Â 8 ççãWnœ¬<㜷µ;‹½]ºsjì7úJó ½˜—ƒÑáL®»`­¯œÝTÙ³ãe^b€.Nˆß´âVÌÊë ;'„Š¥Ù.° Ÿ6Þx‡lcDdâ¡5\*¢/·À낇‚’%fH›ÅZ3v?±Mgœí?ò^(ùO:Íò‡´z=I$e@ÐÀ€jëÝ·Æ‚m eò˜­ñcBܧà>²lußÊ:ÕDþXôuªàòƒÚ9Ä+ ™5»=§0eá–„yYˆÉ³Dw•f¦¤z€xù„{§:$}³ \mï[X²„ ~Ë"÷ÂBŒ ëÓý¥cÝ㪇ª.´é/;ʤTjÓ™­¾s•›ß5‡ü™”ʼOënÎÙ*á/ds=ò Ò“ðèÕxëÕ|Ì Wôl=D!ÐÞW†H$ƒ+yˆ|BÍqèÌhÅv›5ÈoíûÃÃ¥Ô4¶m¡Mq®¹Òð~YlEޏui™¶ ­Q—È`ôßLmá«xäôÙ„Ä_xX@@æŸh$”GvAyD2Y9õYûmÄf 2BEpâ]ö¨R«Ýp”ôx‰¾ ßhÔŽß*>+>¬6ÿ"­/HÓGua+Ãd67³#Þ¨õB¯{( hOsgºÆãúÞ1ÄW\vϲjÌ窜CòS&¨|þçöñ ïôy h1M·éɳ/ÛîÅylzISüO[RGåµ,ÞÛM˜~—­ñ¶x«?Où¾7’¹Ø{–5ÏÚ_wÍ1Úf(Gšò…’, y¯Ê«fŽ_T-.ºÙ:{¤Íkm/MOƒSb·À‰o˜P¡¤tùœšªæ¡DŠU¾oO0&œÒŽ/Œ‹­"f >Q1sï a™ÌüØûp¤¹ÞÖ}NÙ,–à ±ãø†—¦ø Âð\̉ï|×ùgi‰¿³?YaA%°è|þ${ H×B o~6V>~ŽïlÞ¥p5¼,ñ1iåU»?ï2Ä'œjRº6 ˜—È%»TŠþR!8›Lœ“›ÅtÞÅŸ%œgl(ö,–‰åb²a£_¹Öpƒ0—÷†[Ýû8%Õ%ëß¾XVUoõ±àø…»†ÆÍzÅο±fž¿M®ÕŒ’`ˆ}fß¶ÔÓ³©Ìí²íž(8I]QÀE‰B™jÜ÷ÐÇÔdÌÀš$Ý ÈÏé~<.„þí^Ì ® iz—C$Ôyý¦õi±xÝâ/mý÷°F\V~ úå½^¾µ¦˜6b]†Y) ~/yt©<~ŠÜceÆoéI ÿÒ5Ý@vl¢aD¦6ç[ŸÿafÝî×Jrƒ­•½ Eæ¥Âê·É¡S”2%9Q:kÅô 9$1MŠ8¤½ß=ζŒ²ðl1<ìsˬïx uZ~oóô+h¿ÞEÕ1R Àíº±ÈJDí¿û‘Óøb`ЩBwåTñ+×jgã9é†UiéodTÑxG)9ž©ãqÏ¢IŠú–澈 ?­·#Þ&håÜ:†bK»ô¯\ô‡HÜ^× ŒG“ÚÔb)æŠ_Ó ([?Çœl-æ?ƒlԮóôçCÛÔN_¸VùÀ d}…Ý  •¶n‡·ÐcØË["½tuc‘˜•ìêJ˜ tp°“EÝTûÄd˜å¦UKOBw¸i°Í|·mÈ+÷´xä)çX'=t»l¥™$‘sVèÕ©ýµ;,@yÞÖT·>®ÿå®WTï÷½!Ö°V>¤3#h˜µËp`có0Hƒ›*5ä¶XdgG¦FÚnu¾I©I2…¾Œ`÷ŠÞ ÀýdÉeB‘•®ÈÏI{‰¨9¸|¹ò€8)‘ÄyDÇYÅ¥¸  åž® ?k±¿ù˜ú‚àú6l»…©Â¾Š(˜Ý®SÖ­Ò«15•¦‘õdâuv†5Š‘Á#õíšsÕì-ïÛ_ݾQ#­ÑX8ßsKY˜’²Ñz3jÊ*#L˜]=†¯‰.Ç`}wü¥5÷««2 9…ç–éµD¨š•[}Kþ܈¨/(ò=¿‰VûÇ•—ÌKyg{ŠvçLËKÒþQñzSø˜kW ­xO_væ«E#=:¥ô'8éØ3¬÷i+¥±'IŽN_[Y¡=̨iOòÝfL 4Üãa1.'sü²;÷d©ú8ö–ôÁm…ðjËRm*lb@Ïm°äçLÊW'ÈÐéÊ®_v:žž~Ã/ŒkMtR‚Mš JOy‡M–áLq±y11Ä6‰ÀÀy6qYáçÈÈLƒ~Ï„òž²²QɉKkõqÆNHigO›Åáèb}þŸ;Í›­Xýö¿æWʰ±ù2¨áP¥”›\7\ÀŒä£÷Œ?r/ Å³|V ˆ'l:Q9¹ÚL‡JÛiú“ô¸r.#H£Ò-•¬Ok k·æÕ<ãÉ×ïïŠîÛ‘i4Ur#3}3@ȃn¬ü›šm!îö­ ––Èo2òð × CàäL›émÌx_ÎBæœa œah¸¤WÁÍYÁ8݇ݲBßÏMcyËÔÃ۾Љ3\̧xˆ´oïþ xý—ªõ„5 Í›S¡.² üá¨erÕË4 ; ×äÖäz´ÿjcȃA˜Ë¦‡VüJ{µ3ºŠm¼4`¶öQ:î<þ¤èE„ôÆs ÿEµBŽ)(-x|À„ºÉK>ùÇ}§Ï}ì†ZRr£!aÑ%ÍNºbvtEõ2²E›GÅჀo†h ` `õÊF«F«9‘ÌÒƒh–äñ™¾—SÓ?Ë5 ´‰„;”¥9#{˜M‰¡Cýû¦¿$ŒÛ—'a[i—LêaÔQœÌKÐgæ§ça¥%Ì™É_µÆ`ÙJÉYÑôW-”ì㯇Ije, û¢n0´\öÞTÃznšÕ_LM—[ìxÁ\Ú7;5ò2OW ¹Zµ£N2ñªjÅÌ<$ƒUi¹Õå¶Ù>0›r^uŸUu×.2Á"ÈŠœ9|}Rø5·¸ÒÈWraÎ`Ýçï Uû1:õO#*'(JÆÎ‰¿¢Ùÿ’~.µ/·\ Òê±lÅl™ÈƒcXF‹-S †·í½]=Í•ò©õÞ±ýveXû<“ÃûéÐv¬Û²]‰9g_€`Où?Ÿ 1}?Õ”òeªÓ>ò¦EZVym™)uZ_ÿ&Í2pùâg·éª§§)º³G1Óxøà:‡–i1’C?Ùr®Úùã2HžuëGê•„¬]ÖT)d¥Ìñ#¥Ó™k,c¨'zG±ùPìWté•)쨪cö`©"|,R$Po¸Á”…-ßî¦Þw¯tv~v?¦écæOºBÿõžUª“N5jSÒ1Ña£Àæâ«v,ý=öÏÖ‡óJŸ'¡XF:xOº2TdÓ]0G?iöîÞnL`;뺔>#«ÁÞ›+t•ƒóøu0MRAæ¡÷Kt{k§V§Ól…j˜‚A.ðqc0=P^5WÓ€ÑçÝUkƒ9›S«Ä2=³ç<Ê‹ð# ;U«kKImbU£x,àÂ#f··¨:ì=¾‚à‚6¦áT˜W¤÷ûDº~AÛ„> Ç „ 6þQ#-´Å¤µ)’åkI¢Ní ‰Ùëé·;‡Ío×ÕÁâÕ¾ &mȉöŠeX¸¦ªäiæ¶séñŽ-Aœ‚Þó¬ðkvgZ U†NÞE©‹>¥ù‚š°+ŒJ'PXfÄ^ÎlNx=‰›~´Cüzµnª6¿¯ªòž“˜ñUdiaøi±Ûù¾Ž„y ÅÈú-!íÇ…¸‡mk>(’_ ×OõŸó™sbÞðÉv Æ–ŽççŸ:/°¥mPÒ“GêÆšx=fúxv ·èãVö2³Põ¤˜¯h–4bî}ËxºüJ›Ž¶}‹¼~_è05bxk»ëDÚïIú#‘X·&ë—éë²sÀ{¶ÆJϾP2€"7dYH[>Þj™r©¬~‹Š 8 «õ|¶Lÿí½¬¡ÏÕŽM¨÷ˆæëX2½³l9’£y^‘èÜÖL}·ueOjŸÉĎΫg·ÖE^{°)Xsåx­óúɄ٨æœÎAnö™ú'½N†6]tL‹”io“»žÎò{#tÄi»Œ·•Ôòð§Ø£mq±¢€½l§${ øw¸ÛÃd¬EøEö*-ë·f¼_ÉØÈ†T¨}Š× B.¯ê¨çïŸeŸVÞlD»')bFJDôŠ=tª¿É>§5L¹·Ës¡—k¶§V¹VùXi K½…Í½é‰ u™ŽAäx ›²8äó£óÜ"$™®a2¥ÅV³7Û†¿çÍ@+YÔ»E‡î'Sûú¡”êy½®q•BåØº5?Iv¨³ÄÔ@Æ“6ý\$k2…m5KÉ%ùNw/šO_eíö‹|´¢0 ­·;{ ”bòÀ_C2¹§`PB$ƒéýºê’éUVL/!Öù“”qÉÒ³éÞ—Ä6·k‚D-Y@Ð\ì $'§%Eþü½SØiÁ›Å¨4*ýîéÇ0m÷›ž’^†Ø¸ºMF{!ÆÑ !g`{·©>&÷ˆ¿šM˜_¦Ã¡Ræ‹ áЧpžT1‹‡¥ <4M'Ðû˜¹´CržŒ×öö%Û'–.rYWÉ^ͽÆIÏÑx©@ ÖøþðˆSsBIq–´cþë½Á‚¥c‰WhþÇP8sy|Œü<Ú}ÒÝÆuZƒ*’UÈ­ÔµS¦É;}7€7Ïþù†Ciz ]Ѧý—a0[©À›~Æ‘õgݨÙÏîŽ= “ëxÃÔèÅ7™@3'”\KŸxðá//©N=/Ä3Èÿ&%$DˆVêad;Éïê,¦{Äʉ£Ú~$ùIb{OÁE5…®¦ZP±ñSÖý—„[âaŽK¬qE¿®Ùrºg´–£hëïƒÈdˆUǶ•[ ]³ÚŠT û‹“0Æ-dÂèþZXMmÅ ŒáÒ'äbò"‰‰O´î¿qQ:Sq5}?žqº–a%ÙH¿îñ€ˆ²bk%hª(1_ IÎH—I»m¡MM¸±+ôºoc!ão}{Åðn°O¹¡rV£8;žî·î;’AÝ$å;q_b?H˜f±¤w}ÕÌ8uºZMå¨Mxbm³êúàö^ãËÐA“ïmú4÷.eŽo”2ˆmÂíˆûÌ9ý¬« í¨Ð»‚NŸq8ß{þ~8ú˜joç¶ý4QÓ 2þ <À+ˆº8‹¡Ý™5ÔþÅÃÕgNéz)ŠÑÇ—¯:?õ|» g~ G± Ú¾_Á¾M'uÍØ°ÿôNgAÈ쑌 ñ”1 §ù^儾J+60‰Ù«%:G~›uÓñòmPކÜä6(Ê<‰hF¹"Ãé¯ð[M€½˜õXRŘt\6x–Ý/à“þÏÅ.°é îTQPJñ\FñÒqç©A\iWVföPˆÛmhl Òs©±г)*”(¡p×Bi´[ñãfì³ÃËQ<¤&4ëõeù¤JK2[ê±™ ÿ0Fàá+',ƒÁà"©¾j‹ô}Í™ðŸgO½F߆0ÂõÚñvù©ÒB²7œ eÔ‡e¶«ªª †©÷Þ²žV ½^Ÿä ÔõÐn*;ïCw]¦¼‰ȹ@í‘dJ¹ä©ñb¤wF8pŠÍi¼W2jOo ¾^=vö6cN¯b£ÌÑn­šNn›)»Lg%UŸÈ ì`8ÌvbîüÐbêhø}KÍßd˜Æ6T3†î ±ë‚%êÉðYÀ P"î&óƒ£ú=§ëÙç\%%²VãÌýZ^€„¿ÕºîÒ[¦ïäØo MU„“L ¹âG“|ßÕ˜`øeëY ÄR~lü^:)«l•N»•O½æZÅ')£Ñê? ‘e(=q¤‡k¶âK¨ñ†Æ°Ô3ÿÒžOY4¢~щÁ£{;$W: 9¯ª¦KW=Œ_ÿ^¨LÖ«˜ß¼#ànƒÍ9çˆ]ð~sÍÏçIZbBüÛ×;•ûí*©3­ÀMÑdì|£žü/Gz×°ÀÄüEJ÷„‡m„ÆãQ_tð€ÜÐí\˜«Aèˆe¯üÓ¾s{K:xIIˆ KcMž¬Ý'ãÀóXô%Ðô£î¾íôÇs8»Ÿû1†ô„ÑîÈÁJ]Lÿ£©@CñãîfÑò*NˆÖ³"¦Ï¥Ã%E‹ÍfEvÔTÏðÏ~ž™Ù=¹sô[¼(ˆyš::·wâDóŽõÅhØá»Oæìê°±(šÕü):?’@O€, e€¤8~ËÚàìõPÀ/ñKWÛdgõ“—¦´ó†ãC']}¢´ù‡´Ìwß˜Í Æ£¿ç_Š(¯ž£oRíÀXÆþè·ÉÌxólC Ã{ßÏš+È^Ûø9¥#-gc(}Š5 Ý(e› r»üÙ±ofüù²Yâ-Ï6ƒêéîÑsÓõ– ÎȵäŒ5¦þ¨TËDrk§â\£¶æ‡´ CÊx²4‹Æ5ŽòôLy/dù®v·ü²UH“•¿«æ –ðèÏ_ÇÕúíÖIß2>@îÅo^>ªÆ¬ °®[2’ÎJûÀÕÆF÷²ë`^òˆŠ ³®’óöS¿Ü5•Ê+2ê$ \]i*üºªTV«Øü±üÝRfB‡I!ë6'‘ü]ú®!¸mÿñ ÍÇÛ†½¯‚æí2²ªmRgO¥úSm*Ô2óâ-ÞÎMÎøxIcjÔh_[ߘD{ûT0Î{7TRUc9áTnª´;¿q ÓÄ~ëæ©Ð»­N‡"¡J,HãÄ]æÂ¦¸4†H‰_rÔJçKôz7ÄÇÄÒYæ43X”±w@kº±^Ó3+Ûq;|–-]Ód­ ÒDñ>O+}°2ñ ç§îÙ”÷.^›Ô×~ìϤÐáEžÒמr!óaÖÇ`S| S6¶€¨aäk“¹à^å½%º¥¢üAü øaxÌ%#g(>Ì>Xà©Pæ.¶„tÅÖíMFŒQ=mÖ¹‚Zô”Ô;¥é‚Xr&öݽùãçªAh\vA]ö‰DowÐùB¶ôGšÜ}D?»úÇšgú]Y¦a ˜Äh•σtCŽa ä×! 4Ð:??}c-£„›ôóúÞ»‰f§¬‘xñvcðëm5òêž Ý:IK:Øà¿wZ«®M§@ØÐG~ù¤Q°R%ÇI‘úš–¸ÝôwÁvL}¢¨ã^‰yè:Í«ÿK endstream endobj 63 0 obj << /Length1 2231 /Length2 15226 /Length3 0 /Length 16559 /Filter /FlateDecode >> stream xÚ÷P\ëÖŠâîî4îînÁÝ-H»k`A‚;w·`ÁÝ]ƒ»%w¸ì}öÙÉùß«º·ºª{és|s®Õ‹ŠLEIÌÌÁ$å`ïÊÄÆÌÊPÔÐ`c°²r0³²²#PQiX¹Ú‚þ+G Ò9»X9Øóÿa!á º¾ÉÞ]ß ìrn¶67??++€••ᅥÎü€w@w+3€"3@ÎÁä‚@%áàèåleaéú–ç¿—ZS:ãßî1;³•)РtµÙ½e4ÚÔL­@®^ÿ‚VÐÒÕÕ‘Ÿ…ÅÃÃhçÂìàl!LÇð°rµ¨\@Îî 3À_-”€v ZcF hXZ¹üG¡î`îêtÞ¶V¦ {—77{33à-;@]V ì²ÿ±Â ÿ`cfû7Ü?Þ²²ÿÛhjê`ç´÷²²·˜[Ù‚ÊR Ì®ž®Œ ½Ù_†@[‡7 ;ÐÊhòfðwé@€”˜*øÖá?ý¹˜:[9ºº0»XÙþÕ#Ë_aÞh–´7“p°³Ù»º üUß;+géï^,ÿ®½ƒ‡½Ï‘¹•½™ù_m˜¹9²hÚ[9¹dßýcó&Bø-³¹¸XYYy9Ø 'ÈÓÔ’å¯^Ž ¿•l‰ßzðóqtp˜¿µò³2½ý ø¸ÝAWg7ŸÏŸŠÿEll3+SW€ ÈÂÊáwô71Èü?øíü­<ú¬oãÇ`ýëóï•ÁÛ„™9ØÛzý6ÿûˆYäÕÔdÕÅþiù_¥¸¸ƒ'À‡‰ÀÄÎÁàâàpóqüþ7Š ÐêŸ*þð”µ7wðý§Ø7–þ[°û?@ûÏzÐþ7–’ÃÛÜ‚´¿Çü=+«éÛÛÿçaÿÛåÿߌÿåÿuÌÿoERn¶¶ëiÿcðÿ£ÚYÙzýcñ6·n®o; èð¶ öÿ×TôŸÅU™Y¹Ùý_­¬+ðmÄì-lÿ%ÒÊEÊÊd¦båjjù÷lüG¬ùמÙZÙƒT\¬þº³˜ØXYÿîm¹LmÞî.o#ù· ô¶;ÿ›QÒÞÔÁì¯%cçâ^¬o“ÄÎÅða{ÛF3çßC `a¶wp}s¼uç0wpFøëH¹y,‰þƒx,ï~#>‹ä¿ˆ‡À"ûqX~£·(Š¿Ñ[¥ßè-Šò¿ˆ—À¢ò±XT#v‹Úoô–Oý7â°hþ‹øÞòÿElìoÅ]L­Þx´5ý+çdÿKüv”V.6¿]ߊ3ùÞ 0qšÚ€Þ殿åÿÊÿ3Áÿ*Þº1ýq½3u°};¼srþ%±³û£º·Se1û¾¥ýߊ4ÿ¾%¶ø¾…³üüK/GKýo2«?àÖÀ7¢lþ€oõÚþßš±û ßn,¿#s½¹Ú¿Íàú·Êþ€o•;þ®íÍÙñíabÿ?ËÎín(°ItÕ™AÎ7bIÃ=h«;’´×¢+¤Ï>'- °a­ ªm¾OFqjÓ{mKS8“'bõýÄðDL¢û¾ÏN¾Z6-àrT9Nn¼(*y˜w}ÒžõýeßÇBöT÷«¹åŸÊf˜¢5£ÞÏQåšdÍã‘ø2ÃÑcüòD»¾™ÅÈž|%•‹c@ð;æ(ôÑÛdÿ|?ï½V¡ÁîÒ…O‰¯‡G y16Mí#~˜,‡»èSRµ!´ø…•Žlc¬ŸÔw´“쿾‚,.«­ó2Ÿô¥_[=K N/|枺±#}ã Ê"ƒ¹‡‡”tžrsQŸáþPüm¸3ƒ™¢{ ¬’—ÏþÖ2ÔµîɵüɺI}ï}ómx„mìÕ&ñµwÏaN~XŠ0DWû¼]¾Ö¥”µ>½Ö“§Ž³žûžêíå’?ÝP` ’ÒPÑ0 Ò¿òP Ç]×br¾‡¯æk3ƒßM§?Œ¿"¥ùÙé|ÿ…óGî˜^*¯ü£·‡Q£—mâd‘,— F©µiÜ=ì ”´Æžì‚…á2ùZþ; Q¹ïfU¢ÓmR§àãŠa·ÝFe¹fè u'BM‡Â'PszYa@ÿæ¦m¢¥k¬.]–•A½º‚ÂܰþpBÉñBýÑ êœhYÄÎÃùÛä¨]˜dT³`ŠuëÁ†ýt7vÈ`’-k–ÑíÕ\ÇÿylÙ|!·tõ82aïø¼è±ÄÜ┪Ó1÷QÐêœT™„–Ƨ4f¾nÅ£üE}_”AÃûîõ|tšp»ž}r¢kßäVª2@|¾Äa6º5î¦!ÔÇzEÙ0ˆ'˯4I±•¡(àÊ>ÓR©Ÿz[ÚCw“\k™*vbsC 9Z‹#Þk#ùñ¦8¤axƆ(Ù*îÔ55;ÝÇq·jje…P†Õ\Ï|Wb?¶DÅO(VéŽEãëø‹iµiö!ÃÀ^Äû¥Ëð™œãÇ4rC“æqt­ PƒÅm² K¨Ñü'Ê%É3ÜÎÛ–u7Jτѧ IÀh“*gi`ìÒˆåiPå·g‘i„³Ñ3%7U”ù}"Ô9¤ÙÕPD¹ßgoŠ0ýš7Äщ¦ ø~xí/…Ãìd™Ú }«K˜}ñh,+ñ[VªÒt/6®¬¼ÚNWä«…Ù5Â’³˜1ñ ÛNAûæÒ8¢1“Vù® Ò$h˜_Û‰ÌÀßj ×£-Áøõ°  6Šf¯ÇxÓÒ¦IC#F¶Ü^æÈv÷kzûxüÅçÛÞcŒµ›…ÀÔ€›Å5M ‰cø ­T¹.[ËþMù§ÍÎ銖Såh *cêS"Ÿ`Z<ù~~f‰S«qy¾¼NO™~&L÷mɧ9NO#.’𽘜åÖ§ˆô>Æ«/ÅfÛ¶\4&£&kNŒÉ27Ì儚CÞþ-x%%û[½>é hX'·q’¦ÁÚÅDˆŽ«n‹Ç£93HfX‡èûÚ“1¶Z;PG:AXŽw£l?ëüPäÁNi“Ï|Ħ\wˆEèH_GýðÑ|1.21À0J gVŠiWØ:ݳÁuž–ĬcÉ´ .?Úp PgèæžZ‘,{\†Žúâ–àe…ºKTGª€¼w¤ j×£Œ¥>nËÁ*“u•¿xäöæK2Óñæ‹eº3¤L8/'ÂUU"|ôÆ2Þ'ó}ñ¯ÒW›h"ÆBÁÒ1»ÊY:Å-¾„“гBæ8ý h­ ¨>VÂÔ„ïç ŠÙäAí àSvýªÏáý‹Ë™ò²Åq`éåq‰v#I;•ÈéBû·Ï>«?Œë°†Ì< }ƒ‘¥å^½Yš2eh:ô(ƒ?-ƒ¥-)NðFl~ŽÐC ÿ ^'ȳáS­à¸ŽÞ{«EG…‰±uh3²Êñ1ø4MáàIÂÞS¸IïÕy¨Æ§Í·[Sï•O²,{aNºjË-Ž“oExÓØß©cœ%¨`ëÊçvrŒzˆo¦9éb…H—Î9³Û¸§¹´‰ä³‡¶ÀcHšcKËU‹cè;ô ®@8NXF-uçLtÅ—œ‡jBðLÎ'xç¬w(„ŠÔ<@$à>ñ“ÈG T]?äj¿Ré$_CQ.…ñãš ó9î4Hš¥‹O,ȩтsë3iÐÿà$ËŒžöÒ3¦Ql|¦…D¬„«þ1¢ˆY®"F1` AnNE%ºMyÑ)¦ŽWëè“ÜxÞ‚£Þù’ôt˜Ô* ɘH>$’‘•x³c"ž=91ô´Èë»ú]zòËúÚÙ{V$û-SöðjOR ¬62þMì-ô–ä=4W ’ÞMª–éÛ$‹àõN¾wz6h,Ä0²aI—òðî Òšé!.¸ïT9˜ÛýÚÛ­ VÔä#|d?¼•gƒéÀš±ów jç®"dÙÓcŒü˜•#at¸@d6õcu3è+0¼=]ÊŸ!Æt=•×Ó}x‹üÐ8?;“Ð ïÔ0 ¦¤d«4l<eX[˜|‘I0ƒc¦åGèÞ>+Ï$bŽš‚H¡*ptê,»Æñ¯6<òöd\ñ1Œ75pÎØæv¨j ml¹ÎZ¯p•IÐX•xž\$) L9mðÞSby57‰‡;(8#ø™w}­ ¤HÝõûÑ_¤º§DÁx({p5sÉÃÉWò6ýÚ–^üÄ%ýaÜ©§ù pÌI‰wqhVèû3î{Ÿc·µW}ìpBÒÆâ+ª£Žî𘧞ž÷óÎöA¡Jr¤Ç/‘“iÏ9R•6uˆõÐÊÖ)íU+û °Ú ‚ù)—RÅy­”Hº²»ÔäËîMØ2¹s]­óÑ Þ†Ó.¶îg3 96Lņ!Lòþ “â1Õn¢³ŽsÓ¦©Ùlç†öjDA ÛÑg)q\ºÕò“Bê{ç'f¢áF°\ó2.›A׫ØÇ,Û­‘c6ZDknû»þ‰Ï¹‘ ?Ñüh8m“¦÷Dï«;”e7Zxð3&Y|b ¡¼½˜ÌœÇñ<‘Í sÛÇH0xä6¦Îï‚g»nÔ³Jwh² ½}ð[NL gMmTLà> ‚-!°æÖöôÞ{îÈÎV’#k|lŽT+£œe,$ *9eÉ9+8ݤ–L…áí®O|R„÷мÍ<åLYZécÌÜ´* Ó5Þh¡-è2D;])ÆÐ7e}h%ìò^m\÷ ÔÜ—˜ MÑÍ%Ì~gÐ:ºaç–:Áýè§|„/ɬaÒ¨‡>ßò!݈#B+¯á'~L!§Úy 1NAÝTãñ¯-äR‡P¹”ÏÚÝÔØ-¾Úz´÷ÁÇS2 ðâûabÿ¨àgw'xœ¸®†Z*Ì L­ŽF®0u"<(<»|Â;cÎ"»¨mîå—N‘ƒk"[.;ØŠÏFÉÝÙŽéÇÅšœ¸òozÕÑÒõEµ=3zÒ[¥¸K1&˜ÖÃa¥XínFýÅxD¬x…Fv½B,‡þªçWõnæWÛyç4²ðJPymÛ"ØNÖeçit#ŸOÒgë¾|ÍÜ&žrÎÛn+妖™J”à[°s†öíåq®Ã¸”¾§â»s~ù*¸N[n!mØÓ×Pÿ¡ÚSåÆ0@~{}·{S÷A7äÝhù]s"%–ˆyIÊJú†zK¼Îè®ÃaøÇS&Í6ƒFÈ—çúC¶çŸTGüÌH Ë aì,5ÑjÎ OÉŸ8>„/¨ÍÍÊtße|W.ÀÁTÏ÷k74¥Äþ4‰UÄ"è×GÄò[°ÇºÍŽ_±8o©-]ÎmØ%u"™‘T¹­â/Gt^±¨2‹Mô;Ñ•EzÏû°³Õ<Â6Z%+¹òEÈ¿hïùÌWÉrÿŒ†HÔ yoq(åâÇ…ï£*FçA wì «³ùÛŠÃ-J ƒB#É+ÎÄ—äÃÉC¼àûc¾‰˜_H`vA¡‚Μ2÷Á#  „1?éäÜy;DCgC\ I+8ö9¯E”,8åµ4cÒ똢±—ŸôqQ&îˆiü*ôúerú+Ï–<"¯øHûg[ðaæU$‡k’IœÆy·pwù¦`u‘qV=Á2âoІ_$!¶Î‘uÂÍ€ ydÛM ðd(›‚vÒ-îÑ^¬|ÂÅ ä$lGE?ÞW‚&*d¿"©» ‹Ëj4EÍϹ_`,ƒsIáÕÚlÜm)}+­nOYµ#¨z‚M;;ìÈ<¨†×§¹{Ÿdôü _>çŒ1.•šÜ¦¶Š”kÑT=a“ õÐoãÀæ‚·}ˆTÜ“¸ÊûT•xÍ:CîœNè’1¡.Qµ!Ô3ã5‚ô¨?÷8g(HÆTÄFYÃ¥¸®ˆŽ.Ë$ü‚3Ÿ(ûŒ-ÌŒ"CŽï'ušl dE-`²ßâóÆWSú6qtp†’JìU)m{³PE¿I5]·4Ȧ J÷ôS# E.=‡>‡5¬]¢’ìú3æ9¡p7~H÷Ï=-5žŒ‡3f£åT¤îXØ @Hòb6‰@¦f/ÕXŒaŠQ&¶ØÙ­ K\GáiYôûDw|$Š6À €ÎÜ;ó:×ÈÁÚÍŒß$"#ÀÀ”qn>©ž~Ò5.90–3¯Þ$±,žs:?ÂäE"f¾˜$ì¤ïëTP¼­<;È0éL,R”ÇOú˜8ÈgÈîÛOk;4zÌ[_pÄwÏGûÆ©u8‹ ÿ*§y(EÝWXp]ÐzßûÝÀjAÃb(2ZßhC¯ÑèÔ:”¨*ÿ%‘« º„F‰×U1œ –A’ß= !b„<²y¶ì¬Ô+Xä‰#0©‹ôÙ¸Þé¶vb}qvVJnâ²iå$ÌØG g?BÜ[’Á±ßš£-¬µXrx,Âþ¢½|’ ýMXÓDc¼Ókâ;®‚+Ú'õÚ.ßá9âýzÐ÷?L*‰=O{’!ý0OüEõ2“Ö7xWãѳL„p~Ò;Zϸԩº°Õ Ý[Y>š [þ‹¤ —Ð5…ý¬¢~ì“øçŒšf¹wFûùÈ|&ðˆ#Ä…#£Ø2ö3$¦‡vfIä4+W\XàiVÊ»ðÁ¿.£Xû¦ùò­:Kz² U6)€Å§} Í¡y•Ý tÉæÅ"Œ”yègÙ×dÿNíÁH¼ŠtA45°™±&³³rvµãމB #6èÕ” ÏpÉ!Ø¥j¿žDÉîJÒå×G‡¸gŽ_™{©³éÖ0ÔÕ”žßþÍè˜+§Ô‚/¶‰öù%–- æÌìÑcÕIÎV+"êvW&y©”p‰½´^L¼çØz=˜ã…û†ª‰0жcõ= ·™+Œ«î>ŒïÚÏa1~ŠV bIÿ:·ö4E1Fh#")(R(}œØ²€VP#qÄû9ýv„3f0¦Iܼw¤,Å\C] å7ê®Xù{bã˜Ô'!Ëõ«vrŽ/á#Cä©XKB©ˆ¹IØ¿6\ì=Ï•Õ-mg>ùTÎQtþ¡þEu«lFüW-\ø`ȧ+\lì¢þï)E×ÜN?ƒÑa…aäËÙMÀ%ÑÝ.›š*Ó¿º ùYÀÖoØ=.Žöa™!Ýá-Ì_¡ä.Öëy]¾e\è}Úãú™sï4 Õhvlîúh½h•Û1ŒyXVÄTñ0K‚畢ΰ^æ!™ œö±ùËkE¾‘‘lLF”ºØ÷GUÙ´•DÖ"Î ,¶Œeml}gUñ9§í˜]¨ºl¥Kf#[á&žãw:^ê‚°yD]âû”ŽÀ0år-î´9šÈ‰éÞi åÔæøÑJe)®×®_mý÷£åëd#8'‰ü¿ôì® úÝÁL3Q˜Ëb‘8NÑÎIuWØ×Œ°UtR¹oo}éß…à:€M<{£„ÑÀÇÉ Õ±%P#_¯!bº[Dóßû¢ ù¾ÖæM ÜyÈ7[Þ_¾ä S•sÝ!Ó٪ͼШaî4Ò$‘1îá©–>"&Õåß.cí—0hñ©¦|­ÒY5‘˜Uôï"öW+ZõhÅsþ u¥>Ê$¤]nÈù˰4„S5}þ«óVïØáÍ!~5=)mQøûõ8¥ #^·OœÅ䉕2—ª !¤U¬À{“³k ’ß§Þ:ì£DU6Aò°bÆ®¼êjâתêN.†©)º¼xªàÐö²û/£ý,ò,j•Ê´ë˜-®¯qíñÉêÔ\-Q*xª¶'U™Œ›z$nÚ‡ödx›Ú\q$œý¾}5Ь£#o›tF®ÐÅÈ4å)ƒ7æmcû…í—üÔ±áù-w•ö,'*H—%^¡{“–ëNÚwêRHêÎSžôÝä¦wlµ*G¦Ã†ŠÈgDÌ?Èg;±Ø¬6OŒ=YÖÄ$xgqúPôæ-®µ:Ûy3…º¶D-Í$Ý~€•«G–¬hËiгOìÓ¯“&~|è¬R¨PŸp‰˜÷‘ å^ÂpÄü¤”¿\c—åbÞó Œâ….»AÜ4RË0+Ä?|½QÖž…K®52 ^¥m1ÖKx…ÛñdɹZïW´G­Ò燑m£&ªm“¯Œ×(*÷'¼0ÛkäÂût6júN±Ñœ¡[cÝO·BФ½ãàHgçàÆÅò}’ÒY¥›ó•£žá¬ôf%*'/ îGÍuŒGðtû¸2OLp=ÚÉ¥‹û±TB$lì“õ†w+ÐYUe¡^¼WýÅÿ{}Á+œÂ’{®ÂÉI äíѯ&ôyá'‰žòÏ’°qÍ»EË’ Gè>ï<5ÑÏ[é¦+šëYX=F%=‡îJrkm2_Zž¢·vD‰Ñ6¿fu_é ŸìÂ…á~`ŸmÑXµp¢úTÑíÿ%»ââ„R¹Ê"+æ³ÚrO!F;®§šî,š=½›ïkeqäÖl|*Æ"ì=ón~ ¾‡ÕZ.úI:—nåú•©æ”Æäc+/¥Â>ê@q[¯Tz—e‡½Xí±"1%¼5i3{kG8èp¶É,?ŠðVñœÎ’‹ñ¹”hÿÙë I«†x•T©wj?u‰J€oE›mdf:íâØRý¾24D%ãs4׸ñ)$ù—ó'=n­<îÙ}Œùz¾û¨vÿ™…>­Ï ú\ÒG\òRËn*Xù“⨛4†¤’Æ]@ß±Ht½øâ¶=V³º>ì}-U&i>Ó²~? 4å§ó F¥:j*)üZë}l¶µné(š.ž,í£å‰P'vèç稇;uã‘ʹ¬9-»î%Ù>SY'`}½ì7ÅÓ2ù¹yêDFòµê2µDkŒ'×­ü‚´-³ü=ü2Û ¸ªTÉyÞ8›X”àæhEð×ì|a¼ãzu–uÀ1Êœéq"ü=éf>ºëÆaÁñ<Ö²½ ¼/à«eò¼ˆ ]*¬ê€,Å—Hª9zCªMãVÖÚ˜{ô}^hKBQøÑr‡¯=é¬7b1©ß3‡7‚úQ-Rå1iüg.×Cj (‹rHä—\29}áÚ¨•0ma‰"˜Ë"qoŸ§dúätÏ]W¥ÜáÔÕ<Á5Æ’”&©wºr 831FŽzðnë’ÇÖó†õwbó9žøâj¹½ŒL}_X™S¢w¥K[}Û—Í ?‚¹“µ!]¼ß%¾_~^“=ù]ã¥ÂüW© ç*ù©„HE°>hîûý¡&æàà4뀳‚¡o`±šÆçJ`KÙßå ã! ˆ?œ¸Ó mQB‘ Dz¼Pp~M‡›ø&žÖsŠ åfHƤªÜžõ”ªÊáÀ©Ÿ@qÎ# ÁÓuȈÉé˜Qu‘Ϲ>òÝ"’ðV_Àd/ã¬1Ó[Eh;H‘Ý*Ü1‡§;*8ô_|礎]ò}H×<̈KÉpt»ÑÉÙ"x—ÎìÚ@`e*&~ù!²ïi†É–ƒ  ®Ç=,liJ†¤:Zл8ˆEEŸG©Ü¯±tÓ&ºª“a’Ò×yü&Åëˆ2ÛW‚Ž™xønÙØäaÃ'°HÙ×ôt\4$ pÓÁ ÛdÜén¬ïEž+ÜÉâdXõíŒÜj¬Q=¼ÙÕ#ò ø„Œ?«î€¨]ƒrVtžïþôd=áGÅzQ¼W‚ð©tã‘¶ÕiBØ ÑüŠ­™„%G&0û{3öE3Ïèý‡VV•O=Wa{ìmqp7ù82š3)¡‘‚k%»ùÜý¸ò¼žêô·§•½,v˜ë;5å¹Uô¬PþîêOj¶`{b4Ùƒ*ðŽÍ÷ð·K?’  EÖ5ö”µù“*&¤~¤ š(åYÃ9¼é%öò¡³ºYŸO4"p(Ù%_#H1óÉ~î³7d"bzúT¸Ãwh¢)iZ-©I®õLNë‚ø¨>öÖãµuõ•íðGÞ·²Ïà’ÛÃw~¨¼”¡~@Ò#Ø[Àý¦J‘×èò¡H‚90Oë1×ðF[#j<¨Ò¼ùï?ž–ʃN[øù/ÜÀ͡“÷ýlþ-C pœ>ß ¥²Ú——áxÂ4Ucõ–ÁÌùQݾtŒ”ï+ÙBïóšb…ÿpÞ¥ `qËü^ÕÑ|øÅ*ò(Á_)þ bø¬CGÀ95˜ÉžZ»WbÁ×ÐÕø"–Ua©íãN÷¹JŽ#wn‚x|LqSòï ÷Ž3KMÏ{dÈ‹‚ŸX»#La0š^VZ_ÂæjtY´Cik84AsÍ6¾¡ïQú¿ç›¶ûp‡Ú5ôçšLÊC©Ù¿š§Veï¶142(£+¯“Øâ¥EŸ|Å-wéâH(ø\'þ’Ç’¸$Íèû‚˜dwNzu‘¥A^»ôº³<Û53á¤ÓU×™ªa‹“Èg+ÛèiõylE†Œ÷LÅ}ïû¨&cD+ Çõ†j2­*EÏ{Ó7H¹S¿ú¡5®¥Ô+3Ü;¢ Ò¯M3ï/Ú Ÿrx$`zËŠ‘¸ld܉Š(®Jå„càp8ë"ˆqlñ÷µÞýØýèi'ÍÚM”yË&Ír¬+VHìXº‘]ˆÁrœžv¨s!²Âb ýy]¥ºf)K«ŽµA´ªô'»ï.ÓçêËà xþK7LÙÊyÿûÇ㔨G› âÚ×¹´ÈVÀüðGj×½/˜ Îz™½fEy™. ,4‰_¡ï…» @a‡’ZÚB?qp‡2©#Fî®™ì)%àž6"8ˆCkõº -˜…‘TÔ“Öî Ú­‡üúJÍRÔ‚Ah–V즩…àŠNw jC™ú-×µitê ê~ÀGîjEúéý’‚è$gø¯)~ý´×9mÓ2ªa£O†AÊ>f ¹†9œ¥]˜ÖÎ¥?ÖºtFImN@V^wƒ™Â§ 3dOØ—µYDc ï–T•÷ªŠ|Ü윜ßötz ÞÛ«C2dè=ït«Ò–µ¾ã‚´ÀE€o½‰c™ªÝ—`ÒwÖI ©ÃFwn¡ÁÂÝ(4ÓœÊ@r”€üÊIì8ö0G6žÃL8éX1[½ÎdÍp­žDcU&Өߙèh{‹È œ™0¦DÂì=Ž}àòëz¶'æc|u¨?ƒü‹㯱ª[¢oDû]JßægsÅD¨-/ICµ±ÑÜ”±Áðô†õîkdj aè—eS`?úÿþUñífW_÷è+S˜&ÑôGG'QU“JµŠ×¡Ž_mÈx5bum½EˆŠ ¸êü}͘Øþ¤ßé±Å°óçÚV¢uñ¹àt$g4~>ÐF†o’}©v°,~_6ntØÞœîzUå´‘éó0ƒï_aÁtvâ/±½£±d¦³êWëñ…†«y7¢e¬õ¼êÃÇŠU&g-ÂéÃ6ME_Ëjܦ°;iñ¿ç(õÆõ÷|òc££Õnd»¥9ö^6Š¥HOãebcDÛkÞð*?Q•gÇG©jP›×{ñ„„“OÅåݱµÒ’rÐh=ôäb# µLŸ¥M¡[0¾¸g„|—­ÚTkI°”Õƒ ¢ñJ´t9Ge»h é_Ž•ÿø¡>ò[û sò…жtÖûKÓ¼rôÀ¯Ÿ} C|"%Ø0u,û4~Ö<ìúìõ0N̹'‡éXÚ9þéCf¨o“,Òê€×¥P£µ/ùµ5î’á”OFy{B…í´Ñî½ç–Zžë!><&ï»”ª— žñPÝËâ]5¦Ýõ£©JA9òšÀÒw!éé`,WÝ뫞Þ?í9 SLX‡¥(È#zC!ø,žàˆ¡¨Nˆý¦Fwª ŒÇí…X$ œ©çBª`HB4u~u=9¼6Ö’·•êvƒ/î›Õm<û3„®ìšewTÜøJaU]'Ñ9CîÊ€—Jj‘É…f‹ `¶~­à]Ú”hk ½lÓga1C—Ž–·#u£^Äówퟃø‚;Š-Љ¢9â“h†bMßÒr4î¥ð³³V—L&߯@"t-[]ËÄ”*W]BI¿äèºy]«þ’D ÞŽJnq/´?!Õmɬ „¿Ë$D'i$Þ2ñÉé!¹}·"6CÊû)çCôô¾œ‘-âh§L_6)6ÝÉŠÜ«fqô§ÃøGS®½eAÃî¼…H@ÑÇoÈë^¡Ÿ3¤Ø?`i´ÜßÚ$Bîmô“¡r1<Õ‡¼qá_×ôåÒ,2ìó¬›o…gÁÔAçýeØœè¶ñLyÍ0¤Éf©ÔC”¤VÛ¥yùní’{=ËÀ×ö³‡Ù¥1 ±?ï¡Ô|žðy—Ä3)^×Í\VÍå¢Ûà G½¢žÂ«enߨU2µ•Œ<ú±/…€§Rá=Úµâu|ŒŠ¸<ØŒ;§ š€9q–‡I„!.ÛL;f\¥ 0báýVÌÉrnÅ/ƒl‚]R}Ž$0#øumþÄ%Ó’1ôŸ)`'RÇ/wíîªl ú@§Ð÷û%—©™GŠ.Þª §eQº;ø¸â”½m’WŸKô#Dh1/æ vßùOÁ\G‚Ï·Öµû@-ã— VÏëù_TAÐçº#»&µ:ñä–ªàˆòð8|÷úqÒgð%‰+#-úš!» Öƒë¾ÝÛtmþ4kXõçl8s×J”Ö ™ë…ÑhÉüðŲB37ü€…ßÊùóC[Õ$aüªsÒ1vfõº@éžœļVþãø³¤U”ž/uh{ºlòÜdÞd*ª©½›ëÒ;@ÛP†iº¿OðnàËÑ–bŽâ)¶<*ÜÈõhWGÆç]Ú÷s6öC Åvb3wN9¤¯ƒvRŒiþËû×{=ìŒ `y v|¸GI:fkãÎSæ¡£‰&ÿè5¥N©c·¥DÝ<†Ê]—„5FòÄßÝtÙ+ö+·Cã€Hq,k¨741f7r±N°¦ö‘ÜZßµï@Z‰¤´æ¿—èÕÈÏȆŸÑk]E•Il;ÑŠ.RV›üÜÂõÃzS ét“ „ ,ÈÌÞ7›/š&*x-‰Åõ6‡íßB …Þ^©K¬McežÒºÊØ ^*DÐu¿q<–=J—’(“ðî×Ô(‘ yxÕ„ÊRšM“2:ùF[j晚ͫóSÕ v@Èj.‹·\É÷±ÁÁu@š?cS:Å¥z/0ckmuÈ“RHkutÍï…z:Ìßú•Õ ›<«v’A~|”Þ°¤ì =¹‰qQŠ`-êHNáŽt´4œ?døšNåƒY%$ñzHBtð‰â; ‰ÍÝôŽîdù<à“@wdjå¯qí‰~iÉG9™8wŽú* >Œþ€Š=ž1î„SÂê’Ÿ­n~öpt«ÚÔÒ¥8É›ÛÝxv°rÊ©þ0TÚ6Wà…'t }w˜­Öwì€Ö±X¾l8»ª–˜óó.ôc`jç‹oô_ÝLJË6©?€ šU\|Y ’ÒmÀýmëí³#Ì«šß'¾àr\…Á`‰D©¸Þiëe{þ¤[Lô¼@¸.«‘îfºŒ0õõ¬.©a–•˜¨„‰7´¨’«¿NémoÛkÞ©'œNpµ79kv©æÅÙŒCÑœÜÂôWôæ*yFµ.š!D8£—áF3zì²–udÈòWŠ[†µ™Ú~72-afýÈ:ô!vfQS}ŒÎQ¶Jâå]\ƒJ’£#ûc²kù’õGV°Ý²³fnv3Ldž!Ž|{ÒÄ _°™P—#¿×6ÀF¤Ëg?:©±\<ó %M0õ KŸÞÈ^°¨Û?» µ tT´ýIs"‹Þ&—“t‰Å€%·‰þDæ€YdvÒ©PÅì'ŽÜB&¾ý3ëæŒæ::­î^1vò£±<.Ï{ò[I6÷%3n?õ,°Êªn¶}csöãg-óx(>kdå¯NLsXÀCœ¸Ð%ÅÅ‹`h0b|JlÙ§qÔ;!Ù‡¸o7Ó¡„ÒwgïŒæ`uÍ¥^?ÖÝ„ rØõ\¨’"s˜v/wy† ó¹A¨âœ‰Ëýõ*³v˜ù¬ðKAÑx—Ò…ï¼±–ÇÆNuàªý‚äfRíjÝ6›ÏÉà¢>ôg`gª™q°AÎep纲2¢¸T;îµáÃ/ˆ,êÆ&mKßm ¢0»çeôËÂãQàE¿Ÿ€¥®*@ïYÀ®Î·©DS%áXm¾…’ñNÕ%uPS()…o %OqûËÇè˜ÊŠX)b@æäÈuœŒCõýÕ7@úÇ)<ž“,dðq*ÃÇä7\ž2¨ùµË8l•—9”µ àÏ”¹Áð‰£U´d™Êˆ­-ðå)[*%ê¤ËdŸC7¸¦zfRç…¢GÙLâÖ.íp'ñr¹Ð¶ªW3Ô=]ž½«œAk `ò÷RLaOõ‹r×å,–ŽÆûÄj»ûÍOÛƒ¹s |&œgIù\tIc<?B1æTí3tîŒ'¬: *f¾y‹Q¾Fd“ﺚdlתóg¿³Ù13Zè6DN\muð­ n+Dh¨[à0Óg­ô¬;Ã4Çïk‰j5ò~Ïí¯‡€¹½ÆUç·twßÏ­Ñœ`û”i2-&Š ‹yE øÒƨmïlöœ$£ì wîóny´åHQôný´çÌC{)²Î,‘¬ õ/¢ˆÆz2LÛÓëwuÝK7}Ëb8cÔ¦}]‘«7ÁŽä_ ‚e,ù¶^\¾”˜:èGÞIëဇhG„‚Ž˜’öÔ&„l¸j&X+7BÀéÐGâ`¿Örì` ¡8nÚ ÒPlã±e0Ú¬‰ ɪÊ›{ä"~‘ÆQæx–æql¸Öù`1Ù?§#ì³3MÞ%&Š—f¾aõ0"y ðYEkQ•¶7n«.JˆýøÌ™äŸ€Ï•6qýšt¶D¹·¿D„È´C¨)G¼¸£(3‰Âƒrpþˆ€“2æ¶üqÄl%9kœ*ÝuC=èX”¯>àä5ÒƒCÓè|UoÌ8kðñöSr!*-ïÀK’ò윮{lñùû’Æ'• $‚9¹6mVû»žµfÔuªel‡­T—Ä\¾.@¦!"9 c—ëÍyQZý9ÜÊVr·ÃÑÒŽ¢;¼V\ ÊÕÏí_/Ü(’æO ï¥Ož~~NÊœsåÏ`ƒbhÌÍÇïù¤ÊRg²ƒkQqÚ1Ô?Äwšú#µÐ/RB~WS°ûö6¦‘iß©ó¬ç oÒhÍQˆ£Î% ¸¦Ó²Mœ‚š~ñ†n:@UÐ5»dÞi¡<½'¬àEÜ~vBšÖ]zW‹%X ®ü ù%ÃŽóÞu¾>]V·ÊiïàÝëÚOP8³yQJ9óNpx=‹„mªx–­V8óÁª3'ì§Ô6'„œ`+PÖh§¬”'“¬K€Dmëí³ûµœÞª×AGfñíI³Ú/ÆrÔw~ÓÕ+E7âÖÎçœfŠjé+^*`Ès”˜ÅÒp ëTª@;Šþ›puOÖ{ôWMpŒå5¶_Úëˆ4ç$ä*•?\é(`j?~dXšî›Òƒ`e“>}~™úY­íìæ„€gæ¢æ‰ï¤L64ÊÜ@ÉxŸ–D‘rDEø)Ì„t€zñi‚¡“²Ö¿èzã˜ZjpŸð„Q£nâÈ÷.å^ÝB5§òbÈ8²ò:U¾‡v’Å#zã.Ϲg#–F¼7áRu»†ÔÛVÊ]º_D²ó«‘Up!ùîãAëÒ!¹ñ^„_àkïþª$€ˆßè»gzVˆÙ 04 /‰R©K%JI¶ôAUqxÿ‡%r#S<ÖÃy* &-GøBwJÿÿ¼Ûv† endstream endobj 65 0 obj << /Length1 1394 /Length2 1541 /Length3 0 /Length 2437 /Filter /FlateDecode >> stream xÚT Tç~àJÄ´ô/%’•4Ȧ,ayÈ j\&É„Œ„™L)"ˆpS@¡n…£ö¡@]‚¢(¸e»€b¡€Ò("-¾I@­¾wÎ{'çLæÞûÝíÿ¿ol>ç­¥yˆ0샡8Eg:n`Hˆ#`2Ùt&Óždc‚àRxÜM²ù –+ uþ€+‡!œðyA8 ÄP°J),6`98³–;3™ÀžÉtzÄäÎÀ R!"H«0Vl¸˜L-GÂ%8ÑæÝ+°RËÉi9Õ<"a9"„Pá8’è(„¤`-&D`\ýQ [W ŽËœŒèèh:© còð•*ˆFp X+`¹ ý Š„Ç6£“l@ˆQŒù×bb<’ÀpH!Œ*ˆ %*‚å€hÖú€`ŒŽÆT0~6€Eg½/7ž­/„ †dH(Ä"eªFÐp F¤0ö  ã18@¨H„¤ ŒÈ‡T"…À09|D-ƒ A–ÞMl+Ãd@L,Ç!b˜ø#Å*  p¹Ž‹ý{àc‹Äb"ÄGPÒ‡ê„ÙÄåË‘°‘Ip˜úßû·M½D*U€î—áÿÕê .Ïnlã÷1OO,ÄÒ8€f϶œ/9ÀÁÉ Ä}\„!ãC0?dú¡b 8ÍJÒ»yUã×o;. ø¸VFp¶(Îgr˜BâÁú¿‰nHùoüÖWù_ÿt ¥TjÛâÿ†"©z@PV‰ôÄ ŸBCá1ÉÂ"DùiÔ‡x áÒ÷Lj(|XÄCp¡Ä@Œ1÷:½Ä¤ ó0¢ÿ¦‹Éü$FèJA|7 !˜ÍǽQ!&ÒëËžã ¹R“˜ì9Ë"„(‚c  :ŠáD ¶‹bLNÒ_¨ÃrÀàê]‹`C¢–I½¿s±XBi0?j,TÊå„ð Ì ¦zgTÃ1°ÔÚŒ ]’¶']~]äaMû­ÎþËé5ƒ{uSCŸzÏWu­NäºÿÁÎÑ<ô¸ÚØ©n7ïµÏ[6—±¹mûóÜÖÒ˓ĂêözóozJûNÿÊÊ [Ù¨(|nÿù5·¢uî ”yÔ¨¿5ewûº.9_0tVÒ?eiÙ3º©q]ªf ÙÑ‘mjœTá‘]QàyΣ¡ñŠßbÅ {]_¦•O÷ð‘êZ{ΓšG§¨FÈã#==Óeþºìž•‡¯rX࿵4Ø<­ò&ì³MÔ]NÚi+PhyÆÃ–Ô‰)‰É%OB5þ—g- ±fú{Ý,œÙYøààÞ¬š)~ëþœ/fØ…1vÕË3Î=úr(¿bjÔ@S(ÙýêQÉYmjðñ´êǹ¾Û=!Dý;g²½ÝÄÔV­ý¼¬J¥¬*¦Òt~ÕÖ)SJþ42>g~,Û‘RÐÎlÉPñ3²~iꛑÂ/´1y¸wß.ÝÂ¥o9ž¥¹µE~³J6”ðM)Oh<⺾pˆ&7GúžÈw‹÷BÓM yªKo&!}ÓY¯Mõ=-œèŠ£§P«9K-ÝH–&µ};ëe‹Y-å’õ=¸HU™þ¢Ú,/Oµ°U‹š¸£Ï¶Ôw›_Y.½Wbõ`Çöþ&— ôÚß为þã€À9ù´ÏŠÛa­óÿ±i¤Ú¥»·áŸÜäi[nCs\«<ôù>¶Æ]LŸšãPLÙoY&Á;mï?–¹¦ÒèxÏý—·¯ÎˆÅsßp­Yö懖{výœ^üeÑ2–Æ9oôü¬ŠÖé·Ä½{.ôñþì¸þÜ‹6ƒa¶í!zB—ÇæÎ~‘Ü܇ç¹¥›¾ZDßÚ›œ½’ùSPTmÀíÌV£Ïl ÓñŽÐÝøo7 ©½Ù-7_LÓP\žnõ^zùrIÀùçqAÙÍÅäAßÈâ¶b祮v þ>‡¨É/}xUdÚ8ñœ÷÷TMDséÂ×·'7Õ& mDÖû×DmLÛÝxª×9ùÌ;îÞì8RÓÎúzOç«V£¢4»®®³ÑÑëßo¹^{®s¹«ýŒÀfÇošù¦‘ǹ{¶y&ؽ)‡'XÆï9ßâÝëþfÿâ£ÁÚWåeX…H8QAþõ»¨[ôbÝ*þ™bÚØÑñIΈüºqT‡9:Ï©¨)»x¦DœøêÉá:[(öìs%åÐ÷L¦ün‰kµmÏÿ4Ú½X5Ë ~ºûäîµ›s¶l_5àtó¾]Äs3È-3^G‡mvœ[X°€õæìÜ÷õ“š”ÕmÃÁ—ø¯ÝàÜè¥&R‹ýep >y>:èûï¼·7ÍXtõîçÍÓâ™®?èâÍšºÝ¬h[/Y¦Þj^ò´¨Tñøèé íµ¢Ã $%t[S6åNŠXXd[~•Ï[^ z§I{îå‡w™½²¶L»ºë'y ?&m£KLöœdÍn¦ÿžbûÑõõg”ý£u¹W½~*H«j×åŸoð+¤»jg¸µÅÓV¬ÝÙ‡ö˜Î19¹ÞE³—’Ë]1ÚðóWKp“?¼ÿºÆ"¢lé_ûF2kìéÙw[.ääêj´&ý›{d#W¾X¡‘š¯2¦s¯v¦¨ÏÖz¦0þ’Hûd S#,9óÚ;ÔSEÚáÙØ¯€|™¶A×_®L³.„•Õ‡nà…‘?´äŠúðYáýÌ`Œœ°0Wwûóô‰5ênÂÅE]½ñ-•¥|–.N×ðYöÒ²k«Ø{+gW=)´üWª¶Áq]<œp2­cÞæNJ¢'ÉúÛ> stream xÚtTTm×6¥ÀH£R‡”fh)¥»A@z€†˜!†¤K¤C¤Aº‘i¥[@i¥¥¤ÛõyŸç{Þÿ_ëÿ×Y뜳÷¾ö¾÷uß×¾™è4´9%-æP9ÉÉäUut„0˜ æ11éÀöÐ¿Ü &]¨³ ù_ig(yã“ opª8 äjðð<‚"k(ƒÁøx¨u·°áþU^ÇÃú;øÛ}ÃÀÛÓáXÝ€zì 7§ ήPoÏÿø·âá,aHÀj ƒƒþ©~ã†Zý±oßæ‚o´Ç€=ÿßÈË·÷øþû|¹u啤´dØÿ0þ;&%…p<9N^>>@€Ÿ~xÿ»ˆöWà2áV@øO¯7›ôŸ~Q?Ë_£Á ü»–âF³P€å‰À7/žÿo¡ÿNù¿éûW•ÿ—Äÿ»!9W{ûßa–ßñÿ# q€Ù{ü¸‘¬+òFþªˆ›!€ÿ7TúgdU¡–0W‡ÿŽ*"!7c ·¶ÿ{a.r0w¨¥ iaó[ÜO˜= Õ@¸À~Ý)'ü_±›¹²°»¹7\nôø;½›¯( ·@Xþš/^Aâì ñodÄ+ xòÜ ¢%Ôý·‚n.8y“ܰó¬Π_*(pKÿrý¶„n,Õ¿-~~€ûf€ {xÀ|·õ?€ÛÆÃÑææzøÁ¸ÿ1…n'WjµBþâ½¹ÿ6ÿEÆÂÕÙùf˜«í†éìß7êµ}žDXˆÙV½;­”¤rã\gZÑKaåôüìÜâzN€ÈZ‘°à|,™ØÛA4ûM–åHâ í•ç÷ÆZì¦xÍæ ¯KÓX­Ñ•fÐôÈýÃyß%kº©qpêH¬z]9yéúÛa6¢·*1e9¹>"ÐÈ!=uë’w¯é.žx1¹¢¹Z!¨|ç²xŒ3êi¤‘ÿ› ¦lóןÈéo#9©qØHöÜ 'ŽŽÇI2‡Ò*Ųƒ¼·¢øò= y£Ï>=Ÿ+Õáui£`¤0 §Æ<"eö”ZOR"›ò,,ˆ\ŸÊ³r¡MÃÛsö¤,M޹óéx9å§Ø}ö ÌGÑ„jµSfûÀkK4Œ£”%&„@ýŸZÃÅà–F•…ðÎSŽ„gß«À÷n©T·¯Uõ±«K¶[Š5j¼¶vÚÞ  ƒeØ,¸ç‰J±_Öé72Ïf²ú"ªSI@eï!Š?ÌÐó $w¹úIÛƒ¦ÝÀX@‰åëTãÏ[E.ɘŽt3SÉ¢­g­ì—‹;€E¡ê+_Ö§›C~FûXl?;‚1ƒöim ¬E‚,[Ù¥)¦<(öè^¶%WióÓÜqááÓã/ù )Æ«è𓵽¹!Éošóî—lÐ÷ÓŽñ?’Õܪ&šNùv;cvå¸ÅP¸Ÿ*ž.Ÿ>ÏÎ4bü#šÖè¸9Ù§”Qëî¼^×h÷Âq]U›­ F> Œ”™í»cŸ=š ÒKïr´"èG„†®5±ÝÞ–Í ê2@ÿ9¾ñÆ¢ùGñ ù£(gF3¹¶eœù7ÜU¯Ï·ßÏvûÅ‹H`®(1ú$‹OÄæÔnú ‡ÖçD§ÜÿÜ÷´'½§•ny3©º½J³­V› ËTeÈcY¿Ïš­…ŽAJTÎò®Ç¹0>JޫɽƒYoÖlxmÌ"LÙplã}Ù¹ía(pö~õ‚N:§mCÊV[ŽÈdõ怹E÷xŽ;ՙψ59Ø7Í$× Éx¨°–9’Ï:òßꦛï V[´£Tdºâ€ß-‚0Ÿ§R9‚Å€0W±9r´=EYña¶Q¥®2·c;X|þÄ“¨¶žUMrñÙ*KºD‰6æïu5GŸ˜ i™LxÐJkòãx4‡FÏ÷¬à½ýÈìIá³§i-¡ÈGÙWkdï6Uæ ´·ú k]âòön wcT^qøí\æóVb„°Uý˜æ;ÇÚŽîùQlÍ gÎ}Û—ýr˜3FƒmO±I¤Ð\‹qE\6Ö¨CÊRƒ>z}_ÎÁ~óZëáŠN vXsðƈ§…¿s:÷žùVøs+×£†ùØäœ¦ÊW6_|2—ûDZ¹¥ ãe!,ÉÏ“"¬žÓ1\£æ \ß- ¬Òëv>•íÍFÒuô \‡ó51͇Ŋ‰&"}÷Ô½Z]¹L¾Žª¯¹P¦»™›m 7 <®Î;DZTR Æ«ìÚoè¿,Øë¥v<ÎÄ2BÌ-’ÒÜêu]§5aš.Ø7£~xëøfãa)zâÒ ÚŠgSœc ¸…Oãö¶ä·~ ÃiîïzAqÚ“rõþöðÌi÷ÙÏó‚»E„G™M!Oìjߥ²î'¯=ŠQ/·ÊËqЇs„×Фô/$ãk¤a´À`×Ó½Æú̉ÛRîž”)ÔK­Ⱦ//C…\\{>) ï÷È– ¦éî^}C²ã.óG†b]÷Ý#äÈrœbÌ‘pg¾ò¢Ùí*äWðá'Ù‰T*” XLËy5ÒQrWºªWcu=Ý¿ÝÛõùz‡×ëëNbtgÎûiÄ"”Yë®ËèÙ‡‹†2ëF¢€˜þѬ™å88†&¬WÑÆx£RÍØã#àÅ;³TùÓñÞ3¹5è½#½oxþ,Ã'y%‹M4\¹×Ç4Ï2QÞ8­’)C¤ãKo°ûY¿Ç\YËöœ’XhY&[£5­œer˜Ê½ÊEx‘º.–~½{<¡©ÈiqÑ¥"iKk7ꢈ(¾kõ}¿ÑXìuڱⰯv¡.g §t¸ÎGw9Pâ$ã÷€¼<ÒáõÄGZ;ª”SØ`^¾ÕWþóöQ•&¹vå*ç"%e„wThY¾LЫtNàý¤ ?ÉÐv¶½ JüqçÊSÄá§g&úç2„Ƴ%Ût€0s€­_QéHs\*Õ|FýÜL  ¿¡j’Ñvƒÿñô£²ÐØ5sÁ€¼Ž—¿ä»ß²ù”rg°~ûܺ‡+µ§cŸ»é+¿írZ^xN^þÌA‚¤ÐÅ=,mï—,äSk^ n-ÄÌîO©‰”C]-º¿9vc\} :«ª Žt Zqõ­»2”‡z\r¸fÜ+Á©a‚+üJD€öGw‹zË~Ô)©²ÉÞºoÏá|ê•|0]¿Tj8£I<):©ØeÊ-™,¯œÌŽÕsA½ÉâŽä{–„ë-âsáX|meV~¢6z’Êfy@¾CNok=÷ȼٗ¥ò{D‰À3Üþ³m’T®´&E‹4öi´#í—›u­iAïÊ~Aj£¤àŠî“ÓÕƒUØ´_µ<–£™•±½„]ùwØ÷Kúˆ|Ï­fl0] çÔeËSDSÏßo§ê¨é’ :/_ß´9q«Øà³WG«¬°0£`ávþ›sµ'@A›²Áfnê:1;sÐÿÙ³î<Óê›Åëw¬RwQfz7ÍÌ ½Z¬×M7©áˆ~Rv;³Ã?ô[ØäìoÍ*Ư9åùô™¯¸¬ýyüeu!,uéªdõu) Ùà…ѺePÍâŶ¿ê¯ÇÈ(+‹^3Gåþh¦ñG¤eé÷Ûn› cB®ÂFëÒÆLç¢þgqsáïÏI3g§áÆ.;ÍêX›*šÛA±o^ÓI›TÅ¿þh#~¼yJ¡p»SN¿·­%Î3Hùj&Ƽ±’„÷vaºXø=Ž¡©˜ÿ]£&„žñrJ–·¸£¨†‚ºû±n]@Z‹þ»5Fíü' k°«9íC›ŠMwJ1¦kµRI¾’êI?ÜI·&ÒxWÙ …áÝ3¼-Û¾6â ó@µH¸;¶»'…c„Ž›äß!ä0êÿœ?[fÚS³}òcaJ_+0rCÂ׫P¹M㌈_’;”h߯ŠSoièuâëí´±“乻ˊœÂ¹“ÝQY>¤ ° ø8Žgß¾:Ó–¨«V 9ÿ,¡ ±ÄÌ´\ñsçðâ8™¹¿“&§—m¡©OÓ§‘¡?'0Î F¿²gdÆ'YœBµp={ìíO’UeþôB‘\Û3µ—Wè‹øÌ¢±-l<9©WvAóAk~@&—}Wïá22s[ü9'ŸÖaøêçzƒAÃääØxæ±o½62×'^•’š òÒ €ˆÑÃð3HÔhà7ÞÆcOqDÖã[®X#ÌÑà«Æ…æQè‹r0±îN7¯Eái^ztYZÖ‹xé.%îÌQ• ½kü”gv½Õyya#8·¨q:½-Þ<ú‚®"íUXÕmÈôîY ­0Wdì~Ý“WäièÍаêv¿€OcþÇ»ŠüÞ Yh²Ó!©ÇÆL:®÷¾xs´kãæÑù²ù¶säááÆ§ R+#B/N¨É )Ôës;h«´°NKž½ !}Ñ{{ë(I;]{¢XàS†=ûc‚ÁèwhU ö„‚+OËŸ5í=,+<3ÍqdÂÂÞ¯¼46±ãºÉÍ[oñU£\1Œ®cb’íèÒ^”¯Á_ŸñDJhúDz¡‘‘¢F½'žó9,N§ís8*¬¨)ͤ¨5% ;ðiÝ‘·ÚC#“ß*ŽçOàÈ/‹Ø/¸8eÊþÒh¼,ûZ!Ü Þ;ãçñAëAíþy¦ 7íÃF@‡+½þÛè­“á–7A/+BB¨ còÞ+Áäë„ÎÕÙ ŸV¼c1ÆÄ[{¼®uyTbW(±ý)5 R¯ÉžKyJ»¼;\ØÏÊ>ŒŽÓ¨‹6·Hi¥?`-+B”nènVvîi_¯Šu¤ˆBº5ix"]ŸƒC•»˜¨µzQèpkÑXÏrÔ‘]I7ÕÎȲÏt¼ß$;¬í‘Ä|sñ³ãúO ,Ó”åî{ŸYi™õŸís6— ±•PíƒwÝãYdwÒ­n¢Öz.cC«{.ÜÅuƒ¨Õ¼Eóhëû/?¹¸-êD1— 4\±Ê+”Q¼@CñÞæ4àûtœL½}’N9]žU;üñÖÅR{ö‚]è2uðg.Ö·‰öµÇÙ‰=î¦Õd4OB5ËôFùxƒ±ÓXì ¿}ǧ_õòWŸ2ç”KZ5æJzP®õZCæ^‚ØDÕ7™ õE™[ ¯Œe:Ê;TnÑŠcq¯¤öä´µ+ï}<*«Ì3›\ì• ´Ö4íS}½w ~á¤QÑÜT_bÊ’b=-O¥ÌìÐÕ„lxÞ±qYfŠ^Œ¸3eÆÿæ9g”Ý®%¡KâK·B#w|ƒÌ¸G˜µøF©iZo1¨rƶö†íÑ$&hüf^Ì®vÔÕ2bVì 2DôRu@Ö{N¼„Õú(ÛÛŽ®èJíü؉þ´Ö—[ŸO;{ÙI¼áÚ†YÈõ KþP·pGÒt¢¯Kõòìë’O‡Ið+ä*8¤CžYìcÏÅÄT¢÷ùÞ©Í|]gÄò98¨7ÏâóXå÷˜ÄÇ„Ahoc‚¡-¬ žšR ¥ú† óÒ]Š|¶×Ѓ¸Pn5?Ì̦§úÄìyß)Ð&ÍBÖcéÃoi],¢6-Kê7A(½`yXI x ð2Z»FÊú;ãOîÄ*E™zð™wܲ<õöºA’´à^FÝÃü*ÊƒŠ“Èž÷$–+-éé'ÄÇK»›ÓÎ&»%Äþ„€Ê¬n‚]¨C‡zâVJo(wN¦O.o\Žt%2¼^ñÕ«v9±þgZ”Zx-40=>¸Wj¬¼ÕÁ£#¬Ë”g’yÙýc;ëdÂ>ì–ôħìÒùz6;ER6ÐiTŠ>þîùntœýƒâc&ó|,Ç+ë׳´Bò8T¬-ȯ•†‹ºa£jÙ璘}>ª›„¤¬ENàSc ÌÂK.Qf£!„ îPý,›†Â«äÇÎ÷«ZE…¡T<Ú‡jÒ[‹Œ«Ó§Lxa„wi; 8t²Uoó†K«Ï]êfC3ÅO?jc-¹æú'šÆxº§ã'~aÜa0؇½çé )¶O¿ãßùÖÄKó"#»Re8Ô¢•™bDÇ:‹ƒ;\ØwÖãe%ï$ŸÃoóþAðJñ´Iuø'çc¢Þ§=6BvNƒÒï –óÅVÙ…¨‰WÆHÜkQ,j*³/ÄþˆÚi ã„p=…R’ÊíÅg˜sÞd5ÔÌš´]¥¬î3r¼Þý”8®r<±|P/~îFèPv ÒÅ!šXÁM²÷O½ª£GRä N©Òë÷~{pìïônE&Ú Üçà"ü„º+#Í4-fÕ®`öM2XrŠØa,­‰49[‰ÛÍIB[ܱµ‚<žIì”ÎxÕÉEÖsGήu­¶ í£ff§¾h8=eTÓ01ý`y¶Žªj8~CO¨“‰&m\·z¶¸ùóx ‘&K1ÿ|»n@›K¦WEoÙ¶$ˆ£‰­i9{ý‚ [–kIì½ökXúY{2é§TVÒOìuw˜Fº±ž™‰âÆ$‡— Ð…(#T´›“Õ>ÑÄÛhØ,Ëì}y«›JÎù>¨¼‘R{c5"h­ù ®ÿ~Áʧ<íGX´átÅÉ}Ã÷ï• †ÕÈTb¾Ìz饰!«q“´ Ñ–nMØzLÏìÃÞûÜ'á® x\nP( k÷TcÈòÛöî{"äqj "M±¡Ð®ÎÁ[4CÐã±QÜ_×”fVv¹íjß7¡TŸæE$8…›gt•”Ó·¶z¿ÀŒêëQ0U,)`­ù8§¢E¾Ä]EUK³ÃºW¿Í5M—c$޾˜ÉôeõK•¡ ÑÃl;?ÁÙcî½LMŸðMôyGU"­³ãN©‚t*êËÐ TmÜO–35˜wYF<3©V÷¬/rFL&sÉz®p»ò&âú½¶«šX¶,ízV([·¸³‡f›¢ü&0†•º•Jíä"Ë[¨Þø%ûûfX«Ï™©Weå/XL6Æã•¥+³p§ _Ô•7ा³~Y-lp,F-KÅÖÒè)‹'û.kÆC„‰Ä†ÛtÅ8ËT¡æ&^ó~¹NT¹mô]&ÃSÌö¤Y^1.›Ö°Ÿ£šâoiÛHˆ7ŽœÇ±VC4jŠ1tg–ñ†ƒà ˆ~GzZ§¢}] 4ütüÊÏíCËýQÌ'åjÒO}_ÔžOã_ÆNÆ$ŠÚûµY`‰šˆ¿)>yÇÖ'ëÏð}1؉QÛñ.•Nö€ÇÍå¤,);x‡fU0)†ðGYAÿf§Ù ¦ ™äpñõÃIx ¶zá•üØ7Æ%™Á¸CZCÍæµG.bj2‚)Ö"j‰…Þ1b[\ã½s!8M©¦kT¿rMuëpyKð×å|¸Î÷Öà ºà]iö?³ª‹vxc“yλÆÀO÷3õ])§N`,¸Oáñ|`A'ËA æ¡P©ËRö" ~Ÿˆ'EÀVÒ+¥¿‰n«oEtÌ—à{^äÈe¸¼¡*L=hŒÃ]"ÓĬщWTgÔ*{^ÕM_ö€KgµŒnëî>E"¡Tõê·kÍÂùŒs²ë:,˵Š“æ†À¡ZiFì×vi®a<áw¾SŠòÑŽ>¬øb ¡F¡< ü¾lÙ}‚ uõrÑḬ2R©®̳òº|¤Ð¬gÖŸ=N:X·ÁØ"Pãy²Y$Ô3‚À3)Ð_úêãGì~!+hä•„ׯKuPêO°Jý>ãaû\õΛ«,)|›C“{ÅÏgÃvüxª7=~ãÌ¢¤¸ÖÝxÿÅ›Av|ÆMYÄ9hÜá™Ê}W äd[ÐRÖ‰õµÒlÕÛ½‚ÛÈ#x:(œ3R¾µÌ8f²[xûì¬ÂR¤c,ÎŽ2‡ðK"+‰[?Í ÓˆVrÊIøÚ°æ… ÌW/4‡Uwzb-žÕºÍVpÂËÈÆ8Rn®òVa·Úu9ðT Ÿš¥E.+ çI@›y·NU”¡²°˜Þ˜‘úf¢•çùü |壇CÏL?tJDp^sµ£î¹÷-y£¤;G°çòÂöïQÖX‡·y(ª }¨‰ NËÜ.",AíÒE4H? j™]Ö+,³]!Ð0j5¥ÔÔkó­‰Zéîöá™@~/ôèìGft·$2±²y¼Ý¨ªvîÍ—Çvâ¥ð¬ÊfÜ=(Â*ËÓóyîý3F¡ {†a.]œÛűeFÁ½D‘UßtÊ;~FßSÔ\ îÃToásáKÀè±nÓNWœù2#—F+ÛÞiûH#cb {Ø‚šÈ«IÍÂòáqƒ¬Ú’ì>)¾T”öíkå }< v¤w}hð9ˆa³vU²ß‡`þVahpc,Àÿñ½€,|l†=mÚ¯3 Hé¨Ë -Mc,3T>—Ž÷Ž ×2•è=js¦+\ãF£mv,kÉ܇sL³¤^Æ5²fuwM)Š\ÒÚhí¯ãL£…ÛVÔ9),)‡ErgÝó)Å$¨Û;mX"Š~UsÙU÷”÷ùmÐ.`äú‹œ“âÓ@ÆË.ÙæŸÔ÷¶Ž€x—îÉo‡>6Üën§H³çí:†ge;¾»YÌÍ<~ã‰ß{–7¶H-yëÜ@OÓØì„Ÿˆ`¦0±eø²ÑGy›1º¿:Fqâ½Ћe (R¼ï|yžïK%Á¹‰.©çÖÍü*DÌœcu&rZø³_8bšÀL €s™7íÆ Roýû ÉŠâ íEA¶IZ¾×·¯gƘœ~2 Gä’11]lñíø\I“#*Gœ®ã½]± £»þ|ú9Ô²(o4 SŒÛƒ¡•Áh‘ê)ê:}í'q¥ÙH(éiqpï„\Šù]j*™•DÍÕêL”ÙÖIôûrEXƳC#d¯åz®¿â®ç¼¢˜ìÊŸ1\ow!nwGè8tÚZ]]6/òaŸµ‘yqÚ€«ª¬þº,¿HÉ&÷=×ÌÅX°JfÌ#B«ÁÚáIíØ$|â˜;Ñ¿1’£2Äa»©(ï*qñþš«A÷ä±ÇôrDÜ}˜È#ÛI;š•ÓÄþ¡ë‚tK4B†<ùLgÓJ•ÜdÌ¢û+½$ ‡ë—­´pfyùÏÞ_žœ,±ºõ¶„Áv[Iý1–<}ÑÎHJ?\Ǽàb‹uŸ9Â& öÓ åZûÇg—í6•êPB#pMˆ©õjkïA„e`¢<Ý4öV’y)EvúÚG.fß—”Ù‚¶;"/lkù9Êu_1`•¨=Xº´`í1ýx[‚ºícÔ¦MZ›–ŸÀ¢[hjEš)©ž'‘„Šä'T·¹`Åš³Òë Ë~Ñ(V’„êÿB»á endstream endobj 70 0 obj << /Producer (pdfTeX-1.40.17) /Creator (TeX) /CreationDate (D:20171113151328+01'00') /ModDate (D:20171113151328+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2) >> endobj 17 0 obj << /Type /ObjStm /N 51 /First 403 /Length 3088 /Filter /FlateDecode >> stream xÚíZ[O[I~÷¯èÇ]­BßoR´˜„„!3åÁ¼Ìb³“™_¿uiûô9æ@L²+„Û}ª«»ú«êºôÁF(¡EŽÂ(aR: ›‚0N8$z‘|‘´&Ьà+ m& “X˜i³VЭ–ߨFXKâ·Î$xÂ… r¢ðV·Ix‡ƒJøhôÀ”&'‚¢ "øãI„ëx%BNZx#¢…Mz'"0 ˜4>Á¦a<(‘¬Óƒ`D u"% ßAdpBÙ `DÞ ÇؼÈYY ­‚3ÐѰ0àU&©‡o§@CðíA0GÜ |Lj£ð—2¬¢P,¡µƒ`Ž- $j‹<ð§½1ƒ±õàéÓ<úãz,äþèl<ÃéÕ||5Ÿ ¶:ȃñlz{s2žáˆ°7>Œ¶¦ßÄGŸý†‰`1§7Rþ4€Un`: Bîþ“ìÀ¢âéS!w¯Ãì‚òÝú(Ýȸ «–èn1Œj(}8DZ/èaºF-—¾A-”¾Eu—¾C}a¶(÷o¦'‡ã¹øZØÞòhüm.>-v§zŒ^ÑOþ) jTQ¡®Ðds'Rf~ÑGœ}Öú||41n$øvàèV…(°çµÞÐ幡ï70ˆÁ ˆfÃ>n‘ü*m@d²À+ûLo@D…èy4)ä$±Zc° Í>"ëÁ#c0Š0„;Q$–tÊmEqJµ¨­™D7ñeçÊæZ:䙊,ÚÃÜäË~x,¶(Qð¡Õ¬-ýÕþ_µ`·`ñÌq›}‚n­Æƒk½†ÖCzí~RÀñâÏ™Ž»e¯pe¤k!Gr~H°Ö‰È¼ j#é‹wª~•÷ k²mJ"™®¬ÉÔÚÆA…%…mQf.¹™ÃEÄî<µd›z”uÅ}j?ý•gÿ·ù8hôŸ1<:Ñž"´ÅÓщÏ*ÊÄhÔ=º@y͒݉N+p?ð,^¥€\¨ÒAdùÐCÓÄÈYqñø$R{'«¡pœöAmb –*HÎ_Ô2ŠŽ†2·´·,-æ„NYvùrl$0Ä þÉoAäBÐ)µ×+LHýØ(…,}Éã!siC7ðx{ÂíÁ°=ãi â‹"Õt¬hÜdo[©ÌQš^mÚ·¤"jÑÝ(4ÖÊJ)ÜRùÇ€F+ .>‚b³z­V|Îxà^FÁ¬˜®i‘…Å4½š«Ú(/_UÛ»kc}³² ^ÕE:³±:X„)6W1ˆ"$ŠXE ÁÈgש N0©ÈdnZ‡i4·¬Î9 äZß³:á.ºïÎÐíö*ÐbÅU¿²Q[65ÍžÍÍ–2“å”Ê©F÷©Å@ÊzTëèܸrzL\ù Î7™æd‹ÆàT±a‘k±RF`s…ÓerÚ’r5U딇Je®Åâji‘ ‰Õ“MJáÃr™ÛÖ[¡6idg5¬Uˆå\,Ýôœ¥P±/³ˆiç %QIE—ÌÌ੪ò.Q´áâÛ:ƒç€/9th¤åuê6f*ÈmZ¦Ä¨Ê5 Üö`ñ]X‚Š”H7ÅAùlÄ×G‰ÂrÆÂfdgëð<^™[³=Ì+«3µZÁ i‘-^«aµßR,ì87PUnµ«F™›h°WžÓr[ 'ƒõàãÑ©2fA×1žãÙ™[«±ü³PsFºûÞ69àýÍ8:Ããj¿¦ðÊvíZ}(F1&W½á—oF—0òëþþ›W/ÿ1ÜÛúE+¸Í„cŽ-z…úÄñÄ`5¡ÆEõi 7g'ø5dàŽ®_Œ'gçð˜Â@¢{¢qpw>º˜œl^]Œ,8_c¼È_Ê$(,`óÑ ¾+ý›Ü”C¹-ŸÉrW¾’¯åž|#ßÊ}ùNÊcùAŽägy"O¦Ó+y*Çò‹ü2‘gò\žÿq}>¾’y!/啜Êkyïy/Æ_æÜ»Ayòß·Óù˜ˆÔcâœÉ¹¼•ÿ‘¿Ëoò¿3þ ìÚæú-ñƒê|¾ù~oÈê4=ê´¨NMÿø9êT¹WCPåsPå[y <*ê#űÚÔ×õÅí¬ÖO­§×ÑÍ‹o·_l‘nŽvû›Éå°á?M¢wÕÎ<ÿeï:èÃãÔÊ?‚gi¡{ÑlÊ­ëvÀEëx‡ÑŽÝõ=D¼_Á–£KÀ>]VÑïdzy9"W;¹]b(¤høå¢ÿ%¿>èä¤YŽˆ§Ÿ/šð„Mö›žàéÖ žÃãý×ÇlŸžØiÇΜÒÏ1¿ÏnF'_Çs]ú ûtþz-g5X¿V4ÜÜÝÞÙ?&°±¬åØÁm£Ëß Ö÷€õ¶«ºiOÜh‘è°Ü´Ð­ _¿~÷Û[ …þnpzáiV=TT¨ï2eê÷´CŠ…—rz5›AL”óß§òÏñÍ´p­àøêÙ»—Ï`î±Þ"‘)~ÊY®à32néöèðW€<-À‹“s.G Ü®ê`­xúö·Íý},v½/瀵£Æ¢Õ7Z•<.A8Õï³WgµÓ6ì·£››éïÜE:‡³ËÑõlÞVÂZAksûÃáîo „þšÆúEmÜOÊ’!õ*M=kçý°Vdzup°{ˆuÚÑQož@ÿ“B¨ðh݃K<Ƙõ³$gÈÝÖM#Õ{ÌŠ³“Éd>¹8CsÒì+xú=a»›8¿ô%Êâ7dKH…ãÙ|K6ÙñΔ(ÿ\ñ´°V8}uüîÍpŸL’znh¼cÓK°¶H ÷X¤(ì¶…g­èyüüåÖÁ6áé Ÿ¡œ0üqXN?ŽÇ݃g¯‰³²Ú ßZ({â#ˆ¹ý<§G$Âú[£Ù˜~R´rÃn)G?YÚ™ÜÌæ¸)µÏëÑòÖú09ŸÏð÷wë ïÜG;ÂÍýÂu^ ·a}᫾Žx×ïböG(~å:Ö‘ºÒsKº x½¾ôîí©# <4E32E369BFFC6B7751B950153AC3EA8F>] /Length 205 /Filter /FlateDecode >> stream xÚ%Ì».pÅñsþ.EÑVµu׋֥E+ibðb$X¼€• ‰Žµ½€7aò³òýY>ùæ G’~“T0ÈRNÔ6lAÚ°›Ð&ìAöavnã¥#¬ìwl-èÂ(ŒÁ8d`&a ²0 30 9ÈCæ¬âG<­Ëç¨yë©U²^O¢ÊÖÛyTÅúF-Øýë¨Eûâ[²ï¢–í—^ÔŠý~µjE­9eJQëNÇGQU§Óè8ÝÜËið£?WØï endstream endobj startxref 163837 %%EOF ess-17.11/doc/requires.texi0000644005071500004540000000476513202324173012553 00000000000000ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS. ESS supports current, and recent, stable versions of GNU Emacs (currently, 24.3 or higher; alpha/beta/pre-release @c (currently, the 24.x and 25.x series; alpha/beta/pre-release versions are NOT SUPPORTED). @c Non-Windows users beware: GNU Emacs 24.3 is @c preferable to 24.1 or 24.2: these broken builds suffer from bug 12463 @c @uref{http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12463} which @c will cause Emacs to get progressively slower over time. @c XEmacs currently does not allow all ESS @c features. Basic ESS functionality however is supported for the time being @c (XEmacs stable 21.4.14 or higher). Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ended with ESS 12.04-4. To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi). @c ESS has been tested with @c @itemize @bullet @c @item R >=0.49 @c @item S-PLUS 3.3-4, 4.5, 2000, 5.0-1, 6.0-2, 7.0, 8.0 @c @item S4 @c @item SAS >=9.1 @c @item BUGS 0.5, 0.6 @c @item JAGS 1.0 @c @item Stata >=10.0 (command line only) @c @c is anyone still using this? @item XLispStat >=3.50 @c @end itemize @c on the following platforms @c @itemize @bullet @c @item Linux/x86 (all but BUGS) @c @item Solaris/x86 (all but BUGS and S-PLUS) @c @c cannot confirm this right now @item SGI (all) @c @item MS Windows 98/NT/2000/XP (R, S-PLUS, SAS interactive only, and BUGS) @c @item Apple macOS 10.4-5 (R, JAGS, Stata) @c @end itemize @c with the following versions of emacs @c @itemize @bullet @c @item GNU Emacs 20.3-7, 21.1, 21.3-4, 22.1 @c @item XEmacs 21.4.0-8, 21.4.9-13@footnote{ @c require the files.el patch to revert-buffer for the Local Variables @c updating problem}, 21.4.14-15, 21.4.17-22 (betas not supported, but 21.5.23+ may work) @c @c @item GNU Emacs <20.3 and XEmacs <21.0@footnote{These releases of emacs are no @c @c longer supported, so an upgrade is recommended if you plan to use ESS. @c @c If you have GNU Emacs 19.29, see @xref{Unix installation}. Also, note @c @c that the `custom' library bundled with Emacs 19.34 is too _old_, its API is @c @c incompatible with the `new custom' bundled with recent Emacsen. @c @c The `new custom' for Emacs 19.34 is available for download @c @c @uref{ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz, here}.} @c @end itemize ess-17.11/doc/rgui-doc.txt0000644005071500004540000000511313202324173012257 00000000000000;;; Documentation for ess-r-gui.el --- Support for running Rgui on ;;; Windows as an inferior Emacs process ;; Copyright (C) 2008 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Original Author: Richard M. Heiberger ;; Created: 10 Mar 2008 ;; Maintainers: ESS-core This is preliminary documentation for the preliminary release of M-x Rgui, a new ESS function that allows access to the Rgui Console on Windows from an emacs R-mode buffer. Here are the steps. 1. Update your R package 'tcltk2' to 1.0-6 or newer {E.g. inside R: install.packages("tcltk2") # or update.packages(check.built=TRUE) } 2. Start Rgui from an icon and enter these three lines into the R Console library(tcltk2) ## >= 1.0-6 .ess.command <- function() source("c:/temp/ess-tempfile.R", echo=TRUE) tclFun(.ess.command) 3. Set the environment variable R_HOME in emacs, for example with (setenv "R_HOME" "c:/progra~1/R/R-2.6.1") 4. Make sure you have a directory named c:/TEMP 5. Then, load ess-r-gui.el into emacs and type M-x Rgui This will create a new MSDOS command buffer named "*R*" which will allow communication with the Rgui Console. Most ESS keys work. I have tested these C-c C-n works for complete commands. multi-line commands will get a syntax error. C-c C-c works for lines surrounded by a blank line at top and bottom. C-c C-r works for a highlighted region. C-c C-v works for help The technology is similar (not identical) to the technology I used in connecting to the S-Plus Gui on Windows. In Rgui I send the higlighted lines to a file and then use the execdde.exe from tcltk2 to source() the lines. The source() function suppresses intermediate blank lines and trailing comments. When the seven lines below are sourced, only lines 1,2,4,5,6 are echoed. Lines 3 and 7 are not echoed. This means that well-commented user source code will not have complete comments in the output transcript in the Console. ## comment 1 123 ## comment 4 456 ## comment 7 Possible improvements 1. Duncan suggested I write my own ess.source to echo all lines. That is another project for another day. 2. Currently M-x Rgui connects to an existing Rgui that has loaded the tcltk2 package. It should be easy to detect whether such a process is running and start one if not. 3. I would like single line of a multi-line command to be sent over with a series of C-c C-n, as works for other R and S-Plus interfaces. It can't be done as long as the R source() command is used. ess-17.11/doc/rmh-talk.tex0000644005071500004540000002705113202324173012253 00000000000000%% Slides given at S-PLUS Users Conference, October 1997, by RMH. \documentclass[12pt]{article} %latex2e \usepackage{slverb} %latex2e %\documentstyle[12pt]{article} %latex 2.09 % Warning: do not compress blanks into tabs. % It will destroy the spacing in the S functions in the Example environment. %\newfont{\sltt}{cmsltt10 scaled\magstep3} % load slant tt font Large \newfont{\sltt}{cmsltt10 scaled\magstep5} % load slant tt font Huge %duplicate for Huge \newfont{\slttH}{cmsltt10 scaled\magstep5} % load slant tt font Huge \newfont{\ttHuge}{cmtt12 scaled\magstep4} % load tt font Huge \newfont{\itHuge}{cmti12 scaled\magstep4} % load italic font Huge \newcommand{\LB}{{\tt\char'173}} % \tt { \newcommand{\RB}{{\tt\char'175}} % \tt } \newcommand{\BS}{{\tt\char'134}} % \tt \ \newcommand{\HH}{{\tt\char'043}} % \tt # %\newcommand{\slLB}{{\sltt\char'173}} % \sltt { %\newcommand{\slRB}{{\sltt\char'175}} % \sltt } %\newcommand{\slBS}{{\sltt\char'134}} % \sltt \ %\newcommand{\slHH}{{\sltt\char'043}} % \sltt # \newcommand{\slLBH}{{\slttH\char'173}} % \slttH { \newcommand{\slRBH}{{\slttH\char'175}} % \slttH } \newcommand{\slBSH}{{\slttH\char'134}} % \slttH \ \newcommand{\slHHH}{{\slttH\char'043}} % \slttH # % These commands give the stated character in the correct font in LaTeX. % Beware of spacing in the "Example" environment, where spaces are significant: % "\LB{}contents\RB" produces "{contents}" % "\LB contents \RB" produces "{ contents }" \newcommand{\hlinefill}{\mbox{\rule{0pt}{1ex}}\hrulefill} \pagestyle{empty} \topskip -1in \topmargin -1in \textheight 7.5in \raggedbottom \textwidth 10in \parindent 0in \oddsidemargin -.5in \special{landscape} \newcommand{\la}{{\rm\Huge$\leftarrow$}} \newcommand{\mc}[1]{\multicolumn{2}{l}{#1}} \newcommand{\marpar}[1]{\marginpar{\raggedright#1}} \newcommand{\Twiddle}{$\sim$} %10pt %\newenvironment{exsf}{\begin{list}{}{\setlength{\leftmargin}{\parindent}}\item[]\small\sf}{\end{list}} %12pt %\newenvironment{exsf}{\begin{list}{}{\setlength{\leftmargin}{\parindent}}\item[]\small\sf\boldmath}{\end{list}} %12pt Huge \newenvironment{exsf}{\begin{list}{}{\setlength{\leftmargin}{\parindent}}\item[]\sf\boldmath}{\end{list}} \newcommand{\s}[1]{\mbox{\protect\small\sf#1}} \newcommand{\msf}[1]{\mbox{\tiny\sf #1}} \newcommand{\msm}[1]{\mbox{\scriptsize$#1$}} %\renewcommand{\topfraction}{1.} %\renewcommand{\bottomfraction}{0.} %\renewcommand{\textfraction}{0.} %\renewcommand{\floatpagefraction}{1.} %\renewcommand{\floatsep}{0pt} %\renewcommand{\textfloatsep}{0pt} %\setcounter{topnumber}{25} %\setcounter{bottomnumber}{0} %\setcounter{totalnumber}{25} %\renewcommand{\dbltopfraction}{1.} %\renewcommand{\dblfloatpagefraction}{1.} %\renewcommand{\dblfloatsep}{0pt} %\renewcommand{\dbltextfloatsep}{0pt} %\setcounter{dbltopnumber}{25} \newcommand{\shortspace}{ \setlength{\topsep}{0in} \setlength{\itemsep}{0in} \setlength{\parsep}{0in} \setlength{\parskip}{0in} } \begin{document} \Huge \parskip=1ex \begin{center} \Huge ESS-mode and S-Plus\\ Richard M. Heiberger\\[1ex] based on joint work with\\ A.J. Rossini(U South Carolina),\\ Kurt Hornik(TU-Wien), and Martin Maechler (ETHZ).\\[2ex] Thanks also to\\ Doug Bates, Ed Kademan, Frank Ritter (initial versions),\\ and David Smith (3.x, 4.x)\\[3ex] Richard M. Heiberger\\[.4ex] Temple University\\[.4ex] Philadelphia, PA 19122-2585\\[.4ex] {\sf rmh@astro.ocis.temple.edu}\\[2ex] S-PLUS Users Conference, Seattle, October 1997 \end{center} \newpage \begin{center}Abstract\end{center} ESS [Emacs Speaks Statistics] (formerly S-mode) is a a GNU Emacs package for running S(plus), R, X-LispStat, SAS and potentially other interactive `statistical' languages in an `inferior' buffer, editing source code in these languages and interacting with the running program. This talk will discuss the capabilities and advantages of using ESS as the primary interface to Splus. I am talking about the version which will be released in November 1997 as ESS-5.0.\\ \hspace*{2ex}{\sf http://franz.stat.wisc.edu/pub/ESS/ESS-5.0.tar.gz}\\ \hspace*{2ex}{\sf ftp://franz.stat.wisc.edu/pub/ESS/ESS-5.0.tar.gz}\\ The previous stable version was 4.8 in {\sf S-mode-4.8.MM6.XE2.tar.gz} \newpage What is S-Plus What is EMACS What is ESS-mode Why should I use ESS-mode with S-Plus Other features in ESS-mode \newpage \begin{itemize} \item What is S-Plus? The best, most expressive, most fun, most powerful environment and program for designing methods for statistical analysis of data and for displaying and analyzing data. \newpage \item What is EMACS? A text editor that is fully configurable and extensible, can work with many files simultaneously, interacts with the computer operating system and other executing processes, has language specific customizations, and can indeed do anything (the previous edition iconized to the Kitchen Sink). In addition to S, Emacs has modes designed for \TeX, \LaTeX, fortran, c, lisp, text, directories, telnet, rlogin, terminal emulators, nroff, pascal, c++, ada, asm, etc. Mode customizations include indentation patterns, syntactic highlighting, comment structure, and interaction with the program that uses the file as input. \newpage \item What is ESS-mode? A package written in emacs which is designed to work with Statistical software. The initial development under the name S-mode was designed for S. It has been extended to dialects of S (S-Plus, S4, R) and now to other statistical packages (SAS, Xlispstat). With the extension came the name change to ESS-mode (Emacs Speaks Statistics). There are three primary components to ESS \begin{description} \item [S-mode] for editing {\tt myfile.s} and submitting individual lines and paragraphs of S code to the running S process. \item [inferior-ess-mode] for executing an S process inside an emacs buffer. \item [S-transcript-mode] for reviewing and possibly re-executing the transcript of a previous S process. \end{description} \item Why should I use ESS-mode with S-Plus? It will improve your productivity. \newpage {\bf S-mode.} Automatic syntactic indentation and highlighting of source \vspace*{-.5ex} { \underline{\slttH \slHHH\slHHH as typed -- too long. Line is folded}\\ {\tt case0701 <- read.table(file={\slttH'case0701.asc'}, header\BS} \\ {\tt =\underline{T})}\\ \vspace*{.0ex} \underline{\slttH{\slHHH\slHHH insert line break, syntactic indentation lost}}\\ \tt{case0701 <- read.table(file={\slttH'case0701.asc'},}\\ \tt{header=\underline{T})}\\ \vspace*{.0ex} \underline{\slttH{\slHHH\slHHH automatic indentation at right parenthesis level}}\\ \tt{case0701 <- read.table(file={\slttH'case0701.asc'},}\\ \tt\verb+ header=+\underline{T})\\ \vspace*{.0ex} Here by font, on a terminal by color.\\ \underline{\slttH{\slHHH\slHHH comments}}~~~~~~~{\rm underlined italic}\\ {\slttH"quoted strings"}~{\rm italic}\\ \underline{keywords}~~~~~~~~~{\rm underlined} } \newpage {\bf S-mode.} Fill-paragraph understands comments. \vspace*{2ex} Too long and folded.\\ \underline{\slttH\slHHH\slHHH~Sometimes statements are complicated with many}\BS\\ \underline{\slttH levels of}\\ \underline{\slttH\slHHH\slHHH~ parentheses. ESS gets the indentation right.} \vspace*{3ex} Fill-paragraph broke lines evenly and generated the comment symbols.\\ \underline{\slttH\slHHH\slHHH~Sometimes statements are complicated with}\\ \underline{\slttH\slHHH\slHHH~many levels of parentheses. ESS gets the}\\ \underline{\slttH\slHHH\slHHH~indentation right.} \newpage {\bf S-mode.} Detects unbalanced parentheses \vspace*{2ex} \underline{\slttH\slHHH\slHHH~Complicated statement} {\ \tt if ((abs(end(x) + tspar(x)["deltat"] - start(y))}\\ {\ \tt \hspace*{3em}< eps) \&\&}\\ {\ \tt \hspace*{2.5em}(frequency(x) == frequency(y)) \&\&}\\ {\ \tt \hspace*{2.5em}\fbox{\slttH(}(length(units(x))==0) ||}\\ {\ \tt \hspace*{3em}(length(units(y))==0) ||}\\ {\ \tt \hspace*{3em}(units(x) == units(y))\fbox{\slttH]})} \vspace*{2ex} On a color display screen the unbalanced parentheses are bright purple. \vspace*{2ex} Syntactic highlighting simplifies detection of unbalanced\\ quotation marks. {\tt tmp <- f(x, {\slttH"this is a string, y, z)}} \newpage {\bf inferior-ess-mode.} Evaluating lines of S source Program statements and function definitions can be developed in an editing window that is NOT the same as the executing S process. The lines are sent to S with keyboard commands. \hlinefill \begin{verbatim} lm( y ~ x, data=mydata) \end{verbatim} \begin{slverbatim} --**-Emacs: test.s (ESS[S] [none])--L1--All------ \end{slverbatim} \begin{verbatim} > lm( y ~ x, data=mydata) Error: Object "mydata" not found Dumped \end{verbatim} \begin{slverbatim} --**-Emacs: *S+3:1* (iESS [S+3:1]: run)--L6--All-- \end{slverbatim} \hlinefill Errors are corrected in the editing window and resent. \newpage Errors are corrected in the editing window and resent. \hlinefill \begin{verbatim} lm( y ~ x, data=myrealdata) \end{verbatim} \begin{slverbatim} --**-Emacs: test.s (ESS[S] [none])--L1--All------ \end{slverbatim} \begin{verbatim} > lm( y ~ x, data=mydata) Error: Object "mydata" not found Dumped > lm( y ~ x, data=myrealdata) \end{verbatim} \begin{slverbatim} --**-Emacs: *S+3:1* (iESS [S+3:1]: run)--L6--All-- \end{slverbatim} \hlinefill The corrected {\tt test.s} is now a permanent record of the commands that are needed. This form of interaction between the editing process and the S execution is usually the best way to develop a set of functions. \newpage {\bf inferior-ess-mode.} The session file is always available. The entire S session is in a buffer and can be be searched, edited, reviewed, saved during the current session. Previous results never run off the top of the screen and are never subject to arbitrary line restrictions. The buffer containing the S session transcript can be saved as a file. The file can be revisited later for editing into a report or handout. The file can be brought back into a buffer in S-transcript-mode and used as the base for further development. \newpage {\bf S-transcript-mode.} The transcript of a previous S session can be brought back and used as model for further development. When the cursor is placed on any line of a multi-line command, the entire command can be sent over to any relevant active inferior S-process with a single keystroke. \begin{verbatim} > xyplot(data ~ voltage | power, data=time.powers, + scales=list(y=list(relation="free")), + ylab="powers of time", + main="case0802 ladder of powers") > \end{verbatim} Once the command works correctly, it can be cleaned mechanically with the {\tt ess-transcript-clean-region} function. \begin{verbatim} xyplot(data ~ voltage | power, data=time.powers, scales=list(y=list(relation="free")), ylab="powers of time", main="case0802 ladder of powers") \end{verbatim} \newpage \item Other features in ESS-mode \begin{itemize} \item Help files go to their own buffer. Many can be viewed simultaneously. \item Several different instantiations of the same or different dialects of S (or other statistical program) can be controlled simultaneously through the same emacs process. \item Multiple S source files can be developed simultaneously. \item ESS-mode recognizes functions, multi-line statements, highlighted regions, parenthetical expressions. \item When an error is detected in a source file, ESS switches the display to the file and places the cursor on the line where the error was detected. \item Object-name-completion. \item Menu access. \end{itemize} \end{itemize} \end{document} ess-17.11/doc/slverb.sty0000644005071500004540000000460213202324173012045 00000000000000\message{slverbatim,} % **************************************** % * slverbATIM * % **************************************** % % The slverbatim environment uses the fixed-width \sltt font, turns blanks into % spaces, starts a new line for each carrige return (or sequence of % consecutive carriage returns), and interprets EVERY character literally. % I.e., all special characters \, {, $, etc. are \catcode'd to 'other'. % % The command \slverb produces in-line slverbatim text, where the argument % is delimited by any pair of characters. E.g., \slverb #...# takes % '...' as its argument, and sets it slverbatim in \sltt font. % % The *-variants of these commands is the same, except that spaces % print as the TeXbook's space character instead of as blank spaces. {\catcode`\^^M=13 \gdef\@gobblecr{\@ifnextchar {\@gobble}{\ignorespaces}}} {\catcode`\ =\active\gdef\@vobeyspaces{\catcode`\ \active \let \@xobeysp}} % Definition of \@xobeysp chaned on 19 Nov 86 from % \def\@xobeysp{\leavevmode{} } % to prevent line breaks at spaces. Change suggested by % Nelson Beebe % \def\@xobeysp{\leavevmode\penalty10000\ } \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|@xslverbatim#1\end{slverbatim}[#1|end[slverbatim]] |gdef|@sxslverbatim#1\end{slverbatim*}[#1|end[slverbatim*]] |endgroup \def\@sslverbatim{\obeyspaces\@slverbatim} \def\@gobble#1{} \def\@slverbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi \leftskip\@totalleftmargin\rightskip\z@ \parindent\z@\parfillskip\@flushglue\parskip\z@ \@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par} \obeylines \sltt \catcode``=13 \@noligs \let\do\@makeother \dospecials} \def\slverbatim{\@slverbatim \frenchspacing\@vobeyspaces \@xslverbatim} \let\endslverbatim=\endtrivlist \@namedef{slverbatim*}{\@slverbatim\@sxslverbatim} \expandafter\let\csname endslverbatim*\endcsname =\endtrivlist \def\@makeother#1{\catcode`#112\relax} \def\slverb{\begingroup \catcode``=13 \@noligs \sltt \let\do\@makeother \dospecials \@ifstar{\@sslverb}{\@slverb}} \def\@sslverb#1{\def\@tempa ##1#1{##1\endgroup}\@tempa} \def\@slverb{\obeyspaces \frenchspacing \@sslverb} %% \@noligs prevents ?` and !` from being treated as ligatures %% added 19 April 86 \begingroup \catcode``=13 \gdef\@noligs{\let`=\@lquote} \endgroup \def\@lquote{{\kern\z@}`} ess-17.11/doc/stabilty.texi0000644005071500004540000000056713202324173012543 00000000000000All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated! ess-17.11/ess-autoloads.el0000644005071500004540000000516213202324173012351 00000000000000;;; ess-autoloads.el --- Emacs Speaks Statistics: statistical programming within Emacs ;; Copyright (C) 2012 Donald E. Curtis ;; Copyright (C) 2014 The ESS Core Team ;; Original Author: Donald E. Curtis ;; Created: March 5, 2012 ;; Maintainers: ESS-core ;; Keywords: autoload, startup, configuration, package.el ;; Summary: essential autoloads for ESS ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;; In short: you may use this code any way you like, as long as you ;; don't charge money for it, remove this notice, or hold anyone liable ;; for its results. ;;; Commentary: ;;; This file is just a wrapper so that ESS will be more `package.el' ;;; friendly. This is just a list of functions that require loading ;;; of ESS through `ess-site'. ;;; Code: ;;*;; Requires and autoloads ;;;===================================================== ;;; (when (boundp 'load-path) (add-to-list 'load-path (file-name-as-directory (expand-file-name "lisp" (file-name-directory load-file-name))))) (autoload 'R "ess-site" "Call 'R', the 'GNU S' system from the R Foundation. Optional prefix (C-u) allows to set command line arguments, such as --vsize. This should be OS agnostic. If you have certain command line arguments that should always be passed to R, put them in the variable `inferior-R-args'." t) (autoload 'R-mode "ess-site.el" "Major mode for editing R source." t) (autoload 'r-mode "ess-site.el" "Major mode for editing R source." t) (add-to-list 'auto-mode-alist '("\\.R$" . R-mode)) (autoload 'S "ess-site" "Call 'S'." t) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-autoloads.el ends here ess-17.11/etc/0000755005071500004540000000000013202324211010064 500000000000000ess-17.11/etc/BACKBUG5.BAT0000644005071500004540000000102213202324173011461 00000000000000@echo off rem ESS[BUGS]: 02/18/2004 rem runs BUGS taking commands from command file if not "%2"=="" goto 20 if not "%1"=="" goto 10 echo usage: backbug5 [default_output_name] command_file goto 40 :10 if exist bugs.bog attrib -r bugs.bog bugs05.exe bugs.buf bugs.bog bugs.out bugs.ind bugs1.out bugs1.ind %1 copy /y bugs.log bugs.bog attrib +r bugs.bog goto 40 :20 set one=1 if exist %1.bog attrib -r %1.bog bugs05.exe %1.buf %1.bog %1.out %1.ind %1%one%.out %1%one%.ind %2 copy /y %1.log %1.bog attrib +r %1.bog goto 40 :40 ess-17.11/etc/BACKBUGS.BAT0000755005071500004540000000107213202324173011527 00000000000000@echo off rem ESS[BUGS]: 02/13/2003 rem runs BUGS taking commands from command file if not "%3"=="" goto 30 if not "%2"=="" goto 20 if not "%1"=="" goto 10 echo usage: backbugs [[number_of_bins] default_output_name] command_file goto 40 :10 bugs0603.exe 32 bugs %1 if exist bugs.bog attrib -r bugs.bog copy /y bugs.log bugs.bog attrib +r bugs.bog goto 40 :20 bugs0603.exe 32 %1 %2 if exist %1.bog attrib -r %1.bog copy /y %1.log %1.bog attrib +r %1.bog goto 40 :30 bugs0603.exe %1 %2 %3 if exist %2.bog attrib -r %2.bog copy /y %2.log %2.bog attrib +r %2.bog :40 ess-17.11/etc/C-cC-c-probl.R0000644005071500004540000001134113202324173012177 00000000000000foobar <- function(...) {} rm(list=ls()) ##--------> consequence of the above experiments: ## the 2nd form is numerically "uniformly better" than the first ##--------> 2011-05-27: Change Frank's psiInv() to ## psiInv = function(t,theta) ## -log1p(exp(-theta)*expm1((1-t)*theta)/expm1(-theta)) ##--- In the following block, in the first line, C-c C-c did *NOT* behave th <- 48 # now do ls() and see what happened ... the horror !!! d <- 3 cpF <- list("Frank", list(th, 1:d)) cop <- acF <- cpF$copula ### Here, the bug (12.09-2, e.g.) has been that ### the function beginning is not found reliably: ### C-M-q -> should go to end; then C-M-a should go back to beginning (here) mplot4 <- function(x, vList, xvar, cvar, rvar, log = "", verbose=FALSE, show.layout=verbose) { dn <- dimnames(x) ## the variable displayed in one plot (with different colors): v <- setdiff(names(dn), c(xvar, cvar, rvar)) stopifnot(length(v) == 1, 1 <= (nv <- length(dn[[v]])), nv <= length(pcol), length(pspc) == 2, length(spc) == 2, length(axlabspc) == 2, length(labspc) == 2, length(auxcol) == 4) v.col <- colorRampPalette(pcol, space="Lab")(nv) # colors for v ## permute to know the component indices: x <- aperm(x, perm=c(rvar, cvar, v, xvar)) if(is.null(xlab)) # default: the expression from varlist xlab <- vList[[xvar]]$expr z <- as.numeric(vList[[xvar]]$value) # pick out different x values zrange <- range(z) # for forcing the same x axis limits per row ## set up the grid layout nx <- length(dn[[cvar]]) # number of plot columns nx. <- nx+1+(nx-1)+1 # +1: for y axis label; +(nx-1): for gaps; +1: for row labels ny <- length(dn[[rvar]]) # number of plot rows ny. <- ny+1+(ny-1)+1 # +1: for column labels; +(ny-1): for gaps; +1: for x axis label ## plot settings, restored on exit opar <- par(no.readonly=TRUE); on.exit(par(opar)) plot.new() # start (empty) new page with 'graphics' gl <- grid.layout(nx., ny., ## units in npc as for pdf(); no square plotting region otherwise: default.units="npc", widths=c(axlabspc[1], rep(c(pspc[1], spc[1]), nx-1), pspc[1], labspc[1]), heights=c(labspc[2], rep(c(pspc[2], spc[2]), ny-1), pspc[2], axlabspc[2])) if(show.layout) grid.show.layout(gl, vp=viewport(width=1.25, height=1.25)) pushViewport(viewport(layout=gl)) # use this layout in a viewport ## --- plot data --- for(i in 1:nx) { # rows i. <- 2*i # column index in layout (for jumping over gaps) if(verbose) cat(sprintf("plot row %d (%d): [columns:] ", i, i.)) yrange <- range(x[i,,,]) # for forcing the same y axis limits per row for(j in 1:ny) { # columns j. <- 2*j # row index in layout (for jumping over gaps) if(verbose) cat(sprintf("%d (%d) ", j, j.)) pushViewport(viewport(layout.pos.row=i., layout.pos.col=j.)) ## plot grid.rect(gp=gpar(col=NA, fill=auxcol[3])) # background ## start a 'graphics' plot par(plt = gridPLT()) ## Hmm, this is not really useful for debugging: ## rp <- tryCatch(par(plt=gridPLT()), error = function(e)e) ## if(inherits(rp, "error")) { ## cat("\n *** ERROR in mplot() :\n", rp$message,"\n"); return(gl) ## } par(new=TRUE) # always do this before each new 'graphics' plot ## set up coordinate axes: plot(zrange, yrange, log=log, type="n", ann=FALSE, axes=FALSE) ## background grid: grid(col=auxcol[4], lty="solid", lwd=grid.lwd, equilogs=FALSE) ## plot corresponding points/lines for(k in 1:nv) points(z, x[i,j,k,], type="b", col=v.col[k]) ## axes c1 <- auxcol[1] if(i == nx) # x axes axis(1, lwd=ax.lwd, col=NA, col.ticks=c1, col.axis=c1) if(j == 1) { # y axes if(packageVersion("sfsmisc") >= "1.0-21") ## allow for adjusting colors of small ticks eaxis(2, lwd=ax.lwd, col=NA, col.ticks=c1, col.axis=c1, small.args=list(col=NA, col.ticks=c1, col.axis=c1)) else eaxis(2, lwd=ax.lwd, col=NA, col.ticks=c1, col.axis=c1) } upViewport() ## column labels if(i == 1) { pushViewport(viewport(layout.pos.row=1, layout.pos.col=j.)) grid.rect(gp=gpar(col=NA, fill=auxcol[2])) grid.text(parse(text=dn[[cvar]][j]), x=0.5, y=0.5, gp=gpar(cex=tx.cex)) upViewport() } ## row labels if(j == 2) { pushViewport(viewport(layout.pos.row=i., layout.pos.col=nx.)) grid.rect(gp=gpar(col=NA, fill=auxcol[2])) grid.text(parse(text=dn[[rvar]][i]), x=0.5, y=0.5, gp=gpar(cex=tx.cex), rot=-90) upViewport() } }## for(j ..) if(verbose) cat("\n") }## for(i ..) ## legend pushViewport(viewport(layout.pos.row=ny., layout.pos.col=2:(ny.-1))) ll <- 0.01 # line length ## [... ... made example smaller ... ESS-bug still shows ....] upViewport() invisible(gl) } ess-17.11/etc/ESSR/0000755005071500004540000000000013202324174010650 500000000000000ess-17.11/etc/ESSR/BUILDESSR0000755005071500004540000000106113202324173012047 00000000000000#!/usr/bin/Rscript ## -*- mode: R -*- ## code to build ESSR environemnt. ## Assume that current directory is etc/ESSR ## run "./BUILDESSR destdir" to create ESSR_.rda in destdir ## where is picked form ./VERSION file args <- commandArgs(TRUE) dir <- if(length(args)) args[[1]] else "." ver <- scan("./VERSION", what = "character", quiet = TRUE) rda_file <- sprintf("%s/ESSR_%s.rda", dir, ver) ## exactly as in inferior-ess-r-load-ESSR in ess-r-d.el source('./R/.load.R', local=TRUE) ESSR <- load.ESSR('./R/') save(ESSR, file = rda_file) ess-17.11/etc/ESSR/LOADREMOTE0000644005071500004540000000146513202324173012153 00000000000000## -*- mode: R -*- ## loading code which is first sent to R on remote sessions local({ curver <- '%s' ## MM: ok for Windows? ## VS: Should be fine (who is using win remote anyways?) .c.dir <- '~/.config/ESSR' verfile <- file.path(.c.dir, 'VERSION') envfile <- file.path(.c.dir, 'ESSR.rda') ver <- if(file.exists(verfile)) scan(verfile, what = "string") else "0.0" tryCatch({ if(ver < curver) { url <- paste('https://vitalie.spinu.info/ESSR/ESSR_', curver, '.rda', sep = '') if(!file.exists(.c.dir)) dir.create(.c.dir, recursive = TRUE) utils::download.file(url, envfile) cat(curver, file = verfile) } load(envfile) attach(ESSR) print(TRUE) } , error = function(e) print(FALSE)) }) ess-17.11/etc/ESSR/R/0000755005071500004540000000000013202324174011051 500000000000000ess-17.11/etc/ESSR/R/.basic.R0000644005071500004540000001030013202324173012244 00000000000000#### Essential functionality needed by ESS ## Should work on *all* vesions of R. ## Do not use _ in names, nor :: , nor 1L etc, as they ## cannot be parsed in old R versions ## loading ESSR.rda might fail, so re-assign here: .ess.Rversion <- if( exists("getRversion", mode="function") ){ getRversion() } else { paste(R.version$major, R.version$minor, sep=".") } .ess.R.has.utils <- (.ess.Rversion >= "1.9.0") .ess.utils.name <- paste("package", if(.ess.Rversion >= "1.9.0") "utils" else "base", sep = ":") ## Instead of modern utils::help use one that works in R 1.0.0: .ess.findFUN <- get("find", .ess.utils.name) ### HELP .ess.help <- function(..., help.type = getOption("help_type")) { if (is.null(help.type)) { help.type <- "text" } ## - get("help", ..) searching in global env works with devtools redefines ## - Redefining to .ess.help this way is necessary because ## utils:::print.help_files_with_topic (used internally when there's ## more than one a package) uses the quoted call ## MM: don't understand; more specifically? .ess.help <- function(...) { do.call(get("help", envir = .GlobalEnv), list(...)) } if (.ess.Rversion > "2.10") { ## Abbreviating help_type to avoid underscore .ess.help(..., help = help.type) } else { .ess.help(..., htmlhelp = help.type == "html") } } .ess.getHelpAliases <- function(){ readrds <- if(.ess.Rversion >= '2.13.0') readRDS else .readRDS rds.files <- paste(searchpaths(), "/help/aliases.rds", sep = "") unlist(lapply(rds.files, function(f){ if( file.exists(f) ) try(names(readrds(f))) }), use.names = FALSE) } ### SOURCING .ess.eval <- function(string, visibly = TRUE, output = FALSE, max.deparse.length = 300, file = tempfile("ESS"), local = NULL) { if (is.null(local)) { local <- if (.ess.Rversion > '2.13') parent.frame() else FALSE } ## create FILE, put string into it. Then source. ## arguments are like in source and .ess.source cat(string, file = file) ## The following on.exit infloops in R 3.3.0 ## https://github.com/emacs-ess/ESS/issues/334 ## https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16971 ## So we are cleanning it in .ess.source instead. ## on.exit(file.remove(file)) .ess.source(file, visibly = visibly, output = output, max.deparse.length = max.deparse.length, local = local, fake.source = TRUE) } .ess.strip.error <- function(msg, srcfile) { pattern <- paste0(srcfile, ":[0-9]+:[0-9]+: ") sub(pattern, "", msg) } .ess.file.remove <- function(file){ if (base::file.exists(file)) base::file.remove(file) else FALSE } .ess.source <- function(file, visibly = TRUE, output = FALSE, max.deparse.length = 300, local = NULL, fake.source = FALSE, keep.source = TRUE, message.prefix = "") { if (is.null(local)) { local <- if (.ess.Rversion > "2.13") parent.frame() else FALSE } ss <- if (.ess.Rversion >= "2.8") base::source else function(..., keep.source) base::source(...) on.exit({ if (fake.source) .ess.file.remove(file) else cat(sprintf("%sSourced file %s\n", message.prefix, file)) }) out <- ss(file, echo = visibly, local = local, print.eval = output, max.deparse.length = max.deparse.length, keep.source = keep.source) ## Return value for org-babel invisible(out$value) } if(.ess.Rversion < "1.8") ## (works for "1.7.2"): bquote() was new in 1.8.0 bquote <- function(expr, where=parent.frame()){ unquote <- function(e) if (is.pairlist(e)) as.pairlist(lapply(e, unquote)) else if (length(e) <= 1) e else if (e[[1]] == as.name(".")) eval(e[[2]], where) else as.call(lapply(e, unquote)) unquote(substitute(expr)) } ## Local Variables: ## eval: (ess-set-style 'RRR t) ## End: ess-17.11/etc/ESSR/R/.load.R0000644005071500004540000000343713202324173012117 00000000000000## Do not use _ in names, nor :: as they cannot be parsed in old R versions ## load .base.R and all other files into ESSR environment; then attach ESSR load.ESSR <- function(dir){ .source <- if(any("keep.source" == names(formals(sys.source)))) sys.source else function(..., keep.source) sys.source(...) Rver <- if(exists("getRversion", mode="function")) getRversion() else paste(R.version$major, R.version$minor, sep=".") oldR <- Rver <= "1.3.0" ESSR <- if(oldR) ## really old library() revert order a bit attach(NULL, name = "ESSR") else if(length(nn <- names(formals(new.env))) && any(nn == "parent")) new.env(parent = if(Rver >= "1.9.0") getNamespace("utils") else .BaseNamespaceEnv) else new.env() assign(".ess.Rversion", Rver, envir = ESSR) ESSRver <- scan(paste(dirname(dir), "/VERSION", sep = ""), what = "character", quiet = TRUE) assign(".ess.ESSRversion", ESSRver, envir = ESSR) ## .basic.R: try(.source(paste(dir,'/.basic.R', sep = ""), envir = ESSR, keep.source = FALSE)) ## all others try(*) as it will fail in old R if(!oldR) # no sense if(oldR) for( f in dir(dir, pattern='\\.R$', full.names=TRUE) ) try(.source(f, envir = ESSR, keep.source = FALSE)) if(Rver >= "2.4.0") attach(ESSR) else if(!oldR) { ## borrow from older library() e <- attach(NULL, name = "ESSR") .Internal(lib.fixup(ESSR, e)) } else { ## if(oldR), use as in that old library(): .Internal(lib.fixup(ESSR, .GlobalEnv)) } ## BUILDESSR needs this: invisible(ESSR) } ## Local Variables: ## eval: (ess-set-style 'RRR t) ## End: ess-17.11/etc/ESSR/R/completion.R0000644005071500004540000001005613202324174013267 00000000000000## Do *NOT* use 1L -- it gives parse errors in historical versions of R .ess_funargs <- function(funname) { if(.ess.Rversion > '2.14.1') { ## temporarily disable JIT compilation and errors comp <- compiler::enableJIT(0) op <- options(error=NULL) on.exit({ options(op); compiler::enableJIT(comp) }) } ## don't remove; really need eval(parse( here!! fun <- tryCatch(eval(parse(text=funname)), error=function(e) NULL) ## also works for special objects containing @:$ etc if(is.function(fun)) { special <- grepl('[:$@[]', funname) args <- if(!special){ fundef <- paste(funname, '.default',sep='') do.call('argsAnywhere', list(fundef)) } if(is.null(args)) args <- args(fun) if(is.null(args)) args <- do.call('argsAnywhere', list(funname)) fmls <- formals(args) fmls_names <- names(fmls) fmls <- gsub('\"', '\\\"', gsub("\\", "\\\\", as.character(fmls),fixed = TRUE), fixed=TRUE) args_alist <- sprintf("'(%s)", paste("(\"", fmls_names, "\" . \"", fmls, "\")", sep = '', collapse = ' ')) allargs <- if(special) fmls_names else tryCatch(gsub('=', '', utils:::functionArgs(funname, ''), fixed = TRUE), error=function(e) NULL) allargs <- sprintf("'(\"%s\")", paste(allargs, collapse = '\" "')) envname <- environmentName(environment(fun)) if(envname == "R_GlobalEnv") envname <- "" cat(sprintf('(list \"%s\" %s %s)\n', envname, args_alist, allargs)) } } .ess_get_completions <- function(string, end){ if(.ess.Rversion > '2.14.1'){ comp <- compiler::enableJIT(0) op <- options(error=NULL) on.exit({ options(op); compiler::enableJIT(comp) }) } utils:::.assignLinebuffer(string) utils:::.assignEnd(end) utils:::.guessTokenFromLine() utils:::.completeToken() c(get('token', envir=utils:::.CompletionEnv), utils:::.retrieveCompletions()) } .ess_arg_help <- function(arg, func){ op <- options(error=NULL) on.exit(options(op)) fguess <- if(is.null(func)) get('fguess', envir=utils:::.CompletionEnv) else func findArgHelp <- function(fun, arg){ file <- help(fun, try.all.packages=FALSE)[[1]] hlp <- utils:::.getHelpFile(file) id <- grep('arguments', tools:::RdTags(hlp), fixed=TRUE) if(length(id)){ arg_section <- hlp[[id[[1]]]] items <- grep('item', tools:::RdTags(arg_section), fixed=TRUE) ## cat('items:', items, fill=TRUE) if(length(items)){ arg_section <- arg_section[items] args <- unlist(lapply(arg_section, function(el) paste(unlist(el[[1]][[1]], TRUE, FALSE), collapse=''))) fits <- grep(arg, args, fixed=TRUE) ## cat('args', args, 'fits', fill=TRUE) if(length(fits)) paste(unlist(arg_section[[fits[1]]][[2]], TRUE, FALSE), collapse='') } } } funcs <- c(fguess, tryCatch(methods(fguess), warning=function(w) {NULL}, error=function(e) {NULL})) if(length(funcs) > 1 && length(pos <- grep('default', funcs))){ funcs <- c(funcs[[pos[[1]]]], funcs[-pos[[1]]]) } i <- 1; found <- FALSE out <- 'No help found' while(i <= length(funcs) && is.null(out <- tryCatch(findArgHelp(funcs[[i]], arg), warning=function(w) {NULL}, error=function(e) {NULL}) )) i <- i + 1 cat('\n\n', as.character(out), '\n') }; ## Local Variables: ## eval: (ess-set-style 'RRR t) ## End: ess-17.11/etc/ESSR/R/debug.R0000644005071500004540000001750713202324174012214 00000000000000### BREAKPOINTS .ESSBP. <- new.env() ### DEBUG/UNDEBUG .ess_find_funcs <- function(env) { objs <- ls(envir = env, all.names = TRUE) objs[sapply(objs, exists, envir = env, mode = 'function', inherits = FALSE)] } .ess_all_functions <- function(packages = c(), env = NULL) { if(is.null(env)) env <- parent.frame() empty <- emptyenv() coll <- list() for(p in packages){ ## package might not be attached try( { objNS <- .ess_find_funcs(asNamespace(p)) objPKG <- .ess_find_funcs(as.environment(paste0('package:', p))) objNS <- setdiff(objNS, objPKG) if(length(objPKG)) coll[[length(coll) + 1]] <- paste0(p, ':::', objNS) }, silent = TRUE) } while(!identical(empty, env)){ coll[[length(coll) + 1]] <- .ess_find_funcs(env) env <- parent.env(env) } grep('^\\.ess', unlist(coll, use.names = FALSE), invert = TRUE, value = TRUE) } .ess_dbg_flag_for_debuging <- function(fname){ all <- utils::getAnywhere(fname) if(length(all$obj) == 0){ msg <- sprintf("No functions names '%s' found", fname) } else { msg <- sprintf("Flagged '%s' for debugging", fname) tryCatch(lapply(all$obj, debug), error = function(e){ msg <- paste0("Error: ", e$message) }) } cat(msg) .ess_mpi_message(msg) } .ess_dbg_getTracedAndDebugged <- function() { packages <- base::.packages() tr_state <- tracingState(FALSE) on.exit(tracingState(tr_state)) generics <- methods::getGenerics() all_traced <- c() for(i in seq_along(generics)){ genf <- methods::getGeneric(generics[[i]], package=generics@package[[i]]) if(!is.null(genf)){ ## might happen !! v.2.13 menv <- methods::getMethodsForDispatch(genf) traced <- unlist(eapply(menv, is, 'traceable', all.names=TRUE)) if(length(traced) && any(traced)) all_traced <- c(paste(generics[[i]],':', names(traced)[traced],sep=''), all_traced) tfn <- getFunction(generics[[i]], mustFind=FALSE, where = .GlobalEnv) if(!is.null(tfn ) && is(tfn, 'traceable')) # if the default is traced, it does not appear in the menv :() all_traced <- c(generics[[i]], all_traced) } } debugged_pkg <- unlist(lapply(packages, function(pkgname){ ns <- asNamespace(pkgname) funcs <- .ess_find_funcs(ns) dbged <- funcs[unlist(lapply(funcs, function(f){ isdebugged(get(f, envir = ns, inherits = FALSE)) }))] if(length(dbged)) paste0(pkgname, ':::`', dbged, '`') })) env <- parent.frame() ## traced function don't appear here. Not realy needed and would affect performance. all <- .ess_all_functions(packages = packages, env = env) which_deb <- lapply(all, function(nm){ ## if isdebugged is called with string it doess find tryCatch(isdebugged(get(nm, envir = env)), error = function(e) FALSE) ## try(eval(substitute(isdebugged(nm), list(nm = as.name(nm)))), silent = T) }) debugged <- all[which(unlist(which_deb, recursive=FALSE, use.names=FALSE))] unique(c(debugged_pkg, debugged, all_traced)) } .ess_dbg_UntraceOrUndebug <- function(name, env = parent.frame()) { tr_state <- tracingState(FALSE) on.exit(tracingState(tr_state)) if( grepl('::', name) ){ ## foo:::bar name eval(parse(text = sprintf('undebug(%s)', name))) }else{ ## name is a name of a function to be undebugged or has a form ## name:Class1#Class2#Class3 for traced methods name <- strsplit(name, ':', fixed = TRUE)[[1]] if( length(name)>1 ){ ## a method fun <- name[[1]] sig <- strsplit(paste(name[-1], collapse=''), '#', fixed=TRUE)[[1]] untrace(fun, signature = sig) }else{ ## function if( is(getFunction(name, where = parent.frame()), 'traceable') ) untrace(name) else if(grepl(":", name)) undebug(name) else undebug(get(name, envir = env)) }} } .ess_dbg_UndebugALL <- function(funcs) { tr_state <- tracingState(FALSE) on.exit(tracingState(tr_state)) env <- parent.frame() invisible(lapply(funcs, function( nm ) { ## ugly tryCatch, but there might be several names pointing to the ## same function, like foo:::bar and bar. An alternative would be ## to call .ess_dbg_getTracedAndDebugged each time but that might ## be ery slow try(.ess_dbg_UntraceOrUndebug(nm, env = env), TRUE) })) } ### WATCH .ess_watch_expressions <- list() .ess_watch_eval <- function() { env <- as.environment("ESSR") exps <- get('.ess_watch_expressions', envir = env) if(length(exps) == 0) { ## using old style so this can be parsed by R 1.9.1 (e.g): cat('\n# Watch list is empty!\n', '# a append new expression', '# i insert new expression', '# k kill', '# e edit the expression', '# r rename', '# n/p navigate', '# u/d,U move the expression up/down', '# q kill the buffer', sep="\n") } else { .parent_frame <- parent.frame() .essWEnames <- allNames(exps) len0p <- !nzchar(.essWEnames) .essWEnames[len0p] <- seq_along(len0p)[len0p] for(i in seq_along(exps)) { cat('\n@---- ', .essWEnames[[i]], ' ', rep.int('-', max(0, 35 - nchar(.essWEnames[[i]]))), '-@\n', sep = '') cat(paste('@---:', deparse(exps[[i]][[1]])), ' \n', sep = '') tryCatch(print(eval(exps[[i]], envir = .parent_frame)), error = function(e) cat('Error:', e$message, '\n' ), warning = function(w) cat('warning: ', w$message, '\n' )) } } } .ess_watch_assign_expressions <- function(elist){ assign(".ess_watch_expressions", elist, envir = as.environment("ESSR")) } .ess_log_eval <- function(log_name) { env <- as.environment("ESSR") if(!exists(log_name, envir = env, inherits = FALSE)) assign(log_name, list(), envir = env) log <- get(log_name, envir = env, inherits = FALSE) .essWEnames <- allNames(.ess_watch_expressions) cur_log <- list() .parent_frame <- parent.frame() for(i in seq_along(.ess_watch_expressions)) { capture.output( { cur_log[[i]] <- tryCatch(eval(.ess_watch_expressions[[i]]), envir = .parent_frame, error = function(e) paste('Error:', e$message, '\n'), warning = function(w) paste('warning: ', w$message, '\n')) if(is.null(cur_log[i][[1]])) cur_log[i] <- list(NULL) }) } names(cur_log) <- .essWEnames assign(log_name, c(log, list(cur_log)), envir = env) invisible(NULL) } .ess_package_attached <- function(pack_name){ as.logical(match(paste0("package:", pack_name), search())) } ## magrittr debug_pipe .ess_pipe_browser <- function(x){ if(is.list(x)) evalq({ browser(skipCalls = 2) x }, envir = x) else if(is.environment(x)) ## enclos argumentn has no effect for unclear reason, need to hack eval(bquote({ x <- .(environment()) browser(skipCalls = 2) x }), envir = x) else { browser(skipCalls = 0) x } } ## Local Variables: ## eval: (ess-set-style 'RRR t) ## End: ess-17.11/etc/ESSR/R/misc.R0000644005071500004540000001026413202324174012052 00000000000000.ess_weave <- function(command, file, encoding = NULL){ cmd_symb <- substitute(command) if(grepl('knit|purl', deparse(cmd_symb))) require(knitr) od <- getwd() on.exit(setwd(od)) setwd(dirname(file)) frame <- parent.frame() if(is.null(encoding)) eval(bquote(.(cmd_symb)(.(file))), envir = frame) else eval(bquote(.(cmd_symb)(.(file), encoding = .(encoding))), envir = frame) } .ess_knit <- function(file, output = NULL){ library(knitr) frame <- parent.frame() od <- getwd() on.exit(setwd(od)) setwd(dirname(file)) ## this bquote is really needed for data.table := operator to work correctly eval(bquote(knit(.(file), output = .(output))), envir = frame) } .ess_sweave <- function(file, output = NULL){ od <- getwd() frame <- parent.frame() on.exit(setwd(od)) setwd(dirname(file)) eval(bquote(Sweave(.(file), output = .(output))), envir = frame) } ## Users might find it useful. So don't prefix with .ess. htsummary <- function (x, hlength = 4, tlength = 4, digits = 3) { ## fixme: simplify and generalize snames <- c("mean", "sd", "min", "max", "nlev", "NAs") d <- " " num_sumr <- function(x){ c(f(mean(x, na.rm = TRUE)), f(sd(x, na.rm = TRUE)), f(min(x, na.rm = TRUE)), f(max(x, na.rm = TRUE)), d, f(sum(is.na(x), na.rm = TRUE))) } f <- function(x) format(x, digits = digits) if (is.data.frame(x) | is.matrix(x)) { if (nrow(x) <= tlength + hlength){ print(x) } else { if (is.matrix(x)) x <- data.frame(unclass(x)) ## conversion needed, to avoid problems with derived classes suchs as data.table h <- as.data.frame(head(x, hlength)) t <- as.data.frame(tail(x, tlength)) for (i in 1:ncol(x)) { h[[i]] <- f(h[[i]]) t[[i]] <- f(t[[i]]) } ## summaries sumr <- sapply(x, function(c){ if(is.logical(c)) ## treat logical as numeric; it's harmless c <- as.integer(c) if(is.numeric(c)) num_sumr(c) else if(is.factor(c)) c(d, d, d, d, nlevels(c), sum(is.na(c))) else rep.int(d, length(snames)) }) sumr <- as.data.frame(sumr) row.names(sumr) <- snames dots <- rep("...", ncol(x)) empty <- rep.int(" ", ncol(x)) lines <- rep.int(" ", ncol(x)) df <- rbind(h, ...= dots, t, `_____` = lines, sumr, ` ` = empty) print(df) } } else { cat("head(", hlength, "):\n", sep = "") print(head(x, hlength)) if(length(x) > tlength + hlength){ cat("\ntail(", tlength, "):\n", sep = "") print(tail(x, tlength)) } cat("_____\n") if(is.numeric(x) || is.logical(x)) print(structure(num_sumr(x), names = snames), quote = FALSE) else if(is.factor(x)){ cat("NAs: ", sum(is.na(x), na.rm = TRUE), "\n") cat("levels: \n") print(levels(x)) } } invisible(NULL) } .ess_vignettes <- function(all=FALSE) { vs <- unclass(browseVignettes(all=all)) vs <- vs[sapply(vs, length) > 0] mat2elist <- function(mat){ if(!is.null(dim(mat))){ apply(mat, 1, function(r) sprintf("(list \"%s\")", paste0(gsub("\"","\\\\\"", as.vector(r[c("Title", "Dir", "PDF", "File", "R")])), collapse = "\" \""))) } } cat("(list \n", paste0(mapply(function(el, name) sprintf("(list \"%s\" %s)", name, paste0(mat2elist(el), collapse = "\n")), vs, names(vs)), collapse = "\n"), ")\n") } .ess_Rd2txt <- function(Rd) { fun <- tools::Rd2txt if(length(formals(fun)["stages"]))# newer R version fun(Rd, stages = c("build", "install", "render")) else fun(Rd) } ## Local Variables: ## eval: (ess-set-style 'RRR t) ## End: ess-17.11/etc/ESSR/R/mpi.R0000644005071500004540000000074213202324174011704 00000000000000## simple Message Parsing Inerface .ess_mpi_send <- function(head, ...){ payload <- paste(..., sep = "") cat(sprintf("%s%s", head, payload)) } .ess_mpi_message <- function(msg){ .ess_mpi_send("message", msg) } .ess_mpi_y_or_n <- function(prompt, callback){ .ess_mpi_send("y-or-n", prompt, callback) } .ess_mpi_eval <- function(expr, callback){ .ess_mpi_send("eval", expr, callback) } .ess_mpi_error <- function(msg) { .ess_mpi_send("error", msg) } ess-17.11/etc/ESSR/R/ns-eval.R0000644005071500004540000003572213202324174012472 00000000000000## COMMENT ON S3 METHODS: New S3 methods are not automatically registered. You can ## register them manually after you have inserted method_name.my_class into your ## package environment using ess-developer, like follows: ## ## registerS3method("method_name", "my_class", my_package:::method_name.my_class) ## ## If an S3 methods already exists in a package, ESS-developer will do the right ## thing. ## evaluate the STRING by saving into a file and calling .ess.ns_source .ess.ns_eval <- function(string, visibly, output, package, file = tempfile("ESSDev"), verbose = FALSE, fallback_env = parent.frame()) { cat(string, file = file) on.exit(.ess.file.remove(file)) .ess.ns_source(file, visibly, output, package = package, verbose = verbose, fake.source = TRUE, fallback_env = fallback_env) } ## sourcing FILE into an environment. After having a look at each new object in ## the environment, decide what to do with it. Handles plain objects, functions, ## existing S3 methods, S4 classes and methods. . .ess.ns_source <- function(file, visibly, output, expr, package = "", verbose = FALSE, fake.source = FALSE, fallback_env = parent.frame()) { oldopts <- options(warn = 1) on.exit(options(oldopts)) pname <- paste("package:", package, sep = "") envpkg <- tryCatch(as.environment(pname), error = function(cond) NULL) if(is.null(envpkg)){ library(package, character.only = TRUE) envpkg <- tryCatch(as.environment(pname), error = function(cond) NULL) } if (is.null(envpkg)) stop(gettextf("Can't find an environment corresponding to package name '%s'", package), domain = NA) envns <- tryCatch(asNamespace(package), error = function(cond) NULL) if (is.null(envns)) stop(gettextf("Can't find a namespace environment corresponding to package name '%s\"", package), domain = NA) ## Get all Imports envs where we propagate objects pkgEnvNames <- Filter(.ess.is_package, search()) packages <- lapply(pkgEnvNames, function(envName) substring(envName, 9)) importsEnvs <- lapply(packages, function(pkgName) parent.env(asNamespace(pkgName))) ## Evaluate the FILE into new ENV env <- .ess.ns_evalSource(file, visibly, output, substitute(expr), package, fake.source) envPackage <- getPackageName(env, FALSE) if (nzchar(envPackage) && envPackage != package) warning(gettextf("Supplied package, %s, differs from package inferred from source, %s", sQuote(package), sQuote(envPackage)), domain = NA) ## Get all sourced objects, methods and classes allObjects <- objects(envir = env, all.names = TRUE) allObjects <- allObjects[!(allObjects %in% c(".cacheOnAssign", ".packageName"))] MetaPattern <- methods:::.TableMetaPattern() ClassPattern <- methods:::.ClassMetaPattern() allPlainObjects <- allObjects[!(grepl(MetaPattern, allObjects) | grepl(ClassPattern, allObjects))] allMethodTables <- allObjects[grepl(MetaPattern, allObjects)] allClassDefs <- allObjects[grepl(ClassPattern, allObjects)] ## PLAIN OBJECTS and FUNCTIONS: funcNs <- funcPkg <- newFunc <- newNs <- newObjects <- newPkg <- objectsNs <- objectsPkg <- character() dependentPkgs <- list() for (this in allPlainObjects) { thisEnv <- get(this, envir = env) thisNs <- NULL ## NS if (exists(this, envir = envns, inherits = FALSE)){ thisNs <- get(this, envir = envns) if(is.function(thisNs) || is.function(thisEnv)){ if(is.function(thisNs) && is.function(thisEnv)){ if(.ess.differs(thisEnv, thisNs)){ environment(thisEnv) <- environment(thisNs) .ess.assign(this, thisEnv, envns) funcNs <- c(funcNs, this) if(exists(".__S3MethodsTable__.", envir = envns, inherits = FALSE)){ S3_table <- get(".__S3MethodsTable__.", envir = envns) if(exists(this, envir = S3_table, inherits = FALSE)) .ess.assign(this, thisEnv, S3_table) } } }else{ newNs <- c(newNs, this) } }else{ if(!identical(thisEnv, thisNs)){ .ess.assign(this, thisEnv, envns) objectsNs <- c(objectsNs, this)} } }else{ newNs <- c(newNs, this) } ## PKG if (exists(this, envir = envpkg, inherits = FALSE)){ thisPkg <- get(this, envir = envpkg) if(is.function(thisPkg) || is.function(thisEnv)){ if(is.function(thisPkg) && is.function(thisEnv)){ if(.ess.differs(thisPkg, thisEnv)){ environment(thisEnv) <- environment(thisPkg) .ess.assign(this, thisEnv, envpkg) funcPkg <- c(funcPkg, this)} }else{ newPkg <- c(newPkg, this)} }else{ if(!identical(thisPkg, thisEnv)){ .ess.assign(this, thisEnv, envpkg) objectsPkg <- c(objectsPkg, this)}} }else{ newPkg <- c(newPkg, this)} if (!is.null(thisNs)) { isDependent <- .ess.ns_propagate(thisEnv, this, importsEnvs) newDeps <- stats::setNames(list(packages[isDependent]), this) dependentPkgs <- c(dependentPkgs, newDeps) } } ## deal with new plain objects and functions for(this in intersect(newPkg, newNs)){ thisEnv <- get(this, envir = env, inherits = FALSE) if(exists(this, envir = fallback_env, inherits = FALSE)){ thisGl <- get(this, envir = fallback_env) if(.ess.differs(thisEnv, thisGl)){ if(is.function(thisEnv)){ environment(thisEnv) <- envns newFunc <- c(newFunc, this) }else{ newObjects <- c(newObjects, this) } .ess.assign(this, thisEnv, fallback_env) } }else{ if(is.function(thisEnv)){ environment(thisEnv) <- envns newFunc <- c(newFunc, this) }else{ newObjects <- c(newObjects, this) } .ess.assign(this, thisEnv, fallback_env) } } if(length(funcNs)) objectsNs <- c(objectsNs, sprintf("FUN[%s]", paste(funcNs, collapse = ", "))) if(length(funcPkg)) objectsPkg <- c(objectsPkg, sprintf("FUN[%s]", paste(funcPkg, collapse = ", "))) if(length(newFunc)) newObjects <- c(newObjects, sprintf("FUN[%s]", paste(newFunc, collapse = ", "))) ## CLASSES classesPkg <- classesNs <- newClasses <- character() for(this in allClassDefs){ newPkg <- newNs <- FALSE thisEnv <- get(this, envir = env) if(exists(this, envir = envpkg, inherits = FALSE)){ if(!.ess.identicalClass(thisEnv, get(this, envir = envpkg))){ .ess.assign(this, thisEnv, envir = envpkg) classesPkg <- c(classesPkg, this) } }else{ newPkg <- TRUE } if(exists(this, envir = envns, inherits = FALSE)){ if(!.ess.identicalClass(thisEnv, get(this, envir = envns))){ .ess.assign(this, thisEnv, envir = envns) classesNs <- c(classesNs, this) } }else{ newNs <- TRUE } if(newNs && newPkg){ if(exists(this, envir = fallback_env, inherits = FALSE)){ if(!.ess.identicalClass(thisEnv, get(this, envir = fallback_env))){ .ess.assign(this, thisEnv, envir = fallback_env) newClasses <- c(newClasses, this) } }else{ .ess.assign(this, thisEnv, envir = fallback_env) newClasses <- c(newClasses, this) } } } if(length(classesPkg)) objectsPkg <- gettextf("CLS[%s]", sub(ClassPattern, "", paste(classesPkg, collapse = ", "))) if(length(classesNs)) objectsNs <- gettextf("CLS[%s]", sub(ClassPattern, "", paste(classesNs, collapse = ", "))) if(length(newClasses)) newObjects <- gettextf("CLS[%s]", sub(ClassPattern, "", paste(newClasses, collapse = ", "))) ## METHODS: ## Method internals: For efficiency reasons setMethod() caches ## method definition into a global table which you can get with ## 'getMethodsForDispatch' function, and when a method is dispatched that ## table is used. When ess-developer is used to source method definitions the ## two copies of the functions are identical up to the environment. The ## environment of the cached object has namespace:foo as it's parent but the ## environment of the object in local table is precisely namspace:foo. This ## does not cause any difference in evaluation. methodNames <- allMethodTables methods <- sub(methods:::.TableMetaPrefix(), "", methodNames) methods <- sub(":.*", "", methods) methodsNs <- newMethods <- character() for (i in seq_along(methods)){ table <- methodNames[[i]] tableEnv <- get(table, envir = env) if(exists(table, envir = envns, inherits = FALSE)){ inserted <- .ess.ns_insertMethods(tableEnv, get(table, envir = envns), envns) if(length(inserted)) methodsNs <- c(methodsNs, gettextf("%s{%s}", methods[[i]], paste(inserted, collapse = ", "))) }else if(exists(table, envir = fallback_env, inherits = FALSE)){ inserted <- .ess.ns_insertMethods(tableEnv, get(table, envir = fallback_env), envns) if(length(inserted)) newMethods <- c(newMethods, gettextf("%s{%s}", methods[[i]], paste(inserted, collapse = ", "))) }else{ .ess.assign(table, tableEnv, envir = fallback_env) newMethods <- c(newMethods, gettextf("%s{%s}", methods[[i]], paste(objects(envir = tableEnv, all.names = T), collapse = ", "))) } } if(length(methodsNs)) objectsNs <- c(objectsNs, gettextf("METH[%s]", paste(methodsNs, collapse = ", "))) if(length(newMethods)) newObjects <- c(newObjects, gettextf("METH[%s]", paste(newMethods, collapse = ", "))) if (verbose) { msgs <- unlist(list( if(length(objectsPkg)) sprintf("PKG: %s", paste(objectsPkg, collapse = ", ")), if(length(objectsNs)) sprintf("NS: %s", paste(objectsNs, collapse = ", ")), if(length(dependentPkgs)) .ess.ns_format_deps(dependentPkgs), if(length(newObjects)) { env_name <- if (identical(fallback_env, .GlobalEnv)) "GlobalEnv" else "Local" sprintf("%s: %s", env_name, paste(newObjects, collapse = ", ")) })) if(length(msgs)) .ess_mpi_message(paste(msgs, collapse = " ")) } invisible(env) } .ess.ns_insertMethods <- function(tableEnv, tablePkg, envns) { inserted <- character() for(m in ls(envir = tableEnv, all.names = T)){ if(exists(m, envir = tablePkg, inherits = FALSE)){ thisEnv <- get(m, envir = tableEnv) thisPkg <- get(m, envir = tablePkg) if(is(thisEnv, "MethodDefinition") && is(thisPkg, "MethodDefinition") && .ess.differs(thisEnv@.Data, thisPkg@.Data)){ environment(thisEnv@.Data) <- envns ## environment of cached method in getMethodsForDispatch table is still env ## not a problem as such, but might confuse users .ess.assign(m, thisEnv, tablePkg) inserted <- c(inserted, m) }}} inserted } ## our version of R's evalSource .ess.ns_evalSource <- function (file, visibly, output, expr, package = "", fake.source = FALSE) { envns <- tryCatch(asNamespace(package), error = function(cond) NULL) if(is.null(envns)) stop(gettextf("Package \"%s\" is not attached and no namespace found for it", package), domain = NA) env <- new.env(parent = envns) env[[".packageName"]] <- package methods:::setCacheOnAssign(env, TRUE) if (missing(file)) eval(expr, envir = env) else if (is(file, "character")) for (f in file) { .ess.source(f, local = env, visibly = visibly, output = output, keep.source = TRUE, max.deparse.length = 300, fake.source = fake.source, message.prefix = sprintf("[%s] ", package)) } else stop(gettextf("Invalid file argument: got an object of class \"%s\"", class(file)[[1]]), domain = NA) env } .ess.assign <- function (x, value, envir) { ## Cannot add bindings to locked environments if (exists(x, envir = envir, inherits = FALSE) && bindingIsLocked(x, envir)) { unlockBinding(x, envir) assign(x, value, envir = envir, inherits = FALSE) op <- options(warn = -1) on.exit(options(op)) lockBinding(x, envir) } else if (!environmentIsLocked(envir)) { assign(x, value, envir = envir, inherits = FALSE) } else { warning(sprintf("Cannot assign `%s` in locked environment", x), call. = FALSE) } invisible(NULL) } .ess.identicalClass <- function(cls1, cls2, printInfo = FALSE){ slots1 <- slotNames(class(cls1)) slots2 <- slotNames(class(cls2)) if(identical(slots1, slots2)){ vK <- grep("versionKey", slots1) if(length(vK)) slots1 <- slots2 <- slots1[-vK] out <- sapply(slots1, function(nm) identical(slot(cls1, nm), slot(cls2, nm))) if(printInfo) print(out) all(out) } } .ess.differs <- function(f1, f2) { if (is.function(f1) && is.function(f2)){ !(identical(body(f1), body(f2)) && identical(args(f1), args(f2))) }else !identical(f1, f2) } .ess.is_package <- function(envName) { isPkg <- identical(substring(envName, 0, 8), "package:") isPkg && (envName != "package:base") } .ess.ns_propagate <- function(obj, name, importsEnvs) { containsObj <- vapply(importsEnvs, logical(1), FUN = function(envs) { name %in% names(envs) }) lapply(importsEnvs[containsObj], .ess.assign, x = name, value = obj) containsObj } .ess.ns_format_deps <- function(dependentPkgs) { pkgs <- unique(unlist(dependentPkgs, use.names = FALSE)) lapply(pkgs, function(pkg) { isDep <- vapply(dependentPkgs, function(deps) pkg %in% deps, logical(1)) pkgDependentObjs <- names(dependentPkgs[isDep]) sprintf("DEP:%s [%s] ", pkg, paste(pkgDependentObjs, collapse = ", ")) }) } ## Local Variables: ## eval: (ess-set-style 'RRR t) ## End: ess-17.11/etc/ESSR/R/pkg.R0000644005071500004540000000123213202324174011673 00000000000000 .ess_keep <- function(.x, .f, ...) { is_true <- vapply(.x, .f, logical(1), ...) .x[is_true] } .ess_devtools_functions <- function() { if (!requireNamespace("devtools")) { .ess_mpi_error("devtools is not installed") stop("internal error") } devtools_env <- asNamespace("devtools") exports <- getNamespaceExports("devtools") funs_exported <- as.list(devtools_env)[exports] is_first_arg <- function(f, arg) { args <- names(formals(f)) length(args) && args[[1]] == arg } funs_pkg <- .ess_keep(funs_exported, is.function) funs_pkg <- .ess_keep(funs_pkg, is_first_arg, "pkg") funs_names <- sort(names(funs_pkg)) funs_names } ess-17.11/etc/ESSR/VERSION0000644005071500004540000000000513202324174011633 000000000000001.2.1ess-17.11/etc/Extract.factor.Rd0000644005071500004540000000321613202324174013174 00000000000000%% ESS BUG: Indentation ([Tab]) does not work if point is after \arguments{..} %% ------- almost surely because of the (non-escaped) "[". %% and this, all below is original from the R sources (R-devel, 2014-03-05) % File src/library/base/man/Extract.factor.Rd % Part of the R package, http://www.R-project.org % Copyright 1995-2010 R Core Team % Distributed under GPL 2 or later \name{Extract.factor} \title{Extract or Replace Parts of a Factor} \alias{[.factor} \alias{[<-.factor} \alias{[[.factor} \alias{[[<-.factor} \description{ Extract or replace subsets of factors. } \usage{ \method{[}{factor}(x, \dots, drop = FALSE) \method{[[}{factor}(x, \dots) \method{[}{factor}(x, \dots) <- value \method{[[}{factor}(x, \dots) <- value } \arguments{ \item{x}{a factor} \item{\dots}{a specification of indices -- see \code{\link{Extract}}.} \item{drop}{logical. If true, unused levels are dropped.} \item{value}{character: a set of levels. Factor values are coerced to character.} } \value{ A factor with the same set of levels as \code{x} unless \code{drop = TRUE}. } \details{ When unused levels are dropped the ordering of the remaining levels is preserved. If \code{value} is not in \code{levels(x)}, a missing value is assigned with a warning. Any \code{\link{contrasts}} assigned to the factor are preserved unless \code{drop = TRUE}. The \code{[[} method supports argument \code{exact}. } \seealso{ \code{\link{factor}}, \code{\link{Extract}}. } \examples{ ## following example(factor) (ff <- factor(substring("statistics", 1:10, 1:10), levels = letters)) ff[, drop = TRUE] factor(letters[7:10])[2:3, drop = TRUE] } \keyword{category} ess-17.11/etc/Makefile0000644005071500004540000000375313202324174011464 00000000000000### Makefile - for scripts and icons (./etc) of ESS distribution. ### ## Before making changes here, please take a look at Makeconf include ../Makeconf # In ../Makefile we already construct the ESSR-VERSION file : # ESSR_VERSION = $(shell cat ESSR-VERSION) #ETCFILES = $(wildcard BACKBUG[S5].BAT backbug[s5] *.S sas-keys.*) #ETCFILES = ESSR.R ess-developer.R SVN-REVISION *.S sas-keys.* ess-sas-sh-command ETCFILES_1 = *.S sas-keys.* ess-sas-sh-command *.jl isRELEASE=$(shell test -f .IS.RELEASE && echo 'yes') ifeq ($(isRELEASE),yes) ETCFILES = .IS.RELEASE git-ref $(ETCFILES_1) else ETCFILES = $(ETCFILES_1) endif #ICONS = $(wildcard icons/*.xpm) ICONS = icons/*.xpm ESSR_UTIL_FILES = ESSR/LOADREMOTE ESSR/VERSION ESSR_CODE_FILES = ESSR/R/*.R ESSR/R/.*.R # ESSR_tarball = ESSR_$(ESSR_VERSION).tar.gz all: #ESSR-VERSION $(ESSR_tarball) library/ESSR show-etc: @echo $(ETCFILES) ls -l $(ETCFILES) ## happens "above" as it is need also in ../lisp/ : # ESSR-VERSION: $(ESSR_FILES) # (cd .. ; make etc/ESSR-VERSION) # $(ESSR_tarball): $(ESSR_FILES) # R CMD build ESSR # library/ESSR: $(ESSR_tarball) # R CMD INSTALL -l library ESSR # rel: $(ESSR_tarball) # [ x$$USER = xmaechler ] || (echo 'must be maechler'; exit 1 ) # $(INSTALL) $(ESSR_tarball) $(UPLOAD_DIR)/pkgs/src/contrib install : $(INSTALLDIR) $(ETCDIR)/icons $(INSTALLDIR) $(ETCDIR)/ESSR/R $(INSTALL) $(ETCFILES) $(ETCDIR) $(INSTALL) $(ICONS) $(ETCDIR)/icons $(INSTALL) $(ESSR_UTIL_FILES) $(ETCDIR)/ESSR $(INSTALL) $(ESSR_CODE_FILES) $(ETCDIR)/ESSR/R chmod +x $(ETCDIR)/ess-sas-sh-command uninstall : -cd $(ETCDIR) && $(UNINSTALL) $(ETCFILES) -cd $(ETCDIR) && $(UNINSTALL) $(ICONS) -cd $(ETCDIR) && $(UNINSTALL) $(ESSR_UTIL_FILES) -cd $(ETCDIR) && $(UNINSTALL) $(ESSR_CODE_FILES) ## 'clean' shall remove *exactly* those things that are *not* in version control clean: rm -rf SVN-REVISION ## 'distclean' removes also things in VC (svn, when they are remade by "make"): # distclean: clean # rm -rf ESSR_*.tar.gz ess-17.11/etc/R-ESS-bugs.R0000644005071500004540000007260313202324174011736 00000000000000#### File showing off things that go wrong or *went* wrong in the past #### -- with R-mode (mostly coded in ../lisp/ess-mode.el ) ### NOTE: this file is indented with RRR style !!!!! ### but do not change indentations anymore of anything in here: ### expressions are written as we *want* them, not as ESS currently puts them options(keep.source = FALSE) # so we see R's deparse() + print() indentation ### --- 1 --------- extraneous comment chars : This seems fixed ## From: Robert Gentleman ## To: Martin Maechler ## Subject: ESS buglet ## Date: Sun, 01 Jul 2007 21:41:24 -0700 ## Hi Martin, ## It seems that the following buglet exists (at least in what ever ## version I am using) ##a silly comment ##and a second one foo <- function(x=a, abc = list("def", a=1,3,3), more.args, and, bla, blu, bl, another, plus, yet.another, and_mbasd, lots = NULL, more = NULL, args = NULL) { x } ##- when the line before a function def is a comment, and adding args, ##- then new lines, when generated have a comment char at the beginning of ##- the line. It is slightly annoying as I have to remove the comment char. ##- ##- If I add a blank line after the comment line, then the problem does not ##- occur. ## and another ''anonymous'' function: function(x=a, abc = list("def", a=c(1,3,3)), more.args, and, bla, blu, blo, Abc, def, another, and_another, and_this) { ...; ... } ## This is a "TRUE" example (from Matrix/tests/ ): NA.or.True <- function(x) is.na(x) | x abc <- function(x, y, ...) this.is.just.a.one.liner(x,y, z=TRUE, ...) ## A more-liner function with no "{...}" -- this one even works (but not all!) mindiff <- function(df) df[which.min(df$diff), which.max(df$daff)] ## Two functions in one line - can I "send" just one of them? {no, not "simply"} f1 <- function(x) be.friendly(x, force=TRUE); f2 <- function(x,y) x*sin(pi*x) ### --- 2 ---------------------------------------------------------------- ### --- Suggestion (Jenny Brian): --> Create a (defun ess-eval-multiline .) ## Here is useful valid R "test code": ## From 'example(plot.default)' : Speed <- cars$speed Distance <- cars$dist plot(Speed, Distance, panel.first = grid(8,8), pch = 0, cex = 1.2, col = "blue") pp <- plot(Speed, Distance, panel.first = grid(8,8), pch = 0, cex = 1.2, col = "blue") plot(Speed, Distance, panel.first = lines(lowess(Speed, Distance), lty = "dashed"), pch = 0, cex = 1.2, col = "blue") ## Note: We now at least C-c C-c {ess-eval-function-or-paragraph-and-step} ### --- 3 ---------------------------------------------------------------- ###--- This one (from the Matrix package) is for testing ess-roxy..., ## i.e., C-c C-o ## not exported but used more than once for "dimnames<-" method : ## -- or do only once for all "Matrix" classes ?? dimnamesGets <- function (x, value) { d <- dim(x) if (!is.list(value) || length(value) != 2 || !(is.null(v1 <- value[[1]]) || length(v1) == d[1]) || !(is.null(v2 <- value[[2]]) || length(v2) == d[2])) stop(gettextf("invalid dimnames given for '%s' object", class(x))) x@Dimnames <- list(if(!is.null(v1)) as.character(v1), if(!is.null(v2)) as.character(v2)) x } ### --- 4 ---------------------------------------------------------------- ### continued statements a <- function(ch) { if(ch == Inf) { E.cond <- numeric(nb) } else { indic <- ifelse(jinf+1 <= 1 & jsup >= 1,1,0) E.cond <- ch*(-pbinom(jinf,ni,prb) + 1-pbinom(js.n,ni,prb)) + ifelse(ni == 1, prb*indic, mu*(pbinom(js.n-1,pmax(ni-1,1),prb) - pbinom(jinf-1,pmax(ni-1,1),prb))) / sV - ### ^-- now here (better) mu/sV*(pbinom(js.n,ni,prb) - pbinom(jinf,ni,prb)) ### ^-- now here (ok; more indentation would also be ok) indic2 <- ifelse(jinf+1 <= 1 & jsup >= 1 & ni == 2,1,0) } } ### --- 5 ---------------------------------------------------------------- ### The beginning of function is not found correctly, and hence ### all "ess-*-function" (C-M-a, C-M-e, ...) fail: setMeneric <- ## It is clearly allowed to have comments here. ## S version 4, and John Chambers in particular like it. ## ## BUG: M-C-e or M-C-a fails from ``here'' -- ## --- effectively because of ess-beginning-of-function fails ## and that really relies on finding ess-function-pattern; ## i.e., ess-R-function-pattern in ~/emacs/ess/lisp/ess-cust.el ## function(name, def = NULL, group = list(), valueClass = character(), where = topenv(parent.frame()), genericFunction = NULL) { ## comments in here are at least kept via "source" attribute if(exists(name, "package:base") && typeof(get(name, "package:base")) != "closure") { FALSE } "ABC" } ### --- 6 ---------------------------------------------------------------- ## In one-liners without "{ ... }" body, the end-of-function is also ## not correctly found: ## Use C-M-e to see: In these two, the "end-of-function" is after ## 'class' : ## ---- these all work now (ESS version 5.3.8) : ## no it doesn't VS[10-03-2012|ESS 12.03]: onelinerFails <- function(x, ...) class(x) onelinerFailsToo <- function(x, ...) class(x) onelinerWorks <- function(x, ...) { class(x) } onelinerWorksToo <- function(x, ...) { class(x) } ### --- 7 ---------------------------------------------------------------- ## idem: ## this has one line more before 'function' than "typically:" setMethod("[", signature(x = "dgTMatrix", i = "numeric", j = "missing", drop = "logical"), function (x, i, j, ..., drop) { ## select rows storage.mode(i) <- "integer" xi <- x@i + 1:1 # 1-indexing ## ................... if (drop && any(nd == 1)) drop(as(x,"matrix")) else x }) ### --- 8 ---------------------------------------------------------------- ## idem: ## all bellow are ok VS[10-03-2012|ESS 12.03]: "dimnames<-.data.frame" <- function(x, value) { d <- dim(x) if(!is.list(value) || length(value) != 2 || d[[1]] != length(value[[1]]) || d[[2]] != length(value[[2]])) stop("invalid 'dimnames' given for data frame") row.names(x) <- as.character(value[[1]]) # checks validity names(x) <- as.character(value[[2]]) x } '[.foo' <- function(x, i, value) { ### y <- x y[i] <- value y } '[[.bar' <- function(x, i, value) { ## bla bla bla y <- as.foo(x) ; y[[i]] <- value y } "[<-.foobar" <- function(x,i,j,value) { ## just something x } "names<-.foobar" <- function(x, value) { ## just something else x } `[<-.data.frame` <- function(x, i, j, value) { nA <- nargs() # value is never missing, so 3 or 4. ###.......... class(x) <- cl x } "[[<-.data.frame"<- function(x, i, j, value) { cl <- oldClass(x) ## delete class: Version 3 idiom ## to avoid any special methods for [[<- class(x) <- NULL ###........... class(x) <- cl x } "$<-.data.frame" <- function(x, i, value) { cl <- oldClass(x) ## delete class: Version 3 idiom ## to avoid any special methods for [[<- ###........... class(x) <- cl return(x) } ## swanky functions: `swank:quit-inspector` <- function(slimeConnection, sldbState) { resetInspector(slimeConnection) FALSE } 'swank:quit-inspector' <- function(slimeConnection, sldbState) { resetInspector(slimeConnection) FALSE } ### --- 9 ---------------------------------------------------------------- ## VS[03-2012|12.03]:FIXED: ## From: "Sebastian P. Luque" ## To: ess-bugs@stat.math.ethz.ch ## Subject: [ESS-bugs] ess-mode 5.12; `ess-indent-line' error ## Date: Tue, 17 Aug 2010 13:08:25 -0500 ## With the following input, and point on the line with "Table 8.3": ## it was the parenthetical expression at the beg of line if (require(lme4)) { ## Model in p. 213 (fm1 <- lmer(logFEV1 ~ age + log(height) + age0 + log(height0) + (age | id), data=fev1, subset=logFEV1 > -0.5)) ## Table 8.3 VarCorr(fm1)$id * 100 ## Model in p. 216 (fm2 <- update(fm1, . ~ . - (age | id) + (log(height) | id))) } ### ----- ## hitting TAB (`ess-indent-command'), which calls `ess-indent-line' I get ## the following trace: ## ....: (scan-error "Containing expression ends prematurely" 20 20) ## scan-sexps(177 -2) ## forward-sexp(-2) ## ... ## ess-continued-statement-p() ## ...... ## Interestingly, if the lines 2-4 are absent, then the problem is gone. ## The problem is also there in ESS 5.11. ## I'll try to find out what is going on in `ess-continued-statement-p' but ## given that I'm not very familiar with the stuff in ess-mode.el, I'm ## submitting the report in case somebody can detect the issue sooner. ## another example: hitting Tab at }else line .essDev_differs <- function(f1, f2){ if (is.function(f1) && is.function(f2)){ !(identical(body(f1), body(f2)) && identical(args(f1), args(f2))) }else !identical(f1, f2) } ### --- 10 --------------------------------------------------------------- ## indent at 0 after }else: ## VS:[03-2012|12.03]:FIXED: if (is.function(f1) && is.function(f2)){ !(identical(body(f1), body(f2)) && identical(args(f1), args(f2))) }else !identical(f1, f2) ### --- 11 --------------------------------------------------------------- ## --------------- C-c C-c was finding the wrong "beginning of function" ## [:FIXED:, 2011-05-28] foobar <- function(...) {} rm(list=ls()) ##--------> consequence of the above experiments: ## the 2nd form is numerically "uniformly better" than the first ##--------> 2011-05-27: Change Frank's psiInv() to ## psiInv = function(t,theta) ## -log1p(exp(-theta)*expm1((1-t)*theta)/expm1(-theta)) ### --- 12 --------------------------------------------------------------- ##--- In the following block, in the first line, C-c C-c does *NOT* behave ## VS[10-03-2012|ESS 12.03]: works fine for me: th <- 48 # now do ls() and see what happened ... the horror !!! d <- 3 cpF <- list("Frank", list(th, 1:d)) cop <- acF <- cpF$copula ### --- 13 --------------------------------------------------------------- ## VS[05-05-2012|ESS 12.04]: looks like :FIXED: ## From: Aleksandar Blagotic ## To: ## Subject: [ESS] R-mode: forward-sexp: Scan error: "Unbalanced parentheses" ## Date: Tue, 6 Dec 2011 01:24:11 +0100 # ## Let's presuppose that I have a function like this: # fn <- function(x, ...){ re <- "^#{1,6} [[:print:]]+$" grepl(re, x, ...) } ## As soon as I put my cursor at the end of the line with regexp, and ## press RET, I get this error: ## forward-sexp: Scan error: "Unbalanced parentheses" ## ##------- ## Rodney S: I can reproduce it ... ## Martin M: I can NOT reproduce it, neither with 'emacs -Q'; ## tried both ESS 5.14 and ESS from svn ## VS[03-2012|12.03]: Cannot reproduce it either, solved? ### --- 14 --------------------------------------------------------------- ## check the behavior of ess-arg-function-offset-new-line a <- some.function( arg1, arg2) ## ^--- RRR has ess-arg-function-offset-new-line (4) ==> should indent here a <- some.function(arg1, arg2) ## ^--- here ### --- 15 -------------------------------------------------------------- ## VS[05-05-2012|ESS 12.04]:FIXED: ## indentation of the 3rd line is wrong for(s in seq(10, 50, len = 5)) for(a in seq(.5, 1, len = 5)) pt_dif_plot(s, a) ## ^-- here ### --- 16 ---- ## VS[05-05-2012|ESS 12.04]:FIXED: ## MM[2014-04-28]: added '}' before else (=> "{" after if(.)) ## so parse() works at all! ## Gives error unbalanced para at else lines and indentation is wrong ## error: Point is not in a function according to 'ess-function-pattern'. getOrCreateForm <- function(bindName, whereEnv) if(exists(bindName, envir = get(".forms", envir = whereEnv))) { get(bindName, envir = whereEnv) ### ^-- here } else new("protoForm") ### ^-- here parentContainer <- if(is.null(.getPrototype(.Object@host))) { emptyenv() } else sdf ### ^-- here parentContainer <- if(is.null(.getPrototype(.Object@host))) emptyenv() else sdf ### ^-- here ### --- 17 --- ## Indentation ----- "expression" is special expremmion <- c(1, 3, 9876)# was always ok ## Had wrong indentation here: expression <- c(2343, 23874, 239487) ## or here: foo <- function(x) { expression <- c(2343, 23874, 239487) 10 + expression } ## Where as here, we *do* want the indentation to ## *NOT* go all the way to the right: { my.long.Expression <- expression( x[a[j]] == exp(theta[1] + theta[2]^2), x[b[i]] == sin(theta[3] ~~ theta[4]) ) ausdruck <- expression my.long.Expr...... <- ausdruck( x[a[j]] == exp(theta[1] + theta[2]^2), ) } ## VS[18-08-2012]: redundant feature. This is a feature for long subexpressions ## imidiately folowing new line. Documented in ess-arg-function-offset-new-line ### --- 18 --- ## M-C-a (beginning of function) ## ----- anywhere inside the following function, M-C-a must go to beginning Ops.x.x <- function(e1, e2) { d <- dimCheck(e1,e2) if((dens1 <- extends(c1 <- class(e1), "denseMatrix"))) gen1 <- extends(c1, "generalMatrix") if((dens2 <- extends(c2 <- class(e2), "denseMatrix"))) gen2 <- extends(c2, "generalMatrix") if(dens1 && dens2) { ## both inherit from ddense* geM <- TRUE if(!gen1) { if(!gen2) { ## consider preserving "triangular" / "symmetric" geM <- FALSE le <- prod(d) isPacked <- function(x) length(x@x) < le } } ## now, in all cases @x should be matching & correct {only "uplo" part is used} r <- callGeneric(e1@x, e2@x) if(geM) new(paste0(.M.kind(r), "geMatrix"), x = r, Dim = d, Dimnames = dimnames(e1)) else new(paste0(.M.kind(r), Mclass), x = r, Dim = d, .....) } else { r <- .... ## criterion "2 * nnz(.) < ." as in sparseDefault() in Matrix() [./Matrix.R] : if(2 * nnzero(r, na.counted = TRUE) < prod(d)) as(r, "sparseMatrix") else r } } ### --- 19 --- ## indentation with regexp (bug in ess-backward-to-noncomment) parse_roc <- function(lines, match = "^\\s*+\' ?") { lines <- lines[str_detect(lines, match)] if (length(lines) == 0) return(NULL) ### ^-- here (2014-11: fixed) } ### --- 20 --- ## continuation indentation must be consistent in/out {}: { a <- ggplot(data = overtime.by.month, aes(x="", y=Percent, fill = Overtime)) + geom_bar(width = 1) + xlab('') + ylab(sub.txt) + labs(title = title.txt) + facet_wrap(~Year.Month) } a <- ggplot(data = overtime.by.month, aes(x="", y=Percent, fill = Overtime)) + geom_bar(width = 1) + xlab('') + ylab(sub.txt) + labs(title = title.txt) + facet_wrap(~Year.Month) ### ^-- face_wrap must be here ### --- 20b --- ## From https://github.com/emacs-ess/ESS/issues/120 mean(rnorm(100, mean = runif(1, 1, 10)), na.rm =TRUE) + 2 ## ^--- 2 is here mean(rnorm(100, mean = runif(1, 1, 10)), na.rm =TRUE) + 2 ## ^--- 2 is here mean(rnorm(100, mean = runif(1, 1, 10)), na.rm=TRUE) + 2 ## ^--- 2 is here ### --- 21 --- ## From: Marius Hofert ## Date: Fri, 15 Mar 2013 21:00:45 +0100 ## Hi, ## The following bug happens in ESS 12.09-2 [rev. 5395 (2013-01-10)]. Put the ## cursor in the line before the function head and hit C-c C-c. foo <- function(x) x # bar x <- 1:10 ## I'll see ## > + > [1] 1 2 3 4 5 6 7 8 9 10 ## ESS 15.03: Error in eval(expr, .... : object 'x' not found foo <- function(x) x*x bar <- function(y) y ## via C-c C-c leads to "Error: object 'bar' not found". -- fixed ### --- 22 ---- ## now correct indentation (inspite of # {was same reason as 19}) if (!grepl("#", x)) return(res) ### --- 23 ---- ### three ways to indent closing parent depending on context: foo <- function_call( a, b, c ) ### ^-- ) is here now foo <- function_call( a, b, c ) ### ")" is at column 0 foo <- function_call(a, b, c ) ### ^-- ) is here ### --- 24 --- ### shift comma in function calls foo <- function_call(a , b , c ### ^-- c is here ) ### ^-- ) is here ### --- 25 --- ## if/else in function calls and nested function_call(abc = if (test) do_something else do_something_else) function_call( abc = if (test) do_something else do_something_else) function_call(abc = if (test) do_something else do_something_else) ## real example is smooth.spline() source code [still (2015-04-08) wrong / bug!] ss <- function (x, all.knots, nknots, ...) { if (all.knots) { if (!missing(nknots) && !is.null(nknots)) warning("'all.knots' is TRUE; 'nknots' specification is disregarded") nknots <- nx } else if (is.null(nknots)) # <- for back compatibility nknots <- .nknots.smspl(nx) else { ### ^ want 'else' there if (is.function(nknots)) nknots <- nknots(nx) else if (!is.numeric(nknots)) stop("'nknots' must be numeric (in {1,..,n})") if (nknots < 1) stop("'nknots' must be at least 1") else if (nknots > nx) stop("cannot use more inner knots than unique 'x' values") } ### ^-- want '}' there } ## "if" conditional is an exception of the continuation rules: ## Here, we do not want subsequently further indentation of the c1 || c2 || c3 ## part: t2 <- function(x) { if(long.expression.of.some.size(x, pi) || another.longish.expression(sin(x)*exp(x)) || a.third.condition.under.which.A.is.chosen) ### ^-- here A else B } r <- (some.function (x, 2342) + another.f (x^3) + sdfsdf - sdfsdf + and(x) + the(x) - last(x)*part(3)) ### --- 26 ---- ## This is formally correct R, though help(parse) mentions the line-length limit of ## 4095 __when reading from the console__ ## ESS gives syntax errors ("Error: unexpected ','" ...) when evaluating this ## because line length >= 4096 : ## x <- c(1, 3.075819, 1.515999, 2.156169, 1.480742, 1.765485, 1.460206, 1.603707, 1.427429, 1.504712, 1.334528, 1.48297, 1.355308, 1.383867, 1.319241, 1.36065, 1.307467, 1.365596, 1.255259, 1.352741, 1.239381, 3.15342, 1.799889, 2.258497, 1.688312, 1.906779, 1.548203, 1.724785, 1.500873, 1.573442, 1.417137, 1.540805, 1.395945, 1.472596, 1.394247, 1.377487, 1.337394, 1.369354, 1.333378, 1.3181, 1.313813, 1.315528, 2.12777, 2.718898, 1.993509, 2.220433, 1.820585, 1.97782, 1.672455, 1.770151, 1.587478, 1.685352, 1.539295, 1.584536, 1.499487, 1.50702, 1.41952, 1.449058, 1.393042, 1.432999, 1.369964, 1.400997, 1.333824, 2.950549, 2.145387, 2.382224, 1.927077, 2.032489, 1.8371, 1.877833, 1.710891, 1.756053, 1.620778, 1.657761, 1.558978, 1.56257, 1.508633, 1.534406, 1.46709, 1.468734, 1.432529, 1.455283, 1.386975, 1.417532, 2.229573, 2.494447, 2.016117, 2.190061, 1.877996, 1.978964, 1.767284, 1.836948, 1.677372, 1.743316, 1.616383, 1.655964, 1.55484, 1.594831, 1.502185, 1.543723, 1.467005, 1.491123, 1.44402, 1.446915, 1.401578, 2.580264, 2.109121, 2.240741, 1.944719, 2.043397, 1.821808, 1.89725, 1.748788, 1.786988, 1.659333, 1.697012, 1.610622, 1.616503, 1.538529, 1.562024, 1.499964, 1.529344, 1.474519, 1.483264, 1.441552, 1.434448, 2.165233, 2.320281, 2.007836, 2.086471, 1.884052, 1.950563, 1.76926, 1.843328, 1.708941, 1.741039, 1.627206, 1.644755, 1.580563, 1.593402, 1.527312, 1.568418, 1.501462, 1.502542, 1.464583, 1.467921, 1.431141, 2.340443, 2.048262, 2.161097, 1.926082, 1.995422, 1.81446, 1.853165, 1.738533, 1.784456, 1.679444, 1.696463, 1.612931, 1.629483, 1.548186, 1.580026, 1.52198, 1.531111, 1.482914, 1.484824, 1.442726, 1.447838, 2.093386, 2.185793, 1.948989, 2.02804, 1.867137, 1.907732, 1.771923, 1.800413, 1.691612, 1.720603, 1.642705, 1.649769, 1.589028, 1.598955, 1.539759, 1.55096, 1.503965, 1.50703, 1.471349, 1.469791, 1.436959, 2.218315, 1.997369, 2.041128, 1.887059, 1.928524, 1.79626, 1.827538, 1.716748, 1.735696, 1.658329, 1.664211, 1.599286, 1.611511, 1.553925, 1.562637, 1.516805, 1.529894, 1.476064, 1.482474, 1.453253, 1.458467, 2.0247, 2.07899, 1.921976, 1.949376, 1.824629, 1.851671, 1.744713, 1.765647, 1.683525, 1.685592, 1.625113, 1.624961, 1.571921, 1.581223, 1.535257, 1.537464, 1.497165, 1.504879, 1.468682, 1.469319, 1.448344, 2.092315, 1.941412, 1.969843, 1.844093, 1.866133, 1.766145, 1.783829, 1.703613, 1.709714, 1.646078, 1.654264, 1.594523, 1.598488, 1.545105, 1.555356, 1.514627, 1.521353, 1.483958, 1.487677, 1.449191, 1.459721, 1.958987, 1.985144, 1.87739, 1.879643, 1.786823, 1.799642, 1.720015, 1.724688, 1.663539, 1.662997, 1.609267, 1.615124, 1.56746, 1.562026, 1.520586, 1.52503, 1.493008, 1.502496, 1.471983, 1.468546, 1.435064, 1.994706, 1.880348, 1.894254, 1.805827, 1.815965, 1.744296, 1.743389, 1.665481, 1.681644, 1.624466, 1.626109, 1.584028, 1.5818, 1.54376, 1.547237, 1.504878, 1.515087, 1.479032, 1.47936, 1.450758, 1.45073, 1.892685, 1.91087, 1.825301, 1.827176, 1.745363, 1.746115, 1.693373, 1.701692, 1.648247, 1.637112, 1.594648, 1.592013, 1.554849, 1.55013, 1.522186, 1.520901, 1.492606, 1.493072, 1.460868, 1.46733, 1.440956, 1.92771, 1.835696, 1.841979, 1.775991, 1.766092, 1.703807, 1.708791, 1.654985, 1.655917, 1.602388, 1.611867, 1.570765, 1.573368, 1.53419, 1.529033, 1.506767, 1.503596, 1.481126, 1.471806, 1.444917, 1.451682, 1.850262, 1.855034, 1.778997, 1.789995, 1.718871, 1.717326, 1.667357, 1.666291, 1.619743, 1.631475, 1.582624, 1.58766, 1.546302, 1.545063, 1.512222, 1.517888, 1.489127, 1.487271, 1.466722, 1.463618, 1.444137, 1.8709, 1.794033, 1.80121, 1.736376, 1.740201, 1.673776, 1.682541, 1.638153, 1.642294, 1.604417, 1.597721, 1.559534, 1.559108, 1.533942, 1.529348, 1.499517, 1.501586, 1.473147, 1.473031, 1.457615, 1.452348, 1.805753, 1.812952, 1.746549, 1.747222, 1.696924, 1.694957, 1.652157, 1.650568, 1.607807, 1.613666, 1.577295, 1.570712, 1.543704, 1.538272, 1.515369, 1.517113, 1.487451, 1.491593, 1.464514, 1.464658, 1.439359, 1.823222, 1.758781, 1.767358, 1.70872, 1.712926, 1.666956, 1.667838, 1.62077, 1.621445, 1.592891, 1.58549, 1.55603, 1.559042, 1.521501, 1.523342, 2, 3, 4) ### --- 27 ---- ## Indentation after open brace .a.lst <- list(ex1 = function(p) { cMah <- qchisq(0.975, p) function(d) as.numeric(d < cMah) ### ^--- now here (less indented than prev.) }, ex2 = function(p) { cM <- qchisq(0.95, p) function(d) as.numeric(d < cM) ### ^--- here }) ### ^--- '}' here .a.lst <- list(ex1 = function(p) { cMah <- qchisq(0.975, p) function(d) as.numeric(d < cMah) }, ## <- now at column 0 {also the next line} ex2 = function(p) { cM <- qchisq(0.95, p) function(d) as.numeric(d < cM) }) .a.lst <- list(list(aa = { bbb ### ^--- here }, aaa = function(p) { qchisq(0.95, p) ### ^--- here }, aaaa = { cccc ### ^--- here })) list(function(p){ abc ### ^-- here ## <-- Press [Tab] before/at the first '#': should *NOT* insert '...=' }) ### at column 0 (ab) { sfdsf ### ^-- here } ### --- 27b --- [new, 2015-04-09] print.MethodsFunction <- function(x, byclass = attr(x, "byclass"), ...) { info <- attr(x, "info") values <- if (byclass) { unique(info$generic) } else { visible <- ifelse(info$visible, "", "*") paste0(rownames(info), visible) ### ^-- both lines above should start here } ### ^-- "}" here ## 2nd version: val <- if (byclass) { unique(info$generic) } else { visible <- ifelse(info$visible, "", "*") paste0(rownames(info), visible) ### ^-- both lines above should start here } ### ^-- "}" here invisible(x) } ### --- 28 --- [2015-02-17; still unfixed, 2015-11-21] ## Indentation of end-line comments (to column 40 = 'indent-column') ## {this is part of "real" code in Rmpfr/R/hjk.R}: hjk <- function(x,n) { # <--- C-M-q "on {" -- does *no longer* indent the "# .." ##-- Setting steps and stepsize ----- nsteps <- floor(log2(1/tol)) # number of steps steps <- 2^c(-(0:(nsteps-1))) # decreasing step size dir <- diag(1, n, n) # orthogonal directions x <- par # start point fx <- f(x) # smallest value so far fcount <- 1 # counts number of function calls if (info) cat(sprintf("step nofc %-12s | %20s\n", "fmin", "xpar")) ##-- Start the main loop ------------ ns <- 0 while (ns < nsteps && fcount < maxfeval && abs(fx) < target) { ns <- ns + 1 hjs <- .hjsearch(x, f, steps[ns], dir, fcount, maxfeval, target) } hjs } ### --- 29 --- foreach(a = 1:3) %do% { a^2 ### ^--- here } foreach(a = 1:3) %:% foreach(b = 10:13) %dopar% { ### ^--- here a + b ### ^---- here } ### ^--- here read.csv('file.csv') %>% mutate(X = X+2, Y = Y/2) %>% ### ^--- here filter(X < 5) ### ^-- here (*was* indented earlier) ### --- 30 --- ## a) ok: { r <- array(if (d[3L] == 3L) rgb(t(x[,,1L]), t(x[,,2L]), t(x[,,3L]), maxColorValue = max) else if (d[3L] == 4L) rgb(t(x[,,1L]), t(x[,,2L]), t(x[,,3L]), t(x[,,4L]), maxColorValue = max) else stop("foo"), dim = d[1:2]) } ## b) ok : { obj <- obj && (condition1 || class2 %in% .BasicClasses || condition3) } ## c) ok: { if (any(abs(d) < .001*abs(dd) | (is.na(d) & x == y))) TRUE } ### --- 31 -------- ## C-s "recog"; M-C-a -- should go to beginning of function, does not glmmTMB <- function (formula, data = NULL) { ## glFormula <- function(formula, data=NULL, family = gaussian, ## subset, weights, na.action, offset, ## contrasts = NULL, mustart, etastart, ## control = glmerControl(), ...) { ## FIXME: check for offsets in ziformula/dispformula, throw an error call <- mf <- mc <- match.call() if (is.null(family$family)) { print(family) stop("'family' not recognized") } } ### --- 32 --- 2015-11-07 --- indentation again! -------- { yl <- if(strictlim) { ylim } else { range(y, ylim) } ## room below for weights dy <- 4*dy } ## -- 32 b) { yl <- if(strictlim) { ylim } else range(y, ylim) ## continue } ## -- 32 c) { U <- if(is.matrix(x)) apply(x, 2, foo) / (nrow(x) + 1) else foo(x) / (length(x) + 1) } ## 'else' now aligns with 'if' (and their code too) ### --- 33 -- Treat `<<-` as `<-` { f(X <- callme(arg)) f(X <<- callme(arg)) } ## the 2nd callme() now indents like the first ### --- 34 --- "eval-function" (e.g. C-c C-c) fails with this ##' checking pretty(): chkPretty <- function(x, n = 5, min.n = NULL, ..., max.D = 1) { if(is.null(min.n)) { ## work with both pretty.default() and greDevices::prettyDate() ## *AND* these have a different default for 'min.n' we must be "extra smart": min.n <- if(inherits(x, "Date") || inherits(x, "POSIXt")) n %/% 2 # grDevices:::prettyDate else n %/% 3 # pretty.default } pr <- pretty(x, n=n, min.n=min.n, ...) ## if debugging: pr <- grDevices:::prettyDate(x, n=n, min.n=min.n, ...) stopifnot(length(pr) >= (min.n+1), abs(length(pr) - (n+1)) <= max.D, ## must be equidistant [may need fuzz, i.e., signif(.) ?]: length(pr) == 1 || length(unique(diff(pr))) == 1, ## pretty(x, *) must cover range of x: min(pr) <= min(x), max(x) <= max(pr)) invisible(pr) } ### --- 35 --- indentation of conditional function definitions: ## from a robustbase vignette: { ## calculate robustness weights lwgts <- Mwgt(lresid, lctrl$tuning.psi, lctrl$psi) ## function to calculate robustified leverages tfun <- if (is.function(attr(estlist$design, 'gen'))) function(i) { if (all(is.na(wi <- lwgts[i,]))) wi else .lmrob.hat(lXs[,,i,lcdn[2]],wi) } else ### \-<-- 'else' (and all below) should indent 4 more, 'else' matching the above 'if' function(i) { if (all(is.na(wi <- lwgts[i,]))) wi else .lmrob.hat(lX, wi) } } ### --- 36 --- indentation of '#' inside string plus a '#' after that, issue #446 A <- f("abc") + f("abc") + f("abc") + f("abc # abc") + ## The above is now ok, f("abc # abc") + # <- comment w/o quotes or hashtag -- fixed now: next line was indented to beginning of line f("ABCDEF") + f(g(h("abc # def"), "foo ## bar")) + f("another") ### --- 37 ----------Github issue #432 ---- now fixed ## Indentation after string with "*" fo4 <- function(x, ...) { if(length(x) > 0) warning("Result gave strings of *different* #{characters}") x ## 'x' was wrongly indented --here: ^ } ### Local Variables: ### page-delimiter: "^### --- [1-9]" ### End: ess-17.11/etc/R-ESS-bugs.el0000644005071500004540000000614113202324174012127 00000000000000;;;; Things that go wrong or *went* wrong in the past ;;;; (from list side) see R-ESS-bugs.R for the R's side. ;;;; 1 ess-get-words-from-vector stumbles over \" (ess-get-words-from-vector "c('aaa','bbb\"ccc', 'dddd')\n") ;;-> (" " "ccc" "dddd"): SOLVED ;;;; 2 ess-get-words-from-vector disregards max.print ;; options(max.print=1000) (warning added to the docs) (length (ess-get-words-from-vector "as.character(1:10000)\n")) ;;-> 1001 with "max.print" at the end; added a comment in the function doc ;;;; 3 Inferior-ess-primary-prompt does not capture "+ + > " ;; this hangs emacs; SOLVED (ess-command "tf<-function(N){ N}\n") ;;;; 4 ess-command detects the prompt prematurely ;; this outputs str(iris) in the inferior buffer; SOLVED (ess-command " lm_test <- function (formula, data, subset, weights, na.action, method = 'qr', model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset, ...) { cl <- match.call() mf <- match.call(expand.dots = FALSE) m <- match(c('formula', 'data', 'subset', 'weights', 'na.action', 'offset'), names(mf), 0L) mf <- mf[c(1L, m)] mf$drop.unused.levels <- TRUE mf[[1L]] <- as.name('model.frame') mf <- eval(mf, parent.frame()) if (method == 'model.frame') return(mf) else if (method != 'qr') warning(gettextf('method is not supported. Using', method), domain = NA) mt <- attr(mf, 'terms') y <- model.response(mf, 'numeric') w <- as.vector(model.weights(mf)) if (!is.null(w) && !is.numeric(w)) stop('weights must be a numeric vector') offset <- as.vector(model.offset(mf)) if (!is.null(offset)) { if (length(offset) != NROW(y)) stop(gettextf('number of offsets is %d, should equal %d (number of observations)', length(offset), NROW(y)), domain = NA) } if (is.empty.model(mt)) { x <- NULL z <- list(coefficients = if (is.matrix(y)) matrix(, 0, 3) else numeric(0L), residuals = y, fitted.values = 0 * y, weights = w, rank = 0L, df.residual = if (!is.null(w)) sum(w != 0) else if (is.matrix(y)) nrow(y) else length(y)) if (!is.null(offset)) { z$fitted.values <- offset z$residuals <- y - offset } } else { x <- model.matrix(mt, mf, contrasts) z <- if (is.null(w)) lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) else lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok, ...) } class(z) <- c(if (is.matrix(y)) 'mlm', 'lm') z$na.action <- attr(mf, 'na.action') z$offset <- offset z$contrasts <- attr(x, 'contrasts') z$xlevels <- .getXlevels(mt, mf) z$call <- cl z$terms <- mt if (model) z$model <- mf if (ret.x) z$x <- x if (ret.y) z$y <- y if (!qr) z$qr <- NULL z } str(iris) ") ;;;; 5 double prompt > > used to stall emacs; SOLVED (ess-command "\n\n\n") ess-17.11/etc/R-oxygen-ex.R0000644005071500004540000000224013202324174012257 00000000000000### Go inside the "preamble" section and type C-e C-e C-r (ess-roxy-preview-Rd) ### to get an R error message about 'col(m)' --> there's a buglet somewhere ##' Computes different parameter estimates for foo bars and variations ##' ##' @title Estimation procedures for Foo Bar ##' @param x data matrix ##' @param op object to be estimated ##' @param method estimation method; can be ##' "mle" MLE ##' "smle" SMLE ##' "dmle" MLE based on the diagonal ##' "mde.normal" minimum distance estimation based on the chisq distribution and CvM distance ##' "mde.log" minimum distance estimation based on the Erlang distribution and CvM distance ##' "tau.tau.mean" averaged pairwise Kendall's tau estimator ##' "tau.theta.mean" average of Kendall's tau estimators ##' "beta" multivariate Blomqvist's beta estimator ##' @return estimated value/vector according to the chosen method ##' @author Foo Bar estimateFoo <- function(x, op, method=c("mle", "smle", "dmle", "mde.normal", "mde.log", "tau.tau.mean", "tau.theta.mean", "beta")) { .... } ess-17.11/etc/R-pager.R0000644005071500004540000000071313202324174011435 00000000000000mypager <- function(files, header, title, delete.file) { tfile <- tempfile(paste(basename(files[1]),"__", sep="")) Tf <- file(tfile, open="w+") stopifnot(file.append(tfile, files)) system(paste("emacsclient -n", tfile)) } file.show(file.path(R.home("doc"), "COPYRIGHTS"), pager = mypager) options(pager = mypager) ## test : file.show(file.path(R.home("doc"), "COPYRIGHTS")) ## or RShowDoc('NEWS') ## using a suboptimal file name ess-17.11/etc/R_error_patterns.R0000644005071500004540000000540313202324174013473 00000000000000 ## 1 Error: chunk 7 (label = OP4) Error in disp.Rnw:656:31: unexpected symbol 655: par(mgp = c(2.5, 1, 1), mar = c(0, 0, 0, 0), 656: plt= c(0.08, 0.9, 0.25, 0.p9 )) ## 2 Browse[2]> Error in x %*% y (from models.R#46) : Cholmod error 'X and/or Y have wrong dimensions' at file ../MatrixOps/cholmod_sdmult.c, line 90 ## 3 Error in source("~/works/protoClasses/R/funcs.R") (from hierarchy.R#6) : ~/works/protoClasses/R/funcs.R:1797:5: unexpected '[[' 1796: b[[2]] <- quote(browser()) 1797: [[ ^ ## 4 source("basicModel.R") Error in source("basicModel.R") : basicModel.R:95:1: unexpected symbol 94: 95: ixQ ^ ## 5.a > + Error in source(file = "/home/vitoshka/works/pbm/R/S4.R") (from #1) : /home/vitoshka/works/pbm/R/S4.R:36:62: unexpected ')' 35: }, list(vname = as.name(".pix_v")), 36: pname = as.name(".pix_p")))) ^ ## 5.b > + Error in source(file = "/home/vitoshka/works/pbm/R/S4.R") (from #1) : c:/home/vitoshka/works/pbm/R/S4.R:36:62: unexpected ')' 35: }, list(vname = as.name(".pix_v")), 36: pname = as.name(".pix_p")))) ^ > ## 6 first line is not a pattern! + . + Error in base::source(file = file, echo = echo, local = local, print.eval = print.eval, (from #95) : /tmp/model_mixture.R@4:5:13: unexpected symbol 4: Mq$DATA$ixs$clust <- data$ixQ 5: Mq ## 7 don't highlight dates id lat lon obs_date Min. : 1.00 Min. :21.57 Min. :-179.88 01/02/1997 04:16:53: 1 1st Qu.: 99.25 1st Qu.:24.36 1st Qu.:-147.38 01/02/1997 05:56:25: 1 Median :197.50 Median :25.64 Median :-119.64 01/04/1997 17:41:54: 1 Mean :197.50 Mean :27.21 Mean : -21.52 01/05/1997 17:20:07: 1 3rd Qu.:295.75 3rd Qu.:27.41 3rd Qu.: 153.66 01/06/1997 04:31:13: 1 Max. :394.00 Max. :39.84 Max. : 179.93 01/06/1997 06:12:56: 1 (Other) :388 ## 8 valgrind errors ==25269== Invalid read of size 8 ==25269== at 0x9EC363C: inner_product (stl_numeric.h:183) ==25269== by 0x9EC363C: distance(RcppParallel::RMatrix const&, unsigned long, unsigned long, DistType) (rwmd.cpp:21) ==25269== by 0x9EC90C9: RelaxedWordMoverDistanceSparse::operator()(unsigned long, unsigned long) (rwmd.cpp:137) ess-17.11/etc/Rnw-ess-bugs.Rnw0000644005071500004540000000114113202324174012775 00000000000000 <>= ## reported by Terry Therneau coxph <- function(formula, data, weights, subset, na.action, init, control, ties= c("efron", "breslow", "exact"), singular.ok =TRUE, robust=FALSE, model=FALSE, x=FALSE, y=TRUE, tt, method=ties, ...) { ties <- match.arg(ties) Call <- match.call() ... (20 lines omitted) timetrans <- attr(Terms, "specials")$tt if (length(timetrans)) { <> } ## next lines should not be ofsetted <> <> <> <> } @ ess-17.11/etc/SAS-bugs.sas0000644005071500004540000000205713202324174012114 00000000000000 /********************/ /* comment box*/ /********************/ ods listing; /* From: Star Ying */ /* Subject: [ESS] Another indentation error */ /* To: "ess-help@r-project.org" */ /* Date: Tue, 26 Mar 2013 14:33:22 -0400 (5 minutes, 16 seconds ago) */ /* X-Boundary: ________________________________________________________________________________________________________________________________________________________________________________________________________ */ /* So I have another indentation error with ess and emacs that I have run into. For the example below: */ data example; merge lib.data lib.data2 %if val=ue %then %do; lib.data3 %end; ; by var; /* The last line produces an error if I hit tab or if I try to indent that */ /* region. Emacs produces the error */ /* "invalid search bound (wrong side of point)". The code itself is valid and runs */ /* in sas proper. Is this just me or is this a reproducible error? */ ess-17.11/etc/TODO.org0000644005071500004540000001733513202324174011303 00000000000000* COMPLETION ** DONE make eldoc automatically pick available sub-process :13_09: :LOGBOOK: - State "DONE" from "DONE" [2013-06-26 Wed 16:51] :END: ** TODO make eldoc (actually ess--fun.start) work from withing strings * TRACEBUG ** DONE put back ess-debug-goto-input-event-marker :LOGBOOK: - State "DONE" from "TODO" [2013-06-21 Fri 01:18] :END: [2013-06-18 Tue] [[gnus:nnfolder%2Barchive:sent-2013-June#87sj0fulny.fsf@gmail.com][Email to Marius Hofert: Re: {ESS} A suggestion for deb]] ** TODO make ess-selection-mode-map or just use ess-debug-mode-map When recover mode is on, it would be very convenient to exit it with M-Q. [2013-06-12 Wed] ** DONE tracebug detects only english error messages. :LOGBOOK: - State "DONE" from "TODO" [2013-06-21 Fri 01:18] :END: Try to solve with gettext R's functionality. Partially solved (for most important cases) by relaxing regular expressions. ** DONE C-c C-c with ess-inject-source=t deletes files faster than R can process - State "DONE" from "TODO" [2013-06-26 Wed 16:46] ** DONE tramp references not found :LOGBOOK: - State "DONE" from "TODO" [2013-08-12 ma 23:40] :END: [2013-07-08 ma] [[file:~/works/pbm/R/hierarchy.R::..st_is_old..%20<-][file:~/works/pbm/R/hierarchy.R::..st_is_old.. <-]] ** DONE watch window behaves unexpectedly :LOGBOOK: - State "DONE" from "TODO" [2014-03-31 Mon 20:13] :END: [2013-06-27 Thu] * DEVELOPER ** DONE [#A] Eval in developer is broken :LOGBOOK: - State "DONE" from "TODO" [2013-06-26 Wed 16:51] :END: ** TODO "initialize" method is not injected ** DONE don't ask on C-t l for package if already in a package and dev is active :LOGBOOK: - State "DONE" from "TODO" [2013-08-12 ma 23:42] :END: It interrupts the workflow unnecessarily and feels differently from C-c C-l [2013-07-10 wo] * SAS ** DONE remote M-x ess-sas-interactive via shell with ssh :LOGBOOK: - State "DONE" from "TODO" [2013-08-12 ma 23:38] :END: sets ess-process-name-list to (("shell")) This prevents iESS[SAS] evaluation since a value of (("SAS")) would be necessary for that. * INDENTATION ** TODO closing ) match the function keyword foo(a, b ) instead of current: foo(a, b ) And foo( a, b ) instead of foo( a, b ) * EVALUATION ** TODO implement block-based evaluation >>>>> Peter Meilstrup on Fri, 10 Jan 2014 23:25:01 -0800 wrote: >> >>> Over both eval-function (which doesn't usually do what I want when I >>> have inner functions) and eval-paragraph (which doesn't when I put a >>> line break in a function definition), I would prefer a command that >>> did "evaluate all lines that include the top-level bracket enclosing >>> point." That would be easy to implement using parse-partial-sexp and >>> cover the case discussed here. >> I would be happy to implement this. Then we would be able to inject the >> source code reliably. >> >> A bit of an issue is the paragraph evaluation. A common pattern in R >> interactive code is to have a bunch of one-liners to be evaluated at >> once. Top-level-form evaluation will break this pattern unless we expand >> the evaluated region to the whole paragraph containing the form. >> >> Sometimes I need to evaluate an inner form as well. A natural thing >> would be to put it on C-u, but C-u is historically taken for a not very >> useful visual evaluation toggling. >> >> Any ideas/proposals are welcome. >> >> Vitalie >> * MISC ** TODO [#A] populate ess-autoload.el and call it from ess-site.el :13_09: This will ensure that very quick start both for (require "ess-start") and MELPA users. ** TODO [#B] build ert based unit test suit :13_09: ** TODO split ess-mode into specialized derived modes ** DONE set PAGER="cat" environment variable for tramp process if unset? :LOGBOOK: - State "DONE" from "TODO" [2014-03-31 Mon 20:13] :END: ** TODO cleanup ESS namespace [2013-06-27 Thu] ** DONE remove reference to ssh.el from manual + add tramp workflow :LOGBOOK: - State "DONE" from "TODO" [2013-10-16 Wed 19:17] :END: [2013-07-10 wo] [[gnus:nnimap%2BSpinuVit:INBOX#51DD58EF.1010702@yahoo.de][Email from Jannis: Re: {ESS} ess-eldoc via ssh re]] ** TODO check Rodney's report on bastard symlinks [2013-07-11 do] ** DONE check if ess-remote works :LOGBOOK: - State "DONE" from "TODO" [2013-10-16 Wed 19:17] :END: [2013-08-12 ma] ** CANCELLED Help focus does not honor focus-follows-mouse/mouse-autoselect-window :CANCELLED: :LOGBOOK: - State "CANCELLED" from "TODO" [2013-10-16 Wed 19:16] \\ was not a bug: said users may want to consider setting ess-help-pop-to-buffer to nil :END: If you have focus-follows-mouse and mouse-autoselect-window set to t, then ask for help in an *R* buffer, i.e. > ?setwd The help buffer steals focus permanently instead of surrendering it to mouse movement; you need to physically click in the *R* buffer to restore the focus following the mouse. C-c C-d C-d behaves similarly. Ideally, we should respect the user's settings of focus-follows-mouse/mouse-autoselect-window in this common help/*R* buffer arrangement. ** TODO Make an option to remember eval-and-go code in comint history ** DONE DESCRIPTION file is killed if set to R-mode :LOGBOOK: - State "DONE" from "TODO" [2013-10-16 Wed 18:15] :END: ** TODO eldoc should ignore some functions Some functions have no useful argument information to report and they should simply be ignored. Ideally, this feature would be customizable so that each user could add their unfavorite functions. To start, I would put suggest: (), c(), list(), sqrt(), t() ** TODO ess-doc-map, ess-extra-map, and ess-dev-map are present "everywhere" notably in ess-help, inferior-ess, and ess-mode. It would be *really* user friendly if we have a "submenu" for each of these maps, and them in both ESS and iESS (or all 4: ESS, iESS, ESS-help, ESS-transcript, ..). ** DONE ess-execute-screen-options wrong in terminal :LOGBOOK: - State "DONE" [2014-03-31 Mon 20:11] :END: [2013-12-19 Thu] [[gnus:nnimap%2BSpinuVit:ESS#CAD%3D7RJZ4EHETKF4LPJpzuw0uO9AuzOtWDYVnV1cZAVQxAotVxg@mail.gmail.com][Email from Ali Tofigh: {ESS} ess-execute-screen-optio]] ** TODO Implement "Extract Function" functionality Proposed by Andreas Leha: ,---- | RStudio can analyze a selection of code from within the source editor | and automatically convert it into a re-usable function. Any "free" | variables within the selection (objects that are referenced but not | created within the selection) are converted into function arguments `---- ** DONE > a + b + c is not cleaned correctly with C-u C-u C-y :LOGBOOK: - State "DONE" from "TODO" [2014-03-31 Mon 20:05] :END: While you are in this part of the code, can you add C-u C-u C-y to the ESS menu item, although maybe it belongs on the Edit menu. Not clear to me which would be better. Thanks Rich [2014-02-20 Thu] [[gnus:nnimap%2BSpinuVit:ESS/ESS-core#CAGx1TMCSfK3XK6YghxomP03R_tFD2AiC4X%3D0NDcvoje%3D%2B9vMWw@mail.gmail.com][Email from Richard M. Heiberger: bug in ess-transcript-clean-re]] * RStudio (excerpts from Hadley's R-packages book) ** TODO Build & reload Available in RStudio via Cmd + Shift + B. This in- stalls the package, restarts R, and then reloads the package with library() (doing this by hand is painful). ** TODO Jump to github file view. If lines are selected jump to those lines. This is probably there in projectile. ess-17.11/etc/backbug50000644005071500004540000000145213202324174011424 00000000000000#!/bin/sh # ESS[BUGS]: 02/18/2004 # runs BUGS taking commands from command file # case `config.guess` in alpha*-dec-*) BUGS=bugs05.decalpha;; hppa*-hp-hpux*) BUGS=bugs05.hp;; i?86-pc-cygwin) BUGS=bugs05.exe;; i?86-*-freebsd*) BUGS=bugs05.freebsd;; powerpc*-*-*) BUGS=bugs05.rs6000;; sparc-sun-solaris*) BUGS=bugs05.sparc;; mips-sgi-irix*) BUGS=bugs05.sgi;; mips-dec-*) BUGS=bugs05.decmips;; esac case $# in 1) test -f bugs.bog && rm -f bugs.bog || true $BUGS bugs.buf bugs.bog bugs.out bugs.ind bugs1.out bugs1.ind $1 chmod -w bugs.bog ;; 2) test -f $1.bog && rm -f $1.bog || true $BUGS $1.buf $1.bog $1.out $1.ind ${1}1.out ${1}1.ind $2 chmod -w $1.bog ;; *) echo "usage: $0 [default_output_name] command_file";; esac ess-17.11/etc/backbug5.sparc0000644005071500004540000000062613202324174012535 00000000000000#!/bin/sh # ESS[BUGS]: 02/17/2004 # runs BUGS taking commands from command file # case $# in 1) bugs05.sparc 32 bugs $1 cp -fp bugs.log bugs.bog chmod -w bugs.bog ;; 2) bugs05.sparc 32 $1 $2 cp -fp $1.log $1.bog chmod -w $1.bog ;; 3) bugs05.sparc $1 $2 $3 cp -fp $2.log $2.bog chmod -w $2.bog ;; *) echo "usage: $0 [[number_of_bins] default_output_name] command_file";; esac ess-17.11/etc/backbugs0000755005071500004540000000116213202324174011523 00000000000000#!/bin/sh # ESS[BUGS]: 02/18/2004 # runs BUGS taking commands from command file # case `config.guess` in i?86-pc-cygwin) BUGS=bugs0603.exe;; i?86-*-linux*) BUGS=bugs0600.linux;; sparc-sun-solaris*) BUGS=bugs603.sparc;; mips-sgi-irix*) BUGS=bugs06.sgi;; esac case $# in 1) $BUGS 32 bugs $1 2>> bugs.log cp -fp bugs.log bugs.bog chmod -w bugs.bog ;; 2) $BUGS 32 $1 $2 2>> $1.log cp -fp $1.log $1.bog chmod -w $1.bog ;; 3) $BUGS $1 $2 $3 2>> $2.log cp -fp $2.log $2.bog chmod -w $2.bog ;; *) echo "usage: $0 [[number_of_bins] default_output_name] command_file";; esac ess-17.11/etc/backbugs.sparc0000644005071500004540000000063113202324174012627 00000000000000#!/bin/sh # ESS[BUGS]: 02/17/2004 # runs BUGS taking commands from command file # case $# in 1) bugs603.sparc 32 bugs $1 cp -fp bugs.log bugs.bog chmod -w bugs.bog ;; 2) bugs603.sparc 32 $1 $2 cp -fp $1.log $1.bog chmod -w $1.bog ;; 3) bugs603.sparc $1 $2 $3 cp -fp $2.log $2.bog chmod -w $2.bog ;; *) echo "usage: $0 [[number_of_bins] default_output_name] command_file";; esac ess-17.11/etc/checkTriple.Rd0000644005071500004540000000430513202324174012542 00000000000000\name{checkTriple} \title{Check Consistency of Conditional Independence for a Triple of Nodes} \usage{ "An Rd file exposing an ESS bug in (ess-next-code-line) : Jump to '\examples{' and the first code line (= all '##...') and use C-c C-n to send it to R. It works, *but* point does not advance to the next line; but rather jumps backward to the 50'percent' line. Adding a percent 'o/o' sign here ``fixes'' this bug (so I don't do it) " checkTriple(version.unf = c(NA, NA), maj.rule = FALSE, verbose = FALSE) } \arguments{ \item{version.unf}{ (integer) vector of length two: .............} \item{maj.rule}{logical indicating that the following majority rule is applied: if \code{b} is in less than 50\% of the checked sepsets, we say that \code{b} is in \bold{no} sepset. If \code{b} is in more than 50\% of the checked sepsets, we say that \code{b} is in \bold{all} sepsets. If \code{b} is in exactly 50\% of the checked sepsets, the triple is considered \sQuote{ambiguous}.} \item{verbose}{Logical asking for detailed output of intermediate steps.} } \description{ For each subset ......... } \references{ D. Colombo and M.H. Maathuis (2013). Order-independent constraint-based causal structure learning, (arXiv:1211.3295v2). } \examples{ ################################################## ## Using Gaussian Data ################################################## ## Load predefined data data(gmG) n <- nrow(gmG8$x) p <- ncol(gmG8$x) ## define independence test (partial correlations), and test level indepTest <- gaussCItest alpha <- 0.01 ## define sufficient statistics suffStat <- list(C = cor(gmG8$x), n = n) ## estimate CPDAG pc.fit <- pc(suffStat, indepTest, p=p, alpha=alpha, verbose = TRUE) if (require(Rgraphviz)) { ## show estimated CPDAG par(mfrow=c(1,2)) plot(pc.fit, main = "Estimated CPDAG") plot(gmG8$g, main = "True DAG") } checkTriple(a = 6, b = 1, c = 8, nbrsA = c(1,5,7), nbrsC = c(1,5), sepsetA = pc.fit@sepset[[a]][[c]], sepsetC = pc.fit@sepset[[c]][[a]], suffStat=suffStat, indepTest=indepTest, alpha=alpha, version.unf = c(2,2), verbose = TRUE) } \keyword{manip} ess-17.11/etc/chol2inv-ex.Rd0000644005071500004540000000126713202324174012447 00000000000000\title{chol2inv} \name{chol2inv-methods} \description{ Invert a symmetric, positive definite square matrix from its Choleski decomposition. Equivalently, compute \eqn{(X'X)^{-1}}{(X'X)^(-1)} from the (\eqn{R} part) of the QR decomposition of \eqn{X}. } \seealso{ \code{\link[base]{chol2inv}} (from the \pkg{base} package), \code{\link{solve}}. } %%-- In Rd preview (after C-c C-p), "se" ([s]kip to [e]xamples): %%-- "l" works at the 1st line, but does not go further from the 2nd \examples{ (M <- cbind(1, 1:3, c(1,3,7))) (cM <- chol(M)) # a "Cholesky" object... chol2inv(cM) \%*\% M # the identity stopifnot(all(chol2inv(cM) \%*\% M - Diagonal(nrow(M))) < 1e-10) } \keyword{algebra} ess-17.11/etc/completion_ideas.R0000644005071500004540000000136313202324174013460 00000000000000 ## inspired by: ## https://github.com/rstudio/rstudio/pull/191 ## nested calls should work df[a][, |] ## matrix, list, environments l <- list(aaaa = 1111, bbbb = 2222) l[a|] ## -> "aaaa" (quoted!) ## data table dt <- data.table(aaaa = 1111, bbbb = 22222) dt[, a|] # -> aaaa (unquoted!) ## attributes x <- "" attr(x, "foo") <- function(alpha, beta) {} attr(x, "foo")(al| # -> "alpha" ## chains mtcars %>% dplyr::select(mp| #-> mpg (unquoted)) ## models lm(mpg ~ cy| , data = mtcars) #-> cyl ## "by" keyword in data.table, inner_join, etc inner_join(foo, bar, by = c(| # provides completions for variables in foo when # on the left side of an =, and bar when on the # right side of an =. ess-17.11/etc/config.guess0000755005071500004540000013210013202324174012331 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2013-12-09' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ess-17.11/etc/ess-julia.jl0000644005071500004540000000444013202324174012241 00000000000000module ESS function all_help_topics() ## There are not clear topics anymore. Approximate those with a very general apropos(" ") apropos(" ") end function help(topic::AbstractString) VERSION >= v"0.4-" ? eval(current_module(), parse("@doc $topic")) : Base.Help.help(topic) end ## modified version of function show(io::IO, m::Method) function fun_args(m::Method) tv, decls, file, line = Base.arg_decl_parts(m) io = STDOUT::IO if !isempty(tv) Base.show_delim_array(io, tv, '{', ',', '}', false) end print(io, "(") join(io, [escape_string(isempty(d[2]) ? d[1] : d[1]*"::"*d[2]) for d in decls], ",", ",") print(io, ")") end ## modified versionof show(io::IO, mt::MethodTable) function fun_args(f::Function) mt = Base.MethodList(methods(f).mt) mod = Base.function_module(f) if mod == Main mod = "nil" end print("(list \"$mod\" nil '(") for d in mt print("\"") ## method fun_args(d) print("\" ") end print("))") end function fun_args(s::AbstractString) try m = eval(current_module(), parse(s)) if ! isa(m, String) fun_args(m) end catch print("(list nil nil nil)") end end function fun_args(t::DataType) print("(list nil nil '(") for d = fieldnames(t) print("\"$d\" ") end print("))") end ### OBJECT COMPLETION # Must print an output of the form: # # Cache Module # Write Module # add Function # free Function function components(m::Module) for v in sort(names(m)) s = string(v) if isdefined(m,v) println(rpad(s, 30), summary(eval(m,v))) end end end function components(t::DataType) for v in sort(fieldnames(t)) println(rpad(string(v), 30), "field") end end function components(v) t = typeof(v) if isa(t, DataType) return components(t) end end ### MISC function main_modules(m::Module) for nm in names(m) if isdefined(m, nm) mod = eval(m, nm) if isa(mod, Module) print("\"$nm\" ") end end end end main_modules() = main_modules(current_module()) end ess-17.11/etc/ess-roxy-tests.R0000644005071500004540000001545213202324174013077 00000000000000 ## Without this def. roxygen (i.e. C-c C-o C-t or C-c C-o C-r) will fail setGeneric("slplot", function(object, ...) { plot(object, ...) }) ##' \code{loadings(object)} and then design your own plotting method. ##' @title Side by side scores and loadings plot ##' @usage slplot(object, pcs=c(1,2), scoresLoadings=c(TRUE, TRUE), ##' sl="def", ll="def", hotelling=0.95, rug=TRUE, sub=NULL,...) ##' @param object ##' @param pcs ##' @param tjo ##' @return None, used for side effect. ##' @export ##' @author Henning Redestig setMethod("slplot", "pcaRes", function(object, pcs=c(1,2), tjo) { #(ess-roxy-get-function-args) opar <- par(no.readonly=TRUE) cl <- match.call() }) ##' .. content for \description{} (no empty lines) .. ##' ##' .. content for \details{} .. ##' @title Must have a title ##' @param a any ##' @param b any ##' @param d any ##' @param asd any ##' @return invisible ##' @author Henning Redestig trickyInArgsComments <- function(a,#comment b,#hejhopp trams d,asd) { print("hello") } ##' .. content for \description{} (no empty lines) .. ##' ##' @title Function example where arguments have defaults ##' @param a any ##' @param b string ##' @param cc ##' @return invisible ##' @author Henning Redestig withdef <- function(a, b=c("asd","ffd", "asd", "ffd", "asd", "ffd","asd", "ffd"), cc) { print("hello") } setClass(Class="inference", representation=representation(model="character" , sample.size="numeric" , robust.se="logical" , two.sided="logical" , ci.level="numeric"), contains=c("matrix")) ##' .. content for \description{} (no empty lines) ##' ##' .. content for \details{} .. ##' @title asd ##' @param a ##' @param asdsd ##' @param sd ##' @param ... ##' @return s ##' @author Henning Redestig tempFixNasFunction <- function(a,asdsd, sd, ...) { asds } setGeneric("updateMu", function(respM, gamma, ...) standardGeneric("updateMu")) ## (make-local-variable 'adaptive-fill-regexp) ## (setq adaptive-fill-regexp (concat ess-roxy-str adaptive-fill-regexp)) ## (make-local-variable 'adaptive-fill-first-line-regexp) ## (setq adaptive-fill-first-line-regexp (concat ess-roxy-str adaptive-fill-first-line-regexp)) ## (make-local-variable 'paragraph-start) ## (setq paragraph-start (concat "\\(" ess-roxy-str "\\)*" paragraph-start)) ## (make-local-variable 'paragraph-separate) ## (setq paragraph-separate (concat "\\(" ess-roxy-str "\\)*" paragraph-separate)) ## (auto-fill-mode) asd ##' aqdasd lksa odnsl dlsakdn lsakdn sladn asijdi j 1. asdsd alksnd ##' lasdn ldnad ##' ##' ##' alkdnal dl lakd lasdnladna ld aldan lda dlakd nladn a amd lakdn ##' ajdn asjdns ##' ##' lajnsd jasdn aksjdnaksjnd asjdnaksdnajsdnajsd aksdn askdjn ##' akjdn aksdnkasjdnka ##' ##' 1. aldn adlnsald ladn saldnlaksd naskl ##' 2. ad asdjnksadn adjn skajan kda dksadkas dkjan dkasndkadn ##' ajsd nkj dakjd sd ##' @title hej ##' @param fitta asdadsd ##' 1. ##' 2. asd ##' @param diagonals pung asa as a sad s dsa da das d asd asd add ##' @param tjo asd ##' @param asdasd ##' @return me ##' @author Henning Redestig tempFixNas <- function(fitta, diagonals, tjo, asdasd) { for(i in index) { data <- otherdata[i] } } ##' Simply replace completely ajksbdkjsa djskbdkajbd ##' ##' ksdb skdb skasdaj ahd (ess-roxy-beg-of-field) (newline-and-indent) ##' aksndlsakndlksdn jkahd ksn dkjands ##' @title Temporary fix for missing values ##' @param diagonals The diagonal to be replaced, i.e. the first, ##' second and so on when looking at the fat version of the matrix ##' @param tjo asdsdsdw ##' @return The original matrix with completely missing rows/cols ##' filled with zeroes. oasndsnd aksdnkasdnskans dkas ndkjasndksdn ##' skandkand ksjandknsd ##' @export ##' @examples ##' tempFixNas(iris) ##' pi <- 1 ##' plot(x) ##' @author Henning Redestig tempFixNas <- function(diagonals, tjo) { (ess-roxy-delete-args) wilcox.test (ess-roxy-goto-end-of-entry) badRows <- apply(mat, 1, function(x) all(is.na(x))) badCols <- apply(mat, 2, function(x) all(is.na(x))) mat[ badRows,] <- 0 (ess-roxy-get-args-list-from-def) mat[,badCols ] <- 0 (ess-roxy-get-args-list-from-entry) mat } ##' ##' ##'
##' @title asdsd ##' @param asd asd ##' @param test1 asd ##' @param asdsd ##' @param tjo asdasd ##' @return aa ##' @author Henning Redestig tempFixNas <- function(asd,test1,asdsd,tjo=c("asd", "asdasd")) { ## (ess-roxy-goto-end-of-entry) ## (setq fun (ess-roxy-get-args-list-from-def)) ## (setq ent (ess-roxy-get-args-list-from-entry)) ## (ess-roxy-merge-args fun ent) ## (ess-roxy-mrg-args fun ent) ## (ess-roxy-get-args-list-from-entry) ## (ess-roxy-get-function-args) ## (ess-roxy-goto-end-of-entry) ## (setq here (ess-roxy-delete-args)) ## (ess-roxy-insert-args (ess-roxy-get-args-list-from-def) here) badRows <- apply(mat, 1, function(x) all(is.na(x))) badCols <- apply(mat, 2, function(x) all(is.na(x))) mat[ badRows,] <- 0 mat[,badCols ] <- 0 mat } ##' ##' ##'
##' @title my title ##' @param test1 ##' @param tjo ##' @param pung ##' @param str ##' @return value ##' @author Henning Redestig tempFixNasBad <- function(test1,tjo=c("asd", "asdasd"), pung, str) { asdsd# (car (cdr (ess-end-of-function nil t))) } ##' Provides Bayesian PCA, Probabilistic PCA, Nipals PCA, Inverse ##' Non-Linear PCA and the conventional SVD PCA. A cluster based ##' method for missing value estimation is included for comparison. ##' BPCA, PPCA and NipalsPCA may be used to perform PCA on incomplete ##' data as well as for accurate missing value estimation. A set of ##' methods for printing and plotting the results is also provided. ##' All PCA methods make use of the same data structure (pcaRes) to ##' provide a unique interface to the PCA results. Developed at the ##' Max-Planck Institute for Molecular Plant Physiology, Golm, ##' Germany, RIKEN Plant Science Center Yokohama, Japan, and CAS-MPG ##' Partner Institute for Computational Biology (PICB) Shanghai, ##' P.R. China ##' ##' @name pcaMethods ##' @aliases pcaMethods ##' @docType package ##' @title pcaMethods ##' @useDynLib pcaMethods ##' @author Wolfram Stacklies, Henning Redestig NULL #' Title #' #' @param par Lorem ipsum dolor sit amet, consectetur adipiscing #' elit. Vivamus ligula purus, ultricies quis odio non, vulputate #' finibus risus. Donec eleifend quis dolor ut rhoncus. #' @param par2 Lorem ipsum dolor sit amet, consectetur adipiscing #' elit. Vivamus ligula purus, ultricies quis odio non. #' @examples #' # This long comment line can be paragraph-filled without squashing #' # the following lines of code into the comment #' fun(arg) #' print(object) ess-17.11/etc/ess-rutils-help-start.R0000644005071500004540000000111113202324174014324 00000000000000## Hacked help.start() to use with ess-rutils.el .rutils.help.start <- function (update=FALSE, remote=NULL) { home <- if (is.null(remote)) { port <- tools::startDynamicHelp(NA) if (port > 0L) { if (update) make.packages.html(temp=TRUE) paste0("http://127.0.0.1:", port) } else stop(".rutils.help.start() requires the HTTP server to be running", call.=FALSE) } else remote paste0(home, "/doc/html/index.html") } ess-17.11/etc/ess-s4.S0000644005071500004540000000303113202324174011253 00000000000000#### This is a dump of the S library used by S-mode with Version 4 of S. #### (from John Chambers ??) #### S-mode session functions. #### assign(..., where=0) makes them last only for the current session. ### Martin Maechler: see also ./ess-sp3.S ### which uses assign(.., wh=0) which seems better ".SmodeDump" <- function(x, name) { ## dump function for S-mode assign(".SmodeTmp", options(error = dump.calls), where = 0, i = T) on.exit( { options(.SmodeTmp) remove(".SmodeTmp", where = 0) } ) dump(x, file = name) } ".SmodeLoad" <- function(x) { ## skeleton of a dump.calls interface, enough to keep s-mode ## informed that an error took place. pseudo <- function() cat(get.message(), "Dumped\n", sep = "", file = "|stderr") ## source function for S-mode assign(".SmodeTmp", options(error = pseudo), where = 0, i = T) on.exit( { options(.SmodeTmp) remove(".SmodeTmp", where = 0) } ) invisible(source(x)) } ".SmodeObs" <- function(where, pattern) { if(pattern == "") objects(where) else objects(where, pattern) } ".SmodePaths" <- function() { ## the paths for the directories in the search list temp <- search() value <- character(length(temp)) for(i in seq(along.with = temp)) { obj <- database.object(i) if(is.character(obj) && length(obj) == 1) value[[i]] <- obj } value } "smode.lvsave" <- c(".Last.value", ".SmodeDump", ".SmodeLoad", ".SmodeObs", ".SmodePaths", "smode.lvsave") ess-17.11/etc/ess-sas-sh-command0000755005071500004540000000433613202324174013352 00000000000000#!/bin/sh ### (C) 1997, Richard M. Heiberger. ### This file is part of ESS. ## This file is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2, or (at your option) ## any later version. ## This file is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## A copy of the GNU General Public License is available at ## http://www.r-project.org/Licenses/ # For executing SAS, and running it in the proper manner for ESS # (feeding output back into appropriate ESS buffers). #echo $0 $@ #sas $1 2>$2 $3 set -x stdout=$1 stderr=$2 shift 2 set +x echo sas \$stdout 2\>$stderr $@ sas $stdout 2>$stderr $@ ## From the SAS online tech support: ## ## Redirecting the SAS Log and Output under UNIX. ## ## There are several ways of redirecting the SAS Log and Output under ## UNIX. ## ## To redirect the SAS Log, follow one of these steps: ## ## 1. ## In the source code, place the following line: ## ## proc printto log=stdout; ## ## to make a duplicate copy of the log in a file in addition ## to redirecting it to stdout, use this command to invoke ## SAS: ## ## sas -altlog doit.log doit.sas ## ## 2.Execute SAS in the background and use the UNIX 'tail' command ## to copy lines to stdout as they are added to the log. Use the ## command: ## ## sas doit.sas &; tail -f doit.log ## ## To redirect the SAS Log and Output under the Korn shell, use the ## following command: ## ## sas -stdio < doit.sas > doit.lst 2> doit.log ## ## To redirect the SAS Log and Output under the C-Shell, use the ## following command: ## ## (sas -stdio < doit.sas > doit.lst) >& doit.log ## From WWW.SAS.COM: ## How can I make SAS in batch mode behave like interactive SAS, ## continue running my SAS job, and not enter syntax check mode when ## it encounters an error? ## ## You can specify the NOSYNTAXCHECK option when you invoke your SAS ## program. ess-17.11/etc/ess-sp3.S0000644005071500004540000000302013202324174011430 00000000000000#### S-mode session functions. #### assign(..., where=0) makes them last only for the current session. #### Well, turns out we have two slightly different versions of the S code. #### This is the one that I think gets used with S-Plus; I'll send along #### the other version as well, but morally they should be equivalent, there #### are just a couple of changes I seem to have made for S4. /John ### Martin Maechler: see also ./ess-s4.S ### which does *not* use assign (why?) assign(".SmodeObs", function(where, pattern) { if(pattern == "") objects(where) else objects(where, pattern) }, where=0) assign(".SmodeLoad", function(x) ## source function for S-mode { assign(".SmodeTmp", options(error=dump.calls), where=0, i=T) on.exit({options(.SmodeTmp); remove(".SmodeTmp",where=0)}) source(x) }, where = 0) assign(".SmodeDump", function(x, name) ## dump function for S-mode { assign(".SmodeTmp", options(error=dump.calls), where=0, i=T) on.exit({options(.SmodeTmp); remove(".SmodeTmp",where=0)}) dump(x, file=name) }, where = 0) assign(".SmodePaths", function() ## the paths for the directories in the search list { temp <- search() value <- character(length(temp)) for(i in seq(along.with = temp)) { obj <- database.object(i) if(is.character(obj) && length(obj) == 1) value[[i]] <- obj } value }, where = 0) ess-17.11/etc/function-outline.S0000644005071500004540000000034613202324174013445 00000000000000f <- function() { ## Purpose: ## ---------------------------------------------------------------------- ## Arguments: ## ---------------------------------------------------------------------- ## Author: $A$, Date: $D$ } ess-17.11/etc/gpl-check0000755005071500004540000000266313202324174011606 00000000000000#!/bin/sh if [ $# -eq 0 -o "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" ] then echo "usage: gpl-check [-h|-help|--help|-2|-3|-u|-n] file1 [file2 ...]" echo " -h|-help|--help print this help" echo " -2 print file names found with GPLv2+" echo " -3 print file names found with GPLv3+" echo " -u print file names found with a GPL of unknown version" echo " -n print file names with no GPL found" echo " file1 [file2 ...] list of files to check" else GPLV2=0 GPLV3=0 GPLVUNK=0 NOGPL=0 for i do case $i in -2) GPLV2=1;; -3) GPLV3=1;; -23) GPLV2=1;GPLV3=1;; -u) GPLVUNK=1;; -n) NOGPL=1;; -nu|-un) GPLVUNK=1;NOGPL=1;; *) if [ $GPLV2 -eq 0 -a $GPLV3 -eq 0 -a $GPLVUNK -eq 0 -a $NOGPL -eq 0 ] then GPLV2=1 GPLV3=1 GPLVUNK=1 NOGPL=1 fi if grep -l 'either version 2, or' $i > /dev/null then if [ $GPLV2 -eq 1 ] then echo "$i GPLv2+" fi elif grep -l 'either version 3' $i > /dev/null then if [ $GPLV3 -eq 1 ] then echo "$i GPLv3+" fi elif grep -l 'GNU General Public License' $i > /dev/null then if [ $GPLVUNK -eq 1 ] then echo "$i GPLv unknown" fi else if [ $NOGPL -eq 1 ] then echo "$i no GPL" fi fi;; esac done fi ess-17.11/etc/icons/0000755005071500004540000000000013202324174011207 500000000000000ess-17.11/etc/icons/README0000644005071500004540000000224213202324174012007 00000000000000 Creating pixmaps: * spluslogo.xpm was dontated by David Smith at Insightful. * Other icons were created by SJE, using mostly `kiconedit' and hand-editing. * Transparency Need to add backgrounToolBarColor for XEmacs to show okay. e.g. /usr/share/xemacs-21.4.12/etc/toolbar/folder-cap-up.xpm has header: "X c Gray75 s backgroundToolBarColor", whereas I have set "c None" to indicate the background pixel; this line seems to work for both toolbars: ". c None s backgroundToolBarColor", * splus_letters_small.xpm 2010-05-18 & -21: SJE made this new Splus icon from the splus_letters_large.xpm (then image001.png from Louis Bajuk-Yorgan @tibco.com) file that Rich provided. I had to move the cross over to the left by one pixel, to then allow the image to be cropped to 48x48 (cropping performed in gimp). kiconedit was then used to rescale the icon to 24x24. Finally, background transparency added manually to the file, as noted above. 2010-05-21: updated file based on new image from TIBCO. Original 51x38 cropped to 50x38 in xv, then shrunk to 25x19 in kiconedit. Transparency added, and removed a lot of the extra white pixels into background colours manually in kiconedit. ess-17.11/etc/icons/rbuffer.xpm0000644005071500004540000000142413202324174013311 00000000000000/* XPM */ static char *rbuffer[]={ "24 24 3 1", ". c None s backgroundToolBarColor", "a c #000000", "# c #1532ed", "........................", "...............#........", "...............##.......", ".....#############......", ".....##############.....", ".....#############......", "...............##.......", "...............#........", "........................", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "...aaaaaaaaaaaaaaaaaa..."}; ess-17.11/etc/icons/rfunction.xpm0000644005071500004540000000177013202324174013671 00000000000000/* XPM */ static char *rfunction[]={ "24 24 18 1", "B c #000000", "k c #181818", "Q c #1f1f1f", "z c #232323", "L c #313131", "Z c #3c3c3c", "O c #404040", "a c #5e5e5e", "W c #676767", "U c #757575", "N c #848484", "P c #969696", "0 c #a0a0a0", ". c None s backgroundToolBarColor", "G c #b9b9b9", "I c #c6c6c6", "T c #d5d5d5", "# c #1532ed", "........................", "...............#........", "...............##.......", ".....#############......", ".....##############.....", ".....#############......", "...............##.......", "...............#........", "........................", "........................", "........................", "..............az..zU....", "....ILBBz...GkP....aO...", "....zU......BG......LP..", "....BG.....UO.......0z..", "..BBBBBBP..zP.......GB..", "....BG.....BG........BI.", "....BG.....BG........BI.", "....BG.....LP.......GB..", "....BG.....NO.......PL..", "....BG......Q0......z0..", "....BG......TQU0..0ZW...", "..............NL..Z0....", "........................"}; ess-17.11/etc/icons/rline.xpm0000644005071500004540000000142213202324174012765 00000000000000/* XPM */ static char *rline[]={ "24 24 3 1", ". c None s backgroundToolBarColor", "a c #000000", "# c #1532ed", "........................", "...............#........", "...............##.......", ".....#############......", ".....##############.....", ".....#############......", "...............##.......", "...............#........", "........................", "........................", "........................", "........................", "........................", "........................", "........................", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "........................", "........................", "........................", "........................"}; ess-17.11/etc/icons/rregion.xpm0000644005071500004540000000142413202324174013323 00000000000000/* XPM */ static char *rregion[]={ "24 24 3 1", ". c None s backgroundToolBarColor", "a c #000000", "# c #1532ed", "........................", "...............#........", "...............##.......", ".....#############......", ".....##############.....", ".....#############......", "...............##.......", "...............#........", "........................", "........................", "........................", "........................", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "...aaaaaaaaaaaaaaaaaa...", "........................", "........................", "........................"}; ess-17.11/etc/icons/splus_letter_small.xpm0000644005071500004540000000667113202324174015604 00000000000000/* XPM */ static char *dummy[]={ "25 19 151 2", "Qt c None s backgroundToolBarColor", "#M c #044b83", "#R c #044c86", "#t c #044c87", "ae c #044d87", "an c #044e7f", ".o c #044e81", "#l c #044e8d", "ak c #044f84", ".B c #044f88", "#m c #044f8e", "am c #045188", ".j c #04518b", ".O c #045191", "#6 c #04528f", "#O c #045388", ".k c #04538c", "#U c #04538e", "#Y c #045392", ".l c #045489", "## c #04548c", "#i c #045490", "#v c #045492", "#. c #04558e", "#C c #045593", "#k c #04568d", "#B c #045695", "#G c #045698", ".Y c #045795", ".R c #045890", "#j c #04598f", ".4 c #045995", "aj c #054e7b", "al c #054e89", "#h c #054e8d", "#S c #055188", "#V c #05518d", ".m c #055282", ".K c #055284", ".5 c #055583", ".t c #055791", "#u c #055894", ".n c #064e86", "#s c #074d76", ".p c #074e83", "a. c #074f89", "#a c #074f8a", "af c #075389", "#9 c #07548e", ".A c #075592", ".F c #075594", "#1 c #075a99", ".c c #094d79", ".9 c #094f89", ".J c #095681", "#A c #0b568d", ".s c #0c4f85", "#5 c #0c5188", "#w c #0d5486", ".b c #0e4e7d", ".N c #105287", ".X c #105685", "#H c #115789", "#Z c #13508a", "#2 c #135287", "#F c #195c8a", ".i c #1a5c8b", "#8 c #1b5684", "ai c #1b5a81", "ad c #1c5d87", "#P c #1d5c8c", "#r c #1d5f8a", "#N c #1f5b7d", "ao c #1f5c85", "#0 c #205a86", "#n c #206292", ".u c #216794", ".d c #245b81", ".G c #256390", ".3 c #265f85", "a# c #266287", "#x c #296286", "#b c #2a5f96", "#g c #2b6395", ".a c #2c658f", ".Q c #307195", ".E c #326897", ".S c #356f98", ".Z c #35789b", "ag c #396c94", "#I c #3a6a78", "#z c #3f7497", ".1 c #3f7c9e", "#J c #427585", "aa c #42768f", "#X c #447ca1", ".C c #457b9a", ".z c #457ba8", "ac c #48778f", ".q c #4e86b0", "#7 c #4f86b5", ".6 c #50829b", "#q c #538db5", "#D c #538eb3", ".e c #547f91", "ab c #5487a1", "#T c #58859c", "ah c #5983a7", "#c c #5a7d99", ".2 c #5b809c", ".P c #5d94bb", "#K c #6c91a0", "#4 c #6c99ba", "#L c #6c9cb7", "#o c #7097a7", "ap c #739eb3", ".v c #73a7c0", ".0 c #7cacc3", "#y c #7faac6", ".# c #82a0a8", "#Q c #84aec8", ".I c #86a8bd", ".L c #89b3cd", "#d c #8aa7b6", "as c #8db2cc", ".y c #8db9cd", ".h c #8eb5c9", ".8 c #8eb9d3", "#W c #8fb2c9", "at c #91b7c8", "#3 c #94b4cb", "ar c #95b7cb", ".T c #979798", ".U c #99999a", "#f c #99b9cd", ".g c #9b9b9b", ".V c #9c9c9c", ".r c #9cc2d4", ".w c #a7c8d0", ".x c #a9c8d1", "#p c #a9cbda", ".f c #abc5cd", "#E c #abcad6", "aq c #b1d0e0", "au c #b3d2e2", ".7 c #b8cfd6", "#e c #baced7", ".W c #d4e0e4", ".H c #d7e7ed", ".M c #dae6ef", ".D c #eef8f8", "QtQtQtQt.#.a.b.c.d.e.fQtQtQtQtQtQtQtQt.g.gQtQtQtQt", "QtQt.h.i.j.k.l.m.n.o.p.qQtQtQtQtQtQtQt.g.gQtQtQtQt", "Qt.r.s.t.u.v.w.x.y.z.A.B.CQtQtQtQtQtQt.g.gQtQtQtQt", ".D.E.F.G.HQtQtQtQtQt.I.J.K.LQtQtQtQtQt.g.gQtQtQtQt", ".M.N.O.PQtQtQtQtQtQtQt.Q.R.SQt.g.T.U.g.g.g.V.V.g.g", ".W.X.Y.ZQtQtQtQtQtQtQt.0.1.2Qt.g.g.g.g.g.g.g.g.g.g", "Qt.3.4.5.6.7QtQtQtQtQtQtQtQtQtQtQtQtQt.g.gQtQtQtQt", "Qt.8.9#.###a#b#c#d#eQtQtQtQtQtQtQtQtQt.g.gQtQtQtQt", "QtQt#f#g#h#i#j#k#l#m#n#oQtQtQtQtQtQtQt.g.gQtQtQtQt", "QtQtQtQt#p#q#r#s#t#u#v#w#xQtQtQtQtQtQt.g.gQtQtQtQt", "QtQtQtQtQtQtQtQt#y#z#A#B#C#DQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt#E#F#G#HQtQtQtQtQtQtQtQtQtQtQt", "#I#J#KQtQtQtQtQtQtQtQt#L.B#MQtQtQtQtQtQtQtQtQtQtQt", "#N#O#PQtQtQtQtQtQtQtQt#Q#R#SQtQtQtQtQtQtQtQtQtQtQt", "#T#U#V#WQtQtQtQtQtQtQt#X#Y#ZQtQtQtQtQtQtQtQtQtQtQt", "Qt#0#1#2#3QtQtQtQtQt#4#5#6#7QtQtQtQtQtQtQtQtQtQtQt", "QtQt#8#9a.a#aaabacadaeafagQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtahaiajakalamanaoapQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtaqarasatauQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; ess-17.11/etc/icons/splus_letters_large.png0000644005071500004540000001025513202324174015722 00000000000000‰PNG  IHDR3&iº£sRGB@À}Å pHYsÄÄ•+tEXtSoftwareMicrosoft Officeí5q-IDATXõY pTWvm-HH`›@Æ/ÿ ?KÊÃN<éµ þÃg lA¾øödÍݲò4Øiè0½^èùóëf2 ÀC×=¦,v×n`Ñ–S¥ñc²œT†€ˆ ¼˜†¼O¿@ã½6¹],a3niˆ¬®¬¡ÝsFýZZlÈÙ¼¿ˆ™‹~ãSðØÖÃoB:Ò³³ªŽãJ—gÕMG+olæúCùÇ, aS5'Ç.6«P»vã&ªª«QHã}žðåȦM›”ñb¬—cb°”l‹gÄcÂtâ†k­ýWü”JÊ@`r1=“«Vu¤V‚3÷­èTµŽõÕÈ!¹ÃP0nƒ¹£pIý0¨ t8È8R³Ž6µbéÇu˜·õR·ÃâræÀ'‡q±ùž Ï–ŽNœ>ó'4œ<‰Ó§Oã$ç“Þm»víê'¶oß®jﺆ†œ:u õõõ8{ö,ɧ…ÔL0šnáå),Ã߇%y=ü“Ö!0.Ç.@Bv5¶œ<ï:îãî1%œ*¤t¨CnqCŒdeôñ»›ñÜ*_L!oyÕʶê£e™:ÔÍf?RgLížÕÀkk>BhäôJ’‹òfåJ ‚GNÅ¿ü!3ÖmEií9½Ü†F2µîò°œ«‡±Rू۬6èD(ûºìs˜^0†ËÝÎs® eO ÛT!$¡%9"ûߪyïé¹ò^ ¨\¥o;ÝÈjM›Í¤%£M*…_â:„&f¡™ÈžAÑÙø§[0mÕ!äUGõÞ£8xî¾¹qw;ï÷(ô7k—Ûf(QÉ ÉC,’nḽÞt+|rF†¯ÆÈöáÇ™kkkUÑì-a|  >”`Dr›hæ ´ígð|r,¿›O)¢!8AÂ-A±9ŽáIí¶†ÍÓ#ÞÁsãfá_§g`Ââ|LÏÞŠü}gQûÍ=|K÷ðž7ôÄp´ñÅVåK—°¡ËÆW{WtQâItŸ0ë­åzO‹é°j¦Ã‹·;Èßy¯¾¹¡#—°Ø­bÍB —’ÊÑ/¹ AÉ ¿‰œÀs"*ÇåÁ2šª:œÞŸ‰ç¦#>ÿ3©ÃÉËbòl Æ&‘Ã-9åÅìÆC*øÄ‰Ý4-”½wï^%4}é­<`œºæ²{‹!Üárî¹ÐŠ9¥Ÿã•©E8*ýÂ)ïÇJZN!¹ý“¨’É|±«@AKµÌö`<‹nø _€gÆÎÀˆYʜķmvzÊ©ØÕ‰Éϼ1Há.gw¼÷4N€‰Ð”’››‹µk×*EàSÍ=Õu¯À!¥G¢P’8øa­ÆN'ö_lDÚGµ˜”˶`v†$иÅìo–Æß͙߄|M(@PB)&U KàÇÜz,Š-Âèyx&qf•ÖàìÍv6FÓ ‡T½2 €ž`„nwìØ;wbëÖ­ÊS= @¼Ù;4=`˜˜2œ\-;+¹ÁmêZUD œçŸÊSwð^õ ŒZ¶3eyÁC§ÃÄôgß30f5‚ãsà?Ò…^Âö᱉ôÖÐÙx:f)VîýJI™vd×)}\mÝ`z·²-šëÒ¥KJ}ýõ×Jùr¥gâ?ÒWëôJ; {»Gƒ©ÁfâJ1eÜÄö÷ì]+ö]¾ªúóXµë(æTìCdÆüõ µQ ØÌ µ“ K˜O¥°L¬P Ü2:ÿ¸pv_¾©ºN—£ƒkw[-àŸ“óÂ\â  ³/•_Ý`¬ôŒƒòD§"6Ën7MwuQgQÈ}L3ø2›·­¶y‡°Õ]ñyÏßD^M&¯Þ‚—ÞHGÈØÅÌ¥UlðŠôz5½•K°K1­t®Ú¸¢ò|ý®—ï~úO@<*¼~ègX4uo_¢NÏ Lš+==å2:•Ä—3†——\æe×îÝǦ#g±¬'2ŸÆSþÇW ùdù!~ýN ö^lò†ÎÖn{ˆ·½C€9Å#”õ¦A:4ìJzˆZ¹":Í4ºà´¶¨ÔŠPw—‚+÷žhêDLF5üFÌ'Adc@bI! Cb>Dþž3\ Åç›—Þ´û¿xÌû›+µ9˱°¬)›*‘Z¹5uõ*´\NÑ_4Oj…G:3DLEãnƒ@l-ž6k—ÁÕ¢êˆüÊÆÓìTý¢W¨¢+ –‚EU‡T˜ÂŸläOýYžœ¢=ù6BÃ߯2ÔSQs05³Bå„Çï\q§U}ŒP²€¤ØIÓ,CzE¬ð0»¼EÕ|ý~·x£ª;~QÌ*ËïçãÝõ{ÑÖ·~óò¢ÍZhl¥ ^ä2ŽNAøÂõ¸ÚÖÊdc( 5G‡ªCk¢ö¦”4™nÃPg¯C°±%¶34¿¼ceîlf®¤°Øf"”j<0l!ÁÔþÿI.=¤…„ÏfÏd(¬„?«ý‹¬ü;ÿt6I<†™[>`8íªQ$@c좯$¿dÛ —’&½×IJÕ ¼öòm¼òn©ú†L%”P„þáK°dÓçÞ0s?ú+àÿLîéíg±¬êÑ«:©P­bŽ…UÞ—JpË÷.—Èv‡àð’„ÝTv÷}‹Ó{¾ìÐ)</ß(NãD¿­ÄÈ‘UsvßÕ}ì!K}«©E¥d!hl*‚âóÕ—˘L¼<-[]A«£›VØ‹¸h¸¨+2ÓNÆ3@ÎÖ¡Iw+&ì ÛÙíº'_ú:gœN«f¥l±r•îóÙÇ›:0»øsüíäµx % To: % Subject: Re: [ESS] noweb file and assignment key % Date: Tue, 30 Oct 2012 20:57:32 +0000 \documentclass{article} \begin{document} <>= i.can.haz.assginment <- TRUE @ Now, we will introduce an extraneous apostrophe, for no reason ' <>= aa <- _2 #ess-smart-underscore-no-longer-works @ ' <>= nowitdoes <- cat("Note the apostrophe above which closes the earlier one\n") @ \end{document} ess-17.11/etc/other/0000755005071500004540000000000013202324174011215 500000000000000ess-17.11/etc/other/S-spread/0000755005071500004540000000000013202324174012673 500000000000000ess-17.11/etc/other/S-spread/README0000644005071500004540000000512713202324174013500 00000000000000spread We have designed and constructed an interactive spreadsheet interface to S/Splus that maintains the complete power and generality of the S language. At user level, the interface behaves like the popular spreadsheet programs available for personal computers: one or more S data objects (matrices or three-way arrays) are displayed on the screen. The user graphically (with mouse or cursor motion) identifies a cell for review, and possible updating, of its contents. Macros containing arbitrary S expressions can be associated with the entire spread.frame or one of its cells. The spreadsheet is designed in a modular fashion with device-specific methods for the display and updating of spreadsheet objects. We include methods for two devices: the generic S graphics device and a character based device using the emacs 19 environment. Richard M. Heiberger (rmh@astro.ocis.temple.edu) Magnus Mengelbier (magnus@astro.ocis.temple.edu) The interface is described in \item Heiberger, Richard M., and Magnus Mengelbier (1995, to appear) ``Design of a Spreadsheet Interface for S,'' {\it Proceedings of the American Statistical Association}, Section on Statistical Graphics. This is placeholder announcement. The files will be available on statlib after one more level of testing. Files in this distribution: README Abstract, file listing, and setup instructions. sprd3d.how Instructions for spread.frame users. sprd-emc.s S for emacs driver sprd-grd.s S for class="grade" sprd-spr.s S for class="spread" This is the primary set of functions. sprd-txt.s S for graphics device driver based on text() command. sprd-int.el emacs lisp file Load this file into emacs 19 each time you start a spread.frame session. gradexmp.s S example Setup Instructions The emacs spreadsheet interface for S consists of four S files "sprd-*.s" and one emacs lisp file "sprd-int.el". 1. Create a new directory to store the four S files "sprd-*.s" and one emacs lisp file "sprd-int.el". I use "/disk5/rmh/sprd3d/". You might wish to place it under the directory where you store other S/Splus libraries. 2. Make a new .Data, "/disk5/rmh/sprd3d/.Data", start S/Splus, and source the four sprd-*.s files: > source("sprd-emc.s") > source("sprd-grd.s") > source("sprd-spr.s") > source("sprd-txt.s") > q() 3. The directory /disk5/rmh/sprd3d/ should now be treated as a library directory and should not be further touched. All further work using the spread.frames should be done in a different directory. 4. See the file sprd3d.how for user instructions. You may look at the file "gradexmp.s" for an example. ess-17.11/etc/other/S-spread/S-spread.el0000644005071500004540000002431313202324174014616 00000000000000;; spreadsheet in S, S-mode or stand-alone ;; Richard M. Heiberger ;; 1996 ;; S-mode ;; Load this file from a running *S* window after starting S/Splus with M-x S ;; or ;; stand-alone ;; Load this file from the dired window in which .Data exists. ;(set-variable 'buffers-menu-max-size nil) (defvar spread-directory (concat "/tmp/" (make-temp-name "spr")) "Directory in which to store ascii spreadsheet displays.") (defvar spread-command-file (concat spread-directory "/*command*") "File through which S will communicate with emacs.") (defvar spread-directory-p nil "predicate value non-nil when directory has been defined.") (defun print-find-emacs nil "display spread.frame from minibuffer" (interactive) (spread-print-find (read-string "spread.frame: ") t)) (defun emacs-rc nil "" (interactive) (emacs-cell "1") ) (defun emacs-macro nil "" (interactive) (emacs-cell "2") ) (defun emacs-macro-control-text nil "" (interactive) (emacs-cell "4") ) (defun emacs-macro-print-text nil "" (interactive) (emacs-cell "5") ) (defun emacs-cell (result-type) "" (interactive) (setq spread-name (buffer-name)) (setq r (count-lines 1 (point))) (setq c (current-column)) (set-buffer S-buffer) (spread-insert (format "emacs.cell('%s', %s, %s, %s)" spread-name r c result-type ) ) (save-excursion (set-buffer "*command*") (revert-t-t) (goto-char (point-min)) (setq beg (point)) (end-of-line) (if (equal result-type "4") (progn (setq command (buffer-substring beg (point))) (set-buffer S-buffer) (spread-insert command) ) (setq command (read-string "> " (buffer-substring beg (point)))) (set-buffer S-buffer) (spread-insert command) (spread-insert "invisible(assign(.Active, x))") (spread-print-find spread-name nil) (goto-line r)(forward-char c) )) ) (defun spread-insert (spread-command) "" (interactive) (goto-char (point-max)) (insert spread-command) (comint-send-input) (accept-process-output spread-process) ) (defun revert-t-t nil "revert-buffer with no questions asked" (interactive) (revert-buffer t t) ) (defun revert-t-t-read-only nil "revert-buffer, no questions, read-only" (interactive) (revert-buffer t t) (setq buffer-read-only t) ) (defvar spread-mode-map nil "Keymap for Spread mode.") (if spread-mode-map nil (setq spread-mode-map (make-sparse-keymap)) (define-key spread-mode-map "\C-cv" 'revert-t-t-read-only) (define-key spread-mode-map "\C-m" 'emacs-rc) (define-key spread-mode-map "\C-cc" 'emacs-macro) (define-key spread-mode-map "\C-cs" 'emacs-macro-control-text) (define-key spread-mode-map "\C-cp" 'emacs-macro-print-text) (define-key spread-mode-map "f" 'emacs-print-find-emacs) (define-key spread-mode-map [mouse-2] 'spread-mouse-print-find-emacs) (define-key spread-mode-map [mouse-3] 'spread-mouse-rc) ) (defun spread-mouse-rc (event) "move point then enter" (interactive "e") (mouse-set-point event) (emacs-rc) ) (defun spread-mouse-print-find-emacs (event) "move point then find file" (interactive "e") (mouse-set-point event) (emacs-print-find-emacs) ) (defun spread-mode () "Major mode for spreadsheets.\\{spread-mode-map}" (interactive) (kill-all-local-variables) (make-local-variable 'beg) (make-local-variable 'command) (use-local-map spread-mode-map) (setq mode-name "Spread") (setq major-mode 'spread-mode) (if (equal (buffer-name) ".Registry") (spread-highlight-macro)) (setq buffer-read-only t) ) ;; from dired.el L547 ; (put-text-property (point) ; (save-excursion ; (dired-move-to-end-of-filename) ; (point)) ; 'mouse-face 'highlight) ; ;; (put-text-property (point) (mark) 'mouse-face 'highlight) (defun spread-highlight-macro nil "highlight spread.frame names for mouse access" (interactive) (save-excursion (goto-char (point-min)) (search-forward "**macro**")(forward-char) (toggle-read-only -1) (while (progn (setq beg (point))(end-of-line) (not (= beg (point))) ) (put-text-property beg (1-(point)) 'mouse-face 'highlight) (forward-char) ) (toggle-read-only 1) ) (save-buffer) ) (defun emacs-print-find-emacs nil "" (interactive) (beginning-of-line) (setq beg (point)) (end-of-line) (backward-char) (setq spread-name (buffer-substring beg (point))) (spread-print-find spread-name nil) ) (defun find-spread-frame-directory nil "Locate directory in which spread.frame functions are stored." (list-command-history) (set-buffer "*Command History*") (goto-char (point-min)) (search-forward "(load-file ") (goto-char (1+ (match-end 0)))(setq beg (point)) (end-of-line)(search-backward "/") (goto-char (match-end 0)) (setq spread-frame-directory (expand-file-name (buffer-substring beg (point)))) (kill-buffer "*Command History*") ) (defvar inferior-spread-mode nil "Non-nil if using inferior-spread-mode as a minor mode of some other mode.") (make-variable-buffer-local 'inferior-spread-mode) (put 'inferior-spread-mode 'permanent-local t) (or (assq 'inferior-spread-mode minor-mode-alist) (setq minor-mode-alist (append minor-mode-alist (list '(inferior-spread-mode " spread"))))) (defvar inferior-spread-mode-map nil) (if inferior-spread-mode-map nil (setq inferior-spread-mode-map (make-sparse-keymap)) (define-key inferior-spread-mode-map "\C-cv" 'revert-t-t) (define-key inferior-spread-mode-map "\C-cr" 'print-find-emacs)) (or (assq 'inferior-spread-mode minor-mode-map-alist) (setq minor-mode-map-alist (cons (cons 'inferior-spread-mode inferior-spread-mode-map) minor-mode-map-alist))) (defun inferior-spread-mode (&optional arg) "Toggle Inferior Spread mode. With arg, turn Inferior Spread mode on if arg is positive, off otherwise." (interactive "P") (setq inferior-spread-mode (if (null arg) (not inferior-spread-mode) (> (prefix-numeric-value arg) 0))) (if inferior-spread-mode (progn (set-process-filter spread-process 'comint-output-filter) (set-variable 'comint-output-filter-functions '(spread-output-filter comint-postoutput-scroll-to-bottom)) (set-variable 'comint-scroll-to-bottom-on-output "this") (set-variable 'comint-scroll-show-maximum-output t) (force-mode-line-update)) (message "Don't know how to turn off Inferior Spread mode"))) (defun spread-process () "Start stand-alone S process to run spread." (comint-run S-program) (setq spread-process (get-buffer-process (current-buffer))) (setq comint-prompt-regexp shell-prompt-pattern) (if (not(file-writable-p ".Data/.Audit")) (accept-process-output spread-process)) (accept-process-output spread-process) spread-process ) (defun spread-output-filter (str) "detect errors in S output" (if (or (string-match "Dumped" str) (string-match "Error" str) ) (progn (switch-to-buffer-other-window S-buffer) (comint-show-maximum-output) (set-variable 'quit-flag t); beeps and writes "quit" in the message area ) ) ) (defun spread-print-find (spread-name update-Registry) "Place SPREAD-NAME in foreground of S-buffer (*S* or *Splus*), update .Registry and revert buffer when UPDATE-REGISTRY is t, print all views of spread.frame associated with SPREAD-NAME in .Registry to /tmp/spr***** directory, and find or revert all views into emacs buffers." (interactive) (set-buffer S-buffer) (spread-insert (format "print.find.emacs('%s', update.Registry=%s)" spread-name (if update-Registry "T" "F"))) (if update-Registry (save-excursion (spread-find-file ".Registry"))) (spread-print-sprds) (switch-to-buffer spread-name) ) (defun spread-print-sprds () "Display in buffers all views of spread.frame" (interactive) (save-excursion (set-buffer "*command*") (revert-t-t) (goto-char (point-min)) (while (< (point) (point-max)) (set-buffer "*command*") (setq beg (point)) (end-of-line) (setq spread-name-i (buffer-substring beg (point))) (save-excursion (spread-find-file spread-name-i)) (forward-line))) ) (defun spread-find-file (spread-name) "Display one view of spread.frame" (interactive) (switch-to-buffer spread-name) (if (buffer-file-name) (revert-t-t-read-only) (kill-buffer spread-name) (find-file (concat spread-directory "/" spread-name)) ) (spread-mode) ) (defun spread-start () "load emacs spread.frame handler" (if (equal major-mode 'inferior-S-mode) (progn (setq spread-mode "S-mode") (setq S-buffer (current-buffer))) (if (equal major-mode 'dired-mode) (progn (setq spread-mode "stand-alone") (setq S-program (read-string "Splus or S? " "Splus")) (setq S-buffer (concat "*" (file-name-nondirectory S-program) "*")) (if (not (get-buffer S-buffer)) (get-buffer-create S-buffer)) (if (get-buffer-process S-buffer) (set-variable 'quit-flag t))) (set-variable 'quit-flag t))) (setq spread-home-directory default-directory) (find-spread-frame-directory) (if (not spread-directory-p) (progn (make-directory spread-directory) (setq spread-directory-p t))) (set-buffer S-buffer) (cd spread-home-directory) (setq spread-process (if (equal spread-mode "stand-alone") (spread-process) (get-buffer-process (current-buffer)))) (inferior-spread-mode 1) (spread-insert (format "assign('.spread.Data',attach('%s.Data'),frame=0)" spread-frame-directory)) (spread-insert (format "emacs.start('%s')" spread-directory)) (find-file spread-command-file) (spread-find-file ".Registry") ) ;; start it up (spread-start) ess-17.11/etc/other/S-spread/asaprc.ps0000644005071500004540001025302113202324174014434 00000000000000%!PS-Adobe-2.0 %%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software %%Title: asaprc.dvi %%Pages: 6 1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginProcSet: tex.pro /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{ /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail} B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image} imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{ moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{ S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w }B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{clear SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N /p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{ @scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X} B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{ itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{ PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if} ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if} if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{ DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa 18 118 df<701C783C783C703CF038F038F038E0 78E070E070E0700E0B799816>34 D<0C1E3F1F0F070E1E7CF860080B7A8416>44 D<00FC0003FF0007FF800E03C01E01C00E01C00001C00001C0000380000F0001FE0003FC0001FE 00000F00000380000380000380000380600380F00780E00700F01E007FFC003FF8000FE0001219 7D9816>51 D<07FF0007FF800FFF000E00000E00000E00000E00000E00001C00001C00001C0000 1C00001C00001C0000380000380000380000380000380000380000700000700000700000700000 700000700000E00000E00000E00000FFE000FFF000FFE0001120789C16>91 D<07FF0007FF8007FF00000700000700000700000700000700000E00000E00000E00000E00000E 00000E00001C00001C00001C00001C00001C00001C000038000038000038000038000038000038 00007000007000007000FFF000FFF000FFE00011207F9C16>93 D<07F0001FFC001FFE001C0F00 08070000070000070003FF001FFF003F0E00780E00E00E00E00E00E01E00F03E007FFFC03FCFC0 1F07C012127D9116>97 D<00FE0003FF0007FF800F07001C0200380000700000700000700000E0 0000E00000F000007006007807003C1E001FFC000FF80007E00011127C9116>99 D<0007C0000FE00007E00000E00001C00001C00001C001F1C007FDC00FFFC01F07803C03803803 80700380700380700380E00700E00700F00700700F00700F00783F003FFFC01FEFE00787C01319 7E9816>I<01F80007FC000FFE001E0F003C07003803807003807FFF807FFF80FFFF00E00000E0 00007006007007003C1E003FFE000FF80007E00011127C9116>I<0003C0000FE0001FF0003CE0 0070400070000070003FFF803FFFC03FFF8000E00000E00000E00000E00000E00000E00001C000 01C00001C00001C00001C00001C0007FFE00FFFE007FFE0014197E9816>I<0030007800780030 00000000000000001FE03FF01FF000E000E000E000E000E000E001C001C001C001C001C001C0FF FEFFFEFFFE0F1A7C9916>105 D<0FF8000FFC000FFC00001C0000380000380000380000380000 380000380000700000700000700000700000700000700000E00000E00000E00000E00000E00000 E0007FFF80FFFF807FFF8011197E9816>108 D<1E78F03FFDF81FFFF80F9F380F1E380E1C380E 1C380E1C380E1C381C38701C38701C38701C38701C38701C3870FE7CF8FF7EFCFE3C7816128091 16>I<1F1F003FBF801FFFC007E1C00781C00701C00701C00701C00701C00E03800E03800E0380 0E03800E03800E0380FF8FE0FFCFF0FF8FE014127F9116>I<1FC1F01FE7F81FEFFC01DC1801F8 0001E00001E00001C00001C0000380000380000380000380000380000380007FFC00FFFE007FFC 0016127F9116>114 D<01F90007FF800FFF801E07003807003803003C00001FE0000FF80001FE 00000E00300700700700700700781E00FFFC00FFF80047E00011127D9116>I<03000380070007 000700FFFEFFFFFFFE0E000E000E000E000E000E001C001C041C0E1C0E1C1C1C3C1FF80FF007C0 10177C9616>I<7C1F00FE3F807E1F801C07001C07001C07001C07001C07001C0700380E00380E 00380E00380E00381E00383E003FFF801FFFC00F8F8012127D9116>I E /Fb 1 25 df<07C000040FF0000C3FFC000C3FFE000C783F001CF00FC03CE003F078C001FFF0C0 00FFF0C0003FC040000F801E0B7D8F25>24 D E /Fc 32 122 df 45 D<060F0F06000000000000000000003078F06008127C910D>58 D<00001800000018000000 38000000380000007800000078000000B8000001B800000138000002380000023C0000041C0000 041C0000081C0000181C0000101C0000201C0000201C00007FFC0000401C0000801C0001801C00 01001C0002001C0002001C0004000E000C000E001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFE00003C0780003801C0003801C0003800E0003800E0007000F000700070007000700070 00F000E000F000E000F000E000F000E000F001C001E001C001E001C001E001C001C0038003C003 800380038007800380070007000E0007001C0007003800070070000E01C000FFFF00001C1C7D9B 1F>68 D<01FFFFE0003C00E0003800600038004000380040003800400070004000700040007020 400070200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C080000381 0100038001000380020003800200070004000700040007000C00070018000E007800FFFFF0001B 1C7D9B1C>I<0003F020001E0C60003002E000E003C001C001C0038001C0070000C00E0000801E 0000801C0000803C0000803C000000780000007800000078000000F0000000F0000000F001FFC0 F0001E00F0001C00F0001C00F0001C00F0001C00700038007000380038003800180078000C0090 000707100001F800001B1E7A9C20>71 D<01FFE0003C0000380000380000380000380000700000 700000700000700000E00000E00000E00000E00001C00001C00001C00001C00003800803800803 80080380100700100700300700600700E00E03C0FFFFC0151C7D9B1A>76 D<01FE0007F8003E000780002E000F00002E001700002E001700002E002700004E002E00004E00 4E00004E004E00004E008E00008E011C00008E011C00008E021C00008E021C0001070438000107 043800010708380001071038000207107000020720700002072070000207407000040740E00004 0780E000040700E0000C0700E0001C0601E000FF861FFC00251C7D9B25>I<01FC03FE001C0070 003C0060002E0040002E0040002E00400047008000470080004700800043808000838100008381 00008181000081C1000101C2000101C2000100E2000100E2000200E40002007400020074000200 74000400380004003800040038000C0018001C001000FF8010001F1C7D9B1F>I<01FFFC00003C 070000380380003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000 E0070000E00E0000E0380001FFE00001C0000001C0000001C00000038000000380000003800000 03800000070000000700000007000000070000000F000000FFE000001A1C7D9B1C>80 D<000F8400304C00403C00801801001803001803001806001006001006000007000007000003E0 0003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001806001806003 00600200F00400CC180083E000161E7D9C17>83 D<1FFFFFC01C0701C0300E00C0200E0080600E 0080400E0080401C0080801C0080801C0080001C00000038000000380000003800000038000000 70000000700000007000000070000000E0000000E0000000E0000000E0000001C0000001C00000 01C0000001C0000003C000007FFE00001A1C799B1E>I<03CC063C0C3C181C3838303870387038 E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<01F007080C08181C383830 0070007000E000E000E000E000E000E008E010602030C01F000E127B9113>99 D<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC00063C 000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E200C0E200C0E2 0061E4006264003C3800111D7B9C15>I<01E007100C1018083810701070607F80E000E000E000 E000E000E0086010602030C01F000D127B9113>I<0003C0000670000C70001C60001C00001C00 00380000380000380000380000380003FF8000700000700000700000700000700000E00000E000 00E00000E00000E00001C00001C00001C00001C00001C000038000038000038000030000030000 070000C60000E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E38 1C381C381C381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D91 13>I<0FC00001C00001C0000380000380000380000380000700000700000700000700000E7800 0E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C00383800703880703880 707080707100E03200601C00111D7D9C15>I<0180038001000000000000000000000000000000 1C002600470047008E008E000E001C001C001C0038003800710071007100720072003C00091C7C 9B0D>I<1F800380038007000700070007000E000E000E000E001C001C001C001C003800380038 0038007000700070007000E400E400E400E40068003800091D7C9C0B>108 D<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C07 01C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122 >I<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C0038 1C40381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E700E70 0EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008E0C008E0 C011C0E011C0E001C0E001C0E00381C00381C00381C00381800703800703000707000706000E8C 000E70000E00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I<3C3C26C2 468747078E068E000E000E001C001C001C001C0038003800380038007000300010127C9112> 114 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F00 0E127D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E000E00 1C001C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700470700470700 870E00870E000E0E000E0E001C1C001C1C001C1C001C1C003838803838801838801839001C5900 078E0011127C9116>I<1E06270E470E4706870287020E020E021C041C041C041C081808380818 1018200C4007800F127C9113>I<1E01832703874703874703838707018707010E07010E07011C 0E021C0E021C0E021C0E04180C04181C04181C081C1C100C263007C3C018127C911C>I<1E0327 0747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818381C7007F00070007000E0 E0C0E1C0818047003C00101A7C9114>121 D E /Fd 1 33 df<02000000000400000000040000 0000080000000010000000002000000000FFFFFFFFF0FFFFFFFFF0200000000010000000000800 000000040000000004000000000200000000240E7D902A>32 D E /Fe 67 126 df34 D<0387000387000387000387000387000387007FFFC0FFFFE0FFFFE0070E00070E00070E000E1C 000E1C000E1C000E1C00FFFFE0FFFFE07FFFC01C38001C38001C38001C38001C38001C38001319 7F9816>I<30787C3C1C1C1C1C3878F0E040060D789816>39 D<00E001E0038007000E001C001C 0038003800700070007000E000E000E000E000E000E000E000E000E00070007000700038003800 1C001C000E000700038001E000E00B217A9C16>II<01C00001C00001C00001C00071C700F9CF807FFF001FFC 0007F00007F0001FFC007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<01 C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C00001 C00001C00001C00001C00001C00001C00011137E9516>I<387C7E7E3E0E1E1C78F060070B7984 16>II<70F8F8F8700505788416>I<000180000380000380 000700000700000E00000E00001C00001C0000380000380000700000700000E00000E00001C000 01C0000380000380000700000700000E00000E00001C00001C0000380000380000700000700000 E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F007007007007 00E00380E00380E00380E00380E00380E00380E00380E00380F00780700700700700780F003C1E 001E3C001FFC000FF80003E00011197E9816>I<01800380038007800F807F80FF807380038003 800380038003800380038003800380038003800380038003807FF87FFC7FF80E197C9816>I<07 E0001FF8003FFC00783E00E00700F00780F00380600380000380000380000700000700000E0000 1C0000380000700000E00001C0000380000F00001E03803803807FFF80FFFF807FFF8011197E98 16>I<07E0001FF8003FFC00781E00780700300700000700000700000E00003E0007FC0007F000 07FC00001E00000700000300000380000380600380F00380E00700781E003FFC001FF80007E000 11197E9816>I<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C 00381C00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FF C001FFC013197F9816>I<3FFE003FFE003FFE0038000038000038000038000038000038000038 00003BF0003FFC003FFE003C0F00300700000380000380600380F00380F00380E00700781E003F FC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F00780600700000 700000E3F800EFFC00FFFE00F80F00F00700F00380E00380E00380700380700380700780380700 3C1E001FFC000FF80003E00011197E9816>II<07F0001FFC003FFE007C1F00F0 0780E00380E00380E003807007007C1F001FFC0007F0001FFC003C1E00700700F00780E00380E0 0380E00380F007807007007C1F003FFE001FFC0007F00011197E9816>I<03E0000FF8001FFC00 3C1E00700E00700700E00700E00780E00380E00380E00780700780780F803FFF801FFB800FE380 000700000700300700780E00781C007078003FF0001FE0000F800011197E9816>I<70F8F8F870 000000000000000070F8F8F8700512789116>I<000180000780001F80003E0000F80001F00007 C0000F80003E0000FC0000F00000FC00003E00000F800007C00001F00000F800003E00001F8000 078000018011157E9616>60 D<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF 80FFFF807FFF00110B7E9116>II<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00 071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1FE0 7F1FC013197F9816>65 D<7FF800FFFE007FFF001C0F001C07801C03801C03801C03801C07801C 07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C01C03C01C07807F FF80FFFF007FFC0012197F9816>I<01F18007FB800FFF801F0F803C0780380380700380700380 F00000E00000E00000E00000E00000E00000E00000E00000F000007003807003803803803C0700 1F0F000FFE0007FC0001F00011197E9816>I<7FF800FFFE007FFF001C0F001C07801C03C01C01 C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03 C01C07801C0F807FFF00FFFE007FF8001319809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C 01C01C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C 00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013197F9816>II<7E1FC0FF3FE07F1F C01D07001D87001D87001D87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67001C67 001C77001C77001C37001C37001C37001C17007F1F00FF9F007F0F0013197F9816>78 D<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8 001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F03C01419 7F9816>82 D<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800003F8000 1FF00007FC0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC00 C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E0 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC 000FFE0007FC0013197F9816>I<7F1F807F3F807F1F800E1E000E1C00073C0007380003B80003 F00001F00001E00000E00001E00001F00003F00003B80007B800071C00071C000E0E000E0E001C 07007F1FC0FF1FE07F1FC013197F9816>88 DI<7FFF80FFFF80FFFF80E00700E00F00E0 1E00E01C00003C0000780000700000F00001E00001C00003C0000780000700000F00001E03801C 03803C0380780380700380FFFF80FFFF80FFFF8011197E9816>II93 D<03000F803FE0FDF8F07840100D067C9816>I<1FE0003FF000 7FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E00 7FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E00000E00000E00000E00000E00000E 3E000EFF000FFF800F83C00F00E00E00E00E00700E00700E00700E00700E00700E00700E00E00F 01E00F83C00FFF800EFF00063C001419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000 E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00007F00003F000007000007 0000070000070003C7000FF7001FFF003C1F00780F00700700E00700E00700E00700E00700E007 00E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E 7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010127D9116>I<001F00007F80 00FF8001E78001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3 C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C000FF8001FF0001BE0003800 001800001FFC001FFF003FFF807803C0E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE 0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E00000E00000E3C000EFE000F FF000F87800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03807F C7F0FFE7F87FC7F01519809816>I<018003C003C0018000000000000000007FC07FC07FC001C0 01C001C001C001C001C001C001C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<00300078 0078003000000000000000001FF81FF81FF8003800380038003800380038003800380038003800 38003800380038003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E0000FE00 007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0 000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816>III<7E3C00FEFE007FFF000F87800F03 800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7 F01512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E0 0380F00780700700780F003C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF007FFF80 0F83C00F00E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF80 0EFF000E3C000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000141B809116> I114 D<0FEC3FFC7FFCF03CE01CE01C7000 7F801FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<03000007000007000007 00000700007FFF00FFFF00FFFF0007000007000007000007000007000007000007000007010007 038007038007038007870003FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E0380 0E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF007FBF8 03E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C 00071C00071C0003B80003B80003B80001F00001F00000E00013127F9116>I<7F1FC07F3FC07F 1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F 1FC0FF3FE07F1FC013127F9116>120 D<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E0007 0E00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000 E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC0700780 700F00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FFFFC0 FFFFC012127F9116>I<001F80007F8000FF8001E00001C00001C00001C00001C00001C00001C0 0001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001C00001C00001C00001C0 0001C00001C00001C00001C00001C00001E00000FF80007F80001F8011207E9C16>I<7C0000FF 0000FF800003C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000 FF00007F80007F8000FF0001E00001C00001C00001C00001C00001C00001C00001C00001C00001 C00003C000FF8000FF00007C000011207E9C16>125 D E /Ff 67 123 df<007E1F0001C1B180 0303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01 C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C07F87F8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01 E03C000E00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C 007FC7FCFF80211D809C23>14 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000 E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002 000100008000400A2A7D9E10>I<800040002000100018000C000C000600060003000300038001 800180018001C001C001C001C001C001C001C001C001C001C001C001C001800180018003800300 0300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080 040C7C830C>44 DI<60F0F06004047C830C>I<00010003000600060006 000C000C000C0018001800180030003000300060006000C000C000C00180018001800300030003 00060006000C000C000C00180018001800300030003000600060006000C000C00010297E9E15> I<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007 E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C70007000700 070007000700070007000700070007000700070007000700070007000700070007000700070007 000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E00 1C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E018 30201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700F F80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00003C0000 5C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C0 1C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<03E00C 301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003 C003C003C00360026004300C1C1007E0101D7E9B15>56 D<03C00C301818300C700C600EE006E0 06E007E007E007E007E0076007700F300F18170C2707C700060006000E300C780C781870102030 30C00F80101D7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<00060000 0006000000060000000F0000000F0000000F00000017800000178000001780000023C0000023C0 000023C0000041E0000041E0000041E0000080F0000080F0000180F8000100780001FFF8000300 7C0002003C0002003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F >65 DI<001F808000E0618001801980070007800E0003801C0003 801C00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F000 0000F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001000E 000200070004000180080000E03000001FC000191E7E9C1E>IIII<001F808000E0618001801980070007800E0003801C000380 1C00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F00000 00F0000000F000FFF0F0000F80700007807800078078000780380007801C0007801C0007800E00 078007000B800180118000E06080001F80001C1E7E9C21>III<1FFF00F80078007800780078007800780078007800780078007800 7800780078007800780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>I76 DII<003F800000E0E0000380380007001C000E000E001C0007003C0007803800038078 0003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0 F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C00038038 0000E0E000003F80001B1E7E9C20>II<003F800000E0E0000380 380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F0 0001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0 380003803C0E07801C1107000E208E000720DC0003A0F80000F0E020003FE02000006020000070 60000078E000003FC000003FC000001F8000000F001B257E9C20>II<07E0801C19 80300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE 0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D002 00CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F002080 0F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00001F800003FFFC001B1C7F9B1E>IIII<7FF0FFC00FC03E000780180003C018 0003E0100001E0200001F0600000F0400000788000007D8000003D0000001E0000001F0000000F 0000000F8000000F80000013C0000023E0000021E0000041F00000C0F8000080780001007C0003 003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>I<1FC000307000783800781C0030 1C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F 870012127E9115>97 DI<07E00C301878307870306000E0 00E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F00000700000700 00070000070000070000070000070000070000070000070003E7000C1700180F00300700700700 600700E00700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0 131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E0006000700230021804 0C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<0003 8003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C0001000 003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E 0007F800121C7F9215>II<18003C003C00180000000000 00000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C 001C001C00FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 60E0F0C0F1C061803E000B25839C0D>IIII< FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C0380 1C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003007003806001 80E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F0001212 7F9115>II<03C1000C3300180B00300F00700700700700E00700E00700E00700 E00700E00700E00700600700700700300F00180F000C370007C700000700000700000700000700 000700000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F80 3FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C00 1C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003 C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001D80000F00000 700000780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>II<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FF F80E127F9112>I E /Fg 31 121 df<00180000780001F800FFF800FFF80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C >49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F8 0003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C018038018070018 0E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03 F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE0001FF000007 C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07 F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE000 37E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FF FFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I< 000070000000007000000000F800000000F800000000F800000001FC00000001FC00000003FE00 000003FE00000003FE00000006FF000000067F0000000E7F8000000C3F8000000C3F800000183F C00000181FC00000381FE00000300FE00000300FE00000600FF000006007F00000E007F80000FF FFF80000FFFFF800018001FC00018001FC00038001FE00030000FE00030000FE000600007F0006 00007F00FFE00FFFF8FFE00FFFF825227EA12A>65 D68 DI72 DI75 D82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC 000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00 003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA1 1F>I<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F0 3F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83 F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00 007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000 003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00 01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E 00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83 BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC 00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003 FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000 0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800 13237FA211>I104 D<1C003E007F007F007F003E001C000000000000000000000000000000FF00FF001F001F001F00 1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310 >I 108 DII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007E FC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0 007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F0 0011167E9516>I<0180000180000180000180000380000380000780000780000F80003F8000FF FF00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F 81800F81800F81800F81800F81800F830007C30003FE0000F80011207F9F16>III120 D E /Fh 52 122 df<78FCFCFEFE7A0202040408083040070E7D850D>44 D<78FCFCFCFC7806067D850D>46 D<00600001E0000FE000FFE000F3E00003E00003E00003E000 03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000 03E00003E00003E00003E0007FFF807FFF80111B7D9A18>49 D<07F8001FFE00383F80780FC0FC 07C0FC07E0FC03E0FC03E07803E00007E00007C00007C0000F80001F00001E0000380000700000 E0000180600300600600600800E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F800 1FFE003C1F003C0F807C07C07E07C07C07C03807C0000F80000F80001E00003C0003F800001E00 000F800007C00007C00007E03007E07807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800 131B7E9A18>I<000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F 80060F800C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F 80000F8001FFF801FFF8151B7F9A18>I<1801801FFF001FFE001FFC001FF8001FC00018000018 000018000018000019F8001E0E00180F801007800007C00007E00007E00007E07807E0F807E0F8 07E0F807C0F007C0600F80381F001FFE0007F000131B7E9A18>I<78FCFCFCFC78000000000000 78FCFCFCFC7806127D910D>58 D<00038000000380000007C0000007C0000007C000000FE00000 0FE000001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E00 00C07E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007 E0FFC07FFEFFC07FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F00 00E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC 000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C00300 03F80E0000FFFC00001FE0001B1C7D9B22>67 DIII<000FF008007FFE3801FC07F807 E001F80F8000781F0000783F0000383E0000387E0000187C000018FC000000FC000000FC000000 FC000000FC000000FC000000FC007FFFFC007FFF7C0001F87E0001F83E0001F83F0001F81F0001 F80F8001F807E001F801FC07F8007FFE78000FF818201C7D9B26>III75 DIII<003FE00001F07C0003C01E000F800F 801F0007C01E0003C03E0003E07E0003F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC00 01F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E0003F07E0003F03E0003E03F0007E01F 0007C00F800F8003C01E0001F07C00003FE0001D1C7D9B24>II82 D<07F8201FFEE03C07E07801E07000E0F000E0F0 0060F00060F80000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F000 00F0C000F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFF FFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F800000 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 001F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>IIII89 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807 C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D I<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800007800 007801803C01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F000 01F00001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F8 01F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I< 01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F80000780000 7C00603C00601E00C00F038001FC0013127F9116>I<007F0001E38003C7C00787C00F87C00F83 800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80000F80000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<03 F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF80010000018 00001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007 FF00151B7F9118>II<1E003F003F003F003F001E000000 00000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F 001F00FFE0FFE00B1E7F9D0E>I<007800FC00FC00FC00FC007800000000000000000000000003 FC03FC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C 707CF87CF878F8F070E01F800E26839D0F>IIIII<01FC000F07801C01C03C01E07800F0 7800F0F800F8F800F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC00 15127F9118>II114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E12 7E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F001F00 1F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>IIII121 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin %%EndSetup %%Page: 1 1 bop 399 28 a Fh(DESIGN)15 b(OF)h(A)g(SPREADSHEET)g(INTERF)-5 b(A)o(CE)17 b(F)o(OR)e(S)276 97 y(Ric)o(hard)f(M.)i(Heib)q(erger)f(and)g (Magn)o(us)g(Mengelbier,)e(T)l(emple)h(Univ)o(ersit)o(y)76 147 y(Ric)o(hard)g(M.)i(Heib)q(erger,)f(T)l(emple)f(Univ)o(ersit)n(y)l(,)g (Departmen)o(t)f(of)i(Statistics,)e(Philadelp)o(hi)o(a,)g(P)l(A)0 293 y(Key)j(W)l(ords:)21 b(Splus)0 391 y Fg(Abstract)42 472 y Ff(W)m(e)14 b(ha)o(v)o(e)h(designed)h(and)f(constructed)i(an)e(in)o (teractiv)o(e)0 521 y(spreadsheet)k(in)o(terface)f(to)f(S)g(\(Bec)o(k)o(er,)i (Cham)o(b)q(ers,)e(and)0 571 y(Wilks)12 b(1988\))f(that)i(main)o(tains)d(the) k(complete)e(p)q(o)o(w)o(er)h(and)0 621 y(generalit)o(y)e(of)f(the)i(S)f (language.)16 b(A)o(t)c(user)g(lev)o(el,)f(the)g(in)o(ter-)0 671 y(face)k(b)q(eha)o(v)o(es)g(lik)o(e)f(the)h(p)q(opular)g(spreadsheet)i (programs)0 721 y(a)o(v)n(ailable)8 b(for)i(p)q(ersonal)g(computers:)17 b(one)10 b(or)g(more)g(S)g(data)0 770 y(ob)r(jects)k(\(matrices)f(or)f (three-w)o(a)o(y)i(arra)o(ys\))f(are)g(displa)o(y)o(ed)0 820 y(on)h(the)h(screen.)22 b(The)15 b(user)h(graphically)d(\(with)h(mouse)f(or)0 870 y(cursor)j(motion\))e(iden)o(ti\014es)h(a)g(cell)h(for)f(review,)g(and)g (p)q(os-)0 920 y(sible)f(up)q(dating,)f(of)h(its)g(con)o(ten)o(ts.)20 b(The)14 b(user)h(can)g(graph-)0 970 y(ically)d(iden)o(tify)g(one)h(of)g(the) g Fe(spread.frame)p Ff('s)e(asso)q(ciated)0 1019 y(macros,)19 b(con)o(taining)f(an)h(arbitrary)g(S)g(expression,)i(and)0 1069 y(then)13 b(either)h(up)q(date)f(the)g(macro's)f(de\014nition)g(or)h (execute)0 1119 y(it.)42 1169 y(The)23 b(curren)o(t)i(v)o(ersion,)g(a)o(v)n (ailable)d(on)h(statlib)f(\(send)0 1219 y(spread)17 b(from)d(S\),)h(uses)i (the)f(classes)h(and)e(metho)q(ds)h(tec)o(h-)0 1269 y(nology)k(in)o(tro)q (duced)i(in)e(S)h(V)m(ersion)g(3)g(\(Cham)o(b)q(ers)g(and)0 1318 y(Hastie,)11 b(1992\).)k(The)c(spreadsheet)h(is)e(designed)h(in)e(a)h (mo)q(d-)0 1368 y(ular)g(fashion)g(with)h(device-sp)q(eci\014c)i(metho)q(ds)d (for)g(the)i(dis-)0 1418 y(pla)o(y)17 b(and)i(up)q(dating)f(of)f(spreadsheet) k(ob)r(jects.)33 b(W)m(e)18 b(in-)0 1468 y(clude)c(metho)q(ds)e(for)h(t)o(w)o (o)g(devices:)19 b(the)14 b(generic)g(S)f(graph-)0 1518 y(ics)20 b(device)h(and)e(a)h(c)o(haracter)h(based)g(device)f(using)g(the)0 1567 y(emacs)14 b(en)o(vironmen)o(t.)19 b(The)d(goal)d(is)h(an)h(S)f(V)m (ersion)h(4)g(im-)0 1617 y(plemen)o(tation)c(that)i(tak)o(es)h(full)e(adv)n (an)o(tage)g(of)g(the)i(ev)o(en)o(t-)0 1667 y(driv)o(en)g(readers)h(to)f(b)q (e)h(made)d(a)o(v)n(ailable.)42 1717 y(W)m(e)i(discuss)h(the)g(design)g (decisions)g(mandated)f(b)o(y)g(the)0 1767 y(join)o(t)h(constrain)o(ts)i(of)f (pro)o(viding)f(complete)g(spreadsheet)0 1816 y(capabilit)o(y)i(along)g(with) h(the)i(full)d(p)q(o)o(w)o(er)i(of)e(S,)i(and)f(the)0 1866 y(p)q(ortabilit)o(y)f(considerations)i(for)f(w)o(orking)g(with)g(sev)o(eral)0 1916 y(di\013eren)o(t)d(screen)h(handling)c(tec)o(hnologies.)0 2050 y Fg(1)56 b(In)n(tro)r(duction)42 2130 y Ff(A)16 b(spreadsheet)i(in)o (terface)f(to)f(S,)f(as)i(in)e(Figure)h(1,)g(can)0 2180 y(simplify)11 b(sev)o(eral)k(situations.)j(W)m(e)c(use)h(it)f(for)f(sim)o(ultane-)0 2230 y(ous)j(data)f(collection,)g(displa)o(y)m(,)f(and)i(summarizatio)o(n.)k (It)0 2280 y(is)15 b(useful)f(for)h(data)f(handling)g(and)g(cleaning)h(op)q (erations,)0 2330 y(exp)q(ecially)i(when)g(w)o(orking)g(with)f(m)o(ultiple)f (link)o(ed)i(\014les.)0 2379 y(It)e(can)g(pro)o(vide)f(in)o(teractiv)o(e)h(m) o(ultiple)d(views)j(of)f(a)h(single)0 2429 y(data)d(\014le.)17 b(It)c(is)f(also)g(useful)g(for)g(statisticians)h(w)o(orking)e(in)0 2479 y(en)o(vironmen)o(ts)j(where)h(other)g(p)q(eople)g(exp)q(ect)h(data)f (to)f(b)q(e)0 2529 y(spreadsheet)i(compatible.)42 2579 y(A)21 b(spreadsheet)i(in)e(S)g(di\013ers)h(in)f(sev)o(eral)g(imp)q(ortan)o(t)0 2629 y(w)o(a)o(ys)13 b(from)e(an)i(ordinary)g(spreadsheet.)20 b(Data)13 b(is)g(en)o(tered)0 2678 y(directly)18 b(as)g(an)g(S)g(ob)r(ject,)i (hence)f(the)g(data)e(con)o(v)o(ersion)1086 293 y(Figure)d(1.)k(Cell)13 b(Up)q(date)h(F)m(orces)h(Re-ev)n(aluation)1013 376 y(a.)i(The)c(en)o(tire)h Fe(spread.frame)c Ff(is)j(displa)o(y)o(ed)f(in)g(a)h(screen)1013 426 y(bu\013er.)k(The)12 b(user)f(iden)o(ti\014es)g(one)g(cell)g(for)f(up)q (dating,)h(usu-)1013 476 y(ally)g(b)o(y)h(mo)o(ving)e(a)j(p)q(oin)o(ting)e (device)j(or)f(cursor.)18 b(The)13 b(for-)1013 525 y(m)o(ula)g(asso)q(ciated) j(with)f(the)h(cell)f(is)g(displa)o(y)o(ed)g(in)g(a)g(win-)1013 575 y(do)o(w.)1013 579 y 14800896 6364380 1184071 1184071 28286156 12959006 startTexFig 1013 579 a %%BeginDocument: sl1.ps gsave 18.000000 197.000000 translate /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 412.000000 -179.000000 scale /picstr 561 string def 561 244 8 [561 0 0 -244 0 244] {currentfile picstr readhexstring pop} image 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89e3ed8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d89e3ed8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d8d89e3effffff00ffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffff00000000ffffff000000ffffffffffffffffffffffffff ffffffffffff00000000000000000000ffff00000000000000000000ffff0000000000 0000000000ffff00000000000000000000ffff00000000000000000000ffff00000000 000000000000ffff00000000000000000000ffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffff000000000000000000ffffffff 00000000ff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d89e3e3effffff0000ffffffffffffffffffffffffffffffff ffffffffffffff0000ffffff00000000ffffffff000000ffffffffffffffffffffffff ffffffffffffff00000000000000000000ffff00000000000000000000ffff00000000 000000000000ffff00000000000000000000ffff00000000000000000000ffff000000 00000000000000ffff00000000000000000000ffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffff000000000000000000ffffff 000000000000000000ffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d8d89e3effffff00000000ffffffffffffffffffffffffff ffffffffffffffffff0000ffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff000000 00ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff0000 0000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 00000000000000000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89e3e3effffffffff00000000ffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00 000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff 00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff00000000ffff00000000ffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d8d89e3effffffffffffff00000000ffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffff00000000ffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffff ffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffff00000000ffffffffffff0000000000000000 0000ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d89e3e3effffffffffffffffff00000000ffffffff ffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffff00000000ffffffffffffffffff00000000ffffffffff ffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffff ffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffff00000000ffffffffffffffff00000000000000 000000ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d8d89e3effffffffffffff00000000ffffffffff ffffffffffffffffffffffffffff00000000ffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffff00000000ffffff ffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffff ffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d89e3e3effffffffff00000000ffffffffffff ffffffffffffffffffffffffffff000000000000ffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d8d89e3effffff00000000ffffffffffffff ffffffffffffffffffffffffffffff000000ff000000ffffffffff000000ffffffffff ffffff0000ffffff0000ffffffffffffffff00000000ffffffffffffffffffff000000 00ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff0000 0000ffffffffffffffff00000000ffffffffffffffff00000000ffffff0000ffffff00 00ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffff0000 00ffffffffffff000000ffff00000000ffffff0000ffffff0000ffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d89e3e3effffff0000ffffffffffffffff ffffffffffffffffffffffffffffff00000000ffff000000ffffffff000000ffffffff ffffffff0000ffffff0000ffffffffffffffffff000000ffffffff0000000000000000 0000ffff00000000000000000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffffff0000ffffff 0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffff00 0000ffffffffffff000000000000000000ffffff0000ffffff0000ffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d89e3effffff00ffffffffffffffff ffffffffffffffffffffffffffffff00000000ffffffff000000ffffff000000ffffff ffffffffff0000ffffff0000ffffffffffffffffffff000000ffffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffff000000000000 00000000ffff00000000000000000000ffff00000000000000000000ffffff0000ffff ff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffff 000000ffffffffffffff00000000ff000000ffffff0000ffffff0000ffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffff0000ffffff0000ffffffffffffffffffff00000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffff ff000000ffffffffffffffffffffffff000000ffffff0000ffffff0000ffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00000000ffffff0000ffffff0000ffffffff00000000000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff00 0000000000ffffffffffffffffffffffff000000ffffff0000ffffff0000ffffffff00 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000000000ffffff0000ffffff0000ffffffff00000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffffff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff 000000000000ffffffffffffffffffffffff000000ffffff0000ffffff0000ffffffff 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000ffffd8d89e3e3effff00 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffff0000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000ffffd8d8d89e3effff 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffff0000000000000000000000000000ffffff00000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000ffff000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000ffffd8d89e3e3eff ff00000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000ffffffff0000000000000000000000000000ffffff000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000ffffffff000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000ffffd8d8d89e3e ffff000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000ffffff00000000000000000000000000000000ffffff0000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000ffffffff000000000000000000000000 0000000000000000000000000000000000000000000000000000000000ffffd8d89e3e 3effff00000000000000000000000000000000000000000000000000ffff0000000000 ffffffff00ffff0000000000ffffffff00000000000000000000000000ffffffffffff ffffffff00ffffff00ffffff00ffffff00000000ffffffff0000ffffff00000000ffff ffffffffff00000000ffffffffffff00000000000000ffffff00000000000000000000 00000000000000000000ffffffffffff00000000000000ffffffffffffff0000000000 ffffffffffffff00000000000000ffffffffff00000000000000ffffff000000000000 ffffffffff000000000000ffffff000000ffffff0000000000ffffff00000000000000 ffffffffffffffffff0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000ffffff0000000000ffffffffffffff0000000000ffffff00ffffff ff0000000000ffffff0000000000000000000000ffffffffffffff00000000ffffffff 0000ffffff000000ffffffff00ffffff0000000000ffffffff00000000000000000000 000000000000000000000000000000000000000000000000000000000000ffffd8d8d8 9e3effff0000000000000000000000000000000000000000000000000000ffff000000 ffffffffffff00ffff000000ffffffffffff000000000000000000000000ffffffffff ffffffffff00ffffff00ffffff00ffffff000000ffffffffffffffffffff000000ffff ffffffffffff000000ffffffffffffffff000000000000ffffff000000000000000000 00000000000000000000ffffffffffffffff0000000000ffffffffffffffffff000000 ffffffffffffffff000000000000ffffffffffff00000000000000ffffff0000000000 ffffffffffffffff00000000ffffff000000ffffff0000000000ffffff000000000000 00ffffffffffffffffff00000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000ffffff000000000000ffffffffffffffffff000000ffffffffffff ffffff00000000ffffff00000000000000000000ffffffffffffffffff0000ffffffff ffffffffffff0000ffffffffffffffffff000000000000ffffff000000000000000000 00000000000000000000000000000000000000000000000000000000000000ffffd8d8 9e3e3effff0000000000000000000000000000000000000000000000000000ffffff00 00ffff0000ffff00ffffff0000ffff0000ffff000000000000000000000000ffffff00 00000000000000ffffff00ffffff00ffffff0000ffffff000000ffffffff000000ffff ffff0000000000000000ff0000000000ffffff0000000000ffffff0000000000000000 0000000000000000000000ff0000000000ffffff000000ffffffff0000000000ff0000 ffffffff00000000000000000000ffffff0000000000000000000000ffffff00000000 ffffff000000ffffff00000000ffffff000000ffffff0000000000ffffff0000000000 0000000000ffffff000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffff00000000000000ff0000000000ffffffff0000ffffffff00 00ffffff00000000ffffff000000000000000000ffffffff0000000000ff00ffffff00 0000ffffffff0000ffffffffffffffffffff000000000000ffffffff00000000000000 0000000000000000000000000000000000000000000000000000000000000000ffffd8 d8d89e3effff000000000000000000000000000000000000000000000000000000ffff 0000ffff0000ffff0000ffff0000ffff0000ffff000000000000000000000000ffffff 0000000000000000ffffff00ffffff00ffffff0000ffffff00000000ffffff0000ffff ffff000000000000000000000000000000ffffff000000000000000000000000000000 000000000000000000000000000000000000ffffff0000ffffffff0000000000000000 ffffffff0000000000000000000000ffffff0000000000000000000000ffffff000000 ffffff0000000000ffffff000000ffffff000000ffffff000000000000000000000000 000000000000ffffff0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffffff0000000000000000000000000000ffffff0000ffffff00 000000ffffff000000ffffff0000000000000000ffffffff0000000000000000ffffff 00000000ffffff0000ffffffff0000ffffffff00000000000000ffffff000000000000 000000000000000000000000000000000000000000000000000000000000000000ffff d8d89e3e3effff00ffffffffffffffffffff0000ffffffffffffffffffff0000000000 ffff00ffff0000ffff000000ffff00ffff0000ffffffffffffffffffffffff0000ffff ff0000000000000000ffffff00ffffff00ffffff0000ffffff00000000ffffff0000ff ffff00000000000000000000000000ffffffffffff0000000000000000000000000000 00000000000000000000000000000000ffffffffffff0000ffffff0000000000000000 00ffffff000000000000000000000000ffffff0000000000000000000000ffffff0000 00ffffff0000000000ffffff000000ffffff000000ffffff0000000000000000000000 00000000000000ffffff00000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000ffffff0000000000000000000000000000ffffff0000ffffff 00000000ffffff000000ffffff0000000000000000ffffff000000000000000000ffff ff00000000ffffff0000ffffff00000000ffffff00000000000000ffffff00000000ff ffffffffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffffff00ff ffd8d8d89e3effff00ffffffffffffffffffff0000ffffffffffffffffffff00000000 00ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff0000ff ffff0000000000000000ffffff00ffffff00ffffff000000ffffffffffffffffff0000 ffffff0000000000000000000000ffffffffffffff0000000000000000000000000000 000000000000000000000000000000ffffffffffffff000000ffffffffffffffffffff ff00ffffff000000000000000000000000ffffff0000000000000000000000ffffff00 0000ffffff0000000000ffffff000000ffffff000000ffffff00000000000000000000 0000000000000000ffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000ffffff000000000000000000000000ffffffffff0000ffff ff00000000ffffff000000ffffff0000000000000000ffffffffffffffffffffff0000 ffffffffffffffffff0000ffffff00000000ffffff00000000000000ffffff00000000 ffffffffffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffffff00 ffffd8d89e3e3effff0000000000000000000000000000000000000000000000000000 000000ffff00ffffffff0000000000ffff00ffffffff00000000000000000000000000 ffffffffffffffff000000ffffff00ffffff00ffffff00000000ffffffffffffffff00 00ffffff00000000000000000000ffffffffffff000000000000000000000000000000 000000000000000000000000000000ffffffffffff0000000000ffffffffffffffffff ffff00ffffff000000000000000000000000ffffff0000000000000000000000ffffff 000000ffffff0000000000ffffff000000ffffff000000ffffff000000000000000000 000000000000000000ffffff0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000ffffff00000000000000000000ffffffffffff000000ff ffff00000000ffffff000000ffffff0000000000000000ffffffffffffffffffffff00 0000ffffffffffffffff0000ffffff00000000ffffff00000000000000ffffff000000 0000000000000000000000000000000000000000000000000000000000000000000000 00ffffd8d8d89e3effff00000000000000000000000000000000000000000000000000 ffffffff00ffff0000000000ffffffff00ffff00000000000000000000000000000000 00ffffffffffffffff000000ffffff00ffffff00ffffff000000000000000000ffffff 0000ffffff00000000000000000000ffffffff00000000000000000000000000000000 00000000000000000000000000000000ffffffff00000000000000ffffff0000000000 ffffff00ffffff000000000000000000000000ffffff0000000000000000000000ffff ff000000ffffff0000000000ffffff000000ffffffff0000ffffff0000000000000000 00000000000000000000ffffff00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000ffffff000000000000000000ffffffffffff00000000 ffffffff0000ffffffff000000ffffffff000000ffff0000ffffff0000000000ffffff 0000000000000000ffffff0000ffffff00000000ffffff00000000000000ffffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000ffffd8d89e3e3effff000000000000000000000000000000000000000000000000 ffffffffffffffffff000000ffffffffffffffffff0000000000000000000000000000 0000ffffff0000000000000000ffffffffffffffffffffff000000ff00000000ffffff ff000000ffffffff00000000ff000000ffffff00000000ff000000000000ffffff0000 0000000000000000000000000000000000ffffff00000000ff00000000ffffff000000 00ffff000000ffffffff00000000ff0000000000ffffff0000000000000000000000ff ffff00000000ffffff000000ffffff00000000ffffffffffffffffff00000000000000 0000000000000000000000ffffff000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000ffffffff000000000000ffffffffffff0000000000 00ffffffffffffffffffff000000ffffffffffffffffff000000ffffff00000000ffff 000000ff00000000ffffffff000000ffffff0000ffffffff000000000000ffffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 000000ffffd8d8d89e3effff0000000000000000000000000000000000000000000000 00ffff0000ffff00ffff000000ffff0000ffff00ffff00000000000000000000000000 000000ffffff0000000000000000ffffffffffffffffffffff000000ffffffffffffff ff0000000000ffffffffffffffff00000000ffffffffffffff000000000000ffffff00 00000000000000000000000000000000000000ffffffffffffff0000000000ffffffff ffffffff00000000ffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffff00000000ffffffffffffffffff00000000ffffffffffffffffff000000000000 000000000000000000000000ffffff0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000ffffff000000000000ffffffff000000000000 0000ffffff00ffffffffff00000000ffffff00ffffffffff00000000ffffffffffffff ff000000ffffffffffffffff00000000ffffffffffffffffff000000000000ffffff00 0000000000000000000000000000000000000000000000000000000000000000000000 00000000ffffd8d89e3e3effff00000000000000000000000000000000000000000000 0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000000000000000000000 00000000ffffff0000000000000000ffffff00ffff0000ffff0000000000ffffffffff ff00000000000000ffffffffffffff0000000000ffffffffffff000000000000ffffff 000000000000000000000000000000000000000000ffffffffffff000000000000ffff ffffff00000000000000ffffffffffffff000000ffffffffffffffffff000000ffffff ffffffff000000000000ffffffffff000000000000ffffff00ffffffff000000000000 00000000000000000000000000ffffff00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000ffffffff0000000000ffffff000000000000 000000ffffff00ffffffff0000000000ffffff0000ffffffff0000000000ffffffffff 000000000000ffffffffffff000000000000ffffffff00ffffff0000000000ffffff00 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000ffffd8d8d89e3effff000000000000000000000000000000000000000000 000000ffff0000ffff0000ffffff00ffff0000ffff0000ffffff000000000000000000 0000000000ffffff000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000ffffff000000000000000000 0000ffffff000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000ffffff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000ffffffff00000000ffffff0000000000 ff00000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffff00000000ffffffff 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000ffffd8d89e3e3effff0000000000000000000000000000000000000000 00000000ffffffffffff000000ffff00ffffffffffff000000ffff0000000000000000 000000000000ffffffffffffffffff0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffff0000000000000000 000000ffffff0000000000000000000000000000000000000000000000000000000000 000000000000000000000000ffffffffffff0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000ffffffffff000000ffffffffffff ffff000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000ffffff0000ffffffff00 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000ffffd8d8d89e3effff00000000000000000000000000000000000000 000000000000ffffffff0000000000ffff00ffffffff0000000000ffff000000000000 00000000000000ffffffffffffffffff00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000ffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000ffffffffffff00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffff00000000ffffffff ffffff0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000ffffff0000ffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000ffffd8d89e3e3effff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffffd8d8d89e3effff0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000ffffd8d89e3e3effff00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000ffffd8d8d89e3effff000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000ffffd8d89e3e3effffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e 3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e 3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d89e3e3effff000000ff000000ff000000ffffffff00000000ffff 000000ff000000ffffffff00000000ffffffffffff000000ffffff000000ff000000ff 000000ffffff00000000ff000000ffff000000ff000000ff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffff000000000000000000ffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffff000000000000000000ffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffff000000000000000000ffffffff0000000000ffff ffffffffffffffffffffffffffffffff000000000000000000ffffffff0000000000ff ffffffffffffffffffffffffffffffffff000000000000000000ffffffff0000000000 ffffffffffffffffffffffffffffffffffff000000000000000000ffffffff00000000 00ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d8d89e3effff000000ff000000ff000000ffffff000000000000 00000000ffff0000ffffff00000000ffffffffffffff000000ffffff000000ff000000 ff000000ffff000000000000000000ffff000000ff000000ff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffff000000000000000000ffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffff ffffffffffffffffffffffffffff000000000000000000ffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 ffffffffffffffffffffffffffffffff000000000000000000ffffff00000000000000 ffffffffffffffffffffffffffffffffff000000000000000000ffffff000000000000 00ffffffffffffffffffffffffffffffffff000000000000000000ffffff0000000000 0000ffffffffffffffffffffffffffffffffff000000000000000000ffffff00000000 000000ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d89e3e3effff000000ff000000ff000000ffff000000ffffff 00000000ffffffff0000ffff000000ffffffffffffffff000000ffffff000000ff0000 00ff000000ffff000000000000000000ffff000000ff000000ff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff00000000 ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000ffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff00 0000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff 000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffff000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d8d89e3effff000000ff000000ff000000ffff000000ffff ffff000000ffffffff00000000000000ffffffffffffffff000000ffffff000000ff00 0000ff000000ffff000000ffff00000000ffff000000ff000000ff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffff000000ffffffffffffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000 00ffffffffffffffffffffffffffffffffffff000000ffffffffffff0000ffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffffffff ff0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffffff ffff0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffff ffffff0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ff ffffffff0000ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89e3e3effff000000ff000000ff000000ffff000000ff ffffff000000ffffffffff0000000000ffffffffffffffffff000000ffffff000000ff 000000ff000000ffff000000ffffff000000ffff000000ff000000ff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 ffffffffffffffffffffffffffffffff000000ffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d8d89e3effff000000ff000000ff000000ffffff0000 00000000000000ffffffffffff000000ffffffffffffffffffff000000ffffff000000 ff000000ff000000ffff000000ffffff000000ffff000000ff000000ff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 00ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff00000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d89e3e3effff000000ff000000ff000000ffffffff 0000000000000000ffffffffff00000000ffffffffffffffffffff000000ffffff0000 00ff000000ff000000ffff000000ffffff000000ffff000000ff000000ff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 0000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff 00000000ffffffffffffffffffffffffffffffffffff000000ffffffffff00000000ff ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d8d89e3effff000000ff000000ff000000ffffff ffffffffffff000000ffffffff000000000000ffffffffffffffffff000000ffffff00 0000ff000000ff000000ffff000000ffffff000000ffff000000ff000000ff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000 00ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff00000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d89e3e3effff0000000000000000000000ffff ff00ffffffff00000000ffffffff000000ff000000ffffffffffffffff000000ffffff 0000000000000000000000ffff000000ffffff000000ffff0000000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00 0000ffffffffffffffffffffffffffffffffffffffffffff000000ffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff 00000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffff ff000000ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d8d89e3effff0000000000000000000000ff ffff0000000000000000ffffffff00000000ffff000000ffffff00000000000000ffff ff0000000000000000000000ffff000000ffffff000000ffff00000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff 000000ffffffffffffffffffffffffffffffffffffffffffff000000ffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000ff000000ffffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffff ffff000000ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d89e3e3effff000000ff0000ffff0000ff ffffffff000000000000ffffffff00000000ffffffff000000ffff00000000000000ff ffff000000ff0000ffff0000ffffff000000ffffff000000ffff000000ff0000ffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffff ff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff000000ffffff ffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff000000ffff ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff000000ff ffffffff0000ffffffffff0000ffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffff00ffffffff00000000ffffff0000 00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000ffffff00ffffffffffffffffffffffffffffffffffffff000000ffffffffff ff00000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000ffffffffffffffffffffffffffffffff0000000000000000ffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffff000000000000ffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000ffffffffffffffffffffffffffffffff000000000000ffff ffffffff00000000000000ffffffffffffffffffffffffffffffffff000000000000ff ffffffffff00000000000000ffffffffffffffffffffffffffffffffff000000000000 ffffffffffff00000000000000ffffffffffffffffffffffffffffffffff0000000000 00ffffffffffff00000000000000ffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffff000000000000ffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000ffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffff0000000000ffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3e ffffff00000000000000000000ffff00000000000000000000ffff0000000000000000 0000ffff00000000000000000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff00000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e 3effffff00000000000000000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffff000000000000 00000000ffff00000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 9e3effffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffff ffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffff000000ffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 9e3e3effffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff000000 00ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffff0000000000ffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d8d89e3effffffffff000000ffffffffffffffffff00000000ffffffffffffffff0000 0000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00 000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffff00ffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d89e3e3effffffffff00000000ffffffffffffffffff00000000ffffffffffffffff 00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffff00ffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d8d89e3effffffffffff000000ffffffffffffffffffff00000000ffffffffffff ffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffff ffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffff00ffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d89e3e3effffffffffffff000000ffffffffffffffffffff00000000ffffffff ffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffff ffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffff00ffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d8d89e3effffffffffffff00000000ffffffffffffffffffff00000000ffff ffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffff00ffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d89e3e3effffffffffffffff000000ffffffff00000000000000000000ff ff00000000000000000000ffff00000000000000000000ffff00000000000000000000 ffff00000000000000000000ffff00000000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffff00ffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d8d89e3effffffffffffffffff000000ffffff00000000000000000000 ffff00000000000000000000ffff00000000000000000000ffff000000000000000000 00ffff00000000000000000000ffff00000000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffff0000000000ffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d89e3e3effffffffffffffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffff000000ffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d8d89e3effffff00000000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d89e3e3effffff00000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffff00000000000000ffffffffff00000000000000ffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 000000ffffffff0000000000000000ffffffff0000000000000000ffffffff00000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff ffffff00ffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffff00000000ffffffff00ffffff00000000ffffffff00ff ffff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffff0000000000000000ffffffff0000000000000000 ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffff00000000000000ffffffffff000000000000 00ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e 3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e 3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000000000ffffffff0000000000000000ffffffff0000000000000000 ffffffff0000000000000000ffffffff0000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffff000000000000000000ffffffff0000000000ffff ffffffffffffffffffffffffffffffff000000000000000000ffffff00000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000000000ffffff000000000000000000ffffff00000000000000 0000ffffff000000000000000000ffffff000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffff000000000000000000ffffff00000000000000 ffffffffffffffffffffffffffffffffff000000000000000000ffffff000000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff00000000ffff00000000ffff000000ffffff00000000ffff 000000ffffff00000000ffff000000ffffff00000000ffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff00000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff000000 00ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ff00000000ffffff000000ffff00000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffff000000ffff000000ffffffff000000ffff000000ffff ffff000000ffff000000ffffffff000000ffff000000ffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff0000ffffffff ff0000ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffff000000ffffff0000ffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffff000000ffff000000ffffffff000000ffff000000ff ffffff000000ffff000000ffffffff000000ffff000000ffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffff000000ffff000000ffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffff00000000ffff000000ffffffff000000ffff000000 ffffffff000000ffff000000ffffffff000000ffff000000ffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffff000000ffff000000ffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000000000ffffff000000ffffffff000000ffff0000 00ffffffff000000ffff000000ffffffff000000ffff000000ffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff00 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000ffff00000000ffff00000000ffff00000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffff00000000ffff00000000ffff00 000000ffff00000000ffff00000000ffff00000000ffff00000000ffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ffff00000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000000000ffffff000000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffff000000ffffffff00000000000000000000ffff 00000000000000000000ffff00000000000000000000ffff00000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff00 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ff00000000ffffffff000000ff00000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffff000000ffffff000000ff0000000000ffff ff000000ff0000000000ffffff000000ff0000000000ffffff000000ff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffff000000ffff000000ffff ffff000000ffff000000ffffffff000000ffff000000ffffffff000000ffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffff0000ffffffffffffffffffffffffffffffffffffff000000ffffffff ff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff00 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000ffffff00ffffffff00000000ffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000ffffff000000ffffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffff000000000000ffff ffffffff00000000000000ffffffffffffffffffffffffffffffffff000000000000ff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000000000ffffffff000000ffffffff ffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffff000000000000 ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3eff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00 0000ffffff00000000ffff000000ffffff00000000ffff000000ffffff00000000ffff 000000ffffff00000000ffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff 000000ffff00000000000000000000ffff00000000000000000000ffff000000000000 00000000ffff00000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e 3effffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff 000000ffff000000ffffff00000000ffff000000ffffff00000000ffff000000ffffff 00000000ffff000000ffffff00000000ffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 9e3effffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00000000ffff000000ffffffff000000ffff000000ffffffff000000ffff000000ffff ffff000000ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 9e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000000000ffff000000ffffffff000000ffff000000ffffffff000000ffff000000ff ffffff000000ffff000000ffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffff000000ffffffff000000000000000000ffffff000000000000000000ffffff0000 00000000000000ffffff000000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffff000000ffffffffff0000000000000000ffffffff0000000000000000ffffffff 0000000000000000ffffffff0000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffff000000ffffffffffffffffffff000000ffffffffffffffffff000000ffffff ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ff000000ffffffffff00ffffffff00000000ffffff00ffffffff00000000ffff ff00ffffffff00000000ffffff00ffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ff000000ffffffffff0000000000000000ffffffff0000000000000000ffff ffff0000000000000000ffffffff0000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffff000000000000ffffffffffff000000000000ffff ffffffff000000000000ffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000000000ffffffff00000000ff ff000000ffffffffffffffffffffffffffff000000000000000000ffff000000000000 0000ffffffffffffffffffffffffffffffffff000000000000000000ffffffffff0000 0000000000ffffffffffffffffffffffffffffff000000000000000000ffffffff0000 0000ff000000ffffffffffffffffffffffffffffff000000000000000000ffffffffff 00000000000000ffffffffffffffffffffffffffffff000000000000000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffff000000000000000000ffffff ff00000000ff000000ffffffffffffffffffffffffffffff000000000000000000ffff ff000000ffffff000000ffffffffffffffffffffffffffff000000000000000000ffff ffffff00000000ffff000000ffffffffffffffffffffffffff000000000000000000ff ffff0000000000000000ffffffffffffffffffffffffffffffff000000000000000000 ffffffffffff00000000000000ffffffffffffffffffffffffffffffff000000000000 ffffffffff00000000ff000000ffff000000ff000000ff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000ffffff0000000000 0000000000ffffffffffffffffffffffffffff000000000000000000ffff0000000000 00000000ffffffffffffffffffffffffffffffff000000000000000000ffffffff0000 000000000000ffffffffffffffffffffffffffffff000000000000000000ffffff0000 00000000000000ffffffffffffffffffffffffffffff000000000000000000ffffffff 000000000000000000ffffffffffffffffffffffffffff000000000000000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffff000000000000000000ffff ff0000000000ff000000ffffffffffffffffffffffffffffff000000000000000000ff ffff000000ffffff000000ffffffffffffffffffffffffffff000000000000000000ff ffffff00000000000000000000ffffffffffffffffffffffffff000000000000000000 ffffff000000000000000000ffffffffffffffffffffffffffffff0000000000000000 00ffffffffff0000000000000000ffffffffffffffffffffffffffffff000000000000 0000ffffff000000000000000000ffff000000ff000000ff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ff00000000ffffffffffffffffffffffffffffffffffff000000ffffffffff00000000 ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffffff0000 0000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 0000000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff 00000000ffffffffff00ffffffffffffffffffffffffffffffffff000000ffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffff000000000000000000ffffffffffffffffffffffffffffffffffff000000ffffff ffffff000000ffffff000000ffffffffffffffffffffffffffff000000ffffffffffff ffffff000000ffffff00000000ffffffffffffffffffffffffffff000000ffffffffff ffffffff00000000ffff000000ffffffffffffffffffffffffffffff000000ffffffff ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff00ffffffff ff000000ffff000000000000000000ffff000000ff000000ff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff0000 0000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00 000000ffff00000000ffffffffffffffffffffffffffffffffffff000000ffffffffff 00000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff00000000ffff00000000ffffffffffffffffffffffffffffffffffff000000ffff ffffffff000000ffffff000000ffffffffffffffffffffffffffffff000000ffffffff ffffffff000000ffffffff000000ffffffffffffffffffffffffffffff000000ffffff ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffff000000ffff ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffff000000ffff00000000ffff000000ff000000ff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ff ffffffffff000000ffffff000000ffffffffffffffffffffffffffffffff000000ffff ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffff000000ff ffffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffff000000 ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffff000000ffffff000000ffff000000ff000000ff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00 0000000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffff ffff0000000000000000000000ffffffffffffffffffffffffffffffffff000000ffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000 ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff000000 ffffffffffffff000000000000000000ffffffffffffffffffffffffffffffffff0000 00ffffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffff00 0000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00 000000000000ffffff000000ffffff000000ffff000000ff000000ff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ff0000000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffff ffffff0000000000000000000000ffffffffffffffffffffffffffffffffff000000ff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff0000 00ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff00 0000ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffff000000ffffff000000ffff000000ff000000ff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff ff00000000ffff00000000ffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff000000 ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff00 0000ffffffffffff00000000ffff000000ffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffff000000ffffffff00000000ffff00000000ffffffffffffffffffffffffffffffff ffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffff 00000000ffffffffffffff000000ffffff000000ffff000000ff000000ff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffff00ffffffff00000000ffffffffffffffffffffffffffffffffffff000000ffffff ffff00000000000000000000ffffffffffffffffffffffffffffffffffff000000ffff ffffffff00000000ffffffff00ffffffffffffffffffffffffffffffffffff000000ff ffffffffff000000ffff00000000ffffffffffffffffffffffffffffffffffff000000 ffffffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffff000000ffff00000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffff ffffff000000ffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff ffffffff000000ffffff00000000000000000000ffffffffffffffffffffffffffffff ffffffffff000000ffffffff00000000ffffffff00ffffffffffffffffffffffffffff ff000000ffffffff00ffffff000000ffffff000000ffff0000000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ff0000000000ffffffffffffffffffffffffffffffffffffff000000ff ffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff000000 ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff0000 00ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff00 0000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffff ff000000ffffffffffff000000ff0000000000ffffffffffffffffffffffffffffffff ffffffff000000ffffffff0000000000000000ffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ff0000000000ffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff0000000000000000ffffffffffffffffffffffffff ffffff00000000000000ffffff000000ffffff000000ffff0000000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff0000 00ffffffffffffff00000000ff000000ffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff 000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffff ff000000ffffffffffffff00000000ffff0000ffffffffffffffffffffffffffffffff ffff000000ffffffffffff000000ffff000000ffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffff000000ffffff000000ffff000000ffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffff00000000000000ffffffffffffffffffffffff ffffffffff000000000000ffffff000000ffffff000000ffff000000ff0000ffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffff000000ffffffff00ffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffff 00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffff00000000ffffff000000ffffffffffffffffffffffffffffffffffffff ffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffff0000000000000000ffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffff ff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000000000ffffffff000000ffffffffffffffffffffffffffffffffffff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffff00000000000000ffffffffffffffffffffffffff ff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e 3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e 3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d8d89e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d89e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e0000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000d89e3e009e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e9e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e9e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e9e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e00d8d89e00d89e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3ed83e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e3ed89e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3ed83e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e00d89e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed8 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e3e3e00d8d89e00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e00000000000000000000 0000009e9e9e3e00d89e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e 3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e0000000000000000000000 000000009e9e3e3e00d8d89e00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e9e9e9e9e 9e9e9e00009e9e9e3e00d89e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e9e9e9e9e 9e9e9e9e00009e9e3e3e00d8d89e00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e9e9e 9e9e9e9e9e00009e9e9e3e00d89e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e00009e9e9e00009e9e00009e9e9e00000000 9e9e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d8 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e9e9e 9e9e9e9e9e9e00009e9e3e3e00d8d89e00d8d89e9e9e9e000000000000000000000000 0000009e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e00009e9e00009e00009e9e9e00009e9e 00009e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed8 9e9e9e9e9e9e9e9e9e000000009e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e 9e9e9e9e9e9e9e00009e9e9e3e00d89e3e00d89e9e9e00000000000000000000000000 000000009e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e00009e009e9e00009e9e9e00009e 9e9e9e9e9e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e d8d89e9e9e9e9e9e9e00000000009e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e 9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e00d8d89e9e009e9e9e9e9e9e9e9e9e9e9e 9e9e9e00009e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e0000009e9e9e00009e9e0000 9e9e9e9e9e9e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e 3ed89e9e9e9e9e9e9e9e009e9e00009e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e 9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89e3e00d89e9e9e009e9e9e9e9e9e9e9e9e9e 9e9e9e9e009e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e0000009e9e9e00009e9e9e 0000000000009e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e3ed8d89e9e9e9e9e9e9e009e9e00009e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e 9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e00d8d89e9e00000000000000000000 0000000000009e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e009e00009e9e9e00009e 9e00009e9e9e00009e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e3e3ed89e9e9e9e9e9e9e9e000000009e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e 9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89e3e00d89e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e00009e9e00009e9e0000 9e9e9e00009e9e00009e9e00000000009e0000009e0000009e00009e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e00 9e9e9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e00d8d89e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e00000000 0000009e9e000000009e9e9e00009e00009e00009e00009e0000009e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e 009e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89e3e00d89e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e 9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e00d8d89e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e 9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89e3e00d89e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e 9e9e9e009e9e9e9e9e9e9e9e9e9e9e9e009e9e9e3e3e00d8d89e00d8d89e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8 d89e9e9e00000000000000000000000000009e9e9e9e3e00d89e3e00d89e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e00d8d89e00d8d89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed8d8d89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e 9ed8d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed800d89e3e00d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d800d8d89e0000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000d89e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9ed89e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e grestore %%EndDocument 1013 579 a endTexFig 1013 1050 938 2 v 1013 1100 a Ff(b.)j(The)c(user)h(c)o(hanges)f(the)h(cell)f (form)o(ula.)1013 1112 y 14800896 888048 1184071 1184071 27891466 2828615 startTexFig 1013 1112 a %%BeginDocument: sl2.ps gsave 18.000000 43.000000 translate /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 406.000000 -25.000000 scale /picstr 553 string def 553 34 8 [553 0 0 -34 0 34] {currentfile picstr readhexstring pop} image 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d89effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d8ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8ffffffffffffff ffffffffffffffffffffffffffff000000ffffffff00000000ffffff000000ffffffff ffffffffffffffffffffffffffffff00000000000000000000ffff0000000000000000 0000ffff00000000000000000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff00000000 0000000000ffffffff00000000ff000000ffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89effffffffffffffffffffffffffff ffffffffffffffff0000ffffff00000000ffffffff000000ffffffffffffffffffffff ffffffffffffffff00000000000000000000ffff00000000000000000000ffff000000 00000000000000ffff00000000000000000000ffff00000000000000000000ffff0000 0000000000000000ffff00000000000000000000ffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffff000000000000000000ffff ff000000000000000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffff00000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d8d800ffffffffffffffffffffffffffffffffffffffff ffff0000ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffff ffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffff ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff00000000000000 000000ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffff000000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d89e000000ffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff000000 00ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff00000000ffff00000000ffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 ff00000000ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffff ffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffff000000ffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffff00000000ffff ffffffff00000000000000000000ffffffffffffffffffffffffffff00000000000000 000000ff000000000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89effffff00000000 ffffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffff00000000ffffffffffffffff000000 00000000000000ffffffffffffffffffffffffffff00000000000000000000ff000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d8ff00000000ffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffff00000000ffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffff ffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffff000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000000000ff00000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89e000000ffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffff00000000ffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffff000000ffffff000000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d800ffffffffffffffffffffffffffffffffffffffffffff000000ff00 0000ffffffffff000000ffffffffffffffff0000ffffff0000ffffffffffffffff0000 0000ffffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffff ffff00000000ffffff0000ffffff0000ffffffffffffffffffffffffffffffffff0000 ffffff0000ffffffffffffffff000000ffffffffffff000000ffff00000000ffffff00 00ffffff0000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ff000000ffffff000000000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e ffffffffffffffffffffffffffffffffffffffffffff00000000ffff000000ffffffff 000000ffffffffffffffff0000ffffff0000ffffffffffffffffff000000ffffffff00 000000000000000000ffff00000000000000000000ffff00000000000000000000ffff 00000000000000000000ffff00000000000000000000ffff00000000000000000000ff ffff0000ffffff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffff ffffffffffff000000ffffffffffff000000000000000000ffffff0000ffffff0000ff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000 00ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8ffffffffffffff ffffffffffffffffffffffffffff00000000ffffffff000000ffffff000000ffffffff ffffffff0000ffffff0000ffffffffffffffffffff000000ffffff0000000000000000 0000ffff00000000000000000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffffff0000ffffff 0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffff00 0000ffffffffffffff00000000ff000000ffffff0000ffffff0000ffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000ff ffff0000ffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff ffffffffffffffffffffffff0000ffffff0000ffffffffffffffff000000ffffffffff ffffffffffffff000000ffffff0000ffffff0000ffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffff00000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d8d8ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000000000ffffff0000ffffff0000ffffff ff00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffffffffff ffffffffff0000ffffff0000ffffffffff000000000000ffffffffffffffffffffffff 000000ffffff0000ffffff0000ffffffff0000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000ffffff000000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d89effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000000000ffffff0000ffffff0000ffffffff000000000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffff0000 ffffff0000ffffffffff000000000000ffffffffffffffffffffffff000000ffffff00 00ffffff0000ffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d8ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d800000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000ffffd8d89e 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000ffffff0000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000ffffd8d8d800000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000ffff 0000000000000000000000000000ffffff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000ffff0000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000ffffd8d89e0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffffff00000000000000 00000000000000ffffff00000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000ffffff ff00000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffffd8d8d8000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000ffffff00000000000000000000000000000000 ffffff0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000ffffffff00000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000ffffd8d89e grestore %%EndDocument 1013 1112 a endTexFig 1013 1218 938 2 v 1013 1268 a Ff(c.)25 b(The)17 b(system)f(ev)n(aluates)h (the)g(new)g(cell)f(form)o(ula,)e(and)1013 1318 y(then)25 b(reev)n(aluates)h (the)g(en)o(tire)f Fe(spread.frame)p Ff(.)50 b(The)1013 1368 y Fe(sum)25 b Ff(column)g(of)h(ro)o(w)g Fe(Zzzzzzz)f Ff(has)h(b)q(een)i(up)q (dated.)1013 1380 y 14800896 6512388 1184071 1184071 28417720 13222133 startTexFig 1013 1380 a %%BeginDocument: sl3.ps gsave 18.000000 201.000000 translate /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 413.999969 -183.000000 scale /picstr 564 string def 564 249 8 [564 0 0 -249 0 249] {currentfile picstr readhexstring pop} image 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e 4e4e4e4e4e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3ed8d83e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3ed8d83e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e4e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e3e d8d83e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e3ed8d83e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e4e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e4e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e4e9ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e4e3ed8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d89e9e4e9e3ed8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d89ed89e4e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e 9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e 3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e d89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e 3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d8d89ed84e9e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89ed8d84e3e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d8d83e3e4e9e3effff000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffd8d89ed89e4e3e3eff ff00000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000ffffff000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000ffffd8d8d89e9e 4e9e3effff000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000ffff0000000000000000000000000000ffffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000ffff00000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000ffffd8 d89ed89e4e3e3effff0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000ffffffff0000000000000000000000000000ff ffff000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000ffffffff00000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00ffffd8d8d89e9e4e9e3effff00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000ffffff00000000000000000000000000 000000ffffff0000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000ffffffff00 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000ffffd8d89ed89e4e3e3effff000000000000000000000000000000000000 00000000000000ffff0000000000ffffffff00ffff0000000000ffffffff0000000000 0000000000000000ffffffffffffffffffff00ffffff00ffffff00ffffff00000000ff ffffff0000ffffff00000000ffffffffffffff00000000ffffffffffff000000000000 00ffffff0000000000000000000000000000000000000000ffffffffffff0000000000 0000ffffffffffffff0000000000ffffffffffffff00000000000000ffffffffff0000 0000000000ffffff000000000000ffffffffff000000000000ffffff000000ffffff00 00000000ffffff00000000000000ffffffffffffffffff000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000ffffff0000000000ffffffffff ffff0000000000ffffff00ffffffff0000000000ffffff0000000000000000000000ff ffffffffffff00000000ffffffff0000ffffff000000ffffffff00ffffff0000000000 ffffffff00000000000000000000000000000000000000000000000000000000000000 000000000000000000ffffd8d8d89e9e4e9e3effff0000000000000000000000000000 000000000000000000000000ffff000000ffffffffffff00ffff000000ffffffffffff 000000000000000000000000ffffffffffffffffffff00ffffff00ffffff00ffffff00 0000ffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffff00 0000000000ffffff00000000000000000000000000000000000000ffffffffffffffff 0000000000ffffffffffffffffff000000ffffffffffffffff000000000000ffffffff ffff00000000000000ffffff0000000000ffffffffffffffff00000000ffffff000000 ffffff0000000000ffffff00000000000000ffffffffffffffffff0000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000ffffff000000000000ff ffffffffffffffff000000ffffffffffffffffff00000000ffffff0000000000000000 0000ffffffffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffff00 0000000000ffffff000000000000000000000000000000000000000000000000000000 00000000000000000000000000ffffd8d89ed89e4e3e3effff00000000000000000000 00000000000000000000000000000000ffffff0000ffff0000ffff00ffffff0000ffff 0000ffff000000000000000000000000ffffff0000000000000000ffffff00ffffff00 ffffff0000ffffff000000ffffffff000000ffffffff0000000000000000ff00000000 00ffffff0000000000ffffff00000000000000000000000000000000000000ff000000 0000ffffff000000ffffffff0000000000ff0000ffffffff00000000000000000000ff ffff0000000000000000000000ffffff00000000ffffff000000ffffff00000000ffff ff000000ffffff0000000000ffffff00000000000000000000ffffff00000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000ffff00000000 000000ff0000000000ffffffff0000ffffffff0000ffffff00000000ffffff00000000 0000000000ffffffff0000000000ff00ffffff000000ffffffff0000ffffffffffffff ffffff000000000000ffffffff00000000000000000000000000000000000000000000 0000000000000000000000000000000000ffffd8d8d89e9e4e9e3effff000000000000 000000000000000000000000000000000000000000ffff0000ffff0000ffff0000ffff 0000ffff0000ffff000000000000000000000000ffffff0000000000000000ffffff00 ffffff00ffffff0000ffffff00000000ffffff0000ffffffff00000000000000000000 0000000000ffffff000000000000000000000000000000000000000000000000000000 000000000000ffffff0000ffffffff0000000000000000ffffffff0000000000000000 000000ffffff0000000000000000000000ffffff000000ffffff0000000000ffffff00 0000ffffff000000ffffff000000000000000000000000000000000000ffffff000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000ffffff 0000000000000000000000000000ffffff0000ffffff00000000ffffff000000ffffff 0000000000000000ffffffff0000000000000000ffffff00000000ffffff0000ffffff ff0000ffffffff00000000000000ffffff000000000000000000000000000000000000 000000000000000000000000000000000000000000ffffd8d89ed89e4e3e3effff00ff ffffffffffffffffff0000ffffffffffffffffffff0000000000ffff00ffff0000ffff 000000ffff00ffff0000ffffffffffffffffffffffff0000ffffff0000000000000000 ffffff00ffffff00ffffff0000ffffff00000000ffffff0000ffffff00000000000000 000000000000ffffffffffff0000000000000000000000000000000000000000000000 00000000000000ffffffffffff0000ffffff000000000000000000ffffff0000000000 00000000000000ffffff0000000000000000000000ffffff000000ffffff0000000000 ffffff000000ffffff000000ffffff000000000000000000000000000000000000ffff ff00000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00ffffff0000000000000000000000000000ffffff0000ffffff00000000ffffff0000 00ffffff0000000000000000ffffff000000000000000000ffffff00000000ffffff00 00ffffff00000000ffffff00000000000000ffffff00000000ffffffffffffffffffff 0000ffffffffffffffffffff0000ffffffffffffffffffff00ffffd8d8d89e9e4e9e3e ffff00ffffffffffffffffffff0000ffffffffffffffffffff0000000000ffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffff0000ffffff00000000 00000000ffffff00ffffff00ffffff000000ffffffffffffffffff0000ffffff000000 0000000000000000ffffffffffffff0000000000000000000000000000000000000000 000000000000000000ffffffffffffff000000ffffffffffffffffffffff00ffffff00 0000000000000000000000ffffff0000000000000000000000ffffff000000ffffff00 00000000ffffff000000ffffff000000ffffff00000000000000000000000000000000 0000ffffff000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000ffffff000000000000000000000000ffffffffff0000ffffff00000000ff ffff000000ffffff0000000000000000ffffffffffffffffffffff0000ffffffffffff ffffff0000ffffff00000000ffffff00000000000000ffffff00000000ffffffffffff ffffffff0000ffffffffffffffffffff0000ffffffffffffffffffff00ffffd8d89ed8 9e4e3e3effff0000000000000000000000000000000000000000000000000000000000 ffff00ffffffff0000000000ffff00ffffffff00000000000000000000000000ffffff ffffffffff000000ffffff00ffffff00ffffff00000000ffffffffffffffff0000ffff ff00000000000000000000ffffffffffff000000000000000000000000000000000000 000000000000000000000000ffffffffffff0000000000ffffffffffffffffffffff00 ffffff000000000000000000000000ffffff0000000000000000000000ffffff000000 ffffff0000000000ffffff000000ffffff000000ffffff000000000000000000000000 000000000000ffffff0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffffff00000000000000000000ffffffffffff000000ffffff00 000000ffffff000000ffffff0000000000000000ffffffffffffffffffffff000000ff ffffffffffffff0000ffffff00000000ffffff00000000000000ffffff000000000000 000000000000000000000000000000000000000000000000000000000000000000ffff d8d8d89e9e4e9e3effff00000000000000000000000000000000000000000000000000 ffffffff00ffff0000000000ffffffff00ffff00000000000000000000000000000000 00ffffffffffffffff000000ffffff00ffffff00ffffff000000000000000000ffffff 0000ffffff00000000000000000000ffffffff00000000000000000000000000000000 00000000000000000000000000000000ffffffff00000000000000ffffff0000000000 ffffff00ffffff000000000000000000000000ffffff0000000000000000000000ffff ff000000ffffff0000000000ffffff000000ffffffff0000ffffff0000000000000000 00000000000000000000ffffff00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000ffffff000000000000000000ffffffffffff00000000 ffffffff0000ffffffff000000ffffffff000000ffff0000ffffff0000000000ffffff 0000000000000000ffffff0000ffffff00000000ffffff00000000000000ffffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000ffffd8d89ed89e4e3e3effff000000000000000000000000000000000000000000 000000ffffffffffffffffff000000ffffffffffffffffff0000000000000000000000 0000000000ffffff0000000000000000ffffffffffffffffffffff000000ff00000000 ffffffff000000ffffffff00000000ff000000ffffff00000000ff000000000000ffff ff00000000000000000000000000000000000000ffffff00000000ff00000000ffffff 00000000ffff000000ffffffff00000000ff0000000000ffffff000000000000000000 0000ffffff00000000ffffff000000ffffff00000000ffffffffffffffffff00000000 0000000000000000000000000000ffffff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000ffffffff000000000000ffffffffffff0000 00000000ffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000 00ffff000000ff00000000ffffffff000000ffffff0000ffffffff000000000000ffff ff00000000000000000000000000000000000000000000000000000000000000000000 000000000000ffffd8d8d89e9e4e9e3effff0000000000000000000000000000000000 00000000000000ffff0000ffff00ffff000000ffff0000ffff00ffff00000000000000 000000000000000000ffffff0000000000000000ffffffffffffffffffffff000000ff ffffffffffffff0000000000ffffffffffffffff00000000ffffffffffffff00000000 0000ffffff0000000000000000000000000000000000000000ffffffffffffff000000 0000ffffffffffffffff00000000ffffffffffffffff000000ffffffffffffffffff00 0000ffffffffffffff00000000ffffffffffffffffff00000000ffffffffffffffffff 000000000000000000000000000000000000ffffff0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000ffffff000000000000ffffffff 0000000000000000ffffff00ffffffffff00000000ffffff00ffffffffff00000000ff ffffffffffffff000000ffffffffffffffff00000000ffffffffffffffffff00000000 0000ffffff000000000000000000000000000000000000000000000000000000000000 00000000000000000000ffffd8d89ed89e4e3e3effff00000000000000000000000000 0000000000000000000000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000 00000000000000000000000000ffffff0000000000000000ffffff00ffff0000ffff00 00000000ffffffffffff00000000000000ffffffffffffff0000000000ffffffffffff 000000000000ffffff000000000000000000000000000000000000000000ffffffffff ff000000000000ffffffffff00000000000000ffffffffffffff000000ffffffffffff ffffff000000ffffffffffffff000000000000ffffffffff000000000000ffffff00ff ffffff00000000000000000000000000000000000000ffffff00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000ffffffff0000000000 ffffff000000000000000000ffffff00ffffffff0000000000ffffff0000ffffffff00 00000000ffffffffff000000000000ffffffffffff000000000000ffffffff00ffffff 0000000000ffffff000000000000000000000000000000000000000000000000000000 0000000000000000000000000000ffffd8d8d89e9e4e9e3effff000000000000000000 000000000000000000000000000000ffff0000ffff0000ffffff00ffff0000ffff0000 ffffff0000000000000000000000000000ffffff000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 ffffff0000000000000000000000ffffff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000ffffff000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000ffffffff 00000000ffffff0000000000ff00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00ffffff00000000ffffffff0000000000000000000000000000000000000000000000 000000000000000000000000000000000000ffffd8d89ed89e4e3e3effff0000000000 00000000000000000000000000000000000000ffffffffffff000000ffff00ffffffff ffff000000ffff0000000000000000000000000000ffffffffffffffffff0000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000ffffff0000000000000000000000ffffff0000000000000000000000000000 000000000000000000000000000000000000000000000000000000ffffffffffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00ffffffffff000000ffffffffffffffff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000ffffff0000ffffffff000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000ffffd8d8d89e9e4e9e3effff00 000000000000000000000000000000000000000000000000ffffffff0000000000ffff 00ffffffff0000000000ffff00000000000000000000000000ffffffffffffffffff00 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000ffffff00000000000000000000 00000000000000000000000000000000000000000000000000000000000000ffffffff ffff000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000ffffff00000000ffffffffffffff0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffffff0000ffff00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000ffffd8d89ed89e4e3e 3effff0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000ffffd8d8d8 9e9e4e9e3effff00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000ff ffd8d89ed89e4e3e3effff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000ffffd8d8d89e9e4e9e3effff0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000ffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e 9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 9ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e 4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e 9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effff000000ff000000ff00 0000ffffffff00000000ffff000000ff000000ffffffff00000000ffffffffffff0000 00ffffff000000ff000000ff000000ffffff00000000ff000000ffff000000ff000000 ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffff000000000000000000ffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffff000000000000000000ff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffff0000000000000000 00ffffffff0000000000ffffffffffffffffffffffffffffffffffff00000000000000 0000ffffffff0000000000ffffffffffffffffffffffffffffffffffff000000000000 000000ffffffff0000000000ffffffffffffffffffffffffffffffffffff0000000000 00000000ffffffff0000000000ffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effff000000ff00 0000ff000000ffffff00000000000000000000ffff0000ffffff00000000ffffffffff ffff000000ffffff000000ff000000ff000000ffff000000000000000000ffff000000 ff000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffff000000000000000000 ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffff000000000000 000000ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff00000000 0000000000ffffff00000000000000ffffffffffffffffffffffffffffffffff000000 000000000000ffffff00000000000000ffffffffffffffffffffffffffffffffff0000 00000000000000ffffff00000000000000ffffffffffffffffffffffffffffffffff00 0000000000000000ffffff00000000000000ffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effff00 0000ff000000ff000000ffff000000ffffff00000000ffffffff0000ffff000000ffff ffffffffffff000000ffffff000000ff000000ff000000ffff000000000000000000ff ff000000ff000000ff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff000000ffff ffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffff00000000ffffffffffffffffffffffffffffffffff ff000000ffffffffffff000000ffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffffff000000ffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffff000000ffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffff000000ffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffff000000ffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e 3effff000000ff000000ff000000ffff000000ffffffff000000ffffffff0000000000 0000ffffffffffffffff000000ffffff000000ff000000ff000000ffff000000ffff00 000000ffff000000ff000000ff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff 000000ffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffff000000ffffffffffffffffffffffffff ffffffffff000000ffffffffffff0000ffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffff000000ffffffffffffffffffffff ffffffffffffff000000ffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffff000000ffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffff000000ffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffff000000ffffffffff0000ffffffffff0000ffffff0000ffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e d89e4e3e3effff000000ff000000ff000000ffff000000ffffffff000000ffffffffff 0000000000ffffffffffffffffff000000ffffff000000ff000000ff000000ffff0000 00ffffff000000ffff000000ff000000ff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000000000ffffffffffffffffffffff ffffffffff000000ffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffffffff ffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d8d89e9e4e9e3effff000000ff000000ff000000ffffff000000000000000000ff ffffffffff000000ffffffffffffffffffff000000ffffff000000ff000000ff000000 ffff000000ffffff000000ffff000000ff000000ff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000000000ffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff00000000ffffff ffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff0000 00ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d89ed89e4e3e3effff000000ff000000ff000000ffffffff0000000000 000000ffffffffff00000000ffffffffffffffffffff000000ffffff000000ff000000 ff000000ffff000000ffffff000000ffff000000ff000000ff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000ffff00000000ffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffff ffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff00000000ff ffffffffffffffffffffffffffffffffff000000ffffffffff00000000ffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 ffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffff ffff000000ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d8d89e9e4e9e3effff000000ff000000ff000000ffffffffff ffffffff000000ffffffff000000000000ffffffffffffffffff000000ffffff000000 ff000000ff000000ffff000000ffffff000000ffff000000ff000000ff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff000000ff ffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000ffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d89ed89e4e3e3effff0000000000000000000000ff ffff00ffffffff00000000ffffffff000000ff000000ffffffffffffffff000000ffff ff0000000000000000000000ffff000000ffffff000000ffff00000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff0000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff 000000ffffffffffffffffffffffffffffffffffffffffffff000000ffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ff00000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000ffffffffffffffffffffffffffffffffffffffff000000ffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffff ffff000000ffffffffff000000ff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effff0000000000000000 000000ffffff0000000000000000ffffffff00000000ffff000000ffffff0000000000 0000ffffff0000000000000000000000ffff000000ffffff000000ffff000000000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000ff000000ffffffffffffffffffffffffffffffffffffff000000ff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000 ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff0000 00ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff00 0000ffffffff000000ffffffffff000000ff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effff000000ff 0000ffff0000ffffffffff000000000000ffffffff00000000ffffffff000000ffff00 000000000000ffffff000000ff0000ffff0000ffffff000000ffffff000000ffff0000 00ff0000ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff0000 00ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffff 000000ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffff ff000000ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffff000000ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffff000000ffffffffff0000ffffffffff0000ffffff0000ffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff00ffffff ff00000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffffff ffff000000ffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffff000000ffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffff000000ffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffff000000ffffff000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e 3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff 0000000000000000ffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffff000000000000ffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffff000000000000ffffffffffff00000000000000ffffffffffffffffffffff ffffffffffff000000000000ffffffffffff00000000000000ffffffffffffffffffff ffffffffffffff000000000000ffffffffffff00000000000000ffffffffffffffffff ffffffffffffffff000000000000ffffffffffff00000000000000ffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffff000000000000ffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffff000000000000ffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffff0000000000ffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e 4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d8d89e9e4e9e3effffff00000000000000000000ffff000000000000000000 00ffff00000000000000000000ffff00000000000000000000ffff0000000000000000 0000ffff00000000000000000000ffff00000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d89ed89e4e3e3effffff00000000000000000000ffff0000000000 0000000000ffff00000000000000000000ffff00000000000000000000ffff00000000 000000000000ffff00000000000000000000ffff00000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d8d89e9e4e9e3effffff00000000ffffffffffffffff00 000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff 00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffff00000000ffffffff ffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffff ffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffff000000 ffffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff0000 0000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffff ff00000000ffffffffffffffffff00000000ffffffffffffffff00000000ffffffffff ffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffff ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3e ffffffffffff000000ffffffffffffffffffff00000000ffffffffffffffff00000000 ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff000000 00ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed8 9e4e3e3effffffffffffff000000ffffffffffffffffffff00000000ffffffffffffff ff00000000ffffffffffffffff00000000ffffffffffffffff00000000ffffffffffff ffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffff0000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d8d89e9e4e9e3effffffffffffff00000000ffffffffffffffffffff00000000ffff ffffffffffff00000000ffffffffffffffff00000000ffffffffffffffff00000000ff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffff00ffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d89ed89e4e3e3effffffffffffffff000000ffffffff0000000000000000 0000ffff00000000000000000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffff00ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffff000000ffffff00000000 000000000000ffff00000000000000000000ffff00000000000000000000ffff000000 00000000000000ffff00000000000000000000ffff00000000000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffff0000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffff00000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e 3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 9e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffff00000000000000ffffffffff000000000000 00ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e 9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000ffffffff0000000000000000ffffffff000000 0000000000ffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 9ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffffffffff00ffffff00000000ffffffffffffffff 00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffff00000000ffffffffff ffffff00000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff000000ffff ffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff00 0000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffff00000000ffffffff00ffffff00000000ffffffff00ffff ff00000000ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffff0000000000000000ffffffff000000000000 0000ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e 4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffff00000000000000ffffffffff00 000000000000ffffffffff00000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000ffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e 9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000000000ffffffff0000000000000000ffffff ff0000000000000000ffffffff0000000000000000ffffffff0000000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffff000000000000000000ffff ffff0000000000ffffffffffffffffffffffffffffffffffff000000000000000000ff ffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000000000ffffff00000000000000 0000ffffff000000000000000000ffffff000000000000000000ffffff000000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000ffffffffffffffffffffffffffffffffff00000000000000 0000ffffff00000000000000ffffffffffffffffffffffffffffffffff000000000000 000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000ffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffff00000000ffff000000 00ffff000000ffffff00000000ffff000000ffffff00000000ffff000000ffffff0000 0000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000ffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffff00000000ffffff000000ffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ff000000ffffffff000000ffff000000ffffffff000000ffff000000ffffffff000000 ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffff000000ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffff000000ffffff0000ffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e 3effffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffff000000ffffffff000000ffff000000ffffffff000000ffff000000ffffff ff000000ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffff000000ffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffff000000ffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89e d89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffff00000000ffff000000ffffffff000000ffff000000ffffffff000000ffff0000 00ffffffff000000ffff000000ffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff00000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000ff000000ffffffffffff ffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffff00 0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000ffffff000000ffffffff000000ffff000000ffffffff000000 ffff000000ffffffff000000ffff000000ffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000ffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffff ffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff000000 00ffff00000000ffff00000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffff00000000ffff00000000ffff00000000ffff 00000000ffff00000000ffff00000000ffff00000000ffff00000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff0000 0000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffff000000ffffffff00000000000000000000ffff0000 0000000000000000ffff00000000000000000000ffff00000000000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ff00000000ffffffff000000ff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffff000000ff0000000000ff ffff000000ff0000000000ffffff000000ff0000000000ffffff000000ff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000ffff00 0000ffffffff000000ffff000000ffffffff000000ffff000000ffffffff000000ffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffffff000000 ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff0000 00ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000ffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000ffff000000ffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000ffffff00ffffffff00000000ffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff ffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffff000000000000ffffffffffff00000000000000ffffffffffffffffffffffffffff ffffff000000000000ffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e 3e3effffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 0000ffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffff000000000000ffffffffffff000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e 4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffff000000ffffff00000000ffff000000ffffff00000000ffff000000ff ffff00000000ffff000000ffffff00000000ffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffff000000ffff00000000000000000000ffff00000000000000 000000ffff00000000000000000000ffff00000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffff000000ffff000000ffffff00000000ffff000000ff ffff00000000ffff000000ffffff00000000ffff000000ffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000000000ffff000000ffffffff000000ffff 000000ffffffff000000ffff000000ffffffff000000ffff000000ffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000000000ffff000000ffffffff00 0000ffff000000ffffffff000000ffff000000ffffffff000000ffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffff000000ffffffff000000 000000000000ffffff000000000000000000ffffff000000000000000000ffffff0000 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff000000ffffff ffff0000000000000000ffffffff0000000000000000ffffffff0000000000000000ff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff0000 00ffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff 000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed8 9e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ff000000ffffffffff00ffffffff00000000ffffff00ffffffff00000000ffffff00ff ffffff00000000ffffff00ffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff d8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ff000000ffffffffff0000000000000000ffffffff0000000000000000ffff ffff0000000000000000ffffffff0000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffff000000000000ffffffffffff0000000000 00ffffffffffff000000000000ffffffffffff000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e 3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8 9e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffff ffff00000000ffff000000ffffffffffffffffffffffffffff000000000000000000ff ff0000000000000000ffffffffffffffffffffffffffffffffff000000000000000000 ffffffffff00000000000000ffffffffffffffffffffffffffffff0000000000000000 00ffffffff00000000ff000000ffffffffffffffffffffffffffffff00000000000000 0000ffffffffff00000000000000ffffffffffffffffffffffffffffff000000000000 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff0000000000 00000000ffffffff00000000ff000000ffffffffffffffffffffffffffffff00000000 0000000000ffffff000000ffffff000000ffffffffffffffffffffffffffff00000000 0000000000ffffffffff00000000ffff000000ffffffffffffffffffffffffff000000 000000000000ffffff0000000000000000ffffffffffffffffffffffffffffffff0000 00000000000000ffffffffffff00000000000000ffffffffffffffffffffffffffffff ff000000000000ffffffffff00000000ff000000ffff000000ff000000ff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 0000ffffff00000000000000000000ffffffffffffffffffffffffffff000000000000 000000ffff000000000000000000ffffffffffffffffffffffffffffffff0000000000 00000000ffffffff0000000000000000ffffffffffffffffffffffffffffff00000000 0000000000ffffff000000000000000000ffffffffffffffffffffffffffffff000000 000000000000ffffffff000000000000000000ffffffffffffffffffffffffffff0000 00000000000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff00 0000000000000000ffffff0000000000ff000000ffffffffffffffffffffffffffffff 000000000000000000ffffff000000ffffff000000ffffffffffffffffffffffffffff 000000000000000000ffffffff00000000000000000000ffffffffffffffffffffffff ff000000000000000000ffffff000000000000000000ffffffffffffffffffffffffff ffff000000000000000000ffffffffff0000000000000000ffffffffffffffffffffff ffffffff0000000000000000ffffff000000000000000000ffff000000ff000000ff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e 9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffff00000000ffffffffffffffffffffffffffffffffff ff000000ffffffffff00000000ffff000000ffffffffffffffffffffffffffffffffff ffff000000ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffff00000000000000000000ffffffffffffffffffffffffffff ffffffff000000ffffffffffff00000000ffffffffff00ffffffffffffffffffffffff ffffffffff000000ffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffff000000000000000000ffffffffffffffffffffff ffffffffffffff000000ffffffffffff000000ffffff000000ffffffffffffffffffff ffffffff000000ffffffffffffffffff000000ffffff00000000ffffffffffffffffff ffffffffff000000ffffffffffffffffff00000000ffff000000ffffffffffffffffff ffffffffffff000000ffffffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffff00ffffffffff000000ffff000000000000000000ffff000000ff00 0000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8 9ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffff000000ffffffff000000ffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffff000000ffffffffffffffffffffffff ffffffffffff000000ffffffffff00000000ffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff00000000ffff00000000ffffffffffffffffffff ffffffffffffffff000000ffffffffff00000000ffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff00000000ffff00000000ffffffffffffff ffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffffffffff ffffffffffffffffff000000ffffffffffffffff000000ffffffff000000ffffffffff ffffffffffffffffffff000000ffffffffffffffff000000ffffffff000000ffffffff ffffffffffffffffffffff000000ffffffffffffffff00000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffff000000ffff00000000ffff00 0000ff000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffff000000ffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffff000000ffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffff000000ffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffff000000ffffff ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffff ffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffff000000ff ffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffff000000 ffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffff000000ffffff0000 00ffff000000ff000000ff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffff000000000000000000ffffffffff ffffffffffffffffffffffffff000000ffffffffff000000ffffffff000000ffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff000000ffff ffffffffffffffffffffffffffffffff000000ffffffffff0000000000000000000000 ffffffffffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff0000 00ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff00 0000ffffffffffffffffffffffffffffffffff000000ffffffffffffff000000000000 000000ffffffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff ff000000ffffffffffffffffffffffffffffffffff000000ffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff000000ff ffff000000ffff000000ff000000ff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffff0000000000000000ff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff000000 ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff00 0000ffffffffffffffffffffffffffffffffffff000000ffffffffff00000000000000 00000000ffffffffffffffffffffffffffffffffff000000ffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000 ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffff00 00000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff 000000ffffff000000ffff000000ff000000ff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffff000000ffffffffff00000000ffff 00000000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffff000000ffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff ff00000000ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff000000ffff ffff00000000ffff00000000ffffffffffffffffffffffffffffffffffffff000000ff ffffff000000ffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffff000000ffffff000000ffff000000ff000000ff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff00ff ffffff00000000ffffffffffffffffffffffffffffffffffff000000ffffffffff0000 0000000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff 00000000ffffffff00ffffffffffffffffffffffffffffffffffff000000ffffffffff ff000000ffff00000000ffffffffffffffffffffffffffffffffffff000000ffffffff ffff000000ffffffff0000ffffffffffffffffffffffffffffffffffff000000ffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffff000000ffff00000000ffffffffffffffffffffffffffffffffffff000000ff ffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff00 0000ffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffff 000000ffffff00000000000000000000ffffffffffffffffffffffffffffffffffffff ff000000ffffffff00000000ffffffff00ffffffffffffffffffffffffffffff000000 ffffffff00ffffff000000ffffff000000ffff0000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffff0000000000000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ff0000000000ffffffffffffffffffffffffffffffffffffff000000ffff ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff000000ff ffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000 ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff0000 00ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff00 0000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffff000000ff0000000000ffffffffffffffffffffffffffffffffff ffffff000000ffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffff000000ffffff000000ff0000000000ffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff0000000000000000ffffffffffffffffffffffffffff ffff00000000000000ffffff000000ffffff000000ffff0000000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3eff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffffff00000000ff000000ffffffffffffffffffffffffffffffffff ff000000ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffff000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffff ffffff000000ffffffffffffff00000000ffff0000ffffffffffffffffffffffffffff ffffffff000000ffffffffffff000000ffff000000ffffffffffffffffffffffffffff ffffffffffffff000000ffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffff000000ffffff000000ffff000000ffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffffff00000000000000ffffffffffffffffffff ffffffffffffff000000000000ffffff000000ffffff000000ffff000000ff0000ffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed89e 4e3e3effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffff000000ffffffff00ffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff ffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffff00000000ffffff000000ffffffffffffffffffffffffffff ffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8 d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffff0000000000000000ffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffff000000ffffffffffffffffffffff ffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000000000ffffffff000000ffffffffffffffffffff ffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffff00000000000000ffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffd8d89ed89e4e3e3effffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffd8d8d89e9e4e9e3effffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d89ed8d84e3e3e ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8d8d8d8 d84e9e0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00d89e3e3e4e3e009e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e9e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e9e3e3e3e3e3e3e3e3e3e 3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e9e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e 3e3e3e3e00d8d89e3e4e9e00d89e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3ed83e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e3ed89e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3ed83e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e00d89ed89e4e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d8 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e3e3e00d8d89e9e4e9e00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e00 0000000000000000000000009e9e9e3e00d89ed89e4e3e00d89e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e 9e0000000000000000000000000000009e9e3e3e00d8d89e9e4e9e00d8d89e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e d8d89e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89ed89e4e3e00d89e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e3e3ed89e9e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e9e4e9e 00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89e d89e4e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e 9e9e9e9e9e9e00009e9e9e00009e9e00009e9e9e000000009e9e9e00009e9e9e9e0000 9e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e3e 3e00d8d89e9e4e9e00d8d89e9e9e9e0000000000000000000000000000009e9e3ed8d8 9e9e9e9e9e9e9e9e9e9e9e00009e9e00009e00009e9e9e00009e9e00009e9e00009e9e 9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e 9e000000009e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00 009e9e9e3e00d89ed89e4e3e00d89e9e9e00000000000000000000000000000000009e 3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e00009e009e9e00009e9e9e00009e9e9e9e9e9e 9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e 9e9e9e9e00000000009e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e9e9e9e9e9e 9e9e9e00009e9e3e3e00d8d89e9e4e9e00d8d89e9e009e9e9e9e9e9e9e9e9e9e9e9e9e 9e00009e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e0000009e9e9e00009e9e00009e9e 9e9e9e9e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed8 9e9e9e9e9e9e9e9e009e9e00009e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e 9e9e9e9e9e9e9e00009e9e9e3e00d89ed89e4e3e00d89e9e9e009e9e9e9e9e9e9e9e9e 9e9e9e9e9e009e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e0000009e9e9e00009e9e 9e0000000000009e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e3ed8d89e9e9e9e9e9e9e009e9e00009e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e 9e9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e9e4e9e00d8d89e9e000000000000 000000000000000000009e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e009e00009e9e 9e00009e9e00009e9e9e00009e9e00009e9e9e9e00009e9e00009e9e00009e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e000000009e9e9e9e9e9e9e9e9e9e9e3ed8d89e 9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89ed89e4e3e00d89e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e00009e 9e00009e9e00009e9e9e00009e9e00009e9e00000000009e0000009e0000009e00009e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e 3ed89e9e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8d89e9e4e9e00d8d8 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e 9e00009e9e9e000000000000009e9e000000009e9e9e00009e00009e00009e00009e00 00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e3ed8d89e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e3e00d89ed89e4e 3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e3e3e00d8 d89e9e4e9e00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e00009e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e009e9e9e9e9e9e9e9e9e9e9e9e00009e9e 9e3e00d89ed89e4e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed8 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e9e009e9e9e9e9e9e9e9e9e9e9e9e 009e9e9e3e3e00d8d89e9e4e9e00d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e3ed89e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e000000000000000000 00000000009e9e9e9e3e00d89ed89e4e3e00d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e3e00d8d89e9e4e9e00d8d89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed8d8d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e9ed8d89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed800d89ed89e4e3e00d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8 d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d800d8d89e9e4e9e000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000d89ed89e4e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9ed89e9e 4e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e 9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e3e9e 3e9ed89e4e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e3ed89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e4e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3e d8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e3ed8d89e9e9e9e9e9e9e9e9e9e9e9e9e9e9e 9e9e9e9e9e9e9e9e9e9e9e9e4ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89e3e3ed8d8d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89ed89e d89ed89ed89ed89ed89ed89ed89ed89ed89ed89e3e3ed8d8d89ed89ed89ed89ed89ed8 9ed89ed89ed89ed89ed89ed89ed89ed8 grestore %%EndDocument 1013 1380 a endTexFig 1013 1842 938 2 v 1013 1943 a Ff(step)15 b(can)g(b)q(e)h(a)o(v)o(oided.)j(An) o(y)c(S)g(function)f(can)h(b)q(e)h(asso)q(ci-)1013 1992 y(ated)g(with)f(the)h (en)o(tire)h(spreadsheet)h(or)d(an)o(y)g(of)g(its)h(cells.)1013 2042 y(The)c(full)f(analytic)g(and)h(displa)o(y)f(p)q(o)o(w)o(er)i(of)e(S)i (is)f(a)o(v)n(ailable.)1054 2092 y(W)m(e)25 b(pro)o(vide)h(spreadsheet)i(b)q (eha)o(vior)d(b)o(y)h(in)o(tro)q(duc-)1013 2142 y(ing)21 b(a)h(new)h(class)f (of)g(S)g(ob)r(jects,)j(the)e Fe(spread.frame)p Ff(,)1013 2192 y(and)16 b(sev)o(eral)i(supp)q(orting)f(metho)q(ds.)26 b(A)17 b Fe(spread.frame)1013 2242 y Ff(is)k(an)h(ob)r(ject)h(of)e(class)i Fe("spread")n Ff(,)h(deriv)o(ed)e(from)e(the)1013 2291 y Fe("array")27 b Ff(class,)33 b(with)c(one)h(or)f(more)f(attributes)j(of)1013 2341 y(mo)q(de)16 b Fe("expression")n Ff(.)30 b(The)18 b(default)f(structure) j(main-)1013 2391 y(tains)c(four)g(t)o(yp)q(es)h(of)f(expressions:)24 b Fe("expr")o Ff(,)16 b Fe("before")n Ff(,)1013 2441 y Fe("after")n Ff(,)g(and)g Fe("macro")n Ff(.)25 b(The)16 b(arra)o(y)g Fe("expr")f Ff(and)g(the)1013 2491 y(v)o(ectors)h Fe("before")e Ff(and)i Fe("after")e Ff(are)i(ev)n(aluated)f(ev)o(ery)1013 2540 y(time)i(the)j Fe(spread.frame)d Ff(ob)r(ject)j(is)f(up)q(dated.)35 b(When)1013 2590 y(an)o(y)13 b(cell)i(of)f(the)h Fe(spread.frame)d Ff(is)i(c)o(hanged,)g (an)o(y)g(other)1013 2640 y(cell)j(whose)h(v)n(alue)f(is)h(dep)q(enden)o(t)h (on)f(that)f(cell)h(is)f(auto-)1013 2690 y(matically)11 b(up)q(dated.)p eop %%Page: 2 2 bop 42 65 a Ff(An)o(y)10 b(v)n(alid)f(S)i(expression)g(ma)o(y)e(b)q(e)i(asso) q(ciated)h(with)e(the)0 114 y Fe(spread.frame)p Ff(.)k(Since)d(the)f Fe(spread.frame)e Ff(ob)r(ject)j(is)f(an)0 164 y Fe(array)15 b Ff(with)h(additional)e(attributes,)j(it)e(can)h(b)q(e)h(used)g(in)0 214 y(ordinary)c(calculations.)0 348 y Fg(2)56 b(Spreadsheet)18 b(Kernel)0 428 y Fh(2.1)48 b Fe(spread.frame)13 b Fh(Ob)s(ject)42 508 y Ff(The)37 b Fe(spread.frame)e Ff(ob)r(ject)j(inherits)g(from)e(an)0 558 y(ordinary)e(matrix,)i(data.frame,)h(or)d(three-w)o(a)o(y)h(ar-)0 608 y(ra)o(y)m(.)103 b(An)o(y)42 b(pre-existing)h(ob)r(ject)g(can)f(b)q(e)h (co-)0 658 y(erced)33 b(to)e(a)h Fe(spread.frame)d Ff(b)o(y)i(the)h(S)g (statemen)o(t)0 708 y Fe(x)22 b(<-)f(as.spread\(x\))m Ff(.)33 b(The)19 b Fe(spread.frame)d Ff(ob)r(ject)k Fe(x)0 758 y Ff(has)c(the)g (follo)o(wing)d(four)j(new)g(attributes)g(\(an)o(y)g(or)g(all)e(of)0 807 y(whic)o(h)k(ma)o(y)e(b)q(e)j(empt)o(y\))e(in)h(whic)o(h)g(executable)h (expres-)0 857 y(sions)14 b(are)g(stored.)0 948 y Fe(attr\(x,"expr"\))k Ff(An)37 b(arra)o(y)f(of)g(expressions)i(with)83 998 y(shap)q(e)14 b(iden)o(tical)e(to)h(that)g(of)f(the)i(data)e(arra)o(y)h(within)83 1048 y(the)23 b Fe(spread.frame)c(x)j Ff(itself.)42 b(Eac)o(h)23 b(elemen)o(t)e(of)83 1098 y Fe("expr")15 b Ff(ma)o(y)f(b)q(e)j(an)f (arbitrary)g(S)g(expression)h(that)83 1148 y(ev)n(aluates)d(to)g(a)g(scalar.) 20 b(The)14 b(expression)i(ma)o(y)c(b)q(e)j(a)83 1198 y(constan)o(t,)g(or)g (b)q(e)g(dep)q(enden)o(t)h(on)f(other)g(cells)g(of)f(the)83 1247 y Fe(spread.frame)p Ff(,)k(or)i(b)q(e)g(dep)q(enden)o(t)h(on)f(other)g (ob-)83 1297 y(jects)d(in)e(the)h Fe(search\(\))e Ff(path.)24 b(The)16 b(v)n(alue)f(of)g(eac)o(h)83 1347 y(expression)21 b(is)e(assigned)g(to)g(the)h(matc)o(hing)e(cell)h(of)83 1397 y(the)c(data)g(arra)o(y)m(.)k(The)c(en)o(tire)h Fe("expr")d Ff(is)i(ev)n(aluated)83 1447 y(ev)o(ery)f(time)d(an)o(y)h(cell)h(of)f(the)h Fe(spread.frame)e Ff(ob)r(ject)83 1496 y(is)j(mo)q(di\014ed.)0 1579 y Fe(attr\(x,"before"\))j Ff(A)f(v)o(ector)h(of)e(arbitrary)g(S)h (expres-)83 1629 y(sions.)51 b(The)25 b(en)o(tire)g(v)o(ector)h(is)e(ev)n (aluated)h(ev)o(ery)83 1679 y(time)15 b(an)o(y)h(cell)g(of)f(the)i Fe(spread.frame)d Ff(is)i(mo)q(di\014ed)83 1729 y(and)22 b(b)q(efore)h(the)g (cell-b)o(y-cell)e(expressions)j(in)e(the)83 1779 y Fe("expr")16 b Ff(arra)o(y)m(.)29 b(A)17 b(t)o(ypical)g(application)f(w)o(ould)h(b)q(e)83 1829 y(to)22 b(mo)q(dify/up)q(date)e(one)j(or)f(more)f(v)n(alues)h(of)g(the) 83 1878 y Fe(spread.frame)12 b Ff(in)h(resp)q(onse)j(to)e(c)o(hanges)h(in)f (an)g(as-)83 1928 y(so)q(ciated)h(v)n(ariable)d(.)0 2011 y Fe(attr\(x,"after"\))18 b Ff(A)i(v)o(ector)h(of)e(arbitrary)h(S)g(expres-)83 2061 y(sions.)e(The)13 b(en)o(tire)g(v)o(ector)g(is)g(ev)n(aluated)f(ev)o (ery)i(time)83 2111 y(an)o(y)k(cell)g(of)f(the)i Fe(spread.frame)d Ff(is)i(mo)q(di\014ed)f(and)83 2161 y(after)g(the)g(cell-b)o(y-cell)f (expressions)j(in)d Fe("expr")o Ff(.)26 b(A)83 2210 y(t)o(ypical)16 b(application)g(w)o(ould)g(b)q(e)i(to)f(summarize)e(in-)83 2260 y(formation)20 b(in)i(the)h(up)q(dated)g Fe(spread.frame)p Ff(.)40 b(It)83 2310 y(could)16 b(also)f(b)q(e)i(used)g(to)f(up)q(date)h (another)g(S)f(ob)r(ject)83 2360 y(or)e(a)f(graphical)g(displa)o(y)m(.)0 2443 y Fe(attr\(x,"macro"\))18 b Ff(A)i(v)o(ector)h(of)e(arbitrary)h(S)g (expres-)83 2493 y(sions.)35 b(An)o(y)19 b(individual)f(expression)i(is)g(ev) n(aluated)83 2543 y(on)14 b(request)h(from)d(the)j(user.)1013 65 y Fh(2.2)47 b(Infrastructure:)18 b Fe("spread")c Fh(Metho)q(ds)1054 145 y Ff(The)i(fundamen)o(tal)d(metho)q(d)h(that)h(driv)o(es)g(the)h(pro)q (cess)1013 195 y(is)i(subscripted)i(assignmen)o(t)d Fe([)p Fd( )p Ff(.)31 b(The)19 b(simplest)e(case,)1013 244 y(scalar)c(assignmen)o(t) g(to)h(a)g(single)f(cell,)g(is)1054 327 y Fe("[)p Fd( )p Fe(.spread")19 b Fd( )1119 377 y Fe(function\(object,)g(...,)i(value\))1054 427 y({)1119 477 y(x)h Fd( )f Fe(object[,])1119 527 y(e)h Fd( )f Fe(attr\(object,"expr"\))1119 576 y(e[[...]])g Fd( )g Fe(substitute\(value\)) 1119 626 y(x[[...]])g Fd( )g Fe(eval\(e[[...]]\))1119 676 y(attributes\(x\))e Fd( )j Fe(attributes\(objec)o(t\))1119 726 y(attr\(x,"expr"\))d Fd( )j Fe(e)1119 776 y(update\(x\))1054 826 y(})1054 909 y Ff(The)15 b Fe("expr")e Ff(attribute)h(is)g(remo)o(v)o(ed)g(from)e(the)j(ob)r (ject)1013 958 y(and)9 b(up)q(dated)i(with)f(the)h Fc(formula)e Ff(of)h(the)h(assignmen)o(t,)e(not)1013 1008 y(the)15 b Fc(value)p Ff(.)22 b(Then)15 b(the)h(form)o(ula)c(for)j(the)g(up)q(dated)h(cell)f(is) 1013 1058 y(ev)n(aluated)j(in)g(the)h(frame)e(of)h(the)h Fe("[)p Fd( )p Fe(.spread")d Ff(func-)1013 1108 y(tion.)34 b(This)19 b(has)h(the)g(implication)c(that)k(other)g(cells)f(in)1013 1158 y(the)c Fe(spread.frame)e Ff(m)o(ust)h(b)q(e)h(referenced)j(b)o(y)d(the) g(name)1013 1207 y Fe(x[,])o Ff(.)35 b(Finally)m(,)18 b(the)i Fe(update\(\))e Ff(function)h(is)h(called)f(to)1013 1257 y(ev)n(aluate)i(the) h Fe("before")f Ff(expressions,)j(cycle)f(through)1013 1307 y(the)15 b(en)o(tire)g(set)g(of)f Fe("expr")f Ff(expressions,)j(and)f(then)g (ev)n(al-)1013 1357 y(uate)f(the)g Fe("after")f Ff(expressions.)1054 1407 y(The)h(b)q(eha)o(vior)g(is)g(illustrated)f(in)h(Figure)g(2.)1013 1524 y Fh(2.3)47 b(Design)14 b(Decisions)1054 1604 y Ff(Our)h(initial)e (design)i(of)g(the)g Fe("spread")e Ff(class)j(included)1013 1654 y(just)29 b(t)o(w)o(o)f(t)o(yp)q(es)i(of)e(expressions,)34 b(the)29 b Fe("expr")f Ff(and)1013 1703 y Fe("macro")n Ff(.)33 b(These)20 b(t)o(w)o(o)e(t)o(yp)q(es)h(are)h(all)d(w)o(e)i(need)h(to)e(ob-) 1013 1753 y(tain)f(the)h(b)q(eha)o(vior)g(of)f(the)i(p)q(opular)f(PC)g (spreadsheets.)1013 1803 y(W)m(e)13 b(added)h(the)g(other)h(t)o(w)o(o)e(t)o (yp)q(es)i(for)e(t)o(w)o(o)g(reasons:)19 b(exe-)1013 1853 y(cution)13 b(e\016ciency)i(and)f(simplicit)o(y)m(.)1054 1903 y(Simple)k(matrix)g (summaries,)h(suc)o(h)i(as)f(a)g(set)h(of)e(ro)o(w)1013 1952 y(sums,)g(are)g(e\016cien)o(t)g(in)g(S)g(when)g(executed)i(as)e(a)f(single) 1013 2002 y(statemen)o(t.)43 b(The)23 b(iden)o(tical)f(arithmetic)f(executed) j(on)1013 2052 y(a)19 b(cell-b)o(y-cell)h(basis)g(do)q(es)h(not)f(use)h(the)f (generic)h(arra)o(y)1013 2102 y(structure)15 b(of)d(S)h(and)f(hence)j(b)q (ears)f(a)e(hea)o(vy)h(p)q(erformance)1013 2152 y(p)q(enalt)o(y)m(.)k(F)m(or) d(example,)e(the)j(gradesheet)h(application)c(in)1013 2201 y(Section)k(4.1)f(has)g(essen)o(tially)h(one)g(summary)e(op)q(eration,)1013 2251 y(computing)e(a)j(set)g(of)f(ro)o(w)h(sums.)k(In)c(an)g(arra)o(y)f (language)1013 2301 y(suc)o(h)h(as)f(S,)h(doing)e(this)i(with)f(a)g(single)h (statemen)o(t)f(in)g(the)1013 2351 y Fe("after")d Ff(v)o(ector)i(mak)o(es)f (more)g(sense)i(and)f(is)g(faster)g(than)1013 2401 y(the)i(cell-b)o(y-cell)e (metho)q(d)h(with)g(individual)f(summations)1013 2451 y(for)g(eac)o(h)h(cell) g(in)g(the)g Fe("sum")f Ff(column.)1054 2500 y(Ha)o(ving)18 b(b)q(oth)i Fe("before")e Ff(and)h Fe("after")f Ff(v)o(ectors)j(al-)1013 2550 y(lo)o(ws)d(symmetry)f(in)h(linking)f Fe(spread.frame)p Ff(s)g(to)h(other)1013 2600 y(S)d(ob)r(jects)i(or)f(external)g(information)d (resources)18 b(suc)o(h)f(as)1013 2650 y(databases)d(and)g(real-time)e (sensor)j(arra)o(ys.)p eop %%Page: 3 3 bop 393 70 a Ff(Figure)14 b(2.)k(Simple)12 b Fe(spread.frame)f Ff(with)j(F)m(orm)o(ula)d(Assigned)j(to)g(Cells)p 117 103 1717 2 v 117 113 V 116 1194 2 1081 v 125 1194 V 150 148 a Fe(>)22 b(tmp)609 b(#)22 b(ordinary)e(matrix)281 198 y(1)h(2)h(3)g(4)f(sum)150 248 y(Aaaaa)g(0)g(0)h(0)g(0)65 b(0)150 298 y(Bbbbb)21 b(0)g(0)h(0)g(0)65 b(0)172 347 y(Cccc)21 b(0)g(0)h(0)g(0)65 b(0)150 447 y(>)22 b(x)f(<-)h(as.spread\(tmp\))258 b(#)22 b(turn)f(it)g(into)g(a)h(spread.frame) 150 497 y(>)g(x[1,"sum"])d(<-)j(sum\(x[1,-5]\))106 b(#)22 b(assign)e(formula) h(to)g(cells)150 547 y(>)h(expr\(x\)[[1,"sum)o("]])280 b(#)22 b(formula)e(is)h(stored)150 596 y(sum\(x[1,)f(-5]\))150 696 y(>)i(x[1,1:4])e(<-)h(c\(10,)g(20,)g(30,)g(40\))43 b(#)22 b(assign)e(values) 150 746 y(>)i(x)303 796 y(1)43 b(2)g(3)h(4)21 b(sum)150 845 y(Aaaaa)g(10)g(20)h(30)f(40)g(100)261 b(#)22 b(sum)f(column)f(uses)h(formula) 150 895 y(Bbbbb)43 b(0)g(0)g(0)h(0)65 b(0)172 945 y(Cccc)43 b(0)g(0)g(0)h(0)65 b(0)150 1045 y(>)22 b(names\(attribute)o(s\(x\)\))150 1095 y([1])f("dim")130 b("dimnames")20 b("expr")107 b("macro")150 1144 y([5])21 b("before")64 b("after")86 b("class")p 1824 1194 V 1833 1194 V 117 1196 1717 2 v 117 1206 V 0 1312 a Fh(2.4)48 b(Multipl)o(e)13 b Fe(spread.frame)p Fh(s)42 1392 y Ff(The)27 b(curren)o(t)h(implemen)o(tati)o(on)c(supp)q(orts)k(m)o(ultiple)0 1442 y Fe(spread.frame)p Ff(s)d(and)j(m)o(ultiple)d(views)i(of)g(the)h(same)0 1492 y Fe(spread.frame)13 b Ff(through)i(a)g(single)g(S)g(session.)23 b(W)m(e)15 b(ha)o(v)o(e)0 1541 y(in)o(tro)q(duced)g(sev)o(eral)g(ob)r(jects)g (to)f(simplify)e(the)j(switc)o(hing)0 1591 y(b)q(et)o(w)o(een)22 b Fe(spread.frame)p Ff(s.)35 b(The)21 b Fe(spread.frame)d Ff(k)o(er-)0 1641 y(nel)12 b(assumes)f(the)h Fe(spread.frame)e Ff(is)h(an)g(S)h(ob)r(ject) h(named)0 1691 y Fe(x)18 b Ff(as)h(describ)q(ed)h(in)e(Section)h(2.2.)31 b(The)19 b(switc)o(hing)f(task)0 1741 y(is)f(essen)o(tially)g(a)f(mec)o (hanism)f(for)h(k)o(eeping)h(trac)o(k)h(of)e(the)0 1791 y(user's)k(name)f (for)g(the)g(activ)o(e)h Fe(spread.frame)p Ff(.)32 b(W)m(e)19 b(do)0 1840 y(this)11 b(with)g(a)g(foreground)h(function)f Fe(fg\(\))f Ff(and)h(t)o(w)o(o)g(frame-)0 1890 y(0)i(v)n(ariables)f Fe(.Active)f Ff(and)i Fe(.Active.buffer)m Ff(.)18 b Fe(.Active)0 1940 y Ff(con)o(tains)f(the)g(name)f(of)g(the)i(activ)o(e)f Fe(spread.frame)d Ff(ob-)0 1990 y(ject)i(and)f Fe(.Active.buffer)d Ff(con)o(tains)j(the)g(name)f(of)h(the)0 2040 y(curren)o(t)21 b(t)o(w)o(o-dimensional)16 b(slice.)35 b(When)19 b(the)h(name)e(of)0 2089 y(a)23 b Fe(spread.frame)p Ff(,)f(sa)o(y)g Fe("section1")n Ff(,)j(is)d(assigned)i(to)0 2139 y Fe(.Active)o Ff(,)d(its)f(v)n(alue)f(is)h (duplicated)g(in)g(the)g(S)h(v)n(ariable)0 2189 y Fe(x)15 b Ff(and)f(the)i(screen)h(displa)o(y)c(is)i(up)q(dated.)22 b(Up)q(on)15 b(comple-)0 2239 y(tion)h(of)g(the)h(up)q(date,)h(the)f(resulting)f(ob)r (ject)i(is)e(assigned)0 2289 y(bac)o(k)e(in)o(to)f(the)i(original)d(name)g (stored)j(in)f Fe(.Active)n Ff(.)42 2339 y(The)20 b(ob)r(ject)h Fe(.Registry)e Ff(is)h(a)g(data)g(structure)j(used)0 2388 y(to)h(k)o(eep)h (trac)o(k)g(of)f(the)h Fe(spread.frame)p Ff(s)d(in)i(the)h(cur-)0 2438 y(ren)o(t)d Fe(.Data)o Ff(.)40 b(In)21 b(the)g(curren)o(t)i(v)o(ersion)e Fe(.Registry)f Ff(is)0 2488 y(itself)d(a)h Fe(spread.frame)d Ff(whose)j(macro)e(names)h(are)h(the)0 2538 y(names)12 b(of)g(the)h Fe(spread.frame)p Ff(s.)j(Our)d(in)o(ten)o(t)g(is)f(to)h(mak)o(e)0 2588 y Fe(.Registry)h Ff(a)i(more)f(general)i(nested)h(list.)24 b(Its)17 b(function)0 2637 y(will)e(b)q(e)j(to)e(k)o(eep)i(trac)o(k)f(of)f Fe(spread.frame)p Ff(-sp)q(eci\014c)g(for-)0 2687 y(mat)c(information.)i (Curren)o(tly)m(,)f(the)h(displa)o(y)e(app)q(earance)1013 1312 y(is)d(that)h(of)f(the)h(default)g Fe(print\(\))e Ff(command.)14 b(Ev)o(en)o(tually)m(,)1013 1362 y(the)f(displa)o(y)e(will)h(b)q(e)h (formatted)e(according)i(to)g(the)g(infor-)1013 1411 y(mation)c(stored)k(in)f Fe(.Registry)n Ff(.)18 b(The)12 b(ob)r(ject)h Fe(.Registry)1013 1461 y Ff(is)g(retained)i(across)g(login)d(sessions.)1054 1511 y(All)d(this)g(o)q(ccurs)i(transparen)o(t)g(to)f(the)g(user)g(and,)g(ideally) m(,)1013 1561 y(the)i(user)g(will)e(w)o(ork)i(en)o(tirely)f(through)h (spreadsheet)i(st)o(yle)1013 1611 y(in)o(terfaces,)g(or)h(similar)c (bu\013ers,)16 b(and)e(will)f(nev)o(er)i(need)g(to)1013 1661 y(in)o(teract)f(directly)g(with)g(an)f(S)h(session.)1013 1795 y Fg(3)56 b(Device)16 b(Handler)i(Structure)1054 1875 y Ff(The)c(simplicit)o (y)e(of)h(the)i(spreadsheet)h(is)e(that)g(the)h(user)1013 1925 y(graphically)f(iden)o(ti\014es)i(a)f(cell)h(for)f(review,)h(and)g(p)q (ossible)1013 1974 y(up)q(dating,)11 b(of)g(its)h(form)o(ula.)j(F)m(or)c (discussion)h(purp)q(oses)i(w)o(e)1013 2024 y(will)c(use)j(the)g(terminology) d(of)h Fc(placing)j(the)f(cursor)g(on)h(the)1013 2074 y(c)n(el)r(l)p Ff(.)22 b(When)15 b(the)h(cursor)h(is)e(placed)h(on)f(a)g(cell)h(en)o(try)m (,)f(the)1013 2124 y(cell)i(form)o(ula)e(is)i(displa)o(y)o(ed)g(for)g(up)q (date.)30 b(The)18 b(underly-)1013 2174 y(ing)c(structure)j(of)d(a)h Fe(spread.frame)d Ff(is)j(sp)q(eci\014ed)i(b)o(y)d(the)1013 2224 y(de\014nition)e(of)g(the)i(class)f Fe("spread")o Ff(.)k(Details)c(of)f (iden)o(tify-)1013 2273 y(ing)j(the)i(cell)g(and)f(of)g(displa)o(ying)e(a)i (form)o(ula)e(for)i(up)q(date)1013 2323 y(are)g(device)h(sp)q(eci\014c.)27 b(The)16 b(idea)g(of)g(de\014ning)g(a)g(series)i(of)1013 2373 y Fe(spread.frame)c Ff(devices)19 b(is)e(similar)e(to)i(S)h(supp)q(orting)f (a)1013 2423 y(series)e(of)e(graphics)h(devices.)1054 2473 y(The)j(curren)o(t)i(emacs)d(device)i(w)o(orks)f(b)o(y)g(constructing)1013 2522 y(S)g(command)e(sequences)20 b(and)e(app)q(ending)f(them)g(to)g(the)1013 2572 y(end)c(of)e(the)j(S)e(session)i(bu\013er,)f(essen)o(tially)f(the)i (same)d(as)i(if)1013 2622 y(a)h(user)i(had)f(t)o(yp)q(ed)h(it.)21 b(F)m(uture)16 b(dev)o(elopmen)o(t)e(will)f(mak)o(e)1013 2672 y(the)i(b)q(eha)o(vior)f(more)g(lik)o(e)g(that)h(of)f(a)g(smart)g(graphics)h (de-)p eop %%Page: 4 4 bop 0 29 a Ff(vice)11 b(with)f(a)g(spreadsheet)j(mo)q(de.)j(The)11 b(end)g(result)g(will)e(b)q(e)0 79 y(a)16 b(spreadsheet)i(st)o(yle)f(in)o (terface)g(whic)o(h)f(is)g(a)g(natural)f(ex-)0 128 y(tension)h(of)g(the)g (parser)h(en)o(vironmen)o(t.)23 b(An)16 b(ev)o(en)o(t-based)0 178 y(in)o(terface)e(is)g(under)h(construction)f(to)g(b)q(e)g(used)h(with)e (V)m(er-)0 228 y(sion)h(4)f(of)g(S.)0 345 y Fh(3.1)48 b Fe(emacs)15 b Fh(device:)20 b Fe(Spread)15 b Fh(mo)q(de)42 425 y Ff(W)m(e)e(are)i(w)o (orking)e(with)g(Emacs)h(19.28.)i(In)e(this)g(imple-)0 475 y(men)o(tation)j(of)i(the)g Fe(emacs)f Ff(in)o(terface,)j(the)e(emacs)g(en)o (vi-)0 525 y(ronmen)o(t)12 b(is)g(in)g(c)o(harge)h(and)g(S)f(is)h(a)f(sub)q (ordinate)h(pro)q(cess.)0 575 y(The)18 b(details)f(are)h(based)g(on)g(the)g Fe(comint)e Ff(\(compiler)g(in-)0 624 y(terface\))h(mo)q(de)d(in)o(tro)q (duced)j(with)e(Emacs)g(19.)22 b(W)m(e)16 b(ha)o(v)o(e)0 674 y(de\014ned)e(a)e(new)i(read-only)e(ma)r(jor)f(mo)q(de,)g Fe(Spread)h Ff(mo)q(de,)0 724 y(whic)o(h)i(p)q(ermits)g(cursor)i(mo)o(v)o(emen)o(t)11 b(\(cursor)16 b(arro)o(ws)f(and)0 774 y(page-up)e(and)g(page-do)o(wn)g (commands\),)e(the)j Fe(ENTER)e Ff(k)o(ey)m(,)0 824 y(and)g(sev)o(eral)g Fe(^C)o Ff(-pre\014x)h(k)o(eys.)k(On)c(X-windo)o(ws)e(terminals)0 873 y Fe(Spread)i Ff(mo)q(de)f(accepts)k(mouse)d(clic)o(ks.)42 923 y(The)h(e\013ect)h(of)f(the)g Fe(ENTER)f Ff(k)o(ey)h(is)g(to:)30 1006 y(1.)20 b(place)d(in)f(the)h(minibu\013er)e(an)i(S)f(assignmen)o(t)g (state-)83 1056 y(men)o(t)h(that)h(will)e(re-create)k(the)e(curren)o(t)h (cell)f(v)n(alue)83 1106 y(from)12 b(the)j(curren)o(t)g(cell)f(expression.)30 1189 y(2.)20 b(w)o(ait)13 b(for)h(a)f(minibu\013er)g(en)o(try)m(.)0 1272 y(Once)e(the)g(user)g(has)f(mo)q(di\014ed)e(the)j(minibu\013er)d(en)o (try)j(with)0 1322 y(a)j(replacemen)o(t)f(expression,)i(emacs)f(will)30 1413 y(3.)20 b(prin)o(t)14 b(the)h(mo)q(di\014ed)e(statemen)o(t)h(in)g(the)g Fe(*S*)g Ff(bu\013er,)83 1463 y(tell)9 b(S)h(to)g(execute)i(it,)d(and)h (\014nally)f(prin)o(t)g(the)i(up)q(dated)83 1513 y Fe(spread.frame)g Ff(to)j(the)h(spreadsheet)h(bu\013er.)42 1604 y(The)d(emacs)g(in)o(terface)h (is)f(built)g(on)g(the)h Fe(comint)e Ff(mo)q(de.)0 1654 y(The)k(user)g(m)o (ust)f(\014rst)h(create)h(a)e Fe(.Data)f Ff(directory)i(in)f(the)0 1704 y(appropriate)c(directory)m(.)18 b(Then)11 b Fe(Spread)f Ff(mo)q(de)g(is)h(en)o(tered)0 1753 y(b)o(y)i(loading)e(an)i(emacs)g(lisp)f (\014le)h Fe(sprd-int.el)n Ff(.)18 b(The)13 b(lisp)0 1803 y(\014le)g(creates) j(a)d(new)h(bu\013er)g Fe(*Splus*)e Ff(and)h(runs)i Fe(Splus)d Ff(in)0 1853 y(it.)31 b(If)18 b Fe(.Registry)e Ff(already)i(exists)h(in)f Fe(.Data)f Ff(it)h(is)g(dis-)0 1903 y(pla)o(y)o(ed)12 b(in)g Fe(Spread)f Ff(mo)q(de,)g(otherwise)i(a)g(new)f Fe(.Registry)0 1953 y Ff(is)18 b(created)i(and)e(displa)o(y)o(ed.)31 b(Existing)18 b Fe(spread.frame)p Ff(s)0 2003 y(are)i(displa)o(y)o(ed)f(b)o(y)g(t)o(yping)g Fe("f")g Ff(or)g Fe([mouse-2])f Ff(on)h(the)0 2052 y(name)d(of)h(the)h Fe(spread.frame)d Ff(in)i Fe(.Registry)n Ff(.)28 b(Once)19 b(a)0 2102 y Fe(spread.frame)8 b Ff(has)k(b)q(een)g(displa)o(y)o(ed,)e(all)g (further)i(review)0 2152 y(or)21 b(c)o(hange)f(can)h(b)q(e)g(made)f(en)o (tirely)h(in)f Fe(Spread)f Ff(mo)q(de.)0 2202 y(Cursor)13 b(or)f(mouse)g (motion)e(is)i(used)i(to)e(select)h(a)g(cell.)k(The)0 2252 y Fe(ENTER)12 b Ff(k)o(ey)h(or)g Fe([mouse-3])e Ff(is)i(used)h(to)f(op)q(en)g (a)g(cell's)g(for-)0 2301 y(m)o(ula)d(for)h(displa)o(y)g(or)h(revision.)17 b(Macros)12 b(asso)q(ciated)h(with)0 2351 y(the)g Fe(spread.frame)c Ff(can)k(b)q(e)f(displa)o(y)o(ed,)g(c)o(hanged,)g(or)g(ex-)0 2401 y(ecuted)j(b)o(y)f(t)o(yping)f(or)h(clic)o(king.)42 2451 y(The)f(mec)o(hanics)f(of)g(the)i(in)o(terface)f(are)g(simple)e(in)i(prin-)0 2501 y(ciple.)35 b(Eac)o(h)20 b(k)o(ey)g(or)f(mouse)g(action)g(causes)i (emacs)f(to)0 2550 y(generate,)25 b(t)o(yp)q(e,)f(and)e(execute)i(one)f(or)f (more)f(S)h(com-)0 2600 y(mands)d(in)h(the)h Fe(*Splus*)f Ff(bu\013er.)38 b(Execution)21 b(is)g(initi-)0 2650 y(ated)15 b(b)o(y)g(the)h(emacs)e Fe(\(comint-send-input)o(\))e Ff(function.)0 2700 y(Emacs)d(w)o(aits)g(for)f (the)i(S)g(command)c(to)j(complete)g(with)g(the)1013 29 y Fe (\(accept-process)o(-outp)o(ut\))21 b Ff(function.)47 b(The)24 b(emacs)1013 79 y Fe(\(comint-output-)o(filte)o(r\))14 b Ff(function)j (detects)j(an)o(y)c(er-)1013 128 y(rors)e(in)g(the)h(excution)f(of)g(the)h(S) f(command.)j(When)d(an)g(S)1013 178 y(error)j(is)f(detected)i(in)e(one)g(of)g (a)g(series)h(of)f(S)g(commands,)1013 228 y(all)11 b(further)j(generated)h(S) e(commands)e(are)i(cancelled)h(and)1013 278 y(the)g(displa)o(y)f(shifts)h(to) g(the)g Fe(*Splus*)f Ff(bu\013er.)1054 328 y(All)h(generated)i(command)d (sequences)k(end)f(with)e(an)h(S)1013 378 y(command)h(to)j(prin)o(t)g(the)h (revised)g Fe(spread.frame)c Ff(to)j(a)1013 427 y(temp)q(orary)e(\014le,)i (follo)o(w)o(ed)e(b)o(y)h(an)g(emacs)g(command)d(to)1013 477 y(read)f(that)g(\014le)g(and)f(displa)o(y)g(it)h(in)f Fe(Spread)g Ff(mo)q(de.)1054 527 y(The)e Fe(*Splus*)d Ff(bu\013er)k(is)e(alw)o(a)o(ys)f (a)o(v)n(ailable)f(for)i(the)h(user)1013 577 y(to)k(en)o(ter)h(S)g(commands)c (man)o(ually)m(.)19 b(Tw)o(o)c(common)e(uses)1013 627 y(are)e(for)h(the)g (initial)d(creation)j(of)f(a)h Fe(spread.frame)d Ff(and)i(to)1013 676 y(in)o(v)o(estigate)i(S)h(execution)h(errors.)1054 726 y(A)i(ma)r(jor)e(adv)n(an)o(tage)h(of)h(the)g(emacs)g(in)o(terface)h(is)e (the)1013 776 y(lac)o(k)e(of)h(dep)q(endence)i(on)e(w)o(orkstation)g (graphics)g(displa)o(y)1013 826 y(tec)o(hnology)m(.)20 b(It)c(will)d(will)h (w)o(ork)h(w)o(ell)f(on)h(an)o(y)g(c)o(haracter-)1013 876 y(based)c(terminal) d(for)i(whic)o(h)h(a)f Fe(termcap)f Ff(de\014nition)h(exists.)1013 925 y(In)h(particular,)g(the)h(emacs)f(device)h(in)o(terface)g(can)g(b)q(e)g (used)1013 975 y(o)o(v)o(er)h(slo)o(w)h(telephone)h(connections.)1013 1092 y Fh(3.2)47 b(Graphics)14 b(Device)1054 1172 y Ff(The)21 b(graphics)g(device)h(in)o(terface)f(is)g(still)f(in)g(the)i(ex-)1013 1222 y(istence)27 b(demonstration)d(phase.)54 b(The)26 b(screen)i(is)e(di-) 1013 1272 y(vided)10 b(with)h(the)h Fe(split.screen\(\))c Ff(functions)j(in)o (to)f(small)1013 1322 y(pieces,)i(one)g(p)q(er)h(cell)f(of)f(the)h Fe(spread.frame)p Ff(.)j(The)d(en)o(tire)1013 1372 y Fe(spread.frame)c Ff(is)i(plotted)h(with)f(the)h Fe(text\(\))e Ff(command.)1013 1421 y Fe(spread.frame)i Ff(cells)j(are)g(iden)o(ti\014ed)g(b)o(y)f(a)g(con)o (trol)h(func-)1013 1471 y(tion)c(based)i(on)f(the)h Fe(locator\(\))e Ff(function.)17 b(Once)12 b(the)g(cell)1013 1521 y(has)i(b)q(een)h(lo)q (cated)f(with)f(the)i(mouse,)d(the)j(function)e(will:)1042 1604 y(1.)21 b(place)c(in)h(the)g(S)g(windo)o(w)f(an)g(S)h(assignmen)o(t)e (state-)1096 1654 y(men)o(t)g(that)i(will)e(re-create)k(the)f(curren)o(t)g (cell)f(v)n(alue)1096 1704 y(from)12 b(the)i(curren)o(t)i(cell)d(expression.) 1042 1787 y(2.)21 b(w)o(ait)13 b(for)g(an)h(S)g(en)o(try)m(.)1013 1870 y(Once)i(the)g(user)g(has)g(mo)q(di\014ed)e(the)i(constructed)h(assign-) 1013 1920 y(men)o(t)k(statemen)o(t,)k(using)d(w)o(orkstation-sp)q(eci\014c)i (screen)1013 1969 y(editing,)f(and)g(en)o(tered)h(the)g(mo)q(di\014ed)d (statemen)o(t,)j(the)1013 2019 y(con)o(trol)13 b(function)h(will)1042 2102 y(3.)21 b(execute)f(the)g(mo)q(di\014ed)e(statemen)o(t)h(and)f(prin)o(t) h(the)1096 2152 y(up)q(dated)14 b Fe(spread.frame)d Ff(to)j(the)h(graphics)f (device.)1054 2235 y(P)o(oten)o(tial)21 b(adv)n(an)o(tages)h(of)f(the)i (graphics)f(device)h(in-)1013 2285 y(clude)10 b(the)h(abilit)o(y)e(to)h (place)g(one)h(or)f(more)f(graphs)i(in)e(other)1013 2335 y(windo)o(ws)17 b(of)g(the)i(same)e(graphics)h(device)h(in)e(whic)o(h)h(the)1013 2384 y Fe(spread.frame)11 b Ff(itself)i(is)h(displa)o(y)o(ed.)1013 2501 y Fh(3.3)47 b(F)l(uture)14 b(Dev)o(elopmen)o(t)1054 2581 y Ff(V)m(ersion)h(4)g(of)f(S)h(has)h(facilities)e(for)g(ev)o(en)o(t)i (monitoring.)1013 2631 y(The)i Fe(spread.frame)p Ff(s)e(will)g(b)q(e)j(able)f (to)g(send)h(their)f(up-)1013 2681 y(dating)h(information)e(directly)j(to)g (a)g(FIF)o(O)h(running)e(in)p eop %%Page: 5 5 bop 0 29 a Ff(the)16 b(bac)o(kground)f(of)g(the)h(S)f(session.)24 b(Curren)o(tly)16 b(this)f(in-)0 79 y(formation)c(is)j(sen)o(t)h(to)f(the)g Fe(tty)f Ff(in)h(whic)o(h)f(S)h(is)g(running.)42 128 y(W)m(e)29 b(will)g(extend)i(the)g(infrastructure)g(to)f(include)0 178 y(higher-dimensional)16 b(arra)o(ys)j(and,)g(more)e(generally)m(,)i(ar-)0 228 y(bitrary)12 b(subsets)i(of)d(data)h(ob)r(jects.)19 b(W)m(e)12 b(will)e(supp)q(ort)j(Im-)0 278 y(p)q(ort/Exp)q(ort)e(of)f(p)q(opular)g (spreadsheet)i(\014le)e(formats.)16 b(W)m(e)0 328 y(will)d(ha)o(v)o(e)i(SQL)g (capabilit)o(y)f(and)h(b)q(e)g(able)g(to)g(displa)o(y)f(ar-)0 378 y(bitrary)g(views)g(of)f(database)h(formats.)42 427 y(W)m(e)e(ha)o(v)o(e) g(outlined)g(a)g(tcl/tk)h(in)o(terface)g(that)g(will)e(w)o(ork)0 477 y(on)k(b)q(oth)g(Windo)o(ws)g(and)g(Unix)g(v)o(ersion)g(of)g(S-Plus.)22 b(The)0 527 y(curren)o(t)f(emacs)d(in)o(terface)i(requires)g(a)f(Unix)g (host.)34 b(Al-)0 577 y(though)15 b(the)g(graphics)g(device)h(in)o(terface)g (w)o(orks)f(on)f(b)q(oth)0 627 y(v)o(ersions,)g(it)f(is)h(still)f(v)o(ery)h (rudimen)o(tary)m(.)0 761 y Fg(4)56 b(Examples)0 841 y Fh(4.1)48 b(Gradesheet)42 921 y Ff(I)18 b(frequen)o(tly)g(collect)h(data)f(on)g(sev)o (eral)h(v)n(ariables)f(for)0 971 y(a)g(group)g(of)g(studen)o(ts)h(and)f(need) i(to)e(construct)i(a)e(sum-)0 1021 y(mary)23 b(of)g(the)i(results)h(\(for)e (example,)h(a)f(grade)g(sheet)0 1070 y(sho)o(wing)15 b(the)h(p)q(oin)o(ts)f (earned)h(b)o(y)f(eac)o(h)h(studen)o(t)h(on)e(eac)o(h)0 1120 y(exam)h(question,)h(and)g(the)g(total)g(score\).)28 b(I)17 b(construct)i(a)0 1170 y Fe(spread.frame)d Ff(with)i(the)h(studen)o(t)h (names)d(as)i(the)g(ro)o(w)0 1220 y(iden)o(ti\014er,)13 b(the)g(question)f(n) o(um)o(b)q(ers)g(as)h(the)g(column)e(iden-)0 1270 y(ti\014er.)18 b(I)c(construct)i(an)d Fe("after")g Ff(expression)65 1320 y Fe(after\(x\)["sum"])19 b(<-)i(expression\()87 1369 y(x[,)g(12])h(<-)f (apply\(x[,)f(-12],)h(1,)g(sum\))g(\))0 1419 y Ff(that)e(sums)g(the)h(v)n (alues)e(for)h(the)h(questions)g(and)f(places)0 1469 y(them)13 b(in)h(the)g Fe("sum")f Ff(column.)42 1519 y(The)e Fe(spread.frame)d Ff(after)j(one)g(studen)o(t's)h(scores)h(ha)o(v)o(e)0 1569 y(b)q(een)g(en)o(tered)i(app)q(ears)e(in)f(Figure)g(1a.)17 b(Note)c(that)f(I)h(ha)o(v)o(e)0 1618 y(placed)g(the)g(maxim)n(um)8 b(scores)14 b(for)e(eac)o(h)h(sub-question)g(in)0 1668 y(the)19 b Fe(spread.frame)p Ff(.)28 b(This)18 b(functions)h(b)q(oth)f(as)g(an)g(aid)0 1718 y(when)e(en)o(tering)h(the)f(data)g(and)f(as)h(a)g(p)q(ermanen)o(t)f (record)0 1768 y(when)g(the)f(\014lled)g(out)g Fe(spread.frame)e Ff(is)i(prin)o(ted)g(for)g(m)o(y)0 1818 y(class)g(notes)h(b)q(o)q(ok.)42 1868 y(I)c(\014nd)i(it)e(easiest)i(to)f(record)h(grades)g(b)o(y)f(en)o (tering)g(a)g(stu-)0 1917 y(den)o(t's)j(en)o(tire)g(set)g(of)f(question)h (scores)h(at)e(once.)20 b(I)14 b(there-)0 1967 y(fore)i(created)h(a)e (sub-class)h Fe("grade")e Ff(that)h(inherits)h(from)0 2017 y Fe("spread")n Ff(.)i(The)12 b Fe("grade")e Ff(class)i(has)g(one)g (de\014ning)f(c)o(har-)0 2067 y(acteristic,)h(when)g(the)g(cursor)h(is)e (placed)g(on)h(the)f(studen)o(t's)0 2117 y(name,)g(the)i(en)o(tire)g(ro)o(w)f (except)i(for)e(the)h Fe("sum")e Ff(column)g(is)0 2166 y(op)q(ened)k(for)f (data)f(en)o(try)m(.)19 b(\(Normally)m(,)10 b(when)15 b(a)e(ro)o(w)h(lab)q (el)0 2216 y(is)i(en)o(tered,)h(the)f(whole)g(ro)o(w)f(is)g(op)q(ened.\))25 b(F)m(or)15 b(example,)0 2266 y(when)d(I)f(en)o(ter)i(studen)o(t)f Fe(Bbbbb)f Ff(b)o(y)g(clic)o(king)f(on)i(the)g Fe(Bbbbb)0 2316 y Ff(cell)i(in)f(Figure)h(1a,)f(the)i(en)o(try)f(panel)g(displa)o(ys)p 0 2348 922 2 v 0 2358 V -1 2448 2 91 v 8 2448 V 33 2392 a Fe(x["Bbbbb",-12]) 19 b Fd( )186 2442 y Fe(c\(0,0,0,0,0,0,0,)o(0,0,0)o(,0\))p 912 2448 V 921 2448 V 0 2450 922 2 v 0 2460 V 0 2510 a Ff(I)j(mo)q(dify)d (this)j(to)f(the)i(appropriate)e(v)n(alues)h(from)e(the)0 2560 y(mark)o(ed)13 b(exam:)p 0 2584 V 0 2594 V -1 2684 2 91 v 8 2684 V 33 2629 a Fe(x["Cccc",-12])19 b Fd( )164 2679 y Fe(c\(1,2,3,4,5,6,7,8) o(,9,10)o(,11\))p 912 2684 V 921 2684 V 0 2686 922 2 v 0 2696 V 1013 29 a Ff(Figure)k(3.)47 b Fe(after\(\))22 b Ff(Changes)i(Graphs)g(as)f (P)o(oin)o(t)g(is)1013 79 y(Mo)o(v)o(ed.)35 b(Changing)19 b(the)h(v)n(alue)f (of)g(a)h(single)f(p)q(oin)o(t)g(au-)1013 128 y(tomatically)12 b(c)o(hanges)17 b(the)g(graph)e(of)h(the)g(data.)24 b(On)16 b(the)1013 178 y(left)h(graph,)g(the)h(p)q(oin)o(t)f Fe(x[11,"y"])j(=)h (0.379)o Ff(.)29 b(On)17 b(the)1013 228 y(righ)o(t)c(graph,)g(the)i(p)q(oin)o (t)e Fe(x[11,"y"])20 b(=)i(4.379)o Ff(.)1013 315 y 14208860 9946202 1184071 1184071 50454609 35982622 startTexFig 1013 315 a %%BeginDocument: regr.ps gsave 18.000000 547.000000 translate /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if 749.000000 -529.000000 scale /picstr 1019 string def 1019 720 8 [1019 0 0 -720 0 720] {currentfile picstr readhexstring pop} image 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0ec8c8c880808030006969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696900c880c8803080300e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0ec8c880c88030800069696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696969696900c8c8808080 30300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000006969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696969696969696900c8 80c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e00c8303030303030303030303030303030303030303030303030 303030303030c8c8303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030c8c830303030303030303030 3030303030303030303030303030303069696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c880308030803080308030803080308030803080 30803080308030803030c8c83080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 803080308030803080308030803080308030803080308030803030c8c8308030803080 3080308030803080308030803080308030803080696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c88080808080808080808080808080 8080808080808080808080808030c8c880808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080808080808080808080808030c8c88080 8080808080808080808080808080808080808080808080806969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080808080808080808080 808080808080808080808080808080808030c880808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808030 c880808080808080808080808080808080808080808080808080808069696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c8803080c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c8808080 30c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 8069696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696900c880c8803080300e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8 80c880308030c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c880c8696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696900c8c880808030300e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c8806969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696969696900c880c880 3080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c869696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696900 c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c880696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c86969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88069696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8806969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c8696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696900c8c880808030300e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c8806969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696900c880c880308030 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c869696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696900c8c880 808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c880696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 00c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c86969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88069696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c8696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8806969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c869 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c8806969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696900c880c8803080300e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c869696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696900c8c880808030 300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c880696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696969696969696900c880 c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c86969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88069696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c8696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c8c880803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c8806969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c8c8c8308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c869696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00303030308030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c830 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696900c880c8803080300e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e003080 3080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c869696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696900c8c880808030300e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c880696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696969696900c880c88030 80300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c86969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696969696969696900c8 c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88069696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c8696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c8806969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c869696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c869696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696900c8c880808030300e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c880696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696900c880c8803080300e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c86969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696969696900c8c88080 8030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88069696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696900 c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c8696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c8806969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c869696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c86969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c880696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696900c880c8803080300e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c86969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696900c8c88080803030 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88069696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696900c880c8 803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c8696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 00c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c8806969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c869696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c880696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c86969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ff0000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffff0000ffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffff0000ffff00000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00 00ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffff0000ffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffff0000ffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffff0000ffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ff0000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffff0000ffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ffff00000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88069 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff 0000ffffff0000ff0000ffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ff0000ffffff0000ffff0000ff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ff0000ffffff0000ff0000ffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffff0000ffff0000ff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffff0000ff0000ffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ff0000ffffff0000ff0000ffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ff0000ffffff0000ffff0000ff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff 0000ffffff0000ff0000ffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffff0000ffff0000ff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff0000ff0000 ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c86969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696900c8c880808030300e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffff0000ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffff0000ffffffffff0000ffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff0000ff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffff0000ffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffff0000ffffffffff0000ffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff 0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffff0000ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffff0000ffffff0000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff ffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88069696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696900c880c8803080 300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffff0000ffffffffff0000ffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ff ffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ffffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c8696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696969696969696900c8c8 80808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ff0000ffffff0000ffffffffffffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff0000ffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000 ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffffffff0000ffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ff0000ffffff0000ffffffffff ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ff0000ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffff0000ffffffffffffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000 ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c8806969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffff0000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff0000ff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffff0000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffff0000ffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffff0000ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffff0000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff ffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c869696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffff ff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffff0000ffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ff0000ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffff0000ffffffffff0000ffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c880696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000 ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff0000ffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffff0000ffffffffff0000ffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c86969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffff0000ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffff0000ffffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff00 00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffff0000ffffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffff0000ffffffffff0000ffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88069696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ff0000ffffffffffffff0000ff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ff0000ffffffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff ffffffff0000ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000ffffffffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ff0000ffffffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ff0000ffffffffffffff0000ff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000ffffffffffffffff0000ff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88069696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696900c880c8803080300e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c8696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696969696900c8c8808080 30300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c8806969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696969696969696969696969696969696900c8 80c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c869696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c880696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c86969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88069696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696900c880c8803080300e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 69696969696969696969696969696969696900c8c880808030300e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8069696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696900c880c8803080300e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c8696969696969696969696969696969696969696969696969696969696969 6969696969696969696969696969696969696969696969696969696969696969696969 696969696969696969696969696969696969696969696969696900c8c880808030300e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e 0e0e00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c8800000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c830303030303030303030303030303030303030303030 303030303030c8c8303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303000c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c880803080308030803080308030803080308030 80308030803080308030c8c88030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 308030803080308030803080308000c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c88080808080808080808080808080 8080808080808080808080803030c8c880808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808000c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080808080808080808080 808080808080808080808080808080808030c880808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808000c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c800c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 80c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c800c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c800 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff ffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff ffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffff00ffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffff00000000ffffff000000ffffffffffffffff000000000000000000ffffff000000 000000000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffffffff ff000000000000ffffffffffffff000000ffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffff0000ffffffffffffffffffffffffffffffffffffffffffffff 0000ffffff00000000ffffffff000000ffffffffffffffff000000000000000000ffff ff000000000000000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffff ffffffffff00000000000000ffffffffffff000000ffffffffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffff00000000ffffffffffffffffffffffffffffffffff ffffffffff0000ffff000000ffffffffff000000ffffffffffffffffffffff000000ff ffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff00 0000ffffffffffffff00ffffff00000000ffffffffff000000ffffffffffffffff00ff ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffff00000000ffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffff000000ffffffffffffffffffffff 000000ffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffff0000ffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffff00000000ffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffff00000000ffffff ffffff00000000000000000000ffffffffffffffffffffffffffff0000000000000000 0000ffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000ff ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff000000 00ffffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000ff0000ffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff00000000ff ffffffffffffff00000000000000000000ffffffffffffffffffffffffffff00000000 000000000000ffffffffffffffffffffffffffffffffffffff00000000ffffffffffff ff0000ffffffffffffffff00000000ff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff00 000000ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff0000 00ffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffff0000ffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000000000ffffffffffffffffffffffffffffffff000000000000ffffff ffffffffff000000ffffffffffff000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ff00000000ffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffff000000ffffffffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff000000 ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffff000000ffffffffffffffffffffffffffffffffffff00000000ff ffffffffffffffffffff0000ffffffffff00000000ffff00000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffff00000000ffffffffffffffffffffffffffffffffffffffffffff000000ff0000 00ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff000000ffff ffff0000ffffff0000ffffff0000ffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ff000000ffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffff000000ffffffff000000ffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffff000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffff0000ffffffffffffffffffffffffffffffffffffffffffffff000000 00ffff000000ffffffff000000ffffffffffffffffffffff000000ffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffff00 0000ffffffff0000ffffff0000ffffff0000ffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ff000000ffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffff000000ffffff000000ffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffff00ffffffffffffffffffffffffffffffffffffffffffffff 00000000ffffffff000000ffffff000000ffffffffffffffffffffff000000ffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffff0000ffffff0000ffff ffff000000ffffffffffff0000ffff0000ffffff0000ffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000ffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff000000 ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff0000ffffff 0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffff00ffffff00000000ffffffffffffffffffff000000ffff0000 0000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffff0000 00000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffff00 00ffffff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffff00 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffff00000000000000ffffffffff000000000000000000 ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff ffff000000000000ffffffffffff000000000000ffffffffffffffffffffffffffffff ffffff0000ffffff0000ffffffffffffffffffffffffffffffffff0000ffffff0000ff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffff0000000000ffffffffffff0000000000 00000000ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8c8803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880303080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffff00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000ffffff000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffff0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000ffff ffff000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffff00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000ffff00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffff000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000ffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffff0000000000000000 0000000000000000000000000000000000ffff0000000000ffffffff00ffff00000000 00ffffffff00000000000000000000000000ffffffffffffffffffff00ffffff00ffff ff00ffffff00000000ffffffff0000ffffff00000000ffffffffffffff00000000ffff ffffffff00000000000000ffffff000000000000000000000000000000000000ffffff 00000000ffffffff0000000000ffffff00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff00000000 00000000000000000000000000000000000000000000ffff000000ffffffffffff00ff ff000000ffffffffffff000000000000000000000000ffffffffffffffffffff00ffff ff00ffffff00ffffff000000ffffffffffffffffffff000000ffffffffffffffff0000 00ffffffffffffffff000000000000ffffff0000000000000000000000000000000000 0000ffff000000ffffffff000000000000ffffff000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff 0000000000000000000000000000000000000000000000000000ffffff0000ffff0000 ffff00ffffff0000ffff0000ffff000000000000000000000000ffffff000000000000 0000ffffff00ffffff00ffffff0000ffffff000000ffffffff000000ffffffff000000 0000000000ff0000000000ffffff0000000000ffffff00000000000000000000000000 00000000000000ffff0000ffffff00000000000000ffffff0000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffff000000000000000000000000000000000000000000000000000000ffff0000 ffff0000ffff0000ffff0000ffff0000ffff000000000000000000000000ffffff0000 000000000000ffffff00ffffff00ffffff0000ffffff00000000ffffff0000ffffffff 000000000000000000000000000000ffffff0000000000000000000000000000000000 0000000000000000000000ffffffffffffff000000000000ffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffff00ffffffffffffffffffff0000ffffffffffffffffffff00000000 00ffff00ffff0000ffff000000ffff00ffff0000ffffffffffffffffffffffff0000ff ffff0000000000000000ffffff00ffffff00ffffff0000ffffff00000000ffffff0000 ffffff00000000000000000000000000ffffffffffff00000000000000000000000000 00000000000000000000000000000000ffffffffff00000000000000ffffffffff0000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffff00ffffffffffffffffffff0000ffffffffffffffffffff 0000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ff0000ffffff0000000000000000ffffff00ffffff00ffffff000000ffffffffffffff ffff0000ffffff0000000000000000000000ffffffffffffff00000000000000000000 000000000000000000000000000000000000000000ffffff00000000000000ffffffff 00ffff0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffff00000000000000000000000000000000000000 00000000000000000000ffff00ffffffff0000000000ffff00ffffffff000000000000 00000000000000ffffffffffffffff000000ffffff00ffffff00ffffff00000000ffff ffffffffffff0000ffffff00000000000000000000ffffffffffff0000000000000000 000000000000000000000000000000000000000000000000ffffffff00000000000000 ffffff0000ffff00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffff000000000000000000000000000000 00000000000000000000ffffffff00ffff0000000000ffffffff00ffff000000000000 0000000000000000000000ffffffffffffffff000000ffffff00ffffff00ffffff0000 00000000000000ffffff0000ffffff00000000000000000000ffffffff000000000000 000000000000000000000000000000000000000000000000000000ffffffffffff0000 000000ffffffff0000ffffff0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffff0000000000000000000000 00000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff00 000000000000000000000000000000ffffff0000000000000000ffffffffffffffffff ffff000000ff00000000ffffffff000000ffffffff00000000ff000000ffffff000000 00ff000000000000ffffff0000000000000000000000000000000000000000ffffff00 ffffff00000000ffffff00000000ffff00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffff00000000000000 0000000000000000000000000000000000ffff0000ffff00ffff000000ffff0000ffff 00ffff00000000000000000000000000000000ffffff0000000000000000ffffffffff ffffffffffff000000ffffffffffffffff0000000000ffffffffffffffff00000000ff ffffffffffff000000000000ffffff00000000000000000000000000000000000000ff ffffff0000ffffff000000ffffff00000000ffff000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff000000 000000000000000000000000000000000000000000ffff0000ffff0000ffff0000ffff 0000ffff0000ffff000000000000000000000000000000ffffff0000000000000000ff ffff00ffff0000ffff0000000000ffffffffffff00000000000000ffffffffffffff00 00000000ffffffffffff000000000000ffffff00000000000000000000000000000000 0000ffffffff00000000ffffff00ffffff000000000000ffff00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ff000000000000000000000000000000000000000000000000ffff0000ffff0000ffff ff00ffff0000ffff0000ffffff0000000000000000000000000000ffffff0000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffff000000000000000000000000000000000000000000000000ffffffffffff 000000ffff00ffffffffffff000000ffff0000000000000000000000000000ffffffff ffffffffff000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffff00000000000000000000000000000000000000000000000000ff ffffff0000000000ffff00ffffffff0000000000ffff00000000000000000000000000 ffffffffffffffffff0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffff00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffff000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffff0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffff00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffff00ff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffff ffffffffffffffffffffffffffffffff00ffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffff000000ffffffffffffffffff0000000000ffffffffffff000000 ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffff0000ffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff0000 ffffffffffffffffffffffffffffffffffffffff00ffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffff000000ffffffffffffffff000000000000ffffffffff ff000000ffffffffffffff000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffff00ffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffff000000ffffffffffffff000000ffffffffff ffffffffff000000ffffffffffff00000000ffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffff0000ffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffff00ffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffff000000ff ffffffffffffffffff000000ffffffffff00000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000000000ffffffffffffffffffffffffffffff00000000000000ffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffff 000000ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffff ff00ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffff000000ffffff ffffffff000000ffffffffffffffffffff000000ffffffffff00000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff0000 00ffffffffffffff000000ffffffffffffffffffff000000ffffffffff000000000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffff000000ffffffffffffff000000ffffffffffffffffffff000000ffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffff0000ffffff0000ffffffffffffff000000ffffffffff ffffffffffff000000ffffffffffffff000000ffffffffffffffffffff000000ffffff ffffff000000ffffffff0000ffffff0000ffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffff0000ffffff0000ffffffffff000000000000 000000ffffff00000000000000ffffffffff000000000000000000ffffffffffff0000 00ffffffffffffff0000000000000000ffffff0000ffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffff0000ffffff0000ffffffffff0000 00000000000000ffffff00000000000000ffffffffff000000000000000000ffffffff ffff000000ffffffffffffffff0000000000ffffffffff0000ffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffff0000ffffff0000ffffff ffffffff000000ffffffffffffffffffffff000000ffffffffffffff000000ffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffff0000ffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff0000ffffff00 00ffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffff000000 ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff0000ffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff0000 ffffff0000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff 0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffff000000ff00000000ffffffffffffffff000000ffff ffffffffff0000000000ffffffffffffffffffff0000000000ffffffffff000000ffff ffffffff000000ff00000000ffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffff000000000000000000ffffffffffffff00 0000ffffffffffff0000000000000000ffffffffffffff000000000000ffffffffff00 0000ffffffffffff000000000000000000ffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000000000000000ffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffff00000000ffff000000ffffffff ffffff000000ffffffffff000000ffffff000000ffffffffffff000000ffffffffffff ffffff000000ffffffffffff00000000ffff000000ffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000000000000000ffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffff000000ffffffff0000 00ffffffffffff000000ffffffff000000ffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000000000000000ffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff000000ffff ffff000000ffffffffffff000000ffffffff000000ffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff00 0000ffffffff000000ffffffffffff000000ffffffff000000ffffffffff000000ffff ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffff000000ffffffff000000ffffffffffff000000ffffffff000000ffffffffff00 0000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffff ffffffffffffff00000000ffff00000000ffffffffffff000000ffffffff000000ffff ffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000 00ffff00000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00000000000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff 0000ffffff0000ffffffff00000000000000000000ffffffffffff000000ffffffffff 000000ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffff ff00000000000000000000ffffffffff000000ffffffffffffff0000ffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffff0000ffffff0000ffffffff000000ff0000000000ffffffffffffff000000ff ffffffff000000000000000000ffffffff000000000000000000ffffffffffffffffff ffffffffff000000ff0000000000ffffffff000000000000000000ffffff0000ffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000000000000000ffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffff0000ffffff0000ffffffff000000ff00000000ffffffffffffffff 000000ffffffffffffff0000000000ffffffffffff000000000000000000ffffffffff ffffffffffffffffff000000ff00000000ffffffffff000000000000000000ffffff00 00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000000000ffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffff0000ffffff0000ffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000000000ffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffff0000ffffff0000ffffffffffffffffffffffff ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000000000ffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffff0000ffffff0000ffffffffffffffff ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffffff00000000ffff000000ff0000000000000000ffffffffffffffff000000ffffff ffffffffffffff000000ffffffffff000000ffffff000000ffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffffff00000000000000000000ff000000000000000000ffffffffffffff0000 00ffffffffffffffffffff000000ffffffffff000000ffffff000000ffffffff000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffff000000ffffff00000000ffff00000000ffff000000ffffffffff ffff000000ffffffffffffffffffff000000ffffffffff000000ffffff000000ffffff 00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffff000000ffffffff000000ffff000000ffffffff000000 ffffffffffff000000ffffffffffffffffffff000000ffffffffff000000ffffff0000 00ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffff000000ffffffff000000ffff000000ffffff ff000000ffffffffffff000000ffffffffffffffffffff000000ffffffffff000000ff ffff000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffff000000000000000000ffff0000 00ffffffff000000ffffffffffff000000ffffffffffffffffffff000000ffffffffff 000000ffffff000000ffff0000000000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffff0000000000000000 ffff000000ffffffff000000ffffffffffff000000ffffffffffffffffffff000000ff ffffffff000000ffffff000000ffff0000000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffff ff000000ffff00000000ffff00000000ffffffffffff000000ffffffffffffffffffff 000000ffffffffff00000000ffff000000ffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffff0000ffffff0000ffffffffff00 ffffffff00000000ffff00000000000000000000ffffffffffff000000ffffffffffff ffffffff000000ffffffffff000000000000000000ffffff000000ffffffff0000ffff ff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffff0000ffffff0000ffff ffffff0000000000000000ffffff000000ff0000000000ffffffffffffff000000ffff ffffffff00000000000000ffffffffff000000000000000000ffffffff000000000000 0000ffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff0000ffffff 0000ffffffffffff000000000000ffffffff000000ffff000000ffffffffffffffff00 0000ffffffffffff00000000000000ffffffffff000000ff00000000ffffffffffff00 00000000ffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff00 00ffffff0000ffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffff000000ffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffff0000ffffff0000ffffffffffffffffffffffffffffffff000000ffffffffffff ffffff00000000000000ffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffff0000ffffff0000ffffffffffffffffffffffffffffffff000000ffff ffffffffffffff00000000000000ffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffffff000000ff00000000ffffffff ffffffff000000ffffffffffffff0000000000ffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffffff0000000000000000 00ffffffffffffff000000ffffffffffff0000000000000000ffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff00000000 ffff000000ffffffffffffff000000ffffffffff000000ffffff000000ffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff 000000ffffffff000000ffffffffffff000000ffffffff000000ffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffffff000000ffffffff000000ffffffffffff000000ffffffff000000ffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffffff000000ffffffff000000ffffffffffff000000ffffffff000000ff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 00ffffffffffffffffffffffffffffffffffffff00ffff000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffffff000000ffffffff000000ffffffffffff000000ffffffff 000000ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 0000000000ffffffffffffffffffffffffffffffffffffff00ffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffffff00000000ffff00000000ffffffffffff000000 ffffffff000000ffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffff0000ffffff0000ffffffff00000000000000000000ffffffffff ff000000ffffffffff000000ffffff000000ffffffffffff000000ffffffffffffff00 00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffff0000ffffff0000ffffffff000000ff0000000000ffff ffffffffff000000ffffffffff000000000000000000ffffffff000000000000000000 ffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffff0000ffffff0000ffffffff000000ff000000 00ffffffffffffffff000000ffffffffffffff0000000000ffffffffffff0000000000 00000000ffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffff000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffff0000ffffff0000ffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffff0000ffffff0000ffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffff0000ffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff0000ffffff00 00ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffffffffffff000000ffffffff000000ff000000ff000000ffffff ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffff 000000ffffffff00000000ffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffffffffffff000000ffffffff000000ff000000ff0000 00ffffffffff000000ffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffff0000ffffff00000000ffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffffffffffff000000ffffffff000000ff0000 00ff000000ffffffffff0000ffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffff0000ffff000000ffffffffffffff00000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffffffffffff000000ffffffff0000 00ff000000ff000000ffffffff000000ffffffffffffffffffff0000000000ffffffff 0000ffffffff000000ffffffffff00000000000000ffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff000000ffff ffff000000ff000000ff000000ffffffff000000ffffffffffffffffffff0000000000 ffffffff0000ffffff00000000ffffffffffff0000000000ffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffff00 0000ffffffff000000ff000000ff000000ffffffff000000ffffffffffffffffff0000 0000ff0000ffffff0000ff00000000ff0000ffffffffffff000000ffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffff ffffff000000ffffffff000000ff000000ff000000ffffffff000000ffffffffffffff ffff000000ffff0000ffffffff00000000ffffff0000ffffffffff00000000ffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffffffffffff000000ffffffff000000ff000000ff000000ffffffff000000ffffff ffffffffff00000000ffff000000ffffff000000ffffffff0000ffffffff0000000000 00ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff0000ffff ff0000ffffffffffffffff000000ffffffff0000000000000000000000ffffffff0000 0000ffffffffffffff000000ffffffff0000ffffffffffffffffffffffffffffffff00 0000ff000000ffffffffffffff000000ffffffffffff0000ffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff 0000ffffff0000ffffffffffffffff000000ffffffff0000000000000000000000ffff ffffff000000ffffffffffffff000000ffffffff0000ffffffffffffffffffffffffff ffff00000000ffff000000ffffffffffff000000ffffffffffff0000ffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffff0000ffffff0000ffffffffffffffff000000ffffffff000000ff0000ffff00 00ffffffffffff00000000ffffffffff000000ffffffffffff0000ffffffffffffffff ffffffffff00000000ffffffff000000ffffffff000000ffffffffffffff0000ffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffff0000ffffff0000ffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff00 00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffff0000ffffff0000ffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff ffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffff0000ffffff0000ffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000ff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00 000000ffff000000ffffffff000000ffffffffffffffffffffff0000000000ffffffff ff00000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffff00000000000000000000ffffffff000000ffffffffffffffffffff000000000000 ffffffff000000000000000000ffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffff000000ffffff00000000ffffffffff000000ffffffffffffffffff000000 ffffffffffffff00000000ffffffffff00ffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffffffffffff ff000000ffffffffffff00000000ffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffff ffffffffff000000ffffffffffff000000ffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffffff000000000000000000ffffffffff000000 ffffffffffffffffff000000ffffffffffff0000000000000000000000ffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffffff0000000000000000ffffffff ff000000ffffffffffffffffff000000ffffffffffff0000000000000000000000ffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffff00 0000ffff00000000ffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff00ffffffff 00000000ffffffffff000000ffffffffffffffffff000000ffffffffffffff000000ff ffffff0000ffffff000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffff00 00000000000000ffffffff000000000000000000ffffff000000000000000000ffffff ff0000000000000000ffffff000000ff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffff ffffffff000000000000ffffffffff000000000000000000ffffff0000000000000000 00ffffffffff0000000000ffffffffff000000ffff00000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffff00ffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000ffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffff0000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffff00000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffff00000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff00 00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffffffffff0000ffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffffff0000ff00ffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffffff0000ff00ffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffff0000ffff00ffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffff0000ffff00ffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffff000000ffffff00ffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000ffffff000000ffffff00ffffff ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffff00ffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff 00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000ffffffffff00ffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff ffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffff0000000000000000ffffffffffffff00000000000000ffffffffff0000 00ffffffffffffffff0000000000ffffffffffff000000ffffffffffffffffffffff00 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffff000000000000000000ffffffffff000000000000000000ffff ffff000000ffffffffffffff0000000000000000ffffffff000000ffffffffffffffff ffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffff00000000ffff000000ffffffff00000000ffffffff ff00ffffffff000000ffffffffffff000000ffffff000000ffffffff000000ffffffff ffffffffff00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffff000000ffffffff000000ffff00000000ff ffffffffffffffffffff000000ffffffffff000000ffffffffff000000ffffff000000 ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffff000000ffffffff000000ffff00 0000ffffffffffffffffffffffff000000ffffffffff000000ffffffffff000000ffff ff000000ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffff000000ffffffff0000 00ffff0000000000000000000000ffffffff000000ffffffffff000000ffffffffff00 0000ffffff000000ffffffffffffffff0000000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff000000ffff ffff000000ffff0000000000000000000000ffffffff000000ffffffffff000000ffff ffffff000000ffffff000000ffffffffffffffff0000000000000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff00 000000ffff00000000ffff000000ffffffffff000000ffffffff000000ffffffffff00 0000ffffffffff000000ffffff00000000ffffff0000ffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffff00000000000000000000ffffff000000ffffffff0000ffffffffff000000ffff ffffffff000000ffffff000000ffffffff000000000000000000ffffff000000ffffff ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffff ffffffffffffff000000ff0000000000ffffffffff0000000000000000ffffff000000 000000000000ffff000000000000000000ffffffff000000ff0000000000ffffffff00 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ffffffffffffffffffffff000000ffff000000ffffffffffffff0000000000ffffffff ff000000000000000000ffffffff0000000000ffffffffffff000000ffff00000000ff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffff000000ff000000ff000000ffffffff00000000ffff 000000ffffffff00000000000000ffffff000000ffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffff000000ff000000ff000000ffffff000000 00000000000000ffffff0000000000000000ffffff000000ffffffffffffffffff0000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffff000000ff000000ff000000ffff 000000ffffff00000000ffffff00000000ffffffffffffffff000000ffffffffffffff ff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffff000000ff000000ff00 0000ffff000000ffffffff000000ffff00000000ffffffffffffffffff000000ffffff ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff000000ff00 0000ff000000ffff000000ffffffff000000ffff000000ffffffffffffffffffff0000 00ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff00 0000ff000000ff000000ffffff000000000000000000ffff000000ffffffffffffffff ffff000000ffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffff000000ff000000ff000000ffffffff0000000000000000ffff000000ffffffff ffffffffffff000000ffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffff000000ff000000ff000000ffffffffffffffffff000000ffff000000 ffffffffffffffffffff00000000ffffff0000ff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffff0000000000000000000000ffffff00ffffffff00000000ff ffff00000000ffffffff00ffffff000000000000000000ffff000000ffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffff0000000000000000000000ffffff000000000000 0000ffffffffff0000000000000000ffffff000000ff0000000000ffff000000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffffffffffffffffffffff000000ff0000ffff0000ffffffffff00 0000000000ffffffffffffff00000000000000ffffff000000ffff00000000ffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffff00ffffffff00ffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffff 00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffff00ffffffff00ffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00 ffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffff00ffffffff00ffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffff00ffffffff00ffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff000000 00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000ff00000000ffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffffffff0000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffff0000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffff000000ffffffffffffffff000000000000000000ff ff000000000000000000ffffffffffff000000ffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffff000000ffffffffffffffff000000000000ffffffffffffff0000000000 ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffff000000ffffffffffffffff000000ff ffffffffffffffff000000ffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffff000000ffffffffffffffff000000000000 000000ffff000000000000000000ffffffffffff000000ffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffffff000000ffffffffffffff0000000000000000ffffffffff0000 0000000000ffffffff00000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffff000000ffffffffffffffff 000000ffffffffffffffffff000000ffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffff000000ffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffff000000ffffffffffff000000ffffffffffff00000000ffffff000000ffff ff000000ffff00000000ffffff00ffffff00000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffff00000000ffffffffffff000000ffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffff00ffffff00000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffff000000ffffffffffff ffffffffff000000ffffffffffff000000ffffffffffffffffffffff000000ffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000ffffffffff0000ffffffffffffffffffffffffffffff000000ffffffff00 0000ffffff0000ffffffff000000ffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffff0000ffffffffffffffffffff0000ffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff000000ffff ffffffffffffffffff000000ffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff000000ff ffffff000000ffff000000ffffffff000000ffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff00 0000ffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff 000000ffffff00000000ffff000000ffffffff000000ffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff0000ffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffff000000ffffffffffffffffffffff000000ffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffff0000000000000000ffffff00000000ffff00000000ffffffffffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00 0000ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffff00000000ffffffffff000000000000000000ffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffff0000ffffffffffff000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffff000000ffffffffffffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffff000000000000ffffffff000000ff00000000ffffff ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffff000000ffffffffff00000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffff000000ffffffffffffffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffffffffffffffffff00000000ff000000ffffff000000ffffffff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffff000000ffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffff000000ffffffffffffffffffffff0000 00ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffff0000ffffffffffffffffffffffffffffffff000000ffff000000ffffffff0000 00ffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffff000000ffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffff000000ffffffffffffffffff ffff000000ffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffffffffffffffffffffffff000000ffff000000ffff ffff00000000ffffff00ffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffff0000000000000000 ffffff000000000000ffffffffff0000000000000000ffffffffffffffffffffffffff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffff00000000000000ffffffff0000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff ffffffffffffffff000000000000000000ffffff000000000000000000ffffff000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff00000000 00000000ffffff000000000000ffffffffffff000000000000ffffffffffffffffffff ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff 00000000ffffffffffffffffff0000000000ffffffff0000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff ffffffffffffffffffffffff000000000000000000ffffff000000000000000000ffff ff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffff0000000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffff00000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ff000000ffffffffffffffff000000000000000000ffffff000000000000000000ffff ffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000000000ffffffffff000000ffffffff ffffffff000000000000ffffffff000000000000000000ffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff000000 ffff00ffffffff000000ffffffffffffff000000000000ffffffffffffff000000ffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffff000000ffffffffffffffff000000000000000000ffffff00000000000000 0000ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000000000ffffffffff000000 ffffffffffffff0000000000000000ffffff000000000000000000ffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ff000000ffff00ffffffff000000ffffffffffffff00000000000000ffffffffffff00 0000ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffff 000000ffffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ff000000ffffffffffff00000000ffffff000000ffff000000ffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffff000000ffff00ffffffff000000ffffffffffffff00ffffff00000000ffff ffffff000000ffffffffffffffff00ffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffff000000ffffffffffffffffffffff000000ffffffffff ffffffff000000ffffffffffffffff000000ffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffff000000ffffffff000000ffffff000000ffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffff000000ffff00ffffffffffffffffffffffffffffffffffffff00 0000ffffffffffff0000ffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffff000000ffffffffffffffffffffff000000ff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffff000000 ffffffffffffff00000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffff ffffff000000ffffffffffff000000ffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffff000000ffffffffffffffffffffff 000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffff000000ffffff00000000ffffff ffff000000ffffffffffff00000000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff ffffffffffff00000000ffffffffffffff0000ffffffffffffffff00000000ff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffff0000000000000000 ffffffffffffff000000ffffffffff00000000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffff ffffffffffffff000000000000ffffffffffffffff000000ffffffffffff0000000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff0000 0000ffffffffffffffffffff000000ffffffffff0000ffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ff0000ffff000000ffff00ffffffff ffffffffffffffffffffff00000000ffffffffffffffffffffff0000ffffffffff0000 0000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff0000 00ffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ff000000000000ffffffffffffffffffff000000ffffffff000000ff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ff000000ff000000ffff00 ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffff ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffff000000ffffffffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffff00000000ff000000ffffffffffffffffff000000ffffffffff0000ff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff0000ff0000 00ffff00ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff 000000ffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffff000000ffff000000ffffffffffffffffff000000ffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff 0000000000ffff00ffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffff000000ffffff000000ffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffff000000ffff000000ffffff00ffffffff00000000ffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffff0000000000ffff00ffffffffffffffffffffffffffff00ffffff00000000ff ffffffffffffffffff000000ffff00000000ffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000ffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffffff0000000000000000ffffff000000000000ffffffff ffff000000000000ffffffffffffffffffffffffffffffffff0000000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff ffffffffffffffffffffffffffffffffff00000000000000ffffff0000000000000000 ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffff00000000ffff00ffffffffffffffffffffffffffff0000000000 0000ffffffffff000000000000000000ffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffffff0000000000000000ffffff000000000000 ffffffffffff000000000000ffffffffffffffffffffffffffffffffff000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff000000 000000ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffff000000ffff00ffffffffffffffffffffffffffffff 0000000000ffffffffffff000000000000000000ffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000ffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffff00ffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000000000ffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffff00ffffffffffffffffffffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000000000ffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffff0000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffffffff0000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000000000000000ffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffff0000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffff0000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffff000000ffffffffffffffff00 0000000000000000ffffffff0000000000ffffffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffff000000ffffffffffffff000000000000000000ff ffff0000000000ffffffffffff000000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffff000000ffffff ffffffff000000000000ffffffffff000000000000000000ffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffff000000ffffffffff ffffff000000000000000000ffffff00000000000000ffffffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffff000000ffffffffffffff000000000000 000000ffffff00000000000000ffffffff000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff0000 00ffffffffffffff00000000000000ffffffff000000000000000000ffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff000000ff ffffffffffffffffffff000000ffffffffff000000ffffff000000ffffffffffff0000 00ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffff000000ffffffffffff000000ffffffffffffffffff ff000000ffffffffffff00ffffff00000000ffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffffff ffff000000ffffffffffffff00ffffff00000000ffffff000000ffffffffffffffffff ff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff 000000ffffffffffffffffffffff000000ffffffffff0000ffffffffff0000ffffffff ffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffff000000ffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffff000000ffffffff000000ffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffff000000ffffffffffffffffffffff000000ffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffff000000ffffffffffffffffffffff000000ffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffff000000ffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000ffffffffffffffffffffffffffffffffffffffff00000000ffffff ffffff000000ffffffffffffffff00000000ff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffff000000ffffffffffffffffffffff000000ffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00000000ffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000ffffffffffffffffffffffffffffffffffff000000000000 ffffffffffffffff000000ffffffffffff000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffff000000ffffffffffffffffffffff000000ffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff0000000000 00ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff0000 0000ffffffffffffffffffffff000000ffffffff00000000ffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffff000000ffffffffffffffffffffff00 0000ffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff00 000000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffff000000ffffff000000ffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffff000000ffffffffffffffff ffffff000000ffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffff ffffff0000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000ffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff000000ffffffff ffffffffffffff000000ffffffffff0000ffffffffff0000ffffffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffff0000 00ffffffffffff0000ffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000 ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff000000 ffffffffffffffffffffff000000ffffffffff000000ffffff000000ffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffff000000ffffffffffff000000ffffffffffffffff00ffffffff00000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffff00000000ffffff ffffffffffffffffffffffffff00ffffff00000000ffffff00ffffffff00000000ffff ff00000000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ff0000000000000000ffffff000000000000ffffffffffff00000000000000ffffffff ffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffff000000000000ffffffffffff0000000000000000ffffff0000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffff00000000000000ffffffff00000000000000 00ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffffff0000000000000000ffffff000000000000ffffffffffffff0000000000ff ffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffff000000000000ffffffffffff0000000000000000ffffffff00000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff0000 00000000ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 0000000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000000000000000ffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000000000ffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff 0000ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000000000ffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffff ffffffff000000ffffffffffff0000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000000000ffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000 000000ffffffffffffffffff000000ffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffff000000ffffffffffffff000000000000000000ffff000000000000000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000000000ffffffffff000000ffffffffffffffff000000000000ffff ffffff0000000000ffffffffffff000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffff ffff00000000000000ffffffffffffff000000ffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffffff000000ffffffffffffff000000000000000000ffff0000000000000000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000000000ffffffffff000000ffffffffffffff0000000000 000000ffffffff00000000000000ffffffff000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000 00000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffff ffffffffffff00ffffff00000000ffffffffffff000000ffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff ff000000ffffffffffff000000ffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffff0000 0000ffffff000000ffffff00ffffff00000000ffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00ffffffffff0000ffffffffffffffffffffffffffffffffffffff000000ffffffffff ff000000ffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffff000000ffffffff000000ffffffffffffffff000000ffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ff ffffffffffff000000ffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffff000000ffffffff000000ffffffffffffffffff000000ffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000000000000000000000ffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffffffff000000ffffffffffffffffff00000000ff000000ffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffffffff000000ffffffffffffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffff000000ffffff00000000ffffffff00000000ff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000000000000000000000ffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffffffff000000ffffffffffffffff000000000000000000ffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffff0000000000000000ffffffff0000000000000000 00ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffffffff000000ffffffffffffff00000000ffff00000000 ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffff000000ffffffffffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffff00000000ffffffffff00000000ff ff00000000ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffff ff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffff000000ffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffff000000000000ffffffff00 0000ffffffff000000ffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffff0000 00ffffffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff000000ffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffff00000000ff000000 ffffff000000ffffffff000000ffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffffffff ffff000000ffffffff0000ffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00 00ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff00 0000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000ff ff000000ffffff000000ffffffff0000ffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ff ffffffffffff00000000ffff000000ffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff00ffff ffff00000000ffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff 000000ffff000000ffffff00000000ffff000000ffffff00ffffffff00000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff 0000000000000000ffffff00000000000000ffffffffffffffffffffffffffffffff00 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffff000000000000ffffffff ff0000000000000000ffffffffff000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffff00000000000000ffffffff00000000000000ffffffff0000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffff ffffffff0000000000000000ffffffff0000000000ffffffffffffffffffffffffffff ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffff000000000000 ffffffffffff000000000000ffffffffffff000000000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffff0000000000ffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffff0000ffffffffffffff00000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff ff0000000000000000ffffffffffffffffffffffffffffffffff000000ffffffffffff 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffffffff000000ffffffffffffffffff000000000000ffffffffffffff00 0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffff000000ffffffffffff0000 00000000000000ffffffff0000000000ffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffff ffffff000000ffffffffffffffffffffff000000ffffffff000000000000000000ffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffffffff000000ffffffffffffffff0000000000000000ffffff ffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffff000000ffffffff ffff000000000000000000ffffffff00000000000000ffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 0000ffffffffff000000ffffffffffffffffffffff000000ffffffff00000000000000 0000ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffffffffff000000ffffffffffffff00000000ffffff00 0000ffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffff000000 ffffffffffff000000ffffffffffffffffffff00ffffff00000000ffffffff00ffffff 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffff000000ffffffffffffffffffffff000000ffffffff000000 ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ff ffffff000000ffffffffff000000ffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffff000000ffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffff 000000ffffffff000000ffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffff00000000000000000000ff000000ffffffffff000000 ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff0000 00ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffff00000000000000 000000ffffffff000000ffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffff ffffffff000000ffffff00000000ffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffff00000000000000000000ff000000ffffffff ff000000ffffffffffffffffffffffffffffffffff000000ffffffffffffffff000000 00ff000000ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff000000 00000000000000ffffffffff000000ffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff0000 00ffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff 000000000000000000ffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ff00000000000000000000ffffffffffff000000ffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff000000ff ffffff00000000ffff00000000ffffff000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffff0000ffff000000ffffffffffffffffff000000ffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffffffffff000000ffffffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ff000000ffffff000000ffffffff000000ffffff00000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffff000000ff000000ffffffffffffffffffff000000ffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffffffffff000000ffffffffffffffff00000000ff000000ffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ffffffff000000ffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffff0000ff000000ffffffffffffffffffff000000ff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffffffffff000000ffffffffffffffff000000ffff000000ffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffff0000ffffffff0000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff 000000ffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffffffffff000000ffffffffffffffff000000ffff00 0000ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffff ffffffffffffff00ffffffff00000000ffffff00000000ffff000000ffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffff0000000000ffffffff00ff ffffff00000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffffffffffffffffffffffffffff0000000000000000ffffffff00 000000000000ffffffffffffffffffffffffffffff0000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffff0000000000000000ffffffffff00000000000000ffffffff ff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffff00000000ffff ffff0000000000000000ffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffffffffffffffffffffffffffffff0000000000000000ff ffffffff00000000ffffffffffffffffffffffffffffffffff0000000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffff000000000000ffffffffffffff0000000000ff ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff000000000000ffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00 00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffff0000ffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffffff000000ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000ffffff000000ffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff ffffffffffffffffff0000ffffffffffffff0000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000ff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000ff00ffffffffff00ffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffff0000000000000000ffffffff ffffffffffffffffffffffffff000000ffffffffffff0000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffff00ffffffffff00ffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffff0000ffffff0000ffffffffffffffffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000ffffff0000ffffff0000ffff ffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ff ffffffffffffffff000000ffffffffffffffffffff000000ffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffff000000ffffffffffff000000000000000000ffffffffff00 00000000ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffffffffff 0000000000ffffffffffffff000000000000000000ffffff000000000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffff000000000000ffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000000000 00ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff 000000ffffffffffffffffff000000ffffffffffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00000000000000ffffffffffffff000000ffffffffffff000000000000000000ffff ffff00000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffff ffffffff00000000000000ffffffffff000000000000000000ffffff00000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffff00000000ffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff 00000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffff000000ffffffffffff000000ffffffffffff000000ffffffff ffffffffff000000ffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff0000 00ffffffffffffff00ffffff00000000ffffffffffffff000000ffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffff0000ffffffffffffffffffff0000 00ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff0000 00ffffffffffffffff0000ffffffffff0000ffffffffffff0000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffff000000ffffffffffff000000ffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 00ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff0000ffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffff000000ffffffffff000000ffffffffff000000ffffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff 000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffff000000ffffffff000000ffffffffff000000ffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000000000000000ffffffffffffffffffffffffffffffffffff00000000ffffffff ffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffffff000000 ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffff000000ffffffffffffffffffffffffffffffffff000000000000ff ffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffff000000ffff000000ffffffff ff000000ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ff000000ffffffffffffffffffffffffffffffffff000000 00ffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ffffffffffffffffffffffffffffffffffffffff000000ffff000000 ffffffffff000000ffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ff000000ffffffffffffffffffffffffffffffff ff0000ffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffff000000ff ffff0000ffffffffff0000ffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffff0000ffffffffffffffffffffffffff000000ffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ffffffffffffffffffffffffffffff00ffffffff00 000000ffffff000000ffffff000000ffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffff ffffffffffffffffff0000000000000000ffffff000000000000000000ffffffffffff ffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff0000 000000000000ffffffffff00000000000000ffffffffff000000000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff ffffffffffffffffffffffffff0000000000000000ffffffff000000000000ffffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ffffffffffffffffffffffffff0000000000000000ffffff000000000000000000ffff ffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffff000000000000ffffffffffffff0000000000ffffffffffff0000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffff0000000000000000ffffffff000000000000 ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff0000ffff ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff 000000ffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffff0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff00000000 00ffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff0000 00ffffffffffffffff0000000000ffffffffffff0000000000ffffffffffffff000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffff000000ffffffffffffff0000000000ffffffffffffffff ff0000000000ffffffffff000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffff00 000000000000ffffffffffff000000ffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffff000000ffffffffffffff00000000000000ffffffffff00000000000000ffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffff000000ffffffffffffff00000000000000ffff ffffffff00000000000000ffffffff000000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffff ffff000000ffff00000000ffffffffff000000ffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 ffffffffffff000000ffffffffffff000000ffffff000000ffffffff00ffffff000000 00ffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffff000000ffffffffffff000000ffffffffffffff00ffffff00 000000ffffffff000000ffff00000000ffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffff ffffffffffff0000ffffffff000000ffffffffff000000ffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff ffff0000ffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffff ffffffff000000ffffffff0000ffffffff000000ffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00 0000ffffffffffffff000000ffffffff000000ffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffff00000000000000000000ff0000 00ffffffffff000000ffffffffffffffffffffffffff000000ffffffffff000000ffff ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffff000000ffff000000ffffffff000000ffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffffff000000ffffffffffffff000000ffffffff000000ffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffff000000000000000000 00ff000000ffffffffff000000ffffffffffffffffffffffffff000000ffffffffff00 0000ffffffffffffffff000000ffffffffffffffff00000000ffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffff00000000ff000000ffff000000ffffffff000000ffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffffffff000000ffffffffffffff00000000ffff00000000ffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff000000ffff ffffff000000ffffffffffff00000000ffffffffffff000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffff000000000000000000ffff00000000ffff00000000ffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffffffff000000ffffffffffffff000000000000000000ffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff00 0000ffffffffff000000ffffff000000000000ffffffffffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffff00000000ffff00000000ffff000000000000000000 ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffffffff000000ffffffffffffff000000ff00000000ffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffff000000ffffffffff000000ffffff00000000ffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffff000000ffffffff000000ffff000000ff00 000000ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffff ffffffffffffff000000ffffffffff000000ffffff0000ffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffff000000ffffffff000000ffff00 0000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffff ffffffffffffffffffffffff0000ffffffffff0000ffffffff0000ffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffff0000ffffffffffffffffffffffffffffff000000ffffffff0000 ffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffffffff ffffff00000000ffffff00ffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff0000 00ffffffffffffffffffffffffffffff000000ffffff000000ffffffff000000ffffff ffffffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff00000000ff ff000000ffffffff00000000ffffff00ffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00000000 00000000ffffffff00000000000000ffffffffffffffffffffffffffffff0000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffff00000000000000ffffffffff0000 000000000000ffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffff 00000000000000ffffffffffff00000000000000ffffffff000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff 0000000000000000ffffffffffff0000000000ffffffffffffffffffffffffffffff00 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffff0000000000ffffffff ffff0000000000000000ffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffff0000000000ffffffffffffffffff0000000000ffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00000000000000 00ffffffffffffffffffffffffffffffffff0000ffffffffffffff0000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000 0000000000ffffffffffffffffffffffffffffffffff000000ffffffffffff00000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffff ffffffffff000000ffffffffffffffff0000000000ffffffffffffffffff000000ffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffff000000ffffffffffffff0000000000 00ffffffffffffffffffff000000ffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffff00 0000ffffffffffffff0000000000ffffffffffffff0000000000ffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffffffff000000ffffffffffffffff00000000000000ffffffffffffff00 0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffff000000ffffffffffffff00 000000000000ffffffffffffffffff000000ffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffff ffffff000000ffffffffffffff00000000000000ffffffffff00000000000000ffffff ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffffffff000000ffffffffffffffff00ffffff00000000ffffff ffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffff000000ffffffffffff000000ffffffff ffffff00ffffff00000000ffffffffffffffff000000ffffffffff000000ffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffffffffffffff000000ffffffffffffff00ffffff00000000ffffffff00ffffff0000 0000ffffffff00ffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff0000 00ffffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffff0000ffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffffffff000000ffffff00000000000000000000ffff00 0000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffff00000000ffffff000000000000000000 00ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff00 0000ffffffffff00000000ff000000ffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffff000000000000ffffffff0000000000 0000000000ffff00000000ffff00000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ff00000000ffffffffff000000000000000000ffffffffffff00000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff0000 00ffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffff00000000ffffffffffffff 0000ffff000000ffffffff000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffff000000000000ffffffffff00000000ffff00000000ffffff000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff ffff000000ffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff000000ff ffffffff000000ff000000ffffffff000000ff00000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffff00000000ffffffffffffff000000ffffffff000000ffffff00000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffffffffff000000ffffffffffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffff ff000000ffffffffff0000ff000000ffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffff0000ffffffffffffffffff000000ffffffff000000ffffff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffffffffff000000ffffffffffffffff0000ffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffff0000000000ffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffff0000ffffffffffffffffff000000ffffffff0000ff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff ffffffff00ffffff00000000ffffffffffff0000000000ffffffffff00000000ffffff 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffff000000ffffffffffffffff00000000ffff 000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffffffffff0000000000000000ffffff000000000000 0000ffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffff00000000000000ffffffffffffffff00000000ffffffffffff0000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000ffffffffffffffffffffffffffffffffffff0000000000000000ffffffff00 000000000000ffffffffff0000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffffffffffffffffffffffffffff0000000000000000ffffff0000 000000000000ffffffffffffffffffffffffffffff0000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffff0000000000ffffffffffffffffffff000000ffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000000000ffffffffffffffffffffffffffffffffffff0000000000000000ff ffffffff0000000000ffffffffffff0000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000000000ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffff ffffffffff0000ffffffffffffff0000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff ffffffffffffffffff000000ffffffffffff0000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff00ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffff000000ffffffffffffff000000ffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ff ffffffffffffff000000ffffffffffffffff000000000000ffffffff00000000000000 0000ffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffff000000ffffffffffffff00000000 00ffffffffffffffffffffff000000ffffffff000000000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000000000ffffffffffffffffffffffffffffffffff ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffffff000000ffffffffffffff000000ffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00000000ffffffffffffff000000ffffffffffffff0000000000000000ffffff000000 000000000000ffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00000000000000ffffffffffffff000000ffffffffffffff 00000000000000ffffffffffffffffff000000ffffffff000000000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000ffff00ffffffff00ffffffffffffffffffffffffff ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff00ffffff ff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffffff000000ffffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffff000000ffffffffffff00000000ffffff000000ff ff000000ffffffffffffffffffff00ffffff00000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffff000000ffffffffffff000000ffffff ffffffff00ffffff00000000ffffffffffffffff000000ffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffff00ffffffffff00ffffffffffffffffff ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00 ffffffffff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffffff000000ffffffffffffff000000ffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff000000ffffffff 000000ffffff000000ffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffff00ffffffffff ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffff00ffffffffff00ffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffffffff000000ffffffffffffff00000000000000000000ffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff00000000 000000000000ff000000ffffffffff000000ffffffffffffffffffffffffffff000000 ffffffff000000ffffffff000000ffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffff00000000000000000000ff000000ffffffffff000000ffffff ffffffffffffffffffffffffffffffffff000000ffffff00000000000000000000ffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000ff00000000000000ff ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000ff00000000000000ffffffffffffffffffffffffffffffffffffffff00 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffffffffffffffffffffff00ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffffffff000000ffffffffffffff00000000000000000000ffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff 00000000000000000000ff000000ffffffffff000000ffffffffffffffffffffffffff ff000000ffffff00000000ffffffffff000000ffffffffffffffff00000000ff000000 ffffffffffffffffffffffffffff00000000000000000000ff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffff000000ffffff0000000000000000 0000ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff000000 0000ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000ffff0000000000ffffffffffffffffffffffffffffffffffff ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff00ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffffffff000000ffffffffffffff000000000000000000 00ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffff0000000000000000ffffffffffffff000000ffffffffffff0000000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffff00000000ffffffff00000000 000000000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000ffff 000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffff00000000ffffffffffffffffffff000000ffffffff0000 0000ffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffff000000000000ffffffffff ff0000ffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff 000000ff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffff000000ff ffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffff00000000ffffff ffffffffff000000ff000000ffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffffff ffffffffff0000ff000000ffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffffffffffffffffffffffffffff00000000ff000000ffffffffffffffffff 000000ffffff000000ffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffff0000ff ffffffffffffffffffff0000ff000000ffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffff000000ffff000000ffffffffff ffffffff000000ffffff000000ffffffff0000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff ff0000ffffffffffffffffffffffff0000000000ffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffff000000ffffffffffffffffffffffffffffffff000000ffff000000ff ffff00ffffffff00000000ffffff00000000ffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffff ffffffffff000000ffffffffffffffffffffff0000000000ffffffff00ffffffff0000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffffffff0000000000000000ffffffffffff00000000ffffffffffffffffffffffff ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff00000000 000000ffffff0000000000000000ffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffff0000000000000000ffffffffffffff00000000ffffffff000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffff ffffffffffffffffff0000000000000000ffffffffffffff000000ffffffffffffffff ffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ff00000000ffffffffffff000000000000ffffffffffffff0000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffffffffffffffffffffffff0000000000000000ffffffffffffffff000000ffffff ffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffff0000000000000000ffffffffffffffffffffffffffffffffff0000ffffffffffff ff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff000000ff ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ff0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffff000000ffffffffffffffff000000000000ffffffff ffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff0000000000ffffffffffffffff000000ffffff ffffffff000000000000000000ffffffff000000000000ffffffffffff0000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 000000ffffffffff000000ffffffffffffffff000000ffffffffffffffffff00000000 0000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffff000000ffffffffffffffff000000000000 00ffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff0000 00ffffffffffffff000000000000000000ffffff0000000000000000ffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00000000000000ffffffffff000000ffffffffffffffff000000ffffffffffffffff00 00000000000000ffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff00ff ffff00000000ffffffffffff000000ffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffffff ffff000000ffffffffffffffffffff000000ffffffffff00000000ffffff000000ffff 000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000ffffffffffffffff000000ffffffffffffffff000000ffffffffff ffff00000000ffffff000000ffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffff000000ffffffffffff000000ffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff0000 ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff00 0000ffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff0000ff ffffffffffff000000ffffffff000000ffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffff00000000000000000000ff000000ffffff ffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffff000000ff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ff000000ffffffffffff000000ffffffff000000ffff00000000000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffff00000000000000000000ff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffff 000000ffffff00000000ff000000ffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffff0000ffffffffffff000000ffffff00000000ffff000000000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffffff000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff000000ff ffffffffff0000000000000000ffff000000ffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffff0000000000000000ffffff0000000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffffffff000000ffffffffffffffffff00000000ffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffffffffffff 000000ffffffffffffffff00000000ffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffff0000ffffffffffffffff00000000ffffffffffff 0000ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffffff ffffffff000000ffffffffffffff000000000000ffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000ff ffffffff000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffff ffffffffffffffff000000ffffffffffff00000000ff000000ffff000000ffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00000000 ff000000ffffffffff0000ff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffff ffffffffffffffffffffffff000000ffffffffffff000000ffff000000ffffff0000ff ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff 000000ffff000000ffffffffffff0000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff00 ffffff00000000ffffffffffffffffffffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff ffffffffffffffffffffffffffffffff000000ffffffffffff000000ffff000000ffff ff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffff000000ffff000000ffffffffffff0000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffff0000000000000000 ffffff00000000000000ffffffffffffffffffffffffffffffff0000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffff000000000000ffffffffffffff0000000000 0000ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff00000000 0000000000ffffffff00000000000000ffffffffffffff00000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00000000 00000000ffffffff0000000000ffffffffffffffffffffffffffffffffff0000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff 00000000ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff 000000000000000000ffffffffff00000000ffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c880c880803030ffffffffffffffffffffffffffffffffff0000000000000000ffffff ffffffffffffffffffffffffffff0000ffffffffffffff0000000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff00000000000000 00ffffffffffffffffffffffffffffffffff000000ffffffffffff0000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffff ff000000ffffffffffffff000000000000000000ffffffffffff000000ffffffffffff ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff0000000000ffffffffffffffff000000ffffffffffffffff000000ffffffffff ffffffff000000000000ffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff000000ffff ffffffffff0000000000ffffffffffffffffffffff000000ffffffff00000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffff ffffffffff000000ffffffffffffff000000000000000000ffffffffffff000000ffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffff000000ffffffffffffffff000000ff ffffffffffffff0000000000000000ffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff00 0000ffffffffffffff00000000000000ffffffffffffffffff000000ffffffff000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffff ffffffffffffffffff000000ffffffffffffff000000ffffffffffffffffffffffff00 0000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000ffffff000000ffffffffffff000000ffffffffffffffff 000000ffffffffffffff00000000ffffff000000ffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffff000000ffffffffffffff00ffffff00000000ffffffffffffffff000000ffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffff ffffffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffff ffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffff ffffffffff0000ffffffffffffff000000ffffffff000000ffffffffff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030 ffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffff ffffffffffffffffff000000ffffffffffff000000ffffffff000000ffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000000000ffffffffffffffffffffffffffffffffffffffffff000000ffff000000 00000000000000ffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c8803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8 80803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffff ffffffffffffffffffffffffffff0000ffffffffffff000000ffffff00000000ffffff ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000000000ffffffffffffffffffffffffffffffff00000000ff000000ff ff00000000000000000000ffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8 8080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000 ffffffffffffffffffffffffffffffffffff000000ffffffffffff0000000000000000 ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000000000ffffffffffffffffffffffffffffff000000000000 000000ffff00000000000000000000ffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffff ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ff000000ffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff0000 0000ffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff0000ffff000000ffffffffffffffffffffffffffffffff000000 00ffff00000000ffffff0000ffff000000ffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffff000000ffffffffffffffffffffffffffffffffffffff000000ffffffffff ff000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ff000000ffffffffffffffffffffffffffffff ff000000ffffffff000000ffffff000000ff000000ffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff000000 ffffffff00000000ff000000ffffffffffffffffff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000ff000000ffffffffffffffffffffff ffffffffff000000ffffffff000000ffffffff0000ff000000ffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffff ff000000ffffffff000000ffff000000ffffffffffffffffff000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffffffffffffffff000000ffffffff0000ffffffffffff0000000000ffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffff ffffffffffffffffffff000000ffffffffffffff00ffffffff00000000ffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffff000000ffffff000000ffff000000ffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffff ffffffffffffffffffffffffff00000000ffff000000ffffffffffff0000000000ffff ffff00ffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffff ffffffffffffffffffffffffffff0000000000000000ffff0000000000000000ffffff ffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffff000000000000000000ffffffff00000000000000ffffffff00000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff0000 0000ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8808030 30ffffffffffffffffffffffffffffffffff0000000000000000ffffff000000000000 ffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffff ffffffffffffffff000000000000000000ffffffffff00000000ffffffffffff000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffff0000000000ffffffffffffff ffffff000000ffffffffff000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8808080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8 8080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 80c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffff ffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff ff0000ffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffff ffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffff ffffffffff000000ffffffffffff0000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8808030 8030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffff ffffffffffffffffffff0000ffffffffffffffffffffff000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880 308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 80c880803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff00 0000000000000000ffffffffff000000ffffffffffffffffffffff000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffff ffffff000000ffffffffffffff000000000000ffffffffffff000000000000ffffffff ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff0000000000ffffffffffffffff000000ffffffffffffffff0000000000ffff ffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffff ffffff000000000000000000ffffffffff000000ffffffffffffffffffffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 ffffffffffffff000000ffffffffffffff00000000000000ffffffffff000000000000 00ffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffff000000ffffffffffffff00000000 000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ff ffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffffffffffff 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff ffff000000ffffffffffff000000ffffffffffffff00ffffff00000000ffffffff00ff ffff00000000ffffff00000000ffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffff000000ffffffffffff000000ffffffffffff00 0000ffffff000000ffffffffffffffff000000ffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff 000000ffffffffffffffffffffff000000ffffffffffffffff000000ffffffffffffff ffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0000ffffffffff0000ffffffffffffffffffffffffffffffffffffffffff000000ffff ffffffffffffff000000ffffff000000ffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffff0000ffffffffff0000ffffffffffffffffffffffff ffffff0000ffffffffff0000ffffffffffffffff000000ffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffff ffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffffffffffffff0000000000000000 0000ff000000ffffffffff000000ffffffffffffffffffffffffffffffffffffffff00 0000ffffffffffffffffff000000ffffff000000ffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffff ffffffffffff000000ffffffffff000000ffff00000000000000000000ffff00000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffff ffffffffffffffff000000ffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff00000000 000000000000ff000000ffffffffff000000ffffffffffffffffffffffffffffffffff ffff00000000ffffffffffffffff00000000ffffff000000ffffff00000000ffffffff ffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffff ffffffffffffffffffff000000ffffffffff000000ffff00000000000000000000ffff 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffffffffffff ffffff000000000000ffffffffffff000000000000ffffffffff0000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff0000 00ffffffffffffffffffffffffff000000ffffffffff000000ffff0000000000000000 0000ffff00000000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffff00000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ff ffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff000000ffff ffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffffffffffff ffffffffffffff00000000ffffffffffffffff00000000ffffffffffffffffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff ffff000000ffffffffffffffffffffffffff000000ffffffffff000000ffffff0000ff ff000000ffffffffff0000ffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff000000000000000000000000ffffffffffffffff000000000000 0000ffffffffffffff00000000000000000000000000ffffffffffffffffffffff0000 0000000000ffffffffffffffffffffffffffffffffffff000000000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000ffffffffffff0000000000000000ffffffffffffff0000000000000000000000 0000ffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880 803030ffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff00 0000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffff000000ffffffffffffffffffffffffff000000ffffffffff000000ffff ff000000ff000000ffffffffff000000ff000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880 80803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000000000000000000000000000ffffffffffff0000 000000000000ffffffffffff00000000000000000000000000000000ffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffff00000000000000000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000000000000ffffffffffff0000000000000000ffffffffffff0000000000000000 0000000000000000ffffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffff000000000000000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8 c8c88080308030ffffffffffffffffffffffffffffffffff000000ffffffffffffffff ffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff000000ff ffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ff ffffff00000000ff000000ffffffffffffffffffffffffffffffffffffffffffffffff ffff000000ffffffffff000000ffffffffffffffffffffffffff000000ffffffffff00 0000ffffffff0000ff000000ffffffffffff0000ff000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffff ffff0000000000000000ffffffffff000000000000000000000000000000000000ffff ffffffffffff0000000000000000ffffffffffffffffffffffffffff00000000000000 000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000ffffffffffff0000000000000000ffffffffff0000000000 00000000000000000000000000ffffffffffffffff0000000000000000ffffffffffff ffffffffffffffff00000000000000000000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffc8c880c880803030ffffffffffffffffffffffffffffffffff000000ffffffff ffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff 0000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff 000000ffffffff000000ffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000ffffffffff0000ffffffffffffffffffffffffffffff0000ffff ffffff0000ffffffffffff0000000000ffffffffffffff0000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000 00ffffffffff0000000000000000ffffffff0000000000000000000000000000000000 0000ffffffffffffffff0000000000000000ffffffffffffffffffffffffffff000000 0000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000ffffffffffff0000000000000000ffffffff0000 0000000000000000000000000000000000ffffffffffffffff0000000000000000ffff ffffffffffffffffffffffff0000000000000000000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffff000000 ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 ffffff000000ffffffffffffffffffffffffffffffff00ffffff00000000ffffffff00 ffffff00000000ffffffff000000ffff000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff 000000ffffff000000ffffffffffff0000000000ffffffffffffff0000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000 000000000000ffffffff0000000000000000ffffffff00000000000000000000000000 00000000000000ffffffffffffffff00000000000000ffffffffffffffffffffffffff 00000000000000000000000000000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00000000000000ffffffffffff0000000000000000ffff ffff0000000000000000000000000000000000000000ffffffffffffffff0000000000 0000ffffffffffffffffffffffffff00000000000000000000000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffff ff0000000000000000ffffff000000000000ffffffffffffffffffffffffffffffffff 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffffff00000000000000ffff ffffff00000000000000ffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffffff00000000ffffffffffffffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff ffffff00000000000000ffffffff0000000000000000ffffff0000000000000000ffff ffffff0000000000000000ffffffffffffffff00000000000000ffffffffffffffffff ffffffff00000000000000ffffffffff0000000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000ffffffffffff000000000000 0000ffffff0000000000000000ffffffffff0000000000000000ffffffffffffffff00 000000000000ffffffffffffffffffffffffff00000000000000ffffffffff00000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffff ffffffffff0000000000000000ffffff000000000000ffffffffffffffffffffffffff ffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffff00000000 00ffffffffffffff0000000000ffffffffffffffff00000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffff0000000000ffffffffffffffffffff000000ffffffffffffff ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00ffffffffffff00000000000000ffffffffff000000000000ffffffff000000000000 00ffffffffffffff0000000000000000ffffffffffffff00000000000000ffffffffff ffffffffffffffff00000000000000ffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000000000000000000000000000000000ffffffff00 0000000000ffffffff00000000000000ffffffffffffff0000000000000000ffffffff ffffff00000000000000ffffffffffffffffffffffffff00000000000000ffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000000000ffffffffffffff00000000000000ffffffffffffffffffffffffffff0000 0000000000ffffffffffffffff00000000000000ffffffffffffff0000000000000000 ffffffffffffffffffffffff000000000000ffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff0000000000000000000000000000000000000000000000 ffffffffffffffffffffffffff00000000000000ffffffffffffffff00000000000000 ffffffffffffff0000000000000000ffffffffffffffffffffffff000000000000ffff ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000000000ffffffffffffff00000000000000ffffffffffffffffffffffff ffff00000000000000ffffffffffffffff00000000000000ffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000 00000000ffffffffffffffffffffffffff00000000000000ffffffffffffffff000000 00000000ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c880808030 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffffff00000000000000ffffffffffffffff ffffffffffff00000000000000ffffffffffffffff00000000000000ffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff00 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 0000000000000000ffffffffffffffffffffffffff00000000000000ffffffffffffff ff00000000000000ffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880 80308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880 c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffffffffff00000000000000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffff00000000000000ffffffffffffffffffffffffffffffffff000000000000 00ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000 000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00000000000000ffffffffffffffff00000000000000ffffffffffffffff ffffffffffffffffff00000000000000ffff00000000000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff c8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00000000000000ffffffffffffffff00000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 00ffffffffffffffffff00000000000000ffffffffffffffffffffffffffff00000000 000000000000ff00000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000 00000000000000000000000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffff0000000000000000ffffffffffffffffff00000000000000ffffff ffffffffffffffffffffff00000000000000000000ff00000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00000000000000ffffffffffffffff000000 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 0000000000ffffffffffffffffff00000000000000ffffffffffffffffffffffffff00 000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 000000ffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 00ffffffffffffffffffffffffff00000000000000000000000000000000000000ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffffffff ff00000000000000ffffffffffffffffffffffffffffffffffffffffffff0000000000 0000000000000000ffffffffffffffffffff0000000000000000ffffffffffffffffff ffff0000000000000000000000000000000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000ffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000000000000000ffffffffffffffffffff0000 000000000000ffffffffffffffffffffff000000000000000000000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffff ffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff00 0000000000000000000000ffffffffffffffffffffffff00000000000000ffffffffff ffffffffff000000000000000000000000000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000000000ffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff ffffff00000000000000ffffffffffffffffffff000000000000000000000000000000 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00ffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffff ffffff0000000000000000000000ffffffffffffffffffffffffff0000000000000000 ffffffffffffffffff000000000000000000000000000000000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff0000000000ffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000000000000000ffffffffffff ffffffffffffff0000000000000000ffffffffffffffffff0000000000000000000000 00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff00000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 0000000000ffffffffffffffff00000000000000ffffffffffffffffffffffffffffff ffffffffffffff00000000000000000000ffffffffffffffffffffffffffffff000000 00000000ffffffffffffffff0000000000000000ffffffffffff0000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000ffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000ffffff ffffffffffffffffffffffff00000000000000ffffffffffffffff0000000000000000 ffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff0000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffff00000000000000ffffffffffffffffffffff ffffffffffffffffffffff0000000000000000000000ffffffffffffffffffffffffff ffff00000000000000ffffffffffffff0000000000000000ffffffffffff0000000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 0000ffffffffffffffffffffffffffffff00000000000000ffffffffffffff00000000 00000000ffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c880803080 30ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c88030 8030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00000000000000ffffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffff ffffffffffff00000000000000ffffffffffffff00000000000000ffffffffffffffff 00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff0000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000000000 00000000000000ffffffffffffffffffffffffffff00000000000000ffffffffffffff 00000000000000ffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880 c880803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8 c88080803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00000000000000ffffffffffffffff00000000000000ffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffff ffffffffffffffffffffff00000000000000ffffffffffff00000000000000ffffffff ffffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff00000000000000ffffffffffffffffffffffffffffff00000000000000ffff ffffffff00000000000000ffffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffff00c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00000000000000ffffffffffffffff000000000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 00ffffffffffffffffffffffffffff00000000000000ffffffffffff00000000000000 ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000000ffff00000000000000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffff00000000000000ffffffffffffffffffffffffffff0000000000 0000ffffffffffff00000000000000ffffffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffff00000000ff0000ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffff0000 0000000000ffffffffffffffffffffffffffff00000000000000ffffffffffffff0000 0000000000ffffffffffffffffffffffffffffff00000000000000ffffffffff000000 00000000ffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff000000000000ff00000000000000ffffffffffffffffffffffffffffffffff00 000000000000ffffffffffffff00000000000000ffffffffffffffffffffffffffffff 00000000000000ffffffffff00000000000000ffffffffffffffff00000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff0000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff ffff00000000000000ffffffffffffffffffffffffffff00000000000000ffffffffff ffff00000000000000ffffffffffffffffffffffffffffffff00000000000000ffffff ff00000000000000ffffffffffffffff00000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffff00000000000000000000000000ffffffffffffffffffffffffffff ffffff00000000000000ffffffffffffff00000000000000ffffffffffffffffffffff ffffffffff00000000000000ffffffff00000000000000ffffffffffffffff00000000 000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 ffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff ffffffffff00000000000000ffffffffffffffffffffffffffffff00000000000000ff ffffffffffff00000000000000ffffffffffffffffffffffffffffffffff0000000000 0000ffffff00000000000000ffffffffffffff00000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffff ffffffffffffff00000000000000ffffffffffffff00000000000000ffffffffffffff ffffffffffffffffffff00000000000000ffffff00000000000000ffffffffffffff00 000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff000000ff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 00000000ffffffffff00000000000000ffffffffffffffffffffffffffffffff000000 00000000ffffffffff0000000000000000ffffffffffffffffffffffffffffffffff00 000000000000ffffff0000000000000000ffffffffffff00000000000000ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff ffffffffffffffffffffffff00000000000000ffffffffff0000000000000000ffffff ffffffffffffffffffffffffffff00000000000000ffffff0000000000000000ffffff ffffff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff000000ffffffff0000ffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff0000000000000000ffffff0000000000000000ffffffffffffffffffffffffffffff ff0000000000000000ffffff000000000000000000ffffff0000000000000000000000 0000000000000000000000ffffff000000000000000000ffff000000000000000000ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000ffff ffffffffffffffffffffffffffffffff0000000000000000ffffff0000000000000000 00ffffff00000000000000000000000000000000000000000000ffffff000000000000 000000ffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff ff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff000000ffffffffffff0000ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff00c880c880308030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000000000000000000000000000ffffffffffffffffffffffff ffffffffff00000000000000000000000000000000000000ffffffff00000000000000 00000000000000000000000000000000ffff0000000000000000000000000000000000 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 0000ffffffffffffffffffffffffffffffffffff000000000000000000000000000000 00000000ffffffff0000000000000000000000000000000000000000000000ffff0000 0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c88080 3030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c88080 803030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000000000000000000000000000ffffffffffffffff ffffffffffffffffffff000000000000000000000000000000000000ffffffff000000 0000000000000000000000000000000000000000ffffff000000000000000000000000 0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 000000000000ffffffffffffffffffffffffffffffffffffff00000000000000000000 0000000000000000ffffffff0000000000000000000000000000000000000000000000 ffffff0000000000000000000000000000000000ffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8 c88080308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 c880c880308030ffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff000000000000000000000000000000ffffffffff ffffffffffffffffffffffffffffff00000000000000000000000000000000ffffffff ff0000000000000000000000000000000000000000000000ffffffff00000000000000 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000 0000000000000000000000ffffffffff00000000000000000000000000000000000000 00000000ffffffff000000000000000000000000000000ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffc8c880c880803030ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffff00c8c88080803030ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffff00000000000000000000000000ffff ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000ff ffffffffff0000000000000000000000000000000000000000000000ffffffffff0000 0000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff 0000000000000000000000000000ffffffffffff000000000000000000000000000000 0000000000000000ffffffffff00000000000000000000000000ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffc8c8c88080308030ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffff00c880c880308030ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000 ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 00ffffffffffffffff0000000000000000000000000000000000000000000000ffffff ffffffff00000000000000000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff ffffffffffff00000000000000000000ffffffffffffffff0000000000000000000000 000000000000000000000000ffffffffffffff00000000000000000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffc8c880c880803030ffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff00c8c88080803030ffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00000000000000ffffffffffffffffffffffffff ffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffc8c8c88080308030ffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff00c880c880308030ffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffc8c880c880803030ffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffff00c8c88080803030ffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffc8c8c88080308030ffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffff00c8c8c880308030ffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffc8c880c8c8803030ff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffff00c8c8c8c8803030 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8c8c8c830 3080000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000303030 3030800000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 c880308080300080303030303030303030303030303030303030303030303080303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 0080308080803000803030303030303030303030303030303030303030303030803030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030303030303030303030303030 3030303030303030303030303030303030303030303030308030303030303030303030 3030303030303030303030303030803030303030303030303030303030303030303030 30303000c8c88080308000c88080308030803080308030803080308030803080308030 c830803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308000c880c880308000c880803080308030803080308030803080308030803080 30c8308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 30803080308030803080308030803080308030803080308030803030c8803080308030 803080308030803080308030803080308030c830803080308030803080308030803080 3080308030803000c880c880803000c880808080808080808080808080808080808080 80803030c8808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808000c8c88080803000c8808080808080808080808080808080808080 8080803030c88080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808030c8c880 80808080808080808080808080808080808080803030c8808080808080808080808080 808080808080808080303000c8c88080308000c8c88080808080808080808080808080 8080808080808030c8c880808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808000c880c880308000c8c880808080808080808080808080 808080808080808030c8c8808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808030 30c8808080808080808080808080808080808080808080808030c8c880808080800000 00000000000000000000008080803000c880c880803000c88080808080808080808080 808080808080808080803030c880808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808000c8c88080803000c880808080808080808080 80808080808080808080803030c8808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808030c8c88080808080808080808080808080808080808080803030c880808080 0000000000000000000000000000008080303000c8c88080308000c8c8808080808080 80808080808080808080808080808030c8c88080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808080808000c880c880308000c8c88080808080 8080808080808080808080808080808030c8c880808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080800000 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080803030c8808080808080808080808080808080808080808080808030c8 c88080800080808080808080808080808000008080803000c880c880803000c8808080 8080808080808080808080808080808080803030c88080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080808080808000c8c88080803000c88080 808080808080808080808080808080808080803030c880808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080000080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808030c8c88080808080808080808080808080808080808080 803030c8808080800080808080808080808080808000008080303000c8c88080308000 c8c880808080808080808080808080808080808080808030c8c8808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808000c880c8803080 00c8c880808080808080808080808080808080808080808030c8c88080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808000008080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080803030c88080808080808080808080808080808080 80808080808030c8c88080800080808080808080808080808000008080803000c880c8 80803000c88080808080808080808080808080808080808080803030c8808080808080 8080808080000080808000008080000080808000000000808080000080808080000080 8000008080000080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808080808080808080808080808080808000c8c8 8080803000c88080808080808080808080808080808080808080803030c88080808080 8080808080808080000000000000808080808080808080800000000080008080000080 8080808000000080000080000080000000808080000080808000008080000080808000 0000008080808000000000808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808080808030c8c8808080808080808080808080 8080808080808080803030c88080808000808080808080808080808080000080803030 00c8c88080308000c8c880808080000000000000000000000000000000808030c8c880 8080808080808080808000008080000080000080808000008080000080800000808080 8000008080000080800000808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8000c880c880308000c8c880808080000000000000000000000000000000808030c8c8 8080808080808080808080000080808080000080808080808080800000808000000080 8000008080808000008080000080800000000080000080800000808080000080800000 8080000080800000808000008080000080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080808080803030c8808080808080808080 000000008080808080808080808030c8c8808080008080808080808080808080800000 8080803000c880c880803000c880808000000000000000000000000000000000008030 30c8808080808080808080808080800000800080800000808080000080808080808080 0000808080800000808000008080000080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808000c8c88080803000c8808080000000000000000000000000000000000080 3030c88080808080808080808080800000808080808000008080808080800000808080 8000008080800000808080000080808000008080000080808000008080000080808000 0080800000800000808080000080000080808000008080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808030c8c880808080 80808000000000008080808080808080803030c8808080800080808080808080808080 808000008080303000c8c88080308000c8c88080008080808080808080808080808080 0000808030c8c880808080808080808080808080000000808080000080800000808080 8080808000008080808000008080000080800000808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808000c880c880308000c8c880800080808080808080808080808080 800000808030c8c8808080808080808080808080808080808080000080808080808000 0080808080800000808000008080808000008080000080800000808080000080800000 8080800000808000008000008080808080808080808080000080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808080808080808080808080808080803030c880 8080808080808000808000008080808080808080808030c8c880808000808080808080 80808080808000008080803000c880c880803000c88080800080808080808080808080 808080800080803030c880808080808080808080808080800000008080800000808080 0000000000008080000080808080000080800000808000008080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808000c8c88080803000c880808000808080808080808080 80808080800080803030c8808080808080808080808080808080808080000000808080 8080800000808080808000008080000080808080800000000000808000008080808000 0080000080808000008080000080800000808080808080808000000080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8030c8c88080808080808000808000008080808080808080803030c880808080008080 8080808080808080808000008080303000c8c88080308000c8c8808000000000000000 00000000000000000080808030c8c88080808080808080808080808000800000808080 0000808000008080800000808000008080808000008080000080800000808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808000c880c880308000c8c88080000000000000 0000000000000000000080808030c8c880808080808080808080808080808080000000 8080808080808000008080808000000000808000008080808080808080000080000000 8080800000808000008080800000808000008000008080800000808000008080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080803030c8808080808080808000000000808080808080808080808030c8c88080 800080808080808080808080808000008080803000c880c880803000c8808080808080 8080808080808080808080808080803030c88080808080808080808080808000008080 0000808000008080800000808000008080000000000080000000800000008000008080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080808000c8c88080803000c88080808080 808080808080808080808080808080803030c880808080808080808080808080808000 0000008080808080808080800000808080808080808080000000000080000080800000 8080000000808000008080000000800000008080000080800000808000008080000080 8000008080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808030c8c88080808080808080808080808080808080808080803030 c8808080800080808080808080808080808000008080303000c8c88080308000c8c880 808080808080808080808080808080808080808030c8c8808080808080808080808080 0000808080000000000000008080000000008080800000800000800000800000800000 0080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808000c880c880308000c8c8 80808080808080808080808080808080808080808030c8c88080808080808080808080 8080000000808080808080808080808000008080808080808080800000800000808000 0000008080800000800000008080800000800000008080800000808080000000008080 8080000000008080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080803030c88080808080808080808080808080808080808080 80808030c8c88080800080808080808080808080808000008080803000c880c8808030 00c88080808080808080808080808080808080808080803030c8808080808080808080 8080808080808080808080808000008080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808080808080808080808080808000c8c8808080 3000c88080808080808080808080808080808080808080803030c88080808080808080 8080808080800000808080800000808080808080800000808080808000008080808080 8080808080808080808080808080808080808000008080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808030c8c8808080808080808080808080808080 8080808080803030c8808080800080808080808080808080808000008080303000c8c8 8080308000c8c880808080808080808080808080808080808080808030c8c880808080 8080808080808080808080808080808080000080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080808080808080808080808080808000c8 80c880308000c8c880808080808080808080808080808080808080808030c8c8808080 8080808080808080808080000080808000008080808080808080000000808000008080 8080808080808080808080808080808080808080808080800000808080808080800000 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080803030c8808080808080808080808080 808080808080808080808030c8c8808080008080808080808080808080800000808080 3000c880c880803000c88080808080808080808080808080808080808080803030c880 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808000c8c88080803000c88080808080808080808080808080808080808080803030c8 8080808080808080808080808080808000000000008080808080808080808080000000 0080808080808080808080808080808080808080808080808080808000008080808080 8080000080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808030c8c880808080808080 80808080808080808080808080803030c8808080800080808080808080808080808000 808080303000c8c88080308000c8c88080808080808080808080808080808080808080 8030c8c880808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808000c880c880308000c8c880808080808080808080808080808080808080 808030c8c8808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 808080808080808080808080808080808080808080808080808080803030c880808080 8080808080808080808080808080808080808030c8c880808000000000000000000000 00000000808080803000c880c880803000c88080808080808080808080808080808080 808080808030c880808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808000c8c88080803000c880808080808080808080808080808080 80808080808030c8808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080808080808080808080808080808080808030c8 c88080808080808080808080808080808080808080808030c880808080808080808080 8080808080808080808080803000c8c88080308000c8c880c880c880c880c880c880c8 80c880c880c880c880c8c8c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c88000c880c880308000c8c880c880c880c880c880c880 c880c880c880c880c880c8c8c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880 c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c880c8 80c880c880c880c880c880c880c880c880c880c880c880c880c88080c8c880c880c880 c880c880c880c880c880c880c880c880c800c880c880803000c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c800c8c88080803000c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8 c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c800c8c88080308000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000c880c8803080000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000c880c8808030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 803080308030803080308030803080308030803080308030803000c8c8808080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 80308030803080308030803080308030803080308030803080308030803080c8808030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 30803080308030803080308030803080308030803080308030803080308000c880c880 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 8030803080308030803080308030803080308030803080308030803080308030803080 3080308030803080308030803080308030803080308030803080308030803080308030 80c880808080808080808080808080808080808080808080808080808030c880808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808000 c8c88080808080808080808080808080808080808080808080808080808030c8808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808030c8808080808080808080808080808080808080808080 80808080808080808080808080808080808080808080808080808080808080808030c8 c880808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 80808000c880c880808080808080808080808080808080808080808080808080808030 c8c8808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808080808080808080808080808080808080808080 8080808080808080808080808080808030c8c880808080808080808080808080808080 80808080808080808080 grestore %%EndDocument 1013 315 a endTexFig 1013 1028 938 2 v 1013 1129 a Ff(On)14 b(en)o(try)m(,)g(the)h Fe(spread.frame)d Ff(up)q(dates)j(itself)f(and)g(cal-)1013 1178 y(culates)d(the)g(sum)f(for)g(that)h(studen)o(t.)18 b(It)11 b(w)o(ould)f(b)q(e)h(easy)g(to)1013 1228 y(up)q(date)j(the)h(stem-and-leaf)e (displa)o(y)g(or)h(other)g(summary)1013 1278 y(graphic)k(of)g(the)h(sums,)g (as)g(eac)o(h)g(individual)d(studen)o(t)k(is)1013 1328 y(added)14 b(to)f(the)i Fe(spread.frame)p Ff(.)1013 1445 y Fh(4.2)47 b(Linking)13 b(S)j(Ob)s(jects)1054 1525 y Ff(The)21 b(names)e(of)g(the)i(macros)e(of)h (the)g Fe(spread.frame)1013 1575 y(.Registry)12 b Ff(\(describ)q(ed)k(in)e (section)h(2.4\))f(are)h(the)g(names)1013 1625 y(of)j(other)i Fe(spread.frame)p Ff(s)d(\(for)i(example,)g Fe(section.1)n Ff(,)1013 1674 y Fe(section.2)n Ff(,)k Fe(section.3)d Ff(for)h(an)h (instructor)h(teac)o(hing)1013 1724 y(three)16 b(sections)g(of)e(a)h (course\).)22 b(Execution)16 b(of)e(one)h(of)f(the)1013 1774 y(macros)h(causes)j(the)e(named)g Fe(spread.frame)d Ff(to)j(b)q(e)h(dis-)1013 1824 y(pla)o(y)o(ed.)f(The)11 b(screen)i(displa)o(y)d(of)g Fe(.Registry)f Ff(is)h(therefore)1013 1874 y(a)j(men)o(u)g(in)o(to)g(the)i (other)f Fe(spread.frame)p Ff(s.)1013 1990 y Fh(4.3)47 b(Outliers)13 b(in)i(Regression)1054 2071 y Ff(In)e(Figure)f(3)h(w)o(e)g(ha)o(v)o(e)f (created)i(a)f Fe(spread.frame)d Ff(that)1013 2120 y(con)o(tains)h(t)o(w)o(o) g(columns)f(of)h(data,)h Fe(X)f Ff(and)g Fe(Y)p Ff(.)17 b(W)m(e)12 b(ha)o(v)o(e)f(cre-)1013 2170 y(ated)18 b(an)f Fe("after")g Ff(expression)i(that)f(regresses)i Fe(Y)i Fb(\030)g Fe(X)o Ff(,)1013 2220 y(plots)13 b(the)h(data)f(with)g(emphasis)f(on)h(the)h (\014rst)h(p)q(oin)o(t,)d(and)1013 2270 y(then)18 b(dra)o(ws)f(the)i (regression)f(line.)29 b(Ev)o(ery)18 b(time)e(a)h(data)1013 2320 y(p)q(oin)o(t)e(is)h(c)o(hanged)h(the)g(plot)f(is)g(redra)o(wn.)25 b(The)17 b(applica-)1013 2369 y(tion)10 b(is)g(to)h(illustrate)g(the)g (e\013ect)i(of)d(c)o(hanging)g(the)h(v)n(alue)g(of)1013 2419 y(one)i(p)q(oin)o(t)f(on)g(the)i(regression)g(line.)j(W)m(e)12 b(create)j(an)d(arra)o(y)1013 2469 y(of)g(plots)h(and)g(then)h (systematically)d(c)o(hange)i(the)h(v)n(alue)f(of)1013 2519 y(the)18 b(\014rst)g(p)q(oin)o(t)f(in)g(the)h(data.)29 b(The)18 b(resulting)g(series)h(of)1013 2569 y(plots)c(sho)o(ws)i(that)f(a)g(data)g(p) q(oin)o(t)f(on)h(the)h(edge)g(of)e(the)i Fe(X)1013 2619 y Ff(range)c(has)h(a) g(stronger)g(e\013ect)i(on)d(the)h(slop)q(e)g(than)g(a)f(data)1013 2668 y(p)q(oin)o(t)g(in)g(the)i(cen)o(ter)g(of)f(the)g(range.)p eop %%Page: 6 6 bop 0 29 a Ff(Figure)22 b(4.)42 b(Three-w)o(a)o(y)22 b Fe(spread.frame)p Ff(:)32 b(Gradesheet)0 79 y(with)14 b Fe(sum)f Ff(and)g Fe(course)g Ff(macros.)258 170 y(a.)18 b Fa(sec3[,,"midterm"])p 8 182 922 2 v 8 192 V 7 525 2 334 v 16 525 V 237 276 a Fe(1)44 b(2)f(3)h(4)21 b(sum)85 326 y(Aaaaa)g(19)g(20)g(18)h(21)43 b(78)85 376 y(Bbbbb)21 b(24)g(24)g(19)h(21)43 b(88)107 426 y(Cccc)21 b(13)g(46)g(83)44 b(0)21 b(142)41 475 y(maximum)g(25)g(30)g(20)h(25)f(100)p 920 525 V 929 525 V 8 527 922 2 v 8 537 V 279 606 a Ff(b.)d Fa(sec3[,,"final"])p 8 617 V 8 627 V 7 961 2 334 v 16 961 V 237 712 a Fe(1)44 b(2)f(3)h(4)21 b(sum)p 75 724 138 2 v 75 774 2 51 v 89 762 a(Aaaaa)p 211 774 V 75 776 138 2 v 27 w(20)h(18)f(30)h(15)43 b(83)85 811 y(Bbbbb)f(0)i(0)f(0)h (0)65 b(0)107 861 y(Cccc)42 b(0)i(0)f(0)h(0)65 b(0)41 911 y(maximum)21 b(25)g(25)g(35)h(15)f(100)p 920 961 2 334 v 929 961 V 8 963 922 2 v 8 973 V 303 1041 a Ff(c.)d Fa(sec3[,"sum",])p 8 1053 V 8 1063 V 7 1397 2 334 v 16 1397 V 216 1147 a Fe(midterm)i(final)h(course)85 1197 y(Aaaaa)130 b(78)86 b(83)h(161)85 1247 y(Bbbbb)130 b(88)108 b(0)h(88)107 1297 y(Cccc)f(142)g(0)87 b(142)41 1347 y(maximum)108 b(100)65 b(100)86 b(200)p 920 1397 V 929 1397 V 8 1398 922 2 v 8 1408 V 0 1472 938 2 v 0 1622 a Fh(4.4)48 b(Multipl)o(e)13 b(Views)j(of)f(a)h Fe(spread.frame)42 1702 y Ff(The)24 b(in)o(terface)g(can)g (displa)o(y)f(m)o(ultiple)e(co)q(ordinated)0 1752 y(views)g(of)g(a)g(single)g Fe(spread.frame)p Ff(.)37 b(Figure)21 b(4)g(sho)o(ws)0 1802 y(three)d(views)e(of)g(a)g(three-w)o(a)o(y)h(grade)g(sheet.)27 b(Tw)o(o)16 b(slices)0 1851 y(corresp)q(ond)f(to)f(t)o(w)o(o)f(exams)f(and)i (a)f(third)h(slice,)f(orthogo-)0 1901 y(nal)f(to)g(the)h(\014rst)g(t)o(w)o (o,)e(sho)o(ws)i(the)g(course)g(summary)m(.)i(The)0 1951 y Fe(spread.frame)i Ff(has)j(t)o(w)o(o)g Fe(after)f Ff(macros)g(to)g(caclulate) 0 2001 y(the)h(ro)o(w)e(sums)h(for)f(eac)o(h)i(exam)d(and)i(the)h(course)g (sums)0 2051 y(across)f(exams.)28 b(On)18 b(an)f(X-terminal,)g(eac)o(h)h (slice)g(migh)o(t)0 2101 y(app)q(ear)h(in)g(its)g(o)o(wn)g(windo)o(w)f(b)o(y) h(taking)f(adv)n(an)o(tage)g(of)0 2150 y(emacs)d(19's)g(abilit)o(y)f(to)h (con)o(trol)g(m)o(ultiple)f(windo)o(ws)h(in)g(a)0 2200 y(single)f(emacs)g (session.)21 b(On)15 b(a)f(text-based)h(terminal,)e(the)0 2250 y(di\013eren)o(t)i(bu\013ers)g(app)q(ear)f(in)g(the)g(same)f(emacs)h(windo)o (w.)42 2300 y(The)f(follo)o(wing)d(commands)g(are)k(generated)g(from)d(eac)o (h)0 2350 y(graphical)i(in)o(teraction:)30 2433 y(1.)20 b(The)14 b(commands)p 83 2438 852 2 v 83 2448 V 82 2592 2 144 v 91 2592 V 116 2483 a Fe(>)22 b(attach\()116 2533 y(+)44 b('/disk5/rmh/spre)o(ad/s)o (prd3d)o(/.Dat)o(a'\))116 2583 y(>)22 b(emacs.start\('/tmp)o(/spr)o(a0079)o (2'\))p 925 2592 V 934 2592 V 83 2594 852 2 v 83 2604 V 83 2637 a Ff(are)j(issued)g(when)g(the)g Fe(spread.frame)d Ff(in)o(terface)83 2687 y(is)j(started.)53 b(They)25 b(attac)o(h)g(the)h(S)f(library)f(con-)1096 29 y(taining)d(the)j Fe(spread.frame)c Ff(functions)j(and)g(call)1096 79 y Fe(emacs.start\(\))11 b Ff(with)i(the)h(name)f(of)g(the)h(directory)1096 128 y(where)h(temp)q(orary)e(\014les)h(will)e(b)q(e)j(stored.)1042 211 y(2.)21 b(The)14 b(command)p 1096 217 V 1096 227 V 1095 321 2 94 v 1104 321 V 1129 262 a Fe(>)21 b(print.find.emacs\('s)o(ec3[,)o (,"fin)o(al"])o(',)1129 312 y(+)43 b(update.Registry=F\))p 1938 321 V 1947 321 V 1096 323 852 2 v 1096 333 V 1096 366 a Ff(is)12 b(generated)j(when)e(the)h(user)g(places)f(the)h(cursor)g(on)1096 416 y(the)h Fe(sec3[,,"final"])d Ff(line)j(in)f Fe(.Registry)n Ff(.)22 b(This)1096 465 y(line)10 b(prin)o(ts)h(all)f(kno)o(wn)g(views)h(of)g (the)g Fe(sec3)f Ff(ob)r(ject)i(to)1096 515 y(temp)q(orary)f(\014les)h(and)f (then)i(reads)f(them)f(in)o(to)g(emacs)1096 565 y(bu\013ers.)1042 648 y(3.)21 b(The)14 b(command)p 1096 653 V 1096 663 V 1095 712 2 50 v 1104 712 V 1129 697 a Fe(>)21 b(emacs.cell\('sec3[,,)o("fina)o (l"]',)o(2,1,)o(1\))p 1938 712 V 1947 712 V 1096 714 852 2 v 1096 724 V 1096 757 a Ff(is)12 b(generated)j(when)e(the)h(user)g(places)f (the)h(cursor)g(on)1096 807 y(a)9 b(ro)o(w)g(lab)q(el)g(in)g(the)h Fe(sec3[,,"final"])d Ff(bu\013er.)18 b(The)1096 857 y(S)13 b(function)g(places)h(in)f(the)h(minibu\013er)e(an)h(S)g(assign-)1096 906 y(men)o(t)i(statemen)o(t)h(that)h(will)e(re-create)j(the)f(curren)o(t) 1096 956 y(cell)c(v)n(alue)h(from)e(the)i(curren)o(t)i(cell)d(expression.) 1042 1039 y(4.)21 b(The)14 b(commands)p 1096 1045 V 1096 1055 V 1095 1199 2 144 v 1104 1199 V 1129 1090 a Fe(>)21 b(x[)h("Aaaaa",-5,"fina)o (l")d(])i(<-)1129 1140 y(+)370 b(c\(20,)21 b(18,)g(30,)g(15\))1129 1190 y(>)g(invisible\(assign\(.A)o(ctive)o(,)e(x\)\))p 1938 1199 V 1947 1199 V 1096 1200 852 2 v 1096 1210 V 1096 1243 a Ff(are)42 b(generated)i(when)f(the)g(user)g(edits)g(the)1096 1293 y(minibu\013er.)38 b(The)22 b(execution)g(of)e(the)i(revised)g(as-)1096 1343 y(signmen)o(t)11 b(up)q(dates)i(the)g(en)o(tire)f Fe(spread.frame)e Ff(and)1096 1393 y(causes)17 b(all)e(views)i(of)f(the)g(up)q(dated)h Fe(spread.frame)1096 1443 y Ff(to)k(b)q(e)i(displa)o(y)o(ed)e(in)h(their)g (emacs)g(bu\013ers.)44 b(The)1096 1492 y(assignmen)o(t)38 b(of)h(the)g(v)n (alue)g(of)g(the)h(w)o(orking)1096 1542 y Fe(spread.frame)7 b(x)j Ff(to)g(the)h Fe(spread.frame)c Ff(named)i(in)1096 1592 y Fe(.Active)15 b Ff(k)o(eeps)i(S's)g(idea)f(of)g(the)i Fe(spread.frame)p Ff('s)1096 1642 y(v)n(alue)13 b(sync)o(hronized)i(with)e(the)i(user's)g (idea.)1013 1759 y Fh(4.5)47 b(Y)l(our)15 b(F)l(a)o(v)o(orite)f(Spreadsheet)f (Application)1054 1839 y Ff(An)o(y)j(spreadsheet)j(should)d(b)q(e)h(able)f (to)h(b)q(e)g(written)f(in)1013 1889 y(the)j(S)f(setting.)32 b(This)18 b(giv)o(es)h(the)g(double)f(adv)n(an)o(tage)g(of)1013 1939 y(the)i(famili)o(ar)d(and)i(p)q(o)o(w)o(erful)g(S)h(analysis)e(and)i (graphics)1013 1988 y(op)q(erations)13 b(coupled)g(with)g(the)h(ease)g(of)f (data)g(en)o(try)h(from)1013 2038 y(w)o(orking)e(in)i(spreadsheet)i(mo)q(de.) 1013 2172 y Fg(References)1033 2252 y Ff(Bec)o(k)o(er,)j(R.)d(A.,)i(J.)e(M.)h (Cham)o(b)q(ers,)g(and)g(A.)g(R.)f(Wilks)1096 2302 y(\(1988\),)e Fc(The)i(New)g(S)h(L)n(anguage:)23 b(A)16 b(Pr)n(o)n(gr)n(amming)1096 2352 y(Envir)n(onment)j(for)f(Data)h(A)o(nalysis)f(and)i(Gr)n(aphics)p Ff(,)1096 2402 y(W)m(adsw)o(orth,)12 b(Mon)o(terey)m(,)i(CA.)1033 2485 y(Cham)o(b)q(ers,)e(J.)h(M.,)f(and)h(T.)f(J.)h(Hastie)g(\(1992\),)f Fc(Statisti-)1096 2535 y(c)n(al)i(Mo)n(dels)h(in)g(S)p Ff(,)f(W)m(adsw)o (orth,)f(Mon)o(terey)m(,)h(CA.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF ess-17.11/etc/other/S-spread/gradexmp.s0000644005071500004540000000041713202324174014610 00000000000000who <- c( "Aaaaa", "Bbbbb", "Cccc", "Zzzzzzz", "maximum") what <- c("1a","1b","1c","1d","1e","1f","1g", "1h","2a","2b","2c") x <- matrix(0, length(who), length(what), dimnames=list(who,what)) x["maximum",] <- c(5,5,6,4,20,6,16,8,10,10,10) section.7 <- as.grade(x) ess-17.11/etc/other/S-spread/sprd-emc.s0000644005071500004540000001657113202324174014523 00000000000000#-*-Fundamental-*- col.spacing <- function(x) { rn.w <- if (length(dimnames(x)[[1]]) > 0) max(nchar(dimnames(x)[[1]])) else nchar(as.character(nrow(x)))+3 col.w <- apply(x, 2, function(x) nchar(format(x))[1]) dn.w <- if (length(dimnames(x)[[2]]) > 0) nchar(dimnames(x)[[2]]) else nchar(as.character(ncol(x)))+3 col.w <- ifelse( col.w > dn.w , col.w, dn.w) cumsum(c(rn.w,col.w)+1) } emacs.expr <- function(x, i, j=i[2], result.type) # 1. emacs.rc # 2. emacs.macro # 3. emacs.macro.text(deparse.result=T) #default for index.value # 4. emacs.macro.text(deparse.result=F) # 1. assign expression to cell or to macro # 2. evaluate macro expression # 3. retrieve macro expression # 4. construct control.text() expression from macro name # 5. construct print.text() expression from macro name { # i and j are integer scalars if (missing(j)) {j <- i[2] ; i <- i[1]} if ((.Active == .Active.buffer) && (length(dim(x)) > 2)) stop("Must use rectangular slice, not 3d buffer") if (i <= nrow(x) && result.type==1) return(expr.rc(x, c(i, j))) if (!inherits(x, "spread")) stop("Not a spread.frame") mm <- (nrow(x)+1):(nrow(x)+2+length(macro(x))) bb <- mm[length(mm)]+(1:(2+length(before(x)))) aa <- bb[length(bb)]+(1:(2+length(after(x)))) find.expr <- function(type.x, kk, type, result.type) { if (kk>0) { iv <- index.value(names(type.x), kk, !((result.type == 4) || (result.type == 5))) switch(result.type, paste(type, "(x)[", iv, "] <- expression(", expr.value(type.x[kk],1), ")"), paste("x <- eval.spread(x, ", type, "(x)[", iv, "] )" ), deparse(eval(parse(text=paste(type, "(x)[", iv, "]")))[[1]]), paste(iv, "<- control.text(", iv, ")"), paste(iv, "<- print.text(", iv, ")") ) } else if (result.type==1) paste(type, "(x)[\"\"] <- expression()") else NULL } k <- match(i, mm, 0) if (k) return(find.expr(macro(x), k-2, "macro", result.type)) k <- match(i, bb, 0) if (k) return(find.expr(before(x), k-2, "before", result.type)) k <- match(i, aa, 0) if (k) return(find.expr(after(x), k-2, "after", result.type)) } cell.rc.emacs <- function(x, e.r, e.c) { x.r <- ifelse(e.c == 0, e.r, e.r-1) x.c <- sum(e.c >= col.spacing(x)) c(row=x.r, col=x.c) } print.update.emacs <- function(x, ..., file=paste(.spread.directory, .Active.buffer, sep="/")) { sink(file) print(x, ...) xs <- get(.Active) if (inherits(xs, "spread")) { print.spread.macro(xs, macro) print.spread.macro(xs, before) print.spread.macro(xs, after) } sink() invisible(x) } print.spread.macro <- function(x, macro) { cat("\n**", as.character(substitute(macro)), "**\n", sep="") ne <- names(macro(x)) if (length(ne)) for (i in 1:length(ne)) cat(index.value(ne,i,F),"\n") } as.two.way.array <- function(x, subs=parse(text=.Active.buffer)[[1]][-(1:2)]) { if (length(dim(x))==2) return(x) # This is designed for 3 way arrays with # two missing and one specified dimension. # If the drop parameter exists, it is over-ridden. subs$drop <- NULL which.subs <- (sapply(subs,length)==0) dnx <- dimnames(x)[which.subs] dimnames(x) <- NULL dim(x) <- dim(x)[which.subs] dimnames(x) <- dnx x } fg <- function( sprdname=.Active ) # sprdname = character name, possibly subscripted { if (is.na(match(sprdname, names(macro(.Registry))))) { macro(.Registry)[sprdname] <- sprdname assign(".Registry", .Registry, where=1 ) } assign(".Active.buffer", sprdname, frame=0 ) assign(".Active", find.names(sprdname), frame=0 ) assign("x", eval(parse(text=.Active)), where=1 ) assign("x.buffer", where=1, if (.Active.buffer==.Active) x else as.two.way.array(eval(parse(text=.Active.buffer)))) invisible(sprdname) } control.emacs <- function(x) { #this is a fake function #emacs does the work # control.emacs never gets called when emacs is in control. # RET in spread window puts old command in minibuffer: # emacs sends # emacs.cell('spreadname', e.r, e.c, result.type) # emacs reads the file written by the above and # asks the user to revise it in the minibuffer. # RET in minibuffer puts revised command in S buffer, # and causes the revised command to be executed, updating the spreadsheet. # emacs issues # invisible(assign(.Active, x)) # to place the object in x into the object named in .Active # emacs issues # print.find.emacs('spreadname', update.Registry=F) # to update all buffers showing views of the object named in .Active # When S gets control back, the command has been executed and the # spreadsheet has been updated } #emacs usage #load-file S-spread.el #In the *S* buffer, type ^Cr to place a spread.frame or 2-way or 3-way array # into a spread.frame buffer. #In the spread.frame buffer, type RET to update a cell. #In the minibuffer, revise the cell and type RET to update the object and # the display. #If there is a timing problem and the display is not updated, # then type ^Cv in the spread buffer. find.sprds <- function(sprdname, reg.names=names(macro(.Registry))) { reg.names[find.names(reg.names) == find.names(sprdname)] } find.names <- function(reg.names) { prn <- parse(text=reg.names) for (i in 1:length(prn)) if (mode(prn[[i]]) != "name") reg.names[i] <- prn[[i]][[2]] reg.names } print.sprds.emacs <- function(sprdname) { fssn <- find.sprds(sprdname) fssn2 <- fssn for(i in fssn2) { fg(i) print.update.emacs(x.buffer) } cat(paste(fssn, collapse="\n"), "\n", sep="", file=.spread.command.file) invisible(fg(sprdname)) } print.update.emacs.3d <- function(object) { object.name <- as.character(substitute(object)) dobject <- dim(object) if (length(dobject) != 3) stop("3-way array required") fg(object.name) n3 <- dimnames(object)[[3]] if (is.null(n3)) n3 <- seq(length=dobject[3]) else n3 <- paste("\"", n3, "\"", sep="") for (i in n3) { fg(paste( object.name, "[,,", i, "]", sep="" )) print.update.emacs(x.buffer) } invisible(object) } emacs.start <- function(spread.directory) { assign('.spread.directory', spread.directory, frame=0) if (!exists('.Registry', 1)) assign(".Registry", where=1, as.spread(matrix(".Registry"))) assign(".spread.command.file", frame=0, paste(spread.directory, "*command*", sep="/")) fg(".Registry") print.update.emacs(.Registry) invisible(".Registry") } print.find.emacs <- function(spread=.Active, update.Registry=T) { fg(spread) if (update.Registry) { fg(".Registry") print.update.emacs(.Registry) fg(spread) } print.sprds.emacs(spread) invisible(spread) } emacs.cell <- function(spread, e.r, e.c, result.type) { fg(spread) cell.rc <- cell.rc.emacs(x.buffer, e.r, e.c) .Options$width <- 1000 if (result.type==1 && cell.rc[1] <= nrow(x.buffer)) { cell.rc <- cell.sub.emacs(x, cell.rc) cell.expr <- expr.rc(x, cell.rc) } else cell.expr <- emacs.expr(x, cell.rc, result.type=result.type) cat(cell.expr, '\n', sep='', file=.spread.command.file) } cell.sub.emacs <- function(x, i, j=i[2]) { # i and j are integer scalars if (missing(j)) {j <- i[2] ; i <- i[1]} if (i==0 && j==0) stop("non-zero row or column required") if ((length(dim(x)) == 2)) { acpab <- c("","") positions <- 1:2 } else if (.Active == .Active.buffer) stop("Must use rectangular slice, not 3d buffer") else { pab <- parse(text=.Active.buffer) acpab <- as.character( pab[[1]][-(1:2)] ) positions <- (1:length(acpab))[sapply(acpab, nchar) == 0] } di <- index.value(dimnames(x)[[positions[1]]], i) dj <- index.value(dimnames(x)[[positions[2]]], j) acpab[positions[1]] <- di acpab[positions[2]] <- dj acpab } ess-17.11/etc/other/S-spread/sprd-grd.s0000644005071500004540000000226713202324174014530 00000000000000as.grade <- function(x) { if (inherits(x,"grade")) return(x) if (match("sum",dimnames(x)[[2]],0) == 0) { dx <- dim(x) dnx <- dimnames(x) if (length(dim(x)) == 2) { if (length(dnx) != 2) dimnames(x) <- list(NULL, 1:dx[2]) tmp <- cbind(x,sum=0) } if (length(dim(x)) == 3) { dimnames(x) <- NULL tmp <- aperm(x,c(1,3,2)) dim(tmp) <- c(dim(tmp)[1]*dim(tmp)[3], dim(tmp)[2]) tmp <- cbind(tmp, sum=0) dim(tmp) <- (dx + c(0,1,0))[c(1,3,2)] tmp <- aperm(tmp,c(1,3,2)) if (length(dnx) != 3) dnx <- list(NULL, 1:dx[2], NULL) dnx[[2]] <- c(dnx[[2]], "sum") dimnames(tmp) <- dnx } if (length(dim(x)) > 3) stop("grade requires 2d or 3d") } x <- as.spread(tmp) sum.col <- match("sum",dimnames(x)[[2]],0) tmp.expr <- paste( "x[,", sum.col, if (length(dim(x))==3) ",", "] <- apply(x[,", -sum.col, if (length(dim(x))==3) ",", "],", deparse(if (length(dim(x))==3) c(1,3) else 1), ",sum)" ) after(x)["sum"] <- parse(text=tmp.expr) class(x) <- c("grade", class(x)) update.spread(x) } expr.rc.grade <- function(x, acpab) { if (sapply(acpab,nchar)[[2]] == 0) { j <- -match("sum", dimnames(x)[[2]], 0) acpab[2] <- j } expr.rc.default(x,acpab) } ess-17.11/etc/other/S-spread/sprd-int.el0000644005071500004540000002521413202324174014701 00000000000000;; spreadsheet in S ;; Richard M. Heiberger ;; 1995 ;; Load this file from the dired window in which .Data exists. ;; This file does not work with S-mode. Use S-spread.el for S-mode. (set-variable 'buffers-menu-max-size nil) (defvar spread-directory (concat "/tmp/" (make-temp-name "spr")) "Directory in which to store ascii spreadsheet displays.") (defvar spread-command-file (concat spread-directory "/*command*") "File through which S will communicate with emacs.") (defvar spread-directory-p nil "predicate value non-nil when directory has been defined.") (defun print-find-emacs nil "display spread.frame from minibuffer" (interactive) (spread-print-find (read-string "spread.frame: ") t)) (define-key global-map "\C-cr" 'print-find-emacs) (defun emacs-rc nil "" (interactive) (emacs-cell "1") ) (defun emacs-macro nil "" (interactive) (emacs-cell "2") ) (defun emacs-macro-control-text nil "" (interactive) (emacs-cell "4") ) (defun emacs-macro-print-text nil "" (interactive) (emacs-cell "5") ) (defun emacs-cell (result-type) "" (interactive) (setq spread-name (buffer-name)) (setq r (count-lines 1 (point))) (setq c (current-column)) (set-buffer S-buffer) (spread-insert (format "emacs.cell('%s', %s, %s, %s)" spread-name r c result-type ) ) (save-excursion (set-buffer "*command*") (revert-t-t) (goto-char (point-min)) (setq beg (point)) (end-of-line) (if (equal result-type "4") (progn (setq command (buffer-substring beg (point))) (set-buffer S-buffer) (spread-insert command) ) (setq command (read-string "> " (buffer-substring beg (point)))) (set-buffer S-buffer) (spread-insert command) (spread-insert "invisible(assign(.Active, x))") (spread-print-find spread-name nil) (goto-line r)(forward-char c) )) ) (defun spread-insert (spread-command) "" (interactive) (goto-char (point-max)) (insert spread-command) (comint-send-input) (accept-process-output spread-process) ) (defun revert-t-t nil "revert-buffer with no questions asked" (interactive) (revert-buffer t t) ) (defun revert-t-t-read-only nil "revert-buffer, no questions, read-only" (interactive) (revert-buffer t t) (setq buffer-read-only t) ) (define-key global-map "\C-cv" 'revert-t-t) (defvar spread-mode-map nil "Keymap for Spread mode.") (if spread-mode-map nil (setq spread-mode-map (make-sparse-keymap)) (define-key spread-mode-map "\C-cv" 'revert-t-t-read-only) (define-key spread-mode-map "\C-m" 'emacs-rc) (define-key spread-mode-map "\C-cc" 'emacs-macro) (define-key spread-mode-map "\C-cs" 'emacs-macro-control-text) (define-key spread-mode-map "\C-cp" 'emacs-macro-print-text) (define-key spread-mode-map "f" 'emacs-print-find-emacs) (define-key spread-mode-map [mouse-2] 'spread-mouse-print-find-emacs) (define-key spread-mode-map [mouse-3] 'spread-mouse-rc) ;; (define-key spread-mode-map [double-mouse-1] 'spread-mouse-rc) ;doesn't work (define-key spread-mode-map [menu-bar spread] (cons "Spread" (make-sparse-keymap "Spread"))) ; (define-key spread-mode-map [menu-bar spread spread-macro] ; '("macro" . spread-macro)) (define-key spread-mode-map [menu-bar spread spread-before] '("before" . spread-before)) (define-key spread-mode-map [menu-bar spread spread-after] '("after" . spread-after)) (define-key spread-mode-map [menu-bar spread spread-macro] (cons "Macro" (make-sparse-keymap "sprdtwo"))) (define-key spread-mode-map [menu-bar spread spread-macro display] '("after" . spread-display)) ; (define-key spread-mode-map [mouse-2] 'emacs-menu-print-find-ww) ) (defun spread-mouse-rc (event) "move point then enter" (interactive "e") (mouse-set-point event) (emacs-rc) ) (defun spread-mouse-print-find-emacs (event) "move point then find file" (interactive "e") (mouse-set-point event) (emacs-print-find-emacs) ) (defun spread-mode () "Major mode for spreadsheets.\\{spread-mode-map}" (interactive) (kill-all-local-variables) (make-local-variable 'beg) (make-local-variable 'command) (use-local-map spread-mode-map) (setq mode-name "Spread") (setq major-mode 'spread-mode) (if (equal (buffer-name) ".Registry") (spread-highlight-macro)) (setq buffer-read-only t) ) ;; from dired.el L547 ; (put-text-property (point) ; (save-excursion ; (dired-move-to-end-of-filename) ; (point)) ; 'mouse-face 'highlight) ; ;; (put-text-property (point) (mark) 'mouse-face 'highlight) (defun spread-highlight-macro nil "highlight spread.frame names for mouse access" (interactive) (save-excursion (goto-char (point-min)) (search-forward "**macro**")(forward-char) (toggle-read-only -1) (while (progn (setq beg (point))(end-of-line) (not (= beg (point))) ) (put-text-property beg (1-(point)) 'mouse-face 'highlight) (forward-char) ) (toggle-read-only 1) ) (save-buffer) ) (defun emacs-print-find-emacs nil "" (interactive) (beginning-of-line) (setq beg (point)) (end-of-line) (backward-char) (setq spread-name (buffer-substring beg (point))) (spread-print-find spread-name nil) ) (defun find-spread-frame-directory nil "Locate directory in which spread.frame functions are stored." (list-command-history) (set-buffer "*Command History*") (goto-char (point-min)) (search-forward "(load-file ") (goto-char (1+ (match-end 0)))(setq beg (point)) (end-of-line)(search-backward "/") (goto-char (match-end 0)) (setq spread-frame-directory (expand-file-name (buffer-substring beg (point)))) ) (defun inferior-spread-mode () "Major mode for running spread.frames under S/Splus." (comint-run S-program) (setq comint-prompt-regexp shell-prompt-pattern) (setq major-mode 'inferior-spread-mode) (setq mode-name "Inferior Spread") (setq mode-line-process '(":%s")) (setq spread-process (get-buffer-process (current-buffer))) (set-process-filter spread-process 'comint-output-filter) (set-variable 'comint-output-filter-functions '(spread-output-filter comint-postoutput-scroll-to-bottom) ) (set-variable 'comint-scroll-to-bottom-on-output "this") (set-variable 'comint-scroll-show-maximum-output t) (if (not(file-writable-p ".Data/.Audit")) (accept-process-output spread-process)) (accept-process-output spread-process) ) (defun spread-output-filter (str) "detect errors in S output" (if (or (string-match "Dumped" str) (string-match "Error" str) ) (progn (switch-to-buffer-other-window S-buffer) (comint-show-maximum-output) (set-variable 'quit-flag t); beeps and writes "quit" in the message area ) ) ) ;(put 'spread-region 'menu-enable 'mark-active) ;(put 'spread-validate-region 'menu-enable 'mark-active) ;(put 'spread-print 'menu-enable '(stringp spread-print-file)) ;(put 'spread-alt-print 'menu-enable '(stringp spread-print-file)) ;(put 'spread-view 'menu-enable '(stringp spread-print-file)) ;(put 'spread-recenter-output-buffer 'menu-enable '(get-buffer "*spread-shell*")) ;(put 'spread-kill-job 'menu-enable '(spread-shell-running)) (defun emacs-menu-print-find (spread-name) "" (interactive) (spread-print-find spread-name nil) ) (defun spread-print-find (spread-name update-Registry) "Place SPREAD-NAME in foreground of S-buffer (*S* or *Splus*), update .Registry and revert buffer when UPDATE-REGISTRY is t, print all views of spread.frame associated with SPREAD-NAME in .Registry to /tmp/spr***** directory, and find or revert all views into emacs buffers." (interactive) (set-buffer S-buffer) (spread-insert (format "print.find.emacs('%s', update.Registry=%s)" spread-name (if update-Registry "T" "F"))) (if update-Registry (save-excursion (spread-find-file ".Registry"))) (spread-print-sprds) (switch-to-buffer spread-name) ) (defun spread-print-sprds () "Display in buffers all views of spread.frame" (interactive) (save-excursion (set-buffer "*command*") (revert-t-t) (goto-char (point-min)) (while (< (point) (point-max)) (set-buffer "*command*") (setq beg (point)) (end-of-line) (setq spread-name-i (buffer-substring beg (point))) (save-excursion (spread-find-file spread-name-i)) (forward-line))) ) (defun spread-find-file (spread-name) "Display one view of spread.frame" (interactive) (switch-to-buffer spread-name) (if (buffer-file-name) (revert-t-t-read-only) (kill-buffer spread-name) (find-file (concat spread-directory "/" spread-name)) ) (spread-mode) ) (define-key spread-mode-map [menu-bar spread ww] '("ww" . emacs-menu-print-find-ww)) (defun emacs-menu-print-find-ww () "" (interactive) (emacs-menu-print-find "ww")) (define-key spread-mode-map [menu-bar spread ww2] '("ww2" . "\e\e (emacs-menu-print-find \"ww\")")) (define-key spread-mode-map [menu-bar spread ww3] '("ww3" . "\M-x eval-expression\C-m (emacs-menu-print-find \"ww\")")) (defun spread-start () "load emacs spread.frame handler" (if (not (equal major-mode 'dired-mode)) (set-variable 'quit-flag t)) (setq spread-home-directory (dired-current-directory)) (find-spread-frame-directory) (kill-buffer "*Command History*") (if (not spread-directory-p) (progn (make-directory spread-directory) (setq spread-directory-p t))) (setq S-program (read-string "Splus or S? " "Splus")) (setq S-buffer (concat "*" S-program "*")) (if (not (get-buffer S-buffer)) (get-buffer-create S-buffer)) (if (get-buffer-process S-buffer) (set-variable 'quit-flag t)) (set-buffer S-buffer) (cd spread-home-directory) (inferior-spread-mode) (spread-insert (format "attach('%s.Data')" spread-frame-directory)) (spread-insert (format "emacs.start('%s')" spread-directory)) (find-file spread-command-file) (spread-find-file ".Registry") ) ;; start it up (spread-start) ess-17.11/etc/other/S-spread/sprd-spr.s0000644005071500004540000001515613202324174014561 00000000000000#-*-Fundamental-*- # Spreadsheet written in S # The spreadsheet may be called anything. # References to cells in the spreadsheet must be called "x". # Updating is in column order. # Version 3 classes and methods technology. as.spread <- function(x) { if (is.spread(x)) return(x) x <- as.array(x) attr(x,"expr") <- as.expr(x, length=0) attr(x,"macro") <- as.expr(x, length=0) attr(x,"before") <- as.expr(x, length=0) attr(x,"after") <- as.expr(x, length=0) class(x) <- c("spread", class(x)) x } is.spread <- function(x) inherits(x,"spread") print.spread <- function(x, ..., quote=F) { if (inherits(x, "data.frame")) print.data.frame(x) else { class(x) <- class(x)[-match("spread",class(x))] print.array(x, ..., quote=quote) } invisible(x) } "[.spread"<- function(x, ..., drop = F) { # Note: We do not retain the spread class! # If we did, the subscripts on the expr() and macros() would be wrong # NextMethod("[", drop=drop) } "[.expr" <- function(x, ... , drop=F) { # Note: We do retain the expr class. # The primary use is for printing, so we want the original subscripting. z <- NextMethod("[", drop=drop) class(z) <- class(x) z } update.spread <- function(object, ..., force=F) { if (force) object <- eval.spread(object, NULL, force=force) if (length(before(object))) object <- eval.spread(object, before(object)) if (length(expr(object))) object <- eval.spread(object, force=force) if (length(after(object))) object <- eval.spread(object, after(object)) object } eval.spread <- function(object, e, force=F) { x <- object class(x) <- class(x)[-match("spread",class(x))] if (force) { .Options$warn <- -1 tmp <- as.numeric(as.matrix(x)) if (!any(is.na(tmp))) x <- tmp } if (missing(e)) { if (inherits(x,"data.frame")) { e <- expr(object) if (force) for (j in 1:ncol(x)) for (i in 1:nrow(x)) x[[i,j]] <- eval(e[i,j]) else for (j in 1:ncol(x)) for (i in 1:nrow(x)) { eij <- e[i,j] if(is.language(eij)) x[[i,j]] <- eval(eij) } } else { i <- 0 if (force) for (ei in expr(object)) {i <- i+1; x[i] <- eval(ei)} else for (ei in expr(object)) {i <- i+1; if(is.language(ei)) x[i] <- eval(ei)} } } else eval(e) class(x) <- class(object) x } #usage: x <- macro.eval(x, i) macro.eval <- function(object, i) eval.spread(object, macro(x)[i]) "[[<-.spread" <- function(...) do.call("[<-.spread", list(...)) "[<-.spread" <- function(object, ..., value) { x <- object expr(x) <- expression() class(x) <- NULL e <- expr(object) l.e <- length(e) i.a.v <- is.atomic(substitute(value)) n.cells <- prod(dim(x[..., drop=F])) if (l.e == 0) { if (n.cells != 1 || i.a.v ) x[...] <- eval(substitute(value)) else { e <- as.expr(object) l.e <- length(e) } } if (l.e != 0) { if (n.cells != 1) { e.s.v <- eval(substitute(value, sys.parent())) x[...] <- e.s.v e[...] <- e.s.v } else { e[[...]] <- substitute(value) x[[...]] <- eval(e[[...]]) } } attributes(x) <- attributes(object) class(x) <- class(object) expr(x) <- e update.spread(x) } print.expr <- function(e, ..., replace.string=F) { replace <- as.logical(replace.string) if (length(e) == 0) { if (replace) cat(replace.string, "<- ") print(expression()) } else if (is.null(dim(e))) { ne <- names(e) for (i in 1:length(e)) { nei <- index.value(ne, i) if (replace) cat(replace.string) cat(paste("[", nei, "] ", sep="")) if (replace) cat("<- expression(") cat(e[i]) if (replace) cat(")") cat("\n") } } else { dn <- dimnames(e) if (is.null(dn)) dn <- list() for (i in 1:length(dim(e))) { if (is.null(dn[[i]])) dn[[i]] <- 1:dim(e)[i] } dnn <- outer(dn[[1]], dn[[2]], paste, sep=",") if (length(dn) > 2) for (i in 3:length(dn)) dnn <- outer(dnn, dn[[i]], paste, sep=",") for (i in seq(length=length(e))) { if (replace) cat("x") cat(paste("[", dnn[i], "] ", sep="")) if (replace) cat("<-") cat(paste(" ", e[i], "\n", sep="")) } } invisible(e) } as.expr <- function(x, ...) UseMethod("as.expr") as.expr.default <- function(x, length.x=prod(dim(x))) { e <- vector(mode="expression", length=length.x) x <- unclass(x) if (length.x > 0) { e <- array(e, dim(x), dimnames(x)) e[] <- x[] # for (i in 1:length(e)) e[i] <- x[i] } class(e) <- "expr" e } as.expr.data.frame <- function(x, length.x=prod(dim(x))) { e <- vector(mode="expression", length=length.x) if (length.x > 0) { e <- array(e, dim(x), dimnames(x)) u.x <- unclass(x) for (j in 1:ncol(x)) { uxj <- as.matrix(u.x[[j]]) for (i in 1:nrow(x)) e[i,j] <- uxj[i,1] } } class(e) <- "expr" e } expr <- function(x) attr(x,"expr") # "expr<-" is used only when value is a matrix the size of x, or to update # a subscripted piece of x. It is not a user function. # Currently used only in "[<-.spread". "expr<-" <- function(x, value) { attr(x,"expr") <- value x } "before<-" <- function(x, value) { attr(x,"before") <- value class(attr(x,"before")) <- "expr" x } "macro<-" <- function(x, value) { attr(x,"macro") <- value class(attr(x,"macro")) <- "expr" x } "after<-" <- function(x, value) { attr(x,"after") <- value class(attr(x,"after")) <- "expr" x } before <- function(x) attr(x,"before") macro <- function(x) attr(x,"macro") after <- function(x) attr(x,"after") expr.rc <- function(x, ...) UseMethod("expr.rc") expr.rc.default <- function(x, acpab) { subs <- paste("[", paste(acpab, collapse=","), "]") if (length(expr(x))==0) { x.expr <- paste("x.value(x",subs,")",sep="") value <- eval(parse(text=x.expr)) } else { e.expr <- paste("expr.value(expr(x)", subs, ", x", subs, ")") value <- eval(parse(text=e.expr)) } paste("x", subs, " <- ", value, sep="") } x.value <- function(x) { value <- if (length(x)==1) as.vector(as.matrix(x[[1]])) else if (inherits(x,"data.frame")) lapply(x, function(x) as.vector(as.matrix(x))) else as.vector(x) deparse(value) } expr.value <- function(e, x) { if (inherits(x,"data.frame") && (dim(e)[2]>1 || inherits(x[[1]],"factor"))) value <- deparse(lapply(e, function(x) as.vector(as.matrix(x)))) else { value <- paste(e, collapse=",") if (length(e) > 1) value <- paste("c(", value, ")", sep="") } value } index.value <- function(dn, i, deparse.result=T) { if (i==0) {i <- 0; mode(i) <- "missing"} if (is.numeric(i) && i>0 && length(dn)) i <- dn[i] if (deparse.result) deparse(as.vector(i)) else as.vector(i) } as.numeric.spread <- function(x) { .Options$warn <- -1 tmp <- as.numeric(unclass(x)) tmp <- ifelse(is.na(tmp), 0, tmp) attributes(tmp) <- attributes(x) tmp } all.numeric <- function(x) { .Options$warn <- -1 !any(is.na(as.numeric(x))) } ess-17.11/etc/other/S-spread/sprd-txt.s0000644005071500004540000000632013202324174014565 00000000000000# prspread is based on prmatrix prspread <- function(x, rowlab = character(0), collab = character(0), quote = T, right = F, spread.name=deparse(match.call()[["x"]]) ) { d <- dim(x) dnames <- dimnames(x) if(is.null(dnames)) dnames <- list(rowlab, collab) else { if(!missing(rowlab)) dnames[[1]] <- as.character(rowlab) if(!missing(collab)) dnames[[2]] <- as.character(collab) } if(length(dnames[[1]]) == 0) dnames[[1]] <- paste("[", 1:d[1], ",]", sep = "") else if(length(dnames[[1]]) != d[1]) stop("rowlab is wrong length") if(length(dnames[[2]]) == 0) dnames[[2]] <- paste("[,", 1:d[2], "]", sep = "") else if(length(dnames[[2]]) != d[2]) stop("collab is wrong length") cbind(c(spread.name,dnames[[1]]), rbind(dnames[[2]], as.matrix(x))) } row.ch <- function(x, d=dim(x)) array(1:d[1], d, dimnames(x)) col.ch <- function(x, d=dim(x)) array(rep.int(1:d[2], rep.int(d[1], d[2])), d, dimnames(x)) print.text <- function(x, screen.n, cex=1, spread.name=deparse(match.call()[["x"]]), clear=T, ...) { x.pr <- prspread(x, spread.name=spread.name) if (!missing(screen.n)) screen(screen.n) usr <- c(0, ncol(x.pr), 0, nrow(x.pr)) - .5 par(usr=usr) par(plt=c(0,1,0,1)) if (clear) polygon(usr[c(1,2,2,1)],usr[c(3,3,4,4)], den=-1,col=0,xaxt="s",yaxt="s") text(x=as.vector(col.ch(x.pr)-1), y=as.vector(nrow(x.pr)-row.ch(x.pr)), x.pr, cex=cex, ...) box() invisible(x) } text.update.spread <- function(xij, row.i, col.j, screen.n, cex=1, x) { if (!missing(screen.n)) {screen(screen.n, new=F); par(plt=c(0,1,0,1))} y <- nrow(x)-row.i clear.text(x=col.j, y=y) text(x=col.j, y=y, xij, cex=cex) box() invisible(x) } cell.rc.text <- function(nrow.x, n=1, type="n") { xy <- locator(n, type) c(row=nrow.x-round(xy$y), col=round(xy$x)) } clear.text <- function(x,y) polygon(x-.5+c(0,1,1,0), y-.5+c(0,0,1,1), den=-1, col=0, border=F, xaxt="s", yaxt="s") print.update.text <- function(x, ..., x.old, screen.n, cex=1, spread.name=deparse(match.call()[["x"]])) { if(missing(x.old)) return(invisible(print.text(x, screen=screen.n, cex=cex, spread.name=spread.name))) if (!missing(screen.n)) {screen(screen.n, new=F); par(plt=c(0,1,0,1))} diff.x <- as.vector(x != x.old) xx <- col(x)[diff.x] yy <- nrow(x)-row(x)[diff.x] for (i in seq(along=xx)) clear.text(xx[i], yy[i]) box() text(x=xx, y=yy, as.vector(unlist(x))[diff.x], cex=cex) invisible(x) } control.text <- function(x, screen.n, cex=1, spread.name=deparse(match.call()[["x"]])) { #This is a real function that does its own work if (!missing(screen.n)) {screen(screen.n, new=F); par(plt=c(0,1,0,1))} x.old <- x[,] rc <- cell.rc.text(nrow(x)) command <- expr.rc(x, rc) cat("> ", command, "\n", sep="", file="") eval(parse(text=readline())) if (!missing(screen.n)) {screen(screen.n, new=F); par(plt=c(0,1,0,1))} print.update.text(x, x.old=x.old, cex=cex, spread.name=spread.name) # print.text(x, cex=cex, spread.name=spread.name) invisible(x) } #text usage # device() # for example, x11(), or motif(), or win.graph() # x <- my.spread # copy my.spread to x ##loop # print.text(x) # work with x # x <- control.text(x, screen) # screen is optional ##end loop # my.spread <- x # copy revised x back to my.spread ess-17.11/etc/other/S-spread/sprd3d.how0000644005071500004540000002047113202324174014535 00000000000000 The emacs spread.frame device handler Richard M. Heiberger There are two variants in the usage of this emacs spread.frame device handler. Both use the same command file: S-spread.el. One variant is stand-alone. The other works with S-mode. Both are written in emacs 19.29 to use the comint.el package. They will not work in emacs 18. A. Stand-alone Usage 1. Create a .Data subdirectory in the directory you will be using, say `myclass' and `myclass/.Data'. Get into the dired buffer of the directory `myclass'. Any other buffer will cause the terminal to beep. 2. From the dired buffer enter (on my computer): M-x load-file /disk5/rmh/sprd3d/S-spread.el Edit the pathname for your computer. Any other buffer than the dired buffer will cause the terminal to beep. You will be prompted "S or Splus? ". "Splus" has been filled in as the default. Edit the command name if necessary, inserting a full pathname if appropriate, then hit carriage return. This leaves the window showing the .Registry buffer in Spread mode. If you previously had a .Registry in that directory, it appears in the buffer. If you have never used the spread.frame handler in that directory, then a new .Registry has been created for you. You also have a buffer called *Splus* (or *S*) in Inferior Spread mode in which Splus (or S) is running. NOTES for Stand-alone Version If you were previously running Splus in buffer *Splus* in Inferior Spread mode and accidentally killed the Splus process (for example, with the q() command), you are still using that buffer and the Splus process has been restarted. If you have a buffer named *Splus* not associated with a process, for example a file you are editing, emacs will use that buffer for the Inferior Spread mode. If you have a running Inferior Spread process, a shell process, or any other process, in a buffer named *Splus*, the terminal will beep. B. S-mode Usage 1. Create a .Data subdirectory in the directory you will be using, say `myclass' and `myclass/.Data'. Get into the dired buffer of the directory `myclass' and start S-mode with M-x S. 2. From the *S* buffer that S-mode has started enter (on my computer): M-x load-file /disk5/rmh/sprd3d/S-spread.el Edit the pathname for your computer. Any other buffer than the *S* buffer will cause the terminal to beep. This leaves the window showing the .Registry buffer in Spread mode. If you previously had a .Registry in that directory, it appears in the buffer. If you have never used the spread.frame handler in that directory, then a new .Registry has been created for you. NOTES FOR BOTH VERSIONS S/Splus thinks it is in charge and does not know about emacs. Emacs with comint attempts to coordinate its timing with Splus by sending commands to Splus with (comint-send-input) and waiting for their completion with (accept-process-output). If for any reason an out-of-date display of a buffer appears, use ^Cv to bring up the current display. If things still look wrong, go to the *Splus* buffer and force a current display with ^Cr. You will be requested to type the name of the object to be displayed in the minibuffer. All buffers displaying views of that object, and the .Registry buffer will be updated. Either usage of the spread.frame functions and the command file S-spread.el works with S Version 3, S Version 4, or Splus 3.3. 3. Start working in the .Registry buffer. Move to the macro section. a. Do "f" or [mouse-2] on the name of the spread.frame you want to see. Spread.frame names are listed in the macro section of the display. b. If no names appear, then you must add them. 4. To add more spread.frames, for example the "xy" spread.frame, where the "xy" spread.frame already exists in the .Data: a. Move to the *Splus* buffer. Enter "^Cr". b. The minibuffer will ask you for the name of a spread.frame. c. Enter the name of the object (for example xy (no quotes)) or an expression for a 2-way rectangular slice (xy[,,2]) of a 3-way object. d. The "xy" spread.frame will appear in the buffer. 5. To add a three-way spread.frame to the display from the *Splus* buffer a. Create a 3-way array and make it a spread.frame: xs <- as.spread(array(1:12,dim=c(2,3,2))) b. Print it to the /tmp/spraxxxxx directory with: print.update.emacs.3d(xs) c. Move the cursor to the .Registry buffer. Place the cursor on the .Registry entry and press RETURN twice. The names for the slices will now appear in the **macro** section (if not, use ^Cv). d. Place the cursor on each of the slices' names and press f. e. The entire spread.frame can also be displayed by pressing "f" or [mouse-2] on its name. The window displaying the entire spread.frame is not active. Pressing RETURN will beep. f. The slices are active. Pressing RETURN on a cell entry will update the entire spread.frame and the display of the slices. Pressing RETURN on a macro keyword or a macro name in a slice buffer will activate the display and update of the macro for the entire spread.frame. 6. Move between spread.frames with ^X o. 7. To edit a spread.frame, place the cursor on a cell and press ENTER or [mouse-3]. The expression associated with the cell will be displayed in the mini-buffer. Edit it and press ENTER. The spread.frame in Splus will be updated, and all views of the object in emacs buffers will be updated. 8. To execute a macro, place the cursor on the macro name and enter ^Cc. Don't use print() or cat() in macros; sink() is in use. The graphics device can be used for rectangular spread.frames, but does not yet work with three-way spread.frames. To use a graphics device for the spread.frame display (but no macros yet). 9. Open a graphics device: x11(), iris4d(), motif(), etc. 10. Add the names of the spread.frames to .Registry as described above. 11. To place a spread.frame in the graphics device, put the cursor on the spread.frame name in the **macro** listing in .Registry, and press ^Cp The minibuffer will display > xy <- print.text( xy ) Press ENTER and the device will show the xy spread.frame. 12. To change a value in a spread.frame in the graphics device, put the cursor on the spread.frame name in the **macro** listing in .Registry, and press ^Cs The minibuffer will display > xy <- control.text( xy ) Press ENTER, move the cursor into the graphics window, and click when the crosshair is on the cell you wish to change. Place the cursor in the *Splus* buffer, move to the end of the buffer by pressing ESC > . You will see the expression to be edited (prefixed with a ">") on the next to the last line. Move the cursor to that line, edit the value, and press ENTER. The graphics window will be updated. 13. You can edit any emacs buffer spread.frame by switching to its buffer and pressing ENTER or [mouse-3] on the appropriate entry. You can edit any spread.frame in the graphics device, by switching to the .Registry buffer, confirming that the spread.frame is in the graphics window (or putting it there with ^Cp), and then entering ^Cs on the macro name in the .Registry buffer that matches the spread.frame. 14. There is an additional feature in the spread.frame interface that is very useful for numerical rows or columns. When the cursor is placed on the dimnames row or column, the entire column or row is made available in the mini-buffer. Warning: expr() in the row or column will be evaluated and will no longer be expr(). 15. Character data. Character matrices work well as spread.frames. 16. Warning: character or factor columns in data.frames. S likes to coerce character columns in data.frames to factors. Updating an entire factor column, or an entire row containing factor columns, may be dangerous because the revised values may not be in the levels(). The entire column may be replaced with NA values. Updating of individual character values is fine in character arrays that are not data.frames, or in data.frames where the length(expr(x)) == prod(dim(x)). To get a character column into a data frame use my.frame$char <- character.value # remains character Using either my.frame[,"char"] <- character.value # coerced to factor my.frame <- cbind(my.frame,character.value) # coerced to factor won't work. Either of those forms coerces the values to factor. ess-17.11/etc/other/test0000644005071500004540000000006313202324174012036 00000000000000modify the test with a change. SJE: simple change. ess-17.11/etc/pkg-Maintainers0000644005071500004540000000023313202324174012766 00000000000000Xemacs: Rodney Sparapani -- no longer Debian: Dirk Eddelbuettel RPM: Tom Moertel SuSe: Detlef Steuer ess-17.11/etc/pkg1/0000755005071500004540000000000013202324174010736 500000000000000ess-17.11/etc/pkg1/DESCRIPTION0000644005071500004540000000032613202324174012365 00000000000000Package: pkg1 Type: Package Title: A sample package for testing ESS Version: 1.0 Date: 2014-01-20 Author: ESS Core Maintainer: Description: A sample package for testing ESS License: GPL-2 ess-17.11/etc/pkg1/NAMESPACE0000644005071500004540000000001513202324174012071 00000000000000export(D1tr) ess-17.11/etc/pkg1/R/0000755005071500004540000000000013202324174011137 500000000000000ess-17.11/etc/pkg1/R/D1tr.R0000644005071500004540000000154413202324174012020 00000000000000D1tr <- function(y, x = 1) { ## Purpose: discrete trivial estimate of 1st derivative. ## ---------------------------------------------------------------------- ## Arguments: x is optional; let's say we don't like "'" ## ---------------------------------------------------------------------- ## Author: Martin Maechler, ~ 1990 n <- length(y) if(length(x) == 1) c(y[2] - y[1], 0.5 * (y[-(1:2)] - y[-((n-1):n)]), y[n] - y[n-1])/x else { ## Here, already using non-matching apostrophes, but developer mode ## still seems to work .. if(n != length(x)) stop("lengths' of x & 'y' must equal") if(is.unsorted(x)) stop("'x' must be sorted !") c(y[2] - y[1], 0.5 * (y[-(1:2)] - y[-((n-1):n)]), y[n] - y[n-1]) / c(x[2] - x[1], 0.5 * (x[-(1:2)] - x[-((n-1):n)]), x[n] - x[n-1]) } } ess-17.11/etc/pkg1/man/0000755005071500004540000000000013202324174011511 500000000000000ess-17.11/etc/pkg1/man/D1tr.Rd0000644005071500004540000000201513202324174012530 00000000000000\name{D1tr} \alias{D1tr} \title{Numerical Derivatives of (x,y) Data} \description{ Compute the numerical derivatives of \eqn{f()} given observations \code{(x[i], y ~= f(x[i]))}. \code{D1tr} is the \emph{\bold{tr}ivial} discrete first derivative using simple difference ratios. This is \bold{far} from optimal and only kept here for reference. } \usage{ D1tr(y, x = 1) } \arguments{ \item{x,y}{numeric vectors of same length, supposedly from a model \code{y ~ f(x)}. For \code{D1tr()}, \code{x} can have length one and then gets the meaning of \eqn{h = \Delta x}.} } \value{ \code{D1tr()} returns a numeric vector of the length of \code{y}. } \author{Martin Maechler, in 1992 (for S).} \seealso{\code{\link[sfsmisc]{D1D2}} which directly uses the 2nd derivative of the smoothing spline; \code{\link{smooth.spline}}. } \examples{ set.seed(330) x <- sort(runif(500, 0,10)) y <- sin(x) + rnorm(500)/100 f1 <- D1tr(x=x,y=y) plot(x,f1, ylim = range(c(-1,1, f1))) curve(cos(x), col=3, add= TRUE) } \keyword{smooth} ess-17.11/etc/sas-keys.doc0000644005071500004540000004100013202324174012235 00000000000000ÐÏࡱá;þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿþÿÿÿþÿÿÿ þÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿ  !"#$%&'()þÿÿÿ+,-./þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ ÿÿÿÿ ÀFMicrosoft Word-Dokument MSWordDocWord.Document.8ô9²qÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ [fñÿfDefault$a$A$1$ Æ*$/B*OJQJCJmH sH PJnHÿ^JaJ_HÿtHÿBA@òÿ¡BAbsatz-StandardschriftartHþòÿñHWW-Absatz-StandardschriftartJþòÿJWW-Absatz-Standardschriftart1BþòÿBWW-Default Paragraph Font.B". Text body ¤¤x /!2 List^J@þB@Caption ¤x¤x $CJ6^JaJ]&þR&Index $^J4þ!b4Table Contents $>þar> Table Heading  $$a$65Œ(ÿÿÿÿhÖÒFÜÚê 2 â N  *3?JVW_kt~ˆ˜©´µÞçóý(34=M^ij—£®º»ÃÏØâãìí$.78DLXcdmnãèìðôõùý qvz~‚ƒ‡‹“”˜¢§¨Œ""""""""""""""¶""""""""""""""¶""""""""""¶""""""""""¶""""""""""""""¶""""""""""""""¶ŒPGTimes New Roman5Symbol3&Arial=LucidasansBÐhi¬ûEi¬ûEÐpƒpÐpp'0þÿà…ŸòùOh«‘+'³Ù04 p x „ œ ¨´Ðìø $éý3@¼ e@ëwÉìäÃ@VwpmÎÀ@„-mÎÀRodney SparapaniRodney Sparapani Normal.dotHelpì¥ÂM ¿0Caolan70/(Œÿÿÿÿ ÿÿlæææú4. :\wô–k b–ÌÙUnix key definitions for PC/Mac keyboard F1 Help F2 Refresh F3 Submit F4 Program F5 Log F6 Listing F7 Text F8 Shell F9 View F10 Log-Toggle F11 File-type-2 F12 Graph PC key definitions for PC/Mac keyboard F1 Help F2 Refresh F3 Shell F4 Text F5 Program F6 Log F7 Listing  F8 Submit F9 View F10 Log-Toggle F11 File-type-2 F12 Graph Unix key definitions for Thinkpad keyboard F2 Refresh F3 Submit F4 Program F5 Log F6 Listing F7 Text F8 Shell F9 View PC key definitions for Thinkpad keyboard F2 Refresh F3 Shell F4 Text F5 Program F6 Log F7 Listing F8 Submit F9 View Unix key definitions for Sun keyboard (cut out the numbered boxes and leave the dividers between F4/F5 and F8/F9) F1  F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Help Refresh Submit Program Log Listing Text Shell Viewtable Log-Toggle File-type-2 Viewgraph PC key definitions for Sun keyboard (cut out the numbered boxes and leave the dividers between F4/F5 and F8/F9) F1  F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Help Refresh Shell Text Program Log Listing Submit Viewtable Log-Toggle File-type-2 Viewgraph dtxˆýýCJRTfn~”¬®¾Öèüþ0:Rhýûõõõõõõõõõõõõõõõõõõ$$a$hjlº¼ÎÖECA?99$$a$¹$$T”_4Ö8Rší H_± _ »$÷&I+¤/ö3B84Ö4Ö4Ö4ÖÖæú &6Pfhpz„š¤¼Òùùùùùùùùùùùùùùùù$$a$ÒÔÖ,.6FECA?99$$a$¹$$T”_4Ö8Rší H_± _ »$÷&I+¤/ö3B84Ö4Ö4Ö4ÖF\tv†ž°ÄÆÎØÚÜùùùùùùùùùùki$$T”_4Öà 5j ¡ù.e"ª(à.2B84Ö4Ö4Ö4Ö$$a$ Ü.08H\npxˆ˜°ÆÈÐÚýûõõõõõõõõõõõõõ$$a$ÚÜÞÂ Ä Æ Î Ð Ø à è ê qomkic`cccc$$$a$$$T”_4Öà 5j ¡ù.e"ª(à.2B84Ö4Ö4Ö4Ö ê ò ú    ( 2 ùùùùùùùùù$$a$ 2 4 ü þ Þ à â ECA?=;¹$$T”.4Ö8Rší H_± _ »$÷&I+¤/ö3B84Ö4Ö4Ö4Öâ ê ì ô ü      & ( 0 : D N ùöùùùùùùùùùùùùù$$$a$N P EC¹$$T”.4Ö8Rší H_± _ »$÷&I+¤/ö3B84Ö4Ö4Ö4Ö-0°à= °Ð/!°Ð"°Ð#Ð$Ð2P1h3P(20ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ ÀF CompObjÿÿÿÿjOle ÿÿÿÿÿÿÿÿ1Tableÿÿÿÿÿÿÿÿÿÿÿÿ‹ SummaryInformation(ÿÿÿÿÿÿÿÿ*dWordDocumentÿÿÿÿÿÿÿÿÿÿÿÿ /(ÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿess-17.11/etc/sas-keys.ps0000644005071500004540000017030313202324174012123 00000000000000%!PS-Adobe-3.0 %%BoundingBox: (atend) %%Creator: OpenOffice.org 1.1.0 %%For: rsparapa %%CreationDate: Tue Jan 27 10:21:57 2004 %%Title: Help %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: (atend) %%PageOrder: Ascend %%EndComments %%BeginProlog %%BeginResource: procset PSPrint-Prolog 1.0 0 /ISO1252Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /unused /Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused /unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def /psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /Encoding 3 -1 roll def currentdict end exch pop definefont pop } def /pathdict dup 8 dict def load begin /rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit } { pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1 add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10 eq 3 1 roll exch } def /rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0 get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3 -1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul } for 256 div exch pop exch { neg } if } def /xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add 1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end /readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def systemdict /languagelevel known not { /xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1 roll show moveto 0 rmoveto } for pop pop } def /rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } def /rectfill { rectangle fill } def /rectstroke { rectangle stroke } def } if /psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def /psp_ascii85filter { currentfile /ASCII85Decode filter } def /psp_lzwstring { psp_lzwfilter 1024 string readstring } def /psp_ascii85string { psp_ascii85filter 1024 string readstring } def /psp_imagedict { /psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def /psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get } def 7 dict dup /ImageType 1 put dup /Width 7 -1 roll put dup /Height 5 index put dup /BitsPerComponent 4 index psp_bitspercomponent put dup /Decode 5 -1 roll psp_decodearray put dup /ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup /DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put } def %%EndResource %%EndProlog %%BeginSetup % %%BeginResource: font TimesNewRomanPSMTHGSet2 %!PS-AdobeFont-1.0-2.32768 % Creator: SunTypeTools-TT 1.0 gelf % Original font name: TimesNewRomanPSMT 30 dict begin /PaintType 0 def /FontType 3 def /StrokeWidth 0 def /FontName (TimesNewRomanPSMTHGSet2) cvn def /XUID [103 0 0 16#38DA7935 51 16#AA10B483 16#F0A3C008] def /FontMatrix [.001 0 0 .001 0 0] def /FontBBox [-166 -306 1008 1006] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 0 /glyph0 put Encoding 5 /glyph1 put Encoding 48 /glyph2 put Encoding 50 /glyph3 put Encoding 46 /glyph4 put Encoding 17 /glyph5 put Encoding 45 /glyph6 put Encoding 23 /glyph7 put Encoding 27 /glyph8 put Encoding 30 /glyph9 put Encoding 34 /glyph10 put Encoding 36 /glyph11 put Encoding 38 /glyph12 put Encoding 39 /glyph13 put Encoding 41 /glyph14 put Encoding 42 /glyph15 put Encoding 16 /glyph16 put Encoding 22 /glyph17 put Encoding 47 /glyph18 put Encoding 24 /glyph19 put Encoding 37 /glyph20 put Encoding 18 /glyph21 put Encoding 15 /glyph22 put Encoding 28 /glyph23 put Encoding 31 /glyph24 put Encoding 40 /glyph25 put Encoding 1 /glyph26 put Encoding 43 /glyph27 put Encoding 19 /glyph28 put Encoding 21 /glyph29 put Encoding 20 /glyph30 put Encoding 9 /glyph31 put Encoding 7 /glyph32 put Encoding 10 /glyph33 put Encoding 35 /glyph34 put Encoding 29 /glyph35 put Encoding 3 /glyph36 put Encoding 6 /glyph37 put Encoding 25 /glyph38 put Encoding 33 /glyph39 put Encoding 2 /glyph40 put Encoding 12 /glyph41 put Encoding 26 /glyph42 put Encoding 14 /glyph43 put Encoding 13 /glyph44 put Encoding 11 /glyph45 put Encoding 32 /glyph46 put Encoding 49 /glyph47 put Encoding 44 /glyph48 put Encoding 4 /glyph49 put Encoding 8 /glyph50 put /CharProcs 52 dict def CharProcs begin /.notdef {} def /glyph0 { 777 0 125 0 625 625 setcachedevice 125 0 moveto 125 625 lineto 625 625 lineto 625 0 lineto 125 0 lineto closepath 140 15 moveto 609 15 lineto 609 609 lineto 140 609 lineto 140 15 lineto closepath fill } bind def /glyph1 { 250 0 0 0 0 0 setcachedevice } bind def /glyph2 { 333 0 41 -213 310 694 setcachedevice 310 -195 moveto 310 -213 lineto 261 -188 220 -160 187 -126 curveto 141 -79 104 -23 79 40 curveto 54 104 41 170 41 239 curveto 41 340 65 432 115 516 curveto 165 599 230 658 310 694 curveto 310 673 lineto 270 651 237 621 211 583 curveto 186 544 167 496 154 437 curveto 142 378 135 316 135 252 curveto 135 183 140 119 151 62 curveto 159 18 169 -18 182 -45 curveto 194 -72 210 -98 230 -123 curveto 250 -148 277 -172 310 -195 curveto closepath fill } bind def /glyph3 { 333 0 22 -213 291 694 setcachedevice 22 673 moveto 22 694 lineto 71 670 113 641 145 607 curveto 192 560 228 504 253 440 curveto 279 376 291 310 291 240 curveto 291 140 267 48 217 -35 curveto 168 -118 103 -177 22 -213 curveto 22 -195 lineto 62 -173 95 -143 121 -104 curveto 147 -66 166 -17 179 41 curveto 191 100 197 162 197 226 curveto 197 295 192 358 181 416 curveto 173 460 163 497 151 523 curveto 139 550 123 577 102 602 curveto 82 626 56 650 22 673 curveto closepath fill } bind def /glyph4 { 333 0 40 187 292 261 setcachedevice 40 261 moveto 292 261 lineto 292 187 lineto 40 187 lineto 40 261 lineto closepath fill } bind def /glyph5 { 277 0 1 -13 280 694 setcachedevice 280 694 moveto 40 -13 lineto 1 -13 lineto 241 694 lineto 280 694 lineto closepath fill } bind def /glyph6 { 500 0 36 -11 464 675 setcachedevice 36 327 moveto 36 402 47 467 70 522 curveto 93 576 123 617 161 644 curveto 190 665 220 675 251 675 curveto 302 675 348 650 388 598 curveto 438 534 464 447 464 337 curveto 464 260 453 195 431 141 curveto 409 88 381 49 346 24 curveto 312 0 279 -11 247 -11 curveto 184 -11 131 25 89 100 curveto 54 163 36 238 36 327 curveto closepath 131 314 moveto 131 224 143 149 165 91 curveto 184 43 211 19 248 19 curveto 266 19 284 26 303 42 curveto 322 58 336 84 346 122 curveto 361 178 368 256 368 358 curveto 368 434 361 497 345 547 curveto 333 585 318 611 299 627 curveto 286 638 270 643 251 643 curveto 229 643 209 633 192 613 curveto 169 586 153 544 144 486 curveto 136 428 131 371 131 314 curveto closepath fill } bind def /glyph7 { 500 0 117 0 377 675 setcachedevice 117 597 moveto 278 675 lineto 294 675 lineto 294 116 lineto 294 80 295 56 299 47 curveto 302 38 308 31 318 26 curveto 328 21 348 19 377 18 curveto 377 0 lineto 128 0 lineto 128 18 lineto 160 18 180 21 189 26 curveto 198 30 205 37 208 45 curveto 211 53 213 77 213 116 curveto 213 474 lineto 213 522 212 553 208 566 curveto 207 577 203 584 196 589 curveto 190 594 183 597 174 597 curveto 163 597 146 592 124 582 curveto 117 597 lineto closepath fill } bind def /glyph8 { 500 0 21 0 458 675 setcachedevice 458 127 moveto 412 0 lineto 21 0 lineto 21 18 lineto 136 123 217 208 264 274 curveto 311 341 334 401 334 457 curveto 334 499 321 533 295 560 curveto 270 587 239 601 203 601 curveto 171 601 142 591 116 572 curveto 90 553 71 525 58 488 curveto 40 488 lineto 48 548 69 595 103 627 curveto 137 659 179 675 229 675 curveto 283 675 328 658 364 624 curveto 399 589 417 549 417 501 curveto 417 468 410 435 394 401 curveto 370 349 331 292 277 233 curveto 196 145 145 92 125 73 curveto 298 73 lineto 333 73 358 75 372 77 curveto 386 80 399 85 410 93 curveto 421 101 432 112 440 127 curveto 458 127 lineto closepath fill } bind def /glyph9 { 500 0 40 -11 416 675 setcachedevice 50 536 moveto 69 580 93 615 122 639 curveto 151 663 187 675 229 675 curveto 283 675 323 658 352 624 curveto 373 598 384 571 384 541 curveto 384 493 354 443 293 392 curveto 333 376 364 353 385 323 curveto 406 294 416 259 416 219 curveto 416 162 398 112 362 70 curveto 314 16 246 -11 155 -11 curveto 111 -11 81 -6 64 4 curveto 48 16 40 27 40 40 curveto 40 49 44 58 52 65 curveto 59 72 68 76 79 76 curveto 87 76 96 75 104 72 curveto 109 70 122 64 142 54 curveto 161 44 175 38 182 36 curveto 194 32 207 30 221 30 curveto 254 30 283 43 308 69 curveto 332 95 344 125 344 160 curveto 344 186 339 211 327 235 curveto 319 253 310 268 299 277 curveto 286 290 267 302 242 312 curveto 218 323 193 328 167 328 curveto 151 328 lineto 151 343 lineto 177 346 203 355 229 371 curveto 255 386 273 404 285 426 curveto 297 447 303 471 303 497 curveto 303 530 292 557 271 578 curveto 250 599 225 609 193 609 curveto 143 609 101 582 66 528 curveto 50 536 lineto closepath fill } bind def /glyph10 { 500 0 15 0 465 675 setcachedevice 465 244 moveto 465 174 lineto 376 174 lineto 376 0 lineto 295 0 lineto 295 174 lineto 15 174 lineto 15 237 lineto 322 675 lineto 376 675 lineto 376 244 lineto 465 244 lineto closepath 295 244 moveto 295 572 lineto 63 244 lineto 295 244 lineto closepath fill } bind def /glyph11 { 500 0 47 -11 434 662 setcachedevice 434 662 moveto 395 579 lineto 196 579 lineto 153 490 lineto 239 478 308 445 358 394 curveto 401 350 423 297 423 237 curveto 423 203 416 170 402 141 curveto 388 111 370 86 348 65 curveto 327 44 303 28 276 15 curveto 239 -2 201 -11 161 -11 curveto 122 -11 93 -4 75 8 curveto 57 21 47 37 47 53 curveto 47 62 51 70 59 77 curveto 66 84 76 87 87 87 curveto 95 87 103 86 109 83 curveto 116 81 126 75 142 63 curveto 166 47 191 38 216 38 curveto 254 38 288 53 316 82 curveto 345 110 359 145 359 187 curveto 359 227 347 264 321 299 curveto 295 333 260 360 214 379 curveto 179 394 131 402 69 404 curveto 196 662 lineto 434 662 lineto closepath fill } bind def /glyph12 { 500 0 42 -11 461 675 setcachedevice 448 675 moveto 448 657 lineto 405 653 370 645 343 632 curveto 316 619 289 600 262 573 curveto 236 547 214 518 196 485 curveto 179 453 165 414 152 369 curveto 199 401 246 417 293 417 curveto 339 417 378 399 411 363 curveto 444 327 461 280 461 222 curveto 461 167 444 117 411 71 curveto 371 16 317 -11 250 -11 curveto 206 -11 167 3 135 33 curveto 74 91 42 166 42 259 curveto 42 318 54 375 78 428 curveto 102 481 136 529 180 570 curveto 224 612 266 640 307 654 curveto 347 668 385 675 419 675 curveto 448 675 lineto closepath 144 333 moveto 139 290 135 254 135 227 curveto 135 196 141 162 153 125 curveto 164 89 181 60 204 38 curveto 221 23 241 15 265 15 curveto 293 15 318 28 341 55 curveto 363 82 374 120 374 169 curveto 374 225 363 273 341 314 curveto 319 354 288 375 247 375 curveto 234 375 221 373 207 367 curveto 193 362 172 351 144 333 curveto closepath fill } bind def /glyph13 { 500 0 37 -13 455 662 setcachedevice 100 662 moveto 455 662 lineto 455 643 lineto 234 -13 lineto 180 -13 lineto 377 582 lineto 195 582 lineto 159 582 133 578 117 569 curveto 90 554 68 531 51 500 curveto 37 505 lineto 100 662 lineto closepath fill } bind def /glyph14 { 500 0 60 -11 442 675 setcachedevice 191 333 moveto 139 376 105 411 90 437 curveto 75 462 67 490 67 518 curveto 67 561 84 598 117 629 curveto 150 660 194 675 250 675 curveto 303 675 346 661 378 632 curveto 411 603 427 570 427 533 curveto 427 508 419 483 401 457 curveto 384 432 347 401 291 366 curveto 348 322 386 288 405 262 curveto 430 229 442 194 442 157 curveto 442 110 424 71 389 38 curveto 354 5 307 -11 249 -11 curveto 187 -11 138 7 102 47 curveto 74 79 60 113 60 150 curveto 60 180 70 209 90 238 curveto 109 267 143 298 191 333 curveto closepath 268 385 moveto 307 420 332 448 342 469 curveto 353 489 358 512 358 538 curveto 358 572 349 599 329 618 curveto 310 637 284 647 250 647 curveto 218 647 190 638 169 618 curveto 149 599 138 577 138 551 curveto 138 534 143 517 151 500 curveto 160 483 172 467 188 452 curveto 268 385 lineto closepath 214 314 moveto 187 292 167 267 154 240 curveto 142 213 135 185 135 153 curveto 135 111 146 78 169 52 curveto 192 27 221 14 257 14 curveto 292 14 320 24 341 44 curveto 362 64 373 88 373 116 curveto 373 140 367 161 354 179 curveto 332 214 285 259 214 314 curveto closepath fill } bind def /glyph15 { 500 0 39 -13 457 675 setcachedevice 52 -13 moveto 52 4 lineto 95 4 134 15 170 34 curveto 207 53 242 86 276 133 curveto 310 181 334 233 347 290 curveto 296 257 250 241 208 241 curveto 162 241 123 259 89 295 curveto 56 331 39 378 39 438 curveto 39 496 56 547 89 593 curveto 129 648 181 675 246 675 curveto 300 675 347 653 385 608 curveto 433 553 457 484 457 402 curveto 457 329 439 260 402 196 curveto 367 133 316 80 251 38 curveto 199 3 142 -13 80 -13 curveto 52 -13 lineto closepath 355 326 moveto 361 369 364 402 364 428 curveto 364 459 359 494 348 530 curveto 337 567 322 595 302 614 curveto 283 634 260 644 235 644 curveto 206 644 181 631 159 604 curveto 137 579 126 540 126 488 curveto 126 420 141 366 169 327 curveto 190 299 217 285 248 285 curveto 263 285 280 289 301 296 curveto 321 303 339 313 355 326 curveto closepath fill } bind def /glyph16 { 666 0 36 -15 632 677 setcachedevice 602 677 moveto 617 452 lineto 602 452 lineto 582 519 553 567 515 597 curveto 478 627 433 642 380 642 curveto 337 642 297 631 261 608 curveto 226 586 198 551 178 501 curveto 158 453 147 392 147 319 curveto 147 260 157 208 176 164 curveto 195 120 224 86 263 62 curveto 301 40 345 27 395 27 curveto 437 27 476 37 508 55 curveto 541 73 577 110 617 165 curveto 632 155 lineto 599 96 560 53 516 25 curveto 472 0 419 -15 358 -15 curveto 249 -15 164 25 103 106 curveto 59 167 36 238 36 320 curveto 36 386 50 447 80 502 curveto 110 558 150 601 203 631 curveto 254 662 311 677 373 677 curveto 420 677 468 666 514 642 curveto 528 635 538 631 543 631 curveto 552 631 560 634 566 640 curveto 575 649 581 661 584 677 curveto 602 677 lineto closepath fill } bind def /glyph17 { 556 0 16 0 515 662 setcachedevice 204 625 moveto 204 365 lineto 325 365 lineto 353 365 373 372 386 384 curveto 398 396 407 420 411 456 curveto 429 456 lineto 429 232 lineto 411 232 lineto 411 258 408 276 401 289 curveto 395 301 386 310 375 316 curveto 364 322 347 325 325 325 curveto 204 325 lineto 204 117 lineto 204 83 206 62 210 50 curveto 214 42 221 36 231 29 curveto 245 22 260 18 276 18 curveto 300 18 lineto 300 0 lineto 16 0 lineto 16 18 lineto 39 18 lineto 66 18 86 25 99 41 curveto 106 52 110 77 110 117 curveto 110 544 lineto 110 578 108 600 104 611 curveto 101 619 94 626 84 632 curveto 70 640 55 644 39 644 curveto 16 644 lineto 16 662 lineto 508 662 lineto 515 516 lineto 498 516 lineto 489 547 479 570 468 584 curveto 457 599 443 609 427 616 curveto 411 622 385 625 350 625 curveto 204 625 lineto closepath fill } bind def /glyph18 { 722 0 35 -15 708 677 setcachedevice 613 677 moveto 630 468 lineto 613 468 lineto 596 520 574 559 546 585 curveto 507 624 457 643 395 643 curveto 311 643 247 609 202 542 curveto 166 486 147 419 147 341 curveto 147 278 159 221 184 168 curveto 208 117 240 79 280 54 curveto 319 30 360 18 401 18 curveto 426 18 449 20 472 27 curveto 495 33 517 42 538 54 curveto 538 246 lineto 538 279 536 301 531 311 curveto 526 321 518 329 507 334 curveto 497 340 478 342 451 342 curveto 451 361 lineto 708 361 lineto 708 342 lineto 695 342 lineto 670 342 653 334 643 317 curveto 637 305 633 281 633 246 curveto 633 43 lineto 596 23 559 8 522 0 curveto 486 -9 446 -15 401 -15 curveto 273 -15 176 25 109 107 curveto 60 169 35 240 35 320 curveto 35 378 49 435 77 488 curveto 110 551 155 600 213 634 curveto 262 663 319 677 385 677 curveto 409 677 431 675 451 671 curveto 471 667 499 659 535 645 curveto 553 639 565 635 571 635 curveto 578 635 583 638 587 644 curveto 592 649 594 660 595 677 curveto 613 677 lineto closepath fill } bind def /glyph19 { 722 0 17 0 701 662 setcachedevice 205 354 moveto 513 354 lineto 513 544 lineto 513 578 511 600 506 611 curveto 503 619 497 626 486 632 curveto 472 640 458 644 441 644 curveto 418 644 lineto 418 662 lineto 701 662 lineto 701 644 lineto 678 644 lineto 663 644 647 640 633 632 curveto 623 627 616 620 612 609 curveto 609 599 606 577 606 544 curveto 606 117 lineto 606 83 608 62 613 50 curveto 616 42 623 36 633 29 curveto 647 22 662 18 678 18 curveto 701 18 lineto 701 0 lineto 418 0 lineto 418 18 lineto 441 18 lineto 468 18 488 25 500 41 curveto 509 52 513 77 513 117 curveto 513 318 lineto 205 318 lineto 205 117 lineto 205 83 207 62 211 50 curveto 215 42 222 36 232 29 curveto 246 22 261 18 276 18 curveto 300 18 lineto 300 0 lineto 17 0 lineto 17 18 lineto 40 18 lineto 67 18 87 25 100 41 curveto 107 52 111 77 111 117 curveto 111 544 lineto 111 578 109 600 105 611 curveto 102 619 95 626 85 632 curveto 71 640 56 644 40 644 curveto 17 644 lineto 17 662 lineto 300 662 lineto 300 644 lineto 276 644 lineto 261 644 246 640 232 632 curveto 222 627 215 620 211 609 curveto 208 599 205 577 205 544 curveto 205 354 lineto closepath fill } bind def /glyph20 { 610 0 20 0 589 662 setcachedevice 573 183 moveto 589 179 lineto 532 0 lineto 20 0 lineto 20 18 lineto 44 18 lineto 72 18 92 27 104 45 curveto 111 55 115 80 115 117 curveto 115 544 lineto 115 586 110 612 101 622 curveto 89 636 70 644 44 644 curveto 20 644 lineto 20 662 lineto 319 662 lineto 319 644 lineto 285 644 260 641 246 634 curveto 231 627 222 619 216 608 curveto 211 598 208 573 208 533 curveto 208 117 lineto 208 90 211 72 216 62 curveto 220 55 226 50 234 46 curveto 243 43 268 41 311 41 curveto 359 41 lineto 410 41 445 45 466 53 curveto 486 60 505 74 522 93 curveto 539 112 556 142 573 183 curveto closepath fill } bind def /glyph21 { 889 0 16 0 868 662 setcachedevice 409 0 moveto 153 557 lineto 153 114 lineto 153 74 157 48 166 38 curveto 178 25 197 18 223 18 curveto 247 18 lineto 247 0 lineto 16 0 lineto 16 18 lineto 40 18 lineto 67 18 87 26 99 43 curveto 106 53 110 77 110 114 curveto 110 547 lineto 110 576 107 597 100 610 curveto 96 620 87 628 75 634 curveto 63 641 43 644 16 644 curveto 16 662 lineto 204 662 lineto 444 144 lineto 680 662 lineto 868 662 lineto 868 644 lineto 845 644 lineto 817 644 797 635 785 618 curveto 778 608 774 584 774 547 curveto 774 114 lineto 774 74 778 48 788 38 curveto 800 25 819 18 845 18 curveto 868 18 lineto 868 0 lineto 586 0 lineto 586 18 lineto 610 18 lineto 638 18 658 26 669 43 curveto 677 53 680 77 680 114 curveto 680 557 lineto 425 0 lineto 409 0 lineto closepath fill } bind def /glyph22 { 556 0 16 0 520 662 setcachedevice 205 310 moveto 205 117 lineto 205 75 209 49 218 39 curveto 230 25 250 18 274 18 curveto 300 18 lineto 300 0 lineto 16 0 lineto 16 18 lineto 41 18 lineto 69 18 89 27 101 45 curveto 107 55 111 79 111 117 curveto 111 544 lineto 111 586 107 612 98 622 curveto 85 636 66 644 41 644 curveto 16 644 lineto 16 662 lineto 259 662 lineto 318 662 365 656 399 644 curveto 433 631 462 611 485 582 curveto 509 553 520 519 520 479 curveto 520 425 503 381 467 347 curveto 432 313 381 296 316 296 curveto 300 296 283 297 264 299 curveto 246 302 226 305 205 310 curveto closepath 205 337 moveto 222 334 237 332 250 330 curveto 264 329 275 328 285 328 curveto 318 328 348 341 373 367 curveto 397 393 409 427 409 469 curveto 409 498 404 524 392 549 curveto 380 573 364 592 342 604 curveto 321 616 296 622 269 622 curveto 252 622 231 619 205 613 curveto 205 337 lineto closepath fill } bind def /glyph23 { 666 0 17 0 675 662 setcachedevice 675 0 moveto 499 0 lineto 274 309 lineto 258 309 245 308 234 308 curveto 230 308 226 308 220 309 curveto 216 309 210 309 205 309 curveto 205 117 lineto 205 75 209 49 219 39 curveto 231 25 250 18 274 18 curveto 300 18 lineto 300 0 lineto 17 0 lineto 17 18 lineto 41 18 lineto 69 18 89 27 102 45 curveto 108 55 112 79 112 117 curveto 112 544 lineto 112 586 107 612 98 622 curveto 86 636 67 644 41 644 curveto 17 644 lineto 17 662 lineto 258 662 lineto 328 662 380 657 414 646 curveto 447 636 475 618 499 590 curveto 521 562 533 530 533 491 curveto 533 451 520 416 494 385 curveto 467 355 426 334 370 322 curveto 507 132 lineto 538 88 565 60 587 45 curveto 610 31 639 22 675 18 curveto 675 0 lineto closepath 205 340 moveto 211 340 217 340 221 340 curveto 226 340 229 339 232 339 curveto 295 339 343 353 375 380 curveto 407 408 423 442 423 485 curveto 423 526 411 560 385 586 curveto 359 612 325 625 282 625 curveto 263 625 238 622 205 615 curveto 205 340 lineto closepath fill } bind def /glyph24 { 556 0 62 -15 502 677 setcachedevice 458 677 moveto 458 448 lineto 440 448 lineto 435 492 424 527 409 553 curveto 394 579 372 600 344 615 curveto 316 630 287 638 257 638 curveto 223 638 195 628 173 607 curveto 151 586 140 563 140 536 curveto 140 516 146 498 161 481 curveto 181 457 229 424 305 383 curveto 367 351 409 325 432 307 curveto 454 290 472 269 484 244 curveto 496 220 502 195 502 168 curveto 502 119 483 76 444 39 curveto 405 3 355 -15 293 -15 curveto 274 -15 256 -13 239 -10 curveto 229 -9 208 -2 177 7 curveto 145 17 125 22 116 22 curveto 108 22 102 20 97 15 curveto 93 10 89 0 86 -15 curveto 68 -15 lineto 68 211 lineto 86 211 lineto 95 164 106 129 121 105 curveto 135 82 157 62 187 46 curveto 216 31 248 22 283 22 curveto 324 22 356 33 380 55 curveto 403 76 415 102 415 131 curveto 415 147 411 164 402 180 curveto 393 197 379 212 360 227 curveto 348 236 313 257 256 289 curveto 200 321 159 346 135 365 curveto 111 384 93 404 81 427 curveto 68 450 62 475 62 502 curveto 62 550 80 591 117 625 curveto 153 660 200 677 256 677 curveto 291 677 328 668 368 651 curveto 386 643 399 639 406 639 curveto 415 639 422 641 427 646 curveto 433 651 437 662 440 677 curveto 458 677 lineto closepath fill } bind def /glyph25 { 610 0 30 0 585 662 setcachedevice 578 662 moveto 585 506 lineto 567 506 lineto 563 534 559 553 552 565 curveto 542 584 529 598 512 607 curveto 496 616 474 620 446 620 curveto 353 620 lineto 353 114 lineto 353 74 357 48 366 38 curveto 378 25 397 18 423 18 curveto 446 18 lineto 446 0 lineto 165 0 lineto 165 18 lineto 188 18 lineto 216 18 236 26 248 43 curveto 255 53 259 77 259 114 curveto 259 620 lineto 179 620 lineto 148 620 126 618 113 613 curveto 97 607 82 596 70 578 curveto 58 561 51 537 48 506 curveto 30 506 lineto 38 662 lineto 578 662 lineto closepath fill } bind def /glyph26 { 722 0 5 -15 711 662 setcachedevice 477 644 moveto 477 662 lineto 711 662 lineto 711 644 lineto 686 644 lineto 660 644 640 633 626 611 curveto 620 601 616 578 616 541 curveto 616 272 lineto 616 206 609 154 596 118 curveto 583 81 557 50 519 23 curveto 480 -1 428 -15 361 -15 curveto 289 -15 234 -2 196 21 curveto 159 46 133 80 117 123 curveto 106 151 101 206 101 286 curveto 101 544 lineto 101 585 96 612 84 625 curveto 73 637 55 644 30 644 curveto 5 644 lineto 5 662 lineto 291 662 lineto 291 644 lineto 266 644 lineto 239 644 219 635 207 618 curveto 199 606 195 582 195 544 curveto 195 256 lineto 195 230 197 201 202 167 curveto 207 135 215 109 228 90 curveto 240 72 258 56 281 44 curveto 304 32 333 26 367 26 curveto 410 26 449 35 483 54 curveto 517 73 541 97 553 127 curveto 565 156 572 206 572 276 curveto 572 544 lineto 572 586 567 612 558 622 curveto 546 636 527 644 501 644 curveto 477 644 lineto closepath fill } bind def /glyph27 { 722 0 8 -15 709 662 setcachedevice 709 662 moveto 709 644 lineto 687 640 668 632 656 621 curveto 639 605 624 581 610 548 curveto 379 -15 lineto 361 -15 lineto 113 555 lineto 101 584 92 603 86 609 curveto 79 619 69 627 57 633 curveto 45 638 29 642 8 644 curveto 8 662 lineto 279 662 lineto 279 644 lineto 249 641 229 636 219 628 curveto 210 621 206 611 206 599 curveto 206 583 213 558 228 523 curveto 396 135 lineto 553 518 lineto 568 556 576 582 576 597 curveto 576 606 571 615 562 624 curveto 552 632 537 639 514 642 curveto 512 643 510 643 505 644 curveto 505 662 lineto 709 662 lineto closepath fill } bind def /glyph28 { 443 0 35 -9 441 460 setcachedevice 284 64 moveto 239 29 210 8 198 2 curveto 181 -4 162 -9 142 -9 curveto 111 -9 85 1 65 22 curveto 45 43 35 71 35 105 curveto 35 127 40 146 50 162 curveto 63 184 86 205 120 225 curveto 152 244 208 268 284 296 curveto 284 313 lineto 284 358 277 389 263 405 curveto 249 422 229 430 201 430 curveto 181 430 165 425 152 414 curveto 140 403 134 390 134 375 curveto 135 347 lineto 135 333 131 321 124 312 curveto 116 305 106 300 93 300 curveto 82 300 72 305 64 313 curveto 57 321 52 333 52 348 curveto 52 375 66 401 95 425 curveto 124 448 164 460 216 460 curveto 255 460 288 454 313 440 curveto 333 430 347 415 356 393 curveto 362 379 365 350 365 307 curveto 365 155 lineto 365 112 366 86 367 77 curveto 369 67 372 61 375 57 curveto 379 54 383 52 388 52 curveto 394 52 398 53 402 56 curveto 409 60 422 72 441 91 curveto 441 64 lineto 405 16 371 -8 337 -8 curveto 321 -8 309 -3 299 7 curveto 290 19 285 37 284 64 curveto closepath 284 96 moveto 284 266 lineto 235 247 204 233 189 225 curveto 164 210 145 196 134 180 curveto 123 165 117 147 117 128 curveto 117 105 124 86 138 70 curveto 152 55 168 47 187 47 curveto 211 47 244 63 284 96 curveto closepath fill } bind def /glyph29 { 500 0 -2 -13 465 694 setcachedevice 153 370 moveto 197 430 243 460 293 460 curveto 339 460 379 441 414 401 curveto 448 362 465 309 465 240 curveto 465 161 439 97 386 48 curveto 341 7 291 -13 234 -13 curveto 208 -13 182 -8 155 0 curveto 128 9 101 23 73 42 curveto 73 506 lineto 73 557 72 588 69 600 curveto 67 611 63 619 58 624 curveto 53 628 46 630 38 630 curveto 29 630 18 627 4 622 curveto -2 639 lineto 131 694 lineto 153 694 lineto 153 370 lineto closepath 153 338 moveto 153 71 lineto 170 55 187 42 205 34 curveto 223 26 241 21 259 21 curveto 289 21 316 38 342 70 curveto 368 103 380 150 380 212 curveto 380 270 368 314 342 345 curveto 317 375 288 391 255 391 curveto 238 391 221 387 203 377 curveto 190 371 174 358 153 338 curveto closepath fill } bind def /glyph30 { 443 0 34 -13 411 460 setcachedevice 411 169 moveto 399 111 375 65 340 34 curveto 305 2 266 -13 223 -13 curveto 173 -13 128 7 90 50 curveto 53 92 34 150 34 223 curveto 34 293 55 350 97 394 curveto 138 438 188 460 247 460 curveto 291 460 327 449 355 425 curveto 384 402 398 378 398 353 curveto 398 340 395 331 386 323 curveto 378 315 367 311 353 311 curveto 333 311 319 317 309 330 curveto 304 336 300 350 298 369 curveto 297 388 290 402 278 413 curveto 267 422 251 427 231 427 curveto 199 427 172 416 152 391 curveto 126 359 113 317 113 265 curveto 113 211 126 165 152 124 curveto 178 83 214 62 258 62 curveto 290 62 319 73 344 95 curveto 362 110 379 137 396 176 curveto 411 169 lineto closepath fill } bind def /glyph31 { 500 0 33 -13 502 694 setcachedevice 347 50 moveto 325 27 304 11 283 1 curveto 262 -8 240 -13 215 -13 curveto 167 -13 124 6 87 47 curveto 51 88 33 141 33 205 curveto 33 269 53 328 93 381 curveto 134 434 186 460 249 460 curveto 289 460 321 448 347 423 curveto 347 505 lineto 347 557 346 588 343 600 curveto 341 611 337 619 332 624 curveto 327 628 320 630 312 630 curveto 304 630 292 627 278 622 curveto 272 639 lineto 405 694 lineto 427 694 lineto 427 177 lineto 427 125 429 93 431 81 curveto 434 70 437 62 443 57 curveto 448 52 454 50 461 50 curveto 470 50 482 53 497 58 curveto 502 41 lineto 369 -13 lineto 347 -13 lineto 347 50 lineto closepath 347 84 moveto 347 314 lineto 345 336 339 357 329 375 curveto 320 393 307 407 291 416 curveto 274 426 259 430 243 430 curveto 215 430 189 417 166 392 curveto 137 358 122 309 122 243 curveto 122 178 136 127 165 92 curveto 194 58 226 40 261 40 curveto 291 40 319 54 347 84 curveto closepath fill } bind def /glyph32 { 443 0 37 -13 415 460 setcachedevice 106 278 moveto 106 212 122 160 154 122 curveto 187 84 225 65 269 65 curveto 298 65 324 74 346 90 curveto 367 106 385 133 400 172 curveto 415 163 lineto 409 118 389 78 355 41 curveto 323 4 282 -13 232 -13 curveto 179 -13 133 7 94 49 curveto 56 90 37 146 37 217 curveto 37 294 56 354 96 396 curveto 135 439 184 460 243 460 curveto 293 460 334 444 367 411 curveto 399 378 415 334 415 278 curveto 106 278 lineto closepath 106 307 moveto 313 307 lineto 312 335 308 355 303 367 curveto 295 385 283 400 267 410 curveto 250 420 234 426 216 426 curveto 189 426 165 416 144 395 curveto 123 374 110 344 106 307 curveto closepath fill } bind def /glyph33 { 333 0 38 0 434 693 setcachedevice 206 412 moveto 206 118 lineto 206 76 210 50 219 39 curveto 231 24 248 17 268 17 curveto 308 17 lineto 308 0 lineto 41 0 lineto 41 17 lineto 61 17 lineto 74 17 86 20 97 27 curveto 107 33 115 42 119 53 curveto 123 64 125 86 125 118 curveto 125 412 lineto 38 412 lineto 38 447 lineto 125 447 lineto 125 476 lineto 125 520 132 559 146 589 curveto 161 620 183 645 212 665 curveto 242 684 275 693 312 693 curveto 346 693 377 682 406 660 curveto 425 645 434 629 434 610 curveto 434 601 430 592 421 583 curveto 413 575 404 570 394 570 curveto 387 570 379 573 371 578 curveto 362 583 352 595 340 613 curveto 328 630 317 642 307 648 curveto 297 655 286 658 273 658 curveto 258 658 246 654 235 646 curveto 225 638 217 626 212 609 curveto 208 592 206 549 206 479 curveto 206 447 lineto 321 447 lineto 321 412 lineto 206 412 lineto closepath fill } bind def /glyph34 { 500 0 29 -215 481 460 setcachedevice 150 163 moveto 124 176 103 195 87 219 curveto 73 243 65 269 65 298 curveto 65 342 82 380 116 412 curveto 149 444 191 460 244 460 curveto 286 460 323 450 354 429 curveto 449 429 lineto 463 429 471 429 474 428 curveto 476 427 478 426 479 423 curveto 480 421 481 416 481 408 curveto 481 399 481 394 479 390 curveto 479 389 477 388 474 386 curveto 472 386 463 385 449 385 curveto 391 385 lineto 409 362 418 332 418 295 curveto 418 253 403 218 371 188 curveto 339 159 296 144 242 144 curveto 220 144 198 147 174 153 curveto 160 141 151 130 145 121 curveto 141 112 138 104 138 97 curveto 138 92 141 86 146 81 curveto 151 76 162 72 177 70 curveto 187 69 209 68 246 66 curveto 312 65 356 63 376 60 curveto 406 56 431 44 449 26 curveto 467 8 476 -14 476 -41 curveto 476 -77 458 -111 424 -144 curveto 374 -191 307 -215 225 -215 curveto 163 -215 109 -201 66 -173 curveto 42 -157 29 -140 29 -122 curveto 29 -114 31 -106 35 -99 curveto 40 -86 52 -70 69 -48 curveto 71 -45 88 -28 119 3 curveto 102 14 90 22 83 31 curveto 76 39 72 47 72 58 curveto 72 69 77 83 86 98 curveto 96 113 117 135 150 163 curveto closepath 235 437 moveto 211 437 191 427 175 408 curveto 159 389 150 359 150 319 curveto 150 268 162 229 184 200 curveto 201 179 222 167 248 167 curveto 273 167 293 177 309 195 curveto 325 214 333 243 333 283 curveto 333 334 322 375 299 404 curveto 283 426 262 437 235 437 curveto closepath 145 0 moveto 130 -16 119 -31 111 -45 curveto 104 -60 99 -73 99 -85 curveto 99 -101 108 -114 127 -126 curveto 160 -146 207 -157 269 -157 curveto 327 -157 371 -146 398 -125 curveto 426 -105 440 -83 440 -60 curveto 440 -42 432 -31 415 -23 curveto 398 -16 365 -12 314 -11 curveto 242 -9 185 -5 145 0 curveto closepath fill } bind def /glyph35 { 500 0 6 0 493 694 setcachedevice 162 694 moveto 162 367 lineto 198 406 227 432 248 443 curveto 269 455 291 460 312 460 curveto 337 460 359 453 377 439 curveto 395 425 409 403 417 373 curveto 424 353 427 314 427 259 curveto 427 101 lineto 427 73 429 53 434 42 curveto 437 35 442 29 450 24 curveto 458 20 472 17 493 17 curveto 493 0 lineto 273 0 lineto 273 17 lineto 284 17 lineto 305 17 319 20 327 27 curveto 335 33 341 42 344 55 curveto 345 60 346 75 346 101 curveto 346 259 lineto 346 308 344 340 338 355 curveto 333 370 325 382 314 390 curveto 303 397 290 401 274 401 curveto 258 401 242 397 224 388 curveto 207 380 187 363 162 337 curveto 162 101 lineto 162 70 164 51 167 43 curveto 171 36 177 30 187 25 curveto 196 20 211 17 234 17 curveto 234 0 lineto 13 0 lineto 13 17 lineto 33 17 48 20 60 26 curveto 66 30 71 36 75 45 curveto 79 54 81 73 81 101 curveto 81 505 lineto 81 557 80 588 78 600 curveto 75 611 72 619 66 624 curveto 62 628 55 630 46 630 curveto 40 630 28 627 13 622 curveto 6 639 lineto 140 694 lineto 162 694 lineto closepath fill } bind def /glyph36 { 277 0 29 0 253 694 setcachedevice 145 694 moveto 158 694 170 689 180 680 curveto 189 670 194 659 194 645 curveto 194 631 189 620 180 609 curveto 170 600 159 595 145 595 curveto 131 595 120 600 109 609 curveto 100 619 95 631 95 645 curveto 95 658 100 670 109 680 curveto 119 689 130 694 145 694 curveto closepath 185 460 moveto 185 101 lineto 185 73 187 54 191 45 curveto 195 36 201 29 209 24 curveto 217 20 232 17 253 17 curveto 253 0 lineto 36 0 lineto 36 17 lineto 58 17 72 19 80 23 curveto 87 28 93 35 98 44 curveto 102 54 104 73 104 101 curveto 104 273 lineto 104 321 103 353 100 367 curveto 98 377 94 385 89 389 curveto 84 393 78 395 69 395 curveto 60 395 49 393 36 388 curveto 29 405 lineto 164 460 lineto 185 460 lineto closepath fill } bind def /glyph37 { 500 0 8 0 505 694 setcachedevice 163 694 moveto 163 249 lineto 277 353 lineto 301 375 315 389 319 395 curveto 321 398 323 402 323 406 curveto 323 413 320 418 315 423 curveto 310 428 301 431 288 431 curveto 288 447 lineto 482 447 lineto 482 431 lineto 456 431 434 427 416 419 curveto 398 412 379 398 357 379 curveto 243 273 lineto 357 128 lineto 389 88 411 63 422 52 curveto 437 37 451 27 463 22 curveto 471 19 485 17 505 17 curveto 505 0 lineto 288 0 lineto 288 17 lineto 300 18 309 20 313 23 curveto 318 26 320 31 320 37 curveto 320 44 313 57 300 73 curveto 163 249 lineto 163 100 lineto 163 71 165 52 169 43 curveto 173 34 179 28 187 23 curveto 194 20 210 18 235 17 curveto 235 0 lineto 8 0 lineto 8 17 lineto 31 17 48 20 59 25 curveto 66 29 71 35 75 42 curveto 80 53 82 71 82 98 curveto 82 505 lineto 82 557 81 588 79 600 curveto 77 611 73 620 67 624 curveto 62 628 56 630 47 630 curveto 41 630 30 628 16 622 curveto 8 639 lineto 141 694 lineto 163 694 lineto closepath fill } bind def /glyph38 { 277 0 29 0 257 694 setcachedevice 185 694 moveto 185 101 lineto 185 73 187 54 191 45 curveto 195 36 201 29 209 24 curveto 218 20 234 17 257 17 curveto 257 0 lineto 38 0 lineto 38 17 lineto 58 17 72 19 80 23 curveto 87 28 93 35 97 44 curveto 102 54 104 73 104 101 curveto 104 507 lineto 104 557 103 588 100 600 curveto 98 611 95 619 89 624 curveto 84 628 78 630 70 630 curveto 62 630 51 627 38 622 curveto 29 639 lineto 163 694 lineto 185 694 lineto closepath fill } bind def /glyph39 { 777 0 8 0 773 460 setcachedevice 164 365 moveto 196 397 215 416 221 421 curveto 236 433 251 443 269 450 curveto 286 457 302 460 319 460 curveto 347 460 371 452 391 436 curveto 411 419 425 396 432 365 curveto 465 404 494 430 517 442 curveto 540 454 563 460 588 460 curveto 612 460 633 454 651 442 curveto 669 430 684 410 695 382 curveto 702 363 706 333 706 293 curveto 706 101 lineto 706 73 708 54 712 43 curveto 715 36 721 30 730 25 curveto 739 20 753 17 773 17 curveto 773 0 lineto 552 0 lineto 552 17 lineto 562 17 lineto 581 17 596 21 606 28 curveto 614 34 619 42 623 53 curveto 624 59 625 75 625 101 curveto 625 293 lineto 625 330 621 355 611 370 curveto 599 391 579 401 550 401 curveto 533 401 516 397 499 389 curveto 481 380 460 364 435 340 curveto 434 335 lineto 435 314 lineto 435 101 lineto 435 70 437 51 440 43 curveto 444 36 450 30 459 25 curveto 469 20 485 17 508 17 curveto 508 0 lineto 282 0 lineto 282 17 lineto 307 17 324 20 333 26 curveto 342 32 349 41 352 52 curveto 354 58 354 74 354 101 curveto 354 293 lineto 354 330 350 355 338 372 curveto 324 393 304 403 278 403 curveto 261 403 244 398 226 389 curveto 199 375 179 358 164 340 curveto 164 101 lineto 164 72 166 53 170 43 curveto 174 35 180 28 188 24 curveto 196 20 212 17 236 17 curveto 236 0 lineto 15 0 lineto 15 17 lineto 36 17 50 20 58 24 curveto 66 28 72 35 77 45 curveto 81 54 83 73 83 101 curveto 83 271 lineto 83 321 82 353 79 367 curveto 77 377 73 385 68 389 curveto 63 393 57 395 48 395 curveto 39 395 28 393 15 388 curveto 8 405 lineto 143 460 lineto 164 460 lineto 164 365 lineto closepath fill } bind def /glyph40 { 500 0 5 0 495 460 setcachedevice 161 365 moveto 213 428 264 460 311 460 curveto 335 460 356 454 374 442 curveto 392 430 406 410 416 381 curveto 423 362 427 332 427 291 curveto 427 101 lineto 427 73 429 53 434 43 curveto 437 35 443 29 451 24 curveto 459 20 474 17 495 17 curveto 495 0 lineto 274 0 lineto 274 17 lineto 283 17 lineto 304 17 319 20 327 27 curveto 335 33 341 42 344 55 curveto 346 60 346 75 346 101 curveto 346 284 lineto 346 324 341 354 331 373 curveto 320 391 302 400 277 400 curveto 238 400 200 379 161 336 curveto 161 101 lineto 161 71 163 52 166 44 curveto 171 35 177 28 186 24 curveto 193 20 209 17 234 17 curveto 234 0 lineto 13 0 lineto 13 17 lineto 22 17 lineto 45 17 61 23 69 35 curveto 77 46 81 68 81 101 curveto 81 267 lineto 81 320 80 353 77 365 curveto 75 376 71 384 66 389 curveto 61 393 54 395 45 395 curveto 37 395 26 393 13 388 curveto 5 405 lineto 140 460 lineto 161 460 lineto 161 365 lineto closepath fill } bind def /glyph41 { 500 0 33 -13 465 460 setcachedevice 250 460 moveto 317 460 372 435 413 383 curveto 447 339 465 289 465 231 curveto 465 192 456 151 436 110 curveto 417 69 391 38 357 17 curveto 323 -2 286 -13 244 -13 curveto 177 -13 124 13 83 66 curveto 50 112 33 163 33 219 curveto 33 260 43 301 64 341 curveto 84 382 111 412 144 431 curveto 177 450 212 460 250 460 curveto closepath 234 428 moveto 217 428 200 423 183 413 curveto 166 403 151 385 140 359 curveto 130 333 124 300 124 260 curveto 124 195 137 139 163 91 curveto 189 44 223 20 265 20 curveto 297 20 323 34 343 60 curveto 364 85 374 130 374 194 curveto 374 273 357 336 323 381 curveto 300 413 270 428 234 428 curveto closepath fill } bind def /glyph42 { 500 0 -3 -213 465 460 setcachedevice 0 402 moveto 136 458 lineto 155 458 lineto 155 354 lineto 178 393 201 420 225 437 curveto 248 452 272 460 298 460 curveto 343 460 380 443 410 407 curveto 447 365 465 309 465 239 curveto 465 163 443 99 399 48 curveto 363 7 317 -13 261 -13 curveto 237 -13 217 -10 199 -3 curveto 186 1 171 11 155 25 curveto 155 -110 lineto 155 -140 157 -160 161 -168 curveto 164 -176 171 -183 180 -187 curveto 189 -192 206 -195 230 -195 curveto 230 -213 lineto -3 -213 lineto -3 -195 lineto 8 -195 lineto 26 -195 41 -192 54 -185 curveto 61 -182 65 -176 69 -167 curveto 72 -160 74 -140 74 -107 curveto 74 315 lineto 74 344 73 362 70 370 curveto 67 378 63 384 58 388 curveto 52 392 44 394 34 394 curveto 27 394 17 392 4 387 curveto 0 402 lineto closepath 155 325 moveto 155 158 lineto 155 122 156 98 159 86 curveto 164 68 175 51 193 37 curveto 210 22 233 15 260 15 curveto 292 15 319 28 339 53 curveto 365 86 378 133 378 193 curveto 378 262 364 314 333 351 curveto 313 376 288 389 259 389 curveto 244 389 229 386 213 377 curveto 202 372 182 354 155 325 curveto closepath fill } bind def /glyph43 { 333 0 6 0 339 460 setcachedevice 162 460 moveto 162 359 lineto 199 426 237 460 277 460 curveto 295 460 310 455 321 444 curveto 333 433 339 420 339 406 curveto 339 394 335 383 326 374 curveto 318 365 308 360 296 360 curveto 285 360 272 366 258 377 curveto 244 389 233 394 226 394 curveto 221 394 214 391 207 384 curveto 193 371 178 349 162 318 curveto 162 104 lineto 162 80 165 61 171 48 curveto 175 40 183 32 193 26 curveto 204 20 220 17 240 17 curveto 240 0 lineto 11 0 lineto 11 17 lineto 34 17 50 20 62 28 curveto 70 33 75 41 79 53 curveto 80 58 81 74 81 100 curveto 81 273 lineto 81 326 81 356 78 367 curveto 76 376 72 384 66 388 curveto 61 393 54 395 45 395 curveto 35 395 24 393 11 388 curveto 6 405 lineto 141 460 lineto 162 460 lineto closepath fill } bind def /glyph44 { 389 0 48 -13 354 460 setcachedevice 320 460 moveto 320 308 lineto 304 308 lineto 291 355 276 388 256 405 curveto 237 422 212 431 182 431 curveto 160 431 141 425 127 413 curveto 113 401 106 388 106 373 curveto 106 355 111 339 122 326 curveto 132 313 152 299 183 284 curveto 254 249 lineto 320 217 354 175 354 122 curveto 354 81 338 48 308 23 curveto 277 0 243 -13 204 -13 curveto 177 -13 146 -8 110 0 curveto 100 4 91 5 84 5 curveto 77 5 71 1 66 -6 curveto 50 -6 lineto 50 152 lineto 66 152 lineto 76 107 93 73 119 49 curveto 145 26 173 15 205 15 curveto 228 15 246 21 260 35 curveto 274 48 281 63 281 82 curveto 281 104 274 124 258 139 curveto 242 154 210 173 163 197 curveto 116 220 85 241 70 260 curveto 56 279 48 302 48 331 curveto 48 367 61 398 86 423 curveto 111 448 144 460 184 460 curveto 202 460 223 457 248 449 curveto 265 444 276 441 281 441 curveto 287 441 291 442 293 445 curveto 296 447 300 452 304 460 curveto 320 460 lineto closepath fill } bind def /glyph45 { 277 0 9 -7 279 594 setcachedevice 161 594 moveto 161 447 lineto 265 447 lineto 265 413 lineto 161 413 lineto 161 123 lineto 161 94 165 74 173 64 curveto 182 54 192 49 205 49 curveto 216 49 226 52 236 59 curveto 247 65 254 75 260 88 curveto 279 88 lineto 268 57 251 33 230 17 curveto 210 0 188 -7 166 -7 curveto 151 -7 137 -2 122 5 curveto 108 13 98 25 90 41 curveto 84 56 80 80 80 112 curveto 80 413 lineto 9 413 lineto 9 429 lineto 27 436 45 448 64 465 curveto 83 482 100 502 114 526 curveto 122 538 132 561 145 594 curveto 161 594 lineto closepath fill } bind def /glyph46 { 500 0 0 -13 498 447 setcachedevice 423 447 moveto 423 176 lineto 423 125 424 93 427 81 curveto 429 70 433 62 438 57 curveto 444 52 450 50 457 50 curveto 467 50 479 53 491 58 curveto 498 41 lineto 364 -13 lineto 342 -13 lineto 342 81 lineto 304 39 275 13 254 2 curveto 234 -7 213 -13 190 -13 curveto 166 -13 144 -6 125 8 curveto 107 22 94 41 87 63 curveto 80 86 76 119 76 160 curveto 76 360 lineto 76 381 74 395 69 404 curveto 65 412 59 418 49 423 curveto 41 427 24 429 0 429 curveto 0 447 lineto 157 447 lineto 157 147 lineto 157 106 165 79 179 65 curveto 193 53 211 46 231 46 curveto 246 46 261 50 279 59 curveto 297 68 318 84 342 109 curveto 342 363 lineto 342 388 338 405 329 415 curveto 319 423 300 428 270 429 curveto 270 447 lineto 423 447 lineto closepath fill } bind def /glyph47 { 500 0 8 -13 490 447 setcachedevice 8 447 moveto 218 447 lineto 218 429 lineto 205 429 lineto 192 429 183 426 176 419 curveto 169 414 166 405 166 395 curveto 166 383 169 370 176 354 curveto 280 107 lineto 384 363 lineto 392 381 395 395 395 405 curveto 395 409 395 413 392 416 curveto 388 421 384 424 378 426 curveto 373 428 361 429 344 429 curveto 344 447 lineto 490 447 lineto 490 429 lineto 474 428 462 424 455 418 curveto 444 409 434 393 424 370 curveto 266 -13 lineto 246 -13 lineto 86 363 lineto 79 381 72 394 65 401 curveto 59 409 51 415 41 420 curveto 35 423 24 426 8 429 curveto 8 447 lineto closepath fill } bind def /glyph48 { 722 0 6 -13 712 447 setcachedevice 6 447 moveto 193 447 lineto 193 429 lineto 176 428 165 425 160 419 curveto 154 415 151 408 151 398 curveto 151 389 154 376 160 362 curveto 255 104 lineto 352 314 lineto 326 380 lineto 319 399 309 413 295 420 curveto 289 425 275 428 255 429 curveto 255 447 lineto 468 447 lineto 468 429 lineto 445 428 429 424 418 416 curveto 412 411 409 403 409 391 curveto 409 385 410 378 413 371 curveto 514 114 lineto 608 362 lineto 615 379 618 394 618 404 curveto 618 410 615 416 609 420 curveto 603 425 590 428 571 429 curveto 571 447 lineto 712 447 lineto 712 429 lineto 685 425 664 406 650 371 curveto 500 -13 lineto 480 -13 lineto 369 271 lineto 238 -13 lineto 220 -13 lineto 77 362 lineto 67 386 58 402 49 410 curveto 40 418 26 424 6 429 curveto 6 447 lineto closepath fill } bind def /glyph49 { 500 0 13 0 487 447 setcachedevice 13 447 moveto 223 447 lineto 223 429 lineto 210 429 201 427 195 422 curveto 190 417 187 412 187 404 curveto 187 396 193 384 204 368 curveto 208 363 213 354 220 343 curveto 252 292 lineto 289 343 lineto 312 375 324 396 324 404 curveto 324 411 321 417 315 422 curveto 310 426 301 429 289 429 curveto 289 447 lineto 440 447 lineto 440 429 lineto 424 428 411 424 398 416 curveto 383 405 361 381 333 343 curveto 272 262 lineto 383 102 lineto 411 62 430 39 442 31 curveto 454 23 469 19 487 17 curveto 487 0 lineto 276 0 lineto 276 17 lineto 291 17 302 20 311 27 curveto 317 31 320 38 320 45 curveto 320 52 310 71 289 102 curveto 223 197 lineto 151 102 lineto 129 72 118 55 118 49 curveto 118 41 122 34 129 28 curveto 137 21 147 18 162 17 curveto 162 0 lineto 16 0 lineto 16 17 lineto 28 19 38 23 47 29 curveto 59 39 80 63 109 102 curveto 203 226 lineto 118 349 lineto 94 384 76 406 62 416 curveto 49 424 33 429 13 429 curveto 13 447 lineto closepath fill } bind def /glyph50 { 500 0 5 -215 494 447 setcachedevice 5 447 moveto 214 447 lineto 214 429 lineto 204 429 lineto 189 429 178 426 171 419 curveto 164 413 160 405 160 395 curveto 160 383 165 366 176 343 curveto 285 117 lineto 385 364 lineto 390 377 393 391 393 404 curveto 393 410 392 414 390 417 curveto 387 420 383 423 377 426 curveto 372 428 362 429 348 429 curveto 348 447 lineto 494 447 lineto 494 429 lineto 482 428 473 425 466 421 curveto 459 417 453 410 444 399 curveto 442 395 436 382 428 361 curveto 246 -84 lineto 229 -127 206 -160 177 -182 curveto 148 -204 121 -215 94 -215 curveto 75 -215 60 -209 47 -198 curveto 35 -187 28 -175 28 -161 curveto 28 -147 33 -136 42 -127 curveto 51 -119 63 -115 79 -115 curveto 89 -115 104 -119 123 -126 curveto 136 -130 144 -133 147 -133 curveto 157 -133 167 -128 179 -118 curveto 190 -108 202 -88 214 -60 curveto 246 17 lineto 85 354 lineto 81 365 73 377 62 392 curveto 54 403 47 411 41 415 curveto 34 420 22 425 5 429 curveto 5 447 lineto closepath fill } bind def end /BuildGlyph { exch /CharProcs get exch 2 copy known not {pop /.notdef} if get exec } bind def /BuildChar { 1 index /Encoding get exch get 1 index /BuildGlyph get exec } bind def currentdict end (TimesNewRomanPSMTHGSet2) cvn exch definefont pop %%EndResource %%DocumentSuppliedResources: font TimesNewRomanPSMTHGSet2 /#copies 1 def << /NumCopies null /Policies << /NumCopies 1 >> >> setpagedevice %%EndSetup %%Page: 1 1 %%PageBoundingBox: 18 18 594 774 %%BeginPageSetup % [{ %%BeginFeature: *PageSize Letter <> setpagedevice %%EndFeature } stopped cleartomark gsave [ 0 0.24 0.24 0 18 18] concat gsave %%EndPageSetup 76 112 moveto 0 0 0 setrgbcolor (TimesNewRomanPSMTHGSet2) cvn findfont 42 -42 matrix scale makefont setfont <01020304050607080509070A0302030B030C020D050A0C0E050F101112131405060708150C130E 09> [29 21 10 21 10 21 18 20 10 21 18 14 11 21 10 12 11 20 21 16 10 14 20 13 10 23 27 11 37 18 18 10 21 18 20 21 20 18 14 0] xshow 170 250 moveto <1617> [23 0] xshow 151 296 moveto <1807191A> [29 18 12 0] xshow 399 250 moveto <161B> [23 0] xshow 357 296 moveto <1C070A0E070D1D> [28 18 13 14 18 15 0] xshow 629 250 moveto <161E> [22 0] xshow 591 296 moveto <1F201521030B> [23 21 20 31 11 0] xshow 860 250 moveto <1622> [23 0] xshow 811 296 moveto <0F0E0C230E1321> [22 14 20 20 14 18 0] xshow 1203 250 moveto <1624> [23 0] xshow 1191 296 moveto <250C23> [25 20 0] xshow 1434 250 moveto <1626> [22 0] xshow 1398 296 moveto <25030D0B030223> [25 12 15 12 11 21 0] xshow 1666 250 moveto <1627> [22 0] xshow 1650 296 moveto <2807040B> [25 17 22 0] xshow 1897 250 moveto <1629> [23 0] xshow 1876 296 moveto <1F1D071919> [22 21 18 12 0] xshow 2248 250 moveto <162A> [23 0] xshow 2225 296 moveto <2B03072C> [30 11 18 0] xshow 2469 250 moveto <16172D> [22 20 0] xshow 2404 296 moveto <250C232E280C23231907> [25 20 20 14 25 20 20 20 12 0] xshow 2701 250 moveto <161717> [23 19 0] xshow 2641 296 moveto <160319072E0B081A072E1B> [23 10 12 18 14 12 19 21 18 13 0] xshow 2930 250 moveto <16171B> [23 20 0] xshow 2910 296 moveto <2F0E131A1D> [29 14 18 20 0] xshow 76 430 moveto <0F10050607080509070A0302030B030C020D050A0C0E050F101112131405060708150C130E09> [23 27 10 21 18 20 10 21 18 14 10 21 11 12 11 20 21 16 10 14 20 13 10 23 27 11 37 18 18 10 21 18 20 21 20 18 14 0] xshow 170 568 moveto <1617> [23 0] xshow 151 614 moveto <1807191A> [29 18 12 0] xshow 399 568 moveto <161B> [23 0] xshow 357 614 moveto <1C070A0E070D1D> [28 18 13 14 18 15 0] xshow 629 568 moveto <161E> [22 0] xshow 608 614 moveto <1F1D071919> [23 21 18 11 0] xshow 860 568 moveto <1622> [23 0] xshow 844 614 moveto <2807040B> [25 17 22 0] xshow 1203 568 moveto <1624> [23 0] xshow 1154 614 moveto <0F0E0C230E1321> [22 14 20 20 14 17 0] xshow 1434 568 moveto <1626> [22 0] xshow 1423 614 moveto <250C23> [25 20 0] xshow 1666 568 moveto <1627> [22 0] xshow 1624 614 moveto <25030D0B03022305> [25 11 15 12 11 21 20 0] xshow 1897 568 moveto <1629> [23 0] xshow 1860 614 moveto <1F201521030B> [23 20 20 32 11 0] xshow 2248 568 moveto <162A> [23 0] xshow 2225 614 moveto <2B03072C> [30 11 18 0] xshow 2469 568 moveto <16172D> [22 20 0] xshow 2404 614 moveto <250C232E280C23231907> [25 20 20 14 25 20 20 20 12 0] xshow 2701 568 moveto <161717> [23 19 0] xshow 2641 614 moveto <160319072E0B081A072E1B> [23 10 12 18 14 12 19 21 18 13 0] xshow 2930 568 moveto <16171B> [23 20 0] xshow 2910 614 moveto <2F0E131A1D> [29 14 18 20 0] xshow 76 748 moveto <01020304050607080509070A0302030B030C020D050A0C0E05281D0302061A130905060708150C 130E09> [29 21 10 21 10 21 18 20 10 21 18 14 11 21 10 12 11 20 21 16 10 14 20 13 10 25 21 11 20 21 21 18 20 10 21 18 20 21 20 18 14 0] xshow 220 886 moveto <161B> [23 0] xshow 178 932 moveto <1C070A0E070D1D> [28 18 13 14 18 15 0] xshow 551 886 moveto <161E> [23 0] xshow 514 932 moveto <1F201521030B> [22 21 20 32 11 0] xshow 882 886 moveto <1622> [23 0] xshow 839 929 moveto (TimesNewRomanPSMTHGSet2) cvn findfont 38 -38 matrix scale makefont setfont <0F0E0C230E1321> [21 12 19 19 12 17 0] xshow 1392 886 moveto (TimesNewRomanPSMTHGSet2) cvn findfont 42 -42 matrix scale makefont setfont <1624> [23 0] xshow 1380 932 moveto <250C23> [25 20 0] xshow 1723 886 moveto <1626> [23 0] xshow 1687 932 moveto <25030D0B030223> [25 11 15 13 10 21 0] xshow 2056 886 moveto <1627> [23 0] xshow 2040 932 moveto <2807040B> [25 17 22 0] xshow 2389 886 moveto <1629> [23 0] xshow 2368 932 moveto <1F1D071919> [23 21 18 11 0] xshow 2890 886 moveto <162A> [22 0] xshow 2868 932 moveto <2B03072C> [30 11 18 0] xshow 76 1066 moveto <0F10050607080509070A0302030B030C020D050A0C0E05281D0302061A130905060708150C130E 09> [23 27 10 21 18 20 10 21 18 14 10 21 11 12 11 20 21 16 10 14 20 13 10 25 21 10 21 21 21 18 20 10 21 18 20 20 21 18 14 0] xshow 220 1204 moveto <161B> [23 0] xshow 178 1250 moveto <1C070A0E070D1D> [28 18 13 14 18 15 0] xshow 551 1204 moveto <161E> [23 0] xshow 530 1250 moveto <1F1D071919> [22 21 18 11 0] xshow 882 1204 moveto <1622> [23 0] xshow 866 1250 moveto <2807040B> [24 18 21 0] xshow 1392 1204 moveto <1624> [23 0] xshow 1348 1247 moveto (TimesNewRomanPSMTHGSet2) cvn findfont 38 -38 matrix scale makefont setfont <0F0E0C230E1321> [22 12 19 19 12 17 0] xshow 1723 1204 moveto (TimesNewRomanPSMTHGSet2) cvn findfont 42 -42 matrix scale makefont setfont <1626> [23 0] xshow 1712 1250 moveto <250C23> [25 20 0] xshow 2056 1204 moveto <1627> [23 0] xshow 2020 1250 moveto <25030D0B030223> [25 11 15 12 11 21 0] xshow 2389 1204 moveto <1629> [23 0] xshow 2351 1250 moveto <1F201521030B> [22 21 20 32 11 0] xshow 2890 1204 moveto <162A> [22 0] xshow 2868 1250 moveto <2B03072C> [30 11 18 0] xshow 76 1384 moveto <01020304050607080509070A0302030B030C020D050A0C0E051F200205060708150C130E090530 14200B050C200B050B1D070502202115070E070905150C04070D05130209051907133107050B1D07 050903310309070E0D0515070B2C0707020516221116240513020905162911162A32> [29 21 10 21 10 21 18 20 10 21 18 14 11 21 10 12 11 20 21 16 10 14 20 13 10 23 20 20 10 21 18 20 20 20 18 14 21 10 14 18 21 11 10 20 20 12 10 12 20 18 10 20 21 31 20 18 14 18 20 10 20 20 22 18 15 10 18 21 20 10 12 18 18 20 19 10 11 21 18 10 21 11 20 11 21 18 14 16 10 20 18 12 29 18 18 20 10 23 21 11 22 20 10 18 21 20 10 23 20 10 23 21 0] xshow 170 1568 moveto <1617> [23 0] xshow 399 1568 moveto <161B> [23 0] xshow 629 1568 moveto <161E> [22 0] xshow 860 1568 moveto <1622> [23 0] xshow 1203 1568 moveto <1624> [23 0] xshow 1434 1568 moveto <1626> [22 0] xshow 1666 1568 moveto <1627> [22 0] xshow 1897 1568 moveto <1629> [23 0] xshow 2248 1568 moveto <162A> [23 0] xshow 2469 1568 moveto <16172D> [22 20 0] xshow 2701 1568 moveto <161717> [23 19 0] xshow 2930 1568 moveto <16171B> [23 20 0] xshow 76 1745 moveto <0505050505050505> [10 10 10 10 10 10 10 0] xshow 156 1745 moveto <1807191A0505050505050505050505051C070A0E070D1D05050505050505050505051F20152103 0B050505050505050505050F0E0C230E132105050505050505050505050505050505050505050505 0505250C23050505050505050505050505050525030D0B0302230505050505050505050505050528 07040B0505050505050505050505050505051F1D0719190505050505050505050505050505050505 050505050505052B03072C0B131519070505050505250C232E280C2323190705050505160319072E 0B> [30 18 12 20 10 10 10 10 10 10 10 10 10 10 10 10 27 18 14 13 18 15 21 10 10 10 10 10 10 10 10 10 10 10 23 21 19 32 11 12 10 10 10 10 10 10 10 10 10 10 23 13 20 20 14 18 32 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 25 20 20 10 10 10 10 10 10 10 10 10 10 10 10 10 10 25 12 15 12 11 21 20 10 10 10 10 10 10 10 10 10 10 10 10 10 25 17 22 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 23 21 17 12 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 30 11 18 29 12 18 20 13 18 10 10 10 10 10 25 20 20 14 25 20 20 20 11 18 10 10 10 10 24 10 12 18 13 0] xshow 2730 1745 moveto <081A072E1B05050505052B03072C230E131A1D> [20 21 17 14 20 10 10 10 10 10 30 11 18 29 20 14 18 21 0] xshow 76 1837 moveto <0F10050607080509070A0302030B030C020D050A0C0E051F200205060708150C130E0905301420 0B050C200B050B1D070502202115070E070905150C04070D05130209051907133107050B1D070509 03310309070E0D0515070B2C0707020516221116240513020905162911162A32> [23 27 10 21 18 20 10 21 18 14 10 21 11 12 11 20 21 16 10 14 20 13 10 23 20 20 10 21 18 20 20 20 18 14 21 10 14 18 21 11 10 20 20 12 10 12 20 18 10 20 21 32 19 18 14 18 20 10 20 20 22 18 15 10 18 21 20 10 12 18 18 20 19 10 12 20 18 10 21 11 20 11 21 18 14 16 10 20 18 12 29 18 18 20 10 23 21 11 22 20 10 18 20 21 10 23 20 11 22 21 0] xshow 170 2021 moveto <1617> [23 0] xshow 399 2021 moveto <161B> [23 0] xshow 629 2021 moveto <161E> [22 0] xshow 860 2021 moveto <1622> [23 0] xshow 1203 2021 moveto <1624> [23 0] xshow 1434 2021 moveto <1626> [22 0] xshow 1666 2021 moveto <1627> [22 0] xshow 1897 2021 moveto <1629> [23 0] xshow 2248 2021 moveto <162A> [23 0] xshow 2469 2021 moveto <16172D> [22 20 0] xshow 2701 2021 moveto <161717> [23 19 0] xshow 2930 2021 moveto <16171B> [23 20 0] xshow 76 2198 moveto <0505050505050505> [10 10 10 10 10 10 10 0] xshow 156 2198 moveto <1807191A0505050505050505050505051C070A0E070D1D0505050505050505050505051F1D0719 190505050505050505050505050505052807040B0505050505050505050505050505050505050505 050505050F0E0C230E132105050505050505050505050505250C2305050505050505050505050505 0525030D0B0302230505050505050505050505051F201521030B0505050505050505050505050505 050505050505052B03072C0B131519070505050505250C232E280C2323190705050505160319072E 0B> [30 18 12 20 10 10 10 10 10 10 10 10 10 10 10 10 27 18 14 13 18 15 21 10 10 10 10 10 10 10 10 10 10 10 10 23 21 18 11 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 25 17 22 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 22 14 20 20 14 18 32 10 10 10 10 10 10 10 10 10 10 10 10 10 25 20 20 10 10 10 10 10 10 10 10 10 10 10 10 10 10 25 12 15 12 11 21 20 10 10 10 10 10 10 10 10 10 10 10 10 23 20 20 32 11 11 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 30 11 18 29 12 18 20 13 18 10 10 10 10 10 25 20 20 14 25 20 20 20 11 18 10 10 10 10 24 10 12 18 13 0] xshow 2730 2198 moveto <081A072E1B05050505052B03072C230E131A1D> [20 21 17 14 20 10 10 10 10 10 30 11 18 29 20 14 18 21 0] xshow 305 168 1 178 rectfill 534 168 1 178 rectfill 764 168 1 178 rectfill 997 168 1 178 rectfill 1108 168 1 178 rectfill 1339 168 1 178 rectfill 1571 168 1 178 rectfill 1801 168 1 178 rectfill 2034 168 1 178 rectfill 2153 168 1 178 rectfill 2384 168 1 178 rectfill 2616 168 1 178 rectfill 2846 168 1 178 rectfill 305 486 1 178 rectfill 534 486 1 178 rectfill 764 486 1 178 rectfill 997 486 1 178 rectfill 1108 486 1 178 rectfill 1339 486 1 178 rectfill 1571 486 1 178 rectfill 1801 486 1 178 rectfill 2034 486 1 178 rectfill 2153 486 1 178 rectfill 2384 486 1 178 rectfill 2616 486 1 178 rectfill 2846 486 1 178 rectfill 406 804 1 178 rectfill 737 804 1 178 rectfill 1069 804 1 178 rectfill 1247 804 1 178 rectfill 1578 804 1 178 rectfill 1909 804 1 178 rectfill 2244 804 1 178 rectfill 2575 804 1 178 rectfill 2747 804 1 178 rectfill 406 1122 1 178 rectfill 737 1122 1 178 rectfill 1069 1122 1 178 rectfill 1247 1122 1 178 rectfill 1578 1122 1 178 rectfill 1909 1122 1 178 rectfill 2244 1122 1 178 rectfill 2575 1122 1 178 rectfill 2747 1122 1 178 rectfill 305 1486 1 221 rectfill 534 1486 1 221 rectfill 764 1486 1 221 rectfill 997 1486 1 221 rectfill 1108 1486 1 221 rectfill 1339 1486 1 221 rectfill 1571 1486 1 221 rectfill 1801 1486 1 221 rectfill 2034 1486 1 221 rectfill 2153 1486 1 221 rectfill 2384 1486 1 221 rectfill 2616 1486 1 221 rectfill 2846 1486 1 221 rectfill 305 1939 1 221 rectfill 534 1939 1 221 rectfill 764 1939 1 221 rectfill 997 1939 1 221 rectfill 1108 1939 1 221 rectfill 1339 1939 1 221 rectfill 1571 1939 1 221 rectfill 1801 1939 1 221 rectfill 2034 1939 1 221 rectfill 2153 1939 1 221 rectfill 2384 1939 1 221 rectfill 2616 1939 1 221 rectfill 2846 1939 1 221 rectfill 75 168 1 178 rectfill 75 167 3000 1 rectfill 75 346 3000 1 rectfill 3074 168 1 178 rectfill 75 486 1 178 rectfill 75 485 3000 1 rectfill 75 664 3000 1 rectfill 3074 486 1 178 rectfill 75 804 1 178 rectfill 75 803 3000 1 rectfill 75 982 3000 1 rectfill 3074 804 1 178 rectfill 75 1122 1 178 rectfill 75 1121 3000 1 rectfill 75 1300 3000 1 rectfill 3074 1122 1 178 rectfill 75 1486 1 221 rectfill 75 1485 3000 1 rectfill 75 1707 3000 1 rectfill 3074 1486 1 221 rectfill 75 1939 1 221 rectfill 75 1938 3000 1 rectfill 75 2160 3000 1 rectfill 3074 1939 1 221 rectfill showpage grestore grestore %%PageTrailer %%Trailer %%BoundingBox: 0 0 612 792 %%Pages: 1 %%EOF ess-17.11/etc/sas-keys.rtf0000644005071500004540000006256413202324174012305 00000000000000{\rtf1\ansi\deff0\adeflang1025 {\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\froman\fprq2\fcharset0 Times New Roman;}{\f3\fnil\fprq2\fcharset0 Bitstream Vera Sans;}{\f4\fnil\fprq2\fcharset0 Lucidasans;}{\f5\fnil\fprq0\fcharset0 Lucidasans;}} {\colortbl;\red0\green0\blue0;\red128\green128\blue128;} {\stylesheet{\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033\snext1 Default;} {\s2\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031\sbasedon1\snext2 Text body;} {\s3\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af5\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031\sbasedon2\snext3 List;} {\s4\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af5\afs20\lang255\ai\ltrch\dbch\af3\afs20\langfe255\ai\loch\f0\fs20\lang1031\i\sbasedon1\snext4 Caption;} {\s5\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af5\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031\sbasedon1\snext5 Index;} {\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031\sbasedon2\snext6 Table Contents;} {\s7\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af4\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\ai\ab\loch\f0\fs24\lang1031\i\b\sbasedon6\snext7 Table Heading;} {\*\cs9\cf0\rtlch\af4\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031 WW-Absatz-Standardschriftart;} {\*\cs10\cf0\rtlch\af4\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031 WW-Absatz-Standardschriftart1;} {\*\cs11\cf0\rtlch\af4\afs24\lang255\ltrch\dbch\af3\afs24\langfe255\loch\f0\fs24\lang1031 WW-Default Paragraph Font;} } {\info{\title Help}{\author Rodney Sparapani}{\creatim\yr2001\mo4\dy26\hr10\min22}{\operator Rodney Sparapani}{\revtim\yr2001\mo4\dy26\hr10\min25}{\printim\yr2004\mo1\dy27\hr10\min21}{\comment StarWriter}{\vern6450}}\deftab720 {\*\pgdsctbl {\pgdsc0\pgdscuse195\lndscpsxn\pgwsxn15840\pghsxn12240\marglsxn720\margrsxn720\margtsxn720\margbsxn720\pgdscnxt0 Default;}} {\*\pgdscno0}\landscape\paperh12240\paperw15840\margl720\margr720\margt720\margb720\sectd\sbknone\lndscpsxn\pgwsxn15840\pghsxn12240\marglsxn720\margrsxn720\margtsxn720\margbsxn720\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 Unix key definitions for PC/Mac keyboard} \par \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \par \trowd\trqr\trrh863\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx1105\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx2201\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx3308\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4423\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4958\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx6064\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx7180\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx8285\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9401\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9973\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx11079\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx12194\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx13300\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clvertalt\cellx14400 \pard\intbl\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F1\line Help} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F2} \par {\loch\f2\fs20\lang1033\i0\b0 Refresh} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F3\line Submit} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F4\line Program} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F5\line Log} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F6\line Listing} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F7\line Text} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F8\line Shell} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F9} \par {\loch\f2\fs20\lang1033\i0\b0 View} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F10} \par {\loch\f2\fs20\lang1033\i0\b0 Log-Toggle} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F11} \par {\loch\f2\fs20\lang1033\i0\b0 File-type-2} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F12\line Graph} \cell\row\pard \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \par {\loch\f2\fs20\lang1033\i0\b0 PC key definitions for PC/Mac keyboard} \par \par \trowd\trqr\trrh863\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx1105\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx2201\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx3308\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4423\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4958\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx6064\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx7180\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx8285\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9401\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9973\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx11079\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx12194\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx13300\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clvertalt\cellx14400 \pard\intbl\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F1\line Help} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F2} \par {\loch\f2\fs20\lang1033\i0\b0 Refresh} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F3\line Shell} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F4\line Text} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F5\line Program} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F6\line Log} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F7\line Listing } \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F8\line Submit} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F9} \par {\loch\f2\fs20\lang1033\i0\b0 View} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F10} \par {\loch\f2\fs20\lang1033\i0\b0 Log-Toggle} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F11} \par {\loch\f2\fs20\lang1033\i0\b0 File-type-2} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F12\line Graph} \cell\row\pard \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \par {\loch\f2\fs20\lang1033\i0\b0 Unix key definitions for Thinkpad keyboard} \par \par \trowd\trqr\trrh863\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx1588\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx3177\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4768\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx5624\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx7212\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx8803\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx10408\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx11998\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx12823\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clvertalt\cellx14400 \pard\intbl\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F2} \par {\loch\f2\fs20\lang1033\i0\b0 Refresh} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F3\line Submit} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F4\line {\fs18 Program}} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F5\line Log} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F6\line Listing} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F7\line Text} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F8\line Shell} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F9} \par {\loch\f2\fs20\lang1033\i0\b0 View} \cell\row\pard \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \par {\loch\f2\fs20\lang1033\i0\b0 PC key definitions for Thinkpad keyboard} \par \par \trowd\trqr\trrh863\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx1588\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx3177\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4768\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx5624\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx7212\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx8803\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx10408\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx11998\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx12823\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clvertalt\cellx14400 \pard\intbl\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F2} \par {\loch\f2\fs20\lang1033\i0\b0 Refresh} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F3\line Shell} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F4\line Text} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F5} \par \pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs18\langfe255\loch\f2\fs18\lang1033 {\loch\f2\fs18\lang1033\i0\b0 Program} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F6\line Log} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F7\line Listing} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F8\line Submit} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F9} \par {\loch\f2\fs20\lang1033\i0\b0 View} \cell\row\pard \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \par {\loch\f2\fs20\lang1033\i0\b0 Unix key definitions for Sun keyboard (cut out the numbered boxes and leave the dividers between F4/F5 and F8/F9)} \par \par \par \trowd\trqr\trrh1070\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx1105\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx2201\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx3308\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4423\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4958\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx6064\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx7180\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx8285\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9401\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9973\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx11079\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx12194\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx13300\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clvertalt\cellx14400 \pard\intbl\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F1} \par \pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F2} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F3} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F4} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F5} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F6} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F7} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F8} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F9} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F10} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F11} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F12} \cell\row\pard \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 Help Refresh Submit Program Log Listing Text Shell Viewtable Log-Toggle File-type-2 Viewgraph} \par \par {\loch\f2\fs20\lang1033\i0\b0 PC key definitions for Sun keyboard (cut out the numbered boxes and leave the dividers between F4/F5 and F8/F9)} \par \par \par \trowd\trqr\trrh1070\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx1105\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx2201\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx3308\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4423\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx4958\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx6064\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx7180\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx8285\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9401\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx9973\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx11079\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx12194\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clvertalt\cellx13300\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\clvertalt\cellx14400 \pard\intbl\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F1} \par \pard\plain \intbl\ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F2} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F3} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F4} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F5} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F6} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F7} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F8} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F9} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F10} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F11} \cell\pard\plain \intbl\ltrpar\s1\qc\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 \line F12} \cell\row\pard \pard\plain \ltrpar\s1\ql\rtlch\af2\afs20\lang255\ltrch\dbch\af2\afs20\langfe255\loch\f2\fs20\lang1033 {\loch\f2\fs20\lang1033\i0\b0 Help Refresh Shell Text Program Log Listing Submit Viewtable Log-Toggle File-type-2 Viewgraph} \par }ess-17.11/etc/sje-ess-notes.txt0000644005071500004540000002255713202324174013267 00000000000000Stephen Eglen's notes on future changes to ESS -*- org -*- * Problem with ESS infrastructure and Martin away? Email isg@math.ethz.ch * ess-history-file needs documenting and possibly updating: From: Stephen Eglen To: Erik Iverson Comments: In-reply-to Erik Iverson message dated "Wed, 20 Apr 2011 09:36:26 -0500." Date: Tue, 26 Apr 2011 09:01:29 +0100 Cc: Feng Li , ess-help@stat.math.ethz.ch Subject: Re: [ESS] ESS and .Rhistory Sender: ess-help-bounces@r-project.org Dear Erik, Feng, Thanks for this -- I was blissfully unaware about this persistence of history across R sessions. Howabout if we change the semantics of ess-history-file to be: nil -- do not attempt to read/write a history file t -- use the default naming scheme for loading the history "some.string" -- use this value as the filename. Stephen > Feng, > > On 04/20/2011 09:00 AM, Feng Li wrote: > > Dear list, > > > > I tried to change the ESS default R history to a permanent file so > > that ESS does not generate .Rhistory everywhere. I tried both > > > > (setq ess-history-directory "~/.R/history") > > > > and > > > > (setq ess-history-file "~/.R/history/.Rhistory") > > If I recall correctly, it's because of the way the ess-history-file > variable is set in the ESS code. The following works for me: > > (defun ei-no-rhistory () > (setq ess-history-file "/dev/null")) > > (add-hook 'inferior-ess-mode-hook 'ei-no-rhistory) * completion of functions within buffers From: Stephen Eglen To: ESS-help@stat.math.ethz.ch Date: Tue, 22 Jun 2010 14:00:25 +0100 Cc: Stephen Eglen Subject: [ESS] request for comments: completion within .R buffers Sender: ess-help-bounces@stat.math.ethz.ch Rodney recently kindly polled ess-help, and a summary of the results can be seen in the SVN sources at: https://svn.r-project.org/ESS/trunk/rsn.txt One thing that came up was (thanks Ista Zhan): Function/variable completion in script files (maybe this already is supposed to work, but for me completion only works in interactive sessions). Below is some suggested code to implement this, based on a hint from Deepayan. If you press TAB at the start of the line, you still get standard indentation, but if you are already typing something, e.g. write.t then hitting TAB will complete to write.table Hitting TAB again, will then bring up a *Completions* window showing (for me): Possible completions are: write.table write.table0 I don't like the *Completions* window hanging around, but apart from that, is that the sort of completion people would like? Erik Iverson mentioned something related: I think ESS is very feature complete at this point. The only thing I've looked at that seems interesting is some sort of 'intellisense' feature that uses R's built-in completion mechanism to temporarily display available completions using something like company-mode, autocomplete, or completion-ui. I had at one point something that almost worked, but I believe the library it was built in, company-mode, has now changed significantly. but I've not explored those options. Code/ideas welcome! Stephen ---------------------------------------------------------------------- (defun ess-indent-or-complete (&optional whole-exp) (interactive "P") "Function bound to TAB key in R mode buffers. If at the start of the line, or numeric prefix provided, call `ess-indent-command', otherwise try to complete object at point." (if (or whole-exp (save-excursion (skip-chars-backward " \t") (bolp))) (ess-indent-command whole-exp) (ess-complete-object-name))) (add-hook 'ess-mode-hook '(lambda () (local-set-key "\t" 'ess-indent-or-complete))) * ess-eldoc.el ** Switch to use R-mode-hook, rather than ess-mode-hook ** Document in the info node. * Debugger Would like to implement a debugger akin to Norm Matloff's work: http://cran.r-project.org/web/packages/edtdbg/index.html http://www.stats.uwo.ca/faculty/murdoch/software/debuggingR/ Norm posted that he had started work on ESS, but had to abandon it. * Comint so slow? ess-eval-visibly-p should be t again. Why is comint so slow when passing code line by line? Markus Triska recently looked at this: To: ess-help@stat.math.ethz.ch connect(): No such file or directory From: Markus Triska Date: Sun, 16 May 2010 13:59:57 +0200 Subject: Re: [ESS] ESS on Mac slower than R.app? Sender: ess-help-bounces@stat.math.ethz.ch Hi Rodney, Rodney Sparapani writes: > I think if you update to the latest version of ESS this problem will > go away. See the previous discussion of a very similar GNU Emacs bug > fix at https://stat.ethz.ch/pipermail/ess-bugs/2009q4/000584.html I think ess-eval-visibly-p should remain true by default, as it is quite useful. If you change the accept-process-output call in ess-eval-linewise to: (accept-process-output sprocess 0 timeout-ms) (the difference being that you explicitly state to wait for input from "sprocess"), the test case works instantly also with ess-eval-visibly-p. All the best, Markus * Funny indentation if semicolon follows brace: From: Stephen Eglen To: Paul Burkander Comments: In-reply-to Paul Burkander message dated "Sat, 04 Jun 2011 10:17:03 -0400." Date: Mon, 06 Jun 2011 10:35:27 +0100 Cc: ess-help@r-project.org Subject: Re: [ESS] ess-indent-exp follow OWN style? Sender: ess-help-bounces@r-project.org > I think it must be ess-electric-brace, and I think it warrants a bug report. > > The behavior is the same in R and Stata (though I don't know if it > would ever come up in R) > > Typing any line (excluding comments) that ends in { sets the > indentation of the next line to ess-indent-level > Typing any line (excluding comments) that ends in {; sets the > indentation of the next line to so that the first character is below > the preceding semicolon. > > I know basically nothing about Lisp, otherwise I'd like to try to > debug this thing.  It seems like an important replicable issue that > warrants a bug report. Thanks; I can see this behaviour in R mode. As I don't think its a common idiom in R to write something like for (i in seq) {; ... I'm afraid its not high enough on my priority list to fix right now (sorry, too many other things already need fixing in ESS), but I will make a note of it. Is this biting other users? Stephen ** is ess-electric-brace working okay? should reindent line? * Handing the *ESS* buffer Is the *ESS* buffer necessary for end users? If not, have a toggle to switch it off. From: Stephen Eglen Date: Mon, 6 Jun 2011 22:12:08 +0100 > Re: the *ESS* buffer, how much of a pain is it? I recall also > finding it a bit offputting seeing this many years ago, and in all > my years of developing ESS, I for one have yet to find reason of > inspecting it! I imagine other developers may differ -- but one > thing I could suggest to other core members is having a variable > to inhibit this buffer? This could be as simple as having a variable ess-dribble-buffer which if nil, means that the buffer is not created, otherwise, the variable contains (as a string) the name of the buffer to use, which defaults to "*ESS*". It could even be " *ESS*" so that it doesn't appear in buffer lists, but is there and will be included into reports generated by ess-submit-bug-report. * Add ess-r-versions-list Subject: Re: [ESS] Customisation of ess-r-versions or ess-r-versions-list From: John Maindonald Date: Thu, 18 Aug 2011 10:19:44 +1000 Cc: ess-help@stat.math.ethz.ch To: Stephen Eglen On 18/08/2011, at 5:38 AM, Stephen Eglen wrote: >> Yes, >> (setq ess-s-versions-list >> '( ("R64" "/usr/bin/R64") >> ("R32" "/usr/bin/R32"))) >> works. The buffer for R64 is however called *S+6*. No doubt there is >> some variable that one can set that will fix this; I have not >> investigated. > I don't recall ever doing this for R, but this was quite a few years > ago. Did it ever work for you in earlier versions of ESS? The lines that I had commented out had 'ess-r-versions-list'. If this variable has never been available, this would be something that I tried by analogy with 'ess-s-versions-list' and never did work. If 'ess-s-versions-list' is to stay, it would seem to be cleanest to have a matching 'ess-r-versions-list' also, following the precedent of 'ess-s-versions' and 'ess-r-versions'. An advantage of this way of doing things (an 'ess-r-versions-list'), for some users at least, is that it is explicit about the command line statement that is invoked. > One can have defvar in place of setq. Does it matter which one uses? > Better to use setq -- as it will always update the value. By contrast: > > (defvar apple 1) > (defvar apple 2) > > Evaluate both lines above, in order, and check "apple" -- it has the > value 1. > > Stephen John Maindonald email: john.maindonald@anu.edu.au phone : +61 2 (6125)3473 fax : +61 2(6125)5549 Centre for Mathematics & Its Applications, Room 1194, John Dedman Mathematical Sciences Building (Building 27) Australian National University, Canberra ACT 0200. http://www.maths.anu.edu.au/~johnm * Toolbar is missing from file.Rt transcript buffers Add toolbar? ess-17.11/etc/slow-long-output.R0000644005071500004540000000437613202324174013430 00000000000000### Example modified from Paul Johnson's post to ESS-help, Nov.25, 2013 op <- options("max.print") ##' construct (random) character vector of length n, of about 10 characters each mkCh <- function(n) { if(getOption("max.print") <= n) options(max.print = n + 1) ## <- if(n == 10) stop("error's message with apostrophe - work's in developer mode") N <- pmin(26,pmax(1, rpois(n, 10))) cbind(vapply(N, function(m) paste(sample(letters, m), collapse=""), "")) } set.seed(1) y <- mkCh(9999) system.time(print(y)) ## R CMD BATCH slow-long-output.R && grep -A 1 -B 1 '^ *user *sys' slow-long-output.Rout ## user system elapsed ## 0.059 0.010 0.070 -- MM@lynne R CMD BATCH ## 0.040 0.014 12.762 -- MM@lynne(2015) ESS 15.09-1 [git: dd226e2027..] ## 0.027 0.027 1.945 -- MM@lynne(2015) ESS 14.09 [svn: 6041] ## 0.120 0.138 3.225 -- MM@lynne(2013-12) ESS 13.09-1 [svn: 5930] ##--- ## 0.124 0.097 52.540 -- MM@lynne ESS svn r 5909; incl font-locking, tracebug ## 0.128 0.080 57.305 ditto ## 0.139 0.088 54.770 -- sfs@lynne ESS 13.09 (emacs 24.3.1 GTK+) ## -- ## 0.102 0.075 4.685 -- MM@lynne ESS 5.14 (emacs 24.3.1 incl font-lock!) ## 0.091 0.078 4.683 -- " ESS 12.04-4 [rev. 4896 (2012-06-07)] ## 0.123 0.063 4.638 -- " ESS 12.09-2 [rev. 5395 (2013-01-10)] ## 0.117 0.118 3.358 -- " ESS 13.05 [rev. 5574 (2013-05-14)] ## ^^^^^ clearly a bit faster ! set.seed(23456) y <- mkCh(50000) system.time(print(y)) ## user system elapsed ## 0.255 0.089 0.345 -- BATCH MM@lynne ## 0.035 0.138 27.935 -- MM@lynne(2015) ESS 15.09-1 [git: dd226e2027..] ## .... but sometimes also fast, or considerably slower: ## 0.049 0.112 1.037 ## 0.036 0.129 103.253 ## 0.157 0.107 11.356 -- MM@lynne(2015) ESS 14.09 [svn: 6041] ## 0.685 0.369 1664.557 -- MM@lynne ESS svn r 5909 ... ## 0.760 0.398 1643.608 -- ..@lynne ESS 13.09 ## 0.590 0.510 33.349 -- " ESS 13.05 [rev. 5574 (2013-05-14)] ## 0.565 0.548 28.251 " " ## 0.598 0.450 27.804 " " ## Don't even think of trying this with ESS, currently: y <- mkCh(200000) system.time(print(y)) ## user system elapsed ## 1.013 0.284 1.300 -- BATCH MM@lynne options(op) ess-17.11/etc/.IS.RELEASE0000644005071500004540000000000013202324211011365 00000000000000ess-17.11/etc/git-ref0000644005071500004540000000001513202324211011260 00000000000000d03efb64579f ess-17.11/fontlock-test/0000755005071500004540000000000013202324174012115 500000000000000ess-17.11/fontlock-test/baseball.sas0000644005071500004540000007242313202324174014322 00000000000000/* The BASEBALL Data Set: Baseball Data */ /* The BASEBALL data set contains variables that measure batting and fielding performance for 322 regular and substitute hitters in the 1986 year, their career performance statistics, and their salary at the start of the 1987 season. NAME: hitter's name ATBAT: times at bat HITS: hits HOMER: home runs RUNS: runs RBI: runs batted in WALKS: walks YEARS: years in the major leagues ATBATC: career times at bat HITSC: career hits HOMERC: career home runs RUNSC: career runs scored RBIC: career runs batted in POSITION: player's position PUTOUTS: put outs ASSISTS: assists ERRORS: errors SALARY: annual salary, expressed in units of $1,000 BATAVG: batting average, calculated as 1,000*(HITS/ATBAT) BATAVGC: career batting average, calculated as 1,000*(HITSC/ATBATC) */ Title 'Baseball Hitters Data'; /* Formats to specify the coding of some of the variables */ proc format; value $league 'N' ='National' 'A' ='American'; value $team 'ATL'='Atlanta ' 'BAL'='Baltimore ' 'BOS'='Boston ' 'CAL'='California ' 'CHA'='Chicago A ' 'CHN'='Chicago N ' 'CIN'='Cincinnati ' 'CLE'='Cleveland ' 'DET'='Detroit ' 'HOU'='Houston ' 'KC '='Kansas City ' 'LA '='Los Angeles ' 'MIL'='Milwaukee ' 'MIN'='Minnesota ' 'MON'='Montreal ' 'NYA'='New York A ' 'NYN'='New York N ' 'OAK'='Oakland ' 'PHI'='Philadelphia ' 'PIT'='Pittsburgh ' 'SD '='San Diego ' 'SEA'='Seattle ' 'SF '='San Francisco' 'STL'='St. Louis ' 'TEX'='Texas ' 'TOR'='Toronto '; value $posfmt '1B' = 'First Base' '2B' = 'Second Base' 'SS' = 'Short Stop' '3B' = 'Third Base' 'RF' = 'Right Field' 'CF' = 'Center Field' 'LF' = 'Left Field' 'C ' = 'Catcher' 'DH' = 'Designated Hitter' 'OF' = 'Outfield' 'UT' = 'Utility' 'OS' = 'Outfield & Short Stop' '3S' = 'Third Base & Short Stop' '13' = 'First & Third Base' '3O' = 'Third Base & Outfield' 'O1' = 'Outfield & First Base' 'S3' = 'Short Stop & Third Base' '32' = 'Third & Second Base' 'DO' = 'Designated Hitter & Outfield' 'OD' = 'Outfield & Designated Hitter' 'CD' = 'Catcher & Designated Hitter' 'CS' = 'Catcher & Short Stop' '23' = 'Second & Third Base' '1O' = 'First Base and Outfield' '2S' = 'Second Base and Short Stop'; /* Recode position to short list */ value $pos 'CS','CD' ='C ' 'OS','O1','OD' ='OF' 'CF','RF','LF' ='OF' '1O','13' ='1B' '2S','23' ='2B' 'DO' ='DH' 'S3' ='SS' '32','3S','3O' ='3B' ; data baseball; input name $1-14 league $15 team $16-18 position $19-20 atbat 3. hits 3. homer 3. runs 3. rbi 3. walks 3. years 3. atbatc 5. hitsc 4. homerc 4. runsc 4. rbic 4. walksc 4. putouts 4. assists 3. errors 3. salary 4.; batavg = round(1000 * (hits / atbat)); batavgc= round(1000 * (hitsc/ atbatc)); label name = "Hitter's name" atbat = 'Times at Bat' hits = 'Hits' homer = 'Home Runs' runs = 'Runs' rbi = 'Runs Batted In' walks = 'Walks' years = 'Years in the Major Leagues' atbatc = 'Career Times at Bat' hitsc = 'Career Hits' homerc = 'Career Home Runs' runsc = 'Career Runs Scored' rbic = 'Career Runs Batted In' position= 'Position(s)' putouts = 'Put Outs' assists = 'Assists' errors = 'Errors' salary = 'Salary (in 1000$)' batavg = 'Batting Average' batavgc = 'Career Batting Average'; cards; Andy Allanson ACLEC 293 66 1 30 29 14 1 293 66 1 30 29 14 446 33 20 . Alan Ashby NHOUC 315 81 7 24 38 39 14 3449 835 69 321 414 375 632 43 10 475 Alvin Davis ASEA1B479130 18 66 72 76 3 1624 457 63 224 266 263 880 82 14 480 Andre Dawson NMONRF496141 20 65 78 37 11 56281575 225 828 838 354 200 11 3 500 A Galarraga NMON1B321 87 10 39 42 30 2 396 101 12 48 46 33 805 40 4 92 A Griffin AOAKSS594169 4 74 51 35 11 44081133 19 501 336 194 282421 25 750 Al Newman NMON2B185 37 1 23 8 21 2 214 42 1 30 9 24 76127 7 70 A Salazar AKC SS298 73 0 24 24 7 3 509 108 0 41 37 12 121283 9 100 Andres Thomas NATLSS323 81 6 26 32 8 2 341 86 6 32 34 8 143290 19 75 A Thornton ACLEDH401 92 17 49 66 65 13 52061332 253 784 890 866 0 0 01100 Alan Trammell ADETSS574159 21107 75 59 10 46311300 90 702 504 488 238445 22 517 Alex Trevino NLA C 202 53 4 31 26 27 9 1876 467 15 192 186 161 304 45 11 513 A Van.Slyke NSTLRF418113 13 48 61 47 4 1512 392 41 205 204 203 211 11 7 550 Alan Wiggins ABAL2B239 60 0 30 11 22 6 1941 510 4 309 103 207 121151 6 700 Bill Almon NPITUT196 43 7 29 27 30 13 3231 825 36 376 290 238 80 45 8 240 Billy Beane AMINOF183 39 3 20 15 11 3 201 42 3 20 16 11 118 0 0 . Buddy Bell NCIN3B568158 20 89 75 73 15 80682273 1771045 993 732 105290 10 775 B Biancalana AKC SS190 46 2 24 8 15 5 479 102 5 65 23 39 102177 16 175 Bruce Bochte AOAK1B407104 6 57 43 65 12 52331478 100 643 658 653 912 88 9 . Bruce Bochy NSD C 127 32 8 16 22 14 8 727 180 24 67 82 56 202 22 2 135 Barry Bonds NPITCF413 92 16 72 48 65 1 413 92 16 72 48 65 280 9 5 100 Bobby Bonilla ACHAO1426109 3 55 43 62 1 426 109 3 55 43 62 361 22 2 115 Bob Boone ACALC 22 10 1 4 2 1 6 84 26 2 9 9 3 812 84 11 . Bob Brenly NSF C 472116 16 60 62 74 6 1924 489 67 242 251 240 518 55 3 600 Bill Buckner ABOS1B629168 18 73102 40 18 84242464 16410081072 4021067157 14 777 Brett Butler ACLECF587163 4 92 51 70 6 2695 747 17 442 198 317 434 9 3 765 Bob Dernier NCHNCF324 73 4 32 18 22 7 1931 491 13 291 108 180 222 3 3 708 Bo Diaz NCINC 474129 10 50 56 40 10 2331 604 61 246 327 166 732 83 13 750 Bill Doran NHOU2B550152 6 92 37 81 5 2308 633 32 349 182 308 262329 16 625 Brian Downing ACALLF513137 20 90 95 90 14 52011382 166 763 734 784 267 5 3 900 Bobby Grich ACAL2B313 84 9 42 30 39 17 68901833 2241033 8641087 127221 7 . Billy Hatcher NHOUCF419108 6 55 36 22 3 591 149 8 80 46 31 226 7 4 110 Bob Horner NATL1B517141 27 70 87 52 9 3571 994 215 545 652 3371378102 8 . Brook Jacoby ACLE3B583168 17 83 80 56 5 1646 452 44 219 208 136 109292 25 613 Bob Kearney ASEAC 204 49 6 23 25 12 7 1309 308 27 126 132 66 419 46 5 300 Bill Madlock NLA 3B379106 10 38 60 30 14 62071906 146 859 803 571 72170 24 850 Bobby Meacham ANYASS161 36 0 19 10 17 4 1053 244 3 156 86 107 70149 12 . Bob Melvin NSF C 268 60 5 24 25 15 2 350 78 5 34 29 18 442 59 6 90 Ben Oglivie AMILDH346 98 5 31 53 30 16 59131615 235 784 901 560 0 0 0 . Bip Roberts NSD 2B241 61 1 34 12 14 1 241 61 1 34 12 14 166172 10 . B Robidoux AMIL1B181 41 1 15 21 33 2 232 50 4 20 29 45 326 29 5 68 Bill Russell NLA UT216 54 0 21 18 15 18 73181926 46 796 627 483 103 84 5 . Billy Sample NATLOF200 57 6 23 14 14 9 2516 684 46 371 230 195 69 1 1 . B Schroeder AMILUT217 46 7 32 19 9 4 694 160 32 86 76 32 307 25 1 180 Butch Wynegar ANYAC 194 40 7 19 29 30 11 41831069 64 486 493 608 325 22 2 . Chris Bando ACLEC 254 68 2 28 26 22 6 999 236 21 108 117 118 359 30 4 305 Chris Brown NSF 3B416132 7 57 49 33 3 932 273 24 113 121 80 73177 18 215 C Castillo ACLEOD205 57 8 34 32 9 5 756 192 32 117 107 51 58 4 4 248 Cecil Cooper AMIL1B542140 12 46 75 41 16 70992130 235 9871089 431 697 61 9 . Chili Davis NSF RF526146 13 71 70 84 6 2648 715 77 352 342 289 303 9 9 815 Carlton Fisk ACHAC 457101 14 42 63 22 17 65211767 2811003 977 619 389 39 4 875 Curt Ford NSTLOF214 53 2 30 29 23 2 226 59 2 32 32 27 109 7 3 70 Cliff Johnson ATORDH 19 7 0 1 2 1 4 41 13 1 3 4 4 0 0 0 . C Lansford AOAK3B591168 19 80 72 39 9 44781307 113 634 563 319 67147 41200 Chet Lemon ADETCF403101 12 45 53 39 12 51501429 166 747 666 526 316 6 5 675 C Maldonado NSF OF405102 18 49 85 20 6 950 231 29 99 138 64 161 10 3 415 C Martinez NSD O1244 58 9 28 25 35 4 1335 333 49 164 179 194 142 14 2 340 Charlie Moore AMILC 235 61 3 24 39 21 14 39261029 35 441 401 333 425 43 4 . C Reynolds NHOUSS313 78 6 32 41 12 12 3742 968 35 409 321 170 106206 7 417 Cal Ripken ABALSS627177 25 98 81 70 6 3210 927 133 529 472 313 240482 131350 Cory Snyder ACLEOS416113 24 58 69 16 1 416 113 24 58 69 16 203 70 10 90 Chris Speier NCHN3S155 44 6 21 23 15 16 66311634 98 698 661 777 53 88 3 275 C Wilkerson ATEX2S236 56 0 27 15 11 4 1115 270 1 116 64 57 125199 13 230 Dave Anderson NLA 3S216 53 1 31 15 22 4 926 210 9 118 69 114 73152 11 225 Doug Baker AOAKOF 24 3 0 1 0 2 3 159 28 0 20 12 9 80 4 0 . Don Baylor ABOSDH585139 31 93 94 62 17 75461982 31511411179 727 0 0 0 950 D Bilardello NMONC 191 37 4 12 17 14 4 773 163 16 61 74 52 391 38 8 . Daryl Boston ACHACF199 53 5 29 22 21 3 514 120 8 57 40 39 152 3 5 75 Darnell Coles ADET3B521142 20 67 86 45 4 815 205 22 99 103 78 107242 23 105 Dave Collins ADETLF419113 1 44 27 44 12 44841231 32 612 344 422 211 2 1 . D Concepcion NCINUT311 81 3 42 30 26 17 82472198 100 950 909 690 153223 10 320 D Daulton NPHIC 138 31 8 18 21 38 3 244 53 12 33 32 55 244 21 4 . Doug DeCinces ACAL3B512131 26 69 96 52 14 53471397 221 712 815 548 119216 12 850 Darrell Evans ADET1B507122 29 78 85 91 18 77611947 347117511521380 808108 2 535 Dwight Evans ABOSRF529137 26 86 97 97 15 66611785 2911082 949 989 280 10 5 933 Damaso Garcia ATOR2B424119 6 57 46 13 9 36511046 32 461 301 112 224286 8 850 Dan Gladden NSF CF351 97 4 55 29 39 4 1258 353 16 196 110 117 226 7 3 210 Danny Heep NNYNOF195 55 5 24 33 30 8 1313 338 25 144 149 153 83 2 1 . D Henderson ASEAOF388103 15 59 47 39 6 2174 555 80 285 274 186 182 9 4 325 Donnie Hill AOAK23339 96 4 37 29 23 4 1064 290 11 123 108 55 104213 9 275 Dave Kingman AOAKDH561118 35 70 94 33 16 66771575 442 9011210 608 463 32 8 . Davey Lopes NCHN3O255 70 7 49 35 43 15 63111661 1541019 608 820 51 54 8 450 Don Mattingly ANYA1B677238 31117113 53 5 2223 737 93 349 401 1711377100 61975 Darryl Motley AKC RF227 46 7 23 20 12 5 1325 324 44 156 158 67 92 2 2 . Dale Murphy NATLCF614163 29 89 83 75 11 50171388 266 813 822 617 303 6 61900 Dwayne Murphy AOAKCF329 83 9 50 39 56 9 3828 948 145 575 528 635 276 6 2 600 Dave Parker NCINRF637174 31 89116 56 14 67272024 247 9781093 495 278 9 91042 Dan Pasqua ANYALF280 82 16 44 45 47 2 428 113 25 61 70 63 148 4 2 110 D Porter ATEXCD155 41 12 21 29 22 16 54091338 181 746 805 875 165 9 1 260 D Schofield ACALSS458114 13 67 57 48 4 1350 298 28 160 123 122 246389 18 475 Don Slaught ATEXC 314 83 13 39 46 16 5 1457 405 28 156 159 76 533 40 4 432 D Strawberry NNYNRF475123 27 76 93 72 4 1810 471 108 292 343 267 226 10 61220 Dale Sveum AMIL3B317 78 7 35 35 32 1 317 78 7 35 35 32 45122 26 70 D Tartabull ASEARF511138 25 76 96 61 3 592 164 28 87 110 71 157 7 8 145 Dickie Thon NHOUSS278 69 3 24 21 29 8 2079 565 32 258 192 162 142210 10 . Denny Walling NHOU3B382119 13 54 58 36 12 2133 594 41 287 294 227 59156 9 595 Dave Winfield ANYARF565148 24 90104 77 14 72872083 30511351234 791 292 9 51861 Enos Cabell NLA 1B277 71 2 27 29 14 15 59521647 60 753 596 259 360 32 5 . Eric Davis NCINLF415115 27 97 71 68 3 711 184 45 156 119 99 274 2 7 300 Eddie Milner NCINCF424110 15 70 47 36 7 2130 544 38 335 174 258 292 6 3 490 Eddie Murray ABAL1B495151 17 61 84 78 10 56241679 275 8841015 7091045 88 132460 Ernest Riles AMILSS524132 9 69 47 54 2 972 260 14 123 92 90 212327 20 . Ed Romero ABOSSS233 49 2 41 23 18 8 1350 336 7 166 122 106 102132 10 375 Ernie Whitt ATORC 395106 16 48 56 35 10 2303 571 86 266 323 248 709 41 7 . Fred Lynn ABALCF397114 23 67 67 53 13 55891632 241 906 926 716 244 2 4 . Floyd Rayford ABAL3B210 37 8 15 19 15 6 994 244 36 107 114 53 40115 15 . F Stubbs NLA LF420 95 23 55 58 37 3 646 139 31 77 77 61 206 10 7 . Frank White AKC 2B566154 22 76 84 43 14 61001583 131 743 693 300 316439 10 750 George Bell ATORLF641198 31101108 41 5 2129 610 92 297 319 117 269 17 101175 Glenn Braggs AMILLF215 51 4 19 18 11 1 215 51 4 19 18 11 116 5 12 70 George Brett AKC 3B441128 16 70 73 80 14 66752095 20910721050 695 97218 161500 Greg Brock NLA 1B325 76 16 33 52 37 5 1506 351 71 195 219 214 726 87 3 385 Gary Carter NNYNC 490125 24 81105 62 13 60631646 271 847 999 680 869 62 81926 Glenn Davis NHOU1B574152 31 91101 64 3 985 260 53 148 173 951253111 11 215 George Foster NNYNLF284 64 14 30 42 24 18 70231925 348 9861239 666 96 4 4 . Gary Gaetti AMIN3B596171 34 91108 52 6 2862 728 107 361 401 224 118334 21 900 Greg Gagne AMINSS472118 12 63 54 30 4 793 187 14 102 80 50 228377 26 155 G Hendrick ACALOF283 77 14 45 47 26 16 68401910 259 9151067 546 144 6 5 700 Glenn Hubbard NATL2B408 94 4 42 36 66 9 3573 866 59 429 365 410 282487 19 535 Garth Iorg ATOR32327 85 3 30 44 20 8 2140 568 16 216 208 93 91185 12 363 Gary Matthews NCHNLF370 96 21 49 46 60 15 69861972 2311070 955 921 137 5 9 733 Graig Nettles NSD 3B354 77 16 36 55 41 20 87162172 384117212671057 83174 16 200 Gary Pettis ACALCF539139 5 93 58 69 5 1469 369 12 247 126 198 462 9 7 400 Gary Redus NPHILF340 84 11 62 33 47 5 1516 376 42 284 141 219 185 8 4 400 G Templeton NSD SS510126 2 42 44 35 11 55621578 44 703 519 256 207358 20 738 Gorman Thomas ASEADH315 59 16 45 36 58 13 46771051 268 681 782 697 0 0 0 . Greg Walker ACHA1B282 78 13 37 51 29 5 1649 453 73 211 280 138 670 57 5 500 Gary Ward ATEXLF380120 5 54 51 31 8 3118 900 92 444 419 240 237 8 1 600 Glenn Wilson NPHIRF584158 15 70 84 42 5 2358 636 58 265 316 134 331 20 4 663 Harold Baines ACHARF570169 21 72 88 38 7 37541077 140 492 589 263 295 15 5 950 Hubie Brooks NMONSS306104 14 50 58 25 7 2954 822 55 313 377 187 116222 15 750 H Johnson NNYN3S220 54 10 30 39 31 5 1185 299 40 145 154 128 50136 20 298 Hal McRae AKC DH278 70 7 22 37 18 18 71862081 190 9351088 643 0 0 0 325 H Reynolds ASEA2B445 99 1 46 24 29 4 618 129 1 72 31 48 278415 16 88 Harry Spilman NSF 1B143 39 5 18 30 15 9 639 151 16 80 97 61 138 15 1 175 H Winningham NMONOF185 40 4 23 11 18 3 524 125 7 58 37 47 97 2 2 90 J Barfield ATORRF589170 40107108 69 6 2325 634 128 371 376 238 368 20 31238 Juan Beniquez ABALUT343103 6 48 36 40 15 43381193 70 581 421 325 211 56 13 430 Juan Bonilla ABAL2B284 69 1 33 18 25 5 1407 361 6 139 98 111 122140 5 . J Cangelosi ACHALF438103 2 65 32 71 2 440 103 2 67 32 71 276 7 9 100 Jose Canseco AOAKLF600144 33 85117 65 2 696 173 38 101 130 69 319 4 14 165 Joe Carter ACLERF663200 29108121 32 4 1447 404 57 210 222 68 241 8 6 250 Jack Clark NSTL1B232 55 9 34 23 45 12 44051213 194 702 705 625 623 35 31300 Jose Cruz NHOULF479133 10 48 72 55 17 74722147 153 9801032 854 237 5 4 773 Julio Cruz ACHA2B209 45 0 38 19 42 10 3859 916 23 557 279 478 132205 5 . Jody Davis NCHNC 528132 21 61 74 41 6 2641 671 97 273 383 226 885105 81008 Jim Dwyer ABALDO160 39 8 18 31 22 14 2128 543 56 304 268 298 33 3 0 275 Julio Franco ACLESS599183 10 80 74 32 5 2482 715 27 330 326 158 231374 18 775 Jim Gantner AMIL2B497136 7 58 38 26 11 38711066 40 450 367 241 304347 10 850 Johnny Grubb ADETDH210 70 13 32 51 28 15 40401130 97 544 462 551 0 0 0 365 J Hairston ACHAUT225 61 5 32 26 26 11 1568 408 25 202 185 257 132 9 0 . Jack Howell ACAL3B151 41 4 26 21 19 2 288 68 9 45 39 35 28 56 2 95 John Kruk NSD LF278 86 4 33 38 45 1 278 86 4 33 38 45 102 4 2 110 J Leonard NSF LF341 95 6 48 42 20 10 2964 808 81 379 428 221 158 4 5 100 Jim Morrison NPIT3B537147 23 58 88 47 10 2744 730 97 302 351 174 92257 20 278 John Moses ASEACF399102 3 56 34 34 5 670 167 4 89 48 54 211 9 3 80 J Mumphrey NCHNOF309 94 5 37 32 26 13 46181330 57 616 522 436 161 3 3 600 Joe Orsulak NPITRF401100 2 60 19 28 4 876 238 2 126 44 55 193 11 4 . Jorge Orta AKC DH336 93 9 35 46 23 15 57791610 128 730 741 497 0 0 0 . Jim Presley ASEA3B616163 27 83107 32 3 1437 377 65 181 227 82 110308 15 200 Jamie Quirk AKC CS219 47 8 24 26 17 12 1188 286 23 100 125 63 260 58 4 . Johnny Ray NPIT2B579174 7 67 78 58 6 3053 880 32 366 337 218 280479 5 657 Jeff Reed AMINC 165 39 2 13 9 16 3 196 44 2 18 10 18 332 19 2 75 Jim Rice ABOSLF618200 20 98110 62 13 71272163 35111041289 564 330 16 82413 Jerry Royster NSD UT257 66 5 31 26 32 14 3910 979 33 518 324 382 87166 14 250 John Russell NPHIC 315 76 13 35 60 25 3 630 151 24 68 94 55 498 39 13 155 Juan Samuel NPHI2B591157 16 90 78 26 4 2020 541 52 310 226 91 290440 25 640 John Shelby ABALOF404 92 11 54 49 18 6 1354 325 30 188 135 63 222 5 5 300 Joel Skinner ACHAC 315 73 5 23 37 16 4 450 108 6 38 46 28 227 15 3 110 Jeff Stone NPHIOF249 69 6 32 19 20 4 702 209 10 97 48 44 103 8 2 . Jim Sundberg AKC C 429 91 12 41 42 57 13 55901397 83 578 579 644 686 46 4 825 Jim Traber ABALUT212 54 13 28 44 18 2 233 59 13 31 46 20 243 23 5 . Jose Uribe NSF SS453101 3 46 43 61 3 948 218 6 96 72 91 249444 16 195 Jerry Willard AOAKC 161 43 4 17 26 22 3 707 179 21 77 99 76 300 12 2 . J Youngblood NSF OF184 47 5 20 28 18 11 3327 890 74 419 382 304 49 2 0 450 Kevin Bass NHOURF591184 20 83 79 38 5 1689 462 40 219 195 82 303 12 5 630 Kal Daniels NCINOF181 58 6 34 23 22 1 181 58 6 34 23 22 88 0 3 87 Kirk Gibson ADETRF441118 28 84 86 68 8 2723 750 126 433 420 309 190 2 21300 Ken Griffey ANYAOF490150 21 69 58 35 14 61261839 121 983 707 600 96 5 31000 K Hernandez NNYN1B551171 13 94 83 94 13 60901840 128 969 900 9171199149 51800 Kent Hrbek AMIN1B550147 29 85 91 71 6 2816 815 117 405 474 3191218104 101310 Ken Landreaux NLA OF283 74 4 34 29 22 10 39191062 85 505 456 283 145 5 7 738 K McReynolds NSD CF560161 26 89 96 66 4 1789 470 65 233 260 155 332 9 8 625 K Mitchell NNYNOS328 91 12 51 43 33 2 342 94 12 51 44 33 145 59 8 125 K Moreland NCHNRF586159 12 72 79 53 9 3082 880 83 363 477 295 181 13 41043 Ken Oberkfell NATL3B503136 5 62 48 83 10 3423 970 20 408 303 414 65258 8 725 Ken Phelps ASEADH344 85 24 69 64 88 7 911 214 64 150 156 187 0 0 0 300 Kirby Puckett AMINCF680223 31119 96 34 3 1928 587 35 262 201 91 429 8 6 365 K Stillwell NCINSS279 64 0 31 26 30 1 279 64 0 31 26 30 107205 16 75 Leon Durham NCHN1B484127 20 66 65 67 7 3006 844 116 436 458 3771231 80 71183 Len Dykstra NNYNCF431127 8 77 45 58 2 667 187 9 117 64 88 283 8 3 203 Larry Herndon ADETOF283 70 8 33 37 27 12 44791222 94 557 483 307 156 2 2 225 Lee Lacy ABALRF491141 11 77 47 37 15 42911240 84 615 430 340 239 8 2 525 Len Matuszek NLA O1199 52 9 26 28 21 6 805 191 30 113 119 87 235 22 5 265 Lloyd Moseby ATORCF589149 21 89 86 64 7 3558 928 102 513 471 351 371 6 6 788 Lance Parrish ADETC 327 84 22 53 62 38 10 42731123 212 577 700 334 483 48 6 800 Larry Parrish ATEXDH464128 28 67 94 52 13 58291552 210 740 840 452 0 0 0 588 Luis Rivera NMONSS166 34 0 20 13 17 1 166 34 0 20 13 17 64119 9 . Larry Sheets ABALDH338 92 18 42 60 21 3 682 185 36 88 112 50 0 0 0 145 Lonnie Smith AKC LF508146 8 80 44 46 9 3148 915 41 571 289 326 245 5 9 . Lou Whitaker ADET2B584157 20 95 73 63 10 47041320 93 724 522 576 276421 11 420 Mike Aldrete NSF 1O216 54 2 27 25 33 1 216 54 2 27 25 33 317 36 1 75 Marty Barrett ABOS2B625179 4 94 60 65 5 1696 476 12 216 163 166 303450 14 575 Mike Brown NPITOF243 53 4 18 26 27 4 853 228 23 101 110 76 107 3 3 . Mike Davis AOAKRF489131 19 77 55 34 7 2051 549 62 300 263 153 310 9 9 780 Mike Diaz NPITO1209 56 12 22 36 19 2 216 58 12 24 37 19 201 6 3 90 M Duncan NLA SS407 93 8 47 30 30 2 969 230 14 121 69 68 172317 25 150 Mike Easler ANYADH490148 14 64 78 49 13 34001000 113 445 491 301 0 0 0 700 M Fitzgerald NMONC 209 59 6 20 37 27 4 884 209 14 66 106 92 415 35 3 . Mel Hall ACLELF442131 18 68 77 33 6 1416 398 47 210 203 136 233 7 7 550 M Hatcher AMINUT317 88 3 40 32 19 8 2543 715 28 269 270 118 220 16 4 . Mike Heath NSTLC 288 65 8 30 36 27 9 2815 698 55 315 325 189 259 30 10 650 Mike Kingery AKC OF209 54 3 25 14 12 1 209 54 3 25 14 12 102 6 3 68 M LaValliere NSTLC 303 71 3 18 30 36 3 344 76 3 20 36 45 468 47 6 100 Mike Marshall NLA RF330 77 19 47 53 27 6 1928 516 90 247 288 161 149 8 6 670 M Pagliarulo ANYA3B504120 28 71 71 54 3 1085 259 54 150 167 114 103283 19 175 Mark Salas AMINC 258 60 8 28 33 18 3 638 170 17 80 75 36 358 32 8 137 Mike Schmidt NPHI3B 20 1 0 0 0 0 2 41 9 2 6 7 4 78220 62127 Mike Scioscia NLA C 374 94 5 36 26 62 7 1968 519 26 181 199 288 756 64 15 875 M Tettleton AOAKC 211 43 10 26 35 39 3 498 116 14 59 55 78 463 32 8 120 Milt Thompson NPHICF299 75 6 38 23 26 3 580 160 8 71 33 44 212 1 2 140 Mitch Webster NMONCF576167 8 89 49 57 4 822 232 19 132 83 79 325 12 8 210 Mookie Wilson NNYNOF381110 9 61 45 32 7 3015 834 40 451 249 168 228 7 5 800 Marvell Wynne NSD OF288 76 7 34 37 15 4 1644 408 16 198 120 113 203 3 3 240 Mike Young ABALLF369 93 9 43 42 49 5 1258 323 54 181 177 157 149 1 6 350 Nick Esasky NCIN1B330 76 12 35 41 47 4 1367 326 55 167 198 167 512 30 5 . Ozzie Guillen ACHASS547137 2 58 47 12 2 1038 271 3 129 80 24 261459 22 175 O McDowell ATEXCF572152 18105 49 65 2 978 249 36 168 91 101 325 13 3 200 Omar Moreno NATLRF359 84 4 46 27 21 12 49921257 37 699 386 387 151 8 5 . Ozzie Smith NSTLSS514144 0 67 54 79 9 47391169 13 583 374 528 229453 151940 Ozzie Virgil NATLC 359 80 15 45 48 63 7 1493 359 61 176 202 175 682 93 13 700 Phil Bradley ASEALF526163 12 88 50 77 4 1556 470 38 245 167 174 250 11 1 750 Phil Garner NHOU3B313 83 9 43 41 30 14 58851543 104 751 714 535 58141 23 450 P Incaviglia ATEXRF540135 30 82 88 55 1 540 135 30 82 88 55 157 6 14 172 Paul Molitor AMIL3B437123 9 62 55 40 9 41391203 79 676 390 364 82170 151260 Pete O'Brien ATEX1B551160 23 86 90 87 5 2235 602 75 278 328 2731224115 11 . Pete Rose NCIN1B237 52 0 15 25 30 24140534256 160216513141566 523 43 6 750 Pat Sheridan ADETOF236 56 6 41 19 21 5 1257 329 24 166 125 105 172 1 4 190 Pat Tabler ACLE1B473154 6 61 48 29 6 1966 566 29 250 252 178 846 84 9 580 R Belliard NPITSS309 72 0 33 31 26 5 354 82 0 41 32 26 117269 12 130 Rick Burleson ACALUT271 77 5 35 29 33 12 49331358 48 630 435 403 62 90 3 450 Randy Bush AMINLF357 96 7 50 45 39 5 1394 344 43 178 192 136 167 2 4 300 Rick Cerone AMILC 216 56 4 22 18 15 12 2796 665 43 266 304 198 391 44 4 250 Ron Cey NCHN3B256 70 13 42 36 44 16 70581845 312 9651128 990 41118 81050 Rob Deer AMILRF466108 33 75 86 72 3 652 142 44 102 109 102 286 8 8 215 Rick Dempsey ABALC 327 68 13 42 29 45 18 3949 939 78 438 380 466 659 53 7 400 Rich Gedman ABOSC 462119 16 49 65 37 7 2131 583 69 244 288 150 866 65 6 . Ron Hassey ANYAC 341110 9 45 49 46 9 2331 658 50 249 322 274 251 9 4 560 R Henderson ANYACF608160 28130 74 89 8 40711182 103 862 417 708 426 4 61670 R Jackson ACALDH419101 18 65 58 92 20 95282510 548150916591342 0 0 0 488 Ricky Jones ACALRF 33 6 0 2 4 7 1 33 6 0 2 4 7 205 5 4 . Ron Kittle ACHADH376 82 21 42 60 35 5 1770 408 115 238 299 157 0 0 0 425 Ray Knight NNYN3B486145 11 51 76 40 11 39671102 67 410 497 284 88204 16 500 Randy Kutcher NSF OF186 44 7 28 16 11 1 186 44 7 28 16 11 99 3 1 . Rudy Law AKC OF307 80 1 42 36 29 7 2421 656 18 379 198 184 145 2 2 . Rick Leach ATORDO246 76 5 35 39 13 6 912 234 12 102 96 80 44 0 1 250 Rick Manning AMILOF205 52 8 31 27 17 12 51341323 56 643 445 459 155 3 2 400 R Mulliniks ATOR3B348 90 11 50 45 43 10 2288 614 43 295 273 269 60176 6 450 Ron Oester NCIN2B523135 8 52 44 52 9 3368 895 39 377 284 296 367475 19 750 Rey Quinones ABOSSS312 68 2 32 22 24 1 312 68 2 32 22 24 86150 15 70 R Ramirez NATLS3496119 8 57 33 21 7 3358 882 36 365 280 165 155371 29 875 Ronn Reynolds NPITLF126 27 3 8 10 5 4 239 49 3 16 13 14 190 2 9 190 Ron Roenicke NPHIOF275 68 5 42 42 61 6 961 238 16 128 104 172 181 3 2 191 Ryne Sandberg NCHN2B627178 14 68 76 46 6 3146 902 74 494 345 242 309492 5 740 R Santana NNYNSS394 86 1 38 28 36 4 1089 267 3 94 71 76 203369 16 250 Rick Schu NPHI3B208 57 8 32 25 18 3 653 170 17 98 54 62 42 94 13 140 Ruben Sierra ATEXOF382101 16 50 55 22 1 382 101 16 50 55 22 200 7 6 98 Roy Smalley AMINDH459113 20 59 57 68 12 53481369 155 713 660 735 0 0 0 740 R Thompson NSF 2B549149 7 73 47 42 1 549 149 7 73 47 42 255450 17 140 Rob Wilfong ACAL2B288 63 3 25 33 16 10 2682 667 38 315 259 204 135257 7 342 R Williams NLA CF303 84 4 35 32 23 2 312 87 4 39 32 23 179 5 3 . Robin Yount AMILCF522163 9 82 46 62 13 70372019 1531043 827 535 352 9 11000 Steve Balboni AKC 1B512117 29 54 88 43 6 1750 412 100 204 276 1551236 98 18 100 Scott Bradley ASEAC 220 66 5 20 28 13 3 290 80 5 27 31 15 281 21 3 90 Sid Bream NPIT1B522140 16 73 77 60 4 730 185 22 93 106 861320166 17 200 S Buechele ATEX3B461112 18 54 54 35 2 680 160 24 76 75 49 111226 11 135 S Dunston NCHNSS581145 17 66 68 21 2 831 210 21 106 86 40 320465 32 155 S Fletcher ATEXSS530159 3 82 50 47 6 1619 426 11 218 149 163 196354 15 475 Steve Garvey NSD 1B557142 21 58 81 23 18 87592583 27111381299 4781160 53 71450 Steve Jeltz NPHISS439 96 0 44 36 65 4 711 148 1 68 56 99 229406 22 150 S Lombardozzi AMIN2B453103 8 53 33 52 2 507 123 8 63 39 58 289407 6 105 Spike Owen ASEASS528122 1 67 45 51 4 1716 403 12 211 146 155 209372 17 350 Steve Sax NLA 2B633210 6 91 56 59 6 3070 872 19 420 230 274 367432 16 90 Tony Armas ABOSCF 16 2 0 1 0 0 2 28 4 0 1 0 0 247 4 8 . T Bernazard ACLE2B562169 17 88 73 53 8 3181 841 61 450 342 373 351442 17 530 Tom Brookens ADETUT281 76 3 42 25 20 8 2658 657 48 324 300 179 106144 7 342 Tom Brunansky AMINRF593152 23 69 75 53 6 2765 686 133 369 384 321 315 10 6 940 T Fernandez ATORSS687213 10 91 65 27 4 1518 448 15 196 137 89 294445 13 350 Tim Flannery NSD 2B368103 3 48 28 54 8 1897 493 9 207 162 198 209246 3 327 Tom Foley NMONUT263 70 1 26 23 30 4 888 220 9 83 82 86 81147 4 250 Tony Gwynn NSD RF642211 14107 59 52 5 2364 770 27 352 230 193 337 19 4 740 Terry Harper NATLOF265 68 8 26 30 29 7 1337 339 32 135 163 128 92 5 3 425 Toby Harrah ATEX2B289 63 7 36 41 44 17 74021954 1951115 9191153 166211 7 . Tommy Herr NSTL2B559141 2 48 61 73 8 3162 874 16 421 349 359 352414 9 925 Tim Hulett ACHA3B520120 17 53 44 21 4 927 227 22 106 80 52 70144 11 185 Terry Kennedy NSD C 19 4 1 2 3 1 1 19 4 1 2 3 1 692 70 8 920 Tito Landrum NSTLOF205 43 2 24 17 20 7 854 219 12 105 99 71 131 6 1 287 Tim Laudner AMINC 193 47 10 21 29 24 6 1136 256 42 129 139 106 299 13 5 245 Tom O'Malley ABAL3B181 46 1 19 18 17 5 937 238 9 88 95 104 37 98 9 . Tom Paciorek ATEXUT213 61 4 17 22 3 17 40611145 83 488 491 244 178 45 4 235 Tony Pena NPITC 510147 10 56 52 53 7 2872 821 63 307 340 174 810 99 181150 T Pendleton NSTL3B578138 1 56 59 34 3 1399 357 7 149 161 87 133371 20 160 Tony Perez NCIN1B200 51 2 14 29 25 23 97782732 37912721652 925 398 29 7 . Tony Phillips AOAK2B441113 5 76 52 76 5 1546 397 17 226 149 191 160290 11 425 Terry Puhl NHOUOF172 42 3 17 14 15 10 40861150 57 579 363 406 65 0 0 900 Tim Raines NMONLF580194 9 91 62 78 8 33721028 48 604 314 469 270 13 6 . Ted Simmons NATLUT127 32 4 14 25 12 19 83962402 24210481348 819 167 18 6 500 Tim Teufel NNYN2B279 69 4 35 31 32 4 1359 355 31 180 148 158 133173 9 278 Tim Wallach NMON3B480112 18 50 71 44 7 3031 771 110 338 406 239 94270 16 750 Vince Coleman NSTLLF600139 0 94 29 60 2 1236 309 1 201 69 110 300 12 9 160 Von Hayes NPHI1B610186 19107 98 74 6 2728 753 69 399 366 2861182 96 131300 Vance Law NMON2B360 81 5 37 44 37 7 2268 566 41 279 257 246 170284 3 525 Wally Backman NNYN2B387124 1 67 27 36 7 1775 506 6 272 125 194 186290 17 550 Wade Boggs ABOS3B580207 8107 71105 5 2778 978 32 474 322 417 121267 191600 Will Clark NSF 1B408117 11 66 41 34 1 408 117 11 66 41 34 942 72 11 120 Wally Joyner ACAL1B593172 22 82100 57 1 593 172 22 82 100 571222139 15 165 W Krenchicki NMON13221 53 2 21 23 22 8 1063 283 15 107 124 106 325 58 6 . Willie McGee NSTLCF497127 7 65 48 37 5 2703 806 32 379 311 138 325 9 3 700 W Randolph ANYA2B492136 5 76 50 94 12 55111511 39 897 451 875 313381 20 875 W Tolleson ACHA3B475126 3 61 43 52 6 1700 433 7 217 93 146 37113 7 385 Willie Upshaw ATOR1B573144 9 85 60 78 8 3198 857 97 470 420 3321314131 12 960 Willie Wilson AKC CF631170 9 77 44 31 11 49081457 30 775 357 249 408 4 31000 ; ess-17.11/fontlock-test/elem.sas0000644005071500004540000000025413202324174013470 00000000000000/* comment */; data test; a=1; run; Title 'Baseball Hitters Data'; /* Formats to specify the coding of some of the variables */; /* Recode position to short list */ ess-17.11/fontlock-test/runif.Rcxx0000644005071500004540000000116613202324174014032 00000000000000## -*- mode: poly-r+c++; -*- require(RcppEigen) # cxxfunction not supported # require(inline) ## runifXd <- cxxfunction(signature(arg1="integer"), plugin='RcppEigen', ## includes=' ## RNGScope scope; ## using namespace Eigen; ## inline VectorXd runifXd(int size, double a=0., double b=1.) { ## return as(runif(size, a, b)); ## }', ## body='return wrap(runifXd(as(arg1)));') cppFunction(' NumericVector runifXd(int size, double a=0., double b=1.) { return runif(size, a, b);}', depends='RcppEigen', includes=' RNGScope scope; using namespace Eigen;') runifXd(3) ess-17.11/fontlock-test/testing.sas0000644005071500004540000000172713202324174014231 00000000000000/* */ /* * ; */ * bad(news) ; /* abort; array; */ data onelevel; data two.level; data onelevel(keep=pt rename=(pt=patient)); data two.level(keep=pt rename=(pt=patient)); attrib; by; cards; cards4; delete; dm; else do; else if something then something; do; do over; drop; drop=; end; endsas; error; file; filename; footnote; footnote1; footnote10; format; go to; goto; else if; if; if something then something; if something then something do; else; else do; informat; input; keep; keep=; label; length; libname; link; lostcard; options; goptions; output; put; rename; rename=(; retain; return; skip; stop; title; title1; title10; where shhh; where=(; id; tables; window; x; class; model; var; %include; %Include; select; Select; SELECT; select(; data; Data; data=; set; merge; modify; update; run; out=; proc any data=onelevel out=two.level; proc any data=onelevel(where=(something)) out=two.level(where=(something)); when(; else do; then do; do until(; do while(; %_episode(; ess-17.11/install-sh0000644005071500004540000001124313202324174011243 00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. # # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" tranformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 ess-17.11/lisp/0000755005071500004540000000000013202324211010260 500000000000000ess-17.11/lisp/ChangeLog0000644005071500004540000050041613202324174011770 000000000000002017-01-19 Stefan Monnier * ess-toolbar.el: Remove redundant ":group 'ess-toolbar". * ess-site.el (Rd-mode-hook): Fix buffer-local setting of create-lockfiles. (ess-restore-asm-extns): Use remq instead of remassoc. * ess-rd.el (Rd-active-mark): Remove. (Rd-font): Use region-active-p instead. * ess-mode.el (ess-mode-menu): Use :help. * ess-menu.el: Remove empty file. * ess-inf.el (ess-eval-region-or-function-or-paragraph) (ess-eval-region-or-function-or-paragraph-and-step) (ess-eval-region-or-line-and-step): Use use-region-p. * ess-compat.el: Get rid of support for XEmacs and old Emacsen. 2015-11-18 * ess-sas-d.el (SAS): fix for issue #249: SAS has no prompt 2015-04-07 Stephen Eglen * ess-r-d.el (ess-prefer-higher-bit): Test code to prefer higher bit (i.e 64 bit rather than 32 bit) Rterm versions for R-newest. Should affect only Windows. 2015-03-18 Sam Steingold * ess-inf.el (ess-show-buffer-action): Add user option. (ess-show-buffer): Use it instead of a hard-coded value. 2015-01-31 Rodney Sparapani * ess-sas-a.el (ess-sas-goto-log): Added Truncated record warning to list of error messages. (ess-sas-cd): fixed bug for directories with embedded blanks; also commented out unnecessary calls to ess-sas-goto-shell because ess-sas-cd already calls ess-sas-goto-shell (ess-sas-graph-view): fixed wrong directory bug and added support for ODS 2013-12-05 Rodney Sparapani * ess-sas-a.el (ess-sas-edit-keys-toggle): the default returns to nil; indentation has improved somewhat and will probably improve a bit more in the near future 2013-10-19 Martin Maechler * ess-trns.el (ess-transcript-clean-region): use t and nil, not 1 and 0 for boolean 'buffer-read-only 2013-10-19 Rodney Sparapani * ess-r-d.el (ess--R-load-ESSR): install.packages need type='source' on Mac OS X and Windows 2013-10-13 Henning Redestig * ess-roxy.el (ess-roxy-mode-map): better key-mappings and behavior of html preview as agreed on ess-help 2013-08-30 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-defaults): added PROCs sgdesign and sgrender 2013-08-23 Rodney Sparapani * ess-sas-a.el (ess-sas-interactive): remove '< /dev/tty' 2013-07-27 Henning Redestig * ess-roxy.el (ess-roxy-mode): add interoperability with auto-fill-mode 2013-07-15 Rodney Sparapani * ess-site.el: Here is a workaround for an Emacs bug related to indirect buffers and spurious lockfiles that rears its ugly head with .Rd files http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-02/msg01368.html http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14328 2013-07-11 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-defaults): remove annoying 9.3 note/news from the comment category; it's not a one-time 9.3 specific message; it is also in 12.1 and presumably it is now eternally annoying; but we can't font-lock it since it changes with every new SAS release and it is not worth the maintenance/vigilance 2013-06-12 Rodney Sparapani * ess-sas-d.el: see discussion in the thread: "patch: identing quit statement like run statement in ess-sas" at http://article.gmane.org/gmane.emacs.ess.general/7340 2013-06-09 Stephen Eglen * ess-julia.el: Checkdoc modifications, and other whitespace cleanup. Many docstrings were missing, so I've made initial guesses at what they should be. * ess-site.el (ess-etc-directory): Remove * from docstring. Fix most points noted by checkdoc. 2013-06-07 Stephen Eglen * ess-s-l.el (S-common-cust-alist): Change default for comment-use-syntax to t. Dirk Eddelbuettel reported the follownig bug: With a line like the following in an R buffer, when M-TAB is hit on the line to add a comment, the hash within the string is interpeted as an existing comment, causing the string to be disrupted. rug( foo, col="#00000030") This is now fixed such that M-TAB would add a hash at the end of the line, allowing for a comment. 2013-04-11 Rodney Sparapani * ess-sas-a.el (ess-sas-edit-keys-toggle): `sas-indent-line' still broken (going on 15 years AFAIK) resulting in futile bug reports (and precious little bug-fixing): changing the default to t so TAB is bound to `ess-sas-tab-to-tab-stop' by default 2013-04-06 Henning Redestig * ess-s-l.el (ess-smart-S-assign): rename (ess-smart-underscore-*) to (ess-smart-S-assign-*) and create aliases to remain compatible. 2013-03-07 Rodney Sparapani * ess-custom.el/ess-sas-d.el (SAS-mode-hook): creation 2013-03-02 Henning Redestig * ess-s-l.el (ess-insert-S-assign): deleting horizontal space is not desirable when using alternative smart underscore like < (ess-smart-underscore): customizable smart underscore (ess-toggle-underscore): remove key assignments for both the default underscore and the potentially modified ess-smart-underscore-key * ess-custom.el (ess-smart-underscore-key): customizable the smart underscore 2012-12-09 Richard Heiberger * ess-tracebug.el (ess-bp-type-spec-alist): remove unnecessary "browser();" call when recover() is used. 2012-10-21 Henning Redestig * ess-roxy.el (mark-paragraph): move function advice activations to ess-r-d.el instead so that functions are not advice in all modes. This also appears to fix bug reported by Dirk Eddelbuettel. 2012-10-07 Henning Redestig * ess-roxy.el (ess-roxy-previous-entry): new behavior, ess-roxy uses the prefix string of the current block instead of only the prefix specified in ess-roxy-str 2012-10-06 Henning Redestig * ess-roxy.el (ess-roxy-hide-all): introduce new ess-roxy-re to fontify roxygen blocks that are done with different prefix than the actually used prefix 2012-09-29 Martin Maechler * ess-r-args.el (ess-r-object-tooltip): new 2012-09-13 Richard M. Heiberger * ess-site.el add new customizable variable (ess-directory-containing-R) to allow ess-r-versions-created to find R exectuables on Windows in directories other than the default install location. 2012-09-13 Richard M. Heiberger * *.el files: uniformly changed my name to "Richard M. Heiberger" and uniformly changed my email address to "rmh@temple.edu" 2012-09-06 Sam Steingold * ess-custom.el (ess-source-directory): Init as per http://stat.ethz.ch/R-manual/R-patched/library/base/html/tempfile.html from $TMPDIR, $TMP, $TEMP on all platforms. 2012-09-06 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): added PROC SETINIT 2012-08-22 Rodney Sparapani * ess-sas-a.el (ess-sas-rtf-portrait/landscape): bug-fix: make new file buffer by adding .rtf; this fixes nagging issue; also ess-sas-rtf-*-landscape replaced by ess-sas-rtf-landscape on Emacs; but Emacs and XEmacs implementations have diverged; XEmacs currently untested, continue using ess-sas-rtf-*-landscape 2012-07-23 Stephen Eglen * ess-help.el, ess-r-gui.el, ess-sas.el, ess-sp4-d.el, ess-sp6w-d.el, ess-trns.el, essd-els.el: Set `buffer-read-only' rather than using toggle-read-only (recommended by byte compiler). 2012-07-02 Martin Maechler * ess-developer.el (ess-developer-add-package): new first argument (prefix!) 'from-attached'. Essential for large list of packages on slow (e.g., NFS mounted) file systems. 2012-06-05 Stephen Eglen * ess-r-d.el (ess-dirs): Do not set ess-directory. 2012-05-21 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): add an annoying 9.3 note/news to the comment category 2012-05-15 Rodney Sparapani * ess-sas-a.el (ess-sas-goto): bug-fix; if the root of file name contains a suffix, then still goto correctly, e.g. logit.sas has log in it 2012-05-12 Martin Maechler * ess-sas-d.el: Set C-c C-w only in SAS (e.g. *not* in R). 2012-05-11 Rodney Sparapani * ess-sas-a.el (ess-sas-rtf-*): XEmacs support returns! 5.13 era functions are used if (featurep 'xemacs) otherwise, 5.14+ Emacs variants 2012-05-10 Martin Maechler * ess.el (ess-version-string): make robust against wrong/empty SVN-REVISION 2012-05-07 Martin Maechler * ess-rd.el (Rd-mode): set ess-language "S" and ess-dialect "R", so R may be autostarted, when desired. 2012-05-06 Sam Steingold * ess-site.el: Do not quote lambda expressions. * noweb-font-lock-mode.el (noweb-font-lock-fontify-chunk-by-number): Use `syntax-begin-function' when available instead of `font-lock-beginning-of-syntax-function' (obsolete in Emacs 23.3). Avoid `progn' in `cond' and some other minor code cleanup. 2012-05-05 Vitalie Spinu * ess-custom.el (inferior-STA-program-name): is now "stata" as it should be and not "env" + all the support modifications. * ess-sta-l.el (ess-help-STA-sec-keys-alist): corrections and additions to sections keys and regular expressions for STATA. * ess-s-l.el (S-common-cust-alist) * ess-sta-d.el (ess--STA-retrive-topics-from-search) (ess-get-STA-help-topics): customizable topic retrieval. Stata has same interactive facilities as R. * ess-custom.el (inferior-STA-args): customizable stata arguments. (inferior-STA-program-name): program name is "stat" as it should be (and not "env"). 2012-05-02 Sam Steingold * ess-r-args.el (tooltip-show-at-point): Do not use the assoc package (which is obsoleted by Emacs 24.2 anyway), use let instead, it is cleaner and more reliable. 2012-04-23 Vitalie Spinu * merged Daniel Hackney's changes Squashed commit of the following: commit 708101bef3e5c1f20f53736a9e93799eddaf4f0c Author: Daniel Hackney Date: Mon Apr 23 00:28:53 2012 -0400 Remove incorrect description of the GPL A couple files had the following in their header: In short: you may use this code any way you like, as long as you don't charge money for it, remove this notice, or hold anyone liable for its results. This is not an accurate description of the GPL, and should therefore not appear in the headers. commit c93848d930783f0c38fec1ff07af40fb623799d1 Author: Daniel Hackney Date: Sun Apr 22 23:03:42 2012 -0400 Clean up all whitespace according to settings from ".dir-locals.el" Uses `whitespace-cleanup' to set a consistent style for whitespace throughout the project. This can be applied with: (defun recursive-files (dir func) (loop with before-save-hook for (file is-dir) in (directory-files-and-attributes dir t ".*\.el$") if is-dir do (recursive-files file form) else do (with-current-buffer (find-file-noselect file) (apply func) (basic-save-buffer) (kill-buffer)))) (recursive-files 'whitespace-cleanup) Again, this can be run from "emacs -Q" after "(require 'cl)" commit 3c9c0857d67bda1e9161e37ed426e97a8c61223c Author: Daniel Hackney Date: Sun Apr 22 22:51:54 2012 -0400 Directory-local variables for whitespace cleanup. Use the `whitespace' library for the cleaning. commit 8dc3d6db1d40956ab96c33b18a80a95a047b46b3 Author: Daniel Hackney Date: Sun Apr 22 22:40:28 2012 -0400 Convert files to `utf-8-unix' coding system. The default coding system to use going forward, `utf-8-unix', is set as a directory-local variable in ".dir-locals.el". To force all elisp files to use the `utf-8-unix' coding system, the following code will recursively walk through all elisp files in the specified directory set the encoding system, and save the file. (require 'cl) (defun recursive-files (dir func) (loop with before-save-hook for (file is-dir) in (directory-files-and-attributes dir t ".*\.el$") if is-dir do (recursive-files file form) else do (with-current-buffer (find-file-noselect file) (apply func) (basic-save-buffer) (kill-buffer)))) This can be invoked as follows: (recursive-files "/path/to/ess" '(lambda () (set-buffer-file-coding-system 'utf-8-unix))) To ensure no other variables from the user environment impact the process, this code can be run in "emacs -Q", which doesn't load any startup files (outside of the emacs core). This function could perhaps be split out, named better, and put in its own file. commit 6352290fe13ce9048abaa0e401679a67bbcafe43 Author: Daniel Hackney Date: Tue Apr 17 21:01:36 2012 -0400 Reformat all headers to be consistent. Summary of changes made: * Correct first- and last-line format. Preferred is three semicolons, file name, either three dashes and the description (first line) or the string "ends here" (last line). * Changed header comment lines to match conventions. "Author" and "Maintainer" headers are singular, even when there are multiple authors or maintainers. * Use the correct number of semicolons for each header section. Regular comments should have two semicolons; section headers, such as "Commentary" or "Code" should have three. * Fixed "Keywords" header comments. There is a standard-ish set of keywords used in Emacs, available through `finder-by-keyword'; this commit uses those conventions. Also, keywords are now separated by comma then space and do not have a trailing period. * Trailing newline at end of file. A few files lacked this, which makes subsequent diffs which modify the last line unnecessarily noisy. * Moved "Code" section marker before any and all code in a file. 2012-04-21 Martin Maechler * ess.el (ess-version-string): new, and (ess-version) uses it. 2012-04-12 Martin Maechler * ess-s-l.el (ess-use-this-dir): add 'no-force-current, and switch default to *try* finding a current *R* buffer. 2012-04-11 Rodney Sparapani * ess-bugs-d.el (ess-bugs-mode): * ess-jags-d.el (ess-jags-mode): (setq ess-language "S") ; mimic S for ess-smart-underscore 2012-04-05 Rodney Sparapani * ess-custom.el (ess-revision): extraordinary attempts to get revision number 2012-04-03 Martin Maechler * ess-inf.el (ess-force-buffer-current): use no-autostart, instead of autostart (each with the emacs default of nil). This re-instantiates ESS 5.x behavior. 2012-04-03 Vitalie Spinu * ess-custom.el (ess-first-tab-never-completes-p): defalias for ess-first-tab-never-complete (ess-first-tab-never-complete): plenty of options for every taste. (ess-tab-complete-in-script): new option. 2012-04-02 Vitalie Spinu * ess-mode.el (ess-mode): try hard to find an alist if not suplied * ess-utils.el (ess-inside-string-or-comment-p) (ess-inside-string-p): rewrote this facilities to take advantage of font-lock * ess-julia.el (julia-customize-alist) (julia-get-help-topics-list-function) (julia-send-string-function, julia) (julia-imenu-generic-expression): ess-julia.el 2012-04-01 Vitalie Spinu * ess-mode.el (ess-error-regexp): custom error messages for dialects 2012-04-02 Sam Steingold * ess-help.el (ess-help-mode-map): Older XEmacs misses `special-mode-map', check for that. * ess-tracebug.el (ess-watch-mode-map): Likewise. 2012-04-02 Sam Steingold * ess-tracebug.el (ess-bp-kill): Bug fix: `called-interactively-p' requires an argument; fix it as recommended in the doc for `called-interactively-p' by avoiding it altogether; this also takes care of compatibility. 2012-04-02 Sam Steingold * ess-help.el (ess-help-mode-map): All supported emacsen have `set-keymap-parent'. * ess-inf.el (inferior-ess-mode-map, ess-mode-minibuffer-map): Likewise. * ess-tracebug.el (ess-watch-mode-map): Likewise. * ess-trns.el (ess-transcript-mode-map): Likewise. * ess-mode.el (ess-mode-map): Likewise. 2012-04-02 Sam Steingold * ess-inf.el (update-ess-process-name-list, ess-cleanup): Use `dolist' instead of `mapc'+`lambda' for clarity and speed. * ess-help.el (ess-help-mode, ess-describe-sec-map) (ess-get-help-files-list, ess-get-help-aliases-list): Likewise. 2012-04-02 Sam Steingold * ess-custom.el, ess-custom.el, ess-mous.el, ess-mouse.el: * ess-r-args.el, ess-r-d.el, ess-rd.el, ess-s-l.el, ess-s4-d.el: * ess-site.el, ess-sp5-d.el, ess-sp6-d.el, ess-swv.el: * ess-tracebug.el, ess-utils.el, ess.el, make-regexp.el, mouseme.el: * noweb-mode.el: Do not quote lambda forms, this is never needed. 2012-04-02 Sam Steingold * ess-site.el: Rise up to the challenge: use `locate-file' instead of horrible adhockery to check if info can find ess.info. 2012-03-30 Vitalie Spinu * ess-custom.el (ess-arg-function-offset-new-line): If a list of the form '(N), indent at the indentation + N * ess-r-d.el (ess-R-get-rcompletions, ess--funargs-command): workaround for enableJIT warnings for R > 2.14.2 2012-03-26 Rodney Sparapani * ess-help.el (ess-skip-to-help-section): this issue is documented in 2 places http://www.xemacs.org/About/XEmacsVsGNUemacs.html http://www.xemacs.org/Documentation/21.5/html/cl_4.html So, the schism goes back many years: circa 1997-1998. The fix is simple. If the keypress is meant to be a character, then you wrap last-command-event as follows... (if (featurep 'xemacs) last-command-char last-command-event) 2012-03-25 Vitalie Spinu * ess-inf.el (ess-get-object-list): new arg exclude-first to allow exclusion of objects from .GlobalEnv in help completion. 2012-03-21 Vitalie Spinu * ess-r-d.el (ess--funargs-command): "error" option is reset to NULL in critical completion and eldoc actions. * ess-inf.el (inferior-ess-set-status): new argument no-timestamp to allow ess-command not to set the timestamp. 2012-03-20 Vitalie Spinu * noweb-mode.el (noweb-minor-mode-map): adjusted [tab] and [return] keys not to interfere with ac-mode 2012-03-19 Vitalie Spinu * ess-r-d.el (ess-eldoc-docstring-format): smart for-mating of a doc string in minibuffer. * ess-custom.el (ess-eldoc-abbreviation-style): level to filter/truncate the doc string. 2012-03-16 Vitalie Spinu * ess-r-d.el (ess--funname.start): is limiting the search from the process marker only (bug reported by Sam Steingold on Mon Mar 12 19:40:22 CET 2012) * ess-inf.el (ess-object-completion, ess-complete-object-name): give suggestive info if proc is not associated. (ess-filename-completion): :exclusive 'no (inferior-ess-mode): completely removed dependence on comint-dynamic-complete. * ess-r-d.el (ess-R-complete-object-name): added info message on missing proc. * ess-roxy.el: (ess-roxy-tag-completion): new completion function for emacs 24 (ess-roxy-mode): adjusted roxy tag completion to new ESS and emacs 24 system. 2012-03-14 Henning Redestig * ess-roxy.el (ess-roxy-complete-tag): removed function advice for (ess-internal-complete-object-name) to reflect the new tab behavior and also made tab not hide roxy entry unless point is at the beginning of the line (so similar to org-mode's visibility cycling) (comint-dynamic-complete-functions): and dropped the advice to (ess-R-complete-object-name) as well. 2012-03-13 Henning Redestig * ess-roxy.el (ess-roxy-preview): put all R-code on one line to get rid f the +s 2012-03-13 Vitalie Spinu * ess-inf.el (inferior-ess-mode-map): don't bind M-TAB in emacs 24. * ess-mode.el (ess-mode-map): Don't bind M-TAB in emacs 24, it's the emacs standard to call completion-at-point or comlete-symbol which do the same thing. * ess-r-d.el (ess-R-get-rcompletions): return a token as a first element of a list. (R-mode): init emacs 24 completions. 2012-03-12 Vitalie Spinu * ess-inf.el (ess-filename-completion): filename completion to comply with emacs 24 standard. (ess-complete-filename): modified quote detection. 2012-03-11 Henning Redestig * ess-roxy.el (ess-roxy-preview): semi-working version for roxygen2 without creating directories. Unfortunately appends lots '+'s at the created Rd file. 2012-03-09 Vitalie Spinu * ess-help.el (ess-help-kill, ess-help-quit): smarter quit and kill behavior. (ess-display-help-on-object): fixed the help display bug. 2012-03-08 Vitalie Spinu * ess-custom.el (ess-arg-function-offset-new-line): new indentation offset, better handling of long funargs. See the doc. 2012-03-05 Vitalie Spinu * ess-custom.el (ess-first-tab-never-completes-p): if t never complete on first TAB in ess-mode. * ess-mode.el (ess-indent-or-complete): improved handling of the nil process * ess-s-l.el: removed S-calculate-indent and S-indent-line (these are ess-indent-line and ess-calculate-indent from 2004 already, and created confusion) 2012-03-04 Vitalie Spinu * ess-swv.el (ess-swv-PDF): ess-completing-read * noweb-mode.el (noweb-goto-chunk): ess-completing-read * ess-inf.el (ess-request-a-process, ess-request-a-process) (ess-read-object-name): ess-completing-read * ess-tracebug.el (ess-dbg-command-digit): ess-completing-read * ess-rd.el (Rd-mode-insert-section): ess-completing-read * ess-mode.el (ess-set-style): ess-completing-read 2012-03-02 Martin Maechler * ess-custom.el (ess-roxy-package): new variable, (FIXME potentially) with new default "roxygen2". %% FIXME, 'roxygen2' fails * ess-roxy.el (ess-roxy-preview): now using ess-roxy-package instead of "roxygen". 2012-03-02 Rodney Sparapani * ess-bugs-l.el (ess-bugs-hot-arrow): add a space before arrow 2012-03-01 Vitalie Spinu * ess.el (ess-yank-cleaned-commands, ess-yank): C-u C-u C-y yanks only the commands from the kill ring (as proposed by Richard M. Heiberger). It uses ess-transcript-clean-region. 2012-02-29 Vitalie Spinu * ess-mode.el (ess-mode): use comint-dynamic-completion. * ess-r-d.el (R-mode): use comint-dynamic-completion. * ess-mode.el (ess-mode-map): TAB is bound to ess-indent-or-complete. 2012-02-27 Vitalie Spinu * ess-r-d.el (ess-function-arguments): works with current instead of local process. That means eldoc and completion are available even if buffer is not associated with a process. * ess-help.el (ess-help-bogus-buffer-p): regexp includes the name of the doc object. (ess-display-help-on-object): killed buffer display bug fix, reported and fixed by Sam Steingold. (ess-help-mode-map): inherits form special-mode-map, "k" is kill-this-buffer instead of kill-buffer. "q" is quit-window instead of bury-buffer. (pointed by Sam Steingold) * ess-r-d.el (ess-funname.start, ess-function-arguments): execution bugs corrected and robustified caching. * ess-r-args.el (ess-r-args-get): relies on ess-function-arguments now. * ess.el (ess-load-extras): new function to load extra features. * ess-tracebug.el (ess-tracebug-map): a couple of renames. * ess-mode.el (ess-mode): (ess-load-extras) * ess-eldoc.el (ess-eldoc): moved the code into ess-r-mode.el. * ess-developer.el: moved documentation into the user manual * ess-custom.el (ess-use-eldoc, ess-eldoc-show-on-symbol) (ess-use-auto-complete): Implemented ess-use-xxx system. 2012-02-26 Vitalie Spinu * ess-tracebug.el (ess-tracebug-prefix): set to nil, as to require the user to choose the binging. 2012-02-25 Vitalie Spinu * ess-tracebug.el (ess-long+replacement): it's shorter "+ . +" now. * ess-custom.el (inferior-ess-S-prompt): small adjustment of the prompt for tracebug cuts. * ess-r-d.el (ess-function-arguments): modified the form of the returned value. 2012-02-23 Vitalie Spinu * ess-inf.el: (ess-switch-to-ESS): force-buffer-current instead of make-buffer-current. Much more useful in interactive use, which this function is almost always used. (ess-force-buffer-current): New argument to auto-start process if the process died. This case was not treated before. 2012-02-21 Vitalie Spinu * ess-eldoc.el (ess-eldoc-everywhere-p): controls whether to show args everywhere or only inside function call. (ess-eldoc): complete rewrite of ess-eldoc, to use argument completion api. Automatic caching + generic args + handling of complex expressions + calling process only when really needed. * ess-r-d.el (ess-function-arguments): optimized funarg retrieval. (ess-get-object-at-point): a very permissive version of symbol-at-point. Allows almost any R object. 2012-02-20 Vitalie Spinu * ess-inf.el (inferior-ess-set-status): set 'last-eval property giving the time of the last interaction with the process. * ess-r-d.el (ess--funargs-cache, ess-function-arguments): New uniform caching support for argument completion. Arg are reliably cached on first completion invocation. All completion mechanisms should use ess-function-arguments. (ess-funname.point): Retrieve the name of a function call and starting point of a call. All interfaces should use it for argument completion. * ess-r-args.el (ess-r-args-get): completes arguments for S3 generic if found. * ess-r-d.el (ac-source-R, ac-source-R-objects) (ac-source-R-args): Completely rewrote the ac support. ESS now provides the above 3 sources to accomplish any completion taste. 2012-02-19 Vitalie Spinu * ess-inf.el (ess-switch-to-ESS): Associates the buffer with current process. Make sense when the buffer is not yet associated with any process. (with-current-process-buffer): new macro to execute the &body inside current ess process buffer. (ess-command): removed PROMPT argument. (ess-command): removed sleeping, not relevant anymore argument still stays, apparently needed for dde. 2012-02-04 Vitalie Spinu * ess-tracebug.el (ess-watch-mode): corrected watch-mode documentation and added the ? and d keys. 2012-02-03 Vitalie Spinu * ess-inf.el (inferior-ess--get-old-input:regexp): silent byte-compile on free var. * ess-tracebug.el (ess-tracebug-inject-source-p): better control source injection. (ess-eval-region2): removed eva-region, eva-linewise, eval-function fixes from tracebug (everything incorporated into the core). * ess-inf.el (ess-eval-function): complete rewrite to accommodate developer and tracebug and potentially other addons in the future. (ess-load-file) calls ess-tracebug-source-current-file if tb is active. * ess-developer.el: Many unifying changes, bug fixes. Follows ess-eval-visibly-p whenever possible. Implemented region and function devEvals. * ess-inf.el (ess-eval-region): moved ddeclient to lower level `ess-send-region' (ess-send-string, ess-send-region): consolidated these low-level work-horse functions. 2012-02-02 Vitalie Spinu * ess-inf.el (ess-eval-region): removed the archaic ess-synchronize-evals, a workaround for emacs 18.57. (ess-eval-region): is now aware of ess-tracebug and ess-developer. 2012-02-01 Vitalie Spinu * ess-r-d.el (ess-sos, ess-setRepositories, ess-setCRANMiror): added two more handy commands. * ess-roxy.el (ess-roxy-mode-map): new key C-c C-e t for preview-text (ess-roxyb-preview-text): new function for preview in text format * ess-rd.el (Rd-preview-help): solved nil file-name bug with roxy preview. 2012-01-28 Vitalie Spinu * ess-developer.el (ess-developer-assign-function): integrated with ess-eval-function; also takes care of tracebug. * ess-tracebug.el (ess-tracebug-assign-function): tracebug doesn't reassign ess-eval-function anymore (it's integrated now in ESS) (ess-process-send-string): moved into ess-inf.el * ess-inf.el (ess-process-send-string): low level wrapper for process-send to enable pre-processing of input string. Currently removes empty lines when debugging is active. * ess-inf.el (ess-load-file): if in developer mode call ess-developer-source-current-file. (ess-process-get): new function, wrapper for process-get (ess-eval-function): is now aware of ess-developer and ess-tracebug (ess-command): added two new arguments wait and prompt 2012-01-27 Vitalie Spinu * ess-tracebug.el (ess-dbg-mode-line-indicator): dynamic mode line support. * ess-custom.el (ess-mode-line-indicator): doc string * ess-tracebug.el (ess-dbg-flag-for-debugging): added support for org mode and file free buffers. 2012-01-23 Vitalie Spinu * ess-r-d.el (ess-library): set ess-sp-change to t. * ess-inf.el (ess-smart-comma): made smart operators customizable. New ess-smart-variables local var to hold smart ops which are active in the mode. * ess-r-d.el: further work on AC. * ess-custom.el (inferior-ess-S-prompt): small adjustment of S prompt regexp. 2012-01-21 Vitalie Spinu * ess-tracebug.el : several corrections to silent the compiler. * Makefile (ELC): added developer and tracebug. * ess-r-d.el (ac-source-R-objects, ac-source-R-args): two sources for ac. (ess-init-ac): default initialization of ac. * ess.el (ess-completing-read): added automatic handling of ': '. * ess-tracebug.el (ess-dbg-flag-for-debugging) (ess-dbg-unflag-for-debugging): modiefied to use ess-completing-read. (require): removed ido dependency. 2012-01-20 Rodney Sparapani * ess-bugs-d.el (ess-bugs-font-lock-keywords): add censoring notation: C( , ) 2012-01-20 Vitalie Spinu * ess-inf.el (inferior-ess--goto-input-start:regexp): new function for regexp based input search. (inferior-ess-get-old-input): ESS now fully supports both field and regexp input handling. Fields are not used though; may be in the future. (inferior-ess-mode): removed ac inits (ess-mode): removed ac inits (was too intrusive) * ess-custom.el (inferior-ess-S-prompt): new custom var. User can customize this regexp to enhance navigation in comint and transcript buffers. 2012-01-19 Vitalie Spinu * ess-r-d.el (ess-R-get-rcompletions): require 'ess-tracebug * ess-tracebug.el Added and integrated with ESS. * ess-inf.el (inferior-ess-set-status): returns the process busy status for convenience 2012-01-18 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): generalized support for NOTEs/WARNINGs/ERRORs with numeric call signs that match the regexp [0-9]+-[0-9]+ 2012-01-18 Vitalie Spinu * ess-mode.el (ess-mode): added ac support * ess-inf.el (inferior-ess-mode): added ac support * ess-r-d.el (R): added ac support * ess-custom.el (ess-use-ac-p, ess-ac-source-R) (ess-ac-sources-R, ess-ac-source): added auto-complete integration. * ess-r-d.el (ess-R-complete-object-name): simplified ess-R-complete-object-name by reducing huge number of invocations of ess-command to 2 (ess-R-get-rcompletions): new function - workhorse of internal r-completions. * ess-r-args.el (ess-r-args-get): new TRIM argument (ess-r-args-show): rearrangement of the code. * ess-eldoc.el (ess-eldoc): moved new-line replacement into ess-r-args-get. 2012-01-17 Vitalie Spinu * ess.el: added xemacs support for process-plist, set-process-plist, process-put and process-get. All should be removed when xemacs finally supports them. * ess-site.el: removed the piece on customizing prompts, it does not work and is misleading for the users. * ess-r-d.el (R): write proc version into dribble. * ess-inf.el (ess-multi): marking newly created ess process as busy and wait for the proc afterward. 2012-01-16 Vitalie Spinu * ess-trns.el (ess-transcript-mode): small adjustment of the prompt. * ess-inf.el (inferior-ess-get-old-input): supports both fields and regexp comint and acts in accordance with the value of 'comint-use-prompt-regexp. (ess-smart-comma): improved usability. * ess-custom.el (ess-handy-commands): improved handy commands for smart comma. * ess-trns.el (ess-transcript-mode): set comint-use-prompt-regexp to t in trns-mode and adjusted regexp of the inferior-ess-prompt. 2012-01-15 Vitalie Spinu Major re-factoring of ess-inf.el - new waiting-for-prompt mechanism. * ess-inf.el (ordinary-insertion-filter): complete cleanup. (inferior-ess-output-filter): sets process status (i.e. busy, sec-prompt properties) * ess-inf.el (ess-multi): removed inferior-ess-wait-for-prompt and replaces with ess-wait-for-process which uses new prompt monitoring mechanism (ess-eval-linewise): removed timeout-ms and replaced with wait-sec to be parsed to ess-wait-for-process. Default is 0s. Removed kludges and prompt waiting loop. (inferior-ess-get-old-input): completely redefined to take advantage of fields. (inferior-ess-goto-input-end): (inferior-ess-goto-input-end): new functions to navigate through input by means of fields in inferior-buffer or transcript. * ess-custom.el (inferior-ess-primary-prompt): simplified default prompts to "> " and "+ " * ess-arc-d.el (xxx-customize-alist): replaced deprecated comint-use-prompt-regexp-instead-of-fields with comint-use-prompt-regexp. 2012-01-14 Vitalie Spinu * ess-r-d.el (R-customize-alist): removed inferior-ess-command-prompt. It is no longer necessary with recent changes in the waiting mechanism. 2012-01-14 Vitalie Spinu * ess-eldoc.el (ess-eldoc): remove new lines from argument list to avoid frequent distortion of emacs windows. 2012-01-07 Martin Maechler * ess-mode.el (ess-mode-map): C-c . sets style (as in C-mode) 2011-12-23 Vitalie Spinu * ess-inf.el (ess-smart-comma): inspired by slime-repl ,shortcut. If "," is the first character typed in the inferior-ess buffer it requests for execution one of the commands in ess-handy-commands list. 2011-12-14 Vitalie Spinu * ess-mode.el (ess-calculate-indent): let bind beginning-of-defun-function to nil in ess-calculate-indent to prevent the use of ess-beginning-of-function 2011-12-13 Vitalie Spinu * ess-mode.el (ess-mode): set beginning-of-defun-function and end-of-defun-function to make swank/slime work. (ess-function-pattern): allowed for function names of the form '.+', '.+', ".+" in ess-R-function-pattern. 2011-12-12 Vitalie Spinu * ess-developer.el (ess-developer): the bulk of ess-developer.el and ess-developer.R is finished. See the file header for the full details. 2011-12-01 Vitalie Spinu * ess-r-d.el (ess-library): ido interface to library() 2011-11-24 Vitalie Spinu * ess-inf.el (ess-prompt-wait): ess-prompt-wait is more sophisticated now. It checks for prompt only if no more output has been received from the process. Looking-at is replaced with re-search-forward in order to avoid anchoring the prompt to the bol. 2011-11-18 Vitalie Spinu * ess-developer.el (ess-developer-source-current-file): interface to insertSource. * ess-inf.el (ess-get-process-variable): added (boundedp var) check. If var is not defined ess-get-process-variable returns nil. Useful when some vars are defined for one mode and not for others. 2011-11-17 Vitalie Spinu * ess-inf.el (ess-eval-function-or-paragraph-and-step): now calls ess-eval-function in order to reuse ess-developer and ess-tracebug improvements of ess-eval-function. (ess-eval-function): new argument 'no-error 2011-11-14 Vitalie Spinu * ess-help.el (ess-read-helpobj-name-default): defined alias for ess-helpobj-at-point. 2011-11-13 Vitalie Spinu * ess-help.el (ess-helpobj-at-point): modified the name of ess-read-helpobj-name-default to a more intuitive one and consistent with emacs conventions. * ess-custom.el (ess-help-pop-to-buffer): If non-nil ess-help buffers are given focus during the display. (ess-ido-flex-matching): if you don't use ido flex matching but still want it for ESS, here it is. * ess-help.el (ess-display-help-on-object): put cache update on universal argument, it also regenerates the help buffer as before. Removed curr-* kludge which was not necessary. Removed the handling of help buffer into separate function. (ess-help-type): local variable in help files holding the help type symbol. So far, 'help, 'index, 'vignette. (ess-help-object): local in help files holding the name of the help object, i.e. name of the package for index and help topic for ordinary help. (ess-help-mode-map): new keys - i for index, v for vignette, w for help in web-browser. "q" key is not burring the buffer instead of jumping to the end of ESS. C-c C-z is standard combination for that action. (ess-help-mode-menu): new menu entries for index vignette and browse in web-browser. (ess-find-help-file): This one does not do the prompt processing anymore. Everything is done in ess-completing-read now. (ess-get-help-topics-list): topics are now list of strings instead of alist. IDO and emacs handles them better. A workaround is implemented for Xemacs to use alist in ess-completing-read. ------------- New functions: (ess-display-index): linked index with ido request. (ess-R-display-vignettes, ess-display-vignettes): display vignettes in nicely formatted, linked help buffer. In xemacs emits the call to browseVignettes() instead. (ess-display-help-in-browser): pop the current help page in browser. (ess--switch-to-help-buffer): display help buffers, consistently with `ess-help-pop-to-buffer' and `ess-help-own-frame'. * ess.el (ess-completing-read): moved code around. * ess-inf.el (ess-eval-function): integrated ess-developer in ess-eval-function Works only for R, useful for S as well? * ess-mode.el (ess-mode): integrated mode-line-indicator. * ess-inf.el (inferior-ess-mode): integrated mode-line-indicator. * ess-custom.el (ess-mode-line-indicator): added dynamic mode-line indicator. Mode line of ess-mode is now in sync with the associated process. This feature is used by ess-developer and ess-tracebug. Xemacs does not have the necessary support for it. 2011-11-12 Vitalie Spinu * ess.el (ess-completing-read): new function to use for completion in ESS. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. * ess-r-d.el (ess-install.packages): fast way to instal packages with ido interface. * ess-custom.el (ess-use-ido): users can disable ido if they don't want it. (ess--completing-hist): new internal variable to store completion history. * ess-inf.el (ess-get-words-from-vector): addapted regular expression to match "\"", this was breaking the command before. See etc/R-ESS-bugs.el (bug 1). Added comment on max.print truncating the vector in the doc string (bug 2 in etc/R-ESS-bugs.el). Sill not sure if should wrap the code automatically or leave it to the user. 2011-11-11 Vitalie Spinu * ess-r-d.el (R-customize-alist): added `inferior-ess-command-prompt' to R-customize-alist. Solves bug 3 in etc/R-ESS-bugs.el. * ess-custom.el (inferior-ess-command-prompt): new prompt regexp to be used specifically in ess-command. If nil (the default) ess-command uses `inferior-ess-primary-prompt' as it was before. * ess-inf.el (ess-command): Anchoring the prompt to the end of buffer in order to avoid premature prompt detection (see etc/R-ESS-bugs.el bug 4). Moved ..ok{ess-command} inside unwind-protect. Before it was ..ok even when ess-command failed. (ess-prompt-wait): Added new required parameter PROMPT-REG for the local prompt regexp to be passed explicitly. Before, it was using global value of the prompt regexp. Dropped start-of-output argument. It's never used in ess-code and had confusing meaning wich was not even documented. 2011-11-03 Rodney Sparapani * ess-sas-l.el (sas-fix-life-tables): if read-only, then toggle to read-write first (SAS-listing-mode): name ESS[LST] for emacs functionality that cares about names like tabbar 2011-09-30 Rodney Sparapani * ess-sas-a.el (ess-sas-graph-view): search for GSASFILE more robust to handle recent versions of SAS and embedded dots in filename 2011-09-17 Henning Redestig * ess-roxy.el (ess-roxy-fill-field): Filling text inside roxygen entries now operate on individual paragraphs instead of the whole field. 2011-09-16 Sebastian P. Luque * ess-swv.el (ess-swv-remove-TeX-commands): Simplify removal of commands from TeX-command-list (AUCTeX users). Thanks to Stephen. (ess-swv-toggle-plug-into-AUCTeX): Fixed doc string. 2011-09-11 Henning Redestig * ess-roxy.el (ess-roxy-update-entry): fixes problem with roxy entries in the beginning of a file 2011-09-03 Henning Redestig * ess-roxy.el (ess-roxy-in-header-p): fix introduced bug in update-entry 2011-09-01 Henning Redestig * ess-roxy.el (ess-roxy-get-args-list-from-entry): couldnt really handle the ... argument param description before. can now. 2011-09-01 Martin Maechler * ess-custom.el (ess-history-file): now three-valued; (nil, t, ). If nil, *no* history is read or written. * ess-inf.el (inferior-ess, ess-multi): ess-history-file changes; finally *use* the ess-history-directory. 2011-08-31 Henning Redestig * ess-roxy.el (ess-roxy-end-of-field): attempt to handle mutiple paragraphs inside @param fields etc. 2011-08-31 Sebastian P. Luque * ess-help.el (ess-get-help-aliases-list): Choose whether to use .readRDS() or readRDS() based on R version. 2011-08-30 Sebastian P. Luque * ess-swv.el (ess-swv-plug-into-AUCTeX): Evaluate this function after loading tex. 2011-08-18 Rodney Sparapani * ess-bugs-d.el (ess-bugs-switch-to-suffix): let's not magnify burn-in (via the thinning multiple) 2011-08-17 Stephen Eglen * ess-r-d.el (ess-r-versions): Add "R32" and "R64" if working on a mac. 2011-07-28 Rodney Sparapani * ess-bugs-d.el (ess-bugs-switch-to-suffix): complete support for thinning: ESS[BUGS] appears to be ready for release 2011-07-27 Martin Maechler * ess-s-l.el (ess-insert-S-assign): factored out from ess-smart-underscore; now also assigned to A-- for *-MM-keys. 2011-07-22 Rodney Sparapani * ess-bugs-d.el (ess-bugs-na-bmd): workaround the OpenBUGS nohup bug with "at"; this time without creating additional files, i.e. piping to "at" 2011-07-20 Rodney Sparapani * ess-sas-a.el (ess-sas-cd): attempt to workaround Emacs bug; shell buffer snarfing the cd command. * ess-bugs-d.el (ess-bugs-na-bmd): ditto 2011-07-08 Rodney Sparapani * ess-bugs-d.el (ess-bugs-font-lock-keywords): adding keywords that are members of both the OpenBUGS script language and BRUGS (why the 2 sets are not the same; I don't know) 2011-07-05 Rodney Sparapani * ess-bugs-d.el (ess-bugs-na-bmd): workaround the OpenBUGS nohup bug with "at" 2011-06-24 Rodney Sparapani * ess-jags-d.el (ess-jags-na-jmd): we now support bash 2011-06-23 Rodney Sparapani * ess-bugs-l.el (ess-bugs-next-action): separation of ESS[BUGS] and ESS[JAGS] is now functional. ESS[JAGS] is pretty complete, but ESS[BUGS] is still in development, however, it does appear to work. 2011-06-22 Rodney Sparapani * ess-bugs-d.el (ess-bugs-font-lock-keywords): updating to new OpenBUGS scripting language (incomplete so far, but serviceable) 2011-06-21 Rodney Sparapani * ess-sas-a.el (ess-rtf-replace-chars): fixing form feed bug * ess-bugs-d.el/ess-custom.el/ess-compat.el: fix a bunch of bugs and get ESS[BUGS] working for GNU Emacs utilize (ess-sleep) after (shell) which, apparently, is necessary for GNU Emacs; rename ess-sleep-for to ess-sleep-for-shell and move to ess-custom 2011-06-20 Henning Redestig * ess-roxy.el (ess-roxy-get-function-args): Enhancement to handle in-definition comments per Tengfei Yin's request 2011-06-14 Rodney Sparapani * ess-utils.el (ess-revert-wisely): stores and restores the point after revert 2011-06-07 Rodney Sparapani * ess-sas-l.el (SAS-log-mode): change mode-name to ESS[LOG] so that tabbar-mode knows to list the .log's separately from the .sas buffers 2011-05-31 Rodney Sparapani * ess-sas-l.el (sas-fix-life-tables): re-implemented with re-search-forward/replace-match (fix-page-breaks): re-implemented with re-search-forward/replace-match; unfortunately, not really sure what this function is meant to do; probably not very useful to anyone at this point, but it does compile without any warnings! 2011-05-27 Rodney Sparapani * ess-sas-a.el: re-implemented rudimentary RTF support since GNU Emacs does not work with rtf-support.el (sadly, XEmacs has had this for over a decade); does NOT support font re-sizing; you are stuck with a point size of 8. Enjoy! 2011-05-26 Stephen Eglen * ess-inf.el (ess-eval-paragraph-and-step): Apply Erik Iverson's patch from Feb 2011, so that after evaluating the paragraph, it skips any blank lines and comments, just like ess-eval-line-and-step. (ess-eval-function-or-paragraph-and-step): As above. 2011-05-08 Sebastian P. Luque * ess-inf.el (ess-show-buffer): Fixed minor typo in doc string. 2011-05-05 Rodney Sparapani * ess-sas-a.el: several changes necessary to support GNU Emacs for ESS[SAS] batch 2011-04-06 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): most common SAS/Graph statements now added 2011-04-01 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): adding a few common SAS/Graph statements, but much more is left to be done 2011-03-25 Rodney Sparapani * ess-sas-l.el (sas-fix-life-tables): I assume that sed command worked for someone at some point, but it was not working for me; and it was overly complicated, so I simplified; hopefully it works now; please test. 2011-03-02 Sebastian P. Luque * ess-rutils.el: Standardized function names for consistency. Thanks to Cesar Rabak (ESS-help). 2011-02-28 Rodney Sparapani * ess-site.el, ess-bugs-l.el, ess-bugs-d.el, ess-jags-d.el: Batch BUGS is back! With OpenBUGS, a batch BUGS script is available for Linux. Therefore, since it seems that BUGS and JAGS must co-exist (rather than a transition from BUGS to JAGS), .bug files are in ESS[BUGS] mode and .jug files are in ESS[JAGS] mode. ESS[BUGS] now works like ESS[JAGS] rather than the orignal mode ESS[BUGS] mode which was difficult to maintain. However, ESS[BUGS] needs a lot of work such as support for thinning, multiple data files, etc. 2011-02-14 Sebastian P. Luque * ess-swv.el (ess-swv-add-TeX-commands): Use "%t" instead of "%s" when Sweave'ing via AUCTeX. 2011-02-13 Sebastian P. Luque * ess-custom.el (ess-swv-plug-into-AUCTeX-p): New customizable variable, which defaults to nil, to determine whether AUCTeX interface is enabled or not. * ess-swv.el: New functions to allow working with Sweave via AUCTeX. 2011-02-02 Richard M. Heiberger * ess-custom.el (ess-program-files, ess-program-files-64) (ess-SHOME-versions, ess-SHOME-versions-64) (inferior-S+6-program-name, inferior-Sqpe+6-program-name) (inferior-Sqpe+6-SHOME-name): Pathnames for all 32-bit and 64-bit versions of Sqpe. Add the most recent "/TIBCO/splus82" and make it the default. * ess-sp6w-d.el (ess-sqpe-versions-create): Give the function an argument of pathnames and an indicator whether they are 32-bit or 64bit pathnames. * ess-site.el (ess-s-versions-created): Use the revised functions and variables to find all 32-bit and 64-bit versions of Sqpe. 2011-02-01 Martin Maechler * ess-r-d.el (R): change use-dialog-box (to nil) only on windows. * ess-inf.el (ess-get-directory): now use new inferior-R-version which is set in the created R-X.Y version functions. 2011-01-31 Martin Maechler * ess-site.el (ess-rterm-version-paths): now use *long* filenames * ess-r-d.el (ess-r-versions-create): ditto; now produce "proper" version names. * ess-r-d.el (ess-rterm-arch-version): extend to return cons; and use "-32bit" / "-64bit" in the bi-arch cases. 2011-01-19 Stephen Eglen * ess-rd.el (Rd-preview-help): Quote filename to prevent spaces in filenames causing problems running the shell-command. Fix up so that navigation shortcuts present in normal R Help buffers work in the output buffer. Add a short docstring and tidy code. 2011-01-12 Richard M. Heiberger * ess-site.el (ess-rterm-version-paths): extend to find all 32-bit and 64-bit versions of R using both the newer R-2.12.x naming convention using the architecture-specific i386 and x64 subdirectories and the older R-2.11.x naming convention. * ess-r-d.el (ess-rterm-arch-version): Isolate this function from within ess-r-versions-create to construct an architecture-specific name for VERSION, an absolute path to R on Windows. * ess-r-d.el (ess-r-versions-create): Remove ess-rterm-arch-version into its own function. 2010-12-13 Stephen Eglen * ess-inf.el (ess-request-a-process): Set default to ess-dialect rather than ess-language. Patch from Vitalie S. 2010-11-27 Martin Maechler * ess-inf.el (ess-eval-buffer-from-beg-to-here, *-from-here-to-end): new functions thanks to Roland Rau, with * ess-mode.el (ess-mode-map, ess-mode-menu): key bindings C-c [up] / [down] and corresponding menu entries. 2010-11-25 Henning Redestig * ess-roxy.el (ess-roxy-preview): Fixed introduced bug that broke preview for functions with empty lines. 2010-11-24 Henning Redestig * ess-roxy.el (ess-roxy-get-function-args): fix bug that stopped ess-roxy from updating setMethod definitions. 2010-11-23 Henning Redestig * ess-roxy.el (ess-roxy-preview): enable preview for all types of entries (not only for functions) (ess-roxy-toggle-roxy-region): make toggle region operate on the visible region instead of the actual start and the beginning of the region (behave more like comment-region) * ess-mode.el (ess-mode-menu): link to new ess-roxy-preview-HTML function in the roxygen menu * ess-roxy.el (ess-roxy-preview-HTML): New function that generates (and opens) a HTML version of a roxygen entry. Request from Kevin Wright. 2010-11-02 Sebastian P. Luque * ess-help.el: Do not use (mapcar 'list ...) construct in `ess-get-help-files-list', and `ess-get-help-aliases-list', since we only need to create lists of lists in `ess-find-help-file', where it's needed for useful completion. Always return the existing `ess-help-topics-list' list if one exists for the current process. 2010-11-01 Sebastian P. Luque * ess-help.el (ess-find-help-file): Implemented caching of help topics (thanks to Vitalie Spinu). * ess-custom.el (ess-help-topics-list): New buffer-local variable needed for caching help topics. 2010-10-30 Martin Maechler * ess-rd.el (Rd-section-names, Rd-keywords): "subsection" etc 2010-10-28 Henning Redestig * ess-custom.el (ess-roxy-tags-param): Vinh Nguyens patch for updating the available roxygen tags 2010-10-21 Stephen Eglen * ess-site.el (interpreter-mode-alist): Condition upon XEmacs to prevent "r" regexp from matching interpreters like "perl". Bug reported by Alex Lancaster. 2010-10-14 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): bringing the PROCs up to v. 9.22 2010-09-30 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): many ERROR and WARNING messages end in period, period single space or period double space (the double space coming from ancient typewriter trained typists like myself) 2010-09-21 Rodney Sparapani * ess-mode.el (ess-electric-brace): fix curly braces bug for XEmacs as reported by Joshua Wiley 2010-09-20 Henning Redestig * ess-roxy.el (ess-roxy-update-entry): optionally do not fill parameter descriptions upon ess-roxy-update-entry. 2010-08-21 Stephen Eglen * ess-inf.el (ess-load-file): Check that tramp-tramp-file-p is defined before using. 2010-08-20 Stephen Eglen * ess-rdired.el (ess-rdired-objects): R variable names can include spaces; handle this case. Bug report by Sigve Berge Hofland 2010-08-14. * ess-inf.el (ess-load-file): If filename is a tramp-filename, preserve just the localname of the file. Bug report and patch provided by Erik Iverson 2010-08-13. 2010-08-11 Martin Maechler * ess-trns.el (ess-transcript-clean-region): give error (instead of "hang") when inferior-ess-prompt is empty. 2010-08-11 Henning Redestig * ess-custom.el: advice user that no empty lines are allowed in description * ess-roxy.el (ess-roxy-update-entry): improved documentation 2010-08-10 Henning Redestig * ess-custom.el (ess-roxy-template-alist): less cryptic default for description and details fields 2010-08-06 Henning Redestig * ess-roxy.el (ess-roxy-get-function-args): fixed bug: function args could not be fetched if 'function' was part of the function name 2010-07-29 Sebastian P. Luque * Makefile (clean): 4394 Reverted this rule to the previous version since it was intended to also clean files with older names. Removed 'ess-rdired.elc' from this rule, since it is already in the ELC variable, and "clean" removes those files. However, kept the fixed 'ess-xls-d.elc' and 'ess-vst-d.elc' rules. 2010-07-28 Sebastian P. Luque * ess-inf.el: 4369 Corrected autoloading of `ess-R-complete-object-name' (due to old renaming below). * Makefile: 4350 Corrected the "clean" target to account for old renaming of essd-* files. 2010-07-12 Martin Maechler * ess-s-l.el (ess-use-this-dir): renamed and moved here: For S and R. (ess-mode-hook): bind ess-use-this-dir to M- 2010-07-05 Stephen Eglen * ess-r-d.el (ess-R-use-this-dir): New defun. 2010-07-01 Stephen Eglen * ess-eldoc.el (ess-use-eldoc): Use the new R-mode-hook instead of ess-mode-hook. 2010-06-26 Martin Maechler * ess-custom.el (R-mode-hook): new, use in * ess-site.el: add ess-roxy-mode to R-mode-hook instead of ess-mode-hook. 2010-06-22 Martin Maechler * ess-swv.el: allow customizable "pdflatex" command, via * ess-custom.el (ess-swv-pdflatex-commands, ess-sweave): new variable, in new group; 2010-06-22 Stephen Eglen * ess-inf.el (ess-complete-filename): Use comint-dynamic-complete-filename so that filename is not expanded. * ess-r-d.el (ess-R-complete-object-name): If there are no possible-completions, should return nil, so that when this function is called from comint-dynamic-complete-functions, other functions can then be tried. This should fix bug that history expansion was not working (reported by Vinu Jacob). 2010-06-10 Martin Maechler * ess-r-d.el (ess-dirs): give a message, and also set ess-directory. 2010-06-06 Sebastian P. Luque * ess-swv.el (ess-swv-PDF): 4308 Fixed cmdstr-*. * ess-rutils.el (ess-rutils-updatepkgs): 4352 Use better defaults. 2010-06-03 Sebastian P. Luque * ess-help.el (ess-find-help-file): 4318 Replaced `delete-dups' by `ess-uniq-list', since XEmacs doesn't know about it. * ess-rutils.el: 4345 Redesigned menu generation and key binding definitions so that Xemacs understands them. 2010-06-03 Stephen Eglen * ess-inf.el (inferior-ess-mode): Bind M-RET to 'ess-dirs in *R* and *S* buffers only. * ess-r-d.el (ess-dirs): New function. 2010-05-26 Sebastian P. Luque * ess-rutils.el (ess-rutils-objs): 4299 Added `fit-frame' (if available) after calling rdired. 2010-05-23 Richard M. Heiberger * ess-site.el, ess-r-d.el: Detect cases when `R/R-x.y.x' exists and `R/R-x.y.z/bin/Rterm.exe' does not exist. In `ess-find-rterm' in file `ess-r-d.el', replace such values with `nil'. In `ess-site.el', use `ess-flatten-list' to remove the `nil'. 2010-05-20 Rodney Sparapani * ess-sas-a.el (ess-sas-file-path/ess-sas-rtf-portrait): creation of portrait RTFs with the ESS[SAS] font sizes for non-ESS[SAS]-related buffers, such as .el, now allowed, but functionality is somewhat limited TODO: ess-sas-rtf-landscape 2010-05-19 Rodney Sparapani * ess-custom.el (ess-eval-deactivate-mark): The default is true since ESS version 5.9, except on XEmacs which doesn't have \\[deactivate-mark] and friends 2010-05-18 Rodney Sparapani * ess-inf.el (ess-eval-linewise): Partially work around a bug in GNU Emacs 23.x; thanks to Markus Triska; see http://article.gmane.org/gmane.emacs.ess.general/4366 2010-05-18 Stephen Eglen * ess-custom.el (ess-own-style-list): New customized variable. (ess-add-style): New function, to allow new indentation styles to be added. Nine indentation variables no longer defcustom, as they are set through the `ess-set-style' code, and thus not directly changeable by the user via customize. 2010-05-17 Sebastian P. Luque * ess-help.el: 4278 `ess-find-help-file' now calls the additional function `ess-get-help-aliases-list' so that it offers completion on aliases, in addition to object names, removing duplicates. 2010-05-17 Richard M. Heiberger * ess-site.el: I added a call to `w32-short-file-name' on each item in `ess-rterm-version-path'. Otherwise Windows can't find files with embedded spaces in the directory name. I redefined S in Windows. Now it gives a message to start the S GUI from the icon and then connect to it with M-x `S-existing'. This applies to M-x S, to the S menu item, and to clicking on the icon. * ess-sp6w-d.el: turned off a few more `use-dialog-box' and put in some more `w32-short-file-name' calls. 2010-05-16 Richard M. Heiberger * ess-sp6w-d.el, ess-r-d.el: set `use-dialog-box' to nil for Windows. Old version of Windows can't load directories from the dialog. * ess-site.el: I revised `ess-rterm-version-path' so it will find both 64-bit and 32-bit versions of R on 64-bit Windows. I tested it on 64-bit Windows 7 and 32-bit Windows XP. * ess-toolbar.el: add C-c C-c `ess-eval-function-or-paragraph-and-step' to `ess-toolbar-items'. Started to change spluslogo to splus_icon_small logo (from S-Plus 7 and earlier to S+ 8). This needs an xpm and ppm file and permission from TIBCO. I wrote to Lou Bajuk asking for permission. 2010-05-13 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): we can safely assume that any line starting with @ is not a NOTE, ERROR or WARNING. TODO; create separate .sas and .log keywords 2010-05-10 Sebastian P. Luque * ess-swv.el (ess-swv-PDF): 4251 Fixed command string for `shell-command' to view file. 2010-05-05 Martin Maechler * ess-site.el (ess-font-lock-mode): is alone determining the turn-on-font-lock setting in the major modes' hooks. * ess-roxy.el (ess-roxy-preview-Rd): more careful checking if require(roxygen) works. 2010-05-03 Rodney Sparapani * ess-inf.el (ess-eval-region): don't call deactivate-mark unless it is bound 2010-04-26 Henning Redestig * ess-roxy.el (ess-roxy-insert-args): do not add param field to functions without arguments * ess-mode.el (ess-mode-menu): menu entries for editing roxygen entries 2010-04-16 Sebastian P. Luque * ess-rutils.el (ess-rutils-keys): 4298 Turn on by default, now that bindings do not interfere with anything. 2010-04-15 Sebastian P. Luque * ess-rutils.el: 4297 Unconditionally activate submenu Rutils, and changed key bindings to avoid using 'C-c c' (reserved for users). 2010-04-14 Sebastian P. Luque * ess-rutils.el (ess-rutils-htmldocs): 4296 Fixed doc string. 2010-04-13 Sebastian P. Luque * ess-rutils.el: 4290 Incorporated R function .rutils.help.start(), defined in etc/ess-rutils-help-start.R so that `ess-rutils-htmldocs' is now fully functional. (ess-rutils-rhtml-fn): 4294 Use `expand-file-name' to define path to ess-rutils-help-start.R. Reintroduced autoloading of ess-rdired.el; we really need it. 2010-04-11 Sebastian P. Luque * ess-rutils.el: 4271 Provided optional argument REMOTE to `ess-rutils-htmldocs', fixed doc strings throughout. 2010-04-10 Martin Maechler * ess-s-l.el (S-indent-line): also consider '#!'; using patch from Jeffrey Arnold * ess-site.el (interpreter-mode-alist): ditto * ess-mode.el (ess-comment-indent): ditto 2010-03-25 Martin Maechler * ess-roxy.el (ess-roxy-get-function-args): also remove tabs 2010-03-24 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): although note is a keyword in SAS/GRAPH, it is not used very much, but the false positive %put note: ...; is used quite often; therefore, the note statement is no longer fontified 2010-03-24 Martin Maechler * ess-roxy.el (ess-roxy-mode): font-lock-add-keywords etc is not available and hence not called for XEmacs. 2010-03-22 Martin Maechler * ess-custom.el (ess-eval-deactivate-mark): change default to t 2010-02-16 Sebastian P. Luque * ess-rutils.el: 4268 Removed `ess-rutils-chgdir', already available as `ess-change-directory' in ess-utils.el, and rebound key to that function in menu and optional key bindings. 2010-02-15 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): more statement names 2010-02-05 Stephen Eglen * ess-custom.el: Tidy up docstrings for defcustom items. Asterisk is not used at start of docstring; prefer 'Non-nil means ...' notation for binary variables. 2010-02-05 Sebastian P. Luque * ess-rutils.el: 4265 Placed `ess-rutils-keys' under the ess-R customization group, not under the inexistent ess-r. 2010-02-05 Henning Redestig * ess-custom.el (ess-user-full-name): defines the user name which is also becomes default for the author field in roxy entries 2010-02-04 Sebastian P. Luque * ess-rutils.el: New file 2010-02-03 Rodney Sparapani * Makefile (clean): remove more (and hopefully all) legacy .elc files * renamed ess-mous.el to ess-mouse.el (renames appear to be complete) 2010-02-02 Henning Redestig * ess-roxy.el (ess-roxy-update-entry): corrected behavior when adding roxygen entries to function with preceeding comments * deleted ess-roxygen.el * ess-r-d.el removed references to ess-roxygen.el * ess-site.el removed references to ess-roxygen.el, replaced with ess-roxy.el 2010-02-01 Rodney Sparapani * Makefile: add ess-comp.el to dependencies for targets with PRELOAD (as it should be) 2010-01-27 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): new procedure names for SAS/STAT 9.0/9.1/9.2 2010-01-26 Rodney Sparapani * renamed essl-s.el to ess-s-l.el * renamed essddr.el to ess-rd.el * renamed essd-sp6w.el to ess-sp6w-d.el * renamed essd-sp6.el to ess-sp6-d.el * renamed essd-sp5.el to ess-sp5-d.el * renamed essd-sp4.el to ess-sp4-d.el * renamed essd-sp3.el to ess-sp3-d.el * renamed essd-s4.el to ess-s4-d.el * renamed essd-s3.el to ess-s3-d.el * renamed essd-rgui.el to ess-r-gui.el * renamed essd-r.el to ess-r-d.el * renamed essd-r-args.el to ess-r-args.el * renamed essa-r.el to ess-r-a.el * renamed ess-cust.el to ess-custom.el * renamed ess-emcs.el to ess-compat.el 2010-01-22 Martin Maechler * ess-roxy.el: new file from Henning Redestig, after moving customizations to * ess-cust.el: + ess-roxy things 2010-01-20 Rodney Sparapani * ess-sas-l.el (SAS-mode-font-lock-keywords): add some common survival analysis statements to keywords (SAS-mode-font-lock-keywords): remove some common false positives for 1 and 2 letter SAS statements * Makefile (clean): remove old-fashioned names too (see below) 2010-01-18 Rodney Sparapani * essl-bugs.el renamed to ess-bugs-l.el * essd-bugs.el renamed to ess-bugs-d.el * essd-jags.el renamed to ess-jags-d.el * essl-sas.el renamed to ess-sas-l.el * essd-sas.el renamed to ess-sas-d.el * essa-sas.el renamed to ess-sas-a.el * essl-sta.el renamed to ess-sta-l.el * essd-sta.el renamed to ess-sta-d.el 2010-01-18 Stephen Eglen * essd-els.el (ess-remote): Use `ess-current-process-name' as the local process name if none passed to ess-remote. 2010-01-18 Martin Maechler * ess-utils.el: drop (ess-chop1) * essd-r.el (ess-r-versions-create): no longer use ess-chop1 2009-12-07 Martin Maechler * ess-inf.el (ess-ddeclient-p): fix blunder; add (ess-force-buffer-current) for now. 2009-12-04 Martin Maechler * ess-inf.el (ess-load-file): use microsoft-p instead of (ess-ddeclient-p) as that fails to start R automagically. 2009-12-01 Rodney Sparapani * essa-sas.el (ess-sas-graph-view-viewer-default): kodakimg went the way of the dodo 2009-11-30 Rodney Sparapani * essa-sas.el (ess-sas-rtf-portrait): oops, 11 is too big, but 10.5 is just right; also, refresh the file before making an RTF out of it 2009-10-28 Martin Maechler * ess-site.el (ess-microsoft-p): add 'help_type = "text"' to post-run-hook in the microsoft case. 2009-10-26 Martin Maechler * ess-cust.el (inferior-ess-r-help-command): use .help.ESS() now * essd-r.el (R): define .help.ESS(), R-version dependently 2009-10-09 Rodney Sparapani * essa-sas.el (ess-sas-rtf-portrait): boost portrait font point size to 11 2009-10-07 Rodney Sparapani * essa-sas.el (ess-sas-rtf-font-name): now you can specify the font that MS RTF are created with; previously, these were created with courier, however, this font is thin and hard to read with MS Office and OpenOffice 2009-10-06 Stephen Eglen * ess-cust.el (inferior-ess-r-help-command): New variable to allow htmlhelp to be set. * essd-r.el (R-customize-alist): Use above var. 2009-09-21 Rodney Sparapani * ess-mode.el (ess-electric-brace): skeleton-pair takes precedence 2009-09-02 Rodney Sparapani * essa-sas.el (ess-sas-rtf-portrait): OpenOffice Writer and Microsoft Word have different default margins which often leads to the same document displayed differently in each of the applications. The wider OOWriter margins are now enforced so that either application can be used to view the documents correctly. 2009-08-05 Rodney Sparapani * ess-cust.el (ess-r-args-electric-paren): must default to nil requires a conscious decision to turn on since it will mysteriously override smart-paren features like skeleton-pair * ess-mode.el (ess-mode): define "(" key only when ess-r-args-electric-paren is t for similar reasons 2009-06-16 Rodney Sparapani * ess-trns.el (ess-transcript-send-command-and-move): patch supplied by tyler.smith@mail.mcgill.ca see the related discussion at https://stat.ethz.ch/pipermail/ess-bugs/2008q1/000489.html 2009-06-08 Martin Maechler * ess-inf.el (ess-eval-linewise): keep deactivate-mark local 2009-06-05 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): missed an abbreviated keyword 2009-06-05 Stephen Eglen * ess-utils.el (ess-change-directory): New function. 2009-06-04 Rodney Sparapani * ess-utils.el (ess-num-or-zero): added (ess-num-or-zero arg) If arg is a number, then return that number, otherwise return 0 * essa-sas.el (ess-sas-goto): fix the long-time bug of generating an error in (ess-sas-goto "log") when .log does not exist 2009-06-03 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): adding a few more rare NOTES * ess-mode.el (ess-mode): turn off annoying message by default, pass nil to turn it back on (ess-set-style something nil) 2009-06-02 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): kill a false positive bug for ERRORs/WARNINGs 2009-06-01 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): in: needs to be a special case for some reason 2009-05-28 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): last tweak to comment statement identification (very optimistic) * essa-sas.el (ess-sas-goto-log): no longer highlighting error messages this feature never worked quite right (and was XEmacs only which is worse) after highlighting an error message, moving point would cause an unwanted highlighting between point and mark; why god, why?!? 2009-05-27 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): get MPRINT right in the case where it is followed by a comment and add Pipe command= and fix functions finally 2009-05-26 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): make call functions explicit, correct a few omissions, add RX functions... note that not all functions are yet on the list as there are LOTS of functions also, fixing a bug... int( should only be matched at the beginning of a word, however, it seems to also be finding MPRINT(. there must be a bug in the font-locking code somewhere 2009-05-22 Rodney Sparapani * essl-bugs.el, essd-bugs.el, essd-jags.el, essl-sas.el, essa-sas.el: update headers/copyrights * essl-sas.el (SAS-mode-font-lock-keywords): fine-tuning ERRORs/WARNINGs 2009-05-21 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): a few minor changes, ERRORs/NOTEs/WARNINGs 2009-05-20 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): fix error messages that go to two lines and kill a long-running bug biting adjacent comments /* comment type 1 */ followed by * comment type 2 ; migration complete! (should have done it 9 years ago) there are certainly going to be some special/missed cases of false positives/negatives (bug reports and patches welcome!) 2009-05-19 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): more alphabetizing, re-arranging, etc. 99.95% 2009-05-18 Rodney Sparapani * essa-sas.el (ess-sas-toggle-sas-log-mode): really, really fixed now (3rd times a charm) 2009-05-15 Rodney Sparapani * ess-eldoc.el/ess-roxygen.el/ess-toolbar.el: added GPLv2 or later header, etc. * essl-sas.el (SAS-mode-font-lock-keywords): a few fixes for functions and a missed NOTE 2009-05-14 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): major overhaul complete (99.9%) PROCs now highlighted most keywords recognized (however, some dataset options are still needed) NOTEs and WARNINGs better detected in .log (ess-sas-run-regexp-opt): the new font-locking is better in many ways than the old font-locking so the default is now to use it; set this variable to nil to use the old font-lock code * essa-sas.el (ess-sas-toggle-sas-log-mode): still trying to get this right, first kill .log buffer, then re-open (see below) 2009-05-13 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): a few more keywords, a bug-fix and some comment re-organization, 99.5% 2009-05-12 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): even more fixes 2009-05-11 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): more simplification/alphabetization; 99% complete 2009-05-08 Rodney Sparapani * ess-font-lock.el (ess-font-lock-rmh, etc.): modify so they work on XEmacs * essl-sas.el (SAS-mode-font-lock-keywords): more fixes and some alphabetizing (seriously, let's keep these in order, otherwise, it is very difficult to maintain) 95% of the hand-coded regexps now handled by regexp-opt, 2009-05-04 Rodney Sparapani * essa-sas.el (ess-sas-toggle-sas-log-mode): to re-font-lock, reverting may not be enough; killing buffer and re-opening is necessary in some circumstances * essl-sas.el (SAS-mode-font-lock-keywords): 3/4's of the way there. regexp-opt code updated to a reasonable fax of the font-lock code it replaced. 2009-04-20 Rodney Sparapani * essl-sas.el (ess-sas-run-regexp-opt): the long overdue change from make-regexp to regexp-opt is under way. Setting ess-sas-run-regexp-opt to something other than nil will result in the old make-regexp code to be used by regexp-opt. This is a half-step in the right direction. The regexp-opt code will be easier to maintain than the hand-coded regexps. However, this means that the font-locking will revert to what it was circa 2001-2 :o( Over time, this code will be upgraded so that the font-locking will be up-to-date with what is currently available and incorporate the changes necessary for v. 9.2 and beyond. 2009-04-01 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): add PROC MAPIMPORT 2009-03-16 Stephen Eglen * ess-toolbar.el (ess-make-toolbar-emacs): For Emacs 23, images need to be on image-load-path. This variable is set at bottom of the file. 2009-03-13 Stephen Eglen * essd-bugs.el (ess-bugs-mode): Set comment-start to provide basic comment functionality. 2009-03-05 Rodney Sparapani * essa-sas.el (ess-sas-rtf-portrait, ess-sas-rtf-us-landscape, ess-sas-rtf-a4-landscape): after creation, close rtf buffer, avoids an annoying confirmation question about visiting buffer 2009-02-26 Rodney Sparapani * essl-bugs.el (ess-bugs-hot-arrow): Substitute <- for = key press 2009-01-30 Stephen Eglen * essd-r-args.el (tooltip-show-at-point): New function. Contributed by Erik Iverson . (ess-r-args-show): Use tooltip-show-at-point. 2009-01-22 Martin Maechler * ess-mode.el (ess-mode): use run-mode-hooks only in newer Emacsen 2009-01-08 Martin Maechler * essddr.el (Rd-keywords): new + shuffling + comment * essd-sas.el (SAS-mode): activate a bug fix; BTW, it's for 22.3 and 22.2 2009-01-07 Rodney Sparapani * essd-sas.el (SAS-mode): fix a bug in GNU Emacs 22.3.1 which erroneously performs font-lock on lowercase only 2008-12-17 Rodney Sparapani * ess-site.el: we no longer should be encouraging users to edit this file (except possibly in extraordinary circumstances in 2 places). Therefore, I have removed all but 2 references to uncommenting of code. However, the examples are instructive so they remain, but the wording does not suggest uncommenting. This is only a half-step in the direction that we want to go. 2008-12-15 Rodney Sparapani * essd-jags.el (ess-jags-switch-to-suffix, ess-jags-na-bug): adding 2 new local variables: ess-jags-burnin and ess-jags-update. ESS[BUGS] has similar variables, but the modern defaults are an order of magnitude bigger, so it seemed like creating new variables was warranted also, the "log" of the run is now .jog (like BUGS which is .bog); .out created too many problems since the BOA output files have that extension as well 2008-12-11 Martin Maechler * noweb-mode.el (noweb-indent-line): update chunk vector first: fixes buglet {[Enter] in almost empty *.Rnw buffer} reported by Henric Nilsson. (noweb-code-quotes-handling): now *disables* by default the calling of the (noweb-hide-code-quotes) .. (noweb-restore-code-quotes) pair, consequently preventing catastrophic behavior in large *.Rnw files with "[[" in R output. 2008-12-04 Rodney Sparapani * ess-mode.el/ess-trns.el: delete key no longer remapped to "backspace" 2008-12-04 Martin Maechler * ess-site.el: ess-r-versions-created currently needed too. 2008-11-29 Martin Maechler * noweb-mode.el: TODO cleanup; notably replacing more (stringp (car (noweb-find-chunk))) by (noweb-in-code-chunk). * noweb-mode.el (noweb-mode): use before-change-functions, noweb-chunk-boundary-changed etc; code from Markus Triska. 2008-11-28 Martin Maechler * noweb-mode.el (noweb-electric-<): {from Markus Triska}: also insert a (closing) "@". * ess-emcs.el (w32-short-file-name): Xemacs 21.5(beta) on Windows does not know win32-short-file-name anymore, but mswindows-*. 2008-11-27 Martin Maechler * ess-emcs.el (ess-has-tooltip): move from ./ess-cust.el and test for Emacs >= 21.x. Consequently ESS works again in 'emacs-20.7 -nw'. 2008-11-26 Martin Maechler * ess-swv.el (ess-swv-menu): a version that "works" with Xemacs; still with a FIXME. * noweb-mode.el, ess-rdired.el: replace (next-line .) by (forward-line .); also get rid of compilation warning about noweb-font-lock-mode. 2008-11-25 Martin Maechler * noweb-mode.el (noweb-mode): fix "add-local-hook" thinko; also correctly indent (and use ';;' for full-line comments) 2008-11-24 Rodney Sparapani * essd-jags.el (ess-jags-mode): adding comment-region functionality to ESS[JAGS] * essd-jags.el (ess-jags-switch-to-suffix): JAGS 1.0.3 is very finicky about monitor-ing AND thin-ing; the syntax and semantics are primitive; most likely this will be re-visited in a future release of JAGS; in the time being, a minor change to ESS[JAGS] and the recommendation that variables be monitor-ed implicitly via the Local Variable ess-jags-monitor 2008-11-20 Martin Maechler * ess-swv.el (noweb-minor-mode-menu): add to "Noweb" menubar menu. 2008-11-17 Rodney Sparapani * Makefile (essl-sas.elc): Added formerly unaccounted for essa-sas.el dependency. * Makefile (essl-bugs.elc/essd-bugs.elc/essd-jags.elc): Added formerly unaccounted for BUGS/JAGS targets/dependencies. 2008-11-14 Stephen Eglen * essd-r.el (R-mode): Add keybinding (C-c C-o) for ess-roxygen-fn. * ess-site.el (ess-roxygen-fn): Add autoload. * ess-roxygen.el (ess-roxygen-fn): Ensure that newlines before and after template are inserted correctly. 2008-11-13 Rodney Sparapani * essl-sas.el (SAS-editing-alist): M-x comment-region was not using /* */ style comments for some reason that I can't fathom. It is now. 2008-11-10 Rodney Sparapani * noweb-mode.el (noweb-mode): Only the local value of after-change-functions should be modified to avoid problems in other modes. Special thanks for the bug report/fix from markus.triska@gmx.at * noweb-mode.el (noweb-mode): By convention, every major mode starts by calling `kill-all-local-variables'. Importantly, this automatically calls `change-major-mode-hook'. This is documented in the "Major Mode Conventions" of the Elisp info manual. Special thanks (again :o) for the bug report/fix from markus.triska@gmx.at * ess-mode.el (ess-mode): `ess-mode' should use `run-mode-hooks' rather than `run-hooks', because it is a major mode. This way, you ensure that `change-major-mode-hook' is called (and everything else). Special thanks for the bug report/fix from david.reitter@gmail.com 2008-11-06 Rodney Sparapani * ess-swv.el: fix for embedded blanks in PDF reader and PDF files 2008-10-28 Rodney Sparapani * ess-cust.el (ess-sta-delimiter-friendly): see below * ess-inf.el (ess-eval-linewise): Stata allows semi-colons to be used in batch, but not interactive processing. This leads to madness when you are trying to step through a file that was written for batch with semi-colons. Now, if you set ess-sta-delimiter-friendly to t (in the ess-Stata group), iESS[Stata] will convert semi-colons to newlines on-the-fly. Beware if you have string literals with embedded semi-colons as this simple fix does not check for such complexity. 2008-08-30 Martin Maechler * ess-cust.el (ess-R-common-font-lock-keywords): new variable for better modularization (inferior-ess-R-font-lock-keywords): now with*OUT* the keywords. Ditto for -S- instead of -R- . 2008-08-25 Martin Maechler * ess-mode.el (ess-end-of-function): more careful final advance. 2008-08-24 Stephen Eglen * ess-roxygen.el (ess-roxygen-fn): Use ##' for markup so that comments don't move upon reindentation. 2008-08-23 Stephen Eglen * ess-roxygen.el: New file. 2008-08-20 Martin Maechler * noweb-mode.el (noweb-set-chunk-code-mode): use (regexp-quote chunk-name) instead of just chunk-name, here and in another few cases. Thanks to a patch from Rafael Laboissiere at Debian. 2008-07-30 Martin Maechler * ess-inf.el (ess-eval-region): (deactivate-mark) when the new customizable variable * ess-cust.el (ess-eval-deactivate-mark): is non-nil. 2008-07-28 Martin Maechler * ess-mode.el (ess-end-of-function): tweak 2008-07-23 Martin Maechler * ess-mode.el (ess-end-of-function): if not at end of line move further. 2008-07-22 Martin Maechler * essd-r-args.el (ess-r-args-auto-show): only "act" if ess process is still active 2008-07-18 Rodney Sparapany * essd-jags.el (ess-jags-switch-to-suffix): using ess-jags-system; see long svn message 2008-06-12 Stephen Eglen * essd-r.el (ess-R-complete-object-name): comint-bol given nil argument to work on XEmacs (the arg is optional on Emacs, but not in XEmacs). 2008-06-09 Martin Maechler * ess-inf.el (get-ess-process): if NAME is not running, do not automatically restart a new process, if there are others running. 2008-06-03 Stephen Eglen * ess-cust.el (ess-default-style): Remove quote from RRR value. 2008-05-24 Martin Maechler * ess-inf.el (ess-start-process-specific): new function, implementing the process (re)start of yesterday (get-ess-process): also call ess-start-process-specific) if the process is no longer running. (ess-eval-line-and-step): (save-excursion ..) even earlier. 2008-05-23 Martin Maechler * ess-inf.el (ess-request-a-process): when there is no associated ess process, start R automagically if ess-language is "S" 2008-05-22 Stephen Eglen * Makefile (ELC): Add ess-eldoc.elc to the ELC variable list. Debian bug 482351 reported by Sebastian Luque. 2008-05-19 Martin Maechler * ess-inf.el: use make-local-variable 'comint-use... to silence warning 2008-04-10 Martin Maechler * ess-cust.el (ess-use-R-completion): customizable boolean for this: * ess-inf.el (ess-internal-complete-object-name): new name for original (ess-complete-object-name). * ess-inf.el (ess-complete-object-name): now simple wrapper to either ess-R-complete-object-name or ess-internal-complete-object-name. * essd-r.el (R): use ess-R-complete-object-name for R versions >= 2.5.0 {where pkg 'rcompgen' became recommended}; check for baseenv() only for older versions of R. 2008-04-07 Martin Maechler * ess-emcs.el (ess-line-beginning-position): defalias renamed from original 'line-beg...' in order to be good emacs citizens. 2008-03-31 Martin Maechler * essd-r.el (R-fix-T-F): remove "_" (and extraneous "\"); thanks to Stephen 2008-03-31 Stephen Eglen * ess-mode.el (ess-continued-statement-p): remove _ from regexp to fix Kurt's bug re indendation after NA_INTEGER_ 2008-03-11 Stephen Eglen * ess-cust.el (custom): Remove old code checking if custom package is provided; custom is now in all recent versions of Emacs and XEmacs. 2008-03-11 Martin Maechler * essd-r.el (ess-current-R-version, ess-current-R-at-least): two new utilities. * essd-r.el (ess-R-complete-object-name): modified from Jim MacDonald's 'alt-ess-complete-object-name, to work in R >= 2.7.0. 2008-03-05 Martin Maechler * ess-inf.el (inferior-R-input-sender): wrap into (save-current-buffer . ); thanks to patch from Lawrence Mitchell. 2008-01-17 Martin Maechler * ess-noweb.el (ess-noweb-use-font-lock): change default from window-system to font-lock-mode 2008-01-08 Martin Maechler * essl-s.el (ess-fix-miscellaneous): no 'literal in fixing "; #" 2007-12-28 Stephen Eglen * essd-sp6w.el (S+6-dialect-name): Make defcustom and change default to "S". Change of default suggested by Tim Hesterberg. 2007-12-27 Martin Maechler * ess-mode.el (ess-mode): set style to ess-style which is now in ess-mode-editing-alist .. which is now correctly defined in * essl-s.el (R-editing-alist): etc 2007-12-11 Martin Maechler * essd-r.el (inferior-ess-primary-prompt): s / * / ? / * ess-inf.el (ess-command): new optional argument 'no-prompt-check (ess-get-words-from-vector): ditto; make use of (ess-if-verbose-write); trailing white space "nuking" * ess.el: (ess-if-verbose-write): new shortcut for more compact code in other places. 2007-11-08 Stephen Eglen * ess-eldoc.el (ess-eldoc): Prefix the docstring by the name of the function, for readability. 2007-11-07 Stephen Eglen * ess-cust.el (ess-font-lock-mode): New variable. * ess-site.el: Use ess-font-lock-mode. 2007-09-28 Martin for Rodney Sparapany * essd-r.el (ess-find-rterm): yet another "replace \\ by /", needed for Xemacs (on Windows). 2007-09-12 Martin Maechler * essd-r.el (ess-r-versions-create): merged ess-rterm-versions-create into this one, using (if ..microsoft..); * ess-site.el: ditto * essd-r.el (ess-find-newest-R): fix M$: use ess-rterm-version-paths (ess-check-R-program-name): renamed from ess-check-R-name * ess-cust.el (ess-rterm-version-paths): add to doc string * ess-site.el: cleanup comments in "finding R versions" part 2007-09-11 Martin Maechler * ess-site.el (ess-versions-created): slightly more parallelism between microsoft and "normal". * ess-utils.el: remove long deprecated (defun ess-directory-sep) (ess-chop1, ess-drop-non-directories): new utilities. * essd-r.el (ess-r-versions-create): and (ess-rterm-versions-create): parallelized much more, to be merged later. (ess-find-rterm): now make use of ess-drop-non-directories: a "zip" file starting with R-2.6 now longer harms. 2007-09-10 Martin Maechler * ess-cust.el (R-editor et al): use "gnuclient" instead of "... -q" for Xemacs 2007-09-03 Martin Maechler * ess-comp.el (ess-message): use format-string - exactly * ess-site.el: {ditto} paralleling (message .); such that we can use (... "%s" msg) as recommended in here: * essd-r-args.el (ess-r-args-show): 2007-08-23 Martin Maechler * ess-cust.el (ess-SHOME-versions, et al): use (getenv "ProgramFiles") instead of "c:/progra~1..."; ditto in * essd-r.el etc. 2007-08-22 Martin Maechler * ess-site.el: replace kludgey (defun find-load-file-directory) by simple (locate-library .) thanks to a hint from Philipp Lord. 2007-08-15 Martin Maechler * essd-r-args.el (require 'tooltip): only when ess-has-tooltip is set; which is the case by default when *not* in Xemacs. 2007-07-26 Martin Maechler * ess-cust.el (ess-r-args-electric-paren): default changed to t; newbies should see the new feature automatically. 2007-07-24 Stephen Eglen * essd-r.el (ess-find-newest-R): New defun, to find the newest version of R, either for Unix or Windows. Result is cached in a variable, ess-newest-R. (ess-check-R-name): New defun to check that inferior-R-program-name points to an executable. (R-newest): Use ess-find-newest-R defun. (ess-find-newest-R): Add message whilst searching. * ess-site.el: Call ess-check-R-name once, upon startup. Searching for newest version takes place only if inferior-R-program-name is invalid. 2007-07-23 Stephen Eglen * ess-eldoc.el (ess-eldoc): Use ess-local-process-name rather than ess-current-process-name. 2007-07-21 Stephen Eglen * ess-inf.el (ess-command): Use with-current-buffer and simplify. * ess-help.el (ess-help-underline): Fix indenting. (ess-describe-sec-map): Use with-current-buffer. 2007-07-21 Martin Maechler * ess.el (ess-write-to-dribble-buffer): patch from Markus Triska . Most importantly, deactivate-mark is set to nil so that any active region is not affected. (Without this, in transient-mark-mode in GNU Emacs, highlighting of the region is lost when moving over chunks, and M-h (= mark-paragraph) on chunks doesn't work as expected.). Now also use with-current-buffer. 2007-07-16 Stephen Eglen * ess-site.el (ess-sqpe-versions-created): Remove call to ess-newest-R, and instead allow R-newest to find the newest version of R. This relies on a new devar, ess-r-versions-created, to store the other versions of R that were found when ess-site was loaded. * essd-r.el (R-newest): New defun. First time it is called, try to find the newest version of R. (ess-newest-r): Just return the name of the newst version of R; let R-newest do the fset call. * ess-mode.el (ess-function-pattern): Add defvar to quieten byte compiler. * ess-help.el (ess-help-mode): No need to make ess-local-process-name buffer local; that's done elsewhere. * ess-inf.el (ess-execute): Ditto. * ess-cust.el: Update many doc strings, and change some vars from defcustom to defvar. 2007-07-14 Stephen Eglen * essd-r.el (ess-find-newest-date): this-r should be a local var. 2007-07-13 Stephen Eglen * essd-r.el (ess-r-version-date): New defun, replacing ess-r-version-time as it returns the date stamp of R as a string rather than a time in seconds. (ess-find-newest-date): New defun, replacing ess-which-newest-date. 2007-07-11 Stephen Eglen * essd-r.el (ess-newest-r, ess-r-version-time, ess-which-newest): New defuns to find the newest version of R. * ess-site.el (ess-sqpe-versions-created): Use ess-newest-r. 2007-07-01 Stephen Eglen * ess-eldoc.el: New file: add support for ELDOC in R buffers. * essd-r-args.el (ess-r-args-get): Use ?\( rather than using string-to-char. Other small typo/doc fixes. 2007-06-29 Stephen Eglen * essl-sta.el (ordinary-insertion-filter): Delete this defun, it is also in ess-inf.el * ess-inf.el (inferior-ess-mode): Ensure font-lock-keywords-only is t (to fix bug in Emacs 22.1). Other small changes: - using `member' rather than lots of `string=' comparisons. - replacing (if cond (progn ...)) by (when cond ...) - replacing: (make-local-variable some-var) (setq some-var val) with (set (make-local-variable some-var) val) 2007-06-27 Stephen Eglen * ess-site.el (ess-restore-asm-extns): use `when' rather than `(if x (progn ...))'. 2007-06-13 Martin Maechler * ess-cust.el (ess-r-args-electric-paren): new custom variable to be used to toggle the `electric "(" behavior' in essd-r-args.el * ess-mode.el (ess-mode): define-key .. "(" if ..-electric-paren is set. * essd-r-args.el (ess-r-args-auto-show): new small function; activated by the above custom variable. (ess-r-args-get): use 'force ==> less asking for process 2007-06-13 Rodney Sparapani * essl-sas.el (SAS-mode-font-lock-keywords): fix in the "dlreg|hreg|..." regular expresseion. 2007-05-21 Martin Maechler * ess-inf.el (ess-request-a-process): give (message .) when not asking {see 2007-05-03}. 2007-05-11 Martin Maechler * ess-cust.el (ess-r-args-show-as): and others: moved (defvar ...) to * essd-r-args.el: and changed to (defcustom ...) * ess-cust.el (ess-S-non-functions): new variable to be used by * ess-cust.el (ess-r-args-keep-silent): new customizable variable. 2007-05-04 Stephen Eglen * essd-r.el(?`): define the backquote (`) character to be in the quote character syntax class. * ess-cust.el: Doc fix to comment regarding regexps for finding R functions. 2007-05-03 Martin Maechler * ess-inf.el (ess-request-a-process): Don't ask if there's only one process. * ess.el (ess-get-ps-viewer, ess-get-pdf-viewer): new functions, currently used in * ess-swv.el (ess-swv-PS, ess-swv-PDF): cleaned up; using the above and (ess-swv-run-in-R): fix bug in (message .); start R automatically if none is running. (ess-swv-PDF): use (call-process .) return value to detect errors from pdflatex. * ess-cust.el (ess-pdf-viewer-pref, ess-ps-viewer-pref): new user customizable variables. 2007-05-01 Martin Maechler * essd-r-args.el: new functionality donated from Sven Hartenstein, see http://www.svenhartenstein.de/emacs-ess.php 2007-04-26 Stephen Eglen * ess-inf.el (ess-get-words-from-vector): Doc fix. 2007-03-16 Martin Maechler * ess-swv.el (ess-swv-tangle): new; also rename all the ess-make to ess-swv-; and add back-compatibility wrappers (with warning) 2007-01-27 Stephen Eglen * essd-sp6w.el (S+6-msdos-initiate, S+6-initiate): Do not use (beginning-of-buffer), as it clobbers the mark. 2007-01-22 Martin Maechler * ess-cust.el (inferior-ess-safe-names-command): new try(names(.)); this finally gets rid of "hanging" in object completion, e.g., when options(error=recover) is active in R. * ess-inf.el (ess-object-names): using the above ..-safe-names-.. 2007-01-08 Martin Maechler * essa-sas.el (ess-sleep): eliminated, since no xemacs/emacs distinction needed: GNU emacs can well (sleep-for 0.12) 2007-01-06 Martin Maechler * ess-site.el (ess-microsoft-p): issue "options(chmhelp = FALSE)" for microsoft-p 2007-01-05 Martin Maechler * ess-inf.el (ess-eval-linewise): new argument 'wait-last-prompt' and 'sleep-sec' * ess-inf.el (ess-execute-screen-options): use wait-last.. and sleep-sec * ess-dde.el (ess-eval-linewise-ddeclient): use sleep-sec * essd-r.el (R): using ess-eval-linewise + 'wait (2 x) * ess-cust.el (ess-eval-linewise-sleep): new variable; default 0.06 2006-12-08 Stephen Eglen * ess-cust.el (Rnw-mode-hook): New hook. * essd-r.el (Rnw-mode): Use Rnw-mode-hook. 2006-12-07 Stephen Eglen * ess-utils.el (ess-sci-to-dec), essl-bug.el (ess-bugs-sci-to-round-4-dp), essl-bugs.el (ess-bugs-sci-to-round-4-dp), essd-s4.el: string-to-int is deprecated; use string-to-number. 2006-12-03 Stephen Eglen * noweb-mode.el (noweb-newline): Add noweb-indent-line. 2006-11-25 Martin Maechler * ess-swv.el (ess-makePS, ess-makePDF): search for PS and PDF viewer instead of using having 'gv' and 'acroread' hardcoded; thanks to patch from Leo . 2006-10-27 Stephen Eglen * ess-help.el (ess-submit-bug-report): Add note to use C-c C-c to send bug report. 2006-09-23 Martin Maechler * essddr.el (Rd-mode-insert-skeleton): add final "\n" 2006-09-22 Martin Maechler * ess-mode.el (ess-mode-menu): move "ess-execute" up; the menus are for beginners after all. * ess-inf.el (ess-command): make sure final prompt is deleted (again!). * ess-cust.el (ess-display-buffer-reuse-frames): new variable, defaulting to 't which is now used by * ess-inf.el (ess-display-temp-buffer): uses the above. Consequently, (ess-execute) reuses an *ess-output* frame. 2006-09-15 Martin Maechler * ess-inf.el (ess-command): get rid of ess-save-lastvalue-command * .... also in some other places. Consequently we no longer mess with .Last.value in the S dialects. 2006-09-14 Martin Maechler * ess-inf.el (ess-complete-object-name): add comment (ess-get-object-list): some more (ess-write-to-dribble-..) diagnostic output. 2006-08-31 Martin Maechler * ess-swv.el (ess-makeLatex): improved 2006-08-30 Martin Maechler * noweb-mode.el (noweb-mode-prefix-map): do *not* override M-n C-h 2006-08-28 Martin Maechler * ess-swv.el (ess-makeSweave): improve to show *R* buffer; also add comments about more "TODO"s * ess-swv.el (ess-make*): using (search .) needs 'cl. 2006-07-31 Martin Maechler * essddr.el (Rd-mode-map): add C-c C-c (as in ess-mode) 2006-05-23 Martin Maechler * essd-r.el (Snw-mode): synonym for Rnw-mode * ess-site.el (auto-mode-alist): *.Snw -> Snw-mode * essl-s.el (ess-toggle-S-assign-key): changes (ess-S-assign-key): new default -- the one Seth uses. 2006-05-16 Stephen Eglen * ess-utils.el (ess-find-exec): Remove explicit loop counter (i) and rewrite while loop. (ess-find-exec-completions): Remove explicit loop counters (i,j) and rewrite while loops. Add test to check that a directory on exec-path is not "" (which signifies current working directory) as that confuses tramp. (ess-return-list): Indent/doc fix. (ess-clone-local-variables): Indent. (ess-directory-sep): Indent (perhaps this should be deleted?) 2006-05-12 Martin Maechler * essd-r.el (R-site-search): experimental function provided by Sebastian Luque on ess-help, May 1--2, 2006 2006-05-03 Martin Maechler * ess-inf.el (ess-eval-function): and *-or-para...: use (ess-read-object-name-default) instead of simpler but slightly buggy (ess-extract-word-name). 2006-04-29 Martin Maechler * ess-mode.el (ess-mode-map): work around Xemacs bug ("Meta backspace") 2006-04-04 Richard M. Heiberger * essd-sp6w.el (S+6) and (S+6-msdos): change string to detect S-Plus 6.0, previous string was catching the date 2006.03.30. * ess-cust.el (ess-SHOME-versions): add splus80 2006-04-03 Richard M. Heiberger * ess-help.el (inferior-ess-help-filetype): distinguish between regular S language help files that can appear in an emacs buffer and "chm" (compiled html) used by S-Plus that cannot appear in an emacs buffer. * essd-r.el * essd-s*[3456]*.el * ess-cust.el * ess-inf.el * ess-mode.el 2006-04-03 Stephen Eglen * ess-inf.el (ess-show-buffer): Use ess-select-frame-set-input-focus. * ess-utils.el (ess-select-frame-set-input-focus): New defun. 2006-03-26 Stephen Eglen * ess-help.el (ess-help-mode): Dynamically set section keys. (ess-submit-bug-report): Use insert-buffer-substring, not insert-buffer (byte compiler warning). 2006-03-25 Stephen Eglen * ess-help.el (ess-describe-sec-map): make sure to get proper *-sec-keys-alist 2006-03-24 Martin Maechler * ess-inf.el (ess-eval-linewise): now calls (ess-eval-linewise-ddeclient .) when appropriate; similar in other functions; the same applies to * ess-help.el: autoload and *-ddeclient functions when needed. * ess-mode.el: dito * ess-dde.el: renamed from ess-iw32.el: removed all function *RE*definitions and all (require .) leaving only `*-ddeclient' function definitions; * ess-help.el(ess-help-mode-map): and menu; added one of the new ess-eval-*and-step (of a week ago). 2006-03-23 Richard M. Heiberger * ess-iw32.el (ess-display-help-on-object) repair prompt on Windows to suggest a default as on Unix. 2006-03-21 Martin Maechler * essl-s.el (ess-toggle-S-assign-key): based on code by Seth Falcon; see ESS-help; TODO: a better 'toggle' 2006-03-17 Martin Maechler * ess-inf.el (ess-eval-paragraph-and-step): new; (ess-eval-paragraph-and-go): dito. (ess-eval-region): now returns a (beg end) list (ess-eval-function-or-paragraph-and-step): new, to be bound to C-cC-c * ess-mode.el (ess-beginning-of-function): &optional no-error (ess-mode-map): add ess-eval-paragraph-and-(go|step) and ess-eval-function-or-paragraph-and-step (ess-mode-menu): dito 2006-03-02 Stephen Eglen * ess-utils.el (ess-find-exec-completions): Doc fix. 2006-03-01 Martin Maechler * ess-inf.el (ess-execute-screen-options): fix for case where there's more than one S process. 2006-02-09 AJ Rossini * ess-comp.el: copyright dates changed. * ess-debug.el: added minimal documentation. Removed cruft (this is cruft?). copyright dates changed. 2006-02-09 Anthony Rossini * ess-inf.el (ess-proc-name): better logic, cleanup. * ess-cust.el (ess-use-inferior-program-name-in-buffer-name): new variable. * ess-site.el: documentation for this * ess-inf.el (inferior-ess): use new variable for buffername construction. 2006-02-09 Anthony Rossini * ess-inf.el (ess-proc-name): cleaned up truly ugly logic. 2006-02-08 Martin Maechler * essl-s.el (ess-dump-to-src): minimal improvement 2006-02-04 Martin Maechler * essl-sas.el (SAS-mode-font-lock-keywords): font-lock in any case, also for dumb terminals 2006-01-20 Martin Maechler * essl-s.el (ess-add-MM-keys): add *-execute-screen-options 2006-01-06 Stephen Eglen * ess-install.el (ess-install-byte-compile): New defun. * msdos.el (msdos-minor-mode): Shouldn't msdos-minor-mode be defined earlier in the file? Have not moved yet, as I cannot test on Unix. * ess-swv.el (ess-makePS): let* needed so that namestem can be used within definitions of let. * ess-inf.el (ess-bufs-in-frame): Defvar. * mouseme.el (mouse-me-execute): This function is broken, so I've made it just report an error [w32-shell-execute not present]. * essddr.el (Rd-font-list): Move to top of document, before it is used in defuns. (Rd-active-mark): Put empty definition of defun before defining conditional on Emacs/Xemacs. This silences the compiler. * essd-sp4.el (S+4, S+4-msdos): Replace (beginning-of-buffer) with (goto-char (point-min)). * essd-sp3.el (S+3-mode): Correct call to imenu (defun was broken). * essd-r.el (ess-rterm-versions-create): version-root should be a local variable. * ess.el (ess-write-to-dribble-buffer): Chnage insert-string to insert. * ess-swv.el (ess-makeSweave): ess-command is local variable. * ess-rdired.el (ess-rdired-sort-num): Make defvar. * ess-mode.el (ess-parse-errors): Change string-to-int (obsolete) to string-to-number. * ess-iw32.el (ess-eval-region-ddeclient): Replace (beginning-of-buffer) with (goto-char (point-min)). * ess-emcs.el: Change string-to-int (obsolete) to string-to-number. * ess-cust.el (inferior-ess-primary-prompt): Add group, type. (inferior-ess-secondary-prompt): Add group, type. (ess-process-name-list): Make defvar. * ess-install.el: Add call to byte compiler to recompile all files in the new lisp directory. 2005-12-29 Stephen Eglen * essd-sp6.el (ess-s-versions-create): If ess-s-versions is nil, do not search for other versions of S using this method (ess-s-versions-list will still be examined). * essd-r.el (ess-r-versions-create): If ess-r-versions is nil, do not search for other versions of R. 2005-12-13 Martin Maechler * essd-r.el (R-customize-alist): ess-*lastvalue-command's now use baseenv(). (R): make sure 'baseenv()' will work. 2005-11-24 Martin Maechler * essl-s.el (ess-fix-EQ-assign): slight improvement in regexp. 2005-11-24 AJ Rossini * essd-r.el (R): cygwin, at least older versions, probably need to consider adding the --ess flag rather than the --no-readline, since we most likely are using Rterm and not R. 2005-11-22 Martin Maechler * essl-s.el (ess-dump-args-and-go): don't use (replace-string ..) (ess-fix-miscellaneous): also remove trailing ";" 2005-11-09 Stephen Eglen * ess-inf.el (inferior-ess): Update doc string to describe inferior-ess-same-window and inferior-ess-same-window. * essd-sp6.el (ess-s-versions-create): kill temporary buffer after new defuns have been loaded. 2005-11-07 AJ Rossini * essa-sas.el (ess-sas-submit-pre-command): make sure that if there is no shell, i.e. (= (getenv "SHELL") nil), that we don't die. This is true for old cygwins. 2005-10-12 Stephen Eglen * ess-toolbar.el (ess-add-icon-xemacs): Swap caddr for (nth 2) * essd-sp6.el (ess-s-versions-create): Use nth rather than car, cadr, caddr. Much more readable and removes reliance on cl library for caddr. 2005-10-03 Stephen Eglen * essd-sp6.el (ess-s-versions-list): New variable. (ess-s-versions): New variable. (ess-s-versions-create): New defun to allow other versions of S to be added to ESS, similar to ess-r-versions-create. 2005-09-26 Martin Maechler * essd-r.el (R): add space after inferior-R-args 2005-09-07 Martin Maechler * ess-inf.el (ess-complete-filename): work around Xemacs bug: (comint-dynamic-complete-filename) fails in Xemacs 21.4.17 2005-09-06 Martin Maechler * ess-trns.el (ess-transcript-mode-menu): add entry "Switch S process" 2005-09-02 Stephen Eglen * essd-r.el, ess-cust.el (ess-r-versions): Moved this variable from ess-cust.el. (As a custom variable, it could be set after ess-site had been loaded, which is the time when its value is used. Hence customized values were ignored.) (ess-r-versions-create): Apply unique to list of list of R binaries after stripping off the directory. This prevents multiple entries with the same name occuring in the ESS -> Start Process -> Other menu. 2005-08-20 Martin Maechler * essl-sta.el (STA-syntax-table): allow // for comments 2005-08-03 Martin Maechler * ess-inf.el (inferior-R-1-input-help): '^ *help': do not trigger for, e.g., showMyhelp(). 2005-07-28 Stephen Eglen * ess-help.el (ess-nuke-help-bs): Add doc string and remove interactive specification. 2005-07-09 Martin Maechler * ess-mode.el (ess-beginning-of-function): * ess-mode.el (ess-R-function-pattern) etc: moved here from * ess-cust.el: greatly improved to also catch things like "names<-.foo" <- function(.) { .... } 2005-07-08 Martin Maechler * ess-menu.el (ess-imenu-S-generic-expression): adding SetAs(..), but also e.g., setGroupMethod(..) 2005-07-05 Stephen Eglen * ess-help.el (ess-help-bogus-buffer-p): Document NR-FIRST, and reinstate code such that if NR-FIRST is nil, we search just the first 120 characters of a help buffer to see if it is bogus. Have removed check for R text of the form "Help for topic `rlm'..." since this is caught elsewhere (see below). (ess-display-help-on-object): In R help buffers, if options("help.try.all.packages" = TRUE) then ?rlm will list which packages rlm is defined in. This help buffer is not bogus, but instead is now relabelled *help[R](rlm in packages)*. 2005-07-05 Martin Maechler * ess-mode.el (ess-beginning-of-function): more helpful error message for finding the bug with A <- # comment ... function(.){..} 2005-06-23 Martin Maechler * essl-s.el (ess-fix-EQ-assign): extend to propose more s/=/<-/ 2005-05-05 Stephen Eglen * ess-inf.el (ess-complete-filename): Add doc string. (inferior-ess-mode): Change order of functions added to comint-dynamic-complete-functions local hook. Removed the value `t' from that hook to prevent the global value of that hook also being used. 2005-04-16 Stephen Eglen * ess-toolbar.el (ess-make-toolbar): If Emacs is running in a terminal, tool-bar-map is not defined (because tool-bars cannot be displayed) and hence we should not bother trying to make a tool-bar. 2005-04-15 A.J. Rossini * ess-swv.el: New file for Sweave, slightly modified from code done by David Whiting. 2005-04-08 Stephen Eglen * essl-s.el (R-editing-alist): Changed comment-start to # and set comment-add to 1 so that ## is put on empty lines at correction indentation. 2005-04-07 Martin Maechler * ess-mode.el (ess-mode-menu): add "Toggle Auto-Fill Mode" 2005-04-06 Stephen Eglen * ess-toolbar.el (ess-toolbar-items): Use :set so that when this variable is customized, the toolbar is remade for the current session. 2005-04-06 Martin Maechler * essl-s.el (ess-mode-hook): set *normal-*auto-fill-function, not auto-fill-function itself. 2005-03-21 Martin Maechler * ess-emcs.el (enable-multibyte-characters): define (to nil) if not bound. Workaround for Xemacs problems with (ess-do-auto-fill). 2005-03-08 Stephen Eglen * ess-inf.el (inferior-ess-output-filter, inferior-ess-strip-ctrl-g): New defuns. (inferior-ess-output-filter): Add filter to catch ^G for ringing bell. Code taken from Kurt's octave-mod.el. 2005-03-07 Martin Maechler * ess-cust.el (ess-S-keywords): add "terminate" 2005-03-04 Martin Maechler * ess-cust.el: use (regexp-opt .) constructor 2005-03-03 Martin Maechler based on much from Kurt Hornik * ess-cust.el (ess-R-function-pattern): and ess-S-function-pattern instead of ess-function-pattern. * essl-s.el (S+common-cust-alist): set ess-function-pattern * essd-r.el (R-customize-alist): set ess-function-pattern * ess-cust.el (ess-R-mode-font-lock-keywords): and ess-S-* instead of just one ess-mode-font-lock * essl-s.el (R-editing-alist): additionally to S-editing-alist * essd-r.el (R-customize-alist): use R-editing-alist * ess-cust.el (inferior-ess-R-font-lock-keywords): and ess-S-* instead of just one; building on auxiliary variables. * essl-s.el (S+common-cust-alist): set inferior-ess-font-lock-* * essd-r.el (R-customize-alist): dito 2005-03-03 Martin Maechler from Kurt Hornik * essl-s.el (add-hook 'ess-mode-hook): new ess-do-auto-fill * ess-emcs.el (line-beginning-position): if needed by older Xemacsen * ess-utils.el (ess-do-auto-fill): new - slight change of GNU emacs' do-auto-fill. * ess-utils.el (ess-inside-string-p): new (ess-inside-string-or-comment-p): renamed from 'inside-string/comment-p' 2005-02-11 Rodney Sparapani * essl-sas.el: do not turn on sas-listing-mode via auto-mode-alist. 2005-02-09 Martin Maechler really 2005-02-09 Kurt Hornik * essd-r.el (R): do not (let .. default-process-coding-system) !! 2005-01-29 Martin Maechler * ess-inf.el (ess-quit-r): comment out all "questioning": it's wrong to do this when a user had something like "--save" on startup. 2005-01-24 Martin Maechler * ess-inf.el (ess-quit): drop 'dont-cleanup' argument 2005-01-24 Stephen Eglen * ess-inf.el (ess-cleanup): Use ess-S-quit-kill-buffers-p. * ess-cust.el (ess-S-quit-kill-buffers-p): New variable. 2005-01-22 Stephen Eglen * ess-inf.el (ess-quit-r): Default response (if RET pressed on its own) is that workspace image will not be saved. Do not append "-exited" to iESS buffers (likewise for ess-quit). 2005-01-18 Stephen Eglen * ess-inf.el (ess-quit-r): New function to handle killing an *R* process. (ESS asks whether you wish to save image.) * ess-inf.el (ess-quit): Use ess-quit-R only for *R* processes. Document the dont-cleanup argument. 2005-01-18 Martin Maechler * ess-inf.el (ess-complete-object-name): add S4 object slot name completion. * ess-inf.el (ess-slot-names): new (simplistic) function 2005-01-05 Martin Maechler * ess-inf.el (ess-prompt-wait): new 3rd argument sleep (ess-command): move the (sleep-for *) part into to ess-prompt-wait. * ess-inf.el (ess-get-object-list): use ess-uniq-list to get completion list of unique entries. 2005-01-04 Martin Maechler * ess-cust.el (ess-cmd-delay): use this instead of `ess-need-delay': Either 'nil or a number specifying the delay *factor* to be used. * ess-inf.el, essl-s.el, essd-r.el: ditto 2005-01-01 Martin Maechler * ess-inf.el (ess-command): 3rd argument sleep; internally using ess-need-delay; decreased sleep factors to (.05, .4, .05). * ess-cust.el (ess-need-delay): and ess-R-*, ess-S+-*: instead of ess-ms-slow. (ess-editor): and (ess-pager): defvar instead of defcustom * essl-s.el (S+common-cust-alist): and (S-common-cust-alist): new variables to store all common S language and S+ "customize-alist"s * essd*.el (-customize-alist): append the above variables 2004-12-30 Martin Maechler * ess-inf.el (ess-save-lastvalue-command): newly (defvar .) and buffer local, {instead of defcustom}; ditto for ess-retr-last.... * ess-cust.el: drop them here 2004-12-29 Stephen Eglen * ess-mode.el (ess-mode): Remove call to ess-load-object-name-db-file. * ess-menu.el (ess-imenu-S): Shorten doc string. * ess-inf.el (inferior-ess-mode): Remove vall to ess-load-object-name-db-file. (ess-create-object-name-db): Comment out for now, maybe delete later? * ess-cust.el (ess-object-name-db-file): Change from defcustom to defvar. Also, add note that probably this variable (and others) can be deleted in future ESS versions. 2004-12-24 Stephen Eglen * ess-emcs.el (ess-replace-regexp-in-string): New function, reapplied from Camm's patch. This time the function is now used in all relevant customization-alists. This function is needed since other elisp packages may also define replace-regexp-in-string. 2004-12-20 Stephen Eglen * ess-cust.el (ess-ms-slow): New variable. * ess-inf.el (ess-command): Condition use of sleep-for (to add delays) upon ess-microsoft-p [not 'window-system] and a new variable ess-ms-slow. 2004-12-04 Stephen Eglen * ess-inf.el (inferior-ess-mode): setq inferior-ess-prompt at the start of function so that its value can be used later in the function (e.g. to set comint-prompt-regexp). 2004-12-03 Martin Maechler * ess-cust.el: replace inferior-ess-objects-command by the two inferior-R-objects-command and inferior-Splus-... (which differ). * ess-inf.el (inferior-ess-objects-command): defvar here, instead * essd-r.el, essd-sp6.el -- and all essd-sp*.el essdsp6w.el: replace inferior-ess-objects-command 2004-12-03 Stephen Eglen * ess-cust.el (inferior-ess-prompt): Make this a defvar as the value is constructed from other values, rather than being set by the user. * essd-els.el (ess-add-ess-process): Check first that the current buffer has a process. (ess-select-alist-dialect): Add colon to prompt string. * ess-inf.el (inferior-ess-mode): Set inferior-ess-mode here, rather than within ess-multi. (ess-multi is not run when ess-remote is used, and so prompt was not set for remote buffers running ESS processes.) 2004-11-24 Martin Maechler * essl-s.el (S-editing-alist): change comment-start from "#" to "##" 2004-11-19 Martin Maechler * ess-noweb.el: remove setting of global-font-lock-mode 2004-11-09 Stephen Eglen * ess-inf.el (inferior-ess-mode): Add elements to comint-dynamic-complete-functions using `add-hook' rather than `setq', on advice from Emacs developers. 2004-11-07 Stephen Eglen * ess-inf.el (ess-multi): Fix bug: when inferior-ess-own-frame is non-nil, it should override the value of inferior-ess-same-window. 2004-10-28 Martin Maechler * ess-help.el: ess-help-mode-hook is now run correctly. 2004-10-27 Martin Maechler * essd-sp6.el: added Debian patches from Camm Maguire * ess-help.el: dito for these: * ess-utils.el * ess.el * ess-latex.el * ess-emcs.el 2004-10-14 Stephen Eglen * ess-cust.el (ess-default-style): Customize. 2004-08-29 Stephen Eglen * ess-inf.el (ess-multi): Use inferior-ess-same-window to decide whether to replace or split current window. * ess-cust.el (inferior-ess-same-window): New variable. 2004-08-25 Stephen Eglen * essd-sp6.el (S+6-customize-alist): Use inferior-Splus-args. * ess-cust.el (inferior-Splus-args): New variable. 2004-08-24 Stephen Eglen * ess-cust.el (inferior-R-args): New variable. * essd-r.el (R): pass inferior-R-args to R when starting up. 2004-08-23 Martin Maechler * ess-inf.el (inferior-R-page): only match "page()", not "grid.newpage()" !! 2004-08-09 Stephen Eglen * ess-inf.el (ess-prompt-for-directory): use the XEmacs read-directory-name routine (dialog box when using mouse differs from read-file-name). Thanks to John Fox for reporting this. 2004-08-03 Stephen Eglen * ess-mode.el (ess-mode-menu): Change function name for the default entry in "Start Process -> Other" submenu from R to nil. When it was set to R, this caused the R toolbar icon to not work since this menu entry was being found rather than the real menu entry for R. 2004-07-09 Stephen Eglen * ess-utils.el (ess-find-exec-completions): After checking that ess-tmp-file is executable, check that it is not a directory. 2004-07-04 Stephen Eglen * essdsp6w.el (ess-sqpe-versions-created): Variable deleted. * essd-r.el (ess-r-versions-created): Variable deleted. (ess-rterm-versions-created): Variable deleted. * ess-site.el: Use let binding for storing local values of ess-r-versions-created etc, rather than global variables. Global variables deleted. 2004-07-02 Richard Heiberger * essdsp6w.el (ess-sqpe-versions-create): New function to auto-generate defuns to allow other versions of Sqpe to be called. * essd-r.el (ess-rterm-versions-create): New function to auto-generate defuns to allow other Windows versions of R to be called. 2004-07-02 Stephen Eglen * essd-r.el (ess-r-versions-create): Do not set the value of ess-r-versions-created here, just return the required value. * ess-site.el (ess-versions-created): Tidy up the code for calling older versions of R and Sqpe. Old version did not work on Unix, since ess-sqpe-versions-created was not bound. New version checks that variable is bound before using it. * ess-utils.el (ess-flatten-list): Standard defun needed for flattening a list. Copied from lpr.el. 2004-07-01 Stephen Eglen * ess-inf.el (ess-quit): Delete call to ess-switch-to-ESS; ess-cleanup will have already done that. (ess-cleanup): Add save-excursion to preserve current buffer. * essd-r.el (ess-r-versions-created): New variable to store the names of the new defuns created. (ess-r-versions-create): Set ess-r-versions-created. Doc string update. * ess-site.el: Add the new R defuns, if any, to the "Other" menu under "Start Process". * ess-mode.el (ess-mode-menu): Add new submenu "Other" to "Start Process" where the other versions of R will be placed. 2004-06-30 Stephen Eglen * ess-mode.el (ess-mode-menu): Add entries to jump to top-level of ESS info file. * ess-cust.el (ess-rterm-versions): Condition initial value on ess-microsoft-p. 2004-06-29 Stephen Eglen * Makefile (ELC): Add ess-toolbar.elc to list of .elc files. 2004-06-24 Stephen Eglen * ess-toolbar.el (ess-use-toolbar): Set to nil if images cannot be displayed on the running Emacs. * essd-r.el (ess-r-versions-create): Remove full pathname from versions of R executables. Add note in the *ESS* buffer to say which new defuns have been created. 2004-06-23 Stephen Eglen * ess-toolbar.el (ess-use-toolbar): Default value should check if we are running XEmacs. Other small doc updates to file made. * ess-utils.el (ess-uniq-list): New defun for removing duplicate strings from a list. * ess-site.el: Set up call to `ess-r-versions-create'. * essd-r.el (ess-r-versions-create): New function to auto-generate defuns to allow other versions of R to be called. * ess-cust.el (ess-r-versions): New variable to control which other versions of R are found. 2004-06-21 Stephen Eglen * ess-toolbar.el: Add test at end to check for toolbar support. * ess-mode.el (ess-mode-menu): Add Sqpe and S+6-existing to "Start Process" menu but their active state is determined by ess-microsoft-p and so will be greyed out unless on microsoft. (SAS-menu): Simple wrapper to report error if SAS invoked on microsoft machine. 2004-06-20 Stephen Eglen * essd-sp6.el (S+6-mode): Hook in toolbar support. * essd-r.el (R-mode): Hook in toolbar support. * ess-toolbar.el: Update toolbar support so that we have only one ESS toolbar that can be used over multiple modes. This makes it simpler to use I feel. 2004-05-22 Stephen Eglen * ess-inf.el (ess-eval-linewise): Try again to get the point at the end of the S buffer after evaluation. Previous attempt still didn't work, but I forgot that I had set comint-scroll-to-bottom-on-output. This version should work even with that comint var set to nil. 2004-05-18 Stephen Eglen * ess-inf.el (ess-eval-linewise): If eob, remember to go to the end of the S buffer after evaluation. This was a bug that I introduced when introducing the ability to have R in different frames. 2004-05-17 Martin Maechler * essl-s.el (ess-fix-EQ-assign): new S source cleaners; (ess-fix-dot-more) : ditto added to ess-MM-fix-src's actions 2004-05-17 Stephen Eglen * ess-toolbar.el (ess-icon-directory): Need / after etc directory. * ess-mode.el (ess-mode-menu): Remove :help elements from menus, since XEmacs does not yet recognise it. * essd-els.el (ess-remote): Update doc string. (S+elsewhere, ESS-elsewhere): Add note in doc string to say these commands are obsolete and ess-remote should be used instead. 2004-05-13 Stephen Eglen * ess.el: Update copyright; remove old comments; update URL. * ess-site.el (ess-etc-directory): Move out of ess-cust.el and into ess-site.el, otherwise various other .el files that are loaded before ess-cust will complain. * essl-bug.el: Comment possible use of ess-etc-directory here. * essl-s.el (ess-function-outline-file): Use ess-etc-directory. * essd-sas.el (ess-SAS-pre-run-hook): Use ess-etc-directory. * ess-toolbar.el (ess-icon-directory): Use ess-etc-directory. * ess-cust.el (ess-etc-directory): New variable. * ess-toolbar.el (ess-make-toolbar-R-emacs, ess-make-toolbar-S-emacs): Since R and S are now on the menubar, use tool-bar-add-item-from-menu for consistency. * ess-mode.el (ess-mode-menu): Add sub menu to allow S, R, SAS to be started from menu. Each menu item has a little tooltip help. 2004-05-10 Stephen Eglen * ess-toolbar.el (ess-make-toolbar-R-emacs,ess-make-toolbar-S-emacs): Check that tool-bar-map is non-nil before attempting copy-keymap (generates error on Emacs 21.3+). 2004-05-08 Stephen Eglen * ess-toolbar.el (ess-icon-directory): Guess default value based upon ess-lisp-directory. (ess-toolbar-R, ess-toolbar-S): Store toolbars here. (ess-make-toolbar-S): Make toolbar for S mode too, similar to R mode, but using new S-plus icons from David Smith. (ess-make-toolbar-S-emacs,ess-make-toolbar-S-xemacs): New defuns. 2004-05-07 Stephen Eglen * essa-sas.el (ess-sas-submit-mac-virtual-pc): Assign :type to be boolean. Reformat defcustoms (whitespace changes only). * essl-sas.el (sas-get-options, sas-file-name, ess-sas-run-make-regexp): Correct :type to prevent mismatch in customization. * essa-sas.el (ess-sas-shell-buffer-remote-host): Ditto. 2004-05-06 Stephen Eglen * ess-toolbar.el (ess-make-toolbar-r-emacs): Use ess-load-file rather than ess-eval-buffer in toolbars. * ess-help.el (ess-display-help-on-object): Use ess-help-frame-alist. * ess-inf.el (ess-multi): Use inferior-ess-frame-alist. * ess-cust.el (ess-help-frame-alist, inferior-ess-frame-alist): New variables to store frame parameters for iESS buffers and help frames. (ess-help-own-frame, inferior-ess-own-frame): Doc fixes. * ess-help.el (ess-display-help-on-object): Fix bug introduced in 5.2.0 (reported by Robert Hankin). If ess-help-own-frame is nil, and we are currently in a help buffer, show new help buffer in same window. 2004-05-05 Stephen Eglen * ess-inf.el (ess-request-a-process): Use ess-show-buffer to display iESS buffer; update doc string. 2004-05-02 A.J. Rossini * essd-sp6.el (S+6-mode): * essd-sp5.el (S+5-mode): * essd-sp4.el (S+4-mode): * essd-s4.el (S4-mode): * essd-sp3.el (S+3-mode): * essd-s3.el (S3-mode): fixed imenu variable name, extended copyrights from 1997 to 2004. * essa-sas.el (ess-sas-image-viewer): Moved function after ess-sas-submit-method defvar, since we need that value to set this function. 2004-04-27 Stephen Eglen * ess.el (ess-write-to-dribble-buffer): Check if ess-dribble-buffer has been deleted. Remove the defadvice code that used to do this. 2004-04-26 Stephen Eglen * ess-inf.el (ess-switch-to-ESS): Use `ess-show-buffer' to show the iESS buffer. (ess-show-buffer): New function to be used when an iESS buffer is to be displayed. See its doc string for the rules it follows as to how to display the iESS buffer. (ess-get-bufname,ess-get-buffers-in-frames, ess-buffer-visible-this-frame,ess-buffer-visible-other-frame): New helper functions for ess-show-buffer, adapted from iswitchb.el. 2004-04-22 Stephen Eglen * ess-cust.el (ess-speedbar-use-p, ess-funcmenu-use-p): Use fboundp. * ess-menu.el (ess-imenu-use-S): Change default value and update doc string. (ess-imenu-regexp-S-function): Delete unused variable. * ess-cust.el (ess-use-menus): Delete unused variable. (ess-imenu-use-p): Set default value to (fboundp 'imenu) rather than (featurep 'imenu) since the former is more useful for seeing whether Imenu is available. (The latter is true only if Imenu has already been loaded.) 2004-04-19 Stephen Eglen * ess-help.el (ess-display-help-on-object): If ess-help-own-frame is 'one, use the dedicated frame. Use pop-to-buffer rather than switch-to-buffer if currently in a help buffer, * ess-cust.el (ess-help-own-frame): Add new value 'one to specify that all help buffers should be displayed in one frame. 2004-04-18 Stephen Eglen * ess-help.el (ess-display-help-on-object): If ess-help-own-frame is true, use ess-help-own-frame function to display help buffer. (ess-help-own-frame): New function and variable to display all ESS help buffers into one frame. * ess-cust.el (ess-help-own-frame): New variable. (ess-help-kill-bogus-buffers): Change to ess-help group. (ess-help): New customize group. * ess-cust.el (inferior-ess-own-frame): New variable. * ess-inf.el (ess-switch-to-ESS): Respect inferior-ess-own-frame. (ess-multi): Use pop-to-buffer if process already running, and respect inferior-ess-own-frame. 2004-04-16 Stephen Eglen * ess-inf.el (ess-multi): Use pop-to-buffer rather than switch-to-buffer, so that special-display-regexps should work. 2004-04-15 Stephen Eglen * ess-cust.el (inferior-ess-client-command): Set :group and :type. (R-editor, S-editor): reformat. (R-pager, ess-pager): reformat and allow type to be nil or string. 2004-03-31 A.J. Rossini * ess-site.el: added a more explicit commented out Windows example. Cleaned up documentation inconsistencies for noweb/Rnw modes. * essd-r.el (R): added autoload cookie for XEmacs. doc edits. (R-mode): added autoload cookie for XEmacs. Removed R-package generator; a better version is part of R (package.skeleton()). * ess-menu.el (ess-imenu-S-generic-expression): fixed imenu routine -- now provides links to functions, classes, methods, and "other" objects. 2004-03-23 Martin Maechler * essd-els.el (ess-select-alist-dialect): (let* ..) : thanks to Na Li. 2004-03-04 Martin Maechler * ess-site.el (ess-restore-asm-extns): thanks to Ed Cashin 2004-02-19 Stephen Eglen * essd-els.el (ess-select-alist-dialect): Use completing-read to select dialect. 2004-02-12 Stephen Eglen * essl-s.el (ess-smart-underscore): Only be smart in buffers where `ess-language' is "S". * ess-site.el ("[ess-site:] require 'essd-els ..."): oRemove the code that fixes ess-smart-underscore in SAS mode. 2004-01-20 Stephen Eglen * essl-s.el (ess-smart-underscore): Pressing _ twice inserts _ rather than the assignment operator. 2004-01-19 Stephen Eglen * ess-cust.el (inferior-R-program-name): Customize. Add description of file to line 1. (ess-version): Change from defcustom to defvar; presumably no-one will want to customize this variable! Comment line prior to definiton already says that this variable is not user-changeable. (ess-dialect): Change from defcustom to defvar. 2003-12-08 Stephen Eglen * ess-noweb.el (ess-eval-chunk): The code chunk is evaluated in a temp buffer, and should inherit the value of ess-local-process-name from the source value. If the source buffer did not set ess-local-process-name, it is set once the chunk has been evaluated. 2003-11-24 Martin Maechler * ess-emcs.el (replace-regexp-in-string): also needed for Emacs 20. 2003-11-06 Martin Maechler * ess-cust.el (ess-S-loop-timeout): new variable (and same for -XLS-) * essd-*.el use these new customizable variables. 2003-11-05 Martin Maechler * ess-inf.el (inferior-ess): make comint-use-prompt-... buffer-local such that we no longer "pollute" other comint modes such as M-x shell 2003-10-29 Martin Maechler * ess-trns.el (ess-transcript-mode-map): add C-a := comint-bol * ess-inf.el (inferior-ess-mode-map): ditto 2003-09-25 Martin Maechler * ess-cust.el (ess-dump-filename-template-proto): renamed, new functionality: used as prototype * essd-*.el: ess-dump-filename-template now uses and modifies the above prototype. 2003-08-19 Stephen Eglen * ess-help.el (ess-help-underline): New function to convert ^_H in help buffers to the underline face. 2003-08-05 Stephen Eglen * ess.el (ess-setq-vars-local): Prevent e.g. ess-local-process-name getting reset to nil when re-entering a code chunk in mixed mode buffers (like Latex/R). 2003-07-24 Stephen Eglen * essa-r.el (ess-r-var): New function for loading numbers from any Emacs buffer into an existing *R* process. 2003-01-01 Stephen Eglen * ess-site.el (ess-rdired): Add autoload for ess-rdired. * ess-rdired.el: New file. 2002-11-12 Martin Maechler * essd-r.el (Rnw-mode): new (experimental) for Sweave{R} editing. 2002-11-01 Stephen Eglen * essl-s.el (ess-help-R-sec-regex): Restrict regex so that capital letter must be at start of line. 2002-04-27 Martin Maechler * essd-sp6.el (S+6-customize-alist): ess-setup-directory-function and other changes from Jeff Mincy; not yet fully tested. 2002-04-23 Martin Maechler * ess-trns.el (ess-transcript-mode-menu): add ..DO-clean-region to menu, using new argument (prefix) for escaping read-only state. 2002-02-15 Martin Maechler * essl-s.el (S-editing-alist): introduce S "global" `inferior-S-language-start' * essd-r.el (R-customize-alist): use inferior-S-language-start above. * essd-sp[3-6].el, essd-s[34].el, essdsp6w.el, essd-els.elc -- ditto. 2002-02-13 Martin Maechler * ess-cust.el (S-pager) and others: s/emacslient/emacsclient/ 2002-01-26 Martin Maechler * essddr.el (Rd-font): new function, put on C-c C-f à la TeX-font (Rd-font-list): e.g. `C-c C-f l' now surrounds word by \code{\link{.}}! 2002-01-16 Martin Maechler * ess-menu.el (ess-imenu-S): use improved ess-S-imenu-generic-expression (and clean up), by Stephen Eglen. 2002-01-15 Martin Maechler * essl-s.el (S-editing-alist): new add-log-...regep from Stephen Eglen. Allows `C-x 4 a' (adding to Changelog) find the S function name. (R-help-sec-keys-alist): "Usage" and "Details" as the S lists. 2002-01-14 Richard Heiberger * ess-mous.el: ess-mous is now on submenu of C-mouse-3 in ess-transript-mode, inferior-ess-mode, ess-mode. This feature is still beta. 2002-01-11 Richard Heiberger * ess-inf.el: remove .in.ESS * essd-r.el: first draft of options("STERM") 2002-01-10 Richard Heiberger * ess-mous.el: S-mouse-3 gets information from S/R about the highlighted phrase or about the word at the cursor location. 2002-01-10 Martin Maechler * ess-help.el (ess-help-bogus-buffer-p): now also works in R when help.try.all.packages = TRUE. 2002-01-03 Martin Maechler * ess-inf.el (ess-ddeclient-p): new function from Rich and a few related changes 2001-10-16 Martin Maechler * ess-inf.el (ess-execute-objects): use (number-to-string ..) for Emacs 21 (thanks to Stephen Eglen). * ess-trns.el: typo "o" fixed (S.Eglen) 2001-09-27 Martin Maechler * ess-inf.el (ess-multi): .in.ESS <- TRUE for S dialects 2001-09-20 Martin Maechler * ess-mode.el and others: do use ess-running-xemacs from ess-emcs.el! * ess-menu.el: fix the (require 'imenu ..) [for E 19.34] 2001-09-05 Martin Maechler * essddr.el (Rd-mode-map): add C-c C-v (help) 2001-08-31 Martin Maechler * ess-menu.el (require 'imenu): try to do this only when available [not tested; I have imenu "everywhere"] 2001-08-30 Martin Maechler * ess-mode.el (ess-narrow-to-defun): new function 2001-08-21 Martin Maechler * ess-inf.el (ess-directory-function): also ess-cust.el, essd-sp6.el: Implement Jeff Mincy's patches for new function --- currently only for S+6 (Unix) -- FIXME: Support R, other Spluses 2001-08-10 Martin Maechler * ess.el: (defadvice ess-write-to-dribble-buffer ....) from Jeff Mincy 2001-06-19 Martin Maechler * ess-utils.el (nuke-trailing-whitespace-p): make interactive; cosmetic 2001-03-02 Martin Maechler * ess-site.el: On Linux, default to S+5, since there's no S+3 2001-02-28 Martin Maechler * ess-utils.el (ess-space-around): new utility * essd-r.el (R-fix-T-F): also fix after "_" * essl-s.el (ess-fix-miscellaneous): Fix bug which broke "<=" & ">=" Further fix bug which broke "<<-" (and "->"). separate e.g., "){" ; space around "else". 2000-10-23 Martin Maechler * essl-s.el (ess-smart-underscore): remove extra spaces when ess-S-assign is used. 2000-10-11 Martin Maechler * essl-s.el (ess-smart-underscore): new function, assigned to "_" key. 2000-10-09 A.J. Rossini * /home/ess/src/cvsroot/gnu/ess/lisp/ess-vars.el: Merged with changes in another location. 2000-10-09 maechler * /home/ess/src/cvsroot/gnu/ess/lisp/ChangeLog, /home/ess/src/cvsroot/gnu/ess/lisp/essl-s.el: new (ess-fix-miscellaneous) & (ess-toggle-underscore) 2000-10-09 Martin Maechler * essl-s.el (ess-fix-miscellaneous): new function for prettifying S language code. (ess-toggle-underscore): new function for "_" toggling. 2000-10-04 Martin Maechler * essl-s.el (ess-add-MM-keys): define-key "_" to ess-S-assign. * ess-cust.el (ess-S-assign): new variable (" <- ") for left assign. * ess-vars.el (ess-S-assign): --ditto-- 2000-08-16 Martin Maechler * essd-r.el (R): Win32: don't give spurious warning anymore. 2000-08-09 Martin Maechler * ess-help.el (ess-display-help-on-object): Inherit syntax-table; this should make the "default prompt" work for "help inside help". 2000-07-08 Martin Maechler * essl-sas.el (SAS-mode-font-lock-keywords): only when window-system! fixes "emacs -nw -f R" 2000-06-28 Martin Maechler * ess-site.el : load-path setting *MUST* come first. 2000-04-14 Martin Maechler * ess-inf.el (ess-dir-modtime): RMH: use file-directory-p instead of string-match. 2000-04-04 Martin Maechler * ess-inf.el (ess-eval-line-and-step): new even-empty argument, [prefix] allowing to send even empty lines to the ESS process. * ess-vars.el: New logical variable ess-eval-empty. * ess-inf.el (ess-command): applied the "FIXME": ess-command should have two arguments only. -- Few adjustments in other *.el files. 2000-04-03 Martin Maechler * ess-inf.el and other files: Replace (function) ess-eval-visibly by ess-eval-linewise Replace (function) ess-eval-line-and-next-line by *-line-and-step 2000-03-31 Martin Maechler * ess-inf.el (ess-next-code-line): new function from Stephen Eglen (ess-eval-line-and-next-line): new prefix arg for turning off the use of new ess-next-code-line. Further : Use (forward-line 1) instead of (next-line 1). * ess-mode.el: added a few autoloads (and a comment for AJR !?). s/"Step through line"/"Eval line & step"/ white space [n*8 column starts] * ess-inf.el (inferior-R-input-sender): Fixed the regexps for help() and {even more} for ?<...>, using new variable ess-help-arg-regexp {in ess-vars.el}. 2000-03-30 Martin Maechler * almost ALL lisp files : Docstring fixes, thanks to Stephen Eglen . 2000-03-21 Martin Maechler * ess-vars.el (ess-temp-point): new for fixing multiline commands in transcript. Similar fix in * ess-trns.el, and * ess-inf.el. --- really all by RMH! * ess.el (cadr): define if not available. 2000-03-20 Martin Maechler * ess-help.el (ess-help-error-buffer-p): new utility, improve detection of help error messages for (ess-display-help-on-object). * essl-sas.el: new variables sas-white-chars & sas-comment-comment-chars * essl-sas.el: (beginning-of-sas-statement): don't quote blank 2000-02-10 Martin Maechler * ess-help.el: Add menu; fix ess-display-sec-map * essddr.el (Rd-mode): one menu entry. * essd-sp5.el (S+5-customize-alist): search-list-command=search("paths") 1999-12-21 Martin Maechler * essd-sp5.el: S+5-customize-alist was there *TWICE* finally replaced cat by "slynx -dump" 1999-12-08 Martin Maechler * essl-sta.el (setq max-lisp-eval-depth): increase necessary 1999-11-22 ess * ess-vars.el: Updated to 5.1.11 1999-11-17 ess * essddr.el: 'bold isn't defined in XEmacs. Using reference-face instead of Rd-bold-face. 1999-11-16 ess * ess-vars.el: Fixed small version update errors * Makefile, ess-help.el, ess-site.el, essd-els.el, make-regexp.el, noweb-mode.el: updated version numbers * essl-sta.el: added local variables for editing and indexing. * essl-sta.el: added Brendan's suggested function. * essl-sta.el: added make-regexp to ESS, and finished integrating Brendan's code. Need to test it now! * make-regexp.el: needed for Stata-mode extensions * essl-sta.el: added Brendan Halpin's corrections. * ess-inf.el: concat needs number-to-string conversion. * essd-omg.el: Omegahat fixes (for commandline flags) 1999-11-11 ess * noweb-mode.el: C-c C-n shouldn't be TeX-normalmode, since it is too close to submit-line with ESS! (overwrite). * essd-omg.el: Use prefix for setting Omegahat arguments. 1999-11-10 rossini * essl-omg.el: S- becomes OMG- Comments redone (to use //, ///, and //// for levels of indentation) OMG-syntax started, variable defined, needs to be fixed. * essd-omg.el: further Omegahat dialect changes (use OMG syntax, which needs fixing!) 1999-11-05 Martin Maechler * ess.el: added a definition of (functionp ..) if there isn't any 1999-11-05 Martin Maechler * ChangeLog, ess.el, noweb-mode.el: functionp definition if necessary * noweb-mode.el: functionp for emacs-19.34 1999-11-04 A.J. Rossini * TONS of things -- see ../ChangeLog 1999-11-04 rossini * essd-els.el: fixed paren error. * Makefile, ess-site.el, ess-vars.el, essd-sas.el: Changed version numbers 1999-11-03 rossini * Makefile, ess-inf.el, ess-site.el, ess-vars.el, essd-sp5.el: Changes for ESS-elsewhere. * essd-els.el: added a generic ESS-elsewhere function. 1999-10-06 Anthony Rossini * ess-inf.el: fixed extraneous echoes in Stata. 1999-10-04 rossini * essd-sta.el: fset both stata-mode and Stata-mode. * ess-site.el: cleaned up autoload conflicts between 2 local (AJR) copies. 1999-09-27 Martin Maechler * ChangeLog, Makefile: don't byte-compile ess-debug.el * ChangeLog, essd-r.el: for R, use help(. , htmlhelp=F) 1999-09-27 Martin Maechler * Makefile (SOURCES): use new $(TOCOMPILE) -- don't ess-debug.el ! 1999-09-27 Martin Maechler * essd-r.el (R-customize-alist): help( .. htmlhelp = FALSE) Wed Sep 15 22:34:37 1999 A.J. Rossini * ess-inf.el (inferior-ess-mode): preliminary support for Omegahat. Wed Sep 15 22:21:42 1999 A.J. Rossini * essd-omg.el (omegahat-mode): fset for OMG-mode. use it. (omegahat): fset for OMG. use it. Documentation fixes. Wed Sep 15 22:20:37 1999 A.J. Rossini * ess-site.el (essd-omg): require this, now. Wed Sep 15 22:19:08 1999 A.J. Rossini * ess-site.el: added omegahat, comment about ssh (for ess-elsewhere) Wed Sep 15 22:17:04 1999 A.J. Rossini * ess-vars.el (inferior-STA-program-name): documentation fixes Wed Sep 15 22:16:55 1999 A.J. Rossini * ess-vars.el (inferior-OMG-program-name): new variable Tue Sep 14 22:55:55 1999 A.J. Rossini * essd-xls.el (xlispstat-mode): added as a synonym. Tue Sep 14 16:53:21 1999 A.J. Rossini * noweb-mode.el: Emacs/XEmacs compatibility done. Tue Sep 14 16:53:07 1999 A.J. Rossini * ess-debug.el: This is customized for me (AJR). Tue Sep 14 16:52:35 1999 A.J. Rossini * ess-site.el: added noweb-mode by default. Tue Sep 14 16:10:04 1999 A.J. Rossini * ess-noweb.el (global-font-lock-mode): set true to prevent XEmacs from barfing. Tue Sep 14 13:26:36 1999 A.J. Rossini * ess?-sta.el: cleaned up stata mode to work. Tue Sep 14 11:06:38 1999 A.J. Rossini * ess-inf.el: white space, documentation, stata hacks. 1999-09-06 Martin Maechler * essddr.el (Rd-indent-level): default 2 (back from 4): We need horizontal space, and there's not a lot of nesting. 1999-09-01 Martin Maechler * ess-mode.el : add "Switch Process" menu entry to [ESS] menu. 1999-07-22 Martin Maechler * ess-mode.el : Define cheap (line-end-position) if not there [e.g. for GNU emacs 19.34] 1999-07-22 Martin Maechler * ess-mode.el (ess-beginning-of-function): Delimit (search-forward "(" ..) ---> fixed bug ! 1999-07-21 Martin Maechler * ess-inf.el (ess-eval-function): Use (ess-end-function) only, since that now returns beginning & end; further, use (ess-extract-word-name) only once. * ess-mode.el (ess-beginning-of-function): return beginning * (ess-end-of-function): accept optional `beginning' argument; return BOTH beginning & end * (ess-mark-function): use new beg/end functions. 1999-07-06 Martin Maechler * essd-r.el (R-fix-T-F): Fix buglet: should catch more cases 1999-06-17 Martin Maechler * essd-*.el (ess-loop-timeout): Default multiplied by 5 to 500000. * essd-R.el -- simplified primary-prompt ! 1999-04-23 Martin Maechler * ess-site.el (auto-mode-alist): Change regexp's in order to work with NTemacs which is has a non-case-sensitive `find-file'. 1999-04-05 A.J. Rossini * ess-site.el, ess-vars.el: text from 5.1.7 to 5.1.8 * ess-site.el: cleaned up misguided comment. * ess-site.el: cleaned up, removed R unix/microsoft hack. * essd-r.el: using a solitary R. * ess-inf.el: conditioned out the slowdown in ess-prompt-wait for Microsoft. * ChangeLog: doc updates 1999-04-05 A.J. Rossini * ess.el: franz.stat.wisc.edu -> ess.stat.wisc.edu * ess-site.el, ess-vars.el: 5.1.6 to 5.1.7 changes for possible release * ess-inf.el: ess-prompt-wait duration changed? 1999-04-01 maechler * ess-inf.el: typo 1999-04-01 A.J. Rossini * ess-site.el: about to release 5.1.6 * ess-vars.el: anything else? 1999-03-31 A.J. Rossini * ess-iw32.el: whitespace modifications. * ChangeLog: *** empty log message *** * essd-r.el: reverted. We can simply leave R as given, and not worry about R-unix (thanks to Martin). * essd-r.el: R -> R-unix. * ess-inf.el: sleep-fors are commented out except for Microsoft "operating systems", sigh... * essd-r.el: preliminary changes Wed Mar 31 15:46:37 1999 A.J. Rossini * essd-r.el (R): reverted. Martin fixed this right in ess-site. * essd-r.el (R-unix): renamed from R. * ess-inf.el (ess-command): sleep-for only used for Splus 4.5, i.e. Microsoft "operating systems", sigh. 1999-03-18 Martin Maechler * ess-site.el (auto-mode-alist): OOps for last change *.sty became ESS S-transcript; now fixed 1999-03-17 A.J. Rossini * essd-r.el, ess-site.el, ess-vars.el: RMH's changes 1999-03-16 A.J. Rossini * essd-r32-sh-dos.el, essd-sp4com.el: MS Dos stuff for R, S+4.x * ChangeLog: Prep for 5.1.4 * essd-sp4.el, ess-iw32.el: RMH changes. * ess-site.el: Merged RMH's work. * ess-vars.el: incremented. * ess-inf.el: RMH's changes. 1999-03-16 Martin Maechler * ChangeLog: mini change "foobar.Sout-45" * ess-site.el: auto-mode-alist: "foobar.Sout-4.5" also turns on S-transcript-mode 1999-03-16 A.J. Rossini * essd-sp4.el, ess-iw32.el: RMH changes. * ess-site.el: Merged RMH's work. * ess-vars.el: incremented. * ess-inf.el: RMH's changes. 1999-03-16 maechler * ChangeLog: mini change "foobar.Sout-45" * ess-site.el: auto-mode-alist: "foobar.Sout-4.5" also turns on S-transcript-mode 1999-03-16 Martin Maechler * ess-site.el (auto-mode-alist): "foobar.Sout-4.5" also turns on S-transcript-mode 1999-03-03 A.J. Rossini * Makefile: updated version information converted s+3 to sp3. * ess-vars.el: updated version information. * ess-iw32-load-file.el, essd-s+3.el, essd-s+4.el, essd-s+5.el, essd-s_2b4-msdos-existing.el, essd-s_2b4-msdos.el: Tidied up ess-iw32*.el files. * ess-iw32.el: copied all changes from ess-iw32-load-file.el here. * ess-iw32-load-file.el: fixed. * essd-s_2b4.el: essd-s_2b4-msdos*.el were not needed. Contents moved into base file. * ess-iw32-load-file.el, ess-iw32.el, essd-r32.el, essd-s_2b4-msdos-existing.el, essd-s_2b4-msdos.el, essd-s_2b4.el, msdos.el: RMH's changes, up to March 2nd 1999-02-24 A.J. Rossini * ess-iw32.el: temp val left in distribution. whoops (RMH). 1999-02-22 A.J. Rossini * essd-els.el, essd-s3.el, essd-s4.el, essd-sta.el, ess-site.el, essd-sp4.el, essd-sp5.el, essd-sp3.el: Removed s+# to sp# for S-PLUS commands 1999-02-12 Martin Maechler * Makefile: emacs, not "19.34" 1999-02-10 Martin Maechler * essd-sas.el: added RMH's new fixes for the 5.1.2 version. 1999-02-02 Martin Maechler * ess-inf.el: (last commit was with unsaved file) * ChangeLog, ess-inf.el: fix regex for "help(..);" also work for "?" with R-input-sender 1999-02-02 Martin Maechler * ess-inf.el (inferior-R-input-sender): Change the regexp such that e.g. "help(pt, offline=T)" is treated as normal command; New: "?lm" (e.g.) is also recognized as help command Mon Dec 14 18:04:45 1998 A.J. Rossini * ess-mode.el: fixed copyright and header information * ess-site.el: commented out SHOME definition. Fri Dec 11 19:51:18 1998 A.J. Rossini * ess-vars.el: fixed copyright, rossini's email address. * ess-iw32.el: fixed rossini's email address, headers, copyright. * essd-els.el, essd-s+4.el: fixed rossini's email address. * essd-sq4.el: fixed copyright and header attributions. * essd-els.el: fixed header files and copyright. * essd-s+4.el: added changes to copyright and header docs. * ess-vars.el: Merged RMH's changes. * ess-iw32.el, essd-els.el, essd-s+4.el, essd-sq4.el: New files for ESS for Splus/MSW/NT/98/95 New files for remote-ESS on Unix. * ess-site.el: Added RMH's changes for Microsoft Windows and Splus. Mon Nov 30 17:37:57 1998 hornik * Makefile: Add essd-s+5.el to SOURCES (as it gets required in ess-site). Mon Nov 23 20:03:17 1998 A.J. Rossini * ChangeLog: *** empty log message *** Fri Nov 20 20:57:33 1998 A.J. Rossini * ess-vars.el: ess-help-w3-url-prefix points to pyrite. * ess-vars.el: removed spurrious comment about generic function, in front of a variable. * essd-s+5.el: trimmed out old S4 stuff. Mon Nov 16 17:29:25 1998 Martin Maechler * ess-inf.el: do not need comint echo anymore.. Sat Nov 14 00:23:19 1998 A.J. Rossini * ChangeLog: whitespace editing. Fri Nov 13 18:25:51 1998 A.J. Rossini * ess-site.el: added sample entry for S+5. * ChangeLog: *** empty log message *** * ess-site.el: added suffix for StatSci's script files. Thu Nov 12 17:27:30 1998 Martin Maechler * essd-r.el, essd-s+3.el, essd-s+5.el, essd-s3.el: newline in dribble buff * ess-inf.el: more details in prompt for ess-get-dir; more dribble; WHITE SPACE * ess.el: slightly better dribble output * essd-s4.el: drop doubled comments * ess-vars.el: . Wed Nov 11 12:45:15 1998 Martin Maechler * essd-s+5.el: omit .Smode() extras; new "S+" instead of "S+3" * essl-s.el: new "S+" instead of "S+3" * ess-inf.el: comint-echo : OFF for S+5 * essd-s3.el: comments only * essd-s+3.el: comment out ess-mode-edit * Makefile, ess-vars.el: new version numbers * essd-s+5.el: several more s4 -> s+5 changes; still not ok * essd-s+3.el: transpose to defs * ess-vars.el: require s+5 Tue Nov 10 17:45:11 1998 Martin Maechler * ess-site.el: s+5 is now distributed * essd-s+5.el: provide typo fixed Mon Nov 9 23:28:14 1998 A.J. Rossini * ChangeLog, Makefile, ess-site.el: New material for Makefiles * essl-sta.el: removed possible problems from stata mode. -- provide 'essl-sta * essd-s+5.el: This is for Splus5, based on S4. * ess-web.nw: last change, sigh. * ess-web.nw: emacs lisp mode is wrong, sigh. * ess-web.nw: Contains interface code between Noweb and ESS * ChangeLog: added stata-dialect/lang to makefile * Makefile: added Stata stuff. Thu Sep 24 23:32:14 1998 A.J. Rossini * ChangeLog: more stuff. * essd-sta.el: should be sta, not stt * ChangeLog: update for ess-site. * ess-site.el: added stata mode, which is now STA (ref: Thomas Lumley) Thu Sep 17 09:11:51 1998 Martin Maechler * ChangeLog, ess-utils.el: several small things Fri Sep 11 16:20:14 1998 Martin Maechler * essd-r.el: (R-fix-T-F): new function Fri Sep 11 15:39:57 1998 Martin Maechler * essd-s4.el: Extraneous end deleted * ess.el ess-inf.el ess-mode.el Makefile: Adaptions to new ess-utils. * ess-utils.el: new file for ``General Utilities'' useful and usable *outside* ESS. 1998-09-09 A.J. Rossini * essd-sta.el: new file (STA-customize-alist): edited according to essl-sta.el. (STA-mode): New function (stata): New function (STA-transcript-mode): New function * Makefile (BATCHFLAGS): --no-init-file, not --no-init-fil Tue Sep 8 19:18:07 1998 Martin Maechler * essl-s.el: added "&optional dont-ask" argument to ess-dump-to-src, ess-fix-comments,.... ess-MM-fix-src Mon Sep 7 18:26:47 1998 Martin Maechler * essl-s.el (ess-time-string): 4 digit year! Wed Aug 26 14:16:35 1998 Martin Maechler * essl-s.el (S-editing-alist): font-lock-defaults: treat "." as word constituent (from Kurt). Thu Aug 20 08:45:11 1998 Martin Maechler * essddr.el (Rd-section-names): and (Rd-keywords): expanded according to Kurt's suggestion. Tue Aug 18 10:42:08 1998 Martin Maechler maechler * essd-s+3.el (S+3-dialect-name): new variable for customization. Tue Aug 18 10:28:22 1998 Martin Maechler * essd-r.el (R): add the "--no-readline" argument to r-start-args. Tue Aug 14 18:32:11 1998 Martin Maechler * ess-vars.el: new version "pre5.1" * Makefile: ditto * essl-s.el: renamed "ease:time-string" to "ess-time-string"; cleaned up Mon Apr 6 11:27:52 1998 Tony Rossini * ess-inf.el (ess-object-names): * ess-inf.el (ess-execute-objects): add argument to call to inferior-ess-objects-command, for S4 (suggested by Stephen Pope). Mon Apr 6 11:22:22 1998 Tony Rossini * ess-vars.el (inferior-ess-font-lock-keywords): change, as suggested by Stephen Pope (remove parens). Mon Dec 15 19:17:27 1997 Anthony Rossini * essd-s4.el (S4-mode): New function, use it. Wed Dec 10 10:33:59 1997 Anthony Rossini * essd-xls.el: make sure that the major-mode is 'XLS-mode (might need to do this for _all_ modes :-(. But let's first see if anything breaks. Tue Dec 9 17:54:31 1997 Anthony Rossini * essd-r.el: removed non-necessary autoload for a non-existant function (was intended for start-args, but never was written or used). Tue Dec 9 15:45:18 1997 Anthony Rossini * essddr.el: one too many parens. Tue Dec 9 15:44:23 1997 Anthony Rossini * essddr.el: added commented out face. DB's error doesn't exist for me, though. Fri Dec 5 10:12:54 1997 Anthony Rossini * ess-site.el: added comments about Emacs 20.2 errors. Fri Dec 5 10:09:59 1997 Anthony Rossini * CVS (ChangeLog): Starting 5.1 series. ess-17.11/lisp/Makefile0000644005071500004540000001405113202324174011651 00000000000000### Makefile - for compiled e-lisp of ESS distribution. ### ## Before making changes here, please take a look at Makeconf include ../Makeconf ## For noweb extraction of code and documentation. NOTANGLE=notangle -L #NOTANGLE=notangle for no indexing. NOWEAVE=noweave ## SUFFIXES are in ../Makeconf : .nw.html: ; $(NOWEAVE) -filter l2h -index -html $*.nw > $*.html .nw.tex: ; $(NOWEAVE) -index -delay $*.nw | cpif $*.tex .nw.el: ; $(NOTANGLE) -R$*.el | cpif $*.el ##.nw.c: ; $(NOTANGLE) -R$*.c | cpif $*.c ##.nw.h: ; $(NOTANGLE) -R$*.h | cpif $*.h .tex.dvi: ; latex '\scrollmode \input '"$*"; while grep -s 'Rerun to get cross-references right' $*.log; do latex '\scrollmode \input '"$*"; done # have to preload the files that contain macro definitions or the # byte compiler will compile everything that references them # incorrectly. also preload a file that sets byte compiler options. PRELOADS = -l ./ess-comp.el ## files that contain key macro definitions. almost everything ## depends on them because the byte-compiler inlines macro expansions. ## everything also depends on the byte compiler options file since ## this might do odd things like turn off certain compiler ## optimizations. When these change, RECOMPILE. CORE = ess.elc ess-site.elc ### Everything but ess-debug.el, ess-install.el ### ess-send.el , ess-send2.el ### DEPRECATED: essl-bug.el ## ELC = $(CORE) ess-comp.elc ess-custom.elc \ ess-dde.elc ess-compat.elc ess-font-lock.elc \ ess-help.elc ess-inf.elc ess-mode.elc \ ess-mouse.elc mouseme.elc \ ess-swv.elc ess-toolbar.elc \ ess-trns.elc ess-utils.elc \ essd-els.elc ess-gretl.elc \ ess-lsp-l.elc ess-xls-d.elc ess-vst-d.elc ess-arc-d.elc \ ess-sas-l.elc ess-sas-d.elc ess-sas-a.elc \ ess-stata-lang.elc ess-stata-mode.elc make-regexp.elc \ ess-omg-l.elc ess-omg-d.elc \ ess-bugs-l.elc ess-bugs-d.elc ess-jags-d.elc \ ess-noweb.elc ess-noweb-mode.elc ess-noweb-font-lock-mode.elc \ ess-eldoc.elc ess-roxy.elc ess-rutils.elc ess-r-completion.elc \ ess-s-lang.elc ess-s3-d.elc ess-s4-d.elc \ ess-sp3-d.elc ess-sp4-d.elc ess-sp5-d.elc ess-sp6-d.elc \ ess-rdired.elc ess-r-args.elc ess-r-syntax.elc ess-r-mode.elc ess-rd.elc \ ess-r-package.elc ess-tracebug.elc ess-julia.elc\ julia-mode.elc\ ess-generics.elc ess-r-gui.elc\ ess-sp6w-d.elc msdos.elc ## ^^^^^^^^^^^^^^^^^^^^^^^ Windows only (but be platform-oblivious) ## julia-mode.el : really from the julia sources -- but want in tarball! # ESSR_VER =`cat ../etc/ESSR-VERSION` ##ESSR_VER = $(shell cat ../etc/ESSR-VERSION) ### Targets all: $(ELC) ess-custom.el .PHONY: dist dist: all julia-mode.el ## @touch dist ## svn committing happens in ../Makefile install: dist -$(INSTALLDIR) $(LISPDIR) $(INSTALL) ChangeLog *.elc $(LISPDIR) -export J; for I in *.elc; do J=$$I; $(INSTALL) `basename $$J .elc`.el $(LISPDIR); done if [ -f /etc/debian_version -a -n "$(SITELISP)" -a ! -f "$(SITELISP)/ess-site.el" ] ; \ then \ ln -s $(LISPDIR)/ess-site.el $(SITELISP)/ess-site.el ; \ fi; # test "$(LISPDIR)" = "." || $(INSTALL) *.elc $(LISPDIR) uninstall: -cd $(LISPDIR) && $(UNINSTALL) ChangeLog *.elc *.el if [ -n "$(SITELISP)" -a -h "$(SITELISP)/ess-site.el" ] ; \ then \ cd $(SITELISP) && $(UNINSTALL) ess-site.el ; \ fi; clean: rm -f $(ELC) distclean: clean # and potentially more ### Targets below here are only for developers - and these must have perl ### Replace Version numbers (as in ../doc/Makefile !): ## "../VERSION" if that changes, *definitely* need to update ess-custom.el ess-custom.el: ../VERSION EV='$(ESSVERSION)'; perl -pi -e "s/\".*\"/\"$$EV\"/ if /ess-version/" $@ # ess-r-mode.el: ../etc/ESSR-VERSION # sed -i -e '/let.*ESSR-version/s/"[-.0-9]*"/"$(ESSR_VER)"/' $@ ## Should happen before building ESS; definitely *NOT* after unpacking tarball : julia-mode.el: test -f ../etc/.IS.RELEASE || $(DOWNLOAD) \ https://raw.githubusercontent.com/JuliaLang/julia-emacs/master/julia-mode.el > $@ ### File Dependencies .el.elc: $(EMACSBATCH) $(PRELOADS) -f batch-byte-compile $< ess-custom.elc: ess-custom.el ess-comp.el $(EMACSBATCH) $(PRELOADS) -f batch-byte-compile ess-custom.el ess.elc: ess.el ess-comp.el ess-custom.elc $(EMACSBATCH) $(PRELOADS) -l ess-custom.elc -f batch-byte-compile ess.el ess-site.elc: ess-site.el ess.elc ess-inf.elc: ess-inf.el ess-comp.el $(CORE) # @echo " " # @echo "For the next compile, please disregard the messages" # @echo " ** the function set-keymap-parent is not known to be defined." # @echo " ** assignment to free variable comint-last-input-end" # @echo "from the byte compiler if they occur. It is completely normal." $(EMACSBATCH) $(PRELOADS) -f batch-byte-compile ess-inf.el ess-mode.elc: ess-mode.el ess-comp.el $(CORE) $(EMACSBATCH) $(PRELOADS) -f batch-byte-compile ess-mode.el ess-trns.elc: ess-trns.el ess-comp.el $(CORE) $(EMACSBATCH) $(PRELOADS) -f batch-byte-compile ess-trns.el ess-help.elc: ess-help.el $(CORE) ## S languages ess-s-lang.elc : ess-s-lang.el ess.elc ess-sas-d.elc : ess-sas-d.el ess.elc ess-s3-d.elc : ess-s3-d.el ess-s-lang.elc ess.elc ess-sp3-d.elc : ess-sp3-d.el ess-s-lang.elc ess.elc ess-s4-d.elc : ess-s4-d.el ess-s-lang.elc ess.elc ess-r-mode.elc : ess-r-mode.el ess-s-lang.elc ess.elc ess-swv.elc: ess-swv.el ess-noweb.elc ## Lisp Languages ess-lsp-l.elc : ess-lsp-l.el ess.elc ess-xls-d.elc : ess-xls-d.el ess-lsp-l.elc ess.elc ess-vst-d.elc : ess-vst-d.el ess-lsp-l.elc ess.elc ## SAS ess-sas-l.elc : ess-sas-l.el ess-sas-a.el ess.elc ess-sas-d.elc : ess-sas-d.el ess-sas-l.elc ess.elc ## Stata ess-stata-lang.elc : ess-stata-lang.el ess.elc ess-stata-mode.elc : ess-stata-mode.el ess.elc ## BUGS ess-bugs-l.elc : ess-bugs-l.el ess-compat.elc ess-bugs-d.elc : ess-bugs-d.el ess-bugs-l.elc ## JAGS ess-jags-d.elc : ess-jags-d.el ess-bugs-l.elc ess-utils.elc ess-inf.elc ## GRETL ess-gretl.elc : ess-gretl.el ess-r-gui.elc : ess-r-gui.el ess-dde.elc # Ignore this. #(defun S-insert-make-rule (file) # (interactive "sFile:") # (insert (format "%s.elc: %s.el $(CORE)\n\t@echo compiling %s.el...\n\t@$(EMACSBATCH) $(PRELOADS) -f batch-byte-compile %s.el" file file file file))) ess-17.11/lisp/TODO0000644005071500004540000000211313202324174010675 00000000000000 -*- mode: text -*- o Improve on "Sweave mode" aka "working with '*.Rnw'" aka ess-noweb-mode.el - Latex <-> Pdflatex: should be `switchable' like in AUCtex - more things "to be like AUCtex: .... ... - Better/new keybindings + walk through idea (MM): - re-assign C-c C-c to "eval-chunk-and-step" (not yet there) - may assign C-c RET to "eval-chunk[-and-go]" where the ``-and-go'' part is switchable either by Prefix (==> "C-u C-c RET" would mean "and-go") or also by a customizable variable o ---------------- Entries from 2001 by Tony : --------------------------- Solve now: 1. Get ess-menu to "do the right thing" on startup. Make sure that it is only started when sensible/available. Solve later: 1. "ess-(new|change)-buffer-this-process" possible to detach processes from buffers. (for sending output from a single buffer to many. This could be done by running a 2-stage filter (the "real" as the real, and the others as copies with append. 2. look at semantic for rewriting. 3. inferior-ess rewrite. 4. ess-17.11/lisp/ess-arc-d.el0000444005071500004540000000610213202324174012305 00000000000000;;; ess-arc-d.el --- ARC customization ;; Copyright (C) 2000 A. J. Rossini ;; Copyright (C) 2001--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 30 Jun 2000 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file extends the XLispStat configuration for ARC, the extension of the ;; R-Code. ;;; Code: (require 'ess-lsp-l) (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (defvar ARC-customize-alist '((ess-customize-alist . ARC-customize-alist ) (ess-language . "XLS" ) (ess-dialect . "ARC" ) (ess-loop-timeout . ess-XLS-loop-timeout) (ess-object-name-db-file . "ess-xls-namedb.el" ) (ess-help-sec-regex . " ") (ess-help-sec-keys-alist . " ") (inferior-ess-primary-prompt . "> ?" ) (comint-use-prompt-regexp . t) (inferior-ess-program . inferior-ARC-program-name) (inferior-ess-help-command . "(help '%s)\n" ) (inferior-ess-objects-command . "(variables)\n" ) (inferior-ess-exit-command . "(exit)\n" ) ;;(inferior-ess-start-args . nil) (inferior-ess-start-file . nil)) ; "~/.ess-ARC") "Variables to customize for ARC, a dialect of XLS.") (defun ARC-mode (&optional proc-name) "Major mode for editing ARC source. NOT EVEN STARTED." (interactive) (setq ess-customize-alist ARC-customize-alist) (lisp-mode)) (defun ARC () "Call 'ARC', the extend XLispStat statistical system, from Forrest Young." (interactive) (setq ess-customize-alist ARC-customize-alist) (ess-write-to-dribble-buffer (format "(ARC): ess-dialect=%s , buf=%s\n" ess-dialect (current-buffer))) (inferior-ess)) (fset 'arc 'ARC) ; Provide package (provide 'ess-arc-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-arc-d.el ends here ess-17.11/lisp/ess-bugs-d.el0000444005071500004540000003741713202324174012515 00000000000000;;; ess-bugs-d.el --- ESS[BUGS] dialect ;; Copyright (C) 2008-2011 Rodney Sparapani ;; Author: Rodney Sparapani ;; Created: 13 March 2008 ;; Maintainer: ESS-help ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: (require 'ess-bugs-l) (require 'ess-utils) (require 'ess-inf) (setq auto-mode-alist (append '(("\\.[bB][uU][gG]\\'" . ess-bugs-mode)) auto-mode-alist)) (defvar ess-bugs-command "OpenBUGS" "Default BUGS program in PATH.") (make-local-variable 'ess-bugs-command) (defvar ess-bugs-monitor '("") "Default list of variables to monitor.") (make-local-variable 'ess-bugs-monitor) (defvar ess-bugs-thin 1 "Default thinning parameter.") (make-local-variable 'ess-bugs-thin) (defvar ess-bugs-chains 1 "Default number of chains.") (make-local-variable 'ess-bugs-chains) (defvar ess-bugs-burnin 10000 "Default burn-in.") (make-local-variable 'ess-bugs-burnin) (defvar ess-bugs-update 10000 "Default number of updates after burnin.") (make-local-variable 'ess-bugs-update) (defvar ess-bugs-system nil "Default whether BUGS recognizes the system command.") (defvar ess-bugs-font-lock-keywords (list ;; .bug files (cons "#.*\n" font-lock-comment-face) (cons "^[ \t]*\\(model\\|var\\)\\>" font-lock-keyword-face) (cons (concat "\\ " ess-bugs-file-root ".bog 2>&1 " ;; ess-bugs-batch-post-command "' > " ess-bugs-file-root ".bsh") ;; (comint-send-input) ;; (insert "at -f " ess-bugs-file-root ".bsh now") ;; (comint-send-input) (insert "echo '" ess-bugs-batch-pre-command " " bugs-command " < " ess-bugs-file-root ".bmd > " ess-bugs-file-root ".bog 2>&1 " ess-bugs-batch-post-command "' | at now") (comint-send-input) )) (defun ess-bugs-na-bug () "ESS[BUGS]: Perform Next-Action for .bug" (if (equal 0 (buffer-size)) (ess-bugs-switch-to-suffix ".bug") ;else (ess-save-and-set-local-variables) (ess-bugs-switch-to-suffix ".bmd" ess-bugs-chains ess-bugs-monitor ess-bugs-thin ess-bugs-burnin ess-bugs-update)) ) (defun ess-bugs-mode () "ESS[BUGS]: Major mode for BUGS." (interactive) (kill-all-local-variables) (ess-setq-vars-local '((comment-start . "#"))) (setq major-mode 'ess-bugs-mode) (setq mode-name "ESS[BUGS]") (use-local-map ess-bugs-mode-map) (setq font-lock-auto-fontify t) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(ess-bugs-font-lock-keywords nil t)) (setq ess-language "S") ; mimic S for ess-smart-underscore (run-hooks 'ess-bugs-mode-hook) (if (not (w32-shell-dos-semantics)) (add-hook 'comint-output-filter-functions 'ess-bugs-exit-notify-sh)) ) (defun ess-sci-to-dec () "For BUGS/S family: Express +/-0.000E+/-0 or +/-0.0e+/-00 as a decimal." (interactive) (setq buffer-read-only nil) (save-excursion (goto-char 0) (save-match-data (let ((ess-temp-replacement-string nil) (ess-temp-replacement-9 0) (ess-temp-replacement-diff 0)) (while (search-forward-regexp "-?[0-9][.][0-9][0-9]?[0-9]?[Ee][+-][0-9][0-9]?" nil t) (setq ess-temp-replacement-string (int-to-string (string-to-number (match-string 0)))) (setq ess-temp-replacement-diff (- (match-end 0) (match-beginning 0))) (save-match-data (setq ess-temp-replacement-9 (string-match "99999999999$" ess-temp-replacement-string)) (if (not ess-temp-replacement-9) (setq ess-temp-replacement-9 (string-match "000000000001$" ess-temp-replacement-string)))) (if ess-temp-replacement-9 (setq ess-temp-replacement-string (substring ess-temp-replacement-string 0 ess-temp-replacement-9))) (setq ess-temp-replacement-diff (- ess-temp-replacement-diff (string-width ess-temp-replacement-string))) (while (> ess-temp-replacement-diff 0) (setq ess-temp-replacement-string (concat ess-temp-replacement-string " ")) (setq ess-temp-replacement-diff (- ess-temp-replacement-diff 1))) (replace-match ess-temp-replacement-string)))))) (setq features (delete 'ess-bugs-d features)) (provide 'ess-bugs-d) ;;; ess-bugs-d.el ends here ess-17.11/lisp/ess-bugs-l.el0000444005071500004540000002350713202324174012520 00000000000000;;; ess-bugs-l.el --- ESS[BUGS] languages ;; Copyright (C) 2006-2011 Rodney Sparapani ;; Author: Rodney Sparapani ;; Created: 16 August 2006 ;; Maintainer: ESS-help ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: (require 'font-lock) (require 'comint) (require 'ess-compat) (defgroup ess-bugs nil "ESS: BUGS." :group 'ess :prefix "ess-") (defcustom ess-bugs-batch-method (if ess-microsoft-p (if (w32-shell-dos-semantics) 'dos 'sh) 'sh) "Method used by `ess-bugs-batch'. The default is based on the value of the emacs variable `system-type' and, on Windows machines, the function `w32-shell-dos-semantics'. 'sh if *shell* runs a Bourne-like or a C-like Unix shell 'dos if *shell* runs a DOS-like Windows shell Unix users will get 'sh by default. Windows users running a DOS-like *shell* will get 'dos by default, while those running a Unix-like *shell* will get 'sh by default. Users whose default is not 'sh, but are accessing a remote machine with `telnet' or `ssh', should have the following in their init file: (setq-default ess-bugs-batch-method 'sh)" :group 'ess-bugs ) (defcustom ess-bugs-batch-post-command (if (equal ess-bugs-batch-method 'sh) "&" " ") "*ESS[BUGS]: Modifiers at the end of the batch BUGS command line." :group 'ess-bugs :type 'string ) (defcustom ess-bugs-batch-pre-command (if (equal ess-bugs-batch-method 'sh) "nohup nice time" (if ess-microsoft-p "start")) "*ESS[BUGS]: Modifiers at the beginning of the batch BUGS command line." :group 'ess-bugs :type 'string ) (defcustom ess-bugs-default-burn-in "500" "ESS[BUGS]: Burn-in iterations to discard." :group 'ess-bugs :type 'string ) (defcustom ess-bugs-default-update "1000" "ESS[BUGS]: Iterations to store." :group 'ess-bugs :type 'string ) (defvar ess-bugs-batch-command ";" "*ESS[BUGS]: The name of the command to run BUGS in batch mode." ) (defvar ess-bugs-file "." "ESS[BUGS]: BUGS file with PATH.") (defvar ess-bugs-file-root "." "ESS[BUGS]: Root of BUGS file.") (defvar ess-bugs-file-suffix "." "ESS[BUGS]: Suffix of BUGS file.") (defvar ess-bugs-file-dir "." "ESS[BUGS]: Directory of BUGS file.") (defvar ess-bugs-file-data "..." "ESS[BUGS]: BUGS data file.") (defcustom ess-bugs-inits-suffix ".in" "ESS[BUGS]: BUGS init file suffix." :group 'ess-bugs :type 'string ) (defcustom ess-bugs-data-suffix ".dat" "ESS[BUGS]: BUGS data file suffix." :group 'ess-bugs :type 'string ) (defcustom ess-bugs-mode-hook nil "*ESS[BUGS]: List of functions to call upon entering mode." :group 'ess-bugs :type 'hook) (defvar ess-bugs-monitor-vars " " "ESS[BUGS]: List of BUGS variables to be written out to a file.") (defvar ess-bugs-stats-vars " " "ESS[BUGS]: List of BUGS variables to be summarized with statistics.") (defvar ess-bugs-mode-map nil "ESS[BUGS]: Keymap for mode.") (if ess-bugs-mode-map nil (setq ess-bugs-mode-map (make-keymap))) (define-key ess-bugs-mode-map (quote [f2]) 'ess-revert-wisely) ;(define-key ess-bugs-mode-map (quote [f12]) 'ess-bugs-next-action) (define-key ess-bugs-mode-map "\C-c\C-c" 'ess-bugs-next-action) (define-key ess-bugs-mode-map "=" 'ess-bugs-hot-arrow) (define-key ess-bugs-mode-map "_" 'ess-bugs-hot-arrow) (defvar ess-bugs-syntax-table nil "ESS[BUGS]: Syntax table for mode.") (if ess-bugs-syntax-table nil (setq ess-bugs-syntax-table (make-syntax-table))) (modify-syntax-entry ?\\ "." ess-bugs-syntax-table) (modify-syntax-entry ?# "<" ess-bugs-syntax-table) (modify-syntax-entry ?\n ">" ess-bugs-syntax-table) (modify-syntax-entry ?( "()" ess-bugs-syntax-table) (modify-syntax-entry ?) ")(" ess-bugs-syntax-table) (modify-syntax-entry ?. "w" ess-bugs-syntax-table) (defun ess-bugs-file () "ESS[BUGS]: Set internal variables dealing with BUGS files. Set `ess-bugs-file', `ess-bugs-file-root', `ess-bugs-file-suffix' and `ess-bugs-file-dir'." (let ((ess-bugs-temp-string (buffer-name))) (setq ess-bugs-file (expand-file-name ess-bugs-temp-string)) (setq ess-bugs-file-dir (convert-standard-filename (file-name-directory ess-bugs-file))) (setq ess-bugs-file-root (file-name-nondirectory (file-name-sans-extension ess-bugs-file))) (if (fboundp 'file-name-extension) (setq ess-bugs-file-suffix (file-name-extension ess-bugs-temp-string)) ;;else (setq ess-bugs-file-suffix (car (last (split-string ess-bugs-temp-string "[.]"))))) (setq ess-bugs-file-suffix (downcase (car (split-string (concat "." ess-bugs-file-suffix) "[<]")))) (setq ess-bugs-file (concat ess-bugs-file-dir ess-bugs-file-root ess-bugs-file-suffix)) ) ) (defun ess-bugs-exit-notify-sh (string) "ESS[BUGS]: Detect completion or failure of submitted job and notify the user." (let* ((exit-done "\\[[0-9]+\\]\\ *\\+*\\ *\\(Exit\\|Done\\)[^\r\n]*") (beg (string-match exit-done string))) (if beg (message (substring string beg (match-end 0)))))) (defun ess-bugs-hot-arrow () "*ESS[BUGS]: Substitute <- for = key press" (interactive) (insert " <- ")) (defun ess-bugs-next-action () "ESS[BUGS/JAGS]: Perform the appropriate next action." (interactive) (ess-bugs-file) (cond ((equal ".bug" ess-bugs-file-suffix) (ess-bugs-na-bug)) ((equal ".jag" ess-bugs-file-suffix) (ess-jags-na-bug)) ((equal ".bmd" ess-bugs-file-suffix) (ess-save-and-set-local-variables) (ess-bugs-na-bmd ess-bugs-command ess-bugs-chains)) ((equal ".jmd" ess-bugs-file-suffix) (ess-save-and-set-local-variables) (ess-jags-na-jmd ess-jags-command ess-jags-chains))) ) (defun ess-bugs-sci-to-round-4-dp () "ESS[BUGS]: round output from +/-0.000E+/-0 to 4 decimal places." (interactive) (setq buffer-read-only nil) (save-excursion (goto-char 0) (save-match-data (let ((ess-bugs-replacement-string nil) (ess-bugs-replacement-9 0) (ess-bugs-replacement-diff 0)) (while (search-forward-regexp "-?[0-9][.][0-9][0-9][0-9]E[+-][0-9]" nil t) (setq ess-bugs-replacement-string (int-to-string (string-to-number (match-string 0)))) (setq ess-bugs-replacement-diff (- (match-end 0) (match-beginning 0))) (save-match-data (setq ess-bugs-replacement-9 (string-match "99999999999$" ess-bugs-replacement-string)) (if (not ess-bugs-replacement-9) (setq ess-bugs-replacement-9 (string-match "000000000001$" ess-bugs-replacement-string)))) (if ess-bugs-replacement-9 (setq ess-bugs-replacement-string (substring ess-bugs-replacement-string 0 ess-bugs-replacement-9))) (setq ess-bugs-replacement-diff (- ess-bugs-replacement-diff (string-width ess-bugs-replacement-string))) (while (> ess-bugs-replacement-diff 0) (setq ess-bugs-replacement-string (concat ess-bugs-replacement-string " ")) (setq ess-bugs-replacement-diff (- ess-bugs-replacement-diff 1))) (replace-match ess-bugs-replacement-string)))))) ;;; ESS[BUGS-Shell] for running BUGS interactively (defgroup ess-bugs-shell nil "ESS: BUGS-Shell." :group 'ess-bugs :prefix "ess-") (defcustom ess-bugs-shell-buffer-name "BUGS" "*ESS[BUGS-Shell]: The name of the BUGS-Shell buffer." :group 'ess-bugs-shell :type 'string) (defcustom ess-bugs-shell-command "OpenBUGS" "*ESS[BUGS-Shell]: The name of the command to run BUGS interactively. Set to the name of the batch BUGS script that comes with ESS or to the name of BUGS command. Make sure it is in your PATH or add path to the command name." :group 'ess-bugs-shell :type 'string) (defcustom ess-bugs-shell-default-output-file-root "bugs" "*ESS[BUGS-Shell]: Default value for the root of output files." :group 'ess-bugs-shell :type 'string) (defcustom ess-bugs-shell-mode-hook nil "*ESS[BUGS-Shell]: List of functions to call upon entering mode." :group 'ess-bugs-shell :type 'hook) (defun ess-bugs-shell () "Create a buffer with BUGS running as a subprocess." (interactive) (require 'shell) (switch-to-buffer (concat "*" ess-bugs-shell-buffer-name "*")) (make-comint ess-bugs-shell-buffer-name ess-bugs-shell-command nil ess-bugs-default-bins ess-bugs-shell-default-output-file-root) (comint-mode) (setq shell-dirtrackp t major-mode 'bugs-shell-mode mode-name "ESS[BUGS-Shell]" comint-prompt-regexp "^Bugs> *") (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(ess-bugs-font-lock-keywords nil t)) (run-hooks 'ess-bugs-shell-mode-hook) ) (provide 'ess-bugs-l) ;;; ess-bugs-l.el ends here ess-17.11/lisp/ess-comp.el0000444005071500004540000000431413202324174012260 00000000000000;;; ess-comp.el --- setting for compiling, only. ;; Copyright (C) 1997--2006 A. J. Rossini ;; Copyright (C) 1997--2006 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 25 July 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file sets up all compilation needs. ;;; Code: (provide 'ess-comp) ;; Emacs doesn't include '.' in the emacs lisp load path. (add-to-list 'load-path nil) ;; defvar'ed to nil in ./ess-site.el (setq ess-show-load-messages t) (defun ess-message (format-string &rest args) "Shortcut for \\[message] only if `ess-show-load-messages' is non-nil." (if ess-show-load-messages (message format-string args))) ;; These are required by every other file. (ess-message "loading 'ess-compat ..") (require 'ess-compat) ;set Emacsen diffs (ess-message "loading 'ess-custom ..") (require 'ess-custom) ;set variables (ess-message "loading 'ess ..") (require 'ess) ;configure (ess-message "loading 'ess-site ..") (require 'ess-site) ;overload defaults ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-comp.el ends here ess-17.11/lisp/ess-compat.el0000444005071500004540000000502113202324174012601 00000000000000;;; ess-compat.el --- simple determination of Emacs and version #. ;; Copyright (C) 2000--2017 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 07 June 2000 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file contains functions for easily determining features of the ;; version of Emacs that we are using. ;;; Code: (defun ess-sleep () ;; FIXME: Not a "compatibility" thing any more, so move to ess-utils.el. "Put emacs to sleep for `ess-sleep-for-shell' seconds (floats work)." (sleep-for ess-sleep-for-shell)) ;; for emacs <= 24.2 : (unless (fboundp 'defvar-local) (defmacro defvar-local (var val &optional docstring) "Define VAR as a buffer-local variable with default value VAL. Like `defvar' but additionally marks the variable as being automatically buffer-local wherever it is set." (declare (debug defvar) (doc-string 3)) ;; Can't use backquote here, it's too early in the bootstrap. (list 'progn (list 'defvar var val docstring) (list 'make-variable-buffer-local (list 'quote var))))) (unless (fboundp 'setq-local) (defmacro setq-local (var val) "Set variable VAR to value VAL in current buffer." ;; Can't use backquote here, it's too early in the bootstrap. (list 'set (list 'make-local-variable (list 'quote var)) val))) (provide 'ess-compat) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-compat.el ends here ess-17.11/lisp/ess-custom.el0000444005071500004540000032667513201331752012654 00000000000000;;; ess-custom.el --- Customize variables for ESS ;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2015 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: A.J. Rossini ;; Created: 05 June 2000 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: (require 'custom) (require 'executable) (require 'font-lock) ;; FIXME: When Emacs is started from Cygwin shell in Windows, ;; we have (equal window-system 'x) -and should use "--ess" in *d-r.el (defvar ess-microsoft-p (memq system-type '(ms-dos windows-nt)) "Value is t if the OS is one of Microsoft's, nil otherwise.") ;; Customization Groups (defgroup ess nil "ESS: Emacs Speaks Statistics." :group 'local) (defgroup ess-edit nil "ESS: editing behavior, including coments/indentation." :group 'ess :prefix "ess-") (defgroup ess-proc nil "ESS: process control." :group 'ess :prefix "ess-") (defgroup ess-command nil "ESS: Commands for various things." :group 'ess :prefix "ess-") (defgroup ess-help nil "ESS: help functions." :group 'ess :prefix "ess-") (defgroup ess-hooks nil "ESS: hooks for customization." :group 'ess :prefix "ess-") (defgroup ess-S nil "ESS: S Languages." :group 'ess :prefix "ess-") (defgroup ess-origS nil "ESS: Original S Dialect from Bell Labs/AT&T." :group 'ess-S :prefix "ess-") (defgroup ess-SPLUS nil "ESS: S-PLUS Dialect of S." :group 'ess-S :prefix "ess-") (defgroup ess-R nil "ESS: R Dialect of S." :group 'ess-S :prefix "ess-") (defgroup ess-Julia nil "ESS: Julia." :group 'ess :prefix "julia-") (defgroup ess-sas nil "ESS: SAS." :group 'ess :prefix "ess-") (defgroup ess-Stata nil "ESS: Stata." :group 'ess :prefix "ess-") (defgroup ess-XLS nil "ESS: XLispStat." :group 'ess :prefix "ess-") (defgroup ess-OMG nil "ESS: Omegahat." :group 'ess :prefix "ess-") (defgroup ess-mouse nil ;; FIXME: this is not used yet <--> ./ess-mous.el "ESS: Mouse." :group 'ess :prefix "ess-") (defgroup ess-roxy nil "Mode for editing in-code Roxygen documentation." :group 'ess :group 'convenience :group 'ess-extras :prefix "ess-" ;; << -- added for ESS integration FIXME?? :group 'tools) (defgroup ess-sweave nil "Mode for editing Sweave (*.[SR]nw) files." :group 'ess-S :prefix "ess-") (defgroup ess-extras nil "Extra utilities for ESS" :group 'ess :prefix "ess-") ;; Variables (not user-changeable) (defvar ess-version "17.11" ;; updated by 'make' "Version of ESS currently loaded.") (defvar ess-revision nil ;; set "The subversion revision and date of ESS. Is set by \\[ess-version-string].") (defvar no-doc "This function is part of ESS, but has not yet been loaded. Full documentation will be available after autoloading the function." "Documentation for autoload functions.") ; User changeable variables ;;; Common user changeable variable are described and documented in ;;; ess-site.el. Please check there first! ;;;===================================================== ;;; In general: Variables with document strings starting with a * are ;;; the ones you can generally change safely, and may have to upon ;;; occasion. ;;*;; Options and Initialization ;; Menus and pulldowns. (defcustom ess-funcmenu-use-p (fboundp 'func-menu) "Non-nil means use func-menu." :group 'ess :type 'boolean) (defcustom ess-speedbar-use-p (fboundp 'speedbar) "Non-nil means use speedbar." :group 'ess :type 'boolean) (defcustom ess-imenu-use-p (fboundp 'imenu) "Non-nil means use imenu facility. This value can be overridden by mode-specific variables, such as `ess-imenu-use-S'." :group 'ess :type 'boolean) (defcustom ess-imenu-use-S ess-imenu-use-p "*Non-nil means include an Imenu menu item in S buffers." :group 'ess :type 'boolean) (defvar ess-imenu-generic-expression nil "Placeholder for imenu-generic-expression. Dialect specific.") ;; (defcustom ess-handy-commands '(("change-directory" . ess-change-directory) ("install.packages" . ess-install-library) ("library" . ess-library) ("objects[ls]" . ess-execute-objects) ("help-apropos" . ess-display-help-apropos) ("help-index" . ess-display-package-index) ("help-object" . ess-display-help-on-object) ("search" . ess-execute-search) ("set-width" . ess-execute-screen-options) ("setRepos" . ess-setRepositories) ("sos" . ess-sos) ("vignettes" . ess-display-vignettes) ) "An alist of custom ESS commands available for call by `ess-handy-commands' and `ess-smart-comma' function." :group 'ess :type 'alist) (defvar ess--local-handy-commands nil "Store handy commands locally") (make-variable-buffer-local 'ess--local-handy-commands) (defvar ess-install-library-function nil "Dialect-specific function to install a library.") (make-variable-buffer-local 'ess-install-library-function) (defcustom ess-describe-at-point-method nil "Whether `ess-describe-object-at-point' should use a tooltip. If nil display in an electric buffer. If 'tooltip display in a tooltip. See also `tooltip-hide-delay' and `tooltip-delay'. " :group 'ess-utils :type '(choice (const :tag "buffer" :value nil ) (const tooltip)) ) (defcustom ess-r-describe-object-at-point-commands '(("str(%s)") ("htsummary(%s, hlength = 20, tlength = 20)") ("summary(%s, maxsum = 20)")) "A list of commands cycled by `ess-describe-object-at-point'. %s is substituted with the name at point. The value of each element is nil and is not used in current implementation." :group 'R :type 'alist) (defvaralias 'ess-R-describe-object-at-point-commands 'ess-r-describe-object-at-point-commands) (defcustom ess-S-describe-object-at-point-commands ess-R-describe-object-at-point-commands "An alist of commands cycled by `ess-describe-object-at-point'. %s is substitute with the name at point. The value is not used as yet." :group 'S+ :type 'alist) (defcustom ess-can-eval-in-background t "If non-nil ESS can perform caching and other background activities by calling the subprocess on idle time.") (defcustom ess-user-full-name (user-full-name) "The full name of the user." :group 'ess :type 'string) (defcustom ess-blink-region t "If t evaluated region is highlighted for a shortwhile. See also `ess-blink-delay'" :group 'ess :type 'boolean) (defcustom ess-blink-delay .3 "Number of seconds to highlight the evaluated region." :group 'ess :type 'number) (defcustom ess-ask-for-ess-directory t "Non-nil means request the process directory each time S is run." :group 'ess :type 'boolean) (defcustom ess-ask-about-transfile nil "Non-nil means ask about a transcript file before running ESS." :group 'ess :type 'boolean) (defcustom ess-display-buffer-reuse-frames t "Non-nil means \\[display-buffer] reuses existing frames; see `display-buffer-reuse-frames'." :group 'ess :type 'boolean) (defvar ess-language nil "Prefix of all ESS processes, and defines the dialect in use. Currently acceptable values are `S', `XLS', `SAS'. Can be changed, e.g., to `R'. Use `setq-default' if setting it in .emacs (also see ess-site.el).") ;; :group 'ess ;; :type '(choice (const :tag "Initial" :value nil) ;; (const :tag "S" :value "S") ;; (const :tag "XLS" :value "XLS") ;; (const :tag "SAS" :value "SAS") ;; (const :tag "R" :value "R"))) (make-variable-buffer-local 'ess-language) (defvar ess-dialect nil "String version of the dialect being run for the inferior process. This, plus `ess-language', should be able to determine the exact version of the statistical package being executed in the particular buffer. Current values could include: for `ess-dialect' = S3, S4, Sp3, Sp4, Sp5, S+, R, XLS, SAS, Stata, Julia Used to adjust for changes in versions of the program.") (make-variable-buffer-local 'ess-dialect) ;;(setq-default ess-dialect "Initial-dialect") (setq-default ess-dialect nil) ;;; SJE -- why use "Initial-dialect"? If we use nil, it matches "None" ;;; in the custom choice. (defcustom ess-directory-function nil "Function to return the directory that ESS is run from. If nil or if the function returns nil then you get `ess-directory'." :group 'ess :type '(choice (const nil) function)) (defcustom ess-setup-directory-function nil "Function to setup the directory that ESS is run from. This function can be called to set environment variables or to create a workspace." :group 'ess :type '(choice (const nil) function)) (defcustom ess-startup-directory nil "The directory ESS is run from. It must end in a slash. Provided as a default if `ess-ask-for-ess-directory' is non-nil. A nil value means use the current buffer's default directory." :group 'ess :type '(choice (const nil) directory)) (defvaralias 'ess-directory 'ess-startup-directory) (defcustom ess-history-directory nil "Directory to pick up `ess-history-file' from. If this is nil, the history file is relative to `ess-directory'." :group 'ess :type '(choice (const nil) directory)) (defcustom ess-history-file t "File to pick up history from. nil means *no* history is read or written. t means something like \".Rhistory\". If this is a relative file name, it is relative to `ess-history-directory'. Consequently, if that is set explicitly, you will have one history file for all projects." :group 'ess :type '(choice (const :tag "Off" nil) (const :tag "On" t) file)) (defcustom ess-plain-first-buffername t "No fancy process buffname for the first process of each type (novice mode)." :group 'ess :type 'boolean) (defcustom ess-use-inferior-program-name-in-buffer-name nil "For R, use e.g., 'R-2.1.0' or 'R-devel' (the program name) for buffer name. Avoids the plain dialect name." :group 'ess :type 'boolean) (defcustom ess-use-ido t "If t ess will try to use ido completion whenever possible. By default ESS uses enables IDO flex matching. See `ido-enable-flex-matching' for details on flex matching and `ess-ido-flex-matching' on how to disable it for ESS, if you don't want it. Some useful keys for IDO completion: - C-s (next) or C-r (previous) to move through the list. - C-SPC to restrict the list to currently matched items. - TAB to display possible completion in a buffer - C-t `ido-toggle-regexp' " :group 'ess :type 'boolean) (defcustom ess-tab-complete-in-script nil "If non-nil, TAB in script buffers tries to complete if there is nothing to indent. See also `ess-first-tab-never-complete'.") (defcustom ess-first-tab-never-complete 'symbol "If t, first TAB never tries to complete in ess-mode. If 'symbol first TAB doesn't try to complete if next char is a valid symbol constituent. If 'symbol-or-paren don't complete if next char is closed paren )}] or symbol character. If 'symbol-or-paren-or-punct don't complete if next char is punctuation +-=% etc, or closed paren or symbol. If 'unless-eol - first TAB completes only at end of line. If nil first TAB always tries to complete (this might be too aggressive and dangerous). " :group 'ess :type '(choice (const nil) (const symbol) (const symbol-or-paren) (const symbol-or-paren-or-punct) (const unless-eol) (const t))) (defvaralias 'ess-first-tab-never-completes-p 'ess-first-tab-never-complete) (defcustom ess-use-eldoc t "If t, activate eldoc in ess-mode and inferior-ess-mode buffers. If 'script-only activate in ess-mode buffers only. See also `ess-eldoc-show-on-symbol'." :group 'ess-extras :type '(choice (const t) (const script-only) (const nil))) (defcustom ess-eldoc-show-on-symbol nil "If non-nil, show help string whenever the point is on a symbol. If nil show only when the point is in a function call, i.e. after (." :group 'ess-extras :type 'boolean) (defcustom ess-eldoc-abbreviation-style 'normal "How ess-eldoc string should be abbreviated when it doesn't fit into one line A symbol which can be nil: do nothing mild: Replace TRUE, FALSE with T,F normal: Try mild + shorten the default values longer than 10 characters. strong: Try normal + completely remove default values except =F,=T,=d where d is a digit. aggressive (or t): Try strong + truncate the doc string to fit into minibuffer. The default style is 'normal. Ess-eldoc also honors the value of `eldoc-echo-area-use-multiline-p'. If this variable is not t (the default), doc strings are truncated to fit into minibufer. This allows the use of different abbreviation styles with the truncation." :group 'ess :type '(choice (const nil) (const mild) (const normal) (const strong) (const aggressive) (const t))) (defcustom ess-use-auto-complete t "If t, activate auto-complete support in ess-mode and inferior-ess-mode buffers. If 'script-only activate in ess-mode buffers only. If non-nil add `ac-source-R' and `ac-source-filename' to the `ac-sources' buffer local variable. ESS defines three AC sources `ac-source-R',`ac-source-R-objects' and `ac-source-R-args'. See auto-complete package documentation (http://cx4a.org/software/auto-complete/) for how to install your custom sources." :group 'ess-extras :type '(choice (const t) (const script-only) (const nil))) (defcustom ess-use-company t "If t, activate company support in ess-mode and inferior-ess-mode buffers. If non-nil add `company-R-args' and `company-R-objects' to the `company-backends'. If 'script-only activate in ess-mode buffers only." :group 'ess-extras :type '(choice (const t) (const script-only) (const nil))) (defcustom ess-company-arg-prefix-length nil "Minimum prefix for ess company function argument completion." :group 'ess-extras :type '(choice (const :tag "Default" nil) integer)) (defcustom ess-use-tracebug t "If t, load ess-tracebug when R process starts." :group 'ess-extras :type 'boolean) (defcustom ess-ido-flex-matching t "If t, ido for ESS completion uses flex matching. See `ido-enable-flex-matching' for details. If you have an old computer, or you load lot of packages, you might want to set this to nil. " :group 'ess :type 'boolean) (defvar ess-ac-sources nil "Dialect specific, ESS specific list of ac-sources") (defvar ess-company-backends nil "Dialect specific, ESS specific list of `company-backends'") (defvar ess--completing-hist nil "Variable to store completion history. Used by `ess-completion-read' command.") (defvar ess-smart-operators () "List of smart operators to be used in ESS and IESS modes. Not to be set by users. It is redefined by mode specific settings, such as `ess-r-smart-operators'.") (make-variable-buffer-local 'ess-smart-operators) (defvar ess-r-smart-operators nil "If nil, don't use any of smart operators. If t, use all. If an axplicit list of operators, use only those operators. In current verion of ESS, it controls the behavior of ess-smart-comma only, but will be enriched in the near future.") (defvaralias 'ess-R-smart-operators 'ess-r-smart-operators) (defvar ess-no-skip-regexp "[ \t\n]*\\'" "If `ess-next-code-line' sees this line, it doesn't jump over. Used to avoid annoying jumping by ess-eval.*-and-step to end of buffer or end chunks etc.") (defcustom ess-S-assign " <- " "String used for left assignment in all S dialects. Used by \\[ess-smart-S-assign]." :group 'ess-S :type 'string) (defcustom ess-smart-S-assign-key "_" "Key used by `ess-smart-S-assign'. By default bound to underscore, but can be set to any key. If this key is customized, you must add (ess-toggle-S-assign nil) (ess-toggle-S-assign nil) after the line that sets the customization and evaluate these lines or reboot emacs. The first call clears the default `ess-smart-S-assign' assignment and the second line re-assigns it to the customized setting. " :group 'ess-S :type 'character) ;;*;; Variables concerning editing behaviour (defcustom ess-filenames-map t "Declares if the filenames in an attached directory are the same as objects in that directory (when t). This is not true for DOS and other OS's with limited filename lengths. Even if this is set incorrectly, the right things will probably still happen, however." :group 'ess-edit :type 'boolean) (defcustom ess-keep-dump-files t "Variable controlling whether to delete dump files after a successful load. If nil: always delete. If `ask', confirm to delete. If `check', confirm to delete, except for files created with ess-dump-object-into-edit-buffer. Anything else, never delete. This variable only affects the behaviour of `ess-load-file'. Dump files are never deleted if an error occurs during the load. " :group 'ess-edit :type '(choice (const :tag "Check" :value 'check) (const :tag "Ask" :value 'ask) (const :tag "Always keep" :value "always") (const :tag "Always delete" :value nil) )) (defcustom ess-delete-dump-files nil "Non-nil means delete dump files after they are created. This applies to dump files created with `ess-dump-object-into-edit-buffer', only. Boolean flag which determines what to do with the dump files generated by \\[ess-dump-object-into-edit-buffer], as follows: If non-nil: dump files are deleted after each use, and so appear only transiently. The one exception to this is when a loading error occurs, in which case the file is retained until the error is corrected and the file re-loaded. If nil: dump files are not deleted, and backups are kept as usual. This provides a simple method for keeping an archive of S functions in text-file form. Auto-save is always enabled in dump-file buffers to enable recovery from crashes. This is useful to prevent source files being created for objects you don't actually modify. Once the buffer is modified and saved however, the file is not subsequently deleted unless `ess-keep-dump-files' is nil, and the file is successfully loaded back into S." :group 'ess-edit :type 'boolean) (defcustom ess-fill-calls t "If non-nil, refilling a paragraph inside a function or indexing call will arrange the arguments according to `fill-column' as in: fun_call(argument1, argument2, argument3, argument4) Refilling repeatedly cycles through different styles and eventually to the original formatting. The second style formats according to one argument per line: fun_call(argument1, argument2, argument3, argument4) When `ess-fill-calls-newlines' is t, the second style becomes: fun_call( argument1, argument2, argument3, argument4 ) Setting `ess-offset-arguments' to `prev-line' or `prev-call' activates a third style. It keeps one argument per line except for the first N arguments. N is controlled with a prefix. For example, calling M-q three times sets N to 1 while calling M-q twice then C-U 2 M-q sets N to 2. Here what the default produces: fun_call(argument1, argument2, argument3, argument4, argument5 ) This style is useful for refilling R6 or ggproto class definitions. The blinking of the refilled region can be disabled with `ess-blink-refilling'." :group 'ess-edit :type 'boolean) (defcustom ess-fill-continuations t "If non-nil, refilling a paragraph inside a continuation of statements (expressions separated by operators) will arrange all its elements, never going past `fill-column'. lm(outcome ~ pred1 + pred2 + pred3 + pred4, data) Refilling repeatedly cycles through different styles and eventually to the original formatting. The second style lay out the statements according to one expression per line: lm(outcome ~ pred1 + pred2 + pred3 + pred4, data) The blinking of the refilled region can be disabled with `ess-blink-refilling'." :group 'ess-edit :type 'boolean) (defcustom ess-fill-calls-newlines nil "When non-nil, the second refilling style produces newlines after and before the opening and closing delimiters. This is intended for example for dplyr-style code: fun_call( argument1, argument2, argument3, argument4 ) Note that this setting is temporary and likely to be replaced in the next ESS version by a more comprehensive and flexible way to set refill styles." :group 'ess-edit :type 'boolean) (defcustom ess-blink-refilling t "When non-nil, refilling a call or a continuation will first blink the filling region." :group 'ess-edit :type 'boolean) ;;; From ess-mode: (defcustom ess-mode-silently-save t "Non-nil means automatically save ESS source buffers before loading." :group 'ess-edit :type 'boolean) ;;*;; Variables controlling editing ;;;*;;; Edit buffer processing (defcustom ess-function-template " <- function( )\n{\n\n}\n" "If non-nil, function template used when editing nonexistent objects. The edit buffer will contain the object name in quotes, followed by this string. Point will be placed after the first parenthesis or bracket." :group 'ess-edit :type 'string) ;;; By K.Shibayama 5.14.1992 ;;; Setting any of the following variables in your .emacs is equivalent ;;; to modifying the DEFAULT style. ;;;*;;; Indentation parameters (defcustom ess-auto-newline nil "Non-nil means automatically newline before and after braces inserted in S code." :type 'boolean :group 'ess-edit) (defcustom ess-tab-always-indent t "Non-nil means TAB in S mode should always reindent the current line, regardless of where in the line point is when the TAB command is used." :type 'boolean :group 'ess-edit) (defvar ess-indent-line-function nil "Function to be used for the current dialect nil means to use R/S indentation.") (make-variable-buffer-local 'ess-indent-line-function) (defvar ess-indent-offset 2 "Main indentation offset that is commonly inherited by other offsets. See `ess-style-alist' for all available offsets.") (define-obsolete-variable-alias 'ess-indent-level 'ess-indent-offset "15.09") (defvar ess-offset-arguments 'open-delim "Indent for arguments of function calls or indexing brackets. This variables has an effect only when the ( or [ are not directly followed by a new line. See `ess-offset-arguments-newline' for indentation after closing newline. When set to `open-delim', arguments are indented relative to the opening parenthesis of the closest function call: object <- call(argument, other_call(argument, other_argument)) When set to `prev-call', arguments are indented relative to the closest function call: object <- call(argument, other_call(argument, other_argument)) When set to `prev-line', arguments are indented relative to the preceding line: object <- call(argument, other_call(argument, other_argument)) This setting can also be set to a list containing the the offset type and the offset size, such as `'(prev-call 2)'. Otherwise, `ess-indent-offset' is used as a default. See `ess-style-alist' for other offsets controlling indentation.") (defvar ess-offset-arguments-newline 'prev-call "Indent of arguments when ( or [ is followed by a new line. When set to `open-delim', arguments on a new line are indented relative to the opening parenthesis of the closest function call: object <- call(argument, other_call( argument, other_argument )) Wnen set to `prev-call', arguments on a new line are indented relative to the closest function call: object <- call(argument, other_call( argument, other_argument )) You can control the details of indentation at `prev-call' with `ess-indent-from-lhs' and `ess-indent-from-chain-start'. When set to `prev-line', arguments on a new line are indented relative to the preceding line: object <- call(argument, other_call( argument, other_argument )) This setting can also be set to a list containing the the offset type and the offset size, such as `'(prev-call 2)'. Otherwise, `ess-indent-offset' is used as a default. See `ess-style-alist' for other offsets controlling indentation.") (defvar ess-offset-block 'prev-line "Indentation for blocks. A block is usually declared with braces but a statement wrapped in anonymous parentheses is also considered a block. This offset can be either `prev-call', `prev-line' or `open-delim'. When set to `open-delim', blocks are indented relative to the opening parenthesis of the closest function call: call(argument, other_call(parameter = { stuff }, { stuff })) call(argument, lapply(data, function(x) { body })) When set to `prev-call', blocks are indented relative to the closest function call: call(argument, other_call(parameter = { stuff }, { stuff })) call(argument, lapply(data, function(x) { body })) You can control the details of indentation at `prev-call' with `ess-indent-from-lhs' and `ess-indent-from-chain-start'. When set to `prev-line', blocks are indented relative to the preceding line: call(argument, other_call(parameter = { stuff }, { stuff })) call(argument, lapply(data, function(x) { body })) This setting can also be set to a list containing the the offset type and the offset size, such as `'(prev-call 2)'. Otherwise, `ess-indent-offset' is used as a default. See `ess-style-alist' for other offsets controlling indentation.") (defvar ess-offset-continued 'straight "This setting controls indentation of continued statements, that is, consecutive statements separated by operators. When set to 'straight, continued statements are indented as follows: object %>% some_function() %>% other_function() When set to 'cascade: object %>% some_function() %>% other_function() The 'straight and 'cascade settings are actually equivalent to '(straight . t) and '(cascade . t), where `t' represents the base indent size. More generally, you can supply '(straight . N) to control the size of indentation. See `ess-style-alist' for for an overview of ESS indentation.") (defvar ess-align-nested-calls '("ifelse") "List of strings declaring function calls for which `ess-offset-arguments-newline' should be ignored. These calls will be vertically aligned instead. The default is `ifelse', resulting in the following indentation for nested ifelse calls: object <- ifelse(condition1, out1, ifelse(condition2, out2, out3)) See `ess-style-alist' for for an overview of ESS indentation.") (defvar ess-align-arguments-in-calls '("function[ \t]*(") "List of regexes specifying the calls where `ess-offset-arguments' should have no effect on function declarations. The arguments of those calls will be aligned from the opening parenthesis. By default, function declarations are overridden. If for example `ess-offset-arguments' is set to `prev-line', then function calls are normally indented as in: some_function(argument1, argument2, argument3 ) However, the parameters of function declarations will be vertically aligned: fun <- function(argument1, argument2 argument3) { body } See `ess-style-alist' for further details.") (defvar ess-align-continuations-in-calls t "Whether continuations inside calls should be indented from the opening delimiter. This produces the following indentation: 10 + (1 + 2 + 3 + 4) object[variable1 + variable2] if (test1 || test2 || test3 || test4) { any(test5 & test6) } instead of 10 + (1 + 2 + 3 + 4) object[variable1 + variable2] if (test1 || test2 || test3 || test4) { any(test5 & test6) } Definition operators (`<-', `=', `:=' and `~') still trigger an indentation in all cases. Also, operators at top level and in curly brackets are not affected by this setting and always induce an offset: { var1 + var2 } See `ess-style-alist' for for an overview of ESS indentation.") (defvar ess-align-blocks '(control-flow) "List of block types for which `ess-offset-blocks' should be ignored. The overridden blocks are vertically aligned. The list can contain either or both of the symbols `control-flow' and `fun-decl'. With `control-flow', if, else for and while blocks will always be aligned vertically. With `fun-decl', the body of a function declaration will always be aligned with the call to `function'.") (defvar ess-indent-from-lhs '(arguments fun-decl-opening) "List of syntactic elements that should be indented from the left-hand side of an assignment. The list accepts the symbol `arguments' and `fun-decl-opening'. For arguments, this setting only has an effect for offsets set to `prev-call'. When set, this indentation is produced: some_function(parameter = other_function( argument )) object <- some_function( argument1, argument2 ) instead of: some_function(parameter = other_function( argument )) object <- some_function( argument1, argument2 ) `fun-decl-opening' refers to the opening curly following a function declaration. Setting it produces: object <- function(argument) { body } instead of: object <- function(argument) { body } This is useful when (a) you have a long function name and want to break a line after `<-' so that you have room to lay out the arguments within `fill-column' characters; (b) you still want to align the function body from the LHS to save horizontal space. See `ess-style-alist' for for an overview of ESS indentation.") (defvar ess-indent-from-chain-start t "When non-nil, chained calls will be treated as if they were one call and indentation will start from the first one. This setting only has an effect for offsets set to `prev-call' or block offsets set to `opening-delim'. If `nil': some_function(other_function( argument )) If `t': some_function(other_function( argument )) See `ess-style-alist' for for an overview of ESS indentation.") ;;added rmh 2Nov97 at request of Terry Therneau (defcustom ess-indent-with-fancy-comments t "Non-nil means distiguish between #, ##, and ### for indentation. See `ess-style-alist' for for an overview of ESS indentation." :type 'boolean :group 'ess-edit) (define-obsolete-variable-alias 'ess-fancy-comments 'ess-indent-with-fancy-comments "15.09") (define-obsolete-variable-alias 'ess-arg-function-offset 'ess-indent-from-lhs "15.09") (define-obsolete-variable-alias 'ess-arg-function-offset-new-line 'ess-offset-arguments-newline "15.09") (define-obsolete-variable-alias 'ess-first-continued-statement-offset 'ess-offset-continued "15.09") (define-obsolete-variable-alias 'ess-continued-statement-offset 'ess-offset-continued "15.09") ;;;*;;; Editing styles (defvar ess-style-alist `((BSD (ess-indent-offset . 8) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . prev-call) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . ,(default-value 'ess-indent-from-lhs)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) (C++ (ess-indent-offset . 4) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . prev-call) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . (arguments)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) ;; CLB added rmh 2Nov97 at request of Terry Therneau (CLB (ess-indent-offset . ,(default-value 'ess-indent-offset)) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . ,(default-value 'ess-offset-block)) (ess-offset-continued . (straight 4)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . ,(default-value 'ess-indent-from-lhs)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) (GNU (ess-indent-offset . ,(default-value 'ess-indent-offset)) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . (prev-call 4)) (ess-offset-block . ,(default-value 'ess-offset-block)) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . ,(default-value 'ess-indent-from-lhs)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) (K&R (ess-indent-offset . 5) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . prev-call) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . ,(default-value 'ess-indent-from-lhs)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) ;; added ajr 17.Feb'04 to match "common R" use (== DEFAULT apart from offset = 4) (RRR (ess-indent-offset . 4) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . ,(default-value 'ess-offset-block)) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . ,(default-value 'ess-indent-from-lhs)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) (RRR+ (ess-indent-offset . 4) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . open-delim) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . (arguments)) (ess-indent-from-chain-start . nil) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments))) (RStudio (ess-indent-offset . ,(default-value 'ess-indent-offset)) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . prev-line) (ess-offset-block . ,(default-value 'ess-offset-block)) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . nil) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . nil) (ess-align-blocks . nil) (ess-indent-from-lhs . (arguments)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . nil)) (RStudio- (ess-indent-offset . ,(default-value 'ess-indent-offset)) (ess-offset-arguments . prev-line) (ess-offset-arguments-newline . prev-line) (ess-offset-block . ,(default-value 'ess-offset-block)) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . nil) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . nil) (ess-align-blocks . nil) (ess-indent-from-lhs . (arguments)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . nil)) (DEFAULT (ess-indent-offset . ,(default-value 'ess-indent-offset)) (ess-offset-arguments . ,(default-value 'ess-offset-arguments)) (ess-offset-arguments-newline . ,(default-value 'ess-offset-arguments-newline)) (ess-offset-block . ,(default-value 'ess-offset-block)) (ess-offset-continued . ,(default-value 'ess-offset-continued)) (ess-align-nested-calls . ,(default-value 'ess-align-nested-calls)) (ess-align-arguments-in-calls . ,(default-value 'ess-align-arguments-in-calls)) (ess-align-continuations-in-calls . ,(default-value 'ess-align-continuations-in-calls)) (ess-align-blocks . ,(default-value 'ess-align-blocks)) (ess-indent-from-lhs . ,(default-value 'ess-indent-from-lhs)) (ess-indent-from-chain-start . ,(default-value 'ess-indent-from-chain-start)) (ess-indent-with-fancy-comments . ,(default-value 'ess-indent-with-fancy-comments)))) "Predefined formatting styles for ESS code. Use `ess-default-style' to apply a style in all R buffers. The values of all styles except OWN are fixed. To change the value of variables in the OWN group, customize the variable `ess-own-style-list'. DEFAULT style picks default (aka global) values from ESS indentation variables. In addition, ESS provides many indentation styles, the most important being the RRR and the RStudio variants. RRR is the common R style that adheres closely to R internal standards. RRR+ is the same except it also aligns blocks in function calls with the opening delimiter, producing more indentation. The C++ style (named like this for historical reasons rather than any resemblance to existing C++ indentation schemes) is halfway between these two styles and indent block arguments from the start of the surrounding function's name. The RStudio style closely mimics the indentation of the RStudio editor. RStudio- is the same except it does not align arguments in function calls, which corresponds to the settings of some RStudio users. ESS indentation is fully specified by the following offsets and variables. See the documentation of these variables for examples. Offsets: - `ess-indent-offset': main offset inherited by other settings - `ess-offset-arguments': offset type for function and bracket arguments - `ess-offset-arguments-newline': offset type of arguments when ( or [ is followed by a new line. - `ess-offset-block': offset type for brace and anonymous parenthesis blocks - `ess-offset-continued': offset type for continuation lines in multiline statements Overrides (implies vertical alignment): - `ess-align-nested-calls': functions whose nested calls should be aligned. - `ess-align-arguments-in-calls': calls where `ess-offset-arguments' should be ignored - `ess-align-continuations-in-calls': whether to ignore `ess-offset-continued' in calls. - `ess-align-blocks': whether to ignore `ess-offset-blocks' for function declarations or control flow statements. Control variables: - `ess-indent-from-lhs': whether to indent arguments from left-hand side of an assignment or parameter declaration. - `ess-indent-from-chain-start': whether to indent arguments from the first of several consecutive calls. - `ess-indent-with-fancy-comments': whether to indent #, ## and ### comments distinctly.") (defun ess-add-style (key entries) "Add a new style to `ess-style-list', with the key KEY. Remove any existing entry with the same KEY before adding the new one." (setq ess-style-alist (assq-delete-all key ess-style-alist)) (add-to-list 'ess-style-alist (cons key entries))) (defcustom ess-own-style-list (cdr (assoc 'RRR ess-style-alist)) "Indentation variables for your own style. Set `ess-default-style' to 'OWN to use these values. To change these values, use the customize interface. See the documentation of each variable for its meaning. " :group 'ess-edit :type 'alist :initialize 'custom-initialize-set :set (lambda (symbol value) (set symbol value) (ess-add-style 'OWN value))) (defcustom ess-default-style 'RRR "The default value of `ess-indent-style'. See the variable `ess-style-alist' for how these groups (RRR, DEFAULT, GNU, BSD, ...) map onto different settings for variables. OWN style is defined in `ess-own-style-list' and you can customize it to your needs. DEFAULT style picks default (aka global) values from ESS indentation variables." :type '(choice (const OWN) (const GNU) (const BSD) (const C++) (const CLB) (const K&R) (const RRR) (const RRR+) (const RStudio) (const RStudio-) (const DEFAULT)) :group 'ess-edit) ;; the real setting of this happens via -editing-alist: (defvar ess-style ess-default-style "Current ESS indentation style, see `ess-style-alist' for more.") ;;*;; Variables controlling behaviour of dump files (defcustom ess-source-directory (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp") "Directory in which to place dump files. This can be a string (an absolute directory name ending in a slash) or a lambda expression of no arguments which will return a suitable string value. The lambda expression is evaluated with the process buffer as the current buffer. This always dumps to a sub-directory (\".Src\") of the current ess working directory (i.e. first elt of search list)." :group 'ess-edit :type 'directory) (defvar ess-dump-filename-template nil "Internal. Initialized by dialects") (defcustom ess-dump-filename-template-proto (concat (user-login-name) ".%s.S") "Prototype template for filenames of dumped objects. The ending `S' is replaced by the current \\[ess-suffix], to give `ess-dump-filename-template' when an inferior ESS process starts. By default, gives filenames like `user.foofun.S', so as not to clash with other users if you are using a shared directory. Other alternatives: \"%s.S\" ; Don't bother uniquifying if using your own directory(ies) \"dumpdir\"; Always dump to a specific filename. This makes it impossible to edit more than one object at a time, though. (make-temp-name \"scr.\") ; Another way to uniquify" ;; MM: The last 3-4 lines above suck (I don't understand them) -- FIXME -- :group 'ess-edit :type 'string) ;;*;; Hooks (defcustom ess-mode-hook nil "Hook for customizing ESS each time it is entered." :group 'ess-hooks :type 'hook) (defcustom ess-mode-load-hook nil "Hook to call when ess.el is loaded." :group 'ess-hooks :type 'hook) (defcustom ess-pre-run-hook nil "Hook to call before starting up ESS. Good for setting up your directory." :group 'ess-hooks :type 'hook) (defcustom ess-post-run-hook nil "Hook to call just after the ESS process starts up. Good for evaluating ESS code." :group 'ess-hooks :type 'hook) (defcustom inferior-ess-mode-hook nil "Hook for customizing inferior ESS mode. Called after `inferior-ess-mode' is entered and variables have been initialised." :group 'ess-hooks :type 'hook) ;;; make it possible to save an inferior-ess-mode buffer without losing ;;; the connection to the running ESS process. (put 'inferior-ess-mode 'mode-class 'special) ;; FIXME AJR: Should the above be there? I don't think so! ;; MM : the functionality should be, right? Move statement to ./ess.el ? ;; AJR: No, we should move the statement to ./ess-inf.el (defcustom ess-help-mode-hook nil "Functions to call when entering `ess-help-mode'." :group 'ess-hooks :type 'hook) (defcustom ess-send-input-hook nil "Hook called just before line input is sent to the process." :group 'ess-hooks :type 'hook) (defcustom ess-transcript-mode-hook nil "Hook for customizing ESS transcript mode." :group 'ess-hooks :type 'hook) (defcustom R-mode-hook nil "Hook run when entering R mode." :type 'hook :group 'ess-R) (defcustom Rnw-mode-hook nil "Hook run when entering Rnw mode." :type 'hook :group 'ess-R) (defcustom SAS-mode-hook nil "Hook to run when entering SAS mode." :type 'hook :group 'ess-sas) (defcustom ess-pdf-viewer-pref nil "External pdf viewer you like to use from ESS. Can be a string giving a name of the program or a list with car giving heprogram and the tail giving the arguments. For example '(\"okular\" \"--unique\")." :type '(choice (const nil) (repeat :tag "Command with arguments" string) (string :tag "Command")) :group 'ess) (defcustom ess-ps-viewer-pref nil "External PostScript viewer you like to use from ESS. If nil, ESS will try finding one from a list." :type '(choice (const nil) string) :group 'ess) ;; ---- ./ess-roxy.el : ------------ (defcustom ess-roxy-package "roxygen2" "The name of the R package to use for Roxygen." :group 'ess-roxy :type 'string) (defcustom ess-roxy-tags-noparam '("export" "noRd") "The tags used in roxygen fields that can be used alone. Used to decide highlighting and tag completion." :group 'ess-roxy :type '(repeat string)) (defcustom ess-roxy-tags-param '("author" "aliases" "concept" "details" "examples" "format" "keywords" "method" "exportMethod" "name" "note" "param" "include" "references" "return" "seealso" "source" "docType" "title" "TODO" "usage" "import" "exportClass" "exportPattern" "S3method" "inheritParams" "importFrom" "importClassesFrom" "importMethodsFrom" "useDynLib" "rdname" "section" "slot" "description" "md") "The tags used in roxygen fields that require a parameter. Used to decide highlighting and tag completion." :group 'ess-roxy :type '(repeat string)) (defcustom ess-roxy-template-alist (list (cons "description" ".. content for \\description{} (no empty lines) ..") (cons "details" ".. content for \\details{} ..") (cons "title" "") (cons "param" "") (cons "return" "") (cons "author" ess-user-full-name)) "The tags and defaults to insert when creating empty templates. Param is a place holder for where to enter parameters. Description and details do not use @ tags, but are instead placed at the beginning of the entry (and should therefore also be at the beginning of this template to give syntactically correct roxygen entries)" :group 'ess-roxy :type '(alist :value-type (group string))) (defcustom ess-roxy-fill-param-p nil "Non-nil causes parameter descriptions to be filled (word-wrapped) upon `ess-roxy-update-entry'." :group 'ess-roxy :type '(choice (const :tag "Off" nil) (const :tag "On" t))) (defcustom ess-roxy-hide-show-p nil "Non-nil means ess-roxy uses hs-minor-mode for block hiding with TAB." :group 'ess-roxy :type '(choice (const :tag "Off" nil) (const :tag "On" t))) (defcustom ess-roxy-start-hidden-p nil "Non-nil means all blocks should be hidden from start." :group 'ess-roxy :type '(choice (const :tag "Off" nil) (const :tag "On" t))) (defcustom ess-roxy-str "##'" "Prefix string to insert before each line in new roxygen blocks. In existing roxygen blocks, the prefix is taken from the line at point" :group 'ess-roxy :type 'string) (defcustom ess-roxy-re "^#+'" "Regular expression to recognize roxygen blocks." :group 'ess-roxy :type 'string) (defcustom ess-swv-pdflatex-commands '("texi2pdf" "pdflatex" "make") "Commands to run a version of pdflatex in \\[ess-swv-PDF]; the first entry is the default command." :group 'ess-sweave :type 'list) (defcustom ess-swv-plug-into-AUCTeX-p nil "Non-nil means add commands to AUCTeX's \\[TeX-command-list] to sweave the current noweb file and latex the result." :group 'ess-sweave :type '(choice (const :tag "Off" nil) (const :tag "On" t))) (defvar ess-roxy-insert-prefix-on-newline t "When non-nil, `ess-newline-and-indent' will make sure the new line starts with the roxy prefix.") ; System variables ;; SJE -- this should not be defcustom - user does not set it. (defvar ess-local-process-name nil "The name of the ESS process associated with the current buffer.") (put 'ess-local-process-name 'risky-local-variable t) (put 'ess-local-process-name 'permanent-local t) (make-variable-buffer-local 'ess-local-process-name) (defcustom ess-switch-to-end-of-proc-buffer t "If t, `ess-switch-to-inferior-or-script-buffer goes to end of process buffer." :group 'ess :type 'boolean) (defcustom ess-gen-proc-buffer-name-function 'ess-gen-proc-buffer-name:projectile-or-simple "Function used for generation of the buffer name of the newly created ESS process. It should accept one argument PROC-NAME, a string specifying internal process name (R, R:2, etc). Provided default options are: `ess-gen-proc-buffer-name:simple' -- *proc* `ess-gen-proc-buffer-name:directory' -- *proc:dir* `ess-gen-proc-buffer-name:abbr-long-directory' -- *proc:abbr-long-dir* `ess-gen-proc-buffer-name:projectile-or-simple' -- *proc:projectile-root* or *proc*. `ess-gen-proc-buffer-name:projectile-or-directory' -- *proc:projectile-root* or *proc:dir*. Strategies based on projectile default to built-in strategies if projectile.el is not loaded or there is no project root in the current directory. " :group 'ess :type '(choice (const :tag "*proc*" ess-gen-proc-buffer-name:simple) (const :tag "*proc:dir*" ess-gen-proc-buffer-name:directory) (const :tag "*proc:abbr-long-dir*" ess-gen-proc-buffer-name:abbr-long-directory) (const :tag "*proc:projectile-root* or *proc*" ess-gen-proc-buffer-name:projectile-or-simple) (const :tag "*proc:projectile-root* or *proc:dir*" ess-gen-proc-buffer-name:projectile-or-directory) function)) (defcustom ess-kermit-command "gkermit -T" "Kermit command invoked by `ess-kermit-get' and `ess-kermit-send'." :group 'ess :type 'string) (defcustom ess-kermit-prefix "#" "String files must begin with to use kermit file transfer." :group 'ess :type 'string) (defcustom ess-kermit-remote-directory "." "Buffer local variable that designates remote directory of file." :group 'ess :type 'string) (make-variable-buffer-local 'ess-kermit-remote-directory) ;;*;; Regular expressions ;; -- Note: Some variables not-to-customize moved to ./ess-mode.el : ;; ess-r-set-function-start ;; Fixme: the following is just for S dialects : (defcustom ess-dumped-missing-re "\\(<-\nDumped\n\\'\\)\\|\\(<-\\(\\s \\|\n\\)*\\'\\)" "If a dumped object's buffer matches this re, then it is replaced by `ess-function-template'." :group 'ess :type 'regexp) (defcustom ess-dump-error-re (if (string= ess-language "S") "\nDumped\n\\'" "[Ee]rror") "Regexp used to detect an error when loading a file." :group 'ess :type 'regexp) ; ess-inf: variables for inferior-ess. ;;*;; System dependent variables ;; If you need to change the *-program-name variables, do so in ;; ess-site.el. Do NOT make the changes here!! ;; Keep a copy of your revised ess-site.el to use as a starting point ;; for upgrades of ESS. (defcustom inferior-ess-own-frame nil "Non-nil means that inferior ESS buffers should start in their own frame. The parameters of this frame are stored in `inferior-ess-frame-alist'." :group 'ess-proc :type 'boolean) (defcustom inferior-ess-frame-alist default-frame-alist "Alist of frame parameters used to create new frames for iESS buffers. This defaults to `default-frame-alist' and is used only when the variable `inferior-ess-own-frame' is non-nil." :group 'ess-proc :type 'alist) (defcustom inferior-ess-same-window t "Non-nil indicates new inferior ESS process appears in current window. Otherwise, the new inferior ESS buffer is shown in another window in the current frame. This variable is ignored if `inferior-ess-own-frame' is non-nil." :group 'ess-proc :type 'boolean) (defcustom inferior-ess-jit-lock-chunk-size 10000 "Default for (buffer local) `jit-lock-chunk-size' in inferior ESS buffers." :group 'ess-proc :type 'integer) (defcustom inferior-ess-r-program-name (if ess-microsoft-p "Rterm" "R") "Program name for invoking an inferior ESS with \\[R]." :group 'ess-R :type 'string) (defvaralias 'inferior-R-program-name 'inferior-ess-r-program-name) (defcustom inferior-R-args "" "String of arguments (see 'R --help') used when starting R, including the versions of R created via variable `ess-r-versions'." :group 'ess-R :type 'string) (defcustom ess-R-readline nil "nil indicates that \"--no-readline \" should be used as argument when starting R. This has been the default since 1998 and may very slightly speedup interaction. On the other hand, readline is necessary for expansion of \"~username/\" in paths. Note that readline interprets tabs (tabular characters) in R source files as asking for file name completion. This can mess up ess evaluation completely." :group 'ess-R :type 'boolean) (defcustom inferior-STA-start-file nil "Initialization file for Stata." :group 'ess-Stata) (defcustom inferior-STA-start-args "" "String of switches used when starting stata. Don't use this to send initialization command to stata, use `inferior-STA-start-file' instead. Also see `inferior-STA-program-name'." :group 'ess-Stata :type 'string) (defcustom inferior-ess-r-objects-command "print(objects(pos=%d, all.names=TRUE), max=1e6)\n" "Format string for R command to get a list of objects at position %d. Used in e.g., \\[ess-execute-objects] or \\[ess-display-help-on-object]." :group 'ess-command :type 'string) (defvaralias 'inferior-R-objects-command 'inferior-ess-r-objects-command) (defcustom ess-getwd-command nil "Command string retriving the working directory from the process.") (defcustom ess-setwd-command nil "Command string to set working directory. Should contain a formating %s to be replaced by a path (as in 'setwd(%s)\\n'.") (defcustom ess-program-files ;; 32 bit version (if ess-microsoft-p (if (getenv "ProgramW6432") (w32-short-file-name (getenv "ProgramFiles(x86)"));; always 32 on 64 bit OS (w32-short-file-name (getenv "ProgramFiles"))) ;; always 32 on 32 bit OS nil) "Safe (no embedded blanks) 8.3 name for 32-bit programs that works across internationalization." :group 'ess :type 'string) (defcustom ess-program-files-64 ;; 64 bit version (if (and ess-microsoft-p (getenv "ProgramW6432")) (w32-short-file-name (getenv "ProgramW6432")) nil) "Safe (no embedded blanks) 8.3 name for 64-bit programs that works across internationalization." :group 'ess :type 'string) (defcustom ess-directory-containing-R nil "nil (the default) means the search for all occurences of R on the machine will use the default location of the R directory (inside \"c:/Program Files\" in English locale Windows systems). Non-nil values mean use the specified location as the directory in which \"R/\" is located. For example, setting `ess-directory-containing-R' to \"c:\" will tell ESS to search for R versions with pathnames of the form \"c:/R/R-x.y.z\". Currently only used when `ess-microsoft-p'. If you change the value of this variable, you need to restart Emacs for it to take effect. It also needs to be set before you load ess-site as its value is used once only when ESS is loaded." :group 'ess :type 'directory) (defcustom ess-rterm-version-paths nil "Stores the full path file names of Rterm versions, computed via \\[ess-find-rterm]. If you have versions of R in locations other than in ../../R-*/bin/Rterm.exe or ../../rw*/bin/Rterm.exe, relative to the directory in the `exec-path' variable containing your default location of Rterm, you will need to redefine this variable with a `custom-set-variables' statement in your site-start.el or .emacs file." :group 'ess-R :type '(repeat string)) (defcustom ess-SHOME-versions ;; ess-program-files ~= "c:/progra~1" for typical locales/languages (mapcar (lambda (ch) (concat ess-program-files ch)) '("/Insightful/splus62" "/Insightful/splus61" "/MathSoft/splus6" "/spls45se" "/Insightful/splus62netclient" "/Insightful/splus62net/server" "/Insightful/splus61netclient" "/Insightful/splus61net/server" "/Insightful/splus6se" "/Insightful/splus61se" "/Insightful/splus62se" "/Insightful/splus70" "/Insightful/splus71" "/Insightful/splus8.0.1" "/Insightful/splus8.0.4" "/Insightful/splus80" "/TIBCO/splus81" "/TIBCO/splus82" )) "List of possible values of the environment variable SHOME for recent releases of S-Plus. These are the default locations for several current and recent releases of S-Plus. If any of these pathnames correspond to a directory on your machine, running the function `ess-sqpe-versions-create' will create a function, for example, \\[splus70], that will start the corresponding version Sqpe inside an emacs buffer in iESS[S] mode. If you have versions of S-Plus in locations other than these default values, redefine this variable with a `custom-set-variables' statement in your site-start.el or .emacs file. The list of functions actually created appears in the *ESS* buffer and should appear in the \"ESS / Start Process / Other\" menu." :group 'ess-SPLUS :type '(repeat string)) (defcustom ess-SHOME-versions-64 ;; ess-program-files-64 ~= "c:/progra~1" for typical locales/languages (mapcar (lambda (ch) (concat ess-program-files-64 ch)) '("/TIBCO/splus82" )) "List of possible values of the environment variable SHOME for recent releases of 64-bit S-Plus. These are the default locations for several current and recent releases of S-Plus. If any of these pathnames correspond to a directory on your machine, running the function `ess-sqpe-versions-create' will create a function, for example, \\[splus70], that will start the corresponding version Sqpe inside an emacs buffer in iESS[S] mode. If you have versions of 64-bit S-Plus in locations other than these default values, redefine this variable with a `custom-set-variables' statement in your site-start.el or .emacs file. The list of functions actually created appears in the *ESS* buffer and should appear in the \"ESS / Start Process / Other\" menu." :group 'ess-SPLUS :type '(repeat string)) (defcustom inferior-S3-program-name "/disk05/s/S" "Program name for invoking an inferior ESS with S3()." :group 'ess-S :type 'string) (defcustom inferior-S+3-program-name "Splus" "Program name for invoking an inferior ESS with S+3()." :group 'ess-SPLUS :type 'string) (defcustom inferior-S+4-program-name (concat ess-program-files "/spls45se/cmd/Splus.exe") "Program name for invoking an external GUI S+4. The default value is correct for a default installation of S-Plus 4.5 Student Edition and with bash as the shell. For any other version or location, change this value in ess-site.el or site-start.el. Use the 8.3 version of the pathname. Use double backslashes if you use the msdos shell." :group 'ess-SPLUS :type 'string) (defcustom inferior-S+4-print-command "S_PRINT_COMMAND=emacsclientw.exe" "Destination of print icon in S+4 Commands window." :group 'ess-SPLUS :type 'string) (defcustom inferior-S+4-editor-pager-command "options(editor='emacsclient.exe', pager='emacsclientw.exe')" "Programs called by the editor() and pager() functions in S+4 Commands window and in Sqpe+4 buffer." :group 'ess-S :type 'string) (defcustom inferior-Sqpe+4-program-name (concat ess-program-files "/spls45se/cmd/Sqpe.exe") "Program name for invoking an inferior ESS with Sqpe+4()." :group 'ess-SPLUS :type 'string) (defcustom inferior-Sqpe+4-SHOME-name (if ess-microsoft-p (concat ess-program-files "/spls45se" "")) "SHOME name for invoking an inferior ESS with Sqpe+4(). The default value is correct for a default installation of S-Plus 4.5 Student Edition. For any other version or location, change this value in ess-site.el or site-start.el. Use the 8.3 version of the pathname." :group 'ess-SPLUS :type 'string) ;;(if ess-microsoft-p ;; (let* ((SHOME (getenv "SHOME")) ;; (PATH (getenv "PATH")) ;; (split-PATH (split-string PATH ";")) ;; Unix uses ":" ;; (num 0) ;; pathname) ;; (if (not SHOME) ;; (while (< num (length split-PATH)) ;; (setq pathname (concat (nth num split-PATH) "/Sqpe.exe")) ;; (if (not (file-exists-p pathname)) ;; (setq num (1+ num)) ;; (progn ;; (setq num (length split-PATH)) ;; (setq SHOME (expand-file-name (concat pathname "/../.."))))))) ;; (setq-default inferior-Sqpe+4-SHOME-name SHOME))) (defcustom inferior-S-elsewhere-program-name "sh" "Program name to invoke an inferior ESS with S on a different computer." :group 'ess-proc :type 'string) (defcustom inferior-ESS-elsewhere-program-name "sh" "Program name to invoke an inferior ESS with program on a different computer." :group 'ess-proc :type 'string) (defcustom inferior-S4-program-name "S4" "Program name to invoke an inferior ESS with S4()." :group 'ess-S :type 'string) (defcustom inferior-S+5-program-name "Splus5" "Program name to invoke an inferior ESS with S+5()." :group 'ess-SPLUS :type 'string) (defvaralias 'S+6-dialect-name 'S+-dialect-name) (defcustom S+-dialect-name "S+" "Name of 'dialect' for S-PLUS 6.x and later. Easily changeable in a user's `.emacs'." :group 'ess-SPLUS :type 'string) (defvaralias 'inferior-S+6-program-name 'inferior-S+-program-name) (if ess-microsoft-p (defcustom inferior-S+-program-name (concat ess-program-files "/TIBCO/splus82/cmd/Splus.exe") "Program name to invoke an external GUI S+ for Windows. The default value is correct for a default installation of S-Plus 8.1 and with bash as the shell. For any other version or location, change this value in ess-site.el or site-start.el. Use the 8.3 version of the pathname. Use double backslashes if you use the msdos shell." :group 'ess-SPLUS :type 'string) (defcustom inferior-S+-program-name "Splus" "Program name to invoke an inferior ESS with S+ for Unix." :group 'ess-SPLUS :type 'string)) (defvaralias 'inferior-S+6-start-args 'inferior-S+-start-args) (defvaralias 'inferior-Splus-args 'inferior-S+-start-args) (defcustom inferior-S+-start-args "" "String of arguments used when starting S. These arguments are currently passed only to S+6 and higher." :group 'ess-SPLUS :type 'string) (defvaralias 'inferior-Sqpe-start-args 'inferior-Sqpe+-start-args) (defcustom inferior-Sqpe+-start-args " " "Default is empty. Can be used for license manager information, for example `(setq inferior-Sqpe+-start-args \" S_ELMHOST=@123.456.789.012 ELMTIMEOUT=60 \")'." ;; (setq inferior-Sqpe+-start-args " S_ELMHOST=@123.456.789.012 ELMTIMEOUT=60 ") ;; use this line as the model for your site-start.el :group 'ess-SPLUS :type 'string ) (defcustom inferior-Splus-objects-command "objects(where=%d)\n" "Format string for R command to get a list of objects at position %d. Used in e.g., \\[ess-execute-objects] or \\[ess-display-help-on-object]." :group 'ess-command :type 'string) (defvaralias 'inferior-S+6-print-command 'inferior-S+-print-command) (defcustom inferior-S+-print-command "S_PRINT_COMMAND=emacsclientw.exe" "Destination of print icon in S+ for Windows Commands window." :group 'ess-SPLUS :type 'string) (defvaralias 'inferior-S+6-editor-pager-command 'inferior-S+-editor-pager-command) (defcustom inferior-S+-editor-pager-command "options(editor='emacsclient.exe', pager='emacsclientw.exe')" "Programs called by the editor() and pager() functions in S+ for Windows Commands window and in Sqpe+6 for Windows buffer." :group 'ess-SPLUS :type 'string) (defvaralias 'inferior-Sqpe+6-program-name 'inferior-Sqpe+-program-name) (defcustom inferior-Sqpe+-program-name (concat ess-program-files "/TIBCO/splus82/cmd/Sqpe.exe") "Program name for invoking an inferior ESS with Sqpe+6() for Windows." :group 'ess-S :type 'string) (defvaralias 'inferior-Sqpe+6-SHOME-name 'inferior-Sqpe+-SHOME-name) (defcustom inferior-Sqpe+-SHOME-name (if ess-microsoft-p (concat ess-program-files "/TIBCO/splus82" "")) "SHOME name for invoking an inferior ESS with Sqpe+6 and higher for Windows. The default value is correct for a default installation of S-Plus 8.1. For any other version or location, change this value in ess-site.el or site-start.el. Use the 8.3 version of the pathname." :group 'ess-SPLUS :type 'string) ;;(if ess-microsoft-p ;; (let* ((SHOME (getenv "SHOME")) ;; (PATH (getenv "PATH")) ;; (split-PATH (split-string PATH ";")) ;; Unix uses ":" ;; (num 0) ;; pathname) ;; (if (not SHOME) ;; (while (< num (length split-PATH)) ;; (setq pathname (concat (nth num split-PATH) "/Sqpe.exe")) ;; (if (not (file-exists-p pathname)) ;; (setq num (1+ num)) ;; (progn ;; (setq num (length split-PATH)) ;; (setq SHOME (expand-file-name (concat pathname "/../.."))))))) ;; (setq-default inferior-Sqpe+6-SHOME-name SHOME))) (defcustom ess-S-quit-kill-buffers-p nil "Controls whether S buffers should also be killed once a process is killed. This is used only when an iESS process is killed using C-c C-q. Possible values: nil - do not kill any S buffers associated with the process. t - kill S buffers associated with the process. ask - ask the user whether the S buffers should be killed." :group 'ess-S :type '(choice (const nil) (const t) (const ask))) (defcustom inferior-XLS-program-name "xlispstat" "Program name for invoking an inferior ESS with \\[XLS]." :group 'ess-XLS :type 'string) (defcustom inferior-VST-program-name "vista" "Program name for invoking an inferior ESS with \\[ViSta]." :group 'ess-XLS :type 'string) (defcustom inferior-ARC-program-name "arc" "Program name for invoking an inferior ESS with \\[ARC]." :group 'ess-XLS :type 'string) (defcustom inferior-SAS-program-name "sas" "Program name for invoking an inferior ESS with SAS()." :group 'ess-sas :type 'string) (defcustom inferior-STA-program-name "stata" "Program name for invoking an inferior ESS with stata(). This is NOT Stata, because we need to call stata with TERM=emacs in order for it to work right. And Emacs is too smart for it." :group 'ess-Stata :type 'string) (defcustom ess-sta-delimiter-friendly nil "Non-nil means convert embedded semi-colons to newlines for Stata processing." :group 'ess-Stata :type 'string) (defcustom inferior-OMG-program-name "omegahat" "Program name for invoking an inferior ESS with omegahat()." :group 'ess-OMG :type 'string) ;;;;; names for setting the pager and editor options of the ;;;;; inferior-ess-process ;;; ;;; S-editor and S-pager, ;;; R-editor and R-pager, ;;; ess-editor and ess-pager, ;;; and inferior-ess-language-start ;;; apply in principle to the 15 files essd[s-]*.el ;;; Several of the files (ess-sp4-d.el and ess-sp6w-d.el) have more ;;; than one *-customize-alist. ;;; These variables are currently used only with the S language files for ;;; S S-Plus R. (defcustom ess-r-editor "emacsclient" "Editor called by R process with 'edit()' command." :group 'ess :type 'string) (defvaralias 'R-editor 'ess-r-editor) (defcustom ess-r-pager 'nil ; Usually nil is correct as ESS and page() cooperate. "Pager called by R process with 'page()' command." :group 'ess :type '(choice (const nil) string)) (defvaralias 'R-pager 'ess-r-pager) (defcustom S-editor "emacsclient" "Editor called by S process with 'edit()' command." :group 'ess :type 'string) (defcustom S-pager (if ess-microsoft-p "emacsclientw.exe" "emacsclient") "Pager called by S process with 'page()' command." :group 'ess :type 'string) (defvar ess-editor nil "*Editor by which the process sends information to an emacs buffer for editing and then to be returned to the process.") (defvar ess-pager nil "*Pager by which the process sends information to an emacs buffer.") (defvar inferior-ess-language-start nil "*Initialization commands sent to the ESS process.") (make-variable-buffer-local 'ess-editor) (make-variable-buffer-local 'ess-pager) (make-variable-buffer-local 'inferior-ess-language-start) ;;;;; names for S-Plus help files on MS-Windows (defcustom inferior-ess-help-filetype nil "S-Plus and Sqpe for Windows use the \"chm\" (compiled html) filetype for help files. The default value is nil for other systems." :group 'ess-proc :type 'string) (make-variable-buffer-local 'inferior-ess-help-filetype) (setq-default inferior-ess-help-filetype nil) ;;;;; names for communication using MS-Windows 9x/NT ddeclient mechanism (defcustom inferior-ess-ddeclient nil "ddeclient is the intermediary between emacs and the stat program." :group 'ess-proc :type 'string) (defcustom inferior-ess-client-name nil "Name of ESS program ddeclient talks to." :group 'ess-proc :type 'string) (defcustom inferior-ess-client-command nil "ddeclient command sent to the ESS program." :group 'ess-proc :type '(choice (const nil) string)) (make-variable-buffer-local 'inferior-ess-client-name) (make-variable-buffer-local 'inferior-ess-ddeclient) (make-variable-buffer-local 'inferior-ess-client-command) ;;;;; user settable defaults (defvar inferior-S-program-name inferior-S+3-program-name "*Program name for invoking an inferior ESS with S().") ;;- (setq inferior-S-program ;;- (cond ((string= S-proc-prefix "S") "Splus") ;;- ((string= S-proc-prefix "R") "R") ;;- (t "S") ;;- )) ;;(make-local-variable 'inferior-S-program) (defvar inferior-ess-program nil ;inferior-S-program-name "*Default program name for invoking inferior-ess(). The other variables ...-program-name should be changed, for the corresponding program.") (make-variable-buffer-local 'inferior-ess-program) ;; (setq-default inferior-ess-program inferior-S-program-name) (defvar inferior-R-version "R (default)" "A (short) name of the current R version. A global variable for ESS internal communication.") (defvar inferior-ess-start-args "" "String of arguments passed to the ESS process. If you wish to pass arguments to a process, see e.g. `inferior-R-args'.") (defcustom inferior-ess-start-file nil "File dumped into process, if non-nil." :group 'ess-proc :type '(choice (const nil) file)) (defcustom inferior-ess-pager (if ess-microsoft-p "console" "cat") "Pager to use for reporting help files and similar things." :group 'ess-proc :type 'string) ;; does it make sense to customize here, as we currently set this *directly* ;; in the FOO-BAR-cust-alist's ??? ;; VS: Right. It only confuses users. It should be set in post-run-hook if ;; desired; inferior-S-prompt should be customized instead. (defvar inferior-ess-primary-prompt "> " "Regular expression used by `ess-mode' to detect the primary prompt.") (make-variable-buffer-local 'inferior-ess-primary-prompt) ;; (setq-default inferior-ess-primary-prompt "> ") (defvar inferior-ess-secondary-prompt nil "Regular expression used by ess-mode to detect the secondary prompt. This is issued by S to continue an incomplete expression. Set to nil if language doesn't support secondary prompt.") ;; :group 'ess-proc ;; :type 'string) (make-variable-buffer-local 'inferior-ess-secondary-prompt) ;; (setq-default inferior-ess-secondary-prompt "+ ") (defvar ess-traceback-command nil "Command to generate error traceback.") ;; need to recognise + + + > > > ;; and "+ . + " in tracebug prompt (defcustom inferior-S-prompt "[]a-zA-Z0-9.[]*\\(?:[>+.] \\)*> " "Regexp used in S and R inferior and transcript buffers for prompt navigation. Customise it to make `comint-previous-prompt' quiqly navigate to interesting portions of the buffer. " :group 'ess-proc :type 'string) (defvaralias 'inferior-ess-S-prompt 'inferior-S-prompt) ;;*;; Variables controlling interaction with the ESS process (defcustom ess-execute-in-process-buffer nil "Non-nil means the ess-execute- commands output to the process buffer. Otherwise, they get their own temporary buffer." :group 'ess-proc :type 'boolean) (defcustom ess-eval-empty nil "Non-nil means `ess-eval-line*' will send empty lines to the ESS process." :group 'ess-proc :type 'boolean) (defvaralias 'ess-eval-visibly-p 'ess-eval-visibly) (defcustom ess-eval-visibly t "Non-nil means ess-eval- commands display commands in the process buffer. If t, ESS waits after each line of the command for the process output. This results in a nice sequence of input and output but stalls emacs on long output (like Sys.sleep(5) in R). If 'nowait, ESS still shows the input commands, but don't wait for the process. Thus all the output is printed after the input lines. If nil, ESS doesn't print input commands and doesn't wait for the process. This variable also affect the evaluation of input code in iESS. The effect is similar to the above. If t then ess waits for the process output, otherwise not. " :group 'ess-proc :type '(choice (const t) (const nowait) (const nil))) ;; (when (boundp 'ess-eval-visibly-p) ;; (setq ess-eval-visibly ess-eval-visibly-p)) (defcustom ess-eval-deactivate-mark (fboundp 'deactivate-mark); was nil till 2010-03-22 "Non-nil means that after ess-eval- commands the mark is deactivated, (see \\[deactivate-mark]). The default is true since ESS version 5.9, except on XEmacs which doesn't have \\[deactivate-mark] and friends: only affects the situation where `transient-mark-mode' is non-nil." :group 'ess-proc :type 'boolean) (defcustom ess-synchronize-evals nil "Non-nil means all evaluations will synchronize with the ESS process. This means ess-mode will wait for S to dent a prompt before sending the next line of code. This allows users of Emacs version 18.57 or less to evaluate large regions of code without causing an error. Users of newer Emacsen usually do not want this feature, since it locks up use of Emacs until the code has been successfully evaluated." :group 'ess-proc :type 'boolean) (defcustom ess-eval-visibly-at-end t "Non-nil means ess-eval- commands display output at end of process buffer." :group 'ess-proc :type 'boolean) (defcustom ess-use-R-completion t "Non-nil means use R-builtin completion mechanism when available." :group 'ess-proc :type 'boolean) (defcustom ess-eval-ddeclient-sleep 0.06 "If non-nil, a number specifying *seconds* to wait after certain \\[ess-eval-linewise-ddeclient] calls, such as those at startup." ;; i.e this currently only applies to (if microsoft-p ...) ! :group 'ess-proc :type '(choice (const nil) number)) (defcustom ess-sleep-for-shell (if ess-microsoft-p 5 1) "*Pause before sending output to the shell." :group 'ess-proc :type 'number) ; System variables ;; VS[06-04-2016]: fixme: move all inf vars into ess-inf.el. ;;*;; Variables relating to multiple processes ;; VS[17-08-2012]: all of the occurrences in the code should should eventually ;; go away, (once we are sure this doesn't break anything) (defvaralias 'ess-current-process-name 'ess-local-process-name) (defvar ess--mode-line-process-indicator '("" ess-local-process-name) "List of ESS mode-line indicators. Local in process buffers and must start with a string. Changes of this variable are automatically reflected in mode-lines of the process and all associated with it buffers. Each symbol must evaluate ot one of the standard mode line objecst. See info node `(elisp)Mode Line Data'). Add a symbol with `add-to-list' and remove with `delq'. Note that the symbols which are part of this list should better have 'risky-local-variable property set to t, otherwise the text properties are not displayed. External utilities such as `ess-tracebug' and `ess-developer' customize this variable to indicate changes in the process status. ") (put 'ess--mode-line-process-indicator 'risky-local-variable t) (make-variable-buffer-local 'ess--mode-line-process-indicator) (defvar ess--local-mode-line-process-indicator '("") "List of local process indicators. See `ess--mode-line-process-indicator' for how to set it. This is an internal varialbe used by tools like `ess-developer' and `ess-tracebug'.") (put 'ess--local-mode-line-process-indicator 'risky-local-variable t) (make-variable-buffer-local 'ess--local-mode-line-process-indicator) (defvar ess-process-name-list nil "Alist of active ESS processes.") ;;*;; Inferior ESS commands (defvar ess-load-command "source('%s')\n" "Dialect specific format-string for building the ess command to load a file. This format string should use %s to substitute a file name and should result in an ESS expression that will command the inferior ESS to load that file.") (defvar ess-eval-command nil "Dialect specific format-string for building the command to evaluate a string. It is usually faster to send a string to remote processes than a file. The latter involves Tramp and can be quite slow. When possible, a dialect should implement that command and use it preferentially. This format string should use %s as a placeholder for the string to be evaluated and, optionally, %f for the file name to be reported in the error references. The resulting command should not echo code or print any transitory output. See also `ess-eval-visibly-command' and `ess-eval-visibly-noecho-command'.") (defvar ess-build-eval-message-function nil "Dialect-specific function for formatting an evaluation message.") (make-variable-buffer-local 'ess-eval-command) (make-variable-buffer-local 'ess-load-command) (make-variable-buffer-local 'ess-build-eval-message-function) (define-obsolete-variable-alias 'inferior-ess-load-command 'ess-load-command "ESS v13.09") (defcustom inferior-ess-dump-command "dump(\"%s\",file=\"%s\")\n" "Format-string for building the ess command to dump an object into a file. Use first %s to substitute an object name Use second %s to substitute the dump file name." :group 'ess-command :type 'string) (defvar inferior-ess-help-command "help(\"%s\")\n" "Format-string for building the ESS command to ask for help on an object. This format string should use %s to substitute an object name.") (make-variable-buffer-local 'inferior-ess-help-command) (setq-default inferior-ess-help-command "help(\"%s\")\n") (defcustom inferior-ess-r-help-command ".ess.help('%s')\n" "Format-string for building the R command to ask for help on an object. This format string should use %s to substitute an object name. If set, changes will take effect when next R session is started." :group 'ess-command :type 'string) (defvar ess-get-help-topics-function nil "Dialect specific help topics retrieval") (defvar ess-display-help-on-object-function nil "Dialect specific function for displaying help on object.") (defvar ess-find-help-file-function nil "Dialect specific function for displaying help on object.") (defvar ess-build-help-command-function nil "Dialect specific function for building an help command.") (make-variable-buffer-local 'ess-get-help-topics-function) (make-variable-buffer-local 'ess-display-help-on-object-function) (make-variable-buffer-local 'ess-find-help-file-function) (make-variable-buffer-local 'ess-build-help-command-function) (defcustom inferior-ess-exit-command "q()\n" "Format-string for building the ess command to exit. This format string should use %s to substitute an object name." :group 'ess-command :type 'string) (make-variable-buffer-local 'inferior-ess-exit-command) (setq-default inferior-ess-exit-command "q()\n") (defvar inferior-ess-search-list-command nil "`ess-language' command that prints out the search list; i.e. the list of directories and (recursive) objects that `ess-language' uses when it searches for objects. Really set in -customize-alist in ess[dl]-*.el") (make-variable-buffer-local 'inferior-ess-search-list-command) ;; and hence made buffer-local via that scheme... ;; ;; FIXME: this is nowhere used : ;; (defcustom inferior-ess-names-command "names(%s)\n" ;; "Format string for ESS command to extract names from an object. ;; %s is replaced by the object name -- usually a list or data frame." ;; :group 'ess-command ;; :type 'string) (defcustom inferior-ess-safe-names-command "tryCatch(base::print(base::names(%s), max=1e6), error=function(e){})\n" "Format string for ESS command to extract names from an object *safely*. %s is replaced by an \"object name\" -- usually a list or data frame, but in R also e.g., 'package:stats'." :group 'ess-command :type 'string) (defcustom inferior-ess-get-prompt-command "options()$prompt\n" "Command to find the value of the current S prompt." :group 'ess-command :type 'string) ;;*;; Regular expressions (defvar inferior-ess-prompt nil "The regular expression used for recognizing prompts. It is always used in transcript mode. In inferior ess mode it is used only if `comint-use-prompt-regexp' is t. If not set in language's customise-alist it is constructed at run time from `inferior-ess-primary-prompt' and `inferior-ess-secondary-prompt'.") (make-variable-buffer-local 'inferior-ess-prompt) (defvar ess-change-sp-regexp "" "The regexp for matching the S/R/.. commands that change the search path.") (make-variable-buffer-local 'ess-change-sp-regexp) (defvar ess-S+-change-sp-regexp "\\(attach(\\([^)]\\|$\\)\\|detach(\\|collection(\\|library(\\|module(\\|source(\\)" "The regexp for matching the S-plus commands that change the search path.") (defvar ess-S-change-sp-regexp "\\(attach(\\([^)]\\|$\\)\\|detach(\\|library(\\|source(\\)" "The regexp for matching the S commands that change the search path.") (defvar ess-r-change-sp-regexp "\\(attach(\\([^)]\\|$\\)\\|detach(\\|library(\\|require(\\|source(\\)" "The regexp for matching the R commands that change the search path.") (defvaralias 'ess-R-change-sp-regexp 'ess-r-change-sp-regexp) ;;*;; Process-dependent variables (defvar ess-search-list nil "Deprecated. Use (ess-search-list) or (ess-process-get 'search-list) instead.") (make-obsolete-variable 'ess-search-list nil "ESS[12.09]") (defvar ess-sl-modtime-alist nil "Alist of modification times for all ess directories accessed this session.") (make-variable-buffer-local 'ess-sl-modtime-alist) (defvar ess-sp-change nil "Variable not used. Use (ess-process-get 'sp-for-help-changed?) instead.") (make-obsolete-variable 'ess-sp-change nil "ESS[12.09]") ;; (make-variable-buffer-local 'ess-sp-change) (defvar ess-prev-load-dir/file nil "This symbol saves the (directory . file) pair used in the last `ess-load-file' command. Used for determining the default in the next one.") (make-variable-buffer-local 'ess-prev-load-dir/file) (defvar ess-object-list nil ;; This is a list of the currently known object names. It is ;; current only for one command entry; it exists under the ;; assumption that the list of objects doesn't change while entering ;; a command. "Cache of object names") (make-variable-buffer-local 'ess-object-list) (defvar ess-help-topics-list nil ;; List of currently known help topics. "Cache of help topics") (make-variable-buffer-local 'ess-help-topics-list) ;;*;; Miscellaneous system variables (defvar ess-temp-point nil "Variable used to retain a buffer position past let or let*.") ;; SJE: Wed 29 Dec 2004 - following 3 ess-object* variables can be removed ;; soon if no-one needs the completion code. (defvar ess-object-name-db-file "ess-namedb" "File containing definitions for `ess-object-name-db'.") (defvar ess-object-name-db-file-loaded '() "List of programs whose name-db file has been loaded.") (defvar ess-object-name-db nil "Alist of lists of object names, with directory names as keys. The file ess-namedb.el is loaded (if it exists) to define this variable. See also function `ess-create-object-name-db'.") (make-variable-buffer-local 'ess-object-name-db) (setq-default ess-object-name-db nil) ;; SJE: 2007-07-16 -- add to quieten byte compile. (defvar ess-loop-timeout nil "Number of loops ess-mode will wait for prompt before signalling an error.") (defcustom ess-S-loop-timeout 2000000 "Integer specifying how many loops ess-mode will wait for the prompt before signaling an error. Will be set to `ess-loop-timeout' in the S dialects' alists. Increase this, if you have a fast(er) machine." :group 'ess-proc :type 'integer) (defcustom ess-XLS-loop-timeout 50000 "Integer specifying how many loops ess-mode will wait for the prompt before signaling an error. Will be set to `ess-loop-timeout' in the XLispStat dialects' alists. Increase this, if you have a fast(er) machine." :group 'ess-proc :type 'integer) ;; NOTA BENE: Other languages/dialect currently set `ess-loop-timeout' ;; **directly** in their ess-*-d.el alist !! ;;;*;;; Font-lock support ;;; for programming, transcript, and inferior process modes. (defcustom ess-font-lock-mode global-font-lock-mode "Non-nil means we use font lock support for ESS buffers. Default is t, to use font lock support. If you change the value of this variable, restart Emacs for it to take effect." :group 'ess :type 'boolean) (defvar inferior-ess-font-lock-input t " This variable has no effect. Customize `inferior-ess-font-lock-keywords' directly. ") (make-obsolete-variable 'inferior-ess-font-lock-input nil "ESS[12.09]") ;; "Reserved Words" -- part 1 -- (defvar ess-RS-constants '("TRUE" "FALSE" "NA" "NULL" "Inf" "NaN")) (defvar ess-R-constants (append ess-RS-constants '("NA_integer_" "NA_real_" "NA_complex_" "NA_character_"))) (defvar ess-S-constants (append ess-RS-constants '("T" "F"))) (defvar ess-R-keywords ;; "Reserved Words" -- part 2 -- '("while" "for" "in" "repeat" "if" "else" "switch" "break" "next" "function" ;; note that these are *NOT* reserved words in R: "return" "message" "warning" "stop")) (defvar ess-S-keywords (append ess-R-keywords '("terminate"))) ;; only some of these keywords "look like functions but are not": (defvar ess-S-non-functions '("if" "for" "function" "while")) ;; first the common ones (defvar ess-S-modifyiers '("library" "attach" "detach" "source" "module")) (defvar ess-R-modifyiers '("library" "attach" "detach" "source" "require")) (defvar ess-R-message-prefixes '("Error:" "Error in" "Warning:" "Warning in" "Warning messages")) (defvar ess-S-message-prefixes (append ess-R-message-prefixes '("Syntax error:" "Dumped"))) ;; (defvar ess-R-assign-ops '("<<-" "<-" "->" "->>") ; don't want "=" here which is not only for assign ;; VS??: it's good to have different colour for = anyhow, ;; very helpful to read code like foo(x=xa, p=pa, x_not_na) ) (defvar ess-S-assign-ops ess-R-assign-ops) ; since "_" is deprecated for S-plus as well (defvar ess-R-function-name-regexp (concat "\\(" "\\sw+" "\\)" "[ \t]*" "\\(<-\\)" "[ \t\n]*" "function\\b")) (defvar ess-S-function-name-regexp ess-R-function-name-regexp ; since "_" is deprecated for S-plus as well ) (defvar ess-font-lock-keywords nil "Internal. Holds a name of the dialect sepcific font-lock keywords in the current buffer. See `ess-R-font-lock-keywords' for an example.") (make-variable-buffer-local 'ess-font-lock-keywords) (defvar ess-font-lock-defaults nil "Internal. Holds dialect sepcific font-lock defaults in the current buffer. Old system. From ESS[12.09] switched to new system described in `ess-font-lock-keywords'.") (make-variable-buffer-local 'ess-font-lock-defaults) (defvar ess-fl-keyword:fun-calls (cons "\\(\\sw+\\)[\t ]*(" '(1 ess-function-call-face keep)) "Font lock for function calls.") (defvar ess-fl-keyword:numbers (cons "\\b\\.?[0-9]+[.eEL]?[0-9]*\\b" 'ess-numbers-face) "Numbers") (defvar ess-fl-keyword:delimiters (cons "\\s(\\|\\s)" 'font-lock-builtin-face) "Parenthesis") (defvar ess-fl-keyword:= (cons "=" 'font-lock-constant-face) "=") (defvar ess-fl-keyword:operators (cons "[-=+>+]\\(.*$\\)" '(1 font-lock-variable-name-face keep t))) (defvar ess-fl-keyword:matrix-labels (cons "\\[,?[1-9][0-9]*,?\\]" 'font-lock-constant-face) "Matrix and vector numeric labels. ") ;; also matches subsetting (defvar ess-R-fl-keyword:messages (cons (regexp-opt ess-R-message-prefixes 'enc-paren) 'font-lock-warning-face) "Inferior-ess problems or errors.") (defcustom inferior-ess-r-font-lock-keywords '((ess-S-fl-keyword:prompt . t) ;; comint does that, but misses some prompts ;; (ess-S-fl-keyword:input-line) ;; comint boguously highlights input with text props, no use for this (ess-R-fl-keyword:messages . t) (ess-R-fl-keyword:modifiers . t) (ess-R-fl-keyword:fun-defs . t) (ess-R-fl-keyword:keywords . t) (ess-R-fl-keyword:assign-ops . t) (ess-R-fl-keyword:constants . t) (ess-fl-keyword:matrix-labels . t) (ess-fl-keyword:fun-calls) (ess-fl-keyword:numbers) (ess-fl-keyword:operators) (ess-fl-keyword:delimiters) (ess-fl-keyword:=) (ess-R-fl-keyword:F&T) ;;VS[17-09-2012]: what is this matching? ;; (cons "^\\*\\*\\*.*\\*\\*\\*\\s *$" 'font-lock-comment-face); ess-mode msg ;; (cons "#" 'font-lock-comment-face) ; comment ;; (cons "^[^#]*#\\(.*$\\)" '(1 font-lock-comment-face keep t)) ; comments ) "Font-lock patterns (alist) used in inferior-R-mode buffers. The key of each cons cell is a name of the keyword. The value should be t or nil to indicate if the keyword is active or not." :group 'ess-R :type 'alist ) (defvaralias 'inferior-R-font-lock-keywords 'inferior-ess-r-font-lock-keywords) (defvar ess-S-common-font-lock-keywords nil " NOT used. See `inferior-S-font-lock-keywords'") (make-obsolete-variable 'ess-S-common-font-lock-keywords nil "ESS[12.09]") (defvar ess-S-fl-keyword:messages (cons (regexp-opt ess-S-message-prefixes 'enc-paren) 'font-lock-warning-face) "Inferior-ess problems or errors.") (defcustom inferior-S-font-lock-keywords '((ess-S-fl-keyword:prompt . t) (ess-S-fl-keyword:messages . t) (ess-S-fl-keyword:modifiers . t) (ess-S-fl-keyword:fun-defs . t) (ess-S-fl-keyword:keywords . t) (ess-S-fl-keyword:assign-ops . t) (ess-S-fl-keyword:constants . t) (ess-fl-keyword:fun-calls) (ess-fl-keyword:numbers) (ess-fl-keyword:operators) (ess-fl-keyword:delimiters) (ess-fl-keyword:=)) "Font-lock patterns used in inferior-S-mode buffers. The key of each cons cell is a name of the keyword. The value should be t or nil to indicate if the keyword is active by default." :group 'ess-S :type 'alist) ;; use the inferior-* ones directly in ess-trns.el ;; (defvar ess-trans-font-lock-keywords ;; inferior-ess-font-lock-keywords ;; "Font-lock patterns used in `ess-transcript-mode' buffers.") ;;;*;;; ess-help variables ; ess-help-mode ;; This will never need to be loaded independently of any of the other ;; modules, but they can all call it so we may as well put it here. ;;*;; Variables relating to ess-help-mode (defcustom ess-help-pop-to-buffer t "If non-nil ess-help buffers are given focus during the display. The default is t (except when `focus-follows-mouse' and `mouse-autoselect-window' are both t)." :group 'ess-help :type 'boolean) (defcustom ess-help-own-frame nil "Controls whether ESS help buffers should start in a different frame. Possible values are: nil: Display help in current frame. 'one: All help buffers are shown in one dedicated frame. t: Each help buffer gets its own frame. The parameters of this frame are stored in `ess-help-frame-alist'. See also `inferior-ess-own-frame'." :group 'ess-help :type '(choice (const nil) (const one) (const t))) (defcustom ess-help-reuse-window t "If t, ESS tries to display new help buffers in the existing help window" :type 'boolean :group 'ess-help) (defcustom ess-help-frame-alist special-display-frame-alist "Alist of frame parameters used to create help frames. This defaults to `special-display-frame-alist' and is used only when the variable `ess-help-own-frame' is non-nil." :group 'ess-help :type 'alist) ; User changeable variables ;;;===================================================== ;;; Users note: Variables with document strings starting ;;; with a * are the ones you can generally change safely, and ;;; may have to upon occasion. (defvar ess-function-call-face 'ess-function-call-face "Face name to use for highlighting function calls.") (defvar ess-numbers-face 'ess-numbers-face "Face name to use for highlighting numbers.") (defvar ess-%op%-face 'ess-%op%-face "Face name to use for highlighting %op% operators.") (defface ess-function-call-face '((default (:slant normal :inherit font-lock-function-name-face))) "Font Lock face used to highlight function calls in ess buffers." :group 'ess) (defface ess-numbers-face '((default (:slant normal :inherit font-lock-type-face))) "Font Lock face used to highlight numbers in ess-mode buffers." :group 'ess) (defface ess-backquoted-face '((default (:inherit default))) "Font Lock face for backquoted names." :group 'ess) (defface ess-operator-face '((default (:inherit font-lock-constant-face))) "Font Lock face for operators." :group 'ess) (defface ess-%op%-face '((default (:inherit ess-operator-face))) "Font Lock face used to highlight %op% operators in ess-mode buffers." :group 'ess) (defcustom ess-help-kill-bogus-buffers t "Non-nil means kill ESS help buffers immediately if they are \"bogus\"." :group 'ess-help :type 'boolean) (defvar ess-execute-screen-options-command nil "Dialect specific command run by `ess-execute-screen-options'.") (defvar ess-help-form 'separate-buffer "*Place to show help. NOT IMPLEMENTED YET. Choices are `separate-buffer', `s-process', `www'. The latter uses `browse-url' to find the location.") (defvar ess-help-web-search-command nil "Dialect specific command web help search. Passed to `ess-execute-dialect-specific' which see. ") (make-variable-buffer-local 'ess-help-web-search-command) (defvar ess-manual-lookup-command nil "Dialect specific command manual lookup. Passed to `ess-execute-dialect-specific' which see. ") (make-variable-buffer-local 'ess-manual-lookup-command) (defvar ess-reference-lookup-command nil "Dialect specific command for reference lookup.. Passed to `ess-execute-dialect-specific' which see. ") (make-variable-buffer-local 'ess-reference-lookup-command) (defvar ess-funargs-command nil "Dialect specific command to return a list of function arguments. See `ess-function-arguments' and .ess_funargs command in R and S+ for details of the format that should be returned.") (make-variable-buffer-local 'ess-funargs-command) (defvar ess-eldoc-function nil "Holds a dialect specific eldoc function, See `ess-r-eldoc-function' and `ess-julia-eldoc-function' for examples.") (defcustom ess-r-args-noargsmsg "No args found." "Message returned if \\[ess-r-args-get] cannot find a list of arguments." :group 'ess-R :type 'string) (defcustom ess-r-args-show-prefix "ARGS: " "A prefix string that is shown before the arguments list." :group 'ess-R :type 'string) (defcustom ess-r-args-show-as 'message "How ess-r-args-show should show the argument list. Possible values are: 'message' (the default) or 'tooltip'." :group 'ess-R :type '(choice (const :tag "message" :value 'message) (const :tag "tooltip" :value 'tooltip))) (defcustom ess-r-args-keep-silent ess-S-non-functions "List of functions names which should *not* trigger \\[ess-r-args-show]; Defaults to `ess-S-non-functions'." :group 'ess-R :type '(repeat string)) (defcustom ess-r-args-electric-paren nil "Non-nil means re-assign \"(\" to \\[ess-r-args-auto-show]." :group 'ess-R :type 'boolean) ; System variables ;;;===================================================== ;;; Users note: You will rarely have to change these ;;; variables. ;;*;; Variables relating to ess-help-mode ;;-- ess-help-S-.. and ess-help-R-.. : in ess-s-lang.el (are used in ess-inf). (defvar ess-help-sec-keys-alist nil "Alist of (key . string) pairs for use in section searching.") (defvar ess-help-sec-regex nil "Reg(ular) Ex(pression) of section headers in help file") (make-variable-buffer-local 'ess-help-sec-keys-alist) (make-variable-buffer-local 'ess-help-sec-regex) ; julia-mode (defcustom inferior-julia-program-name (if (executable-find "julia-basic") "julia-basic" "julia") "julia' executable. Need to be a full path if julia executable is not in the `exec-path'" :group 'ess-Julia) (defvar julia-basic-offset 4 "Offset for julia code editing") ; ess-mode: editing S source ;;; This syntax table is required by ess-mode.el, ess-inf.el and ;;; ess-trns.el, so we provide it here. (defvar ess-mode-syntax-table nil "Syntax table for `ess-mode'.") (defvar ess-mode-completion-syntax-table nil "Completion and help syntax table for `ess-mode'.") (make-variable-buffer-local 'ess-mode-syntax-table) (make-variable-buffer-local 'ess-mode-completion-syntax-table) (defvar inferior-ess-mode-syntax-table nil "Syntax table for `inferior-ess-mode'.") (make-variable-buffer-local 'inferior-ess-mode-syntax-table) ; Buffer local customization stuff (defvar ess-source-modes '(ess-mode) "A list of modes used to determine if a buffer contains ess source code.") ;;; If a file is loaded into a buffer that is in one of these major modes, it ;;; is considered an ess source file. The function ess-load-file uses this to ;;; determine defaults. (defcustom ess-error-buffer-name "*ESS-errors*" "Name of buffer to keep process error messages in. Created for each process." :group 'ess-proc :type 'string) (defvar ess-error-regexp-alist nil "List of symbols which are looked up in `compilation-error-regexp-alist-alist'.") (defcustom ess-verbose nil "Non-nil means write more information to `ess-dribble-buffer' than usual." :group 'ess-proc :type 'boolean) (defvar ess-dribble-buffer (generate-new-buffer "*ESS*") "Buffer for temporary use for setting default variable values. Used for recording status of the program, mainly for debugging.") (defvar ess-customize-alist nil "Variable settings to use for proper behavior. Not buffer local!") ;; TODO: fixme We cannot make it local as yet, Not list is set on inferior startup. ;; (make-variable-buffer-local 'ess-customize-alist) ;; (defvaralias 'ess-local-customize-alist 'ess-customize-alist) (defvar ess-local-customize-alist nil "Buffer local settings for proper behavior. Used to store the values for passing on to newly created buffers.") (make-variable-buffer-local 'ess-local-customize-alist) (defvar ess-mode-editing-alist nil "Variable settings for ess-mode.") (defvar ess-transcript-minor-mode nil "Non-nil if using `ess-transcript-mode' as a minor mode of some other mode.") (make-variable-buffer-local 'ess-transcript-minor-mode) (defvar ess-listing-minor-mode nil "Non-nil if using ess-listing-minor-mode.") (make-variable-buffer-local 'ess-listing-minor-mode) (defvar ess--enable-experimental-projects nil "Enable experimental project support in ESS") (provide 'ess-custom) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-custom.el ends here ess-17.11/lisp/ess-dde.el0000444005071500004540000001654013202324174012062 00000000000000;;; ess-dde.el --- ESS customization for ddeclients under Windows 9x/NT ;; Copyright (C) 1998--1999 Richard M. Heiberger ;; Copyright (C) 2000--2006 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: 9 Dec 1998 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for dealing with running external processes on Windows 9x/NT ;; through ddeclient. ;;; Code: ;; *NO* Requires and autoloads (defun ess-ddeclient-p () "Returns t iff `ess-local-process-name' is associated with an inferior-ess-ddeclient, and nil if the ess-process is running as an ordinary inferior process. Alway nil on Unix machines." (interactive) (when ess-microsoft-p ;; Debug: C-c C-l fails (to start R or give good message) in Windows (ess-write-to-dribble-buffer (format "*ddeclient-p: ess-loc-proc-name is '%s'" ess-local-process-name)) (ess-force-buffer-current "Process to load into: ") (not (equal (ess-get-process-variable 'inferior-ess-ddeclient) (default-value 'inferior-ess-ddeclient))))) ;; C-c C-r (defun ess-dde-send-region (proc start end &optional visibly message) "Loop through lines in region and send them to ESS via ddeclient. PROC, VISIBLY and MESSAGE are ignored." (setq ;; set the following variables for the current ddeESS process. inferior-ess-ddeclient (ess-get-process-variable 'inferior-ess-ddeclient) inferior-ess-client-name (ess-get-process-variable 'inferior-ess-client-name) inferior-ess-client-command (ess-get-process-variable 'inferior-ess-client-command)) (narrow-to-region start end) (goto-char (point-min)) (let ((beg)) (while (or (< (point) (point-max)) (and (= 1 (point-max)) (bound-and-true-p ess-dde-even-empty))) (setq beg (point)) (end-of-line) ;; call-process-region won't send over a 0-character line. ;; We go outside the loop to create a 1-character line " " in the ;; *ESS-temporary* buffer (if (= beg (point)) ;; do empty line outside loop (ess-eval-linewise-ddeclient " " nil 'eob t) ;;(call-process-region start end ;; "ddeclient" nil nil nil "S-PLUS" "SCommand") (call-process-region beg (point) inferior-ess-ddeclient nil nil nil inferior-ess-client-name inferior-ess-client-command)) (forward-line 1)) (widen))) ;; C-c C-n (defun ess-dde-eval-linewise (text-withtabs &optional invisibly eob even-empty wait-last-prompt &rest args) (with-current-buffer (get-buffer-create "*ESS-temporary*") (ess-setq-vars-local ess-customize-alist (current-buffer)) (erase-buffer) (insert text-withtabs) (let ((ess-dde-even-empty even-empty)) (ess-dde-send-region nil (point-min) (point-max)))) (when wait-last-prompt ess-eval-ddeclient-sleep)) ; in addition to timeout-ms ;; C-c C-v (defun ess-dde-display-help-on-object (object &rest args) "Display the ESS documentation for OBJECT in another window. If prefix arg is given, forces a query of the ESS process for the help file. Otherwise just pops to an existing buffer if it exists." (ess-force-buffer-current "Process to load into: ") (ess-eval-linewise-ddeclient (concat "help(" object ")"))) (defun ess-dde-find-help-file (p-string) (read-string "Help on: ")) ;; C-c C-l (defun ess-dde-load-file (filename) "Load an S source file into an inferior ESS process; alternate behavior for `ess-load-file', required with S-Plus GUI for Windows: Sends the S-Plus command source(\"filename\") to S. This version does not guarantee to save .Last.value, nor offer alternate buffers or editing capability." (let ((source-buffer (get-file-buffer filename))) (if (ess-check-source filename) (error "Buffer %s has not been saved" (buffer-name source-buffer)) ;; Find the process to load into (if source-buffer (with-current-buffer source-buffer (ess-force-buffer-current "Process to load into: ") ;; (ess-check-modifications) ;;; not possible with ddeclient ;; it calls ess-command which requires two-way communication ;; with the S-Plus process ))) (ess-eval-linewise-ddeclient (format ess-load-command filename))) (widen)) ;; C-c C-d (defun ess-dde-dump-object (object filename) "Dump the ESS object OBJECT into file FILENAME." (ess-force-buffer-current "Process to load into: ") (ess-eval-linewise-ddeclient (concat "dump('" object "','" filename "')")) (sleep-for 5) (find-file filename) (widen)) (defun ess-dde-read-object-name (p-string) (read-string "Object to edit: ")) (defun ess-dput-expression-ddeclient (object filename) "Dump the ESS object found by evaluating OBJECT into file FILENAME." (ess-force-buffer-current "Process to load into: ") (ess-eval-linewise-ddeclient (concat "dput(" object ",'" filename "')")) (sleep-for 2) (find-file filename)) (defun ess-command-ddeclient-proposed (com &optional buf sleep) "ddeclient version of real `ess-command'. Send the ESS process command COM and redirect its output to the temporary file named BUF. The temporary filename is constructed in emacs, not in the ESS process. The default name for the temporary buffer is \"ess-temp.st\". The function waits SLEEP (which defaults to 1) seconds and then brings the temporary file into an emacs buffer and displays it." (let (filename bufname) (if (not buf) (setq buf "ess-temp.st")) (if (not sleep) (setq sleep 1)) (setq filename (concat (file-name-as-directory (getenv "TEMP")) buf)) (ess-eval-linewise-ddeclient (concat ".old.Last.value <- .Last.value; sink('" filename "'); print(" com "); sink(); .Last.value <- .old.Last.value")) (setq bufname (ess-get-file-or-buffer filename)) ;; must follow the eval (sleep-for sleep) (if (not bufname) (find-file filename) (switch-to-buffer bufname)) (revert-buffer t t) ;; this allows the user to reuse the BUF name )) ;; previous version (ESS-5.2.12 and earlier) (defun ess-dde-command (com &optional buf sleep) "ddeclient bypass of real ess-command" (ess-eval-linewise com)) (provide 'ess-dde) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-dde.el ends here ess-17.11/lisp/ess-debug.el0000444005071500004540000000612613202324174012413 00000000000000;;; ess-debug.el --- debugging start up for ESS ;; Copyright (C) 1997--2001 A.J. Rossini ;; Copyright (C) 2001--2006 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: November 1997 ;; Maintainer: ESS-core ;; Keywords: languages, tools ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;;; Commentary: ;; Strictly for debugging and development. usage is: ;; emacs -Q -l ess-debug.el -f S4 ;; (or similar!) ;; ;; The whole point of this file is to enable debugging from a vanilla ;; environment. It probably isn't needed too much right now. ;;; Code: (defun ess-add-path (path &rest options) "Add PATH to `load-path' if it exists under `default-load-path' directories and it does not exist in `load-path'. You can use following PATH styles: load-path relative: \"PATH/\" (it is searched from `default-load-path') home directory relative: \"~/PATH/\" \"~USER/PATH/\" absolute path: \"/HOO/BAR/BAZ/\" You can specify following OPTIONS: 'all-paths search from `load-path' instead of `default-load-path' 'append add PATH to the last of `load-path'. For ESS, ONLY use load-path, since Emacs doesn't have default-load-path." (let ((rest load-path) p) (if (and (catch 'tag (while rest (setq p (expand-file-name path (car rest))) (if (file-directory-p p) (throw 'tag p)) (setq rest (cdr rest)))) (not (member p load-path))) (setq load-path (if (memq 'append options) (append load-path (list p)) (cons p load-path)))))) (setq-default debug-on-error t) (ess-add-path "~rossini/Repos/repos-svn/ess/lisp") ;; ^^adapt!!!^^^^^^^^^^^^^^^ (require 'ess-site) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-debug.el ends here ess-17.11/lisp/ess-eldoc.el0000444005071500004540000001430613202324174012412 00000000000000;;; ess-eldoc.el --- Use eldoc to report R function names. ;; Copyright (C) 1997--2009 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Stephen Eglen ;; Created: 2007-06-30 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;;;;; eldoc funcitonality has been moved into the core ;;;;; ;;;;; this file has no effect and is left in ESS in order not to break ;;;;; users configuration ;; This is an initial attempt to use the emacs facility ELDOC in R ;; buffers. Eldoc is used in Emacs lisp buffers to show the function ;; arglist and docstrings for variables. To try it, view an emacs ;; lisp buffer, and then do M-x turn-on-eldoc-mode, and move over ;; function and variable names. ;; This file extends eldoc to work in R buffers. It currently uses ;; Sven's ess-r-args.el file to retrieve args for a given R function ;; (via ess-r-args-get). Note that it works slightly different to ;; Sven's code, in that you just need to have the point over the name ;; of an R function, or inside its arguments list, for eldoc to show ;; the arg list. ;; To use this functionality, simply add ;; ;; (require 'ess-eldoc) ;; ;; to your .emacs file. When you visit a R mode, eldoc will be turned ;; on. However, you will first need to associate the R buffer with an ;; *R* process so that args can be looked up -- otherwise, eldoc will ;; silently not report anything. So, e.g. try: ;; C-x C-f somefile.R ;; M-x R (so that somefile.R is associated with *R*) ;; eldoc should then work. ;; e.g. put the following rnorm() command in an R buffer. The line ;; underneath shows a key of what arg list will be shown as you move ;; across the rnorm line. ;; rnorm(n=100, mean=sqrt(20), sd=10) ;; 1111111111111222223333333311444111 ;; 1: rnorm ;; 2: mean ;; 3: sqrt ;; 4: sd ;; ;; Note that the arg list for rnorm() should be shown either when you ;; are on the function name, or in the arg list. However, since the ;; 2nd and 3rd arguments are also function names, the arg lists of ;; those function names are reported instead. This might be seen as ;; undesirable behaviour, in which case a solution would be to only ;; look up the function name if it is followed by (. ;; If you want to use this feature in *R* buffers, add the following ;; to .emacs: ;; (add-hook 'inferior-ess-mode-hook 'ess-use-eldoc) ;; In the current version, I do not cache the arg list, but that was ;; done in an earlier version, to save repeated calls to ;; ess-r-args-get. ;; This code has been tested only in Emacs 22.1. It will not work on ;; Emacs 21, because it needs the variable ;; eldoc-documentation-function. ;;;; VS [25-02-2012]: all these issues were at least partially addresed in the ;;;; new implementation: ;; Bug (in eldoc?): the arg list for legend() is too long to fit in ;; minibuffer, and it seems that we see the last N lines of the arg ;; list, rather than the first N lines. It would be better to see the ;; first N lines since the more important args come first. ;; Doc issue: the eldoc vars (e.g. eldoc-echo-area-use-multiline-p) ;; work only for elisp mode. ;; Issue: You will probably see the message "Using process 'R'" flash; ;; this is generated by `ess-request-a-process', and I'd like to avoid ;; that appearing, non-interactively. ;; If *R* is currently busy (e.g. processing Sys.sleep(999)), then the ;; eldoc commands won't work; ess-command could be silenced in this ;; regard perhaps with a new SILENT arg for example to prevent the ;; call to (ess-error). ;;; Code: ;; ;; This could be done on buffer local basis. ;; (setq ess-r-args-noargsmsg "") ;; ;; following two defvars are not currently used. ;; (defvar ess-eldoc-last-name nil ;; "Name of the last function looked up in eldoc. ;; We remember this to see whether we need to look up documentation, or used ;; the cached value in `ess-eldoc-last-args'.") ;; (defvar ess-eldoc-last-args nil ;; "Args list last looked up for eldoc. Used as cache.") ;; (defun ess-eldoc-2 () ;; ;; simple, old version. ;; (interactive) ;; (ess-r-args-get (ess-read-object-name-default))) ;; (defun ess-eldoc-1 () ;; "Return the doc string, or nil. ;; This is the first version; works only on function name, not within arg list." ;; (interactive) ;; ;; Possible ways to get the function at point. ;; ;;(setq name (thing-at-point 'sexp)) ;; ;;(setq name (ess-read-object-name-default)) ;; ;;(setq name (find-tag-default)) ;; (if ess-current-process-name ;; (progn ;; (setq name (ess-guess-fun)) ;guess the word at point. ;; (if (equal (length name) 0) ;; nil ;; ;; else ;; (unless (equal name ess-eldoc-last-name) ;; ;; name is different to the last name we lookedup, so get ;; ;; new args from R and store them. ;; (setq ess-eldoc-last-args (ess-r-args-get name) ;; ess-eldoc-last-name name)) ;; ess-eldoc-last-args)) ;; ;; no ESS process current. ;; nil) ;; ) ;; (defsubst ess-guess-fun () ;; "Guess what the function at point is." ;; ;; Derived from Man-default-man-entry in man.el ;; (let (word) ;; (save-excursion ;; (skip-chars-backward "-a-zA-Z0-9._+:") ;; (let ((start (point))) ;; (skip-chars-forward "-a-zA-Z0-9._+:") ;; (setq word (buffer-substring-no-properties start (point))))) ;; word)) (defun ess-use-eldoc () "Does nothing. Defined not to break old users' code." (interactive)) ;; For now, while testing, switch on ess-eldoc. Later, ths could be removed ;; and instead ask user to add it. ;; (add-hook 'R-mode-hook 'ess-use-eldoc) (provide 'ess-eldoc) ;;; ess-eldoc.el ends here ess-17.11/lisp/ess-font-lock.el0000444005071500004540000001531113202324174013215 00000000000000;;; ess-font-lock.el --- font-lock color options ;; Copyright (C) 2000--2006 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: 06 Feb 2000 ;; Keywords: languages, faces ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; provides syntax highlighting support. ;;; Code: ; Requires and autoloads (require 'font-lock) (require 'paren) ;; FIXME: What is this doing here!? (if (fboundp 'show-paren-mode) (show-paren-mode 1)) ;;; Emacs 20.x notes: ;; font-lock faces are defined in /emacs/emacs-20.5/lisp/font-lock.el ;; The font-lock faces are applied to ESS buffers by ;; ess-mode.el ess-inf.el ess-trns.el ess-custom.el ;; The keywords for faces are defined in the ess[dl]*.el files. ;; All faces can be looked at, under Emacs 20.x, with ;; [menu-bar] [Edit] [Text Properties] [Display Faces} ;;; For XEmacs ;; ... (tony needs to write something here). (defun ess-font-lock-rmh () "Set font-lock colors to Richard Heiberger's usual choice." ;; FIXME: Turn it into a Custom theme! (interactive) (set-foreground-color "Black") (set-background-color "lightcyan") (set-face-background 'mode-line "lightskyblue") (set-face-foreground 'mode-line "midnightblue") (set-face-foreground 'font-lock-comment-face "Firebrick") (set-face-foreground 'font-lock-function-name-face "Blue") (set-face-foreground 'font-lock-keyword-face "Purple") (set-face-foreground 'font-lock-constant-face "Brown") (set-face-foreground 'font-lock-string-face "VioletRed") (set-face-foreground 'font-lock-type-face "Sienna") (set-face-foreground 'font-lock-variable-name-face "Black")) (defun ess-font-lock-blue () "Set font-lock colors to Richard Heiberger's blue color scheme." ;; FIXME: Turn it into a Custom theme! (interactive) (set-foreground-color "Black") (set-background-color "LightBlue") (set-face-foreground 'mode-line "LightBlue") (set-face-background 'mode-line "DarkSlateBlue") (set-face-foreground 'font-lock-comment-face "Firebrick") (set-face-foreground 'font-lock-function-name-face "Blue") (set-face-foreground 'font-lock-keyword-face "Purple") (set-face-foreground 'font-lock-constant-face "Brown") (set-face-foreground 'font-lock-string-face "VioletRed") (set-face-foreground 'font-lock-type-face "Sienna") (set-face-foreground 'font-lock-variable-name-face "Black")) (defun ess-font-lock-wheat () "Set font-lock colors to Richard Heiberger's wheat color scheme." ;; FIXME: Turn it into a Custom theme! (interactive) (set-foreground-color "Black") (set-background-color "Wheat") (set-face-foreground 'mode-line "Wheat") (set-face-background 'mode-line "Sienna") (set-face-foreground 'font-lock-comment-face "Firebrick") (set-face-foreground 'font-lock-function-name-face "Blue") (set-face-foreground 'font-lock-keyword-face "Purple") (set-face-foreground 'font-lock-constant-face "Brown") (set-face-foreground 'font-lock-string-face "VioletRed") (set-face-foreground 'font-lock-type-face "Sienna") (set-face-foreground 'font-lock-variable-name-face "Black")) (defun ess-font-lock-bw () "Set font-lock colors to Richard Heiberger's black and white color scheme." ;; FIXME: Turn it into a Custom theme! (interactive) (set-foreground-color "Black") (set-background-color "white") (set-face-foreground 'mode-line "gray10") (set-face-background 'mode-line "gray90") ;; modify-face is an interactive compiled Lisp function in `faces'. ;; Sample usage: ;;(modify-face FACE FOREGROUND BACKGROUND STIPPLE BOLD-P ITALIC-P UNDERLINE-P &optional INVERSE-P FRAME) (modify-face 'mode-line "gray10" "gray90" nil nil t nil ) (modify-face 'font-lock-comment-face "black" "white" nil nil t nil ) (modify-face 'font-lock-function-name-face "black" "white" nil t nil nil ) (modify-face 'font-lock-keyword-face "black" "white" nil nil nil t ) (modify-face 'font-lock-constant-face "black" "white" nil t nil nil ) (modify-face 'font-lock-string-face "black" "white" nil nil t t ) (modify-face 'font-lock-type-face "black" "white" nil t t nil ) (modify-face 'font-lock-variable-name-face "black" "white" nil nil nil nil ) (modify-face 'font-lock-builtin-face "black" "white" nil t nil nil ) (modify-face 'font-lock-warning-face "black" "white" nil t nil nil ) (modify-face 'show-paren-match-face "gray20" "gray80" nil t nil nil ) (modify-face 'show-paren-mismatch-face "white" "gray40" nil t t nil )) (defun ess-font-lock-db () "Set font-lock colors (leave fore-/back-ground alone) courtesy David Brahm " ;; FIXME: Turn it into a Custom theme! (interactive) (set-face-foreground 'font-lock-comment-face "Firebrick") ; #... %... (set-face-foreground 'font-lock-string-face "SeaGreen") ; "..." "..." (set-face-foreground 'font-lock-keyword-face "MediumBlue") ; if \end (set-face-foreground 'font-lock-function-name-face "VioletRed") ; talk<- {center} (set-face-foreground 'font-lock-variable-name-face "Blue") ; xv (set-face-foreground 'font-lock-type-face "Goldenrod") ; T,F ? (set-face-foreground 'font-lock-constant-face "Magenta") ; <- {eq1} ) (provide 'ess-font-lock) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-font-lock.el ends here ess-17.11/lisp/ess-generics.el0000444005071500004540000001117513202324174013124 00000000000000;;; ess-generics.el --- Mode-generic functions ;; ;; Copyright (C) ESS-core ;; Maintainer: ESS-core ;; ;; This file is part of ESS ;; ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;;; Comment ;; ;; Define generic method with `ess-defgeneric' and dialect specific override with ;; `ess-defmethod`. Current implementation is using `{name}-function' and ;; `ess-customize-alist' as the backbone mechanism. This might change in the ;; future. ;; ;;; Code (defun ess-generics--override (name args body) (let ((funname (intern (format "%s-function" name))) (arg-list (delq '&rest (delq '&optional (copy-alist args))))) `(if (fboundp ,funname) ,(if (memq '&rest args) `(apply ,funname ,@arg-list) `(funcall ,funname ,@arg-list)) ,@(or body `((error (format "`%s' is not implemented for dialect `%s'" ',name ess-dialect))))))) (defun ess-generics--expand-overrides (name args body) ;; ripped off from `mode-local--expand-overrides' (let ((forms body) (ditto t) form xbody) (while forms (setq form (car forms)) (cond ((atom form)) ((eq (car form) :override) (setq form (ess-generics--override name args (cdr form)))) ((eq (car form) :override-with-args) (setq form (ess-generics--override name (cadr form) (cddr form)))) ((setq form (ess-generics--expand-overrides name args form)))) (setq ditto (and ditto (eq (car forms) form)) xbody (cons form xbody) forms (cdr forms))) (if ditto body (nreverse xbody)))) (defmacro ess-defgeneric (name args docstring &rest body) "Define a new function, as with `defun', which can be overloaded. NAME is the name of the function to create. ARGS are the arguments to the function. DOCSTRING is a documentation string to describe the function. The docstring will automatically have details about its overload symbol appended to the end. BODY is code that would be run when there is no override defined. The default is to signal error if {name}-function is not defined." (declare (doc-string 3) (indent defun) (debug defun)) (let ((funname (intern (format "%s-function" name)))) `(eval-and-compile (defvar-local ,funname nil ,(format "When defined this function is called by `%s'." name)) (defun ,name ,args ,(format "%s\n\nUse `ess-defmethod' to define dialect specific overrides." docstring) ,@(ess-generics--expand-overrides name args body))))) (defmacro ess-defmethod (dialect name args &rest body) "Define a dialect specific override of the method NAME. If NAME wasn't created with `ess-defgeneric' signal an error. DIALECT is the dialect name this override is being defined for. ARGS are the function arguments, which should match those of the same named function created with `ess-defgeneric'. BODY is the implementation of this function." (declare (indent defun) (debug (&define sexp sexp lambda-list def-body))) (let ((new-name (intern (format "%s:%s" name dialect))) (fun-name (intern (format "%s-function" name))) (alist-name (intern (downcase (format "ess-%s-customize-alist" dialect))))) `(eval-and-compile (unless (boundp ',alist-name) (defvar ,alist-name nil ,(format "Variables to customize dialect '%s'." dialect))) (add-to-list ',alist-name '(,fun-name . ',new-name)) (defun ,new-name ,args ,(format "%s\nThis is an override for `%s' for `%s' dialect." ;; fixme: NAME might be undefined as yet. Look at help-fns-describe-function-functions (or (and (fboundp name) (documentation name) ;; hackish (replace-regexp-in-string "\nUse.*ess-defmethod.*\\." "" (documentation name))) "") name dialect) ;; The body for this implementation ,@body) ;; For find-func to locate the definition of NEW-NAME. (put ',new-name 'definition-name ',name)))) (provide 'ess-generics) ess-17.11/lisp/ess-gretl.el0000444005071500004540000006214013202324174012440 00000000000000;; ess-gretl.el --- ESS gretl mode and inferior interaction ;; ;; Copyright (C) 2012 Allin Cottrell ;; Copyright (C) 2012 Ahmadou DICKO ;; Copyright (C) 2013 ESS core team ;; ;; Filename: ess-gretl.el ;; Author: Ahmadou DICKO, Spinu Vitalie and Allin Cottrell (based on ess-julia.el and gretl.el) ;; Maintainer: Ahmadou DICKO ;; Created: 01-10-2012 (ESS 12.09) ;; Keywords: ESS, gretl, econometrics ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; This file is *NOT* part of GNU Emacs. ;; This file is *NOT YET* part of ESS ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 3, any later version. ;; ;; This program is distributed in the hope that it will be useful, but WITHOUT ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ;; details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; start the inferior with M-x gretl. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (require 'compile); for compilation-* below (require 'ess-r-mode) ;;; Code: (defvar gretl-mode-hook nil) (add-to-list 'auto-mode-alist '("\\.inp$" . gretl-mode)) (defvar gretl-syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?_ "w" table) ; underscores in words (modify-syntax-entry ?@ "w" table) (modify-syntax-entry ?# "<" table) ; # single-line comment start (modify-syntax-entry ?\n ">" table) ; \n single-line comment end (modify-syntax-entry ?\{ "(} " table) (modify-syntax-entry ?\} "){ " table) (modify-syntax-entry ?\[ "(] " table) (modify-syntax-entry ?\] ")[ " table) (modify-syntax-entry ?\( "() " table) (modify-syntax-entry ?\) ")( " table) (modify-syntax-entry ?\r " " table) (modify-syntax-entry ?+ "." table) (modify-syntax-entry ?- "." table) (modify-syntax-entry ?= "." table) (modify-syntax-entry ?* "." table) (modify-syntax-entry ?/ "." table) (modify-syntax-entry ?> "." table) (modify-syntax-entry ?< "." table) (modify-syntax-entry ?& "." table) (modify-syntax-entry ?| "." table) (modify-syntax-entry ?! "." table) (modify-syntax-entry ?\\ "\\" table) (modify-syntax-entry ?\' "." table) (modify-syntax-entry ?\` "w" table) (modify-syntax-entry ?\" "\"" table) (modify-syntax-entry ?. "w" table) (modify-syntax-entry ?_ "w" table) (modify-syntax-entry ?\% "." table) (modify-syntax-entry ?\# "<" table) (modify-syntax-entry ?\n ">" table) table) "Syntax table for `gretl-mode'.") ;; syntax table that holds within strings (defvar gretl-mode-string-syntax-table (let ((table (make-syntax-table))) table) "Syntax table for `gretl-mode' that holds within strings.") (defcustom gretl-continuation-offset 4 "*Extra indentation applied to Gretl continuation lines." :type 'integer :group 'ess-gretl) (defvar gretl-continuation-regexp "[^#%\n]*\\(\\\\\\|\\.\\.\\.\\)\\s-*\\(\\s<.*\\)?$") (defcustom gretl-continuation-string "\\" "*Character string used for Gretl continuation lines. Normally \\." :type 'string :group 'ess-gretl) ;; (defconst gretl-string-regex ;; "\"[^\"]*?\\(\\(\\\\\\\\\\)*\\\\\"[^\"]*?\\)*\"") (defconst gretl-function-header-regexp (concat "^\\s-*\\<\\(function\\)\\>" "\\([^=;\n]*=[ \t]*\\|[ \t]*\\)\\(\\w+\\)\\>") "Regexp to match a Gretl function header. The string `function' and its name are given by the first and third parenthetical grouping.") ;; (defconst ess-function-call-regexp ;; "\\s\"?\\(\\(\\sw\\|\\s_\\)+\\(<-\\)?\\)\\s\"?*\\s-*(" ;; "Regexp for function names") (defvar gretl-command-words '("add" "adf" "anova" "append" "ar" "ar1" "arbond" "arch" "arima" "biprobit" "break" "boxplot" "chow" "clear" "coeffsum" "coint" "coint2" "corr" "corrgm" "cusum" "data" "dataset" "delete" "diff" "difftest" "discrete" "dpanel" "dummify" "duration" "elif" "else" "end" "endif" "endloop" "eqnprint" "equation" "estimate" "fcast" "foreign" "fractint" "freq" "function" "funcerr" "garch" "genr" "gmm" "gnuplot" "graphpg" "hausman" "heckit" "help" "hsk" "hurst" "if" "include" "info" "intreg" "kalman" "kpss" "labels" "lad" "lags" "ldiff" "leverage" "levinlin" "logistic" "logit" "logs" "loop" "mahal" "makepkg" "meantest" "mle" "modeltab" "modprint" "modtest" "mpols" "negbin" "nls" "normtest" "nulldata" "ols" "omit" "open" "orthdev" "outfile" "panel" "pca" "pergm" "textplot" "poisson" "print" "printf" "probit" "pvalue" "quantreg" "qlrtest" "qqplot" "quit" "rename" "reset" "restrict" "rmplot" "run" "runs" "scatters" "sdiff" "set" "setinfo" "setobs" "setmiss" "shell" "smpl" "spearman" "sprintf" "square" "sscanf" "store" "summary" "system" "tabprint" "tobit" "tsls" "var" "varlist" "vartest" "vecm" "vif" "wls" "xcorrgm" "xtab" "debug" "return" "catch" "for" "foreach" "funcerr" "return" "while" "elif" "const" "3sls" "liml" "fiml" "sur" "params" "deriv" "orthog" "weights" "series" "scalar" "genr") "Commands in Gretl (these names are also reserved).") (defvar gretl-genr-functions '("abs" "sin" "cos" "tan" "asin" "acos" "atan" "sinh" "cosh" "tanh" "asinh" "acosh" "atanh" "log" "ln" "log10" "log2" "exp" "sqrt" "diff" "ldiff" "sdiff" "lags" "int" "round" "ceil" "floor" "sort" "dsort" "sortby" "ranking" "orthdev" "nobs" "firstobs" "lastobs" "uniform" "normal" "cum" "missing" "ok" "misszero" "lrvar" "quantile" "median" "gini" "zeromiss" "sum" "mean" "min" "max" "sd" "var" "sst" "cnorm" "dnorm" "qnorm" "gammafun" "lngamma" "digamma" "resample" "pnobs" "pmin" "pmax" "pmean" "psd" "hpfilt" "bkfilt" "bwfilt" "fracdiff" "boxcox" "cov" "corr" "movavg" "I" "zeros" "ones" "seq" "replace" "muniform" "mnormal" "sumc" "sumr" "meanc" "meanr" "sdc" "minc" "maxc" "minr" "maxr" "iminc" "imaxc" "iminr" "imaxr" "fft" "ffti" "cmult" "cdiv" "mcov" "mcorr" "mxtab" "cdemean" "cholesky" "psdroot" "inv" "invpd" "ginv" "diag" "transp" "vec" "vech" "unvech" "upper" "lower" "rows" "cols" "det" "ldet" "tr" "onenorm" "infnorm" "rcond" "rank" "qform" "mlag" "qrdecomp" "eigensym" "eigengen" "nullspace" "princomp" "mexp" "fdjac" "BFGSmax" "obsnum" "isseries" "isscalar" "islist" "isstring" "isnull" "nelem" "pdf" "cdf" "invcdf" "pvalue" "critical" "randgen" "urcpval" "values" "mshape" "svd" "mols" "mpols" "mrls" "mread" "mwrite" "selifc" "selifr" "polroots" "dummify" "wmean" "wvar" "wsd" "xpx" "filter" "kfilter" "ksmooth" "ksimul" "trimr" "getenv" "argname" "obslabel" "readfile" "grab" "strstr" "strncmp" "strlen" "sscanf" "varname" "varnum" "tolower" "colnames" "rownames" "ljungbox" "msortby" "lincomb" "imhof" "toepsolv" "diagcat" "xmin" "xmax" "corrgm" "mcovg" "fcstats" "bessel" "fraclag" "mreverse" "deseas" "pergm" "irr" "npv" "logistic" "weekday" "kdensity" "monthlen" "epochday" "setnote" "invmills" "polyfit" "chowlin" "varsimul" "strsplit" "inlist" "errmsg" "isconst" "irf" "inbundle") "Builtin functions for Gretl's genr command.") (defvar gretl-option-flags '("addstats" "all" "anova" "append" "arch" "arma-init" "asymptotic" "autocorr" "auto" "autocorr" "auxiliary" "balanced" "bartlett" "between" "bootstrap" "both" "breusch-pagan" "byobs" "by" "c" "close" "coded" "cols" "column" "comfac" "complete" "conditional" "contiguous" "continue" "continuous" "control" "covariance" "cross" "cross-section" "crt" "csv" "ct" "ctt" "cubes-only" "dat" "database" "dataset" "db" "degrees" "dhansen" "difference" "diffuse" "discrete" "dpdstyle" "drop-empty" "drop-first" "drop-last" "dummy" "dynamic" "equal" "exit" "exponential" "fcp" "fixed-effects" "from-file" "full" "func" "gamma" "geomean" "gls" "gmm" "gnu-R" "gnu-octave" "gph" "gzipped" "hausman-reg" "hessian" "hilu" "impulse-responses" "input" "inst" "integrate" "intervals" "inverse-fit" "iterate" "jackknife" "jbera" "jitter" "jmulti" "kendall" "lags" "lagselect" "lbfgs" "lillie" "liml" "linear-fit" "list" "loess-fit" "log" "loglogistic" "lognormal" "logs" "matrix" "matrix-diff" "medians" "ml" "model1" "multi" "multinomial" "nc" "next" "no-corc" "no-dates" "no-df-corr" "no-gradient-check" "no-header" "no-missing" "no-scaling" "no-stats" "normal" "normality" "notches" "numerical" "odbc" "omit-obs" "one-scale" "opg" "orthdev" "other" "out-of-sample" "output" "overwrite" "p-values" "panel" "panel-vars" "plot" "pooled" "preserve" "print-final" "progress-bar" "progressive" "pwe" "quadratic-fit" "quiet" "quit" "radians" "random" "random-effects" "rank-sum" "raw" "rc" "replace" "restrict" "restructure" "reverse" "robust" "rolling" "row" "rtf" "save" "save-all" "save-ehat" "save-xbeta" "scalars" "seasonals" "send-data" "sign" "signed-rank" "silent" "simple" "simple-print" "single-yaxis" "skip-df" "spearman" "special-time-series" "squares" "squares-only" "stacked-cross-section" "stacked-time-series" "static" "stdresid" "suppress-fitted" "swilk" "system" "t-ratios" "tall" "test-down" "tex" "time-dummies" "time-series" "to-file" "to_file" "traditional" "trend" "two-step" "unequal-vars" "uniform" "unit-weights" "variance-decomp" "vcv" "verbose" "wald" "weibull" "weights" "white" "white-nocross" "with-impulses" "with-lines" "write" "www" "x-12-arima" "y-diff-only" "z-scores" "zeros") "Gretl option flags.") (defvar gretl-internal-vars '("Fstat" "T" "ahat" "aic" "bic" "chisq" "coeff_ci" "coeff" "compan" "datatype" "df" "dwpval" "ec" "ehat" "error" "ess" "fcast" "fcerr" "gmmcrit" "hausman" "hqc" "h" "jalpha" "jbeta" "jvbeta" "kalman_llt" "kalman_lnl" "kalman_s2" "kalman_t" "kalman_uhat" "llt" "lnl" "mnlprobs" "ncoeff" "nobs" "nscan" "nvars" "obs" "pd" "pvalue" "rho" "rlnl" "rsq" "s00" "s01" "s11" "sample" "sargan" "sigma" "stderr" "stopwatch" "sysA" "sysB" "sysGamma" "t1" "t2" "test" "trsq" "uhat" "unit" "vcv" "version" "vma" "windows" "xlist" "xtxinv" "yhat" ) "Model- and dataset-related variables.") (defconst gretl-block-start-keywords (list "loop" "foreign" "function" "gmm" "if" "system" "mle" "nls" "restrict")) (defconst gretl-block-other-keywords (list "else" "elif")) (defconst gretl-block-end-keywords (list "end" "endif" "endloop")) (defvar gretl-keywords (append gretl-block-start-keywords gretl-block-other-keywords gretl-block-end-keywords '("break")) "Reserved words in Gretl.") (defun gretl-at-keyword (kw-list) ; not a keyword if used as a field name, X.word, or quoted, :word (and (or (= (point) 1) (and (not (equal (char-before (point)) ?.)) (not (equal (char-before (point)) ?:)))) (not (ess-inside-string-or-comment-p (point))) (not (ess-inside-brackets-p (point))) (member (current-word) kw-list))) (defconst gretl-font-lock-defaults (list ;; Fontify all builtin keywords. (cons (concat "\\<\\(" (mapconcat 'identity gretl-keywords "\\|") "\\)\\>") 'font-lock-keyword-face) ;; Fontify all option flags. (cons (concat "[ \t]--\\(" (mapconcat 'identity gretl-option-flags "\\|") "\\)") 'font-lock-constant-face) ;; Fontify all command words. (cons (concat "\\<\\(" (mapconcat 'identity gretl-command-words "\\|") "\\)\\>") 'font-lock-builtin-face) ;; Fontify all builtin operators. (cons "\\(&\\||\\|<=\\|>=\\|==\\|<\\|>\\|!=\\|!\\)" (if (boundp 'font-lock-builtin-face) 'font-lock-builtin-face 'font-lock-preprocessor-face)) ;; Fontify all internal variables. (cons (concat "\\$\\(" (mapconcat 'identity gretl-internal-vars "\\|") "\\)\\>") 'font-lock-variable-name-face) ;; Fontify all genr functions. (cons (concat "\\<\\(" (mapconcat 'identity gretl-genr-functions "\\|") "\\)\\>") 'font-lock-variable-name-face) ;; Fontify all function declarations. (list gretl-function-header-regexp '(1 font-lock-keyword-face) '(3 font-lock-function-name-face nil t))) "Additional Gretl expressions to highlight.") (defvar gretl-block-begin-regexp (concat "\\<\\(" (mapconcat 'identity gretl-block-start-keywords "\\|") "\\)\\>")) (defvar gretl-block-else-regexp (concat "\\<\\(" (mapconcat 'identity gretl-block-other-keywords "\\|") "\\)\\>")) (defvar gretl-block-end-regexp (concat "\\<\\(" (mapconcat 'identity gretl-block-end-keywords "\\|") "\\)\\>")) (defvar gretl-block-begin-or-end-regexp (concat gretl-block-begin-regexp "\\|" gretl-block-end-regexp)) (defvar gretl-block-else-or-end-regexp (concat gretl-block-else-regexp "\\|" gretl-block-end-regexp)) (defvar gretl-block-match-alist '(("loop" . ("endloop")) ("if" . ("else" "elif" "endif")) ("nls" . ("end")) ("mle" . ("end")) ("gmm" . ("end")) ("foreign" . ("end")) ("restrict" . ("end")) ("kalman" . ("end")) ("system" . ("end"))) "Alist with Gretl's matching block keywords. Has Gretl's begin keywords as keys and a list of the matching else or end keywords as associated values.") ; get the position of the last open block (defun gretl-last-open-block-pos (min) (let ((count 0)) (while (not (or (> count 0) (<= (point) min))) (backward-word 1) (setq count (cond ((gretl-at-keyword gretl-block-start-keywords) (+ count 1)) ((and (zerop (string-match "\\(?:e\\(?:l\\(?:if\\|se\\)\\|nd\\(?:if\\|loop\\)?\\)\\)" (current-word))) (not (ess-inside-comment-p)) (not (ess-inside-brackets-p))) (- count 1)) (t count)))) (if (> count 0) (point) nil))) (defun gretl-last-open-block (min) (let ((pos (gretl-last-open-block-pos min))) (and pos (progn (goto-char pos) (+ gretl-basic-offset (current-indentation)))))) ; return indent implied by a special form opening on the previous line, if any (defun gretl-form-indent () (forward-line -1) (end-of-line) (backward-sexp) (if (gretl-at-keyword gretl-block-other-keywords) (+ gretl-basic-offset (current-indentation)) (if (char-equal (char-after (point)) ?\() (progn (backward-word 1) (let ((cur (current-indentation))) (if (gretl-at-keyword gretl-block-start-keywords) (+ gretl-basic-offset cur) nil))) nil))) (defun gretl-indent-line () "Indent current line of gretl code" (interactive) ; (save-excursion (end-of-line) (indent-line-to (or (and (ess-inside-string-p (point-at-bol)) 0) (save-excursion (ignore-errors (gretl-form-indent))) (save-excursion (let ((endtok (progn (beginning-of-line) (forward-to-indentation 0) (gretl-at-keyword gretl-block-end-keywords)))) (ignore-errors (+ (gretl-last-open-block (point-min)) (if endtok (- gretl-basic-offset) 0))))) ;; previous line ends in = (save-excursion (if (and (not (equal (point-min) (line-beginning-position))) (progn (forward-line -1) (end-of-line) (backward-char 1) (equal (char-after (point)) ?=))) (+ gretl-basic-offset (current-indentation)) nil)) ;; take same indentation as previous line (save-excursion (forward-line -1) (current-indentation)) 0)) (when (gretl-at-keyword gretl-block-end-keywords) (forward-word 1))) (defvar gretl-editing-alist '((paragraph-start . (concat "\\s-*$\\|" page-delimiter)) (paragraph-separate . (concat "\\s-*$\\|" page-delimiter)) (paragraph-ignore-fill-prefix . t) (require-final-newline . mode-require-final-newline) (comment-start . "# ") (comment-add . 1) (comment-start-skip . "\\s<+\\s-*") (comment-column . 40) ;;(comment-indent-function . 'S-comment-indent) ;;(ess-comment-indent . 'S-comment-indent) ;;(ess-indent-line . 'S-indent-line) (ess-calculate-indent . 'ess-calculate-indent) (ess-indent-line-function . 'gretl-indent-line) (parse-sexp-ignore-comments . t) (ess-style . ess-default-style) ;; ignored (ess-local-process-name . nil) ;;(ess-keep-dump-files . 'ask) (ess-mode-syntax-table . gretl-syntax-table) ;; (add-log-current-defun-header-regexp . "^.*function[ \t]*\\([^ \t(]*\\)[ \t]*(") (font-lock-defaults . '(gretl-font-lock-defaults)) ) "General options for gretl source files.") (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") ;; (defun gretl-send-string-function (process string visibly) ;; (let ((gretl-process (get-process "gretlcli"))) ;; (process-send-string process (format ess-load-command file))) ;; (defun gretl-send-string-function (process string visibly) ;; (let ((file (concat temporary-file-directory "gretl_eval_region.inp"))) ;; (with-temp-file file ;; (insert string)) ;; (process-send-string process (format ess-load-command file)))) (defun gretl--get-words-from-command (command start-reg end-reg) (with-current-buffer (ess-command command) (goto-char (point-min)) (let ((beg (or (re-search-forward start-reg nil t) (point-min))) (end (progn (goto-char (point-max)) (or (re-search-backward end-reg) (point-max)))) acum) (goto-char beg) (skip-chars-forward "\n") (while (re-search-forward "[^ \t\n]+" end t) (push (match-string-no-properties 0) acum)) acum))) (defun gretl-get-help-topics-function (name) (delete-dups (append gretl-command-words gretl-genr-functions gretl-block-end-keywords gretl-block-other-keywords gretl-block-start-keywords (gretl--get-words-from-command "help\n" "are:" "^For") (gretl--get-words-from-command "help functions\n" "Accessors:" "^Functions") (gretl--get-words-from-command "help functions\n" "^Functions" "^For") ))) ;; (defvar ess-gretl-error-regexp-alist '(gretl-in gretl-at) ;; "List of symbols which are looked up in `compilation-error-regexp-alist-alist'.") ;; (add-to-list 'compilation-error-regexp-alist-alist ;; '(gretl-in "^\\s-*in [^ \t\n]* \\(at \\(.*\\):\\([0-9]+\\)\\)" 2 3 nil 2 1)) ;; (add-to-list 'compilation-error-regexp-alist-alist ;; '(gretl-at "^\\s-*\\(at \\(.*\\):\\([0-9]+\\)\\)" 2 3 nil 2 1)) (defvar gretl-customize-alist '((comint-use-prompt-regexp . t) (inferior-ess-primary-prompt . "\\? ") (inferior-ess-secondary-prompt . "\\ ") (inferior-ess-prompt . "\\? ") (ess-local-customize-alist . 'gretl-customize-alist) (inferior-ess-program . "gretlcli") (inferior-ess-font-lock-defaults . gretl-font-lock-defaults) (ess-get-help-topics-function . 'gretl-get-help-topics-function) (ess-load-command . "open \"%s\"\n") ;; (ess-dump-error-re . "in \\w* at \\(.*\\):[0-9]+") ;; (ess-error-regexp . "\\(^\\s-*at\\s-*\\(?3:.*\\):\\(?2:[0-9]+\\)\\)") ;; (ess-error-regexp-alist . ess-gretl-error-regexp-alist) ;; (inferior-ess-objects-command . inferior-gretl-objects-command) ;; (inferior-ess-search-list-command . "search()\n") ;; inferior-ess-help-command . gretl-help-command) (inferior-ess-help-command . "help %s\n") (ess-language . "gretl") (ess-dialect . "gretl") (ess-suffix . "inp") (ess-dump-filename-template . (replace-regexp-in-string "S$" ess-suffix ; in the one from custom: ess-dump-filename-template-proto)) (ess-mode-syntax-table . gretl-syntax-table) (ess-mode-editing-alist . gretl-editing-alist) (ess-change-sp-regexp . nil );ess-r-change-sp-regexp) (ess-help-sec-regex . ess-help-r-sec-regex) (ess-help-sec-keys-alist . ess-help-r-sec-keys-alist) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-function-pattern . ess-r-function-pattern) (ess-object-name-db-file . "ess-r-namedb.el" ) ;; (ess-imenu-mode-function . nil) (ess-smart-operators . ess-r-smart-operators) (inferior-ess-help-filetype . nil) (inferior-ess-exit-command . "exit\n") ;;harmful for shell-mode's C-a: -- but "necessary" for ESS-help? (inferior-ess-start-file . nil) ;; "~/.ess-R" (inferior-ess-start-args . "") (inferior-ess-language-start . nil) (ess-STERM . "iESS") ) "Variables to customize for Gretl -- set up later than emacs initialization.") ;; (defcustom inferior-gretl-program-name "gretlcli" ;; "*The program to use for running gretl scripts." ;; :type 'string ;; :group 'ess-gretl) ;; (defvar ess-gretl-versions '("gretcli") ;; "List of partial strings for versions of Julia to access within ESS. ;; Each string specifies the start of a filename. If a filename ;; beginning with one of these strings is found on `exec-path', a M-x ;; command for that version of Julia is made available. ") (defcustom inferior-gretl-args "" "String of arguments used when starting gretl. These arguments are currently not passed to other versions of gretl that have been created using the variable `ess-r-versions'." :group 'ess-gretl :type 'string) (defvar gretl-basic-offset 4) ;;;###autoload (defun gretl-mode (&optional proc-name) "Major mode for editing gretl source. See `ess-mode' for more help." (interactive "P") ;; (setq ess-customize-alist gretl-customize-alist) ;;(setq imenu-generic-expression R-imenu-generic-expression) (ess-mode gretl-customize-alist proc-name) ;; for emacs < 24 ;; (add-hook 'comint-dynamic-complete-functions 'ess-complete-object-name nil 'local) ;; for emacs >= 24 ;; (remove-hook 'completion-at-point-functions 'ess-filename-completion 'local) ;; should be first ;; (add-hook 'completion-at-point-functions 'ess-object-completion nil 'local) ;; (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local) (if (fboundp 'ess-add-toolbar) (ess-add-toolbar)) (set (make-local-variable 'end-of-defun-function) 'ess-end-of-function) ;; (local-set-key "\t" 'gretl-indent-line) ;; temp workaround ;; (set (make-local-variable 'indent-line-function) 'gretl-indent-line) ;; (ess-imenu-gretl) (run-hooks 'gretl-mode-hook)) (defvar ess-gretl-post-run-hook nil "Functions run in process buffer after the initialization of Gretl process.") ;;;###autoload (defun gretl (&optional start-args) "Call 'gretl', Optional prefix (C-u) allows to set command line arguments, such as --vsize. This should be OS agnostic. If you have certain command line arguments that should always be passed to gretl, put them in the variable `inferior-gretl-args'." (interactive "P") ;; get settings, notably inferior-ess-r-program-name : ;; (if (null inferior-gretl-program-name) ;; (error "'inferior-gretl-program-name' does not point to 'gretl-release-basic' executable") (setq ess-customize-alist gretl-customize-alist) (ess-write-to-dribble-buffer ;; for debugging only (format "\n(Gretl): ess-dialect=%s, buf=%s" ess-dialect (current-buffer))) (let* ((r-start-args (concat inferior-gretl-args " " ; add space just in case (if start-args (read-string (concat "Starting Args [other than `" inferior-gretl-args "'] ? ")) nil)))) (inferior-ess r-start-args) (set (make-local-variable 'indent-line-function) 'gretl-indent-line) (set (make-local-variable 'gretl-basic-offset) 4) (setq indent-tabs-mode nil) (goto-char (point-max)) ;; (if inferior-ess-language-start ;; (ess-eval-linewise inferior-ess-language-start ;; nil nil nil 'wait-prompt))) (with-ess-process-buffer nil (run-mode-hooks 'ess-gretl-post-run-hook)) )) ;;;; IMENU ;; (defvar gretl-imenu-generic-expression ;; '(("Function (_)" "^\\s-*function\\s-+\\(_[^ \t\n]*\\)" 1) ;; ("Function" "^\\s-*function\\s-+\\([^_][^ \t\n]*\\)" 1) ;; ("Const" "^\\s-*const \\([^ \t\n]*\\)" 1) ;; ("Type" "^\\s-*\\w*type\\w* \\([^ \t\n]*\\)" 1) ;; ("Load" " *\\(load\\)(\\([^ \t\n)]*\\)" 2) ;; ;; ("Classes" "^.*setClass(\\(.*\\)," 1) ;; ;; ("Coercions" "^.*setAs(\\([^,]+,[^,]*\\)," 1) ; show from and to ;; ;; ("Generics" "^.*setGeneric(\\([^,]*\\)," 1) ;; ;; ("Methods" "^.*set\\(Group\\|Replace\\)?Method(\"\\(.+\\)\"," 2) ;; ;; ;;[ ]*\\(signature=\\)?(\\(.*,?\\)*\\)," 1) ;; ;; ;; ;; ;; ;;("Other" "^\\(.+\\)\\s-*<-[ \t\n]*[^\\(function\\|read\\|.*data\.frame\\)]" 1) ;; ;; ("Package" "^.*\\(library\\|require\\)(\\(.*\\)," 2) ;; ;; ("Data" "^\\(.+\\)\\s-*<-[ \t\n]*\\(read\\|.*data\.frame\\).*(" 1))) ;; )) ;; (defun ess-imenu-gretl (&optional arg) ;; "Gretl Language Imenu support for ESS." ;; (interactive) ;; (setq imenu-generic-expression gretl-imenu-generic-expression) ;; (imenu-add-to-menubar "Imenu-gretl")) ;; (defun ess-imenu-gretl (&optional arg) ;; "Gretl Language Imenu support for ESS." ;; (interactive) ;; (setq imenu-generic-expression gretl-imenu-generic-expression) ;; (imenu-add-to-menubar "Imenu-jl")) (provide 'ess-gretl) ;; (provide 'ess-gretl) (provide 'ess-gretl) ;;; ess-gretl.el ends here ess-17.11/lisp/ess-help.el0000444005071500004540000012265713202324174012265 00000000000000;;; ess-help.el --- Support for viewing ESS help files ;; Copyright (C) 1989-1994, 2017 Bates, Kademan, Ritter and Smith ;; Copyright (C) 1997, A.J. Rossini ;; Copyright (C) 1998--2001 A.J. Rossini, Martin Maechler, Kurt Hornik and ;; Richard M. Heiberger . ;; Copyright (C) 2001--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2012 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: David Smith ;; Created: 7 Jan 1994 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for dealing with ESS help files. See README. where ;; is one of `S', `SAS', `Stata'or `XLispStat'. ;;; Code: ; Requires and autoloads (eval-when-compile (require 'tramp) (require 'reporter) (require 'ess-inf) (require 'info)) (require 'ess-mode) ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl)) ; ess-help-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; In this section: ;;;; ;;;; * The function ess-display-help-on-object ;;;; * The major mode ess-help-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun ess--help-get-bogus-buffer-substring (buffer &optional nr-first) "Return non-nil if BUFFER looks like a bogus ESS help buffer. Return the pair (match-beg. match-end) which can be used in error message. NR-FIRST is the number of characters at the start of the buffer to examine when deciding if the buffer if bogus. If nil, the first 150 characters of the buffer are searched." (if (not nr-first) (setq nr-first 150)) (with-current-buffer buffer (let ((PM (point-min)) (case-fold-search t) searching res) (setq res (or ;; evaluate up to first non-nil (or end): (< (- (point-max) PM) 80); buffer less than 80 chars (not (setq searching t)) ;; todo: move to customize-alist (progn (goto-char PM) ;; R: (re-search-forward "Error in help" nr-first t)) (progn (goto-char PM) ;; S-plus 5.1 : (re-search-forward "^cat: .*--" nr-first t)) (progn (goto-char PM) ;; S version 3 ; R : (re-search-forward "no documentation .+" nr-first t)) (progn (goto-char PM) ;; stata (re-search-forward "^help .*not found" nr-first t)) )) (ess-write-to-dribble-buffer (format " |--> %s [searching %s]\n" res searching)) (when res (if searching (buffer-substring (match-beginning 0) (match-end 0)) (buffer-string)))))) (defun ess-help-get-local-help-buffers () (ess-force-buffer-current) (cl-remove-if-not (lambda (buffer) (let* ((pattern (concat "*help[" ess-current-process-name "](")) (name (buffer-name buffer)) (candidate (when (> (length name) (length pattern)) (substring name 0 (length pattern))) )) (when (string= pattern candidate) buffer))) (buffer-list))) (defvar ess-help-type nil "Type of help file, help, index, vingettes etc. Local in ess-help buffers.") (make-variable-buffer-local 'ess-help-type) (defvar ess-help-object nil "Name of the object the help is displayed for. Is name of the package for package index. Local in ess-help buffers.") (make-variable-buffer-local 'ess-help-object) (defun ess-display-help-on-object (object &optional command) "Display documentation for OBJECT in another window. If prefix arg is given, force an update of the cached help topics and query the ESS process for the help file instead of reusing an existing buffer if it exists. Uses the variable `inferior-ess-help-command' for the actual help command. Prompts for the object name based on the cursor location for all cases except the S-Plus GUI. With S-Plus on Windows (both GUI and in an inferior emacs buffer) the GUI help window is used. If COMMAND is suplied, it is used instead of `inferior-ess-help-command'." (interactive (progn (ess-force-buffer-current) (when current-prefix-arg ;update cache if prefix (ess-process-put 'sp-for-help-changed? t)) (list (ess-find-help-file "Help on")))) (if (fboundp ess-display-help-on-object-function) (funcall ess-display-help-on-object-function object command) (let* ((hb-name (concat "*help[" ess-current-process-name "](" (replace-regexp-in-string "^\\?\\|`" "" object) ")*")) (old-hb-p (get-buffer hb-name)) (tbuffer (get-buffer-create hb-name))) (when (or (not old-hb-p) current-prefix-arg (ess--help-get-bogus-buffer-substring old-hb-p)) (ess-with-current-buffer tbuffer (setq ess-help-object object ess-help-type 'help) (ess--flush-help-into-current-buffer object command))) (unless (ess--help-kill-bogus-buffer-maybe tbuffer) (ess--switch-to-help-buffer tbuffer))))) (defun ess-build-help-command (object) (if (fboundp ess-build-help-command-function) (funcall ess-build-help-command-function object) ;; TODO-CLEANUP: Remove the inferior- prefix for consistency (format inferior-ess-help-command object))) (defun ess--flush-help-into-current-buffer (object &optional command dont-ask) (ess-write-to-dribble-buffer (format "(ess-help '%s' start (command: '%s') \n" (buffer-name (current-buffer)) command)) ;; Ask the corresponding ESS process for the help file: (if buffer-read-only (setq buffer-read-only nil)) (delete-region (point-min) (point-max)) (ess-help-mode) (let ((command (if (and command (string-match-p "%s" command)) (format command object) command))) (ess-command (or command (ess-build-help-command object)) (current-buffer))) (ess-help-underline) ;;VS[03-09-2012]: todo: this should not be here: ;; Stata is clean, so we get a big BARF from this. (unless (string= ess-language "STA") (ess-nuke-help-bs)) (goto-char (point-min)) (set-buffer-modified-p 'nil) (setq buffer-read-only t) (setq truncate-lines nil)) (defun ess--help-kill-bogus-buffer-maybe (buffer) "Internal, try to kill bogus buffer with message. Return t if killed." (when ess-help-kill-bogus-buffers (let ((bog-mes (ess--help-get-bogus-buffer-substring buffer))) (when bog-mes ;; The following is giving erroneous messages when help is displayed in the browser ;; (when (< (length bog-mes) 10) ;;no message at all, how to treat this properly? ;; (setq bog-mes (format "No documentation found; %s" bog-mes))) (ess-write-to-dribble-buffer (format "(ess-help: kill bogus buffer %s ..\n" (buffer-name buffer))) (message "%s" (replace-regexp-in-string "\n" "" bog-mes)) ;; (ding) ;; don't ding, in julia a lot of doc strings are very short (kill-buffer buffer))))) (defun ess-display-help-in-browser () "Displaying html help where available, using \\[browse-url]." (interactive) ;; Three ways to find html help, 1) ask sub-process 2) get url/file from subproces ;; 3) call elisp function to get the file path ;; For 2 and 3 call browse-url on the output (let (com-html-help ;1) command for sub-process to trigger ;help, must contain %s for help obj com-get-file-path ;2) command for sub-process to return a ; location for the help page, must ; contain %s for help obj fun-get-file-path ;3) elisp function to return the ;location, gets one argument, help topic not-implemented ) (cond ((string-match "^R" ess-dialect) (setq com-html-help "help('%s', help_type='html')\n")) (t (setq not-implemented t)) ) (if not-implemented (message "Sorry, not implemented for %s " ess-dialect) (if (or (not ess-help-object) (not (eq ess-help-type 'help))) (message "No help topic found") (if com-html-help (ess-command (format com-html-help ess-help-object)) (require 'browse-url) (if com-get-file-path (browse-url (car (ess-get-words-from-vector (format com-get-file-path ess-help-object)))) (when (functionp fun-get-file-path) (browse-url (funcall fun-get-file-path ess-help-object))))))))) (defun ess--button-action (&optional button) "Provide help on object at the beginning of line. It's intended to be used in R-index help pages. Load the package if necessary. It is bound to RET and C-m in R-index pages." (interactive) (let* ((string (button-label button)) (command (when (fboundp ess-build-help-command-function) (funcall ess-build-help-command-function string)))) (ess-display-help-on-object string command))) (defun ess-display-package-index () "Prompt for package name and display its index." (interactive) (let ((object (buffer-name)) (alist ess-local-customize-alist) (pname ess-local-process-name) pack buff all-packs not-implemented ;; Available customization for ess languages/dialects: com-package-for-object ;command to get the package of current help object com-packages ;command to get a list of available packages (REQUIRED) com-package-index ;command to get the package index (REQUIRED) reg-keyword ;regexp used to find keywords for linking in index listing ; only (1st subexpression is used) reg-start ;regexp from where to start searching for keywords in index listing ) (cond ((string-match "^R" ess-dialect) ;; carefully using syntax to be parsed in old R versions (no '::', '_'): (setq com-package-for-object "sub('package:', '', .ess.findFUN('%s'))\n" com-packages ".packages(all.available=TRUE)\n" com-package-index ".ess.help(package='%s', help.type='text')\n" reg-keyword "^\\([-a-zA-Z0-9,._@$]+\\)[^:\n]*$" reg-start "^Index:")) ((string-match "julia" ess-dialect) (setq com-packages "_ess_list_categories()\n" com-package-index "_ess_print_index(\"%s\")\n" reg-keyword "^\\(.*+\\):$*" reg-start ":" )) (t (error "Not implemented for %s " ess-dialect))) (when (and com-package-for-object ess-help-object (eq ess-help-type 'help)) (setq pack (car (ess-get-words-from-vector (format com-package-for-object ess-help-object))))) (setq all-packs (ess-get-words-from-vector com-packages)) (unless pack ;try symbol at point (setq pack (car (member (ess-read-object-name-default) all-packs)))) (setq pack (ess-completing-read "Index of" all-packs nil nil nil nil pack)) ;; (setq buff (get-buffer-create (format "*help[%s](index:%s)*" ess-dialect pack))) (ess--display-indexed-help-page (format com-package-index pack) reg-keyword (format "*help[%s](index:%s)*" ess-dialect pack) 'index nil nil reg-start pack) )) (defalias 'ess-display-index 'ess-display-package-index) (make-obsolete 'ess-display-index 'ess-display-package-index "ESS[12.09]") (defun ess--display-indexed-help-page (command item-regexp title help-type &optional action help-echo reg-start help-object) "Internal function to display help pages with linked actions ;; COMMAND to produce the indexed help page ;; ITEM-REGEXP -- first subexpression is highlighted ;; TITLE of the help page ;; HELP-TYPE to be stored in `ess-help-type' local variable ;; ACTION is a function with no argument (default is `ess--button-action') ;; HELP-ECHO ;; REG-START gives the start location from where to search linkifying" (interactive) (let ((object (buffer-name)) (alist ess-local-customize-alist) (pname ess-local-process-name) (buff (get-buffer-create title))) (with-current-buffer buff (setq ess-help-object help-object) (ess-setq-vars-local (eval alist)) (setq ess-help-sec-regex "\\(^\\s-.*\n\\)\\|\\(^\n\\)" ess-local-process-name pname) (setq buffer-read-only nil) (delete-region (point-min) (point-max)) (ess-help-mode) (ess-command command buff) (ess-help-underline) (set-buffer-modified-p 'nil) (goto-char (point-min)) (when reg-start ;; go to the beginning of listing (re-search-forward reg-start nil t)) (when item-regexp ;;linkify the buffer (save-excursion (while (re-search-forward item-regexp nil t) (make-text-button (match-beginning 1) (match-end 1) 'mouse-face 'highlight 'action (or action #'ess--button-action) 'help-object (buffer-substring-no-properties (match-beginning 1) (match-end 1)) 'follow-link t 'help-echo (or help-echo "help on object"))))) ;; (save-excursion ;; why R places all these spaces? ;; (goto-char (point-min)) ;; (while (re-search-forward " \\{10,\\} *" nil t) ;; (replace-match "\t\t\t"))) (setq buffer-read-only t) (setq ess-help-type help-type) (setq truncate-lines nil)) (unless (ess--help-kill-bogus-buffer-maybe buff) (ess--switch-to-help-buffer buff)))) (defun ess-display-help-apropos (&optional pattern) "Create an ess-apropos buffer with a *linked* list of apropos topics." (interactive "sPattern: ") (let (com regexp) (cond ((equal ess-dialect "R") (setq com "help.search('%s')\n" regexp "^\\([^ \t\n:]+::[^ \t\n:]+\\)[ \t\n]+")) ((equal ess-dialect "julia") (setq com "apropos(\"%s\")\n" regexp "^\\(\\(\\w\\|\\s_\\)+\\)(")) ((equal ess-dialect "stata") (setq com "hsearch %s\n" regexp "^[ ]*[0-9]+\\.[ ]+\\(.+\\)$")) (t (error "Not implemented for dialect %s" ess-dialect))) (ess--display-indexed-help-page (format com pattern) regexp (format "*ess-apropos[%s](%s)*" ess-current-process-name pattern) 'appropos))) (defun ess-display-demos () "Create an ess-demos buffer with a *linked* list of available demos." (interactive) (let (com regexp) (cond ((equal ess-dialect "R") (setq com "demo()\n" regexp "^\\([^ \n:]+\\) +")) (t (error "Not implemented for dialect %s" ess-dialect))) (ess--display-indexed-help-page com regexp (format "*ess-demos[%s]*" ess-current-process-name) 'demos #'ess--action-demo))) (defun ess--action-demo (&optional button) "Provide help on object at the beginning of line. It's intended to be used in R-index help pages. Load the package if necessary. It is bound to RET and C-m in R-index pages." (interactive) (let* ((string (button-label button)) (command (cond ((equal ess-dialect "R") (format "demo('%s')\n" string)) (t (error "Not implemented for dialect %s" ess-dialect))))) (ess-eval-linewise command) (ess-switch-to-end-of-ESS))) (defun ess-display-vignettes (&optional all) "Display vignettes if available for the current dialect. With (prefix) ALL non-nil, use `vignette(*, all=TRUE)`, i.e., from all installed packages, which can be *very* slow." (interactive "P") (cond ((equal ess-dialect "R") (ess-R-display-vignettes all)) (t (message "Sorry, not implemented for %s" ess-dialect)))) (defun ess-R-display-vignettes (&optional all) "Display R vignettes in ess-help-like buffer.. With (prefix) ALL non-nil, use `vignette(*, all=TRUE)`, i.e., from all installed packages, which can be *very* slow." (interactive "P") (let* ((vslist (with-current-buffer (ess-command (format ".ess_vignettes(%s)\n" (if all "TRUE" ""))) (goto-char (point-min)) (when (re-search-forward "(list" nil t) (goto-char (match-beginning 0)) (ignore-errors (eval (read (current-buffer))))))) (proc-name ess-current-process-name) (alist ess-local-customize-alist) (remote (file-remote-p default-directory)) (buff (get-buffer-create (format "*[%s]vignettes*" ess-dialect)))) (with-current-buffer buff (setq buffer-read-only nil) (delete-region (point-min) (point-max)) (ess-setq-vars-local (eval alist)) (setq ess-help-sec-regex "^\\w+:$" ess-help-type 'vignettes ess-local-process-name proc-name) (ess-help-mode) (set-buffer-modified-p 'nil) (goto-char (point-min)) (dolist (el vslist) (let ((pack (car el))) (insert (format "\n\n%s:\n\n" (propertize pack 'face 'underline))) (dolist (el2 (cdr el)) (let ((path (if remote (with-parsed-tramp-file-name default-directory nil (tramp-make-tramp-file-name method user host (nth 1 el2))) (nth 1 el2)))) (insert-text-button "Pdf" 'mouse-face 'highlight 'action (if remote #'ess--action-open-in-emacs #'ess--action-R-open-vignette) 'follow-link t 'vignette (file-name-sans-extension (nth 2 el2)) 'package pack 'help-echo (concat path "/doc/" (nth 2 el2))) (insert " ") (insert-text-button "Rnw" 'mouse-face 'highlight 'action #'ess--action-open-in-emacs 'follow-link t 'help-echo (concat path "/doc/" (nth 3 el2))) (insert " ") (insert-text-button "R" 'mouse-face 'highlight 'action #'ess--action-open-in-emacs 'follow-link t 'help-echo (concat path "/doc/" (nth 4 el2))) (insert (format "\t%s\n" (nth 0 el2))) )))) (goto-char (point-min)) (insert (propertize "\t\t**** Vignettes ****\n" 'face 'bold-italic)) (unless (eobp) (delete-char 1)) (setq buffer-read-only t)) (ess--switch-to-help-buffer buff) )) (defun ess--action-open-in-emacs (pos) (display-buffer (find-file-noselect (get-text-property pos 'help-echo)))) (defun ess--action-R-open-vignette (pos) (ess-command (format "vignette('%s', package='%s')\n" (get-text-property pos 'vignette) (get-text-property pos 'package)))) (defalias 'ess-help-quit 'quit-window) (make-obsolete 'ess-help-quit 'quit-window "16.04") (defun ess--find-displayed-help-window () (catch 'win (dolist (f (frame-list)) (when (frame-visible-p f) (dolist (w (window-list f)) (when (eq (buffer-local-value 'major-mode (window-buffer w)) 'ess-help-mode) (throw 'win w))))))) (defun ess--switch-to-help-buffer (buff &optional curr-major-mode) "Switch to help buffer and take into account `ess-help-own-frame'. For internal use. Used in `ess-display-help-on-object', `ess-display-package-index', and `ess-display-vignettes'. CURR-MAJOR-MODE default to current major mode." (setq curr-major-mode (or curr-major-mode major-mode)) (let ((special-display-regexps (if ess-help-own-frame '(".") nil)) (special-display-frame-alist ess-help-frame-alist) (special-display-function (if (eq ess-help-own-frame 'one) 'ess-help-own-frame special-display-function)) (help-win (or (and (eq curr-major-mode 'ess-help-mode) (selected-window)) (and ess-help-reuse-window (ess--find-displayed-help-window))))) (cond (help-win (select-window help-win 'norecord) ;; (switch-to-buffer buff nil 'force) <- 3rd argument appeared in emacs 24 (set-window-buffer help-win buff)) (ess-help-pop-to-buffer (pop-to-buffer buff)) (t (ess-display-temp-buffer buff))))) (defvar ess-help-frame nil "Stores the frame used for displaying R help buffers.") (defun ess-help-own-frame (buffer &rest ignore) "Put all ESS help buffers into `ess-help-frame'." ;; SJE: Code adapted from Kevin Rodgers. (if (frame-live-p ess-help-frame) (progn (or (frame-visible-p ess-help-frame) (make-frame-visible ess-help-frame)) (raise-frame ess-help-frame) (select-frame ess-help-frame) (switch-to-buffer buffer) (selected-window)) ;; else (let ((window (special-display-popup-frame buffer))) (set-window-dedicated-p window nil) (setq ess-help-frame (window-frame window)) window))) (defun ess-help-web-search () "Search the web for documentation" (interactive) (ess-execute-dialect-specific ess-help-web-search-command "Search for: ")) (defun ess-manual-lookup () "Search manual for topic" (interactive) (ess-execute-dialect-specific ess-manual-lookup-command )) (defun ess-reference-lookup () "Search manual for topic" (interactive) (ess-execute-dialect-specific ess-reference-lookup-command)) (defvar ess-help-sec-map nil "Sub-keymap for ESS help mode.") ;; this breaks "s ?" rather than to fix any (unbroken !) thing: ;; (make-variable-buffer-local 'ess-help-sec-map) (defvar ess-doc-map (let (ess-doc-map) (define-prefix-command 'ess-doc-map) (define-key ess-doc-map "\C-e" 'ess-describe-object-at-point) (define-key ess-doc-map "e" 'ess-describe-object-at-point) (define-key ess-doc-map "\C-d" 'ess-display-help-on-object) (define-key ess-doc-map "d" 'ess-display-help-on-object) (define-key ess-doc-map "\C-i" 'ess-display-package-index) (define-key ess-doc-map "i" 'ess-display-package-index) (define-key ess-doc-map "\C-a" 'ess-display-help-apropos) (define-key ess-doc-map "a" 'ess-display-help-apropos) (define-key ess-doc-map "\C-v" 'ess-display-vignettes) (define-key ess-doc-map "v" 'ess-display-vignettes) (define-key ess-doc-map "\C-o" 'ess-display-demos) (define-key ess-doc-map "o" 'ess-display-demos) (define-key ess-doc-map "\C-w" 'ess-help-web-search) (define-key ess-doc-map "w" 'ess-help-web-search) (define-key ess-doc-map "\C-m" 'ess-manual-lookup) (define-key ess-doc-map "m" 'ess-manual-lookup) (define-key ess-doc-map "\C-r" 'ess-reference-lookup) (define-key ess-doc-map "r" 'ess-reference-lookup) ess-doc-map ) "ESS documentation map.") (defvar ess-help-mode-map (let ((map (make-keymap))); Full keymap, in order to (suppress-keymap map) ; suppress all usual "printing" characters (when (boundp 'special-mode-map) (set-keymap-parent map (make-composed-keymap button-buffer-map special-mode-map))) (define-key map "q" 'quit-window) (define-key map "\C-m" 'next-line) ;; (define-key map "s" ess-help-sec-map) (define-key map "h" 'ess-display-help-on-object) (define-key map "w" 'ess-display-help-in-browser) (define-key map "i" 'ess-display-package-index) (define-key map "a" 'ess-display-help-apropos) (define-key map "v" 'ess-display-vignettes) ;; TODO: `electric mouse-2' ;; (define-key map [mouse-2] 'ess-display-help-on-object) (define-key map "l" 'ess-eval-line-and-step) (define-key map "r" 'ess-eval-region-and-go) (define-key map "f" 'ess-eval-function-or-paragraph-and-step) (define-key map "n" 'ess-skip-to-next-section) (define-key map "p" 'ess-skip-to-previous-section) (define-key map "/" 'isearch-forward) (define-key map "x" 'ess-kill-buffer-and-go) (define-key map "k" 'kill-this-buffer) (define-key map "?" 'ess-describe-help-mode) ;;-- those should be "inherited" from ess-mode-map ( ./ess-mode.el ) (define-key map "\C-ch" 'ess-handy-commands) (define-key map "\C-c\C-s" 'ess-switch-process) (define-key map "\C-c\C-r" 'ess-eval-region) (define-key map "\C-c\M-r" 'ess-eval-region-and-go) (define-key map "\C-c\C-f" 'ess-eval-function) (define-key map "\M-\C-x" 'ess-eval-function) (define-key map "\C-c\M-f" 'ess-eval-function-and-go) (define-key map "\C-c\C-j" 'ess-eval-line) (define-key map "\C-c\C-n" 'ess-eval-line-and-step) (define-key map "\C-c\C-c" 'ess-eval-region-or-function-or-paragraph-and-step) (define-key map [(control return)] 'ess-eval-region-or-line-and-step) (define-key map "\C-c\M-j" 'ess-eval-line-and-go) (define-key map "\M-\C-a" 'ess-goto-beginning-of-function-or-para) (define-key map "\M-\C-e" 'ess-goto-end-of-function-or-para) (define-key map "\C-c\C-y" 'ess-switch-to-ESS) (define-key map "\C-c\C-z" 'ess-switch-to-end-of-ESS) (define-key map "\C-c\C-l" 'ess-load-file) (define-key map "\C-c\M-l" 'ess-load-file); alias, as in 'iESS' where C-c C-l is comint-list-* (define-key map "\C-c\C-v" 'ess-display-help-on-object) (define-key map "\C-c\C-k" 'ess-request-a-process) (define-key map "\C-c\C-d" 'ess-doc-map) (define-key map "\C-c\C-e" 'ess-extra-map) (define-key map "\C-c\C-t" 'ess-dev-map) map) "Keymap for ESS help mode.") ;; One reason for the following menu is to the user about key strokes (defvar ess-help-mode-menu (list "ESS-help" ["Search Forward" isearch-forward t] ["Next Section" ess-skip-to-next-section t] ["Previous Section" ess-skip-to-previous-section t] ["Help on Section Skipping" ess-describe-sec-map t] ["Beginning of Buffer" beginning-of-buffer t] ["End of Buffer" end-of-buffer t] "-" ["Help on ..." ess-display-help-on-object t] ["Apropos of ..." ess-display-help-apropos t] ["Index of ..." ess-display-package-index t] ["Vignettes" ess-display-vignettes t] ["Open in Browser" ess-display-help-in-browser t] "-" ["Eval Line" ess-eval-line-and-step t] ["Eval Paragraph & step" ess-eval-paragraph-and-step t] ["Eval Region & Go" ess-eval-region-and-go t] ["Switch to ESS Process" ess-switch-to-ESS t] ["Switch to End of ESS Proc." ess-switch-to-end-of-ESS t] ["Switch _the_ Process" ess-switch-process t] "-" ["Kill Buffer" kill-this-buffer t] ["Kill Buffer & Go" ess-kill-buffer-and-go t] "-" ["Handy commands" ess-handy-commands t] ["Describe ESS-help Mode" ess-describe-help-mode t] ) "Menu used in ess-help mode.") (defun ess-help-mode () ;;; Largely ripped from more-mode.el, ;;; originally by Wolfgang Rupprecht wolfgang@mgm.mit.edu "Mode for viewing ESS help files. Use SPC and DEL to page back and forth through the file. Use `n' and `p' to move to next and previous section, `s' to jump to a particular section; `s ?' for help. Use `q' to return to your ESS session; `x' to kill this buffer first. The usual commands for evaluating ESS source are available. Other keybindings are as follows: \\{ess-help-mode-map}" (interactive) (setq major-mode 'ess-help-mode) (setq mode-name "ESS Help") (use-local-map ess-help-mode-map) ;;; Keep out of the code. (make-local-variable 'indent-tabs-mode) (setq indent-tabs-mode nil) (if ess-mode-syntax-table ;;set in advance by ess-setq-local (set-syntax-table ess-mode-syntax-table)) (require 'easymenu) (easy-menu-define ess-help-mode-menu-map ess-help-mode-map "Menu keymap for ess-help mode." ess-help-mode-menu) (easy-menu-add ess-help-mode-menu-map ess-help-mode-map) ;; Add the keys for navigating among sections; this is done ;; dynamically since different languages (e.g. S vs R) have different ;; section headings. (setq ess-help-sec-map (make-sparse-keymap)) (setq-local show-trailing-whitespace nil) (dolist (pair ess-help-sec-keys-alist) (define-key ess-help-sec-map (char-to-string (car pair)) 'ess-skip-to-help-section)) (define-key ess-help-sec-map "?" 'ess-describe-sec-map) (define-key ess-help-sec-map ">" 'end-of-buffer) (define-key ess-help-sec-map "<" 'beginning-of-buffer) (define-key ess-help-mode-map "s" ess-help-sec-map) (run-hooks 'ess-help-mode-hook)) ;;*;; User commands defined in ESS help mode (defun ess-skip-to-help-section nil "Jump to a section heading of a help buffer. The section selected is determined by the command letter used to invoke the command, as indicated by `ess-help-sec-keys-alist'. Use \\[ess-describe-sec-map] to see which keystrokes find which sections." (interactive) (let ((old-point (point)) (case-fold-search nil)) (goto-char (point-min)) (let ((the-sec (cdr (assoc last-command-event ess-help-sec-keys-alist)))) (if (not the-sec) (error "Invalid section key: %c" last-command-event) (if (re-search-forward (concat "^" the-sec) nil t) (recenter) (message "No %s section in this help. Sorry." the-sec) (goto-char old-point)))))) (defun ess-skip-to-next-section nil "Jump to next section in ESS help buffer." (interactive) (let ((case-fold-search nil)) (if (re-search-forward ess-help-sec-regex nil 'no-error) nil (message "No more sections.")))) (defun ess-skip-to-previous-section nil "Jump to previous section in ESS help buffer." (interactive) (let ((case-fold-search nil)) (if (re-search-backward ess-help-sec-regex nil 'no-error) nil (message "No previous section.")))) (defun ess-describe-help-mode nil "Display help for `ess-mode'." (interactive) (describe-function 'ess-help-mode)) (defun ess-kill-buffer-and-go nil "Kill the current buffer and switch back to the ESS process." (interactive) (kill-buffer (current-buffer)) (when (and ess-current-process-name (get-process ess-current-process-name)) (ess-switch-to-ESS nil))) (defun ess-describe-sec-map nil "Display help for the `s' key." (interactive) (let ((keys-alist ess-help-sec-keys-alist)) (describe-function 'ess-skip-to-help-section) (with-current-buffer "*Help*" (setq buffer-read-only nil) (goto-char (point-max)) (insert "\n\nCurrently defined keys are: Keystroke Section --------- -------\n") (dolist (cs keys-alist) (insert " " (car cs) " " (cdr cs) "\n")) (insert "\nFull list of key definitions:\n" (substitute-command-keys "\\{ess-help-sec-map}"))))) (defun ess-helpobjs-at-point--read-obj () (let* ((obj (ess-read-object-name-default))) ;; Exclude numbers (unless (and obj (not (string-match "[[:alpha:]]" obj))) obj))) (defun ess-unqualify-symbol (object) (if (string-match "^[[:alnum:].]+::?" object) (substring object (match-end 0)) object)) (defun ess-helpobjs-at-point (slist) ;; Return a list (def obj fun) where OBJ is a name at point, FUN - name of ;; the function call point is in. DEF is either OBJ or FUN (in that order) ;; which has a a help file, i.e. it is a member of slist (string-list). nil ;; otherwise (let* ((obj (ess-helpobjs-at-point--read-obj)) (unqualified-obj (and obj (ess-unqualify-symbol obj))) ;; FIXME: probably should use syntactic logic here (fun (ignore-errors (save-excursion (save-restriction (narrow-to-region (max (point-min) (- (point) 1000)) (point-max)) (backward-up-list 1) (backward-char 1) (ess-read-object-name-default)))))) (list (or (car (member obj slist)) (when (member unqualified-obj slist) obj) (car (member fun slist))) obj fun))) (defun ess-find-help-file (p-string) "Find help, prompting for P-STRING. Note that we can't search SAS, Stata or XLispStat for additional information." (ess-make-buffer-current) (cond ((fboundp ess-find-help-file-function) (funcall ess-find-help-file-function p-string)) ;; Fixme: Are `ess-find-help-file-function' and ;; `ess-get-help-topics-function' redundant? ((fboundp ess-get-help-topics-function) (let* ((help-files-list (funcall ess-get-help-topics-function ess-current-process-name)) (hlpobjs (ess-helpobjs-at-point help-files-list))) (ess-completing-read p-string (append (delq nil hlpobjs) help-files-list) nil nil nil nil (car hlpobjs)))) (t (read-string (format "%s: " p-string))))) ;;*;; Utility functions (defun ess-get-help-files-list () "Return a list of files which have help available." (apply 'nconc (mapcar (lambda (str) (let ((dirname (concat str "/.Help"))) (and (file-directory-p dirname) (directory-files dirname)))) (ess-search-list)))) (defun ess-get-help-aliases-list () "Return a list of aliases which have help available." (message "Retrieving RDS aliases...") ;; ess-command locks display, make sure the above message is visible (redisplay t) (ess-write-to-dribble-buffer "Processing RDS files ...\n") (prog1 (ess-get-words-from-vector ".ess.getHelpAliases()\n") (message "Retrieving RDS aliases...done"))) (defun ess-nuke-help-bs () "Remove ASCII underlining and overstriking performed by ^H codes." ;; This function is a modification of nuke-nroff-bs in man.el from the ;; standard emacs 18 lisp library. ;; Nuke underlining and overstriking (only by the same letter) (goto-char (point-min)) (while (search-forward "\b" nil t) (let* ((preceding (char-after (- (point) 2))) (following (following-char))) (cond ((= preceding following) ;; x\bx (delete-char -2)) ((= preceding ?\_) ;; _\b (delete-char -2)) ((= following ?\_) ;; \b_ (delete-region (1- (point)) (1+ (point))))))) (goto-char (point-min)) (let ((case-fold-search nil)); 'URL' != 'url' ('libcurl: ' on ?capabilities) (while (re-search-forward "\\bURL: " nil t); test with ?rtags ;; quick fix for C-x f confusion (getting into tramp) (delete-region (match-beginning 0) (match-end 0)))) ;; Crunch blank lines (goto-char (point-min)) (while (re-search-forward "\n\n\n\n*" nil t) (replace-match "\n\n")) ;; Nuke blanks lines at start. (goto-char (point-min)) (skip-chars-forward "\n") (delete-region (point-min) (point))) (defun ess-help-underline () "Replace _^H codes with underline face." (save-excursion (goto-char (point-min)) (while (search-forward "_" nil t) (backward-delete-char 2) (put-text-property (point) (1+ (point)) 'face 'underline)))) ;;*;; Link to Info (defun ess-goto-info (node) "Display node NODE from ess-mode info." (require 'info) (split-window) ;;(other-window 1) (Info-goto-node (concat "(ess)" node))) ;; describe object at point (defvar ess-describe-object-at-point-commands nil "Commands cycled by `ess-describe-object-at-point'. Dialect specific.") (make-variable-buffer-local 'ess-describe-at-point-commands) (defvar ess--descr-o-a-p-commands nil) (defun ess-describe-object-at-point () "Get info for object at point, and display it in an electric buffer or tooltip. If region is active use it instead of the object at point. This is an electric command (`ess--execute-electric-command'), which means that you can use the last key to cycle through the action set (in this case `C-e'). After invocation of this command all standard emacs commands, except those containing 'window' in their names, remove the electric *ess-describe* buffer. Use `other-window' to switch to *ess-describe* window. Customize `ess-describe-at-point-method' if you wan to display the description in a tooltip. See also `ess-r-describe-object-at-point-commands' (and similar option for other dialects)." (interactive) (if (not ess-describe-object-at-point-commands) (message "Not implemented for dialect %s" ess-dialect) (ess-force-buffer-current) (let ((map (make-sparse-keymap)) (objname (or (and (use-region-p) (buffer-substring-no-properties (point) (mark))) (ess-symbol-at-point))) bs ess--descr-o-a-p-commands) ;; used in ess--describe-object-at-point (unless objname (error "No object at point ")) (define-key map (vector last-command-event) 'ess--describe-object-at-point) ;; todo: put digits into the map (let* ((inhibit-quit t) ;; C-g removes the buffer (buf (ess--execute-electric-command map (format "Press %s to cycle" (single-key-description last-command-event)) nil nil objname)) ;; read full command (keys (read-key-sequence-vector "")) (command (and keys (key-binding keys)))) (when (and (commandp command) (bufferp buf) (or (not (symbolp command)) ;; kill on lambdas (not (string-match "window" (symbol-name command))))) (kill-buffer buf)) ;; bury does not work here :( (emacs bug?) (setq unread-command-events (append keys unread-command-events))) ))) (defun ess--describe-object-at-point (ev objname) (setq ess--descr-o-a-p-commands (or ess--descr-o-a-p-commands (symbol-value ess-describe-object-at-point-commands))) (let* ((com (format (car (pop ess--descr-o-a-p-commands)) objname)) (buf (get-buffer-create "*ess-describe*")) pos) (unless (eq ess-describe-at-point-method 'tooltip) ;; can take some time for the command to execute (display-buffer buf)) (sit-for .01) (ess-command (concat com "\n") buf) ;; erases buf (with-current-buffer buf (goto-char (point-min)) (insert (propertize (format "%s:\n\n" com) 'face 'font-lock-string-face)) (forward-line -1) (setq pos (point)) ;; set the keys that we are used to in help mode (special-mode) (local-set-key "k" 'kill-this-buffer)) (if (eq ess-describe-at-point-method 'tooltip) (ess-tooltip-show-at-point (with-current-buffer buf (buffer-string)) 0 30) (display-buffer buf) (set-window-point (get-buffer-window buf) pos) ;; don't move window point buf))) ; Bug Reporting (defun ess-submit-bug-report () "Submit a bug report on the ess-mode package." (interactive) (require 'ess-mode) (require 'reporter) (let ((reporter-prompt-for-summary-p 't)) (reporter-submit-bug-report "ess-bugs@r-project.org" (concat "ess-mode " (ess-version-string)) (list 'ess-language 'ess-dialect 'ess-ask-for-ess-directory 'ess-ask-about-transfile 'ess-directory 'ess-keep-dump-files 'ess-source-directory 'ess-use-ido 'ess-use-eldoc 'ess-use-tracebug 'ess-use-auto-complete 'ess-use-company 'ess-eval-visibly-p 'ess-can-eval-in-background 'ess-local-process-name) nil (lambda () ;;(goto-char (point-max)) (rfc822-goto-eoh) (forward-line 1) (insert "\n\n-------------------------------------------------------\n") (insert "This bug report will be sent to the ESS bugs email list\n") (insert "Press C-c C-c when you are ready to send your message.\n") (insert "-------------------------------------------------------\n\n") (insert (with-current-buffer "*ESS*" (goto-char (point-max)) (forward-line -100) (buffer-substring-no-properties (point) (point-max)))) )))) ;;; Provide (provide 'ess-help) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-help.el ends here ess-17.11/lisp/ess-inf.el0000444005071500004540000041576713202324174012120 00000000000000;;; ess-inf.el --- Support for running S as an inferior Emacs process ;; Copyright (C) 1989-1994 Bates, Kademan, Ritter and Smith ;; Copyright (C) 1997-1999 A.J. Rossini , ;; Martin Maechler . ;; Copyright (C) 2000--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2012 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: David Smith ;; Created: 7 Jan 1994 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for handling running ESS processes. ;;; Code: ; Requires and autoloads ;; Silence byte-compiler (require 'ess-generics) (require 'ess-utils) (require 'tramp) (require 'newcomment nil t) (require 'comint) (require 'overlay) (require 'compile) (require 'format-spec) (require 'ess-tracebug) ;;*;; Process handling ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; In this section: ;;; ;;; * User commands for starting an ESS process ;;; * Functions called at startup ;;; * Process handling code ;;; * Multiple process implementation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;*;; Starting a process (defun ess-proc-name (n name) "Return name of process N, as a string, with NAME prepended. If ess-plain-first-buffername, then initial process is number-free." (concat name (if (not (and ess-plain-first-buffername (= n 1))) ; if not both first and plain-first add number (concat ":" (number-to-string n))))) (defun inferior-ess (&optional ess-start-args customize-alist no-wait) "Start inferior ESS process. Without a prefix argument, starts a new ESS process, or switches to the ESS process associated with the current buffer. With a prefix, starts the process with those args. The current buffer is used if it is an `inferior-ess-mode' or `ess-transcript-mode' buffer. If `ess-ask-about-transfile' is non-nil, you will be asked for a transcript file to use. If there is no transcript file, the buffer name will be like *R* or *R2*, determined by `ess-gen-proc-buffer-name-function'. Takes the program name from the variable `inferior-ess-program'. An initialization file (dumped into the process) is specified by `inferior-ess-start-file', and `inferior-ess-start-args' is used to accompany the call for `inferior-ess-program'. When creating a new process, the process buffer replaces the current window if `inferior-ess-same-window' is non-nil. Alternatively, it can appear in its own frame if `inferior-ess-own-frame' is non-nil. \(Type \\[describe-mode] in the process buffer for a list of commands.)" ;; Use the current buffer if it is in inferior-ess-mode or ess-trans-mode ;; If not, maybe ask about starting directory and/or transcript file. ;; If no transfile, use buffer *S* ;; ;; This function is primarily used to figure out the Process and ;; buffer names to use for inferior-ess. ;; Once, long ago, it was used for switching buffers, but we don't ;; do that any more (at least not from here). (interactive) (let* ((ess-customize-alist (or customize-alist ess-customize-alist)) (temp-ess-dialect (eval (cdr (assoc 'ess-dialect ess-customize-alist)))) (temp-ess-lang (eval (cdr (assoc 'ess-language ess-customize-alist))))) (run-hooks 'ess-pre-run-hook) (ess-write-to-dribble-buffer (format "(inf-ess 1): lang=%s, dialect=%s, tmp-dialect=%s, buf=%s\n" ess-language ess-dialect temp-ess-dialect (current-buffer))) (let* ((process-environment process-environment) ;; Use temp-ess-dialect if not R, R program name otherwise (temp-dialect (if ess-use-inferior-program-name-in-buffer-name ;VS[23-02-2013]: fixme: this should not be here (if (string-equal temp-ess-dialect "R") inferior-ess-r-program-name temp-ess-dialect) temp-ess-dialect)) (temp-lang temp-ess-lang) ;; Find the next non-existent process N (*R:N*) (procname (let ((ntry 1)) (while (get-process (ess-proc-name ntry temp-dialect)) (setq ntry (1+ ntry))) (ess-proc-name ntry temp-dialect))) (buf-name-str (funcall ess-gen-proc-buffer-name-function procname)) startdir buf method) (ess-write-to-dribble-buffer (format "(inf-ess 1.1): procname=%s temp-dialect=%s, buf-name=%s \n" procname temp-dialect buf-name-str)) (cond ;; 1) try to use current buffer, if inferior-ess-mode but no process ((and (not (comint-check-proc (current-buffer))) (eq major-mode 'inferior-ess-mode)) (setq startdir (inferior-ess--maybe-prompt-startup-directory procname temp-dialect)) (setq buf (current-buffer)) ;; don't change existing buffer name in this case; It is very ;; commong to restart the process in the same buffer. (setq buf-name-str (buffer-name)) (setq method 1)) ;; 2) Take the *R:N* buffer if already exists (and contains dead proc!) ;; fixme: buffer name might have been changed, iterate over all ;; inferior-ess buffers ((get-buffer buf-name-str) (setq buf (get-buffer buf-name-str)) (setq method 2)) ;; 3) Pick up a transcript file or create a new buffer (t (setq startdir (inferior-ess--maybe-prompt-startup-directory procname temp-dialect)) (setq buf (if ess-ask-about-transfile (let ((transfilename (read-file-name "Use transcript file (default none):" startdir ""))) (if (string= transfilename "") (get-buffer-create buf-name-str) (find-file-noselect (expand-file-name transfilename)))) (get-buffer-create buf-name-str))) (setq method 3))) (ess-write-to-dribble-buffer (format "(inf-ess 2.0) Method #%d start=%s buf=%s\n" method startdir buf)) ;; Now that we have the buffer, set buffer-local variables. (set-buffer buf) (ess-setq-vars-local ess-customize-alist) (ess-write-to-dribble-buffer (format "(inf-ess 2.1): ess-language=%s, ess-dialect=%s buf=%s \n" ess-language ess-dialect (current-buffer))) (when startdir (setq default-directory startdir)) (let* ((ess-directory (or startdir ess-directory)) (infargs (or ess-start-args inferior-ess-start-args)) (special-display-regexps nil) (special-display-frame-alist inferior-ess-frame-alist) (proc (get-process procname))) (if inferior-ess-own-frame (setq special-display-regexps '("."))) ;; If ESS process NAME is running, switch to it (if (and proc (comint-check-proc (process-buffer proc))) (progn ;; fixme: when does this happen? -> log: (ess-write-to-dribble-buffer (format "(inf-ess ..): popping to proc\n")) (pop-to-buffer (process-buffer proc))) ;; Otherwise, crank up a new process (let* ((symbol-string (concat "inferior-" inferior-ess-program "-args")) (switches-symbol (intern-soft symbol-string)) (switches (if (and switches-symbol (boundp switches-symbol)) (symbol-value switches-symbol)))) (set-buffer buf) (inferior-ess-mode) (ess-write-to-dribble-buffer (format "(inf-ess 3.0): prog=%s, start-args=%s, echoes=%s\n" inferior-ess-program infargs comint-process-echoes)) (setq ess-local-process-name procname) (goto-char (point-max)) ;; load past history ;; Set up history file (if ess-history-file (if (eq t ess-history-file) (set (make-local-variable 'ess-history-file) (concat "." ess-dialect "history")) ;; otherwise must be a string "..." (unless (stringp ess-history-file) (error "`ess-history-file' must be nil, t, or a string")))) (when ess-history-file (setq comint-input-ring-file-name (expand-file-name ess-history-file (or ess-history-directory ess-directory))) (comint-read-input-ring)) ;; create and run process. (set-buffer (if switches (inferior-ess-make-comint buf-name-str procname infargs switches) (inferior-ess-make-comint buf-name-str procname infargs))) ;; Set the process sentinel to save the history (set-process-sentinel (get-process procname) 'ess-process-sentinel) ;; Add this process to ess-process-name-list, if needed (let ((conselt (assoc procname ess-process-name-list))) (if conselt nil (setq ess-process-name-list (cons (cons procname nil) ess-process-name-list)))) (ess-make-buffer-current) (goto-char (point-max)) (setq ess-sl-modtime-alist nil) ;; Add the process filter to catch certain output. (set-process-filter (get-process procname) 'inferior-ess-output-filter) ;; (inferior-ess-wait-for-prompt) (inferior-ess-mark-as-busy (get-process procname)) (process-send-string (get-process procname) "\n") ;; to be sure we catch the prompt if user comp is super-duper fast. (unless no-wait (ess-write-to-dribble-buffer "(inferior-ess: waiting for process to start (before hook)\n") (ess-wait-for-process (get-process procname) nil 0.01)) ;; arguments cache (ess-process-put 'funargs-cache (make-hash-table :test 'equal)) (ess-process-put 'funargs-pre-cache nil) ;; set accumulation buffer name (buffer to cache output for faster display) (process-put (get-process procname) 'accum-buffer-name (format " *%s:accum*" procname)) ;; don't font-lock strings over process prompt (set (make-local-variable 'syntax-begin-function) #'inferior-ess-goto-last-prompt-if-close) (set (make-local-variable 'font-lock-fontify-region-function) #'inferior-ess-fontify-region) (run-hooks 'ess-post-run-hook) ;; EXTRAS (ess-load-extras t) ;; user initialization can take some time ... (unless no-wait (ess-write-to-dribble-buffer "(inferior-ess 3): waiting for process after hook") (ess-wait-for-process (get-process procname)))) (with-current-buffer buf (rename-buffer buf-name-str t)) (if (and inferior-ess-same-window (not inferior-ess-own-frame)) (switch-to-buffer buf) (pop-to-buffer buf))))))) (defvar inferior-ess-objects-command nil "The language/dialect specific command for listing objects. It is initialized from the corresponding inferior--objects-command and then made buffer local."); and the *--* ones are customized! (make-variable-buffer-local 'inferior-ess-objects-command) (defvar ess-save-lastvalue-command nil "The command to save the last value. See S section for more details. Default depends on the ESS language/dialect and hence made buffer local") (make-variable-buffer-local 'ess-save-lastvalue-command) (defvar ess-retr-lastvalue-command nil "The command to retrieve the last value. See S section for more details. Default depends on the ESS language/dialect and hence made buffer local") (make-variable-buffer-local 'ess-retr-lastvalue-command) ;;; A note on multiple processes: the following variables ;;; ess-local-process-name ;;; ess-sl-modtime-alist ;;; ess-prev-load-dir/file ;;; ess-directory ;;; ess-object-list ;;; are specific to each ess-process and are buffer-local variables ;;; local to the ESS process buffer. If required, these variables should ;;; be accessed with the function ess-get-process-variable (defun inferior-ess-goto-last-prompt-if-close (&optional pos) "Staging from POS go to previous primary prompt and return the position. Look only for primary or secondary prompt on the current line. If found, return the starting position of the prompt, otherwise stay at current position and return nil. POS defaults to `point'." (let* ((pos (or pos (point))) (new-pos (save-excursion (beginning-of-line) (if (looking-at inferior-ess-primary-prompt) pos (when (and inferior-ess-secondary-prompt (looking-at inferior-ess-secondary-prompt)) (re-search-backward (concat "^" inferior-ess-primary-prompt)) pos))))) (when new-pos (goto-char new-pos)))) (defvar compilation--parsed) (defvar ess--tb-last-input) (defvar compilation--parsed) (defun inferior-ess-fontify-region (beg end &optional verbose) "Fontify output by output within the beg-end region to avoid fontification spilling over prompts." (let* ((buffer-undo-list t) (inhibit-point-motion-hooks t) (font-lock-dont-widen t) (buff (current-buffer)) (pos0 (or (inferior-ess-goto-last-prompt-if-close beg) beg)) (pos1 pos0) pos2) (when (< pos0 end) (with-silent-modifications ;; fontify chunks from prompt to prompt (while (< pos1 end) (goto-char pos1) (comint-next-prompt 1) (setq pos2 (min (point) end)) (save-restriction (narrow-to-region pos1 pos2) (font-lock-default-fontify-region pos1 pos2 verbose)) (setq pos1 pos2)) ;; highlight errors (setq compilation--parsed beg) ;; emacs 23 doesn't have this function (when (fboundp 'compilation--ensure-parse) ;; this line is a workaround for occasional incomplete highlighting of ;; compilation errors on remotes, but it causes an incredible ;; slowdown. See https://github.com/emacs-ess/ESS/issues/258. ;; (compilation--ensure-parse end) ) `(jit-lock-bounds ,pos0 . ,end))))) (defun ess-gen-proc-buffer-name:simple (proc-name) "Function to generate buffer name by wrapping PROC-NAME in *proc-name*. See `ess-gen-proc-buffer-name-function'." (format "*%s*" proc-name)) (defun ess-gen-proc-buffer-name:directory (proc-name) "Function to generate buffer name by wrapping PROC-NAME in *PROC-NAME:DIR-NAME*. DIR-NAME is a short directory name. See `ess-gen-proc-buffer-name-function'." (format "*%s:%s*" proc-name (file-name-nondirectory (directory-file-name default-directory)))) (defun ess-gen-proc-buffer-name:abbr-long-directory (proc-name) "Function to generate buffer name in the form *PROC-NAME:ABBREVIATED-LONG-DIR-NAME*. PROC-NAME is a string representing an internal process name. ABBREVIATED-LONG-DIR-NAME is an abbreviated full directory name. Abbreviation is performed by `abbreviate-file-name'. See `ess-gen-proc-buffer-name-function'." (format "*%s:%s*" proc-name (abbreviate-file-name default-directory))) (defun ess-gen-proc-buffer-name:projectile-or-simple (proc-name) "Function to generate buffer name in the form *PROC-NAME:PROJECTILE-ROOT*. PROC-NAME is a string representing an internal process name. PROJECTILE-ROOT is directory name returned by `projectile-project-root' if defined. If `projectile-project-root' is undefined or no project directory has been found use `ess-gen-proc-buffer-name:simple'. See `ess-gen-proc-buffer-name-function'." (let ((proj (and (fboundp 'projectile-project-root) (projectile-project-p)))) (if proj (format "*%s:%s*" proc-name (file-name-nondirectory (directory-file-name proj))) (ess-gen-proc-buffer-name:simple proc-name)))) (defun ess-gen-proc-buffer-name:projectile-or-directory (proc-name) "Function to generate buffer name in the form *PROC-NAME:PROJECTILE-ROOT*. PROC-NAME is a string representing an internal process name. PROJECTILE-ROOT is directory name returned by `projectile-project-root' if defined. If `projectile-project-root' is undefined, or no project directory has been found, use `ess-gen-proc-buffer-name:directory'. See `ess-gen-proc-buffer-name-function'." (let ((proj (and (fboundp 'projectile-project-root) (projectile-project-p)))) (if proj (format "*%s:%s*" proc-name (file-name-nondirectory (directory-file-name proj))) (ess-gen-proc-buffer-name:directory proc-name)))) (defun inferior-ess-set-status (proc string &optional no-timestamp) "Internal function to set the satus of the PROC If no-timestamp, don't set the last-eval timestamp. Return the 'busy state." ;; todo: do it in one search, use starting position, use prog1 (let ((busy (not (string-match (concat "\\(" inferior-ess-primary-prompt "\\)\\'") string)))) (process-put proc 'busy-end? (and (not busy) (process-get proc 'busy))) (when (not busy) (process-put proc 'running-async? nil)) (process-put proc 'busy busy) (process-put proc 'sec-prompt (when inferior-ess-secondary-prompt (string-match (concat "\\(" inferior-ess-secondary-prompt "\\)\\'") string))) (unless no-timestamp (process-put proc 'last-eval (current-time))) busy)) (defun inferior-ess-mark-as-busy (proc) (process-put proc 'busy t) (process-put proc 'sec-prompt nil)) (defun inferior-ess-run-callback (proc string) ;; callback is stored in 'callbacks proc property. Callbacks is a list that ;; can contain either functions to be called with two artuments PROC and ;; STRING, or cons cells of the form (func . suppress). If SUPPRESS is non-nil ;; next process output will be suppressed. (unless (process-get proc 'busy) ;; only one callback is implemented for now (let* ((cb (car (process-get proc 'callbacks))) (listp (not (functionp cb))) (suppress (and listp (consp cb) (cdr cb))) (cb (if (and listp (consp cb)) (car cb) cb))) (when cb (when ess-verbose (ess-write-to-dribble-buffer "executing callback ...\n")) (when suppress (process-put proc 'suppress-next-output? t)) (process-put proc 'callbacks nil) (condition-case err (funcall cb proc string) (error (message "%s" (error-message-string err)))))))) (defun ess--if-verbose-write-process-state (proc string &optional filter) (ess-if-verbose-write (format "\n%s: --> busy:%s busy-end:%s sec-prompt:%s interruptable:%s <-- --> running-async:%s callback:%s suppress-next-output:%s <-- --> dbg-active:%s is-recover:%s <-- --> string:%s\n" (or filter "NORMAL-FILTER") (process-get proc 'busy) (process-get proc 'busy-end?) (process-get proc 'sec-prompt) (process-get proc 'interruptable?) (process-get proc 'running-async?) (if (process-get proc 'callbacks) "yes") (process-get proc 'suppress-next-output?) (process-get proc 'dbg-active) (process-get proc 'is-recover) (if (> (length string) 150) (format "%s .... %s" (substring string 0 50) (substring string -50)) string)))) (defun inferior-ess-output-filter (proc string) "Standard output filter for the inferior ESS process. Ring Emacs bell if process output starts with an ASCII bell, and pass the rest to `comint-output-filter'. Taken from octave-mod.el." (inferior-ess-set-status proc string) (ess--if-verbose-write-process-state proc string) (inferior-ess-run-callback proc string) (if (process-get proc 'suppress-next-output?) ;; works only for surpressing short output, for time being is enough (for callbacks) (process-put proc 'suppress-next-output? nil) (comint-output-filter proc (inferior-ess-strip-ctrl-g string)) (ess--show-process-buffer-on-error string proc))) (defun ess--show-process-buffer-on-error (string proc) (let ((case-fold-search nil)) (when (string-match "Error\\(:\\| +in\\)" string) (ess-show-buffer (process-buffer proc))))) (defun inferior-ess-strip-ctrl-g (string) "Strip leading `^G' character. If STRING starts with a `^G', ring the Emacs bell and strip it. Depending on the value of `visible-bell', either the frame will flash or you'll hear a beep. Taken from octave-mod.el." (if (string-match "^\a" string) (progn (ding) (setq string (substring string 1)))) string) (defun ess-process-sentinel (proc message) "Sentinel for use with ESS processes. This marks the process with a message, at a particular time point." (save-excursion (setq message (substring message 0 -1)) ; strip newline (set-buffer (process-buffer proc)) (comint-write-input-ring) (goto-char (point-max)) (insert-before-markers (format "\nProcess %s %s at %s\n" (process-name proc) message (current-time-string))))) (defun inferior-ess-make-comint (bufname procname infargs &rest switches) "Make an S comint process in buffer BUFNAME with process PROCNAME." ;;; This function is a modification of make-comint from the comint.el ;;; code of Olin Shivers. (let* ((buffer (get-buffer-create bufname)) (proc (get-process procname))) ;; If no process, or nuked process, crank up a new one and put buffer in ;; comint mode. Otherwise, leave buffer and existing process alone. (cond ((or (not proc) (not (memq (process-status proc) '(run stop)))) (with-current-buffer buffer (if ess-directory (setq default-directory ess-directory)) (if (eq (buffer-size) 0) nil (goto-char (point-max)) (insert "\^L\n"))) ; page boundaries = Interactive sessions (let ((process-environment (nconc (list "STATATERM=emacs" (format "PAGER=%s" inferior-ess-pager)) process-environment)) (tramp-remote-process-environment (nconc ;; it contains a pager already, so append (when (boundp 'tramp-remote-process-environment) (copy-sequence tramp-remote-process-environment)) (list "STATATERM=emacs" (format "PAGER=%s" inferior-ess-pager))))) (ess-write-to-dribble-buffer "Making Process...") (ess-write-to-dribble-buffer (format "Buf %s, :Proc %s, :Prog %s\n :Args= %s\nStart File=%s\n" buffer procname inferior-ess-program infargs inferior-ess-start-file)) (comint-exec buffer procname inferior-ess-program inferior-ess-start-file (ess-line-to-list-of-words infargs))))) buffer)) ;;*;; Requester functions called at startup ;; FIXME EMACS 25.1: ;; Deprecate `ess-directory-function' in favour of `project-find-functions'? (defun inferior-ess--get-startup-directory () (let ((dir (or (and ess--enable-experimental-projects (fboundp 'project-current) (cdr (project-current))) (and ess-directory-function (funcall ess-directory-function)) ess-startup-directory default-directory))) (directory-file-name dir))) ;; FIXME: Move all that R stuff elsewhere (defun inferior-ess-r--adjust-startup-directory (dir dialect) (if (string= dialect "R") (let* ((project-dir (cdr (ess-r-package-project))) (tests-dir (expand-file-name (file-name-as-directory "tests") project-dir))) ;; Prefer the `tests' directory but only if the package ;; directory was selected in the first place (if (and project-dir (string= project-dir dir) (string= default-directory tests-dir)) tests-dir dir)) dir)) (defun inferior-ess--maybe-prompt-startup-directory (procname dialect) (let ((default-dir (inferior-ess-r--adjust-startup-directory (inferior-ess--get-startup-directory) dialect))) (if ess-ask-for-ess-directory (let* ((prog (cond ((string= dialect "R") ;; Includes R-X.Y versions (concat ", " inferior-R-version)) (inferior-ess-program (concat ", " inferior-ess-program )) (t ""))) (prompt (format "%s starting project directory? " procname prog))) (ess-prompt-for-directory default-dir prompt)) default-dir))) (defun ess-prompt-for-directory (default prompt) "`prompt' for a directory, using `default' as the usual." (let* ((def-dir (file-name-as-directory default)) (the-dir (expand-file-name (file-name-as-directory (read-directory-name prompt def-dir def-dir t nil))))) (if (file-directory-p the-dir) nil (error "%s is not a valid directory" the-dir)) the-dir)) ;;*;; General process handling code (defmacro with-ess-process-buffer (no-error &rest body) "Execute BODY with current-buffer set to the process buffer of ess-current-process-name. If NO-ERROR is t don't trigger error when there is not current process. Symbol *proc* is bound to the current process during the evaluation of BODY." (declare (indent 1) (debug t)) `(let ((*proc* (and ess-local-process-name (get-process ess-local-process-name)))) (if *proc* (with-current-buffer (process-buffer *proc*) ,@body) (unless ,no-error (error "No current ESS process"))))) (defmacro ess-with-current-buffer (buffer &rest body) "Like `with-current-buffer' but with transfer of some essential local ESS vars like `ess-local-process-name'" (declare (indent 1) (debug t)) (let ((lpn (make-symbol "lpn")) (alist (make-symbol "alist"))) `(let ((,lpn ess-local-process-name) (,alist ess-local-customize-alist)) (with-current-buffer ,buffer (ess-setq-vars-local (eval ,alist)) (setq ess-local-process-name ,lpn) ,@body)))) (dolist (mode '(emacs-lisp-mode lisp-interaction-mode)) (font-lock-add-keywords mode '(("(\\(ess-with-current-buffer\\)\\s +\\(\\(\\w\\|\\s_\\)+\\)" (1 font-lock-keyword-face) (2 font-lock-variable-name-face))))) (defun ess-get-process (&optional name use-another) "Return the ESS process named by NAME. If USE-ANOTHER is non-nil, and the process NAME is not running (anymore), try to connect to another if there is one. By default (USE-ANOTHER is nil), the connection to another process happens interactively (when possible)." (setq name (or name ess-local-process-name)) (if (null name) ; should almost never happen at this point (error "No ESS process is associated with this buffer now")) (update-ess-process-name-list) (if (assoc name ess-process-name-list) (get-process name) ;; else : ;; was (error "Process %s is not running" name) (ess-write-to-dribble-buffer (format "ess-get-process: process '%s' not running" name)) (if (= 0 (length ess-process-name-list)) (save-current-buffer (ess-write-to-dribble-buffer (format " .. restart proc %s for language %s (buf %s)\n" name ess-language (current-buffer))) (message "trying to (re)start process %s for language %s ..." name ess-language) (ess-start-process-specific ess-language ess-dialect) ;; and return the process: "call me again" (ess-get-process name)) ;; else: there are other running processes (if use-another ; connect to another running process : the first one (let ((other-name (car (elt ess-process-name-list 0)))) ;; "FIXME": try to find the process name that matches *closest* (message "associating with *other* process '%s'" other-name) (ess-get-process other-name)) ;; else (ding) (if (y-or-n-p (format "Process %s is not running, but others are. Switch? " name)) (progn (ess-force-buffer-current (concat ess-dialect " process to use: ") 'force) (ess-get-process ess-current-process-name)) (error "Process %s is not running" name)))))) ;; (defun inferior-ess-wait-for-prompt () ;; "Wait until the ESS process is ready for input." ;; (let* ((cbuffer (current-buffer)) ;; (sprocess (ess-get-process ess-current-process-name)) ;; (sbuffer (process-buffer sprocess)) ;; (r nil) ;; (timeout 0)) ;; (set-buffer sbuffer) ;; (while (progn ;; (if (not (eq (process-status sprocess) 'run)) ;; (ess-error "ESS process has died unexpectedly.") ;; (if (> (setq timeout (1+ timeout)) ess-loop-timeout) ;; (ess-error "Timeout waiting for prompt. Check inferior-ess-prompt or ess-loop-timeout.")) ;; (accept-process-output) ;; (goto-char (point-max)) ;; (beginning-of-line); bol ==> no need for "^" in *-prompt! (MM?) ;; ;; above, except for Stata, which has "broken" i/o, ;; ;; sigh... (AJR) ;; (setq r (looking-at inferior-ess-prompt)) ;; (not (or r (looking-at ".*\\?\\s *")))))) ;; (goto-char (point-max)) ;; (set-buffer cbuffer) ;; (symbol-value r))) ;;--- Unfinished idea (ESS-help / R-help ) -- probably not worth it... ;;- (defun ess-set-inferior-program-name (filename) ;;- "Allows to set or change `inferior-ess-program', the program (file)name." ;;- (interactive "fR executable (script) file: ") ;;- ;; "f" : existing file {file name completion} ! ;;- (setq inferior-ess-program filename)) ;; the inferior-ess-program is initialized in the customize..alist, ;; e.g. from inferior-ess-r-program-name ... --> should change rather these. ;; However these really depend on the current ess-language! ;; Plan: 1) must know and use ess-language ;; 2) change the appropriate inferior--program-name ;; (how?) in R/S : assign(paste("inferior-",ESSlang,"-p...."), filename)) ;;*;; Multiple process handling code (defun ess-make-buffer-current nil "Make the process associated with the current buffer the current ESS process. Returns the name of the process, or nil if the current buffer has none." (update-ess-process-name-list) ;; (if ess-local-process-name ;; (setq ess-current-process-name ess-local-process-name)) ess-local-process-name) (defun ess-get-process-variable (var) "Return the variable VAR (symbol) local to ESS process called NAME (string)." (buffer-local-value var (process-buffer (ess-get-process ess-local-process-name)))) (defun ess-set-process-variable (var val) "Set variable VAR (symbol) local to ESS process called NAME (string) to VAL." (with-current-buffer (process-buffer (ess-get-process ess-local-process-name)) (set var val))) ;; emacs 23 compatibility (unless (fboundp 'process-live-p) (defun process-live-p (process) "Returns non-nil if PROCESS is alive. A process is considered alive if its status is `run', `open', `listen', `connect' or `stop'." (memq (process-status process) '(run open listen connect stop)))) (defun ess-process-live-p () "Check if the local ess process is alive. Return nil if current buffer has no associated process, or process was killed." (and ess-local-process-name (let ((proc (get-process ess-local-process-name))) (and (processp proc) (process-live-p proc))))) (defun ess-process-get (propname) "Return the variable PROPNAME (symbol) from the plist of the current ESS process." (process-get (get-process ess-local-process-name) propname)) (defun ess-process-put (propname value) "Set the variable PROPNAME (symbol) to VALUE in the plist of the current ESS process." (process-put (get-process ess-local-process-name) propname value)) (defun ess-start-process-specific (language dialect) "Start an ESS process typically from a language-specific buffer, using LANGUAGE (and DIALECT)." (unless dialect (error "The value of `dialect' is nil")) (save-current-buffer (let ((dsymb (intern dialect))) (ess-write-to-dribble-buffer (format " ..start-process-specific: lang:dialect= %s:%s, current-buf=%s\n" language dialect (current-buffer))) (cond ;; ((string= dialect "R") (R)) ;; ((string= language "S") ; ;; (message "ESS process not running, trying to start R, since language = 'S") ;; (R)) ;; ((string= dialect STA-dialect-name) (stata)) ;;general case ((fboundp dsymb) (funcall dsymb)) (t ;; else: ess-dialect is not a function ;; Typically triggered from ;; ess-force-buffer-current("Process to load into: ") ;; \--> ess-request-a-process("Process to load into: " no-switch) (error "No ESS processes running; not yet implemented to start (%s,%s)" language dialect))) ;; save excursion is not working here !!! bad bad bad !! ))) (defun ess-request-a-process (message &optional noswitch ask-if-1) "Ask for a process, and make it the current ESS process. If there is exactly one process, only ask if ASK-IF-1 is non-nil. Also switches to the process buffer unless NOSWITCH is non-nil. Interactively, NOSWITCH can be set by giving a prefix argument. Returns the name of the selected process." (interactive (list "Switch to which ESS process? " current-prefix-arg)) ; prefix sets 'noswitch (ess-write-to-dribble-buffer "ess-request-a-process: {beginning}\n") (update-ess-process-name-list) (setq ess-dialect (or ess-dialect (ess-completing-read "Set `ess-dialect'" (delete-dups (list "R" "S+" S+-dialect-name "stata" STA-dialect-name "julia" "SAS" "XLS" "ViSta"))))) (let* ((pname-list (delq nil ;; keep only those mathing dialect (append (mapcar (lambda (lproc) (and (equal ess-dialect (buffer-local-value 'ess-dialect (process-buffer (get-process (car lproc))))) (not (equal ess-local-process-name (car lproc))) (car lproc))) ess-process-name-list) ;; append local only if running (when (assoc ess-local-process-name ess-process-name-list) (list ess-local-process-name))))) (num-processes (length pname-list)) (inferior-ess-same-window nil) ;; this should produce the inferior process in other window (auto-started?)) (if (or (= 0 num-processes) (and (= 1 num-processes) (not (equal ess-dialect ;; don't auto connect if from different dialect (buffer-local-value 'ess-dialect (process-buffer (get-process (car pname-list)))))))) ;; try to start "the appropriate" process (progn (ess-write-to-dribble-buffer (concat " ... request-a-process:\n " (format "major mode %s; current buff: %s; ess-language: %s, ess-dialect: %s\n" major-mode (current-buffer) ess-language ess-dialect))) (ess-start-process-specific ess-language ess-dialect) (ess-write-to-dribble-buffer (format " ... request-a-process: buf=%s\n" (current-buffer))) (setq num-processes 1 pname-list (car ess-process-name-list) auto-started? t))) ;; now num-processes >= 1 : (let* ((proc-buffers (mapcar (lambda (lproc) (buffer-name (process-buffer (get-process lproc)))) pname-list)) (proc (if (or auto-started? (and (not ask-if-1) (= 1 num-processes))) (progn (message "using process '%s'" (car proc-buffers)) (car pname-list)) ;; else (unless (and ess-current-process-name (get-process ess-current-process-name)) (setq ess-current-process-name nil)) (when message (setq message (replace-regexp-in-string ": +\\'" "" message))) ;; <- why is this here?? ;; ask for buffer name not the *real* process name: (let ((buf (ess-completing-read message (append proc-buffers (list "*new*")) nil t nil nil))) (if (equal buf "*new*") (progn (ess-start-process-specific ess-language ess-dialect) ;; switches to proc-buff (caar ess-process-name-list)) (process-name (get-buffer-process buf)) )) ))) (if noswitch (pop-to-buffer (current-buffer)) ;; VS: this is weired, but is necessary (pop-to-buffer (buffer-name (process-buffer (get-process proc))) t)) proc))) (defun ess-force-buffer-current (&optional prompt force no-autostart ask-if-1) "Make sure the current buffer is attached to an ESS process. If not, or FORCE (prefix argument) is non-nil, prompt for a process name with PROMPT. If NO-AUTOSTART is nil starts the new process if process associated with current buffer has died. `ess-local-process-name' is set to the name of the process selected. `ess-dialect' is set to the dialect associated with the process selected. ASK-IF-1 asks user for the process, even if there is only one process running." (interactive (list (concat ess-dialect " process to use: ") current-prefix-arg nil)) ;; fixme: why the above interactive is not working in emacs 24? (setq prompt (or prompt "Process to use: ")) (let ((proc-name (ess-make-buffer-current))) (if (and (not force) proc-name (get-process proc-name)) nil ; do nothing ;; Make sure the source buffer is attached to a process (if (and ess-local-process-name (not force) no-autostart) (error "Process %s has died" ess-local-process-name) ;; ess-local-process-name is nil -- which process to attach to (let ((proc (ess-request-a-process prompt 'no-switch ask-if-1)) temp-ess-help-filetype dialect) (with-current-buffer (process-buffer (get-process proc)) (setq temp-ess-help-filetype inferior-ess-help-filetype)) (setq ess-local-process-name proc) (setq inferior-ess-help-filetype temp-ess-help-filetype)))))) (defalias 'inferior-ess-force #'ess-force-buffer-current) (defun ess-switch-process () "Force a switch to a new underlying process." (interactive) (ess-force-buffer-current "Process to use: " 'force nil 'ask-if-1)) (defun ess-get-next-available-process (&optional dialect ignore-busy) "Return first available (aka not busy) process of dialect DIALECT. DIALECT defaults to the local value of ess-dialect. Return nil if no such process has been found." (setq dialect (or dialect ess-dialect)) (when dialect (let (proc) (catch 'found (dolist (p (cons ess-local-process-name (mapcar 'car ess-process-name-list))) (when p (setq proc (get-process p)) (when (and proc (process-live-p proc) (equal dialect (buffer-local-value 'ess-dialect (process-buffer proc))) (or ignore-busy (not (process-get proc 'busy)))) (throw 'found proc)))))))) ;;*;;; Commands for switching to the process buffer (defun ess-switch-to-ESS (eob-p) "Switch to the current inferior ESS process buffer. With (prefix) EOB-P non-nil, positions cursor at end of buffer. This function should follow the description in `ess-show-buffer' for showing the iESS buffer, except that the iESS buffer is also made current." (interactive "P") (ess-force-buffer-current) (if (and ess-current-process-name (get-process ess-current-process-name)) (progn ;; Display the buffer, but don't select it yet. (ess-show-buffer (buffer-name (process-buffer (get-process ess-current-process-name))) t) (if eob-p (goto-char (point-max)))) (message "No inferior ESS process") (ding))) (defun ess-switch-to-ESS-deprecated (eob-p) (interactive "P") (ess-switch-to-ESS eob-p) (message "C-c C-y is deprecated, use C-c C-z instead (ess-switch-to-inferior-or-script-buffer)")) (defun ess-switch-to-end-of-ESS () "Switch to the end of the inferior ESS process buffer." (interactive) (ess-switch-to-ESS t)) (defun ess-switch-to-inferior-or-script-buffer (toggle-eob) "If in script, switch to the iESS. If in iESS switch to most recent script buffer. This is a single-key command. Assuming that it is bound to C-c C-z, you can navigate back and forth between iESS and script buffer with C-c C-z C-z C-z ... If variable `ess-switch-to-end-of-proc-buffer' is t (the default) this function switches to the end of process buffer. If TOGGLE-EOB is given, the value of `ess-switch-to-end-of-proc-buffer' is toggled. " (interactive "P") (let ((map (make-sparse-keymap)) (EOB (if toggle-eob (not ess-switch-to-end-of-proc-buffer) ess-switch-to-end-of-proc-buffer))) (define-key map (vector last-command-event) (lambda (ev eob) (interactive) (if (not (eq major-mode 'inferior-ess-mode)) (ess-switch-to-ESS eob) (let ((dialect ess-dialect) (loc-proc-name ess-local-process-name) (blist (cdr (buffer-list)))) (while (and blist (with-current-buffer (car blist) (not (or (and (memq major-mode '(ess-mode ess-julia-mode)) (equal dialect ess-dialect) (null ess-local-process-name)) (and (memq major-mode '(ess-mode ess-julia-mode)) (equal loc-proc-name ess-local-process-name)) )))) (pop blist)) (if blist (ess-show-buffer (car blist) t) (message "Found no buffers for ess-dialect %s associated with process %s" dialect loc-proc-name)))))) (ess--execute-electric-command map nil nil nil EOB))) (defun ess-get-process-buffer (&optional name) "Return the buffer associated with the ESS process named by NAME." (process-buffer (ess-get-process (or name ess-local-process-name)))) (defun update-ess-process-name-list () "Remove names with no process." (let (defunct) (dolist (conselt ess-process-name-list) (let ((proc (get-process (car conselt)))) (unless (and proc (eq (process-status proc) 'run)) (push conselt defunct)))) (dolist (pointer defunct) (setq ess-process-name-list (delq pointer ess-process-name-list)))) (if (eq (length ess-process-name-list) 0) (setq ess-current-process-name nil))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ess-show-buffer ;; Something like this almost works, but problems with XEmacs and Emacs ;; differing implementations of the args to display-buffer make this ;; too tough to pursue. The longer version below works. ;; (defun ess-show-buffer (buf) ;; "Display the buffer BUF, a string, but do not select it. ;; Returns the window corresponding to the buffer." ;; ;; On XEmacs, I get an error if third arg to display-buffer is t and ;; ;; the BUF is in another frame. Emacs does not have this problem. ;; (if (featurep 'xemacs) ;; (display-buffer buf nil (get-frame-for-buffer buf)) ;; (display-buffer buf nil t))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defcustom ess-show-buffer-action '((display-buffer-pop-up-window display-buffer-use-some-window)) "Actions for `ess-show-buffer', passed to `display-buffer'." :group 'ess :type 'list) (defun ess-show-buffer (buf &optional visit) "Ensure the ESS buffer BUF is visible. The buffer, specified as a string, is typically an iESS (e.g. *R*) buffer. This handles several cases: 1. If BUF is visible in the current frame, nothing is done. 2. If BUF is visible in another frame, then we ensure that frame is visible (it may have been iconified). 3. If buffer is not visible in any frame, simply show it in another window in the current frame. If VISIT is non-nil, as well as making BUF visible, we also select it as the current buffer." (let ((frame)) (if (ess-buffer-visible-this-frame buf) ;;1. Nothing to do, BUF visible in this frame; just return window ;; where this buffer is. t ;; 2. Maybe BUF visible in another frame. (setq frame (ess-buffer-visible-other-frame buf)) (if frame ;; BUF is visible in frame, so just check frame is raised. (if (not (eq (frame-visible-p frame) t)) ;; frame is not yet visible, so raise it. (raise-frame frame)) ;; 3. else BUF not visible in any frame, so show it (but do ;; not select it) in another window in current frame. (display-buffer buf ess-show-buffer-action))) ;; At this stage, the buffer should now be visible on screen, ;; although it won't have been made current. (when visit ;; Need to select the buffer. ;; ;; First of all, check case 2 if buffer is in another frame ;; but that frame may not be selected. (if frame (ess-select-frame-set-input-focus frame)) (select-window (get-buffer-window buf 0))))) (defvar ess-bufs-in-frame nil) ;silence the compiler. ;; The next few functions are copied from my (SJE) iswitchb library. (defun ess-get-bufname (win) "Used by `ess-get-buffers-in-frames' to walk through all windows." (let ((buf (buffer-name (window-buffer win)))) (if (not (member buf ess-bufs-in-frame)) ;; Only add buf if it is not already in list. ;; This prevents same buf in two different windows being ;; put into the list twice. (setq ess-bufs-in-frame (cons buf ess-bufs-in-frame))))) (defun ess-get-buffers-in-frames (&optional current) "Return the list of buffers that are visible in the current frame. If optional argument CURRENT is given, restrict searching to the current frame, rather than all frames." (let ((ess-bufs-in-frame nil)) (walk-windows 'ess-get-bufname nil (if current nil 0)) ess-bufs-in-frame)) (defun ess-buffer-visible-this-frame (buf) "Return t if BUF is visible in current frame." (member buf (ess-get-buffers-in-frames t))) (defun ess-buffer-visible-other-frame (buf) "Return t if BUF is visible in another frame. Assumes that buffer has not already been in found in current frame." (if (member (buffer-name (get-buffer buf)) (ess-get-buffers-in-frames)) (window-frame (get-buffer-window buf 0)) nil)) ; Functions for evaluating code ;;*;; Utils for evaluation (ess-defgeneric ess-build-eval-command (string &optional visibly output file &rest args) "Format an evaluation command. Wrap STRING with `ess-quote-special-chars' and dispatch on the dialect-specific `ess-build-eval-command' function and `ess-eval-command', in that order. If none of the above is defined, return nil." (setq string (ess-quote-special-chars string)) (:override (and ess-eval-command (format-spec ess-eval-command `((?s . ,string) (?f . ,file)))))) (ess-defgeneric ess-build-load-command (file &optional visibly output &rest args) "Format a loading command. Dispatches on the dialect-specific `ess-build-load-command' and `ess-load-command', in that order." (:override (and ess-load-command (format ess-load-command file)))) (defun ess-wait-for-process (&optional proc sec-prompt wait force-redisplay) "Wait for 'busy property of the process to become nil. If SEC-PROMPT is non-nil return if secondary prompt is detected regardless of whether primary prompt was detected or not. If WAIT is non-nil wait for WAIT seconds for process output before the prompt check, default 0.002s. When FORCE-REDISPLAY is non-nil force redisplay. You better use WAIT >= 0.1 if you need FORCE-REDISPLAY to avoid excesive redisplay." (setq proc (or proc (get-process ess-local-process-name))) (unless (eq (process-status proc) 'run) (ess-error "ESS process has died unexpectedly")) ;; 2ms is a good default for remotes (setq wait (or wait 0.002)) (let ((start-time (float-time))) (save-excursion (while (or (accept-process-output proc wait) (unless (and sec-prompt (process-get proc 'sec-prompt)) (process-get proc 'busy))) (when force-redisplay (redisplay 'force)) (when (> (- (float-time) start-time) .5) (setq wait .5)))))) (defun inferior-ess-ordinary-filter (proc string) (inferior-ess-set-status proc string t) (ess--if-verbose-write-process-state proc string "ordinary-filter") (inferior-ess-run-callback proc string) (with-current-buffer (process-buffer proc) ;; (princ (format "%s:" string)) (insert string))) (defvar ess-presend-filter-functions nil "List of functions to call before sending the input string to the process. Each function gets one argument, a string containing the text to be send to the subprocess. It should return the string sent, perhaps the same string that was received, or perhaps a modified or transformed string. The functions on the list are called sequentially, and each one is given the string returned by the previous one. The string returned by the last function is the text that is actually sent to the process. You can use `add-hook' to add functions to this list either globally or locally. The hook is executed in current buffer. Before execution, the local value of this hook in the process buffer is appended to the hook from the current buffer.") (defvar ess--inhibit-presend-hooks nil "If non-nil don't run presend hooks.") (defun ess--run-presend-hooks (process string) ;; run ess-presend-filter-functions and comint-input-filter-functions (if ess--inhibit-presend-hooks string ;;return modified string (let* ((pbuf (process-buffer process)) ;; also run proc buffer local hooks (functions (unless (eq pbuf (current-buffer)) (buffer-local-value 'ess-presend-filter-functions pbuf)))) (setq functions (append (delq t (copy-sequence functions)) ;; even in let, delq distructs ess-presend-filter-functions)) (while (and functions string) ;; cannot use run-hook-with-args here because string must be passed from one ;; function to another (if (eq (car functions) t) (let ((functions (default-value 'ess-presend-filter-functions))) (while (and functions string) (setq string (funcall (car functions) string)) (setq functions (cdr functions)))) (setq string (funcall (car functions) string))) (setq functions (cdr functions))) (with-current-buffer pbuf (run-hook-with-args 'comint-input-filter-functions string)) string))) (defun ess--concat-new-line-maybe (string) "Append \\n at the end of STRING if missing." (if (string-match "\n\\'" string (max (- (length string) 2) 0)) string (concat string "\n"))) (defvar ess--dbg-del-empty-p t "Internal variable to control removal of empty lines during the debugging. Let-bind it to nil before calling `ess-send-string' or `ess-send-region' if no removal is necessary.") (defun inferior-ess--interrupt-subjob-maybe (proc) "Internal. Interrupt the process if interruptable? process variable is non-nil. Hide all the junk output in temporary buffer." (when (process-get proc 'interruptable?) (let ((cb (cadr (process-get proc 'callbacks))) (buf (get-buffer-create " *ess-temp-buff*")) (old-filter (process-filter proc)) (old-buff (process-buffer proc))) (unwind-protect (progn (ess-if-verbose-write "interrupting subjob ... start") (process-put proc 'interruptable? nil) (process-put proc 'callbacks nil) (process-put proc 'running-async? nil) ;; this is to avoid putting junk in user's buffer on process ;; interruption (set-process-buffer proc buf) (set-process-filter proc 'inferior-ess-ordinary-filter) (interrupt-process proc) (when cb (ess-if-verbose-write "executing interruption callback ... ") (funcall cb proc)) ;; should be very fast as it inputs only the prompt (ess-wait-for-process proc) (ess-if-verbose-write "interrupting subjob ... finished") ) (set-process-buffer proc old-buff) (set-process-filter proc old-filter))))) ;;*;; Evaluation primitives (ess-defgeneric ess-send-string (process string &optional visibly message type) "ESS wrapper for `process-send-string'. Run `comint-input-filter-functions' and current buffer's and PROCESS' `ess-presend-filter-functions' hooks on the input STRING. VISIBLY can be nil, t, 'nowait or a string. If string the behavior is as with 'nowait with the differences that inserted string is VISIBLY instead of STRING (evaluated command is still STRING). In all other cases the behavior is as described in `ess-eval-visibly'. STRING need not end with \\n. TYPE is a symbol indicating type of the string." ;; No support of `visibly' when there's no secondary prompt (let ((visibly (if (and (eq visibly t) (null inferior-ess-secondary-prompt)) 'nowait visibly)) (string (ess--run-presend-hooks process string))) (inferior-ess--interrupt-subjob-maybe process) (inferior-ess-mark-as-busy process) (:override (cond ;; Wait after each line ((eq visibly t) (let ((ess--inhibit-presend-hooks t)) (ess-eval-linewise string))) ;; Insert command and eval invisibly ((or (stringp visibly) (eq visibly 'nowait)) (with-current-buffer (process-buffer process) (save-excursion (goto-char (process-mark process)) (insert-before-markers (propertize (format "%s\n" (replace-regexp-in-string "\n[ \t]" "\n+ " (if (stringp visibly) visibly string))) 'font-lock-face 'comint-highlight-input))) (process-send-string process (ess--concat-new-line-maybe string)))) (t (process-send-string process (ess--concat-new-line-maybe string)))) (when message (message message))))) (ess-defgeneric ess-send-region (process start end &optional visibly message type) "Low level ESS version of `process-send-region'. If VISIBLY call `ess-eval-linewise', else call `ess-send-string'. If MESSAGE is supplied, display it at the end. Run current buffer's and PROCESS' `ess-presend-filter-functions' hooks. TYPE is a symbol indicating type of the region." (cond ((ess-tracebug-p) (ess-tracebug-send-region proc start end visibly message type)) (t (:override (ess-send-string process (buffer-substring start end) visibly message type))))) ;;*;; Evaluation commands (defun ess-load-file--normalise-file (file) "Handle Tramp and system peculiarities." (let* ((file (if (and (fboundp 'tramp-tramp-file-p) (tramp-tramp-file-p file)) (tramp-file-name-localname (tramp-dissect-file-name file)) file)) (file (if ess-microsoft-p (ess-replace-in-string file "[\\]" "/") file))) file)) (defun ess-load-file--normalise-buffer (file) (when (ess-check-source file) (error "Buffer %s has not been saved" (buffer-name file))) (let ((source-buffer (get-file-buffer file))) (if source-buffer (with-current-buffer source-buffer (when (buffer-modified-p) (save-buffer)) (ess-force-buffer-current "Process to load into: ") (ess-check-modifications)) (ess-force-buffer-current "Process to load into: ")))) (ess-defgeneric ess-load-file (&optional filename) "Load a source file into an inferior ESS process. This handles Tramp when working on a remote." (interactive (list (or (and (memq major-mode '(ess-mode ess-julia-mode)) (buffer-file-name)) (expand-file-name (read-file-name "Load source file: " nil nil t))))) (ess-load-file--normalise-buffer filename) ;; Pop up an inferior window (save-selected-window (ess-switch-to-ESS t)) (:override (let ((file (ess-load-file--normalise-file filename))) (let ((command (ess-build-load-command file nil t))) (ess-send-string (ess-get-process) command t))))) ;; C-c C-l *used to* eval code: (defun ess-msg-and-comint-dynamic-list-input-ring () "Display a list of recent inputs entered into the current buffer." (interactive) (message "C-c C-l no longer loads a source file in [iESS], rather use C-c M-l instead") (comint-dynamic-list-input-ring)) ;; ;;; VS[03-09-2012]: Test Cases: ;; (ess-command "a<-0\n" nil nil nil nil (get-process "R")) ;; (ess-async-command-delayed "Sys.sleep(5);a<-a+1;cat(1:10)\n" nil ;; (get-process "R") (lambda (proc) (message "done"))) ;; (ess-async-command-delayed "Sys.sleep(5)\n" nil (get-process "R") ;; (lambda (proc) (message "done"))) ;; (process-get (get-process "R") 'running-async?) (defun ess-command--normalise-proc (proc no-prompt-check) (let ((proc (cond (proc ;; This lets external functions call this command (unless ess-local-process-name (setq ess-local-process-name (process-name proc))) proc) (t (ess-get-process ess-local-process-name))))) (unless no-prompt-check (when (process-get proc 'busy) (ess-error "ESS process not ready. Finish your command before trying again."))) proc)) (ess-defgeneric ess-command (cmd &optional out-buffer sleep no-prompt-check wait proc force-redisplay) "Send the ESS process command CMD and delete the output from the ESS process buffer. If an optional second argument OUT-BUFFER exists save the output in that buffer. OUT-BUFFER is erased before use. CMD should have a terminating newline. Guarantees that the value of `.Last.value' will be preserved. SLEEP is deprecated and no longer has any effect. WAIT and FORCE-REDISPLAY are as in `ess-wait-for-process' and are passed to `ess-wait-for-process'. PROC should be a process, if nil the process name is taken from `ess-local-process-name'. This command doesn't set 'last-eval process variable. Note: for critical, or error prone code you should consider wrapping the code into: local({ olderr <- options(error=NULL) on.exit(options(olderr)) ... })" (:override (let ((out-buffer (or out-buffer (get-buffer-create " *ess-command-output*"))) (proc (ess-command--normalise-proc proc no-prompt-check))) (with-current-buffer (process-buffer proc) (let ((primary-prompt inferior-ess-primary-prompt) (oldpb (process-buffer proc)) (oldpf (process-filter proc)) (oldpm (marker-position (process-mark proc)))) (ess-if-verbose-write (format "(ess-command %s ..)" cmd)) ;; Swap the process buffer with the output buffer before ;; sending the command (unwind-protect (progn (set-process-buffer proc out-buffer) (set-process-filter proc 'inferior-ess-ordinary-filter) (with-current-buffer out-buffer (setq inferior-ess-primary-prompt primary-prompt) (setq buffer-read-only nil) (erase-buffer) (set-marker (process-mark proc) (point-min)) (inferior-ess-mark-as-busy proc) (process-send-string proc cmd) ;; Need time for ess-create-object-name-db on PC (if no-prompt-check (sleep-for 0.02) ; 0.1 is noticeable! (ess-wait-for-process proc nil wait force-redisplay) (ess-mpi-handle-messages (current-buffer)) ;; Remove prompt ;; If output is cat(..)ed this deletes the output (goto-char (point-max)) (delete-region (point-at-bol) (point-max))) (ess-if-verbose-write " .. ok{ess-command}"))) (ess-if-verbose-write " .. exiting{ess-command}\n") ;; Restore the process buffer in its previous state (set-process-buffer proc oldpb) (set-process-filter proc oldpf) (set-marker (process-mark proc) oldpm)))) out-buffer))) (defun ess-boolean-command (com &optional buf wait) "Like `ess-command' but expects COM to print TRUE or FALSE. If TRUE (or true) is found return non-nil otherwise nil. Example: (ess-boolean-command \"2>1\n\")" (with-current-buffer (ess-command com buf nil nil wait) (goto-char (point-min)) (let ((case-fold-search t)) (re-search-forward "true" nil t)))) (defun ess-string-command (com &optional buf wait) "Returns the output of COM as a string." (with-current-buffer (ess-command com buf nil nil wait) (ess-kill-last-line) (buffer-substring (point-min) (point-max)))) ;; (ess-async-command "{cat(1:5);Sys.sleep(5);cat(2:6)}\n" nil (get-process "R") ;; (lambda (proc) (message "done"))) ;; (ess-async-command "{cat(1:5);Sys.sleep(5);cat(2:6)}\n" nil (get-process "R") ;; (lambda (proc) (message "done")) ;; t) ;; (ess-async-command "{cat(1:5);Sys.sleep(5);cat(2:6)}\n" nil (get-process "R") ;; (lambda (proc) (message "done")) ;; (lambda (proc2) (message "name: %s" (process-name proc2)))) (defun ess-async-command (com &optional buf proc callback interrupt-callback ) "Asynchronous version of ess-command. COM, BUF, WAIT and PROC are as in `ess-command'. CALLBACK is a function of two arguments (PROC STRING) to run after the successful execution. When INTERRUPT-CALLBACK is non-nil, user evaluation can interrupt the job. INTERRUPT-CALLBACK should be either t or a function of one argument (PROC) to be called on interruption. NOTE: Currently this function should be used only for background jobs like caching. ESS tries to suppress any output from the asynchronous command, but long output of COM will most likely end up in user's main buffer. " (let ((proc (or proc (get-process ess-local-process-name)))) (if (not (and proc (eq (process-status proc) 'run))) (error "Process %s is dead" ess-local-process-name) (if (or (process-get proc 'busy) (process-get proc 'running-async?)) (error "Process %s is busy or already running an async command." ess-local-process-name) (when (eq interrupt-callback t) (setq interrupt-callback (lambda (proc)))) (process-put proc 'callbacks (list (cons callback 'suppress-output) interrupt-callback)) (process-put proc 'interruptable? (and interrupt-callback t)) (process-put proc 'running-async? t) (ess-command com buf nil 'no-prompt-check .01 proc))))) (defun ess-async-command-delayed (com &optional buf proc callback delay) "Delayed asynchronous ess-command. COM and BUF are as in `ess-command'. DELAY is a number of idle seconds to wait before starting the execution of the COM. On interruption (by user's evaluation) ESS tries to rerun the job after next DELAY seconds, and the whole process repeats itself until the command manages to run completely. DELAY defaults to `ess-idle-timer-interval' + 3 seconds You should always provide PROC for delayed evaluation, as the current process might change, leading to unpredictable consequences. This function is a wrapper of `ess-async-command' with an explicit interrupt-callback." (unless proc (error "You must provide PROC argument to ess-async-command-delayed")) (let* ((timer (make-symbol "timer")) (delay (or delay (+ ess-idle-timer-interval 3))) (int-cb `(lambda (proc) (ess-async-command-delayed ,com ,buf proc ,callback ,delay))) (com-fun `(lambda () (when (eq (process-status ,proc) 'run) ; do nothing if not running (if (or (process-get ,proc 'busy) ; if busy, try later (process-get ,proc 'running-async?)) ;; idle timer doesn't work here (run-with-timer ,delay nil 'ess-async-command-delayed ,com ,buf ,proc ,callback ,delay)) (ess-async-command ,com ,buf ,proc ,callback ',int-cb))))) (run-with-idle-timer delay nil com-fun))) ;;*;; Evaluating lines, paragraphs, regions, and buffers. (ess-defgeneric ess-eval-linewise (text &optional invisibly eob even-empty wait-last-prompt sleep-sec wait-sec) "Evaluate TEXT in the ESS process buffer as if typed in w/o tabs. Waits for prompt after each line of input, so won't break on large texts. If optional second arg INVISIBLY is non-nil, don't echo commands. If it is a string, just include that string. If optional third arg EOB is non-nil go to end of ESS process buffer after evaluation. If optional 4th arg EVEN-EMPTY is non-nil, also send empty text (e.g. an empty line). If 5th arg WAIT-LAST-PROMPT is non-nil, also wait for the prompt after the last line; if 6th arg SLEEP-SEC is a number, ESS will call '(\\[sleep-for] SLEEP-SEC) at the end of this function. If the 7th arg WAIT-SEC is set, it will be used instead of the default .001s and be passed to \\[ess-wait-for-process]. Run `comint-input-filter-functions' and `ess-presend-filter-functions' of the associated PROCESS on the TEXT." (unless (numberp wait-sec) (setq wait-sec 0.001)) (ess-force-buffer-current "Process to use: ") (:override ;; Use this to evaluate some code, but don't wait for output. (let* ((deactivate-mark) ; keep local {do *not* deactivate wrongly} (cbuffer (current-buffer)) (sprocess (ess-get-process ess-current-process-name)) (sbuffer (process-buffer sprocess)) (win (get-buffer-window sbuffer t))) (setq text (ess--concat-new-line-maybe (ess--run-presend-hooks sprocess text))) (with-current-buffer sbuffer (setq text (propertize text 'field 'input 'front-sticky t)) (goto-char (marker-position (process-mark sprocess))) (if (stringp invisibly) (insert-before-markers (concat "*** " invisibly " ***\n"))) ;; dbg: ;; dbg (ess-write-to-dribble-buffer ;; dbg (format "(eval-visibly 2): text[%d]= '%s'\n" (length text) text)) (while (or (> (length text) 0) even-empty) (setq even-empty nil) (let* ((pos (string-match "\n\\|$" text)) (input (if (= (length text) 0) "\n" (concat (substring text 0 pos) "\n")))) (setq text (substring text (min (length text) (1+ pos)))) (goto-char (marker-position (process-mark sprocess))) (if win (set-window-point win (process-mark sprocess))) (unless invisibly ;; for consistency with comint :( (insert (propertize input 'font-lock-face 'comint-highlight-input)) (set-marker (process-mark sprocess) (point))) (inferior-ess-mark-as-busy sprocess) (process-send-string sprocess input)) (when (or (> (length text) 0) wait-last-prompt) (ess-wait-for-process sprocess t wait-sec))) (if eob (ess-show-buffer (buffer-name sbuffer) nil)) (goto-char (marker-position (process-mark sprocess))) (when win (with-selected-window win (goto-char (point)) ;; this is crucial to avoid reseting window-point (recenter (- -1 scroll-margin))))))) (if (numberp sleep-sec) (sleep-for sleep-sec))) ;;;*;;; Evaluate only (defun ess-eval-region--normalise-region () "Clean the region for evaluation. This trims newlines at beginning and end of the region because they might throw off the debugger." (save-excursion (goto-char start) (skip-chars-forward "\n\t ") (setq start (point)) (unless mark-active (ess-blink-region start end)) (goto-char end) (skip-chars-backward "\n\t ") (setq end (point)))) (defun ess-eval-region (start end toggle &optional message type) "Send the current region to the inferior ESS process. With prefix argument toggle the meaning of `ess-eval-visibly'; this does not apply when using the S-plus GUI, see `ess-dde-send-region'. TYPE is a symbol indicating what type of region this is." (interactive "r\nP") (ess-force-buffer-current "Process to use: ") (message "Starting evaluation...") (unless ess-local-customize-alist ;; External applications might call ess-eval-* functions; make it ;; easier for them (ess-setq-vars-local (symbol-value (ess-get-process-variable 'ess-local-customize-alist)))) (ess-eval-region--normalise-region) (let ((visibly (if toggle (not ess-eval-visibly) ess-eval-visibly)) (message (or message "Eval region")) (proc (ess-get-process))) (save-excursion (ess-send-region proc start end visibly message type))) (when ess-eval-deactivate-mark (ess-deactivate-mark)) (list start end)) (defun ess-eval-buffer (vis) "Send the current buffer to the inferior ESS process. VIS has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-region (point-min) (point-max) vis "Eval buffer" 'buffer)) (defun ess-eval-buffer-from-beg-to-here (vis) "Send region from beginning to point to the inferior ESS process. VIS has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-region (point-min) (point) vis "Eval buffer till point")) (defun ess-eval-buffer-from-here-to-end (vis) "Send region from point to end of buffer to the inferior ESS process. VIS has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-region (point) (point-max) vis "Eval buffer till end")) (defun ess-eval-function (vis &optional no-error) "Send the current function to the inferior ESS process. Prefix argument VIS toggles the meaning of `ess-eval-visibly'. If NO-ERROR is non-nil and the function was successfully evaluated, return '(beg end) representing the beginning and end of the current function, otherwise (in case of an error) return nil." (interactive "P") (ess-force-buffer-current "Process to use: ") (save-excursion (ignore-errors ;; Evaluation is forward oriented (forward-line -1) (ess-next-code-line 1)) (let ((beg-end (ess-end-of-function nil no-error))) (when beg-end (let* ((beg (nth 0 beg-end)) (end (nth 1 beg-end)) (proc (get-process ess-local-process-name)) ;; FIXME: func names starting with . are not recognized?? (name (progn (goto-char beg) (forward-word) (ess-read-object-name-default))) (msg (format "Eval function %s" (propertize (or name "???") 'face 'font-lock-function-name-face))) (visibly (if vis (not ess-eval-visibly) ess-eval-visibly))) (ess-blink-region beg end) (cond ((ess-tracebug-p) (ess-tracebug-send-function proc beg end visibly msg)) (t (ess-send-region proc beg end visibly msg))) beg-end))))) ;; This is from Mary Lindstrom ;; 31 Aug 1995 14:11:43 To: S-mode@stat.math.ethz.ch (defun ess-eval-paragraph (vis) "Send the current paragraph to the inferior ESS process. Prefix arg VIS toggles visibility of ess-code as for `ess-eval-region'." (interactive "P") (save-excursion (forward-paragraph) ;; Skip blank code to avoid sending surrounding comments (ess-skip-blanks-backward 'multiline) (let ((end (point))) (backward-paragraph) (ess-skip-blanks-forward 'multiline) (ess-eval-region (point) end vis "Eval paragraph")))) ;; ;; Experimental - after suggestion from Jenny Brian for an 'eval-multiline' ;; ;; 'sentence' is too much : almost like 'paragraph' ;; ;; 'sexp' is close, but too little [when point is inside function call; ;; ;; it moves all the way to the end - which is fine] ;; (defun ess-eval-sexp (vis) ;; "Send the current sexp to the inferior ESS process. ;; Prefix arg VIS toggles visibility of ess-code as for `ess-eval-region'." ;; (interactive "P") ;; (save-excursion ;; (forward-sexp) ;; (let ((end (point))) ;; (backward-sexp) ;; (ess-eval-region (point) end vis "Eval sexp")))) (defun ess-eval-function-or-paragraph (vis) "Send the current function if \\[point] is inside one, otherwise the current paragraph other to the inferior ESS process. Prefix arg VIS toggles visibility of ess-code as for `ess-eval-region'." (interactive "P") (let ((beg-end (ess-eval-function vis 'no-error))) (if (null beg-end) ; not a function (ess-eval-paragraph vis)))) (defun ess-eval-function-or-paragraph-and-step (vis) "Send the current function if \\[point] is inside one, otherwise the current paragraph other to the inferior ESS process. Prefix arg VIS toggles visibility of ess-code as for `ess-eval-region'." (interactive "P") (let ((beg-end (ignore-errors (ess-eval-function vis 'no-error)))) ;; ignore-errors is a hack, ess-eval-function gives stupid errors sometimes (if (null beg-end) ; not a function (ess-eval-paragraph-and-step vis) (goto-char (cadr beg-end)) (if ess-eval-empty (forward-line 1) (ess-next-code-line 1))))) (defun ess-eval-region-or-function-or-paragraph (vis) "Send the current region if mark is active, if not, send function if \\[point] is inside one, otherwise the current paragraph. Prefix arg VIS toggles visibility of ess-code as for `ess-eval-region'." (interactive "P") (if (use-region-p) (ess-eval-region (region-beginning) (region-end) vis) (ess-eval-function-or-paragraph vis))) (defun ess-eval-region-or-function-or-paragraph-and-step (vis) "Send the current region if mark is active, if not, send function if \\[point] is inside one, otherwise the current paragraph. After evaluation step to the next code line or to the end of region if region was active. Prefix arg VIS toggles visibility of ess-code as for `ess-eval-region'." (interactive "P") (if (use-region-p) (let ((end (region-end))) (ess-eval-region (region-beginning) end vis) (goto-char end)) (ess-eval-function-or-paragraph-and-step vis))) (defun ess-eval-line (&optional vis) "Send the current line to the inferior ESS process. Arg has same meaning as for `ess-eval-region'." (interactive "P") (save-excursion (end-of-line) (let ((end (point))) (beginning-of-line) (princ (concat "Loading line: " (ess-extract-word-name) " ...") t) (ess-eval-region (point) end vis "Eval line")))) (defun ess-next-code-line (&optional arg skip-to-eob) "Move ARG lines of code forward (backward if ARG is negative). Skips past all empty and comment lines. Default for ARG is 1. Don't skip the last empty and comment lines in the buffer unless SKIP-TO-EOB is non-nil. On success, return 0. Otherwise, go as far as possible and return -1." (interactive "p") (or arg (setq arg 1)) (beginning-of-line) (let ((pos (point)) (n 0) (inc (if (> arg 0) 1 -1))) (while (and (/= arg 0) (= n 0)) (setq n (forward-line inc)); n=0 is success (if (not (fboundp 'comment-beginning)) (while (and (= n 0) (looking-at "\\s-*\\($\\|\\s<\\)")) (setq n (forward-line inc))) (comment-beginning) (beginning-of-line) (forward-comment (* inc (buffer-size))) ;; as suggested in info file ) (if (or skip-to-eob (not (looking-at ess-no-skip-regexp))) ;; don't go to eob or whatever (setq arg (- arg inc)) (goto-char pos) (setq arg 0) (forward-line 1));; stop at next empty line (setq pos (point))) (goto-char pos) n)) (defun ess-eval-line-and-step (&optional simple-next even-empty invisibly) "Evaluate the current line visibly and step to the \"next\" line. If SIMPLE-NEXT is non-nil, possibly via prefix arg, first skip empty and commented lines. If 2nd arg EVEN-EMPTY [prefix as well], also send empty lines. When the variable `ess-eval-empty' is non-nil both SIMPLE-NEXT and EVEN-EMPTY are interpreted as true." ;; From an idea by Rod Ball (rod@marcam.dsir.govt.nz) (interactive "P\nP"); prefix sets BOTH ! (ess-force-buffer-current "Process to load into: ") (save-excursion (end-of-line) (let ((end (point))) (beginning-of-line) ;; go to end of process buffer so user can see result (ess-eval-linewise (buffer-substring (point) end) invisibly 'eob (or even-empty ess-eval-empty)))) (if (or simple-next ess-eval-empty even-empty) (forward-line 1) (ess-next-code-line 1))) (defun ess-eval-region-or-line-and-step (&optional vis) "Evaluate region if there is an active one, otherwise the current line. Prefix arg VIS toggles visibility of ess-code when evaluating the region (as for `ess-eval-region') and has no effect for evaluation of the line. " (interactive "P") (if (use-region-p) (ess-eval-region (region-beginning) (region-end) vis) (ess-eval-line-and-step))) (defun ess-eval-line-and-step-invisibly () "Evaluate the current line invisibly and step to the next line. Evaluate all comments and empty lines." (interactive) (ess-eval-line-and-step t t t)) ;; goes to the real front, in case you do double function definition ;; 29-Jul-92 -FER ;; don't know why David changed it. ;; FER's versions don't work properly with nested functions. Replaced ;; mine. DMS 16 Nov 92 ;;;*;;; Evaluate and switch to S (defun ess-eval-region-and-go (start end vis) "Send the current region to the inferior S and switch to the process buffer. Arg has same meaning as for `ess-eval-region'." (interactive "r\nP") (ess-eval-region start end vis) (ess-switch-to-ESS t)) (defun ess-eval-buffer-and-go (vis) "Send the current buffer to the inferior S and switch to the process buffer. Arg has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-buffer vis) (ess-switch-to-ESS t)) (defun ess-eval-function-and-go (vis) "Send the current function to the inferior ESS process and switch to the process buffer. Arg has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-function vis) (ess-switch-to-ESS t)) (defun ess-eval-line-and-go (vis) "Send the current line to the inferior ESS process and switch to the process buffer. Arg has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-line vis) (ess-switch-to-ESS t)) (defun ess-eval-paragraph-and-go (vis) "Send the current paragraph to the inferior ESS process and switch to the process buffer. Arg has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-paragraph vis) (ess-switch-to-ESS t)) (defun ess-eval-paragraph-and-step (vis) "Send the current paragraph to the inferior ESS process and move forward to the first line after the paragraph. If not inside a paragraph, evaluate next one. Arg has same meaning as for `ess-eval-region'." (interactive "P") (let ((beg-end (ess-eval-paragraph vis))) (goto-char (cadr beg-end)) (if ess-eval-empty (forward-line 1) (ess-next-code-line 1)))) ; Inferior S mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; In this section: ;;;; ;;;; * The major mode inferior-ess-mode ;;;; * Process handling code ;;;; * Completion code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;*;; Major mode definition (defvar inferior-ess-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map comint-mode-map) (define-key map "\C-y" 'ess-yank) ;; Use syntax valid *both* for GNU emacs and XEmacs : (define-key map "\r" 'inferior-ess-send-input) (define-key map "\C-a" 'comint-bol) ;; 2010-06-03 SJE ;; disabled this in favour of ess-dirs. Martin was not sure why this ;; key was defined anyway in this mode. ;;(define-key map "\M-\r" 'ess-transcript-send-command-and-move) (define-key map "\C-c\M-l" 'ess-load-file);; no longer overwrites C-c C-l; ;; but for now the user deserves a message: (define-key map "\C-c\C-l" 'ess-msg-and-comint-dynamic-list-input-ring) (define-key map "\C-c`" 'ess-show-traceback) (define-key map [(control ?c) ?~] 'ess-show-call-stack) (define-key map "\C-c\C-d" 'ess-dump-object-into-edit-buffer) (define-key map "\C-c\C-v" 'ess-display-help-on-object) (define-key map "\C-c\C-q" 'ess-quit) (define-key map "\C-c\C-s" 'ess-execute-search) (define-key map "\C-c\C-x" 'ess-execute-objects) (define-key map "\C-c\034" 'ess-abort) ; \C-c\C-backslash (define-key map "\C-c\C-z" 'ess-switch-to-inferior-or-script-buffer) ; mask comint map (define-key map "\C-d" 'delete-char) ; EOF no good in S (if (>= emacs-major-version 24) (define-key map "\t" 'completion-at-point) (define-key map "\t" 'comint-dynamic-complete) (define-key map "\M-\t" 'comint-dynamic-complete)) (define-key map "\C-c\t" 'ess-complete-object-name-deprecated) (define-key map "\M-?" 'ess-list-object-completions) (define-key map "\C-c\C-k" 'ess-request-a-process) (define-key map "," 'ess-smart-comma) (define-key map "\C-c\C-d" 'ess-doc-map) (define-key map "\C-c\C-e" 'ess-extra-map) (define-key map "\C-c\C-t" 'ess-dev-map) map) "Keymap for `inferior-ess' mode.") (easy-menu-define inferior-ess-mode-menu inferior-ess-mode-map "Menu for use in Inferior S mode" '("iESS" ["What is this? (beta)" ess-mouse-me t] ["Quit" ess-quit t] ;; ["Send and move" ess-transcript-send-command-and-move t] ["Copy command" comint-copy-old-input t] ["Send command" inferior-ess-send-input t] ["Switch to Script Buffer" ess-switch-to-inferior-or-script-buffer t] ["Get help on S object" ess-display-help-on-object t] "------" ("Process" ["Process Echoes" (lambda () (interactive) (setq comint-process-echoes (not comint-process-echoes))) :active t :style toggle :selected comint-process-echoes] ("Eval visibly " :filter ess--generate-eval-visibly-submenu )) "------" ("Utils" ;; need a toggle switch for above, AJR. ["Attach directory" ess-execute-attach t] ["Display object list" ess-execute-objects t] ["Display search list" ess-execute-search t] ["Edit S Object" ess-dump-object-into-edit-buffer t] ["Enter S command" ess-execute t] ["Jump to Error" ess-parse-errors t] ["Load source file" ess-load-file t] ["Resynch S completions" ess-resynch t] ["Recreate R and S versions known to ESS" (ess-r-s-versions-creation+menu) t] ) "------" ("start-dev" :visible nil); <-- ?? ("end-dev" :visible nil) "------" ("Font Lock" :active inferior-ess-font-lock-keywords :filter ess--generate-font-lock-submenu) "------" ["Describe" describe-mode t] ["Send bug report" ess-submit-bug-report t] ["About" (ess-goto-info "Entering Commands") t] )) (defvar ess-mode-minibuffer-map (let ((map (make-sparse-keymap))) (set-keymap-parent map minibuffer-local-map) (define-key map "\t" 'ess-complete-object-name) (define-key map "\C-\M-i" 'ess-complete-object-name) ;; doesn't work:( (define-key map "\C-c\C-s" 'ess-execute-search) (define-key map "\C-c\C-x" 'ess-execute-objects) map) "Keymap used in `ess-execute'") (defun inferior-ess-mode () "Major mode for interacting with an inferior ESS process. Runs an S interactive job as a subprocess of Emacs, with I/O through an Emacs buffer. Variable `inferior-ess-program' controls which S is run. Commands are sent to the ESS process by typing them, and pressing \\[inferior-ess-send-input]. Pressing \\[complete-dynamic-complete] completes known object names or filenames, as appropriate. Other keybindings for this mode are: \\{inferior-ess-mode-map} When editing S objects, the use of \\[ess-load-file] is advocated. `ess-load-file' keeps source files (if `ess-keep-dump-files' is non-nil) in the directory specified by `ess-source-directory', with the filename chosen according to `ess-dump-filename-template'. When a file is loaded, `ess-mode' parses error messages and jumps to the appropriate file if errors occur. The ess-eval- commands do not do this. Customization: Entry to this mode runs the hooks on `comint-mode-hook' and `inferior-ess-mode-hook' (in that order). You can send text to the inferior ESS process from other buffers containing S source. The key bindings of these commands can be found by typing C-h m (help for mode) in the other buffers. `ess-eval-region' sends the current region to the ESS process. `ess-eval-buffer' sends the current buffer to the ESS process. `ess-eval-function' sends the current function to the ESS process. `ess-eval-line' sends the current line to the ESS process. `ess-beginning-of-function' and `ess-end-of-function' move the point to the beginning and end of the current S function. `ess-switch-to-ESS' switches the current buffer to the ESS process buffer. `ess-switch-to-end-of-ESS' switches the current buffer to the ESS process buffer and puts point at the end of it. `ess-eval-region-and-go', `ess-eval-buffer-and-go', `ess-eval-function-and-go', and `ess-eval-line-and-go' switch to the S process buffer after sending their text. `ess-dump-object-into-edit-buffer' moves an S object into a temporary file and buffer for editing `ess-load-file' sources a file of commands to the ESS process. Commands: Return after the end of the process' output sends the text from the end of process to point. Return before the end of the process' output copies the sexp ending at point to the end of the process' output, and sends it. Delete converts tabs to spaces as it moves back. C-M-q does Tab on each line starting within following expression. Paragraphs are separated only by blank lines. Crosshatches start comments. If you accidentally suspend your process, use \\[comint-continue-subjob] to continue it." (interactive) (delay-mode-hooks (comint-mode)) (set (make-local-variable 'comint-input-sender) 'inferior-ess-input-sender) (set (make-local-variable 'process-connection-type) t) ;; initialize all custom vars: (ess-setq-vars-local ess-customize-alist) ; (current-buffer)) ;; If comint-process-echoes is t inferior-ess-input-sender ;; recopies the input, otherwise not. VS[03-09-2012]: should be in customize-alist (set (make-local-variable 'comint-process-echoes) (not (member ess-language '("SAS" "XLS" "OMG" "julia")))) ;; these don't echo (when (and (member ess-dialect '("R")) ;; S+ echoes!! (not (eq ess-eval-visibly t))) ;; when 'nowait or nil, don't wait for process (setq comint-process-echoes nil)) (when comint-use-prompt-regexp ;; why comint is not setting this? bug? (set (make-local-variable 'inhibit-field-text-motion) t)) (unless inferior-ess-prompt ;; build when unset (setq inferior-ess-prompt (concat "\\(" inferior-ess-primary-prompt (when inferior-ess-secondary-prompt "\\|") inferior-ess-secondary-prompt "\\)"))) (setq comint-prompt-regexp (concat "^" inferior-ess-prompt)) (setq comint-get-old-input 'inferior-ess-get-old-input) ;; todo: this is R specific (add-hook 'comint-input-filter-functions 'ess-search-path-tracker nil 'local) ;; R and S specific (setq major-mode 'inferior-ess-mode) (setq mode-name "iESS") ;(concat "iESS:" ess-dialect)) (setq mode-line-process '(" [" ess--mode-line-process-indicator ess--local-mode-line-process-indicator "]: %s")) (use-local-map inferior-ess-mode-map) (let ((inf-syntax-table (or inferior-ess-mode-syntax-table ess-mode-syntax-table))) (when inf-syntax-table (set-syntax-table inf-syntax-table))) (ess-write-to-dribble-buffer (format "(i-ess 1): buf=%s, lang=%s, comint..echo=%s, comint..sender=%s,\n" (current-buffer) ess-language comint-process-echoes comint-input-sender)) (when (string= ess-language "S") ;; todo: what is this doing here? (local-set-key "\M-\r" 'ess-dirs)) ;; Font-lock support ;; AJR: This (the following local-var is already the case! ;; KH sez: only in XEmacs :-(. (& Emacs 22.1, SJE). (when inferior-ess-font-lock-keywords ;; new system (setq inferior-ess-font-lock-defaults (ess--extract-default-fl-keywords inferior-ess-font-lock-keywords))) (set (make-local-variable 'font-lock-defaults) '(inferior-ess-font-lock-defaults nil nil ((?\. . "w") (?\_ . "w") (?' . ".")))) ;; SJE 2007-06-28: Emacs 22.1 has a bug in that comint-mode will set ;; this variable to t, when we need it to be nil. The Emacs 22 ;; solution to this bug is to use define-derived-mode to derive ;; inferior-ess-mode from comint-mode. Not sure if we can go down ;; that route yet. I've used the when condition so that if the var ;; is nil, don't bother setting it -- as setting it will make a new ;; local var. (when font-lock-keywords-only (setq font-lock-keywords-only nil)) ;;; Completion support ---------------- ;; SJE: comint-dynamic-complete-functions is regarded as a hook, rather ;; than a regular variable. Note order of completion (thanks David Brahm): (if (and (featurep 'emacs ) (>= emacs-major-version 24)) (progn (remove-hook 'completion-at-point-functions 'comint-completion-at-point t) ;; reset the thook (add-hook 'completion-at-point-functions 'comint-c-a-p-replace-by-expanded-history nil 'local) (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local)) (add-hook 'comint-dynamic-complete-functions 'ess-complete-filename 'append 'local) (add-hook 'comint-dynamic-complete-functions ;; only for R, is it ok? 'ess-complete-object-name 'append 'local) (add-hook 'comint-dynamic-complete-functions 'comint-replace-by-expanded-history 'append 'local) ;; When a hook is buffer-local, the dummy function `t' is added to ;; indicate that the functions in the global value of the hook ;; should also be run. SJE: I have removed this, as I think it ;; interferes with our normal completion. (remove-hook 'comint-dynamic-complete-functions 't 'local)) ;; (setq comint-completion-addsuffix nil) ; To avoid spaces after filenames ;; KH: next 2 lines solve. (set (make-local-variable 'comint-completion-addsuffix) (cons "/" "")) (setq comint-input-autoexpand t) ; Only for completion, not on input. ;; timers ;; (add-hook 'ess-idle-timer-functions 'ess-cache-search-list nil 'local) ;; (add-hook 'ess-idle-timer-functions 'ess-synchronize-dirs nil 'local) ;;; Keep out of the code. (set (make-local-variable 'indent-tabs-mode) nil) (set (make-local-variable 'paragraph-start) (concat inferior-ess-primary-prompt "\\|\^L")) (set (make-local-variable 'paragraph-separate) "\^L") (if (featurep 'jit-lock) (setq-local jit-lock-chunk-size inferior-ess-jit-lock-chunk-size)) (make-local-variable 'kill-buffer-hook) (add-hook 'kill-buffer-hook 'ess-kill-buffer-function) (run-mode-hooks 'inferior-ess-mode-hook) (ess-write-to-dribble-buffer (format "(i-ess end): buf=%s, lang=%s, comint..echo=%s, comint..sender=%s,\n" (current-buffer) ess-language comint-process-echoes comint-input-sender)) (message (concat (substitute-command-keys "Type \\[describe-mode] for help on ESS version ") ess-version))) ;;*;; Commands used exclusively in inferior-ess-mode ;;;*;;; Main user commands (defun inferior-ess-input-sender (proc string) (inferior-ess--interrupt-subjob-maybe proc) (let ((comint-input-filter-functions nil)) ; comint runs them, don't run twise. (if comint-process-echoes (ess-eval-linewise string nil nil ess-eval-empty) (ess-send-string proc string)))) (defvar ess-help-arg-regexp "\\(['\"]?\\)\\([^,=)'\"]*\\)\\1" "Reg(ular) Ex(pression) of help(.) arguments. MUST: 2nd \\(.\\) = arg.") (defun inferior-ess-send-input () "Sends the command on the current line to the ESS process." (interactive) (run-hooks 'ess-send-input-hook) ;; (let ((proc (get-buffer-process (current-buffer)))) ;; (if (not proc) ;; (user-error "Current buffer has no process") ;; (let ((comint-process-echoes (or comint-process-echoes ;; (< (point) (marker-position (process-mark proc)))))) ;; (comint-send-input)))) (comint-send-input) (setq ess-object-list nil)) ;; Will be reconstructed from cache if needs be (defun inferior-ess--goto-input-start:field () "Move point to the begining of input skiping all continuation lines. If in the output field, goes to the begining of previous input field. Note: inferior-ess-secondary-prompt should match exactly. " (goto-char (field-beginning)) ;; move to the begining of non-output field (while (and (not (= (point) (point-min))) (eq (field-at-pos (point)) 'output)) (goto-char (field-beginning nil t))) ;; skip all secondary prompts (let ((pos (field-beginning (point) t)) (secondary-prompt (concat "^" inferior-ess-secondary-prompt))) (while (and pos (if (eq (get-text-property pos 'field) 'output) (string-match secondary-prompt (field-string-no-properties pos)) t)) (goto-char pos) (setq pos (previous-single-property-change pos 'field))))) (defun inferior-ess--goto-input-end:field () "Move point to the end of input skiping all continuation lines. If in the output field, goes to the begining of previous input field. NOTE: to be used only with fields, see `comint-use-prompt-regexp'. " ;; this func is not used but might be useful some day (goto-char (field-end)) (let ((pos (point)) (secondary-prompt (concat "^" inferior-ess-secondary-prompt))) (while (and pos (if (eq (get-text-property pos 'field) 'output) (string-match secondary-prompt (field-string-no-properties pos)) t)) (goto-char pos) (setq pos (next-single-property-change pos 'field))))) (defun inferior-ess--get-old-input:field () "Return the ESS command surrounding point (use with fields)." (save-excursion (if (eq (field-at-pos (point)) 'output) (if (called-interactively-p 'any) (error "No command on this line") ;; else, just return "" "") (inferior-ess--goto-input-start:field) (let ((command (field-string-no-properties (point))) (pos (next-single-property-change (point) 'field )) (secondary-prompt (concat "^" inferior-ess-secondary-prompt))) (while (and pos (cond ((eq (get-text-property pos 'field) 'input) (setq command (concat command "\n" (field-string-no-properties pos)))) ((eq (get-text-property pos 'field) 'output) (string-match secondary-prompt (field-string-no-properties pos))) (t)));; just skip if unknown (setq pos (next-single-property-change pos 'field))) command)))) ;; todo: error when entering a multiline function ;; check.integer <- function(N){ ;; is.integer(N) | !length(grep("[^[:digit:]]", as.character(N))) ;; } (defun inferior-ess--goto-input-start:regexp () "Move point to the begining of input skiping all continuation lines. If in the output field, goes to the begining of previous input. " (beginning-of-line) (unless (looking-at inferior-ess-prompt) (re-search-backward (concat "^" inferior-ess-prompt))) ;; at bol (when (and inferior-ess-secondary-prompt (looking-at inferior-ess-secondary-prompt)) (while (and (> (forward-line -1) -1) (looking-at inferior-ess-secondary-prompt)))) (unless (looking-at inferior-ess-prompt) (ess-error "Beggining of input not found")) (comint-skip-prompt)) (defun inferior-ess--get-old-input:regexp () "Return the ESS command surrounding point (use regexp)." ;;VS[03-09-2012]: This should not rise errors!! Troubles comint-interrupt-subjob (save-excursion (let* ((inhibit-field-text-motion t) command) (beginning-of-line) (when (and inferior-ess-secondary-prompt (looking-at inferior-ess-secondary-prompt)) (inferior-ess--goto-input-start:regexp)) (beginning-of-line) (if (looking-at inferior-ess-prompt) ; cust.var, might not include sec-prompt (progn (comint-skip-prompt) (setq command (buffer-substring-no-properties (point) (point-at-eol))) (when inferior-ess-secondary-prompt (while (progn (forward-line 1) (looking-at inferior-ess-secondary-prompt)) (re-search-forward inferior-ess-secondary-prompt (point-at-eol)) (setq command (concat command "\n" (buffer-substring-no-properties (point) (point-at-eol)))) )) (forward-line -1) (setq ess-temp-point (point)) ;; this is ugly, used by transcript command) (message "No command at this point") "")))) (defun inferior-ess-get-old-input () "Return the ESS command surrounding point." (if comint-use-prompt-regexp (inferior-ess--get-old-input:regexp) (inferior-ess--get-old-input:field))) ;;;*;;; Hot key commands (defun ess-execute-objects (posn) "Send the objects() command to the ESS process. By default, gives the objects at position 1. A prefix argument toggles the meaning of `ess-execute-in-process-buffer'. A prefix argument of 2 or more means get objects for that position. A negative prefix argument gets the objects for that position and toggles `ess-execute-in-process-buffer' as well." (interactive "P") (ess-make-buffer-current) (let* ((num-arg (if (listp posn) (if posn -1 1) (prefix-numeric-value posn))) (the-posn (if (< num-arg 0) (- num-arg) num-arg)) (invert (< num-arg 0)) (the-command (format inferior-ess-objects-command the-posn ".*")) (the-message (concat ">>> Position " (number-to-string the-posn) " (" (nth (1- the-posn) (ess-search-list)) ")\n"))) (ess-execute the-command invert "S objects" the-message))) (defun ess-execute-search (invert) "Send the `inferior-ess-search-list-command' command to the `ess-language' process. [search(..) in S]" (interactive "P") (ess-execute inferior-ess-search-list-command invert "S search list")) ;; FIXME --- this *only* works in S / S-plus; not in R ;; ----- ("at least" is not assigned to any key by default) (defun ess-execute-attach (dir &optional posn) "Attach a directory in the `ess-language' process with the attach() command. When used interactively, user is prompted for DIR to attach and prefix argument is used for POSN (or 2, if absent.) Doesn't work for data frames." (interactive "Attach directory: \nP") (ess-execute (concat "attach(\"" (directory-file-name (expand-file-name dir)) "\"" (if posn (concat "," (number-to-string (prefix-numeric-value posn)))) ")") 'buffer) (ess-process-put 'sp-for-help-changed? t)) (defun ess-execute-screen-options (&optional invisibly) "Cause S to set the \"width\" option to 1 less than the window width. Also sets the \"length\" option to 99999. When INVISIBLY is non-nil, don't echo to R subprocess. This is a good thing to put in `ess-r-post-run-hook' or `ess-S+-post-run-hook'." (interactive) (if (null ess-execute-screen-options-command) (message "Not implemented for '%s'" ess-dialect) ;; We cannot use (window-width) here because it returns sizes in default ;; (frame) characters which leads to incorrect sizes with scaled fonts.To ;; solve this we approximate font width in pixels and use window-pixel-width ;; to compute the approximate number of characters that fit into line. (let* ((wedges (window-inside-pixel-edges)) (wwidth (- (nth 2 wedges) (nth 0 wedges))) (nchars (if (fboundp 'default-font-width) (floor (/ wwidth (default-font-width))) ;; emacs 24 (if (display-graphic-p) (let* ((r (/ (float (frame-char-height)) (frame-char-width))) (charh (aref (font-info (face-font 'default)) 3)) (charw (/ charh r))) (- (floor (/ wwidth charw)) 1)) ;; e.g., no X11 as in 'emacs -nw' (- (window-width) 2)))) (command (format ess-execute-screen-options-command nchars))) (if invisibly (ess-command command) (ess-eval-linewise command nil nil nil 'wait-prompt))))) (defun ess-execute (command &optional invert buff message) "Send a command to the ESS process. A newline is automatically added to COMMAND. Prefix arg (or second arg INVERT) means invert the meaning of `ess-execute-in-process-buffer'. If INVERT is 'buffer, output is forced to go to the process buffer. If the output is going to a buffer, name it *BUFF*. This buffer is erased before use. Optional fourth arg MESSAGE is text to print at the top of the buffer (defaults to the command if BUFF is not given.)" (interactive (list ;; simpler way to set proc name in mb? (let ((enable-recursive-minibuffers t) (proc-name (progn (ess-force-buffer-current) ess-local-process-name))) (with-current-buffer (get-buffer " *Minibuf-1*") ;; fixme: hardcoded name (setq ess-local-process-name proc-name)) (read-from-minibuffer "Execute> " nil ess-mode-minibuffer-map)) current-prefix-arg)) (ess-make-buffer-current) (let ((the-command (concat command "\n")) (buff-name (concat "*" (or buff "ess-output") "*")) (in-pbuff (if invert (or (eq invert 'buffer) (not ess-execute-in-process-buffer)) ess-execute-in-process-buffer))) (if in-pbuff (ess-eval-linewise the-command) (let ((buff (ess-create-temp-buffer buff-name))) (ess-command the-command buff);; sleep? (with-current-buffer buff (goto-char (point-min)) (if message (insert message) (if buff nil ;; Print the command in the buffer if it has not been ;; given a special name (insert "> " the-command))) (setq ess-local-process-name ess-current-process-name)) (ess-display-temp-buffer buff))))) ;;;*;;; Quitting (ess-defgeneric ess-quit (&rest args) "Issue an exiting command to the inferior process, additionally also running \\[ess-cleanup]." (interactive) (ess-force-buffer-current "Process to quit: " nil 'no-autostart) (ess-interrupt) (ess-make-buffer-current) (:override (let ((proc (ess-get-process))) (ess-cleanup) (goto-char (marker-position (process-mark proc))) (insert inferior-ess-exit-command) (process-send-string proc inferior-ess-exit-command)))) (defun ess-interrupt () "Interrupt the inferior process. This sends an interrupt and quits a debugging session." (interactive) (inferior-ess-force) (let ((proc (ess-get-process))) ;; Interrupt current task before reloading. Useful if the process is ;; prompting for input, for instance in R in case of a crash (interrupt-process proc comint-ptyp) ;; Workaround for Windows terminals (unless (memq system-type '(gnu/linux darwin)) (process-send-string nil "\n")) (ess-wait-for-process proc) ;; Quit debugging session before reloading (when (ess-debug-active-p) (ess-debug-command-quit) (ess-wait-for-process proc)))) (defun ess-abort () "Kill the ESS process, without executing .Last or terminating devices. If you want to finish your session, use \\[ess-quit] instead." ;;; Provided as a safety measure over the default binding of C-c C-z in ;;; comint-mode-map. (interactive) (ding) (message "WARNING: \\[inferior-ess-exit-command] will not be executed and graphics devices won't finish properly!") (sit-for 2) (if (y-or-n-p "Still abort? ") (comint-quit-subjob) (message "Good move."))) (defun ess-cleanup () "Possibly kill or offer to kill, depending on the value of `ess-S-quit-kill-buffers-p', all buffers associated with this ESS process. Leaves you in the ESS process buffer. It's a good idea to run this before you quit. It is run automatically by \\[ess-quit]." (interactive) (let ((the-procname (or (ess-make-buffer-current) ess-local-process-name))) (unless the-procname (error "I don't know which ESS process to clean up after!")) (when (or (eq ess-S-quit-kill-buffers-p t) (and (eq ess-S-quit-kill-buffers-p 'ask) (y-or-n-p (format "Delete all buffers associated with process %s? " the-procname)))) (dolist (buf (buffer-list)) (with-current-buffer buf ;; Consider buffers for which ess-local-process-name is ;; the same as the-procname (when (and (not (get-buffer-process buf)) ess-local-process-name (equal ess-local-process-name the-procname)) (kill-buffer buf))))) (ess-switch-to-ESS nil))) (ess-defgeneric inferior-ess-reload (&optional start-args) "Reload the inferior process." (interactive) (inferior-ess-force) ;; Interrupt early so we can get working directory (ess-interrupt) (save-window-excursion ;; Make sure we don't ask for directory again ;; Use current working directory as default (let ((project-find-functions nil) (ess-directory-function nil) (ess-startup-directory (ess-get-working-directory)) (ess-ask-for-ess-directory nil)) (ess-quit 'no-save) (inferior-ess--wait-for-exit (ess-get-process)) (:override (error "Unimplemented for this dialect"))))) (defun inferior-ess--wait-for-exit (proc) "Wait for process exit. This should be used instead of `ess-wait-for-process' for waiting after issuing a quit command as the latter assumes a live process." (let ((start-time (float-time))) (while (eq (process-status proc) 'run) (accept-process-output proc 0.002) (when (> (- (float-time) start-time) 1) (error "Timeout while quitting process"))))) (defun ess-kill-buffer-function () "Function run just before an ESS process buffer is killed." ;; This simply deletes the buffers process to avoid an Emacs bug ;; where the sentinel is run *after* the buffer is deleted (let ((proc (get-buffer-process (current-buffer)))) (if (processp proc) (delete-process proc)))) (defun ess-list-object-completions nil "List all possible completions of the object name at point." (interactive) (ess-complete-object-name)) ;;;*;;; Support functions (defun ess-extract-onames-from-alist (alist posn &optional force) "Return the object names in position POSN of ALIST. ALIST is an alist like `ess-sl-modtime-alist'. POSN should be in 1 .. (length ALIST). If optional third arg FORCE is t, the corresponding element of the search list is re-read. Otherwise it is only re-read if it's a directory and has been modified since it was last read." (let* ((entry (nth (1- posn) alist)) (dir (car entry)) (timestamp (car (cdr entry))) (new-modtime (and timestamp (ess-dir-modtime dir)))) ;; Refresh the object listing if necessary (if (or force (not (equal new-modtime timestamp))) (setcdr (cdr entry) (ess-object-names dir posn))) (cdr (cdr entry)))) (defun ess-dir-modtime (dir) "Return the last modtime if DIR is a directory, and nil otherwise." (and ess-filenames-map (file-directory-p dir) (nth 5 (file-attributes dir)))) (defun ess-object-modtime (object) "Return the modtime of the S object OBJECT (a string). Searches along the search list for a file named OBJECT and returns its modtime Returns nil if that file cannot be found, i.e., for R or any non-S language!" (let ((path (ess-search-list)) result) (while (and (not result) path) (setq result (file-attributes (concat (file-name-as-directory (car path)) object))) (setq path (cdr path))) (nth 5 result))) (defun ess-modtime-gt (mod1 mod2) "Return t if MOD1 is later than MOD2." (and mod1 (or (> (car mod1) (car mod2)) (and (= (car mod1) (car mod2)) (> (car (cdr mod1)) (car (cdr mod2))))))) (defun ess-get-object-list (name &optional exclude-first) "Return a list of current S object names associated with process NAME, using `ess-object-list' if that is non-nil. If exclude-first is non-nil, don't return objects in first positon (.GlobalEnv)." (or ess-object-list ;; <<- MM: this is now always(?) nil; we cache the *-modtime-alist (with-current-buffer (process-buffer (ess-get-process name)) (ess-make-buffer-current) (ess-write-to-dribble-buffer (format "(get-object-list %s) .." name)) (if (or (not ess-sl-modtime-alist) (ess-process-get 'sp-for-help-changed?)) (progn (ess-write-to-dribble-buffer "--> (ess-get-modtime-list)\n") (ess-get-modtime-list)) ;;else (ess-write-to-dribble-buffer " using existing ess-sl-modtime-alist\n")) (let* ((alist ess-sl-modtime-alist) (i 2) (n (length alist)) result) (ess-write-to-dribble-buffer (format " (length alist) : %d\n" n)) (unless exclude-first ;; re-read of position 1 : (setq result (ess-extract-onames-from-alist alist 1 'force))) (ess-write-to-dribble-buffer (format " have re-read pos=1: -> length %d\n" (length result))) ;; Re-read remaining directories if necessary. (while (<= i n) (setq result (append result (ess-extract-onames-from-alist alist i))) (setq i (1+ i))) (setq ess-object-list (ess-uniq-list result)))))) (defun ess-get-words-from-vector (command &optional no-prompt-check wait proc) "Evaluate the S command COMMAND, which returns a character vector. Return the elements of the result of COMMAND as an alist of strings. COMMAND should have a terminating newline. NO-PROMPT-CHECK, WAIT, and PROC are passed to `ess-command'. FILTER may be the keyword 'non-... or nil. To avoid truncation of long vectors, wrap your command (%s) like this, or a version with explicit options(max.print=1e6): local({ out <- try({%s}); print(out, max=1e6) })\n " (let* ((tbuffer (get-buffer-create " *ess-get-words*")); initial space: disable-undo (word-RE (concat "\\(" "\\\\\\\"" "\\|" "[^\"]" ; \" or non-"-char "\\)*")) (full-word-regexp (concat "\"" "\\(" word-RE "\\)" "\"" "\\( \\|$\\)"; space or end )) words) (ess-if-verbose-write (format "(ess-get-words-* command=%s full-word-regexp=%S)\n" command full-word-regexp)) (ess-command command tbuffer 'sleep no-prompt-check wait proc) (ess-if-verbose-write " [ok] ..") (with-current-buffer tbuffer (goto-char (point-min)) (while (re-search-forward full-word-regexp nil t) (setq words (cons (buffer-substring (match-beginning 1) (match-end 1)) words)))) (ess-if-verbose-write (if (> (length words) 5) (format " |-> (length words)= %d\n" (length words)) (format " |-> words= '%s'\n" words))) (reverse words))) (defun ess-compiled-dir (dir) "Return non-nil if DIR is an S object directory with special files. I.e. if the filenames in DIR are not representative of the objects in DIR." (or (file-exists-p (concat (file-name-as-directory dir) "___nonfile")) (file-exists-p (concat (file-name-as-directory dir) "__BIGIN")) (file-exists-p (concat (file-name-as-directory dir) "___NONFI")))) (defun ess-object-names (obj &optional pos) "Return alist of S object names in directory (or object) OBJ. If OBJ is a directory name (begins with `/') returns a listing of that dir. This may use the search list position POS if necessary. If OBJ is an object name, returns result of the command `inferior-ess-safe-names-command'. If POS is supplied return the result of the command in `inferior-ess-objects-command' If OBJ is nil or not a directory, POS must be supplied. In all cases, the value is an list of object names." (cond ((and (stringp obj) (string-match-p "ESSR" obj)) nil) ;; FIXME: in both cases below, the same fallback "objects(POS)" is used -- merge! ((and obj (file-accessible-directory-p obj)) ;; Check the pre-compiled object list in ess-object-name-db first ;; FIXME: If used at all, ess-object-name-db should not only ;; ----- be used in the directory case !! (or (cdr-safe (assoc obj ess-object-name-db)) ;; Take a directory listing (and ess-filenames-map ;; first try .Data subdirectory: ;;FIXME: move ".Data" or ``this function'' to ess-sp6-d.el etc: (let ((dir (concat (file-name-as-directory obj) ".Data"))) (if (not (file-accessible-directory-p dir)) (setq dir obj)) (and (not (ess-compiled-dir dir)) (directory-files dir)))) ;; Get objects(pos) instead (and (or (ess-write-to-dribble-buffer (format "(ess-object-names ..): directory %s not used\n" obj)) t) pos (ess-get-words-from-vector (format inferior-ess-objects-command pos))))) ((and obj ;; want names(obj) (ess-get-words-from-vector (format inferior-ess-safe-names-command obj)))) (pos (ess-get-words-from-vector (format inferior-ess-objects-command pos))))) (defun ess-slot-names (obj) "Return alist of S4 slot names of S4 object OBJ." (ess-get-words-from-vector (format "slotNames(%s)\n" obj))) ;;; SJE: Wed 29 Dec 2004 --- remove this function. ;;; rmh: Wed 5 Jan 2005 --- bring it back for use on Windows (defun ess-create-object-name-db () "Create a database of object names in standard S directories. This database is saved in the file specified by `ess-object-name-db-file', and is loaded when `ess-mode' is loaded. It defines the variable `ess-object-name-db', which is used for completions. Before you call this function, modify the S search list so that it contains all the non-changing (i.e. system) S directories. All positions of the search list except for position 1 are searched and stored in the database. After running this command, you should move ess-namedb.el to a directory in the `load-path'." (interactive) (setq ess-object-name-db nil) (let ((search-list (cdr (ess-search-list))) (pos 2) name (buffer (get-buffer-create " *ess-db*")) (temp-object-name-db nil) (temp-object-name-db-file ess-object-name-db-file)) (ess-write-to-dribble-buffer (format "(object db): search-list=%s \n " search-list)) (while search-list (message "Searching %s" (car search-list)) (setq temp-object-name-db (cons (cons (car search-list) (ess-object-names nil pos)) temp-object-name-db)) (setq search-list (cdr search-list)) (ess-write-to-dribble-buffer (format "(object db): temp-obj-name-db=%s \n pos=%s" temp-object-name-db pos)) (setq pos (1+ pos))) (with-current-buffer buffer (erase-buffer) (insert "(setq ess-object-name-db '") (prin1 temp-object-name-db (current-buffer)) (insert ")\n") (setq name (expand-file-name ess-object-name-db-file)) (write-region (point-min) (point-max) name) (message "Wrote %s" name)) (kill-buffer buffer) (setq ess-object-name-db temp-object-name-db))) (defun ess-resynch nil "Reread all directories/objects in variable `ess-search-list' to form completions." (interactive) (if (ess-make-buffer-current) nil (error "Not an ESS process buffer")) (setq ess-sl-modtime-alist nil) (setq ess-object-list nil) (setq ess-object-name-db nil) ; perhaps it would be better to reload? (ess-process-put 'sp-for-help-changed? t) (ess-get-modtime-list)) (defun ess-filename-completion () ;; > emacs 24 "Return completion only within string or comment." (save-restriction ;; explicitely handle inferior-ess (ignore-errors (when (and (eq major-mode 'inferior-ess-mode) (> (point) (process-mark (get-buffer-process (current-buffer))))) (narrow-to-region (process-mark (get-buffer-process (current-buffer))) (point-max)))) (when (ess-inside-string-or-comment-p (point)) (append (comint-filename-completion) '(:exclusive no))))) (defun ess-complete-filename () "Do file completion only within strings." (save-restriction ;; explicitely handle inferior-ess (ignore-errors (when (and (eq major-mode 'inferior-ess-mode) (> (point) (process-mark (get-buffer-process (current-buffer))))) (narrow-to-region (process-mark (get-buffer-process (current-buffer))) (point-max)))) (when (or (ess-inside-string-or-comment-p (point))) ;; usable within ess-mode as well (comint-dynamic-complete-filename)))) (defun ess-after-pathname-p nil ;; Heuristic: after partial pathname if it looks like we're in a ;; string, and that string looks like a pathname. Not the best for ;; use with unix() (or it's alias, !). Oh well. (save-excursion (save-match-data (let ((opoint (point))) (and (re-search-backward "\\(\"\\|'\\)[~/#$.a-zA-Z0-9][^ \t\n\"']*" nil t) (eq opoint (match-end 0))))))) ;;*;; Functions handling the search list (defun ess-search-list (&optional force-update) "Return the current search list as a list of strings. Elements which are apparently directories are expanded to full dirnames. Don't try to use cache if FORCE-UPDATE is non-nil. Is *NOT* used by \\[ess-execute-search], but by \\[ess-resynch], \\[ess-get-object-list], \\[ess-get-modtime-list], \\[ess-execute-objects], \\[ess-object-modtime], \\[ess-create-object-name-db], and (indirectly) by \\[ess-get-help-files-list]." (with-current-buffer (ess-get-process-buffer ess-current-process-name);to get *its* local vars (let ((result nil) (slist (ess-process-get 'search-list)) (tramp-mode nil)) ;; hack for bogus file-directory-p below (if (and slist (not force-update) (not (ess-process-get 'sp-for-help-changed?))) slist ;; else, re-compute: (ess-write-to-dribble-buffer " (ess-search-list ... ) ") (let ((tbuffer (get-buffer-create " *search-list*")) (homedir ess-directory) (my-search-cmd inferior-ess-search-list-command); from ess-buffer elt) (ess-command my-search-cmd tbuffer 0.05); <- sleep for dde only; does (erase-buffer) (with-current-buffer tbuffer ;; guaranteed by the initial space in its name: (buffer-disable-undo) (goto-char (point-min)) (ess-write-to-dribble-buffer (format "after '%s', point-max=%d\n" my-search-cmd (point-max))) (while (re-search-forward "\"\\([^\"]*\\)\"" nil t) (setq elt (buffer-substring (match-beginning 1) (match-end 1))) ;;Dbg: (ess-write-to-dribble-buffer (format " .. elt= %s \t" elt)) (if (and (string-match "^[^/]" elt) (file-directory-p (concat ess-directory elt))) (progn ;;Dbg: (ess-write-to-dribble-buffer "*IS* directory\n") (setq elt (concat homedir elt))) ;;else ;;dbg ;;- (ess-write-to-dribble-buffer "not dir.\n") ) (setq result (append result (list elt)))) (kill-buffer tbuffer))) result)))) ;;; ess-sl-modtime-alist is a list with elements as follows: ;;; * key (directory or object name) ;;; * modtime (list of 2 integers) ;;; * name, name ... (accessible objects in search list posn labeled by key) ;;; It is a buffer-local variable (belonging to e.g. *R*, *S+6*, .. etc) ;;; and has the same number of elements and is in the same order as the ;;; S search list (defun ess-get-modtime-list (&optional cache-var-name exclude-first) "Record directories in the search list, and the objects in those directories. The result is stored in CACHE-VAR-NAME. If nil, CACHE-VAR-NAME defaultst to `ess-sl-modtime-alist'. If EXCLUDE-FIRST is non-nil don't recompile first object in the search list." ;; Operation applies to process of current buffer (let* ((searchlist (if exclude-first (cdr (ess-search-list)) (ess-search-list))) (index (if exclude-first 2 1)) (cache-name (or cache-var-name 'ess-sl-modtime-alist)) pack newalist) (while searchlist (setq pack (car searchlist)) (setq newalist (append newalist (list (or (assoc pack (symbol-value cache-name)) (append (list pack (ess-dir-modtime pack)) (prog2 (message "Forming completions for %s..." pack) (ess-object-names pack index) (message "Forming completions for %s...done" pack))))))) (setq index (1+ index)) (setq searchlist (cdr searchlist))) ;;DBG: (ess-write-to-dribble-buffer (format "(%s): created new alist of length %d\n" cache-var-name (length newalist))) (set cache-name newalist))) (defun ess-search-path-tracker (str) "Check if input STR changed the search path. This function monitors user input to the inferior ESS process so that Emacs can keep the process variable 'search-list' up to date. `ess-completing-read' in \\[ess-read-object-name] uses this list indirectly when it prompts for help or for an object to dump. From ESS 12.09 this is not necessary anymore, as the search path is checked on idle time. It is kept for robustness and backward compatibility only." (when ess-change-sp-regexp (if (string-match ess-change-sp-regexp str) (ess-process-put 'sp-for-help-changed? t)))) ; Miscellaneous routines ;;;*;;; Routines for reading object names (ess-defgeneric ess-read-object-name (p-string) "Read an object name from the minibuffer with completion, and return it. P-STRING is the prompt string." (:override (let* ((default (ess-read-object-name-dump)) (object-list (ess-get-object-list ess-local-process-name)) (spec (ess-completing-read p-string object-list nil nil nil nil default))) (list (cond ((string= spec "") default) (t spec)))))) (defun ess-read-object-name-default () "Return the object name at point, or nil if none." (ignore-errors (save-excursion ;; The following line circumvents an 18.57 bug in following-char (if (eobp) (backward-char 1)) ; Hopefully buffer is not empty! ;; Get onto a symbol (catch 'nosym ; bail out if there's no symbol at all before point (while (let ((sc (char-syntax (following-char)))) (not (or (= sc ?w) (= sc ?_)))) (if (bobp) (throw 'nosym nil) (backward-char 1)))) (let* ((end (progn (forward-sexp 1) (point))) (beg (progn (backward-sexp 1) (point)))) (buffer-substring-no-properties beg end))))) (defun ess-read-object-name-dump () "Return the object name at point, or \"Temporary\" if none." (ignore-errors (save-excursion ;; Get onto a symbol (catch 'nosym ; bail out if there's no symbol at all before point (while (/= (char-syntax (following-char)) ?w) (if (bobp) (throw 'nosym nil) (backward-char 1))) (let* ((end (progn (forward-sexp 1) (point))) (beg (progn (backward-sexp 1) (point))) (object-name (buffer-substring beg end))) (or object-name "Temporary")))))) ;;;; start of ess-smart-operators ;;;; inspired by slime repl shortcuts (defvar ess--handy-history nil) (defun ess-handy-commands () "Request and execute a command from `ess-handy-commands' list." (interactive) (let* ((commands (or ess--local-handy-commands ess-handy-commands)) (hist (and (assoc (car ess--handy-history) commands) (car ess--handy-history)))) (call-interactively (cdr (assoc (ess-completing-read "Execute" (sort (mapcar 'car commands) 'string-lessp) nil t nil 'ess--handy-history hist) commands))))) (defun ess-smart-comma () "If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from `ess-handy-commands' list." (interactive) (let ((proc (get-buffer-process (current-buffer)))) (if (and proc (eq (point) (marker-position (process-mark proc)))) (ess-handy-commands) (if ess-smart-operators (progn (delete-horizontal-space) (insert ", ") (unless (eq major-mode 'inferior-ess-mode) (indent-according-to-mode))) (insert ","))))) ; directories (defun ess-set-working-directory (path &optional no-error) "Set the current working directory to PATH for both ESS subprocess and Emacs buffer `default-directory'." (interactive "DChange working directory to: ") (if ess-setwd-command (let* ((remote (file-remote-p path)) (path (if remote (tramp-sh-handle-expand-file-name path) path)) (lpath (if remote (with-parsed-tramp-file-name path v v-localname) path))) (ess-eval-linewise (format ess-setwd-command lpath)) ;; use file-name-as-directory to ensure it has trailing / (setq default-directory (file-name-as-directory path))) (unless no-error (error "Not implemented for dialect %s" ess-dialect)))) (defalias 'ess-change-directory 'ess-set-working-directory) (defun ess-get-working-directory (&optional no-error) "Retrive the current working directory from the current ess process." (if ess-getwd-command (car (ess-get-words-from-vector ess-getwd-command)) (unless no-error (error "Not implemented for dialect %s" ess-dialect)))) (defun ess-synchronize-dirs () "Set Emacs' current directory to be the same as the subprocess directory. To be used in `ess-idle-timer-functions'." (when (and ess-can-eval-in-background ess-getwd-command) (ess-when-new-input last-sync-dirs (ess-if-verbose-write "\n(ess-synchronize-dirs)\n") (setq default-directory (car (ess-get-words-from-vector ess-getwd-command))) default-directory))) (defun ess-dirs () "Set Emacs' current directory to be the same as the *R* process." ;; Note: This function is not necessary anymore. The Emacs ;; default-directory and subprocess working directory are ;; synchronized automatically. (interactive) (let ((dir (car (ess-get-words-from-vector "getwd()\n")))) (message "(ESS / default) directory: %s" dir) (setq default-directory (file-name-as-directory dir)))) ;; (make-obsolete 'ess-dirs 'ess-synchronize-dirs "ESS 12.09") ;; search path (defun ess--mark-search-list-as-changed () "Internal. Marks all the search-list related variables as changed." ;; other guys might track their own (ess-process-put 'sp-for-help-changed? t) (ess-process-put 'sp-for-ac-changed? t)) (defun ess-cache-search-list () "To be used in `ess-idle-timer-functions', to set search path related variables." (when (and ess-can-eval-in-background inferior-ess-search-list-command) (ess-when-new-input last-cache-search-list (let ((path (ess-search-list 'force)) (old-path (process-get *proc* 'search-list))) (when (not (equal path old-path)) (process-put *proc* 'search-list path) (ess--mark-search-list-as-changed) path))))) ;;*;; Temporary buffer handling ;; (defun ess-create-temp-buffer (name) ;; "Create an empty buffer called NAME, but doesn't display it." ;; (let ((buff (get-buffer-create name))) ;; (save-excursion ;; (set-buffer buff) ;; (erase-buffer)) ;; buff)) ;; Ed Kademan's version: ;; From: Ed Kademan ;; Subject: Re: ess-mode 5.1.16; search list ;; To: rossini@biostat.washington.edu (A.J. Rossini) ;; Cc: Martin Maechler , ess-bugs@stat.math.ethz.ch ;; Date: 26 Jul 2000 16:12:12 -0400 ;; Dear Tony Rossini, ;; I was having trouble looking at the search list under ess. When I ;; started up multiple inferior processes---each for a different ;; dialect---ess-mode would issue the wrong variant of the "search" ;; command when I typed C-c C-s. In case it is useful let me tell you ;; what I did to get it to work for me. ;; I added the component: ;; (inferior-ess-search-list-command . "search()\n") ;; to S+3-customize-alist and ess-r-customize-alist, and then I redefined the ;; ess-create-temp-buffer function as follows: (defun ess-create-temp-buffer (name) "Create an empty buffer called NAME." (let ((buff (get-buffer-create name)) (elca (eval ess-local-customize-alist))) (with-current-buffer buff (erase-buffer) (ess-setq-vars-local elca buff)) buff)) ;;These two steps seem to insure that the temporary buffer in which the ;;search results appear has the correct version of the local variables. ;;I am not that well acquainted with the ess code and don't know whether ;;this is a good fundamental way of fixing the problem, or even whether ;;or not this breaks some other feature of ess-mode that I never use. ;;Thanks for listening. ;;Ed K. ;;-- ;;Ed Kademan 508.651.3700 ;;PHZ Capital Partners 508.653.1745 (fax) ;;321 Commonwealth Road ;;Wayland, MA 01778 (defun ess-display-temp-buffer (buff) "Display the buffer BUFF using `temp-buffer-show-function' and respecting `ess-display-buffer-reuse-frames'." (let ((display-buffer-reuse-frames ess-display-buffer-reuse-frames)) (funcall (or temp-buffer-show-function 'display-buffer) buff))) ;;*;; Error messages (defun ess-error (msg) "Something bad has happened. Display the S buffer, and cause an error displaying MSG." (display-buffer (process-buffer (ess-get-process ess-current-process-name))) (error msg)) ; Provide package (provide 'ess-inf) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-inf.el ends here ess-17.11/lisp/ess-install.el0000444005071500004540000002070313202324174012770 00000000000000;;; ess-install.el --- Automatic installation of ESS. ;; Auto-install procedure. EXPERIMENTAL! ;; Copyright (C) 2006 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Stephen Eglen ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;; ;; In short: you may use this code any way you like, as long as you ;; don't charge more than a distribution fee for it, do distribute the ;; source with any binaries, remove this notice, or hold anyone liable ;; for its results. ;;; Commentary: ;; Although installing ESS is relatively simple, sometimes people get ;; confused as to what to add to their init files, or even where their ;; init files are located. The following procedure should be a bit ;; simpler, as Emacs will add the necessary start-up lines itself. ;; (The instructions below assume you have downloaded ess as a zip ;; package, but it will work also for the .tar.gz version of ESS as ;; long as you know how to unpack a .tar.gz in step 3.) ;; ;; Installing ESS for the first time. ;; ;; 1. Create a folder (e.g C:/emacs) where you will store ESS. We will ;; assume that you are installing ESS into C:/emacs (unix users can use ;; ~/emacs). ;; ;; 2. Download ess-5.2.12.zip and store it in the folder you created. ;; ;; 3. Unpack the files from the zip archive, e.g. by right-clicking on it ;; within Windows explorer and selecting "Extract all". On unix, use ;; "unzip ess-5.2.12.zip". ;; ;; 4. Start a new Emacs. ;; ;; 5. In the new emacs, you need to open the file "ess-install.el" which ;; is part of ESS. To do this, type: ;; ;; C-x C-f c:/emacs/ess-5.2.12/lisp/ess-install.el RET ;; ;; You should now see a lisp file with the top line: ;; ;;; ess-install.el --- Automatic installation of ESS. ;; ;; 6. Type M-x eval-buffer RET ;; ;; What does this do? This will find your emacs initialisation file, and ;; it will add the following two lines to the end of the file: ;; ;; ;;; ESS setup for version 5.2.12 ;; (load "c:/emacs/ess-5.2.12/lisp/ess-site") ;; ;; Do not edit those two lines! They are useful if later you come to ;; upgrade ESS. ;; ;; 7. Start a new Emacs and you should find then that ESS is loaded. For ;; example, create a new file called "foo.R" and check that it opens ;; in R mode by looking at the mode line and menubar. ;; ;; Upgrading your version of ESS. ;; ;; If (and only if) you use the above instructions for installing ESS, ;; when a new version of ESS is released, you can use the same method to ;; install the new version. Repeat steps 2-7 for the new release of ESS, ;; and this time in step 6, if emacs finds that you already have the ;; special line ";;; ESS setup for version 5.2.12", it will highlight ;; those lines, and query whether you want to replace those two lines ;; with the new setup code. ;; ;; If you do upgrade ESS this way, bear in mind that your old version ;; will not be deleted from your filespace -- you will have to delete it ;; yourself. ;; TODO: possibly add a call to (byte-recompile-directory ess-lisp-dir ;; 0) so that lisp files are byte compiled. ;;; Code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Location where the new lisp files are stored. (defvar ess-lisp-dir (file-name-directory (abbreviate-file-name buffer-file-name)) "Location where the new lisp files are stored.") (defvar ess-site-file (concat ess-lisp-dir "ess-site") "Full path to the new ess-site file. Do not include .el extension in case there is also a .elc around.") (defvar ess-new-version nil "Version number of new ESS to be installed.") (defvar ess-installed nil) (defun ess-install-byte-compile () "Byte compile the ESS files. This will probably generate warnings, but they can hopefully be ignored." ;; To do byte compilation, we want the files on the ;; load-path so that we can process the (require 'xyz) statements. (add-to-list 'load-path ess-lisp-dir) (byte-recompile-directory ess-lisp-dir 0)) ;; Check that ess-site-file is written using unix directory separators. ;; i.e. need to change c:\\some\\dir\\ess-site.el to ;; c:/some/dir/ess-site.el ;; To do this, we have to load in ess-replace-in-string, from ;; the file ess-utils.el (save-window-excursion (find-file (concat ess-lisp-dir "ess-utils.el")) (goto-char (point-min)) (search-forward-regexp "^(defun ess-replace-in-string " nil t) (eval-defun nil) (setq ess-site-file (ess-replace-in-string ess-site-file "\\\\" "/" t)) ) ;; Get the version number of the new software. Open the file ;; ess-custom.el and then find the definition of the variable ;; ess-version. (save-window-excursion (let ((beg)) (find-file (concat ess-lisp-dir "ess-custom.el")) ;; go back to start, just in case file was previously open. (goto-char (point-min)) (search-forward "defvar ess-version \"") (setq beg (point)) (search-forward "\"") (setq ess-new-version (buffer-substring beg (1- (point)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Highlighting (copied from reftex.el -- cheers Carsten!) ;; Only one highlight region is needed, whereas two are provided here, ;; so this code could be simplified. But we may want it again later. ;; We keep a vector with several different overlays to do our highlighting. (defvar ess-highlight-overlays [nil nil]) ;; Initialize the overlays (here we provide two overlays) (aset ess-highlight-overlays 0 (make-overlay 1 1)) (overlay-put (aref ess-highlight-overlays 0) 'face 'highlight) (aset ess-highlight-overlays 1 (make-overlay 1 1)) (overlay-put (aref ess-highlight-overlays 1) 'face 'highlight) ;; Two functions for activating and deactivation highlight overlays (defun ess-highlight (index begin end &optional buffer) "Highlight a region with overlay INDEX." (move-overlay (aref ess-highlight-overlays index) begin end (or buffer (current-buffer)))) (defun ess-unhighlight (index) "Detatch overlay INDEX." (delete-overlay (aref ess-highlight-overlays index))) ;;; End of highlighting code. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Try to find the .emacs init file and edit it. (save-window-excursion ;; Try to find the init file if one already exists, ;; or create a new one if we can't find any. (if (stringp user-init-file) (find-file user-init-file) ;; else, let's guess that the init file should be called ".emacs" ;; and the tilde will be resolved okay. (find-file "~/.emacs")) (goto-char (point-min)) (let ((ess-commands (concat "\n;;; ESS setup for version " ess-new-version "\n" "(load \"" ess-site-file "\")\n")) (new-install) (beg)) (if (search-forward ";;; ESS setup for version " nil t) (progn (message "You already have ESS installed.") (setq ess-installed (buffer-substring (point) (save-excursion (end-of-line) (point)))) (beginning-of-line) (setq beg (point)) ;; We assume the next line contains a sexp that loads the ;; the ess-site; this sexp can be multiple lines. (forward-line 1) (forward-list 1) (ess-highlight 0 beg (point)) (setq new-install (yes-or-no-p (concat "Replace ESS version " ess-installed " with version " ess-new-version "? "))) (when new-install (kill-region beg (point)) (insert ess-commands) (save-buffer) (ess-install-byte-compile) (message (concat "ESS updated to version " ess-new-version)) )) ;; else, just insert commands at end. (goto-char (point-max)) (insert ess-commands) (save-buffer) (ess-install-byte-compile) (message (concat "ESS version "ess-new-version" installed.")) ))) ;;; ess-install.el ends here ess-17.11/lisp/ess-jags-d.el0000444005071500004540000003323513202324174012473 00000000000000;;; ess-jags-d.el --- ESS[JAGS] dialect ;; Copyright (C) 2008-2011 Rodney Sparapani ;; Author: Rodney Sparapani ;; Created: 13 March 2008 ;; Maintainer: ESS-help ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: (require 'ess-bugs-l) (require 'ess-utils) (require 'ess-inf) (setq auto-mode-alist (append '(("\\.[jJ][aA][gG]\\'" . ess-jags-mode)) auto-mode-alist)) (defvar ess-jags-command "jags" "Default JAGS program in PATH.") (make-local-variable 'ess-jags-command) (defvar ess-jags-monitor '("") "Default list of variables to monitor.") (make-local-variable 'ess-jags-monitor) (defvar ess-jags-thin 1 "Default thinning parameter.") (make-local-variable 'ess-jags-thin) (defvar ess-jags-chains 1 "Default number of chains.") (make-local-variable 'ess-jags-chains) (defvar ess-jags-burnin 10000 "Default burn-in.") (make-local-variable 'ess-jags-burnin) (defvar ess-jags-update 10000 "Default number of updates after burnin.") (make-local-variable 'ess-jags-update) (defvar ess-jags-system t "Default whether JAGS recognizes the system command.") (defvar ess-jags-font-lock-keywords (list ;; .jag files (cons "#.*\n" font-lock-comment-face) (cons "^[ \t]*\\(model\\|var\\)\\>" font-lock-keyword-face) (cons (concat "\\& " ess-bugs-file-root ".jog ") ;else "> " ess-bugs-file-root ".jog 2>&1 ") ; ;.txt not recognized by BOA and impractical to over-ride ; "&& (rm -f " ess-bugs-file-root ".ind; " ; "ln -s " ess-bugs-file-root "index.txt " ess-bugs-file-root ".ind; " ; "for i in " ess-jags-temp-chains "; do; " ; "rm -f " ess-bugs-file-root "$i.out; " ; "ln -s " ess-bugs-file-root "chain$i.txt " ess-bugs-file-root "$i.out; done) " ess-bugs-batch-post-command) (comint-send-input) )) (defun ess-jags-na-bug () "ESS[JAGS]: Perform Next-Action for .jag" (if (equal 0 (buffer-size)) (ess-jags-switch-to-suffix ".jag") ;else (ess-save-and-set-local-variables) (ess-jags-switch-to-suffix ".jmd" ess-jags-chains ess-jags-monitor ess-jags-thin ess-jags-burnin ess-jags-update)) ) (defun ess-jags-mode () "ESS[JAGS]: Major mode for JAGS." (interactive) (kill-all-local-variables) (ess-setq-vars-local '((comment-start . "#"))) (setq major-mode 'ess-jags-mode) (setq mode-name "ESS[JAGS]") (use-local-map ess-bugs-mode-map) (setq font-lock-auto-fontify t) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(ess-jags-font-lock-keywords nil t)) (setq ess-language "S") ; mimic S for ess-smart-underscore (run-hooks 'ess-bugs-mode-hook) (if (not (w32-shell-dos-semantics)) (add-hook 'comint-output-filter-functions 'ess-bugs-exit-notify-sh)) ) (setq features (delete 'ess-bugs-d features)) (provide 'ess-jags-d) ;;; ess-jags-d.el ends here ess-17.11/lisp/ess-julia.el0000444005071500004540000004555313202324174012440 00000000000000;; ess-julia.el --- ESS julia mode and inferior interaction ;; ;; Copyright (C) 2012-2015 Vitalie Spinu and the ESS Core team. ;; ;; Filename: ess-julia.el ;; Author: Vitalie Spinu (based on julia-mode.el from julia-lang project) ;; Maintainer: Vitalie Spinu ;; Created: 02-04-2012 (ESS 12.03) ;; Keywords: ESS, julia ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; This file is *NOT* part of GNU Emacs. ;; This file is part of ESS ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 3, or ;; (at your option) any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; ;; Customise inferior-julia-program-name to point to your julia binary ;; and start the inferior with M-x julia. ;; ;; As of Sept 2015, this file depends heavily on julia-mode.el from the Julia ;; sources. If you install ESS using `make', this will work fine, otherwise ;; ensure that julia-mode.el is on your path before loading this file. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Code: (require 'compile) (require 'ess-utils) (require 'ess-r-mode) ;;;--- ALL the following only if julia-mode is found and loaded correctly : ---------- (condition-case nil (progn (require 'julia-mode) (when (featurep 'julia-mode) (eval-when-compile (require 'cl)) (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (defun ess-julia-send-string-function (process string visibly) "Send the Julia STRING to the PROCESS. VISIBLY is not currently used." (let ((file (concat temporary-file-directory "julia_eval_region.jl"))) (with-temp-file file (insert string)) (process-send-string process (format ess-load-command file)))) ;;; HELP (defun ess-julia-get-help-topics (&optional proc) (append (with-current-buffer (ess-command "ESS.all_help_topics()\n") (split-string (buffer-string) "\n")) (ess-julia--get-objects proc))) (defun ess-julia--retrive-topics (url) (with-current-buffer (url-retrieve-synchronously url) (require 'url) (goto-char (point-min)) (let (out) (while (re-search-forward "toctree.*href=\"\\(.+\\)\">\\(.+\\)Introduction (let* ((pages (or ess-julia--manual-topics (setq ess-julia--manual-topics (ess-julia--retrive-topics "http://docs.julialang.org/en/latest/manual/")))) (page (ess-completing-read "Lookup:" pages nil t))) (browse-url (get-text-property 1 :manual page)))) (defun ess-julia-input-sender (proc string) (save-current-buffer (let* ((help-?-regexp "^ *\\(?:\\(?1: *?\\? *\\)\\(?2:.+\\)\\)") (help-?-match (string-match help-?-regexp string))) (cond (help-?-match (ess-display-help-on-object (match-string 2 string)) (process-send-string proc "\n")) (t ;; normal command (inferior-ess-input-sender proc string)))))) ;; julia 0.3.0 doesn't provide categories. Thus we don't support this anymore. ;; (defun ess-julia-reference-lookup-function (&rest args) ; args are not used ;; (interactive) ;; "Look up reference topics" ;; ;;
  • Introduction
  • ;; (let* ((pages (ess-get-words-from-vector "ESS.help_categories()\n"))) ;; (ess-display-help-on-object ;; (ess-completing-read "Category" pages nil t)))) ;;; COMPLETION (defun ess-julia-latexsub-completion () "Complete latex input, and returns in a format required by `completion-at-point-functions'." (if (julia-latexsub) ; julia-latexsub returns nil if it performed a completion, the point otherwise nil (lambda () t) ;; bypass other completion methods )) (defun ess-julia-object-completion () "Return completions at point in a format required by `completion-at-point-functions'. " (let ((proc (ess-get-next-available-process ess-dialect t)) (beg (ess-symbol-start))) (if proc (when beg (let* ((prefix (buffer-substring-no-properties beg (point))) (obj (and (string-match "\\(.*\\)\\..*$" prefix) (match-string 1 prefix))) (beg (if obj (+ beg 1 (length obj)) beg))) (list beg (point) (nreverse (mapcar 'car (ess-julia--get-objects proc obj))) :exclusive 'no))) (when (string-match "complet" (symbol-name last-command)) (message "No ESS process of dialect %s started" ess-dialect) nil)))) (defun ess-julia-objects (prefix &optional proc) "Given PREFIX get all cached objects from PROC." (when prefix (let ((proc (or proc (ess-get-next-available-process nil t)))) (if (string-match "\\(.*\\)\\..*$" prefix) (let ((module (match-string 1 prefix))) (mapcar (lambda (el) (concat module "." (car el))) (ess-julia--get-objects proc module))) (ess-julia--get-objects proc))))) (defun ess-julia--get-objects (&optional proc obj) "Return all available objects. Local caching might be used. If MODULE is givven, return only objects from that MODULE." (setq proc (or proc (ess-get-process))) (when (stringp proc) (setq proc (get-process proc))) (when (process-live-p proc) (let ((objects (process-get proc 'objects))) (if (process-get proc 'busy) (if obj (assoc obj objects) (process-get proc 'objects)) (if obj (or (cdr (assoc obj objects)) ;; don't cache composite objects and datatypes (ess-julia--get-components proc obj)) ;; this segment is entered when user completon at top level is ;; requested, either Tab or AC. Hence Main is always updated. (let ((modules (ess-get-words-from-vector "ESS.main_modules()\n" nil nil proc)) (loc (process-get proc 'last-objects-cache)) (lev (process-get proc 'last-eval))) (prog1 (apply #'nconc (mapcar (lambda (mod) ;; we are caching all modules, and reinit Main every ;; time user enters commands (copy-sequence (or (and (or (not (equal mod "Main")) (ignore-errors (time-less-p lev loc))) (cdr (assoc mod objects))) (ess-julia--get-components proc mod t)))) modules)) (process-put proc 'last-objects-cache (current-time))))))))) (defun ess-julia--get-components (proc obj &optional cache?) (with-current-buffer (ess-command (format "ESS.components(%s)\n" obj) nil nil nil nil proc) (goto-char (point-min)) (let (list) (while (re-search-forward "^\\([^ \t\n]+\\) +\\([^ \t\n]+\\)$" nil t) (push (cons (match-string 1) (match-string 2)) list)) (when cache? (let ((objects (process-get proc 'objects))) (push (cons obj list) objects) (process-put proc 'objects objects))) list))) (defun ess-julia-get-object-help-string (sym) "Help string for ac." (let ((proc (ess-get-next-available-process nil t))) (if (null proc) "No free ESS process found" (let ((buf (get-buffer-create " *ess-command-output*"))) (with-current-buffer (process-buffer proc) (ess-with-current-buffer buf (ess--flush-help-into-current-buffer sym nil t))) (with-current-buffer buf (ess-help-underline) (goto-char (point-min)) (buffer-string)))))) (defvar ac-source-ess-julia-objects '((prefix . ess-symbol-start) (requires . 2) (candidates . ess-ac-julia-objects) (document . ess-julia-get-object-help-string)) "Auto-completion source for julia objects") (defun ess-ac-julia-objects () (ess-julia-objects ac-prefix)) (defun company-ess-julia-objects (command &optional arg &rest ignored) (interactive (list 'interactive)) (cl-case command (interactive (company-begin-backend 'company-ess-julia-objects)) (prefix (unless (company-in-string-or-comment) (let ((start (ess-symbol-start))) (when start (buffer-substring-no-properties start (point)))))) (candidates (let ((proc (ess-get-next-available-process))) (when proc (all-completions arg (mapcar (lambda (x) (or (car-safe x) x)) (ess-julia-objects arg proc)))))) (doc-buffer (company-doc-buffer (ess-julia-get-object-help-string arg))))) ;;; ERRORS (defvar ess-julia-error-regexp-alist '(ess-julia-in ess-julia-at ess-julia-while-load) "List of symbols which are looked up in `compilation-error-regexp-alist-alist'.") (add-to-list 'compilation-error-regexp-alist-alist '(ess-julia-in "^\\s-*in [^ \t\n]* \\(at \\(.*\\):\\([0-9]+\\)\\)" 2 3 nil 2 1)) (add-to-list 'compilation-error-regexp-alist-alist '(ess-julia-at "^\\S-+\\s-+\\(at \\(.*\\):\\([0-9]+\\)\\)" 2 3 nil 2 1)) (add-to-list 'compilation-error-regexp-alist-alist '(ess-julia-while-load "^\\s-*\\(while loading\\s-\\(.*\\), in .* on line +\\([0-9]+\\)\\)" 2 3 nil 2 1)) ;;; ELDOC (defun ess-julia-eldoc-function () "Return the doc string, or nil. If an ESS process is not associated with the buffer, do not try to look up any doc strings." (interactive) (when (and ess-can-eval-in-background (ess-process-live-p) (not (ess-process-get 'busy))) (let ((funname (or (and ess-eldoc-show-on-symbol ;; aggressive completion (symbol-name (ess-symbol-at-point))) (car (ess--funname.start))))) (when funname (let* ((args (copy-sequence (nth 2 (ess-function-arguments funname)))) (W (- (window-width (minibuffer-window)) (+ 4 (length funname)))) (doc (concat (propertize funname 'face font-lock-function-name-face) ": "))) (when args (setq args (sort args (lambda (s1 s2) (< (length s1) (length s2))))) (setq doc (concat doc (pop args))) (while (and args (< (+ (length doc) (length (car args))) W)) (setq doc (concat doc " " (pop args)))) (when (and args (< (length doc) W)) (setq doc (concat doc " {--}"))) doc)))))) ;;; IMENU (defvar ess-julia-imenu-generic-expression ;; don't use syntax classes, screws egrep '(("Function (_)" "[ \t]*function[ \t]+\\(_[^ \t\n]*\\)" 1) ("Function" "^[ \t]*function[ \t]+\\([^_][^\t\n]*\\)" 1) ("Const" "[ \t]*const \\([^ \t\n]*\\)" 1) ("Type" "^[ \t]*[a-zA-Z0-9_]*type[a-zA-Z0-9_]* \\([^ \t\n]*\\)" 1) ("Require" " *\\(\\brequire\\)(\\([^ \t\n)]*\\)" 2) ("Include" " *\\(\\binclude\\)(\\([^ \t\n)]*\\)" 2) )) ;;; CORE (defvar ess-julia-customize-alist '((comint-use-prompt-regexp . t) (ess-eldoc-function . 'ess-julia-eldoc-function) (inferior-ess-primary-prompt . "a> ") ;; from julia> (inferior-ess-secondary-prompt . nil) (inferior-ess-prompt . "\\w*> ") (ess-local-customize-alist . 'ess-julia-customize-alist) (inferior-ess-program . inferior-julia-program-name) (ess-get-help-topics-function . 'ess-julia-get-help-topics) (ess-help-web-search-command . "http://docs.julialang.org/en/latest/search/?q=%s") (ess-manual-lookup-command . 'ess-julia-manual-lookup-function) ;; (ess-reference-lookup-command . 'ess-julia-reference-lookup-function) (ess-load-command . "include(\"%s\")\n") (ess-funargs-command . "ESS.fun_args(\"%s\")\n") (ess-dump-error-re . "in \\w* at \\(.*\\):[0-9]+") (ess-error-regexp . "\\(^\\s-*at\\s-*\\(?3:.*\\):\\(?2:[0-9]+\\)\\)") (ess-error-regexp-alist . ess-julia-error-regexp-alist) (ess-imenu-generic-expression . ess-julia-imenu-generic-expression) (ess-mode-syntax-table . julia-mode-syntax-table) (ess-mode-completion-syntax-table . ess-julia-completion-syntax-table) ;; (inferior-ess-objects-command . inferior-ess-r-objects-command) ;; (inferior-ess-search-list-command . "search()\n") (inferior-ess-help-command . "ESS.help(\"%s\")\n") ;; (inferior-ess-help-command . "help(\"%s\")\n") (ess-language . "julia") (ess-dialect . "julia") (ess-suffix . "jl") (ess-ac-sources . '(ac-source-ess-julia-objects)) (ess-company-backends . '(company-ess-julia-objects)) (ess-dump-filename-template . (replace-regexp-in-string "S$" ess-suffix ; in the one from custom: ess-dump-filename-template-proto)) (ess-mode-editing-alist . nil) (ess-change-sp-regexp . nil );ess-r-change-sp-regexp) (ess-help-sec-regex . ess-help-r-sec-regex) (ess-help-sec-keys-alist . ess-help-r-sec-keys-alist) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-function-pattern . ess-r-function-pattern) (ess-object-name-db-file . "ess-jl-namedb.el" ) (ess-smart-operators . ess-r-smart-operators) (inferior-ess-help-filetype . nil) (inferior-ess-exit-command . "exit()\n") ;;harmful for shell-mode's C-a: -- but "necessary" for ESS-help? (inferior-ess-start-file . nil) ;; "~/.ess-R" (inferior-ess-start-args . "") (inferior-ess-language-start . nil) (ess-STERM . "iESS") (ess-editor . ess-r-editor) (ess-pager . ess-r-pager) (ess-getwd-command . "pwd()\n") (ess-setwd-command . "cd(expanduser(\"%s\"))\n") ) "Variables to customize for Julia -- set up later than emacs initialization.") (defcustom inferior-julia-args "" "String of arguments (see 'julia --help') used when starting julia." :group 'ess-julia :type 'string) (defvar ess-julia-completion-syntax-table (let ((table (make-syntax-table ess-r-syntax-table))) (modify-syntax-entry ?. "_" table) ;; (modify-syntax-entry ?: "_" table) ;; (modify-syntax-entry ?$ "_" table) (modify-syntax-entry ?@ "_" table) table) "Syntax table used for completion and help symbol lookup. It makes underscores and dots word constituent chars.") ;;;###autoload (define-derived-mode ess-julia-mode julia-mode "ESS[julia]" "Major mode for editing julia source. See `ess-mode' for more help." (ess-mode ess-julia-customize-alist nil t) ;; for emacs >= 24 (remove-hook 'completion-at-point-functions 'ess-filename-completion 'local) ;; should be first (add-hook 'completion-at-point-functions 'ess-julia-object-completion nil 'local) (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local) (if (fboundp 'ess-add-toolbar) (ess-add-toolbar)) (set (make-local-variable 'end-of-defun-function) 'ess-end-of-function) (set (make-local-variable 'ess-julia-basic-offset) 4) (setq imenu-generic-expression ess-julia-imenu-generic-expression) (imenu-add-to-menubar "Imenu-jl") (run-hooks 'ess-julia-mode-hook)) (defvar ess-julia-mode-hook nil) (defvar ess-julia-post-run-hook nil "Functions run in process buffer after starting julia process.") ;;;###autoload (defun julia (&optional start-args) "Call 'julia'. Optional prefix (C-u) allows to set command line arguments, such as --load=. This should be OS agnostic. If you have certain command line arguments that should always be passed to julia, put them in the variable `inferior-julia-args'." (interactive "P") ;; get settings, notably inferior-julia-program-name : (if (null inferior-julia-program-name) (error "'inferior-julia-program-name' does not point to 'julia' or 'julia-basic' executable") (setq ess-customize-alist ess-julia-customize-alist) (ess-write-to-dribble-buffer ;; for debugging only (format "\n(julia): ess-dialect=%s, buf=%s, start-arg=%s\n current-prefix-arg=%s\n" ess-dialect (current-buffer) start-args current-prefix-arg)) (let* ((jl-start-args (concat inferior-julia-args " " ; add space just in case (if start-args (read-string (concat "Starting Args" (if inferior-julia-args (concat " [other than '" inferior-julia-args "']")) " ? ")) nil)))) (inferior-ess jl-start-args) (remove-hook 'completion-at-point-functions 'ess-filename-completion 'local) ;; should be first (add-hook 'completion-at-point-functions 'ess-julia-object-completion nil 'local) (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local) (add-hook 'completion-at-point-functions 'ess-julia-latexsub-completion nil 'local) (setq comint-input-sender 'ess-julia-input-sender) (ess--tb-start) (set (make-local-variable 'ess-julia-basic-offset) 4) ;; remove ` from julia's logo (goto-char (point-min)) (while (re-search-forward "`" nil t) (replace-match "'")) ;; remove an offending unmatched parenthesis (goto-char (point-min)) (forward-line 4) (when (re-search-forward "(" nil t) (replace-match "|")) (goto-char (point-max)) ;; --> julia helpers from ../etc/ess-julia.jl : (ess--inject-code-from-file (format "%sess-julia.jl" ess-etc-directory)) (with-ess-process-buffer nil (run-mode-hooks 'ess-julia-post-run-hook)) ))) (add-to-list 'auto-mode-alist '("\\.jl\\'" . ess-julia-mode)) )) (error nil)) (provide 'ess-julia) ;;; ess-julia.el ends here ess-17.11/lisp/ess-lsp-l.el0000444005071500004540000000543613202324174012357 00000000000000;;; ess-lsp-l.el --- Support for editing Lisp source code ;; Copyright (C) 1997 A.J. Rossini. ;; Copyright (C) 1998--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 1 Sept 1997 ;; Maintainer: ESS-core ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Configurations for editing XLispStat source code. Contains any underlying ;; changes that need to be made. ;;; Code: ; Requires and autoloads ;; Contents "translated" from lisp-mode.el (require 'lisp-mode) ; Configuration variables (defvar Lisp-editing-alist '((paragraph-start . (concat "^$\\|" page-delimiter)) (paragraph-separate . (concat "^$\\|" page-delimiter)) (paragraph-ignore-fill-prefix . t) (fill-paragraph-function . 'lisp-fill-paragraph) (adaptive-fill-mode . nil) (indent-line-function . 'lisp-indent-line) (indent-region-function . 'lisp-indent-region) (require-final-newline . mode-require-final-newline) (comment-start . ";") (comment-start-skip . "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *") (comment-column . 40) (comment-indent-function . 'lisp-comment-indent) (parse-sexp-ignore-comments . t) (ess-style . ess-default-style) (ess-local-process-name . nil) ;;(ess-keep-dump-files . 'ask) (ess-mode-syntax-table . lisp-mode-syntax-table) (font-lock-defaults . '(lisp-font-lock-keywords))) "General options for editing LispStat, XLispStat, and ViSta source files.") (provide 'ess-lsp-l) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-lsp-l.el ends here ess-17.11/lisp/ess-mode.el0000444005071500004540000012660513202324174012256 00000000000000;;; ess-mode.el --- Support for editing ESS source code ;; Copyright (C) 1989-1994 Doug Bates, Ed Kademan, Frank Ritter, David Smith. ;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2017 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: David Smith ;; Created: 7 Jan 1994 ;; Maintainer: ESS-core ;; Package-Requires: ((julia-mode "0.3")) ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for editing ESS source code. ;;; Code: ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl)) (require 'ess-custom) (require 'ess-utils) (require 'ess-generics) (require 'ess-inf) ;; FIXME: should this be optional? (require 'ess-noweb-mode) (autoload 'SAS-menu "ess-sas-d.el" "(autoload)" t) ; ESS mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; In this section: ;;;; ;;;; * The major mode ess-mode ;;;; * Commands for ess-mode ;;;; * Code evaluation commands ;;;; * Indenting code and commands ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;*;; Major mode definition (defvar ess-mode-map (let ((map (make-sparse-keymap))) ;; By popular demand: (define-key map (kbd "RET") 'ess-newline-and-indent) (define-key map [remap yank] 'ess-yank) (define-key map "\C-c\C-r" 'ess-eval-region) (define-key map "\C-c\M-r" 'ess-eval-region-and-go) (define-key map "\C-c\C-b" 'ess-eval-buffer) (define-key map "\C-c\M-b" 'ess-eval-buffer-and-go) (define-key map (kbd "C-c C-") 'ess-eval-buffer-from-beg-to-here) (define-key map (kbd "C-c C-") 'ess-eval-buffer-from-here-to-end) (define-key map "\C-c\C-f" 'ess-eval-function) (define-key map "\C-c\M-f" 'ess-eval-function-and-go) (define-key map "\C-c\C-c" 'ess-eval-region-or-function-or-paragraph-and-step) (define-key map "\C-c\C-p" 'ess-eval-paragraph-and-step) (define-key map "\C-c\M-p" 'ess-eval-paragraph-and-go) (define-key map "\C-\M-x" 'ess-eval-region-or-function-or-paragraph) (define-key map "\C-c\C-n" 'ess-eval-line-and-step) (define-key map "\C-c\C-j" 'ess-eval-line) (define-key map [(control return)] 'ess-eval-region-or-line-and-step) (define-key map "\C-c\M-j" 'ess-eval-line-and-go) ;; FIXME: The next three can only work in S/R - mode (define-key map "\C-\M-a" 'ess-goto-beginning-of-function-or-para) (define-key map "\C-\M-e" 'ess-goto-end-of-function-or-para) (define-key map "\C-xnd" 'ess-narrow-to-defun-or-para) (define-key map "\C-xnf" 'ess-narrow-to-defun-or-para) (define-key map "\C-c\C-y" 'ess-switch-to-ESS-deprecated) (define-key map "\C-c\C-z" 'ess-switch-to-inferior-or-script-buffer) (define-key map "\C-c\C-l" 'ess-load-file) ;;; Make an alias because C-c C-l is taken up by comint in inferiors (define-key map "\C-c\M-l" 'ess-load-file) (define-key map "\C-c\C-v" 'ess-display-help-on-object) (define-key map "\C-c\C-s" 'ess-switch-process) (define-key map "\C-c\t" 'ess-complete-object-name-deprecated) (unless (>= emacs-major-version 24) (define-key map "\M-\t" 'comint-dynamic-complete)) (define-key map "\M-?" 'ess-list-object-completions) (define-key map "\C-c\C-k" 'ess-force-buffer-current) (define-key map "\C-c`" 'ess-show-traceback) (define-key map [(control ?c) ?~] 'ess-show-call-stack) (define-key map "{" 'ess-electric-brace) (define-key map "}" 'ess-electric-brace) (define-key map "\C-\M-q" 'ess-indent-exp) (define-key map "\C-\M-h" 'ess-mark-function-or-para) (define-key map "\t" 'ess-indent-or-complete) (define-key map "\C-c\C-q" 'ess-quit) (define-key map "\M-\r" 'ess-use-this-dir) (define-key map "," 'ess-smart-comma) (define-key map "\C-c\C-d" 'ess-doc-map) (define-key map "\C-c\C-e" 'ess-extra-map) (define-key map "\C-c\C-t" 'ess-dev-map) map) "Keymap for `ess-mode'.") ;; Redefine substituted commands (substitute-key-definition 'indent-new-comment-line 'ess-indent-new-comment-line ess-mode-map global-map) (defvar ess-extra-map (let (ess-extra-map) (define-prefix-command 'ess-extra-map) (define-key ess-extra-map "\C-d" 'ess-dump-object-into-edit-buffer) (define-key ess-extra-map "d" 'ess-dump-object-into-edit-buffer) (define-key ess-extra-map "\C-e" 'ess-execute) (define-key ess-extra-map "e" 'ess-execute) (define-key ess-extra-map "\C-i" 'ess-install-library) (define-key ess-extra-map "i" 'ess-install-library) (define-key ess-extra-map "\C-l" 'ess-load-library) (define-key ess-extra-map "l" 'ess-load-library) (define-key ess-extra-map "\C-r" 'inferior-ess-reload) (define-key ess-extra-map "r" 'inferior-ess-reload) (define-key ess-extra-map "\C-s" 'ess-set-style) (define-key ess-extra-map "s" 'ess-set-style) (define-key ess-extra-map "\C-t" 'ess-build-tags-for-directory) (define-key ess-extra-map "t" 'ess-build-tags-for-directory) (define-key ess-extra-map "\C-w" 'ess-execute-screen-options) (define-key ess-extra-map "w" 'ess-execute-screen-options) (define-key ess-extra-map "/" 'ess-set-working-directory) ess-extra-map) "ESS extra map") (easy-menu-define ess-mode-menu ess-mode-map "Menu for use in `ess-mode'." '("ESS" ; ESS-mode ["What is this? (beta)" ess-mouse-me t] ["Load file" ess-load-file t] ["Eval region | func | para" ess-eval-region-or-function-or-paragraph t] ["Eval region | func | para & step" ess-eval-region-or-function-or-paragraph-and-step t] ["Eval region | line" ess-eval-region-or-line-and-step t] ["Enter expression" ess-execute t] ;; sub menus "------" ("Process" ["Goto end of process buffer" ess-switch-to-end-of-ESS t] ["Switch to process buffer" ess-switch-to-inferior-or-script-buffer t] ["Switch Process" ess-switch-process t] ["Recreate R and S versions known to ESS" (ess-r-s-versions-creation+menu) t] ("Start Process" ["R" R :help "Start a new R process" :active t] ["S" S :help "Start a new S process" :active t] ["Sqpe" Sqpe ess-microsoft-p] ;; :help "Start a new Sqpe process" :active t ["S+6-exisiting" S+6-existing ess-microsoft-p] ;; :help "Access an existing S process" :active t ["SAS" SAS-menu t] ;; :help "Start a new SAS process" :active t ;; The following menu item "Other" is a place-holder that will ;; be replaced with the other versions of R and Sqpe that can be run. ;; See `ess-r-versions-create' and ess-site.el ("Other" ["No other R or Sqpe versions" nil nil]) ["About" (ess-goto-info "Starting up") t] ;; :help "Read about starting a new ESS process" :active t] ) ("Eval visibly " :filter ess--generate-eval-visibly-submenu)) "------" ("ESS Eval" ["Eval region | func | para" ess-eval-region-or-function-or-paragraph t] ["Eval region | func | para & step" ess-eval-region-or-function-or-paragraph-and-step t] ["Eval region | line" ess-eval-region-or-line-and-step t] "-----" ["Eval buffer" ess-eval-buffer t] ["Eval buffer till here" ess-eval-buffer-from-beg-to-here t] ["Eval buffer from here" ess-eval-buffer-from-here-to-end t] ["Eval region" ess-eval-region t] ["Eval function" ess-eval-function t] ["Eval line" ess-eval-line t] ["Eval line & step" ess-eval-line-and-step t] ["Eval paragraph" ess-eval-paragraph t] ["Eval paragraph & step" ess-eval-paragraph-and-step t] ["Eval chunk" ess-eval-chunk ess-noweb-mode] ["Eval chunk and step" ess-eval-chunk-and-step ess-noweb-mode] ["Eval thread" ess-eval-thread ess-noweb-mode] ["About" (ess-goto-info "Evaluating code") t] ) ("Eval and Go" ["Eval buffer" ess-eval-buffer-and-go t] ["Eval region" ess-eval-region-and-go t] ["Eval function" ess-eval-function-and-go t] ["Eval line" ess-eval-line-and-go t] ["Eval paragraph" ess-eval-paragraph-and-go t] ["Eval chunk" ess-eval-chunk-and-go ess-noweb-mode] ["Eval thread" ess-eval-thread-and-go ess-noweb-mode] ["About" (ess-goto-info "Evaluating code") t] ) ("Motion" ["Beginning of function or para" ess-goto-beginning-of-function-or-para t] ["End of function or para" ess-goto-end-of-function-or-para t] "-----" ["Backward list" backward-list t] ["Forward list" forward-list t] ["Next parenthesis" down-list t] ["Enclosing parenthesis" backward-up-list t] ["Backward sexp" backward-sexp t] ["Forward sexp" forward-sexp t] ["About" (Info-goto-node "(Emacs)Lists") t] ) ("ESS Edit" ["Edit new object" ess-dump-object-into-edit-buffer t] ["Complete Filename" comint-replace-by-expanded-filename t] ["Complete File or Object" ess-indent-or-complete t] ["Kill sexp" kill-sexp t] ["Mark function" ess-mark-function-or-para t] ["Indent expression" ess-indent-exp t] ["Indent line" ess-indent-command t] ["Toggle Auto-Fill Mode" auto-fill-mode t] ["Undo" undo t] ["About" (ess-goto-info "Edit buffer") t] ) "------" ("start-dev" :visible nil) ("end-dev" :visible nil) "------" ("Font Lock" :active ess-font-lock-keywords :filter ess--generate-font-lock-submenu) "------" ["Describe" describe-mode t] ["About editing" (ess-goto-info "Editing") t] ["Read ESS info" (ess-goto-info "") t] ["Send bug report" ess-submit-bug-report t])) (defun ess-mode (&optional alist proc-name is-derived) "Major mode for editing ESS source. Optional arg ALIST describes how to customize the editing mode. Optional arg PROC-NAME is name of associated inferior process. \\{ess-mode-map} Extra binding to note: 'ESC C-\\' indent-region. Entry to this mode runs the hooks in ess-mode-hook. You can send text to the inferior ESS process from other buffers containing ESS source. `ess-eval-region' sends the current region to the ESS process. `ess-eval-buffer' sends the current buffer to the ESS process. `ess-eval-function' sends the current function to the ESS process. `ess-eval-line' sends the current line to the ESS process. `ess-beginning-of-function' and `ess-end-of-function' move the point to the beginning and end of the current ESS function. `ess-switch-to-ESS' switches the current buffer to the ESS process buffer. `ess-switch-to-end-of-ESS' switches the current buffer to the ESS process buffer and puts point at the end of it. `ess-eval-region-and-go', `ess-eval-buffer-and-go', `ess-eval-function-and-go', and `ess-eval-line-and-go' switch to the S process buffer after sending their text. `ess-load-file' sources a file of commands to the ESS process. \\[ess-indent-command] indents for ESS code. \\[backward-delete-char-untabify] converts tabs to spaces as it moves back. Comments are indented in a similar way to Emacs-lisp mode: `###' beginning of line `##' the same level of indentation as the code `#' the same column on the right, or to the right of such a column if that is not possible.(default value 40). \\[indent-for-comment] command automatically inserts such a `#' in the right place, or aligns such a comment if it is already inserted. \\[ess-indent-exp] command indents each line of the syntactic unit following point. Variables controlling indentation style: `ess-tab-always-indent' Non-nil means TAB in ESS mode should always reindent the current line, regardless of where in the line point is when the TAB command is used. `ess-auto-newline' Non-nil means automatically newline before and after braces inserted in S code. `ess-indent-offset' Indentation of ESS statements within surrounding block. The surrounding block's indentation is the indentation of the line on which the open-brace appears. `ess-offset-block' Indentation of blocks opened with curly braces or anonymous parentheses. `ess-offset-arguments' Indentation of function arguments or bracket indices. `ess-offset-arguments-newline' Indentation of function arguments or bracket indices when the opening delimiter is immediately followed by a newline. `ess-offset-continued' Indentation style for continued statements. `ess-align-nested-calls' Functions whose nested calls should be aligned. `ess-align-arguments-in-calls' Calls in which arguments should be aligned. `ess-align-continuations-in-calls' Whether ignore indentation after an operator in calls `ess-align-blocks' Blocks that should always be aligned vertically. `ess-indent-from-lhs' Whether function calls given as argument should be indented from the parameter name. `ess-indent-from-chain-start' Whether to indent arguments from the first of several consecutive calls. `ess-indent-with-fancy-comments' Non-nil means distinguish between #, ##, and ### for indentation. Furthermore, \\[ess-set-style] command enables you to set up predefined ess-mode indentation style. At present, predefined style are `BSD', `GNU', `K&R', `C++', `CLB' (quoted from C language style)." (setq alist (or alist (buffer-local-value 'ess-local-customize-alist (current-buffer)) (error "Customise alist is not specified, nor ess-local-customize-alist is set."))) (unless is-derived (kill-all-local-variables)) ;; NOTICE THIS! *** NOTICE THIS! *** NOTICE THIS! *** (ess-setq-vars-local alist) ;; fixme: This is dialect-specific ;; must happen here, since the mode map is set up too early: (if ess-r-args-electric-paren (define-key ess-mode-map "(" 'ess-r-args-auto-show)) (ess-write-to-dribble-buffer (format "(ess-mode-1): ess-language=%s, ess-dialect=%s buf=%s \n" ess-language ess-dialect (current-buffer))) ;; (ess-write-to-dribble-buffer ;; (format "(ess-mode-1.2): ess-process=%s \n" ;; (ess-local-process-name ess-local-process-name "none"))) (ess-write-to-dribble-buffer (format "(ess-mode-1.5): alist=%s \n" alist)) (unless is-derived (setq major-mode 'ess-mode) (setq mode-name (concat "ESS[" ess-language "]"))) ; was ess-dialect ;; The following line does the next 20 or so :-). (ess-write-to-dribble-buffer (format "(ess-mode-1.6): editing-alist=%s \n" ess-mode-editing-alist)) (ess-setq-vars-local ess-mode-editing-alist) (ess-set-style ess-style t) (use-local-map ess-mode-map) (when ess-mode-syntax-table (set-syntax-table ess-mode-syntax-table)) ;; Keep out of the code. (make-local-variable 'indent-tabs-mode) (setq indent-tabs-mode nil) (put 'ess-local-process-name 'permanent-local t) ; protect from RCS (setq mode-line-process '(" [" (:eval (ess--get-mode-line-indicator)) ess--local-mode-line-process-indicator "]")) ;; completion (if (>= emacs-major-version 24) (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local) (add-hook 'comint-dynamic-complete-functions 'ess-complete-filename nil 'local) (delq t comint-dynamic-complete-functions)) (set (make-local-variable 'comint-completion-addsuffix) (cons "/" "")) (add-hook 'ess-idle-timer-functions 'ess-synchronize-dirs nil 'local) (ess-load-extras) (run-mode-hooks 'ess-mode-hook) (ess-write-to-dribble-buffer "\nFinished setting up ESS-mode.\n")) (defun ess--get-mode-line-indicator () "Get `ess--mode-line-process-indicator' from process buffer. Internal function to be used for dynamic mode-line dysplay in ess-mode." (if ess-local-process-name (let* ((proc (get-process ess-local-process-name)) (buff (when proc (process-buffer proc)))) (if (and proc (buffer-live-p buff)) (with-current-buffer buff (mapcar 'eval ess--mode-line-process-indicator)) "none")) "none")) ;;*;; Dispatching infrastructure for dialects (defvar ess--make-local-vars-permanent nil "If this variable is non-nil in a buffer make all variable permannet. Used in noweb modes.") (make-variable-buffer-local 'ess--make-local-vars-permanent) (put 'ess--make-local-vars-permanent 'permanent-local t) (defun ess-setq-vars-local (alist &optional buf) "Set language variables from ALIST, in buffer BUF, if desired." (if buf (set-buffer buf)) (mapc (lambda (pair) (make-local-variable (car pair)) (set (car pair) (eval (cdr pair))) (when ess--make-local-vars-permanent (put (car pair) 'permanent-local t)) ;; hack for Rnw ) alist) (ess-write-to-dribble-buffer (format "(ess-setq-vars-LOCAL): language=%s, dialect=%s, buf=%s, comint..echoes=%s, comint..sender=%s\n" ess-language ess-dialect buf comint-process-echoes comint-input-sender))) (defun ess-setq-vars-default (alist &optional buf) "Set language variables from ALIST, in buffer BUF, if desired." (ess-write-to-dribble-buffer (format "ess-setq-vars-default 0: ess-language=%s, -dialect=%s, buf=%s, comint..echoes=%s, comint..sender=%s\n" ess-language ess-dialect buf comint-process-echoes comint-input-sender)) (if buf (set-buffer buf)) (mapc (lambda (pair) (set-default (car pair) (eval (cdr pair)))) alist) (ess-write-to-dribble-buffer (format "ess-setq-vars-default 1: ess-language=%s, -dialect=%s, buf=%s, comint..echoes=%s, comint..sender=%s\n" ess-language ess-dialect buf comint-process-echoes comint-input-sender))) ;;*;; User commands in ess-mode ;;;*;;; Miscellaneous (defun ess-install-library () "Install library/package for current dialect. Currently works only for R." (interactive) (cond ((fboundp ess-install-library-function) (funcall ess-install-library-function)) (t (error "Sorry, not available for %s" ess-dialect)))) ;;;*;;; Motion / manipulation commands (defun ess-beginning-of-function (&optional no-error) "Leave (and return) the point at the beginning of the current ESS function. If the optional argument NO-ERROR is non-nil, the function returns nil when it cannot find a function beginning." ;; FIXME: should not throw error in accordance with beginning-of-defun and ;; beginning-of-defun-function specification ;; FIXME: should __WORK__ in the crucial case: large function w/ internal function defs (interactive) (let ((init-point (point)) (in-set-S4 nil) beg end done) ;; Note that we must be sure that we are past the 'function (' text, ;; such that ess-function-pattern is found in BACKwards later. ;; In case we're sitting in a function or setMethod() header, ;; we need to move further. ;; But not too far! {wrongly getting into next function} (if (search-forward "(" (ess-line-end-position 2) t) ; at most end of next line (forward-char 1)) ;; TODO: replace the above by hopefully more sucessful logic: ;; 1. If we have 'function *(' in the same line, move to end of that line ;; 2. if *not*, skip all comment lines (concat space comment-char .* "\n") ;; and only* then do something like the ;; (search-forward '(' .. (..line-end.. 2) ) above (setq end (point)) ; = init-point when nothing found (ess-write-to-dribble-buffer (format "ess-BEG-of-fun after 'search-FWD (': Ini-pt %d, (p)-Ini-pt = %d\n" init-point (- end init-point))) (if (and (> end 1) (re-search-backward ;; in case of setMethod() etc .. ess-r-set-function-start ;; at most 1 line earlier {2 is too much: finds previous sometimes} (+ 1 (ess-line-end-position -1)) t)) (progn ;; yes we *have* an S4 setMethod(..)-like (setq in-set-S4 t beg (point)) (ess-write-to-dribble-buffer (format " set*() function start at position %d" beg)) ;; often need to move even further to have 'function(' to our left ;; (if (search-forward "function" end t) ;; (ess-write-to-dribble-buffer ;; (format " -> 'function' already at pos %d\n" (point))) ;; ;; else need to move further (goto-char end) ;; search 4 lines, we are pretty sure now: (search-forward "function" (ess-line-end-position 4) t) ;; ) (search-forward "(" (ess-line-end-position) t)) ;; else: regular function; no set*Method(..) (ess-write-to-dribble-buffer "ELSE not in setMethod() header ...\n")) (while (not done) ;; Need this while loop to skip over local function definitions ;; In the case of non-success, it is inefficiently ;; going back in the buffer through all function definitions... (unless (and (re-search-backward ess-function-pattern (point-min) t) (not (ess-inside-string-or-comment-p (point)))) (goto-char init-point) (if no-error (setq done t beg nil) ;; else [default]: (error "Point is not in a function according to 'ess-function-pattern'."))) (unless done (setq beg (point)) (ess-write-to-dribble-buffer (format "\tMatch,Pt:(%d,%d),%d\n" (match-beginning 0) (match-end 0) beg)) (setq in-set-S4 (looking-at ess-r-set-function-start)) (forward-list 1) ; get over arguments ;; The following used to bomb "Unbalanced parentheses", n1, n2 ;; when the above (search-forward "(" ..) wasn't delimited : (unless in-set-S4 (forward-sexp 1)) ; move over braces ;;DBG (ess-write-to-dribble-buffer "|") (setq end (point)) (goto-char beg) ;; current function must begin and end around point (setq done (and (>= end init-point) (<= beg init-point))))) beg)) (defun ess-end-of-function (&optional beginning no-error) "Leave the point at the end of the current ESS function. Optional argument for location of beginning. Return '(beg end)." (interactive) (if beginning (goto-char beginning) (setq beginning (ess-beginning-of-function no-error))) (if beginning ;; *hack* only for S (R || S+): are we in setMethod(..) etc? (let ((in-set-S4 (looking-at ess-r-set-function-start)) (end-pos) (npos)) (ess-write-to-dribble-buffer (format "ess-END-of-fun: S4=%s, beginning = %d\n" in-set-S4 beginning)) (forward-list 1) ; get over arguments || whole set*(..) (unless in-set-S4 (forward-sexp 1)) ; move over braces (ess-write-to-dribble-buffer (format "ess-END-of-fun: found #1 : %d\n" (point))) ;; For one-line functions withOUT '{ .. }' body -- added 2008-07-23 -- ;; particularly helpful for C-c C-c (ess-eval-function-or-paragraph-and-step): (setq end-pos (ess-line-end-position)) (while (< (point) end-pos) ; if not at end of line, move further forward (goto-char ;; careful not to move too far; e.g. *not* over empty lines: (min (save-excursion (forward-sexp 1) (point)) (save-excursion (forward-paragraph 1) (point))))) (list beginning (point))) ;; else: 'no-error': we are not in a function nil)) (defun ess-goto-beginning-of-function-or-para () "If inside a function go to the beginning of it, otherwise go to the beginning of paragraph." (interactive) (or (ess-beginning-of-function 'no-error) (backward-paragraph)) (point)) (defun ess-goto-end-of-function-or-para () "If inside a function go to end of it, otherwise go to the end of paragraph." (interactive) (or (ess-end-of-function nil 'no-error) (forward-paragraph)) (point)) (defun ess-mark-function-or-para () "Put mark at end of ESS function, point at beginning." (interactive) (ess-goto-beginning-of-function-or-para) (push-mark (point)) (ess-goto-end-of-function-or-para) (exchange-point-and-mark)) (define-obsolete-function-alias 'ess-mark-function 'ess-mark-function-or-para "15.09") (defun ess-narrow-to-defun-or-para () "Make text outside current function invisible. If text is already narrowed, this is removed before narrowing to the current function." (interactive) ;; if point is not in a function, ess-end-of-function catches the error. (save-excursion (widen) (let* ((beg (ess-goto-beginning-of-function-or-para)) (end (ess-goto-end-of-function-or-para))) (narrow-to-region beg end)))) (define-obsolete-function-alias 'ess-narrow-to-defun 'ess-narrow-to-defun-or-para "15.09") (defun ess-newline-and-indent () (interactive) (cond ((string= ess-dialect "R") (ess-roxy-newline-and-indent)) (t (newline-and-indent)))) (defun ess-indent-new-comment-line () (interactive) (cond ((string= ess-dialect "R") (ess-roxy-indent-new-comment-line)) (t (indent-new-comment-line)))) ;;;*;;; Formatting / indentation (defun ess-set-style (&optional style quiet) "Set up the `ess-mode' style variables from the `ess-style' variable or if STYLE argument is given, use that. It makes the ESS indentation style variables buffer local." (interactive) (let ((ess-styles (mapcar 'symbol-name (mapcar 'car ess-style-alist)))) (unless style (setq style (intern (ess-completing-read "Set ESS mode indentation style" ess-styles nil t nil nil ess-default-style)))) (setq style (or style ess-style)) (make-local-variable 'ess-style) (if (memq (symbol-name style) ess-styles) (setq ess-style style) (error (format "Bad ESS style: %s" style))) (if (not quiet) (message "ESS-style: %s" ess-style)) ;; finally, set the indentation style variables making each one local (mapc (lambda (ess-style-pair) (make-local-variable (car ess-style-pair)) (set (car ess-style-pair) (cdr ess-style-pair))) (cdr (assq ess-style ess-style-alist))) ess-style)) ;; FIXME: Move into ess-indent-or-complete, indentation functions are overly ;; scattered around (defun ess-indent-command (&optional whole-exp) "Indent current line as ESS code, or in some cases insert a tab character. If `ess-tab-always-indent' is non-nil (the default), always indent current line. Otherwise, indent the current line only if point is at the left margin or in the line's indentation; otherwise insert a tab. A numeric argument, regardless of its value, means indent rigidly all the lines of the expression starting after point so that this line becomes properly indented. The relative indentation among the lines of the expression are preserved." (interactive "P") (if whole-exp ;; If arg, always indent this line as S ;; and shift remaining lines of expression the same amount. (let ((shift-amt (ess-indent-line)) beg end) (save-excursion (if ess-tab-always-indent (beginning-of-line)) (setq beg (point)) (backward-up-list 1) (forward-list 1) (setq end (point)) (goto-char beg) (forward-line 1) (setq beg (point))) (if (> end beg) (indent-code-rigidly beg end shift-amt))) (if (and (not ess-tab-always-indent) (save-excursion (skip-chars-backward " \t") (not (bolp)))) (insert-tab) ;; call ess-indent-line (funcall indent-line-function)))) (defun ess-indent-or-complete () "When region is selected indent the region, otherwise, if `ess-tab-complete-in-script' is non-nil, try to indent, if code is already indented, complete instead. The default of `ess-tab-complete-in-script' is nil. Also see `ess-first-tab-never-complete'." (interactive) (if (use-region-p) (indent-region (region-beginning) (region-end)) (let ((shift (ess-indent-command))) (when (and ess-tab-complete-in-script (numberp shift) ;; can be nil if ess-tab-always-indent is nil (equal shift 0) (or (eq last-command 'ess-indent-or-complete) (null ess-first-tab-never-complete) (and (eq ess-first-tab-never-complete 'unless-eol) (looking-at "\\s-*$")) (and (eq ess-first-tab-never-complete 'symbol) (not (looking-at "\\w\\|\\s_"))) (and (eq ess-first-tab-never-complete 'symbol-or-paren) (not (looking-at "\\w\\|\\s_\\|\\s)"))) (and (eq ess-first-tab-never-complete 'symbol-or-paren-or-punct) (not (looking-at "\\w\\|\\s_\\|\\s)\\|\\s."))) )) (if (>= emacs-major-version 24) (completion-at-point) (comint-dynamic-complete) ))))) (defun ess-indent-exp () "Indent each line of the ESS grouping following point." (interactive) (cond ((string= ess-dialect "R") (ess-r-indent-exp)) (t (save-excursion (if (fboundp ess-indent-exp-function) (funcall ess-indent-exp-function) (let ((start (point)) (end (ignore-errors (forward-sexp 1) (point)))) (when end (indent-region start end)))))))) (defun ess-indent-line () "Indent current line as ESS code. Return the amount the indentation changed by." ;; fixme: make this work with standard indent-line-function (if (fboundp ess-indent-line-function) (funcall ess-indent-line-function) ;; else S and R default behavior (ess-r-indent-line))) (defun ess-electric-brace (arg) "Insert character and correct line's indentation." (interactive "P") ;; skeleton-pair takes precedence (if (fboundp 'skeleton-pair-insert-maybe) (skeleton-pair-insert-maybe "{") ;; else (let (insertpos) (if (and (not arg) (eolp) (or (save-excursion (skip-chars-backward " \t") (bolp)) (if ess-auto-newline (progn (ess-indent-line) (newline) t) nil))) (progn (insert last-command-event) (ess-indent-line) (if ess-auto-newline (progn (newline) ;; (newline) may have done auto-fill (setq insertpos (- (point) 2)) (ess-indent-line))) (save-excursion (if insertpos (goto-char (1+ insertpos))) (delete-char -1)))) (if insertpos (save-excursion (goto-char insertpos) (self-insert-command (prefix-numeric-value arg))) (self-insert-command (prefix-numeric-value arg)))))) ;;*;; Loading files (defun ess-check-modifications nil "Check whether loading this file would overwrite some ESS objects which have been modified more recently than this file, and confirm if this is the case." ;; FIXME: this should really cycle through all top-level assignments in ;; the buffer ;;VS[02-04-2012|ESS 12.03]: this is sooo ugly (when (> (length ess-change-sp-regexp) 0) (and (buffer-file-name) ess-filenames-map (let ((sourcemod (nth 5 (file-attributes (buffer-file-name)))) (objname)) (save-excursion (goto-char (point-min)) ;; Get name of assigned object, if we can find it (setq objname (and (re-search-forward "^\\s *\"?\\(\\(\\sw\\|\\s_\\)+\\)\"?\\s *[<_]" nil t) (buffer-substring (match-beginning 1) (match-end 1))))) (and sourcemod ; the file may have been deleted objname ; may not have been able to ; find name (ess-modtime-gt (ess-object-modtime objname) sourcemod) (not (y-or-n-p (format "The ESS object %s is newer than this file. Continue?" objname))) (error "Aborted")))))) (defun ess-check-source (fname) "If file FNAME has an unsaved buffer, offer to save it. Returns t if the buffer existed and was modified, but was not saved." (let ((buff (get-file-buffer fname))) ;; RMH: Corrections noted below are needed for C-c C-l to work ;; correctly when issued from *S* buffer. ;; The following barfs since ;; 1. `if' does not accept a buffer argument, `not' does. ;; 2. (buffer-file-name) is not necessarily defined for *S* ;;(if buff ;; (let ((deleted (not (file-exists-p (buffer-file-name))))) ;; Next 2 lines are RMH's solution: (if (not(not buff)) (let ((deleted (not (file-exists-p fname)))) (if (and deleted (not (buffer-modified-p buff))) ;; Buffer has been silently deleted, so silently save (with-current-buffer buff (set-buffer-modified-p t) (save-buffer)) (if (and (buffer-modified-p buff) (or ess-mode-silently-save (y-or-n-p (format "Save buffer %s first? " (buffer-name buff))))) (with-current-buffer buff (save-buffer)))) (buffer-modified-p buff))))) (defvar ess-error-regexp "^\\(Syntax error: .*\\) at line \\([0-9]*\\), file \\(.*\\)$" "Regexp to search for errors.") (defun ess-parse-errors (&optional showerr reset) "Jump to error in last loaded ESS source file. With prefix argument, only shows the errors ESS reported. RESET is for compatibility with `next-error' and is ignored." (interactive "P") (ess-make-buffer-current) (let ((errbuff (get-buffer ess-error-buffer-name))) (when (not errbuff) (error "You need to do a load first!")) (set-buffer errbuff) (goto-char (point-max)) ;; FIXME: R does not give "useful" error messages by default. We ;; could try to use a more useful one, via ;; options(error=essErrorHandler) (cond ((re-search-backward ess-error-regexp nil t) (let* ((filename (buffer-substring (match-beginning 3) (match-end 3))) (fbuffer (get-file-buffer filename)) (linenum (string-to-number (buffer-substring (match-beginning 2) (match-end 2)))) (errmess (buffer-substring (match-beginning 1) (match-end 1)))) (if showerr (ess-display-temp-buffer errbuff) (if fbuffer nil (setq fbuffer (find-file-noselect filename)) (with-current-buffer fbuffer (ess-mode))) (pop-to-buffer fbuffer) (ess-goto-line linenum)) (princ errmess t))) (t (message "Not a syntax error.") (ess-display-temp-buffer errbuff))))) ;;*;; Creating and manipulating dump buffers (defun ess-dump-object-into-edit-buffer (object) "Edit an ESS object in its own buffer. Without a prefix argument, this simply finds the file pointed to by `ess-source-directory'. If this file does not exist, or if a prefix argument is given, a dump() command is sent to the ESS process to generate the source buffer." (interactive (progn (ess-force-buffer-current "Process to dump from: ") (ess-read-object-name "Object to edit"))) (let* ((dirname (file-name-as-directory (if (stringp ess-source-directory) ess-source-directory (with-current-buffer (process-buffer (ess-get-process ess-local-process-name)) (ess-setq-vars-local ess-customize-alist) (apply ess-source-directory nil))))) (filename (concat dirname (format ess-dump-filename-template object))) (old-buff (get-file-buffer filename))) ;; If the directory doesn't exist, offer to create it (if (file-exists-p (directory-file-name dirname)) nil (if (y-or-n-p ; Approved (format "Directory %s does not exist. Create it? " dirname)) (make-directory (directory-file-name dirname)) (error "Directory %s does not exist." dirname))) ;; Three options: ;; (1) Pop to an existing buffer containing the file in question ;; (2) Find an existing file ;; (3) Create a new file by issuing a dump() command to S ;; Force option (3) if there is a prefix arg (if current-prefix-arg (ess-dump-object object filename) (if old-buff (progn (pop-to-buffer old-buff) (message "Popped to edit buffer.")) ;; No current buffer containing desired file (if (file-exists-p filename) (progn (ess-find-dump-file-other-window filename) (message "Read %s" filename)) ;; No buffer and no file (ess-dump-object object filename)))))) (ess-defgeneric ess-dump-object (object filename) "Dump the ESS object OBJECT into file FILENAME." (let ((complete-dump-command (format inferior-ess-dump-command object filename))) (if (file-writable-p filename) nil (error "Can't dump %s as %f is not writeable." object filename)) (:override ;; Make sure we start fresh (if (get-file-buffer filename) (kill-buffer (get-file-buffer filename))) (ess-command complete-dump-command) (message "Dumped in %s" filename) (ess-find-dump-file-other-window filename) ;; PD, 1Apr97 ;;This ensures that the object gets indented according to ess-mode, ;;not as the R/S deparser does it. At the same time, it gets rid ;;of the mess generated by sending TAB characters to the readline ;;functions in R when you eval-buffer-*. (indent-region (point-min-marker) (point-max-marker) nil) (set-buffer-modified-p nil) ; no need to safe just because of indenting ;; Don't make backups for temporary files; it only causes clutter. ;; The ESS object itself is a kind of backup, anyway. (unless ess-keep-dump-files (make-local-variable 'make-backup-files) (setq make-backup-files nil)) ;; Don't get confirmation to delete dumped files when loading (if (eq ess-keep-dump-files 'check) (setq ess-keep-dump-files nil)) ;; Delete the file if necessary (if ess-delete-dump-files (delete-file (buffer-file-name)))))) (defun ess-find-dump-file-other-window (filename) "Find ESS source file FILENAME in another window." (if (file-exists-p filename) nil (ess-write-to-dribble-buffer (format "%s does not exist. Bad dump, starting fresh." filename))) ;; Generate a buffer with the dumped data (find-file-other-window filename) (ess-mode ess-customize-alist) (auto-save-mode 1) ; Auto save in this buffer (setq ess-local-process-name ess-current-process-name) (if ess-function-template (progn (goto-char (point-max)) (if (re-search-backward ess-dumped-missing-re nil t) (progn (replace-match ess-function-template t t) (set-buffer-modified-p nil) ; Don't offer to save if killed now (goto-char (point-min)) (condition-case nil ;; This may fail if there are no opens (down-list 1) (error nil))))))) (defun ess-version () (interactive) (message (format "ess-version: %s (loaded from %s)" (ess-version-string) (file-name-directory ess-lisp-directory)))) (defun ess-version-string () (let* ((ess-dir (file-name-directory ess-lisp-directory)) ; if() the top-level 'ess/' (is-release (file-exists-p (concat ess-etc-directory ".IS.RELEASE"))) (rel-string (if is-release "Released ")) (git-ref-fn (concat ess-dir ".git/HEAD")) (git-ref (when (file-exists-p git-ref-fn) (with-current-buffer (find-file-noselect git-ref-fn) (goto-char (point-min)) (when (re-search-forward "ref: \\(.*\\)\n" nil t) (match-string 1))))) (git-fname (if git-ref (concat ess-dir ".git/" git-ref) ;; For release (concat ess-etc-directory "git-ref"))) (git-rev (when (file-exists-p git-fname) (with-current-buffer (find-file-noselect git-fname) (goto-char (point-min)) (concat "git: "(buffer-substring 1 (point-at-eol)))))) (elpa-fname (concat ess-dir "ess-pkg.el")) (elpa-rev (when (file-exists-p elpa-fname) ;; Get it from ELPA dir name, (probably won't work if installed manually) (concat "elpa: " (replace-regexp-in-string "ess-" "" (file-name-nondirectory (substring ess-dir 1 -1))))))) ;; Set the "global" ess-revision: (setq ess-revision (format "%s%s%s" (or rel-string "") (or git-rev "") (or elpa-rev ""))) (when (string= ess-revision "") (setq ess-revision "")) (concat ess-version " [" ess-revision "]"))) (provide 'ess-mode) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-mode.el ends here ess-17.11/lisp/ess-mouse.el0000444005071500004540000002324013202324174012451 00000000000000;;; ess-mouse.el --- Support for mouse- or cursor-sensitive actions ;; Copyright (C) 2001 Richard M. Heiberger ;; Copyright (C) 2002--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: 25 Mar 2001 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Support for mouse- or cursor-sensitive actions. This is based on ;; and uses mouseme.el. mouseme.el only does mouse sensititivity. ;; The new functions ess-mouse-me and ess-mouse-me-helper do similar ;; things based on the cursor, not the mouse, and can be bound to a ;; keystroke. ;;; Code: ; Requires and autoloads ;;*;; Requires (require 'mouseme) (require 'ess-dde) ;;(if (or (equal window-system 'w32) ;; (equal window-system 'win32) ;; (equal window-system 'mswindows)) ;; (require 'essiw32b)) (defun ess-mouse-me () "Popup a menu of functions to run on selected string or region." (interactive) (ess-mouse-me-helper (lambda () (or (x-popup-menu (list '(0 0) (get-buffer-window (get-buffer (buffer-name)))) (funcall mouse-me-build-menu-function name)) (error "No command to run"))))) (defun ess-mouse-me-helper (func) "Determine the string to use to process EVENT and call FUNC to get cmd." (let (name sp sm mouse beg end cmd mmtype) ;; temporarily goto where the event occurred, get the name clicked ;; on and enough info to figure out what to do with it (save-match-data (save-excursion (setq sp (point)) ; saved point (setq sm (mark t)) ; saved mark ;;; (set-buffer (window-buffer (posn-window (event-start event)))) ;;; (setq mouse (goto-char (posn-point (event-start event)))) (setq mouse (point)) ;; ess-mouse-me-helper ;; if there is a region and point is inside it ;; check for sm first incase (null (mark t)) ;; set name to either the thing they clicked on or region (if (and sm (or (and transient-mark-mode mark-active) (eq last-command 'mouse-drag-region)) (>= mouse (setq beg (min sp sm))) (<= mouse (setq end (max sp sm)))) (setq name (buffer-substring beg end)) (setq name (funcall mouse-me-get-string-function)) (if (listp name) (setq beg (nth 1 name) end (nth 2 name) name (car name)) (goto-char mouse) (while (not (looking-at (regexp-quote name))) (backward-char 1)) (setq beg (point)) (setq end (search-forward name)))))) ;; check if name is null, meaning they clicked on no word (if (or (null name) (and (stringp name) (string= name "" ))) (error "No string to pass to function")) ;; popup a menu to get a command to run (setq cmd (funcall func)) ;; run the command, eval'ing if it was a list (if (listp cmd) (setq cmd (eval cmd))) (setq mmtype (get cmd 'mouse-me-type)) (cond ((eq mmtype 'region) (funcall cmd beg end)) ((eq mmtype 'string) (funcall cmd name)) (t (funcall cmd name))))) (defcustom ess-S-mouse-me-menu-commands-alist '("S-Plus 4 and 6 GUI under Windows" ("Edit.data" . ess-mouse-me-Edit.data) "----" ("print" . ess-mouse-me-print) ("summary" . ess-mouse-me-summary) ("plot" . ess-mouse-me-plot) ("show" . ess-mouse-me-show) ("help" . ess-display-help-on-object) ("args" . ess-mouse-me-args) "----" ("Browser on" . ess-mouse-me-browser-on) ("Browser off" . ess-mouse-me-browser-off)) "*Command menu used by `mouse-me-build-menu'. A alist of elements where each element is either a cons cell or a string. If a cons cell the car is a string to be displayed in the menu and the cdr is either a function to call passing a string to, or a list which evals to a function to call passing a string to. If the element is a string it makes a non-selectable element in the menu. To make a separator line use a string consisting solely of hyphens. The function returned from this menu will be called with one string argument. Or if the function has the symbol property `mouse-me-type' and if its value is the symbol `region' it will be called with the beginning and ending points of the selected string. If the value is the symbol `string' it will be called with one string argument." :type '(repeat sexp) :group 'mouseme) (defun ess-mouse-me-Edit.data (string) (ess-mouse-me-eval-expanded string "Edit.data(" ")" nil nil nil)) (defun ess-mouse-me-print (string) (ess-mouse-me-eval-expanded string "" "" nil (ess-ddeclient-p) t)) (defun ess-mouse-me-summary (string) (ess-mouse-me-eval-expanded string "summary(" ")" nil (ess-ddeclient-p) t)) (defun ess-mouse-me-plot (string) (ess-mouse-me-eval-expanded string "plot(" ")") nil nil nil) (defun ess-mouse-me-show (string) (ess-mouse-me-eval-expanded string "show(" ")") nil nil nil) (defun ess-mouse-me-args (string) (ess-mouse-me-eval-expanded string "args(" ")" nil (ess-ddeclient-p) t)) (defun ess-mouse-me-browser-on (string) (if (equal (substring ess-dialect 0 1) "R") (ess-eval-linewise (concat "debug(" string ")")) (ess-mouse-me-eval-expanded string "trace(" ", exit=browser)") nil nil nil)) (defun ess-mouse-me-browser-off (string) (if (equal (substring ess-dialect 0 1) "R") (ess-eval-linewise (concat "undebug(" string ")")) (ess-mouse-me-eval-expanded string "untrace(" ")") nil nil nil)) (defun ess-mouse-me-eval-expanded (string &optional head tail commands-buffer page value-returned) "Send the expanded STRING to the inferior-ess process using `ess-command' after first concating the HEAD and TAIL. Put answer in COMMANDS-BUFFER if specified and not using ddeclient, otherwise in \"tmp-buffer\". In either case the buffer containing the answer is renamed to the value of the constructed command. If PAGE is non-nil and using ddeclient, expand the string one more time by embedding it in a \"page()\" command." (interactive) (let* (scommand page-scommand (lproc-name ess-local-process-name) (ess-mouse-customize-alist ess-local-customize-alist)) (if (not head) (setq head "summary(")) (if (not tail) (setq tail ")")) (if (not commands-buffer) (setq commands-buffer (get-buffer-create "tmp-buffer"))) (setq scommand (concat head string tail)) (if (ess-ddeclient-p) (progn (setq page-scommand (if page (concat "page(" scommand ")") scommand)) (set-buffer-file-coding-system 'undecided-dos) (ess-command page-scommand commands-buffer) (if (not value-returned) nil (sleep-for 2) (switch-to-buffer (car (buffer-list))))) (ess-make-buffer-current) (switch-to-buffer commands-buffer) (ess-setq-vars-local (eval ess-mouse-customize-alist) (current-buffer)) (setq ess-local-process-name lproc-name) (ess-command (concat scommand "\n") commands-buffer) (if (not value-returned) (switch-to-buffer (nth 1 (buffer-list))))) (if (not value-returned) nil (if ess-microsoft-p ;; there ought to be a filter (while (search-forward "\r" nil t) ;; function to keep the ^M (replace-match "" nil t))) ;; from showing up at all (ess-transcript-mode (eval ess-mouse-customize-alist)) (setq ess-local-process-name lproc-name) (rename-buffer scommand)))) ; Provide package (provide 'ess-mouse) ;;;;;;;; STARTUP STUFF ;;;;;;;;;;;; (make-variable-buffer-local 'mouse-me-menu-commands) (defun ess-S-mouse-me-menu-commands () (if (equal ess-language "S") (setq mouse-me-menu-commands ess-S-mouse-me-menu-commands-alist))) ;; (define-key ess-mode-map [S-mouse-3] 'ess-mouse-me) ;; (define-key inferior-ess-mode-map [S-mouse-3] 'ess-mouse-me) ;; (defun ess-S-mouse-me-ess-transcript-mode () ;; (define-key ess-transcript-mode-map [S-mouse-3] 'ess-mouse-me)) ;; (add-hook 'ess-mode-hook 'ess-S-mouse-me-menu-commands) (add-hook 'inferior-ess-mode-hook 'ess-S-mouse-me-menu-commands) (add-hook 'ess-transcript-mode-hook 'ess-S-mouse-me-menu-commands) ;; (add-hook 'ess-transcript-mode-hook 'ess-S-mouse-me-ess-transcript-mode) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; outline-minor-mode: nil ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-mouse.el ends here ess-17.11/lisp/ess-noweb-font-lock-mode.el0000444005071500004540000004405613202324174015257 00000000000000;;; ess-noweb-font-lock-mode.el --- edit noweb files with GNU Emacs ;; Copyright (C) 1999 by Adnan Yaqub (AYaqub@orga.com) ;; and Mark Lunt (mark.lunt@mrc-bsu.cam.ac.uk ;; Copyright (C) 2002 by A.J. Rossini ;; Copyright (C) 2003--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Maintainer: ESS-core ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;;; Commentary: ;; Code-dependent highlighting ;; ***** ;; ;; Adding highlighting to ess-noweb-mode.el ;; ;; Here is a description of how one can add highlighting via the ;; font-lock package to noweb buffers. It uses the hooks provided by ;; ess-noweb-mode.el. The solution provides the following features: ;; 1) The documentation chunks are highlighted in the ess-noweb-doc-mode ;; (e.g., LaTeX). ;; 2) The code chunks without mode comments (-*- mode -*-) are ;; highlighted in the ess-noweb-code-mode. ;; 3) The code chunks with mode comments (-*- mode -*-) on the first ;; line of the first chunk with this name are highlighted in the mode ;; in the comment. ;; ;; For example, given the file: ;; ;; % -*- mode: Noweb; ess-noweb-code-mode: c-mode -*- ;; ;; \begin{itemize} ;; \item a main routine written in C, ;; \item a log configuration file parser written in YACC, and ;; \item a lexical analyzer written in Lex. ;; \end{itemize} ;; ;; <>= ;; /* DO NOT EDIT ME! */ ;; /* This file was automatically generated from %W% (%G%). */ ;; @ ;; ;; <>= ;; .\" -*- nroff -*- ;; .\" DO NOT EDIT ME! ;; .\" This file was automatically generated from %W% (%G%). ;; @ ;; ;; The LaTeX list is highlighted in latex-mode (the default noweb doc ;; mode), the chunk <> is highlighted in c-mode (the ;; default noweb code mode), and the chunk <> is ;; highlighted in nroff-mode due to the "-*- nroff -*-" comment. ;; ;; Chunks are highlighted each time point moves into them from a ;; different mode. They are also fontified 'on the fly', but this is ;; less reliable, since the syntax can depend on the context. It's as ;; good as you would get outside ess-noweb-mode, though. ;; ;; To use it, you must add ;; (require 'ess-noweb-font-lock-mode) to your .emacs file. ;; Then, if you use either global-font-lock or turn-on-font-lock ;; statements, any ess-noweb-mode buffers will be fontified ;; appropriately. (We have to redefine turn-on-font-lock, but it ;; saves breaking other packages (in particular ESS, which I use a ;; lot), that assume that turn-on-font-lock is the way to turn on ;; font locking. ;; Alternatively, you can turn ess-noweb-font-lock-mode on and off by ;; using M-x ess-noweb-font-lock-mode. However, turning ;; ess-noweb-font-lock-mode off when global-font-lock-mode is t makes it ;; impossible to use font-locking in that buffer subsequently, other ;; than by turning ess-noweb-font-lock-mode back on. ;; 2) The highlighting sometimes get confused, but this is no longer ;; a noweb problem. Highlighting should work as well within a chunk ;; as it does without ess-noweb-mode. ;; There are some problems with, for example latex-mode: a `$' in a ;; verbatim environment with throw the font-locking out. ;; One slight blemish is that code-quotes are highlighted as comments ;; as they are being entered. They are only highlighted correctly ;; after `ess-noweb-font-lock-fontify-chunk' has been run, either as a ;; command or through changing to a different chunk and back again ;; (unless they lie on a single line, in which case they are ;; fontified correctly once they are completed). ;;; Code: (require 'ess-noweb-mode) (require 'font-lock) (defvar ess-noweb-font-lock-mode nil "Buffer local variable, t iff this buffer is using ess-noweb-font-lock-mode.") (defvar ess-noweb-use-font-lock-mode t "DO NOT CHANGE THIS VARIABLE If you use nw-turn-on-font-lock to turn on font-locking, then turn it off again, it would come back on again of its own accord when you changed major-mode. This variable is used internally to stop it.") (defvar ess-noweb-font-lock-mode-hook nil "Hook that is run after entering ess-noweb-font-lock mode.") (defvar ess-noweb-font-lock-max-initial-chunks 30 "Maximum number of chunks to fontify initially. If nil, will fontify the entire buffer when ess-noweb-font-lock-initial-fontify-buffer is called" ) ;; (defvar old-beginning-of-syntax nil ;; "Stores the function used to find the beginning of syntax in the ;; current major mode. ess-noweb-font-lock-mode needs a different one." ) ;; ;; (AJR) the next two lines were originally font-lock-warning-face ;; ;; methods; XEmacs 20.4 doesn't define this, sigh... -- KLUDGE --. (defvar ess-noweb-font-lock-doc-start-face font-lock-reference-face "Face to use to highlight the `@' at the start of each doc chunk") (defvar ess-noweb-font-lock-brackets-face font-lock-reference-face "Face to use to highlight `<<', `>>' `[[' and `]]' ") (defvar ess-noweb-font-lock-chunk-name-face font-lock-keyword-face "Face to use to highlight the between `<<' and `>>'") (defvar ess-noweb-font-lock-code-quote-face font-lock-keyword-face "Face to use to highlight the between `[[' and `]]'") ;; Now we add [[ess-noweb-font-lock-mode]] to the list of existing minor ;; modes. The string ``NWFL'' will be added to the mode-line: ugly, but ;; brief. (if (not (assq 'ess-noweb-font-lock-mode minor-mode-alist)) (setq minor-mode-alist (append minor-mode-alist (list '(ess-noweb-font-lock-mode " NWFL"))))) ;; An ugly kludge to get around problems with global-font-lock, which ;; fontifies the entire buffer in the new major mode every time you ;; change mode, which is time-consuming and makes a pigs trotters of ;; it. Trying to stop it looks tricky, but using this function as your ;; `font-lock-fontify-buffer' function stops it wasting your time (defun nwfl-donowt() "This function does nothing at all") ;; The following function is just a wrapper for ess-noweb-font-lock-mode, ;; enabling it to be called as ess-noweb-font-lock-minor-mode instead. (defun ess-noweb-font-lock-minor-mode ( &optional arg) "Minor meta mode for managing syntax highlighting in noweb files. See ess-noweb-font-lock-mode." (interactive) (ess-noweb-font-lock-mode arg)) ;; Here we get to the meat of the problem (defun ess-noweb-font-lock-mode ( &optional arg) "Minor mode for syntax highlighting when using ess-noweb-mode to edit noweb files. Each chunk is fontified in accordance with its own mode" (interactive "P") (if (or ess-noweb-mode ess-noweb-font-lock-mode) (progn ;; This bit is tricky: copied almost verbatim from bib-cite-mode.el ;; It seems to ensure that the variable ess-noweb-font-lock-mode is made ;; local to this buffer. It then sets ess-noweb-font-lock-mode to `t' if ;; 1) It was called with a prefix argument greater than 0 ;; or 2) It was called with no argument, and ess-noweb-font-lock-mode is ;; currently nil ;; ess-noweb-font-lock-mode is nil if the prefix argument was <= 0 or there ;; was no prefix argument and ess-noweb-font-lock-mode is currently `t' (set (make-local-variable 'ess-noweb-font-lock-mode) (if arg (> (prefix-numeric-value arg) 0) (not ess-noweb-font-lock-mode))) ;; Now, if ess-noweb-font-lock-mode is true, we want to turn ;; ess-noweb-font-lock-mode on (cond (ess-noweb-font-lock-mode ;Setup the minor-mode (when (and (boundp 'global-font-lock-mode) global-font-lock-mode) (mapc 'ess-noweb-make-variable-permanent-local '(font-lock-fontify-buffer-function font-lock-unfontify-buffer-function)) (setq font-lock-fontify-buffer-function 'nwfl-donowt) (setq font-lock-unfontify-buffer-function 'nwfl-donowt)) (mapc 'ess-noweb-make-variable-permanent-local '(ess-noweb-font-lock-mode font-lock-dont-widen ;; font-lock-beginning-of-syntax-function syntax-begin-function ess-noweb-use-font-lock-mode after-change-functions)) (setq ess-noweb-font-lock-mode t font-lock-dont-widen t) (add-hook 'after-change-functions 'font-lock-after-change-function nil t) (add-hook 'ess-noweb-font-lock-mode-hook 'ess-noweb-font-lock-mode-fn) (add-hook 'ess-noweb-changed-chunk-hook 'ess-noweb-font-lock-fontify-this-chunk) (run-hooks 'ess-noweb-font-lock-mode-hook) (message "ess-noweb-font-lock mode: use `M-x ess-noweb-font-lock-describe-mode' for more info")) ;; If we didn't do the above, then we want to turn ess-noweb-font-lock-mode ;; off, no matter what (hence the condition `t') (t (when (and (boundp 'global-font-lock-mode) global-font-lock-mode) ;; (setq font-lock-fontify-buffer-function ;; 'font-lock-default-fontify-buffer) ;; Get back our unfontify buffer function (setq font-lock-unfontify-buffer-function 'font-lock-default-unfontify-buffer)) (remove-hook 'ess-noweb-font-lock-mode-hook 'ess-noweb-font-lock-mode-fn) (remove-hook 'ess-noweb-changed-chunk-hook 'ess-noweb-font-lock-fontify-this-chunk) (remove-hook 'after-change-functions 'font-lock-after-change-function ) (font-lock-default-unfontify-buffer) (setq ess-noweb-use-font-lock-mode nil) (message "ess-noweb-font-lock-mode removed")))) (message "ess-noweb-font-lock-mode can only be used with ess-noweb-mode"))) (defun ess-noweb-start-of-syntax () "Go to the place to start fontifying from" (interactive) (goto-char (car (ess-noweb-chunk-region)))) (defun ess-noweb-font-lock-fontify-chunk-by-number ( chunk-num ) "Fontify chunk chunk-num based on the current major mode." (save-excursion (font-lock-set-defaults) ;; (setq old-beginning-of-syntax font-lock-beginning-of-syntax-function) (setq syntax-begin-function 'ess-noweb-start-of-syntax) (setq font-lock-keywords ;; (append font-lock-keywords ;; '(("\\(\\[\\[\\)\\([^]]*\\]*\\)\\(\\]\\]\\|\\$\\)" ;; (1 ess-noweb-font-lock-brackets-face prepend ) ;; (2 ess-noweb-font-lock-code-quote-face prepend) ;; (3 ess-noweb-font-lock-brackets-face prepend)) ;; ("^[ \t\n]*\\(<<\\)\\([^>]*\\)\\(>>=?\\)" ;; (1 ess-noweb-font-lock-brackets-face prepend ) ;; (2 ess-noweb-font-lock-chunk-name-face prepend) ;; (3 ess-noweb-font-lock-brackets-face prepend)) ;; ("^@[ \t\n]+" ;; (0 ess-noweb-font-lock-doc-start-face prepend ))))) (append font-lock-keywords '(("^[ \t\n]*\\(<<\\)\\([^>]*\\)\\(>>=?\\)" (1 font-lock-reference-face prepend ) (2 font-lock-keyword-face prepend) (3 font-lock-reference-face prepend)) ("^@[ \t\n]+" (0 font-lock-reference-face prepend ))))) (let ((r (cons (marker-position (cdr (aref ess-noweb-chunk-vector chunk-num))) (marker-position (cdr (aref ess-noweb-chunk-vector (1+ chunk-num)))))) (font-latex-extend-region-functions nil);; don't extend anything (font-lock-extend-region-functions nil)) ;; this infloops :( (save-restriction (narrow-to-region (car r) (cdr r)) ;; (sit-for 3) (font-lock-fontify-region (car r) (cdr r))) t))) (defun ess-noweb-font-lock-fontify-this-chunk () "Fontify this chunk according to its own major mode. Since we are in the chunk, the major mode will already have been set by ess-noweb-mode.el" (interactive) (ess-noweb-font-lock-fontify-chunk-by-number (ess-noweb-find-chunk-index-buffer))) (defun ess-noweb-font-lock-initial-fontify-buffer () "Applies syntax highlighting to some or all chunks in a noweb buffer. The number of chunks is set by ess-noweb-font-lock-max-initial-chunks: if this is nil, the entire buffer is fontified. It is intended to be called when first entering ess-noweb-font-lock-mode. For other purposes, use ess-noweb-font-lock-fontify-chunks." (interactive) ;; This will be tricky. It will be very slow to go throught the chunks ;; in order, switching major modes all the time. ;; So, we will do the documentation in one pass, the code in a second ;; pass. This could still be a little slow if we have to swap between ;; different code modes regularly, but it should be bearable. It should ;; only happen when the file is first read in, anyway (save-excursion (let (start-chunk end-chunk this-chunk chunk-counter) (setq this-chunk (ess-noweb-find-chunk-index-buffer)) (if ess-noweb-font-lock-max-initial-chunks (progn (setq start-chunk (max 0 (- this-chunk (/ ess-noweb-font-lock-max-initial-chunks 2)))) ;; Don't you just love hairy lisp syntax ? The above means set the ;; starting chunk to the current chunk minus half of ;; ess-noweb-font-lock-max-initial-chunks, unless that is negative in ;; which case set it to 0 (setq end-chunk (+ start-chunk ess-noweb-font-lock-max-initial-chunks)) (if (> end-chunk (- (length ess-noweb-chunk-vector) 2)) (setq end-chunk (- (length ess-noweb-chunk-vector) 2)))) ;; If ess-noweb-font-lock-max-initial-chunks is nil, do the whole buffer (progn (setq start-chunk 0) (setq end-chunk (- (length ess-noweb-chunk-vector) 2)))) (ess-noweb-font-lock-fontify-chunks start-chunk end-chunk)))) (defun ess-noweb-font-lock-fontify-buffer () "This function will fontify each chunk in the buffer appropriately." (interactive) (let ((start-chunk 0) (end-chunk (- (length ess-noweb-chunk-vector) 2))) (ess-noweb-font-lock-fontify-chunks start-chunk end-chunk))) (defun ess-noweb-font-lock-fontify-chunks (start-chunk end-chunk) "Fontify a noweb file from start-chunk to end-chunk" (interactive) (let (chunk-counter) (save-excursion (message "Fontifying from %d to %d" start-chunk end-chunk) ;; Want to set DOC mode for the first Doc chunk, not for the others (setq chunk-counter start-chunk) (while (stringp (car (aref ess-noweb-chunk-vector chunk-counter))) (setq chunk-counter (+ chunk-counter 1))) (goto-char (cdr (aref ess-noweb-chunk-vector chunk-counter))) (ess-noweb-select-mode) ;; Now go through the chunks, fontifying the documentation ones. (while (<= chunk-counter end-chunk) (if (not (stringp (car (aref ess-noweb-chunk-vector chunk-counter)))) (ess-noweb-font-lock-fontify-chunk-by-number chunk-counter)) (message "Fontifying documentation chunks: chunk %d" chunk-counter) (setq chunk-counter (+ 1 chunk-counter))) ;; Go back to the start and go through the chunks, fontifying the code ones. (setq chunk-counter start-chunk) (message "About to do code chunks") (while (<= chunk-counter end-chunk) (when (stringp (car (aref ess-noweb-chunk-vector chunk-counter))) ;; It's a code chunk: goto it to set the correct code mode, then ;; fontify it. (message "Fontifying code chunks: chunk %d" chunk-counter) (goto-char (cdr (aref ess-noweb-chunk-vector chunk-counter))) (ess-noweb-select-mode) (ess-noweb-font-lock-fontify-this-chunk)) (setq chunk-counter (1+ chunk-counter)))) (ess-noweb-select-mode))) (defun ess-noweb-font-lock-mode-fn() "Function that is intended to be attached to ess-noweb-font-lock-mode-hook." (ess-noweb-font-lock-initial-fontify-buffer)) ;; This is a wee bit of a hack. If people attach `turn-on-font-lock' ;; to their major mode hook, it will play hell with ;; ess-noweb-font-lock-mode. I had hoped that providing a replacement ;; `nw-turn-on-font-lock' would solve the problem, but it didn't ;; (sometimes turn-on-font-lock appears in places other than ;; `.emacs', such as in ESS). So rather than have it fall over if ;; turn-on-lock was around, I redefined turn-on-font-lock to do the ;; right thing. (defvar ess-noweb-old-turn-on-font-lock nil) (defun nw-turn-on-font-lock () "Turn on font-lock mode, with due regard to whether we are in ess-noweb-mode" (if (not ess-noweb-mode) (ess-noweb-old-turn-on-font-lock) (if (and (not ess-noweb-font-lock-mode) ess-noweb-use-font-lock-mode) (ess-noweb-font-lock-mode )))) (unless (functionp 'ess-noweb-old-turn-on-font-lock) (fset 'ess-noweb-old-turn-on-font-lock (symbol-function 'turn-on-font-lock)) (fset 'turn-on-font-lock (symbol-function 'nw-turn-on-font-lock))) (provide 'ess-noweb-font-lock-mode) ;; ***** ;; ;; Adnan Yaqub (AYaqub@orga.com) ;; ORGA Kartensysteme GmbH // An der Kapelle 2 // D-33104 Paderborn // Germany ;; Tel. +49 5254 991-823 //Fax. +49 5254 991-749 ;; Local Variables: ;; mode:emacs-lisp ;; End: ;;; ess-noweb-font-lock-mode.el ends here ess-17.11/lisp/ess-noweb-mode.el0000444005071500004540000023020313202324174013354 00000000000000;;; ess-noweb-mode.el --- edit noweb files with GNU Emacs ;; Copyright (C) 1995 by Thorsten.Ohl @ Physik.TH-Darmstadt.de ;; with a little help from Norman Ramsey ;; and Mark Lunt ;; and A.J. Rossini ;; Copyright (C) 1999--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2012 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; ESS-related Changes first added by Mark Lunt and A.J. Rossini, March, 1999. ;; Maintainer: ESS-core ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; See bottom of this file for information on language-dependent ;; highlighting, and recent changes. ;; ;; BASED ON: (from Mark Lunt). ;; -- Id: ess-noweb-mode.el,v 1.11 1999/03/21 20:14:41 root Exp -- ;; Put this into your ~/.emacs to use this mode automagically. ;; ;; (autoload 'ess-noweb-mode "ess-noweb-mode" "Editing noweb files." t) ;; (setq auto-mode-alist (append (list (cons "\\.nw$" 'ess-noweb-mode)) ;; auto-mode-alist)) ;;; NEWS: ;; * [tho] M-n q, aka: M-x ess-noweb-fill-chunk ;; ;; * [tho] `M-n TAB', aka: `M-x ess-noweb-complete-chunk' ;; ;; * [tho] ess-noweb-occur ;; ;; * [nr] use `M-n' instead of `C-c n' as default command prefix ;; ;; * [nr] don't be fooled by ;; ;; @ ;; <>= ;; int foo; ;; @ %def foo ;; Here starts a new documentation chunk! ;; <>= ;; int bar; ;; ;; * [nr] switch mode changing commands off during isearch-mode ;; ;; * [tho] ess-noweb-goto-chunk proposes a default ;; ;; * commands for tangling, weaving,.. for Sweave: --> ./ess-swv.el ;; ;;; TODO: ;; * _maybe_ replace our `ess-noweb-chunk-vector' by text properties. We ;; could then use highlighting to jazz up the visual appearance. ;; (Highlighting is sorted: `ess-noweb-chunk-vector' can be ;; ditched. It is simple to determine if we are in a doc or code ;; chunk.) ;; ;; * wrapped `ess-noweb-goto-next' and `ess-noweb-goto-previous' ;; ;; * more range checks and error exits ;; ;; * `ess-noweb-hide-code-quotes' should be superfluous now, and could ;; be removed. For ESS 5.3.10, we disable these, using the new variable ;; ess-noweb-code-quote-handling. If nobody misses that code-protecting ;; behavior, all that should be removed entirely. ;;; Code: ;; Want to use these now in order to cater for all obscure kinds of emacsen (require 'ess-compat) (autoload 'ess-write-to-dribble-buffer "ess") ;;; Variables ;; (defconst ess-noweb-mode-RCS-Id ;; "Imported to ESS Subversion repository and RCS ids not maintained.") ;; (defconst ess-noweb-mode-RCS-Name ;; " ") (defvar ess-noweb-mode-prefix "\M-n" "*Prefix key to use for noweb mode commands. The value of this variable is checked as part of loading noweb mode. After that, changing the prefix key requires manipulating keymaps.") (defvar ess-noweb-mode-load-hook nil "Hook that is run after noweb mode is loaded.") (defvar ess-noweb-mode-hook nil "Hook that is run after entering noweb mode.") (defvar ess-noweb-select-code-mode-hook nil "Hook that is run after the code mode is selected. This is the place to overwrite keybindings of the ess-noweb-CODE-MODE.") (defvar ess-noweb-select-doc-mode-hook nil "Hook that is run after the documentation mode is selected. This is the place to overwrite keybindings of the ess-noweb-DOC-MODE.") (defvar ess-noweb-select-mode-hook nil "Hook that is run after the documentation or the code mode is selected. This is the place to overwrite keybindings of the other modes.") (defvar ess-noweb-changed-chunk-hook nil "Hook that is run every time point moves from one chunk to another. It will be run whether or not the major-mode changes.") (defvar ess-noweb-default-code-mode 'fundamental-mode "Default major mode for editing code chunks. This is set to FUNDAMENTAL-MODE by default, but you might want to change this in the Local Variables section of your file to something more appropriate, like C-MODE, FORTRAN-MODE, or even INDENTED-TEXT-MODE.") (defvar ess-noweb-code-mode 'c-mode "Major mode for editing this particular code chunk. It defaults to ess-noweb-default-code-mode, but can be reset by a comment on the first line of the chunk containing the string \"-*- NEWMODE -*-\" or \"-*- NEWMODE-mode -*-\" or \"-*- mode: NEWMODE -*- \" or \"-*- mode: NEWMODE-mode -*- \" Option three is recommended, as it is the closest to standard emacs usage.") (defvar ess-noweb-default-doc-mode 'latex-mode "Major mode for editing documentation chunks. Sensible choices would be tex-mode, latex-mode, sgml-mode, or html-mode. Maybe others will exist someday.") (defvar ess-noweb-doc-mode-syntax-table nil "A syntax-table syntax table that makes quoted code in doc chunks to behave.") (defvar ess-noweb-last-chunk-index 0 "This keeps track of the chunk we have just been in. If this is not the same as the current chunk, we have to check if we need to change major mode.") (defvar ess-noweb-chunk-vector nil "Vector of the chunks in this buffer.") (defvar ess-noweb-narrowing nil "If not NIL, the display will always be narrowed to the current chunk pair.") (defvar ess-noweb-electric-@-and-< t "If not nil, the keys `@' and `<' will be bound to ess-noweb-ELECTRIC-@ and ess-noweb-ELECTRIC-<, respectively.") (defvar ess-noweb-use-mouse-navigation t "If not nil, enables moving between chunks using mouse-1. Clicking on the '<<' at the beginning of a chunk name takes you to the previous occurence of that chunk name, clicking on the '>>' takes you to the next. Assumes mouse-1 is bound to mouse-set-point, so if you have rebound mouse-1, this will override your binding.") (defvar ess-noweb-code-quotes-handling nil "If not nil, the function pair \\[ess-noweb-hide-code-quotes] and \\[ess-noweb-restore-code-quotes] are used to \"protect\" code inside \"[[\" .. \"]]\" pairs. Note that rarely this has been found to be buggy with the \"catastrophic\" consequence of whole parts of your document being replaced by sequences of '*'.") ;; The following is apparently broken -- dangling code that was ;; commented out. Need to see if we can get it working? (defvar ess-noweb-weave-options "-delay") (defvar ess-noweb-latex-viewer "xdvi") (defvar ess-noweb-html-viewer "netscape") (defun ess-noweb-weave (&optional name) (interactive) (let ((buffer (get-buffer-create "Weave Buffer"))) (if (not name) (progn ;; Assume latex documentation, but set to html if appropriate (if (eq ess-noweb-doc-mode html-mode) (setq name (concat (substring (buffer-file-name) 0 (string-match ".nw" name)) ".html")) (setq name (concat (substring (buffer-file-name) 0 (string-match ".nw" name)) ".tex"))))) (setq name (concat "> " name)) (setq ess-noweb-weave-options (concat ess-noweb-weave-options name)) (start-process weave-process buffer "noweave" ess-noweb-weave-options))) ;;(defun ess-noweb-view ()) ;;; Setup (defvar ess-noweb-mode nil "Buffer local variable, T iff this buffer is edited in noweb mode.") ;; For some reason that I do not understand, `newline' does not do the ;; right thing in quoted code. If point is not preceded by whitespace, ;; it moves to the beginning of the current line, not the beginning of ;; the new line. `newline 1' works fine, hence the kludge. I'd love to ;; understand what's going on, though. Try running M-x newline in the ;; middle of a code quote in a doc chunk to see ;; what I mean: its odd. (defun ess-noweb-newline (&optional arg) "A kludge to get round very odd behaviour of newline in quoted code." (interactive "p") (if arg (newline arg) (newline 1)) (ess-noweb-indent-line)) (defvar ess-noweb-mode-prefix-map (let ((map (make-sparse-keymap))) (define-key map "\C-\M-x" 'ess-eval-chunk) (define-key map "\C-c" 'ess-eval-chunk-and-step) (define-key map "\C-n" 'ess-noweb-next-chunk) (define-key map "\C-p" 'ess-noweb-previous-chunk) (define-key map "\M-n" 'ess-noweb-goto-next) (define-key map "\M-m" 'ess-noweb-insert-default-mode-line) (define-key map "\M-p" 'ess-noweb-goto-previous) (define-key map "c" 'ess-noweb-next-code-chunk) (define-key map "C" 'ess-noweb-previous-code-chunk) (define-key map "d" 'ess-noweb-next-doc-chunk) (define-key map "D" 'ess-noweb-previous-doc-chunk) (define-key map "g" 'ess-noweb-goto-chunk) (define-key map "\C-l" 'ess-noweb-update-chunk-vector) (define-key map "\M-l" 'ess-noweb-update-chunk-vector) (define-key map "w" 'ess-noweb-copy-chunk-as-kill) (define-key map "W" 'ess-noweb-copy-chunk-pair-as-kill) (define-key map "k" 'ess-noweb-kill-chunk) (define-key map "K" 'ess-noweb-kill-chunk-pair) (define-key map "m" 'ess-noweb-mark-chunk) (define-key map "M" 'ess-noweb-mark-chunk-pair) (define-key map "n" 'ess-noweb-narrow-to-chunk) (define-key map "N" 'ess-noweb-narrow-to-chunk-pair) (define-key map "t" 'ess-noweb-toggle-narrowing) (define-key map "\t" 'ess-noweb-complete-chunk) (define-key map "q" 'ess-noweb-fill-chunk) (define-key map "i" 'ess-noweb-new-chunk) (define-key map "o" 'ess-noweb-occur) ;;(define-key map "v" 'ess-noweb-mode-version) (define-key map "h" 'ess-noweb-describe-mode) ;; do *NOT* override C-h (give all keybindings startings with M-n! map) "noweb minor-mode prefix keymap") (defvar ess-noweb-minor-mode-map (let ((map (make-sparse-keymap))) (if ess-noweb-electric-@-and-< (progn (define-key map "@" 'ess-noweb-electric-@) (define-key map "<" 'ess-noweb-electric-<))) (define-key map "\M-q" 'ess-noweb-fill-paragraph-chunk) (define-key map "\C-ch" 'ess-handy-commands) (define-key map [(control meta ?\\)] 'ess-noweb-indent-region) ;;(define-key map "\C-c\C-n" 'ess-noweb-indent-line) ; Override TeX-normal! (define-key map "\t" 'ess-noweb-indent-line) ;; (define-key map [tab] 'ess-noweb-indent-line) ;; interferes with ac (define-key map "\r" 'ess-noweb-newline) ;; (define-key map [return] 'ess-noweb-newline) ;; interferes with ac (define-key map [mouse-1] 'ess-noweb-mouse-first-button) (define-key map ess-noweb-mode-prefix ess-noweb-mode-prefix-map) map) "ESS Noweb minor mode keymap") (easy-menu-define ess-noweb-minor-mode-menu ess-noweb-minor-mode-map "Menu keymap for noweb." '("Noweb" ("Movement" ["Previous chunk" ess-noweb-previous-chunk t] ["Next chunk" ess-noweb-next-chunk t] ["Previous chunk of same name" ess-noweb-goto-previous t] ["Next chunk of same name" ess-noweb-goto-next t] ["Goto chunk" ess-noweb-goto-chunk t] ["Previous code chunk" ess-noweb-previous-code-chunk t] ["Next code chunk" ess-noweb-next-code-chunk t] ["Previous documentation chunk" ess-noweb-previous-doc-chunk t] ["Next documentation chunk" ess-noweb-next-doc-chunk t]) ("Editing" ["Copy chunk" ess-noweb-copy-chunk-as-kill t] ["Copy chunk pair" ess-noweb-copy-chunk-pair-as-kill t] ["Kill chunk" ess-noweb-kill-chunk t] ["Kill chunk pair" ess-noweb-kill-chunk-pair t] ["Mark chunk" ess-noweb-mark-chunk t] ["Mark chunk pair" ess-noweb-mark-chunk-pair t]) ("Narrowing" ["Narrow to chunk" ess-noweb-narrow-to-chunk t] ["Narrow to chunk pair" ess-noweb-narrow-to-chunk-pair t] ["Toggle auto narrowing" ess-noweb-toggle-narrowing t] ["Widen" widen t]) ("Modes" ["Set documentation mode" ess-noweb-set-doc-mode t] ["Set default code mode" ess-noweb-set-code-mode t] ["Set code mode for this chunk" ess-noweb-set-this-code-mode t] ["Insert default mode line" ess-noweb-insert-default-mode-line t]) ("Tangling" ["Tangle current chunk" ess-noweb-tangle-chunk t] ["Tangle current thread" ess-noweb-tangle-current-thread t] ["Tangle named thread" ess-noweb-tangle-thread t]) ("Miscellaneous" ["Complete chunk name" ess-noweb-complete-chunk t] ["Fill current chunk" ess-noweb-fill-chunk t] ["Insert new chunk" ess-noweb-new-chunk t] ["Update the chunk vector" ess-noweb-update-chunk-vector t] ["Chunk occurrences" ess-noweb-occur t]) "--" ["Help" ess-noweb-describe-mode t] ;;["Version" ess-noweb-mode-version t] )) ;; Add ess-noweb-mode to the list of minor modes (if (not (assq 'ess-noweb-mode minor-mode-alist)) (setq minor-mode-alist (append minor-mode-alist (list '(ess-noweb-mode " Noweb"))))) ;; Add ess-noweb-minor-mode-map to the list of minor-mode keymaps ;; available. Then, whenever ess-noweb-mode is activated, the keymap is ;; automatically activated (if (not (assq 'ess-noweb-mode minor-mode-map-alist)) (setq minor-mode-map-alist (cons (cons 'ess-noweb-mode ess-noweb-minor-mode-map) minor-mode-map-alist))) (defun ess-noweb-minor-mode (&optional arg) "Minor meta mode for editing noweb files. See ess-noweb-mode." (interactive) (ess-noweb-mode arg)) ; this was ess-noweb-minor-mode??? (truly recursive) (defun ess-noweb-mode ( &optional arg ) "Minor meta mode for editing noweb files. `Meta' refers to the fact that this minor mode is switching major modes depending on the location of point. The following special keystrokes are available in noweb mode: Movement: \\[ess-noweb-next-chunk] \tgoto the next chunk \\[ess-noweb-previous-chunk] \tgoto the previous chunk \\[ess-noweb-goto-previous] \tgoto the previous chunk of the same name \\[ess-noweb-goto-next] \tgoto the next chunk of the same name \\[ess-noweb-goto-chunk] \t\tgoto a chunk \\[ess-noweb-next-code-chunk] \t\tgoto the next code chunk \\[ess-noweb-previous-code-chunk] \t\tgoto the previous code chunk \\[ess-noweb-next-doc-chunk] \t\tgoto the next documentation chunk \\[ess-noweb-previous-doc-chunk] \t\tgoto the previous documentation chunk Copying/Killing/Marking/Narrowing: \\[ess-noweb-copy-chunk-as-kill] \t\tcopy the chunk the point is in into the kill ring \\[ess-noweb-copy-chunk-pair-as-kill] \t\tcopy the pair of doc/code chunks the point is in \\[ess-noweb-kill-chunk] \t\tkill the chunk the point is in \\[ess-noweb-kill-chunk-pair] \t\tkill the pair of doc/code chunks the point is in \\[ess-noweb-mark-chunk] \t\tmark the chunk the point is in \\[ess-noweb-mark-chunk-pair] \t\tmark the pair of doc/code chunks the point is in \\[ess-noweb-narrow-to-chunk] \t\tnarrow to the chunk the point is in \\[ess-noweb-narrow-to-chunk-pair] \t\tnarrow to the pair of doc/code chunks the point is in \\[widen] \twiden \\[ess-noweb-toggle-narrowing] \t\ttoggle auto narrowing Filling and Indenting: \\[ess-noweb-fill-chunk] \tfill (or indent) the chunk at point according to mode \\[ess-noweb-fill-paragraph-chunk] \tfill the paragraph at point, restricted to chunk \\[ess-noweb-indent-line] \tindent the line at point according to mode Insertion: \\[ess-noweb-insert-default-mode-line] \tinsert a line to set this file's code mode \\[ess-noweb-new-chunk] \t\tinsert a new chunk at point \\[ess-noweb-complete-chunk] \tcomplete the chunk name before point \\[ess-noweb-electric-@] \t\tinsert a `@' or start a new doc chunk \\[ess-noweb-electric-<] \t\tinsert a `<' or start a new code chunk Modes: \\[ess-noweb-set-doc-mode] \t\tset the major mode for editing doc chunks \\[ess-noweb-set-code-mode] \tset the major mode for editing code chunks \\[ess-noweb-set-this-code-mode] \tset the major mode for editing this code chunk Misc: \\[ess-noweb-occur] \t\tfind all occurrences of the current chunk \\[ess-noweb-update-chunk-vector] \tupdate the markers for chunks \\[ess-noweb-describe-mode] \tdescribe ess-noweb-mode " (interactive "P") ;; This bit is tricky: copied almost verbatim from bib-cite-mode.el ;; It seems to ensure that the variable ess-noweb-mode is made ;; local to this buffer. It then sets ess-noweb-mode to `t' if ;; 1) It was called with an argument greater than 0 ;; or 2) It was called with no argument, and ess-noweb-mode is ;; currently nil ;; ess-noweb-mode is nil if the argument was <= 0 or there ;; was no argument and ess-noweb-mode is currently `t' (kill-all-local-variables) (set (make-local-variable 'ess-noweb-mode) (if arg (> (prefix-numeric-value arg) 0) (not ess-noweb-mode))) ;; Now, if ess-noweb-mode is true, we want to turn ;; ess-noweb-mode on (cond (ess-noweb-mode ;Setup the minor-mode (mapc 'ess-noweb-make-variable-permanent-local '(ess-noweb-mode ess-local-process-name ;; also made permanent in ess-mode, but let it be ess-dialect ess-language after-change-functions before-change-functions ess-noweb-narrowing ess-noweb-chunk-vector post-command-hook isearch-mode-hook isearch-mode-end-hook ess-noweb-doc-mode ess-noweb-code-mode ess-noweb-default-code-mode ess-noweb-last-chunk-index)) (ess-noweb-update-chunk-vector) (setq ess-noweb-last-chunk-index (if (equal 0 (ess-noweb-find-chunk-index-buffer)) 1 0)) (if font-lock-mode (progn (font-lock-mode -1) (require 'ess-noweb-font-lock-mode); which requires ess-noweb-mode .. hmm.. (ess-noweb-font-lock-mode 1))) (add-hook 'post-command-hook 'ess-noweb-post-command-function) (add-hook 'after-change-functions 'ess-noweb-after-change-function nil t) (add-hook 'before-change-functions 'ess-noweb-before-change-function nil t) (add-hook 'ess-noweb-select-doc-mode-hook 'ess-noweb-auto-fill-doc-mode) (add-hook 'ess-noweb-select-code-mode-hook 'ess-noweb-auto-fill-code-mode) (add-hook 'isearch-mode-hook 'ess-noweb-note-isearch-mode) (add-hook 'isearch-mode-end-hook 'ess-noweb-note-isearch-mode-end) (setq ess-noweb-doc-mode-syntax-table nil) (run-hooks 'ess-noweb-mode-hook) (message "noweb mode: use `M-x ess-noweb-describe-mode' for further information")) ;; If we didn't do the above, then we want to turn ess-noweb-mode ;; off, no matter what (hence the condition `t') (t (remove-hook 'post-command-hook 'ess-noweb-post-command-function) (remove-hook 'after-change-functions 'ess-noweb-after-change-function t) (remove-hook 'before-change-functions 'ess-noweb-before-change-function t) (remove-hook 'ess-noweb-select-doc-mode-hook 'ess-noweb-auto-fill-doc-mode) (remove-hook 'ess-noweb-select-code-mode-hook 'ess-noweb-auto-fill-code-mode) (remove-hook 'isearch-mode-hook 'ess-noweb-note-isearch-mode) (remove-hook 'isearch-mode-end-hook 'ess-noweb-note-isearch-mode-end) (if (and (boundp 'ess-noweb-font-lock-mode) ess-noweb-font-lock-mode) (progn (ess-noweb-font-lock-mode -1) (message "ESS-Noweb and ESS-Noweb-Font-Lock Modes Removed")) (message "ESS-Noweb mode removed"))))) (defun ess-noweb-make-variable-permanent-local (var) "Declare VAR buffer local, but protect it from beeing killed by major mode changes." (make-variable-buffer-local var) (put var 'permanent-local 't)) (defun ess-noweb-note-isearch-mode () "Take note of an incremental search in progress" (remove-hook 'post-command-hook 'ess-noweb-post-command-function)) (defun ess-noweb-note-isearch-mode-end () "Take note of an incremental search having ended" (add-hook 'post-command-hook 'ess-noweb-post-command-function)) (defun ess-noweb-post-command-function () "The hook being run after each command in noweb mode." (ess-noweb-select-mode)) (defvar ess-noweb-chunk-boundary-changed nil "Whether the current change affects a chunk boundary.") (defvar ess-noweb-chunk-boundary-regexp "^\\(@[^@]\\)\\|\\(<<\\)") (defun ess-noweb-before-change-function (begin end) "Record changes to chunk boundaries." (save-excursion (goto-char begin) (setq ess-noweb-chunk-boundary-changed (re-search-forward ess-noweb-chunk-boundary-regexp end t)))) (defun ess-noweb-after-change-function (begin end length) "Function to run after every change in a noweb buffer. If the changed region contains a chunk boundary, it will update the chunk vector" (save-excursion (goto-char begin) (when (or ess-noweb-chunk-boundary-changed (re-search-forward ess-noweb-chunk-boundary-regexp end t)) (ess-noweb-update-chunk-vector) (setq ess-noweb-chunk-boundary-changed nil)))) ;;; Chunks (defun ess-noweb-update-chunk-vector () "Scan the whole buffer and place a marker at each \"^@\" and \"^<<\". Record them in ess-noweb-CHUNK-VECTOR." (interactive) (save-excursion (goto-char (point-min)) (let ((chunk-list (list (cons 'doc (point-marker))))) (while (re-search-forward "^\\(@\\( \\|$\\|\\( %def\\)\\)\\|<<\\(.*\\)>>=\\)" nil t) (goto-char (match-beginning 0)) ;; If the 3rd subexpression matched @ %def, we're still in a code ;; chunk (sort of), so don't place a marker here. (if (not (match-beginning 3)) (setq chunk-list ;; If the 4th subexpression matched inside <<...>>, ;; we're seeing a new code chunk. (cons (cons (if (match-beginning 4) ;;buffer-substring-no-properties better ;;than buffer-substring if highlighting ;;may be used (buffer-substring-no-properties (match-beginning 4) (match-end 4)) 'doc) (point-marker)) chunk-list)) ;; Scan forward either to !/^@ %def/, which will start a docs chunk, ;; or to /^<<.*>>=$/, which will start a code chunk. (progn (forward-line 1) (while (looking-at "@ %def") (forward-line 1)) (setq chunk-list ;; Now we can tell code vs docs (cons (cons (if (looking-at "<<\\(.*\\)>>=") (buffer-substring-no-properties (match-beginning 1) (match-end 1)) 'doc) (point-marker)) chunk-list)))) (forward-line 1)) (setq chunk-list (cons (cons 'doc (point-max-marker)) chunk-list)) (setq ess-noweb-chunk-vector (vconcat (reverse chunk-list)))))) (defun ess-noweb-find-chunk () "Return a pair consisting of the name (or 'DOC) and the marker of the current chunk." (if (not ess-noweb-chunk-vector) (ess-noweb-update-chunk-vector)) (aref ess-noweb-chunk-vector (ess-noweb-find-chunk-index-buffer))) (defun ess-noweb-chunk-is-code (index) "Return t if the chunk 'index' is a code chunk, nil otherwise" (interactive) (stringp (car (ess-noweb-chunk-vector-aref index)))) (defun ess-noweb-in-code-chunk () "Return t if we are in a code chunk, nil otherwise." (interactive) (ess-noweb-chunk-is-code (ess-noweb-find-chunk-index-buffer))) (defun ess-noweb-in-mode-line () "Return the name of the mode to use if we are in a mode line, nil otherwise." (interactive) (let (beg end mode) (save-excursion (beginning-of-line 1) (and (progn (ess-write-to-dribble-buffer (format "(n-i-m-l: 1)")) (search-forward "-*-" (save-excursion (end-of-line) (point)) t)) (progn (ess-write-to-dribble-buffer (format "(n-i-m-l: 2)")) (skip-chars-forward " \t") (setq beg (point)) (search-forward "-*-" (save-excursion (end-of-line) (point)) t)) (progn (ess-write-to-dribble-buffer (format "(n-i-m-l: 3)")) (forward-char -3) (skip-chars-backward " \t") (setq end (point)) (goto-char beg) (setq mode (concat (downcase (buffer-substring beg end)) "-mode")) (if (and (>= (length mode) 11)) (progn (if (equal (substring mode -10 -5) "-mode") (setq mode (substring mode 0 -5))) (if (equal (substring mode 0 5) "mode:") (setq mode (substring mode 6)))))) (progn (ess-write-to-dribble-buffer (format "(n-i-m-l: 3) mode=%s" mode)) (intern mode)))))) (defun ess-noweb-find-chunk-index-buffer () "Return the index of the current chunk in ess-noweb-CHUNK-VECTOR." (ess-noweb-find-chunk-index 0 (1- (length ess-noweb-chunk-vector)))) (defun ess-noweb-find-chunk-index (low hi) (if (= hi (1+ low)) low (let ((med (/ (+ low hi) 2))) (if (< (point) (cdr (aref ess-noweb-chunk-vector med))) (ess-noweb-find-chunk-index low med) (ess-noweb-find-chunk-index med hi))))) (defun ess-noweb-chunk-region () "Return a pair consisting of the beginning and end of the current chunk." (interactive) (let ((start (ess-noweb-find-chunk-index-buffer))) (cons (marker-position (cdr (aref ess-noweb-chunk-vector start))) (marker-position (cdr (aref ess-noweb-chunk-vector (1+ start))))))) (defun ess-noweb-copy-code-chunk () "Copy the current code chunk to the kill ring, excluding the chunk name. This will be particularly useful when interfacing with ESS." (interactive) (let ((r (ess-noweb-chunk-region))) (save-excursion (goto-char (car r)) (if (ess-noweb-in-code-chunk) (progn (beginning-of-line 2) (copy-region-as-kill (point) (cdr r))))))) (defun ess-noweb-extract-code-chunk () "Create a new buffer with the same name as the current code chunk, and copy all code from chunks of the same name to it." (interactive) (save-excursion (if (ess-noweb-in-code-chunk) (progn (let ((chunk-name (car (ess-noweb-find-chunk))) (chunk-counter 0) (copy-counter 0) (this-chunk) (oldbuf (current-buffer))) (if (get-buffer chunk-name) (progn (set-buffer-modified-p nil) (kill-buffer chunk-name))) (get-buffer-create chunk-name) (message "Created buffer %s" chunk-name) (while (< chunk-counter (- (length ess-noweb-chunk-vector) 2)) (setq this-chunk (ess-noweb-chunk-vector-aref chunk-counter)) (message "Current buffer is %s" (car this-chunk)) (if (equal chunk-name (car this-chunk)) (progn (setq copy-counter (+ copy-counter 1)) (goto-char (cdr this-chunk)) (ess-noweb-copy-code-chunk) (set-buffer chunk-name) (goto-char (point-max)) (yank) (set-buffer oldbuf))) (setq chunk-counter (+ chunk-counter 1))) (message "Copied %d bits" copy-counter) (set-buffer chunk-name) (copy-region-as-kill (point-min)(point-max))))))) (defun ess-noweb-chunk-pair-region () "Return a pair consisting of the beginning and end of the current pair of documentation and code chunks." (interactive) (let* ((start (ess-noweb-find-chunk-index-buffer)) (end (1+ start))) (if (ess-noweb-chunk-is-code start) (cons (marker-position (cdr (aref ess-noweb-chunk-vector (1- start)))) (marker-position (cdr (aref ess-noweb-chunk-vector end)))) (while (not (ess-noweb-chunk-is-code end)) (setq end (1+ end))) (cons (marker-position (cdr (aref ess-noweb-chunk-vector start))) (marker-position (cdr (aref ess-noweb-chunk-vector (1+ end)))))))) (defun ess-noweb-chunk-vector-aref (i) (if (< i 0) (error "Before first chunk.")) (if (not ess-noweb-chunk-vector) (ess-noweb-update-chunk-vector)) (if (>= i (length ess-noweb-chunk-vector)) (error "Beyond last chunk.")) (aref ess-noweb-chunk-vector i)) (defun ess-noweb-complete-chunk () "Complete the chunk name before point, if any." (interactive) (if (ess-noweb-in-code-chunk) (let ((end (point)) (beg (save-excursion (if (re-search-backward "<<" (save-excursion (beginning-of-line) (point)) t) (match-end 0) nil)))) (if beg (let* ((pattern (buffer-substring beg end)) (alist (ess-noweb-build-chunk-alist)) (completion (try-completion pattern alist))) (cond ((eq completion t)) ((null completion) (message "Can't find completion for \"%s\"" pattern) (ding)) ((not (string= pattern completion)) (delete-region beg end) (insert completion) (if (not (looking-at ">>")) (insert ">>"))) (t (message "Making completion list...") (with-output-to-temp-buffer "*Completions*" (display-completion-list (all-completions pattern alist))) (message "Making completion list...%s" "done")))) (message "Not at chunk name..."))) (message "Not in code chunk..."))) ;;; Filling, etc (defun ess-noweb-hide-code-quotes () "Replace all non blank characters in [[...]] code quotes in the current buffer (you might want to narrow to the interesting region first) by `*'. Return a list of pairs with the position and value of the original strings." (save-excursion (let ((quote-list nil)) (goto-char (point-min)) (while (re-search-forward "\\[\\[" nil 'move) (let ((beg (match-end 0)) (end (if (re-search-forward "\\]\\]" nil t) (match-beginning 0) (point-max)))) (goto-char beg) (while (< (point) end) ;; Move on to the next word: (let ((b (progn (skip-chars-forward " \t\n" end) (point))) (e (progn (skip-chars-forward "^ \t\n" end) (point)))) (if (> e b) ;; Save the string and a marker to the end of the ;; replacement text. A marker to the beginning is ;; useless. See ess-noweb-RESTORE-CODE-QUOTES. (save-excursion (setq quote-list (cons (cons (copy-marker e) (buffer-substring b e)) quote-list)) (goto-char b) (insert-char ?* (- e b) t) (delete-char (- e b)))))))) (reverse quote-list)))) (defun ess-noweb-restore-code-quotes (quote-list) "Reinsert the strings modified by `ess-noweb-hide-code-quotes'." (save-excursion (mapcar (lambda (q) (let* ((e (marker-position (car q))) ;; Slightly inefficient, but correct way to find ;; the beginning of the word to be replaced. ;; Using the marker at the beginning will loose ;; if whitespace has been rearranged (b (save-excursion (goto-char e) (skip-chars-backward "*") (point)))) (delete-region b e) (goto-char b) (insert (cdr q)))) quote-list))) (defun ess-noweb-fill-chunk () "Fill the current chunk according to mode. Run `fill-region' on documentation chunks and `indent-region' on code chunks." (interactive) (save-excursion (save-restriction (ess-noweb-narrow-to-chunk) (if (ess-noweb-in-code-chunk) (progn ;; Narrow to the code section proper; w/o the first and any ;; index declaration lines. (narrow-to-region (progn (goto-char (point-min)) (forward-line 1) (point)) (progn (goto-char (point-max)) (forward-line -1) (while (looking-at "@") (forward-line -1)) (forward-line 1) (point))) (if (or indent-region-function indent-line-function) (indent-region (point-min) (point-max) nil) (error "No indentation functions defined in %s!" major-mode))) (if ess-noweb-code-quotes-handling (let ((quote-list (ess-noweb-hide-code-quotes))) (fill-region (point-min) (point-max)) (ess-noweb-restore-code-quotes quote-list)) (fill-region (point-min) (point-max))))))) (defun ess-noweb-indent-region (beg end) "If region fits inside current chunk, narrow to chunk and then indent according to mode." (interactive "r") (let* ((inx (ess-noweb-find-chunk-index-buffer)) (ch-beg (marker-position (cdr (aref ess-noweb-chunk-vector inx)))) (ch-end (marker-position (cdr (aref ess-noweb-chunk-vector (1+ inx)))))) (if (and (< ch-beg beg) (> ch-end end)) (save-excursion (save-restriction (setq beg (max beg (progn (goto-char ch-beg) (forward-line 1) (point)))) (setq end (min end (progn (goto-char ch-end) (forward-line -1) (point)))) (narrow-to-region beg end) (indent-region beg end))) (indent-region beg end)))) (defun ess-noweb-indent-line () "Indent the current line according to mode, after narrowing to this chunk." (interactive) (ess-noweb-update-chunk-vector) (save-restriction (ess-noweb-narrow-to-chunk) (if (ess-noweb-in-code-chunk) (progn ;; Narrow to the code section proper; w/o the first and any ;; index declaration lines. (save-excursion (narrow-to-region (progn (goto-char (point-min)) (forward-line 1) (point)) (progn (goto-char (point-max)) (forward-line -1) (while (looking-at "@") (forward-line -1)) (forward-line 1) (point)))))) (indent-according-to-mode))) (defun ess-noweb-fill-paragraph-chunk (&optional justify) "Fill a paragraph in the current chunk." (interactive "P") (ess-noweb-update-chunk-vector) (save-excursion (save-restriction (ess-noweb-narrow-to-chunk) (if (ess-noweb-in-code-chunk) (progn ;; Narrow to the code section proper; w/o the first and any ;; index declaration lines. (narrow-to-region (progn (goto-char (point-min)) (forward-line 1) (point)) (progn (goto-char (point-max)) (forward-line -1) (while (looking-at "@") (forward-line -1)) (forward-line 1) (point))) (fill-paragraph justify)) (if ess-noweb-code-quotes-handling (let ((quote-list (ess-noweb-hide-code-quotes))) (fill-paragraph justify) (ess-noweb-restore-code-quotes quote-list)) (fill-paragraph justify)))))) (defun ess-noweb-auto-fill-doc-chunk () "Replacement for `do-auto-fill'." (save-restriction (narrow-to-region (car (ess-noweb-chunk-region)) (save-excursion (end-of-line) (point))) (if ess-noweb-code-quotes-handling (let ((quote-list (ess-noweb-hide-code-quotes))) (do-auto-fill) (ess-noweb-restore-code-quotes quote-list)) (do-auto-fill)))) (defun ess-noweb-auto-fill-doc-mode () "Install the improved auto fill function, iff necessary." (if auto-fill-function (setq auto-fill-function 'ess-noweb-auto-fill-doc-chunk))) (defun ess-noweb-auto-fill-code-chunk () "Replacement for do-auto-fill. Cancel filling in chunk headers" (unless (save-excursion (beginning-of-line) (looking-at "<<")) (do-auto-fill))) (defun ess-noweb-auto-fill-code-mode () "Install the default auto fill function, iff necessary." (if auto-fill-function (setq auto-fill-function 'ess-noweb-auto-fill-code-chunk))) ;;; Marking (defun ess-noweb-mark-chunk () "Mark the current chunk." (interactive) (let ((r (ess-noweb-chunk-region))) (goto-char (car r)) (push-mark (cdr r) nil t))) (defun ess-noweb-mark-chunk-pair () "Mark the current pair of documentation and code chunks." (interactive) (let ((r (ess-noweb-chunk-pair-region))) (goto-char (car r)) (push-mark (cdr r) nil t))) ;;; Narrowing (defun ess-noweb-toggle-narrowing (&optional arg) "Toggle if we should narrow the display to the current pair of documentation and code chunks after each movement. With argument: switch narrowing on." (interactive "P") (if (or arg (not ess-noweb-narrowing)) (progn (setq ess-noweb-narrowing t) (ess-noweb-narrow-to-chunk-pair)) (setq ess-noweb-narrowing nil) (widen))) (defun ess-noweb-narrow-to-chunk () "Narrow the display to the current chunk." (interactive) (let ((r (ess-noweb-chunk-region))) (narrow-to-region (car r) (cdr r)))) (defun ess-noweb-narrow-to-chunk-pair () "Narrow the display to the current pair of documentation and code chunks." (interactive) (let ((r (ess-noweb-chunk-pair-region))) (narrow-to-region (car r) (cdr r)))) ;;; Killing (defun ess-noweb-kill-chunk () "Kill the current chunk." (interactive) (let ((r (ess-noweb-chunk-region))) (kill-region (car r) (cdr r)))) (defun ess-noweb-kill-chunk-pair () "Kill the current pair of chunks." (interactive) (let ((r (ess-noweb-chunk-pair-region))) (kill-region (car r) (cdr r)))) (defun ess-noweb-copy-chunk-as-kill () "Place the current chunk on the kill ring." (interactive) (let ((r (ess-noweb-chunk-region))) (copy-region-as-kill (car r) (cdr r)))) (defun ess-noweb-copy-chunk-pair-as-kill () "Place the current pair of chunks on the kill ring." (interactive) (let ((r (ess-noweb-chunk-pair-region))) (copy-region-as-kill (car r) (cdr r)))) ;;; Movement (defun ess-noweb-sign (n) "Return the sign of N." (if (< n 0) -1 1)) (defun ess-noweb-next-doc-chunk (&optional cnt) "Goto to the Nth documentation chunk from point." (interactive "p") (widen) (let ((start (ess-noweb-find-chunk-index-buffer)) (i 1)) (while (<= i (abs cnt)) (setq start (+ (ess-noweb-sign cnt) start)) (while (ess-noweb-chunk-is-code start) (setq start (+ (ess-noweb-sign cnt) start))) (setq i (1+ i))) (goto-char (marker-position (cdr (ess-noweb-chunk-vector-aref start)))) (forward-char 1)) (if ess-noweb-narrowing (ess-noweb-narrow-to-chunk-pair))) (defun ess-noweb-previous-doc-chunk (&optional n) "Goto to the -Nth documentation chunk from point." (interactive "p") (ess-noweb-next-doc-chunk (- n))) (defun ess-noweb-next-code-chunk (&optional cnt) "Goto to the Nth code chunk from point." (interactive "p") (widen) (let ((start (ess-noweb-find-chunk-index-buffer)) (i 1)) (while (<= i (abs cnt)) (setq start (+ (ess-noweb-sign cnt) start)) (while (not (ess-noweb-chunk-is-code start)) (setq start (+ (ess-noweb-sign cnt) start))) (setq i (1+ i))) (goto-char (marker-position (cdr (ess-noweb-chunk-vector-aref start)))) (forward-line 1)) (if ess-noweb-narrowing (ess-noweb-narrow-to-chunk-pair))) (defun ess-noweb-previous-code-chunk (&optional n) "Goto to the -Nth code chunk from point." (interactive "p") (ess-noweb-next-code-chunk (- n))) (defun ess-noweb-next-chunk (&optional n) "If in a documentation chunk, goto to the Nth documentation chunk from point, else goto to the Nth code chunk from point." (interactive "p") ;; (dbg (current-buffer)) (if (ess-noweb-in-code-chunk) (ess-noweb-next-code-chunk n) (ess-noweb-next-doc-chunk n))) (defun ess-noweb-previous-chunk (&optional n) "If in a documentation chunk, goto to the -Nth documentation chunk from point, else goto to the -Nth code chunk from point." (interactive "p") (ess-noweb-next-chunk (- n))) (defvar ess-noweb-chunk-history nil "") (defun ess-noweb-goto-chunk () "Goto the named chunk." (interactive) (widen) (let* ((completion-ignore-case t) (alist (ess-noweb-build-chunk-alist)) (chunk (ess-completing-read "Chunk" (delete "" (mapcar 'car alist)) nil t nil ess-noweb-chunk-history (ess-noweb-goto-chunk-default)))) (goto-char (cdr (assoc chunk alist)))) (if ess-noweb-narrowing (ess-noweb-narrow-to-chunk-pair))) (defun ess-noweb-goto-chunk-default () (save-excursion (if (re-search-backward "<<" (save-excursion (beginning-of-line) (point)) 'move) (goto-char (match-beginning 0))) (if (re-search-forward "<<\\(.*\\)>>" (save-excursion (end-of-line) (point)) t) (buffer-substring (match-beginning 1) (match-end 1)) nil))) (defun ess-noweb-build-chunk-alist () (if (not ess-noweb-chunk-vector) (ess-noweb-update-chunk-vector)) ;; The naive recursive solution will exceed MAX-LISP-EVAL-DEPTH in ;; buffers w/ many chunks. Maybe there is a tail recursivce solution, ;; but iterative solutions should be acceptable for dealing with vectors. (let ((alist nil) (i (1- (length ess-noweb-chunk-vector)))) (while (>= i 0) (let* ((chunk (aref ess-noweb-chunk-vector i)) (name (car chunk)) (marker (cdr chunk))) (if (and (stringp name) (not (assoc name alist))) (setq alist (cons (cons name marker) alist)))) (setq i (1- i))) alist)) (defun ess-noweb-goto-next (&optional cnt) "Goto the continuation of the current chunk." (interactive "p") (widen) (if (not ess-noweb-chunk-vector) (ess-noweb-update-chunk-vector)) (let ((start (ess-noweb-find-chunk-index-buffer))) (if (not (ess-noweb-chunk-is-code start)) (setq start (1+ start))) (if (ess-noweb-chunk-is-code start) (let ((name (car (ess-noweb-chunk-vector-aref start))) (i 1)) (while (<= i (abs cnt)) (setq start (+ (ess-noweb-sign cnt) start)) (while (not (equal (car (ess-noweb-chunk-vector-aref start)) name)) (setq start (+ (ess-noweb-sign cnt) start))) (setq i (1+ i))) (goto-char (marker-position (cdr (ess-noweb-chunk-vector-aref start)))) (forward-line 1)))) (if ess-noweb-narrowing (ess-noweb-narrow-to-chunk-pair))) (defun ess-noweb-goto-previous (&optional cnt) "Goto the previous chunk." (interactive "p") (ess-noweb-goto-next (- cnt))) (defun ess-noweb-occur (arg) "Find all occurences of the current chunk. This function simply runs OCCUR on \"<>\"." (interactive "P") (let ((n (if (and arg (numberp arg)) arg 0)) (idx (ess-noweb-find-chunk-index-buffer))) (if (ess-noweb-chunk-is-code idx) (occur (regexp-quote (concat "<<" (car (aref ess-noweb-chunk-vector idx)) ">>")) n) (setq idx (1+ idx)) (while (not (ess-noweb-chunk-is-code idx)) (setq idx (1+ idx))) (occur (regexp-quote (concat "<<" (car (aref ess-noweb-chunk-vector idx)) ">>")) n)))) ;;; Insertion (defun ess-noweb-new-chunk (name) "Insert a new chunk." (interactive "sChunk name: ") (insert "@ \n<<" name ">>=\n") (save-excursion (insert "@ %def \n")) (ess-noweb-update-chunk-vector)) (defun ess-noweb-at-beginning-of-line () (equal (save-excursion (beginning-of-line) (point)) (point))) (defun ess-noweb-electric-@ (arg) "Smart incarnation of `@', starting a new documentation chunk, maybe. If given an numerical argument, it will act just like the dumb `@'. Otherwise and if at the beginning of a line in a code chunk: insert \"@ \" and update the chunk vector." (interactive "P") (if arg (self-insert-command (if (numberp arg) arg 1)) (if (and (ess-noweb-at-beginning-of-line) (ess-noweb-in-code-chunk)) (progn (insert "@ ") (ess-noweb-update-chunk-vector)) (self-insert-command 1)))) (defun ess-noweb-electric-< (arg) "Smart incarnation of `<', starting a new code chunk, maybe. If given an numerical argument, it will act just like the dumb `<'. Otherwise and if at the beginning of a line in a documentation chunk: insert \"<<>>=\", a closing \"@\" and a newline if necessary. Leave point in the middle and and update the chunk vector." (interactive "P") (if arg (self-insert-command (if (numberp arg) arg 1)) (if (and (ess-noweb-at-beginning-of-line) (not (ess-noweb-in-code-chunk))) (progn (insert "<<") (save-excursion (insert ">>=\n@ ") (if (not (looking-at "\\s *$")) (newline))) (ess-noweb-update-chunk-vector)) (self-insert-command 1)))) ;;; Modes (defun ess-noweb-set-chunk-code-mode () "Set the ess-noweb-code-mode for the current chunk" (interactive) (if (ess-noweb-in-code-chunk) (progn ;; Reset code-mode to default and then check for a mode comment. (setq ess-noweb-code-mode ess-noweb-default-code-mode) (let (mode chunk-name) (save-excursion (save-restriction (end-of-line) (re-search-backward "^[ \t]*<<\\(.*\\)>>=" nil t) (setq chunk-name (match-string 1)) (widen) (goto-char (point-min)) (re-search-forward (concat "^<<" (regexp-quote chunk-name) ">>=") nil t) (beginning-of-line 2) (setq mode (ess-noweb-in-mode-line)) (if (functionp mode) (setq ess-noweb-code-mode mode)))))) (error "This only makes sense in a code chunk"))) (defun ess-noweb-set-doc-syntax-table () "Sets the doc-mode syntax-table to treat code quotes as comments." (interactive) (let ((square-bracket-string (char-to-string (char-syntax ?\[)))) (if (string= square-bracket-string "(") (progn (modify-syntax-entry ?\[ "(]12b" ess-noweb-doc-mode-syntax-table) (modify-syntax-entry ?\] ")[34b" ess-noweb-doc-mode-syntax-table)) (progn (modify-syntax-entry ?\[ (concat square-bracket-string " 12b") ess-noweb-doc-mode-syntax-table) (modify-syntax-entry ?\] (concat square-bracket-string " 34b") ess-noweb-doc-mode-syntax-table))))) (defun ess-noweb-select-mode () "Select ess-noweb-DOC-MODE or ess-noweb-CODE-MODE, as appropriate." (interactive) (let ((this-chunk-index (ess-noweb-find-chunk-index-buffer))) ;; Has the last change to the buffer taken us into a different ;; chunk ? (if (not (equal this-chunk-index ess-noweb-last-chunk-index)) (progn (setq ess-noweb-last-chunk-index this-chunk-index) (if (ess-noweb-in-code-chunk) ;; Inside a code chunk (progn ;; Find out which code mode to use (ess-noweb-set-chunk-code-mode) ;; If we aren't already using it, use it. (if (not (equal major-mode ess-noweb-code-mode)) (progn (funcall ess-noweb-code-mode) (run-hooks 'ess-noweb-select-mode-hook) (run-hooks 'ess-noweb-select-code-mode-hook)))) ;; Inside a documentation chunk (progn (if (not (equal major-mode ess-noweb-doc-mode)) (progn (funcall ess-noweb-doc-mode))) (if (not ess-noweb-doc-mode-syntax-table) (progn (message "Setting up syntax table") (setq ess-noweb-doc-mode-syntax-table (make-syntax-table (syntax-table))) (ess-noweb-set-doc-syntax-table))) (set-syntax-table ess-noweb-doc-mode-syntax-table) (run-hooks 'ess-noweb-select-mode-hook) (run-hooks 'ess-noweb-select-doc-mode-hook))) (run-hooks 'ess-noweb-changed-chunk-hook))))) (defvar ess-noweb-doc-mode ess-noweb-default-doc-mode "Default major mode for editing noweb documentation chunks. It is not possible to have more than one doc-mode in a file. However, this variable is used to determine whether the doc-mode needs to by added to the mode-line") (defun ess-noweb-set-doc-mode (mode) "Change the major mode for editing documentation chunks." (interactive "CNew major mode for documentation chunks: ") (setq ess-noweb-doc-mode mode) (setq ess-noweb-doc-mode-syntax-table nil) ;;Pretend we've changed chunk, so the mode will be reset if necessary (setq ess-noweb-last-chunk-index (1- ess-noweb-last-chunk-index)) (ess-noweb-select-mode)) (defun ess-noweb-set-code-mode (mode) "Change the major mode for editing all code chunks." (interactive "CNew major mode for all code chunks: ") (setq ess-noweb-default-code-mode mode) ;;Pretend we've changed chunk, so the mode will be reset if necessary (setq ess-noweb-last-chunk-index (1- ess-noweb-last-chunk-index)) (ess-noweb-select-mode)) (defun ess-noweb-set-this-code-mode (mode) "Change the major mode for editing this code chunk. The only sensible way to do this is to add a mode line to the chunk" (interactive "CNew major mode for this code chunk: ") (if (ess-noweb-in-code-chunk) (progn (setq ess-noweb-code-mode mode) (save-excursion (save-restriction (let (chunk-name) (widen) (end-of-line) (re-search-backward "^[ \t]*<<\\(.*\\)>>=" nil t) (setq chunk-name (match-string 1)) (goto-char (point-min)) (re-search-forward (concat "^<<" (regexp-quote chunk-name) ">>=") nil t) (beginning-of-line 2)) ;; remove mode-line, if there is one (if (ess-noweb-in-mode-line) (progn (kill-line) (kill-line))) (if (not (equal ess-noweb-code-mode ess-noweb-default-code-mode)) (progn (setq mode (substring (symbol-name mode) 0 -5)) ;; Need to set major mode so that we can comment out ;; the mode line (funcall ess-noweb-code-mode) (if (not (boundp 'comment-start)) (setq comment-start "#")) (insert comment-start " -*- " mode " -*- " comment-end "\n"))) (setq ess-noweb-last-chunk-index (1- ess-noweb-last-chunk-index))))) (message "This only makes sense in a code chunk."))) ;;; Misc (defun ess-noweb-mode-version () "Echo the RCS identification of noweb mode." (interactive) (message "Thorsten's ess-noweb-mode, now part of ESS version %s" ess-version)) (defun ess-noweb-describe-mode () "Describe noweb mode." (interactive) (describe-function 'ess-noweb-mode)) (defun ess-noweb-insert-default-mode-line () "Insert line that will set the noweb mode of this file in emacs. The file is set to use the current doc and default-code modes, so ensure they are set correctly (with ess-noweb-set-code-mode and ess-noweb-set-doc-mode) before calling this function" (interactive) (save-excursion (goto-char 1) (if (ess-noweb-in-mode-line) (progn (kill-line) (kill-line))) (if (not (eq major-mode ess-noweb-doc-mode)) (ess-noweb-select-mode)) (insert comment-start " -*- mode: noweb; ess-noweb-default-code-mode: " (symbol-name ess-noweb-default-code-mode) (if (not (eq ess-noweb-doc-mode ess-noweb-default-doc-mode)) (concat "; ess-noweb-doc-mode: " (symbol-name ess-noweb-doc-mode) ";") ";") " -*-" comment-end "\n")) (ess-noweb-select-mode)) (defun ess-noweb-mouse-first-button (event) (interactive "e") (mouse-set-point event) (if (and ess-noweb-use-mouse-navigation (eq (save-excursion (end-of-line) (re-search-backward "^[\t ]*\\(<<\\)\\(.*\\)\\(>>\\)" nil t)) (save-excursion (beginning-of-line) (point)))) (progn (if (< (point) (match-beginning 2)) (let ((chunk-name (buffer-substring-no-properties (match-beginning 2) (match-end 2)))) (re-search-backward (concat "<<" (regexp-quote chunk-name) ">>") nil t)) (if (and (<= (match-end 2) (point)) (> (+ 2 (match-end 2)) (point))) (let ((chunk-name (buffer-substring-no-properties (match-beginning 2) (match-end 2)))) (re-search-forward (concat "<<" (regexp-quote chunk-name) ">>") nil t))))))) ;;; Debugging (defun ess-noweb-log (s) (let ((b (current-buffer))) (switch-to-buffer (get-buffer-create "*noweb-log*")) (goto-char (point-max)) (setq buffer-read-only nil) (insert s) (setq buffer-read-only t) (switch-to-buffer b))) (defvar ess-noweb-thread-alist nil "A list of threads in the current buffer. Each entry in the list contains 5 elements: 1) The name of the threads 2) The name of the immdiate parent thread in which it is used (nil if it is a \"top-level\" thread which is not used anywhere). 3) The name of the top-level parent thread in which it is used (i.e. a thread in which it is used but which is not itself used anywhere: nil if this thread is not used anywhere. 4) The format string to use to define line numbers in the output file of this thread. Should only be set if this thread is not used anywhere: if a thread is used as part of another thread, the parent thread's format string should be used. 5) If this is nil, tabs are converted to spaces in the tangled file. If it is a number, tabs are copied to the tangled file unchanged, and tabs are also used for indentation, with the number of spaces per tab defined by this number. This MUST be set in order to tangle makefiles, which depend on tabs.Should only be set if this thread is not used anywhere. otherwise set to nil. " ) (defun ess-noweb-update-thread-alist () "Updates the list of threads in the current buffer. Each entry in the list contains 5 elements: 1) The name of the thread 2) The name of the immdiate parent thread in which it is used (nil if it is a \"top-level\" thread which is not used anywhere). 3) The name of the top-level parent thread in which it is used (i.e. a thread in which it is used but which is not itself used anywhere: nil if this thread is not used anywhere. 4) The format string to use to define line numbers in the output file of this thread. Should only be set if this thread is not used anywhere: if a thread is used as part of another thread, the parent thread's format string should be used. 5) If this is nil, tabs are converted to spaces in the tangled file. If it is a number, tabs are copied to the tangled file unchanged, and tabs are also used for indentation, with the number of spaces per tab defined by this number. This MUST be set in order to tangle makefiles, which depend on tabs.Should only be set if this thread is not used anywhere. otherwise set to nil. " (interactive) (save-excursion (goto-char (point-min)) (let ((thread-alist) (thread-list-entry) (chunk-use-name) (current-thread) (new-thread-alist)) (while (re-search-forward "^[ \t]*<<\\(.*\\)>>\\(=\\)?" nil t) (goto-char (match-beginning 0)) ;; Is this the definition of a chunk ? (if (match-beginning 2) ;;We have a chunk definition (progn ;; Get the thread name (setq current-thread (buffer-substring-no-properties (match-beginning 1) (match-end 1))) ;; Is this thread already in our list ? (if (assoc current-thread thread-alist) nil (progn ;; If not, create an entry with 4 nils at the end (setq thread-list-entry (list (cons current-thread (make-list 4 nil)))) ;; And add it to the list (setq thread-alist (append thread-alist thread-list-entry))))) ;; Not a definition but a use (progn ;; Get the thread name (setq chunk-use-name (buffer-substring-no-properties (match-beginning 1) (match-end 1))) ;; Has the thread already been defined before being used ? (if (setq thread-list-entry (assoc chunk-use-name thread-alist)) ;; If it has, set its parent to be the thread we are in at the moment (setcar (cdr thread-list-entry) current-thread) ;; If not, add it to the list, with its parent name and 3 nils (progn (setq thread-list-entry (list (cons chunk-use-name (cons current-thread (make-list 3 nil))))) (setq thread-alist (append thread-alist thread-list-entry))))) ) ;;Go to the next line (beginning-of-line 2)) ;; Now, the second element of each entry points to that thread's ;; immediate parent. Need to set it to the thread's ultimate ;; parent. (let ((thread-counter 0) (this-thread) (this-thread-parent)) (while (<= thread-counter (1- (length thread-alist))) (setq this-thread (nth thread-counter thread-alist)) (setq this-thread-parent (assoc (car (cdr this-thread)) thread-alist)) (while (not (equal nil (car (cdr this-thread-parent)))) (setq this-thread-parent (assoc (car (cdr this-thread-parent)) thread-alist))) (setq this-thread (cons (car this-thread) (cons (car (cdr this-thread)) (cons (car this-thread-parent) (nthcdr 2 this-thread))))) (setq new-thread-alist (append new-thread-alist (list this-thread))) (setq thread-counter (1+ thread-counter)))) (setq ess-noweb-thread-alist new-thread-alist)))) ; Option setting functions to go here (defun ess-noweb-set-thread-line-format ()) (defun ess-noweb-set-thread-tabs ()) (defvar ess-noweb-default-line-number-format nil "The format string to use to define line numbers in this thread. If nil, do not use line numbers.") (defvar ess-noweb-default-line-number-skip-lines 0 "The number of initial lines to output before the line number. This may be useful in shell scripts, where the first line (or two) must have a specific form.") (defvar ess-noweb-default-tab-width 8 "If a number, convert tabs to that number of spaces in the output. If nil, let tabs through to the output unaltered.") (defvar ess-noweb-line-number-format ess-noweb-default-line-number-format "The format string to use to define line numbers in this thread. If nil, do not use line numbers.") (defvar ess-noweb-line-number-skip-lines ess-noweb-default-line-number-skip-lines "The number of initial lines to output before the line number. This may be useful in shell scripts, where the first line (or two) must have a specific form.") (defvar ess-noweb-tab-width ess-noweb-default-tab-width "If a number, convert tabs to that number of spaces in the output. If nil, let tabs through to the output unaltered.") (defun ess-noweb-get-thread-local-variables () "Get the values of the variables that are local to a thread." (interactive) (save-excursion (save-restriction (end-of-line) (re-search-backward "^[ \t]*<<\\(.*\\)>>=" nil t) (let ((chunk-name (match-string 1))) (widen) (goto-char (point-min)) (re-search-forward (concat "^<<" (regexp-quote chunk-name) ">>=") nil t) (beginning-of-line 2) (while (looking-at ".*-\*-.*-\*-") (let ((this-line (buffer-substring-no-properties (point) (progn (end-of-line) (point))))) (if (string-match "mode:[ \t]*\\([^\t ]*\\)" this-line) (setq ess-noweb-code-mode (match-string-no-properties 1 this-line))) (if (string-match "ess-noweb-line-number-format:[ \t]*\"\\([^\"]*\\)\"" this-line) (setq ess-noweb-line-number-format (match-string-no-properties 1 this-line))) (if (string-match "ess-noweb-line-number-skip-lines:[ \t]*\\([^\t ]*\\)" this-line) (setq ess-noweb-line-number-skip-lines (string-to-number (match-string-no-properties 1 this-line)))) (if (string-match "ess-noweb-tab-width:[ \t]*\\([^\t ]*\\)" this-line) (setq ess-noweb-tab-width (string-to-number (match-string-no-properties 1 this-line)))) (beginning-of-line 2))))))) (defun ess-noweb-reset-thread-local-variables () "Resets the thread-local variables to their default values" (setq ess-noweb-tab-width ess-noweb-default-tab-width) (setq ess-noweb-line-number-format ess-noweb-default-line-number-format) (setq ess-noweb-line-number-skip-lines ess-noweb-default-line-number-skip-lines)) (defun ess-noweb-write-line-number (line-number-format buffer) (if line-number-format (progn (let ((this-line (count-lines (point-min)(point)))) (while (string-match ".*\\(%L\\).*" line-number-format) (setq line-number-format (replace-match (format "%d" this-line) t t line-number-format 1))) (while (string-match ".*\\(%F\\).*" line-number-format) (setq line-number-format (replace-match (format "%s" (buffer-file-name)) t t line-number-format 1))) (while (string-match ".*\\(%N\\).*" line-number-format) (setq line-number-format (replace-match "\n" t t line-number-format 1))) (save-excursion (set-buffer buffer) (insert line-number-format)))))) (defun ess-noweb-tangle-chunk ( &optional buffer prefix-string) "Generate the code produced by this chunk, & any threads used in this chunk." (interactive) (save-excursion (ess-noweb-reset-thread-local-variables) (ess-noweb-get-thread-local-variables) (ess-noweb-update-chunk-vector) (let* ((chunk-end (progn (end-of-line) (re-search-forward "^@" nil t) (beginning-of-line) (point))) ;;get name and start point of this chunk (chunk-start (progn (re-search-backward "^<<\\([^>]*\\)>>=$" nil t) (beginning-of-line 2) (point))) (chunk-name (buffer-substring-no-properties (match-end 1) (match-beginning 1))) ;; get end of this chunk ;; Get information we need about this thread (thread-info (assoc chunk-name ess-noweb-thread-alist)) (thread-tabs (nth 4 thread-info)) (line-number-format (nth 3 thread-info)) (thread-name-re) (post-chunk) (pre-chunk) (first-line t) (tangle-buffer (generate-new-buffer "Tangle Buffer"))) (progn (goto-char chunk-start) ;; If this is a mode-line, ignore it (while (looking-at ".*-\\*-.*-\\*-") (beginning-of-line 2)) ;; If we want to include line numbers, write one (if line-number-format (while (> ess-noweb-line-number-skip-lines 0) (append-to-buffer tangle-buffer (point) (save-excursion (progn (end-of-line) (point)))) (beginning-of-line 2) (1- ess-noweb-line-number-skip-lines)) (ess-noweb-write-line-number line-number-format buffer)) (message "Now at %d" (point)) (while (< (point) chunk-end) (untabify (point) (save-excursion (beginning-of-line 2)(point))) ;; This RE gave me trouble. Without the `\"', it ;; recognised itself and so could not copy itself ;; correctly. (if (looking-at "\\([^\n\"@]*\\)<<\\(.*\\)\\(>>\\)\\([^\n\"]*\\)$") (progn (save-excursion (save-restriction (setq thread-name-re (concat "<<" (regexp-quote (match-string 2)) ">>=")) (setq pre-chunk (match-string 1)) (if prefix-string (setq pre-chunk (concat prefix-string pre-chunk))) (setq post-chunk (match-string 4)) (widen) (goto-char (point-min)) (while (re-search-forward thread-name-re nil t) (ess-noweb-tangle-chunk tangle-buffer pre-chunk) (forward-line 1))) (if post-chunk (save-excursion (set-buffer tangle-buffer) (backward-char) (insert post-chunk) (beginning-of-line 2))))) ;; Otherwise, just copy this line (setq pre-chunk (buffer-substring (point) (save-excursion (beginning-of-line 2) (point)))) ;; Add a prefix if necessary (if (and prefix-string (> (length pre-chunk) 1)) (setq pre-chunk (concat prefix-string pre-chunk))) ;; And copy it to the buffer (save-excursion (set-buffer tangle-buffer) (insert pre-chunk))) ;; If this is the first line of the chunk, we need to change ;; prefix-string to consist solely of spaces (if (and first-line prefix-string) (progn (setq prefix-string (make-string (length prefix-string) ?\ )) (setq first-line nil))) ;; Either way, go to the next line (beginning-of-line 2)) (save-excursion (set-buffer tangle-buffer) (goto-char (point-min)) (while (re-search-forward "\@\<<" nil t) (replace-match "<<" nil nil) (forward-char 3)) (if thread-tabs (progn (setq tab-width thread-tabs) (tabify (point-min)(point-max))) (untabify (point-min)(point-max)))) (if buffer (save-excursion (set-buffer buffer) (insert-buffer-substring tangle-buffer) (kill-buffer tangle-buffer))) )))) (defun ess-noweb-tangle-thread ( name &optional buffer) "Given the name of a thread, tangles the thread to buffer. If no buffer is given, create a new one with the same name as the thread." (interactive "sWhich thread ? ") (if (not buffer) (progn (setq buffer (get-buffer-create name)) (save-excursion (set-buffer buffer) (erase-buffer)))) (save-excursion (goto-char (point-min)) (let ((chunk-counter 0)) (while (re-search-forward "^<<\\(.*\\)>>=[\t ]*" nil t) (if (string= (match-string 1) name) (progn (setq chunk-counter (1+ chunk-counter)) (message "Found %d chunks" chunk-counter) (ess-noweb-tangle-chunk buffer))))))) (defun ess-noweb-tangle-current-thread ( &optional buffer) (interactive) (save-excursion (let* ((chunk-start (progn (re-search-backward "^<<\\([^>]*\\)>>=[\t ]*$" nil t) (beginning-of-line 2) (point))) (chunk-name (buffer-substring-no-properties (match-end 1) (match-beginning 1)))) (ess-noweb-tangle-thread chunk-name buffer)))) ;menu functions ;;; Finale (run-hooks 'ess-noweb-mode-load-hook) (provide 'ess-noweb-mode) ;; Changes made by Mark Lunt (mark.lunt@mrc-bsu.cam.ac.uk) 22/03/1999 ;; The possibility of having code chunks using more than one language ;; was added. This was first developed by Adnan Yaqub ;; (AYaqub@orga.com) for syntax highlighting, but even people who hate ;; highlighting may like to maintain their Makefile with their code, ;; or test-scripts with their programs, or even user documentation as ;; latex-mode code chunks. ;; This required quite a few changes to ess-noweb-mode: ;; 1) A new variable `ess-noweb-default-code-mode' was create to do the job ;; `ess-noweb-code-mode' used to. ;; 2) ess-noweb-code-mode now contains the code-mode of the current chunk ;; 3) Each chunk can now have its own mode-line to tell emacs what ;; mode to use to edit it. The function `ess-noweb-in-mode-line' ;; recognises such mode-lines, and the function ;; `ess-noweb-set-this-code-mode' sets the code mode for the current ;; chunk and adds a mode-line if necessary. If several chunks have ;; the same name, the mode-line must appear in the first chunk with ;; that name. ;; 4) The mechanism for deciding whether to change mode was altered, ;; since the old method assumed a single code mode. Now, ;; `ess-noweb-last-chunk-index' keeps track of which chunk we were in ;; last. If we have moved to a different chunk, we have to check ;; which mode we should be in, and change if necessary. ;; The keymap and menu-map handling was changed. Easymenu was used to ;; define the menu, and it the keymap was attached to the 'official' ;; minor-modes-keymaps list. This means that ;; 1) It was automatically loaded when ess-noweb-mode was active and ;; unloaded when it was inactive. ;; 2) There was no need to worry about the major mode map clobbering ;; it , since it takes precedence over the major mode ;; map. `ess-noweb-setup-keymap' is therefore now superfluous ;; The menu was also reorganised to make it less cluttered, so there ;; would be room for adding tangling and weaving commands (one day). ;; Mouse navigation (at least under Emacs (AJR)) is supported, in so ;; far as clicking mouse-1 on the '<<' of a chunk name moves to the ;; previous instance of that chunk name, and clicking in the '>>' ;; moves to the next instance. They are not mouse-hightlighted, ;; though: too much hassle for zero added functionality. ;; ess-noweb-doc-mode has been given its own syntax-table. It is the same ;; as the current doc-mode syntax-table, except that [[ is a comment ;; start and ]] a comment end. Fixes some ugliness in LaTeX-mode if ;; `$' or `%' appear in quoted code (or even `<<', which happens often ;; in C++). ;; (This should make ess-noweb-hide-code-quotes and ;; ess-noweb-restore-code-quotes unnecessary, but I have not yet removed ;; them, nor the calls to them). ;; A new function `ess-noweb-indent-line' was defined and bound by default ;; to the tab key. This should indent the current line correctly in ;; whichever mode we are currently in. Previously, c-mode in ;; particular did not behave well with indentation (although ;; `ess-noweb-fill-chunk' worked fine). Indentation is only accurate ;; within the chunk: it does not know the syntax at the end of the ;; previous chunk, so it does not know where to start indenting in ;; this chunk. However, provided the indentation within each chunk is correct, ;; notangle will correctly indented code. ;; (I think it would be good to separate filling and indenting, ;; though, since `indent-region' and `fill-region' have completely ;; different meanings in LaTeX-mode (and both are useful)) ;; ess-noweb-mode and ess-noweb-minor-mode were given an optional argument, so ;; that (ess-noweb-mode -1) turns it off, (ess-noweb-mode 1) turns it on, and ;; (ess-noweb-mode) toggles it. This is considered normal for minor modes. ;; buffer-substring changed to buffer-substring-no-properties: ;; comparisons with buffer-substring can be unreliable if highlighting ;; is used. ;; New functions `ess-noweb-in-code-chunk' & `ess-noweb-chunk-is-code' created ;; to replace (if (stringp (car (ess-noweb-find-chunk)))) and ;; (if (stringp (car (ess-noweb-chunk-vector-aref index)))). ;; `ess-noweb-insert-mode-line' was renamed ;; `ess-noweb-insert-default-mode-line' and modified to put the mode-line ;; at the start of the file and remove any existing mode-line. ;; a '<=' in `ess-noweb-find-chunk-index' changed to '<', so we get the ;; right answer if point is on the first character in a chunk ;; The name of `ess-noweb-post-command-hook' changed to ;; `ess-noweb-post-command-function', since it is a function. ;; All the highlighting code moved to a separate file: ;; (ess-noweb-font-lock-mode.el) ;; Menu driven tangling is in the process of being added. It can ;; currently tangle a single chunk or a series of chunks with the ;; same name (which I refer to as a thread) into a separate ;; buffer. This buffer can then be saved to a file, sent to an ;; interpreter, whatever. I haven't tested using line-numbers as yet. ;;; ess-noweb-mode.el ends here ess-17.11/lisp/ess-noweb.el0000444005071500004540000001121713202324174012434 00000000000000;;; ess-noweb.el --- support for Literate Data Analysis ;; Copyright (C) 1999 Mark Lunt ;; Copyright (C) 1999--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Mark Lunt ;; A.J. Rossini ;; Created: April 18, 1999 ;; Maintainer: ESS-core ;; Keywords: statistics, languages ;; Summary: Noweb support for ESS ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for ESS and Literate Data Analysis. ;;; Code: ; Requires and autoloads (require 'ess-noweb-mode) ;; still needed when user turns font-lock-mode *on* (from initial off): (autoload 'ess-noweb-font-lock-mode "ess-noweb-font-lock-mode") ; Variables (defvar ess-noweb-use-font-lock font-lock-mode "Set to t if you want to use font-locking in ESS noweb buffers.") (if ess-noweb-use-font-lock (require 'ess-noweb-font-lock-mode)) ; Functions ;;*;; Code Chunk evaluation. (defun ess-eval-chunk (vis) "Tangle the current chunk and send it to the inferior ESS process. Arg has same meaning as for `ess-eval-region'." (interactive "P") (let ((process-name ess-local-process-name) new-process-name (cbuf (current-buffer)) (temp-buffer (ess-create-temp-buffer "Tangle Buffer"))) (save-excursion (ess-noweb-tangle-chunk temp-buffer) (set-buffer temp-buffer) ;; When the temp buffer is created, it does not inherit any value ;; of ess-local-process-name from the .Rnw buffer, so we have to set it ;; here. If ess-local-process-name is not set in the .Rnw buffer, ;; it will inherit the value that is chosen here. (set (make-local-variable 'ess-local-process-name) process-name) (ess-eval-region (point-min) (point-max) vis "Eval Chunk") (if process-name (kill-buffer temp-buffer) ;; if process-name was nil, source buffer did not have a local process ;; so keep value from temp buffer before killing it. (setq new-process-name ess-local-process-name) (kill-buffer temp-buffer) (set-buffer cbuf) (set (make-local-variable 'ess-local-process-name) new-process-name))))) (defun ess-eval-chunk-and-step (&optional vis) "Tangle the current chunk and send it to the inferior ESS process and step to the next chunk" (interactive) (ess-eval-chunk vis) (ess-noweb-next-code-chunk 1)) (defun ess-eval-chunk-and-go (vis) "Tangle the current chunk, send to the ESS process, and go there. Arg has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-chunk vis) (ess-switch-to-ESS t)) ;;*;; Thread code chunk evaluation ;; ;; Threads are code chunks which fit into the same "buffer" (I'm (AJR) ;; abusing terminology, but what I mean is things like: ;; <>= ;; code for thing1 ;; @ ;; Documentation ;; <>= ;; continuing code for thing1 ;; @ ;; (defun ess-eval-thread (vis) "Tangle all chunks in the current chunk-thread and send to the ESS process. Arg has same meaning as for `ess-eval-region'." (interactive "P") (let ((temp-buffer (ess-create-temp-buffer "Tangle Buffer"))) (ess-noweb-tangle-current-thread temp-buffer) (set-buffer temp-buffer) (ess-eval-region (point-min) (point-max) vis "Eval buffer") (kill-buffer temp-buffer))) (defun ess-eval-thread-and-go (vis) "Tangle all chunks in the current chunk-thread, send to ESS process, and go there. Arg has same meaning as for `ess-eval-region'." (interactive "P") (ess-eval-thread vis) (ess-switch-to-ESS t)) ; Provide package (provide 'ess-noweb) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; outline-minor-mode: nil ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-noweb.el ends here ess-17.11/lisp/ess-omg-d.el0000444005071500004540000001027313202324174012326 00000000000000;;; ess-omg-d.el --- Omega customization ;; Copyright (C) 1999 A. J. Rossini ;; Copyright (C) 2000--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 15 August 1999 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the S-PLUS 3.x customizations for ess-mode. ;;; Code: ;;; Requires and Autoloads: (require 'ess-omg-l) (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (defvar OMG-dialect-name "OMG" "Name of 'dialect' for Omega.") ;easily changeable in a user's .emacs (defvar OMG-customize-alist '((ess-local-customize-alist . 'OMG-customize-alist) (ess-language . "OMG") (ess-dialect . "omegahat") (ess-suffix . "omg") (ess-loop-timeout . 5000) (ess-dump-filename-template . (replace-regexp-in-string "S$" ess-suffix ; in the one from custom: ess-dump-filename-template-proto)) (ess-mode-editing-alist . OMG-editing-alist) (ess-mode-syntax-table . OMG-syntax-table) (ess-change-sp-regexp . "");fixme (if omegahat ever ..) (ess-help-sec-regex . ess-help-S+-sec-regex) (ess-help-sec-keys-alist . ess-help-S+sec-keys-alist) (ess-object-name-db-file . "ess-omg-namedb.el" ) (inferior-ess-program . inferior-OMG-program-name) (inferior-ess-objects-command . "objects(%d)\n") (inferior-ess-help-command . "help(\"%s\",pager=\"cat\",window=F)\n") (inferior-ess-exit-command . "q()\n") (inferior-ess-primary-prompt . "\\[[0-9]*\\]") (inferior-ess-secondary-prompt . ".. ?") (comint-use-prompt-regexp . t) (inferior-ess-start-file . nil) ;"~/.ess-omg") (inferior-ess-start-args . "")) "Variables to customize for OMG (Omegahat)") (defun OMG (&optional start-args) ; proc-name) "Call Omegahat, from the Omega Group for Statistical Computing." (interactive "P") (setq ess-customize-alist OMG-customize-alist) (ess-write-to-dribble-buffer (format "\n(OMG): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (let ((omg-start-args (concat inferior-ess-start-args (if start-args (read-string "Starting Args [possibly -CORBA] ? ") nil)))) (inferior-ess omg-start-args))) (fset 'omegahat 'OMG) (defun OMG-mode (&optional proc-name) "Major mode for editing Omegahat source. NOT EVEN STARTED." (interactive) (setq ess-customize-alist OMG-customize-alist) (ess-mode OMG-customize-alist proc-name) ;;(java-mode) (setq major-mode 'OMG-mode)) (fset 'omegahat-mode 'OMG-mode) (defun OMG-transcript-mode () "Omegahat transcript mode." (interactive) (ess-transcript-mode OMG-customize-alist)) ; Provide package (provide 'ess-omg-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-omg-d.el ends here ess-17.11/lisp/ess-omg-l.el0000444005071500004540000003536413202324174012346 00000000000000;;; ess-omg-l.el --- Support for editing Omega source code ;; Copyright (C) 1999--2001 A.J. Rossini. ;; Copyright (C) 2002--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 15 Aug 1999 ;; Maintainer: ESS-core ;; This file is part of ESS (Emacs Speaks Statistics). ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for general editing Omega source code. This is initially ;; based upon the similarities between Omega and S, but will need to ;; diverge to incorporate the use of Java-style coding. ;;; Code: ; Requires and autoloads ; Specialized functions (defun OMG-comment-indent () "Indentation for Omega comments." (if (looking-at "////") (current-column) (if (looking-at "///") (let ((tem (ess-calculate-indent))) (if (listp tem) (car tem) tem)) (skip-chars-backward " \t") (max (if (bolp) 0 (1+ (current-column))) comment-column)))) ;; (defun OMG-indent-line () ;; "Indent current line as Omega code. ;; Return the amount the indentation changed by." ;; (let ((indent (ess-calculate-indent nil)) ;; beg shift-amt ;; (case-fold-search nil) ;; (pos (- (point-max) (point)))) ;; (beginning-of-line) ;; (setq beg (point)) ;; (cond ((eq indent nil) ;; (setq indent (current-indentation))) ;; (t ;; (skip-chars-forward " \t") ;; (if (and ess-indent-with-fancy-comments (looking-at "////")) ;; (setq indent 0)) ;; (if (and ess-indent-with-fancy-comments ;; (looking-at "//") ;; (not (looking-at "///"))) ;; (setq indent comment-column) ;; (if (eq indent t) (setq indent 0)) ;; (if (listp indent) (setq indent (car indent))) ;; (cond ((and (looking-at "else\\b") ;; (not (looking-at "else\\s_"))) ;; (setq indent (save-excursion ;; (ess-backward-to-start-of-if) ;; (+ ess-else-offset ;; (current-indentation))))) ;; ((= (following-char) ?}) ;; (setq indent ;; (+ indent ;; (- ess-close-brace-offset ess-indent-offset)))) ;; ((= (following-char) ?{) ;; (setq indent (+ indent ess-brace-offset))))))) ;; (skip-chars-forward " \t") ;; (setq shift-amt (- indent (current-column))) ;; (if (zerop shift-amt) ;; (if (> (- (point-max) pos) (point)) ;; (goto-char (- (point-max) pos))) ;; (delete-region beg (point)) ;; (indent-to indent) ;; ;; If initial point was within line's indentation, ;; ;; position after the indentation. ;; ;; Else stay at same point in text. ;; (if (> (- (point-max) pos) (point)) ;; (goto-char (- (point-max) pos)))) ;; shift-amt)) ;; (defun OMG-calculate-indent (&optional parse-start) ;; "Return appropriate indentation for current line as Omega code. ;; In usual case returns an integer: the column to indent to. ;; Returns nil if line starts inside a string, t if in a comment." ;; (save-excursion ;; (beginning-of-line) ;; (let ((indent-point (point)) ;; (case-fold-search nil) ;; state ;; containing-sexp) ;; (if parse-start ;; (goto-char parse-start) ;; (beginning-of-defun)) ;; (while (< (point) indent-point) ;; (setq parse-start (point)) ;; (setq state (parse-partial-sexp (point) indent-point 0)) ;; (setq containing-sexp (car (cdr state)))) ;; (cond ((or (nth 3 state) (nth 4 state)) ;; ;; return nil or t if should not change this line ;; (nth 4 state)) ;; ((null containing-sexp) ;; ;; Line is at top level. May be data or function definition, ;; (beginning-of-line) ;; (if (and (/= (following-char) ?\{) ;; (save-excursion ;; (ess-backward-to-noncomment (point-min)) ;; (ess-continued-statement-p))) ;; ess-continued-statement-offset ;; 0)) ; Unless it starts a function body ;; ((/= (char-after containing-sexp) ?{) ;; ;; line is expression, not statement: ;; ;; indent to just after the surrounding open. ;; (goto-char containing-sexp) ;; (let ((bol (save-excursion (beginning-of-line) (point)))) ;; ;; modified by shiba@isac 7.3.1992 ;; (cond ((and (numberp ess-expression-offset) ;; (re-search-backward "[ \t]*expression[ \t]*" bol t)) ;; ;; This regexp match every "expression". ;; ;; modified by shiba ;; ;;(forward-sexp -1) ;; (beginning-of-line) ;; (skip-chars-forward " \t") ;; ;; End ;; (+ (current-column) ess-expression-offset)) ;; ((and (numberp ess-arg-function-offset) ;; (re-search-backward ;; "=[ \t]*\\s\"*\\(\\w\\|\\s_\\)+\\s\"*[ \t]*" ;; bol ;; t)) ;; (forward-sexp -1) ;; (+ (current-column) ess-arg-function-offset)) ;; ;; "expression" is searched before "=". ;; ;; End ;; (t ;; (progn (goto-char (1+ containing-sexp)) ;; (current-column)))))) ;; (t ;; ;; Statement level. Is it a continuation or a new statement? ;; ;; Find previous non-comment character. ;; (goto-char indent-point) ;; (ess-backward-to-noncomment containing-sexp) ;; ;; Back up over label lines, since they don't ;; ;; affect whether our line is a continuation. ;; (while (eq (preceding-char) ?\,) ;; (ess-backward-to-start-of-continued-exp containing-sexp) ;; (beginning-of-line) ;; (ess-backward-to-noncomment containing-sexp)) ;; ;; Now we get the answer. ;; (if (ess-continued-statement-p) ;; ;; This line is continuation of preceding line's statement; ;; ;; indent ess-continued-statement-offset more than the ;; ;; previous line of the statement. ;; (progn ;; (ess-backward-to-start-of-continued-exp containing-sexp) ;; (+ ess-continued-statement-offset (current-column) ;; (if (save-excursion (goto-char indent-point) ;; (skip-chars-forward " \t") ;; (eq (following-char) ?{)) ;; ess-continued-brace-offset 0))) ;; ;; This line starts a new statement. ;; ;; Position following last unclosed open. ;; (goto-char containing-sexp) ;; ;; Is line first statement after an open-brace? ;; (or ;; ;; If no, find that first statement and indent like it. ;; (save-excursion ;; (forward-char 1) ;; (while (progn (skip-chars-forward " \t\n") ;; (looking-at "//")) ;; ;; Skip over comments following openbrace. ;; (forward-line 1)) ;; ;; The first following code counts ;; ;; if it is before the line we want to indent. ;; (and (< (point) indent-point) ;; (current-column))) ;; ;; If no previous statement, ;; ;; indent it relative to line brace is on. ;; ;; For open brace in column zero, don't let statement ;; ;; start there too. If ess-indent-offset is zero, ;; ;; use ess-brace-offset + ess-continued-statement-offset instead. ;; ;; For open-braces not the first thing in a line, ;; ;; add in ess-brace-imaginary-offset. ;; (+ (if (and (bolp) (zerop ess-indent-offset)) ;; (+ ess-brace-offset ess-continued-statement-offset) ;; ess-indent-offset) ;; ;; Move back over whitespace before the openbrace. ;; ;; If openbrace is not first nonwhite thing on the line, ;; ;; add the ess-brace-imaginary-offset. ;; (progn (skip-chars-backward " \t") ;; (if (bolp) 0 ess-brace-imaginary-offset)) ;; ;; If the openbrace is preceded by a parenthesized exp, ;; ;; move to the beginning of that; ;; ;; possibly a different line ;; (progn ;; (if (eq (preceding-char) ?\)) ;; (forward-sexp -1)) ;; ;; Get initial indentation of the line we are on. ;; (current-indentation)))))))))) (defvar OMG-syntax-table nil "Syntax table for Omegahat code.") (if S-syntax-table nil (setq S-syntax-table (make-syntax-table)) (modify-syntax-entry ?\\ "\\" S-syntax-table) (modify-syntax-entry ?+ "." S-syntax-table) (modify-syntax-entry ?- "." S-syntax-table) (modify-syntax-entry ?= "." S-syntax-table) (modify-syntax-entry ?% "." S-syntax-table) (modify-syntax-entry ?< "." S-syntax-table) (modify-syntax-entry ?> "." S-syntax-table) (modify-syntax-entry ?& "." S-syntax-table) (modify-syntax-entry ?| "." S-syntax-table) (modify-syntax-entry ?\' "\"" S-syntax-table) ;;FIXME: This fails (warning in compilation): ;;F "//" are 2 characters; ?// is invalid ;;F NEXT LINE IS BOGUS IN XEMACS, AJR ;;F (modify-syntax-entry ?// "<" S-syntax-table) ; open comment ;;F (modify-syntax-entry ?\n ">" S-syntax-table) ; close comment ;;(modify-syntax-entry ?. "w" S-syntax-table) ; "." used in S obj names (modify-syntax-entry ?. "_" S-syntax-table) ; see above/below, ; plus consider separation. (modify-syntax-entry ?$ "_" S-syntax-table) ; foo.bar$hack is 1 symbol (modify-syntax-entry ?_ "." S-syntax-table) (modify-syntax-entry ?* "." S-syntax-table) (modify-syntax-entry ?< "." S-syntax-table) (modify-syntax-entry ?> "." S-syntax-table) (modify-syntax-entry ?/ "." S-syntax-table)) (defvar OMG-editing-alist '((paragraph-start . (concat "^$\\|" page-delimiter)) (paragraph-separate . (concat "^$\\|" page-delimiter)) (paragraph-ignore-fill-prefix . t) (require-final-newline . mode-require-final-newline) (comment-start . "//") (comment-start-skip . "//+ *") (comment-column . 40) ;;(comment-indent-function . 'S-comment-indent) ;;(ess-comment-indent . 'S-comment-indent) ;;(ess-indent-line . 'S-indent-line) ;;(ess-calculate-indent . 'ess-calculate-indent) (indent-line-function . 'ess-indent-line) (parse-sexp-ignore-comments . t) (ess-style . ess-default-style) (ess-local-process-name . nil) ;;(ess-keep-dump-files . 'ask) (ess-mode-syntax-table . S-syntax-table) (font-lock-defaults . '(ess-OMG-font-lock-defaults nil nil ((?\. . "w"))))) "General options for Omegahat source files.") (defvar ess-OMG-font-lock-defaults (append (list (cons "\\b[0-9]+\\b" 'font-lock-type-face) ; numbers (cons (regexp-opt ess-S-keywords 'words) 'font-lock-keyword-face)) (list (cons (regexp-opt ess-S-assign-ops) 'font-lock-constant-face) ; assign (cons (regexp-opt ess-S-constants 'words) 'font-lock-type-face) ; constants (cons (regexp-opt ess-S-modifyiers 'words) 'font-lock-constant-face) ; modify search list or source (cons ess-S-function-name-regexp '(1 font-lock-function-name-face keep)) ; function name (cons "\\s.\\|\\s(\\|\\s)" 'font-lock-function-name-face) ;punctuation and parents (same as function not to cause vidual disturbance) )) ; keywords "Font-lock patterns used in `OMG' buffers.") ;;; Changes from S to S-PLUS 3.x. (standard S3 should be in ess-s-lang.el !). (defconst OMG-help-sec-keys-alist '((?a . "ARGUMENTS:") (?b . "BACKGROUND:") (?B . "BUGS:") (?d . "DESCRIPTION:") (?D . "DETAILS:") (?e . "EXAMPLES:") (?n . "NOTE:") (?O . "OPTIONAL ARGUMENTS:") (?R . "REQUIRED ARGUMENTS:") (?r . "REFERENCES:") (?s . "SEE ALSO:") (?S . "SIDE EFFECTS:") (?u . "USAGE:") (?v . "VALUE:")) "Alist of (key . string) pairs for use in section searching.") ;;; `key' indicates the keystroke to use to search for the section heading ;;; `string' in an S help file. `string' is used as part of a ;;; regexp-search, and so specials should be quoted. (defconst ess-help-OMG-sec-regex "^[A-Z. ---]+:$" "Reg(ular) Ex(pression) of section headers in help file") ;;; S-mode extras of Martin Maechler, Statistik, ETH Zurich. ;;>> Moved things into --> ./ess-utils.el (provide 'ess-omg-l) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-omg-l.el ends here ess-17.11/lisp/ess-pkg.el0000444005071500004540000000017313202324174012102 00000000000000(define-package "ess" "0" "Emacs Speaks Statistics" '((julia-mode "0.3")) :url "http://ess.r-project.org" :keywords nil) ess-17.11/lisp/ess-r-a.el0000444005071500004540000001217213202324174012002 00000000000000;;; ess-r-a.el -- Possible local customizations for R with ESS. ;; Copyright (C) 1997--2005 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 17 November 1999 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; The purpose of this file is to demonstrate some of the extras that ;; have been constructed for the ESS R mode; if they prove ;; interesting, then they might be migrated to ess-r-mode, the primary ;; ESS R mode tools. ;;; Code: ;; you can invoke ESS/R from emacs by typing ;; C-u M-x essr ;; with vsize set to (for example) 40M, and nsize set to 600000. (defalias 'essr (read-kbd-macro "C-u M-x R RET - - vsize = 40M SPC - - nsize = 600000 2*RET")) (defun ess-r-do-region (start end &optional message) "Send the current region to R via AppleScript." (interactive "r\nP") (message "Starting evaluation...") (do-applescript (concat "try\n" "tell application \"R\"\n" "activate\n" "with timeout of 0 seconds\n" "cmd \"" (buffer-substring start end) "\"\n" "end timeout\n" "end tell\n" "end try\n")) (message "Finished evaluation")) (defun ess-r-do-line () "Send the current line to R via AppleScript." (interactive) ;; "r\nP") (message "Starting evaluation...") (save-excursion (let ((end (point))) (move-to-column 0) (do-applescript (concat "try\n" "tell application \"R\"\n" "activate\n" "with timeout of 0 seconds\n" "cmd \"" (buffer-substring (point) end) "\"\n" "end timeout\n" "end tell\n" "end try\n")))) (message "Finished evaluation")) (defun ess-r-var (beg end) "Load the current region of numbers into an R variable. Prompts for a variable name. If none is given, it uses a default variable name, e. BEG and END denote the region in the current buffer to be sent." (interactive "r") (save-window-excursion (let ((tmp-file (make-temp-file "ess-r-var")) cmd var) (write-region beg end tmp-file) ;; Decide on the variable name to use in R; could use completion. (setq var (read-string "R Variable name (default e): ")) (if (equal var "") (setq var "e")) ;; Command to send to the R process. Get R to delete the file ;; rather than Emacs in case it takes R a long time to run the ;; scan command. (setq cmd (concat var " <- scan(\"" tmp-file "\"); " "unlink(\"" tmp-file "\")" )) ;; Put the output from the scan command into the process buffer so ;; the user has a record of it. (ess-execute cmd 'buffer)))) ;;; Peter Dalgaard's code. ;;; This needs to be cleaned and validated! (defun pd::set-up-demo () ;; (if (not xemacs) (set-default-font "*courier-bold-r*--14**")) (R) (split-window-vertically 6) (find-file "demos.R") ;; Don't need to run this as a function -- ought to be fine if set ;; just once. (defun ajr::scroll-to-end::peterD (emacs) "Goal: map prompt to bottom of the screen after every command. Alternatively, use the scroll-in-place package, not sure where that is)." (interactive) (other-buffer 1) (if (= emacs "emacs") (setq scroll-up-aggressively t) (setq scroll-conservatively -4)) ;; <- change this (other-buffer -1)) (defun show-max-other-window () (interactive) (other-window 1) (comint-show-maximum-output) (other-window -1)) ;; call this once ;; (ajr::scroll-to-end::peterD "xemacs") ;; (ajr::scroll-to-end::peterD "emacs") (global-set-key [f11] 'show-max-other-window) (global-set-key [f12] 'ess-eval-line-and-step)) ; Provide package (provide 'ess-r-a) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-r-a.el ends here ess-17.11/lisp/ess-r-args.el0000444005071500004540000003102213202324174012511 00000000000000;;; ess-r-args.el --- Insert R function's arguments ;; Copyright (C) 2007 Sven Hartenstein ;; Copyright (C) 2007 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; Last update: 2012-02-27 ;;; Commentary: ;; == DOCUMENTATION == ;; This file provides some functions that show or insert a ;; R-function's arguments (and their default values) by using R's ;; args() function. This code requires ESS (http://ess.r-project.org). ;; For screenshots as well as information on requirements, ;; installation, configuration and troubleshooting, please visit ;; http://www.svenhartenstein.de/emacs-ess.php ;; == Requirements == ;; * ESS mode must be loaded and running. ;; * A R process must be running within ESS. ;; * For the tooltip option to work, Emacs must not run within a ;; terminal but (directly) under the X window system (in case of ;; GNU/Linux). ;; == Installation == ;; To make Emacs aware of the functions defined in this file load it ;; into Emacs by including something like the following in your ;; ~/.emacs file (adapt "/PATH/TO"!). ;; ;; (add-hook 'ess-mode-hook (lambda () (load "/PATH/TO/ess-r-args.el"))) ;; ;; This file is included with ESS; if you are reading this file as ;; part of the ESS distribution, then you do not need to add the above ;; line. ;; == Configuration == ;; Configuration should be done by setting some variables in your ;; ~/.emacs file, the following is an example only, adjust it to your ;; needs. ;; ;; ess-r-args-noargsmsg is printed, if no argument information ;; ;; could be found. You could set it to an empty string ("") for no ;; ;; message. ;; (setq ess-r-args-noargsmsg "No args found.") ;; ;; ;; ess-r-args-show-as determines how (where) the information is ;; ;; displayed. Set it to 'tooltip little tooltip windows or to ;; ;; 'message (the default) which will use the echo area at the bottom of ;; ;; your Emacs frame. ;; (setq ess-r-args-show-as nil) ;; ;; ;; ess-r-args-show-prefix is a string that is printed in front of ;; ;; the arguments list. The default is "ARGS: ". ;; (setq ess-r-args-show-prefix "ARGS: ") ;; == Usage == ;; The functions should be called when point (text cursor) is between ;; two parentheses of a R function call (see screenshots above). It ;; will then (invisibly) query R for which arguments the respective ;; function knows as well as their default values and show or insert ;; the result. ;; There are currently two functions: ess-r-args-show echoes the ;; arguments in the echo area or as tooltip, ess-r-args-insert prints ;; the arguments at point. ;; In order to not having to type the whole function name each time ;; you want to see the arguments list, you most probably want to bind ;; the functions to a key which again should be done in your ~/.emacs ;; file. You can also let Emacs call the function each time you insert ;; an opening parenthesis ("("). ;; -----> do this below ;; Again, the following is an example only: ;; bind ess-r-args-show to F2 ;; (define-key ess-mode-map [f2] 'ess-r-args-show) ;; bind ess-r-args-insert to F3 ;; (define-key ess-mode-map [f3] 'ess-r-args-insert) ;; == Setting the tooltip position == ;; Unfortunately (?), tooltips are by default shown at the mouse ;; pointer's position, which is not necessarily where you are looking ;; at. If you use Emacs' mouse-avoidance-mode with option "banish" ;; then the mouse pointer will automatically be put at the upper right ;; corner of the Emacs window so that you know where to look for the ;; tooltip. Emacs also allows for setting the tooltip position ;; relative to the upper left corner of your screen. If you know how ;; to let Emacs determine the point (text cursor) position in pixels ;; from the upper left corner of the screen, please let me know. It ;; would then be possible to show the tooltip near the point, which I ;; would consider preferably. ;; SJE: see code at bottom 2009-01-30... ;; ;; Put mouse away when using keyboard ;; (mouse-avoidance-mode 'banish) ;; ;; Set the tooltip position in absolute pixels from the upper left ;; ;; corner of the screen ;; (setq tooltip-frame-parameters ;; '((name . "tooltip") ;; (left . 20) ;; (top . 20))) ;; == Changelog == ;; * 2007-04-03: The function should now do nothing (instead of ;; irritating cursor movement) if the current ESS process is ;; anything but R. ;; * 2007-04-05: Function names changed. Much more modular. GPLed. New ;; prefix configuration variable. Minor changes. ;; * 2007-04-30: Error handling added. Bugfix: Emacs used to lock up ;; when function was called within parentheses following the "#" ;; character (Thanks to John Bullock for his bug report!). ;; == Troubleshooting == ;; Before sending reports of problems, please check the following. ;; * Doublecheck the requirements section above. ;; * Please be sure you tried both the "tooltip" option and the "echo ;; area" option and tell me whether both failed or just one. ;; * Check whether it is a key binding problem. Run the function with ;; M-x ess-r-args-show RET. If it works but not the key binding, try ;; binding it to another key. Some window managers might not pass ;; the function key keystrokes to Emacs. ;; If you encounter problems, please send me detailed bug reports. ;; Please also indicate the ESS version you are running and the Emacs ;; type (GNU vs. X) and operating system. I will do my best to help ;; but please be aware that I'm everything but an emacs lisp expert. ;; == TODO == ;; These are things that I would like to see improved. Please let me ;; know if you know how it could be done. ;; * As mentioned above, I would like to place the tooltip near the ;; point (text cursor) but I do not see how this could be done. ;; * Both the message in the echo area and the tooltip automatically ;; disappear as soon as a key is pressed. That is, you will need to ;; call the function again if you have entered the first ;; parameter(s) and wonder what additional parameters are possible. ;; I would prefer the information to be shown, say, five seconds or ;; so. ;;; Code: (require 'ess-custom) (eval-when-compile (require 'tooltip)); for tooltip-show (require 'ess) (defun ess-r-args-current-function () "Returns the name of the R function assuming point is currently within the argument list or nil if no possible function name is found." (save-excursion (condition-case nil (up-list -1) (error (message "Can't find opening parenthesis."))) (let ((posend (point))) (backward-sexp 1) (let ((rfunname (buffer-substring-no-properties posend (point)))) (if (posix-string-match "^[a-zA-Z0-9_\.]+$" rfunname) rfunname nil))))) (defun ess-r-args-get (&optional function trim) "Returns string of arguments and their default values of R function FUNCTION or nil if no possible function name found. Calls `ess-r-args-current-function' if no argument given. If TRIM is non-nill remove tabs and newlines and replace ' = ' with '=' (useful for display in minibuffer to avoid window and buffer readjustments for multiline string)." (if (null function) (setq function (ess-r-args-current-function))) (when (and function (or ess-current-process-name (interactive-p))) (ess-force-buffer-current "R process to use: ") ;; ^^^^^^^^^^^^^^^ has own error handler (mapconcat (lambda (arg) (concat (car arg) "=" (cdr arg))) (cadr (ess-function-arguments function)) ", "))) (defun ess-r-args-show (&optional function) "Show arguments and their default values of R function. Calls \\[ess-r-args-current-function] if called without argument." (interactive "*") (ess-message "(ess-r-args-show): start") (if (null function) (setq function (ess-r-args-current-function))) (ess-message ".... function='%s'" function) (when function (let* ((tt (equal ess-r-args-show-as 'tooltip)) (args (concat ess-r-args-show-prefix (ess-r-args-get function (not tt))))) (ess-message "(ess-r-args-show): args='%s'" args) (when args (if (not tt) (message args) (require 'tooltip) ;; value of 30 in next call is just a guess, ;; should really be based ;; on something like pixel height of 1-2 vertical ;; lines of text (ess-tooltip-show-at-point args 0 30)) )))) (defun ess-r-args-auto-show () "Typically assigned to \"(\": If there's an ess-process, automatically show arguments and their default values of an R function. Built on \\[ess-r-args-show]." (interactive) (insert "("); (skeleton-pair-insert-maybe nil) (if (and (not eldoc-mode) ess-local-process-name ; has a process and it must still be running (ess-get-process ess-local-process-name)) (ess-r-args-show))) ;; MM: I would strongly discourage use of the following: ;; it leads to clueless newbie-users who indeed ;; explicitly call a function with all its default arguments; ;; instead of only setting the required arguments (defun ess-r-args-insert (&optional function) "Insert arguments and their default values of function. Calls ess-r-args-current-function if no argument given." (interactive "*") (if (null function) (setq function (ess-r-args-current-function))) (if function (let ((args (ess-r-args-get function)) (pointpos (point))) (insert args) (goto-char pointpos)))) ;; (defvar ess-r-object-tooltip-alist ;; '((numeric . "summary") ;; (integer . "summary") ;; (factor . "table") ;; (lm . "summary") ;; (other . "str")) ;; "List of ( . ) to be used in \\[ess-r-object-tooltip]. ;; For example, when called while point is on a factor object, a table of that ;; factor will be shown in the tooltip. ;; The special key \"other\" in the alist defines which function to call when ;; the class is not mached in the alist. The default, str(), is a fairly useful ;; default for many, including data.frame and function objects.") ;; From Erik Iversion, slightly modified, ;; http://www.sigmafield.org/2009/10/01/r-object-tooltips-in-ess/ ;; (defun ess-r-object-tooltip () ;; "Get info for object at point, and display it in a tooltip." ;; (interactive) ;; (let ((proc (ess-get-process)) ;; (objname (current-word)) ;; (curbuf (current-buffer)) ;; (tmpbuf (get-buffer-create " *ess-r-object-tooltip*")) ;; bs) ;; (when objname ;; (ess-write-to-dribble-buffer ;; (format "ess-r-object-tooltip: objname='%s'\n" objname)) ;; (ess-command (concat "class(" objname ")\n") tmpbuf nil nil nil proc) ;; (with-current-buffer tmpbuf ;; (goto-char (point-min)) ;; ;; CARE: The following can only work in an English language locale! ;; ;; .lang. <- Sys.getenv("LANGUAGE"); Sys.setenv(LANGUAGE="en") ;; ;; .lc. <- Sys.getlocale("LC_MESSAGES"); Sys.setlocale("LC_MESSAGES","en_US.utf-8") ;; ;; and *afterward* Sys.setenv(LANGUAGE=.lang.); Sys.setlocale("LC_MESSAGES", .lc.) ;; ;; but that fails sometimes, e.g., on Windows ;; (unless (re-search-forward "\(object .* not found\)\|unexpected" nil t) ;; (re-search-forward "\"\\(.*\\)\"" nil t) ;; (let* ((objcls (match-string 1)) ;; (myfun (or (cdr (assoc-string objcls ess-r-object-tooltip-alist)) ;; (cdr (assoc 'other ess-r-object-tooltip-alist))))) ;; (ess-command (concat myfun "(" objname ")\n") tmpbuf nil nil nil proc)) ;; (setq bs (buffer-string))))) ;; (if bs ;; (ess-tooltip-show-at-point bs 0 30)))) ;; Erik: my default key map ;;(define-key ess-mode-map "\C-c\C-g" 'ess-r-object-tooltip) ;; On http://www.sigmafield.org/2009/10/01/r-object-tooltips-in-ess/ ;; in the comments, "Charlie" recommended ;; (custom-set-faces ;; '(tooltip ((t (:background "white" :foreground "blue" :foundry "fixed"))))) (provide 'ess-r-args) ;;; ess-r-args.el ends here ess-17.11/lisp/ess-r-completion.el0000444005071500004540000005362713202324174013745 00000000000000;;; ess-r-completion.el --- R completion ;; ;; Copyright (C) 2015 A.J. Rossini, Richard M. Heiberger, Martin Maechler, Kurt ;; Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; ;; Author: Vitalie Spinu ;; Maintainer: ESS-core ;; ;; Keywords: languages, statistics ;; ;; This file is part of ESS. ;; ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;;; Commentary: ;; ;;; Code: ;;; ElDoc (require 'cl) (require 'ess-utils) (defun ess-r-eldoc-function () "Return the doc string, or nil. If an ESS process is not associated with the buffer, do not try to look up any doc strings." (interactive) (when (and eldoc-mode ess-can-eval-in-background) (let* ((proc (ess-get-next-available-process)) (funname (and proc (or (and ess-eldoc-show-on-symbol ;; Aggressive completion (thing-at-point 'symbol)) (car (ess--funname.start)))))) (when funname (let* ((args (ess-function-arguments funname proc)) (bargs (cadr args)) (doc (mapconcat (lambda (el) (if (equal (car el) "...") "..." (concat (car el) "=" (cdr el)))) bargs ", ")) (margs (nth 2 args)) (W (- (window-width (minibuffer-window)) (+ 4 (length funname)))) doc1) (when doc (setq doc (ess-eldoc-docstring-format funname doc)) (when (and margs (< (length doc1) W)) (setq doc1 (concat doc (propertize " || " 'face font-lock-function-name-face))) (while (and margs (< (length doc1) W)) (let ((head (pop margs))) (unless (assoc head bargs) (setq doc doc1 doc1 (concat doc1 head "=, "))))) (when (equal (substring doc -2) ", ") (setq doc (substring doc 0 -2))) (when (and margs (< (length doc) W)) (setq doc (concat doc " {--}")))) doc)))))) (defun ess-eldoc-docstring-format (funname doc) (save-match-data (let* (;; (name (symbol-name sym)) (truncate (or (not (eq t eldoc-echo-area-use-multiline-p)) (eq ess-eldoc-abbreviation-style 'aggressive))) ;; Subtract 1 from window width since will cause a wraparound and ;; resize of the echo area. (W (1- (- (window-width (minibuffer-window)) (+ 2 (length funname))))) newdoc) (setq doc (if (or (<= (length doc) W) (null ess-eldoc-abbreviation-style) (eq 'none ess-eldoc-abbreviation-style)) doc ;;MILD filter (setq doc (replace-regexp-in-string "TRUE" "T" doc)) (setq doc (replace-regexp-in-string "FALSE" "F" doc)) (if (or (<= (length doc) W) (eq 'mild ess-eldoc-abbreviation-style)) doc ;;NORMAL filter (deal with long defaults) (setq doc (replace-regexp-in-string ;; function calls inside default docs foo(xxxx{..}) "([^)]\\{8\\}\\([^)]\\{4,\\}\\))" "{.}" doc nil nil 1)) (if (<= (length doc) W) doc (setq doc (replace-regexp-in-string " +[^ \t=,\"\]+=[^ \t]\\{10\\}\\([^ \t]\\{4,\\}\\)\\(,\\|\\'\\)" "{.}," doc nil nil 1)) (if (<= (length doc) W) doc (setq doc (replace-regexp-in-string " +[^ \t=,\"]+=\\([^ \t]\\{10,\\}\\)\\(,\\|\\'\\)" "{.}," doc nil nil 1)) (if (or (<= (length doc) W) (eq 'normal ess-eldoc-abbreviation-style)) doc ;;STRONG filter (replace defaults) (setq doc (replace-regexp-in-string " *[^ \t=,\"\\]* = \\([^ \t]\\{4,\\}\\)\\(,\\|\\'\\)" "{.}," doc nil nil 1)) (if (<= (length doc) W) doc (setq doc (replace-regexp-in-string "\\(=[^FT0-9].+?\\)\\(, [^ =,\"\\]+=\\|\\'\\)" "" doc nil nil 1)) (setq doc (replace-regexp-in-string "\\(=[^FT0-9].+?\\)\\(, [^ =,\"\\]+,\\|\\'\\)" "" doc nil nil 1)) (if (or (<= (length doc) W) (eq 'strong ess-eldoc-abbreviation-style)) doc ;;AGGRESSIVE filter (truncate what is left) (concat (substring doc 0 (- W 4)) "{--}"))))))))) (when (and truncate (> (length doc) W)) (setq doc (concat (substring doc 0 (- W 4)) "{--}"))) (format "%s: %s" (propertize funname 'face 'font-lock-function-name-face) doc)))) ;;; OBJECTS (defun ess-r-object-completion () "Return completions at point in a format required by `completion-at-point-functions'." (if (ess-make-buffer-current) (let* ((funstart (cdr (ess--funname.start))) (completions (ess-r-get-rcompletions funstart)) (token (pop completions))) (when completions (list (- (point) (length token)) (point) completions))) (when (string-match "complete" (symbol-name last-command)) (message "No ESS process associated with current buffer") nil))) (defun ess-complete-object-name () "Perform completion on `ess-language' object preceding point. Uses \\[ess-r-complete-object-name] when `ess-use-R-completion' is non-nil, or \\[ess-internal-complete-object-name] otherwise." (interactive) (if (ess-make-buffer-current) (if ess-use-R-completion (ess-r-complete-object-name) (ess-internal-complete-object-name)) ;; else give a message on second invocation (when (string-match "complete" (symbol-name last-command)) (message "No ESS process associated with current buffer") nil))) (defun ess-complete-object-name-deprecated () "Gives a deprecated message " (interactive) (ess-complete-object-name) (message "C-c TAB is deprecated, completions has been moved to [M-TAB] (aka C-M-i)") (sit-for 2 t)) ;; This one is needed for R <= 2.6.x -- hence *not* obsoleting it (defun ess-internal-complete-object-name () "Perform completion on `ess-language' object preceding point. The object is compared against those objects known by `ess-get-object-list' and any additional characters up to ambiguity are inserted. Completion only works on globally-known objects (including elements of attached data frames), and thus is most suitable for interactive command-line entry, and not so much for function editing since local objects (e.g. argument names) aren't known. Use \\[ess-resynch] to re-read the names of the attached directories. This is done automatically (and transparently) if a directory is modified (S only!), so the most up-to-date list of object names is always available. However attached dataframes are *not* updated, so this command may be necessary if you modify an attached dataframe." (interactive) (ess-make-buffer-current) (if (memq (char-syntax (preceding-char)) '(?w ?_)) (let* ((comint-completion-addsuffix nil) (end (point)) (buffer-syntax (syntax-table)) (beg (unwind-protect (save-excursion (set-syntax-table ess-mode-syntax-table) (backward-sexp 1) (point)) (set-syntax-table buffer-syntax))) (full-prefix (buffer-substring beg end)) (pattern full-prefix) ;; See if we're indexing a list with `$' (listname (if (string-match "\\(.+\\)\\$\\(\\(\\sw\\|\\s_\\)*\\)$" full-prefix) (progn (setq pattern (if (not (match-beginning 2)) "" (substring full-prefix (match-beginning 2) (match-end 2)))) (substring full-prefix (match-beginning 1) (match-end 1))))) ;; are we trying to get a slot via `@' ? (classname (if (string-match "\\(.+\\)@\\(\\(\\sw\\|\\s_\\)*\\)$" full-prefix) (progn (setq pattern (if (not (match-beginning 2)) "" (substring full-prefix (match-beginning 2) (match-end 2)))) (ess-write-to-dribble-buffer (format "(ess-C-O-Name : slots..) : patt=%s" pattern)) (substring full-prefix (match-beginning 1) (match-end 1))))) (components (if listname (ess-object-names listname) (if classname (ess-slot-names classname) ;; Default case: It hangs here when ;; options(error=recover) : (ess-get-object-list ess-current-process-name))))) ;; always return a non-nil value to prevent history expansions (or (comint-dynamic-simple-complete pattern components) 'none)))) (defun ess-r-get-rcompletions (&optional start end prefix allow-3-dots) "Call R internal completion utilities (rcomp) for possible completions. Optional START and END delimit the entity to complete, default to bol and point. If PREFIX is given, perform completion on PREFIX. First element of the returned list is the completion token. Needs version of R >= 2.7.0." (let* ((start (or start (if prefix 0 (save-excursion (comint-bol nil) (point))))) (end (or end (if prefix (length prefix) (point)))) (prefix (or prefix (buffer-substring start end))) ;; (opts1 (if no-args "op<-rc.options(args=FALSE)" "")) ;; (opts2 (if no-args "rc.options(op)" "")) (call1 (format ".ess_get_completions(\"%s\", %d)" (ess-quote-special-chars prefix) (- end start))) (cmd (if allow-3-dots (concat call1 "\n") (concat "local({ r <- " call1 "; r[r != '...='] })\n")))) (ess-get-words-from-vector cmd))) (defun ess-r-complete-object-name () "Completion in R via R's completion utilities (formerly 'rcompgen'). To be used instead of ESS' completion engine for R versions >= 2.7.0." (interactive) (let ((possible-completions (ess-r-get-rcompletions)) token-string) ;; If there are no possible-completions, should return nil, so ;; that when this function is called from ;; comint-dynamic-complete-functions, other functions can also be ;; tried. (when possible-completions (setq token-string (pop possible-completions)) (or (comint-dynamic-simple-complete token-string possible-completions) 'none)))) (defvar ess--cached-sp-objects nil) (defun ess--get-cached-completions (prefix &optional point) (if (string-match-p "[]:$@[]" prefix) ;; call proc for objects (cdr (ess-r-get-rcompletions nil nil prefix)) ;; else, get cached list of objects (with-ess-process-buffer 'no-error ;; use proc buf alist (ess-when-new-input last-cached-completions (if (and ess--cached-sp-objects (not (process-get *proc* 'sp-for-ac-changed?))) ;; if global cache is already there, only re-read local .GlobalEnv (progn (unless ess-sl-modtime-alist ;; initialize if empty (setq ess-sl-modtime-alist '((".GlobalEnv" nil)))) ;; fixme: Make adaptive. Not on all remotes are slow; For lots of ;; objects in .GlobalEnv,locals could also be slow. (unless (file-remote-p default-directory) (ess-extract-onames-from-alist ess-sl-modtime-alist 1 'force))) (if ess--cached-sp-objects (ess-get-modtime-list 'ess--cached-sp-objects 'exclude-first) (ess-get-modtime-list) (setq ess--cached-sp-objects (cdr ess-sl-modtime-alist))) ;; reread new package, but not rda, much faster and not needed anyways (process-put *proc* 'sp-for-ac-changed? nil))) (apply 'append (cddar ess-sl-modtime-alist) ; .GlobalEnv (mapcar 'cddr ess--cached-sp-objects))))) ;;; ARGUMENTS (defcustom ess-R-argument-suffix " = " "Suffix appended by `ac-source-R' and `ac-source-R-args' to candidates." :group 'R :type 'string) (define-obsolete-variable-alias 'ess-ac-R-argument-suffix 'ess-R-argument-suffix "15.3") (defvar ess-r--funargs-pre-cache '(("plot" (("graphics") (("x" . "") ("y" . "NULL") ("type" . "p") ("xlim" . "NULL") ("ylim" . "NULL") ("log" . "") ("main" . "NULL") ("sub" . "NULL") ("xlab" . "NULL") ("ylab" . "NULL") ("ann" . "par(\"ann\")") ("axes" . "TRUE") ("frame.plot" . "axes") ("panel.first" . "NULL") ("panel.last" . "NULL") ("asp" . "NA") ("..." . "")) ("x" "y" "..." "ci" "type" "xlab" "ylab" "ylim" "main" "ci.col" "ci.type" "max.mfrow" "ask" "mar" "oma" "mgp" "xpd" "cex.main" "verbose" "scale" "xlim" "log" "sub" "ann" "axes" "frame.plot" "panel.first" "panel.last" "asp" "center" "edge.root" "nodePar" "edgePar" "leaflab" "dLeaf" "xaxt" "yaxt" "horiz" "zero.line" "verticals" "col.01line" "pch" "legend.text" "formula" "data" "subset" "to" "from" "newpage" "vp" "labels" "hang" "freq" "density" "angle" "col" "border" "lty" "add" "predicted.values" "intervals" "separator" "col.predicted" "col.intervals" "col.separator" "lty.predicted" "lty.intervals" "lty.separator" "plot.type" "main2" "par.fit" "grid" "panel" "cex" "dimen" "abbrev" "which" "caption" "sub.caption" "id.n" "labels.id" "cex.id" "qqline" "cook.levels" "add.smooth" "label.pos" "cex.caption" "rows" "levels" "conf" "absVal" "ci.lty" "xval" "do.points" "col.points" "cex.points" "col.hor" "col.vert" "lwd" "set.pars" "range.bars" "col.range" "xy.labels" "xy.lines" "nc" "yax.flip" "mar.multi" "oma.multi"))) ("print" (("base") (("x" . "") ("digits" . "NULL") ("quote" . "TRUE") ("na.print" . "NULL") ("print.gap" . "NULL") ("right" . "FALSE") ("max" . "NULL") ("useSource" . "TRUE") ("..." . "")) ("x" "..." "digits" "signif.stars" "intercept" "tol" "se" "sort" "verbose" "indent" "style" ".bibstyle" "prefix" "vsep" "minlevel" "quote" "right" "row.names" "max" "na.print" "print.gap" "useSource" "diag" "upper" "justify" "title" "max.levels" "width" "steps" "showEnv" "newpage" "vp" "cutoff" "max.level" "give.attr" "units" "abbrCollate" "print.x" "deparse" "locale" "symbolic.cor" "loadings" "zero.print" "calendar")))) "Alist of cached arguments for very time consuming functions.") ;;; HELP (defun ess-r-get-object-help-string (sym) "Help string for ac." (let ((proc (ess-get-next-available-process))) (if (null proc) "No free ESS process found" (let ((buf (get-buffer-create " *ess-command-output*"))) (when (string-match ":+\\(.*\\)" sym) (setq sym (match-string 1 sym))) (with-current-buffer (process-buffer proc) (ess-with-current-buffer buf (ess--flush-help-into-current-buffer sym nil t))) (with-current-buffer buf (ess-help-underline) (goto-char (point-min)) (buffer-string)))))) (defun ess-r-get-arg-help-string (sym &optional proc) "Help string for ac." (setq sym (replace-regexp-in-string " *= *\\'" "" sym)) (let ((proc (or proc (ess-get-next-available-process)))) (if (null proc) "No free ESS process found" (let ((fun (car ess--funname.start))) (with-current-buffer (ess-command (format ".ess_arg_help('%s','%s')\n" sym fun) nil nil nil nil proc) (goto-char (point-min)) (forward-line) (buffer-substring-no-properties (point) (point-max))))))) ;;; COMPANY ;;; http://company-mode.github.io/ (defun company-R-objects (command &optional arg &rest ignored) (interactive (list 'interactive)) (cl-case command (interactive (company-begin-backend 'company-R-objects)) (prefix (unless (ess-inside-string-or-comment-p) (let ((start (ess-symbol-start))) (when start (buffer-substring-no-properties start (point)))))) (candidates (let ((proc (ess-get-next-available-process))) (when proc (with-current-buffer (process-buffer proc) (all-completions arg (ess--get-cached-completions arg)))))) (doc-buffer (company-doc-buffer (ess-r-get-object-help-string arg))))) (defun company-R-args (command &optional arg &rest ignored) (interactive (list 'interactive)) (cl-case command (interactive (company-begin-backend 'company-R-args)) (prefix (unless (ess-inside-string-or-comment-p) (let ((start (ess-arg-start))) (when start (let ((prefix (buffer-substring-no-properties start (point)))) (if ess-company-arg-prefix-length (cons prefix (>= (length prefix) ess-company-arg-prefix-length)) prefix)))))) (candidates (let* ((proc (ess-get-next-available-process)) (args (delete "..." (nth 2 (ess-function-arguments (car ess--funname.start) proc)))) (args (mapcar (lambda (a) (concat a ess-R-argument-suffix)) args))) (all-completions arg args))) (meta (let ((proc (ess-get-next-available-process))) (when (and proc (with-current-buffer (process-buffer proc) (not (file-remote-p default-directory)))) ;; fixme: ideally meta should be fetched with args (let ((doc (ess-r-get-arg-help-string arg proc))) (replace-regexp-in-string "^ +\\| +$" "" (replace-regexp-in-string "[ \t\n]+" " " doc)))))) (sorted t) (require-match 'never) (doc-buffer (company-doc-buffer (ess-r-get-arg-help-string arg))))) ;;; AC SOURCES ;;; http://cx4a.org/software/auto-complete/index.html (defvar ac-source-R '((prefix . ess-ac-start) ;; (requires . 0) ::) (candidates . ess-ac-candidates) ;; (action . ess-ac-action-args) ;; interfere with ac-fallback mechanism on RET (which is extremely annoing in inferior buffers) (document . ess-ac-help)) "Combined ad-completion source for R function arguments and R objects") (defun ess-ac-start () (when (ess-process-live-p) (or (ess-arg-start) (ess-symbol-start)))) (defun ess-ac-candidates () "OBJECTS + ARGS" (let ((args (ess-ac-args))) ;; sort of intrusive but right (if (and ac-auto-start (< (length ac-prefix) ac-auto-start)) args (if args (append args (ess-ac-objects t)) (ess-ac-objects))))) (defun ess-ac-help (sym) (if (string-match-p "= *\\'" sym) (ess-r-get-arg-help-string sym) (ess-r-get-object-help-string sym))) ;; OBJECTS (defvar ac-source-R-objects '((prefix . ess-symbol-start) ;; (requires . 2) (candidates . ess-ac-objects) (document . ess-r-get-object-help-string)) "Auto-completion source for R objects") (defun ess-ac-objects (&optional no-kill) "Get all cached objects" (let ((aprf ac-prefix)) (when (and aprf (ess-process-live-p)) (unless no-kill ;; workaround (kill-local-variable 'ac-use-comphist)) (ess--get-cached-completions aprf ac-point)))) ;; ARGS (defvar ac-source-R-args '((prefix . ess-arg-start) ;; (requires . 0) (candidates . ess-ac-args) ;; (action . ess-ac-action-args) (document . ess-r-get-arg-help-string)) "Auto-completion source for R function arguments") (defun ess-ac-args () "Get the args of the function when inside parentheses." (when (and ess--funname.start ;; set in a call to ess-arg-start (ess-process-live-p)) (let ((args (nth 2 (ess-function-arguments (car ess--funname.start))))) (if args (set (make-local-variable 'ac-use-comphist) nil) (kill-local-variable 'ac-use-comphist)) (delete "..." args) (mapcar (lambda (a) (concat a ess-R-argument-suffix)) args)))) (defvar ess--ac-help-arg-command "getArgHelp('%s','%s')") (provide 'ess-r-completion) ess-17.11/lisp/ess-r-gui.el0000444005071500004540000002143613202324174012351 00000000000000;;; ess-r-gui.el --- Run Rgui on Windows as an inferior Emacs process ;; Copyright (C) 2008 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: 10 Mar 2008 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; In Rgui: ;; > library(tcltk2) ## >= 1.0-6 ;; > .ess.command <- function() source("c:/temp/ess-tempfile.R", echo=TRUE) ;; > tclFun(.ess.command) ;; [1] "R_call 0203A04C" ;;; Code: (require 'ess-dde) ;; needed here because we override several definitions (require 'ess-r-mode) (defun ess-ddeclient-p () "Returns the name of the ddeclient iff `ess-local-process-name' is associated with an `inferior-ess-ddeclient', and nil if the ess-process is running as an ordinary inferior process. Alway nil on Unix machines." (interactive) (if ess-microsoft-p (let ((ess-ddeclient (ess-get-process-variable 'inferior-ess-ddeclient))) (if (not (equal ess-ddeclient (default-value 'inferior-ess-ddeclient))) ess-ddeclient)))) (defun ess-eval-region-execdde (start end even-empty) "Loop through lines in region and send them to ESS via execdde." (setq ;; set the following variables for the current ddeESS process. inferior-ess-ddeclient (ess-get-process-variable 'inferior-ess-ddeclient) ) (write-region start end ess-command-file nil nil 'no-message) (call-process-shell-command (concat inferior-ess-execdde ess-rgui-command)) ) (if (not (getenv "R_HOME")) (setenv "R_HOME" "c:/progra~1/R/R-2.6.1")) ;; ^^^^^^^^^ FIXME! do something better (defvar inferior-Rgui-program-name "cmd" "Rgui program name") (defvar Rgui-pager "emacsclientw.exe" "Rgui pager program") (defvar ess-command-file "c:/temp/ess-tempfile.R" "file name for communication with Rgui") (defvar inferior-ess-execdde (concat (getenv "R_HOME") "/site-library/tcltk2/bin/execdde.exe") "Full pathname to execdde executable") (defvar ess-rgui-command " -s TclEval -t R -c .ess.command > NUL" "command to inferior-ess-execdde that will make Rgui read the command file") (defvar inferior-ess-language-start-rgui "options(chmhelp=FALSE, htmlhelp=FALSE, help_type='text'); require(tcltk2)" "additional arguments to rgui") (defun ess-dde-rgui-send-region (proc start end &optional visibly message) "Loop through lines in region and send them to ESS via ddeclient. PROC, VISIBLY and MESSAGE are ignored." (setq ;; set the following variables for the current ddeESS process. inferior-ess-ddeclient (ess-get-process-variable 'inferior-ess-ddeclient) inferior-ess-client-name (ess-get-process-variable 'inferior-ess-client-name) inferior-ess-client-command (ess-get-process-variable 'inferior-ess-client-command)) (narrow-to-region start end) (goto-char (point-min)) (if (equal inferior-ess-ddeclient "execdde") (ess-eval-region-execdde start end 'even-empty) (let ((beg)) (while (or (< (point) (point-max)) (= 1 (point-max))) (setq beg (point)) (end-of-line) ;; call-process-region won't send over a 0-character line. ;; We go outside the loop to create a 1-character line " " in the ;; *ESS-temporary* buffer (if (= beg (point)) ;; do empty line outside loop (ess-eval-linewise-ddeclient " " nil 'eob t) (call-process-region beg (point) inferior-ess-ddeclient nil nil nil inferior-ess-client-name inferior-ess-client-command)) (forward-line 1)))) (widen)) (defvar Rgui-customize-alist (append '((ess-local-customize-alist . 'Rgui-customize-alist) (ess-dialect . "R") (ess-suffix . "R") (ess-dump-filename-template . (replace-regexp-in-string "S$" ess-suffix ; in the one from custom: ess-dump-filename-template-proto)) (ess-mode-syntax-table . ess-r-syntax-table) (ess-mode-editing-alist . ess-r-editing-alist) (ess-change-sp-regexp . ess-r-change-sp-regexp) (ess-help-sec-regex . ess-help-r-sec-regex) (ess-help-sec-keys-alist . ess-help-r-sec-keys-alist) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-function-pattern . ess-r-function-pattern) (ess-object-name-db-file . "ess-r-namedb.el" ) (ess-send-region-function . #'ess-dde-rgui-send-region) (ess-load-file-function . #'ess-dde-load-file) (ess-command-function . #'ess-dde-command) (ess-eval-linewise-function . #'ess-dde-eval-linewise) (ess-dump-object-function . #'ess-dde-dump-object) (ess-read-object-name-function . #'ess-dde-read-object-name) (ess-find-help-file-function . #'ess-dde-find-help-file) (ess-display-help-on-object-function . #'ess-dde-display-help-on-object) (inferior-ess-program . inferior-Rgui-program-name) (inferior-ess-objects-command . inferior-ess-r-objects-command) (inferior-ess-font-lock-keywords . 'inferior-ess-r-font-lock-keywords) (inferior-ess-search-list-command . "search()\n") (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . nil) ;; "chm") ;;? (inferior-ess-exit-command . "q()") (inferior-ess-exit-prompt . "Save workspace image? [y/n/c]: ") (inferior-ess-primary-prompt . "\\([A-Z/][][A-Za-z0-9./]*\\)*[>$] ") (inferior-ess-secondary-prompt . "+ ?") ;;harmful for shell-mode's C-a: -- but "necessary" for ESS-help? (inferior-ess-start-file . nil) ;; "~/.ess-R" (inferior-ess-start-args . "") (inferior-ess-ddeclient . "execdde") (ess-STERM . "ddeSS") (ess-editor . ess-r-editor) (ess-pager . Rgui-pager) ) S-common-cust-alist) "Variables to customize for Rgui") (defun Rgui (&optional proc-name) "Call 'Rgui for Windows'. Put R in an independent MS-Window (R persists even if the '(ddeESS [R])' window is killed in emacs). Do this by creating a comint process that calls cmd. This is a placeholder buffer with mode '(ddeESS [R])'. Commands sent from an (ESS[S] [R]) buffer to this process will be sourced into the independent Rgui R Console." (interactive) (save-excursion (setq ess-customize-alist Rgui-customize-alist) (ess-write-to-dribble-buffer (format "\n(Rgui): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (let ((default-ddeclient (default-value 'inferior-ess-ddeclient))) (cd (w32-short-file-name (directory-file-name default-directory))) ;; (setenv "S_PROJ" default-directory) (setq-default inferior-ess-ddeclient "execdde") (inferior-ess) (setq-default inferior-ess-ddeclient default-ddeclient) (sleep-for 2) ; need to wait, else working too fast! ) (setq comint-process-echoes nil) ;; *R* buffer (goto-char (point-min)) (insert "This is a placeholder buffer. You can't type anything here.\n You may ignore the 'options' error in this buffer.\n\n") (goto-char (point-max)) (set-buffer-process-coding-system 'raw-text-dos 'raw-text-unix) (setq buffer-read-only t) ; force buffer to be read-only (setq mode-name "ddeESS") ;; initialization (set-buffer (find-file-noselect ess-command-file 'nowarn)) (erase-buffer) (setq ;; set the following variables for the current ddeESS process. inferior-ess-language-start (ess-get-process-variable 'inferior-ess-language-start)) (if inferior-ess-language-start (insert inferior-ess-language-start)) (if inferior-ess-language-start-rgui (insert (concat "\n" inferior-ess-language-start-rgui))) (save-buffer 0) (call-process-shell-command (concat inferior-ess-execdde ess-rgui-command)) )) ;;; ess-r-gui.el ends here ess-17.11/lisp/ess-r-mode.el0000444005071500004540000026453113202324174012516 00000000000000;;; ess-r-mode.el --- R customization ;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2017 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: A.J. Rossini ;; Created: 12 Jun 1997 ;; Maintainer: ESS-core ;; Keywords: languages, statistics ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the R customizations for ESS. See ess-s-lang.el ;; for general S language customizations. ;;; Code: (with-no-warnings (require 'cl)) ; instead of cl-lib so we support Emacs 24.2 (require 'compile) (require 'easymenu) (require 'eldoc) (require 'ess-mode) (require 'ess-help) (require 'ess-s-lang) (require 'ess-roxy) (require 'ess-r-completion) (require 'ess-r-syntax) (require 'ess-r-package) (ess-message "[ess-r-mode:] (require 'ess-s-lang)") (autoload 'ess-r-args-show "ess-r-args" "(Autoload)" t) (autoload 'ess-r-args-auto-show "ess-r-args" "(Autoload)" t) ;;*;; Mode definition ;;;*;;; UI (Keymaps / Menus) (defvar ess-dev-map (let (ess-dev-map) (define-prefix-command 'ess-dev-map) ;; Note: some of these comand are automatically redefined by those in (define-key ess-dev-map "\C-s" 'ess-r-set-evaluation-env) (define-key ess-dev-map "s" 'ess-r-set-evaluation-env) (define-key ess-dev-map "T" 'ess-toggle-tracebug) (define-key ess-dev-map "\C-l" 'ess-r-devtools-load-package) (define-key ess-dev-map "l" 'ess-r-devtools-load-package) (define-key ess-dev-map "`" 'ess-show-traceback) (define-key ess-dev-map "~" 'ess-show-call-stack) (define-key ess-dev-map "\C-w" 'ess-watch) (define-key ess-dev-map "w" 'ess-watch) (define-key ess-dev-map "\C-d" 'ess-debug-flag-for-debugging) (define-key ess-dev-map "d" 'ess-debug-flag-for-debugging) (define-key ess-dev-map "\C-u" 'ess-debug-unflag-for-debugging) (define-key ess-dev-map "u" 'ess-debug-unflag-for-debugging) (define-key ess-dev-map [(control ?D)] 'ess-debug-unflag-for-debugging) (define-key ess-dev-map "\C-b" 'ess-bp-set) (define-key ess-dev-map "b" 'ess-bp-set) (define-key ess-dev-map [(control ?B)] 'ess-bp-set-conditional) (define-key ess-dev-map "B" 'ess-bp-set-conditional) (define-key ess-dev-map "\C-L" 'ess-bp-set-logger) (define-key ess-dev-map "L" 'ess-bp-set-logger) (define-key ess-dev-map "\C-o" 'ess-bp-toggle-state) (define-key ess-dev-map "o" 'ess-bp-toggle-state) (define-key ess-dev-map "\C-k" 'ess-bp-kill) (define-key ess-dev-map "k" 'ess-bp-kill) (define-key ess-dev-map "\C-K" 'ess-bp-kill-all) (define-key ess-dev-map "K" 'ess-bp-kill-all) (define-key ess-dev-map "\C-n" 'ess-bp-next) (define-key ess-dev-map "n" 'ess-bp-next) (define-key ess-dev-map "i" 'ess-debug-goto-input-event-marker) (define-key ess-dev-map "I" 'ess-debug-goto-input-event-marker) (define-key ess-dev-map "\C-p" 'ess-bp-previous) (define-key ess-dev-map "p" 'ess-bp-previous) (define-key ess-dev-map "\C-e" 'ess-debug-toggle-error-action) (define-key ess-dev-map "e" 'ess-debug-toggle-error-action) (define-key ess-dev-map "0" 'ess-electric-selection) (define-key ess-dev-map "1" 'ess-electric-selection) (define-key ess-dev-map "2" 'ess-electric-selection) (define-key ess-dev-map "3" 'ess-electric-selection) (define-key ess-dev-map "4" 'ess-electric-selection) (define-key ess-dev-map "5" 'ess-electric-selection) (define-key ess-dev-map "6" 'ess-electric-selection) (define-key ess-dev-map "7" 'ess-electric-selection) (define-key ess-dev-map "8" 'ess-electric-selection) (define-key ess-dev-map "9" 'ess-electric-selection) (define-key ess-dev-map "?" 'ess-tracebug-show-help) ess-dev-map) "Keymap for commands related to development and debugging.") (defvar ess-r-package-dev-map (let (ess-r-package-dev-map) (define-prefix-command 'ess-r-package-dev-map) (define-key ess-r-package-dev-map "\C-s" 'ess-r-package-set-package) (define-key ess-r-package-dev-map "s" 'ess-r-package-set-package) (define-key ess-r-package-dev-map "\C-a" 'ess-r-devtools-ask) (define-key ess-r-package-dev-map "a" 'ess-r-devtools-ask) (define-key ess-r-package-dev-map "\C-c" 'ess-r-devtools-check-package) (define-key ess-r-package-dev-map "c" 'ess-r-devtools-check-package) (define-key ess-r-package-dev-map "\C-d" 'ess-r-devtools-document-package) (define-key ess-r-package-dev-map "d" 'ess-r-devtools-document-package) (define-key ess-r-package-dev-map "\C-i" 'ess-r-devtools-install-package) (define-key ess-r-package-dev-map "i" 'ess-r-devtools-install-package) (define-key ess-r-package-dev-map "\C-l" 'ess-r-devtools-load-package) (define-key ess-r-package-dev-map "l" 'ess-r-devtools-load-package) (define-key ess-r-package-dev-map "\C-r" 'ess-r-devtools-revdep-check-package) (define-key ess-r-package-dev-map "r" 'ess-r-devtools-revdep-check-package) (define-key ess-r-package-dev-map "\C-t" 'ess-r-devtools-test-package) (define-key ess-r-package-dev-map "t" 'ess-r-devtools-test-package) (define-key ess-r-package-dev-map "\C-u" 'ess-r-devtools-unload-package) (define-key ess-r-package-dev-map "u" 'ess-r-devtools-unload-package) ess-r-package-dev-map)) (easy-menu-define ess-roxygen-menu nil "Roxygen submenu." '("Roxygen" :visible (and ess-dialect (string-match "^R" ess-dialect)) ["Update/Generate Template" ess-roxy-update-entry t] ["Preview Rd" ess-roxy-preview-Rd t] ["Preview HTML" ess-roxy-preview-HTML t] ["Preview text" ess-roxy-preview-text t] ["Hide all" ess-roxy-hide-all t] ["Toggle Roxygen Prefix" ess-roxy-toggle-roxy-region t])) (easy-menu-define ess-tracebug-menu nil "Tracebug submenu." '("Tracebug" :visible (and ess-dialect (string-match "^R" ess-dialect)) ;; :enable ess-local-process-name ["Active?" ess-toggle-tracebug :style toggle :selected (or (and (ess-process-live-p) (ess-process-get 'tracebug)) ess-use-tracebug)] ["Show traceback" ess-show-traceback (ess-process-live-p)] ["Show call stack" ess-show-call-stack (ess-process-live-p)] ["Watch" ess-watch (and (ess-process-live-p) (ess-process-get 'tracebug))] ["Error action cycle" ess-debug-toggle-error-action (and (ess-process-live-p) (ess-process-get 'tracebug))] "----" ["Flag for debugging" ess-debug-flag-for-debugging ess-local-process-name] ["Unflag for debugging" ess-debug-unflag-for-debugging ess-local-process-name] "----" ["Set BP" ess-bp-set t] ["Set conditional BP" ess-bp-set-conditional t] ["Set logger BP" ess-bp-set-logger t] ["Kill BP" ess-bp-kill t] ["Kill all BPs" ess-bp-kill-all t] ["Next BP" ess-bp-next t] ["Previous BP" ess-bp-previous t] "-----" ["About" ess-tracebug-show-help t])) (easy-menu-define ess-r-package-menu nil "Package Development submenu." '("Package development" :visible (and ess-dialect (string-match "^R" ess-dialect)) ["Active?" ess-r-package-mode :style toggle :selected ess-r-package-mode] ["Select package for evaluation" ess-r-set-evaluation-env t])) (easy-menu-add-item ess-mode-menu nil ess-roxygen-menu "end-dev") (easy-menu-add-item ess-mode-menu nil ess-r-package-menu "end-dev") (easy-menu-add-item ess-mode-menu nil ess-tracebug-menu "end-dev") (easy-menu-add-item inferior-ess-mode-menu nil ess-r-package-menu "end-dev") (easy-menu-add-item inferior-ess-mode-menu nil ess-tracebug-menu "end-dev") ;; Inherit from the S syntax table: (defvar ess-r-syntax-table (copy-syntax-table S-syntax-table)) ;; Letting Emacs treat backquoted names and %ops% as strings solves ;; many problems with regard to nested strings and quotes (modify-syntax-entry ?` "\"" ess-r-syntax-table) (modify-syntax-entry ?% "\"" ess-r-syntax-table) ;; Underscore is valid in R symbols (modify-syntax-entry ?_ "_" ess-r-syntax-table) (modify-syntax-entry ?: "." ess-r-syntax-table) (modify-syntax-entry ?@ "." ess-r-syntax-table) (modify-syntax-entry ?$ "." ess-r-syntax-table) ;; TOTHINK: Prevent string delimiting characters from messing up output in the ;; inferior buffer (defvar inferior-ess-r-syntax-table (copy-syntax-table ess-r-syntax-table)) ;; (modify-syntax-entry ?\' "." inferior-ess-r-syntax-table) ;; (modify-syntax-entry ?\" "." inferior-ess-r-syntax-table) ;; (modify-syntax-entry ?` "." inferior-ess-r-syntax-table) (modify-syntax-entry ?% "." inferior-ess-r-syntax-table) (defvar ess-r-completion-syntax-table (let ((table (make-syntax-table ess-r-syntax-table))) (modify-syntax-entry ?. "_" table) (modify-syntax-entry ?: "_" table) (modify-syntax-entry ?$ "_" table) (modify-syntax-entry ?@ "_" table) table) "Syntax table used for completion and help symbol lookup. It makes underscores and dots word constituent chars.") (defun ess-r-font-lock-syntactic-face-function (state) (let ((string-end (save-excursion (and (nth 3 state) (ess-goto-char (nth 8 state)) (ess-forward-sexp) (point))))) (when (eq (nth 3 state) ?`) (put-text-property (nth 8 state) string-end 'ess-r-backquoted t)) (cond ((eq (nth 3 state) ?%) 'ess-%op%-face) ((save-excursion (and (ess-goto-char string-end) (ess-looking-at "<-") (ess-goto-char (match-end 0)) (ess-looking-at "function\\b" t))) font-lock-function-name-face) ((save-excursion (and (ess-goto-char string-end) (ess-looking-at "("))) ess-function-call-face) ((eq (nth 3 state) ?`) 'ess-backquoted-face) ((nth 3 state) font-lock-string-face) (t font-lock-comment-face)))) (ess-message "[ess-r-mode:] (autoload ..) & (def** ..)") (defvar ess-r-customize-alist (append '((ess-local-customize-alist . 'ess-r-customize-alist) (ess-dialect . "R") (ess-suffix . "R") (ess-ac-sources . ess-r-ac-sources) (ess-company-backends . ess-r-company-backends) (ess-build-tags-command . ess-r-build-tags-command) (ess-traceback-command . ess-r-traceback-command) (ess-call-stack-command . ess-r-call-stack-command) (ess-mode-completion-syntax-table . ess-r-completion-syntax-table) (ess-build-eval-message-function . #'ess-r-build-eval-message) (ess-format-eval-command-function . #'ess-r-format-eval-command) (ess-format-load-command-function . #'ess-r-format-load-command) (ess-send-region-function . #'ess-r-send-region) (ess-load-file-function . #'ess-r-load-file) (ess-make-source-refd-command-function . #'ess-r-make-source-refd-command) (ess-format-eval-message-function . #'ess-r-format-eval-message) (ess-install-library-function . #'ess-r-install-library) (ess-eldoc-function . #'ess-r-eldoc-function) (ess-help-web-search-command . #'ess-r-sos) (ess-build-help-command-function . #'ess-r-build-help-command) (ess-dump-filename-template . ess-r-dump-filename-template) (ess-mode-editing-alist . ess-r-editing-alist) (ess-change-sp-regexp . ess-r-change-sp-regexp) (ess-help-sec-regex . ess-help-r-sec-regex) (ess-help-sec-keys-alist . ess-help-r-sec-keys-alist) (ess-loop-timeout . ess-r-loop-timeout) (ess-function-pattern . ess-r-function-pattern) (ess-object-name-db-file . "ess-r-namedb.el") (ess-smart-operators . ess-r-smart-operators) (inferior-ess-program . inferior-ess-r-program-name) (inferior-ess-objects-command . inferior-ess-r-objects-command) (inferior-ess-font-lock-keywords . 'inferior-ess-r-font-lock-keywords) (inferior-ess-search-list-command . "search()\n") (inferior-ess-help-command . inferior-ess-r-help-command) (inferior-ess-help-filetype . nil) (inferior-ess-exit-command . "q()") (inferior-ess-exit-prompt . "Save workspace image? [y/n/c]: ") (inferior-ess-start-file . nil) (inferior-ess-start-args . "") (ess-error-regexp-alist . ess-r-error-regexp-alist) (ess-describe-object-at-point-commands . 'ess-r-describe-object-at-point-commands) (ess-STERM . "iESS") (ess-editor . ess-r-editor) (ess-pager . ess-r-pager) (ess-mode-syntax-table . ess-r-syntax-table) (font-lock-syntactic-face-function . #'ess-r-font-lock-syntactic-face-function) (prettify-symbols-alist . '(("<-" . ?â†) ("<<-" . ?↞) ("->" . ?→) ("->>" . ?↠)))) S-common-cust-alist) "Variables to customize for R -- set up later than emacs initialization.") (defalias 'R-customize-alist 'ess-r-customize-alist) (defvar ess-r-build-tags-command "rtags('%s', recursive = TRUE, pattern = '\\\\.[RrSs](rw)?$',ofile = '%s')") (defvar ess-r-traceback-command "local({cat(geterrmessage(), \ '---------------------------------- \n', \ fill=TRUE); try(traceback(), silent=TRUE)})\n") (defvar ess-r-call-stack-command "traceback(1)\n") (defvar ess-r-dump-filename-template (replace-regexp-in-string "S$" "R" ess-dump-filename-template-proto)) (defvar ess-r-ac-sources '(ac-source-R)) (defvar ess-r-company-backends '((company-R-args company-R-objects))) (defvar ess-r-loop-timeout 2000000) (defvar ess-r-editing-alist ;; copy the S-alist and modify : (let ((S-alist (copy-alist S-editing-alist))) (setcdr (assoc 'ess-font-lock-defaults S-alist) '(ess--extract-default-fl-keywords ess-R-font-lock-keywords)) (setcdr (assoc 'ess-font-lock-keywords S-alist) (quote 'ess-R-font-lock-keywords)) (setcdr (assoc 'ess-mode-syntax-table S-alist) (quote ess-r-syntax-table)) S-alist) "General options for editing R source files.") (defconst ess-help-r-sec-regex "^[A-Z][A-Za-z].+:$" "Reg(ular) Ex(pression) of section headers in help file.") (defconst ess-help-r-sec-keys-alist '((?a . "\\s *Arguments:") (?d . "\\s *Description:") (?D . "\\s *Details:") (?t . "\\s *Details:") (?e . "\\s *Examples:") (?n . "\\s *Note:") (?r . "\\s *References:") (?s . "\\s *See Also:") (?u . "\\s *Usage:") (?v . "\\s *Value[s]?") ; ) "Alist of (key . string) pairs for use in help section searching.") (defvar ess-r-error-regexp-alist '(R R1 R2 R3 R4 R-recover) "List of symbols which are looked up in `compilation-error-regexp-alist-alist'.") ;; Takes precidence over R1 below in english locales, and allows spaces in file path (add-to-list 'compilation-error-regexp-alist-alist '(R "\\(\\(?: at \\|(@\\)\\([^#\n]+\\)[#:]\\([0-9]+\\)\\)" 2 3 nil 2 1)) (add-to-list 'compilation-error-regexp-alist-alist '(R1 " \\([^ \t\n]+\\)#\\([0-9]+\\)[: ]" 1 2 nil 2)) (add-to-list 'compilation-error-regexp-alist-alist '(R2 "(\\(\\w+ \\([^())\n]+\\)#\\([0-9]+\\)\\))" 2 3 nil 2 1)) ;; Precedes R4 and allows spaces in file path (add-to-list 'compilation-error-regexp-alist-alist ;; Start with bol,: but don't start with digit '(R3 "\\(?:^ +\\|: +\\)\\([^-+[:digit:]\n]:?[^:\n]*\\):\\([0-9]+\\):\\([0-9]+\\):" 1 2 3 2 1)) (add-to-list 'compilation-error-regexp-alist-alist ;; Don't start with digit, don't contain spaces '(R4 "\\([^-+ [:digit:]][^: \t\n]+\\):\\([0-9]+\\):\\([0-9]+\\):" 1 2 3 2 1)) (add-to-list 'compilation-error-regexp-alist-alist '(R-recover " *[0-9]+: +\\([^:\n\t]+?\\)#\\([0-9]+:\\)" 1 2 nil 2 1)) ;; gnu C errors ;; (add-to-list 'compilation-error-regexp-alist-alist ;; '(R_C "^\\([^-+ [:digit:]][^: \t\n]+\\):\\([0-9]+\\):\\([0-9]+\\):" 2 3 nil 2 1)) (let ((r-ver '("R-1" "R-2" "R-3" "R-devel" "R-patched"))) (defvar ess-r-versions (if (eq system-type 'darwin) (append r-ver '("R32" "R64")) r-ver) "List of partial strings for versions of R to access within ESS. Each string specifies the start of a filename. If a filename beginning with one of these strings is found on `exec-path', a M-x command for that version of R is made available. For example, if the file \"R-1.8.1\" is found and this variable includes the string \"R-1\", a function called `M-x R-1.8.1' will be available to run that version of R. If duplicate versions of the same program are found (which happens if the same path is listed on `exec-path' more than once), they are ignored by calling `ess-uniq-list'. Set this variable to nil to disable searching for other versions of R. If you set this variable, you need to restart Emacs (and set this variable before ess-site is loaded) for it to take effect.")) ;; Create functions for calling different (older or newer than default) ;; versions of R and S(qpe). (defvar ess-versions-created nil "List of strings of all S- and R-versions found on the system.") ;; is currently used (updated) by ess-find-newest-R (defvar ess-r-versions-created nil "List of strings of all R-versions found on the system.") (defun ess-r-s-versions-creation () "(Re)Create ESS R-<..> commands FILENAME sans final \"extension\". The extension, in a file name, is the part that follows the last `.'." (interactive) ;; Create ess-versions-created, ess-r-versions-created, and on ;; Windows, ess-rterm-version-paths (let ((R-newest-list '("R-newest")) (ess-s-versions-created (if ess-microsoft-p (nconc (ess-sqpe-versions-create ess-SHOME-versions) ;; 32-bit (ess-sqpe-versions-create ess-SHOME-versions-64 "-64-bit")) ;; 64-bit (ess-s-versions-create)))) (if ess-microsoft-p (setq ess-rterm-version-paths (ess-flatten-list (ess-uniq-list (if (not ess-directory-containing-R) (if (getenv "ProgramW6432") (let ((P-1 (getenv "ProgramFiles(x86)")) (P-2 (getenv "ProgramW6432"))) (nconc ;; Always 32 on 64 bit OS, nil on 32 bit OS (ess-find-rterm (concat P-1 "/R/") "bin/Rterm.exe") (ess-find-rterm (concat P-1 "/R/") "bin/i386/Rterm.exe") ;; Keep this both for symmetry and because it can happen: (ess-find-rterm (concat P-1 "/R/") "bin/x64/Rterm.exe") ;; Always 64 on 64 bit OS, nil on 32 bit OS (ess-find-rterm (concat P-2 "/R/") "bin/Rterm.exe") (ess-find-rterm (concat P-2 "/R/") "bin/i386/Rterm.exe") (ess-find-rterm (concat P-2 "/R/") "bin/x64/Rterm.exe"))) (let ((PF (getenv "ProgramFiles"))) (nconc ;; Always 32 on 32 bit OS, depends on 32 or 64 process on 64 bit OS (ess-find-rterm (concat PF "/R/") "bin/Rterm.exe") (ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe") (ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe")))) (let ((PF ess-directory-containing-R)) (nconc (ess-find-rterm (concat PF "/R/") "bin/Rterm.exe") (ess-find-rterm (concat PF "/R/") "bin/i386/Rterm.exe") (ess-find-rterm (concat PF "/R/") "bin/x64/Rterm.exe")))))))) (ess-message "[ess-site:] (let ... before (ess-r-versions-create) ...") (setq ess-r-versions-created ;; For Unix *and* Windows, using either (ess-r-versions-create)) ;; ess-r-versions or ess-rterm-version-paths (above!) ;; Add the new defuns, if any, to the menu. ;; Check that each variable exists, before adding. ;; e.g. ess-sqpe-versions-created will not be created on Unix. (setq ess-versions-created (ess-flatten-list (mapcar (lambda(x) (if (boundp x) (symbol-value x) nil)) '(R-newest-list ess-r-versions-created ess-s-versions-created)))))) (defun ess-r-s-versions-creation+menu () "Call `\\[ess-r-s-versions-creation] creaing `ess-versions-created' and update the \"Start Process\" menu." (interactive) (ess-message "[ess-site:] before (ess-r-s-versions-creation) ...") (ess-r-s-versions-creation) (when ess-versions-created ;; new-menu will be a list of 3-vectors, of the form: ;; ["R-1.8.1" R-1.8.1 t] (let ((new-menu (mapcar (lambda(x) (vector x (intern x) t)) ess-versions-created))) (easy-menu-add-item ess-mode-menu '("Start Process") (cons "Other" new-menu)))) ess-versions-created) ;;;*;;; Mode init (defvar ess-r-post-run-hook nil "Functions run in process buffer after the initialization of R process.") (defalias 'ess-R-post-run-hook 'ess-r-post-run-hook) (defun ess-r-mode-p () "Check whether we have a buffer running in R mode. This is to get around the lack of proper derived modes in ESS." (and (eq major-mode 'ess-mode) (string= ess-dialect "R"))) ;;;### autoload (defun R (&optional start-args) "Call 'R', the 'GNU S' system from the R Foundation. Optional prefix (C-u) allows to set command line arguments, such as --vsize. This should be OS agnostic. If you have certain command line arguments that should always be passed to R, put them in the variable `inferior-R-args'. START-ARGS can be a string representing an argument, a list of such strings, or any other non-nil value. In the latter case, you will be prompted to enter arguments interactively." (interactive "P") (ess-write-to-dribble-buffer ;; for debugging only (format "\n(R): ess-dialect=%s, buf=%s, start-arg=%s\n current-prefix-arg=%s\n" ess-dialect (current-buffer) start-args current-prefix-arg)) (let* ((r-always-arg (if (or ess-microsoft-p (eq system-type 'cygwin)) "--ess " ;; else: "unix alike" (if (not ess-R-readline) "--no-readline "))) (start-args (cond ((stringp start-args) start-args) ((and start-args (listp start-args) (every 'stringp start-args)) (mapconcat 'identity start-args " ")) (start-args (read-string (concat "Starting Args" (if r-always-arg (concat " [other than '" r-always-arg "']")) " ? "))))) (r-start-args (concat r-always-arg inferior-R-args " " ; add space just in case start-args)) (cust-alist (copy-alist ess-r-customize-alist)) (gdbp (string-match-p "gdb" r-start-args)) use-dialog-box) (when gdbp (setcdr (assoc 'inferior-ess-secondary-prompt cust-alist) (format "\\(%s\\)\\|\\((gdb) \\)" (cdr (assoc 'inferior-ess-secondary-prompt cust-alist))))) (when (or ess-microsoft-p (eq system-type 'cygwin)) (setq use-dialog-box nil) (when ess-microsoft-p ;; default-process-coding-system would break UTF locales on Unix (setq default-process-coding-system '(undecided-dos . undecided-dos)))) (inferior-ess r-start-args cust-alist gdbp) (ess-process-put 'funargs-pre-cache ess-r--funargs-pre-cache) (remove-hook 'completion-at-point-functions 'ess-filename-completion 'local) ;; should be first (add-hook 'completion-at-point-functions 'ess-r-object-completion nil 'local) (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local) (setq comint-input-sender 'inferior-ess-r-input-sender) (if gdbp (progn ;; We need to use callback, because R might start with a gdb process (ess-process-put 'callbacks '(R-initialize-on-start)) ;; trigger the callback (process-send-string (get-process ess-local-process-name) "\n")) (ess-wait-for-process) (R-initialize-on-start)) (ess-write-to-dribble-buffer (format "(R): inferior-ess-language-start=%s\n" inferior-ess-language-start)))) (defun R-initialize-on-start (&optional proc string) "This function is run after the first R prompt. Executed in process buffer." (interactive) ;; sometimes needed (MM w/ Emacs 25.1, on F24 where PAGER is 'more'): ;; carefully set "pager" option "when needed": (ess-eval-linewise (format "if (identical(getOption('pager'), file.path(R.home('bin'), 'pager'))) options(pager='%s') # rather take the ESS one \n" inferior-ess-pager) nil nil nil 'wait) (inferior-ess-r-load-ESSR) (when inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start nil nil nil 'wait-prompt)) (with-ess-process-buffer nil (add-hook 'ess-presend-filter-functions 'ess-R-scan-for-library-call nil 'local) (run-mode-hooks 'ess-r-post-run-hook))) ;;;### autoload (defun R-mode (&optional proc-name) "Major mode for editing R source. See `ess-mode' for more help." (interactive "P") (setq ess-customize-alist ess-r-customize-alist) ;;(setq imenu-generic-expression R-imenu-generic-expression) (ess-mode ess-r-customize-alist proc-name) ;; for emacs < 24 (add-hook 'comint-dynamic-complete-functions 'ess-complete-object-name t 'local) ;; for emacs >= 24 (remove-hook 'completion-at-point-functions 'ess-filename-completion 'local) ;; should be first (add-hook 'completion-at-point-functions 'ess-r-object-completion nil 'local) (add-hook 'completion-at-point-functions 'ess-filename-completion nil 'local) (if (fboundp 'ess-add-toolbar) (ess-add-toolbar)) (when ess-imenu-use-S (setq imenu-generic-expression ess-imenu-generic-expression) (imenu-add-to-menubar "Imenu-R")) ;; useful for swankr/slime: (set (make-local-variable 'beginning-of-defun-function) (lambda (&optional arg) (skip-chars-backward " \t\n") (ess-beginning-of-function 'no-error))) (set (make-local-variable 'end-of-defun-function) 'ess-end-of-function) (ess-roxy-mode t) (ad-activate 'fill-paragraph) (ad-activate 'move-beginning-of-line) (ad-activate 'back-to-indentation) (ad-activate 'ess-eval-line-and-step) ;; FIXME: Why advice our own function? (when ess-roxy-hide-show-p (ad-activate 'ess-indent-command)) (run-hooks 'R-mode-hook)) (fset 'r-mode 'R-mode) (fset 'ess-r-mode 'R-mode) ;;*;; Miscellaneous (defun ess-R-arch-2-bit (arch) "Translate R's architecture shortcuts/directory names to 'bits', i.e., \"32\" or \"64\" (for now)." (if (string= arch "i386") "32" ;; else: "64")) (defun ess-rterm-arch-version (long-path &optional give-cons) "Find an architecture-specific name for LONG-PATH, an absolute (long name) path to R on Windows. Returns either Name, a string, or a (Name . Path) cons, such as (\"R-2.12.1-64bit\" . \"C:/Program Files/R/R-2.12.1/bin/x64/Rterm.exe\") \"R-x.y.z/bin/Rterm.exe\" will return \"R-x.y.z\", for R-2.11.x and older. \"R-x.y.z/bin/i386/Rterm.exe\" will return \"R-x.y.z-32bit\", for R-2.12.x and newer. \"R-x.y.z/bin/x64/Rterm.exe\" will return \"R-x.y.z-64bit\", for R-2.12.x and newer." (let* ((dir (directory-file-name (file-name-directory long-path))) (dir2 (directory-file-name (file-name-directory dir))) (v-1up (file-name-nondirectory dir));; one level up (v-2up (file-name-nondirectory dir2));; two levels up; don't want "bin" ... (v-3up (file-name-nondirectory ;; three levels up; no "bin" for i386, x64 ... (directory-file-name (file-name-directory dir2)))) (val (if (string= v-2up "bin") (concat v-3up "-" (ess-R-arch-2-bit v-1up) "bit") ;; pre R-2.12.x, or when there's no extra arch-specific sub directory: v-2up))) (if give-cons (cons val long-path) val))) (defun ess-r-versions-create () "Generate the `M-x R-x.y.z' functions for starting other versions of R. On MS Windows, this works using `ess-rterm-version-paths'; otherwise, see `ess-r-versions' for strings that determine which functions are created. The result is a list of the new R defuns, if any, that were created. The defuns will normally be placed on the menubar and stored as `ess-r-versions-created' upon ESS initialisation." (if (not ess-r-versions) nil ;nothing to return ;; else, if ess-r-versions is non-nil, let's try to find those R versions. ;; This works by creating a temp buffer where the template function is ;; edited so that X.Y is replaced by the version name (let (versions r-versions-created (eval-buf (get-buffer-create "*ess-temp-r-evals*")) (template ;; This is the template function used for creating M-x R-X.Y. (concat "(defun R-X.Y (&optional start-args) \"Call the R version 'R-X.Y' using ESS. This function was generated by `ess-r-versions-create'.\" (interactive \"P\") (let ((inferior-R-version \"R-X.Y\") (inferior-ess-r-program-name \"" (if ess-microsoft-p "Rterm" "R") "-X.Y\")) (R start-args))) "))) (with-current-buffer eval-buf ;; clear the buffer. (delete-region (point-min) (point-max)) ;; Find which versions of R we want. Remove the pathname, leaving just ;; the name of the executable. (setq versions (if ess-microsoft-p (mapcar (lambda(v) (ess-rterm-arch-version v 'give-cons)) ess-rterm-version-paths) ;; ^^^^^^^^^^^^^^^^^^^^^^^ from ./ess-site.el at start ;; else (non-MS): (ess-uniq-list (mapcar 'file-name-nondirectory (apply 'nconc (mapcar 'ess-find-exec-completions ess-r-versions)))))) (setq r-versions-created ; also for returning at end. (if ess-microsoft-p (mapcar 'car versions) versions)) (ess-write-to-dribble-buffer (format "(R): ess-r-versions-create making M-x defuns for \n %s\n" (mapconcat 'identity r-versions-created "\n "))) ;; Iterate over each string in VERSIONS, creating a new defun each time. (while versions (let* ((version (car versions)) (ver (if ess-microsoft-p (car version) version)) (beg (point))) (setq versions (cdr versions)) (insert template) (goto-char beg) (while (search-forward "R-X.Y" nil t) ;; in all cases (replace-match ver t t)) (when ess-microsoft-p (goto-char beg) (while (search-forward "Rterm-X.Y" nil t) (replace-match (w32-short-file-name (cdr version)) t t))) (goto-char (point-max)))) ;; buffer has now been created with defuns, so eval them! (eval-buffer)) (unless (and (boundp 'ess-debugging) ess-debugging) (kill-buffer eval-buf)) r-versions-created))) (defvar ess-newest-R nil "Stores the newest version of R that has been found. Used as a cache, within ess-find-newest-R. Do not use this value directly, but instead call the function \\[ess-find-newest-R].") (defcustom ess-prefer-higher-bit t "Non-nil means prefer higher bit architectures of R. e.g. prefer 64 bit over 32 bit. This is currently used only by the code on Windows for finding the newest version of R." :group 'ess-R :type 'boolean) (defun ess-rterm-prefer-higher-bit () "Optionally remove 32bit Rterms from being candidate for R-newest. Return the list of candidates for being R-newest. Filtering is done iff `ess-prefer-higher-bit' is non-nil. This is used only by Windows when running `ess-find-newest-R'." (if ess-prefer-higher-bit ;; filter out 32 bit elements (let ((filtered (delq nil (mapcar (lambda (x) (unless (string-match "/i386/Rterm.exe" x) x)) ess-rterm-version-paths)))) (if (null filtered) ;; if none survived filtering, keep the original list ess-rterm-version-paths filtered)) ess-rterm-version-paths)) (defun ess-find-newest-R () "Find the newest version of R on the system. Once the value is found, cache it in the variable `ess-newest-R' for future use as finding the newest version of R can be potentially time-consuming." (or ess-newest-R (progn (message "Finding all versions of R on your system...") ;;(sleep-for 3) nil) (setq ess-newest-R (ess-newest-r (if ess-microsoft-p (ess-rterm-prefer-higher-bit) (add-to-list 'ess-r-versions-created inferior-ess-r-program-name)))))) (defun ess-check-R-program-name () "Check if `inferior-ess-r-program-name' points to an executable version of R. If not, try to find the newest version of R elsewhere on the system, and update `inferior-ess-r-program-name' accordingly." (unless (executable-find inferior-ess-r-program-name) ;; need to check if we can find another name. (let ((newest (ess-find-newest-R))) (if newest (setq inferior-ess-r-program-name newest) (message "Sorry, no version of R could be found on your system."))))) (defun R-newest (&optional start-args) "Find the newest version of R available, and run it. Subsequent calls to R-newest will run that version, rather than searching again for the newest version. Providing an optional prefix arg (C-u) will prompt for command line arguments." (interactive "P") (let ((rnewest (ess-find-newest-R))) (if (not rnewest) (error "No version of R could be found.") ;; Else: we have a working version of R. ;; Have to be careful to avoid recursion... (message (concat "Newest version of R is " rnewest)) (fset 'R-newest (intern (if ess-microsoft-p (ess-rterm-arch-version rnewest) rnewest))) ;;(fset 'R-newest (intern rnewest)) (R-newest start-args)))) ;; (ess-r-version-date "R-2.5.1") (ess-r-version-date "R-patched") ;; (ess-r-version-date "R-1.2.1") (ess-r-version-date "R-1.8.1") ;; Windows: ;; (ess-r-version-date "C:/Program Files (x86)/R/R-2.11.1/bin/Rterm.exe") ;; Note that for R-devel, ver-string is something like ;; R version 2.6.0 Under development (unstable) (2007-07-14 r42234) ;; Antique examples are 'R 1.0.1 (April 14, 2000)' or 'R 1.5.1 (2002-06-17).' (defun ess-r-version-date (rver) "Return the date of the version of R named RVER. The date is returned as a date string. If the version of R could not be found from the output of the RVER program, \"-1\" is returned." (let ((date "-1") (ver-string (shell-command-to-string ;; here, MS Windows (shell-command) needs a short name: (concat (if ess-microsoft-p (w32-short-file-name rver) rver) " --version")))) (when (string-match "R \\(version \\)?[1-9][^\n]+ (\\(2[0-9-]+\\)\\( r[0-9]+\\)?)" ver-string) (setq date (match-string 2 ver-string))) (cons date rver))) (defun ess-current-R-version () "Get the version of R currently running in the ESS buffer as a string" (ess-make-buffer-current) (car (ess-get-words-from-vector "as.character(.ess.Rversion)\n"))) (defun ess-current-R-at-least (version) "Is the version of R (in the ESS buffer) at least (\">=\") VERSION ? Examples: (ess-current-R-at-least '2.7.0) or (ess-current-R-at-least \"2.5.1\")" (ess-make-buffer-current) (string= "TRUE" (car (ess-get-words-from-vector (format "as.character(.ess.Rversion >= \"%s\")\n" version))))) (defvar ess-temp-newest nil) (defun ess-newest-r (rvers) "Check all the versions of RVERS to see which is the newest. Return the name of the newest version of R." (let ((rtimes (mapcar 'ess-r-version-date rvers))) ;; SJE: 2007-07-13 -- following line is a temp var to check that ;; the newest version of R is found correctly. ;; (nowadays gives a compile warning) (setq ess-temp-newest rtimes) (ess-find-newest-date rtimes))) ;; Test case for following defun: ;; (setq a '( ("2003-10-04" . "R-1.7") ;; ("2006-11-19" . "R-2.2") ;; ("2007-07-01" . "R-dev") ;; ("-1" . "R-broken") ;; ("2005-12-30" . "R-2.0"))) ;; (ess-find-newest-date a) (defun ess-find-newest-date (rvers) "Find the newest version of R given in the a-list RVERS. Each element of RVERS is a dotted pair (date . R-version), where date is given as e.g.\"2007-11-30\" so that we can compare dates as strings. If a date is listed as \"-1\", that version of R could not be found. If the value returned is nil, no valid newest version of R could be found." (let (new-r this-r (new-time "0")) (while rvers (setq this-r (car rvers) rvers (cdr rvers)) (when (string< new-time (car this-r)) (setq new-time (car this-r) new-r (cdr this-r)))) new-r)) (defun ess-find-rterm (&optional ess-R-root-dir bin-Rterm-exe) "Find the full path of all occurences of Rterm.exe under the ESS-R-ROOT-DIR. If ESS-R-ROOT-DIR is nil, construct it by looking for an occurence of Rterm.exe in the exec-path. If there are no occurences of Rterm.exe in the exec-path, then use `ess-program-files' (which evaluates to something like \"c:/progra~1/R/\" in English locales) which is the default location for the R distribution. If BIN-RTERM-EXE is nil, then use \"bin/Rterm.exe\"." (if (not ess-R-root-dir) (let ((Rpath (executable-find "Rterm"))) (setq ess-R-root-dir (expand-file-name (if Rpath (concat (file-name-directory Rpath) "../../") (concat ess-program-files "/R/")))) (ess-write-to-dribble-buffer (format "(ess-find-rterm): ess-R-root-dir = '%s'\n" ess-R-root-dir)))) (if (not bin-Rterm-exe) (setq bin-Rterm-exe "bin/Rterm.exe")) (when (file-directory-p ess-R-root-dir) ; otherwise file-name-all-.. errors (setq ess-R-root-dir (replace-regexp-in-string "[\\]" "/" ess-R-root-dir)) (let ((R-ver (ess-drop-non-directories (ess-flatten-list (mapcar (lambda (r-prefix) (file-name-all-completions r-prefix ess-R-root-dir)) (append '("rw") ess-r-versions)))))) (mapcar (lambda (dir) (let ((R-path (concat ess-R-root-dir (replace-regexp-in-string "[\\]" "/" dir) bin-Rterm-exe))) (if (file-exists-p R-path) R-path))) R-ver)))) ;;;###autoload (defun Rnw-mode () "Major mode for editing Sweave(R) source. See `ess-noweb-mode' and `R-mode' for more help." (interactive) (require 'ess-noweb);; << probably someplace else (setq ess--make-local-vars-permanent t) (ess-noweb-mode 1); turn it on (ess-noweb-set-doc-mode 'latex-mode) (ess-noweb-set-code-mode 'R-mode) (setq ess--local-handy-commands (append '(("weave" . ess-swv-weave) ("tangle" . ess-swv-tangle)) ess-handy-commands) ess-dialect "R" ess-language "S") (put 'ess--local-handy-commands 'permanent-local t) (run-hooks 'Rnw-mode-hook)) (fset 'Snw-mode 'Rnw-mode); just a synonym (for now or ever) (autoload 'ess-transcript-mode "ess-trns" "Major mode for editing S transcript files." t) (defun R-transcript-mode () "Does the right thing." (interactive) (ess-transcript-mode ess-r-customize-alist)) (fset 'r-transcript-mode 'R-transcript-mode) (defun R-fix-T-F (&optional from quietly) "Fix T/F into TRUE and FALSE *cautiously*, i.e. not in comments and strings; starting from the current position (point)." (interactive "d\nP"); point and prefix (C-u) (save-excursion (goto-char from) (ess-rep-regexp "\\(\\([][=,()]\\|<-\\) *\\)T\\>" "\\1TRUE" 'fixcase nil (not quietly)) (goto-char from) (ess-rep-regexp "\\(\\([][=,()]\\|<-\\) *\\)F\\>" "\\1FALSE" 'fixcase nil (not quietly)))) (defvar ess--packages-cache nil "Cache var to store package names. Used by `ess-r-install-library'.") (defvar ess--CRAN-mirror nil "CRAN mirror name cache.") (defun ess-r-install-library (&optional update pack) "Prompt and install R package. With argument, update cached packages list." (interactive "P") (inferior-ess-r-force) (when (equal "@CRAN@" (car (ess-get-words-from-vector "getOption('repos')[['CRAN']]\n"))) (ess-setCRANMiror ess--CRAN-mirror) (ess-wait-for-process (get-process ess-current-process-name)) (unless pack (setq update t))) (when (or update (not ess--packages-cache)) (message "Fetching R packages ... ") (setq ess--packages-cache (ess-get-words-from-vector "print(rownames(available.packages()), max=1e6)\n"))) (let* ((ess-eval-visibly-p t) (pack (or pack (ess-completing-read "Package to install" ess--packages-cache)))) (process-send-string (get-process ess-current-process-name) (format "install.packages('%s')\n" pack)) (display-buffer (buffer-name (process-buffer (get-process ess-current-process-name)))))) (defun ess-setRepositories () "Call setRepositories()" (interactive) (if (not (string-match "^R" ess-dialect)) (message "Sorry, not available for %s" ess-dialect) (ess-eval-linewise "setRepositories(FALSE)\n"))) (defun ess-setCRANMiror (&optional mirror) "Set cran mirror" (interactive) (let ((mirror-cmd "local({r <- getOption('repos'); r['CRAN'] <- '%s';options(repos=r)})\n")) (if mirror (ess-command (format mirror-cmd mirror)) (let* ((M1 (ess-get-words-from-vector "local({out <- getCRANmirrors(local.only=TRUE); print(paste(out$Name,'[',out$URL,']', sep=''))})\n")) (M2 (mapcar (lambda (el) (string-match "\\(.*\\)\\[\\(.*\\)\\]$" el) (propertize (match-string 1 el) 'URL (match-string 2 el))) M1)) (mirror (ess-completing-read "Choose CRAN mirror" M2 nil t))) (when mirror (setq mirror (get-text-property 0 'URL mirror)) (setq ess--CRAN-mirror mirror) (ess-command (format mirror-cmd mirror)))))) (message "CRAN mirror: %s" (car (ess-get-words-from-vector "getOption('repos')[['CRAN']]\n")))) (defun ess-r-sos (cmd) "Interface to findFn in the library sos." (interactive "sfindFn: ") (unless (ess-boolean-command "print(requireNamespace('sos', quietly = TRUE))\n") (if (y-or-n-p "Library 'sos' is not installed. Install? ") (ess-eval-linewise "install.packages('sos')\n") (signal 'quit nil))) (message nil) (ess-eval-linewise (format "sos::findFn(\"%s\", maxPages=10)" cmd))) (defun ess-R-scan-for-library-call (string) "Detect `library/require' calls in string and update tracking vars. Placed into `ess-presend-filter-functions' for R dialects." (when (string-match-p "\\blibrary(\\|\\brequire(" string) (ess--mark-search-list-as-changed)) string) (defun ess-load-library () "Prompt and load dialect specific library/package/module. Note that add-ons in R are called 'packages' and the name of this function has nothing to do with R package mechanism, but it rather serves a generic, dialect independent purpose. It is also similar to `load-library' emacs function." (interactive) (if (not (string-match "^R" ess-dialect)) (message "Sorry, not available for %s" ess-dialect) (let ((ess-eval-visibly-p t) ;;; FIXME? .packages() does not cache; installed.packages() does but is slower first time (packs (ess-get-words-from-vector "print(.packages(T), max=1e6)\n")) pack) (setq pack (ess-completing-read "Load" packs)) (ess-eval-linewise (format "library('%s')\n" pack)) (ess--mark-search-list-as-changed) (display-buffer (buffer-name (process-buffer (get-process ess-current-process-name))))))) (define-obsolete-function-alias 'ess-library 'ess-load-library "ESS[12.09-1]") ;;; smart-comma was a bad idea (eval-after-load "eldoc" '(eldoc-add-command "ess-smart-comma")) ;;*;; Interaction with R ;;;*;;; Evaluation (defun ess-r-arg (param value &optional wrap) (let ((value (if wrap (concat "'" value "'") value))) (concat ", " param " = " value))) (defun ess-r-build-args (visibly output namespace) (let ((visibly (ess-r-arg "visibly" (if visibly "TRUE" "FALSE"))) (output (ess-r-arg "output" (if output "TRUE" "FALSE"))) (pkg (when namespace (ess-r-arg "package" namespace t))) (verbose (when (and namespace ess-r-namespaced-load-verbose) (ess-r-arg "verbose" "TRUE")))) (concat visibly output pkg verbose))) (ess-defmethod R ess-build-eval-command (string &optional visibly output file namespace) (let* ((namespace (unless ess-debug-minor-mode (or namespace (ess-r-get-evaluation-env)))) (cmd (if namespace ".ess.ns_eval" ".ess.eval")) (file (when file (ess-r-arg "file" file t))) (args (ess-r-build-args visibly output namespace))) (concat cmd "(\"" string "\"" args file ")\n"))) (ess-defmethod R ess-build-load-command (file &optional visibly output namespace) (let* ((namespace (or namespace (ess-r-get-evaluation-env))) (cmd (if namespace ".ess.ns_source" ".ess.source")) (args (ess-r-build-args visibly output namespace))) (concat cmd "('" file "'" args ")\n"))) (defun ess-r-build-eval-message (message) (let ((env (cond (ess-debug-minor-mode (substring-no-properties ess-debug-indicator 1)) ((ess-r-get-evaluation-env))))) (if env (format "[%s] %s" env message) message))) (defvar-local ess-r-evaluation-env nil "Environment into which code should be evaluated. When this variable is nil, code is evaluated in the current environment. Currently only packages can be set as evaluation environments. Use `ess-r-set-evaluation-env' to set this variable.") (defun ess-r-get-evaluation-env () "Get current evaluation env." (or ess-r-evaluation-env (and ess-current-process-name (ess-get-process-variable 'ess-r-evaluation-env)))) (defvar ess-r-prompt-for-attached-pkgs-only nil "If nil provide completion for all installed R packages. If non-nil, only look for attached packages.") (defun ess-r-set-evaluation-env (&optional arg) "Select a package namespace for evaluation of R code. Call interactively with a prefix argument to disable evaluation in a namespace. When calling from a function, ARG can be a string giving the package to select, any other non-nil value to disable, or nil to prompt for a package. If `ess-r-prompt-for-attached-pkgs-only' is non-nil, prompt only for attached packages." (interactive "P") (let ((env (cond ((stringp arg) arg) ((null arg) (ess-r--select-package-name)) (t "*none*")))) (if (equal env "*none*") (let ((cur-env (ess-r-get-evaluation-env))) ;; fixme: does not work if env is set at process level (setq ess-r-evaluation-env nil) (delq 'ess-r--evaluation-env-mode-line ess--local-mode-line-process-indicator) (message (format "Evaluation in %s disabled" (propertize cur-env 'face font-lock-function-name-face)))) (setq ess-r-evaluation-env env) (add-to-list 'ess--local-mode-line-process-indicator 'ess-r--evaluation-env-mode-line t) (message (format "Evaluating in %s" (propertize env 'face font-lock-function-name-face)))) (force-mode-line-update))) (defvar-local ess-r--evaluation-env-mode-line '(:eval (let ((env (ess-r-get-evaluation-env))) (if env (format " %s" (propertize (if (equal env (ess-r-package-name)) "pkg" env) 'face 'mode-line-emphasis)) "")))) (put 'ess-r--evaluation-env-mode-line 'risky-local-variable t) (defvar ess-r-namespaced-load-verbose t "Whether to display information on namespaced loading. When t, loading a file into a namespaced will output information about which objects are exported and which stay hidden in the namespace.") (defvar ess-r-namespaced-load-only-existing t "Whether to load only objects already existing in a namespace.") (ess-defmethod R ess-load-file (file) (cond ;; Namespaced evaluation ((ess-r-get-evaluation-env) (ess-r-load-file-namespaced file)) ;; Evaluation into current env via .ess.source() (t (let ((command (ess-build-load-command file nil t))) (ess-send-string (ess-get-process) command))))) (defun ess-r-load-file-namespaced (&optional file) "Load FILE into a package namespace. This prompts for a package when no package is currently selected (see `ess-r-set-evaluation-env')." (interactive) (ess-force-buffer-current "R process to use: ") (let* ((pkg-name (ess-r-get-evaluation-env)) (command (ess-build-load-command file nil t pkg-name))) (ess-send-string (ess-get-process) command))) (ess-defmethod R ess-send-region (proc start end visibly message type) (cond ;; Namespaced evaluation ((ess-r-get-evaluation-env) (ess-r-send-region-namespaced proc start end visibly message)) ;; Evaluation into current env (t (ess-send-string proc (buffer-substring start end) visibly message type)))) (defun ess-r-send-region-namespaced (proc beg end &optional visibly message) "Ask for for the package and devSource region into it." (let* ((pkg-name (or (ess-r-get-evaluation-env) (ess-r-set-evaluation-env)))) (message (ess-r-build-eval-message (or message "Eval region")))) (ess-send-string proc (buffer-substring start end) visibly message)) ;;;*;;; Help (defun ess-r-namespaced-object-p (object) (string-match "^[[:alnum:].]+::" object)) (defun ess-r-build-help-command--qualified (object) (when (ess-r-namespaced-object-p object) (let* ((pkg-name (substring object (match-beginning 0) (- (match-end 0) 2))) (object (concat "'" (substring object (match-end 0)) "'")) (pkg (ess-r-arg "package" pkg-name t))) (concat ".ess.help(" object pkg ")\n")))) (defun ess-r-build-help-command--get-package-dir (object dont-ask) ;; Ugly hack to avoid tcl/tk dialogues (let ((pkgs (ess-get-words-from-vector (format "as.character(help('%s'))\n" object)))) (when (> (length pkgs) 1) (if dont-ask (car pkgs) (ess-completing-read "Choose location" pkgs nil t))))) (defun ess-r-build-help-command--unqualified (object dont-ask) (if (eq ess-help-type 'index) ;; we are in index page, qualify with namespace (ess-r-build-help-command--qualified (format "%s::%s" ess-help-object object)) (let ((pkg-dir (ess-r-build-help-command--get-package-dir object dont-ask)) (command (format inferior-ess-r-help-command object))) (if pkg-dir ;; Invoking `print.help_files_with_topic' (format "do.call(structure, c('%s', attributes(%s)))\n" pkg-dir command) command)))) (defun ess-r-build-help-command (object &optional dont-ask) (or (ess-r-build-help-command--qualified object) (ess-r-build-help-command--unqualified object dont-ask))) (defconst inferior-ess-r--input-help (format "^ *help *(%s)" ess-help-arg-regexp)) (defconst inferior-ess-r--input-?-help-regexp "^ *\\(?:\\(?1:[a-zA-Z ]*?\\?\\{1,2\\}\\) *\\(?2:.+\\)\\)") (defconst inferior-ess-r--page-regexp (format "^ *page *(%s)" ess-help-arg-regexp)) (defvar ess-help-r--last-help-type nil "Variable holding the last known help type. If it changes, we flush the cache.") (defun ess-help-r--check-last-help-type () (let ((help-type (ess-string-command "getOption('help_type')\n"))) (when (not (string= help-type ess-help-r--last-help-type)) (let ((help-buffers (ess-help-get-local-help-buffers))) (mapc #'kill-buffer help-buffers)) (setq ess-help-r--last-help-type help-type)))) (defun ess-help-r--process-help-input (proc string) (let ((help-match (and (string-match inferior-ess-r--input-help string) (match-string 2 string))) (help-?-match (and (string-match inferior-ess-r--input-?-help-regexp string) string)) (page-match (and (string-match inferior-ess-r--page-regexp string) (match-string 2 string)))) (when (or help-match help-?-match page-match) (ess-help-r--check-last-help-type) (cond (help-match (ess-display-help-on-object help-match) (process-send-string proc "\n")) (help-?-match (ess-help-r--display-help-? proc string help-?-match) (process-send-string proc "\n")) (page-match (switch-to-buffer-other-window (ess-command (concat page-match "\n") (get-buffer-create (concat page-match ".rt")))) (R-transcript-mode) (process-send-string proc "\n"))) t))) (defun ess-help-r--display-help-? (proc string help-?-match) (cond ((string-match "\\?\\?\\(.+\\)" help-?-match) (ess--display-indexed-help-page (concat help-?-match "\n") "^\\([^ \t\n]+::[^ \t\n]+\\)[ \t\n]+" (format "*ess-apropos[%s](%s)*" ess-current-process-name (match-string 1 help-?-match)) 'appropos)) ((string-match "^ *\\? *\\([^ \t]+\\)$" help-?-match) (ess-display-help-on-object (match-string 1 help-?-match))) ;; Anything else we send to process almost unchanged (t (let ((help-?-match (and (string-match inferior-ess-r--input-?-help-regexp string) (format "%s%s" (match-string 1 string) (ess-help-r--sanitize-topic (match-string 2 string)))))) (ess-display-help-on-object help-?-match "%s\n"))))) (defun ess-help-r--sanitize-topic (string) ;; Enclose help topics into `` to avoid ?while ?if etc hangs (if (string-match "\\([^:]*:+\\)\\(.*\\)$" string) ; treat foo::bar corectly (format "%s`%s`" (match-string 1 string) (match-string 2 string)) (format "`%s`" string))) ;;;*;;; Utils for inferior R process (defun inferior-ess-r-input-sender (proc string) (save-current-buffer (or (ess-help-r--process-help-input proc string) (inferior-ess-input-sender proc string)))) (defun inferior-ess-r-load-ESSR () "Load/INSTALL/Update ESSR." (let* ((pkg-dir (expand-file-name "ESSR" ess-etc-directory)) (src-dir (expand-file-name "R" pkg-dir))) (if (not (or (and (boundp 'ess-remote) ess-remote) (file-remote-p (ess-get-process-variable 'default-directory)))) (inferior-ess-r-load-ESSR--local pkg-dir src-dir) (inferior-ess-r-load-ESSR--remote pkg-dir src-dir)))) (defun inferior-ess-r-load-ESSR--local (pkg-dir src-dir) (let ((cmd (format "local({ source('%s/.load.R', local=TRUE) #define load.ESSR load.ESSR('%s') })\n" src-dir src-dir))) (ess-write-to-dribble-buffer (format "load-ESSR cmd:\n%s\n" cmd)) (with-current-buffer (ess-command cmd) (let ((msg (buffer-string))) (when (> (length msg) 1) (message (format "load ESSR: %s" msg))))))) (defun inferior-ess-r-load-ESSR--remote (pkg-dir src-dir) (let* ((verfile (expand-file-name "VERSION" pkg-dir)) (loadremote (expand-file-name "LOADREMOTE" pkg-dir)) (version (if (file-exists-p verfile) (with-temp-buffer (insert-file-contents verfile) (buffer-string)) (error "Cannot find ESSR source code"))) (r-load-code (with-temp-buffer (insert-file-contents loadremote) (buffer-string)))) (ess-write-to-dribble-buffer (format "version file: %s\nloadremote file: %s\n" verfile loadremote)) (unless (ess-boolean-command (format r-load-code version) nil 0.1) (let ((errmsg (with-current-buffer " *ess-command-output*" (buffer-string))) (files (directory-files src-dir t "\\.R$"))) (ess-write-to-dribble-buffer (format "error loading ESSR.rda: \n%s\n" errmsg)) ;; should not happen, unless extrem conditions (ancient R or failed download)) (message "Failed to download ESSR.rda (see *ESS* buffer). Injecting ESSR code from local machine") (ess-command (format ".ess.ESSRversion <- '%s'\n" version)) ; cannot do this at R level (mapc #'ess--inject-code-from-file files))))) (ess-defmethod R ess-quit (&optional no-save) (let (cmd (sprocess (ess-get-process ess-current-process-name))) (when (not sprocess) (error "No ESS process running")) (ess-cleanup) (setq cmd (format "base::q('%s')\n" (if no-save "no" "default"))) (goto-char (marker-position (process-mark sprocess))) (process-send-string sprocess cmd))) (defcustom inferior-ess-r-reload-hook nil "Hook run when reloading the R inferior buffer." :type 'hook :group 'ess-R) (ess-defmethod R inferior-ess-reload (&optional start-args) (R start-args) (run-hooks 'inferior-ess-r-reload-hook)) (defun inferior-ess-r-force (&optional prompt force no-autostart ask-if-1) (setq ess-dialect "R") (ess-force-buffer-current prompt force no-autostart ask-if-1)) ;;*;; Editing Tools ;;;*;;; Indentation Engine ;; Written by Lionel Henry in mid 2015 (defun ess-r-indent-line () "Indent current line as ESS R code. Return the amount the indentation changed by." (let ((indent (ess-calculate-indent nil)) beg shift-amt (case-fold-search nil) (pos (- (point-max) (point)))) (beginning-of-line) (setq beg (point)) (skip-chars-forward " \t") (setq shift-amt (- indent (current-column))) (if (zerop shift-amt) (if (> (- (point-max) pos) (point)) (goto-char (- (point-max) pos))) (delete-region beg (point)) (indent-to indent) ;; If initial point was within line's indentation, ;; position after the indentation. ;; Else stay at same point in text. (when (> (- (point-max) pos) (point)) (goto-char (- (point-max) pos)))) shift-amt)) (defun ess-r-indent-exp () (save-excursion (when current-prefix-arg (ess-climb-to-top-level)) (let* ((bounds (ess-continuations-bounds)) (end (cadr bounds)) (beg (if current-prefix-arg (car bounds) (forward-line) (point)))) (indent-region beg end)))) (defun ess-indent-call (&optional start) (save-excursion (when (ess-escape-calls) (setq start (or start (point))) (skip-chars-forward "^[(") (forward-char) (ess-up-list) (indent-region start (point))))) (defun ess-offset (offset) (setq offset (eval (intern (concat "ess-offset-" (symbol-name offset))))) (when (and (not (eq offset nil)) (listp offset) (or (numberp (cadr offset)) (eq (cadr offset) t) (error "Malformed offset"))) (setq offset (cadr offset))) (cond ((numberp offset) offset) ((null offset) 0) (t ess-indent-level))) (defun ess-offset-type (offset) (setq offset (eval (intern (concat "ess-offset-" (symbol-name offset))))) (if (listp offset) (car offset) offset)) (defun ess-overridden-blocks () (append (when (memq 'fun-decl ess-align-blocks) (list (car ess-prefixed-block-patterns))) (when (memq 'control-flow ess-align-blocks) (append (cdr ess-prefixed-block-patterns) '("}?[ \t]*else"))))) (defun ess-calculate-indent (&optional parse-start) "Return appropriate indentation for current line as ESS code. In usual case returns an integer: the column to indent to. Returns nil if line starts inside a string, t if in a comment." (save-excursion (beginning-of-line) (let* ((indent-point (point)) (state (syntax-ppss)) (containing-sexp (cadr state)) (prev-containing-sexp (car (last (butlast (nth 9 state)))))) (ess-back-to-indentation) (cond ;; Strings ((ess-within-string-p state) (current-indentation)) ;; Comments ((ess-calculate-indent--comments)) ;; Indentation of commas ((looking-at ",") (ess-calculate-indent--comma)) ;; Arguments: Closing ((ess-call-closing-p) (ess-calculate-indent--call-closing-delim)) ;; Block: Contents (easy cases) ((ess-calculate-indent--block-relatively)) ;; Block: Prefixed block ((ess-calculate-indent--prefixed-block-curly)) ;; Continuations ((ess-calculate-indent--continued)) ;; Block: Overridden contents ((ess-calculate-indent--aligned-block)) ;; Block: Opening ((ess-block-opening-p) (ess-calculate-indent--block-opening)) ;; Bare line ((and (null containing-sexp) (not (ess-unbraced-block-p))) 0) ;; Block: Closing ((ess-block-closing-p) (ess-calculate-indent--block 0)) ;; Block: Contents ((ess-block-p) (ess-calculate-indent--block)) ;; Arguments: Nested calls override ((ess-calculate-indent--nested-calls)) ;; Arguments: Contents (t (ess-calculate-indent--args)))))) (defun ess-calculate-indent--comments () (when ess-indent-with-fancy-comments (cond ;; ### or #! ((or (looking-at "###") (and (looking-at "#!") (= 1 (line-number-at-pos)))) 0) ;; Single # comment ((looking-at "#[^#']") comment-column)))) (defun ess-calculate-indent--comma () (when (ess-within-call-p) (let ((indent (save-excursion (ess-calculate-indent--args))) (unindent (progn (skip-chars-forward " \t") ;; return number of skiped chars (skip-chars-forward ", \t")))) (- indent unindent)))) (defun ess-calculate-indent--call-closing-delim () (cond ((save-excursion (ess-skip-blanks-backward t) (eq (char-before) ?,)) (ess-calculate-indent--args nil)) ((save-excursion (and (ess-ahead-operator-p) (or (ess-ahead-definition-op-p) (not ess-align-continuations-in-calls)))) (ess-calculate-indent--continued)) (t (ess-calculate-indent--args 0)))) (defun ess-calculate-indent--block-opening () (cond ;; Block is an argument in a function call ((when containing-sexp (ess-at-containing-sexp (ess-behind-call-opening-p "[[(]"))) (ess-calculate-indent--block 0)) ;; Top-level block ((null containing-sexp) 0) ;; Block is embedded in another block ((ess-at-containing-sexp (equal (char-after) ?\{) (+ (current-indentation) (ess-offset 'block)))))) (defun ess-calculate-indent--aligned-block () ;; Check for `else' opening (if (and (memq 'control-flow ess-align-blocks) (looking-at "else\\b") (ess-climb-if-else)) (progn (when (looking-at "else\\b") (ess-skip-curly-backward)) (current-column)) ;; Check for braced and unbraced blocks (ess-save-excursion-when-nil (let ((offset (if (looking-at "[{})]") 0 (ess-offset 'block)))) (when (and (cond ;; Unbraced blocks ((ess-climb-block-prefix)) ;; Braced blocks (containing-sexp (when (ess-at-containing-sexp (looking-at "{")) (ess-escape-prefixed-block)))) (some 'looking-at (ess-overridden-blocks))) (+ (current-column) offset)))))) (defun ess-calculate-indent--block-relatively () (ess-save-excursion-when-nil (let ((offset (if (looking-at "[})]") 0 (ess-offset 'block))) (start-line (line-number-at-pos))) (cond ;; Braceless block continuations: only when not in a call ((ess-save-excursion-when-nil (and (not (looking-at "{")) (ess-goto-char (ess-unbraced-block-p)) (not (looking-at "function\\b")) (or (null containing-sexp) (ess-at-containing-sexp (not (looking-at "(")))))) (ess-maybe-climb-broken-else 'same-line) (ess-skip-curly-backward) (+ (current-column) (ess-offset 'block))) ;; Don't indent relatively other continuations ((ess-ahead-continuation-p) nil) ;; If a block already contains an indented line, we can indent ;; relatively from that first line ((ess-save-excursion-when-nil (and (not (looking-at "}")) containing-sexp (goto-char containing-sexp) (looking-at "{") (progn (forward-line) (ess-back-to-indentation) (/= (line-number-at-pos) start-line)) (not (looking-at "[ \t]*\\(#\\|$\\)")) (save-excursion (or (ess-jump-expression) (ess-jump-continuations)) (< (line-number-at-pos) start-line)))) (current-column)) ;; If a block is not part of a call, we can indent relatively ;; from the opening {. First check that enclosing { is first ;; thing on line ((and containing-sexp (not (ess-unbraced-block-p)) (goto-char containing-sexp) (ess-block-opening-p) (equal (point) (save-excursion (ess-back-to-indentation) (point)))) (+ (current-column) offset)))))) (defun ess-arg-block-p () (unless (or (null containing-sexp) ;; Unbraced blocks in a { block are not arg blocks (and (ess-unbraced-block-p) (ess-at-containing-sexp (looking-at "{")))) (cond ;; Unbraced body ((ess-at-indent-point (and (ess-unbraced-block-p) (goto-char containing-sexp) (ess-behind-call-opening-p "[[(]"))) 'body) ;; Indentation of opening brace as argument ((ess-at-containing-sexp (ess-behind-call-opening-p "[[(]")) 'opening) ;; Indentation of body or closing brace as argument ((ess-at-containing-sexp (and (or (looking-at "{") (ess-behind-block-paren-p)) prev-containing-sexp (goto-char prev-containing-sexp) (ess-behind-call-opening-p "[[(]"))) 'body)))) (defun ess-calculate-indent--block (&optional offset) (let ((arg-block (ess-arg-block-p))) (cond (arg-block (ess-calculate-indent--arg-block offset arg-block)) (t ;; Block is not part of an arguments list. Climb over any ;; block opening (function declaration, etc) to indent from ;; starting indentation. (or (ess-climb-block-prefix) (and (goto-char containing-sexp) (ess-climb-block-prefix))) (+ (current-indentation) (or offset (ess-offset 'block))))))) (defun ess-calculate-indent--arg-block (offset arg-block) (let* ((block-type (cond ((or (ess-at-containing-sexp (and (eq arg-block 'body) (ess-climb-block-prefix "function"))) (ess-at-indent-point (and (eq arg-block 'opening) (ess-backward-sexp 2) (looking-at "function\\b")))) 'fun-decl) ((ess-at-indent-point (ess-unbraced-block-p)) 'unbraced) ((ess-at-containing-sexp (not (ess-ahead-attached-name-p))) 'bare-block) (t))) (call-pos (if (and (not (eq block-type 'unbraced)) (not (eq arg-block 'opening))) (goto-char prev-containing-sexp) (prog1 containing-sexp (goto-char indent-point))))) (ess-calculate-indent--args offset (ess-offset-type 'block) call-pos indent-point block-type))) ;; This function is currently the speed bottleneck of the indentation ;; engine. This is due to the need to call (ess-maximum-args-indent) ;; to check if some previous arguments have been pushed off from their ;; natural indentation: we need to check the whole call. This is very ;; inefficient especially when indenting a region containing a large ;; function call (e.g. some dplyr's data cleaning code). Should be ;; solved by implementing a cache as in (syntax-ppss), though it's ;; probably not worth the work. (defun ess-calculate-indent--args (&optional offset type call-pos to block) (let* ((call-pos (or call-pos containing-sexp)) (max-col (prog1 (unless (eq type 'prev-line) (ess-maximum-args-indent call-pos to)) (goto-char call-pos))) (override (and ess-align-arguments-in-calls (save-excursion (ess-climb-object) (some 'looking-at ess-align-arguments-in-calls)))) (type-sym (cond (block 'block) ((looking-at "[[:blank:]]*[([][[:blank:]]*\\($\\|#\\)") 'arguments-newline) (t 'arguments))) (type (or type (and override 'open-delim) (ess-offset-type type-sym))) (offset (or offset (and (not block) (eq type 'open-delim) 0) (ess-offset type-sym))) (indent (cond ;; Indent from opening delimiter ((eq type 'open-delim) (ess-calculate-indent--args-open-delim)) ;; Indent from attached name ((eq type 'prev-call) (ess-calculate-indent--args-prev-call)) ;; Indent from previous line indentation ((eq type 'prev-line) (ess-calculate-indent--args-prev-line)) (t (error "Malformed offset"))))) (if max-col (ess-adjust-argument-indent indent offset max-col block) (+ indent offset)))) (defun ess-calculate-indent--args-open-delim () (forward-char) (current-column)) (defun ess-calculate-indent--args-prev-call () ;; Handle brackets chains such as ][ (cf data.table) (ess-climb-chained-delims) ;; Handle call chains (if ess-indent-from-chain-start (while (and (ess-backward-sexp) (when (looking-back "[[(][ \t,]*" (line-beginning-position)) (goto-char (match-beginning 0))))) (ess-backward-sexp)) (when ess-indent-from-lhs (ess-climb-lhs)) (if (and nil (eq block 'fun-decl) (not (eq arg-block 'opening)) (not (eq (ess-offset-type type-sym) 'open-delim))) (+ (ess-offset 'block) (current-column)) (current-column))) (defun ess-calculate-indent--args-prev-line () (ess-at-indent-point (cond ;; Closing delimiters are actually not indented at ;; prev-line, but at opening-line ((looking-at "[]})]") (ess-up-list -1) (when (looking-at "{") (ess-climb-block-prefix)) (current-indentation)) ;; Function blocks need special treatment ((and (eq type 'prev-line) (eq block 'fun-decl)) (goto-char containing-sexp) (ess-climb-block-prefix) (current-indentation)) ;; Regular case (t ;; Find next non-empty line to indent from (while (and (= (forward-line -1) 0) (looking-at "[ \t]*\\($\\|#\\)"))) (goto-char (ess-code-end-position)) ;; Climb relevant structures (unless (ess-climb-block-prefix) (when (eq (char-before) ?,) (forward-char -1)) (ess-climb-expression) (ess-climb-continuations)) ;; The following ensures that only the first line ;; counts. Otherwise consecutive statements would get ;; increasingly more indented. (when (and block containing-sexp (not (eq block 'unbraced)) (save-excursion (/= (line-number-at-pos) (progn (goto-char containing-sexp) (line-number-at-pos))))) (setq offset 0)) (current-indentation))))) ;; Indentation of arguments needs to keep track of how previous ;; arguments are indented. If one of those has a smaller indentation, ;; we push off the current line from its natural indentation. For ;; block arguments, we still need to push off this column so we ignore ;; it. (defun ess-adjust-argument-indent (base offset max-col push) (if push (+ (min base max-col) offset) (min (+ base offset) max-col))) ;; When previous arguments are shifted to the left (can happen in ;; several situations) compared to their natural indentation, the ;; following lines should not get indented past them. The following ;; function checks the minimum indentation for all arguments of the ;; current function call or bracket indexing. (defun ess-maximum-args-indent (&optional from to) (let* ((to (or to (point))) (to-line (line-number-at-pos to)) (from-line (progn (goto-char (1+ (or from containing-sexp))) (line-number-at-pos))) (prev-pos (1- (point))) max-col) (while (< (line-number-at-pos) to-line) (forward-line) (ess-back-to-indentation) ;; Ignore the line with the function call, the line to be ;; indented, and empty lines. (unless (or (>= (line-number-at-pos) to-line) (looking-at "[ \t]*\\($\\|#\\)")) (let ((indent (cond ;; First line: minimum indent is right after ( ((= (line-number-at-pos) from-line) (save-excursion (goto-char (1+ containing-sexp)) (current-column))) ;; Handle lines starting with a comma ((save-excursion (looking-at ",")) (+ (current-indentation) 2)) (t (current-indentation))))) (setq max-col (min indent (or max-col indent)))))) max-col)) ;; Move to leftmost side of a call (either the first letter of its ;; name or its closing delim) (defun ess-move-to-leftmost-side () (when (or (looking-at "[({]") (ess-behind-call-p)) (ess-save-excursion-when-nil (let ((start-col (current-column))) (skip-chars-forward "^{[(") (forward-char) (ess-up-list) (forward-char -1) (< (current-column) start-col))))) (defun ess-max-col () (let ((max-col (point))) (save-excursion (while (< (point) indent-point) (unless (and ess-indent-with-fancy-comments (looking-at "### ")) (setq max-col (min max-col (current-column)))) (forward-line) (ess-back-to-indentation))) max-col)) (defun ess-calculate-indent--prefixed-block-curly () (when (looking-at "{") (ess-save-excursion-when-nil (let ((block-type (ess-climb-block-prefix))) (cond ((ess-save-excursion-when-nil (and (memq 'fun-decl-opening ess-indent-from-lhs) (string= block-type "function") (ess-climb-operator) (ess-behind-assignment-op-p) (ess-climb-expression))) (current-column)) ((= (save-excursion (back-to-indentation) (point)) (point)) (ess-calculate-indent--continued))))))) (defun ess-calculate-indent--continued () "If a continuation line, return an indent of this line, otherwise nil." (save-excursion (let* ((start-line (line-number-at-pos)) (prev-pos 0) (cascade (eq (ess-offset-type 'continued) 'cascade)) (climbed (ess-climb-continuations cascade)) max-col) (when climbed (cond ;; Overridden calls ((and ess-align-continuations-in-calls (not (eq climbed 'def-op)) containing-sexp (save-excursion (goto-char containing-sexp) (looking-at "[[(]"))) (setq max-col (ess-max-col)) (ess-move-to-leftmost-side) (+ (min (current-column) max-col) (if (eq climbed 'def-op) (ess-offset 'continued) 0))) ;; Regular case (t (let ((first-indent (or (eq climbed 'def-op) (save-excursion (when (ess-ahead-closing-p) (ess-climb-expression)) (not (ess-climb-continuations cascade)))))) ;; Record all indentation levels between indent-point and ;; the line we climbed. Some lines may have been pushed off ;; their natural indentation. These become the new ;; reference. (setq max-col (ess-max-col)) ;; Indenting continuations from the front of closing ;; delimiters looks better (when (ess-ahead-closing-p) (backward-char)) (+ (min (current-column) max-col) (cond ((eq (ess-offset-type 'continued) 'cascade) (ess-offset 'continued)) (first-indent (ess-offset 'continued)) (t 0)))))))))) (defun ess-calculate-indent--nested-calls () (when ess-align-nested-calls (let ((calls (mapconcat 'identity ess-align-nested-calls "\\|")) match) (save-excursion (and containing-sexp (looking-at (concat "\\(" calls "\\)(")) (setq match (match-string 1)) (goto-char containing-sexp) (looking-at "(") (ess-backward-sexp) (looking-at (concat match "(")) (current-column)))))) ;;;*;;; Call filling engine ;; Unroll arguments to a single line until closing marker is found. (defun ess-fill--unroll-lines (bounds &optional jump-cont) (let* ((last-pos (point-min)) (containing-sexp (ess-containing-sexp-position)) prefix-break) (goto-char (car bounds)) (goto-char (ess-code-end-position)) (while (and (/= (point) last-pos) (< (line-end-position) (cadr bounds)) (not prefix-break)) (setq last-pos (point)) ;; Check whether we ended up in a sub call. In this case, jump ;; over it, otherwise, join lines. (let ((contained-sexp (ess-containing-sexp-position))) (cond ((and contained-sexp containing-sexp (not (= containing-sexp contained-sexp))) (goto-char (1+ contained-sexp)) (ess-up-list)) ;; Jump over continued statements ((and jump-cont (ess-ahead-operator-p 'strict)) (ess-climb-token) (ess-jump-continuations)) ;; Jump over comments ((looking-at "#") (forward-line) (ess-indent-line)) (t (join-line 1)))) (goto-char (ess-code-end-position))) (goto-char (car bounds)))) (defvar ess-fill--orig-pos nil "Original position of cursor.") (defvar ess-fill--orig-state nil "Backup of original code to cycle back to original state.") (defvar ess-fill--second-state nil "Backup of code produce by very first cycling. If this is equal to orig-state, no need to cycle back to original state.") (defvar ess-fill--style-level nil "Filling style used in last cycle.") (defun ess-fill--substring (bounds) (buffer-substring (car bounds) (marker-position (cadr bounds)))) ;; Detect repeated commands (defun ess-fill-style (type bounds) (let ((max-level ;; This part will be simpler once we have the style alist (cond ((eq type 'calls) ;; No third style either when ess-offset-arguments is ;; set to 'open-delim, or when ess-fill-calls-newlines ;; is nil and no numeric prefix is given (if (and (not (eq (ess-offset-type 'arguments) 'open-delim)) (or ess-fill-calls-newlines (numberp current-prefix-arg))) 3 2)) ((eq type 'continuations) 2)))) (if (not (memq last-command '(fill-paragraph-or-region fill-paragraph))) (progn ;; Record original state on first cycling (setq ess-fill--orig-state (ess-fill--substring bounds)) (setq ess-fill--orig-pos (point)) (setq ess-fill--second-state nil) (setq ess-fill--style-level 1)) ;; Also record state on second cycling (when (and (= ess-fill--style-level 1) (null ess-fill--second-state)) (setq ess-fill--second-state (ess-fill--substring bounds))) (cond ((>= ess-fill--style-level max-level) (let ((same-last-and-orig (string= (ess-fill--substring bounds) ess-fill--orig-state)) (same-2nd-and-orig (string= ess-fill--orig-state ess-fill--second-state))) ;; Avoid cycling to the same state twice (cond ((and same-last-and-orig same-2nd-and-orig) (setq ess-fill--style-level 2)) ((or same-last-and-orig same-2nd-and-orig) (setq ess-fill--style-level 1)) (t (setq ess-fill--style-level 0))))) (ess-fill--style-level (setq ess-fill--style-level (1+ ess-fill--style-level)))))) ess-fill--style-level) (defun ess-fill-args (&optional style) (let ((start-pos (point-min)) (orig-col (current-column)) (orig-line (line-number-at-pos)) (bounds (ess-args-bounds 'marker)) ;; Set undo boundaries manually (undo-inhibit-record-point t) last-pos last-newline prefix-break infinite) (when (not bounds) (error "Could not find function bounds")) (setq style (or style (ess-fill-style 'calls bounds))) (if (= style 0) (progn (delete-region (car bounds) (marker-position (cadr bounds))) (insert ess-fill--orig-state) ;; Restore the point manually. (save-excursion) wouldn't ;; work here because we delete the text rather than just ;; modifying it. (goto-char ess-fill--orig-pos) (message "Back to original formatting")) (when ess-blink-refilling (ess-blink-region (nth 2 bounds) (1+ (marker-position (cadr bounds))))) (undo-boundary) (save-excursion (ess-fill--unroll-lines bounds t) (cond ;; Some styles start with first argument on a newline ((and (memq style '(2 4)) ess-fill-calls-newlines (not (looking-at "[ \t]*#"))) (newline-and-indent)) ;; Third level, start a newline after N arguments ((and (= style 3) (not (looking-at "[ \t]*#"))) (let ((i (if (numberp current-prefix-arg) current-prefix-arg 1))) (while (and (> i 0) (ess-jump-arg) (ess-jump-char ",")) (setq i (1- i)))) (newline-and-indent))) (ess-fill-args--roll-lines) ;; Reindent surrounding context (ess-indent-call (car bounds))) ;; Signal marker for garbage collection (set-marker (cadr bounds) nil) (undo-boundary)))) (defun ess-fill-args--roll-lines () (while (and (not (looking-at "[])]")) (/= (point) (or last-pos 1)) (not infinite)) (setq prefix-break nil) ;; Record start-pos as future breaking point to avoid breaking ;; at `=' sign (while (looking-at "[ \t]*[\n#]") (forward-line) (ess-back-to-indentation)) (setq start-pos (point)) (while (and (< (current-column) fill-column) (not (looking-at "[])]")) (/= (point) (or last-pos 1)) ;; Break after one pass if prefix is active (not prefix-break)) (when (memq style '(2 3)) (setq prefix-break t)) (ess-jump-token ",") (setq last-pos (point)) ;; Jump expression and any continuations. Reindent all lines ;; that were jumped over (let ((cur-line (line-number-at-pos)) end-line) (cond ((ess-jump-arg) (setq last-newline nil)) ((ess-token-after= ",") (setq last-newline nil) (setq last-pos (1- (point))))) (save-excursion (when (< cur-line (line-number-at-pos)) (setq end-line (line-number-at-pos)) (ess-goto-line (1+ cur-line)) (while (and (<= (line-number-at-pos) end-line) (/= (point) (point-max))) (ess-indent-line) (forward-line)))))) (when (or (>= (current-column) fill-column) prefix-break ;; Ensures closing delim on a newline (and (= style 4) (looking-at "[ \t]*[])]") (setq last-pos (point)))) (if (and last-pos (/= last-pos start-pos)) (goto-char last-pos) (ess-jump-char ",")) (cond ((looking-at "[ \t]*[#\n]") (forward-line) (ess-indent-line) (setq last-newline nil)) ;; With levels 2 and 3, closing delim goes on a newline ((looking-at "[ \t]*[])]") (when (and (memq style '(2 3 4)) ess-fill-calls-newlines (not last-newline)) (newline-and-indent) ;; Prevent indenting infinitely (setq last-newline t))) ((not last-newline) (newline-and-indent) (setq last-newline t)) (t (setq infinite t)))))) (defun ess-fill-continuations (&optional style) (let ((bounds (ess-continuations-bounds 'marker)) (undo-inhibit-record-point t) (last-pos (point-min)) last-newline infinite) (when (not bounds) (error "Could not find statements bounds")) (setq style (or style (ess-fill-style 'continuations bounds))) (if (= style 0) (progn (delete-region (car bounds) (marker-position (cadr bounds))) (insert ess-fill--orig-state) (goto-char ess-fill--orig-pos) (message "Back to original formatting")) (when ess-blink-refilling (ess-blink-region (car bounds) (marker-position (cadr bounds)))) (undo-boundary) (save-excursion (ess-fill--unroll-lines bounds) (while (and (< (point) (cadr bounds)) (/= (point) (or last-pos 1)) (not infinite)) (setq last-pos (point)) (when (and (ess-jump-expression) (indent-according-to-mode) (not (> (current-column) fill-column))) (setq last-newline nil)) (ess-jump-operator) (if (or (and (> (current-column) fill-column) (goto-char last-pos)) (= style 2)) (progn (ess-jump-operator) (unless (= (point) (cadr bounds)) (when last-newline (setq infinite t)) (newline-and-indent) (setq last-newline t))) (setq last-newline nil))) (ess-indent-call (car bounds))) (set-marker (cadr bounds) nil) (undo-boundary)))) (provide 'ess-r-mode) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-r-mode.el ends here ess-17.11/lisp/ess-r-package.el0000444005071500004540000004403213202324174013155 00000000000000;;; ess-r-package.el --- Package development mode for R. ;; Copyright (C) 2011-2015 Lionel Henry, Vitalie Spinu, A.J. Rossini, Richard ;; M. Heiberger, Martin Maechler, Kurt Hornik, Rodney Sparapani, and ;; Stephen Eglen. ;; Author: Lionel Henry, Vitalie Spinu ;; Maintainer: ESS-core ;; Keywords: languages, tools ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; see apropriate documentation section of ESS user manual ;;; Code: (require 'ess-utils) (defcustom ess-r-package-auto-set-evaluation-env t "If non-nil, evaluation env is set to package env automatically. See also `ess-r-set-evaluation-env' and `ess-r-evaluation-env'." :group 'ess-r-package :type 'boolean) (defvar-local ess-r-package--project-cache nil "Current package info cache. Cons cell of two strings. CAR is the package name active in the current buffer. CDR is the path to its source directory.") (defvar ess-r-package-library-path nil "Default path to find packages.") (defvar ess-r-package-root-file "DESCRIPTION" "Presence of this file indicates the project's root.") (defvar ess-r-package-dirs '(("R" . 1) ("r" . 1) ("tests" . 1) ("testthat" . 2) ("inst" . 1) ("include" . 2) ("src" . 1)) "Alist of directories names and their depth in R package hierarchy. This list is used to figure out whether the current file belongs to an R package. If the file specified in `ess-r-package-root-file' \(DESCRIPTION by default) is found at the presumed root directory of the package, the current directory is considered to be part of a R package.") (defvar ess-r-package-source-roots '("R" "src" "tests" "inst/include") "List of sub-directories within R package where source files are located. All children of these directories are also considered source containing directories. Use `ess-r-package-source-dirs' to get all source dirs recursively within the current package.") ;;;*;;; Package UI (defun ess-r-package-project (&optional dir) "Return the current package as an Emacs project instance. A project instance is a cons cell of the project name as symbol and the project path as string. If DIR is provided, the package is searched from that directory instead of `default-directory'." (if (car ess-r-package--project-cache) ess-r-package--project-cache (let* ((pkg-path (ess-r-package--find-package-path (or dir default-directory))) (project (when pkg-path (cons (ess-r-package--find-package-name pkg-path) pkg-path)))) ;; Cache info for better performance on remotes (setq-local ess-r-package--project-cache (or project (list nil))) (when (car project) (cons 'r-package (cdr project)))))) (defun ess-r-package-name (&optional dir) "Return the name of the current package as a string." ;; FIXME Emacs 25.1: Use `when-let' (let ((project (ess-r-package-project dir))) (when project (symbol-name (car ess-r-package--project-cache))))) (defun ess-r-package-get-info () "Deprecated function to get package info. Please use `ess-r-package-project' instead." (let ((project (ess-r-package-project))) (if project (cons (ess-r-package-name) (cdr project)) (list nil)))) (make-obsolete 'ess-r-package-get-info 'ess-r-package-project "17.11") (defun ess-r-package--all-source-dirs (dir) (when (file-exists-p dir) (cl-loop for f in (directory-files-and-attributes dir t "^[^.]") if (cadr f) append (cons (car f) (ess-r-package--all-source-dirs (car f)))))) (defun ess-r-package-source-dirs () "Get paths within current R package with source files. Return nil if not in a package. Search sub-directories listed in `ess-r-package-source-roots' are searched recursively and return all physically present directories." ;; FIXME Emacs 25.1: Use `when-let' (let ((pkg-root (cdr (ess-r-package-project)))) (when pkg-root (let ((files (directory-files-and-attributes pkg-root t "^[^.]"))) (cl-loop for f in files if (and (cadr f) (cl-some (lambda (el) (string-match-p (concat "/" el "$") (car f))) ess-r-package-source-roots)) append (cons (car f) (ess-r-package--all-source-dirs (car f)))))))) (defun ess-r-package-use-dir () "Set process directory to current package directory." (interactive) (let ((dir (cdr (ess-r-package-project)))) (ess-use-dir dir))) (defun ess-r-package-set-package () "Set a package for ESS r-package commands." (interactive) (let* ((pkg-path (read-directory-name "Path: " (or (ess-r-package--find-package-path) ess-r-package-library-path) nil t)) (pkg-name (ess-r-package--find-package-name pkg-path)) (pkg-info (cons pkg-name pkg-path))) (unless (and pkg-name pkg-path (file-exists-p (expand-file-name ess-r-package-root-file pkg-path))) (error "Not a valid package. No '%s' found in `%s'." ess-r-package-root-file pkg-path)) (message (format "%s selected and added to file-local variables" pkg-name)) (save-excursion (add-file-local-variable 'ess-r-package--project-cache pkg-info)) (setq ess-r-package--project-cache pkg-info))) (defun ess-r--select-package-name () (inferior-ess-r-force) (let ((pkgs (ess-get-words-from-vector (format "print(.packages(%s), max = 1e6)\n" (if ess-r-prompt-for-attached-pkgs-only "FALSE" "TRUE")))) (current-pkg (ess-r-package-name))) (let ((env (ess-r-get-evaluation-env))) (when env (setq pkgs (append '("*none*") pkgs)) (when (equal env current-pkg) (setq current-pkg "*none*")))) (ess-completing-read "Package" pkgs nil nil nil nil current-pkg))) (defun ess-r-package-set-namespaced-evaluation () (when ess-r-package-auto-set-evaluation-env (let ((path (cdr (ess-r-package-project)))) ;; Check that we are in a file within R/ (when (and path (let* ((subpath (substring default-directory (1+ (length path)) (length default-directory))) (subpath (substring subpath 0 2))) (string= subpath (file-name-as-directory "R")))) (ess-r-set-evaluation-env (ess-r-package-name)))))) (add-hook 'R-mode-hook 'ess-r-package-set-namespaced-evaluation) (defun ess-r-package-send-process (command &optional msg alt default-alt) (inferior-ess-r-force) (let* ((pkg-info (or (ess-r-package-project) (ess-r-package-set-package))) (name (ess-r-package-name)) (path (concat "'" (cdr pkg-info) "'")) (args (ess-r-command--process-alt-args alt default-alt))) (message msg name) (with-ess-process-buffer nil (setq ess-r-package--project-cache ess-r-package--project-cache)) (ess-eval-linewise (format command (concat path args))))) (defun ess-r-command--process-alt-args (alt &optional default-alt) (let ((args (cond ((stringp alt) alt) (alt (read-string "Arguments: " default-alt)) (t "")))) (if (or (null args) (string= "" args)) args (concat ", " args)))) ;;;*;;; Package Detection (defun ess-r-package--find-package-path (&optional dir) "Get the root of R package that contains current directory. Root is determined by locating `ess-r-package-root-file'." (let* ((path (cond (dir) ((buffer-file-name) (file-name-directory (buffer-file-name))) (t default-directory))) (pkg-path (when path (or ;; First check current directory (and (file-exists-p (expand-file-name ess-r-package-root-file path)) path) ;; Check for known directories in current path (let ((current-dir (file-name-nondirectory (directory-file-name path))) known-pkg-dir known-path presumptive-path) (while (and path (not presumptive-path)) (setq current-dir (file-name-nondirectory (directory-file-name path))) (if (and (setq known-pkg-dir (assoc current-dir ess-r-package-dirs)) (setq known-path (ess--parent-dir path (cdr known-pkg-dir))) (file-exists-p (expand-file-name ess-r-package-root-file known-path))) (setq presumptive-path known-path) (setq path (ess--parent-dir path 1)))) presumptive-path))))) (when pkg-path (directory-file-name pkg-path)))) (defun ess-r-package--find-package-name (path) (let ((file (expand-file-name ess-r-package-root-file path)) (case-fold-search t)) (when (file-exists-p file) (with-temp-buffer (insert-file-contents file) (goto-char (point-min)) (when (re-search-forward "package: \\(.*\\)" nil t) (intern (match-string 1))))))) ;;;*;;; Devtools Integration (defun ess-r-devtools-load-package (&optional alt) "Interface for `devtools::load_all()'." (interactive "P") (ess-r-package-send-process "devtools::load_all(%s)\n" "Loading %s" alt "recompile = TRUE")) (defun ess-r-devtools-unload-package () "Interface to `devtools::unload()'." (interactive) (ess-r-package-send-process "devtools::unload(%s)\n" "Unloading %s")) (defun ess-r-devtools-check-package (&optional alt) "Interface for `devtools::check()'." (interactive "P") (ess-r-package-send-process "devtools::check(%s)\n" "Checking %s" alt "vignettes = FALSE")) (defun ess-r-devtools-check-package-buildwin (&optional alt) "Interface for `devtools::buildwin()'." (interactive "P") (ess-r-package-send-process "devtools::build_win(%s)\n" "Checking %s on CRAN's Windows server")) (defun ess-r-devtools-test-package (&optional alt) "Interface for `devtools::test()'. When called with a non-string prefix argument (as with C-u), check that the file name starts with `test-' and ends with `.R'. If that is the case, use the string in-between as default filter argument. Otherwise, use the whole base filename." (interactive "P") (let (file-name) (when (and alt (not (stringp alt)) buffer-file-name (setq file-name (file-name-nondirectory buffer-file-name))) (setq alt (if (string-match "test-\\([[:alnum:]]+\\)\\.[rR]" file-name) (match-string-no-properties 1 file-name) (file-name-base buffer-file-name))) (setq alt (concat "\"" alt "\"")))) (ess-r-package-send-process "devtools::test(%s)\n" "Testing %s" alt)) (defvar ess-r-devtools-revdep-check-cmd "local({ pkg_path <- %s res <- devtools::revdep_check(pkg_path) if (file.exists(file.path(pkg_path, 'revdep'))) { save_path <- file.path(pkg_path, 'revdep') } else { save_path <- file.path(pkg_path, '.metadata', 'revdep') } devtools::revdep_check_save_summary(res, save_path) logs_path <- file.path(save_path, 'logs') if (!dir.exists(logs_path)) { dir.create(logs_path) } devtools::revdep_check_save_logs(res, logs_path) }) ") (defun ess-r-devtools-revdep-check-package (&optional alt) "Interface for `devtools::revdep_check()'. By default, the revdep summary is saved in `pkg_path/revdep' if the directory exists, or `pkg_path/.metadata/revdep' if it doesn't exist. The former path is the default in devtools but will create problem if it isn't escaped in `.Rbuildignore'. On the other hand, `.metadata' is always ignored by the R package builder, which makes it a safe directory to store the revdep checking results." (interactive "P") (ess-r-package-send-process ess-r-devtools-revdep-check-cmd "Checking reverse dependencies of %s" alt)) (defun ess-r-devtools-document-package (&optional alt) "Interface for `devtools::document()'." (interactive "P") (ess-r-package-send-process "devtools::document(%s)\n" "Documenting %s" alt)) (defun ess-r-devtools-install-package (&optional alt) "Interface to `devtools::install()'." (interactive "P") (ess-r-package-send-process "devtools::install(%s)\n" "Installing %s" alt)) (defun ess-r-devtools-install-github (&optional alt repo) "Interface to `devtools::install_github()'. Asks for github repository in the form of user/repo, unless REPO is supplied. Prompts for additional arguments when called with a prefix." (interactive "P") (let ((command "devtools::install_github(%s%s)") (repo (concat "'" (or repo (read-string "User/Repo: ")) "'")) (args (ess-r-command--process-alt-args alt "ref = "))) (ess-eval-linewise (format command repo args)))) (defun ess-r-devtools-create-package (&optional alt) "Interface to `devtools::create()'. Default location is determined by `ess-r-package-library-path'." (interactive "P") (let* ((command "devtools::create(\"%s\")") (default-path (expand-file-name ess-r-package-library-path)) (path (read-directory-name "Path: " default-path))) (ess-eval-linewise (format command path)))) (defun ess-r-devtools-ask (&optional alt) "Asks with completion for a devtools command. When called with prefix, also asks for additional arguments." (interactive "P") (inferior-ess-r-force) (let* ((devtools-funs (ess-get-words-from-vector ".ess_devtools_functions()\n")) (fun (completing-read "Function: " devtools-funs)) (command (format "devtools::%s(%s)\n" fun "%s"))) (ess-r-package-send-process command (format "Running %s" fun) alt))) ;;;*;;; Minor Mode (defcustom ess-r-package-auto-activate t "If non-nil, `ess-r-package-mode' is turned on within R packages." :group 'ess-r-package :type 'boolean) (defcustom ess-r-package-enter-hook nil "Normal hook run on entering `ess-r-package-mode'." :group 'ess-r-package :type 'hook) (defcustom ess-r-package-exit-hook nil "Normal hook run on exiting `ess-r-package-mode'." :group 'ess-r-package :type 'hook) (defcustom ess-r-package-mode-line ;; FIXME Emacs 25.1: Use `when-let' '(:eval (let ((pkg-name (ess-r-package-name))) (when pkg-name (format " [pkg:%s]" pkg-name)))) "Mode line for ESS developer. Set this variable to nil to disable the mode line entirely." :group 'ess-r-package :type 'sexp :risky t) (defvar ess-r-package-mode-map (let ((ess-r-package-mode-map (make-sparse-keymap))) (define-key ess-r-package-mode-map "\C-c\C-w" 'ess-r-package-dev-map) ess-r-package-mode-map)) (define-minor-mode ess-r-package-mode "Minor mode for enabling R package development features. \\{ess-r-package-mode-map}" :init-value nil :keymap ess-r-package-mode-map :lighter ess-r-package-mode-line (cond (ess-r-package-mode (add-hook 'project-find-functions #'ess-r-package-project) (run-hooks 'ess-r-package-enter-hook)) (t (remove-hook 'project-find-functions #'ess-r-package-project) (run-hooks 'ess-r-package-exit-hook)))) (add-hook 'after-change-major-mode-hook 'ess-r-package-auto-activate) (defun ess-r-package-auto-activate () "Activate developer if current file is part of a package." (when (and ess-r-package-auto-activate (not (memq major-mode '(minibuffer-inactive-mode fundamental-mode))) (or (buffer-file-name) default-directory)) ;; FIXME Emacs 25.1: Use `when-let' (let ((pkg-info (ess-r-package-project))) (when pkg-info (ess-r-package-mode 1))))) ;;;*;;; Deprecated variables and functions (defun ess-developer (&optional val) (error "As of ESS 16.04, `ess-developer' is deprecated. Use `ess-r-set-evaluation-env' instead.")) (defalias 'ess-toggle-developer 'ess-developer) (make-obsolete-variable 'ess-developer "Please use `ess-developer-select-package' and `ess-r-set-evaluation-env' instead." "16.04") (make-obsolete-variable 'ess-developer-root-file "Please use `ess-r-package-root-file' instead." "16.04") (make-obsolete-variable 'ess-developer-packages "Please use `ess-r-package-set-package' and `ess-r-set-evaluation-env' instead." "16.04") (make-obsolete-variable 'ess-developer-load-on-add-commands "Please use `ess-r-package-set-package' and `ess-r-set-evaluation-env' instead." "16.04") (make-obsolete-variable 'ess-developer-activate-in-package "Please use `ess-r-package-auto-activate' instead." "16.04") (make-obsolete-variable 'ess-developer-enter-hook "Please use `ess-r-package-enter-hook' instead." "16.04") (make-obsolete-variable 'ess-developer-exit-hook "Please use `ess-r-package-exit-hook' instead." "16.04") (provide 'ess-r-package) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-r-package.el ends here ess-17.11/lisp/ess-r-syntax.el0000444005071500004540000014676513202324174013130 00000000000000;;; ess-r-syntax.el --- Utils to work with R code ;; Copyright (C) 2015 Lionel Henry ;; Author: Lionel Henry ;; Created: 12 Oct 2015 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; API is not yet stable. ;;; Code: (require 'ess-utils) (require 'regexp-opt) (with-no-warnings (require 'cl)) ; instead of cl-lib so we support Emacs 24.2 ;;*;; Utils ;; The three following wrappers return t if successful, nil on error (defun ess-backward-sexp (&optional N) (ess-forward-sexp (- (or N 1)))) (defun ess-forward-sexp (&optional N) (or N (setq N 1)) (condition-case nil (prog1 t (goto-char (or (scan-sexps (point) N) (buffer-end N)))) (error nil))) (defun ess-up-list (&optional N) (condition-case nil (let (forward-sexp-function) (progn (up-list N) t)) (error nil))) (defun ess-forward-char (&optional N) (unless (= (point) (point-max)) (forward-char (or N 1)) t)) (defun ess-backward-char (&optional N) (unless (= (point) (point-min)) (forward-char (- (or N 1))) t)) (defun ess-goto-char (pos) "Go to `pos' if it is non-nil. If `pos' is nil, return nil. Otherwise return `pos' itself." (when pos (goto-char pos))) (defun ess-looking-at (regex &optional newlines) "Like `looking-at' but consumes blanks and comments first." (save-excursion (ess-skip-blanks-forward newlines) (looking-at regex))) (defun ess-back-to-indentation () "Move point to the first non-whitespace character on this line. This non-interactive version of (back-to-indentation) should not be advised" (beginning-of-line 1) (skip-syntax-forward " " (line-end-position)) ;; Move back over chars that have whitespace syntax but have the p flag. (backward-prefix-chars)) (defmacro ess-save-excursion-when-nil (&rest body) (declare (indent 0) (debug (&rest form))) `(let ((orig-point (point))) (cond ((progn ,@body)) (t (prog1 nil (goto-char orig-point)))))) (defmacro ess-while (test &rest body) "Like (while) but return `t' when body gets executed once." (declare (indent 1) (debug (&rest form))) `(let (executed) (while ,test (setq executed t) ,@body) executed)) (defmacro ess-at-indent-point (&rest body) (declare (indent 0) (debug (&rest form))) `(save-excursion (goto-char indent-point) (ess-back-to-indentation) (progn ,@body))) (defmacro ess-at-containing-sexp (&rest body) (declare (indent 0) (debug (&rest form))) '(when (not (bound-and-true-p containing-sexp)) (error "Internal error: containing-sexp is nil or undefined")) `(save-excursion (goto-char containing-sexp) (progn ,@body))) (defmacro ess-any (&rest forms) "Evaluates all arguments and return non-nil if one of the arguments is non-nil. This is useful to trigger side-effects. FORMS follows the same syntax as arguments to `(cond)'." (declare (indent 0) (debug nil)) `(let ((forms (list ,@(mapcar (lambda (form) `(progn ,@form)) forms)))) (some 'identity (mapcar 'eval forms)))) (defun ess-char-syntax (string) (char-to-string (char-syntax (string-to-char string)))) ;;*;; Tokenisation (defun ess-token-type (token) (car (nth 0 token))) (defun ess-token-value (token) (cdr (nth 0 token))) (defun ess-token-start (token) (car (nth 1 token))) (defun ess-token-end (token) (cdr (nth 1 token))) (defun ess-token-refined-type (token) (ess-token-type (ess-refine-token token))) (defun ess-token-after (&optional token) "Returns next token. Cons cell containing the token type and string representation." (save-excursion (when token (goto-char (ess-token-end token))) (ess-jump-token))) (defun ess-token-before (&optional token) "Returns previous token. Cons cell containing the token type and string representation." (save-excursion (when token (goto-char (ess-token-start token))) (ess-climb-token))) (defun ess-climb-token (&optional type string) (ess-save-excursion-when-nil (ess-escape-comment) (ess-skip-blanks-backward t) (let ((token (or (ess-climb-token--back) (ess-climb-token--back-and-forth) (progn (forward-char -1) (ess-token-after))))) (if (or type string) (when (ess-token= token type string) token) token)))) (defun ess-token--cons (type value) (if (eq type 'self) (cons value nil) (cons type value))) (defun ess-climb-token--back () (let* ((token-end (point)) (token-type (if (= (point) (point-min)) "buffer-start" (ess-climb-token--operator))) (token-value (buffer-substring-no-properties (point) token-end))) (unless (null token-type) (list (ess-token--cons token-type token-value) (cons (point) token-end))))) ;; Difficult to use regexps here because we want to match greedily ;; backward (defun ess-climb-token--operator () (when (pcase (char-before) ((or `?+ `?/ `?^ `?~ `?? `?!) (ess-backward-char)) (`?= (prog1 (ess-backward-char) (or (ess-climb-token--char ?=) (ess-climb-token--char ?!) (ess-climb-token--char ?:) (ess-climb-token--char ?>) (ess-climb-token--char ?<)))) ((or `?& `?| `?* `?@ `?$) (prog1 (ess-backward-char) (ess-climb-token--char (char-after)))) (`?< (ess-backward-char)) (`?> (prog1 (ess-backward-char) (or (ess-climb-token--char ?-) (and (looking-back "->" (- (point) 2)) (goto-char (- (point) 2)))))) (`?- (prog1 (ess-backward-char) (ess-climb-token--char ?< ?<))) (`?: (prog1 (ess-backward-char) (ess-climb-token--char ?: ?:)))) 'self)) (defsubst ess-climb-token--char (&rest chars) (ess-while (and chars (eq (char-before) (car chars)) (ess-backward-char)) (setq chars (cdr chars)))) (defun ess-climb-token--back-and-forth () (let ((limit (point))) (when (ess-skip-token-backward) (save-restriction (narrow-to-region (point) limit) (ess-token-after))))) (defun ess-skip-token-backward () (ess-save-excursion-when-nil (cond ;; Punctuation ((memq (char-before) '(?, ?\;)) (ess-backward-char)) ;; Quoting delimiters ((memq (char-syntax (char-before)) '(?\" ?$)) (ess-backward-sexp)) ;; Syntaxic delimiters ((memq (char-syntax (char-before)) '(?\( ?\))) (prog1 (ess-backward-char) ;; Also skip double brackets (ess-save-excursion-when-nil (when (let ((current-delim (char-after))) (ess-skip-blanks-backward) (and (memq (char-before) '(?\[ ?\])) (eq current-delim (char-before)))) (ess-backward-char))))) ;; Identifiers and numbers ((/= (skip-syntax-backward "w_") 0))))) (defun ess-jump-token (&optional type string) "Consume a token forward. Returns a cons cell containing the token type and the token string content. Returns nil when the end of the buffer is reached." (ess-save-excursion-when-nil (ess-skip-blanks-forward t) (let* ((token-start (point)) (token-type (or (ess-jump-token--regexps) (ess-jump-token--literal) (ess-jump-token--infix-op) (ess-jump-token--punctuation) (progn (forward-char) "unknown"))) (token-value (buffer-substring-no-properties token-start (point)))) (let ((token (list (ess-token--cons token-type token-value) (cons token-start (point))))) (if (or type string) (when (ess-token= token type string) token) token))))) (defun ess-jump-token--literal () (cond ;; Simply assume anything starting with a digit is a number. May be ;; too liberal but takes care of fractional numbers, integers such ;; as 10L, etc. False positives are not valid R code anyway. ((looking-at "[0-9]") (ess-forward-sexp) "number") ((or (looking-at "\\sw\\|\\s_") (eq (char-after) ?`)) (ess-forward-sexp) "identifier") ((memq (char-after) '(?\" ?\')) (ess-forward-sexp) "string"))) (defun ess-jump-token--punctuation () (or (when (= (point) (point-max)) "buffer-end") (pcase (char-after) (`?\; (forward-char) 'self) (`?, (forward-char) ;; Treat blanks after comma as part of an argument (ess-skip-blanks-forward t) ",")))) (defvar ess-r-prefix-keywords-list '("if" "for" "while" "function")) (defvar ess-r-keywords-list (append ess-r-prefix-keywords-list '("else"))) (defvar ess-r-delimiters-list '("(" ")" "{" "}" "[" "]" "[[" "]]")) (defvar ess-r-operators-list '("+" "-" "*" "/" "%%" "**" "^" "&" "&&" "|" "||" "!" "?" "~" "==" "!=" "<" "<=" ">=" ">" "=" "<-" "<<-" "->" "->>" "$" "@" ":" "::" ":::" ":=")) (defvar ess-r-keywords-re (concat (regexp-opt ess-r-keywords-list) "\\_>")) (defvar ess-r-delimiters-re (regexp-opt ess-r-delimiters-list)) (defvar ess-r-operators-re (regexp-opt ess-r-operators-list)) (defun ess-jump-token--regexps () (when (or (looking-at ess-r-keywords-re) (looking-at ess-r-delimiters-re) (looking-at ess-r-operators-re)) (goto-char (match-end 0)) 'self)) (defun ess-jump-token--infix-op () (or (when (looking-at ess-r-operators-re) (goto-char (match-end 0)) 'self) (when (eq (char-after) ?%) (ess-forward-sexp) "%infix%"))) (defun ess-escape-token () (ess-escape-comment) (ess-skip-blanks-forward) (or (ess-escape-string) (when (ess-token-delimiter-p (ess-token-after)) (prog1 t (mapc (lambda (delims) (while (and (ess-token-after= nil delims) (eq (char-before) (string-to-char (car delims)))) (ess-backward-char))) '(("[" "[[") ("]" "]]"))))) (ess-token-after= '("," ";")) (and (ess-token-after= "identifier") (not (memq (char-syntax (char-before)) '(?w ?_)))) (progn (/= (skip-syntax-backward ".") 0) (ess-token-operator-p (ess-token-after))) (/= (skip-syntax-backward "w_") 0))) (defun ess-refine-token (token) (let ((refined-type (pcase (ess-token-type token) ;; Parameter assignment (`"=" (save-excursion (goto-char (ess-token-start token)) (let ((containing-sexp (ess-containing-sexp-position))) (when (and containing-sexp (ess-at-containing-sexp (and (ess-token-after= "(") (ess-token-before= '("identifier" "string")))) (save-excursion (and (ess-climb-token) (ess-token-before= '("," "("))))) "param-assign")))) ;; Quoted identifiers (`"string" (when (or ;; Quoted parameter names (ess-refined-token= (ess-token-after) "param-assign") ;; Quoted call names (ess-token-after= "(")) "identifier")) ((or `"(" `")") (or (save-excursion (if (ess-token-close-delimiter-p token) (ess-climb-paired-delims nil token) (goto-char (ess-token-start token))) (when (ess-token-keyword-p (ess-token-before)) "prefixed-expr-delimiter")) ;; Fixme: probably too crude. Better handled in parser (when (ess-token= token ")") (save-excursion (ess-climb-paired-delims ")" token) (when (ess-token-before= '("identifier" "string" ")" "]" "]]" "}")) "argslist-delimiter"))))) ((or `"{" `"}") (save-excursion (unless (ess-climb-paired-delims "}" token) (goto-char (ess-token-start token))) (when (ess-refined-token= (ess-token-before) "prefixed-expr-delimiter") "prefixed-expr-delimiter")))))) (if refined-type (list (cons refined-type (ess-token-value token)) (nth 1 token)) token))) (defun ess-token-balancing-delim (token) (pcase (ess-token-type token) (`"(" ")") (`")" "(") (`"[" "]") (`"]" "[") (`"[[" "]]") (`"]]" "[["))) ;;;*;;; Token predicates (defun ess-token= (token &optional type string) (when (and (null type) (null string)) (error "No condition supplied")) (let ((type (if (stringp type) (list type) type)) (string (if (stringp string) (list string) string))) (and (if type (member (ess-token-type token) type) t) (if string (member (ess-token-value token) string) t)))) (defun ess-refined-token= (token type &optional string) (ess-token= (ess-refine-token token) type string)) (defun ess-token-after= (type &optional string) (ess-token= (ess-token-after) type string)) (defun ess-token-before= (type &optional string) (ess-token= (ess-token-before) type string)) (defun ess-token-open-delimiter-p (token) (string= (ess-char-syntax (ess-token-type token)) "(")) (defun ess-token-close-delimiter-p (token) (string= (ess-char-syntax (ess-token-type token)) ")")) (defun ess-token-delimiter-p (token) (or (ess-token-open-delimiter-p token) (ess-token-close-delimiter-p token))) (defun ess-token-operator-p (token &optional strict) (and (or (member (ess-token-type token) ess-r-operators-list) (string= (ess-token-type token) "%infix%")) (or (null strict) (not (ess-refined-token= token "param-assign"))))) (defun ess-token-keyword-p (token) (member (ess-token-type token) ess-r-keywords-list)) ;;;*;;; Tokens properties and accessors (defun ess-token-make-hash (&rest specs) (let ((table (make-hash-table :test #'equal))) (mapc (lambda (spec) ;; alist (if (listp (cdr spec)) (mapc (lambda (cell) (puthash (car cell) (cdr cell) table)) spec) ;; Cons cell (mapc (lambda (token) (puthash token (cdr spec) table)) (car spec)))) specs) table)) (defvar ess-token-r-powers-delimiters '(("(" . 100) ("[" . 100) ("[[" . 100))) (defvar ess-token-r-powers-operator '(("?" . 5) ("else" . 8) ("<-" . 10) ("<<-" . 10) ("=" . 15) ("->" . 20) ("->>" . 20) ("~" . 25) ("|" . 30) ("||" . 30) ("&" . 35) ("&&" . 35) ("!" . 40) ("<" . 45) (">" . 45) ("<=" . 45) (">=" . 45) ("==" . 45) ("+" . 50) ("-" . 50) ("*" . 55) ("/" . 55) ("%infix%" . 60) (":" . 65) ("^" . 70) ("$" . 75) ("@" . 75) ("::" . 80) (":::" . 80))) (defvar ess-token-r-power-table (ess-token-make-hash ess-token-r-powers-operator ess-token-r-powers-delimiters)) (defvar ess-token-r-right-powers-operator '((")" . 1))) (defvar ess-token-r-right-power-table (ess-token-make-hash ess-token-r-powers-operator ess-token-r-right-powers-operator)) (defvar ess-token-r-nud-table (ess-token-make-hash '(("identifier" . identity) ("literal" . identity) ("number" . identity) ("function" . identity) ("if" . identity) ("while" . identity) ("for" . identity)) '(("(" . ess-parser-nud-block) ("{" . ess-parser-nud-block)))) (defvar ess-token-r-rnud-table (ess-token-make-hash '(("identifier" . identity) ("literal" . identity) ("number" . identity)) '((")" . ess-parser-rnud-paren) ("}" . ess-parser-nud-block)))) (defvar ess-token-r-leds-operator (let ((operators-list (append '("%infix%" "else") ess-r-operators-list))) (cons operators-list #'ess-parser-led-lassoc))) (defvar ess-token-r-leds-delimiter '(("(" . ess-parser-led-funcall) ("[" . ess-parser-led-funcall) ("[[" . ess-parser-led-funcall))) (defvar ess-token-r-led-table (ess-token-make-hash ess-token-r-leds-operator ess-token-r-leds-delimiter)) (defvar ess-token-r-rid-table (ess-token-make-hash '((")" . ess-parser-rid-expr-prefix)))) ;;;*;;; Nud, led and rid functions (defun ess-parser-nud-block (prefix-token) (let ((right (list (cons "TODO" nil)))) (ess-parser-advance-pair nil prefix-token) (ess-node (cons "block" nil) (cons (ess-token-start prefix-token) (point)) (list prefix-token right)))) (defun ess-parser-led-lassoc (start infix-token) (let* ((power (ess-parser-power infix-token)) (end (ess-parse-expression power))) (ess-node (cons "binary-op" nil) (cons (ess-parser-token-start start) (point)) (list start infix-token end)))) (defun ess-parser-led-funcall (left infix-token) (when (ess-token= left (append '("identifier" "string" "node") ess-r-prefix-keywords-list)) (let* ((power (ess-parser-power infix-token)) (right (ess-parse-arglist power infix-token)) (type (if (ess-token= left ess-r-prefix-keywords-list) "prefixed-expr" "funcall"))) (when (string= type "prefixed-expr") (setq right (list right (ess-parse-expression 0)))) (ess-node (cons type nil) (cons (ess-parser-token-start left) (point)) (list left right))))) (defun ess-parser-rid-expr-prefix (right suffix-token) (when (ess-refined-token= suffix-token "prefixed-expr-delimiter") (ess-parser-rnud-paren suffix-token right))) (defun ess-parser-rnud-paren (suffix-token &optional prefixed-expr) (let* ((infix-token (save-excursion (ess-parser-advance-pair nil suffix-token))) (power (ess-parser-power infix-token)) (args (ess-parse-arglist power suffix-token)) (left (if prefixed-expr (ess-parser-advance) (ess-parse-expression power))) (type (cond (prefixed-expr "prefixed-expr") (left "funcall") (t "enclosed-expr")))) (when prefixed-expr (setcdr (car prefixed-expr) (list infix-token suffix-token))) (ess-node (cons type nil) (cons (ess-parser-token-start suffix-token) (point)) (if prefixed-expr (list prefixed-expr args left) (list args left))))) ;;;*;;; Parsing (defun ess-parser-advance (&optional type value) (if (bound-and-true-p ess-parser--backward) (ess-climb-token type value) (ess-jump-token type value))) (defun ess-parser-advance-pair (&optional type token) (if (bound-and-true-p ess-parser--backward) (ess-climb-paired-delims type token) (ess-jump-paired-delims type token))) (defun ess-parser-next-token () (if (bound-and-true-p ess-parser--backward) (ess-token-before) (ess-token-after))) (defun ess-parser-token-start (token) (if (bound-and-true-p ess-parser--backward) (ess-token-end token) (ess-token-start token))) (defun ess-parser-power (token) (or (if (bound-and-true-p ess-parser--backward) (gethash (ess-token-type token) ess-token-r-right-power-table) (gethash (ess-token-type token) ess-token-r-power-table)) 0)) (defun ess-node (type pos contents) (let ((pos (if (bound-and-true-p ess-parser--backward) (cons (cdr pos) (car pos)) pos)) (contents (if (bound-and-true-p ess-parser--backward) (nreverse contents) contents))) (list type pos contents))) (defalias 'ess-node-start #'ess-token-start) (defalias 'ess-node-end #'ess-token-end) (defun ess-parse-start-token (token) (let* ((table (if (bound-and-true-p ess-parser--backward) ess-token-r-rnud-table ess-token-r-nud-table)) (nud (gethash (ess-token-type token) table))) (when (fboundp nud) (funcall nud token)))) (defun ess-parse-infix-token (infix-token left) (let ((infix-power (ess-parser-power infix-token)) (led (or (when (bound-and-true-p ess-parser--backward) (gethash (ess-token-type infix-token) ess-token-r-rid-table)) (gethash (ess-token-type infix-token) ess-token-r-led-table)))) (funcall led left infix-token))) (defun ess-parse-expression (&optional power) (let ((current (ess-parse-start-token (ess-parser-advance))) (power (or power 0)) (next (ess-parser-next-token)) (last-sucessful-pos (point)) last-success) (setq last-success current) (while (and current (< power (ess-parser-power next))) (ess-parser-advance) (when (setq current (ess-parse-infix-token next current)) (setq last-sucessful-pos (point)) (setq last-success current)) (setq next (ess-parser-next-token))) (goto-char last-sucessful-pos) last-success)) (defun ess-parse-arglist (power start-token) (let ((start-pos (point)) (arg-start-pos (point)) (arglist (list start-token)) (closing-delim (ess-token-balancing-delim start-token)) expr) (while (and (setq expr (ess-parse-expression)) (push (ess-node (cons "arg" nil) (cons arg-start-pos (point)) (list expr)) arglist) (ess-parser-advance ",")) (setq arg-start-pos (point))) (push (ess-parser-advance closing-delim) arglist) (ess-node (cons "arglist" nil) (cons start-pos (1- (point))) (nreverse arglist)))) (defun forward-ess-r-expr () (interactive) (ess-save-excursion-when-nil (ess-escape-token) (ess-parse-expression))) (defun forward-ess-r-sexp () (interactive) (ess-save-excursion-when-nil (ess-escape-token) (let* ((orig-token (ess-token-after)) (tree (ess-parse-expression)) (sexp-node (ess-parser-tree-assoc orig-token tree))) (when sexp-node (goto-char (ess-token-end sexp-node)) sexp-node)))) (defun backward-ess-r-expr () (interactive) (let ((ess-parser--backward t)) (ess-parse-expression))) (defun backward-ess-r-sexp () (interactive) (error "todo")) (defun ess-parser-tree-assoc (key tree) (let ((next tree) stack last-node result) (while (and next (null result)) (cond ((eq next 'node-end) (pop last-node)) ((nth 2 next) (push 'node-end stack) (dolist (node (nth 2 next)) (push node stack)) (push next last-node)) ((equal next key) (setq result (car last-node)))) (setq next (pop stack))) result)) ;;*;; Point predicates (defun ess-within-call-p (&optional call) "Is point in a function or indexing call?" (let ((containing-sexp (or (bound-and-true-p containing-sexp) (ess-containing-sexp-position)))) (save-excursion (and (prog1 (ess-goto-char containing-sexp) (ess-climb-chained-delims)) (save-excursion (forward-char) (ess-up-list)) (or (ess-behind-call-opening-p "(") (looking-at "\\[")) (ess-within-call-name-p call))))) (defun ess-within-continuation-p () (unless (or (looking-at ",") (ess-behind-call-opening-p "[[(]")) (or (save-excursion (ess-jump-object) (and (not (ess-ahead-param-assign-p)) (ess-behind-operator-p))) (save-excursion (ess-climb-object) (ess-climb-operator) (and (ess-behind-operator-p) (not (ess-ahead-param-assign-p))))))) (defun ess-within-call-name-p (&optional call) (save-excursion (ess-climb-call-name call))) (defun ess-within-prefixed-block-p (&optional call) "Is point in a prefixed block? Prefixed blocks refer to the blocks following function declarations, control flow statements, etc. If CALL not nil, check if the prefix corresponds to CALL. If nil, return the prefix." (save-excursion (ess-escape-prefixed-block call))) (defun ess-within-comment-p (&optional state) (let ((state (or state (syntax-ppss)))) (eq (syntax-ppss-context state) 'comment))) (defun ess-within-string-p (&optional state) (let ((state (or state (syntax-ppss)))) (eq (syntax-ppss-context state) 'string))) ;;*;; Syntactic Travellers and Predicates ;;;*;;; Blanks, Characters, Comments and Delimiters (defun ess-skip-blanks-backward (&optional newlines) "Skip blanks and newlines backward, taking end-of-line comments into account." (ess-any ((ess-skip-blanks-backward-1)) ((when newlines (ess-while (and (/= (point) (point-min)) (= (point) (line-beginning-position))) (forward-line -1) (goto-char (ess-code-end-position)) (ess-skip-blanks-backward-1)))))) (defun ess-skip-blanks-backward-1 () (and (/= (point) (point-min)) (/= 0 (skip-syntax-backward " ")))) (defun ess-skip-blanks-forward (&optional newlines) "Skip blanks and newlines forward, taking end-of-line comments into account." (ess-any ((/= 0 (skip-syntax-forward " "))) ((ess-while (and newlines (= (point) (ess-code-end-position)) (when (ess-save-excursion-when-nil ;; Handles corner cases such as point being on last line (let ((orig-point (point))) (forward-line) (ess-back-to-indentation) (> (point) orig-point))) (skip-chars-forward " \t") t)))))) (defun ess-jump-char (char) (ess-save-excursion-when-nil (ess-skip-blanks-forward t) (when (looking-at char) (goto-char (match-end 0))))) (defun ess-escape-comment () (when (ess-within-comment-p) (prog1 (comment-beginning) (skip-chars-backward "#+[ \t]*")))) (defun ess-ahead-closing-p () (memq (char-before) '(?\] ?\} ?\)))) (defun ess-ahead-boundary-p () (looking-back "[][ \t\n(){},]" (1- (point)))) (defun ess-escape-string () (and (nth 3 (syntax-ppss)) (ess-goto-char (nth 8 (syntax-ppss))))) (defun ess-climb-paired-delims (&optional type token) (ess-save-excursion-when-nil (let ((token (or token (ess-token-before)))) (goto-char (ess-token-end token)) (when (if type (ess-token= token type) (ess-token-delimiter-p token)) (and (ess-backward-sexp) (ess-token-after)))))) (defun ess-jump-paired-delims (&optional type token) (ess-save-excursion-when-nil (let ((token (or token (ess-token-after)))) (goto-char (ess-token-start token)) (when (if type (ess-token= token type) (ess-token-delimiter-p token)) (and (ess-forward-sexp) (ess-token-before)))))) ;;;*;;; Blocks (defun ess-block-opening-p () (save-excursion (cond ((looking-at "{")) ;; Opening parenthesis not attached to a function opens up a ;; block too. Only pick up those that are last on their line ((ess-behind-block-paren-p))))) (defun ess-block-closing-p () (save-excursion (cond ((looking-at "}")) ((looking-at ")") (forward-char) (backward-sexp) (not (looking-back (concat ess-r-name-pattern "[[:blank:]]*") (line-beginning-position))))))) (defun ess-block-p () (or (save-excursion (when containing-sexp (goto-char containing-sexp) (ess-block-opening-p))) (ess-unbraced-block-p))) ;; Parenthesised expressions (defun ess-behind-block-paren-p () (and (looking-at "(") (not (ess-ahead-attached-name-p)))) (defun ess-climb-block (&optional ignore-ifelse) (ess-save-excursion-when-nil (cond ((and (not ignore-ifelse) (ess-climb-if-else 'to-start))) ((and (eq (char-before) ?\}) (prog2 (forward-char -1) (ess-up-list -1) (ess-climb-block-prefix))))))) (defvar ess-prefixed-block-patterns (mapcar (lambda (fun) (concat fun "[ \t\n]*(")) '("function" "if" "for" "while"))) (defun ess-behind-prefixed-block-p (&optional call) (if call (looking-at (concat call "[ \t]*(")) (some 'looking-at ess-prefixed-block-patterns))) (defun ess-unbraced-block-p (&optional ignore-ifelse) "This indicates whether point is in front of an unbraced prefixed block following a control flow statement. Returns position of the control flow function (if, for, while, etc)." (save-excursion (and (ess-backward-sexp) (or (and (looking-at "else\\b") (not ignore-ifelse)) (and (looking-at "(") (ess-backward-sexp) (some 'looking-at ess-prefixed-block-patterns) (if ignore-ifelse (not (looking-at "if\\b")) t))) (point)))) (defun ess-climb-block-prefix (&optional call ignore-ifelse) "Climb the prefix of a prefixed block. Prefixed blocks refer to the blocks following function declarations, control flow statements, etc. Should be called either in front of a naked block or in front of the curly brackets of a braced block. If CALL not nil, check if the prefix corresponds to CALL. If nil, return the prefix." (ess-save-excursion-when-nil (or (and (not ignore-ifelse) (prog1 (and (ess-climb-if-else-call) (or (null call) (looking-at call))) (when (ess-token-after= "else") (ess-climb-token "}")))) (let ((pos (ess-unbraced-block-p ignore-ifelse))) (and (ess-goto-char pos) (if call (looking-at call) (cond ((looking-at "function") "function") ((looking-at "for") "for") ((looking-at "if") "if") ((looking-at "else") "else")))))))) (defun ess-escape-prefixed-block (&optional call) "Climb outside of a prefixed block." (let ((containing-sexp (or (bound-and-true-p containing-sexp) (ess-containing-sexp-position)))) (or (ess-save-excursion-when-nil (and (ess-goto-char containing-sexp) (looking-at "{") (ess-climb-block-prefix call))) (ess-escape-unbraced-block call)))) (defun ess-escape-unbraced-block (&optional call) (ess-save-excursion-when-nil (while (and (not (ess-unbraced-block-p)) (or (ess-escape-continuations) (ess-escape-call)))) (ess-climb-block-prefix call))) (defun ess-jump-block () (cond ;; if-else blocks ((ess-jump-if-else)) ;; Prefixed blocks such as `function() {}' ((ess-behind-prefixed-block-p) (ess-jump-prefixed-block)) ;; Naked blocks ((and (or (looking-at "{") (ess-behind-block-paren-p)) (ess-forward-sexp))))) (defun ess-jump-prefixed-block (&optional call) (ess-save-excursion-when-nil (when (ess-behind-prefixed-block-p call) (ess-forward-sexp 2) (ess-skip-blanks-forward t) (if (looking-at "{") (ess-forward-sexp) (prog1 (ess-jump-expression) (ess-jump-continuations)))))) ;;;*;;; Calls (defun ess-call-closing-p () (save-excursion (when (cond ((looking-at ")") (ess-up-list -1)) ((looking-at "]") (when (ess-up-list -1) (prog1 t (ess-climb-chained-delims))))) (ess-ahead-attached-name-p)))) (defun ess-behind-call-opening-p (pattern) (and (looking-at pattern) (ess-ahead-attached-name-p))) ;; Should be called just before the opening brace (defun ess-ahead-attached-name-p () (save-excursion (ess-climb-object))) (defun ess-ahead-param-assign-p () "Are we looking at a function argument? To be called just before the `=' sign." (ess-refined-token= (ess-token-before) "param-assign")) (defun ess-behind-arg-p () (save-excursion (ess-jump-arg))) (defun ess-behind-parameter-p () (save-excursion (ess-jump-parameter))) (defun ess-jump-parameter () (ess-save-excursion-when-nil (and (ess-jump-name) (when (looking-at "[ \t]*=\\([^=]\\)") (goto-char (match-beginning 1)) (ess-skip-blanks-forward) t)))) (defun ess-jump-arg () (ess-save-excursion-when-nil (ess-skip-blanks-forward t) (ess-any ((ess-jump-parameter)) ((ess-jump-expression)) ((ess-jump-continuations))))) (defun ess-arg-bounds () "Should be called in front of the argument." (save-excursion (let ((beg (point))) (and (ess-jump-arg) (list beg (point)))))) (defun ess-climb-call (&optional call) "Climb functions (e.g. ggplot) and parenthesised expressions." (or (ess-while (ess-save-excursion-when-nil (ess-climb-name) (and (ess-climb-chained-delims ?\]) ;; (ess-climb-expression) (if (eq (char-before) ?\)) (ess-climb-call) (ess-climb-name)) ))) (ess-save-excursion-when-nil (when (and (memq (char-before) '(?\] ?\) ?\})) (ess-backward-sexp)) (if call (and (ess-climb-name) (looking-at call))) (prog1 t (ess-climb-name)))))) (defun ess-climb-call-name (&optional call) (ess-save-excursion-when-nil (ess-jump-name) (ess-skip-blanks-forward) (and (ess-behind-call-opening-p "[[(]") (ess-climb-name) (or (null call) (looking-at call))))) (defun ess-step-to-first-arg () (let ((containing-sexp (ess-containing-sexp-position))) (cond ((ess-within-call-p) (goto-char containing-sexp) (forward-char) t) ((ess-within-call-name-p) (ess-jump-name) (ess-skip-blanks-forward) (forward-char) t)))) (defun ess-jump-to-next-arg () (and (ess-jump-arg) (prog1 (ess-jump-char ",") (ess-skip-blanks-forward t)))) (defun ess-jump-call () (ess-save-excursion-when-nil (or (and (ess-jump-object) (cond ((eq (char-before) ?\))) ((looking-at "\\[") (ess-jump-chained-brackets)) ((looking-at "(") (ess-forward-sexp)))) (and (looking-at "[ \t]*(") (ess-forward-sexp))))) (defun ess-behind-call-p () (save-excursion (ess-jump-object) (ess-skip-blanks-forward) (looking-at "[[(]"))) (defun ess-climb-chained-delims (&optional delim) "Should be called with point between delims, e.g. `]|['." (setq delim (if delim (list delim) '(?\] ?\)))) (ess-while (ess-save-excursion-when-nil (when (memq (char-before) delim) (ess-backward-sexp))))) (defun ess-jump-chained-brackets () (ess-while (ess-save-excursion-when-nil (when (eq (char-after) ?\[) (ess-forward-sexp))))) (defun ess-escape-call (&optional call) (let ((containing-sexp (ess-containing-sexp-position))) (if (ess-within-call-p) (ess-save-excursion-when-nil (goto-char containing-sexp) (ess-climb-chained-delims) (and (ess-climb-name) (or (null call) (looking-at call)))) ;; At top level or inside a block, check if point is on the ;; function name. (ess-save-excursion-when-nil (let ((orig-pos (point))) (and (ess-jump-name) (looking-at "[[(]") (ess-climb-name) (or (null call) (looking-at call)) (/= (point) orig-pos))))))) (defun ess-escape-calls () (ess-while (ess-escape-call))) (defun ess-jump-inside-call () (ess-save-excursion-when-nil (when (ess-jump-name) (ess-skip-blanks-forward) (when (looking-at "(") (forward-char) t)))) (defun ess-args-bounds (&optional marker) (let ((containing-sexp (ess-containing-sexp-position))) (when (ess-within-call-p) (save-excursion (let ((beg (1+ containing-sexp)) (call-beg (ess-at-containing-sexp (ess-climb-name) (point)))) ;; (ess-up-list) can't find its way when point is on a ;; backquoted name, so start from `beg'. (and (goto-char beg) (ess-up-list) (prog1 t (forward-char -1)) (let ((end (if marker (point-marker) (point)))) (list beg end call-beg)))))))) (defun ess-args-alist () "Return all arguments as an alist with cars set to argument names and cdrs set to the expressions given as argument. Both cars and cdrs are returned as strings." (save-excursion (when (ess-step-to-first-arg) (let (args current-arg) (while (and (setq current-arg (ess-cons-arg)) (setq args (nconc args (list current-arg))) (ess-jump-to-next-arg))) args)))) (defun ess-cons-arg () "Return a cons cell of the current argument with car set to the parameter name (nil if not specified) and cdr set to the argument expression." (save-excursion (ess-skip-blanks-forward t) (let ((param (when (ess-behind-parameter-p) (buffer-substring-no-properties (point) (prog2 (ess-jump-name) (point) (ess-jump-char "=") (ess-skip-blanks-forward))))) (arg (buffer-substring-no-properties (point) (progn (ess-jump-arg) (point))))) (cons param arg)))) ;;;*;;; Statements (defun ess-behind-operator-p (&optional strict) (ess-token-operator-p (ess-token-after) strict)) (defun ess-ahead-operator-p (&optional strict) (ess-token-operator-p (ess-token-before) strict)) (defun ess-climb-lhs (&optional no-fun-arg climb-line) (ess-save-excursion-when-nil (let ((start-line (line-number-at-pos))) (ess-climb-operator) (when (and (or climb-line (equal (line-number-at-pos) start-line)) (ess-behind-definition-op-p no-fun-arg)) (prog1 t (ess-climb-expression)))))) (defun ess-jump-lhs () (ess-save-excursion-when-nil (and (ess-jump-name) (ess-behind-definition-op-p) (ess-jump-operator)))) (defun ess-climb-operator () (when (ess-token-operator-p (ess-token-before)) (prog1 (ess-climb-token) (ess-skip-blanks-backward)))) ;; Currently doesn't check that the operator is not binary (defun ess-climb-unary-operator () (ess-save-excursion-when-nil (let ((token (ess-climb-token))) (member (ess-token-type token) '("+" "-" "!" "?" "~"))))) ;; Currently returns t if we climbed lines, nil otherwise. (defun ess-climb-continuations (&optional cascade ignore-ifelse) (let* ((start-line (line-number-at-pos)) (state (list :start-line start-line :last-line start-line :moved 0 :last-pos (point) :prev-point nil :def-op nil :expr nil))) (when (ess-while (and (<= (plist-get state :moved) 1) (or (ess-save-excursion-when-nil (and (ess-climb-operator) (ess-climb-continuations--update-state state cascade 'op) (ess-climb-expression ignore-ifelse))) (ess-climb-unary-operator)) (/= (plist-get state :last-pos) (point))) (ess-climb-continuations--update-state state cascade nil) (plist-put state :last-pos (point))) (when (and (plist-get state :prev-point) (or (= (plist-get state :moved) 3) (not (plist-get state :expr)))) (goto-char (plist-get state :prev-point))) (if (plist-get state :def-op) 'def-op (< (line-number-at-pos) (plist-get state :start-line)))))) (defun ess-climb-continuations--update-state (state cascade &optional op) ;; Climbing multi-line expressions should not count as moving up (when op (plist-put state :expr (ess-ahead-closing-p))) (let ((cur-line (line-number-at-pos))) (when (and (plist-get state :last-line) (< cur-line (plist-get state :last-line)) (or cascade (not (plist-get state :expr)))) (plist-put state :moved (1+ (plist-get state :moved))) (plist-put state :last-line cur-line))) ;; Don't update counter after climbing operator or climbing too high (when (and (not op) (<= (plist-get state :moved) 1)) (plist-put state :prev-point (point))) (when (and (ess-behind-definition-op-p) (<= (plist-get state :moved) 1)) (plist-put state :def-op t)) t) (defun ess-jump-operator () (when (ess-behind-operator-p) (ess-jump-token) (ess-skip-blanks-forward t) t)) (defun ess-jump-continuation () (and (ess-jump-operator) (ess-jump-expression))) (defun ess-jump-continuations () (let (last-pos) (when (ess-while (and (or (null last-pos) (/= (point) last-pos)) (setq last-pos (point)) (ess-jump-continuation))) ;; In calls, operators can start on newlines (let ((start-line (line-number-at-pos))) (when (ess-save-excursion-when-nil (and (ess-within-call-p) (ess-skip-blanks-forward t) (/= (line-number-at-pos) start-line) (ess-behind-operator-p))) (ess-jump-continuations))) t))) (defun ess-ahead-continuation-p (&optional or-parameter) (or (ess-token-operator-p (ess-token-before) (not or-parameter)) (save-excursion (ess-climb-block-prefix)) (ess-token-after= "else") (save-excursion (ess-climb-if-else-call)))) (defun ess-token-definition-op-p (token strict) (and (ess-token= token '("<-" "<<-" ":=" "~" "=")) (if strict (not (ess-refined-token= token "param-assign")) t))) (defun ess-behind-definition-op-p (&optional strict) (ess-token-definition-op-p (ess-token-after) strict)) (defun ess-ahead-definition-op-p (&optional strict) (ess-token-definition-op-p (ess-token-before) strict)) (defun ess-behind-assignment-op-p () (let ((token (ess-token-after))) (and (ess-token= token '("<-" "=")) (not (ess-refined-token= token "param-assign"))))) (defun ess-escape-continuations () (ess-any ((unless (ess-ahead-boundary-p) (ess-climb-expression))) ((ess-while (ess-climb-continuations))))) (defun ess-continuations-bounds (&optional marker) (save-excursion (let ((orig-point (point)) (beg (progn (ess-escape-continuations) (point)))) (when beg (ess-jump-expression) (ess-jump-continuations) (let ((end (if marker (point-marker) (point)))) (list beg end)))))) (defun ess-climb-to-top-level () (while (ess-goto-char (ess-containing-sexp-position))) (ess-escape-continuations)) ;;;*;;; Statements: Control Flow (defun ess-climb-if-else-call (&optional multi-line) "Climb if, else, and if else calls." (ess-save-excursion-when-nil (cond ((ess-climb-paired-delims ")") (when (ess-climb-token "if") ;; Check for `else if' (prog1 t (ess-save-excursion-when-nil (let ((orig-line (line-number-at-pos))) (and (ess-climb-token "else") (or multi-line (eq orig-line (line-number-at-pos))))))))) ((ess-climb-token "else"))))) (defun ess-climb-if-else-body (&optional from-else) (cond ;; Climb braced body ((ess-save-excursion-when-nil (and (when (progn (ess-skip-blanks-backward t) (eq (char-before) ?\})) (prog1 t (forward-char -1))) (ess-up-list -1)))) ;; Climb unbraced body ((when from-else (ess-save-excursion-when-nil (ess-skip-blanks-backward t) (prog1 (ess-climb-expression 'ignore-ifelse) (or (ess-climb-continuations nil 'ignore-ifelse) (ess-climb-block-prefix nil 'ignore-ifelse)))))))) (defun ess-climb-if-else (&optional to-start) "Climb horizontal as well as vertical if-else chains, with or without curly braces." ;; Don't climb if we're atop the current chain of if-else (unless (ess-token-after= "if") (ess-save-excursion-when-nil (let ((from-else (ess-token-after= "else"))) (when (and (ess-climb-if-else-body from-else) (ess-climb-if-else-call to-start)) ;; If we start from a final else and climb to another else, we ;; are in the wrong chain of if-else. In that case, ;; climb-recurse to the top of the current chain and climb ;; again to step in the outer chain. (when (save-excursion (and from-else (ess-jump-token "else") (not (ess-jump-token "if")))) (ess-climb-if-else 'to-start) (ess-climb-continuations) (ess-climb-block-prefix nil 'ignore-ifelse) (ess-climb-if-else-call nil)) (ess-maybe-climb-broken-else) (when to-start (ess-climb-if-else to-start)) t))))) ;; Broken else: if \n else (defun ess-maybe-climb-broken-else (&optional same-line) (ess-save-excursion-when-nil ;; Don't record current line if not needed (expensive operation) (let ((cur-line (when same-line (line-number-at-pos)))) (and (ess-climb-token "else") (if same-line (= cur-line (line-number-at-pos)) t))))) (defun ess-skip-curly-backward () (re-search-backward "}[ \t]*" (line-beginning-position) t)) (defun ess-jump-if-else () (let (from) (ess-while (ess-save-excursion-when-nil (ess-skip-blanks-forward t) (cond ((and (not (eq from 'if)) (ess-jump-if) (setq from 'if))) ((looking-at "else") (ess-forward-sexp) (or (ess-jump-if) (progn (ess-skip-blanks-forward t) (ess-jump-expression))) (setq from 'else)) (t nil)))))) (defun ess-jump-if () (ess-save-excursion-when-nil (ess-skip-blanks-forward t) (and (looking-at "if[ \t\n]*(") (ess-forward-sexp 2) (progn (ess-skip-blanks-forward t) (ess-jump-expression))))) ;;;*;;; Function Declarations (defun ess-behind-defun-p () (or (looking-at "function[ \t]*(") (ess-behind-enclosed-defun-p))) (defun ess-behind-enclosed-defun-p () (save-excursion (and (ess-behind-call-p) (ess-jump-inside-call) (some (lambda (arg) (string-match "^function\\b" (cdr arg))) (ess-args-alist))))) ;;;*;;; Names / Objects / Expressions ;; Should climb any names, including backquoted ones or those ;; containing `@' or `$'. Difficult to achieve with regexps, but ;; skipping chars is faster anyway. (defun ess-climb-object () (ess-save-excursion-when-nil (let (climbed) (ess-skip-blanks-backward) ;; Backquoted names can contain any character (if (and (memq (char-before) '(?` ?\" ?\')) (ess-backward-sexp)) (setq climbed t) (while (some (apply-partially '/= 0) `(,(skip-syntax-backward "w_") ,(skip-chars-backward "\"'"))) (setq climbed t))) ;; Recurse if we find an indexing char (when (memq (char-before) '(?$ ?@)) (forward-char -1) (ess-climb-object)) climbed))) ;; Todo: split name and object climbing (defun ess-climb-name () (ess-climb-object)) ;; This jumps both object names and atomic objects like strings or ;; numbers. (defun ess-jump-object () (cond ;; Jump over object names ((ess-jump-name)) ;; Jump over strings)) ((ess-save-excursion-when-nil (skip-chars-forward " \t") (memq (char-after) '(?\" ?\'))) (ess-forward-sexp)))) (defun ess-jump-name () (ess-save-excursion-when-nil (let (climbed quote-char) (skip-chars-forward " \t") ;; Jump over backquoted names (cond ((and (eq (char-after) ?`) (looking-back ess-r-symbol-pattern (1- (point)))) (forward-char) (setq climbed t)) ((eq (char-after) ?`) (forward-char) (when (ess-while (not (memq (char-after) '(?` ?\C-J))) (forward-char)) (setq climbed t) (forward-char))) ;; Jump over regular names ((when (/= 0 (skip-syntax-forward "w_")) ;; Maybe point was inside backticks (when (eq (char-after) ?`) (forward-char)) (setq climbed t)))) climbed))) (defun ess-climb-expression (&optional ignore-ifelse) (ess-save-excursion-when-nil (or (ess-climb-block ignore-ifelse) (ess-climb-call) (ess-climb-object)))) (defun ess-jump-expression () (or (ess-jump-block) (ess-jump-call) (ess-jump-object))) (provide 'ess-r-syntax) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-r-syntax.el ends here ess-17.11/lisp/ess-rd.el0000444005071500004540000004720413202324174011734 00000000000000;; ess-rd.el --- Support for editing R documentation (Rd) source ;; Copyright (C) 1997--2005 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: KH ;; Created: 25 July 1997 ;; Maintainer: ESS-core ;; This file is part of ESS (Emacs Speaks Statistics). ;; This file is free software; you may redistribute it and/or modify it ;; under the terms of the GNU General Public License as published by the ;; Free Software Foundation; either version 2, or (at your option) any ;; later version. ;; ;; This is distributed in the hope that it will be useful, but WITHOUT ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ;; for more details. ;; ;; A copy of the GNU General Public License is available on the World ;; Wide Web at http://www.gnu.org/copyleft/gpl.html. You can also ;; obtain it by writing to the Free Software Foundation, Inc., 675 Mass ;; Ave, Cambridge, MA 02139, USA. ;;; Code: ;; To stave off byte compiler errors (eval-when-compile (require 'ess-help)) (require 'ess-utils) (defvar essddr-version "0.9-1" "Current version of ess-rd.el.") (defvar essddr-maintainer-address "ESS Core Team " "Current maintainer of ess-rd.el.") (autoload 'ess-eval-region "ess-inf" "[autoload]" t) (autoload 'ess-eval-line-and-step "ess-inf" "[autoload]" t) (autoload 'ess-switch-process "ess-inf" "[autoload]" t) (autoload 'ess-switch-to-ESS "ess-inf" "[autoload]" t) (autoload 'ess-switch-to-end-of-ESS "ess-inf" "[autoload]" t) (autoload 'ess-help-mode "ess-help" "[autoload]" t) (autoload 'ess-help-underline "ess-help" "[autoload]" t) (defvar Rd-mode-abbrev-table nil "Abbrev table for R documentation keywords. All Rd mode abbrevs start with a grave accent (`).") (if Rd-mode-abbrev-table () (define-abbrev-table 'Rd-mode-abbrev-table ()) (define-abbrev Rd-mode-abbrev-table "`ag" "\\arguments") (define-abbrev Rd-mode-abbrev-table "`al" "\\alias") (define-abbrev Rd-mode-abbrev-table "`au" "\\author") (define-abbrev Rd-mode-abbrev-table "`bf" "\\bold") (define-abbrev Rd-mode-abbrev-table "`co" "\\code") (define-abbrev Rd-mode-abbrev-table "`de" "\\describe") (define-abbrev Rd-mode-abbrev-table "`dn" "\\description") (define-abbrev Rd-mode-abbrev-table "`dt" "\\details") (define-abbrev Rd-mode-abbrev-table "`em" "\\emph") (define-abbrev Rd-mode-abbrev-table "`en" "\\enumerate") (define-abbrev Rd-mode-abbrev-table "`ex" "\\examples") (define-abbrev Rd-mode-abbrev-table "`fi" "\\file") (define-abbrev Rd-mode-abbrev-table "`fo" "\\format") (define-abbrev Rd-mode-abbrev-table "`it" "\\item") (define-abbrev Rd-mode-abbrev-table "`iz" "\\itemize") (define-abbrev Rd-mode-abbrev-table "`kw" "\\keyword") (define-abbrev Rd-mode-abbrev-table "`li" "\\link") (define-abbrev Rd-mode-abbrev-table "`me" "\\method") (define-abbrev Rd-mode-abbrev-table "`na" "\\name") (define-abbrev Rd-mode-abbrev-table "`no" "\\note") (define-abbrev Rd-mode-abbrev-table "`re" "\\references") (define-abbrev Rd-mode-abbrev-table "`sa" "\\seealso") (define-abbrev Rd-mode-abbrev-table "`se" "\\section") (define-abbrev Rd-mode-abbrev-table "`so" "\\source") (define-abbrev Rd-mode-abbrev-table "`ss" "\\subsection") (define-abbrev Rd-mode-abbrev-table "`sy" "\\synopsis") (define-abbrev Rd-mode-abbrev-table "`ta" "\\tabular") (define-abbrev Rd-mode-abbrev-table "`ti" "\\title") (define-abbrev Rd-mode-abbrev-table "`us" "\\usage") (define-abbrev Rd-mode-abbrev-table "`va" "\\value")) (defvar Rd-mode-syntax-table nil "Syntax table for Rd mode.") (if Rd-mode-syntax-table () (setq Rd-mode-syntax-table (copy-syntax-table text-mode-syntax-table)) (modify-syntax-entry ?\\ "\\" Rd-mode-syntax-table) (modify-syntax-entry ?\{ "(}" Rd-mode-syntax-table) (modify-syntax-entry ?\} "){" Rd-mode-syntax-table) ;; Nice for editing, not for parsing ... (modify-syntax-entry ?\( "()" Rd-mode-syntax-table) (modify-syntax-entry ?\) ")(" Rd-mode-syntax-table) (modify-syntax-entry ?\[ "(]" Rd-mode-syntax-table) (modify-syntax-entry ?\] ")[" Rd-mode-syntax-table) ;; To get strings right ;; (modify-syntax-entry ?\' "\"" Rd-mode-syntax-table) (modify-syntax-entry ?\" "\"" Rd-mode-syntax-table) ;; To make abbrevs starting with a grave accent work ... (modify-syntax-entry ?\` "w" Rd-mode-syntax-table) ;; Comments (modify-syntax-entry ?\% "<" Rd-mode-syntax-table) (modify-syntax-entry ?\n ">" Rd-mode-syntax-table)) (defvar Rd-mode-parse-syntax-table nil "Syntax table for parsing Rd mode.") (if Rd-mode-parse-syntax-table () (setq Rd-mode-parse-syntax-table (copy-syntax-table Rd-mode-syntax-table)) ;; To make parse-partial-sexps do the thing we want for computing ;; indentations (modify-syntax-entry ?\( "_" Rd-mode-parse-syntax-table) (modify-syntax-entry ?\) "_" Rd-mode-parse-syntax-table) (modify-syntax-entry ?\[ "_" Rd-mode-parse-syntax-table) (modify-syntax-entry ?\] "_" Rd-mode-parse-syntax-table)) (defvar Rd-section-names '("Rdversion" "arguments" "alias" "author" "concept" "describe" "description" "details" "docType" "encoding" "enumerate" "examples" "format" "itemize" "keyword" "name" "note" "preformatted" "references" "seealso" "section" "source" "subsection" "synopsis" "tabular" "title" "usage" "value")) (defvar Rd-keywords '( ;; the next two lines: only valid in R <= 2.8.1 ;; commented out on 2011-01-14 for ESS version 5.13: ;; "Alpha" "Gamma" "alpha" "beta" "epsilon" "lambda" "mu" "pi" "sigma" ;; "ge" "le" "left" "right" ;; "R" "RdOpts" "S3method" "S4method" "Sexpr" "acronym" "bold" "cite" "code" "command" "cr" "dQuote" "deqn" "dfn" "dontrun" "dontshow" "donttest" "dots" "email" "emph" "enc" "env" "eqn" "figure" "file" "href" "if" "ifelse" "item" "kbd" "ldots" "linkS4class" "link" "method" "newcommand" "option" "out" "pkg" "sQuote" "renewcommand" "samp" "strong" "tab" "url" "var" "verb" ;; System macros (from /share/Rd/macros/system.Rd ): "CRANpkg" "PR" "sspace" "doi" "packageTitle" "packageDescription" "packageAuthor" "packageMaintainer" "packageDESCRIPTION" "packageIndices" )) ;; Need to fix Rd-bold-face problem. ;; ;; (defvar Rd-bold-face 'bold) ;(defvar Rd-bold-face nil) ;(make-face Rd-bold-face "R documentation bold face") ;(make-face-bold Rd-bold-face (defvar Rd-font-lock-keywords (list (cons (concat "\\\\\\(" (mapconcat 'identity Rd-section-names "\\|") "\\>\\)") 'font-lock-reference-face) ; Rd-bold-face (cons (concat "\\\\\\(" (mapconcat 'identity Rd-keywords "\\|") "\\>\\)") 'font-lock-keyword-face) '("^#\\(ifn?def\\)\\s-+\\(\\sw+\\)" (1 font-lock-builtin-face) (2 font-lock-variable-name-face nil t)) '("^#\\(endif\\)" 1 font-lock-builtin-face)) "Additional Rd expressions to highlight.") (defvar Rd-indent-level 2 "*Indentation of Rd code with respect to containing blocks.") (defvar Rd-mode-map (let ((map (make-sparse-keymap))) (define-key map "\t" 'indent-according-to-mode) (define-key map "\C-j" 'reindent-then-newline-and-indent) (define-key map "\C-m" 'reindent-then-newline-and-indent) (define-key map "\C-c\C-p" 'Rd-preview-help) (define-key map "\C-c\C-j" 'Rd-mode-insert-item) (define-key map "\C-c\C-e" 'Rd-mode-insert-skeleton) (define-key map "\C-c\C-f" 'Rd-font) ;; ^C^F ^E : \emph{ . } ;; ^C^F ^C : \code{ . } ;; ^C^F ^L : \link{ . } ;; ^C^F L : \code{\link{ . }} etc (define-key map "\C-c\C-s" 'Rd-mode-insert-section) (define-key map "\C-ch" 'ess-handy-commands) (define-key map "\C-c\C-n" 'ess-eval-line-and-step) (define-key map "\C-c\C-r" 'ess-eval-region) (define-key map "\C-c\C-c" 'ess-eval-region-or-function-or-paragraph-and-step) (define-key map "\C-\M-x" 'ess-eval-region-or-function-or-paragraph) (define-key map "\C-c\C-v" 'ess-display-help-on-object) (define-key map "\C-c\C-w" 'ess-switch-process); is on C-c C-s in ess-mode.. (define-key map "\C-c\C-y" 'ess-switch-to-ESS) (define-key map "\C-c\C-z" 'ess-switch-to-end-of-ESS) map) "Keymap used in Rd mode.") (defvar Rd-mode-menu (list "Rd" ["Markup [word]" Rd-font t] ["Insert Item" Rd-mode-insert-item t] ["Insert Section" Rd-mode-insert-section t] ["Insert Skeleton" Rd-mode-insert-skeleton t] "-" ["Preview" Rd-preview-help t] "-" ["Eval Line" ess-eval-line-and-step t] ["Eval Region" ess-eval-region t] ["Switch to ESS Process" ess-switch-to-ESS t] ["Switch the ESS Process" ess-switch-process t] ["Switch to end{ESS Pr}" ess-switch-to-end-of-ESS t] "-" ["Toggle Abbrev Mode" abbrev-mode t] ["Toggle Auto-Fill Mode" auto-fill-mode t] "-" ["Submit Bug Report" Rd-submit-bug-report t] "-" ["Describe Rd Mode" Rd-describe-major-mode t]) "Menu used in Rd mode.") (defvar Rd-mode-hook nil "*Hook to be run when Rd mode is entered.") (defvar Rd-to-help-command "R CMD Rd2txt" "*Shell command for converting R documentation source to help text.") (defvar Rd-font-list '((?\C-b "\\bold{" "}") (?\C-c "\\code{" "}") (?\C-e "\\emph{" "}") (?\C-l "\\link{" "}") (?l "\\code{\\link{" "}}") (?\C-m "\\email{" "}") (?\C-q "\\eqn{" "}") (?\C-u "\\url{" "}") ) "List of ``fonts'' used by Rd-font. Each entry is a list. The first element is the key to activate the font. The second element is the string to insert before point, and the third element is the string to insert after point." ) ;;;###autoload (defun Rd-mode () "Major mode for editing R documentation source files. This mode makes it easier to write R documentation by helping with indentation, doing some of the typing for you (with Abbrev mode) and by showing keywords, strings, etc. in different faces (with Font Lock mode on terminals that support it). Type \\[list-abbrevs] to display the built-in abbrevs for Rd keywords. Keybindings =========== \\{Rd-mode-map} Variables you can use to customize Rd mode ========================================== `Rd-indent-level' Indentation of Rd code with respect to containing blocks. Default is 2. Turning on Rd mode runs the hook `Rd-mode-hook'. To automatically turn on the abbrev(iate) features, add the following lines to your `.emacs' file: (add-hook 'Rd-mode-hook (lambda () (abbrev-mode 1))) " (interactive) (text-mode) (kill-all-local-variables) (ess-setq-vars-local ess-r-customize-alist) ;same functionality is available as in R buffers (use-local-map Rd-mode-map) (setq mode-name "Rd") (setq major-mode 'Rd-mode) (setq local-abbrev-table Rd-mode-abbrev-table) (set-syntax-table Rd-mode-syntax-table) (set (make-local-variable 'indent-line-function) 'Rd-mode-indent-line) (set (make-local-variable 'fill-column) 72) (set (make-local-variable 'comment-start-skip) "\\s<+\\s-*") (set (make-local-variable 'comment-start) "% ") (set (make-local-variable 'comment-end) "") (set (make-local-variable 'font-lock-defaults) '(Rd-font-lock-keywords nil nil)) ;; (set (make-local-variable 'parse-sexp-ignore-comments) t) ;; Here is a workaround for an Emacs bug related to indirect buffers and ;; spurious lockfiles that rears its ugly head with .Rd files ;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-02/msg01368.html ;; http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14328 (unless (featurep 'xemacs) (make-local-variable 'create-lockfiles) (setq create-lockfiles nil)) (require 'easymenu) (easy-menu-define Rd-mode-menu-map Rd-mode-map "Menu keymap for Rd mode." Rd-mode-menu) (easy-menu-add Rd-mode-menu-map Rd-mode-map) (turn-on-auto-fill) (message "Rd mode version %s" essddr-version) (setq ess-language "S" ess-dialect "R"); (buffer local) (run-hooks 'Rd-mode-hook)) ;; FIXME: The following should be moved to ess-utils.el, no? (MM thinks) (defun ess-point (position) "Returns the value of point at certain positions." (save-excursion (cond ((eq position 'bol) (beginning-of-line)) ((eq position 'eol) (end-of-line)) ((eq position 'boi) (back-to-indentation)) ((eq position 'bonl) (forward-line 1)) ((eq position 'bopl) (forward-line -1)) (t (error "unknown buffer position requested: %s" position))) (point))) (defun Rd-describe-major-mode () "Describe the current major mode." (interactive) (describe-function major-mode)) (defun Rd-mode-in-verbatim-p () (let ((pos (point))) (save-excursion (if (and (re-search-backward "\\\\\\(usage\\|examples\\|synopsis\\)" nil t) (re-search-forward "\\s(" nil t)) (condition-case () (progn (up-list 1) (< pos (point))) (error t)) nil)))) (defun Rd-mode-in-preprocessor-line-p () (save-excursion (beginning-of-line) (looking-at "[ \t]*#\\(ifdef\\|endif\\)"))) (defun Rd-mode-calculate-indent () "Return appropriate indentation for current line in Rd mode." (interactive) (save-excursion (beginning-of-line) (cond ((Rd-mode-in-verbatim-p) ;; Don't do anything in verbatims nil) ((Rd-mode-in-preprocessor-line-p) ;; Indent to 0 0) (t (let ((p (progn (re-search-forward "[ \t]*\\s)*" (ess-point 'eol) t) (point)))) (if (or (< (forward-line -1) 0) (Rd-mode-in-verbatim-p)) 0 (set-syntax-table Rd-mode-parse-syntax-table) (while (and (or (looking-at "[ \t]*$") (Rd-mode-in-preprocessor-line-p)) (not (bobp))) (forward-line -1)) (re-search-forward "[ \t]*\\s)*" (ess-point 'eol) t) (prog1 (+ (current-indentation) (* (car (parse-partial-sexp (point) p)) Rd-indent-level)) (set-syntax-table Rd-mode-syntax-table)))))))) (defun Rd-mode-indent-line () "Indent current line as Rd source." (interactive) (let ((ic (Rd-mode-calculate-indent)) (rp (- (current-column) (current-indentation)))) (if ic ; Not inside a verbatim (if (< ic 0) (error "Unmatched parenthesis") (indent-line-to ic) (if (> rp 0) (move-to-column (+ ic rp))))))) (defun Rd-mode-insert-item () (interactive) (reindent-then-newline-and-indent) (insert "\\item{") ) (defun Rd-mode-insert-section () (interactive) (let ((s (ess-completing-read "Insert section: " (mapcar (lambda (x) (cons x x)) Rd-section-names) nil t))) (if (string= s "") (progn (insert "\\section{}{") (backward-char 2)) (insert (format "\\%s{" s))))) (defun Rd-mode-insert-skeleton () (interactive) ;; Hmm: in theory this should be kept in sync with prompt() ;; --- maybe using prompt() [or promptClass()...] would be better anyway?! (insert "\\name{}\n") (insert "\\alias{}\n") (insert "\\title{}\n") (insert "\\description{\n}\n") (insert "\\usage{\n}\n") (insert "\\arguments{\n}\n") (insert "\\value{\n}\n") (insert "\\details{\n}\n") (insert "\\references{\n}\n") (insert "\\seealso{\n}\n") (insert "\\examples{\n}\n") (insert "\\author{}\n") (insert "\\keyword{}\n")) ;; This is an `easy' version of (defun TeX-font ..) in AUCtex's tex.el ; ;; see TeX-font-list and also LaTeX-font-list in latex.el (defun Rd-font (what) "Insert template for font command. WHAT determines the font to use, as specified by `Rd-font-list'." (interactive "c") ;;TeX had : (Rd-update-style) (let* ((entry (assoc what Rd-font-list)) (before (nth 1 entry)) (after (nth 2 entry))) (cond ((null entry) ;; help on possibilities : (let ((help (concat "Rd Markup (available from C-c C-f):\n\n\t" "KEY Rd-Markup\n\n" (mapconcat (lambda (entry) ;; A textual description of an ENTRY in TeX-font-list. (concat (format "%11s " (key-description (char-to-string (nth 0 entry)))) (format "%14s %-3s" (nth 1 entry) (nth 2 entry)))) Rd-font-list "\n")))) (with-output-to-temp-buffer "*Help*" (set-buffer "*Help*") (insert help)))) ((region-active-p) (save-excursion (cond ((> (mark) (point)) (insert before) (goto-char (mark)) (insert after)) (t (insert after) (goto-char (mark)) (insert before))))) (t (insert before) (save-excursion (insert after)))))) (defun Rd-preview-help (&optional via-shell) "Preview the current Rd buffer contents as help. If optional VIA-SHELL is set, using `Rd-to-help-command'. If the current buffer is not associated with a file, create a temporary one in `temporary-file-directory'. " (interactive "P") (require 'ess-help) (let ((file buffer-file-name) (pbuf (get-buffer-create "R Help Preview")) del-p) (unless file (setq file (make-temp-file "RD_" nil ".Rd")) (write-region (point-min) (point-max) file) (setq del-p t)) (if via-shell ;; FIXME eventually get rid of this option ;; only method in ESS <= 14.09 -- calls "R" even if in "R-devel"; slower (let ((shcmd (format "%s '%s'" Rd-to-help-command file))) (set-buffer pbuf) (erase-buffer) (ess-write-to-dribble-buffer (format "Rd-preview-help: (shell-command |%s| t)" shcmd)) (shell-command shcmd t)) ;; else directly: (ess-force-buffer-current "R process to use: ") (ess-command (format ".ess_Rd2txt(\"%s\")\n" file) pbuf) (set-buffer pbuf)) ;; FIXME(2): once got rid of via-shell, consider ;; (ess--flush-help-into-current-buffer file "tools::Rd2txt(\"%s\")\n") ;; instead of all this : (ess-setq-vars-local ess-r-customize-alist) ;; FIXME: Is this really needed? (setq ess-help-sec-regex ess-help-r-sec-regex ess-help-sec-keys-alist ess-help-r-sec-keys-alist) ;; mostly cut'n'paste from ess--flush-help* (see FIXME(2)): (ess-help-underline) (ess-help-mode) (goto-char (point-min)) (set-buffer-modified-p 'nil) (setq buffer-read-only t) (setq truncate-lines nil) (when del-p (delete-file file)) (unless (get-buffer-window pbuf 'visible) (display-buffer pbuf t)))) ;; Bug reporting (defun Rd-submit-bug-report () "Submit a bug report on Rd mode via mail." (interactive) (require 'reporter) (and (y-or-n-p "Do you want to submit a bug report? ") (reporter-submit-bug-report essddr-maintainer-address (concat "Emacs version " emacs-version) (list 'essddr-version 'Rd-indent-level)))) ;; Provide ourself (provide 'ess-rd) ;; Legacy feature (provide 'essddr) ;; ess-rd.el ends here ess-17.11/lisp/ess-rdired.el0000444005071500004540000004303313202324174012574 00000000000000;;; ess-rdired.el --- prototype object browser for R, looks like dired mode. ;; Copyright (C) 2002--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Stephen Eglen ;; Created: Thu 24 Oct 2002 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is not part of GNU Emacs. ;; ess-rdired.el is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ess-rdired.el is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; This provides a dired-like buffer for R objects. Instead of ;; operating on files, we operate on R objects in the current ;; environment. Objects can be viewed, edited, deleted, plotted and ;; so on. ;;; Commentary: ;; Installation and usage. ;; ;; Load in this library, e.g. with the command: ;; (autoload 'ess-rdired "ess-rdired" "View *R* objects in a dired-like buffer." t) ;; ;; After loading this file, do "M-x R" to start an R session, then ;; create a few variables: ;; s <- sin(seq(from=0, to=8*pi, length=100)) ;; x <- c(1, 4, 9) ;; y <- rnorm(20) ;; z <- TRUE ;; Then in Emacs, do "M-x ess-rdired" and you should see the following in ;; the buffer *R dired*: ;; mode length ;; s numeric 100 ;; x numeric 3 ;; y numeric 20 ;; z logical 1 ;; Type "?" in the buffer to see the documentation. e.g. when the ;; cursor is on the line for `s', type 'p' to plot it, or `v' to view ;; its contents in a buffer. Then type 'd' to mark it for deletion. ;; How it works. ;; Most of the hardwork is done by the R routine .rdired.objects(), ;; which, when called, produces the list of objects in a tidy format. ;; This function is stored within the lisp variable `ess-rdired-objects', ;; and can be altered to provide other information if you so need it. ;; (Martin Maechler suggested providing output from str() here.) ;; Todo - compare functionality with ess-mouse-me (ess-mous.el). ;; Todo - How to select alternative environments? Currently only ;; shows objects in the .GlobalEnv? See BrowseEnv() in 1.6.x for way ;; of browsing other environments. ;; Todo - problem with fix -- have to wait for fix() command to return ;; before *R* buffer can be used again. This can get stuck, umm. not ;; sure what is going wrong here. Maybe add a hook to the temp buffer ;; so that when buffer is killed, we send an instruction to R to ;; update the value of the variable to the contents of the buffer. ;; This way *R* doesn't have to wait. ;; Todo - small bug in .rdired.objects -- if we have a variable called ;; `my.x', its value is replaced by the value of my.x used in the ;; sapply() calls within .rdired.objects(). ;;; Code: (defvar ess-rdired-objects "{.rdired.objects <- function(objs) { if (length(objs)==0) { \"No objects to view!\" } else { mode <- sapply(objs, function(my.x) { eval( parse( text=sprintf('data.class(get(\"%s\"))', my.x))) }) length <- sapply(objs, function(my.x) { eval( parse( text=sprintf('length(get(\"%s\"))', my.x))) }) size <- sapply(objs, function(my.x) { eval( parse( text=sprintf('format(object.size(get(\"%s\")), units=\"auto\")', my.x))) }) d <- data.frame(mode, length, size) var.names <- row.names(d) ## If any names contain spaces, we need to quote around them. quotes = rep('', length(var.names)) spaces = grep(' ', var.names) if (any(spaces)) quotes[spaces] <- '\"' var.names = paste(quotes, var.names, quotes, sep='') row.names(d) <- paste(' ', var.names, sep='') d } }; cat('\n'); print(.rdired.objects(ls()))}\n" "Function to call within R to print information on objects. The last line of this string should be the instruction to call the function which prints the output for rdired.") (defvar ess-rdired-buffer "*R dired*" "Name of buffer for displaying R objects.") (defvar ess-rdired-mode-map (let ((ess-rdired-mode-map (make-sparse-keymap))) (if (require 'hide-lines nil t) (define-key ess-rdired-mode-map "/" 'hide-lines)) (define-key ess-rdired-mode-map "?" 'ess-rdired-help) (define-key ess-rdired-mode-map "d" 'ess-rdired-delete) (define-key ess-rdired-mode-map "u" 'ess-rdired-undelete) (define-key ess-rdired-mode-map "x" 'ess-rdired-expunge) ;; editing requires a little more work. ;;(define-key ess-rdired-mode-map "e" 'ess-rdired-edit) (define-key ess-rdired-mode-map "v" 'ess-rdired-view) (define-key ess-rdired-mode-map "V" 'ess-rdired-View) (define-key ess-rdired-mode-map "p" 'ess-rdired-plot) (define-key ess-rdired-mode-map "s" 'ess-rdired-sort) (define-key ess-rdired-mode-map "r" 'ess-rdired-reverse) (define-key ess-rdired-mode-map "q" 'ess-rdired-quit) (define-key ess-rdired-mode-map "y" 'ess-rdired-type) ;what type? (define-key ess-rdired-mode-map " " 'ess-rdired-next-line) (define-key ess-rdired-mode-map [backspace] 'ess-rdired-previous-line) (define-key ess-rdired-mode-map "\C-n" 'ess-rdired-next-line) (define-key ess-rdired-mode-map "\C-p" 'ess-rdired-previous-line) ;; (define-key ess-rdired-mode-map "n" 'ess-rdired-next-line) ;; (define-key ess-rdired-mode-map "p" 'ess-rdired-previous-line) ;; R mode keybindings. (define-key ess-rdired-mode-map "\C-c\C-s" 'ess-rdired-switch-process) (define-key ess-rdired-mode-map "\C-c\C-y" 'ess-switch-to-ESS) (define-key ess-rdired-mode-map "\C-c\C-z" 'ess-switch-to-end-of-ESS) (define-key ess-rdired-mode-map [down] 'ess-rdired-next-line) (define-key ess-rdired-mode-map [up] 'ess-rdired-previous-line) (define-key ess-rdired-mode-map "g" 'revert-buffer) (define-key ess-rdired-mode-map [mouse-2] 'ess-rdired-mouse-view) ess-rdired-mode-map)) (defun ess-rdired-mode () "Major mode for output from `ess-rdired'. `ess-rdired' provides a dired-like mode for R objects. It shows the list of current objects in the current environment, one-per-line. You can then examine these objects, plot them, and so on. \\{ess-rdired-mode-map}" ;; (kill-all-local-variables) (make-local-variable 'revert-buffer-function) (setq revert-buffer-function 'ess-rdired-revert-buffer) (use-local-map ess-rdired-mode-map) (setq major-mode 'ess-rdired-mode) (setq mode-name (concat "RDired " ess-local-process-name)) (run-mode-hooks 'ess-rdired-mode-hook)) (defun ess-rdired-mode-hook nil "Run upon entering `ess-rdired-mode'.") (defvar ess-rdired-sort-num nil) ;silence the compiler. ;; but see following defun -- maybe it should be buffer local. (defun ess-rdired () "Run dired-like mode on R objects. This is the main function. See documentation for `ess-rdired-mode' though for more information!" (interactive) (let ((proc ess-local-process-name) (buff (get-buffer-create ess-rdired-buffer))) (ess-command ess-rdired-objects buff) (ess-setq-vars-local (symbol-value ess-local-customize-alist) buff) (with-current-buffer buff (setq ess-local-process-name proc) (ess-rdired-mode) ;; When definiting the function .rdired.objects(), a "+ " is printed ;; for every line of the function definition; these are deleted ;; here. (goto-char (point-min)) (delete-region (point-min) (1+ (point-at-eol))) ;; todo: not sure how to make ess-rdired-sort-num buffer local? ;;(set (make-local-variable 'ess-rdired-sort-num) 2) ;;(make-variable-buffer-local 'ess-rdired-sort-num) (setq ess-rdired-sort-num 1) (ess-rdired-insert-set-properties (save-excursion (goto-char (point-min)) (forward-line 1) (point)) (point-max)) (setq buffer-read-only t) ) (pop-to-buffer buff) )) (defun ess-rdired-object () "Return name of object on current line. Handle special case when object contains spaces." (save-excursion (beginning-of-line) (forward-char 2) (cond ((looking-at " ") ; First line? nil) ((looking-at "\"") ; Object name contains spaces? (let (beg) (setq beg (point)) (forward-char 1) (search-forward "\"") (buffer-substring-no-properties beg (point)))) (t ;should be a regular object. (let (beg) (setq beg (point)) (search-forward " ") ;assume space follows object name. (buffer-substring-no-properties beg (1- (point)))))))) (defun ess-rdired-edit () "Edit (fix) the object at point." (interactive) (let ((objname (ess-rdired-object))) (ess-command (concat "edit(" objname ")\n")))) (defun ess-rdired-view () "View the object at point." (interactive) (let ((objname (ess-rdired-object))) (ess-execute (ess-rdired-get objname) nil "R view" ))) (defun ess-rdired-get (name) "Generate R code to get the value of the variable name. This is complicated because some variables might have spaces in their names. Otherwise, we could just pass the variable name directly to *R*." (concat "get(" (ess-rdired-quote name) ")") ) (defun ess-rdired-quote (name) "Quote name if not already quoted." (if (equal (substring name 0 1) "\"") name (concat "\"" name "\""))) (defun ess-rdired-View () "View the object at point in its own buffer. Like `ess-rdired-view', but the object gets its own buffer name." (interactive) (let ((objname (ess-rdired-object))) (ess-execute (ess-rdired-get objname) nil (concat "R view " objname )))) (defun ess-rdired-plot () "Plot the object on current line." (interactive) (let ((objname (ess-rdired-object))) (ess-eval-linewise (format "plot(%s)" (ess-rdired-get objname))))) (defun ess-rdired-type () "Run the mode() on command at point. Named type because of similarity with the dired command bound to y key." (interactive) (let ((objname (ess-rdired-object)) ;; create a temp buffer, and then show output in echo area (tmpbuf (get-buffer-create "**ess-rdired-mode**"))) (if objname (progn (ess-command (concat "mode(" (ess-rdired-get objname) ")\n") tmpbuf ) (set-buffer tmpbuf) (message (concat objname ": " (buffer-substring (+ 4 (point-min)) (1- (point-max))))) (kill-buffer tmpbuf))))) (defun ess-rdired-delete (arg) "Mark the current (or next ARG) objects for deletion. If point is on first line, all objects are marked for deletion." (interactive "p") (ess-rdired-mark "D" arg)) (defun ess-rdired-undelete (arg) "Unmark the current (or next ARG) objects. If point is on first line, all objects will be unmarked." (interactive "p") (ess-rdired-mark " " arg)) (defun ess-rdired-mark (mark-char arg) "Mark the object, using MARK-CHAR, on current line (or next ARG lines)." ;; If we are on first line, mark all lines. (let ((buffer-read-only nil) move) (if (eq (point-min) (save-excursion (beginning-of-line) (point))) (progn ;; we are on first line, so make a note of point, and count ;; how many objects we want to delete. Then at end of defun, ;; restore point. (setq move (point)) (forward-line 1) (setq arg (count-lines (point) (point-max))))) (while (and (> arg 0) (not (eobp))) (setq arg (1- arg)) (beginning-of-line) (progn (insert mark-char) (delete-char 1) (forward-line 1))) (if move (goto-char move)))) (defun ess-rdired-expunge () "Delete the marked objects. User is queried first to check that objects should really be deleted." (interactive) (let ((objs "rm(") (count 0)) (save-excursion (goto-char (point-min)) (forward-line 1) (while (< (count-lines (point-min) (point)) (count-lines (point-min) (point-max))) (beginning-of-line) (if (looking-at "^D ") (setq count (1+ count) objs (concat objs (ess-rdired-object) ", " ))) (forward-line 1) )) (if (> count 0) ;; found objects to delete (progn (setq objs (concat (substring objs 0 (- (length objs) 2)) ")\n")) (if (yes-or-no-p (format "Delete %d %s " count (if (> count 1) "objects" "object"))) (progn (ess-eval-linewise objs nil nil nil 'wait) (ess-rdired) ))) ;; else nothing to delete (message "no objects set to delete") ))) ;; Fancy delete method, based on dired. Bit too much for our needs? ;; (defun ess-rdired-expunge () ;; "Delete the marked objects. ;; User is queried first to check that objects should really be deleted." ;; (interactive) ;; (let ((objs) ;; (cmd "rm(")) ;; (save-excursion ;; (goto-line 2) ;; (while (< (count-lines (point-min) (point)) ;; (count-lines (point-min) (point-max))) ;; (beginning-of-line) ;; (if (looking-at "^D ") ;; (progn ;; (setq objs (cons (ess-rdired-object) objs )) ;; (setq cmd (concat cmd (ess-rdired-object) ", ")) ;; )) ;; (forward-line 1) ;; )) ;; (if (> (length objs) 0) ;; ;; found objects to delete ;; (if ;; (dired-mark-pop-up "*RDired deletions*" 'delete ;; objs dired-deletion-confirmer ;; (format "delete %s " ;; (dired-mark-prompt nil objs))) ;; ;; should delete the objects. ;; (progn ;; (setq cmd (concat (substring cmd 0 (- (length cmd) 2)) ;; ")\n")) ;; (ess-command cmd) ;; (ess-rdired))) ;; ;; else nothing to delete ;; (message "no objects set to delete") ;; ))) (defun ess-rdired-quit () "Quit the R dired buffer." (interactive) (kill-buffer ess-rdired-buffer)) (defun ess-rdired-revert-buffer (ignore noconfirm) "Update the buffer list (in case object list has changed). Arguments IGNORE and NOCONFIRM currently not used." (ess-rdired)) (defun ess-rdired-help () "Show help for `ess-rdired-mode'." (interactive) (describe-function 'ess-rdired-mode)) (defun ess-rdired-sort () "Sort the rdired output according to one of the columns. Rotate between the alternative sorting methods." (interactive) (setq ess-rdired-sort-num (1+ ess-rdired-sort-num)) (let ((buffer-read-only nil) (beg (save-excursion (goto-char (point-min)) (forward-line 1) (point))) (end (point-max))) (if (> ess-rdired-sort-num 4) (setq ess-rdired-sort-num 1)) (cond ((eq ess-rdired-sort-num 1) (sort-fields 1 beg end)) ((eq ess-rdired-sort-num 2) (sort-fields 2 beg end)) ((eq ess-rdired-sort-num 3) (sort-numeric-fields 3 beg end)) ((eq ess-rdired-sort-num 4) (sort-numeric-fields 4 beg end))))) (defun ess-rdired-reverse () "Reverse the current sort order." (interactive) (let ((buffer-read-only nil) (beg (save-excursion (goto-char (point-min)) (forward-line 1) (point))) (end (point-max))) (reverse-region beg end))) (defun ess-rdired-next-line (arg) "Move down lines then position at object. Optional prefix ARG says how many lines to move; default is one line." (interactive "p") (forward-line arg) (ess-rdired-move-to-object)) (defun ess-rdired-previous-line (arg) "Move up lines then position at object. Optional prefix ARG says how many lines to move; default is one line." (interactive "p") (forward-line (- (or arg 1))) ; -1 if arg was nil (ess-rdired-move-to-object)) (defun ess-rdired-move-to-object () "Put point at start of object." (beginning-of-line) (forward-char 2) ) (defun ess-rdired-mouse-view (event) "In rdired, visit the object on the line you click on." (interactive "e") (let (window pos) (save-excursion (setq window (posn-window (event-end event)) pos (posn-point (event-end event))) (if (not (windowp window)) (error "No file chosen")) (set-buffer (window-buffer window)) (goto-char pos) (ess-rdired-view)))) (defun ess-rdired-insert-set-properties (beg end) "Add mouse highlighting to each object name in the R dired buffer." (save-excursion (goto-char beg) (while (< (point) end) (ess-rdired-move-to-object) (add-text-properties (point) (save-excursion (search-forward " ") (1- (point))) '(mouse-face highlight help-echo "mouse-2: view object in other window")) (forward-line 1)))) (defun ess-rdired-switch-process () "Switch to examine different *R* process. If you have multiple R processes running, e.g. *R*, *R:2*, *R:3*, you can use this command to choose which R process you would like to examine. After switching to a new process, the buffer is updated." (interactive) (ess-switch-process) (ess-rdired)) ;;; ess-rdired.el ends here. ess-17.11/lisp/ess-roxy.el0000444005071500004540000012166313202324174012332 00000000000000;;; ess-roxy.el --- convenient editing of in-code roxygen documentation ;; ;; Copyright (C) 2009--2017 Henning Redestig, A.J. Rossini, Richard ;; M. Heiberger, Martin Maechler, Kurt Hornik, Rodney Sparapani, Stephen ;; Eglen and Vitalie Spinu. ;; ;; Author: Henning Redestig ;; Keywords: convenience, tools ;; ;; This file is part of ESS ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 3 of the ;; License, or (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see ;; . ;;; Commentary: ;; Lots of inspiration from doc-mode, ;; http://nschum.de/src/emacs/doc-mode/ ;; ;; Features:: ;; ;; - basic highlighting ;; - generating and updating templates from function definition and customized default template ;; - C-c C-o C-o :: update template ;; - navigating and filling roxygen fields ;; - C-c TAB, M-q, C-a, ENTER, M-h :: advised tag completion, fill-paragraph, ;; move-beginning-of-line, newline-and-indent ;; - C-c C-o n,p :: next, previous roxygen entry ;; - C-c C-o C-c :: Unroxygen region. Convenient for editing examples. ;; - folding visibility using hs-minor-mode ;; - TAB :: advised ess-ident-command, hide entry if in roxygen doc. ;; - preview ;; - C-c C-o C-r :: create a preview of the Rd file as generated ;; using roxygen ;; - C-c C-o C-t :: create a preview of the Rd HTML file as generated ;; using roxygen and the tools package ;; - C-c C-o t :: create a preview of the Rd text file ;; ;; Known issues: ;; ;; - hideshow mode does not work very well. In particular, if ordinary ;; comments precede a roxygen entry, then both will be hidden in the ;; same overlay from start and not unfoldable using TAB since the ;; roxygen prefix is not present. The planned solution is implement ;; a replacement for hideshow. ;; - only limited functionality for S4 documentation. ;; this *is* enabled now via ess-mode-hook in ./ess-site.el ;;*;; Dependencies: (require 'ess-utils) (require 'ess-custom) (require 'ess-utils) (require 'hideshow) (require 'outline) (eval-when-compile ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl))) (autoload 'Rd-preview-help "ess-rd" "[autoload]" t) (require 'essddr "ess-rd.el") ;;*;; Roxy Minor Mode (defvar ess-roxy-mode-map (let ((map (make-sparse-keymap))) (if ess-roxy-hide-show-p (define-key map (kbd "C-c C-o h") 'ess-roxy-hide-all)) ;; short version (*first*: -> key binding shown in menu): (define-key map (kbd "C-c C-o n") 'ess-roxy-next-entry) (define-key map (kbd "C-c C-o p") 'ess-roxy-previous-entry) ;; For consistency (e.g. C-c C-o C-h !): kept here *in* addition to above (define-key map (kbd "C-c C-o C-o") 'ess-roxy-update-entry) (define-key map (kbd "C-c C-o C-r") 'ess-roxy-preview-Rd) (define-key map (kbd "C-c C-o C-w") 'ess-roxy-preview-HTML) (define-key map (kbd "C-c C-o C-t") 'ess-roxy-preview-text) (define-key map (kbd "C-c C-o C-c") 'ess-roxy-toggle-roxy-region) map)) (defvar ess-roxy-font-lock-keywords `((,(concat ess-roxy-re " *\\([@\\]" (regexp-opt ess-roxy-tags-param t) "\\)\\>") (1 'font-lock-keyword-face prepend)) (,(concat ess-roxy-re " *\\([@\\]" (regexp-opt '("param" "importFrom" "importClassesFrom" "importMethodsFrom") t) "\\)\\>\\(?:[ \t]+\\(\\sw+\\)\\)?") (1 'font-lock-keyword-face prepend) (3 'font-lock-variable-name-face prepend)) (,(concat "[@\\]" (regexp-opt ess-roxy-tags-noparam t) "\\>") (0 'font-lock-variable-name-face prepend)) (,(concat ess-roxy-re) (0 'bold prepend)))) (defvar ess-roxy-fontify-examples nil "When non-nil, the `@examples' field is fontified as ordinary code. Experimental feature with known bugs.") (defun ess-roxy-extend-region-to-field (start end) (if (or (progn (goto-char start) (ess-roxy-entry-p "examples")) (progn (goto-char end) (ess-roxy-entry-p "examples"))) (let ((new-start (min start (ess-roxy-beg-of-field))) (new-end (max end (ess-roxy-end-of-field)))) (cons new-start new-end)) (cons start end))) (defun ess-roxy-modify-examples (overlay after start end &optional length) (when (and overlay after) (ess-roxy-delete-examples-field overlay (min (1+ (overlay-end overlay)) (point-max))))) (defun ess-roxy-insert-behind-examples (overlay after start end &optional length) (when (and overlay after) (ess-roxy-delete-examples-field overlay (1+ end)))) (defun ess-roxy-delete-examples-field (overlay header-end) (let ((inhibit-modification-hooks t)) (delete-overlay overlay) (when (get-text-property header-end 'ess-roxy-examples) (let ((field-end (next-single-property-change header-end 'ess-roxy-examples))) (remove-list-of-text-properties header-end field-end (list 'ess-roxy-examples 'ess-face-adjusted 'ess-adjust-face-background)))))) (defun ess-roxy-syntax-propertize (start end) (funcall (syntax-propertize-rules ;; Cache `@examples' field boundaries in text properties. Signal ;; buffer and chunks for face adjustment. ("^\\(#+'\\) +\\(@examples\\)[ \t\n]" (1 (progn (setq-local ess-buffer-has-chunks t) (let ((field-start (1+ (match-end 2))) (field-end (1+ (save-match-data (ess-roxy-end-of-field))))) (add-text-properties field-start field-end (list 'ess-adjust-face-background t 'ess-roxy-examples t)) (unless (ess-find-overlay (match-beginning 2) 'ess-roxy-examples-header) (let ((overlay (make-overlay (match-beginning 2) (match-end 2)))) (overlay-put overlay 'modification-hooks (list #'ess-roxy-modify-examples)) (overlay-put overlay 'insert-in-front-hooks (list #'ess-roxy-modify-examples)) (overlay-put overlay 'insert-behind-hooks (list #'ess-roxy-insert-behind-examples)) (overlay-put overlay 'ess-roxy-examples-header t)))) nil))) ("^#+'" ;; Remove comment and string properties of roxy prefix in fields ;; that should be fontified as usual. Add `roxy-prefix' property ;; so we can manually fontify the prefix as comment later on. (0 (when (get-text-property (match-beginning 0) 'ess-roxy-examples) (add-text-properties (match-beginning 0) (match-end 0) (list 'ess-roxy-prefix t 'font-lock-face 'font-lock-comment-face)) (string-to-syntax "-"))))) start end)) (defun ess-roxy-fontify-region (start end loudly) (prog1 (font-lock-default-fontify-region start end loudly) (when (and ess-adjust-chunk-faces ess-buffer-has-chunks) (let* ((prop 'ess-adjust-face-background) (end (line-end-position)) (adjust-start (or (and (get-text-property start prop) (previous-single-property-change start prop)) (next-single-property-change start prop nil end))) next-pos) (while (progn (when (get-text-property adjust-start 'ess-face-adjusted) (setq adjust-start (next-single-property-change adjust-start 'ess-face-adjusted nil end))) (< adjust-start end)) (setq next-pos (next-single-property-change adjust-start prop nil end)) (when (text-property-not-all adjust-start end 'ess-face-adjusted t) (ess-adjust-face-background adjust-start next-pos)) (setq adjust-start (next-single-property-change next-pos prop nil end))))))) (defun ess-roxy-unfontify-region (start end) (font-lock-default-unfontify-region start end) (remove-list-of-text-properties start end (list 'ess-face-adjusted))) (define-minor-mode ess-roxy-mode "Minor mode for editing ROxygen documentation." :keymap ess-roxy-mode-map (if ess-roxy-mode (progn (font-lock-add-keywords nil ess-roxy-font-lock-keywords) (if (>= emacs-major-version 24) (add-to-list 'completion-at-point-functions 'ess-roxy-tag-completion) (add-to-list 'comint-dynamic-complete-functions 'ess-roxy-complete-tag)) ;; Hideshow Integration (when (and ess-roxy-hide-show-p (featurep 'hideshow)) (hs-minor-mode 1) (when ess-roxy-start-hidden-p (ess-roxy-hide-all))) ;; Outline Integration (when ess-roxy-fold-examples (ess-roxy-hide-all-examples)) ;; Fontification (when ess-roxy-fontify-examples (add-hook 'syntax-propertize-extend-region-functions #'ess-roxy-extend-region-to-field 'append 'local) (setq-local syntax-propertize-function #'ess-roxy-syntax-propertize) (setq-local font-lock-fontify-region-function #'ess-roxy-fontify-region) (setq-local font-lock-unfontify-region-function #'ess-roxy-unfontify-region))) (when (and ess-roxy-hide-show-p (bound-and-true-p hs-minor-mode)) (hs-show-all) (hs-minor-mode)) (font-lock-remove-keywords nil ess-roxy-font-lock-keywords) (setq-local syntax-propertize-function nil) (setq-local font-lock-fontify-region-function nil) (setq-local font-lock-unfontify-region-function nil) (remove-hook 'syntax-propertize-extend-region-functions #'ess-roxy-extend-region-to-field 'local)) (when font-lock-mode (font-lock-fontify-buffer)) ;; Autofill (setq-local paragraph-start (concat "\\(" ess-roxy-re "\\)*" paragraph-start)) (setq-local paragraph-separate (concat "\\(" ess-roxy-re "\\)*" paragraph-separate)) (setq-local adaptive-fill-function 'ess-roxy-adaptive-fill-function)) ;;*;; Outline Integration (defvar ess-roxy-fold-examples nil "Whether to fold `@examples' when opening a buffer. Use you regular key for `outline-show-entry' to reveal it.") (defvar ess-roxy-outline-regexp "^#+' +@examples\\|^[^#]") (defun ess-roxy-substitute-outline-regexp (command) (let ((outline-regexp (if (ess-roxy-entry-p "examples") ess-roxy-outline-regexp outline-regexp))) (funcall command))) (defun ess-roxy-cycle-example () (interactive) (unless (featurep 'outline-magic) (error "Please install and load outline-magic")) ;; Don't show children when cycling @examples (let ((this-command 'outline-cycle-overwiew)) (ess-roxy-substitute-outline-regexp #'outline-cycle))) (defun ess-roxy-show-example () (interactive) (ess-roxy-substitute-outline-regexp #'outline-show-entry)) (defun ess-roxy-hide-example () (interactive) (ess-roxy-substitute-outline-regexp #'outline-hide-entry)) (defun ess-roxy-hide-all-examples () (interactive) (save-excursion (goto-char (point-min)) (while (re-search-forward "^#+' +@examples\\b" nil t) ;; Handle edge cases (when (ess-roxy-entry-p "examples") (ess-roxy-hide-example))))) (when (featurep 'outline-magic) (substitute-key-definition 'outline-cyle 'ess-roxy-cyle-example ess-roxy-mode-map outline-mode-menu-bar-map)) (substitute-key-definition 'outline-hide-entry 'ess-roxy-hide-example ess-roxy-mode-map outline-minor-mode-map) (substitute-key-definition 'outline-show-entry 'ess-roxy-show-example ess-roxy-mode-map outline-minor-mode-map) ;;*;; Function definitions (defun ess-back-to-roxy () "Go to roxy prefix" (progn (end-of-line) (re-search-backward (concat ess-roxy-re " ?") (point-at-bol)) (goto-char (match-end 0)))) (defun ess-roxy-beg-of-entry () "Get point number at start of current entry, 0 if not in entry" (save-excursion (let (beg) (beginning-of-line) (setq beg -1) (if (not (ess-roxy-entry-p)) (setq beg 0) (setq beg (point))) (while (and (= (forward-line -1) 0) (ess-roxy-entry-p)) (setq beg (point))) beg))) (defun ess-roxy-in-header-p () "true if point is the description / details field" (save-excursion (let ((res t) (cont (ess-roxy-entry-p))) (beginning-of-line) (while cont (if (looking-at (concat ess-roxy-re " *[@].+")) (progn (setq res nil) (setq cont nil))) (setq cont (and (= (forward-line -1) 0) (ess-roxy-entry-p))) )res))) (defun ess-roxy-beg-of-field () "Get point number at beginning of current field, 0 if not in entry" (save-excursion (let (cont beg) (beginning-of-line) (setq beg 0) (setq cont t) (while (and (ess-roxy-entry-p) cont) (setq beg (point)) (if (looking-at (concat ess-roxy-re " *[@].+")) (setq cont nil)) (if (ess-roxy-in-header-p) (if (looking-at (concat ess-roxy-re " *$")) (progn (forward-line 1) (setq beg (point)) (setq cont nil)))) (if cont (setq cont (= (forward-line -1) 0)))) beg))) (defun ess-roxy-end-of-entry () " get point number at end of current entry, 0 if not in entry" (save-excursion (let ((end)) (end-of-line) (setq end -1) (if (not (ess-roxy-entry-p)) (setq end 0) (setq end (point))) (while (and (= (forward-line 1) 0) (ess-roxy-entry-p)) (end-of-line) (setq end (point))) end))) (defun ess-roxy-end-of-field () "get point number at end of current field, 0 if not in entry" (save-excursion (let ((end nil) (cont nil)) (setq end 0) (if (ess-roxy-entry-p) (progn (end-of-line) (setq end (point)))) (beginning-of-line) (forward-line 1) (setq cont t) (while (and (ess-roxy-entry-p) cont) (save-excursion (end-of-line) (setq end (point))) (if (or (and (ess-roxy-in-header-p) (looking-at (concat ess-roxy-re " *$"))) (looking-at (concat ess-roxy-re " *[@].+"))) (progn (forward-line -1) (end-of-line) (setq end (point)) (setq cont nil))) (if cont (setq cont (= (forward-line 1) 0)))) end))) (defun ess-roxy-entry-p (&optional field) "True if point is in a roxy entry" (and (save-excursion (beginning-of-line) (looking-at ess-roxy-re)) (or (null field) (string= (ess-roxy-current-field) field)))) (defun ess-roxy-narrow-to-field () "Go to to the start of current field" (interactive) (let ((beg (ess-roxy-beg-of-field)) (end (ess-roxy-end-of-field))) (narrow-to-region beg end))) (defun ess-roxy-extract-field () (let ((field (buffer-substring (ess-roxy-beg-of-entry) (ess-roxy-end-of-entry))) (prefix-re (ess-roxy-guess-str))) (with-temp-buffer (insert field) (goto-char (point-min)) (while (re-search-forward prefix-re (point-max) 'noerror) (replace-match "")) (buffer-substring (point-min) (point-max))))) (defun ess-roxy-adaptive-fill-function () "Return prefix for filling paragraph or nil if not determined." (when (ess-roxy-entry-p) (let ((roxy-str (car (split-string (ess-roxy-guess-str) "'")))) (if (ess-roxy-in-header-p) (save-excursion (ess-back-to-roxy) (re-search-forward "\\([ \t]*\\)" (line-end-position) t) (concat roxy-str "' " (match-string 1))) (concat roxy-str "' " (make-string ess-indent-offset ? )))))) (defun ess-roxy-current-field () "Return the name of the field at point." (and (not (ess-roxy-in-header-p)) (save-excursion (goto-char (ess-roxy-beg-of-field)) (if (re-search-forward (concat ess-roxy-re "[ \t]+@\\([[:alpha:]]+\\)") (line-end-position) t) (match-string-no-properties 1))))) (defun ess-roxy-maybe-indent-line () "Indent line when point is in a field, but not in its first line." (when (and (not (ess-roxy-in-header-p)) (not (equal (ess-roxy-current-field) "examples")) (save-excursion (beginning-of-line) (let ((line-n (count-lines 1 (point)))) (goto-char (ess-roxy-beg-of-field)) (not (equal line-n (count-lines 1 (point))))))) (ess-back-to-roxy) (delete-region (point) (progn (skip-chars-forward " \t") (point))) (insert (make-string ess-indent-offset ? )))) (defun ess-roxy-goto-func-def () "put point at start of function either that the point is in or below the current roxygen entry, error otherwise" (if (ess-roxy-entry-p) (progn (ess-roxy-goto-end-of-entry) (forward-line 1) (beginning-of-line)) (goto-char (car (ess-end-of-function))))) (defun ess-roxy-get-args-list-from-def () "get args list for current function" (save-excursion (ess-roxy-goto-func-def) (let ((args (ess-roxy-get-function-args))) (mapcar (lambda (x) (cons x '(""))) args)))) (defun ess-roxy-insert-args (args &optional here) "Insert an args list to the end of the roxygen entry for the function at point. if here is supplied start inputting `here'. Finish at end of line." (let* ((arg-des nil) (roxy-str (ess-roxy-guess-str))) (if (or (not here) (< here 1)) (progn (ess-roxy-goto-end-of-entry) (beginning-of-line) (if (not (looking-at "\=")) (progn (end-of-line)))) (goto-char here)) (while (stringp (car (car args))) (setq arg-des (pop args)) (unless (string= (car arg-des) "") (progn (insert (concat "\n" roxy-str " @param " (car arg-des) " ")) (insert (ess-replace-in-string (concat (car (cdr arg-des))) "\n" (concat "\n" roxy-str))) (if ess-roxy-fill-param-p (fill-paragraph))))))) (defun ess-roxy-merge-args (fun ent) "Take two args lists (alists) and return their union. Result holds all keys from both fun and ent but no duplicates and association from ent are preferred over entries from fun. Also, drop entries from ent that are not in fun and are associated with the empty string." (let ((res-arg nil) (arg-des)) (while (stringp (car (car fun))) (setq arg-des (pop fun)) (if (assoc (car arg-des) ent) (setq res-arg (cons (cons (car arg-des) (cdr (assoc (car arg-des) ent))) res-arg)) (setq res-arg (cons (cons (car arg-des) '("")) res-arg)))) (while (stringp (car (car ent))) (setq arg-des (pop ent)) (if (and (not (assoc (car arg-des) res-arg)) (not (string= (car (cdr arg-des)) ""))) (setq res-arg (cons (cons (car arg-des) (cdr arg-des)) res-arg)))) (nreverse res-arg))) (defun ess-roxy-update-entry () "Update the entry at the point or the entry above the function which the point is in. Add a template empty roxygen documentation if no roxygen entry is available. The template can be customized via the variable `ess-roxy-template-alist'. The parameter descriptions can are filled if `ess-roxy-fill-param-p' is non-nil." (interactive) (save-excursion (let* ((args-fun (ess-roxy-get-args-list-from-def)) (args-ent (ess-roxy-get-args-list-from-entry)) (args (ess-roxy-merge-args args-fun args-ent)) (roxy-str (ess-roxy-guess-str)) (line-break "") here key template tag-def) (ess-roxy-goto-func-def) (if (not (= (forward-line -1) 0)) (progn (insert "\n") (forward-line -1))) (if (and (not (looking-at "^\n")) (not (ess-roxy-entry-p))) (progn (end-of-line) (insert "\n"))) (if (ess-roxy-entry-p) (progn (setq here (1- (ess-roxy-delete-args))) (ess-roxy-insert-args args here)) (setq template (copy-sequence ess-roxy-template-alist)) (while (stringp (car (car template))) (setq tag-def (pop template)) (if (string= (car tag-def) "param") (ess-roxy-insert-args args (point)) (if (string= (car tag-def) "description") (insert (concat line-break roxy-str " " (cdr tag-def) "\n" roxy-str)) (if (string= (car tag-def) "details") (insert (concat line-break roxy-str " " (cdr tag-def))) (insert (concat line-break roxy-str " @" (car tag-def) " " (cdr tag-def)))) )) (setq line-break "\n")))))) (defun ess-roxy-goto-end-of-entry () "Put point at the top of the entry at point or above the function at point. Return t if the point is left in a roxygen entry, otherwise nil. Error if point is not in function or roxygen entry." (if (not (ess-roxy-entry-p)) (progn (goto-char (nth 0 (ess-end-of-function))) (forward-line -1))) (if (ess-roxy-entry-p) (progn (goto-char (ess-roxy-end-of-entry)) t) (forward-line) nil)) (defun ess-roxy-goto-beg-of-entry () "put point at the top of the entry at point or above the function at point. Return t if the point is left in a roxygen entry, otherwise nil. Error if point is not in function or roxygen entry." (if (not (ess-roxy-entry-p)) (progn (goto-char (nth 0 (ess-end-of-function))) (forward-line -1))) (if (ess-roxy-entry-p) (progn (goto-char (ess-roxy-beg-of-entry)) t) (forward-line) nil)) (defun ess-roxy-delete-args () "remove all args from the entry at point or above the function at point. Return 0 if no deletions were made other wise the point at where the last deletion ended" (save-excursion (let* ((args nil) (cont t) (field-beg 0) entry-beg entry-end field-end) (ess-roxy-goto-end-of-entry) (setq entry-beg (ess-roxy-beg-of-entry)) (setq entry-end (ess-roxy-end-of-entry)) (goto-char entry-end) (beginning-of-line) (while (and (<= entry-beg (point)) (> entry-beg 0) cont) (if (looking-at (concat ess-roxy-re " *@param")) (progn (setq field-beg (ess-roxy-beg-of-field)) (setq field-end (ess-roxy-end-of-field)) (delete-region field-beg (+ field-end 1)))) (setq cont nil) (if (= (forward-line -1) 0) (setq cont t))) field-beg))) (defun ess-roxy-get-args-list-from-entry () "fill an args list from the entry above the function where the point is" (save-excursion (let* (args entry-beg field-beg field-end args-text arg-name desc) (if (ess-roxy-goto-end-of-entry) (progn (setq roxy-str (ess-roxy-guess-str)) (beginning-of-line) (setq entry-beg (ess-roxy-beg-of-entry)) (while (and (< entry-beg (point)) (> entry-beg 0)) (if (looking-at (concat ess-roxy-re " *@param")) (progn (setq field-beg (ess-roxy-beg-of-field)) (setq field-end (ess-roxy-end-of-field)) (setq args-text (buffer-substring-no-properties field-beg field-end)) (setq args-text (ess-replace-in-string args-text roxy-str "")) (setq args-text (ess-replace-in-string args-text "[[:space:]]*@param *" "")) ;; (setq args-text ;; (ess-replace-in-string args-text "\n" "")) (string-match "[^[:space:]]*" args-text) (setq arg-name (match-string 0 args-text)) (setq desc (replace-regexp-in-string (concat "^" (regexp-quote arg-name) " *") "" args-text)) (setq args (cons (list (concat arg-name) (concat desc)) args)))) (forward-line -1)) args) nil)))) (defun ess-roxy-toggle-roxy-region (beg end) "Remove prefix roxy string in this region if point is in a roxy region, otherwise prefix all lines with the roxy string. Convenient for editing example fields." (interactive "r") (unless (use-region-p) (error "region is not active")) (ess-roxy-roxy-region beg end (ess-roxy-entry-p))) (defun ess-roxy-roxy-region (beg end &optional on) (save-excursion (let (RE to-string (roxy-str (ess-roxy-guess-str))) (narrow-to-region beg (- end 1)) (if on (progn (setq RE (concat ess-roxy-re " +?")) (setq to-string "")) (setq RE "^") (setq to-string (concat roxy-str " "))) (goto-char beg) (while (re-search-forward RE (point-max) 'noerror) (replace-match to-string)) (widen)))) (defun ess-roxy-preview () "Use a (possibly newly) connected R session and the roxygen package `ess-roxy-package' to generate the Rd code for entry at point, place it in a temporary buffer and return that buffer." (let* ((beg (ess-roxy-beg-of-entry)) (tmpf (make-temp-file "ess-roxy")) (roxy-buf (get-buffer-create " *RoxygenPreview*")) (R-old-roxy (concat "..results <- roxygen2:::roc_process(rd_roclet(), parse.files(P), \"\");" "cat(vapply(..results, function(x) roxygen2:::rd_out_cache$compute(x, format(x)), character(1)))" )) (R-new-roxy (concat "..results <- roc_proc_text(rd_roclet(), readChar(P, file.info(P)$size));" "cat(vapply(..results, format, character(1)))" )) (out-rd-roclet (cond ((string= "roxygen" ess-roxy-package) "make.Rd2.roclet()$parse") ;; must not line break strings to avoid getting +s in the output ((string= "roxygen2" ess-roxy-package) (concat "(function(P) { if(packageVersion('roxygen2') < '3.0.0') {" R-old-roxy "} else {" R-new-roxy "} })")) (t (error "need to hard code the roclet output call for roxygen package '%s'" ess-roxy-package)))) ) (if (= beg 0) (error "Point is not in a Roxygen entry")) (save-excursion (goto-char (ess-roxy-end-of-entry)) (forward-line 1) (if (ess-end-of-function nil t) (append-to-file beg (point) tmpf) (while (and (forward-line 1) (not (looking-at "^$")) (not (looking-at ess-roxy-re)))) (append-to-file beg (point) tmpf)) (ess-force-buffer-current) (ess-command (concat "print(suppressWarnings(require(" ess-roxy-package ", quietly=TRUE)))\n") roxy-buf) (with-current-buffer roxy-buf (goto-char 1) (if (search-forward-regexp "FALSE" nil t) (error (concat "Failed to load the " ess-roxy-package " package; " "in R, try install.packages(\"" ess-roxy-package "\")")))) (ess-command (concat out-rd-roclet "(\"" tmpf "\")\n") roxy-buf)) (delete-file tmpf) roxy-buf)) (defun ess-roxy-preview-HTML (&optional visit-instead-of-browse) "Use a (possibly newly) connected R session and the roxygen package to generate a HTML page for the roxygen entry at point and open that buffer in a browser. Visit the HTML file instead of showing it in a browser if `visit-instead-of-browse' is non-nil." (interactive "P") (let* ((roxy-buf (ess-roxy-preview)) (rd-tmp-file (make-temp-file "ess-roxy-" nil ".Rd")) (html-tmp-file (make-temp-file "ess-roxy-" nil ".html")) (rd-to-html (concat "Rd2HTML(\"" rd-tmp-file "\",\"" html-tmp-file "\", stages=c(\"render\"))")) ) (with-current-buffer roxy-buf (set-visited-file-name rd-tmp-file) (save-buffer) (kill-buffer roxy-buf)) (ess-force-buffer-current) (ess-command "print(suppressWarnings(require(tools, quietly=TRUE)))\n") (if visit-instead-of-browse (progn (ess-command (concat rd-to-html "\n")) (find-file html-tmp-file)) (ess-command (concat "browseURL(" rd-to-html ")\n"))))) (defun ess-roxy-preview-text () "Use the connected R session and the roxygen package to generate the text help page of the roxygen entry at point." (interactive) (with-current-buffer (ess-roxy-preview) (Rd-preview-help))) (defun ess-roxy-preview-Rd (&optional name-file) "Use the connected R session and the roxygen package to generate the Rd code for the roxygen entry at point. If called with a non-nil `name-file' (e.g. universal argument C-u), also set the visited file name of the created buffer to facilitate saving that file." (interactive "P") (let ((roxy-buf (ess-roxy-preview))) (pop-to-buffer roxy-buf) (if name-file (save-excursion (goto-char 1) (search-forward-regexp "name{\\(.+\\)}") (set-visited-file-name (concat (match-string 1) ".Rd")))) (Rd-mode) ;; why should the following be needed here? [[currently has no effect !!]] ;; usually in a *.Rd file fontification happens automatically (if (fboundp 'font-lock-ensure) (font-lock-ensure) ;; emacs <= 24.x.y: (font-lock-fontify-buffer)))) (defun ess-roxy-guess-str (&optional not-here) "guess the prefix used in the current roxygen block. If `not-here' is non-nil, guess the prefix for nearest roxygen block before the point" (save-excursion (if (ess-roxy-entry-p) (progn (goto-char (point-at-bol)) (search-forward-regexp ess-roxy-re)) (if not-here (search-backward-regexp ess-roxy-re))) (if (or not-here (ess-roxy-entry-p)) (match-string 0) ess-roxy-str))) (defun ess-roxy-hide-block () "hide current roxygen comment block" (interactive) (save-excursion (let ((end-of-entry (ess-roxy-end-of-entry)) (beg-of-entry (ess-roxy-beg-of-entry))) (hs-hide-block-at-point nil (list beg-of-entry end-of-entry))))) (defun ess-roxy-toggle-hiding () "Toggle hiding/showing of a block. See `hs-show-block' and `ess-roxy-hide-block'." (interactive) (hs-life-goes-on (if (hs-overlay-at (point-at-eol)) (hs-show-block) (ess-roxy-hide-block)))) (defun ess-roxy-show-all () "Hide all Roxygen entries in current buffer. " (interactive) (ess-roxy-hide-all t)) (defun ess-roxy-hide-all (&optional show) "Hide all Roxygen entries in current buffer. " (interactive) (hs-life-goes-on (save-excursion (goto-char (point-min)) (while (re-search-forward (concat ess-roxy-re) (point-max) t 1) (let ((end-of-entry (ess-roxy-end-of-entry))) (if show (hs-show-block) (ess-roxy-hide-block)) (goto-char end-of-entry) (forward-line 1)))))) (defun ess-roxy-previous-entry () "Go to beginning of previous Roxygen entry. " (interactive) (if (ess-roxy-entry-p) (progn (goto-char (ess-roxy-beg-of-entry)) (forward-line -1))) (search-backward-regexp ess-roxy-re (point-min) t 1) (goto-char (ess-roxy-beg-of-entry))) (defun ess-roxy-next-entry () "Go to beginning of next Roxygen entry. " (interactive) (if (ess-roxy-entry-p) (progn (goto-char (ess-roxy-end-of-entry)) (forward-line 1))) (search-forward-regexp ess-roxy-re (point-max) t 1) (goto-char (ess-roxy-beg-of-entry))) (defun ess-roxy-get-function-args () "Return the arguments specified for the current function as a list of strings." (save-excursion (let ((args-txt (progn (ess-beginning-of-function) (buffer-substring-no-properties (progn (search-forward-regexp "\\([=,-]+ *function *\\|^\s*function\\)" nil nil 1) (+ (point) 1)) (progn (ess-roxy-match-paren) (point)))))) (setq args-txt (replace-regexp-in-string "#+[^\"']*\n" "" args-txt)) (setq args-txt (replace-regexp-in-string "([^)]+)" "" args-txt)) (setq args-txt (replace-regexp-in-string "=[^,]+" "" args-txt)) (setq args-txt (replace-regexp-in-string "[ \t\n]+" "" args-txt)) (split-string args-txt ",")))) (defun ess-roxy-match-paren () "Go to the matching parenthesis" (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) ((looking-at "\\s\)") (forward-char 1) (backward-list 1)))) (defun ess-roxy-complete-tag () "complete the tag at point" (let ((token-string (thing-at-point 'symbol))) (when (and token-string (string-match "@.+" token-string)) (comint-dynamic-simple-complete (replace-regexp-in-string "^@" "" token-string) (append ess-roxy-tags-noparam ess-roxy-tags-param))))) (defun ess-roxy-tag-completion () "Completion data for emacs >= 24" (when (save-excursion (re-search-backward "@\\<\\(\\w*\\)" (point-at-bol) t)) (let ((token (match-string-no-properties 1)) (beg (match-beginning 1)) (end (match-end 1))) (when (and end (= end (point))) (list beg end (append ess-roxy-tags-noparam ess-roxy-tags-param) :exclusive 'no))))) (defun ess-roxy-remove-roxy-re (string) "Remove the `ess-roxy-str' before sending to R process. Useful for sending code from example section. This function is placed in `ess-presend-filter-functions'." ;; Only strip the prefix in the @examples field, and only when ;; STRING is entirely contained inside it. This allows better ;; behaviour for evaluation of regions. (if (and (ess-roxy-entry-p "examples") (with-temp-buffer (insert string) (ess-roxy-entry-p))) (replace-regexp-in-string ess-roxy-re "" string) string)) (add-hook 'ess-presend-filter-functions 'ess-roxy-remove-roxy-re nil) (defun ess-roxy-find-par-end (stop-point &rest stoppers) (mapc #'(lambda (stopper) (when (and (> stop-point (point)) (save-excursion (re-search-forward stopper stop-point t))) (setq stop-point (match-beginning 0)))) stoppers) (save-excursion (goto-char stop-point) (line-end-position 0))) ;;*;; Advices (defmacro ess-roxy-with-filling-context (examples &rest body) (declare (indent 0) (debug (&rest form))) `(let ((comment-start "#+'[ \t]+#") (comment-start-skip "#+'[ \t]+# *") (comment-use-syntax nil) (adaptive-fill-first-line-regexp (concat ess-roxy-re "[ \t]*")) (paragraph-start (concat "\\(" ess-roxy-re "\\(" paragraph-start "\\|[ \t]*@" "\\)" "\\)\\|\\(" paragraph-start "\\)")) (temp-table (if ,examples (make-syntax-table S-syntax-table) Rd-mode-syntax-table))) (when ,examples ;; Prevent the roxy prefix to be interpreted as comment or string ;; starter (modify-syntax-entry ?# "w" temp-table) (modify-syntax-entry ?' "w" temp-table)) ;; Neutralise (comment-normalize-vars) because it modifies the ;; comment-start regexp in such a way that paragraph filling of ;; comments in @examples fields does not work (cl-letf (((symbol-function 'comment-normalize-vars) #'ignore)) (with-syntax-table temp-table ,@body)))) (defadvice ess-eval-line-and-step (around ess-eval-line-and-step-roxy) "evaluate line but do not skip over comment (roxy) lines" (if (ess-roxy-entry-p) (let ((simple-next t)) ad-do-it) ad-do-it)) (defadvice ess-indent-command (around ess-roxy-toggle-hiding) "hide this block if we are at the beginning of the line" (if (and (= (point) (point-at-bol)) (ess-roxy-entry-p) 'ess-roxy-hide-show-p) (progn (ess-roxy-toggle-hiding)) ad-do-it)) (defadvice fill-paragraph (around ess-roxy-fill-advise) "Fill roxygen paragraphs." (cond ;; Regular case ((not (and (eq major-mode 'ess-mode) (string= ess-dialect "R"))) ad-do-it) ;; Filling of code comments in @examples roxy field ((and (ess-roxy-entry-p) (save-excursion (back-to-indentation) (looking-at "#"))) (ess-roxy-with-filling-context t ad-do-it)) ((and (not (ess-roxy-entry-p)) (ess-within-comment-p)) ad-do-it) ;; Filling of call arguments with point on call name ((and ess-fill-calls (ess-within-call-name-p)) (save-excursion (skip-chars-forward "^([") (forward-char) (ess-fill-args))) ;; Filling of continuations ((and ess-fill-continuations (ess-within-continuation-p)) (ess-fill-continuations)) ;; Filling of call arguments ((and ess-fill-calls (ess-within-call-p)) (ess-fill-args)) ;; Filling of roxy blocks ((ess-roxy-entry-p) (save-excursion (let* ((saved-pos (point)) (saved-line (line-number-at-pos)) (saved-col (current-column)) (buffer (current-buffer)) (par-start (save-excursion (if (save-excursion (and (backward-paragraph) (forward-paragraph) (<= (point) saved-pos))) (line-beginning-position) (progn (backward-paragraph) (point))))) (par-end (ess-roxy-find-par-end (save-excursion (forward-paragraph) (point)) (concat ess-roxy-re "[ \t]*@examples\\b") "^[^#]"))) ;; Refill the whole structural paragraph sequentially, field by ;; field, stopping at @examples (ess-roxy-with-filling-context nil (save-excursion (save-restriction (narrow-to-region par-start par-end) (goto-char 0) (while (< (point) (point-max)) (ess-roxy-maybe-indent-line) ad-do-it (forward-paragraph)))))))) (t ad-do-it))) (defadvice move-beginning-of-line (around ess-roxy-beginning-of-line) "move to start" (if (ess-roxy-entry-p) (let ((new-pos (save-excursion (end-of-line) (and (re-search-backward (concat ess-roxy-re " ?") (point-at-bol) t) (match-end 0))))) (if (or (bolp) (< new-pos (point))) (goto-char new-pos) ad-do-it)) ad-do-it)) (defadvice back-to-indentation (around ess-roxy-back-to-indentation) "Handle back-to-indentation in roxygen doc" (if (ess-roxy-entry-p) (progn (end-of-line) (re-search-backward (concat ess-roxy-re " *") (point-at-bol) t) (goto-char (match-end 0))) ad-do-it)) (defun ess-roxy-indent-new-comment-line () (if (not (ess-roxy-entry-p)) (indent-new-comment-line) (ess-roxy-indent-on-newline))) (defun ess-roxy-newline-and-indent () (if (or (not (ess-roxy-entry-p)) (not ess-roxy-insert-prefix-on-newline)) (newline-and-indent) (ess-roxy-indent-on-newline))) (defun ess-roxy-indent-on-newline () "Insert a newline in a roxygen field." (cond ;; Point at beginning of first line of entry; do nothing ((= (point) (ess-roxy-beg-of-entry)) (newline-and-indent)) ;; Otherwise: skip over roxy comment string if necessary and then ;; newline and then inset new roxy comment string (t (let ((point-after-roxy-string (save-excursion (forward-line 0) (ess-back-to-roxy) (point)))) (goto-char (max (point) point-after-roxy-string))) (newline-and-indent) (insert (concat (ess-roxy-guess-str t) " "))))) (provide 'ess-roxy) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-roxy.el ends here ess-17.11/lisp/ess-rutils.el0000444005071500004540000004106413202324174012647 00000000000000;;; ess-rutils.el --- R functions and keybindings to use in iESS. ;; Author: Sebastian Luque ;; Created: Thu Nov 10 02:20:36 2004 (UTC) ;; Last-Updated: 2013-09-22T16:08:47+0000 ;; By: Sebastian P. Luque ;; Version: $Id$ ;; Compatibility: GNU Emacs >= 22.0.50.1 ;; Copyright (c) 2005-2013 Sebastian P. Luque ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This library provides key bindings for performing basic R functions, ;; such as loading and managing packages, as well as object manipulation ;; (listing, viewing, and deleting), and an alternative to RSiteSearch() ;; that uses the browse-url function. Load the library with the method you ;; prefer (e.g. M-x load-file), but the easiest is probably to: a) make ;; sure your load-path variable includes the directory where ess-rutils.el ;; resides, and b) include (require 'ess-rutils) statement in your ;; ~/.emacs. ;; ;; Usage: ;; ;; Once R is started with M-x R, you should have the key bindings defined ;; at the end of this file working in your iESS process buffers. Simply ;; type the desired key binding. ;; ;; Acknowledgements: ;; ;; I am grateful to John Fox for having written his init.el file for ;; XEmacs, which motivated this Emacs alternative. I wanted to add some ;; object management comforts and came across Stephen Eglen's ;; ess-rdired.el, which provides a lot of these. ess-rutils.el builds upon ;; on a *lot* of ideas from ess-rdired.el. ;;; Code: ;; Autoloads and requires (autoload 'ess-rdired "ess-rdired" "View *R* objects in a dired-like buffer." t) (require 'ess-site) (defvar ess-rutils-buf "*R temp*" "Name of temporary R buffer.") (defvar ess-rutils-mode-map nil "Keymap for the *R temp* buffer.") (defvar ess-rutils-rhtml-fn (expand-file-name "ess-rutils-help-start.R" ess-etc-directory) "Path to the file defining the R function .rutils.help.start(). This file is loaded into the inferior R process so that `ess-rutils-html-docs' can use .rutils.help.start().") (if ess-rutils-mode-map () (setq ess-rutils-mode-map (make-sparse-keymap)) (define-key ess-rutils-mode-map "l" 'ess-rutils-loadpkg) (define-key ess-rutils-mode-map "i" 'ess-rutils-mark-install) (define-key ess-rutils-mode-map "I" 'ess-rutils-install) (define-key ess-rutils-mode-map "u" 'ess-rutils-unmark) (define-key ess-rutils-mode-map "q" 'ess-rutils-quit) (define-key ess-rutils-mode-map "?" 'ess-rutils-help)) (defun ess-rutils-mode () "Major mode for output from `ess-rutils-local-pkgs' and `ess-rutils-repos-pkgs'. Useful bindings to handle package loading and installing. \\{ess-rutils-mode-map}" (kill-all-local-variables) (use-local-map ess-rutils-mode-map) (setq major-mode 'ess-rutils-mode) (setq mode-name (concat "R utils " ess-local-process-name))) (defun ess-rutils-local-pkgs () "List all packages in all libraries." (interactive) (if (get-buffer ess-rutils-buf) (progn (set-buffer ess-rutils-buf) (setq buffer-read-only nil))) (ess-execute "writeLines(paste(' ', sort(.packages(all.available=TRUE)), sep=''))" nil (substring ess-rutils-buf 1 (- (length ess-rutils-buf) 1))) (pop-to-buffer ess-rutils-buf) (save-excursion (beginning-of-line) (open-line 1) (insert "**Available packages in all local R libraries**")) (setq buffer-read-only t) (ess-rutils-mode) (if (featurep 'fit-frame) (fit-frame))) (defun ess-rutils-namepkg () "Return name of the package on current line." (save-excursion (beginning-of-line) (if (looking-at "*") nil (forward-char 2) (let (beg) (setq beg (point)) (end-of-line) ;assume package names are separated by newlines. (buffer-substring-no-properties beg (point)))))) (defun ess-rutils-loadpkg () "Load package from a library." (interactive) (let ((oklocal nil)) (save-excursion (goto-char (point-min)) (if (search-forward "libraries**" nil t) (setq oklocal t))) (if oklocal (progn (setq pkg (ess-rutils-namepkg)) (ess-execute (concat "library('" pkg "', character.only=TRUE)") 'buffer)) nil))) (defun ess-rutils-repos-pkgs () "List available packages from the repositories as listed by getOptions(\"repos\") in the current R session." (interactive) (if (get-buffer ess-rutils-buf) (progn (set-buffer ess-rutils-buf) (setq buffer-read-only nil))) (ess-execute (concat "writeLines(paste(' \"', " "rownames(available.packages()), '\"', sep=''))") nil (substring ess-rutils-buf 1 (- (length ess-rutils-buf) 1))) (pop-to-buffer ess-rutils-buf) (save-excursion (kill-line 5) (insert "**packages available to install**\n")) (setq buffer-read-only t) (ess-rutils-mode) (if (featurep 'fit-frame) (fit-frame))) (defun ess-rutils-mark-install (arg) "Mark the current package for installing. ARG lines to mark is passed to `ess-rutils-mark'." (interactive "p") ;; if this is not an install package buffer return nil. (let ((okmark nil)) (save-excursion (goto-char (point-min)) (if (search-forward "install**" nil t) (setq okmark t))) (if okmark (ess-rutils-mark "I" arg) nil))) (defun ess-rutils-unmark (arg) "Unmark the packages, passing ARG lines to unmark to `ess-rutils-mark'." (interactive "p") (ess-rutils-mark " " arg)) ;; The next two functions almost verbatim from ess-rdired.el. (defun ess-rutils-mark (mark-char arg) "Use MARK-CHAR to mark package on current line, or next ARG lines." ;; If we are on first line, mark all lines. (let ((buffer-read-only nil) move) (if (eq (point-min) (save-excursion (beginning-of-line) (point))) (progn ;; we are on first line, so make a note of point, and count ;; how many objects we want to delete. Then at end of defun, ;; restore point. (setq move (point)) (forward-line 1) (setq arg (count-lines (point) (point-max))))) (while (and (> arg 0) (not (eobp))) (setq arg (1- arg)) (beginning-of-line) (progn (insert mark-char) (delete-char 1) (forward-line 1))) (if move (goto-char move)))) (defun ess-rutils-install () "Install all packages flagged for installation, and return to the iESS buffer. User is asked for confirmation." (interactive) (let ((inst "install.packages(c(") (count 0)) (save-excursion (goto-line 2) ;; as long as number of lines between buffer start and point is smaller ;; than the total number of lines in buffer, go to the beginning of the ;; line, check if line is flagged, and if it is, advance the counter by ;; one, create the root of install function, add the package name, ;; insert a comma, and move forward a line. (while (< (count-lines (point-min) (point)) (count-lines (point-min) (point-max))) (beginning-of-line) (if (looking-at "^I ") (setq count (1+ count) inst (concat inst (ess-rutils-namepkg) ", " ))) (forward-line 1))) (if (> count 0) ;found packages to install (progn ;; Fix the install function created before and close it. (setq inst (concat (substring inst 0 (- (length inst) 2)) "))")) ;; (if (yes-or-no-p (format "Install %d %s " count (if (> count 1) "packages" "package"))) (progn (ess-execute inst 'buffer) (ess-rutils-quit)))) ;; else nothing to install (message "no packages flagged to install")))) (defun ess-rutils-update-pkgs (lib repos) "Update packages in library LIB and repos REPOS. Defaults are the first element returned by .libPaths() for LIB, and the repository named CRAN returned by getOption(\"repos\") for REPOS. This also uses checkBuilt=TRUE to rebuild installed packages if needed." (interactive "DPath to library to update: \nsrepos: ") (if (string= "" lib) (setq lib (car (ess-get-words-from-vector "as.character(.libPaths())\n")))) (if (string= "" repos) (setq repos (car (ess-get-words-from-vector "as.character(getOption(\"repos\")[\"CRAN\"])\n")))) (ess-execute (concat "update.packages(lib.loc='" lib "', repos='" repos "', ask=FALSE, checkBuilt=TRUE)") 'buffer)) (defun ess-rutils-apropos (string) "Search for STRING using apropos." (interactive "sApropos search for? ") (if (get-buffer ess-rutils-buf) (progn (set-buffer ess-rutils-buf) (setq buffer-read-only nil))) (ess-execute (concat "apropos('" string "')") nil (substring ess-rutils-buf 1 (- (length ess-rutils-buf) 1))) (pop-to-buffer ess-rutils-buf) (setq buffer-read-only t) (ess-rutils-mode)) (defun ess-rutils-rm-all () "Remove all R objects." (interactive) (if (y-or-n-p "Delete all objects? ") (ess-execute "rm(list=ls())" 'buffer))) (defun ess-rutils-objs () "Manipulate R objects; wrapper for `ess-rdired'." (interactive) (ess-rdired) (if (featurep 'fit-frame) (fit-frame))) (defun ess-rutils-load-wkspc (file) "Load workspace FILE into R." (interactive "fFile with workspace to load: ") (ess-execute (concat "load('" file "')") 'buffer)) (defun ess-rutils-save-wkspc (file) "Save FILE workspace. File extension not required." (interactive "FSave workspace to file (no extension): ") (ess-execute (concat "save.image('" file ".RData')") 'buffer)) (defun ess-rutils-quit () "Kill the ess-rutils buffer and return to the iESS buffer." (interactive) (ess-switch-to-end-of-ESS) (kill-buffer ess-rutils-buf)) (defun ess-rutils-html-docs (&optional remote) "Use `browse-url' to navigate R html documentation. Documentation is produced by a modified help.start(), that returns the URL produced by GNU R's http server. This function is defined in a file given by the path in variable `ess-rutils-rhtml-fn'. If called with a prefix, the modified help.start() is called with update=TRUE. The optional REMOTE argument should be a string with a valid URL for the 'R_HOME' directory on a remote server (defaults to NULL)." (interactive) (let* ((update (if current-prefix-arg "update=TRUE" "update=FALSE")) (remote (if (or (and remote (not (string= "" remote)))) (concat "remote=" remote) "remote=NULL")) (rhtml (format ".rutils.help.start(%s, %s)\n" update remote)) (tmpbuf (get-buffer-create "**ess-rutils-mode**"))) (ess-command rhtml tmpbuf) (set-buffer tmpbuf) (let* ((begurl (search-backward "http://")) (endurl (search-forward "index.html")) (url (buffer-substring-no-properties begurl endurl))) (browse-url url)) (kill-buffer tmpbuf))) (defun ess-rutils-rsitesearch (string) "Search the R archives for STRING, using default criteria, and show results using `browse-url'. If called with a prefix, options are offered (with completion) for matches per page, sections of the archives to search, displaying results in long or short formats, and sorting by any given field. Options should be separated by value of `crm-default-separator'." (interactive "sSearch string: ") (let ((site "http://search.r-project.org/cgi-bin/namazu.cgi?query=") (okstring (replace-regexp-in-string " +" "+" string))) (if current-prefix-arg (let ((mpp (concat "&max=" (completing-read "Matches per page: " '(("20" 1) ("30" 2) ("40" 3) ("50" 4) ("100" 5))))) (format (concat "&result=" (completing-read "Format: " '(("normal" 1) ("short" 2)) nil t "normal" nil "normal"))) (sortby (concat "&sort=" (completing-read "Sort by: " '(("score" 1) ("date:late" 2) ("date:early" 3) ("field:subject:ascending" 4) ("field:subject:decending" 5) ("field:from:ascending" 6) ("field:from:decending" 7) ("field:size:ascending" 8) ("field:size:decending" 9)) nil t "score" nil "score"))) (restrict (concat "&idxname=" (mapconcat 'identity (completing-read-multiple "Limit search to: " '(("Rhelp02a" 1) ("functions" 2) ("docs" 3) ("Rhelp01" 4)) nil t "Rhelp02a,functions,docs" nil "Rhelp02a,functions,docs") "&idxname=")))) (browse-url (concat site okstring mpp format sortby restrict))) (browse-url (concat site okstring "&max=20&result=normal&sort=score" "&idxname=Rhelp02a&idxname=functions&idxname=docs"))))) (defun ess-rutils-help () "Show help on `ess-rutils-mode'." (interactive) (describe-function 'ess-rutils-mode)) (defun ess-rutils-help-search (string) "Search for STRING using help.search()." (interactive "sString to search for? ") (if (get-buffer ess-rutils-buf) (progn (set-buffer ess-rutils-buf) (setq buffer-read-only nil))) (ess-execute (concat "help.search('" string "')") nil (substring ess-rutils-buf 1 (- (length ess-rutils-buf) 1))) (pop-to-buffer ess-rutils-buf) (setq buffer-read-only t) (ess-rutils-mode)) ;; Customizable variable to allow ess-rutils-keys to activate default key bindings. ;; Suggested by Richard M. Heiberger. (defcustom ess-rutils-keys t "Non-nil means activate ess-rutils keybindings and menu." :group 'ess-R :type 'boolean) ;; Keybindings (defun ess-rutils-keys () "Provide key bindings." (interactive) (when ess-rutils-keys (define-key inferior-ess-mode-map [(control c) (control \.) (l)] 'ess-rutils-local-pkgs) (define-key inferior-ess-mode-map [(control c) (control \.) (r)] 'ess-rutils-repos-pkgs) (define-key inferior-ess-mode-map [(control c) (control \.) (u)] 'ess-rutils-update-pkgs) (define-key inferior-ess-mode-map [(control c) (control \.) (a)] 'ess-rutils-apropos) (define-key inferior-ess-mode-map [(control c) (control \.) (m)] 'ess-rutils-rm-all) (define-key inferior-ess-mode-map [(control c) (control \.) (o)] 'ess-rutils-objs) (define-key inferior-ess-mode-map [(control c) (control \.) (w)] 'ess-rutils-load-wkspc) (define-key inferior-ess-mode-map [(control c) (control \.) (s)] 'ess-rutils-save-wkspc) (define-key inferior-ess-mode-map [(control c) (control \.) (d)] 'ess-change-directory) (define-key inferior-ess-mode-map [(control c) (control \.) (H)] 'ess-rutils-html-docs))) (easy-menu-define ess-rutils-mode-menu inferior-ess-mode-menu "Submenu of `inferior-ess-mode' to use with RUtils." '("RUtils" ["Manage objects" ess-rutils-objs t] ["Remove objects" ess-rutils-rm-all t] "------" ["Local packages" ess-rutils-local-pkgs t] ["Packages in repositories" ess-rutils-repos-pkgs t] ["Update packages" ess-rutils-update-pkgs t] "------" ["Load workspace" ess-rutils-load-wkspc t] ["Save workspace" ess-rutils-save-wkspc t] ["Change directory" ess-change-directory t] "------" ["Browse HTML" ess-rutils-html-docs t] ["Apropos" ess-rutils-apropos t])) (easy-menu-add-item inferior-ess-mode-menu nil ess-rutils-mode-menu) (add-hook 'inferior-ess-mode-hook 'ess-rutils-keys t) (add-hook 'ess-r-post-run-hook (lambda () (ess--inject-code-from-file ess-rutils-rhtml-fn)) t) (provide 'ess-rutils) ;;; ess-rutils.el ends here ess-17.11/lisp/ess-s-lang.el0000444005071500004540000011511313202324174012503 00000000000000;;; ess-s-lang.el --- Support for editing S source code ;; Copyright (C) 1989-1997 D. Bates, Kademan, Ritter, D.M. Smith, K. Hornik, ;; R.M. Heiberger, M. Maechler, and A.J. Rossini. ;; Copyright (C) 1998-2015 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 26 Aug 1997 ;; Maintainer: ESS-core ;; This file is part of ESS (Emacs Speaks Statistics). ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for general editing S source code (specializes to S, S+, R). ;;; Code: ; Requires and autoloads (require 'ess-utils) (ess-message "[ess-s-lang:] (def** ) only ...") ; Configuration variables (defvar S-syntax-table (let ((S-syntax-table (make-syntax-table))) (modify-syntax-entry ?\\ "\\" S-syntax-table) (modify-syntax-entry ?+ "." S-syntax-table) (modify-syntax-entry ?- "." S-syntax-table) (modify-syntax-entry ?= "." S-syntax-table) (modify-syntax-entry ?% "." S-syntax-table) (modify-syntax-entry ?< "." S-syntax-table) (modify-syntax-entry ?> "." S-syntax-table) (modify-syntax-entry ?& "." S-syntax-table) (modify-syntax-entry ?| "." S-syntax-table) (modify-syntax-entry ?\' "\"" S-syntax-table) (modify-syntax-entry ?\" "\"" S-syntax-table) (modify-syntax-entry ?# "<" S-syntax-table) ; open comment (modify-syntax-entry ?\n ">" S-syntax-table) ; close comment ;;(modify-syntax-entry ?. "w" S-syntax-table) ; "." used in S obj names (modify-syntax-entry ?. "_" S-syntax-table) ; see above/below, ; plus consider separation. (modify-syntax-entry ?$ "_" S-syntax-table); foo$comp = 1 symbol(completion) (modify-syntax-entry ?@ "_" S-syntax-table); foo@slot = 1 symbol(completion) (modify-syntax-entry ?_ "_" S-syntax-table) (modify-syntax-entry ?: "_" S-syntax-table) (modify-syntax-entry ?* "." S-syntax-table) (modify-syntax-entry ?< "." S-syntax-table) (modify-syntax-entry ?> "." S-syntax-table) (modify-syntax-entry ?/ "." S-syntax-table) S-syntax-table) "Syntax table for S code." ) (defvar S-editing-alist '((paragraph-start . (concat "\\s-*$\\|" page-delimiter)) (paragraph-separate . (concat "\\s-*$\\|" page-delimiter)) (paragraph-ignore-fill-prefix . t) (require-final-newline . mode-require-final-newline) ;;(comment-indent-function . 'S-comment-indent) ;;(ess-comment-indent . 'S-comment-indent) ;;(ess-indent-line . 'S-indent-line) ;;(ess-calculate-indent . 'ess-calculate-indent) (indent-line-function . 'ess-indent-line) (parse-sexp-ignore-comments . t) (ess-style . ess-default-style) ;;(ess-keep-dump-files . 'ask) (ess-mode-syntax-table . S-syntax-table) ;; For Changelog add, require ' ' before <- : "attr<-" is a function name : (add-log-current-defun-header-regexp . "^\\(.+\\)\\s-+<-[ \t\n]*function") (ess-font-lock-keywords . 'ess-S-font-lock-keywords) (ess-font-lock-defaults . (ess--extract-default-fl-keywords ess-S-font-lock-keywords)) (font-lock-defaults . '(ess-font-lock-defaults nil nil ((?\. . "w") (?\_ . "w")))) ) "General options for S and S+ source files.") (defvar inferior-S-language-start '(concat "options(" "STERM='" ess-STERM "'" ", str.dendrogram.last=\"'\"" (if ess-editor (concat ", editor='" ess-editor "'")) (if ess-pager (concat ", pager='" ess-pager "', help.pager='" ess-pager "'")) ", show.error.locations=TRUE" ")") "S language expression for startup -- default for all S dialects.") (defconst S-common-cust-alist '((ess-language . "S") (inferior-ess-exit-command . "q()\n") (inferior-ess-language-start . (eval inferior-S-language-start)) (comint-use-prompt-regexp . t) ;;use fields if nil (comint-process-echoes . t) ;; these prompt are the same for all S-languages As long as custom prompt ;; ends in inferior-ess-primary-prompt everything should work as expected. (inferior-ess-primary-prompt . "> ") ;; (inferior-ess-secondary-prompt . "[+:] ") ;; catch Selection: and alike (inferior-ess-secondary-prompt . "+ ") ;; catch Selection: and alike (comment-start . "#") (ess-imenu-generic-expression . ess-imenu-S-generic-expression) (comment-add . 1) (comment-start-skip . "#+ *") (comment-use-syntax . t) ; see log for bug report 2013-06-07 (comment-column . 40) (ess-no-skip-regexp . (concat "^ *@\\|" (default-value 'ess-no-skip-regexp))) ;; inferior-ess-prompt is used by comint for navigation, only if ;; comint-use-prompt-regexp is t; (transcript-mode also relies on this regexp) (inferior-ess-prompt . inferior-S-prompt) ;customizable (ess-get-help-topics-function . #'ess-s-get-help-topics-function) (ess-getwd-command . "getwd()\n") (ess-setwd-command . "setwd('%s')\n") (ess-funargs-command . ".ess_funargs(\"%s\")\n") (fill-nobreak-predicate . 'ess-inside-string-p) (normal-auto-fill-function . 'ess-do-auto-fill) (ess-execute-screen-options-command . "options(width=%d, length=99999)\n") ) "S-language common settings for all -customize-alist s") (defconst S+common-cust-alist (append '((ess-suffix . "S") (ess-mode-syntax-table . S-syntax-table) (ess-help-sec-regex . ess-help-S+-sec-regex) (ess-help-sec-keys-alist . ess-help-S+sec-keys-alist) (ess-change-sp-regexp . ess-S+-change-sp-regexp) (ess-function-pattern . ess-s-function-pattern) (ess-function-template . " <- \n#\nfunction()\n{\n\n}\n") (ess-dump-filename-template . (replace-regexp-in-string "S$" ess-suffix ; in the one from custom: ess-dump-filename-template-proto)) (ess-traceback-command . "traceback()\n") (ess-mode-editing-alist . S-editing-alist) (ess-dumped-missing-re . "\\(\\(<-\\|=\\)\nDumped\n\\'\\)\\|\\(\\(<-\\|=\\)\\(\\s \\|\n\\)*\\'\\)") (ess-syntax-error-re . "\\(Syntax error: .*\\) at line \\([0-9]*\\), file \\(.*\\)$") (inferior-ess-objects-command . inferior-Splus-objects-command) (ess-describe-object-at-point-commands . 'ess-S-describe-object-at-point-commands) (inferior-ess-font-lock-keywords . 'inferior-S-font-lock-keywords) (ess-editor . S-editor) (ess-pager . S-pager) ) S-common-cust-alist) "Common settings for all S+<*>-customize-alist s" ) ;;; Changes from S to S-PLUS 3.x. (standard S3 should be in ess-s-lang!). (defconst ess-help-S+sec-keys-alist '((?a . "ARGUMENTS:") (?b . "BACKGROUND:") (?B . "BUGS:") (?d . "DESCRIPTION:") (?D . "DETAILS:") (?e . "EXAMPLES:") (?n . "NOTE:") (?O . "OPTIONAL ARGUMENTS:") (?R . "REQUIRED ARGUMENTS:") (?r . "REFERENCES:") (?s . "SEE ALSO:") (?S . "SIDE EFFECTS:") (?u . "USAGE:") (?v . "VALUE:")) "Alist of (key . string) pairs for use in section searching.") ;;; `key' indicates the keystroke to use to search for the section heading ;;; `string' in an S help file. `string' is used as part of a ;;; regexp-search, and so specials should be quoted. ;; S ver.3 (NOT S-Plus) (defconst ess-help-S3-sec-keys-alist '((?a . "ARGUMENTS:") (?b . "BACKGROUND:") (?B . "BUGS:") (?d . "DESCRIPTION:") (?D . "DETAILS:") (?e . "EXAMPLES:") (?n . "NOTE:") (?r . "REFERENCES:") (?s . "SEE ALSO:") (?S . "SIDE EFFECTS:") (?u . "USAGE:") (?v . "VALUE:")) "Help section keys for S ver.3.") ;; S ver.4 (NOT S-Plus) (defconst ess-help-S4-sec-keys-alist '((?a . "ARGUMENTS:") (?b . "BACKGROUND:") (?B . "BUGS:") (?d . "DESCRIPTION:") (?D . "DETAILS:") (?e . "EXAMPLES:") (?n . "NOTE:") (?r . "REFERENCES:") (?s . "SEE ALSO:") (?S . "SIDE EFFECTS:") (?u . "USAGE:") (?v . "VALUE:")) "Help section keys for S4.") (defconst ess-help-S+-sec-regex "^[A-Z. ---]+:$" "Reg(ular) Ex(pression) of section headers in help file.") ;;; S-mode extras of Martin Maechler, Statistik, ETH Zurich. ;;; See also ./ess-utils.el ;; Seth's idea; see ess-toggle-S-assign-key below (defvar ess-S-assign-key [?\C-=] ;; = "\C-c=" ; old-default: "_" "This key is mapped to insert `ess-S-assign' (by default '<-'), when \\[ess-toggle-S-assign-key] is called.") (defvar ess-S-assign-key-last nil "This caches the previous value (binding) of `ess-S-assign-key'. It allows \\[ess-toggle-S-assign-key] to toggle back to the previous definition.") ; Function Definitions (defun S-comment-indent () "Indentation for S comments." (if (or (looking-at "###") (and (looking-at "#!") (= 1 (line-number-at-pos)))) (current-column) (if (looking-at "##") (let ((tem (ess-calculate-indent))) (if (listp tem) (car tem) tem)) (skip-chars-backward " \t") (max (if (bolp) 0 (1+ (current-column))) comment-column)))) ;; VS: these are ess-indent-line and ess-calculate-indent from 2004 already,so ;; commented out to avoid confusion: ;; (defun S-indent-line () ;; "Indent current line as S code. ;; Return the amount the indentation changed by." ;; (let ((indent (S-calculate-indent nil)) ;; beg shift-amt ;; (case-fold-search nil) ;; (pos (- (point-max) (point)))) ;; (beginning-of-line) ;; (setq beg (point)) ;; (cond ((eq indent nil) ;; (setq indent (current-indentation))) ;; (t ;; (skip-chars-forward " \t") ;; (cond ((and ess-indent-with-fancy-comments ;; ### or #! ;; (or (looking-at "###") ;; (and (looking-at "#!") (= 1 (line-number-at-pos))))) ;; (setq indent 0)) ;; ;; Single # comment ;; ((and ess-indent-with-fancy-comments ;; (looking-at "#") (not (looking-at "##"))) ;; (setq indent comment-column)) ;; (t ;; (if (eq indent t) (setq indent 0)) ;; (if (listp indent) (setq indent (car indent))) ;; (cond ((and (looking-at "else\\b") ;; (not (looking-at "else\\s_"))) ;; (setq indent (save-excursion ;; (ess-backward-to-start-of-if) ;; (+ ess-else-offset (current-indentation))))) ;; ((= (following-char) ?}) ;; (setq indent ;; (+ indent ;; (- ess-close-brace-offset ess-indent-offset)))) ;; ((= (following-char) ?{) ;; (setq indent (+ indent ess-brace-offset)))))))) ;; (skip-chars-forward " \t") ;; (setq shift-amt (- indent (current-column))) ;; (if (zerop shift-amt) ;; (if (> (- (point-max) pos) (point)) ;; (goto-char (- (point-max) pos))) ;; (delete-region beg (point)) ;; (indent-to indent) ;; ;; If initial point was within line's indentation, ;; ;; position after the indentation. ;; ;; Else stay at same point in text. ;; (if (> (- (point-max) pos) (point)) ;; (goto-char (- (point-max) pos)))) ;; shift-amt)) ;; (defun S-calculate-indent (&optional parse-start) ;; "Return appropriate indentation for current line as S code. ;; In usual case returns an integer: the column to indent to. ;; Returns nil if line starts inside a string, t if in a comment." ;; (save-excursion ;; (beginning-of-line) ;; (let ((indent-point (point)) ;; (beginning-of-defun-function nil) ;; don't call ess-beginning-of-function ;; (case-fold-search nil) ;; state ;; containing-sexp) ;; (if parse-start ;; (goto-char parse-start) ;; (beginning-of-defun)) ;; (while (< (point) indent-point) ;; (setq parse-start (point)) ;; (setq state (parse-partial-sexp (point) indent-point 0)) ;; (setq containing-sexp (car (cdr state)))) ;; (cond ((or (nth 3 state) (nth 4 state)) ;; ;; return nil or t if should not change this line ;; (nth 4 state)) ;; ((null containing-sexp) ;; ;; Line is at top level. May be data or function definition, ;; (beginning-of-line) ;; (if (and (/= (following-char) ?\{) ;; (save-excursion ;; (ess-backward-to-noncomment (point-min)) ;; (ess-continued-statement-p))) ;; ess-continued-statement-offset ;; 0)) ; Unless it starts a function body ;; ((/= (char-after containing-sexp) ?{) ;; ;; line is expression, not statement: ;; ;; indent to just after the surrounding open. ;; (goto-char containing-sexp) ;; (let ((bol (save-excursion (beginning-of-line) (point)))) ;; ;; modified by shiba@isac 7.3.1992 ;; (cond ((and (numberp ess-expression-offset) ;; (re-search-backward "[ \t]*expression[ \t]*" bol t)) ;; ;; This regexp match every "expression". ;; ;; modified by shiba ;; ;;(forward-sexp -1) ;; (beginning-of-line) ;; (skip-chars-forward " \t") ;; ;; End ;; (+ (current-column) ess-expression-offset)) ;; ((and (numberp ess-arg-function-offset) ;; (re-search-backward ;; "=[ \t]*\\s\"?\\(\\w\\|\\s_\\)+\\s\"?[ \t]*" ;; bol ;; t)) ;; (forward-sexp -1) ;; (+ (current-column) ess-arg-function-offset)) ;; ;; "expression" is searched before "=". ;; ;; End ;; (t ;; (progn (goto-char (1+ containing-sexp)) ;; (current-column)))))) ;; (t ;; ;; Statement level. Is it a continuation or a new statement? ;; ;; Find previous non-comment character. ;; (goto-char indent-point) ;; (ess-backward-to-noncomment containing-sexp) ;; ;; Back up over label lines, since they don't ;; ;; affect whether our line is a continuation. ;; (while (eq (preceding-char) ?\,) ;; (ess-backward-to-start-of-continued-exp containing-sexp) ;; (beginning-of-line) ;; (ess-backward-to-noncomment containing-sexp)) ;; ;; Now we get the answer. ;; (if (ess-continued-statement-p) ;; ;; This line is continuation of preceding line's statement; ;; ;; indent ess-continued-statement-offset more than the ;; ;; previous line of the statement. ;; (progn ;; (ess-backward-to-start-of-continued-exp containing-sexp) ;; (+ ess-continued-statement-offset (current-column) ;; (if (save-excursion (goto-char indent-point) ;; (skip-chars-forward " \t") ;; (eq (following-char) ?{)) ;; ess-continued-brace-offset 0))) ;; ;; This line starts a new statement. ;; ;; Position following last unclosed open. ;; (goto-char containing-sexp) ;; ;; Is line first statement after an open-brace? ;; (or ;; ;; If no, find that first statement and indent like it. ;; (save-excursion ;; (forward-char 1) ;; (while (progn (skip-chars-forward " \t\n") ;; (looking-at "#")) ;; ;; Skip over comments following openbrace. ;; (forward-line 1)) ;; ;; The first following code counts ;; ;; if it is before the line we want to indent. ;; (and (< (point) indent-point) ;; (current-column))) ;; ;; If no previous statement, ;; ;; indent it relative to line brace is on. ;; ;; For open brace in column zero, don't let statement ;; ;; start there too. If ess-indent-offset is zero, use ;; ;; ess-brace-offset + ess-continued-statement-offset ;; ;; instead. ;; ;; For open-braces not the first thing in a line, ;; ;; add in ess-brace-imaginary-offset. ;; (+ (if (and (bolp) (zerop ess-indent-offset)) ;; (+ ess-brace-offset ess-continued-statement-offset) ;; ess-indent-offset) ;; ;; Move back over whitespace before the openbrace. ;; ;; If openbrace is not first nonwhite thing on the line, ;; ;; add the ess-brace-imaginary-offset. ;; (progn (skip-chars-backward " \t") ;; (if (bolp) 0 ess-brace-imaginary-offset)) ;; ;; If the openbrace is preceded by a parenthesized exp, ;; ;; move to the beginning of that; ;; ;; possibly a different line ;; (progn ;; (if (eq (preceding-char) ?\)) ;; (forward-sexp -1)) ;; ;; Get initial indentation of the line we are on. ;; (current-indentation)))))))))) (defun ess-use-this-dir (&optional no-force-current) "Set the current process directory to `default-directory'. If that buffer has no associated *R* process, use \\[ess-force-buffer-current], unless prefix argument NO-FORCE-CURRENT is non-nil." (interactive "P") (ess-use-dir default-directory)) (defun ess-use-dir (dir &optional no-force-current) (interactive "P") (unless (string= ess-language "S") ;; FIXME: generalize this for Stata, SAS, Xlispstat... -- then move to ess-mode.el (error "ESS setting working directory in *%s* not yet implemented for language %s" ess-local-process-name ess-language)) (unless no-force-current (ess-force-buffer-current "R process to use: ")) (if ess-local-process-name (let ((cmd (format "setwd('%s')\n" dir))) (ess-command cmd) (message "Directory of *%s* process set to %s" ess-local-process-name dir)) (message "No *%s* process associated with this buffer." ess-dialect))) ;;*;; S/R Pretty-Editing (defun ess-fix-comments (&optional dont-query verbose) "Fix ess-mode buffer so that single-line comments start with at least '##', and ensure space before subsequent text." (interactive "P") (ess-replace-regexp-dump-to-src "#\\([A-Za-z0-9]\\)" "# \\1" nil verbose) (ess-replace-regexp-dump-to-src "^\\([ \t]*#\\)\\([^#]\\)" "\\1#\\2" dont-query verbose)) (defun ess-dump-to-src (&optional dont-query verbose) "Make the changes in an S - dump() file to improve human readability." (interactive "P") (ess-replace-regexp-dump-to-src "^\"\\([a-z.][a-z.0-9]*\\)\" *<-\n" "\n\\1 <- " dont-query verbose 'ensure-ess)) (defun ess-num-var-round (&optional dont-query verbose) "Is VERY useful for dump(.)'ed numeric variables; ROUND some of them by replacing endings of 000000*.. and 999999*. Martin Maechler" (interactive "P") (save-excursion (goto-char (point-min)) (let ((num 0) (str "") (rgxp "000000+[1-9]?[1-9]?\\>") (to "")) (if dont-query (ess-rep-regexp rgxp to nil nil verbose) (query-replace-regexp rgxp to nil)) (while (< num 9) (setq str (concat (int-to-string num) "999999+[0-8]*")) (if (and (numberp verbose) (> verbose 1)) (message (format "\nregexp: '%s'" str))) (goto-char (point-min)) (ess-rep-regexp str (int-to-string (1+ num)) 'fixedcase 'literal verbose) (setq num (1+ num)))))) (defun ess-fix-dot (before-chars &optional dont-query verbose) "Remove trailing decimal '.' (\"dot\"), before BEFORE; typically from S-plus" ;; typically, before-chars = "]:" or more (ess-replace-regexp-dump-to-src (concat "\\([0-9]\\)\\.\\( *[" before-chars "]\\)") ;; 111 ^ "\\1\\2" dont-query verbose)) (defun ess-fix-dot-1 (&optional do-query verbose) "Remove trailing decimal '.' (\"dot\"), before ':' or ']', i.e., in cases where it's ugly and nonsense. DO-QUERY(prefix) asks before replacing." (interactive "P") (ess-fix-dot "]:" (not do-query) verbose)) (defun ess-fix-dot-more (&optional dont-query verbose) "Remove trailing decimal '.' (\"dot\", typically from S+) in more cases than `ess-fix-dot-1'." (interactive "P") (ess-fix-dot-1 nil verbose) (ess-fix-dot ",)" dont-query verbose)) (defun ess-fix-EQ-assign (&optional dont-query verbose not-all) "Replace \"=\" by \"<-\" in places where it 'might make sense', e.g., for function assignments and lines not ending in \",\". Be *careful* for list()s of functions and when argument not-all is nil (as by default) !" ;;TODO: "in the few places we can be very sure.." ;;---- is hard in general: local functions: ok; but functions in ;; list(a = function(x) abs(x), b= function(y) bound(y)) *NOT* ok! (interactive "P") (ess-replace-regexp-dump-to-src "^\\( *[a-z.][_a-z.0-9]*\\) *= *\\(function *(\\)" "\\1 <- \\2" dont-query verbose) (unless not-all ;; "too" aggressive {proposing to replace function argument specs}: (ess-replace-regexp-dump-to-src ;; all those *not* ending in "," ;; including Mat[ i, ] = ..., ;; but not `names(x) = "..."' for that is "confused" with plot(x=x,..) "^\\( *[a-z.][][, \"_a-z.0-9]*\\) *= *\\([a-z.0-9({]\\(.*[^,]\\)? *$\\)" "\\1 <- \\2" nil ;; always query - often has many "false positives" verbose) )) ;;; All of the above three : (defun ess-MM-fix-src (&optional dont-query verbose) "Clean up ess-source code which has been produced by dump(..), and other code typically produced by other tools. Produces more readable code, and one that is well formatted in emacs ess-mode." (interactive "P") ;; each of the following does a save-excursion: (ess-dump-to-src dont-query) (ess-fix-comments dont-query) (ess-num-var-round dont-query verbose) (ess-fix-dot-more dont-query verbose) (ess-fix-EQ-assign dont-query verbose 'not-all) ) (defun ess-fix-miscellaneous (&optional from verbose) "Fix Miscellaneous S/R `ill-formation's from current \\[point]. Particularly use \"<-\"and put spaces around operators." (interactive "d\nP"); Defaults: point and prefix (C-u) ;; activate by (setq ess-verbose t) (ess-if-verbose-write (format "ess-fix-misc begin (from = %s, verbose = %s)\n" from verbose)) (save-excursion (if (string= ess-dialect "R") (progn (require 'ess-r-mode) (R-fix-T-F from (not verbose)))) ;; activate by (setq ess-verbose t) (ess-if-verbose-write "ess-fix-misc: after fix-T-F\n");___D___ ;; former C and matlab programmers leave trailing ";" : ;; (goto-char from) (ess-rep-regexp "; *$" "" nil 'literal verbose) ;; (ess-if-verbose-write "ess-fix-misc: after trailing ';'\n");___D___ (goto-char from) (ess-rep-regexp ";\\( *\\)#" "\\1#" nil nil verbose) (ess-if-verbose-write "ess-fix-misc: after ';' before #\n");___D___ ;;from R 1.9.x "_" is valid in names; here assume no initial / trailing '_' ;; BUG: The following changes "beta_ " or " _abc" ;; (goto-char from) (ess-rep-regexp " +_ *" " <- " nil 'literal verbose) ;; (goto-char from) (ess-rep-regexp "_ +" " <- " nil 'literal verbose) (ess-if-verbose-write "ess-fix-misc: before 'around \"<-\"' :\n");___D___ ;; ensure space around "<-" ---- but only replace if necessary: (goto-char from) (ess-rep-regexp "\\([^< \t\n]\\)\\(<" (not ">=") : (goto-char from);; --> " <", care with "->": (ess-rep-regexp "\\([^-< \t\n]\\)\\([<>]\\)" "\\1 \\2" nil nil verbose) ;; ">" -> "> " , for "<", don't split "<-" nor "<<-": (goto-char from) (ess-rep-regexp "\\(>=?\\)\\([^= \t\n]\\)" "\\1 \\2" nil nil verbose) (goto-char from) (ess-rep-regexp "\\(<=?\\)\\([^-<= \t\n]\\)" "\\1 \\2" nil nil t) (ess-if-verbose-write "ess-fix-misc: before \"=\" \"==\" .. :\n");___D___ ;; -- ensure space around "=", "==", "!=" : (goto-char from) ;; --> " =" (ess-rep-regexp "\\([^=!<> ]\\)\\([=!]?\\)=" "\\1 \\2=" nil nil verbose) (goto-char from) (ess-rep-regexp "=\\([^= ]\\)" "= \\1" nil nil verbose) (goto-char from) ;; add a space between "{" and surrounding ..char: (ess-rep-regexp "{\\([.A-Za-z()]\\)" "{ \\1" 'fix nil verbose) (ess-rep-regexp "\\([()]\\){" "\\1 {" 'fix nil verbose) (goto-char from) ;; add a space between "}" and a preceding wordchar: (ess-rep-regexp "\\([A-Za-z0-9()]\\)}" "\\1 }" 'fix nil verbose) (ess-space-around "else" from verbose) (ess-if-verbose-write "ess-fix-misc: after \"{ ... }\" :\n");___D___ (goto-char from) ;; add a space inside "){" (ess-rep-regexp "){" ") {" 'fix nil verbose) ;; add a newline and indent before a "}" ;; --- IFF there's NO "{" or "#" AND some NON-white text on the same line: ;;D (if verbose (message "\t R-fix-misc..: Hard.. '}'")) (goto-char from) (ess-rep-regexp "^\\([^#{\n]*[^#{ \t\n]+[ \t]*\\)}[ \t]*$" "\\1\n}" 'fix nil verbose) (ess-if-verbose-write "ess-fix-misc __end__\n");___D___ )) ;; This is by Seth Falcon, modeled after ess-toggle-underscore (see below). (defun ess-toggle-S-assign-key (force) "Possibly bind the key in `ess-S-assign-key' to inserting `ess-S-assign'. If `ess-S-assign-key' is \"_\", simply use \\[ess-toggle-underscore]. Otherwise, unless the prefix argument FORCE is set, toggle between the new and the previous assignment." (interactive "P") (require 'ess-mode) (require 'ess-inf) (let ((current-action (lookup-key ess-mode-map ess-S-assign-key)) (insert-S-assign (lambda() (interactive) (delete-horizontal-space) (insert ess-S-assign)))) (if (and (stringp ess-S-assign-key) (string= ess-S-assign-key "_")) (ess-toggle-underscore force) ;; else "do things here" (let* ((current-is-S-assign (eq current-action insert-S-assign)) (new-action (if force insert-S-assign ;; else "not force" (default): (if (or current-is-S-assign (eq ess-S-assign-key-last insert-S-assign)) ess-S-assign-key-last insert-S-assign)))) (message "[ess-toggle-S-assign-key:] current: '%s', new: '%s'" current-action new-action) (define-key ess-mode-map ess-S-assign-key new-action) (define-key inferior-ess-mode-map ess-S-assign-key new-action) (if (not (and force current-is-S-assign)) (setq ess-S-assign-key-last current-action)))))) (defvar polymode-mode) (defun ess-smart-S-assign () "Act as smart `ess-S-assign' key: insert `ess-S-assign', unless in string/comment. If the underscore key is pressed a second time, the assignment operator is removed and replaced by the underscore. `ess-S-assign', typically \" <- \", can be customized. In ESS modes other than R/S, the underscore is always inserted." (interactive) ;;(insert (if (ess-inside-string-or-comment-p (point)) "_" ess-S-assign)) (save-restriction (ignore-errors (when (and (eq major-mode 'inferior-ess-mode) (> (point) (process-mark (get-buffer-process (current-buffer))))) (narrow-to-region (process-mark (ess-get-process)) (point-max))) (and ess-noweb-mode (ess-noweb-in-code-chunk) (ess-noweb-narrow-to-chunk)) (and (fboundp 'pm/narrow-to-span) polymode-mode (pm/narrow-to-span))) (if (or (ess-inside-string-or-comment-p (point)) (not (equal ess-language "S"))) (insert ess-smart-S-assign-key) ;; else: (ess-insert-S-assign)))) (defalias 'ess-smart-underscore 'ess-smart-S-assign) (defun ess-insert-S-assign () "Insert the assignment operator `ess-S-assign', unless it is already there. In that case, it is removed and replaced by `ess-smart-S-assign-key'. `ess-S-assign', typically \" <- \", can be customized." (interactive) ;; one keypress produces ess-S-assign; a second keypress will delete ;; ess-S-assign and instead insert _ ;; Rather than trying to count a second _ keypress, just check whether ;; the current point is preceded by ess-S-assign. (let ((assign-len (length ess-S-assign))) (if (and (>= (point) (+ assign-len (point-min))) ;check that we can move back (save-excursion (backward-char assign-len) (looking-at ess-S-assign))) ;; If we are currently looking at ess-S-assign, replace it with _ (progn (delete-char (- assign-len)) (insert ess-smart-S-assign-key)) (if (string= ess-smart-S-assign-key "_") (delete-horizontal-space)) (insert ess-S-assign)))) ;;; Setting / Unsetting the smart S-assign-key behavior ----------------- ;; Two basic building blocks, used below: (defun ess--unset-smart-S-assign-key () (define-key ess-mode-map "_" nil) (define-key inferior-ess-mode-map "_" nil) (define-key ess-mode-map ess-smart-S-assign-key nil); 'self-insert-command (define-key inferior-ess-mode-map ess-smart-S-assign-key nil)) (defun ess--activate-smart-S-assign-key () (define-key ess-mode-map ess-smart-S-assign-key 'ess-smart-S-assign) (define-key inferior-ess-mode-map ess-smart-S-assign-key 'ess-smart-S-assign)) ;; Written such that whimps can have (ess-disable-smart-S-assign) in .emacs : (defun ess-disable-smart-S-assign (activate) "Disable or activate (if prefix argument ACTIVATE is set) the smart assignment operator `ess-S-assign'. That, typically \" <- \", can be customized." (interactive "P") (if activate (ess--activate-smart-S-assign-key) (ess--unset-smart-S-assign-key))) (defalias 'ess-disable-smart-underscore 'ess-disable-smart-S-assign) (defun ess-toggle-S-assign (force) "Set the `ess-smart-S-assign-key' (by default \"_\" [underscore]) key to \\[ess-smart-S-assign] or back to `ess-smart-S-assign-key'. Toggle the current definition, unless FORCE is non-nil, where \\[ess-smart-S-assign] is set unconditionally. If you as per default have `ess-smart-S-assign-key' set to underscore, note that using \"C-q _\" will always just insert the underscore character." (interactive "P") (let ((current-key (lookup-key ess-mode-map ess-smart-S-assign-key)) (default-key (lookup-key ess-mode-map "_"))) (if (and (or default-key current-key) ;; (stringp current-key) (string= current-key ess-S-assign) (not force)) (ess--unset-smart-S-assign-key) ;; else : "force" or current-key is "nil", i.e. default (ess--activate-smart-S-assign-key)))) (defalias 'ess-toggle-underscore 'ess-toggle-S-assign) ;; NOTA BENE: "_" is smart *by default* : ;; ----- The user can always customize `ess-S-assign' ... (ess-toggle-S-assign 'force-to-S-assign) (defun ess-add-MM-keys () "Define MM's user keys, currently \\\\[ess-insert-function-outline], and \\\\[ess-execute-screen-options]." (interactive) (require 'ess-mode); typically unnecessary (require 'ess-inf); dito (define-key ess-mode-map "\C-cf" 'ess-insert-function-outline) (define-key inferior-ess-mode-map "\C-cw" 'ess-execute-screen-options) ;; Make M-- : [Alt] + [-] (in addition to / instead of "_" = (on US-keyboard) [Shift]+ [-] ;; Note this overwrites 'M--' as "negative argument" (still on 'C--'): (define-key ess-mode-map [?\M--] 'ess-insert-S-assign) (define-key inferior-ess-mode-map [?\M--] 'ess-insert-S-assign) ) (defun ess-dump-args-and-go (Sfunc) ; &optional buff) "Dump the function name, with arguments, to a buffer for editing. Currently, this needs to: 1. set the buffer to the right mode, with the right settings 2. format the statement, 3. c/function/Sfunc/ and I need to relearn emacs lisp (but I had to, anyway." (interactive "sFunction ? ") (let* ((buffname "ess-complete.R") (buf (ess-execute (format "args(%s)" Sfunc) t buffname))) (pop-to-buffer buf) (message "here yet?") (while (search-forward "function" nil t) (replace-match Sfunc nil t)) (ess-setq-vars-local ess-customize-alist); (current-buffer)) (setq major-mode 'ess-mode) (use-local-map ess-mode-map) (set-syntax-table ess-mode-syntax-table) )) (defun ess-chm-display-help-on-object (object &rest args) (ess-eval-linewise (concat "help(" object ")"))) ;;; S imenu support ;; don't use syntax classes, bad for etags (defvar ess-imenu-S-generic-expression '(("Functions" "^\\(.+\\)[ \t\n]*<-[ \t\n]*function[ ]*(" 1) ("Classes" "^.*setClass(\\(.*\\)," 1) ("Coercions" "^.*setAs(\\([^,]+,[^,]*\\)," 1) ; show from and to ("Generics" "^.*setGeneric(\\([^,]*\\)," 1) ("Methods" "^.*set\\(Group\\|Replace\\)?Method(\\([^,]+,[^,]*\\)" 2) ;;[ ]*\\(signature=\\)?(\\(.*,?\\)*\\)," 1) ;; ;;("Other" "^\\(.+\\)\\s-*<-[ \t\n]*[^\\(function\\|read\\|.*data\.frame\\)]" 1) ("Package" "^.*\\(library\\|require\\)(\\(.*\\)" 2) ("Data" "^\\(.+\\)[ \t\n]-*<-[ \t\n]*\\(read\\|.*data\.frame\\).*(" 1))) (defun ess-imenu-S (&optional arg) "S Language Imenu support for ESS." (interactive) (setq imenu-generic-expression ess-imenu-generic-expression) (imenu-add-to-menubar "Imenu-S")) (defalias 'ess-imenu-R 'ess-imenu-S) ;;; Speedbar stuff. (defun ess-S-initialize-speedbar () "Extend to all extensions; see initialization, and edit." (speedbar-add-supported-extension ".R") (speedbar-add-supported-extension ".S") (speedbar-add-supported-extension ".s") (speedbar-add-supported-extension ".q")) ;(if (featurep 'speedbar) ; (progn ; (message "enabling speedbar support") ; (require 'speedbar) ; (ess-S-initialize-speedbar))) (eval-when-compile (condition-case nil (progn (require 'speedbar) (when (featurep 'speedbar) (defun S-speedbar-buttons (buffer) "attempted hack." ;;(speedbar-make-tag-line) ;;(speedbar-insert-button) (speedbar-with-writable)) (fset 'R-speedbar-buttons 'S-speedbar-buttons) (defun S-speedbar-menu-items ( ) "Need to write.") (ess-S-initialize-speedbar))) (error nil))) (defun ess-s-get-help-topics-function (name) "Return a list of current S help topics associated with process NAME. If 'sp-for-help-changed?' process variable is non-nil or `ess-help-topics-list' is nil, (re)-populate the latter and return it. Otherwise, return `ess-help-topics-list'." (with-ess-process-buffer nil (ess-write-to-dribble-buffer (format "(ess-get-help-topics-list %s) .." name)) (ess-help-r--check-last-help-type) (cond ;; (Re)generate the list of topics ((or (not ess-help-topics-list) (ess-process-get 'sp-for-help-changed?)) (ess-process-put 'sp-for-help-changed? nil) (setq ess-help-topics-list (ess-uniq-list (append (ess-get-object-list name 'exclude-1st) (ess-get-help-files-list) (ess-get-help-aliases-list))))) (t ess-help-topics-list)))) ;;; On a PC, the default is S+. ;; Elsewhere (unix and linux) the default is S+ (cond (ess-microsoft-p ;; MS-Windows------------------------------------------------- ;; (fset 'S ;; (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe") ;; 'S+-msdos ;; 'S+)) (defun S-by-icon (&rest x) (interactive) (message "Please start S+ from the icon. Then you can connect emacs to it with `M-x S-existing'.") ) (fset 'S 'S-by-icon) (fset 'S-existing (if (equal (file-name-nondirectory shell-file-name) "cmdproxy.exe") 'S+-msdos-existing 'S+-existing)) (fset 'Sqpe 'Sqpe+) (fset 's-mode 'S+-mode) (fset 's-transcript-mode 'S+-transcript-mode)) (t ;;((eq system-type 'gnu/linux) ;; Linux etc (including Mac OSX !?) -------------------------- (fset 'S 'S+) (fset 's-mode 'S+-mode) (fset 's-transcript-mode 'S+-transcript-mode))) ;;;;* Alias S-mode to s-mode ;;; Emacs will set the mode for a file based on the file's header. ;;; The mode name is indicated by putting it between -*- on the top line. ;;; (Other commands can go here too, see an Emacs manual.) ;;; For a file you also load, you will want a leading # (comment to S) ;;; Emacs will downcase the name of the mode, e.g., S, so we must provide ;;; s-mode in lower case too. That is, "#-*- S-*-" invokes s-mode and ;;; not S-mode. (fset 'S-transcript-mode 's-transcript-mode) (fset 'S-mode 's-mode) (provide 'ess-s-lang) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-s-lang.el ends here ess-17.11/lisp/ess-s3-d.el0000444005071500004540000000633113202324174012071 00000000000000;;; ess-s3-d.el --- S 3 (AT&T version) customization ;; Copyright (C) 1997 A. J. Rossini ;; Copyright (C) 1998--2005 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 12 Jun 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the S 3 customizations for ess-mode. ;;; Code: (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (require 'ess-s-lang) (defvar S3-customize-alist (append '((ess-local-customize-alist . 'S3-customize-alist) (ess-dialect . "S3") (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-change-sp-regexp . ess-S-change-sp-regexp) (ess-help-sec-keys-alist . ess-help-S3-sec-keys-alist) (ess-object-name-db-file . "ess-s3-namedb.el" ) (inferior-ess-program . inferior-S3-program-name) ; "S") (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . nil) (inferior-ess-search-list-command . "search()\n") (inferior-ess-objects-command . "objects(%d)\n") (inferior-ess-start-file . nil) ;"~/.ess-S3") (inferior-ess-start-args . "") (ess-STERM . "iESS") ) S+common-cust-alist); use S+ ones here; partly overwritten above!! "Variables to customize for S3") (defun S3 (&optional proc-name) "Call 'S 3.x', the version from AT&T." (interactive) (setq ess-customize-alist S3-customize-alist) (ess-write-to-dribble-buffer (format "\n(S3): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (inferior-ess) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start))) (defun S3-mode (&optional proc-name) "Major mode for editing S3 source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S3-customize-alist) (ess-mode S3-customize-alist proc-name) (if ess-imenu-use-S (ess-imenu-S))) ; Provide package (provide 'ess-s3-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-s3-d.el ends here ess-17.11/lisp/ess-s4-d.el0000444005071500004540000002522513202324174012075 00000000000000;;; ess-s4-d.el --- S4 customization ;; Copyright (C) 1997--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 12 Jun 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; DB contributed the changes from ess-s3-d.el to ;; ess-s4-d.el (removed the old ugly approach). ;; This file defines S4 customizations for ess-mode. Lots of thanks ;; to RMH and JMC for code and suggestions ;;; Code: (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (require 'ess-s-lang) ;; Some of this is based on files from: ;; Copyright (C) 1996, John M. Chambers. (defvar S4-customize-alist (append '((ess-local-customize-alist . 'S4-customize-alist) (ess-dialect . "S4") (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-change-sp-regexp . ess-S-change-sp-regexp) (ess-help-sec-keys-alist . ess-help-S3-sec-keys-alist) (ess-object-name-db-file . "ess-s4-namedb.el") (inferior-ess-program . inferior-S4-program-name) (inferior-ess-objects-command . ".SmodeObs(%d, pattern=\"%s\")\n") ;;(inferior-ess-objects-pattern . ".*") ; for new s4 stuff (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . nil) (inferior-ess-search-list-command . ".SmodePaths()\n") (ess-load-command . ".SmodeLoad(\"%s\")\n") (inferior-ess-dump-command . ".SmodeDump(\"%s\", \"%s\")\n") (inferior-ess-start-file . nil) ;"~/.ess-S3") (inferior-ess-start-args . "") (ess-STERM . "iESS") ) S+common-cust-alist); use S+ ones here; partly overwritten above!! "Variables to customize for S4.") ;; For loading up the S code required for the above. ;;(add-hook 'ess-post-run-hook ;; (lambda () ;; (ess-command ;; (concat ;; "if(exists(\"Sversion\")) library(emacs) else source(\"" ;; ess-mode-run-file ;; "\")\n")) ;; (if ess-mode-run-file2 ;; (ess-command ;; (concat "source(\"" ess-mode-run-file2 "\")\n"))))) (defun S4 () "Call 'S version 4', from Bell Labs. New way to do it." (interactive) (setq ess-customize-alist S4-customize-alist) (ess-write-to-dribble-buffer (format "\n(S4): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (inferior-ess) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start))) (defun S4-mode (&optional proc-name) "Major mode for editing S4 source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S4-customize-alist) (ess-mode S4-customize-alist proc-name) (if ess-imenu-use-S (ess-imenu-S))) ;; From RMH: ALL THIS SHOULD BE INCORPORATED BY 5.0! ;;; s4.el startup file ;;; Richard M. Heiberger ;;; rmh@temple.edu ;; ;;(load "S") ;;(setq inferior-S-program "/disk05/s4/betaJun96/S") ;;(setq S-plus nil) ;; needed for non S-plus ;;(add-to-list 'load-path "/disk05/s4/betaJun96") ;; S-namedb.el is here ;;(S) ;;(load-file "/disk05/s4/betaJun96/library/emacs/S-modeadds.el") ;; must come after (S) ;; ;; ;;;;; S4 __Help, no longer S3 .Help ;;(load "S-help") ;; ;; Must follow S-help ;;; S-help.file line 270 ;;(defun S-get-help-files-list nil ;; (mapcar 'list ;; (apply 'append ;; (mapcar (lambda (dirname) ;; (if (file-directory-p dirname) ;; (directory-files dirname))) ;; (mapcar (lambda (str) (concat str "/__Help")) ;; (S-search-list)))))) ;; ;; ;;;;; additional font-lock-keywords for S4 ;; ;;;;*;; based on S-inf.el line 107 ;;;;(add-to-list 'S-inf-font-lock-keywords ;;;; '("\\<\\(^Problem\\|^Warning\\|^Error\\|Debug ?\\|Browsing in frame of\\|Local Variables\\)\\>" . font-lock-reference-face) ; S-inf problems ;;;;) ;;;;(add-to-list 'S-inf-font-lock-keywords ;;;; '("^R>" . font-lock-keyword-face) ; debug prompt ;;;;) ;;(inferior-S-mode) ;; ;;; S-inf.el line 150 ;;(setq inferior-S-search-list-command "searchPaths()\n") ;; ;;;; fontify S-transcript-mode ;;;; overwrites S-trans.el lines 60-69 ;;;;(setq S-trans-font-lock-keywords S-inf-font-lock-keywords) ;; ;;(load "S-mode") ;; ;; Must follow S-mode ;;;;*;; based on S-mode.el line 219 ;;(add-to-list 'S-mode-font-lock-keywords ;; '("\\<\\(setGeneric\\|removeGeneric\\|setMethod\\|unsetMethod\\|setReplaceGeneric\\|setReplaceMethod\\|standardGeneric\\|setIs\\|setClass\\|representation\\)\\>" . font-lock-function-name-face) ; S4 method functions ;;) ;; ;; ;; ;;;;; fix to S-load-file to make C-c C-l work with S4 ;; ;;;When a file sourced into S4 by C-c C-l has a syntax error ;;;without the following changes, the system ;;;freezes until it is released with ^G. The reason is that the error ;;;messages, including the `Debug ?' request, go to the *S-errors* ;;;buffer. The *S-errors* buffer is not switched to, and couldn't accept ;;;a response if it were. ;;; ;;;The fix requires three modification to S-inf.el and two to S-mode.el. ;;;The correction to S-check-source noted in smode.cmt is also necessary. ;;; ;; ;;; S-inf.el line 92 NEW variable ;;(defvar inferior-S-debug-prompt "Debug \\? (y|n): " ;; "The expression S uses to offer to initiate debug tracing.") ;; ;;; S-inf.el line 458 ;;(defun inferior-S-wait-for-prompt () ;; "Wait until the S process is ready for input." ;; (let* ((cbuffer (current-buffer)) ;; (sprocess (get-S-process S-current-process-name)) ;; (sbuffer (process-buffer sprocess)) ;; r ;; (timeout 0)) ;; (set-buffer sbuffer) ;; (while (progn ;; (if (not (eq (process-status sprocess) 'run)) ;; (S-error "S process has died unexpectedly.") ;; (if (> (setq timeout (1+ timeout)) S-loop-timeout) ;; (S-error "Timeout waiting for prompt. Check inferior-S-prompt or S-loop-timeout.")) ;; (accept-process-output) ;; (goto-char (point-max)) ;;(setq end (point)) ;; (beginning-of-line) ;;(setq e (buffer-substring (point) end)) ;;(if (equal e inferior-S-debug-prompt) ;; (S-error "Debug prompt")) ;; (setq r (looking-at inferior-S-prompt)) ;; (not (or r (looking-at ".*\\?\\s *")))))) ;; (goto-char (point-max)) ;; (set-buffer cbuffer) ;; (symbol-value r))) ;; ;; ;; ;;; S-mode.el line 204 ;;(setq S-dump-error-re "Problem") ;; ;;;; S-mode.el line 655 ;;(defun S-parse-errors (showerr) ;; "Jump to error in last loaded S source file. ;;With prefix argument, only shows the errors S reported." ;; (interactive "P") ;; (S-make-buffer-current) ;; (let ((errbuff (get-buffer S-error-buffer-name))) ;; (if (not errbuff) ;; (error "You need to do a load first!") ;; (set-buffer errbuff) ;; (goto-char (point-max)) ;; (if ;; (re-search-backward ", file \"" nil t) ;; (let* ((beg-pos (progn (re-search-forward "\"" nil t) (point))) ;; (end-pos (progn (re-search-forward "\"" nil t) (- (point) 1))) ;; (filename (buffer-substring beg-pos end-pos)) ;; (fbuffer (get-file-buffer filename)) ;; (linenum (string-to-number ;; (progn (re-search-backward "," nil t) ;; (current-word)))) ;; (end-pos (point)) ;; (beg-pos (progn (goto-char (point-min)) ;; (re-search-forward ":" nil t) ;; (1+ (point)))) ;; (errmess (buffer-substring beg-pos end-pos)) ;; ) ;; (if showerr ;; (S-display-temp-buffer errbuff) ;; (if fbuffer nil ;; (setq fbuffer (find-file-noselect filename)) ;; (save-excursion ;; (set-buffer fbuffer) ;; (S-mode))) ;; (pop-to-buffer fbuffer) ;; (goto-line linenum)) ;; (princ errmess t)) ;; (message "Not a syntax error.") ;; (S-display-temp-buffer errbuff))))) ;; ;; ;; ;;;; S-inf.el line 584 ;;(defun S-prompt-wait (proc &optional start-of-output) ;; "Wait for a prompt to appear at BOL of current buffer ;;PROC is the S process. Does not change point" ;; (if start-of-output nil (setq start-of-output (point-min))) ;; (save-excursion ;; (while (progn ;; ;; get output if there is some ready ;; (accept-process-output proc 0 500) ;; (goto-char (marker-position (process-mark proc))) ;; (beginning-of-line) ;; ;; (if (re-search-forward inferior-S-debug-prompt nil t) ;; (if (equal (get-buffer S-error-buffer-name) ;; (get-buffer S-error-buffer-name)) ;; (let* ((sprocess (get-S-process S-current-process-name)) ;; (sbuffer (process-buffer sprocess))) ;; (set-buffer sbuffer) ;; (process-send-string sprocess "n\n") ;; (accept-process-output sprocess) ;; (beginning-of-line); delete inferior-S-debug-prompt ;; (kill-line) ;; (insert "> "))) ;; ;; (if (< (point) start-of-output) (goto-char start-of-output)) ;; (not (looking-at inferior-S-primary-prompt))))))) ;; ; Provide package (provide 'ess-s4-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-s4-d.el ends here ess-17.11/lisp/ess-sas-a.el0000444005071500004540000017176113202324174012341 00000000000000;;; ess-sas-a.el --- clean-room implementation of many SAS-mode features ;; Copyright (C) 1997--2009 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Rodney A. Sparapani ;; Maintainer: ESS-core@r-project.org ;; Created: 17 November 1999 ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: ;;; Table of Contents ;;; Section 1: Variable Definitions ;;; Section 2: Function Definitions ;;; Section 3: Key Definitions ;;; Section 1: Variable Definitions (defvar ess-sas-file-path "." "Full path-name of the sas file to perform operations on.") (defcustom ess-sas-data-view-libname " " "*SAS code to define a library for `ess-sas-data-view-fsview' or `ess-sas-data-view-insight'." :group 'ess-sas :type 'string) (defcustom ess-sas-data-view-submit-options (if ess-microsoft-p "-noenhancededitor -nosysin -log NUL:" "-nodms -nosysin -log /dev/null -terminal") "*The command-line options necessary for your OS with respect to `ess-sas-data-view-fsview' and `ess-sas-data-view-insight'." :group 'ess-sas :type 'string) (defcustom ess-sas-data-view-fsview-command "; proc fsview data=" "*SAS code to open a SAS dataset with `ess-sas-data-view-fsview'." :group 'ess-sas :type 'string) (defcustom ess-sas-data-view-fsview-statement " " "*SAS code to perform a PROC FSVIEW statement with `ess-sas-data-view-fsview'." :group 'ess-sas :type 'string) (make-variable-buffer-local 'ess-sas-data-view-fsview-statement) (defcustom ess-sas-data-view-insight-command "; proc insight data=" "*SAS code to open a SAS dataset with `ess-sas-data-view-insight'." :group 'ess-sas :type 'string) (defcustom ess-sas-data-view-insight-statement " " "*SAS code to perform a PROC FSVIEW statement with `ess-sas-data-view-insight'." :group 'ess-sas :type 'string) (make-variable-buffer-local 'ess-sas-data-view-insight-statement) (defcustom ess-sas-graph-view-suffix-regexp "[.]\\([eE]?[pP][sS]\\|[pP][dD][fF]\\|[gG][iI][fF]\\|[jJ][pP][eE]?[gG]\\|[tT][iI][fF][fF]?\\)" "*GSASFILE suffix regexp." :group 'ess-sas :type 'string) (defcustom ess-sas-graph-view-viewer-alist ;;creates something like ;;'(("[pP][dD][fF]" . "/usr/local/bin/acroread") ("[eE]?[pP][sS]" . "/usr/local/bin/gv"))) (let ((ess-tmp-alist nil) (ess-tmp-ps nil) (ess-tmp-pdf nil)) (setq ess-tmp-ps (executable-find (if ess-microsoft-p "gsview32" "gsview"))) (if (not ess-tmp-ps) (setq ess-tmp-ps (executable-find "gv"))) (if (not ess-tmp-ps) (setq ess-tmp-ps (executable-find "ghostview"))) (setq ess-tmp-pdf (executable-find "evince")) (if (not ess-tmp-pdf) (setq ess-tmp-pdf (executable-find "xpdf"))) (if (not ess-tmp-pdf) (setq ess-tmp-pdf (if ess-microsoft-p "acrord32" "acroread"))) (if (and ess-tmp-ps ess-tmp-pdf) (setq ess-tmp-alist (list (cons "[eE]?[pP][sS]" ess-tmp-ps) (cons "[pP][dD][fF]" ess-tmp-pdf))) (if ess-tmp-ps (setq ess-tmp-alist (list (cons "[eE]?[pP][sS]" ess-tmp-ps) (cons "[pP][dD][fF]" ess-tmp-ps)))))) "*Associate file name extensions with graphics image file viewers." :group 'ess-sas :type 'string) ;;(defcustom ess-sas-smart-back-tab nil ;; "*Set to t to make C-TAB insert an end/%end; statement to close a block." ;; :group 'ess-sas ;;) (defcustom ess-sas-log-max 0 "*If >0 and .log file exceeds this many bytes, just \"refresh\" this many bytes." :group 'ess-sas :type 'integer) (defcustom ess-sas-rtf-font-name "Courier" ; "Bitstream Vera Sans Mono" "Name of font with which to create MS RTF." :group 'ess-sas :type 'string) (defcustom ess-sas-shell-buffer "*shell*" "*Name that you want to use for the shell buffer; buffer-local." :group 'ess-sas :type 'string) (make-variable-buffer-local 'ess-sas-shell-buffer) (defcustom ess-sas-shell-buffer-remote-host nil "*Remote host that you want to open a shell on." :group 'ess-sas :type '(choice (const nil) string)) (make-variable-buffer-local 'ess-sas-shell-buffer-remote-host) (defcustom ess-sas-shell-buffer-remote-init "ssh" "*Command to open a shell on a remote host." :group 'ess-sas :type 'string) (make-variable-buffer-local 'ess-sas-shell-buffer-remote-init) (defcustom ess-sas-submit-mac-virtual-pc nil "*Non-nil means that you want to run Windows SAS in a Virtual PC emulator on your Mac; buffer-local." :group 'ess-sas :type 'boolean) (make-variable-buffer-local 'ess-sas-submit-mac-virtual-pc) (defcustom ess-sas-submit-command sas-program "*Command to invoke SAS in batch; buffer-local." :group 'ess-sas :type 'string) (make-variable-buffer-local 'ess-sas-submit-command) (defcustom ess-sas-submit-command-options "-rsasuser" "*Options to pass to SAS in batch; buffer-local." :group 'ess-sas :type 'string) (make-variable-buffer-local 'ess-sas-submit-command-options) (defvar ess-sas-submit-method (if (and ess-microsoft-p (w32-shell-dos-semantics)) 'ms-dos 'sh) "Method used by `ess-sas-submit'. The default is based on the value of the emacs variable `system-type' and, on Windows, the function `w32-shell-dos-semantics'. 'sh if *shell* runs sh, ksh, csh, tcsh or bash 'ms-dos if *shell* follows MS-DOS semantics 'apple-script *shell* unavailable in Mac Classic, use AppleScript, also for Windows SAS in Virtual PC on Mac OS X Unix users will get 'sh by default. Windows users running bash in *shell* will get 'sh by default. Windows users running MS-DOS in *shell* will get 'ms-dos by default. Users accessing a remote machine with `telnet', `rlogin', `ssh', etc., should set this variable to 'sh regardless of their local shell (since their remote shell is 'sh).") (make-variable-buffer-local 'ess-sas-submit-method) (defcustom ess-sas-graph-view-viewer-default (if ess-microsoft-p "explorer" (if (equal ess-sas-submit-method 'sh) "sdtimage")) "*Default graphics image file viewer." :group 'ess-sas :type 'string) (defcustom ess-sas-submit-post-command (if (equal ess-sas-submit-method 'sh) "&" (if ess-microsoft-p "-icon")) "*Command-line statement to post-modify SAS invocation" :group 'ess-sas :type 'string) (defcustom ess-sas-submit-pre-command ;;"nohup" (if (equal ess-sas-submit-method 'sh) ;; nice is tricky, higher numbers give you lower priorities ;; if you are using csh/tcsh, the default priority is 4 ;; if you are using most other shells, the default priority is 10, ;; and some implementations are higher, i.e. zsh unless you ;; specify "setopt no_bg_nice" in your ~/.zshrc ;; therefore, on the same machine, you can run at a higher or ;; lower priority by changing shells, although, the command ;; line is the same! ;; the following code should give you a priority of 10 regardless ;; of which shell is in use, but it will default to the old ;; behavior if csh or variant is not recognized ;; this should avoid the necessity of each user needing to set this ;; variable correctly based on the shell that they use and provide ;; an environment where all shells are treated equally (let* ((temp-shell (getenv "SHELL")) ;; AJR: old CYGWIN versions return nil for (getenv ;; "SHELL"), so we need to deal with it 'cause I have to (temp-char (if temp-shell (string-match "/" temp-shell) nil))) (while temp-char (setq temp-shell (substring temp-shell (+ 1 temp-char))) (setq temp-char (string-match "/" temp-shell))) (cond ((or (equal temp-shell "csh") (equal temp-shell "tcsh")) "nohup nice +6") (t "nohup nice"))) (if ess-microsoft-p "start")) "*Command-line statement to precede SAS invocation, e.g. start or nohup" :group 'ess-sas :type 'string) (defcustom ess-sas-suffix-1 "txt" "*The first suffix to associate with SAS." :group 'ess-sas :type 'string) (defcustom ess-sas-suffix-2 "csv" "*The second suffix to associate with SAS." :group 'ess-sas :type 'string) (defcustom ess-sas-suffix-regexp (concat "[.]\\([sS][aA][sS]\\|[lL][oO][gG]\\|[lL][sS][tT]" (if ess-sas-suffix-1 (concat "\\|" (downcase ess-sas-suffix-1) "\\|" (upcase ess-sas-suffix-1))) (if ess-sas-suffix-2 (concat "\\|" (downcase ess-sas-suffix-2) "\\|" (upcase ess-sas-suffix-2))) "\\)") "*Regular expression for SAS suffixes." :group 'ess-sas :type 'string) (defcustom ess-sas-tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120) "List of tab stop positions used by `tab-to-tab-stop' in ESS[SAS]." :group 'ess-sas) (defcustom ess-sas-temp-root "-temp" "*Appended to root name of the temporary .sas file for `ess-sas-submit-region'." :group 'ess-sas :type 'string) (defvar ess-sas-versions '("sas") "List of partial strings for versions of SAS to access within ESS. Each string specifies the start of a filename. If a filename beginning with one of these strings is found on `exec-path', a M-x command for that version of SAS is made available. For example, if the file \"sas8\" is found and this variable includes the string \"sas\", a function called `M-x SAS8' will be available to run that version of SAS. If duplicate versions of the same program are found (which happens if the same path is listed on `exec-path' more than once), they are ignored by calling `ess-uniq-list'. If you set this variable, you need to restart Emacs (and set this variable before ess-site is loaded) for it to take effect.") ;;; Section 2: Function Definitions (defun ess-ebcdic-to-ascii-search-and-replace () "*Search and replace EBCDIC text with ASCII equivalents." (interactive) (let ((ess-tmp-dd (executable-find "dd")) (ess-tmp-recode (executable-find "recode")) (ess-tmp-util nil) (ess-tmp-util-args nil)) (if ess-tmp-dd (progn (setq ess-tmp-util ess-tmp-dd) (setq ess-tmp-util-args "conv=ascii")) (setq ess-tmp-util ess-tmp-recode) (setq ess-tmp-util-args "EBCDIC..ISO-8859-1")) (if ess-tmp-util (while (search-forward-regexp "[^\f\t\n -~][^\f\t\n -?A-JQ-Yb-jp-y]*[^\f\t\n -~]?" nil t) (call-process-region (match-beginning 0) (match-end 0) ess-tmp-util t (list t nil) t ess-tmp-util-args))))) (defun ess-exit-notify-sh (string) "Detect completion or failure of submitted job and notify the user." ;(let* ((exit-done "\\[[0-9]+\\]\\ *\\+*\\ *\\(Exit\\|Done\\).*$") (let* ((exit-done "\\[[0-9]+\\]\\ *\\+*\\ *\\(Exit\\|Done\\)[^\r\n]*") ; GNU Emacs needs this (beg (string-match exit-done string))) (if beg (message (substring string beg (match-end 0)))))) (defun ess-sas-append-log () "Append ess-temp.log to the current .log file." (interactive) (ess-sas-goto "log" 'revert) (goto-char (point-max)) (insert-file-contents (concat (ess-sas-temp-root) ".log")) (save-buffer)) (defun ess-sas-append-lst () "Append ess-temp.lst to the current .lst file." (interactive) (ess-sas-goto "lst" 'revert) (goto-char (point-max)) (insert-file-contents (concat (ess-sas-temp-root) ".lst")) (save-buffer)) (defun ess-sas-backward-delete-tab () "Moves the cursor to the previous tab-stop, deleting any characters on the way." (interactive) (let* (;; point of search ;;(ess-sas-search-point nil) ;; column of search ;;(ess-sas-search-column nil) ;; limit of search ;;(ess-sas-search-limit nil) ;; text to be inserted after a back-tab, if any ;;(ess-sas-end-text "end;") ;; current-column (ess-sas-column (current-column)) ;; remainder of current-column and sas-indent-width (ess-sas-remainder (% ess-sas-column sas-indent-width))) (if (not (= ess-sas-column 0)) (progn (if (= ess-sas-remainder 0) (setq ess-sas-remainder sas-indent-width)) (let ((backward-delete-char-untabify-method 'nil)) (backward-delete-char-untabify ess-sas-remainder t) (setq ess-sas-column (- ess-sas-column ess-sas-remainder)) (move-to-column ess-sas-column) (setq left-margin ess-sas-column)) )) )) ;; this feature was far too complicated to perfect ;; (if ess-sas-smart-back-tab (progn ;; (save-excursion ;; (setq ess-sas-search-point ;; (search-backward-regexp "end" nil t)) ;; (if (and ess-sas-search-point ;; (search-backward-regexp "%" (+ ess-sas-search-point -1) t)) ;; (setq ess-sas-search-point (+ ess-sas-search-point -1)) ;; ) ;; (if (and ess-sas-search-point ;; (not (equal ess-sas-column (current-column)))) ;; (setq ess-sas-search-point nil)) ;; ) ;; (save-excursion ;; (setq ess-sas-search-point ;; (search-backward-regexp "do\\|select" ;; ess-sas-search-point t)) ;; (setq ess-sas-search-column (current-column)) ;; (if ess-sas-search-point (progn ;; (save-excursion ;; (search-backward-regexp "^" nil t) ;; (setq ess-sas-search-limit (point)) ;; ) ;; (if (search-backward-regexp "if.*then\\|else" ess-sas-search-limit t) ;; (setq ess-sas-search-point (point))) ;; (if (search-backward-regexp "%" ess-sas-search-limit t) (progn ;; (setq ess-sas-end-text "%end;") ;; (setq ess-sas-search-point (point)) ;; )) ;; (setq ess-sas-search-column (current-column)) ;; (if (not (equal ess-sas-column ess-sas-search-column)) ;; (setq ess-sas-search-point nil)) ;; ))) ;; (if ess-sas-search-point (insert ess-sas-end-text)) ;; )) (defun ess-sas-cd () "Change directory, taking into account various issues with respect to `ess-sas-file-path'." ;(interactive) (ess-sas-file-path) (ess-sas-goto-shell t) (comint-send-input) (if (equal ess-sas-submit-method 'sh) (insert "cd \"" (car (last (split-string (file-name-directory ess-sas-file-path) "\\([a-zA-Z][a-zA-Z]:\\|]\\)"))) "\"") (if (equal ess-sas-submit-method 'ms-dos) (progn (if (string-equal ":" (substring ess-sas-file-path 1 2)) (progn (insert (substring ess-sas-file-path 0 2)) (comint-send-input))) (insert "cd \"" (convert-standard-filename (file-name-directory ess-sas-file-path)) "\"")))) (comint-send-input)) (defun ess-sas-create-local-variables-alist (&optional file-or-buffer) "Create an alist of local variables from file-or-buffer, use the current buffer if nil." (if file-or-buffer (set-buffer (ess-get-file-or-buffer file-or-buffer))) (ess-change-alist 'ess-kermit-remote-directory ess-kermit-remote-directory nil)) (defun ess-sas-data-view-fsview (&optional ess-sas-data) "Open a dataset for viewing with PROC FSVIEW." (interactive) (ess-save-and-set-local-variables) (save-excursion (let ((ess-tmp-sas-data nil) (ess-tmp-sas-data-view-fsview-statement ess-sas-data-view-fsview-statement) (ess-search-regexp "[ \t=]\\([a-zA-Z_][a-zA-Z_0-9]*[.][a-zA-Z_][a-zA-Z_0-9]*\\)\\(&.*\\)?[. ,()\t;/]") (ess-search-except "^\\([wW][oO][rR][kK]\\|[fF][iI][rR][sS][tT]\\|[lL][aA][sS][tT]\\)[.]")) (if ess-sas-data nil (save-match-data (search-backward-regexp "[ \t=]" nil t) (save-excursion (setq ess-tmp-sas-data (ess-search-except ess-search-regexp ess-search-except))) (if (not ess-tmp-sas-data) (setq ess-tmp-sas-data (ess-search-except ess-search-regexp ess-search-except t))) (setq ess-sas-data (read-string "Permanent SAS Dataset: " ess-tmp-sas-data)) ;; (ess-sas-goto-shell t) (ess-sas-cd) (insert (concat ess-sas-submit-pre-command " " ess-sas-submit-command " -initstmt \"" ess-sas-data-view-libname ess-sas-data-view-fsview-command ess-sas-data ";" ess-tmp-sas-data-view-fsview-statement "; run;\" " ess-sas-submit-command-options " " ess-sas-data-view-submit-options " " ess-sas-submit-post-command)) (comint-send-input) ))))) (defun ess-sas-data-view-insight (&optional ess-sas-data) "Open a dataset for viewing with PROC INSIGHT." (interactive) (ess-save-and-set-local-variables) (save-excursion (let ((ess-tmp-sas-data nil) (ess-tmp-sas-data-view-insight-statement ess-sas-data-view-insight-statement) (ess-search-regexp "[ \t=]\\([a-zA-Z_][a-zA-Z_0-9]*[.][a-zA-Z_][a-zA-Z_0-9]*\\)\\(&.*\\)?[. ,()\t;]") (ess-search-except "^\\([wW][oO][rR][kK]\\|[fF][iI][rR][sS][tT]\\|[lL][aA][sS][tT]\\)[.]")) (if ess-sas-data nil (save-match-data (search-backward-regexp "[ \t=]" nil t) (save-excursion (setq ess-tmp-sas-data (ess-search-except ess-search-regexp ess-search-except))) (if (not ess-tmp-sas-data) (setq ess-tmp-sas-data (ess-search-except ess-search-regexp ess-search-except t))) (setq ess-sas-data (read-string "Permanent SAS Dataset: " ess-tmp-sas-data)) ;; (ess-sas-goto-shell t) (ess-sas-cd) (insert (concat ess-sas-submit-pre-command " " ess-sas-submit-command " -initstmt \"" ess-sas-data-view-libname ess-sas-data-view-insight-command ess-sas-data ";" ess-tmp-sas-data-view-insight-statement "; run;\" " ess-sas-data-view-submit-options " " ess-sas-submit-post-command)) (comint-send-input) ))))) (defun ess-sas-graph-view () "Open a GSASFILE for viewing." (interactive) ;; (ess-sas-goto-shell t) (ess-sas-cd) (ess-sas-goto-log 'no-error-check) (save-excursion (let ( (ess-tmp-length (length ess-sas-graph-view-viewer-alist)) (ess-tmp-counter 0) (ess-tmp-graph nil) (ess-tmp-graph-alist nil) (ess-tmp-glyph nil) (ess-tmp-graph-regexp (concat "[cCub][oOty][rRpt][dDue][sSt][ ][wW][rR][iI][tT][tT][eE][nN][ ]+[tT][oO][ ]\n?[ ]*\\(.*" ;; (concat "[ ][rR][eE][cC][oO][rR][dD][sS][ ][wW][rR][iI][tT][tT][eE][nN][ ]+[tT][oO][ ]\n?[ ]*\\(.*" ess-sas-graph-view-suffix-regexp "\\)"))) ; (concat "['\"]\\(.*" ess-sas-graph-suffix-regexp "\\)['\"]"))) (save-match-data (search-backward-regexp "[ \t=]" nil t) (save-excursion (setq ess-tmp-graph (ess-search-except ess-tmp-graph-regexp))) (if (not ess-tmp-graph) (setq ess-tmp-graph (ess-search-except ess-tmp-graph-regexp nil t))) (setq ess-tmp-graph (read-string "GSASFILE: " (or ess-tmp-graph ess-sas-file-path))) ;;GNU Emacs graphics file image viewing mode loaded? (if (and (boundp 'auto-image-file-mode) auto-image-file-mode (string-match "[.][jJ][pP][eE]?[gG]" ess-tmp-graph)) (find-file ess-tmp-graph) ;;else XEmacs graphics file image viewing mode loaded? (if (and (fboundp 'image-mode) (string-match "[.]\\([jJ][pP][eE]?[gG]\\|[gG][iI][fF]\\)" ess-tmp-graph)) (find-file ess-tmp-graph) ;;else use the appropriate graphics file image viewer (while (< ess-tmp-counter ess-tmp-length) (setq ess-tmp-graph-alist (nth ess-tmp-counter ess-sas-graph-view-viewer-alist)) (setq ess-tmp-graph-regexp (car ess-tmp-graph-alist)) (if (string-match (concat "[.]" ess-tmp-graph-regexp) ess-tmp-graph) (progn (ess-sas-goto-shell t) (insert ess-sas-submit-pre-command " " (cdr ess-tmp-graph-alist) " " ess-tmp-graph (if (equal ess-sas-submit-method 'sh) " &")) (setq ess-tmp-glyph 'alist) (setq ess-tmp-counter ess-tmp-length)) ;;else (setq ess-tmp-counter (+ ess-tmp-counter 1)))) (if (not ess-tmp-glyph) (progn (ess-sas-goto-shell t) (insert ess-sas-submit-pre-command " " ess-sas-graph-view-viewer-default " " ess-tmp-graph (if (equal ess-sas-submit-method 'sh) " &")))) (comint-send-input))))))) (defun ess-sas-file-path (&optional force) "Define `ess-sas-file-path' to be the current buffer depending on suffix." (interactive) (save-match-data (let ((ess-sas-temp-file (expand-file-name (buffer-name)))) (if (or force (string-match ess-sas-suffix-regexp ess-sas-temp-file)) ;;(progn (setq ess-sas-file-path (nth 0 (split-string ess-sas-temp-file "[<]"))))))) ;; (setq ess-directory (file-name-directory ess-sas-file-path))))))) (defun ess-sas-file-path-remote-host () "Return the remote host, if any, associated with `ess-sas-file-path'." (interactive) (let* ((temp-colon-pos (string-match ":" ess-sas-file-path)) (temp-list (if (or (not temp-colon-pos) (> temp-colon-pos 2)) (if (equal ess-sas-file-path ".") nil (split-string (file-name-directory ess-sas-file-path) "\\(@\\|:\\|]\\)")) (list ess-sas-file-path))) (temp-list-length (length temp-list))) (if (= temp-list-length 1) (setq temp-list nil) (if (= temp-list-length 2) (setq temp-list (car temp-list)) (setq temp-list (nth 1 temp-list)))) (if temp-list (setq temp-list (car (last (split-string temp-list "/"))))) temp-list)) (defun ess-sas-goto (suffix &optional revert no-create) "Find a file associated with a SAS file by suffix and revert if necessary." ; (interactive) ; (let ((ess-temp-regexp (concat ess-sas-suffix-regexp "[.]?[1-9]?\\'"))) ; can we identify common nonsense extensions like .log.1 or .sas.2? (let ((ess-temp-regexp (concat ess-sas-suffix-regexp "\\(@.+\\)?\\'"))) (save-match-data (if (or (string-match ess-temp-regexp (expand-file-name (buffer-name))) (string-match ess-temp-regexp ess-sas-file-path)) (progn (ess-sas-file-path) (let* ( (ess-sas-temp-file (replace-match (concat "." suffix) t t ess-sas-file-path)) (ess-sas-temp-buff (find-buffer-visiting ess-sas-temp-file)) (ess-temp-kermit-remote-directory ess-kermit-remote-directory)) (if ess-sas-temp-buff (switch-to-buffer ess-sas-temp-buff) ;; else (if no-create (setq revert nil) (if (file-exists-p ess-sas-temp-file) (find-file ess-sas-temp-file)))) ;; else ;; (let* ((ess-sas-buffer-list (buffer-list)) ;; (ess-sas-buffer-list-index 0) ;; (ess-sas-buffer-list-file nil) ;; (ess-sas-buffer-list-length (length ess-sas-buffer-list))) ;; (while (< ess-sas-buffer-list-index ess-sas-buffer-list-length) ;; (setq ess-sas-buffer-list-file ;; (buffer-file-name (nth ess-sas-buffer-list-index ess-sas-buffer-list))) ;; (if (and ess-sas-buffer-list-file ;; (string-match (concat "." suffix) ess-sas-buffer-list-file)) ;; (switch-to-buffer (nth ess-sas-buffer-list-index ess-sas-buffer-list)) ;; (setq ess-sas-buffer-list-index ess-sas-buffer-list-length) ;; ) ;; (setq ess-sas-buffer-list-index (+ 1 ess-sas-buffer-list-index)) ;; ))) (if (and (not no-create) (or (string-equal suffix "log") (string-equal suffix "lst"))) (ess-kermit-get (file-name-nondirectory ess-sas-temp-file) ess-temp-kermit-remote-directory)) (if revert (if (and (> ess-sas-log-max 0) (string-equal suffix "log") (> (ess-num-or-zero (nth 7 (file-attributes ess-sas-temp-file))) ess-sas-log-max)) (progn (insert-file-contents ess-sas-temp-file nil 0 ess-sas-log-max t) t) (ess-revert-wisely)) nil))))))) ;;(defun ess-sas-file (suffix &optional revert) ;; "Please use `ess-sas-goto' instead." ;; (let* ((tail (downcase (car (split-string ;; (car (last (split-string (buffer-name) "[.]"))) "[<]")))) ;;(if (fboundp 'file-name-extension) (file-name-extension (buffer-name)) ;; (substring (buffer-name) -3))) ;; (tail-in-tail-list (member tail (list "sas" "log" "lst" ;; ess-sas-suffix-1 ess-sas-suffix-2))) ;; (root (if tail-in-tail-list (expand-file-name (buffer-name)) ;; ess-sas-file-path)) ;; (ess-sas-arg (concat (file-name-sans-extension root) "." suffix)) ;; (ess-sas-buf (find-buffer-visiting ess-sas-arg))) ;; (if (equal tail suffix) (if revert (ess-revert-wisely)) ;; (if (not ess-sas-buf) (find-file ess-sas-arg) ;; (switch-to-buffer ess-sas-buf) ;; (if revert (ess-revert-wisely)))))) (defun ess-sas-goto-file-1 () "Switch to ess-sas-file-1 and revert from disk." (interactive) (ess-sas-goto ess-sas-suffix-1 'revert)) (defun ess-sas-goto-file-2 () "Switch to ess-sas-file-2 and revert from disk." (interactive) (ess-sas-goto ess-sas-suffix-2 'revert)) (defun ess-sas-goto-log (&optional ess-tmp-no-error-check) "Switch to the .log file, revert from disk and search for error messages." (interactive) (let ((ess-sas-error (concat "^ERROR [0-9]+-[0-9]+:\\|^ERROR:\\|_ERROR_=1 _N_=\\|_ERROR_=1[ ]?$" "\\|NOTE: MERGE statement has more than one data set with repeats" "\\|NOTE: Variable .* is uninitialized." "\\|NOTE: SAS went to a new line when INPUT statement reached past" "\\|NOTE 485-185: Informat .* was not found" "\\|NOTE: Estimated G matrix is not positive definite." "\\|NOTE: Compressing data set .* increased size by" "\\|NOTE: ERROR DETECTED IN ANNOTATE=" "\\|WARNING: Apparent symbolic reference .* not resolved." "\\|WARNING: Length of character variable has already been set." "\\|WARNING: Not all variables in the list " "\\|WARNING: RUN statement ignored due to previous errors." "\\|WARNING: Values exist outside the axis range" "\\|WARNING: Truncated record." "\\|Bus Error In Task\\|Segmentation Violation In Task")) (ess-sas-save-point nil)); (ess-sas-pop-mark nil)) (if (ess-sas-goto "log" 'revert) (progn (setq ess-sas-save-point (point)) (goto-char (point-min))) (setq ess-sas-save-point (point))) ;(if (number-char-or-marker-p ess-sas-save-point) (progn (if ess-tmp-no-error-check (goto-char ess-sas-save-point) (if (or (search-forward-regexp ess-sas-error nil t) (and (goto-char (point-min)) (search-forward-regexp ess-sas-error nil t))) t ;; this feature never worked quite right (and was XEmacs only to boot) ;; after highlighting an error message, moving point would cause an ;; unwanted highlighting between point and mark; why god, why?!? ;; ;; (if (and (boundp 'zmacs-regions) zmacs-regions) ;; (progn ;; (if ess-sas-pop-mark (pop-mark) ;; (setq ess-sas-pop-mark t)) ;; (push-mark (match-beginning 0) t) ;; (zmacs-activate-region))) (goto-char ess-sas-save-point))))) (defun ess-sas-goto-lst () "Switch to the .lst file and revert from disk." (interactive) (ess-sas-goto "lst" 'revert)) (defun ess-sas-goto-sas (&optional revert) "Switch to the .sas file." (interactive) (ess-sas-goto "sas" revert)) (defun ess-sas-goto-shell (&optional set-buffer) "Set `ess-sas-file-path' and goto `ess-sas-shell-buffer'. If optional argument is non-nil, then set-buffer rather than switch." (interactive) (ess-sas-file-path) ; The following let* block is an attempt to deal with remote directories. (let* ((temp-shell-buffer-remote-host (or ess-sas-shell-buffer-remote-host (ess-sas-file-path-remote-host))) (temp-shell-buffer-remote-init ess-sas-shell-buffer-remote-init) (temp-shell-buffer (if temp-shell-buffer-remote-host (concat "*" temp-shell-buffer-remote-host "*") ess-sas-shell-buffer)) ) (if (get-buffer temp-shell-buffer) (if set-buffer (set-buffer temp-shell-buffer) (switch-to-buffer temp-shell-buffer)) (shell) (rename-buffer temp-shell-buffer) (ess-sleep) ; GNU Emacs needs this (if temp-shell-buffer-remote-host (progn (insert (concat temp-shell-buffer-remote-init " " temp-shell-buffer-remote-host)) (comint-send-input)) ) (if (eq ess-sas-submit-method 'sh) (add-hook 'comint-output-filter-functions 'ess-exit-notify-sh)) ;; 19.28 ;; nil t) works for newer emacsen ) ) (goto-char (point-max)) ; (insert "cd " ess-temp-directory) ; (comint-send-input)) ) (defun ess-sas-interactive () "And now for something completely different." (interactive) (ess-sas-file-path) (setq ess-customize-alist SAS-customize-alist) (let ((ess-temp-sas-file (nth 0 (split-string (car (last (split-string ess-sas-file-path "\\([a-zA-Z][a-zA-Z]:\\|]\\)"))) "[.]")))) ;; (message "%s" ess-temp-sas-file) (setq ess-sas-shell-buffer "*iESS[SAS]*") (ess-sas-goto-shell) (ess-add-ess-process) (ess-setq-vars-local ess-customize-alist) (inferior-ess-mode) (ess-eval-linewise (concat ess-sas-submit-command " " ess-sas-submit-command-options " -altlog " ess-temp-sas-file ".log -altprint " ess-temp-sas-file ".lst -stdio")) ;;ess-temp-sas-file ".lst -stdio < /dev/tty")) (ess-sas-goto-sas) (setq ess-sas-submit-method 'iESS) (setq ess-eval-visibly-p nil) )) ;;(defun ess-sas-interactive () ;; (interactive) ;; (ess-sas-file-path) ;; (setq ess-sas-submit-method 'iESS) ;; ;; (let ((ess-temp-stderr " ") (ess-temp-stdout " ") (ess-temp-stdin " ")) ;; (setq ess-sas-shell-buffer "*LOG*") ;; (ess-sas-goto-shell) ;; (insert "tty") ;; (comint-send-input) ;; (sleep-for ess-sleep-for) ;; (save-excursion (setq ess-temp-stderr (ess-search-except "\\(/dev/[a-z0-9/]+\\)" nil t))) ;; (setq ess-sas-shell-buffer "*OUTPUT*") ;; (ess-sas-goto-shell) ;; (insert "tty") ;; (comint-send-input) ;; (sleep-for ess-sleep-for) ;; (save-excursion (setq ess-temp-stdout (ess-search-except "\\(/dev/[a-z0-9/]+\\)" nil t))) ;; (setq ess-sas-shell-buffer "*PROGRAM*") ;; (ess-sas-goto-shell) ;;;; (insert "tty") ;; (comint-send-input) ;; (sleep-for ess-sleep-for) ;; (insert "sh") ;; (comint-send-input) ;; (sleep-for ess-sleep-for) ;; (save-excursion (setq ess-temp-stdin (ess-search-except "\\(/dev/[a-z0-9/]+\\)" nil t))) ;; (insert (concat ess-sas-submit-command " " ess-sas-submit-command-options " -stdio <" ;; ess-temp-stdin " >1 " ess-temp-stdout " >2 " ess-temp-stderr)) ;; (comint-send-input) ;; (ess-add-ess-process) ;; (ess-sas-goto-sas) ;;)) (defun ess-sas-kill-buffers () "Kill all buffers related to a .sas file." (interactive) (ess-sas-file-path) (ess-sas-goto "log" nil t) (kill-buffer nil) (ess-sas-goto "lst" nil t) (kill-buffer nil) (ess-sas-goto ess-sas-suffix-1 nil t) (kill-buffer nil) (ess-sas-goto ess-sas-suffix-2 nil t) (kill-buffer nil) (ess-sas-goto "sas" nil t) (kill-buffer nil) ) ; else (defun ess-sas-rtf-portrait (&optional ess-tmp-font-size) "Creates an MS RTF portrait file from the current buffer." (interactive) ; (ess-sas-file-path t) (ess-revert-wisely) (set-visited-file-name (concat (buffer-name) ".rtf")) ; (ess-sas-goto "rtf" t) (if 'buffer-read-only (setq buffer-read-only nil)) (ess-rtf-replace-chars) (goto-char (point-min)) (insert (concat "{\\rtf1\\ansi{\\fonttbl\\f1\\fmodern " ess-sas-rtf-font-name ";}\n" "\\margl720\\margr720\\margt720\\margb720\n" "{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\\red0\\green255\\blue255;\\red0\\green255\\blue0;\\red255\\green0\\blue255;\\red255\\green0\\blue0;\\red255\\green255\\blue0;\\red255\\green255\\blue255;\\red0\\green0\\blue128;\\red0\\green128\\blue128;\\red0\\green128\\blue0;\\red128\\green0\\blue128;\\red128\\green0\\blue0;\\red128\\green128\\blue0;\\red128\\green128\\blue128;\\red192\\green192\\blue192;}\n" "{\\stylesheet{\\s15\\plain\\f1\\fs16\\cf1\\cb8\\lang1024 Emacs Text;}{\\*\\cs16 \\additive\\f1\\fs16\\cf1\\cb8\\lang1024 Emacs Base Style;}}\n" "{\\plain\\s15{\\cs16\\cs16\\f1\\fs16\\cf1\\cb8\\lang1024{\\cs16\\f1\\fs16\\cf1\\cb8\\lang1024\n")) (goto-char (point-max)) (insert "}}}}\n") (save-buffer) (kill-buffer (current-buffer))) (defun ess-rtf-replace-chars () "Convert a text file to an MS RTF file." (interactive) (goto-char (point-min)) (while (re-search-forward "\n" nil t) (replace-match "\\par\n" nil t)) (goto-char (point-min)) (while (re-search-forward "\f" nil t) (replace-match "\\page\n" nil t)) (goto-char (point-min)) (while (re-search-forward "\t" nil t) (replace-match "\\tab" nil t))) (defun ess-sas-rtf-landscape (&optional ess-tmp-font-size) "Creates an MS RTF landscape file from the current buffer." (interactive) (ess-revert-wisely) (set-visited-file-name (concat (buffer-name) ".rtf")) (if 'buffer-read-only (setq buffer-read-only nil)) (ess-rtf-replace-chars) (goto-char (point-min)) (insert (concat "{\\rtf1\\ansi{\\fonttbl\\f1\\fmodern " ess-sas-rtf-font-name ";}\n" "\\margl720\\margr720\\margt720\\margb720\n" "{\\*\\pgdsctbl\n" "{\\pgdsc0\\pgdscuse195\\lndscpsxn\\pgwsxn15840\\pghsxn12240\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\pgdscnxt0 Default;}}\n" "\\landscape\\paperh12240\\paperw15840\\margl1800\\margr1800\\margt1440\\margb1440\\sectd\\sbknone\\lndscpsxn\\pgwsxn15840\\pghsxn12240\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\ftnbj\\ftnstart1\\ftnrstcont\\ftnnar\\aenddoc\\aftnrstcont\\aftnstart1\\aftnnrlc\n" "{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\\red0\\green255\\blue255;\\red0\\green255\\blue0;\\red255\\green0\\blue255;\\red255\\green0\\blue0;\\red255\\green255\\blue0;\\red255\\green255\\blue255;\\red0\\green0\\blue128;\\red0\\green128\\blue128;\\red0\\green128\\blue0;\\red128\\green0\\blue128;\\red128\\green0\\blue0;\\red128\\green128\\blue0;\\red128\\green128\\blue128;\\red192\\green192\\blue192;}\n" "{\\stylesheet{\\s15\\plain\\f1\\fs16\\cf1\\cb8\\lang1024 Emacs Text;}{\\*\\cs16 \\additive\\f1\\fs16\\cf1\\cb8\\lang1024 Emacs Base Style;}}\n" "{\\plain\\s15{\\cs16\\cs16\\f1\\fs16\\cf1\\cb8\\lang1024{\\cs16\\f1\\fs16\\cf1\\cb8\\lang1024\n")) (goto-char (point-max)) (insert "}}}}\n") (save-buffer) (kill-buffer (current-buffer))) (defun ess-sas-rtf-us-landscape () "Creates an MS RTF US landscape file from the current buffer." (interactive) (ess-sas-rtf-portrait "16") (ess-sas-goto "rtf" t) (goto-char (point-min)) (forward-line 3) (insert (concat "{\\*\\pgdsctbl\n" "{\\pgdsc0\\pgdscuse195\\lndscpsxn\\pgwsxn15840\\pghsxn12240\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\pgdscnxt0 Default;}}\n" "\\landscape\\paperh12240\\paperw15840\\margl1800\\margr1800\\margt1440\\margb1440\\sectd\\sbknone\\lndscpsxn\\pgwsxn15840\\pghsxn12240\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\ftnbj\\ftnstart1\\ftnrstcont\\ftnnar\\aenddoc\\aftnrstcont\\aftnstart1\\aftnnrlc\n")) (save-buffer) (kill-buffer (current-buffer))) (defun ess-sas-rtf-a4-landscape () "Creates an MS RTF A4 landscape file from the current buffer." (interactive) (ess-sas-rtf-portrait "16") (ess-sas-goto "rtf" t) (goto-char (point-min)) (forward-line 3) (insert (concat "{\\*\\pgdsctbl\n" "{\\pgdsc0\\pgdscuse195\\lndscpsxn\\pgwsxn16837\\pghsxn11905\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\pgdscnxt0 Default;}}\n" "\\landscape\\paperh11905\\paperw16837\\margl1800\\margr1800\\margt1440\\margb1440\\sectd\\sbknone\\lndscpsxn\\pgwsxn16837\\pghsxn11905\\marglsxn1800\\margrsxn1800\\margtsxn1440\\margbsxn1440\\ftnbj\\ftnstart1\\ftnrstcont\\ftnnar\\aenddoc\\aftnrstcont\\aftnstart1\\aftnnrlc\n")) (save-buffer) (kill-buffer (current-buffer))) (defun ess-sas-submit () "Save the .sas file and submit to shell using a function that depends on the value of `ess-sas-submit-method'" (interactive) (ess-sas-file-path) (ess-sas-goto-sas) (save-buffer) (hack-local-variables) ;(ess-save-and-set-local-variables) (cond ((eq ess-sas-submit-method 'apple-script) (ess-sas-submit-mac ess-sas-submit-command ess-sas-submit-command-options)) ((eq ess-sas-submit-method 'ms-dos) (ess-sas-submit-windows ess-sas-submit-command ess-sas-submit-command-options)) ((eq ess-sas-submit-method 'iESS) (ess-sas-submit-iESS ess-sas-submit-command ess-sas-submit-command-options)) ((eq ess-sas-submit-method 'sh) (ess-sas-submit-sh ess-sas-submit-command ess-sas-submit-command-options)) (t (ess-sas-submit-sh ess-sas-submit-command ess-sas-submit-command-options))) ; (ess-sas-goto-sas) ) (defun ess-sas-submit-iESS (arg1 arg2) "iESS Submit a batch job in an inferior-ESS buffer. The buffer should (1) have telnet access and be running a shell on a remote machine or (2) be running a shell on the local machine. The user can telnet to the remote computer and then declare the *telnet-buffer* to be an inferior ESS buffer with the `ess-add-ess-process' command. When using a remote computer, the .sas file must live on the remote computer and be accessed through `ange-ftp'. When `ess-sas-submit' saves a file, it is therefore saved on the remote computer. The various functions such as `ess-sas-goto-lst' retrieve their files from the remote computer. Local copies of the .sas .lst .log and others may be made manually with `write-buffer'." ;; (ess-eval-linewise (concat "cd default-directory)) (ess-force-buffer-current "Process to load into: ") (ess-eval-linewise (concat "cd " (car (last (split-string (file-name-directory ess-sas-file-path) "\\(:\\|]\\)"))))) (ess-eval-linewise (concat arg1 " " arg2 " " (buffer-name) " &"))) (defun ess-sas-submit-mac (arg1 arg2) "If you are using Mac SAS, then arg1, `ess-sas-submit-command', should be the AppleScript command \"invoke SAS using program file\", and, if necessary, arg2, `ess-sas-submit-command-options', is a string of the form \"with options { \\\"option-1\\\", \\\"option-2\\\", etc.}\". If you are using Windows SAS with the PC emulator Virtual PC, then `ess-sas-submit-command' should be ..." ;(ess-save-and-set-local-variables) (do-applescript (concat arg1 " \"" (if (not ess-sas-submit-mac-virtual-pc) (unix-filename-to-mac default-directory)) (buffer-name) "\"" arg2))) (defun ess-sas-submit-region () "Write region to temporary file, and submit to SAS." (interactive) (ess-sas-file-path) (hack-local-variables t) (write-region (region-beginning) (region-end) (concat (ess-sas-temp-root) ".sas")) (let ((arg1 ess-sas-submit-command) (arg2 ess-sas-submit-command-options)) (save-excursion (ess-sas-goto-shell t) (if (and (w32-shell-dos-semantics) (string-equal ":" (substring ess-sas-file-path 1 2))) (progn (insert (substring ess-sas-file-path 0 2)) (comint-send-input) )) (insert "cd \"" (convert-standard-filename (file-name-directory ess-sas-file-path)) "\"") (comint-send-input) (insert (concat ess-sas-submit-pre-command " " arg1 " " arg2 " " (ess-sas-temp-root) " " ess-sas-submit-post-command)) (comint-send-input) )) ) (defun ess-sas-submit-sh (arg1 arg2) "Unix or bash in the *shell* buffer. Multiple processing is supported on this platform. SAS may not be found in your PATH. You can alter your PATH to include SAS or you can specify the PATHNAME (PATHNAME can NOT contain spaces), i.e. let arg1 be your local equivalent of \"/usr/local/sas612/sas\"." (if (string-equal (substring (file-name-nondirectory ess-sas-file-path) 0 1) ess-kermit-prefix) (progn (ess-kermit-send) (ess-sas-goto-shell t) (insert ess-sas-submit-pre-command " " arg1 " " (substring (file-name-sans-extension (file-name-nondirectory ess-sas-file-path)) 1) " " arg2 " " ess-sas-submit-post-command) (comint-send-input)) ;;else ;; (ess-sas-goto-shell t) (ess-sas-cd) ; (insert "cd " (car (last (split-string (file-name-directory ess-sas-file-path) ;"\\([a-zA-Z][a-zA-Z]:\\|]\\)")))) ; (comint-send-input) (insert ess-sas-submit-pre-command " " arg1 " " (file-name-sans-extension (file-name-nondirectory ess-sas-file-path)) " " arg2 " " ess-sas-submit-post-command)) ; (ess-sleep) (comint-send-input)) (defun ess-sas-submit-windows (arg1 arg2) "Windows using MS-DOS prompt in the *shell* buffer. Multiple processing is supported on this platform. On most Windows installations, SAS will not be found in your PATH so you should alter your PATH to include SAS, i.e. SET PATH=%PATH%;C:\\Program Files\\SAS Or you can specify the PATHNAME directly (you must escape spaces by enclosing the string in \\\"'s), i.e. let `ess-sas-submit-command' be \"\\\"C:\\Program Files\\SAS\\sas.exe\\\"\". Keep in mind that the maximum command line length in MS-DOS is 127 characters so altering your PATH is preferable." ;(ess-save-and-set-local-variables) (ess-sas-goto-shell t) (if (string-equal ":" (substring ess-sas-file-path 1 2)) (progn (insert (substring ess-sas-file-path 0 2)) (comint-send-input) ) ) (insert "cd \"" (convert-standard-filename (file-name-directory ess-sas-file-path)) "\"") (comint-send-input) (insert ess-sas-submit-pre-command " " arg1 " -sysin \"" (file-name-sans-extension (file-name-nondirectory ess-sas-file-path)) "\" " arg2 " " ess-sas-submit-post-command) (comint-send-input)) (defun ess-sas-tab-to-tab-stop () "Tab to next tab-stop and set left margin." (interactive) (tab-to-tab-stop) (setq left-margin (current-column)) ) (defun ess-sas-temp-root () "Return `ess-sas-file-path' sans extension with `ess-sas-temp-root' appended." (concat (file-name-sans-extension ess-sas-file-path) ess-sas-temp-root)) (defun ess-sas-transcript (&optional strip) "Comment .log messages to create a .sas program; use C-u to strip." (interactive "P") (save-excursion (goto-char (point-min)) (while (search-forward-regexp (concat "^\\(\\(1[ \t]+The SAS System\\| \\|NOTE\\|WARNING\\|ERROR\\|" "[ \t]+\\(\\(real\\|cpu\\) time\\|Licensed to\\|Engine:\\|" "Physical Name:\\|File Name=\\|Owner Name=\\|Group Name=\\|" "Access Permission=\\|File Size (bytes)=\\|Pipe command=\\|" "RECFM=[DFNPV],LRECL=\\|[0-9]+:[0-9]+[ /t]+[0-9]+:[0-9]+\\|" "[1-9][0-9]* at [0-9]+:[0-9]+[ /t]+[1-9][0-9]* at [0-9]+:[0-9]+\\)\\).*$" "\\|[0-9]+\\([ \t]+!\\)?\\|MPRINT([_A-Z]+):\\|" "[ \t]+\\(values at the places given by: (Line):(Column).\\|" "The m\\(in\\|ax\\)imum record length was [1-9][0-9]*.\\|" "One or more lines were truncated.\\|" "Each place is given by: (Number of times) at (Line):(Column).\\|" "[0-9][0-9]:[0-9][0-9] [MTWFS][aeioudhnrst]+day, [JFMASOND]" "[aeiouybcghlmnprstv]+ [1-9][0-9]?, 20[0-9][0-9]\\)\\)") nil t) (replace-match (if strip " " "/*\\&*/") t)) )) (defun ess-sas-toggle-sas-listing-mode (&optional force) "Toggle SAS-listing-mode for .lst files." (interactive) (ess-sas-goto-lst) (if (equal (cdr (assoc "\\.[lL][sS][tT]\\'" auto-mode-alist)) 'SAS-listing-mode) (progn (setq auto-mode-alist (delete '("\\.[lL][sS][tT]\\'" . SAS-listing-mode) auto-mode-alist)) (setq buffer-read-only nil) (ess-listing-minor-mode 0)) (setq auto-mode-alist (append '(("\\.[lL][sS][tT]\\'" . SAS-listing-mode)) auto-mode-alist)) (setq buffer-read-only t) (ess-listing-minor-mode 1))) (defun ess-sas-toggle-sas-log-mode () "Toggle SAS-log-mode for .log files." (interactive) (ess-sas-goto-log) (kill-buffer nil) ; (if (equal (cdr (assoc "\\.[lL][oO][gG]\\'" auto-mode-alist)) 'SAS-log-mode) (progn ; (setq auto-mode-alist (delete '("\\.[lL][oO][gG]\\'" . SAS-log-mode) auto-mode-alist)) ; (setq buffer-read-only nil) ; (ess-transcript-minor-mode 0) ; (font-lock-mode 0)) ; (setq auto-mode-alist (append '(("\\.[lL][oO][gG]\\'" . SAS-log-mode)) auto-mode-alist)) ; (setq buffer-read-only t) ; (ess-transcript-minor-mode 1) ; (font-lock-mode 1) ; (font-lock-fontify-buffer)) (if (equal (cdr (assoc "\\.[lL][oO][gG]\\'" auto-mode-alist)) 'SAS-log-mode) (setq auto-mode-alist (delete '("\\.[lL][oO][gG]\\'" . SAS-log-mode) auto-mode-alist)) (setq auto-mode-alist (append '(("\\.[lL][oO][gG]\\'" . SAS-log-mode)) auto-mode-alist))) (ess-sas-goto-log)) (defun ess-sas-versions-create () "Generate the `M-x SASV' functions for starting other versions of SAS. See `ess-sas-versions' for strings that determine which functions are created. The local variable `ess-sas-versions-created' is used to return list of the new SAS defuns, if any, that were created. The defuns will normally be placed on the menubar upon ESS initialisation." ;; This works by creating a temp buffer where the template function is ;; edited so that V is replaced by the version number (let ((template "") (beg) (versions) (version) (eval-buf (get-buffer-create "*ess-temp-sas-evals*")) (ess-sas-versions-created) ) ;; ;; This is the template function used for creating M-x SASV. (setq template "(defun SASV (&optional start-args) \"Call SASV, i.e., the SAS version 'SASV' using ESS. This function was generated by `ess-sas-versions-create'.\" (interactive \"P\") (let ((inferior-SAS-program-name \"SASV\")) (SAS start-args))) ") (save-excursion (set-buffer eval-buf) ;; clear the buffer. (delete-region (point-min) (point-max)) ;; Find which versions of SAS we want. Remove the pathname, leaving just ;; the name of the executable. (setq versions (ess-uniq-list (mapcar 'file-name-nondirectory (apply 'nconc (mapcar 'ess-find-exec-completions ess-sas-versions))))) (ess-write-to-dribble-buffer (format "(SAS): ess-sas-versions-create making M-x defuns for %s" (mapconcat 'identity versions " "))) (setq ess-sas-versions-created versions) ;keep copy for returning at end. ;; Iterate over each string in VERSIONS, creating a new defun each time. (while versions (setq version (car versions) versions (cdr versions)) (setq beg (point)) (insert template) (goto-char beg) (while (search-forward "SASV" nil t) (replace-match version t t)) (goto-char (point-max)) ) ;; buffer has now been created with defuns, so eval them! (eval-buffer) (kill-buffer eval-buf) ) ess-sas-versions-created)) ;;; Section 3: Key Definitions (defun ess-sas-edit-keys-set (&optional arg) "Set TAB/RET key in `SAS-mode'. If arg is nil TAB is `sas-indent-line' and RET is `newline-and-indent'. Else TAB is `ess-sas-tab-to-tab-stop', C-TAB is `ess-sas-backward-delete-tab' and RET is `newline'." (interactive) (if arg (progn (define-key sas-mode-local-map [(control tab)] 'ess-sas-backward-delete-tab) (define-key sas-mode-local-map [return] 'newline) (define-key sas-mode-local-map "\t" 'ess-sas-tab-to-tab-stop)) ;;else (define-key sas-mode-local-map [return] 'newline-and-indent) (define-key sas-mode-local-map "\t" 'sas-indent-line))) (defvar ess-sas-edit-keys-toggle nil "Toggle TAB/RET key in `SAS-mode'. nil binds TAB to `sas-indent-line' and RET to `newline-and-indent'. Non-nil binds TAB to `ess-sas-tab-to-tab-stop', C-TAB to `ess-sas-backward-delete-tab', and RET to `newline'.") (defun ess-sas-edit-keys-toggle (&optional arg) "Toggle `ess-sas-edit-keys-toggle'. Optional arg is still accepted for backward compatibility, however, arg is ignored." (interactive) (setq ess-sas-edit-keys-toggle (not ess-sas-edit-keys-toggle)) (ess-sas-edit-keys-set ess-sas-edit-keys-toggle) ) (defvar ess-sas-global-pc-keys nil "Non-nil if function keys use PC-like SAS key definitions in all modes.") (defun ess-sas-global-pc-keys () "PC-like SAS key definitions" (interactive) (global-set-key [(control f1)] 'ess-sas-rtf-portrait) (global-set-key [(control f2)] 'ess-sas-rtf-landscape) (global-set-key (quote [f2]) 'ess-revert-wisely) (global-set-key (quote [f3]) 'ess-sas-goto-shell) (global-set-key (quote [f4]) 'ess-sas-goto-file-1) (global-set-key (quote [f5]) 'ess-sas-goto-sas) (global-set-key (quote [f6]) 'ess-sas-goto-log) (global-set-key [(control f6)] 'ess-sas-append-log) (global-set-key (quote [f7]) 'ess-sas-goto-lst) (global-set-key [(control f7)] 'ess-sas-append-lst) (global-set-key (quote [f8]) 'ess-sas-submit) (global-set-key [(control f8)] 'ess-sas-submit-region) (global-set-key (quote [f9]) 'ess-sas-data-view-fsview) (global-set-key [(control f9)] 'ess-sas-data-view-insight) ;; (global-set-key (quote [f10]) 'ess-sas-toggle-sas-log-mode) ;; (global-set-key [(control f10)] 'ess-sas-toggle-sas-listing-mode) ;; (global-set-key (quote [f11]) 'ess-sas-goto-file-2) ;; (global-set-key [(control f11)] 'ess-ebcdic-to-ascii-search-and-replace) (global-set-key (quote [f12]) 'ess-sas-graph-view) (global-set-key [(control tab)] 'ess-sas-backward-delete-tab) ;; (define-key sas-mode-local-map "\C-c\C-p" 'ess-sas-file-path) (setq ess-sas-global-pc-keys t) (setq ess-sas-global-unix-keys nil) (setq ess-sas-local-pc-keys nil) (setq ess-sas-local-unix-keys nil) ) (defvar ess-sas-global-unix-keys nil "Non-nil if function keys use Unix-like SAS key definitions in all modes.") (defun ess-sas-global-unix-keys () "Unix/Mainframe-like SAS key definitions" (interactive) (global-set-key [(control f1)] 'ess-sas-rtf-portrait) (global-set-key [(control f2)] 'ess-sas-rtf-landscape) (global-set-key (quote [f2]) 'ess-revert-wisely) (global-set-key (quote [f3]) 'ess-sas-submit) (global-set-key [(control f3)] 'ess-sas-submit-region) (global-set-key (quote [f4]) 'ess-sas-goto-sas) (global-set-key (quote [f5]) 'ess-sas-goto-log) (global-set-key [(control f5)] 'ess-sas-append-log) (global-set-key (quote [f6]) 'ess-sas-goto-lst) (global-set-key [(control f6)] 'ess-sas-append-lst) (global-set-key (quote [f7]) 'ess-sas-goto-file-1) (global-set-key (quote [f8]) 'ess-sas-goto-shell) (global-set-key (quote [f9]) 'ess-sas-data-view-fsview) (global-set-key [(control f9)] 'ess-sas-data-view-insight) ;; (global-set-key (quote [f10]) 'ess-sas-toggle-sas-log-mode) ;; (global-set-key [(control f10)] 'ess-sas-toggle-sas-listing-mode) ;; (global-set-key (quote [f11]) 'ess-sas-goto-file-2) ;; (global-set-key [(control f11)] 'ess-ebcdic-to-ascii-search-and-replace) (global-set-key (quote [f12]) 'ess-sas-graph-view) (global-set-key [(control tab)] 'ess-sas-backward-delete-tab) ;;(define-key sas-mode-local-map "\C-c\C-p" 'ess-sas-file-path) (setq ess-sas-global-pc-keys nil) (setq ess-sas-global-unix-keys t) (setq ess-sas-local-pc-keys nil) (setq ess-sas-local-unix-keys nil) ) (defvar ess-sas-local-pc-keys nil "Non-nil if function keys use PC-like SAS key definitions in SAS-mode and related modes.") (defun ess-sas-local-pc-keys () "PC-like SAS key definitions." (interactive) (define-key sas-mode-local-map [(control f1)] 'ess-sas-rtf-portrait) (define-key sas-mode-local-map [(control f2)] 'ess-sas-rtf-landscape) (define-key sas-mode-local-map (quote [f2]) 'ess-revert-wisely) (define-key sas-mode-local-map (quote [f3]) 'ess-sas-goto-shell) (define-key sas-mode-local-map (quote [f4]) 'ess-sas-goto-file-1) (define-key sas-mode-local-map (quote [f5]) 'ess-sas-goto-sas) (define-key sas-mode-local-map (quote [f6]) 'ess-sas-goto-log) (define-key sas-mode-local-map [(control f6)] 'ess-sas-append-log) (define-key sas-mode-local-map (quote [f7]) 'ess-sas-goto-lst) (define-key sas-mode-local-map [(control f7)] 'ess-sas-append-lst) (define-key sas-mode-local-map (quote [f8]) 'ess-sas-submit) (define-key sas-mode-local-map [(control f8)] 'ess-sas-submit-region) (define-key sas-mode-local-map (quote [f9]) 'ess-sas-data-view-fsview) (define-key sas-mode-local-map [(control f9)] 'ess-sas-data-view-insight) (define-key sas-mode-local-map (quote [f10]) 'ess-sas-toggle-sas-log-mode) (define-key sas-mode-local-map [(control f10)] 'ess-sas-toggle-sas-listing-mode) (define-key sas-mode-local-map (quote [f11]) 'ess-sas-goto-file-2) (define-key sas-mode-local-map [(control f11)] 'ess-ebcdic-to-ascii-search-and-replace) (define-key sas-mode-local-map (quote [f12]) 'ess-sas-graph-view) ;(define-key sas-mode-local-map "\C-c\C-p" 'ess-sas-file-path) (setq ess-sas-global-pc-keys nil) (setq ess-sas-global-unix-keys nil) (setq ess-sas-local-pc-keys t) (setq ess-sas-local-unix-keys nil) ) (defvar ess-sas-local-unix-keys nil "Non-nil if function keys use Unix-like SAS key definitions in SAS-mode and related modes.") (defun ess-sas-local-unix-keys () "Unix/Mainframe-like SAS key definitions" (interactive) (define-key sas-mode-local-map [(control f1)] 'ess-sas-rtf-portrait) (define-key sas-mode-local-map [(control f2)] 'ess-sas-rtf-landscape) (define-key sas-mode-local-map (quote [f2]) 'ess-revert-wisely) (define-key sas-mode-local-map (quote [f3]) 'ess-sas-submit) (define-key sas-mode-local-map [(control f3)] 'ess-sas-submit-region) (define-key sas-mode-local-map (quote [f4]) 'ess-sas-goto-sas) (define-key sas-mode-local-map (quote [f5]) 'ess-sas-goto-log) (define-key sas-mode-local-map [(control f5)] 'ess-sas-append-log) (define-key sas-mode-local-map (quote [f6]) 'ess-sas-goto-lst) (define-key sas-mode-local-map [(control f6)] 'ess-sas-append-lst) (define-key sas-mode-local-map (quote [f7]) 'ess-sas-goto-file-1) (define-key sas-mode-local-map (quote [f8]) 'ess-sas-goto-shell) (define-key sas-mode-local-map (quote [f9]) 'ess-sas-data-view-fsview) (define-key sas-mode-local-map [(control f9)] 'ess-sas-data-view-insight) (define-key sas-mode-local-map (quote [f10]) 'ess-sas-toggle-sas-log-mode) (define-key sas-mode-local-map [(control f10)] 'ess-sas-toggle-sas-listing-mode) (define-key sas-mode-local-map (quote [f11]) 'ess-sas-goto-file-2) (define-key sas-mode-local-map [(control f11)] 'ess-ebcdic-to-ascii-search-and-replace) (define-key sas-mode-local-map (quote [f12]) 'ess-sas-graph-view) ;(define-key sas-mode-local-map "\C-c\C-p" 'ess-sas-file-path) (setq ess-sas-global-pc-keys nil) (setq ess-sas-global-unix-keys nil) (setq ess-sas-local-pc-keys nil) (setq ess-sas-local-unix-keys t) ) (provide 'ess-sas-a) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; outline-minor-mode: nil ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-sas-a.el ends here ess-17.11/lisp/ess-sas-d.el0000444005071500004540000003230613202324174012333 00000000000000;;; ess-sas-d.el --- SAS customization ;; Copyright (C) 1997--2001 Richard M. Heiberger and A. J. Rossini ;; Copyright (C) 2002--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: 20 Aug 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the SAS customizations for ESS behaviors. See ;; ess-sas-l and ess-sas-a for the underlying general modifications. ;;; Code: ;;; Autoloads: (ess-message "[ess-sas-d:] require 'comint & 'shell ...") (require 'comint) (require 'shell) (require 'executable) ;;(ess-message "[ess-sas-d:] require 'ess-sas-a ...") ;;(require 'ess-sas-a) (ess-message "[ess-sas-d:] require 'ess-sas-l ...") (require 'ess-sas-l) (ess-message "[ess-sas-d:] (autoload ..) (def** ..) ...") (autoload 'inferior-ess "ess-inf" no-doc t) (autoload 'ess-mode "ess-mode" no-doc t) (autoload 'ess-proc-name "ess-inf" no-doc nil) (defvar inferior-SAS-args "-stdio -linesize 80 -noovp -nosyntaxcheck" "*Arguments to use for starting SAS.") (defvar inferior-SAS-args-temp nil "Hack variable, needed for args preprocessing. Better logic needed! (see 2 uses, in this file).") (defun ess-SAS-pre-run-hook (temp-ess-dialect) "Set up log and list files for interactive SAS." (let* ((ess-shell-buffer-name-flag (get-buffer "*shell*")) ess-shell-buffer-name ;; isn't pretty yet. ;; ess-local-process-name is defined after this function. ;; it needs to be defined prior to this function. (tmp-procname (let ((ntry 0) (done nil)) ;; find a non-existent process (while (not done) (setq ntry (1+ ntry) done (not (get-process (ess-proc-name ntry temp-ess-dialect))))) (ess-proc-name ntry temp-ess-dialect))) ;; Following was tmp-local-process-name. Stolen from inferior-ess (ess-sas-lst-bufname (concat "*" tmp-procname ".lst*")) (ess-sas-log-bufname (concat "*" tmp-procname ".log*")) (explicit-shell-file-name "/bin/sh") inferior-SAS-redirect-args ess-sas-lst ess-sas-log) (ess-write-to-dribble-buffer (format "(ess-SAS-pre-run-hook 1): ess-lang=%s, ess-dialect=%s, temp-dialect=%s, buf=%s \n" ess-language ess-dialect temp-ess-dialect (current-buffer))) ;; If someone is running a *shell* buffer, rename it to avoid ;; inadvertent nuking. (if ess-shell-buffer-name-flag (save-excursion (set-buffer "*shell*") (setq ess-shell-buffer-name (rename-buffer "*ess-shell-regular*" t)))) ;; Construct the LST buffer for output (if (get-buffer ess-sas-lst-bufname) nil (shell) (accept-process-output (get-buffer-process (current-buffer))) (sleep-for 2) ; need to wait, else working too fast! (setq ess-sas-lst (ess-insert-accept "tty")) (SAS-listing-mode) (shell-mode) (ess-listing-minor-mode t) (rename-buffer ess-sas-lst-bufname t)) ;; Construct the LOG buffer for output (if (get-buffer ess-sas-log-bufname) nil (shell) (accept-process-output (get-buffer-process (current-buffer))) (sleep-for 2) ; need to wait, else working too fast! (setq ess-sas-log (ess-insert-accept "tty")) ;(SAS-log-mode) (shell-mode) (ess-transcript-minor-mode t) (rename-buffer ess-sas-log-bufname t)) (setq inferior-SAS-redirect-args (concat " " ess-sas-lst " " ess-sas-log " ") inferior-SAS-args-temp (concat inferior-SAS-redirect-args inferior-SAS-args)) ;; Restore the *shell* buffer (if ess-shell-buffer-name-flag (save-excursion (set-buffer ess-shell-buffer-name) (rename-buffer "*shell*"))) (delete-other-windows) (split-window-vertically) (split-window-vertically) (switch-to-buffer (nth 2 (buffer-list))) (other-window 2) (switch-to-buffer ess-sas-log-bufname) (split-window-vertically) (other-window 1) (switch-to-buffer ess-sas-lst-bufname) (other-window 2) ;;workaround (setq inferior-SAS-program-name (concat (file-name-as-directory ess-etc-directory) "ess-sas-sh-command")) (setq inferior-ess-program inferior-SAS-program-name))) (defun ess-insert-accept (command) "Submit command to process, get next line." (interactive) (goto-char (point-max)) (insert command) (comint-send-input) (accept-process-output (get-buffer-process (current-buffer))) (forward-line -1) (let* ((beg (point)) (ess-tty-name (progn (end-of-line) (buffer-substring beg (point))))) (goto-char (point-max)) ess-tty-name)) (defvar SAS-customize-alist '((ess-local-customize-alist . 'SAS-customize-alist) (ess-language . "SAS") (ess-dialect . "SAS") (ess-mode-editing-alist . SAS-editing-alist) ; from ess-sas-l.el (ess-mode-syntax-table . SAS-syntax-table) (inferior-ess-program . inferior-SAS-program-name) (ess-help-sec-regex . "^[A-Z. ---]+:$") (ess-help-sec-keys-alist . " ") (ess-object-name-db-file . "ess-sas-namedb.el") (inferior-ess-objects-command . "objects(%d)");;FIXME (inferior-ess-help-command . "help(\"%s\",pager=\"cat\",window=F)\n");;FIXME (inferior-ess-exit-command . "endsas;\n") (ess-loop-timeout . 500000 ) (inferior-ess-primary-prompt . "^") (inferior-ess-secondary-prompt . "^") (comint-use-prompt-regexp . t) (inferior-ess-start-file . nil) ;"~/.ess-SAS") (inferior-ess-start-args . inferior-SAS-args-temp) (inferior-ess-font-lock-defaults . SAS-mode-font-lock-defaults) ;; (ess-pre-run-hook . 'ess-SAS-pre-run-hook) ;; (ess-local-process-name . nil) ) "Variables to customize for SAS") ;;; The functions of interest (mode, inferior mode) (defvar sas-mode-local-map nil "contains modified local keymap for SAS") (defun SAS-mode (&optional proc-name) "Major mode for editing SAS source. See ess-mode for more help." (interactive) (setq ess-customize-alist SAS-customize-alist) (ess-mode SAS-customize-alist proc-name) ;; Local map settings, AFTER initialization (only if not yet defined) (if sas-mode-local-map nil (setq sas-mode-local-map (copy-keymap (current-local-map))) (ess-sas-edit-keys-set ess-sas-edit-keys-toggle) (if ess-sas-local-unix-keys (ess-sas-local-unix-keys)) (if ess-sas-local-pc-keys (ess-sas-local-pc-keys)) (if ess-sas-global-unix-keys (ess-sas-global-unix-keys)) (if ess-sas-global-pc-keys (ess-sas-global-pc-keys))) (define-key sas-mode-local-map "\C-ci" 'ess-eval-line-and-step-invisibly) (define-key sas-mode-local-map ";" 'ess-electric-run-semicolon) ;; this is a mess ;; interactive and batch commands share sas-mode-local-map, ;; but the associated commands are very different ;; what would be better is two maps like ;; sas-batch-mode-local-map and sas-interactive-mode-local-map ;; or smart function definitions that would do the appropriate ;; thing for either batch or interactive sessions ;; however, neither of these solutions are planned ;; therefore, no key definitions can be shared between ;; batch and interactive at this time, hence the lines that ;; are commented below: uncomment at your own risk ;; (define-key sas-mode-local-map "\C-c\C-p" 'ess-sas-file-path) ;; (define-key sas-mode-local-map "\C-c\C-b" 'ess-sas-submit) ;; (define-key sas-mode-local-map "\C-c\C-r" 'ess-sas-submit-region) ;; (define-key sas-mode-local-map "\C-c\C-x" 'ess-sas-goto-log) ;; (define-key sas-mode-local-map "\C-c\C-y" 'ess-sas-goto-lst) (use-local-map sas-mode-local-map) (set (make-local-variable 'font-lock-defaults) ;; KEYWORDS KEYWORDS-ONLY CASE-FOLD ..... '(SAS-mode-font-lock-defaults nil t)) ;; ^^ this *should* set ;; font-lock-keywords-case-fold-search, but it fails for Emacs 22.[23] ;; hence : (setq font-lock-keywords-case-fold-search t) (run-hooks 'SAS-mode-hook)) ;; rmh Jul 10 2003 (defun ess-electric-run-semicolon (arg) "Insert character. If the line contains \"run;\" or \"quit;\" and nothing else then indent line." (interactive "P") (if ess-sas-edit-keys-toggle (insert ";") (let (insertpos) (if (and (not arg) (eolp) (save-excursion (skip-chars-backward " \t") (backward-word 1) (and (looking-at "run\\|quit") (progn (skip-chars-backward " \t") (bolp))))) (progn (insert last-command-event) (ess-indent-line) (save-excursion (if insertpos (goto-char (1+ insertpos))) (delete-char -1)))) (if insertpos (save-excursion (goto-char insertpos) (self-insert-command (prefix-numeric-value arg))) (self-insert-command (prefix-numeric-value arg)))))) (defun SAS-menu () "Start SAS from the menu." (interactive) (if ess-microsoft-p ;; replace with other choices for starting SAS under XEmacs? (error "SAS cannot be started this way in ESS on Windows.") (SAS))) (defun SAS () "Call 'SAS', from SAS Institute." (interactive) (setq-default ess-customize-alist SAS-customize-alist) (let* ((temp-dialect "SAS")) ;(cdr (rassoc ess-dialect SAS-customize-alist)))) (ess-write-to-dribble-buffer (format "(SAS): ess-dial=%s, temp-dial=%s\n" ess-dialect temp-dialect)) (ess-SAS-pre-run-hook temp-dialect) (setq ess-eval-visibly-p nil) (inferior-ess) (save-excursion (set-buffer "*SAS*") (use-local-map sas-mode-local-map)))) (defun ess-multi-frame-SAS () "Put running SAS buffers into separate frames. Load this function M-x load-file essx-sas.el RET. Then find-file myfile.sas. If myfile.sas is already in a buffer, kill-buffer it and then find-file it again. Place the cursor in a myfile.sas buffer. Run SAS with M-x SAS, Return the cursor to the myfile.sas buffer, then enter C-c C-w to put *SAS* *SAS.log* *SAS.lst* buffers into their own frames." (interactive) (delete-other-windows) (save-excursion (set-buffer "*SAS*") (make-frame) (set-buffer "*SAS.log*") (make-frame) (set-buffer "*SAS.lst*") (make-frame))) (add-hook 'ess-mode-hook (lambda () (when (string= ess-language "SAS") ;; e.g. not for R-only users (local-set-key "\C-c\C-w" 'ess-multi-frame-SAS)))) (defun ess-num-or-zero (arg) "*If a number, then return that number, otherwise return 0." (or (and (numberp arg) arg) 0)) ; Provide package (provide 'ess-sas-d) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; outline-minor-mode: nil ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-sas-d.el ends here ess-17.11/lisp/ess-sas-l.el0000444005071500004540000023532613202324174012352 00000000000000;;; ess-sas-l.el --- SAS customization ;; Copyright (C) 1997--2009 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Authors: Richard M. Heiberger ;; A.J. Rossini ;; Rodney Sparapani ;; Created: 20 Aug 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS (Emacs Speaks Statistics). ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This is based upon Version 1.4 of SAS mode: ;;; sas-mode: indent, run etc, SAS programs. ;;; Copyright (C) 1994--1997 Tom Cook ;;; Author: Tom Cook ;;; Dept. of Biostatistics ;;; University of Wisconsin - Madison ;;; Madison, WI 53706 ;;; cook@biostat.wisc.edu ;;; ;;; Acknowledgements: ;;; Menu code for XEmacs/Lucid emacs and startup mods ;;; contributed by arossini@biostats.hmc.psu.edu ;;; ;;; Last change: 2/1/95 ;;; Last change: 01/15/02 ;;; Code: (ess-message "[ess-sas-l:] (require 'ess) ...") (require 'ess) (ess-message "[ess-sas-l:] (require 'ess-mode) ...") (require 'ess-mode) (require 'ess-custom) (ess-message "[ess-sas-l:] (autoload ..) (def** ..) etc ...") (autoload 'ess-transcript-mode "ess-trns" "ESS source eval mode." t) (put 'ess-transcript-minor-mode 'permanent-local t) (or (assq 'ess-transcript-minor-mode minor-mode-alist) (setq minor-mode-alist (append minor-mode-alist (list '(ess-transcript-minor-mode " ESStr"))))) (put 'ess-listing-minor-mode 'permanent-local t) (or (assq 'ess-listing-minor-mode minor-mode-alist) (setq minor-mode-alist (append minor-mode-alist (list '(ess-listing-minor-mode " ESSlst"))))) (defun ess-transcript-minor-mode (&optional arg) "Toggle Ess-Transcript minor mode. With arg, turn Ess-Transcript minor mode on if arg is positive, off otherwise. See the command `ess-transcript-mode' for more information on this mode." (interactive "P") (setq ess-transcript-minor-mode (if (null arg) (not ess-transcript-minor-mode) (> (prefix-numeric-value arg) 0))) (force-mode-line-update) (setq mode-line-process '(" [" ess-local-process-name "]"))) (defun ess-listing-minor-mode (&optional arg) "Toggle Ess-Listing minor mode. With arg, turn Ess-Listing minor mode on if arg is positive, off otherwise. Ess-Listing mode is used solely to place an indicator on the mode line." (interactive "P") (setq ess-listing-minor-mode (if (null arg) (not ess-listing-minor-mode) (> (prefix-numeric-value arg) 0))) (force-mode-line-update) (setq mode-line-process '(" [" ess-local-process-name "]"))) (defcustom ess-automatic-sas-log-or-lst-mode t "Automatically turn on `SAS-log-mode' and `SAS-listing-mode' when enabled." :type 'boolean :group 'ess-sas) (defun ess-SAS-log-mode-p () "Return t when when a SAS log file is detected. A SAS log is defined as having: 1. The first line matches \"^1[ \t]*The SAS System\" 2. The file name ends in .log. " (and ess-automatic-sas-log-or-lst-mode (save-excursion (goto-char (point-min)) (looking-at "1[ \t]*The SAS System")) (if (buffer-file-name) (string-match ".log$" (buffer-file-name)) t))) (defun ess-SAS-listing-mode-p () "Return t when SAS listing file is detected. A .lst file is a SAS listing file when: 1. The file name ends in .lst 2. The corresponding log file exists and is a SAS log file. " (when ess-automatic-sas-log-or-lst-mode (let* ((bfn (buffer-file-name)) (log (and bfn (string-match-p "\\.lst$" bfn) (replace-regexp-in-string "\\.lst$" ".log" bfn)))) (and log (file-exists-p log) (with-temp-buffer (insert-file-contents log nil 0 200) (goto-char (point-min)) (looking-at "1[ \t]*The SAS System")))))) (add-to-list 'magic-mode-alist '(ess-SAS-log-mode-p . SAS-log-mode)) (add-to-list 'magic-mode-alist '(ess-SAS-listing-mode-p . SAS-listing-mode)) (defun SAS-log-mode () "`ess-transcript-mode' for SAS." (interactive) (SAS-mode) (setq mode-name "ESS[LOG]") (ess-transcript-minor-mode 1) (setq buffer-read-only t)) ;; to protect the buffer. (defun SAS-listing-mode() "Fundamental mode with `ess-listing-minor-mode' and read-only." (interactive) (fundamental-mode) (setq mode-name "ESS[LST]") (ess-listing-minor-mode 1) (use-local-map sas-mode-local-map) (setq buffer-read-only t)) ;; to protect the buffer. (fset 'sas-log-mode 'SAS-log-mode) (fset 'SAS-transcript-mode 'SAS-log-mode) (fset 'sas-transcript-mode 'SAS-log-mode) (fset 'sas-mode 'SAS-mode) (fset 'sas-listing-mode 'SAS-listing-mode) (defcustom sas-indent-width 4 "*Amount to indent sas statements." :group 'ess-sas :type 'integer) (defcustom sas-indent-ignore-comment "*" "*Comments that start with this string are ignored in indentation." :group 'ess-sas :type 'string) (defcustom sas-require-confirmation t "*Require confirmation when revisiting a modified sas-output file." :group 'ess-sas :type 'boolean) ;; user can specify the sas program name (defcustom sas-program "sas" "*Command to invoke SAS, default for buffer-local `ess-sas-submit-command'." :group 'ess-sas :type 'string) (defcustom sas-pre-run-hook nil "Hook to execute prior to running SAS via `submit-sas'." :group 'ess-sas :type 'hook) ;never used--see ess-sas-submit-command-options in ess-sas-a.el ;(defcustom sas-options-string "" ; "*Options to be passed to sas as if typed on the command line." ; :group 'ess-sas ; :type 'string) (defcustom sas-notify t "*Beep and display message when job is done." :group 'ess-sas :type 'boolean) (defcustom sas-error-notify t "*If `sas-notify' t, indicate errors in log file upon completion." :group 'ess-sas :type 'boolean) (defcustom sas-get-options nil "Options to be passed to SAS in sas-get-dataset." :group 'ess-sas :type '(choice (const nil) string)) (defcustom sas-get-options-history nil "History list of Options passed to SAS in sas-get-dataset." :group 'ess-sas) (defcustom sas-page-number-max-line 3 "*Number of lines from the page break, to search for the page number." :group 'ess-sas :type 'integer) (defcustom sas-notify-popup nil "*If this and sas-notify are t), popup a window when SAS job ends." :group 'ess-sas :type 'boolean) (defcustom sas-tmp-libname "_tmp_" "*Libname to use for sas-get-dataset." :group 'ess-sas :type 'string) (defcustom sas-file-name nil "*The name of the current sas file." :group 'ess-sas :type '(choice (const nil) file)) ;; The next two are ``the inside of [...] in a regexp'' to be used in ;; (skip-chars-(for|back)ward SAS-..-chars) (defcustom sas-white-chars " \t\n\f" "This does NOT escape blanks (RMH, 2000/03/20)." :group 'ess-sas :type 'string) (defcustom sas-comment-chars (concat sas-white-chars ";") "Doc?" :group 'ess-sas :type 'string) (defcustom ess-sas-run-regexp-opt t "If you do not want to run regexp-opt, then set to nil." :group 'ess-sas :type '(choice (const nil) string)) (require 'ess-sas-a) (defvar sas-buffer-name nil) (defvar sas-file-root nil) (defvar sas-submitable nil) (defvar sas-dataset nil) (defvar SAS-syntax-table nil "Syntax table for SAS code.") (if SAS-syntax-table nil (setq SAS-syntax-table (make-syntax-table)) ;; (if (equal system-type 'windows-nt) ;; ;; backslash is punctuation (used in MS file names) ;; (modify-syntax-entry ?\\ "." SAS-syntax-table) ;; ;; backslash is an escape character ;; (modify-syntax-entry ?\\ "\\" SAS-syntax-table)) (modify-syntax-entry ?\\ "." SAS-syntax-table) ;; backslash is punctuation (modify-syntax-entry ?+ "." SAS-syntax-table) (modify-syntax-entry ?- "." SAS-syntax-table) (modify-syntax-entry ?= "." SAS-syntax-table) (modify-syntax-entry ?% "w" SAS-syntax-table) (modify-syntax-entry ?< "." SAS-syntax-table) (modify-syntax-entry ?> "." SAS-syntax-table) (modify-syntax-entry ?& "w" SAS-syntax-table) (modify-syntax-entry ?| "." SAS-syntax-table) (modify-syntax-entry ?\' "\"" SAS-syntax-table) (modify-syntax-entry ?* ". 23" SAS-syntax-table) ; comment character (modify-syntax-entry ?\; "." SAS-syntax-table) (modify-syntax-entry ?_ "w" SAS-syntax-table) (modify-syntax-entry ?< "." SAS-syntax-table) (modify-syntax-entry ?> "." SAS-syntax-table) (modify-syntax-entry ?/ ". 14" SAS-syntax-table) ; comment character (modify-syntax-entry ?. "w" SAS-syntax-table)) (require 'font-lock); fontification also works in terminals! ;; (if (or window-system ;; noninteractive) ; compilation! ;;; ... (defvar SAS-mode-font-lock-defaults (if ess-sas-run-regexp-opt (list ;; .log NOTE: messages (cons "^NOTE [0-9]+-[0-9]+: Line generated by the invoked macro" font-lock-comment-face) (cons "^NOTE: .*$" font-lock-comment-face) (cons "^ [^ @].*[.]$" font-lock-comment-face) (cons "^ [a-z].*[a-z][ ]?$" font-lock-comment-face) (cons "^ Engine:[ ]+V.+$" font-lock-comment-face) (cons "^ Physical Name:[ ]+.+$" font-lock-comment-face) (cons "^ \\(cpu\\|real\\) time[ ]+[0-9].*$" font-lock-comment-face) (cons "^ decimal may be shifted by the" font-lock-comment-face) (cons "^NOTE: The infile " font-lock-comment-face) (cons "^NOTE: 1 record was read from the infile " font-lock-comment-face) (cons "^NOTE: [1-9][0-9]* records were read from the infile " font-lock-comment-face) (cons "^ Filename=.*,$" font-lock-comment-face) (cons "^ File Name=.*,$" font-lock-comment-face) (cons "^ File $" font-lock-comment-face) (cons "^ Name=.*,$" font-lock-comment-face) (cons "^ File List=(" font-lock-comment-face) (cons "^ List=(" font-lock-comment-face) (cons "^ Owner Name=.*,$" font-lock-comment-face) (cons "^ Access Permission=.*,$" font-lock-comment-face) (cons "^ Last Modified=.*,?$" font-lock-comment-face) (cons "^ File Size (bytes)=[0-9]+$" font-lock-comment-face) (cons "^ Pipe command=" font-lock-comment-face) (cons "^NOTE: The file " font-lock-comment-face) (cons "^NOTE: 1 record was written to the file " font-lock-comment-face) (cons "^NOTE: [1-9][0-9]* records were written to the file " font-lock-comment-face) (cons "^NOTE: PROC LOGISTIC is modeling the probability that" font-lock-comment-face) (cons "^NOTE: PROC GENMOD is modeling the probability that" font-lock-comment-face) (cons "^1[ ]+The SAS System.*$" font-lock-comment-face) (cons "^\014.*$" font-lock-comment-face) (cons "[*][*][*] ANNOTATE macros are now available [*][*][*]" font-lock-comment-face) (cons "For further information on ANNOTATE macros, enter," font-lock-comment-face) ;; (cons "^SAS/STAT 9.3_M1, SAS/ETS 9.3_M1, SAS/OR 9.3_M1" ;; font-lock-comment-face) (cons "\\(or \\)?%HELPANO.*$" font-lock-comment-face) (cons "^Local Variables:$" font-lock-comment-face) (cons "^End:$" font-lock-comment-face) (cons "^MPRINT([_A-Z0-9]+)" font-lock-comment-face) ;; .log ERROR: messages ; (cons "^ERROR\\( [0-9]+-[1-9][0-9][0-9]\\)?: .*$" (cons "^ERROR\\( [0-9]+-[0-9]+\\)?: .*$" font-lock-keyword-face) ; ERROR: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-keyword-face) ; ERROR #-###: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-keyword-face) ; ERROR ##-###: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-keyword-face) ; ERROR ###-###: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-keyword-face) (cons "^ a format name." font-lock-keyword-face) (cons "^ where a numeric operand is required. The condition was: " font-lock-keyword-face) (cons "[ ][_]+$" font-lock-keyword-face) ;; .log WARNING: messages ;(cons "^WARNING\\( [0-9]+-[1-9][0-9][0-9]\\)?: .*$" (cons "^WARNING\\( [0-9]+-[0-9]+\\)?: .*$" font-lock-function-name-face) ; WARNING: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-function-name-face) ; WARNING #-###: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-function-name-face) ; WARNING ##-###: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-function-name-face) ; WARNING ###-###: (cons "^ [^ @].*\\([.][ ]?[ ]?\\|[,a-z][ ]\\)$" font-lock-function-name-face) ;; SAS comments ;; /* */ style handled by grammar above (cons "\\(^[0-9]*\\|[:;!]\\)[ \t]*%?\\*[^;/][^;]*;" font-lock-comment-face) ; these over-rides need to come before the more general declarations (cons "\\") ; font-lock-keyword-face) ; ;; SAS base and SAS/Graph statements (cons (concat ;"\\<" (regexp-opt '( "do" "to" "by" "goto" ; "go" "abort" "and" "array" "assess" "attrib" "baseline" "bayes" "between" "bivar" "block" "bubble" "bubble2" "change" "choro" "class" "contains" "contrast" "delete" "display" "dm" "donut" "drop" "else" "error" "exchange" "exclude" "fcs" "file" "filename" "format" "freq" "footnote" "footnote1" "footnote2" "footnote3" "footnote4" "footnote5" "footnote6" "footnote7" "footnote8" "footnote9" "footnote10" "goptions" "grid" ; "ge" "gt" "hazardratio" "hbar" "hbar3d" "id" "if" "index" "infile" "informat" "input" ; "is" rarely used, but common false pos. "keep" "label" "length" "libname" "like" "link" "lsmeans" ; "le" "lt" "manova" "means" "merge" "missing" "model" "modify" "not" "null" ; "ne" "note" "ods" "options" "output" "otherwise" ; "or" "pageby" "parms" "pie" "pie3d" "plot" "plot2" "prism" "put" "random" "rename" "repeated" "retain" "same" "save" "scatter" "select" "set" "skip" "star" "strata" "sum" "sumby" "surface" "table" "tables" "test" "then" "time" "title" "title1" "title2" "title3" "title4" "title5" "title6" "title7" "title8" "title9" "title10" "univar" "update" "value" "var" "vbar" "vbar3d" "weight" "where" "window" "with" ; "x" ) 'words)) ;"\\>") font-lock-keyword-face) ;; SAS/GRAPH statements not handled above (cons (concat "\\<" (regexp-opt '("axis" "legend" "pattern" "symbol")) "\\([1-9][0-9]?\\)?" "\\>") font-lock-keyword-face) ;; SAS functions and SAS macro functions (cons "%[a-z_][a-z_0-9]*[(;]" font-lock-function-name-face) ;(cons "\\" "("); "[ \t]*(") font-lock-function-name-face) ) (list ;; .log NOTE: messages (cons "^NOTE: .*$" font-lock-constant-face) ;; .log ERROR: messages (cons "^ERROR: .*$" font-lock-keyword-face) ;; .log WARNING: messages (cons "^WARNING: .*$" font-lock-function-name-face) ;; SAS comments ;; /* */ handled by grammar above ;; (list "/\\*.*\\*/" 0 font-lock-comment-face t) (cons "\\(^[0-9]*\\|;\\)[ \t]*\\(%?\\*\\|comment\\).*\\(;\\|$\\)" font-lock-comment-face) ;; SAS execution blocks, DATA/RUN, PROC/RUN, SAS Macro Statements (cons "\\<%do[ \t]*\\(%until\\|%while\\)?\\>" font-lock-constant-face) ;;(cons (concat "\\(^[0-9]*\\|;\\)[ \t]*" ;;"%\\(end\\|global\\|local\\|m\\(acro\\|end\\)\\)" ;;"\\>") font-lock-constant-face) (cons "\\<%\\(end\\|global\\|local\\|m\\(acro\\|end\\)\\)\\>" font-lock-constant-face) (cons (concat "\\(^[0-9]*\\|;\\|):\\|%then\\|%else\\)[ \t]*" "\\(data\\|endsas\\|finish\\|quit\\|run\\|start\\)[ \t\n;]") font-lock-constant-face) (cons (concat "\\(^[0-9]*\\|;\\|):\\|%then\\|%else\\)[ \t]*" ;;"proc[ \t]+[a-z][a-z_0-9]+") font-lock-constant-face) "proc[ \t]+" ;;SAS/Base, SAS/Graph, SAS/FSP and common add-ons "\\(append" "\\|b\\(genmod\\|lifereg\\|phreg\\)" "\\|c\\(a\\(lendar\\|talog\\)\\|port\\|o\\(mpare\\|ntents\\|py\\|rr\\)\\)" "\\|d\\(atasets\\|bcstab\\|isplay\\)\\|ex\\(plode\\|port\\)" "\\|f\\(orm\\(at\\|s\\)\\|req\\|s\\(browse\\|edit\\|l\\(etter\\|ist\\)\\|view\\)\\)" "\\|g?\\(chart\\|p\\(lot\\|rint\\)\\)" "\\|g\\(anno\\|contour\\|device\\|font\\|\\(key\\)?map\\|options\\|project" "\\|re\\(duce\\|move\\|play\\)\\|slide\\|testit\\|3\\(d\\|grid\\)\\)" "\\|\\(map\\|[cg]\\)?import\\|i\\(ml\\|nsight\\)" "\\|means\\|options\\|p\\(menu\\|rintto\\)" "\\|r\\(ank\\|e\\(gistry\\|port\\)\\)" "\\|s\\(ort\\|ql\\|tandard\\|ummary\\)" "\\|t\\(abulate\\|emplate\\|imeplot\\|ran\\(spose\\|tab\\)\\)\\|univariate" ;;SAS/Stat and SAS/ETS "\\|a\\(ceclus\\|nova\\|rima\\|utoreg\\)\\|boxplot" "\\|c\\(a\\(lis\\|n\\(corr\\|disc\\)\\|tmod\\)\\|itibase\\|luster\\|o\\(mputab\\|rresp\\)\\)" "\\|discrim\\|expand\\|f\\(a\\(ctor\\|stclus\\)\\|orecast\\|req\\)" "\\|g\\(enmod\\|l\\(immix\\|m\\(mod\\|power\\|select\\)?\\)\\)\\|inbreed\\|k\\(de\\|rige2d\\)" "\\|l\\(attice\\|ife\\(reg\\|test\\)\\|o\\(ess\\|gistic\\)\\)" "\\|m\\(ds\\|ixed\\|o\\(de\\(clus\\|l\\)\\|rtgage\\)\\|ulttest\\)" "\\|n\\(ested\\|l\\(in\\|mixed\\)\\|par1way\\)\\|orthoreg" "\\|p\\(dlreg\\|hreg\\|l\\(an\\|s\\)\\|ower\\|r\\(in\\(comp\\|qual\\)\\|obit\\)\\)\\|r\\(sr\\)?eg" "\\|s\\(core\\|im\\(2d\\|lin\\)\\|pectra\\|t\\(atespace\\|dize\\|epdisc\\)\\|urvey\\(means\\|reg\\|select\\)\\|yslin\\)" "\\|t\\(phreg\\|pspline\\|r\\(ansreg\\|ee\\)\\|test\\)" "\\|var\\(clus\\|comp\\|iogram\\)\\|x11" "\\)") font-lock-constant-face) ;;(cons (concat "\\(^[0-9]*\\|;\\|%then\\|%else\\)[ \t]*" ;;"\\(%\\(go[ \t]*to\\|i\\(f\\|n\\(clude\\|put\\)\\)\\|let\\|put\\|sysexec\\)\\)" ;;"\\>") font-lock-constant-face) (cons "\\<%\\(go[ \t]*to\\|i\\(f\\|n\\(clude\\|put\\)\\)\\|let\\|put\\|sysexec\\)\\>" font-lock-constant-face) (cons "\\<%\\(by\\|else\\|t\\(o\\|hen\\)\\)\\>" font-lock-constant-face) ;; SAS dataset options/PROC statements followed by an equal sign/left parentheses (cons (concat "[ \t(,]" "\\(attrib\\|by\\|compress\\|d\\(ata\\|rop\\)\\|f\\(irstobs\\|ormat\\)" "\\|i\\(d\\|f\\|n\\)\\|ke\\(ep\\|y\\)\\|l\\(abel\\|ength\\)" "\\|o\\(bs\\|rder\\|ut\\)\\|rename\\|s\\(ortedby\\|plit\\)" "\\|var\\|where\\)" "[ \t]*=") font-lock-keyword-face) (cons "\\<\\(in\\(:\\|dex[ \t]*=\\)?\\|until\\|wh\\(en\\|ile\\)\\)[ \t]*(" font-lock-keyword-face) ;; SAS statements (cons (concat "\\(^[0-9]*\\|):\\|[;,]\\|then\\|else\\)[ \t]*" "\\(a\\(bort\\|rray\\|ttrib\\)\\|b\\(ayes\\|y\\)" "\\|c\\(hange\\|lass\\|ontrast\\)" "\\|d\\(elete\\|isplay\\|m\\|o\\([ \t]+\\(data\\|over\\)\\)?\\|rop\\)" "\\|e\\(rror\\|stimate\\|xc\\(hange\\|lude\\)\\)" "\\|f\\(ile\\(name\\)?\\|o\\(otnote\\(10?\\|[2-9]\\)?\\|rmat\\)\\|req\\)" "\\|go\\([ \t]*to\\|ptions\\)" "\\|hazardratio\\|[hv]bar\\(3d\\)?" "\\|i\\(d\\|f\\|n\\(dex\\|f\\(ile\\|ormat\\)\\|put\\|value\\)\\)" "\\|keep\\|l\\(abel\\|ength\\|i\\(bname\\|nk\\|st\\)\\|smeans\\)" "\\|m\\(anova\\|e\\(ans\\|rge\\)\\|issing\\|od\\(el\\|ify\\)\\)\\|note" "\\|o\\(ds\\|ptions\\|therwise\\|utput\\)\\|p\\(arms\\|lot2?\\|ut\\)" "\\|r\\(andom\\|e\\(name\\|peated\\|tain\\)\\)" "\\|s\\(ave\\|e\\(lect\\|t\\)\\|kip\\|trata\\|um\\(by\\)?\\)" "\\|t\\(ables?\\|i\\(me\\|tle\\(10?\\|[2-9]\\)?\\)\\)\\|update" "\\|va\\(lue\\|r\\)\\|w\\(eight\\|here\\|i\\(ndow\\|th\\)\\)" ;; IML statements that are not also SAS statements "\\|append\\|c\\(lose\\(file\\)?\\|reate\\)\\|edit\\|f\\(ind\\|orce\\|ree\\)" "\\|insert\\|load\\|mattrib\\|p\\(a[ru]se\\|rint\\|urge\\)" "\\|re\\(move\\|peat\\|place\\|set\\|sume\\)" "\\|s\\(et\\(in\\|out\\)\\|how\\|ort\\|tore\\|ummary\\)\\|use\\)?" "\\>") font-lock-keyword-face) ;; (cons "\\<\\(\\(then\\|else\\)[ \t]*\\)?\\(do\\([ \t]*over\\)?\\|else\\)\\>" ;; font-lock-keyword-face) ;; SAS statements that must be followed by a semi-colon (cons (concat "\\(^[0-9]*\\|):\\|[;,]\\|then\\|else\\)[ \t]*" "\\(cards4?\\|datalines\\|end\\|l\\(ostcard\\)\\|page\\|return\\|stop\\)?" "[ \t]*;") font-lock-keyword-face) ;; SAS/GRAPH statements not handled above (cons (concat "\\(^[0-9]*\\|):\\|[;,]\\)[ \t]*" "\\(axis\\|legend\\|pattern\\|symbol\\)" "\\([1-9][0-9]?\\)?\\>") font-lock-keyword-face) ;; SAS Datastep functions and SAS macro functions ;(cons "%[a-z_][a-z_0-9]*[ \t]*[(;]" ;; SAS macro functions occasionally defined with no arguments ;; which means they can be followed by any character that can ;; separate tokens, however, they are most likely to be followed ;; by operat-ions/ors (cons "%[a-z_][a-z_0-9]*[- \t();,+*/=<>]" font-lock-function-name-face) (cons "\\ (- (point-max) pos) (point)) (goto-char (- (point-max) pos))))) ;;(defun sas-indent-region (start end) ;; "Indent a region of SAS code." ;; (interactive "r") ;; (save-excursion ;; (let ((endmark (copy-marker end))) ;; (goto-char start) ;; (and (bolp) (not (eolp)) ;; (sas-indent-line)) ;; (indent-sexp endmark) ;; (set-marker endmark nil)))) (defun indent-sas-statement (arg) "Indent all continuation lines sas-indent-width spaces from first line of statement." (interactive "p") (let (end) (save-excursion (if (> arg 0) (while (and (> arg 0) (search-forward ";" (point-max) 1 1)) (setq end (point)) (if (bobp) nil (backward-char 1)) (beginning-of-sas-statement 1) (forward-char 1) (indent-region (point) end (+ (current-column) (1- sas-indent-width))) (search-forward ";" (point-max) 1 1) (setq arg (1- arg))))))) ;; added 9/31/94 (defun sas-next-statement-indentation () "Returns the correct indentation of the next sas statement. The current version assumes that point is at the end of the statement. This will (hopefully) be fixed in later versions." (if (bobp) 0 (save-excursion (let ((prev-end (point))) (beginning-of-sas-statement 1) (while (and (not (bobp)) (not (looking-at "*/")) (looking-at sas-indent-ignore-comment)) (skip-chars-backward sas-white-chars) (if (bobp) nil (backward-char 1)) (setq prev-end (point)) (beginning-of-sas-statement 1 t)) (if (or (looking-at (concat "data[ \n\t;]\\|" (regexp-opt '("cards;" "cards4;" "datalines;" "datalines4;" "lines;" "lines4;")) "\\|proc[ \n\t]\\|%?do[ \n\t;]\\|%macro[ \n\t]\\|/\\*")) (save-excursion (re-search-forward "\\b%?then\\>[ \n\t]*\\b%?do\\>\\|\\b%?else\\>[ \n\t]*\\b%?do\\>" prev-end 1 1))) ; fixed 1/30/95 to avoid being fooled by ; variable names starting with "do" (+ (current-indentation) sas-indent-width) (if (looking-at "%?end[ ;\n]\\|%mend[ ;\n]\\|\\*/") (max (- (current-indentation) sas-indent-width) 0) (current-indentation))))))) ;; added 2/1/95 (defun sas-comment-start-col () "If the current line is inside a /* */ comment, returns column in which the opening /* appears. returns 0 otherwise." (let ((pos (point))) (save-excursion (if (and (search-backward "*/" (point-min) 1 1) (search-forward "/*" pos 1 1)) (current-indentation) 0)))) ;; Created 6/27/94 to verify that RUN; statements match PROC and DATA ;; statements. Useful since indentation my be goofy w/o "RUN;" (defun sas-check-run-statements () "Check to see that \"run\" statements are matched with proc, data statements." (interactive) (let (pos (ok t) (eob-ok t)) (save-excursion (beginning-of-line) (while ok (if (re-search-forward "\\(^[ \t]*run[ ;]\\)\\|\\(^[ \t]*proc \\|^[ \t]*data[ ;]\\)" nil 1) (if (match-beginning 2) (if (re-search-forward "\\(^[ \t]*run[ ;]\\)\\|\\(^[ \t]*proc \\|^[ \t]*data[ ;]\\)" nil t) (progn (setq pos (point)) (setq ok (match-beginning 1))) (setq eob-ok nil pos (point-max)))) (setq ok nil))) (setq ok (eobp))) (if (and ok eob-ok) (message "Run statements match") (goto-char pos) (beep) (message "Missing Run Statement.")))) (defun sas-fix-life-tables () "Remove censored and duplicate observations from life tables generated by Proc Lifetest. Operates on current region. A major space saver if there is heavy censoring." (interactive) (if buffer-read-only (setq buffer-read-only nil)) (goto-char (point-min)) (while (re-search-forward "^.*[ ]+[.][ ]+[.][ ]+[.][ ]+.*$" nil t) (replace-match "" nil nil))) ; (save-excursion ; (shell-command-on-region ; start end ; "sed '/[ ][.][ ]/d'" t))) ;;"sed \"\\? *\\. *\\. *\\. ?d\"" t))) ;;(vip-goto-line 1) ;;(setq ex-g-flag nil ;;ex-g-variant nil) ;;(vip-ex "1,$g/ \\. \\. \\. /d"))) (defun sas-fix-page-numbers (offset &optional page-num) "Fix number of current page in sas output files after editing. Add OFFSET to actual page number." (interactive "P") (if (not offset) (setq offset 0)) (if (not page-num) (setq page-num (sas-page-number))) (save-excursion (if (/= (preceding-char) ?\C-l) (backward-page 1)) (let (end len mstart mend) (save-excursion (forward-line sas-page-number-max-line) (setq end (point))) (if (re-search-forward "\\(^[0-9]+[ ]\\)\\|\\([ ][0-9]+$\\)" end t) (progn (setq len (- (match-end 0) (match-beginning 0)) mstart (match-beginning 0) mend (match-end 0)) (delete-region mstart mend) (if (eolp) (insert (format (concat "%" len "d") (+ page-num offset))) (insert (substring (concat (+ (sas-page-number) offset) " ") 0 len)))))))) (defun sas-page-fix (start) "Fix page numbers in sas output from point to end of file. If START is given this will be the number for the current page." (interactive "P") (let (offset (pnum (sas-page-number))) (if (not start) (setq offset 0) (setq offset (- start pnum))) (while (not (eobp)) (sas-fix-page-numbers offset pnum) (setq pnum (1+ pnum)) (forward-page 1)))) (defun fix-page-breaks () "Fix page breaks in SAS 6 print files." (interactive) (save-excursion (goto-char (point-min)) (if (looking-at "\f") (delete-char 1)) ;(replace-regexp "^\\(.+\\)\f" "\\1\n\f\n") (while (re-search-forward "^\\(.+\\)\f" nil t) (replace-match "\\1\n\f\n" nil nil)) (goto-char (point-min)) ;(replace-regexp "^\f\\(.+\\)" "\f\n\\1") (while (re-search-forward "^\f\\(.+\\)" nil t) (replace-match "\f\n\\1" nil nil)) ; (goto-char (point-min)) ;(replace-regexp " $" "") ;(while (re-search-forward "$" nil t) ; (replace-match "" nil nil)) (goto-char (point-min)) ;(replace-regexp " \\([^\\$]+\\)" "\n\\1") (while (re-search-forward " \\([^\\$]+\\)" nil t) (replace-match "\n\\1" nil nil)) (goto-char (point-max)) (if (not (bobp)) (progn (backward-char 1) (if (not (looking-at "\n")) (progn (forward-char 1) (open-line 1))))))) (defun sas-page-number () ;; like what-page except it returns an integer page number "Return page number of point in current buffer." (let ((opoint (point))) (save-excursion (goto-char (point-min)) (1+ (sas-how-many page-delimiter opoint))))) (defun sas-how-many (regexp &optional end) ;; a copy of `how-many' which returns an integer ;; rather than a message "Return number of matches for REGEXP following point." (let ((count 0) opoint) (save-excursion (while (and (not (eobp)) (progn (setq opoint (point)) (re-search-forward regexp end t))) (if (= opoint (point)) (forward-char 1) (setq count (1+ count)))) count))) (defun beginning-of-sas-proc () "Move point to beginning of sas proc, macro or data step." (interactive) (let ((case-fold-search t)) (forward-char -1) (while (not (or (looking-at "data\\|proc\\|%macro") (bobp))) (re-search-backward "proc\\|data\\|%macro" (point-min) 1) (beginning-of-sas-statement 1)))) (defun next-sas-proc (arg) "Move point to beginning of next sas proc." (interactive "P") (let ((case-fold-search t)) (forward-char 1) (if (re-search-forward "^[ \t]*\\(data[ ;]\\|proc[ ;]\\|endsas[ ;]\\|g?options[ ;]\\|%macro[ ;]\\)" nil t arg) (beginning-of-sas-statement 1) (forward-char -1)))) (defun set-sas-file-name () "Stores the name of the current sas file." (let ((name (buffer-file-name))) (cond ((not name)) ((string-match (substring name -4 nil) "\\.sas\\|\\.lst\\|\\.log") (setq sas-file-name (substring name 0 (- (length name) 4))) (setq sas-buffer-name (buffer-name)) (setq sas-file-root (substring sas-buffer-name 0 (- (length sas-buffer-name) 4)))) (t (message "This file does not have a standard suffix"))))) ;; created 6/27/94 (defun sas-set-alternate-file-name (name) "Stores the NAME of an alternate sas file. When this file is submitted with `submit-sas', the alternate file will be submitted instead. `sas-submitable' is automatically sets to t." (interactive "f") (cond ((string-match (substring name -4 nil) "\\.sas\\|\\.lst\\|\\.log") (setq sas-file-name (substring name 0 (- (length name) 4))) (setq sas-submitable t)) (t (message "This file does not have a standard suffix")))) (defun switch-to-sas-source () "Switches to sas source file associated with the current file." (interactive) (switch-to-sas-file "sas")) (defun switch-to-sas-lst () "Switches to sas source file associated with the current file." (interactive) (switch-to-sas-file "lst")) (defun switch-to-sas-log () "Switches to sas source file associated with the current file." (interactive) (switch-to-sas-file "log")) (defun switch-to-sas-source-other-window () "Switches to sas source file associated with the current file." (interactive) (switch-to-sas-file-other-window "sas")) (defun switch-to-sas-lst-other-window () "Switches to sas source file associated with the current file." (interactive) (switch-to-sas-file-other-window "lst")) (defun switch-to-sas-log-other-window () "Switches to sas source file associated with the current file." (interactive) (switch-to-sas-file-other-window "log")) ;;(defun switch-to-sas-file (suff &optional revert silent) ;; "Switches to sas \"SUFF\" file associated with the current file" ;; (let* ((sfile sas-file-name) ;; (buf (get-file-buffer (concat sfile "." suff))) ;; (sas-require-confirmation ;; (and sas-require-confirmation (not revert)))) ;; (if (or sas-require-confirmation (string-equal suff "sas") (not buf)) ;; (find-file (concat sfile "." suff)) ;; (progn (switch-to-buffer buf) ;; (if (not (verify-visited-file-modtime (current-buffer))) ;; (progn (revert-buffer t t) ;; (if (not silent) ;; (message "File has changed on disk. Buffer automatically updated.")))))) ;; (setq sas-file-name sfile)) ;; (if (string-equal suff "sas") ;; (if (not (string-equal major-mode "sas-mode")) ;; (sas-mode)) ;; (if (not (string-equal major-mode "sasl-mode")) ;; (sasl-mode)))) ;; ;;(defun switch-to-sas-file-other-window (suff) ;; "Switches to sas \"SUFF\" file associated with the current file" ;; (let* ((sfile sas-file-name) ;; (buf (get-file-buffer (concat sfile "." suff)))) ;; (if (or sas-require-confirmation (string-equal suff "sas") (not buf)) ;; (find-file-other-window (concat sfile "." suff)) ;; (progn (switch-to-buffer-other-window buf) ;; (if (not (verify-visited-file-modtime (current-buffer))) ;; (progn (revert-buffer t t) ;; (message "File has changed on disk. Buffer automatically updated."))))) ;; (setq sas-file-name sfile)) ;; (if (string-equal suff "sas") ;; (if (not (string-equal major-mode "sas-mode")) ;; ;;(sas-mode) ;; ) ;; (if (not (string-equal major-mode "sasl-mode")) ;; ;;(sasl-mode) ;; ))) (defun switch-to-sas-file (suff) "Switches to sas \"SUFF\" file associated with the current file." (switch-to-buffer (set-sas-file-buffer suff))) (defun switch-to-sas-file-other-window (suff) "Switches to sas \"SUFF\" file associated with the current file." (switch-to-buffer-other-window (set-sas-file-buffer suff))) ;; The following was created 6/7/94 to handle buffers without messing up ;; windows. (defun set-sas-file-buffer (suff &optional revert silent) "Sets current buffer to sas \"SUFF\" file associated with the current file." (let* ((sfile sas-file-name) (buf (get-file-buffer (concat sfile "." suff))) (sas-require-confirmation (and sas-require-confirmation (not revert)))) (if (or sas-require-confirmation (string-equal suff "sas") (not buf)) (set-buffer (find-file-noselect (concat sfile "." suff))) (progn (set-buffer buf) (if (not (verify-visited-file-modtime (current-buffer))) (progn (revert-buffer t t) (if (not silent) (message "File has changed on disk. Buffer automatically updated.")))))) (setq sas-file-name sfile)) ;;(if (string-equal suff "sas") ;; (if (not (string-equal major-mode "sas-mode")) (sas-mode)) ;; (if (not (string-equal major-mode "sasl-mode"))(sasl-mode)) (current-buffer)) (defun switch-to-sas-process-buffer () "Switch to sas-process-buffer." (interactive) (let (buf proc-name) (setq proc-name (concat "SAS" sas-file-name) buf (concat "*" proc-name "*")) (switch-to-buffer-other-window buf))) (defun submit-sas () ;; 6/17/94 added sas-submitable local variable. "Submit SAS file as shell command." (interactive) (if ;; can file be run, or is it only for inclusion? (or sas-submitable (progn (beep) (y-or-n-p (format "Submission is disabled for this file. Submit it anyway? ")))) (progn ;; if buffer name has changed, tell user (if (or (string-equal sas-buffer-name (buffer-name)) (not (y-or-n-p (format "The name of this buffer has changed. Submit the new file? ")))) (setq sas-buffer-name (buffer-name)) (set-sas-file-name)) (let ((sas-file sas-file-name) (sas-root sas-file-root) ;;(sas-buf sas-buffer-name) proc-name buf) ;; Save buffer to SAS the right file :-). (if (buffer-modified-p) (if (y-or-n-p (format "Buffer %s is modified. Save it? " (buffer-name))) (save-buffer))) (setq proc-name (concat "SAS" sas-file) buf (concat "*" proc-name "*")) (if (get-buffer buf) (save-window-excursion (switch-to-buffer buf) (erase-buffer) (setq default-directory (file-name-directory sas-file)))) (run-hooks 'sas-pre-run-hook) ;; added 8/24/94 (message "---- Submitting SAS job ----") ;; (switch-to-buffer buf) (make-comint proc-name sas-program ;added sas-program 4/29/94 nil sas-root) (save-window-excursion (switch-to-buffer buf) (setq sas-file-name sas-file) (bury-buffer buf)) (message "---- SAS job submitted ---- ") (if sas-notify;; added 4/7/94 (set-process-sentinel (get-process proc-name) 'sas-sentinel) (display-buffer buf t)))) (message "---- File not submitted ----"))) ;; 5/2/94 Modified sas-sentinel to check for errors in log file upon ;; completion. (defun sas-sentinel (proc arg);; created 4/7/94 "Notify user that SAS run is done." (beep) ;;(if (string-equal arg "finished\n") (save-excursion (let (msg buf win (sbuf (concat "*" (process-name proc) "*"))) (setq msg (format "SAS %s %s" (substring arg 0 -1) (if sas-error-notify ;;(save-window-excursion (progn (set-buffer sbuf) (setq buf (set-sas-file-buffer "log" t t)) (goto-char (point-min)) (setq win (get-buffer-window buf)) (save-window-excursion (if win (progn (select-window win) (if (re-search-forward "^ERROR" nil t) " (See .log file for errors)" "")) (switch-to-buffer buf) (if (re-search-forward "^ERROR" nil t) " (See .log file for errors)" "")))) ""))) (set-buffer sbuf) (goto-char (point-max)) (insert msg) (bury-buffer (get-buffer sbuf)) ;;(if (and sas-notify-popup window-system) ;; (x-popup-dialog t ;; (list "SAS Menu" (cons msg nil) ))) ;;(if (not (minibuffer-window-active-p)) (princ msg)) (princ msg)))) ;; 5/2/94 Modified run-sas-on-region to separate log and output buffers. ;; ;;(defun run-sas-on-region (start end append &optional buffer) ;; "Submit region to SAS" ;; (interactive "r\nP") ;; (message "---- Running SAS ----") ;; (let ((sfile sas-file-name) ;; (shell-file-name "/bin/sh") ;; serror buff) ;; (setq buffer (or buffer "*SAS output*")) ;; (save-excursion ;; (shell-command-on-region ;; start end;; added sas-program ;; (concat sas-program " -nonews -stdio 2> /tmp/_temp_.log" nil)) ;; (get-buffer-create "*SAS Log*") ;; (save-window-excursion ;; (switch-to-buffer "*SAS Log*") ;; (erase-buffer) ;; (insert-file-contents "/tmp/_temp_.log") ;; (delete-file "/tmp/_temp_.log") ;; (setq serror (re-search-forward "^ERROR" nil t)) ;; (if serror () (bury-buffer))) ;; (setq buff (get-buffer-create buffer)) ;; (save-window-excursion ;; (switch-to-buffer buff) ;; (setq sas-file-name sfile) ;; (if append ;; (progn ;; (end-of-buffer) ;; (insert "\f\n")) ;; (erase-buffer)) ;; (if (get-buffer "*Shell Command Output*") ;; (progn (insert-buffer "*Shell Command Output*") ;; (kill-buffer "*Shell Command Output*")) ;; (insert "SAS completed with no output.")) ;; (if append () (sasl-mode)) ;; (message "---- SAS Complete ----"))) ;; (if (not serror) ;; (switch-to-buffer-other-window buff) ;; (switch-to-buffer-other-window "*SAS Log*") ;; (goto-char serror) ;; (beep) ;; (message "Error found in log file.") ;; ))) (defun switch-to-dataset-log-buffer () "Switch to log buffer for run-sas-on-region." (interactive) (switch-to-buffer-other-window "*SAS Log*")) (defun switch-to-dataset-source-buffer () "Switch to source buffer for run-sas-on-region." (interactive) (switch-to-buffer-other-window (format " *sas-tmp-%s*" sas-dataset))) ;;(defun sas-get-dataset (filename &optional arg opts-p append buffer vars) ;; "Run proc contents and proc print on SAS dataset. Automatically prompts ;;for SAS options to use. Default options are defined by the variable ;;`sas-get-options'. Output may be updated from within output buffer with ;;C-cr if dataset changes. Also, the source code which generates the output ;;may be edited with C-cs. Typing C-cr within the output buffer reexecutes ;;the (modified) source code." ;; (interactive "fName of SAS dataset (file name):") ;; (let ((file (file-name-nondirectory filename)) ;; (dir (file-name-directory filename)) ;; (opts sas-get-options) ;; (minibuffer-history sas-get-options-history) ;; buf); fsize) ;; (setq buffer (or buffer (concat "*" file "*"))) ;; (setq opts (if opts-p opts (read-string "SAS options: " opts))) ;; (setq sas-get-options-history minibuffer-history) ;; (cond ((string-match (substring file -6 nil) "\\.ssd01") ;; (setq file (substring file 0 (- (length file) 6)))) ;; (t (error "This file is not a SAS dataset."))) ;; (setq buf (format " *sas-tmp-%s*" file)) ;; (get-buffer-create buf) ;; (save-window-excursion ;; (switch-to-buffer buf) ;; (erase-buffer) ;; (setq default-directory dir) ;; (if opts ;; (insert (format "options %s ;\n" opts))) ;; (insert (format "title \"Contents of SAS dataset `%s'\" ;\n" file)) ;; (insert (format "libname %s '%s' ;\n" sas-tmp-libname dir)) ;; (if (not (equal arg 1)) ;; (insert (format "proc contents data = %s.%s ;\n" sas-tmp-libname file))) ;; (if (equal arg 2) () ;; (insert (format "proc print data = %s.%s ;\n" sas-tmp-libname file)) ;; (if vars (insert (format " var %s ;\n" vars)))) ;; (run-sas-on-region (point-min) (point-max) append ;; buffer) ;; (get-buffer buffer) ;; (if append () (sasd-mode)) ;; added 5/5/94 ;; (setq sas-dataset file)) ;; (if (get-buffer-window buffer t) ;; (raise-frame (window-frame (get-buffer-window buffer t))) ;; (display-buffer buffer (not append))) ;; )) ;;(defun revert-sas-dataset () ;; "Revert current sas dataset from disk version" ;; (interactive) ;; (let* ((file sas-dataset) ;; (buf (format " *sas-tmp-%s*" file)) ;; (pos (point))) ;; (save-window-excursion ;; (switch-to-buffer buf) ;; (run-sas-on-region (point-min) (point-max) nil ;; (concat "*" file ".ssd01*")) ;; ) ;; (goto-char pos) ;; added 6/9/94 ;; (sasd-mode) ;; added 5/5/94 ;; (setq sas-dataset file))) (defun sas-insert-local-variables () ;; created 6/17/94 "Add local variables code to end of sas source file." (interactive) (save-excursion (if (re-search-forward "* *Local Variables: *;" nil t) () (goto-char (point-max)) (insert " ** Local Variables: ; ** End: ; page ; ")))) ;;-*-emacs-lisp-*- ;;; file name: sas-data.el ;;; ;;; Version 1.0 ;;; ;;; sas-data-mode: manage sas datasets ;;; Copyright (C) 1994 Tom Cook ;;; ;;; This program is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 2 of the License, or ;;; (at your option) any later version. ;;; ;;; This program is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; A copy of the GNU General Public License is available at ;;; http://www.r-project.org/Licenses/ ;;; ;;; Author: Tom Cook ;;; Dept. of Biostatistics ;;; University of Wisconsin - Madison ;;; Madison, WI 53706 ;;; cook@biostat.wisc.edu ;; Created: 8/11/94 ;; variables section (defvar sas-dir-mode-map nil) (defvar sas-directory-name nil "Name of directory associated with this buffer.") (make-variable-buffer-local 'sas-directory-name) (defvar sas-dir-buf-end nil) (make-variable-buffer-local 'sas-dir-buf-end) (defvar sas-sorted-by-num nil) (make-variable-buffer-local 'sas-sorted-by-num) ;; user variables ;; keymaps etc... (if sas-dir-mode-map () (setq sas-dir-mode-map (make-sparse-keymap)) ;;(define-key sas-dir-mode-map "c" 'sas-contents) (define-key sas-dir-mode-map "p" 'sas-print) (define-key sas-dir-mode-map "m" 'sas-mark-item) (define-key sas-dir-mode-map "u" 'sas-unmark-item) (define-key sas-dir-mode-map " " 'sas-next-line) (define-key sas-dir-mode-map "\C-n" 'sas-next-line) (define-key sas-dir-mode-map "\C-p" 'sas-prev-line) (define-key sas-dir-mode-map "\177" 'sas-prev-line-undo) (define-key sas-dir-mode-map "\C-b" 'sas-backward-page-narrow) (define-key sas-dir-mode-map "\C-v" 'sas-forward-page-narrow) (define-key sas-dir-mode-map "\C-m" 'sas-goto-dataset) (define-key sas-dir-mode-map [mouse-2] 'sas-mouse-goto-dataset) (define-key sas-dir-mode-map "t" 'sas-dir-goto-page) (define-key sas-dir-mode-map "q" 'bury-buffer) (define-key sas-dir-mode-map "g" 'sas-revert-library) (define-key sas-dir-mode-map "1" 'digit-argument) (define-key sas-dir-mode-map "2" 'digit-argument) (define-key sas-dir-mode-map "3" 'digit-argument) (define-key sas-dir-mode-map "4" 'digit-argument) (define-key sas-dir-mode-map "5" 'digit-argument) (define-key sas-dir-mode-map "6" 'digit-argument) (define-key sas-dir-mode-map "7" 'digit-argument) (define-key sas-dir-mode-map "8" 'digit-argument) (define-key sas-dir-mode-map "9" 'digit-argument) (define-key sas-dir-mode-map [menu-bar sas run] '("Submit File " . submit-sas)) ) ;(require 'sas) (defun sas-dir-mode () "Major mode for managing sas files." (interactive) (kill-all-local-variables) (use-local-map sas-dir-mode-map) (setq major-mode 'sas-dir-mode) (setq mode-name "SAS") (setq sas-directory-name (expand-file-name default-directory)) (setq buffer-read-only 1)) ;;(defun sas-make-library (directory &optional update) ;; "Create a buffer with the names of all sas datasets from DIRECTORY." ;; (interactive "DDirectory Name: ") ;; (let ((dir (expand-file-name directory)) buf out cont pos) ;; (setq buf (format " *sas-tmp-%s*" dir)) ;; (setq out (concat "*SAS-dir-" dir)) ;; (setq cont (concat "*SAS-cont-" dir)) ;; (get-buffer-create buf) ;; (if (get-buffer out) ;; (if update ;; (progn ;; (set-buffer out) ;; (setq buffer-read-only nil))) ;; (setq update t)) ;; (pop-to-buffer out) ;; (setq default-directory dir) ;; (setq pos (point)) ;; (if update ;; (progn ;; (save-window-excursion ;; (set-buffer buf) ;; (erase-buffer) ;; (setq default-directory dir) ;; (insert "options linesize=70 pagesize=1000 ;\n") ;; (insert (format "title \"Contents of SAS directory `%s'\" ;\n" ;; dir)) ;; (insert (format "libname %s '%s' ;\n" sas-tmp-libname dir)) ;; (insert (format "proc contents data = %s._all_ directory details memtype=data ;\n" sas-tmp-libname)) ;; (run-sas-on-region (point-min) (point-max) nil ;; out) ;; (set-buffer out) ;; (goto-char (point-min)) ;; (if (= (sas-how-many page-delimiter (point-max)) 0) ;; (let ((buffer-read-only nil)) ;; (erase-buffer) ;; (insert "There are no SAS datasets in this directory") ;; (pop-to-buffer out)) ;; (save-excursion ;; (set-buffer (get-buffer-create cont)) ;; (setq buffer-read-only t) ;; (let ((buffer-read-only nil)) ;; (erase-buffer) ;; (insert-buffer out) ;; (delete-region (point-min) ;; (or (re-search-forward page-delimiter nil t) ;; (point-min))) ;; (sas-page-fix 1) ;; (goto-char (point-min)) ;; (sas-dir-mode) ;; (sas-narrow-to-page))) ;; (if (re-search-forward page-delimiter nil t) ;; (delete-region (progn (beginning-of-line) (point)) ;; (point-max))) ;; (sas-insert-set-properties (point-min) (point-max)) ;; ) ;; (switch-to-buffer out t) ;; (goto-char (point-min)) ;; (sas-dir-mode) ;; (setq sas-dir-buf-end (point-max))) ;; (goto-char pos) ;; (sas-move-to-filename (point-max)))))) (defun sas-move-to-filename (&optional eol) (or eol (setq eol (progn (end-of-line) (point)))) (beginning-of-line) (if (re-search-forward "\\(^ *[0-9]+ *<*\\)[^:0-9\n]" eol t) (goto-char (match-end 1)))) (defun sas-next-line (arg) "Move down one line." (interactive "p") (forward-line arg) (sas-move-to-filename (point-max))) ;;(and (< (point) sas-dir-buf-end) ;;(forward-line arg) ;;(sas-move-to-filename sas-dir-buf-end))) (defun sas-prev-line (arg) "Move up one line." (interactive "p") (beginning-of-line) (re-search-backward "^ *[0-9]+ *<*[^:0-9\n]" (point-min) t) (sas-move-to-filename sas-dir-buf-end)) (defun sas-insert-set-properties (beg end) (save-excursion (goto-char beg) (while (< (point) end) (if (sas-move-to-filename) (put-text-property (point) (+ 8 (point)) 'mouse-face 'highlight)) (forward-line 1)))) (defun sas-get-filename () "Return name of dataset on current line." (interactive) (save-excursion (if (string-equal "*SAS-dir" (substring (buffer-name) 0 8)) (sas-move-to-filename) (goto-char (point-min)) (re-search-forward "Data Set Name: [^.]*\\.")) (expand-file-name (downcase (concat sas-directory-name (buffer-substring (point) (save-excursion (skip-chars-forward "A-Z0-9_") (point))) ".ssd01"))))) (defun sas-get-file-number () "Return name of dataset on current line." (interactive) (if (sas-move-to-filename) (progn (forward-word -1) (re-search-forward "[0-9]*") (string-to-number (buffer-substring (match-beginning 0) (match-end 0)))))) ;;(defun sas-contents () ;; "Run proc contents on current file." ;; (interactive) ;; (let ((buffer-read-only nil) (sas-get-options "linesize=70")) ;; (sas-get-dataset (sas-get-filename) 2 t t (buffer-name)) ;; (end-of-buffer) ;; (backward-page-top-of-window 1))) ;; ;;(defun sas-print () ;; "Run proc contents on current file." ;; (interactive) ;; (sas-get-dataset (sas-get-filename) 1 nil nil nil ;; (sas-create-var-string))) (defun sas-goto-page (arg) "Goto top of page ARG. If no ARG, then goto top of file." (interactive "P") (goto-char 1) (if arg (if (> arg 1) (progn (re-search-forward page-delimiter (point-max) 1 (1- arg))))) (skip-chars-forward sas-white-chars); was " \f\n" till 5.1.13 (recenter 1)) (defun forward-page-top-of-window (arg) "Move forward to page boundary and leave first line at top of window. With arg, repeat, or go back if negative. A page boundary is any line whose beginning matches the regexp `page-delimiter'." (interactive "p") (forward-page arg) (recenter 0)) (defun backward-page-top-of-window (arg) "Move backward to page boundary and leave first line at top of window. With arg, repeat, or go back if negative. A page boundary is any line whose beginning matches the regexp `page-delimiter'." (interactive "p") (forward-page (- arg)) (recenter 0)) (defun sas-narrow-to-page () (save-excursion (let* ((min (point-min)) (max (point-max))) ;;(omin (point-min)) ;;(omax (point-max))) (if (or (bolp) (beginning-of-line) (looking-at page-delimiter)) (forward-char 1) (forward-page -1)) (setq min (point)) (forward-page 1) (beginning-of-line) (setq max (point)) (narrow-to-region min max)))) (defun sas-forward-page-narrow (arg) "Move forward to page boundary and narrow to page. With arg, repeat, or go back if negative. A page boundary is any line whose beginning matches the regexp `page-delimiter'." (interactive "p") (widen) (forward-page arg) (sas-narrow-to-page) (goto-char (point-min))) (defun sas-backward-page-narrow (arg) "Move backward to page boundary and narrow to page. With arg, repeat, or go back if negative. A page boundary is any line whose beginning matches the regexp `page-delimiter'." (interactive "p") (goto-char (point-min)) (widen) (forward-page (- arg)) (sas-narrow-to-page)) (defun sas-goto-dataset (&optional page) (interactive) (and sas-directory-name (let ((page (or page (sas-get-file-number)))) ;;(dir sas-directory-name)) (if page (progn (switch-to-buffer-other-window (concat "*SAS-cont-" sas-directory-name)) (widen) (sas-goto-page page) (sas-narrow-to-page) (goto-char (point-min))))))) ;;(defun sas-mouse-goto-dataset (event) ;; (interactive "e") ;; (let (page buf) ;; (save-window-excursion ;; (save-excursion ;; (set-buffer (window-buffer (posn-window (event-end event)))) ;; (save-excursion ;; (goto-char (posn-point (event-end event))) ;; (setq page (sas-get-file-number))) ;; (sas-goto-dataset page) ;; (setq buf (buffer-name)))) ;; (set-buffer buf) ;; (goto-char (point-min)) ;; (display-buffer buf))) (defun sas-dir-goto-page (page) (interactive "p") (widen) (sas-goto-page page) (sas-narrow-to-page)) (defun sas-mark-item (&optional next) (interactive) (sas-move-to-filename) (beginning-of-line) (let ((buffer-read-only nil)) (if (re-search-forward "^\\( *[0-9]+ *\\) \\([A-Z][A-Z_0-9]*\\) " (save-excursion (end-of-line) (point)) t) (replace-match "\\1<\\2>"))) (or next (sas-next-line 1))) (defun sas-unmark-item () (interactive) (save-excursion (beginning-of-line) (let ((buffer-read-only nil)) (if (re-search-forward "^\\( *[0-9]+ *\\)<\\([A-Z][A-Z_0-9]*\\)>" (save-excursion (end-of-line) (point)) t) (replace-match "\\1 \\2 "))))) (defun sas-prev-line-undo (arg) (interactive "p") (sas-prev-line arg) (sas-unmark-item) (sas-move-to-filename)) (defun sas-create-var-string () (and (string-equal "*SAS-cont" (substring (buffer-name) 0 9)) (let (str) (goto-char (point-min)) (while (re-search-forward "^\\( *[0-9]+ *\\)<\\([A-Z][A-Z_0-9]*\\)>" nil t) (setq str (concat str " " (buffer-substring (match-beginning 2) (match-end 2))))) str))) (defun ess-imenu-SAS (&optional arg) "SAS language Imenu support for ESS." (interactive) (setq imenu-generic-expression '( (nil "[ \t\n=]\\([a-zA-Z_][a-zA-Z_0-9]*[.][a-zA-Z_][a-zA-Z_0-9]*\\)[ ,()\t\n;]" 1))) (imenu-add-to-menubar "SAS Datasets")) ;;(defun sas-revert-library () ;; "Update current library." ;; (interactive) ;; (if sas-directory-name ;; (sas-make-library sas-directory-name t))) (provide 'ess-sas-l) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-sas-l.el ends here ess-17.11/lisp/ess-send.el0000444005071500004540000000512513202324174012254 00000000000000;; First pass at context sensitive help. (defun ess-eval-expanded (&optional head tail commands-buffer) "Send the expanded current region or word-at-point to the inferior-ess process after first concating the head and tail. If the region is active, the function uses the current region. If the region is not active, the function uses the word-at-point" (interactive) (if (not head) (setq head "summary(")) (if (not tail) (setq tail ")")) (if (not commands-buffer) (setq commands-buffer (get-buffer-create "tmp-buffer"))) (let (kill-ring current-word) (if mark-active (progn (copy-region-as-kill (region-beginning) (region-end)) (setq current-word (current-kill 1))) (setq current-word (word-at-point))) (ess-command (concat head current-word tail) commands-buffer))) ;; this is probably not the best key or key-map (define-key ess-mode-map "\C-c\C-w" 'ess-eval-expanded) ;; previous version, sends expanded text to Commands window ;;;(defun ess-eval-expanded (&optional head tail) "" ;;; (interactive) ;;; (if (not head) (setq head "summary(")) ;;; (if (not tail) (setq tail ")")) ;;; (let (kill-ring ;;; current-word) ;;; (if mark-active ;;; (progn ;;; (copy-region-as-kill (region-beginning) (region-end)) ;;; (setq current-word (current-kill 1))) ;;; (setq current-word (word-at-point))) ;;; (ess-eval-linewise (concat head current-word tail)))) ;;;(define-key ess-mode-map "\C-c\C-w" 'ess-eval-expanded) ;; First working version: set of three functions. ;; The region and word-at-point are in independent functions and ;; and are called by the main function. ;;(defun ess-eval-expanded (&optional head tail) "" ;; (interactive) ;; (if mark-active (ess-eval-expanded-region ;; (region-beginning) (region-end) head tail) ;; (ess-eval-expanded-word-at-point head tail))) ;;(defun ess-eval-expanded-region (start end &optional head tail) ;; "Send the expanded current region to the inferior ESS process after ;;first concating the head and tail." ;; (let (kill-ring ;; expanded-region) ;; (copy-region-as-kill start end) ;; (setq expanded-region (concat head (current-kill 1) tail)) ;; (ess-eval-linewise expanded-region)) ;;) ;; (setq debug-on-error t) ;;(defun ess-eval-expanded-word-at-point (&optional head tail) ;; "Send the expanded word-at-point to the inferior ESS process after ;;first concating the head and tail." ;; (let (expanded-region) ;; (setq expanded-region (concat head (word-at-point) tail)) ;; (ess-eval-linewise expanded-region)) ;;) ess-17.11/lisp/ess-send2.el0000444005071500004540000000344413202324174012340 00000000000000;;(defun ess-eval-string (string) "" body) ;;(defun ess-eval-string-popup (string) "" body) ;;(defun ess-eval-string-buffer (string) "" body) (defun ess-region-or-word-at-point () "If the region is active, return the contents of the region. If the region is not active, return the word-at-point." (interactive) (if mark-active (buffer-substring-no-properties (region-beginning) (region-end)) (word-at-point))) (defun ess-eval-expanded (&optional head tail commands-buffer) "Send the expanded region or word-at-point to the inferior-ess process after first concating the head and tail. If the region is active, the function uses the current region. If the region is not active, the function uses the word-at-point" (interactive) (if (not head) (setq head "summary(")) (if (not tail) (setq tail ")")) (if (not commands-buffer) (setq commands-buffer (get-buffer-create "tmp-buffer"))) (ess-command (concat head (ess-region-or-word-at-point) tail) commands-buffer)) (define-key ess-mode-map "\C-c\C-w" 'ess-eval-expanded) ;; (defun ess-expand-string (string &optional head tail) ;; "Expand the STRING by concating the HEAD and TAIL. ;; Default result is 'summary(string)'." ;; (interactive) ;; (if (not head) (setq head "summary(")) ;; (if (not tail) (setq tail ")")) ;; (concat head string tail)) ;; Write a popup Edit-data-menubar that will allow attributes and components ;; to be displayed. ;; ;; popup menu items: ;; summary ;; print ;; show ;; help ;; dump to buffer ;; Edit.data (with optional location: window/buffer/frame) ;; drilldown ;; place in quotes (needed to get help on "[[" for example) ;; browser on ;; browser off ;; browser popup menu ;; add your own item to this menu ess-17.11/lisp/ess-site.el0000644005071500004540000002023113202324174012264 00000000000000;;; ess-site.el --- user customization of ESS ;; Copyright (C) 1993 David M. Smith ;; Copyright (C) 1997--2012 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: David Smith ;; Created: 12 Nov 1993 ;; Maintainer: ESS-core ;; Keywords: local ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the site-specific customizations for ESS. It should be ;; edited on a per-site basis. Read the comments (1.1 in Section 1 to see if ;; ess-site.el must be edited. The final directory location of this file must be ;; supplied in ess-lisp-directory. The editing of remaining sections is ;; optional. It should then be byte-compiled, and users who wish to use ESS ;; should add the line: ;; ;; (load "/PATH/TO/THIS/FILE/ess-site") ;; ;; (where /PATH/TO/THIS/FILE is the path to ess-site.elc: i.e. the value of ;; `ess-lisp-directory', below) to their .emacs file. ;; ;; Alternatively, if the file is already in a directory specified by ;; the load-path variable: ;; ;; (require 'ess-site) ;; ;; will work. ;; ;; with Emacs (and in general): ;; ;; (add-to-list 'load-path "/path/to/ess/lisp-directory") ;;; Code: ;; Provide here; otherwise we'll get infinite loops of (require ..): (provide 'ess-site) ;;;; Load path, autoloads, and major modes ;;;; ======================================== ;; ;; For most users the variable ess-lisp-directory will automatically ;; be set correctly. If you are working with an old emacs, one in ;; which file-truename is not defined, then you might need to change ;; the value of ess-lisp-directory to the directory which is to ;; contain the file ess-site.elc. This is probably the current ;; directory, or the value of LISPDIR if it was set in the Makefile. ;; DEBUG: (setq ess-show-load-messages t); instead of nil above ;; This sets `ess-lisp-directory' either from the current directory ;; when the file is being `load'ed, or from the installed location ;; otherwise. This way, users can load ESS without having added ESS to ;; `load-path'. (defvar ess-lisp-directory ;; A nice default (directory-file-name (file-name-directory (if (and (boundp 'load-file-name) load-file-name) (file-truename load-file-name) (locate-library "ess-site") ))) "Directory containing ess-site.el(c) and other ESS lisp files.") (add-to-list 'load-path (file-name-as-directory ess-lisp-directory)) (require 'ess-utils);; <<- _not_ in load-path typically for traditional setup (ess-message (format "[ess-site:] ess-lisp-directory = '%s'" ess-lisp-directory)) (defun ess-require (feature &rest args) (let ((feature-name (symbol-name feature))) (ess-message (concat "[ess-site:] require '" feature-name)) (apply 'require feature args))) ;; load code to figure out what version/strain of Emacs we are running ;; must come *AFTER* load-path is set ! (ess-require 'ess-compat) ;; If ess.info is not found, then ess-lisp-directory/../doc/info is added ;; resurrecting Stephen's version with a bug-fix (unless (locate-file "ess.info" Info-default-directory-list) (add-to-list 'Info-default-directory-list (expand-file-name "../doc/info/" ess-lisp-directory))) ;; Loads ess-custom.el and more (ess-require 'ess) ;;; Loading popular dialects (they should become optional in the future) ;; R and Julia (ess-require 'ess-r-mode) (ess-require 'ess-julia) ;; S-PLUS (MathSoft/StatSci/Insightful/TIBCO) (ess-require 'ess-sp3-d) (if ess-microsoft-p (ess-require 'ess-sp6w-d) (ess-require 'ess-sp6-d)) ;; S-elsewhere, on another machine by telnet (ess-require 'essd-els) ;; Stata, SAS and batch BUGS (ess-require 'ess-stata-mode) (ess-require 'ess-sas-d) (ess-require 'ess-bugs-l) (ess-write-to-dribble-buffer (format "[ess-site.el]: ess-customize-alist=%s \n" ess-customize-alist)) ;;; Literate Data Analysis (ess-require 'ess-noweb) (ess-require 'ess-swv) (ess-write-to-dribble-buffer (format "[ess-site.el _2_]: ess-customize-alist=%s \n" ess-customize-alist)) ;;; Speedbar and mouse (ess-require 'ess-mouse) ;;; Toolbar support (ess-require 'ess-toolbar) (ess-require 'ido nil t) ;;; Site Specific setup ;;;; =============================================== (autoload 'Rd-mode "ess-rd" "Major mode for editing R documentation." t) ;; Be careful when editing the following. MISTAKES WILL RESULT IN ;; *.sty BEING TREATED AS ESS[S], rather than LaTeX-mode! (unless (assoc "\\.[rR]\\'" auto-mode-alist) (setq auto-mode-alist (append '(("\\.sp\\'" . S-mode) ;; re: Don MacQueen ("/R/.*\\.q\\'" . R-mode) ;; R/*.q is R code (e.g., in package) ("\\.[qsS]\\'" . S-mode) ;; s,S [see ess-restore-asm-extns above!] ("\\.ssc\\'" . S-mode) ;; Splus (>= 4.x) script files. ("\\.SSC\\'" . S-mode) ;; ditto for windoze ("\\.[rR]\\'" . R-mode) ("\\.[rR]nw\\'" . Rnw-mode) ("\\.[sS]nw\\'" . Snw-mode); currently identical to Rnw-mode ("\\.[rR]profile\\'" . R-mode) ("NAMESPACE\\'" . R-mode) ("CITATION\\'" . R-mode) ("\\.omg\\'" . omegahat-mode) ("\\.hat\\'" . omegahat-mode) ;; Duncan's pref'd... ("\\.lsp\\'" . XLS-mode) ("\\.do\\'" . STA-mode) ("\\.ado\\'" . STA-mode) ("\\.[Ss][Aa][Ss]\\'" . SAS-mode) ;; Many .log/.lst files, not just SAS ;;("\\.log\\'" . SAS-log-mode) ;;("\\.[Ll][Ss][Tt]\\'" . SAS-listing-mode) ("\\.[Ss]t\\'" . S-transcript-mode) ("\\.Sout" . S-transcript-mode) ;;("\\.[Rr]t\\'" . R-transcript-mode) ("\\.[Rr]out" . R-transcript-mode) ("\\.Rd\\'" . Rd-mode) ("\\.[Bb][Uu][Gg]\\'" . ess-bugs-mode) ("\\.[Bb][Oo][Gg]\\'" . ess-bugs-mode) ("\\.[Bb][Mm][Dd]\\'" . ess-bugs-mode) ("\\.[Jj][Aa][Gg]\\'" . ess-jags-mode) ("\\.[Jj][Oo][Gg]\\'" . ess-jags-mode) ("\\.[Jj][Mm][Dd]\\'" . ess-jags-mode) ) auto-mode-alist))) ;; Rscript and littler interpreters recognized. (add-to-list 'interpreter-mode-alist '("Rscript" . r-mode)) (add-to-list 'interpreter-mode-alist '("r" . r-mode)) (autoload 'ess-transcript-mode "ess-trns" "Major mode for editing S transcript files." t) (autoload 'ess-transcript-clean-region "ess-trns" no-doc t) (autoload 'ess-rdired "ess-rdired" "View *R* objects in a dired-like buffer." t) (eval-after-load "ess-r-mode" '(progn (ess-message "[ess-site:] before creating ess-versions-* ...") (ess-r-s-versions-creation+menu) (ess-message "[ess-site:] after ess-versions-created ..."))) ;; Check to see that inferior-ess-r-program-name points to a working version ;; of R; if not, try to find the newest version: (ess-check-R-program-name) ;; -> (ess-find-newest-R) if needed, in ./ess-r-d.el (ess-message "[ess-site:] after ess-check-R-prog... ...") (ess-message "[ess-site:] *very* end ...") ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-site.el ends here ess-17.11/lisp/ess-sp3-d.el0000444005071500004540000000644513202324174012257 00000000000000;;; ess-sp3-d.el --- S-PLUS 3.x customization ;; Copyright (C) 1997--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 12 Jun 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the S-PLUS 3.x customizations for ess-mode. ;;; Code: (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (require 'ess-s-lang) (defvar S+3-dialect-name "S+3" "Name of 'dialect' for S-PLUS 3.x.");easily changeable in a user's .emacs (defvar S+3-customize-alist (append '((ess-local-customize-alist . 'S+3-customize-alist) (ess-dialect . S+3-dialect-name) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-object-name-db-file . "ess-s+3-namedb.el" ) (inferior-ess-program . inferior-S+3-program-name) (inferior-ess-help-command . "help(\"%s\", pager=\"cat\", window=FALSE)\n") (inferior-ess-help-filetype . nil) (inferior-ess-search-list-command . "search()\n") (inferior-ess-start-file . nil) ;"~/.ess-S+3") (inferior-ess-start-args . "") (ess-STERM . "iESS") ) S+common-cust-alist) "Variables to customize for S+3.") (defun S+3 (&optional proc-name) "Call 'S-PLUS 3.x', the 'Real Thing' from StatSci." (interactive) (setq ess-customize-alist S+3-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+3): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (inferior-ess) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start))) (defun S+3-mode (&optional proc-name) "Major mode for editing S+3 source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S+3-customize-alist) (ess-mode S+3-customize-alist proc-name) (if ess-imenu-use-S (ess-imenu-S))) (defun S+3-transcript-mode () "S-PLUS 3.x transcript mode." (interactive) (ess-transcript-mode S+3-customize-alist)) ; Provide package (provide 'ess-sp3-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-sp3-d.el ends here ess-17.11/lisp/ess-sp4-d.el0000444005071500004540000005004413202324174012252 00000000000000;;; ess-sp4-d.el --- S-PLUS 4.x customization ;; Copyright (C) 1998--2002 Richard M. Heiberger ;; Copyright (C) 2003--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: December 1998 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the S-PLUS 4.x customizations for ess-mode ;; with ddeclient. ;;; Code: ;;; Requires and Autoloads: (require 'ess-mode) (require 'ess-inf) (require 'ess-s-lang) (require 'ess-dde) (defvar S+4-dialect-name "S+4" "Name of 'dialect' for S-PLUS 4.x.");easily changeable in a user's .emacs (defvar inferior-S+4-multipleinstances "/MULTIPLEINSTANCES" "Default \"/MULTIPLEINSTANCES\" opens up a new instance of S+4 in a GUI window and connects it to the '(ddeESS [S+4])' window. The alternative nil uses an existing S+4 GUI (if there is one) and connects it to the '(ddeESS [S+4])' window.") (defvar S+4-customize-alist (append '((ess-local-customize-alist . 'S+4-customize-alist) (ess-dialect . S+4-dialect-name) (ess-loop-timeout . ess-S-loop-timeout) ;fixme: dialect spec. (ess-object-name-db-file . "ess-sp4-namedb.el" ) (inferior-ess-program . inferior-S+4-program-name) (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . "chm") (ess-send-region-function . #'ess-dde-send-region) (ess-load-file-function . #'ess-dde-load-file) (ess-command-function . #'ess-dde-command) (ess-eval-linewise-function . #'ess-dde-eval-linewise) (ess-dump-object-function . #'ess-dde-dump-object) (ess-read-object-name-function . #'ess-dde-read-object-name) (ess-find-help-file-function . #'ess-dde-find-help-file) (ess-display-help-on-object-function . #'ess-chm-display-help-on-object) (inferior-ess-start-file . nil) ;"~/.ess-S+4") (inferior-ess-start-args . (concat inferior-S+4-multipleinstances " " inferior-S+4-print-command " S_PROJ=" (directory-file-name default-directory))) ;; (inferior-ess-ddeclient . "ddeclient") ;; (inferior-ess-client-name . "S-PLUS") ;; (inferior-ess-client-command . "SCommand") (ess-STERM . "ddeESS") ) S+common-cust-alist) "Variables to customize for S+4") (defvar Sqpe+4-customize-alist (append '((ess-local-customize-alist . 'Sqpe+4-customize-alist) (ess-dialect . S+4-dialect-name) (ess-loop-timeout . 500000 );fixme: dialect specific custom.v (ess-object-name-db-file . "ess-sp4-namedb.el" ) (ess-display-help-on-object-function . #'ess-chm-display-help-on-object) (inferior-ess-program . inferior-Sqpe+4-program-name) (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . "chm") (inferior-ess-search-list-command . "searchPaths()\n") (inferior-ess-start-file . nil) ;"~/.ess-S+4") (inferior-ess-language-start . (concat "options(" "STERM='" ess-STERM "'" (if ess-editor (concat ", editor='" ess-editor "'")) (if ess-pager (concat ", pager='" ess-pager "'")) ")")) (ess-STERM . "iESS") ) S+common-cust-alist) "Variables to customize for Sqpe+4.") ;;; There are extra complications in S+4 (compared to S+3) because ;;; ;;; (1) The StatSci supplied Splus.exe doesn't work in an emacs ;;; buffer. It works as as a GUI window and we must send commands ;;; to it through ddeclient. Nonetheless, we need to give it a ;;; process name and be sure that that there is a valid running ;;; process in the '(ddeESS [S+4])' buffer. Therefore we create an ;;; ESS process in the buffer as a placeholder and start a shell ;;; in the ESS buffer. From the shell we start Splus. Once Splus ;;; finishes initializing and kills the original shell, we start ;;; another shell. We have a buffer-local variable ;;; inferior-ess-ddeclient, initialized to nil. When there is a ;;; non-nil value of inferior-ess-ddeclient we send lines to ;;; inferior-ess-ddeclient rather than to the Splus process. ;;; (2) There is no Splus process running in the '(ddeESS [S+4])' ;;; buffer. Therefore inferior-ess will never see a prompt, ;;; unless we first change it to the null prompt "^". Then once ;;; the process has started, we change it back. ;;; (3) When M-x S+4 starts Splus by a shell command, then Splus is an ;;; independent process and will be survive if the '(ddeESS [S+4])' ;;; buffer is killed (or emacs is quit). The '(ddeESS [S+4])' is ;;; made read-only and a warning is placed in it saying that "You ;;; can't type anything here." Actually, if the standalone Splus ;;; is killed and the '(ddeESS [S+4])' is made writable (C-x C-q), ;;; then '(ddeESS [S+4])' becomes a shell buffer. ;;; (defun S+4 (&optional proc-name) "Call 'S-PLUS 4.x', the 'GUI Thing' from StatSci. Put S-Plus in an independent MS-Window (Splus persists even if the '(ddeESS [S+4])' window is killed in emacs). Do this by creating a comint process that calls sh. Send a shell command in that sh buffer to call Splus. When it completes set up a shell as a placeholder in the '(ddeESS [S+4])' buffer. The S-Plus options are correctly set. In particular, the S-Plus Commands window is opened if the Options/General Settings/Startup menu says it should be. There is a 30 second delay during startup in which the screen will not be refreshed. This delay is here to allow slow disks to start the Splus program." (interactive) (save-excursion (setq ess-customize-alist S+4-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+4): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-program (append ess-customize-alist '((inferior-ess-program . "sh")))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (setq ess-customize-alist ; change inferior-ess-start-args (append ess-customize-alist '((inferior-ess-start-args . "-i")))) (let ((s-proj (getenv "S_PROJ")) (manpath (getenv "MANPATH"))) (cd (w32-short-file-name (directory-file-name default-directory))) (setenv "S_PROJ" default-directory) ;; I don't know why this PATH/MANPATH game is needed, ;; except that it doesn't work without it. (setenv "MANPATH" (getenv "PATH")) (inferior-ess) (sleep-for 2) ; need to wait, else working too fast! The Splus ; command in '(ddeESS [S+4])' should follow the "$" ; prompt. If not, then increase the sleep-for time! (setenv "MANPATH" manpath) (setenv "S_PROJ" s-proj)) (setq ess-customize-alist S+4-customize-alist) (ess-setq-vars-local ess-customize-alist) ;;; the next three lines belong in customize-alist, but can't be there ;;; because of the broken ess-setq-vars-default usage in ess-inf.el (setq inferior-ess-ddeclient "ddeclient") (setq inferior-ess-client-name "S-PLUS") (setq inferior-ess-client-command "SCommand") ;;; end of what belongs in customize-alist (setq comint-process-echoes nil) (setq comint-input-sender 'comint-simple-send) (goto-char (point-max)) (insert (concat inferior-S+4-program-name " " inferior-ess-start-args)) ; Note: there is no final "&". ;; Without the "&", the results of !system.command come to '(ddeESS [S+4])' ;; With the "&", the results of !system.command in S get lost. (inferior-ess-send-input) (sleep-for 30) ; Need to wait, else working too fast! ; If the ess-current-process-name doesn't appear in the ; Splus Commands window increase the sleep-for time! (setq ess-local-process-name ess-current-process-name) (ess-eval-linewise (concat "#" ess-current-process-name)) (goto-char (point-min)) (insert "This is a placeholder buffer. You can't type anything here. Use `C-x b RET' to return to your file.\n Anything sent to this process from an S-mode buffer goes directly to the associated Splus Commands window.\n The S-Plus Commands window must be visible. You may need to open the S-Plus Commands window manually (by clicking on Splus/Window/Commands Window).\n Any results of the !system.command typed at the S prompt in the Splus Commands window appear in this buffer.\n\n") (goto-char (point-max)) ; comint-mode-map makes '(ddeESS [S+4])' ;; (use-local-map comint-mode-map) ;a shell buffer after Splus is finished. (set-buffer-process-coding-system 'raw-text-dos 'raw-text-unix) (setq buffer-read-only t) ; force buffer to be read-only (setq mode-name "ddeESS") ;; (ess-eval-linewise inferior-S+4-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) )) (defun S+4-existing (&optional proc-name) "Call 'S-PLUS 4.x', the 'GUI Thing' from StatSci. Do so by finding an existing S-Plus in an independent MS-Window (if there is one) and set up a '(ddeESS [S+4])' buffer in emacs. If there is no existing S-Plus, then a new one will be opened in the default directory, usually something like c:/Program Files/spls45se/users/yourname. If you have a HOME environment variable, it will open it there." (interactive) (let* ((inferior-S+4-multipleinstances " & # ")) ; Note: there is a final "&". ;; Without the "&", there is a core dump. ;; With the "&", the results of !system.command in S get lost. ;; We are picking up an existing S-Plus process for sending to. ;; It doesn't know about us, so nothing comes back. (S+4 proc-name)) (with-current-buffer (car (buffer-list)) ; get the ESS buffer just created (setq buffer-read-only nil) ; permit writing in ESS buffer (goto-char (point-max)) (beginning-of-line) (forward-line -1) (insert "This is S+4-existing. Results of the !system.command typed at the S prompt in the Splus Commands window blink a DOS window and you won't see them.\n\n") (setq buffer-read-only t) ; restore ESS buffer to be read-only )) ;;; There are extra complications in Sqpe+4 (compared to S+3) because ;;; (1) The StatSci supplied Sqpe.exe won't work without SHOME as an ;;; environment variable and Sqpe does not take command line ;;; arguments and ;;; (2) Sqpe.exe comes up with options(interactive=F), which means it ;;; doesn't provide prompts by default, and we must change it to T so ;;; it will provide prompts. ;;; (defun Sqpe+4 (&optional proc-name) "Call 'Sqpe' from 'S-PLUS 4.x', the 'Real Thing' from StatSci." (interactive) (setq ess-customize-alist Sqpe+4-customize-alist) (let* ((shome-nil-p (equal (getenv "SHOME") nil))) (if shome-nil-p (setenv "SHOME" inferior-Sqpe+4-SHOME-name)) (ess-write-to-dribble-buffer (format "\n(Sqpe+4): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (inferior-ess) (setq ess-customize-alist Sqpe+4-customize-alist) ; restore i-e-p-p in alist (ess-setq-vars-local ess-customize-alist) ; restore i-e-p-p in buffer (setq inferior-ess-prompt ; define with correct i-e-p-p ;; Do not anchor to bol with `^' ; (copied from ess-inf.el) (concat "\\(" inferior-ess-primary-prompt "\\|" inferior-ess-secondary-prompt "\\)")) (setq comint-prompt-regexp (concat "^" inferior-ess-prompt)) ; define with correct i-e-p-p (setq comint-input-sender 'inferior-ess-input-sender) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) (goto-char (point-max)) (insert "options(interactive=T)") (inferior-ess-send-input) (setq mode-name "iESS(Sqpe)") ;; (ess-eval-linewise inferior-S+4-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) (if shome-nil-p (setenv "SHOME" nil)))) (defun S+4-mode (&optional proc-name) "Major mode for editing S+4 source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S+4-customize-alist) (ess-mode S+4-customize-alist proc-name) (if ess-imenu-use-S (ess-imenu-S))) (defun S+4-transcript-mode () "S-PLUS 4.x transcript mode." (interactive) (ess-transcript-mode S+4-customize-alist)) (defun S+4-msdos (&optional proc-name) "Call 'S-PLUS 4.x', the 'GUI Thing' from StatSci. Put S-Plus in an independent MS-Window (Splus persists even if the '(ddeESS [S+4])' window is killed in emacs). Do this by creating a comint process that calls sh. Send a shell command in that sh buffer to call Splus. When it completes set up a shell as a placeholder in the '(ddeESS [S+4])' buffer. The S-Plus options are correctly set. In particular, the S-Plus Commands window is opened if the Options/General Settings/Startup menu says it should be. There is a 30 second delay during startup in which the screen will not be refreshed. This delay is here to allow slow disks to start the Splus program." (interactive) (save-excursion (setq ess-customize-alist S+4-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+4): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-program (append ess-customize-alist '((inferior-ess-program . (getenv "COMSPEC"))))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (setq ess-customize-alist ; change inferior-ess-start-args (append ess-customize-alist '((inferior-ess-start-args . "")))) (let ((s-proj (getenv "S_PROJ"))) (cd (w32-short-file-name (directory-file-name default-directory))) (setenv "S_PROJ" default-directory) (inferior-ess) (sleep-for 2) ; need to wait, else working too fast! The Splus ; command in '(ddeESS [S+4])' should follow the "$" ; prompt. If not, then increase the sleep-for time! (setenv "S_PROJ" s-proj)) (setq ess-customize-alist S+4-customize-alist) (ess-setq-vars-local ess-customize-alist) ;;; the next three lines belong in customize-alist, but can't be there ;;; because of the broken ess-setq-vars-default usage in ess-inf.el (setq inferior-ess-ddeclient "ddeclient") (setq inferior-ess-client-name "S-PLUS") (setq inferior-ess-client-command "SCommand") ;;; end of what belongs in customize-alist (setq comint-input-sender 'comint-simple-send) (setq comint-process-echoes nil) (set-buffer-process-coding-system 'raw-text-dos 'raw-text-dos) (goto-char (point-max)) (insert (concat inferior-S+4-program-name " " inferior-ess-start-args)) ; Note: there is no final "&". ; Without the "&", the results of !system.command come to '(ddeESS [S+4])' ; With the "&", the results of !system.command in S get lost. (inferior-ess-send-input) (sleep-for 30) ; Need to wait, else working too fast! ; If the ess-current-process-name doesn't appear in the ; Splus Commands window increase the sleep-for time! ;;; from msdos-minor-mode (setq comint-process-echoes t) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) ;;; end from msdos-minor-mode (setq ess-local-process-name ess-current-process-name) (ess-eval-linewise (concat "#" ess-current-process-name)) (goto-char (point-min)) (insert "This is a placeholder buffer. You can't type anything here. Use 'C-x b RET' to return to your file.\n Anything sent to this process from an S-mode buffer goes directly to the associated Splus Commands window.\n The S-Plus Commands window must be visible. You may need to open the S-Plus Commands window manually (by clicking on Splus/Window/Commands Window).\n There is a 30 second delay when this program starts during which the emacs screen will be partially blank.\n Remember to `q()' from S-Plus and then C-x C-q exit from the `'(ddeESS [S+4])'' buffer, or take the risk of not being able to shut down your computer and suffering through scandisk.\n Any results of the !system.command typed at the S prompt in the Splus Commands window (are supposed to) appear in this buffer.\n\n") (goto-char (point-max)) ; comint-mode-map makes '(ddeESS [S+4])' (use-local-map comint-mode-map) ; a shell buffer after Splus is finished. (setq buffer-read-only t) ; force buffer to be read-only (setq mode-name "ddeESS") ;; (ess-eval-linewise inferior-S+4-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) )) (defun S+4-msdos-existing (&optional proc-name) "Call 'S-PLUS 4.x', the 'GUI Thing' from StatSci. Do so by finding an existing S-Plus in an independent MS-Window (if there is one) and set up a '(ddeESS [S+4])' buffer in emacs. If there is no existing S-Plus, then a new one will be opened in the default directory, usually something like c:/Program Files/spls45se/users/yourname. If you have a HOME environment variable, it will open it there." (interactive) (let* ((inferior-S+4-multipleinstances "")) (S+4-msdos proc-name)) (save-excursion (set-buffer (car (buffer-list))) ; get the ESS buffer just created (setq buffer-read-only nil) ; permit writing in ESS buffer (goto-char (point-max)) (beginning-of-line) (forward-line -1) (insert "This is S+4-msdos-existing. Results of the !system.command typed at the S prompt in the Splus Commands window blink a DOS window and you won't see them.\n\n") (setq buffer-read-only t) ; restore ESS buffer to be read-only )) ; Provide package (provide 'ess-sp4-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-sp4-d.el ends here ess-17.11/lisp/ess-sp5-d.el0000444005071500004540000001016213202324174012250 00000000000000;;; ess-sp5-d.el --- S-plus 5 customization ;; Copyright (C) 1998 A.J. Rossini ;; Copyright (C) 1999--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 9 Nov 1998 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; AJR copied S4 to be S+5. ;; DB contributed the changes from ess-sp3-d.el to ;; ess-s4-d.el. (removed the old ugly approach). ;; This file defines Sp5 customizations for ess-mode. Lots of thanks ;; to RMH and JMC for code and suggestions ;; Thanks to MM for making this sensible. ;;; Code: (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (require 'ess-s-lang) ;; You now need to make sure you've defined if you are running 5.0 or 5.1. ;; Lots of things are broken between them, GRR... (defvar S+5-dialect-name "S+5" "Name of 'dialect' for S-PLUS 5.");easily changeable in a user's .emacs (defvar S+5-customize-alist (append '((ess-local-customize-alist . 'S+5-customize-alist) (ess-dialect . S+5-dialect-name) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-object-name-db-file . "ess-sp5-namedb.el") (inferior-ess-program . inferior-S+5-program-name) ;;(inferior-ess-objects-pattern . ".*") ; for new s4 stuff (inferior-ess-help-command . "help(\"%s\", pager=\"slynx -dump\", window=FALSE)\n") (inferior-ess-help-filetype . nil) (inferior-ess-search-list-command . "searchPaths()\n") (inferior-ess-start-args . inferior-S+-start-args) (ess-STERM . "iESS") ) S+common-cust-alist) "Variables to customize for S+5.") ;; For loading up the S code required for the above. ;;(add-hook 'ess-post-run-hook ;; (lambda () ;; (ess-command ;; (concat ;; "if(exists(\"Sversion\")) library(emacs) else source(\"" ;; ess-mode-run-file ;; "\")\n")) ;; (if ess-mode-run-file2 ;; (ess-command ;; (concat "source(\"" ess-mode-run-file2 "\")\n"))))) (defun S+5 (&optional proc-name) "Call 'Splus5', based on S version 4, from Bell Labs. New way to do it." (interactive) (setq ess-customize-alist S+5-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+5): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (inferior-ess) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start))) (defun S+5-mode (&optional proc-name) "Major mode for editing S+5 source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S+5-customize-alist) (ess-mode S+5-customize-alist proc-name) (if ess-imenu-use-S (ess-imenu-S))) (defun S+5-transcript-mode () "S-PLUS 5 transcript mode." (interactive) (ess-transcript-mode S+5-customize-alist)) ; Provide package (provide 'ess-sp5-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-sp5-d.el ends here ess-17.11/lisp/ess-sp6-d.el0000444005071500004540000002716313202324174012262 00000000000000;;; ess-sp6-d.el --- S-Plus 6 & 7 & 8 customization ;; Copyright (C) 2001--2005 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 2001/02/06 ;; Maintainer: ESS Core Team ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; AJR copied S+5 to be S+6. ;; AJR copied S4 to be S+5. ;; DB contributed the changes from ess-sp3-d.el to ;; ess-s4-d.el. (removed the old ugly approach). ;; This file defines Sp5 customizations for ess-mode. Lots of thanks ;; to RMH and JMC for code and suggestions ;; Thanks to MM for making this sensible. ;;; Code: (require 'ess-mode) (require 'ess-inf) (require 'ess-s-lang) (require 'ess-dde) ;; You now need to make sure you've defined if you are running 5.0 or 5.1. ;; Lots of things are broken between them, GRR... (defun S+-directory-p (directory) "Splus 5++ directories have a .Data directory and a __Meta directory within." (and directory (file-directory-p (concat directory ".Data")) (file-directory-p (concat directory ".Data/__Meta")))) (defvar S+-directory-function (lambda () (if (S+-directory-p default-directory) default-directory (or ess-directory default-directory)))) (defvaralias 'S+6-setup-directory-function 'S+-setup-directory-function) (defvar S+-setup-directory-function (lambda (startdir) (when (and startdir (S+-directory-p startdir)) (setenv "S_WORK" (if (getenv "S_WORK") (concat startdir ":" (getenv "S_WORK")) ;;(message "adding %s to S_WORK" startdir) startdir))))) (defvaralias 'S+6-customize-alist 'S+-customize-alist) (defvar S+-customize-alist (append '((ess-local-customize-alist . 'S+-customize-alist) (ess-dialect . S+-dialect-name) (ess-loop-timeout . ess-S-loop-timeout) ;fixme: dialect spec. (ess-function-pattern . ess-r-function-pattern) (ess-object-name-db-file . "ess-sp6-namedb.el") (inferior-ess-program . inferior-S+-program-name) (inferior-ess-help-command . "help(\"%s\", pager=\"slynx -dump\", window=FALSE)\n") (inferior-ess-help-filetype . nil) (inferior-ess-search-list-command . "searchPaths()\n") (ess-send-region-function . #'ess-dde-send-region) (ess-load-file-function . #'ess-dde-load-file) (ess-command-function . #'ess-dde-command) (ess-eval-linewise-function . #'ess-dde-eval-linewise) (ess-dump-object-function . #'ess-dde-dump-object) (ess-read-object-name-function . #'ess-dde-read-object-name) (ess-find-help-file-function . #'ess-dde-find-help-file) (ess-display-help-on-object-function . #'ess-dde-display-help-on-object) (ess-directory-function . S+-directory-function) (ess-setup-directory-function . S+-setup-directory-function) (inferior-ess-start-args . inferior-S+-start-args) (ess-STERM . "iESS") ) S+common-cust-alist) "Variables to customize for S+.") (defvar ess-S+-post-run-hook nil "Functions run in process buffer after the initialization of S+ process.") (defalias 'S+6 'S+) (defun S+ (&optional proc-name) "Call 'Splus6', based on S version 4, from Bell Labs. New way to do it." (interactive) (setq ess-customize-alist S+-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (inferior-ess) (ess-command ess-S+--injected-code) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) (with-ess-process-buffer nil (run-mode-hooks 'ess-S+-post-run-hook))) (defvar ess-S+--injected-code ".ess_funargs <- function(funname){ ## funname <- deparse(substitute(object)) fun <- try(eval(parse(text=funname)), silent = TRUE) if(is.function(fun)) { special <- grepl('[:$@[]', funname) args <- args(fun) fmls <- formals(args) fmls.names <- names(fmls) fmls <- gsub('\\\"', '\\\\\\\"', as.character(fmls), fixed = TRUE) args.alist <- sprintf(\"'(%s)\", paste(\"(\\\"\", fmls.names, \"\\\" . \\\"\", fmls, \"\\\")\", sep = '', collapse = ' ')) ## envname <- environmentName(environment(fun)) envname <- if (special) '' else 'S+' cat(sprintf('(list \\\"%s\\\" %s )\\n', envname, args.alist)) } } ") (defalias 'S+6-mode 'S+-mode) (defun S+-mode (&optional proc-name) "Major mode for editing S+ source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S+-customize-alist) (ess-mode S+-customize-alist proc-name) (if (fboundp 'ess-add-toolbar) (ess-add-toolbar)) (if ess-imenu-use-S (ess-imenu-S))) (defalias 'S+6-transcript-mode 'S+-transcript-mode) (defun S+-transcript-mode () "S-PLUS 6 transcript mode." (interactive) (ess-transcript-mode S+-customize-alist)) (defvar ess-s-versions-list nil "List of other versions of S to add to ESS. Each element of this list is itself a list: \(FUNCTION PATH ARGS\) e.g. \(\"mysplus\" \"/usr/splus7/bin/splus7\" \"-j\"\) FUNCTION is the name of the function to be created by Emacs. PATH is the full path to the variant of S that you want to run. ARGS (optional) are start-up arguments that you want to pass to S. ") (defvar ess-s-versions '("Splus") "List of partial strings for versions of S to access within ESS. Each string specifies the start of a filename. If a filename beginning with one of these strings is found on `exec-path', a M-x command for that version of S is made available. For example, if the file \"Splus7\" is found and this variable includes the string \"Splus\", a function called `M-x Splus7' will be available to run that version of S. If duplicate versions of the same program are found (which happens if the same path is listed on `exec-path' more than once), they are ignored by calling `ess-uniq-list'. Set this variable to nil to disable searching for other versions of S using this method. If you set this variable, you need to restart Emacs (and set this variable before ess-site is loaded) for it to take effect. See also `ess-s-versions-list' for another way to add other S processes to ESS. ") (defun ess-s-versions-create () "Generate defuns for starting other versions of S. See `ess-s-versions' for strings that determine which functions are created. It assumes these versions of S can be run as a substitute for Splus6. This function returns the list of S defuns, if any, that were created. The defuns will normally be placed on the menubar upon ESS initialisation." ;; This works by creating a temp buffer where the template function is ;; edited so that X.Y is replaced by the version name (let ((template "") (template-args) (beg) (versions) (version) (eval-buf (get-buffer-create "*ess-temp-s-evals*")) (ess-s-versions-created) (ess-s-versions-list ess-s-versions-list) ;; make local copy so it won't be destroyed globally ) ;; ;; This is the template function used for creating M-x Splus (setq template "(defun S-X.Y () \"Call S-X.Y, i.e., the S version 'S-X.Y' using ESS. This function was generated by `ess-s-versions-create'.\" (interactive \"\") (let ((inferior-S+-program-name \"S-X.Y\")) (S+))) ") (with-current-buffer eval-buf ;; clear the buffer. (delete-region (point-min) (point-max)) (when ess-s-versions ;; Find which versions of S we want. Remove the pathname, leaving just ;; the name of the executable. (setq versions (ess-uniq-list (mapcar 'file-name-nondirectory (apply 'nconc (mapcar 'ess-find-exec-completions ess-s-versions))))) (ess-write-to-dribble-buffer (format "(S): ess-s-versions-create making M-x defuns for \n %s\n" (mapconcat 'identity versions "\n "))) (setq ess-s-versions-created versions) ;keep copy for returning at end. ;; Iterate over each string in VERSIONS, creating a new defun each time. (while versions (setq version (car versions) versions (cdr versions)) (setq beg (point)) (insert template) (goto-char beg) (while (search-forward "S-X.Y" nil t) (replace-match version t t)) (goto-char (point-max)) )) ;; Check if we have any static defuns to evaluate. (when ess-s-versions-list ;; Need a slightly different template for static defuns. (setq template "(defun S-X.Y () \"Call S-X.Y, i.e., the S version 'S-X.Y' using ESS. This function will run S-FULL-PATH This function was generated by `ess-s-versions-create'.\" (interactive \"\") (let ((inferior-S+-program-name \"S-FULL-PATH\")) (S+))) ") ;; need another version of template, with args. (setq template-args "(defun S-X.Y () \"Call S-X.Y, i.e., the S version 'S-X.Y' using ESS. This function will run S-FULL-PATH This function was generated by `ess-s-versions-create'.\" (interactive \"\") (let ((inferior-S+-program-name \"S-FULL-PATH\") (inferior-S+-start-args \"S-MYARGS\")) (S+))) ") (while ess-s-versions-list (let* ((this-S-version (car ess-s-versions-list)) (S-defun (nth 0 this-S-version)) (S-path (nth 1 this-S-version)) (S-args (nth 2 this-S-version))) (setq ess-s-versions-list (cdr ess-s-versions-list)) ;; Could do error checking here, that S-defun is not defined ;; before, and that S-path is valid. (setq beg (point)) (insert (if S-args template-args template)) (goto-char beg) (while (search-forward "S-X.Y" nil t) (replace-match S-defun t t)) (goto-char beg) (while (search-forward "S-FULL-PATH" nil t) (replace-match S-path t t)) (when S-args (goto-char beg) (while (search-forward "S-MYARGS" nil t) (replace-match S-args t t))) (goto-char (point-max)) (add-to-list 'ess-s-versions-created S-defun 'append)))) ;; buffer has now been created with defuns, so eval them! (eval-buffer) (kill-buffer eval-buf); < comment this for debugging ess-s-versions-created))) ; Provide package (provide 'ess-sp6-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-sp6-d.el ends here ess-17.11/lisp/ess-sp6w-d.el0000444005071500004540000007037413202324174012453 00000000000000;;; ess-sp6w-d.el --- S-PLUS 6.x for Windows customization ;;; copied and edited from ess-s4-d.el - Richard M. Heiberger, April 2001 ;; Copyright (C) 2001 Richard M. Heiberger ;; Copyright (C) 2002--2005 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: April 2001 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the S-PLUS 6.x for Windows customizations ;; for ess-mode with ddeclient. ;;; Code: ;;; Requires and Autoloads: (require 'ess-s-lang) ;;NO: this is autoloaded from other places (require 'ess-dde) (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (defvaralias 'inferior-S+6-multipleinstances 'inferior-S+-multipleinstances) (defvar inferior-S+-multipleinstances "/MULTIPLEINSTANCES" "Default \"/MULTIPLEINSTANCES\" opens up a new instance of S+[678] in a GUI window and connects it to the '(ddeESS [S+])' window. The alternative nil uses an existing S+ GUI (if there is one) and connects it to the '(ddeESS [S+])' window.") (defvaralias 'S+6-customize-alist 'S+-customize-alist) (defvar S+-customize-alist (append '((ess-local-customize-alist . 'S+-customize-alist) (ess-dialect . S+-dialect-name) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-object-name-db-file . "ess-sp6-namedb.el" ) (ess-display-help-on-object-function . #'ess-chm-display-help-on-object) (inferior-ess-program . inferior-S+-program-name) (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . "chm") (inferior-ess-search-list-command . "searchPaths()\n") (inferior-ess-start-file . nil) ;"~/.ess-S+") (inferior-ess-start-args . (concat inferior-S+-multipleinstances " " inferior-S+-start-args " " inferior-S+-print-command " S_PROJ=" (w32-short-file-name (directory-file-name default-directory)))) ;; (inferior-ess-ddeclient . "ddeclient") ;; (inferior-ess-client-name . "S-PLUS") ;; (inferior-ess-client-command . "SCommand") (ess-STERM . "ddeESS") ) S+common-cust-alist) "Variables to customize for S+") (defvaralias 'Sqpe+6-customize-alist 'Sqpe+-customize-alist) (defvar Sqpe+-customize-alist (append '((ess-local-customize-alist . 'Sqpe+-customize-alist) (ess-dialect . S+-dialect-name) (ess-loop-timeout . 500000 );fixme: dialect specific custom.var (ess-object-name-db-file . "ess-sp6-namedb.el" ) (ess-display-help-on-object-function . #'ess-chm-display-help-on-object) (inferior-ess-program . inferior-Sqpe+-program-name) (inferior-ess-help-command . "help(\"%s\")\n") (inferior-ess-help-filetype . "chm") (inferior-ess-search-list-command . "searchPaths()\n") (inferior-ess-start-file . nil) ;"~/.ess-S+") (inferior-ess-start-args . (concat ;; workaround for bug in S-Plus 6 for Windows: "ALWAYS_PROMPT=X" " " inferior-Sqpe+-start-args ;; e.g. license manager )) (ess-STERM . "iESS") ) S+common-cust-alist) "Variables to customize for Sqpe+.") ;;; There are extra complications in S+6 and S+7 and S+8 (compared to S+3) ;;; because ;;; ;;; (1) The StatSci supplied Splus.exe doesn't work in an emacs ;;; buffer. It works as as a GUI window and we must send commands ;;; to it through ddeclient. Nonetheless, we need to give it a ;;; process name and be sure that that there is a valid running ;;; process in the '(ddeESS [S+])' buffer. Therefore we create an ;;; ESS process in the buffer as a placeholder and start a shell ;;; in the ESS buffer. From the shell we start Splus. Once Splus ;;; finishes initializing and kills the original shell, we start ;;; another shell. We have a buffer-local variable ;;; inferior-ess-ddeclient, initialized to nil. When there is a ;;; non-nil value of inferior-ess-ddeclient we send lines to ;;; inferior-ess-ddeclient rather than to the Splus process. ;;; (2) There is no Splus process running in the '(ddeESS [S+])' ;;; buffer. Therefore inferior-ess will never see a prompt, ;;; unless we first change it to the null prompt "^". Then once ;;; the process has started, we change it back. ;;; (3) When M-x S+ starts Splus by a shell command, then Splus is an ;;; independent process and will be survive if the '(ddeESS [S+])' ;;; buffer is killed (or emacs is quit). The '(ddeESS [S+])' is ;;; made read-only and a warning is placed in it saying that "You ;;; can't type anything here." Actually, if thestandalone Splus ;;; is killed and the '(ddeESS [S+])' is made writable (C-x C-q), ;;; then '(ddeESS [S+])' becomes a shell buffer. ;;; (defalias 'S+6 'S+) (defun S+ (&optional proc-name) "Verify that `inferior-S+-program-name' points to S-Plus 6 or S-Plus 7 or S-Plus 8. Start normally for S-Plus 6.1 and later. Inform the user to start S-Plus 6.0 from the icon and then connect to it with `S+-existing'. Give an error message if `inferior-S+-program-name' doesn't point to S-Plus 6 or S-Plus 7 or S-Plus 8." (interactive) (with-current-buffer (find-file-noselect (concat (executable-find inferior-S+-program-name) "/../../versions") t) (setq buffer-read-only 1) (forward-line) (if (not (search-backward-regexp "splus\t[678].[0-9]" (point-min) t)) (error "The emacs variable `inferior-S+-program-name' does not point to S-Plus 6 or 7 or 8. Please add `splus[678]?/cmd' (expand the `[678]?' to match your setup) to your `exec-path' or specify the complete path to `Splus.exe' in the variable `inferior-S+-program-name' in your `.emacs' file.") (forward-line) (if (search-backward "splus\t6.0" (point-min) t) (error "S-Plus 6.0 for Microsoft Windows has a bug that prevents it from being started by emacs. Instead, you must start it by double-clicking an icon. Then you can connect to it with `S+-existing'. You should consider upgrading to a newer release of S-Plus.")))) (S+-initiate proc-name)) ;; normal start ; (defalias 'S+6-initiate 'S+-initiate) (defun S+-initiate (&optional proc-name) "Call 'S-PLUS [678].x for Windows', the 'GUI Thing' from StatSci. Put S-Plus in an independent MS-Window (Splus persists even if the '(ddeESS [S+])' window is killed in emacs). Do this by creating a comint process that calls sh. Send a shell command in that sh buffer to call Splus. When it completes set up a shell as a placeholder in the '(ddeESS [S+])' buffer. The S-Plus options are correctly set. In particular, the S-Plus Commands window is opened if the Options/General Settings/Startup menu says it should be. There is a startup delay of `ess-S+-startup-delay' seconds during which the screen will not be refreshed. This delay is here to allow slow disks to start the Splus program." (interactive) (save-excursion (setq ess-customize-alist S+-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-program (append ess-customize-alist '((inferior-ess-program . "sh")))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (setq ess-customize-alist ; change inferior-ess-start-args (append ess-customize-alist '((inferior-ess-start-args . "-i")))) (let ((s-proj (getenv "S_PROJ")) (use-dialog-box (not (or ess-microsoft-p (eq system-type 'cygwin)))) ) (cd (w32-short-file-name (directory-file-name default-directory))) (setenv "S_PROJ" (w32-short-file-name default-directory)) (inferior-ess) (sleep-for 2) ; need to wait, else working too fast! The Splus ; command in '(ddeESS [S+])' should follow the "$" ; prompt. If not, then increase the sleep-for time! (setenv "S_PROJ" s-proj)) (setq ess-customize-alist S+-customize-alist) (ess-setq-vars-local ess-customize-alist) ;;; the next three lines belong in customize-alist, but can't be there ;;; because of the broken ess-setq-vars-default usage in ess-inf.el (setq inferior-ess-ddeclient "ddeclient") (setq inferior-ess-client-name "S-PLUS") (setq inferior-ess-client-command "SCommand") ;;; end of what belongs in customize-alist (setq comint-process-echoes nil) (setq comint-input-sender 'comint-simple-send) (goto-char (point-max)) (insert (concat inferior-S+-program-name " " inferior-ess-start-args)) ; Note: there is no final "&". ;; Without the "&", the results of !system.command come to '(ddeESS [S+])' ;; With the "&", the results of !system.command in S get lost. (inferior-ess-send-input) (sleep-for ess-S+-startup-delay) ; Need to wait, else working too fast! ; If the ess-current-process-name doesn't appear in the ; Splus Commands window increase the sleep-for time! (setq ess-local-process-name ess-current-process-name) (ess-eval-linewise (concat "#" ess-current-process-name)) (goto-char (point-min)) (insert "This is a placeholder buffer. You can't type anything here. Use `C-x b RET' to return to your file.\n Anything sent to this process from an S-mode buffer goes directly to the associated Splus Commands window.\n The S-Plus Commands window must be visible. You may need to open the S-Plus Commands window manually (by clicking on Splus/Window/Commands Window).\n Any results of the !system.command typed at the S prompt in the Splus Commands window appear in this buffer.\n\n") (goto-char (point-max)) ; comint-mode-map makes '(ddeESS [S+])' ;; (use-local-map comint-mode-map) ;a shell buffer after Splus is finished. (set-buffer-process-coding-system 'raw-text-dos 'raw-text-unix) (setq buffer-read-only t) ; force buffer to be read-only (setq mode-name "ddeESS") ;; (ess-eval-linewise inferior-S+-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) )) (defalias 'S+6-existing 'S+-existing) (defun S+-existing (&optional proc-name) "Call 'S-PLUS [678].x for Windows', the 'GUI Thing' from StatSci. Do so by finding an existing S-Plus in an independent MS-Window (if there is one) and set up a '(ddeESS [S+])' buffer in emacs. If there is no existing S-Plus, then a new one will be opened in the default directory. The default is usually something like 'c:/Program Files/Insightful/splus70/users/yourname' for S-Plus before 8.0.4. Beginning with 8.0.4, S-Plus uses the default directory 'c:/Documents and Settings/yourname/My Documents/S-PLUS Projects/Project1'. Beginning with TIBCO Spotfire S+ Version 8.1.1 for Microsft Windows, the default directory is 'c:/DOCUME~1/yourname/MYDOCU~1/SPOTFI~1/Project1'. If you have a HOME environment variable, it will open it there." (interactive) (let* ((inferior-S+-multipleinstances " & # ") ; Note: there is a final "&". (ess-S+-startup-delay 0)) ;; No delay for existing S-Plus ;; Without the "&", there is a core dump. ;; With the "&", the results of !system.command in S get lost. ;; We are picking up an existing S-Plus process for sending to. ;; It doesn't know about us, so nothing comes back. (S+-initiate proc-name)) (with-current-buffer (car (buffer-list)) ; get the ESS buffer just created (setq buffer-read-only nil) ; permit writing in ESS buffer (goto-char (point-max)) (beginning-of-line) (forward-line -1) (insert "This is S+-existing. Results of the !system.command typed at the S prompt in the Splus Commands window blink a DOS window and you won't see them.\n\n") (setq buffer-read-only t) ; restore ESS buffer to be read-only )) ;;; There are extra complications in Sqpe+6 (compared to S+3) because ;;; (1) The StatSci supplied Sqpe.exe won't work without SHOME as an ;;; environment variable and Sqpe does not take command line ;;; arguments and ;;; (2) Sqpe.exe comes up with options(interactive=FALSE), which means it ;;; doesn't provide prompts by default, and we must change it to T so ;;; it will provide prompts. ;;; (defalias 'Sqpe+6 'Sqpe+) (defun Sqpe+ (&optional proc-name) "Call 'Sqpe' from 'S-PLUS [678].x for Windows', the 'Real Thing' from StatSci." (interactive) (setq ess-customize-alist Sqpe+-customize-alist) (let* ((shome-nil-p (equal (getenv "SHOME") nil)) (use-dialog-box (not (or ess-microsoft-p (eq system-type 'cygwin)))) ) (if shome-nil-p (setenv "SHOME" inferior-Sqpe+-SHOME-name)) (ess-write-to-dribble-buffer (format "\n(Sqpe+6): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (inferior-ess) (setq ess-customize-alist Sqpe+-customize-alist) ; restore i-e-p-p in alist (ess-setq-vars-local ess-customize-alist) ; restore i-e-p-p in buffer (setq inferior-ess-prompt ; define with correct i-e-p-p ;; Do not anchor to bol with `^' ; (copied from ess-inf.el) (concat "\\(" inferior-ess-primary-prompt "\\|" inferior-ess-secondary-prompt "\\)")) (setq comint-prompt-regexp (concat "^" inferior-ess-prompt)) ; define with correct i-e-p-p (setq comint-input-sender 'inferior-ess-input-sender) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) (goto-char (point-max)) (insert "options(interactive=TRUE)") (inferior-ess-send-input) (setq mode-name "iESS(Sqpe)") ;; (ess-eval-linewise inferior-S+-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) (if shome-nil-p (setenv "SHOME" nil)))) (defalias 'S+6-mode 'S+-mode) (defun S+-mode (&optional proc-name) "Major mode for editing S+[678] source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S+-customize-alist) (ess-mode S+-customize-alist proc-name) (if ess-imenu-use-S (ess-imenu-S))) (defalias 'S+6-transcript-mode 'S+-transcript-mode) (defun S+-transcript-mode () "S-PLUS transcript mode." (interactive) (ess-transcript-mode S+-customize-alist)) (defalias 'S+-msdos 'S+-msdos) (defun S+-msdos (&optional proc-name) "Verify that `inferior-S+-program-name' points to S-Plus 6 or S-Plus 7 or S-Plus 8. Start normally for S-Plus 6.1 and later. Inform the user to start S-Plus 6.0 from the icon and then connect to it with `S+-msdos-existing'. Give an error message if `inferior-S+-program-name' doesn't point to S-Plus 6 or S-Plus 7 or S-Plus 8." (interactive) (with-current-buffer (find-file-noselect (concat (executable-find inferior-S+-program-name) "/../../versions") t) (setq buffer-read-only 1) (forward-line) (if (not (search-backward-regexp "splus\t[678].[0-9]" (point-min) t)) (error "The emacs variable `inferior-S+-program-name' does not point to S-Plus 6 or 7 or 8. Please add `splus[678]?/cmd' (expand the `[678]?' to match your setup) to your `exec-path' or specify the complete path to `Splus.exe' in the variable `inferior-S+-program-name' in your `.emacs' file.") ;;; " This comment keeps emacs font-lock from getting out of phase. (progn (forward-line) (if (search-backward "splus\t6.0" (point-min) t) (error "S-Plus 6.0 for Microsoft Windows has a bug that prevents it from being started by emacs. Instead, you must start it by double-clicking an icon. Then you can connect to it with `S+-msdos-existing'. You should consider upgrading to a newer release of S-Plus.") (S+-msdos-initiate proc-name))) ;; normal start ; ))) (defalias 'S+6-msdos-initiate 'S+-msdos-initiate) (defun S+-msdos-initiate (&optional proc-name) "Call 'S-PLUS [678].x for Windows', the 'GUI Thing' from StatSci. Put S-Plus in an independent MS-Window (Splus persists even if the '(ddeESS [S+])' window is killed in emacs). Do this by creating a comint process that calls sh. Send a shell command in that sh buffer to call Splus. When it completes set up a shell as a placeholder in the '(ddeESS [S+])' buffer. The S-Plus options are correctly set. In particular, the S-Plus Commands window is opened if the Options/General Settings/Startup menu says it should be. There is a startup delay of `ess-S+-startup-delay' seconds during which the screen will not be refreshed. This delay is here to allow slow disks to start the Splus program." (interactive) (save-excursion (setq ess-customize-alist S+-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-program (append ess-customize-alist '((inferior-ess-program . (getenv "COMSPEC"))))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (setq ess-customize-alist ; change inferior-ess-start-args (append ess-customize-alist '((inferior-ess-start-args . "")))) (let ((s-proj (getenv "S_PROJ")) (use-dialog-box (not (or ess-microsoft-p (eq system-type 'cygwin)))) ) (cd (w32-short-file-name (directory-file-name default-directory))) (setenv "S_PROJ" (w32-short-file-name default-directory)) (inferior-ess) (sleep-for 2) ; need to wait, else working too fast! The Splus ; command in '(ddeESS [S+])' should follow the "$" ; prompt. If not, then increase the sleep-for time! (setenv "S_PROJ" s-proj)) (setq ess-customize-alist S+-customize-alist) (ess-setq-vars-local ess-customize-alist) ;;; the next three lines belong in customize-alist, but can't be there ;;; because of the broken ess-setq-vars-default usage in ess-inf.el (setq inferior-ess-ddeclient "ddeclient") (setq inferior-ess-client-name "S-PLUS") (setq inferior-ess-client-command "SCommand") ;;; end of what belongs in customize-alist (setq comint-input-sender 'comint-simple-send) (setq comint-process-echoes nil) (set-buffer-process-coding-system 'raw-text-dos 'raw-text-dos) (goto-char (point-max)) (insert (concat inferior-S+-program-name " " inferior-ess-start-args)) ; Note: there is no final "&". ;; Without the "&", the results of !system.command come to '(ddeESS [S+])' ;; With the "&", the results of !system.command in S get lost. (inferior-ess-send-input) (sleep-for ess-S+-startup-delay) ; Need to wait, else working too fast! ; If the ess-current-process-name doesn't appear in the ; Splus Commands window increase the sleep-for time! ;;; from msdos-minor-mode (setq comint-process-echoes t) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) ;;; end from msdos-minor-mode (setq ess-local-process-name ess-current-process-name) (ess-eval-linewise (concat "#" ess-current-process-name)) (goto-char (point-min)) (insert "This is a placeholder buffer. You can't type anything here. Use `C-x b RET' to return to your file.\n Anything sent to this process from an S-mode buffer goes directly to the associated Splus Commands window.\n The S-Plus Commands window must be visible. You may need to open the S-Plus Commands window manually (by clicking on Splus/Window/Commands Window).\n There is a `ess-S+-startup-delay' second delay when this program starts during which the emacs screen will be partially blank.\n Remember to 'q()' from S-Plus and then C-x C-q exit from the '(ddeESS [S+])' buffer, or take the risk of not being able to shut down your computer and suffering through scandisk.\n Any results of the !system.command typed at the S prompt in the Splus Commands window (are supposed to) appear in this buffer.\n\n") (goto-char (point-max)) ; comint-mode-map makes '(ddeESS [S+])' (use-local-map comint-mode-map) ; a shell buffer after Splus is finished. (setq buffer-read-only t) ; force buffer to be read-only (setq mode-name "ddeESS") ;; (ess-eval-linewise inferior-S+-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) )) (defalias 'S+6-msdos-existing 'S+-msdos-existing) (defun S+-msdos-existing (&optional proc-name) "Call 'S-PLUS [678].x for Windows', the 'GUI Thing' from StatSci. Do so by finding an existing S-Plus in an independent MS-Window (if there is one) and set up a '(ddeESS [S+])' buffer in emacs. If there is no existing S-Plus, then a new one will be opened in the default directory. The default is usually something like 'c:/Program Files/Insightful/splus70/users/yourname' for S-Plus before 8.0.4. Beginning with 8.0.4, S-Plus uses the default directory 'c:/Documents and Settings/yourname/My Documents/S-PLUS Projects/Project1'. Beginning with TIBCO Spotfire S+ Version 8.1.1 for Microsft Windows, the default directory is 'c:/DOCUME~1/yourname/MYDOCU~1/SPOTFI~1/Project1'. If you have a HOME environment variable, it will open it there." (interactive) (let* ((inferior-S+-multipleinstances "") (ess-S+-startup-delay 0)) ;; No delay for existing S-Plus (S+-msdos-initiate proc-name)) (with-current-buffer (car (buffer-list)) ; get the ESS buffer just created (setq buffer-read-only nil) ; permit writing in ESS buffer (goto-char (point-max)) (beginning-of-line) (forward-line -1) (insert "This is S+-msdos-existing. Results of the !system.command typed at the S prompt in the Splus Commands window blink a DOS window and you won't see them.\n\n") (setq buffer-read-only t) ; restore ESS buffer to be read-only )) (defun ess-sqpe-versions-create (ess-SHOME-versions &optional x64) "Generate the `M-x splusxy' functions for starting other versions of Sqpe. `ESS-SHOME-VERSIONS' is normally taken from `ess-sqpe-versions', a variable that contains strings that determine which functions are created. This works by creating a temp buffer where the template function `Sqpe+template' is edited by replacing the string 'Sqpe+template' by the version name. The list of functions actually created appears in the *ESS* buffer. If `X64' is not nil, then modify the function name to show \"-64bit\" in its name. The result `ess-sqpe-versions-created' will store a list of the new Sqpe defuns, if any, that were created. The defuns will normally be placed on the menubar upon ESS initialisation." (let ((beg) (versions) (version) (eval-buf (get-buffer-create "*ess-temp-sqpe-evals*")) (ess-sqpe-versions-created) ) ;; (with-current-buffer eval-buf ;; clear the buffer. (delete-region (point-min) (point-max)) ;; Find which versions of Sqpe we want. (setq x64 (if x64 "-64bit")) (setq versions (ess-uniq-list ess-SHOME-versions)) ;; Iterate over each string in VERSIONS, creating a new defun each time. (while versions (setq version (car versions) versions (cdr versions)) (if (file-executable-p version) (progn (setq beg (point)) (setq version-function-name (concat (file-name-nondirectory version) x64)) (prin1 (symbol-function 'Sqpe+template) eval-buf) (insert "\n\n") (goto-char beg) (while (search-forward "lambda" nil t 1) (replace-match (concat "defun " version-function-name) t t)) (while (search-forward "ess-SHOME" nil t) (replace-match version t t)) (goto-char (point-max)) (setq ess-sqpe-versions-created (cons version-function-name ess-sqpe-versions-created)) (ess-write-to-dribble-buffer (format "(Sqpe): ess-sqpe-versions-create making M-x defun %s for %s \n" version-function-name version)) ))) ;; buffer has now been created with defuns, so eval them! (eval-buffer) (kill-buffer eval-buf)) ess-sqpe-versions-created)) ;; template function used by ess-sqpe-versions-create (defun Sqpe+template (&optional proc-name) "Call 'Sqpe' from 'S-PLUS for Windows ess-SHOME', the 'Real Thing' from StatSci. This function was generated by `ess-sqpe-versions-create'." (interactive) (setq ess-customize-alist Sqpe+-customize-alist) (let* ((use-dialog-box) ;; MS dialog box won't return a directory (shome-old (getenv "SHOME")) (inferior-Sqpe+-SHOME-name "ess-SHOME") (inferior-Sqpe+-program-name (concat "ess-SHOME" "/cmd/sqpe.exe"))) (setenv "SHOME" "ess-SHOME") (ess-write-to-dribble-buffer (format "\n(Sqpe+template): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (setq ess-customize-alist ; change inferior-ess-primary-prompt (append ess-customize-alist '((inferior-ess-primary-prompt . "^")))) (inferior-ess) (setq ess-customize-alist Sqpe+-customize-alist) ; restore i-e-p-p in alist (ess-setq-vars-local ess-customize-alist) ; restore i-e-p-p in buffer (setq inferior-ess-prompt ; define with correct i-e-p-p ;; Do not anchor to bol with `^' ; (copied from ess-inf.el) (concat "\\(" inferior-ess-primary-prompt "\\|" inferior-ess-secondary-prompt "\\)")) (setq comint-prompt-regexp (concat "^" inferior-ess-prompt)) ; define with correct i-e-p-p (setq comint-input-sender 'inferior-ess-input-sender) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) (goto-char (point-max)) (insert "options(interactive=TRUE)") (inferior-ess-send-input) (setq mode-name "iESS(Sqpe)") ;; (ess-eval-linewise inferior-S+-editor-pager-command) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start)) (setenv "SHOME" shome-old))) ; Provide package (provide 'ess-sp6w-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-sp6w-d.el ends here ess-17.11/lisp/ess-stata-lang.el0000444005071500004540000011410413202324174013354 00000000000000;;; ess-stata-lang.el --- Stata customization ;; Copyright (C) 1999--2000, Thomas Lumley, A. J. Rossini, Brendan Halpin. ;; Copyright (C) 1997--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Thomas Lumley , ;; Brendan Halpin ;; Created: 2 Nov 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS (Emacs Speaks Statistics). ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This is based upon Version 0.4 of Stata mode. ;; Stata modes. Emacs modes for using the Stata statistical package ;; Modified from S-mode, comint-mode ;; ;; (c) thomas lumley 1997 ;; ;; version 0.4 20/7/97 ;; ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; (for the GNU GPL see above) ;;; Code: (require 'make-regexp) ; it's now local to the directory. ;;(load-library "make-regexp") ;; this is necessary for ;; ado-set-font-lock-keywords ;; only needed in Emacs >= 22.x and newish Xemacsen: (unless (boundp 'c-emacs-features) (require 'cc-vars));; for syntax-table ;(setq max-lisp-eval-depth 500) (eval-when-compile (setq max-lisp-eval-depth (max 600 max-lisp-eval-depth))) (defconst ess-help-STA-sec-keys-alist '((?d . "Description") (?e . "Examples") (?o . "Options") (?s . "Also see") (?S . "Syntax") (?r . "Remarks") (?t . "Title")) "Help section keys. `key' indicates the keystroke to use to search for the section heading `string' in an Stata help file. `string' is used as part of a regexp-search, and so specials should be quoted. ") (defconst ess-help-STA-sec-regex "^[A-Z a-z]+:?\n-+\\|http:" "Reg(ular) Ex(pression) of section headers in help file.") (defvar STA-syntax-table (let ((tbl (make-syntax-table))) (modify-syntax-entry ?\\ "." tbl) ;nullify escape meaning (modify-syntax-entry ?\$ "." tbl) (modify-syntax-entry ?` "(\'" tbl) (modify-syntax-entry ?\' ")`" tbl) ;;--------- begin cut-and-paste from lisp/progmodes/c-langs.el (modify-syntax-entry ?/ ". 124b" tbl) (modify-syntax-entry ?* ". 23" tbl) (modify-syntax-entry ?\n "> b" tbl) ;; Give CR the same syntax as newline, for selective-display (modify-syntax-entry ?\^m "> b" tbl) ;;--------- end cut-and-paste ------------------ (modify-syntax-entry ?+ "." tbl) (modify-syntax-entry ?- "." tbl) (modify-syntax-entry ?= "." tbl) (modify-syntax-entry ?% "." tbl) (modify-syntax-entry ?< "." tbl) (modify-syntax-entry ?> "." tbl) (modify-syntax-entry ?& "." tbl) (modify-syntax-entry ?| "." tbl) (modify-syntax-entry ?~ "." tbl) tbl) "Syntax table for Stata code.") (defun ado-set-font-lock-keywords () "Create font lock keywords for Stata syntax. This is from the ado-mode of Bill Rising , and uses make-regexp." ;; (make-local-variable 'ado-font-lock-keywords) (interactive) (list ;; special highlighting ;; program definitions (eval-when-compile (make-regexps '(("^\\*!.*") font-lock-keyword-face) )) (eval-when-compile (make-regexps "^" '(( "pr" "pro" "prog" "progr" "progra" "program" ) font-lock-keyword-face) "[ \t]+" '(( "de" "def" "defi" "defin" "define" "di" "dir" "drop" "l" "li" "lis" "list" ) font-lock-type-face nil) "[ \t]+" '(("[_a-z]+[_a-z0-9]*") font-lock-keyword-face nil) )) (eval-when-compile (make-regexps '(("^[ \t]*version") font-lock-reference-face) "[ \t]*" '(("1.0 2.0 2.1 3.0 3.1 4.0 5.0 6 6.0") font-lock-type-face) )) (eval-when-compile (make-regexps "^" '(("end" "pause" ) font-lock-keyword-face) "[ /t]*.*$" )) ;; delimit command (eval-when-compile (make-regexps '(("^[ \t]*#delimit") font-lock-reference-face) "\\s-*" '(("\\(cr\\|;\\)\\s-*$") font-lock-type-face nil) )) ;; set command (with endless options!) (eval-when-compile (make-regexps '(("^[ \t]*set") font-lock-reference-face) "[ \t]+" '(("adosize" "ANSI" "b" "be" "bee" "beep" "checksum" "contents" "d" "di" "dis" "disp" "displ" "displa" "display" "g" "gr" "gra" "grap" "graph" "graphi" "graphic" "graphics" "help" "IBM" "l" "le" "lev" "leve" "level" "linesize" "lo" "log" "mat" "mats" "matsi" "matsiz" "matsize" "maxobs" "maxvar" "mem" "memo" "memor" "memory" "mo" "mor" "more" "obs" "ou" "out" "outp" "outpu" "output" "pagesize" "r" "rm" "rms" "rmsg" "se" "see" "seed" "seed0" "shell" "te" "tex" "text" "texts" "textsi" "textsiz" "textsize" "tr" "tra" "trac" "trace" "t" "ty" "typ" "type" "video" "vir" "virt" "virtu" "virtua" "virtual" ) font-lock-reference-face t) "[ \t]*" '(("[a-zA-Z0-9]*") font-lock-type-face) )) ;; the constraint commands (eval-when-compile (make-regexps "[ \t]+" '(( "cons" "const" "constr" "constra" "constrai" "constrain" "constraint" ) font-lock-reference-face) "[ \t]+" '(( "d" "de" "def" "defi" "defin" "define" "di" "dir" "drop" "l" "li" "lis" "list" ) font-lock-type-face) "\\b" )) ;; the confirm commands - could be a mess! (eval-when-compile (make-regexps "[ \t]+" '(( "conf" "confi" "confir" "confirm" ) font-lock-reference-face) "[ \t]+" '(( "e" "ex" "exi" "exis" "exist" "existe" "existen" "existenc" "existence" "f" "fi" "fil" "file" "n" "nu" "num" "numb" "numbe" "number" "v" "va" "var" "vari" "varia" "variab" "variabl" "variable" ) font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "conf" "confi" "confir" "confirm" ) font-lock-reference-face) "[ \t]+" '(( "integer" ) font-lock-type-face) "[ \t]+" '(( "n" "nu" "num" "numb" "numbe" "number" ) font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "conf" "confi" "confir" "confirm" ) font-lock-reference-face) "[ \t]+" '(( "n" "ne" "new" ) font-lock-type-face) "[ \t]+" '(( "f" "fi" "fil" "file" "v" "va" "var" "vari" "varia" "variab" "variabl" "variable" ) font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "conf" "confi" "confir" "confirm" ) font-lock-reference-face) "[ \t]+" '(( "byte" "double" "float" "int" "long" "numeric" "str" "stri" "strin" "string" ) font-lock-type-face) "[ \t]+" '(( "v" "va" "var" "vari" "varia" "variab" "variabl" "variable" ) font-lock-type-face) "\\b" )) ;;; the str# won't quite look right, but that's the breaks for using ;;; a tool like this... (eval-when-compile (make-regexps "[ \t]+" '(( "conf" "confi" "confir" "confirm" ) font-lock-reference-face) "[ \t]+" '(( "str" ) font-lock-type-face) "[1-9]+[0-9]*[ \t]+" '(( "v" "va" "var" "vari" "varia" "variab" "variabl" "variable" ) font-lock-type-face) "\\b" )) ;; the estimates commands (eval-when-compile (make-regexps "[ \t]+" '(( "est" "esti" "estim" "estima" "estimat" "estimate" "estimates" ) font-lock-reference-face) "[ \t]+" '(( "clear" "di" "dir" "dis" "disp" "displ" "displa" "display" "drop" "h" "ho" "hol" "hold" "li" "lis" "list" "loc" "loca" "local" "mat" "matr" "matri" "matrix" "post" "repost" "sca" "scal" "scala" "scalar" "u" "un" "unh" "unho" "unhol" "unhold" ) font-lock-type-face) "\\b" )) ;; the gph commands (eval-when-compile (make-regexps "[ \t]+" '(( "gph" ) font-lock-reference-face) "[ \t]+" '(( "arc" "box" "clear" "close" "font" "line" "open" "pen" "point" "text" "vline" "vpoint" "vpoly" "vtext" ) font-lock-type-face) "\\b" )) ;; some of the matrix commands (eval-when-compile (make-regexps "[ \t]+" '(("mat" "matr" "matri" "matrix") font-lock-reference-face) "[ \t]+" '(("ac" "acc" "accu" "accum" "cole" "coleq" "coln" "colna" "colnam" "cloname" "colnames" "d" "def" "defi" "defin" "define" "di" "dir" "dispCns" "drop" "drop _all" "glsa" "glsac" "glsacc" "glsaccu" "glsaccum" "l" "li" "lis" "list" "makeCns" "mlou" "mlout" "post" "rowe" "roweq" "rown" "rowna" "rownam" "rowname" "rownames" "sco" "scor" "score" "sub" "subs" "subst" "substi" "substit" "substitu" "substitut" "substitute" "svd" "syme" "symei" "symeig" "symeige" "symeigen" "veca" "vecac" "vecacc" "vecaccu" "vecaccum" ) font-lock-type-face) "\\b" )) ;; the ml commands (eval-when-compile (make-regexps "[ \t]+" '(("ml") font-lock-reference-face) "[ \t]+" '(("b" "be" "beg" "begi" "begin" "check" "count" "de" "dep" "depn" "depna" "depnam" "depname" "depnames" "di" "dis" "disp" "displ" "displa" "display" "f" "fu" "fun" "func" "funct" "functi" "functio" "function" "gr" "gra" "grap" "graph" "init" "max" "maxi" "maxim" "maximi" "maximiz" "maximize" "me" "met" "meth" "metho" "method" "ml" "mlo" "mlou" "mlout" "mo" "mod" "mode" "model" "pl" "plo" "plot" "po" "pos" "post" "q" "qu" "que" "quer" "query" "re" "rep" "repo" "repor" "report" "sa" "sam" "samp" "sampl" "sample" "se" "sea" "sear" "searc" "search" "trace") font-lock-type-face) "\\b" )) ;; the net commands (eval-when-compile (make-regexps "[ \t]+" '(("net") font-lock-reference-face) "[ \t]+" '(( "cd" "d" "de" "des" "desc" "descr" "descri" "describ" "describe" "from" "get" "install" "link" "q" "qu" "que" "quer" "query") font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(("net") font-lock-reference-face) "[ \t]+" '(("set") font-lock-reference-face) "[ \t]+" '(("ado" "other") font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(("ado") font-lock-reference-face) "[ \t]+" '(("d" "de" "des" "desc" "descr" "descri" "describ" "describe" "dir" "uninstall") font-lock-type-face) "\\b" )) ;; the reshape commands (eval-when-compile (make-regexps "[ \t]+" '(("reshape") font-lock-keyword-face) "[ \t]+" '(( "clear" "error" "i" "j" "long" "wide" "xi" "xij") font-lock-type-face) "\\b" )) ;; the return commands (eval-when-compile (make-regexps "[ \t]+" '(("ret" "retu" "retur" "return") font-lock-reference-face) "[ \t]+" '(("add" "clear" "local" "matrix" "scalar") font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(("sret" "sretu" "sretur" "sreturn") font-lock-reference-face) "[ \t]+" '(("clear" "local") font-lock-type-face) "\\b" )) ;; the sts commands (eval-when-compile (make-regexps "[ \t]+" '(("sts") font-lock-reference-face) "[ \t]+" '(( "g" "gen" "gene" "gener" "genera" "generat" "generate" "gr" "gra" "grap" "graph" "l" "li" "lis" "list" "t" "te" "tes" "test" ) font-lock-type-face) "\\b" )) ;; the sw commands (eval-when-compile (make-regexps "[ \t]+" '(("sw") font-lock-reference-face) "[ \t]+" '(( "cloglog" "cnreg" "cox" "ereg" "gamma" "glm" "gompertz" "hetprob" "llogist" "lnormal" "logistic" "logit" "ologit" "oprobit" "poisson" "probit" "qreg" "reg" "regr" "regre" "regres" "regress" "scobit" "tobit" "weibull" ) font-lock-type-face) "\\b" )) ;; the window commands (eval-when-compile (make-regexps "[ \t]+" '(( "win" "wind" "windo" "window" ) font-lock-reference-face) "[ \t]+" '(( "d" "di" "dia" "dial" "dialo" "dialog" "dir" "drop" "fo" "fop" "fope" "fopen" "fs" "fsa" "fsav" "fsave" "l" "list" "push" "stop" "stopb" "stopbo" "stopbox" ) font-lock-type-face) "\\b" )) ;; the window controls (eval-when-compile (make-regexps "[ \t]+" '(( "win" "wind" "windo" "window" ) font-lock-reference-face) "[ \t]+" '(( "c" "co" "con" "cont" "contr" "contro" "control" ) font-lock-reference-face) '(( "button" "check" "clear" "edit" "mcombo" "msimple" "radbegin" "radend" "radio" "scombo" "ssimple" "static" ) font-lock-type-face) "\\b" )) ;; the window manage commands (eval-when-compile (make-regexps "[ \t]+" '(( "win" "wind" "windo" "window" ) font-lock-reference-face) "[ \t]+" '(( "man" "mana" "manag" "manage" ) font-lock-reference-face) "[ \t]+" '(( "forward" "minimize" "prefs load" "prefs save" "prefs default" "print graph" "print log" "restore" "update variable" ) font-lock-type-face) "\\b" )) ;; the window menu commands (eval-when-compile (make-regexps "[ \t]+" '(( "win" "wind" "windo" "window" ) font-lock-reference-face) "[ \t]+" '(( "m" "me" "men" "menu" ) font-lock-reference-face) "[ \t]+" '(( "append popout" "append string" "append separator" "clear" "popout" "set" ) font-lock-type-face) "\\b" )) ;; the xwindow commands (eval-when-compile (make-regexps "[ \t]+" '(( "xwin" "xwind" "xwindo" "xwindow" ) font-lock-reference-face) "[ \t]+" '(( "de" "def" "defi" "defin" "define" "di" "dir" "drop" "l" "li" "lis" "list" ) font-lock-type-face) "\\b" )) ;; all the endless Stata keywords (not in a good order) ;; first those keywords which must start line ;; note that these will look like text if preceded by a comment ;; (but comments shouldn't be before the command, anyway) (eval-when-compile (make-regexps "^[ \t]+" '(( "cap" "capt" "captu" "captur" "capture" "char" "err" "erro" "error" "e" "ex" "exi" "exit" "par" "pars" "parse" "set" ) font-lock-reference-face) "\\b" )) ;; here are some keywords which appear in the middle of lines ;; note that the really short abbreviations could make a mess of things ;; ;; These are split to allow compiling! (eval-when-compile (make-regexps "\\b" '(( "_huber" "_qreg" "_robust" "acprplot" "adjust" "adopath" "alpha" "an" "ano" "anov" "anova" "arch" "areg" "arima" "as" "ass" "asse" "asser" "assert" "avplot" "avplots" "bcskew0" "be" "bee" "beep" "biprobit" "bitest" "bitesti" "blogit" "boxcox" "bprobit" "br" "break" "brier" "bro" "brow" "brows" "browse" "bsqreg" "bstat" "by" "canon" "cat" "cc" "cci" "cchart" "centile" "cf" "ci" "cii" "clogi" "clogit" "clogitp" "cloglog" "close" "cmdtool" "cnr" "cnre" "cnreg" "cnsreg" "codebook" "compare" "copy" "cor" "corc" "corr" "corre" "correl" "correla" "correlat" "correlate" "corrgram" "cou" "coun" "count" "cox" "cprplot" "_crcswxx" "cs" "csi" "ct" "ctset" "cttost" "cumul" "cusum") font-lock-reference-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "d" "de" "des" "desc" "descr" "descri" "describ" "describe" "dfbeta" "dfuller" "di" "dir" "dis" "disp" "disp_res" "disp_s" "displ" "displa" "display" "do" "dotplot" "dprobit" "ds" "dstdize" "dwstat" "eivreg" "eq" "ereg" "fac" "fact" "facto" "factor" "fit" "for" "fpredict" "fracplot" "fracpoly" "fsl" ) font-lock-reference-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "gettoken" "gladder" "glm" "glmpred" "glogit" "gnbreg" "gompertz" "gphdot" "gphpen" "graph" "gprobit" "greigen" "grmeanby" "hadimvo" "hausman" "heckman" "heckprob" "hetprob" "hettest" "hilite" "hist" "hlu" "hotel" "iqreg" "istdize" "iis" "ins" "insp" "inspe" "inspec" "inspect" "integ" "intreg" "ir" "iri" "ivreg" "kap" "kappa" "kapwgt" "kdensity" "ksm" "ksmirnov" "ktau" "kwallis" ) font-lock-reference-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "l" "ladder" "lfit" "lincom" "linktest" "li" "lis" "list" "log" "logistic" "logi" "logit" "loneway" "lookfor" "lo" "loo" "look" "looku" "lookup" "lpredict" "lroc" "lrtest" "ls" "lsens" "lstat" "ltable" "lv" "lvr2plot" "man" "matcproc" "mcc" "mcci" "means" "mlog" "mlogi" "mlogit" "mor" "more" "mvreg" "mx_param" "n" "nbreg" "newey" "news" "nl" "nlinit" "no" "noi" "nois" "noisi" "noisil" "noisily" "note" "notes" "nptrend" "numlist" "olog" "ologi" "ologit" "ologitp" "on" "one" "onew" "onewa" "oneway" "oprob" "oprobi" "oprobit" "oprobitp" "orthog" "orthpoly" "ovtest") font-lock-reference-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(("pac" "pchart" "pchi" "pcorr" "pergram" "pl" "plo" "plot" "pnorm" "poisgof" "poisson" "pperron" "prais" "prob" "probi" "probit" "prtest" "prtesti" "pwcorr" "pwd" "q" "qchi" "qnorm" "qqplot" "qreg" "quadchk" "quantile" "qu" "que" "quer" "query" "qui" "quie" "quiet" "quietl" "quietly" "ranksum" "rchart" "regdw" "regph" "reg" "reg3" "regr" "regre" "regres" "regress" "reshape" "rot" "rota" "rotat" "rotate" "rreg" "run" "runtest" "rvfplot" "rvpplot" ) font-lock-reference-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "sampsi" "sconfirm" "sco" "scobit" "scor" "score" "sdtest" "sdtesti" "search" "serrbar" "sfrancia" "shell" "shelltool" "shewhart" "signrank" "signtest" "sktest" "slog" "spearman" "spikeplt" "sqreg" "st" "st_is" "st_show" "st_ct" "stcox" "stcoxkm" "stcurv" "stdes" "stem" "stereg" "stir" "stmc" "stmh" "stphplot" "stphtest" "strate" "streg" "sts" "stse" "stset" "stsum" "stvary" "stweib" "su" "sum" "summ" "summa" "summar" "summari" "summariz" "summarize" "sureg" "svydes" "svyintrg" "svyivreg" "svylc" "svylogit" "svymean" "svymean" "svymlog" "svyolog" "svyoprob" "svypois" "svyprobt" "svyprop" "svyratio" "svyreg" "svyset" "svytab" "svytest" "svytotal" "swilk" "symmetry" "symmi" "symplot" "syntax" "sysdir" ) font-lock-reference-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "ta" "tab" "tab1" "tab2" "tabdisp" "tabi" "table" "tabu" "tabul" "tabula" "tabulat" "tabulate" "te" "tes" "test" "testnl" "testparm" "tis" "tob" "tobi" "tobit" "token" "tokeni" "tokeniz" "tokenize" "touch" "tsreport" "tsset" "tsunab" "ttest" "ttesti" "ty" "typ" "type" "unab" "using" "vce" "verinst" "vif" "vwls" "weibull" "which" "who" "wntestb" "wntestq" "xchart" "xcorr" "xtclog" "xtdes" "xtgee" "xtgls" "xthaus" "xtintreg" "xtlogit" "xtnbreg" "xtpois" "xtprobit" "xtrchh" "xtreg" "xtsum" "xttab" "xttest0" "xttobit" "xttrans" "zip" "zinb" ) font-lock-reference-face) "\\b" )) ;; conditional statements ;; if might not work right ('cuz it is also a keyword) (eval-when-compile (make-regexps "^[ \t]*\\sw+[ \t]*" '(("if" ) font-lock-reference-face t t) "\\b" )) (eval-when-compile (make-regexps "^[ \t]*" '(("if" "while" ) font-lock-reference-face t t) "[ \t]+.*{" )) ;; else statement (which must just have a {) (eval-when-compile (make-regexps "^[ \t]*" '(("else" ) font-lock-reference-face) "[ \t]*{" )) ;; short version of list --- which can get fooled if used as a var (eval-when-compile (make-regexps '(("^[ \t]*l\\b" ) font-lock-reference-face) )) ;; all the Stata options ;; commonly used options (eval-when-compile (make-regexps "[ \t]+" '(("byte" "int" "long" "str[1-9]+[0-9]?" "float" "double" "width" "maxobs" "maxvar" ) font-lock-type-face) "[ \t]+" )) ;; special local variables (used in parsing) (eval-when-compile (make-regexps "^[ \t]+\\(local\\)+[ \t]+" '(("varlist" "exp" "weight" "if" "in" "using" "options" ) font-lock-type-face nil t t) "\\b" )) ;; things used with display ;; since these are often split across lines, and Stata commands are hard ;; to delimit, this will highlight even if out of context (eval-when-compile (make-regexps "[ \t]+" '(( "_c" "_co" "_con" "_cont" "_conti" "_contin" "_continu" "_continue" "_n" "_ne" "_new" "_newl" "_newli" "_newlin" "_newline" "_quote" "_r" "_re" "_req" "_requ" "_reque" "_reques" "_request" ) font-lock-type-face) "\\b" )) (eval-when-compile (make-regexps "[ \t]+" '(( "_col" "_colu" "_colum" "_column" "_d" "_du" "_dup" "_s" "_sk" "_ski" "_skip" ) font-lock-type-face) "([1-9]+[0-9]*)\\b" )) (eval-when-compile (make-regexps "\\bin[ \t]+" '(( "b" "bl" "blu" "blue" "g" "gr" "gre" "gree" "green" "r" "re" "red" "w" "wh" "whi" "whit" "white" "y" "ye" "yel" "yell" "yello" "yellow" ) font-lock-type-face) "\\b" )) ;; labels (eval-when-compile (make-regexps "[ \t]+" '(("lab" "labe" "label" ) font-lock-reference-face t) "[ \t]+" '(( "da" "dat" "data" "de" "def" "defi" "defin" "define" "di" "dir" "drop" "l" "li" "lis" "list" "save" "val" "valu" "value" "values" "var" "vari" "varia" "variab" "variabl" "variable" ) font-lock-type-face nil t t) "[ \t]" )) ;; all Stata data-altering stuff (eval-when-compile (make-regexps "\\b" '(( "_pctile" "_predict" "aorder" "append" "bcskew0" "bsample" "bs" "bstrap" "cd" "chdir" "clear" "compress" "contract" "convert" "cross" "dec" "deco" "decod" "decode" "discard" "drop" "dydx" "ed" "edi" "edit" "egen" "en" "enc" "enco" "encod" "encode" "erase" "expand" "fillin" "form" "forma" "format" "fracgen" "fracpred" "g" "ge" "gen" "gene" "gener" "genera" "generat" "generate" "gsort" "impute" "infile" "infix" "input" "insheet" "integ" "ipolate" "joinby" "keep" "lnskew0" ) font-lock-keyword-face) "\\b" )) (eval-when-compile (make-regexps "\\b" '(( "mark" "markout" "marksample" "matname" "mer" "merg" "merge" "mkdir" "mkmat" "mkspline" "mleval" "mlmatsum" "mlsum""mlvecsum" "modify" "mov" "move" "mvdecode" "mvencode" "nlpred" "nobreak" "order" "ou" "out" "outf" "outfi" "outfil" "outfile" "outs" "outsh" "outshe" "outshee" "outsheet" "pctile" "post" "postclose" "postfile" "pre" "pred" "predi" "predic" "predict" "preserve" "range" "recast" "recode" "ren" "rena" "renam" "rename" "renpfix" "replace" "restore" "rm" "sappend" "sa" "sav" "save" "sample" "sdrop" "separate" "simul" "sinfile" "smerge" "smooth" "snapspan" "so" "sor" "sort" "ssave" "ssort" "stack" "stbase" "stfill" "stgen" "stjoin" "stsplit" "sttocc" "sttoct" "suse" "svmat" "tsfill" "tsrevar" "u" "us" "use" "xi" "xi:" "xtile" "xpose" "xtdata" "xtpred" ) font-lock-keyword-face) "\\b" )) ;; assignment of macros (eval-when-compile (make-regexps "^[ \t]*" '(("global" "local" "scalar" ) font-lock-reference-face) '(("\\([ \t]+[a-zA-Z_]+[a-zA-Z_0-9]*\\b\\)?" ) font-lock-variable-name-face t) )) ;; choosing temp names (eval-when-compile (make-regexps "^[ \t]*" '(("tempname" "tempfile" "tempvar" ) font-lock-reference-face) '(("\\([ \t]+[a-zA-Z_]+[a-zA-Z_0-9`']*\\)+" ) font-lock-type-face t) )) ;; all variable/macro stuff (put late so it will override) ;; internal constants (eval-when-compile (make-regexps "[^a-zA-Z]" '(("_merge" "_n" "_pi" "_rc" "_N" ) font-lock-variable-name-face) "[^a-zA-Z]" )) ;; some generated vars (eval-when-compile (make-regexps '(("_result([1-9]+)" ) font-lock-variable-name-face) )) ;; global macros (eval-when-compile (make-regexps '(("\\$[a-zA-Z_*]+[a-zA-Z_0-9]*" ) font-lock-variable-name-face t) )) ;; local macros (eval-when-compile (make-regexps "`+" '(("[a-zA-Z_`*]+[a-zA-Z_0-9]*" ;has glitch interior ` is highlighted ) font-lock-variable-name-face t) "'+" )) ;; other macro commands (eval-when-compile (make-regexps "[ \t]*" '(( "ma" "mac" "macr" "macro" ) font-lock-reference-face) "[ \t]+" '(( "de" "def" "define" "di" "dir" "drop" "l" "li" "lis" "list" "s" "sh" "shi" "shif" "shift" ) font-lock-type-face) "[ \t]+" )) ;; stata 'functions' i.e. things which require () after them (eval-when-compile (make-regexps "\\b" '(("_caller" "abs" "acos" "asin" "atan" "autocode" "Binomial" "binorm" "chiprob" "comb" "cond" "cos" "d" "date" "digamma" "day" "dofh" "dofm" "dofq" "dofw" "dofy" "dow" "doy" "e" "exp" "float" "fprob" "gammap" "get" "group" "h" "halfyear" "halfyearly" "hofd" "ibeta" "index" "int" "invbinomial" "invchi" "invfprob" "invgammap" "invnchi" "invnorm" "invt" "length" "ln" "lnfact" "lngamma" "log" "log10" "lower" "ltrim" "m" "matrix" "max" "mdy" "min" "missing" "mod" "mofd" "month" "monthly" "nchi" "normd" "normprob" "npnchi" "q" "qofd" "quarter" "quarterly" "r" "real" "recode" "reldif" "replay" "return" "round" "rtrim" "s" "scalar" "sign" "sin" "sqrt" "string" "substr" "sum" "tan" "tprob" "trigamma" "trim" "uniform" "uniform0" "upper" "w" "week" "weekly" "wofd" "y" "year" "yearly" "yh" "ym" "yofd" "yq" "yw" ) font-lock-reference-face t) "(" )) ;; stata 'functions' i.e. things which require [] after them (eval-when-compile (make-regexps "\\b" '(("_b" "_coef" "_se") font-lock-reference-face t) "\\[" )) ;; common Stata options which require a () after them (eval-when-compile (make-regexps "[, \t]+" '(("bands" "by" "connect" "density" "gap" "iterate" "ltolerance" "margin" "psize" "saving" "tlabel" "tolerance" "xlabel" "xscale" "ylabel" "yscale") font-lock-type-face t) "(" )) ;; egen 'function' options (eval-when-compile (make-regexps "[ \t]*egen[ \t]+.*=[ \t]*" '(("count" "diff" "fill" "group" "iqr" "ma" "max" "mean" "median" "min" "mtr" "pctile" "rank" "rfirst" "rlast" "rmax" "rmean" "rmin" "rmiss" "robs" "rsd" "rsum" "sd" "std" "sum") font-lock-reference-face t) "(.*)" )) ;; All Custom ado files which are 'reliable' and which are not file killers ;; this might be a useless endeavor --- but I cannot generate tag files ;; all the s-extensions are listed under Stata's name (since they alter ;; data and will be moved to the utils directory (eval-when-compile (make-regexps "[ \t]*" '(("addnote" "anypath" "autolab" "checkvar" "ck1icd9" "ckicd9" "datetoe" "dattomdy" "den2dem" "dishis" "dtapath" "dupclean" "echo" "exdupbil" "ezip2hsa" "getdate" "getlbl" "getnames" "getobs" "gplur" "icd9" "issorted" "isfile" "jultoe" "jultof" "jultomdy" "knowndup" "labeldir" "linker" "markit" "makewide" "missize" "mpcounts" "nodups" "notefile" "prov2zip" "qcolsum" "qorder" "random" "readraw" "readzip" "repart" "setup" "stdrate" "timeslot" "wdatetoe" "wdatomdy" "zip2ezip" "_addext" "_brclean" "_brckado" "_brdlog" "_ckbad" "_ckdunno" "_ckdupl" "_ckmiss" "_ckok" "_ckwarn" "_delimit" "_filenm" "_lookup" "_mk_ck" ) font-lock-function-name-face) "\\b" )) )) (defvar ess-STA-mode-font-lock-defaults (ado-set-font-lock-keywords) "Set the Stata mode font-lock keywords to Bill Rising's ado-mode keywords.") (defvar STA-editing-alist '((paragraph-start . (concat "[ \t\f]*$\\|" page-delimiter)) (paragraph-separate . (concat "[ \t\f]*$\\|" page-delimiter)) (paragraph-ignore-fill-prefix . t) (require-final-newline . mode-require-final-newline) (comment-column . 40) ;;(comment-indent-function . 'S-comment-indent) ;;(ess-comment-indent . 'S-comment-indent) ;;(ess-indent-line . 'S-indent-line) ;;(ess-calculate-indent . 'ess-calculate-indent) (indent-line-function . 'ess-indent-line) (parse-sexp-ignore-comments . t) (ess-style . ess-default-style) (ess-local-process-name . nil) ;;(ess-keep-dump-files . 'ask) (ess-mode-syntax-table . STA-syntax-table) (font-lock-defaults . '(ess-STA-mode-font-lock-defaults nil nil ((?\. . "w"))))) "General options for editing Stata do and ado source files.") ;; YOU USED TO HAVE TO (with Thomas's version): ;;;;; Add the following to your .emacs file ;; ;;(autoload 'stata "~/ess-sta-l.el" "inferior stata mode" t ) ;;(autoload 'stata-help "stata" "stata help mode" t) ;;(autoload 'stata-mode "~/ess-sta-l.el" "stata mode" t) ;; ;;(if (assoc "\\.do$" auto-mode-alist) nil ;; (setq auto-mode-alist ;; (append ;; '(("\\.do$" . stata-mode) ;; ("\\.ado$" . stata-mode)) ;; auto-mode-alist))) ;; ;; QUESTIONS TO ASK THOMAS: ;; 1 - are 'help' and 'lookup' the same? ;; 2 - what is the point of the review buffer? ;; 3 - how to quit? ;; ;; NOTE: all of Thomas's functions have been left here, to be removed ;; or merged into real locations as we work on this. ;; ;;;;;;;;; Things to change (defvar stata-switches "-q" "*Switches to apply to stata invocation.") (defvar stata-profile "~/.stataprofile" "File to read on startup (nil for no file).") (define-obsolete-function-alias 'stata-help 'ess-display-help-on-object "ESS[15.09]") (define-obsolete-function-alias 'stata-lookup 'ess-display-help-apropos "ESS[16.03]") ;; fixme? Hook this on C-c C-s /ess-execute-search does an R search() right now/ (defun stata-variables () "Stata variable list in other buffer." (interactive) (let* ((stata-process (get-process "stata")) (stata-buffer (if stata-process (process-buffer stata-process) (error "Stata is not running."))) oldpf oldpb oldpm) (set-buffer stata-buffer) (setq oldpf (process-filter stata-process)) (setq oldpb (process-buffer stata-process)) (setq oldpm (marker-position (process-mark stata-process))) (save-excursion (if stata-process nil (error "Stata is not running.")) (beginning-of-line) (if (looking-at ". ") nil (error "Stata not ready.")) (save-excursion (set-process-buffer stata-process (get-buffer-create "*stata variables*")) (set-process-filter stata-process 'inferior-ess-ordinary-filter) (set-buffer "*stata variables*") (setq buffer-read-only nil) (erase-buffer) (process-send-string stata-process "desc \n ") (stata-prompt-wait stata-process) (setq buffer-read-only t) (set-buffer stata-buffer) (set-process-buffer stata-process oldpb) (set-marker (process-mark stata-process) oldpm) (set-process-filter stata-process oldpf))) (display-buffer "*stata variables*") (goto-char (point-max)))) ;;;; ;;; This doesn't do anything at the moment. I have vague plans of ;;; implementing a menu interface using emacs ;;; (defun stata-watch-for-menu-filter (proc string) (if (string-match "^!!!window!!!" string) (stata-handle-menu-code proc string) (comint-output-filter proc string))) (defun stata-handle-menu-code (proc string) (let ((old-buffer (current-buffer))) (unwind-protect (let (moving) (set-buffer (process-buffer proc)) (setq moving (= (point) (process-mark proc))) (save-excursion ;; Insert the text, moving the process-marker. (goto-char (process-mark proc)) (insert "Handling menu code\n") (set-marker (process-mark proc) (point))) (if moving (goto-char (process-mark proc)))) (set-buffer old-buffer)))) ;;;; (defun stata-prompt-wait (proc &optional start-of-output) "Wait for a prompt to appear at BOL of current buffer. PROC is the stata process. Does not change point." (if start-of-output nil (setq start-of-output (point-min))) (save-excursion (while (progn ;; get output if there is some ready (accept-process-output proc 0 50) (goto-char (marker-position (process-mark proc))) (beginning-of-line) (if (< (point) start-of-output) (goto-char start-of-output)) (not (looking-at "^. ")))))) (defun stata-help-mode () "Major mode for displaying Stata help in a read-only buffer. Active commands are Help (\\[stata-help]) and hyperlink (\\[stata-rehelp] or mouse-2)." (interactive) (setq major-mode 'stata-help-mode) (setq mode-name "Stata help") ;;(use-local-map stata-help-mode-map) (setq buffer-read-only t)) ;;; Suggested function from Brendan Halpin: (defvar ess-STA-delimit-do-file "delimit-do.do") (defun ess-STA-delimit-do () (save-excursion (let ((commands (buffer-substring-no-properties (region-beginning) (region-end)))) (set-buffer (get-buffer-create ess-STA-delimit-do-file)) (delete-region (point-min) (point-max)) (insert "#delimit ;\n" commands "\n#delimit cr\n") (write-file ess-STA-delimit-do-file nil) (comint-send-string "Stata" (format "do %s \n" ess-STA-delimit-do-file))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (provide 'ess-stata-lang) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-stata-lang.el ends here ess-17.11/lisp/ess-stata-mode.el0000444005071500004540000001542613202324174013366 00000000000000;;; ess-stata-mode.el --- Stata customization ;; Copyright (C) 1997--1999 A. J. Rossini, Thomas Lumley ;; Copyright (C) 1997--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 9 Sep 1998 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the Stata customizations for ess-mode. It is somewhat ;; based on Stata-mode by Thomas Lumley . ;;; Code: (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (require 'ess-mode) (require 'ess-stata-lang) (defvar STA-dialect-name "stata" "Name of 'dialect' for Stata.");easily changeable in a user's .emacs (defvar STA-customize-alist '((ess-local-customize-alist . 'STA-customize-alist) (ess-language . "STA") (ess-dialect . STA-dialect-name) (ess-suffix . "ado") (ess-mode-editing-alist . STA-editing-alist) (ess-mode-syntax-table . STA-syntax-table) (ess-mode-edit . 'STA-mode) (ess-help-sec-regex . ess-help-STA-sec-regex) (ess-help-sec-keys-alist . ess-help-STA-sec-keys-alist) (ess-loop-timeout . 500000 ) (ess-object-name-db-file . "ess-sta-namedb.el" ) (ess-help-web-search-command . "http://www.stata.com/search/?q=%s&restrict=&btnG=Search&client=stata&num=&output=xml_no_dtd&site=stata&ie=&oe=UTF-8&sort=&proxystylesheet=stata") (ess-eval-linewise-function . #'stata-eval-linewise) (inferior-ess-font-lock-defaults . ess-STA-mode-font-lock-defaults) (inferior-ess-program . inferior-STA-program-name) (inferior-ess-objects-command . "describe\n") (inferior-ess-help-command . "help %s\n") ;; assumes set more off (inferior-ess-exit-command . "exit\n") ;; --more-- is necessary here (hangs otherwise if startup stata.msg is big) (inferior-ess-primary-prompt . "[.:] \\|--more--") (inferior-ess-secondary-prompt . "--more--") (comint-use-prompt-regexp . t) (inferior-ess-start-file . inferior-STA-start-file) ;"~/.ess-stata") (inferior-ess-start-args . inferior-STA-start-args) (ess-get-help-topics-function . 'ess-get-STA-help-topics) (inferior-ess-search-list-command . "set more off\n search()\n") (comment-start . "/\* ") (comment-end . " \*/") (comment-start-skip . "/\\*+ *") (comment-use-syntax . t) ;; needed for multiline (ess-execute-screen-options-command . "set linesize %s\n") ) "Variables to customize for Stata.") (defun STA-mode (&optional proc-name) "Major mode for editing Stata source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist STA-customize-alist) (ess-mode STA-customize-alist proc-name)) (fset 'stata-mode 'STA-mode) (fset 'Stata-mode 'STA-mode) (defun ess-sta-remove-comments (string) "Remove one-line comments before sending the STRING to process. This function is placed in `ess-presend-filter-functions'. " (replace-regexp-in-string "/\\*.*\\*/\\|^//.*$" "" string)) ;; (ess-sta-remove-comments "aaa /* sdfdsf */ bbb ;; sdfsd ;; ccc ;; // sdfsf ;; sdf /* sdfdsf */ ;; sdfsf ;; " ) (defvar ess-stata-post-run-hook nil "Functions run in process buffer after the initialization of stata process.") (defun stata (&optional start-args) "Call Stata." (interactive "P") (setq ess-customize-alist STA-customize-alist) (ess-write-to-dribble-buffer (format "(STA): ess-dialect=%s , buf=%s \n" ess-dialect (current-buffer))) (let ((sta-start-args (concat inferior-STA-start-args (when start-args (read-string "Starting Args [possibly -k####] ? "))))) (inferior-ess sta-start-args) (let ((proc (get-process ess-local-process-name))) (while (process-get proc 'sec-prompt) ;; get read of all --more-- if stata.msg is too long. (ess-send-string proc "q") (ess-wait-for-process proc t)) (ess-send-string proc "set more off") (goto-char (point-max)) (with-current-buffer (process-buffer proc) (add-hook 'ess-presend-filter-functions 'ess-sta-remove-comments nil 'local) (run-mode-hooks 'ess-stata-post-run-hook))))) (defun STA-transcript-mode () "Stata transcript mode." (interactive) (ess-transcript-mode STA-customize-alist)) (defun ess--STA-retrive-topics-from-search () (with-current-buffer (ess-command inferior-ess-search-list-command) (goto-char (point-min)) (let (topics) (while (re-search-forward "(help \\(.+?\\)\\( if installed\\| for replacement.*\\)?)$" nil t) (setq topics (nconc (split-string (match-string-no-properties 1) ",\\|; +") topics))) (nreverse (delete-dups topics)) ))) (defun ess-get-STA-help-topics (&optional name) "Return a list of current STA help topics associated with process NAME." (or (ess-process-get 'help-topics) (progn (ess-process-put 'help-topics (ess--STA-retrive-topics-from-search)) (ess-process-get 'help-topics)))) (defun stata-eval-linewise (text &optional invisibly &rest args) ;; The following is required to make sure things work! (let ((ess-eval-linewise-function nil) ;; RAS: mindless replacement of semi-colons (text (if ess-sta-delimiter-friendly (ess-replace-in-string text ";" "\n") text))) (apply #'ess-eval-linewise text t args))) ; Provide package (provide 'ess-stata-mode) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-stata-mode.el ends here ess-17.11/lisp/ess-swv.el0000444005071500004540000003775613202324175012162 00000000000000;;; ess-swv.el --- Some simple functions for ESS and Sweave ;; Copyright (C) 2005 David Whiting, A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2006-2008 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: David Whiting ;; Created: 15 April 2005 ;; Maintainer: ESS-core ;; Keywords: statistics, tools ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; ;; Some simple functions for ESS and Sweave ;; david.whiting at ncl.ac.uk ;; Wed Sep 1 14:55:52 CEST 2004 ;; I have written some very simple elisp functions that I have found ;; useful and thought others might like to see. I dabble with elisp ;; occasionally at best so there are probably better ways to do what I ;; have done, but so far this seems to work for me. There are several ;; things that are hard-coded, I use Linux and I think that this would ;; probably not work in Windows (not as it is now anyway). ;; With these functions and key bindings all I need to do is open a .Rnw ;; file and, assuming R is running, I press: ;; M-n s to Sweave the file, then ;; M-n l to run latex on the results of Sweave, then ;; M-n p to make and display a postscript file , or ;; M-n P to make and display a PDF version. ;; David Whiting to Anthony Rossini, Mar 30 ;; On Wed, Mar 30, 2005 at 11:51:26AM +0200, A.J. Rossini wrote: ;; > I'm going to go ahead and add this stuff to the distribution tonight ;; > if you don't mind. I'd forgotten about it! ;; It would make me very happy indeed. ;; > (however, need permission to do so). ;; Permission granted! ;; Dave ;; -- ;; David Whiting ;; School of Clinical Medical Sciences, The Medical School ;; University of Newcastle upon Tyne, NE2 4HH, UK. ;;; TODO: ;;; ;;; 1. I want to be able to send ess-swv-latex a parameter to tell it ;;; the number of times to run LaTeX (to get references updated ;;; correctly). ;;; ;;; 2. Also need to add ess-swv-Bibtex. ;;; ;;; 3. Might be good to have a way to chain commands. ;;; ;;; 4. ADD to the ../doc/ess.texi !! ;;; Code: ;;; Autoloads and Requires (eval-when-compile (require 'ess-custom) (require 'ess)) (require 'ess-utils) (require 'ess-noweb-mode) (require 'ess-r-mode); for Rnw-mode (require 'easymenu) ;; currently use exactly for "Sweave", "Stangle", "knit", and "purl" (defun ess-swv-run-in-R (cmd &optional choose-process block) "Run \\[cmd] on the current .Rnw file. Utility function not called by user." (let* ((rnw-buf (current-buffer))) (if choose-process ;; previous behavior (ess-force-buffer-current "R process to load into: ") ;; else (update-ess-process-name-list) (cond ((= 0 (length ess-process-name-list)) (message "no ESS processes running; starting R") (sit-for 1); so the user notices before the next msgs/prompt (R) (set-buffer rnw-buf) ) ((not (string= "R" (ess-make-buffer-current))); e.g. Splus, need R (ess-force-buffer-current "R process to load into: ")) )) (save-excursion ;; (ess-execute (format "require(tools)")) ;; Make sure tools is loaded. (basic-save-buffer); do not Sweave/Stangle old version of file ! (let* ((sprocess (ess-get-process ess-current-process-name)) (sbuffer (process-buffer sprocess)) (rnw-file (buffer-file-name)) (Rnw-dir (file-name-directory rnw-file)) (buf-coding (symbol-name buffer-file-coding-system)) ;; could consider other encodings, but utf-8 is "R standard" for non-ASCII: (cmd-args (concat "\"" rnw-file "\"" (if (string-match "^utf-8" buf-coding) ", encoding = \"utf-8\""))) (Sw-cmd (format ess-swv-processing-command cmd cmd-args))) (message "%s()ing %S" cmd rnw-file) ;; need to block when we are running ess-swv-weave-PDF so we ;; know when to start compiling the generated .tex file (if block (progn (ess-eval-linewise (concat Sw-cmd "\n") nil nil nil t) (message "Finished %s()ing %S" cmd rnw-file)) (ess-execute Sw-cmd 'buffer nil nil) (switch-to-buffer rnw-buf) (ess-show-buffer (buffer-name sbuffer) nil)))))) (defcustom ess-swv-processing-command ".ess_weave(%s, %s)" "Command used by `ess-swv-run-in-R'. First %s is literally replaced by the processing command (for example: Sweave) second %s is replaced with a string containing a processed file and possibly additional argument encoding (example: \"path/to/foo.Rnw\", encoding='utf-8') .ess_weave changes the working directory to that of the supplied file. If you want to simply call knitr or Sweave in global environment set this command to \"%s(%s)\"." :group 'ess-R :type 'string) (defcustom ess-swv-processor 'sweave "Processor to use for weaving and tangling. Currently 'sweave or 'knitr" :group 'ess-R :type '(choice (const sweave) (const knitr))) (defun ess-swv-tangle () "Run Stangle/purl on the current .Rnw file. Depending on the `ess-swv-processor' used." (interactive) (ess-swv-run-in-R (cond ((eq ess-swv-processor 'sweave) "Stangle") ((eq ess-swv-processor 'knitr) "purl") (t (error "Not a valid processor %s" ess-swv-processor))))) (defun ess-swv-weave (&optional choose) "Run Sweave/knit on the current .Rnw file. Depending on the `ess-swv-processor' used. If CHOOSE is non-nil, offer a menu of available weavers. " (interactive "P") (let ((processor (if choose (ess-completing-read "Weaver" '("sweave" "knitr") nil t) (symbol-name ess-swv-processor)))) (ess-swv-run-in-R (cond ((string= processor "sweave") "Sweave") ((string= processor "knitr") "knit") (t (error "Not a valid processor %s" processor)))))) (defun ess-swv-sweave () "Run Sweave on the current .Rnw file." (interactive) (ess-swv-run-in-R "Sweave")) (defun ess-swv-stangle () "Run Stangle on the current .Rnw file." (interactive) (ess-swv-run-in-R "Stangle")) (defun ess-swv-knit () "Run knit on the current .Rnw file." (interactive) (ess-swv-run-in-R "knit")) (defun ess-swv-purl () "Run purl on the current .Rnw file." (interactive) (ess-swv-run-in-R "purl")) (defun ess-swv-weave-PDF (&optional choose) "Sweave/knit, compile TeX, and display PDF. Run Sweave or knit depending on `ess-swv-processor' used. If CHOOSE is non-nil, offer a menu of available weavers. " (interactive "P") (let ((processor (if choose (ess-completing-read "Weaver" '("sweave" "knitr") nil t) (symbol-name ess-swv-processor)))) (ess-swv-run-in-R (cond ((string= processor "sweave") "Sweave") ((string= processor "knitr") "knit") (t (error "Not a valid processor %s" processor))) nil t) (ess-swv-PDF nil t))) (defun ess-swv-latex () "Run LaTeX on the product of Sweave()ing the current file." (interactive) (save-excursion (let* ((namestem (file-name-sans-extension (buffer-file-name))) (latex-filename (concat namestem ".tex")) (tex-buf (get-buffer-create " *ESS-tex-output*"))) (message "Running LaTeX on '%s' ..." latex-filename) (switch-to-buffer tex-buf) (call-process "latex" nil tex-buf 1 latex-filename) (switch-to-buffer (buffer-name)) (display-buffer tex-buf) (message "Finished running LaTeX" )))) (defun ess-swv-PS () "Create a postscript file from a dvi file (name based on the current Sweave file buffer name) and display it." (interactive) (let* ((buf (buffer-name)) (namestem (file-name-sans-extension (buffer-file-name))) (dvi-filename (concat namestem ".dvi")) (psviewer (ess-get-ps-viewer))) (shell-command (concat "dvips -o temp.ps " dvi-filename)) (shell-command (concat psviewer " temp.ps & ")) (switch-to-buffer buf) )) (defun ess-swv-PDF (&optional pdflatex-cmd hide-compile-buffer) "From LaTeX file, create a PDF (via 'texi2pdf' or 'pdflatex', ...), by default using the first entry of `ess-swv-pdflatex-commands' and display it." (interactive) (setq pdflatex-cmd (or pdflatex-cmd (and (eq (length ess-swv-pdflatex-commands) 1) (car ess-swv-pdflatex-commands)) (ess-completing-read "pdf latex command" ess-swv-pdflatex-commands ; <- collection to choose from nil 'confirm ; or 'confirm-after-completion nil nil (car ess-swv-pdflatex-commands)))) (let* ((buf (buffer-name)) (namestem (file-name-sans-extension (buffer-file-name))) (latex-filename (concat namestem ".tex")) (tex-buf (get-buffer-create "*ESS-tex-output*")) (pdfviewer (ess-get-pdf-viewer)) (pdf-status) (cmdstr-win (format "start \"%s\" \"%s.pdf\"" pdfviewer namestem)) (pdffile (format "%s.pdf" namestem)) (cmd (if (stringp pdfviewer) (list pdfviewer pdffile) (append pdfviewer (list pdffile))))) ;;(shell-command (concat "pdflatex " latex-filename)) (message "Running '%s' on '%s' ..." pdflatex-cmd latex-filename) (with-current-buffer tex-buf (erase-buffer)) (setq pdf-status (call-process pdflatex-cmd nil tex-buf t (if (string= "texi2" (substring pdflatex-cmd 0 5)) ;; workaround (bug?): texi2pdf or texi2dvi *fail* to work with full path: (file-name-nondirectory latex-filename) latex-filename))) (if (not (= 0 pdf-status)) (progn (message "** OOPS: error in '%s' (%d)!" pdflatex-cmd pdf-status) (display-buffer tex-buf)) ;; else: pdflatex probably ok ;; (set-process-sentinel proc 'shell-command-sentinel) (if (and ess-microsoft-p (w32-shell-dos-semantics)) (shell-command cmdstr-win) (message (mapconcat 'identity cmd " ")) (apply 'start-process (car cmd) nil cmd)) (unless hide-compile-buffer (display-buffer tex-buf)) (message "%s finished with status %d" pdflatex-cmd pdf-status)))) (defun ess-insert-Sexpr () "Insert Sexpr{} into the buffer at point." (interactive) (insert "\\Sexpr{}") (backward-char)) ;;; back-compatible wrappers: (defun ess-makeSweave () "old *DEPRECATED* version of \\[ess-swv-weave]." (interactive) (ding) (message "** warning: ess-makeSweave is deprecated. Do use (ess-swv-weave) instead!") (ess-swv-weave)) (defun ess-makeLatex () "old *DEPRECATED* version of \\[ess-swv-latex]." (interactive) (ding) (message "** warning: ess-makeLatex is deprecated. Do use (ess-swv-latex) instead!") (ess-swv-latex)) (defun ess-makePS () "old *DEPRECATED* version of \\[ess-swv-PS]." (interactive) (ding) (message "** warning: ess-makePS is deprecated. Do use (ess-swv-PS) instead!") (ess-swv-PS)) (defun ess-makePDF () "old *DEPRECATED* version of \\[ess-swv-PDF]." (interactive) (ding) (message "** warning: ess-makePDF is deprecated. Do use (ess-swv-PDF) instead!") (ess-swv-PDF)) ;; AUCTeX integration. This is independent of this library, but it fits ;; here nonetheless since it's an alternative way of Sweave'ing without ;; starting iESS. (defun ess-swv-add-TeX-commands () "Add commands to AUCTeX's \\[TeX-command-list]." (unless (and (featurep 'tex-site) (featurep 'tex)) (error "AUCTeX does not seem to be loaded")) (add-to-list 'TeX-command-list '("Sweave" "R CMD Sweave %t" TeX-run-command nil (latex-mode) :help "Run Sweave") t) (add-to-list 'TeX-command-list '("LaTeXSweave" "%l %(mode) %s" TeX-run-TeX nil (latex-mode) :help "Run LaTeX after Sweave") t) (setq TeX-command-default "Sweave") (mapc (lambda (suffix) (add-to-list 'TeX-file-extensions suffix)) '("nw" "Snw" "Rnw"))) (defun ess-swv-remove-TeX-commands (x) "Helper function: check if car of X is one of the Sweave strings" (let ((swv-cmds '("Sweave" "LaTeXSweave"))) (unless (member (car x) swv-cmds) x))) (defun ess-swv-plug-into-AUCTeX () "Add commands to AUCTeX's \\[TeX-command-list] to sweave the current noweb file and latex the result." (if ess-swv-plug-into-AUCTeX-p (add-hook 'Rnw-mode-hook 'ess-swv-add-TeX-commands) (remove-hook 'Rnw-mode-hook 'ess-swv-add-TeX-commands) (setq TeX-command-list (mapcar 'ess-swv-remove-TeX-commands TeX-command-list) ;; this will remove the items, leaving nils, so remove them. TeX-command-list (delq nil TeX-command-list)))) ;; as ess-swv-plug-into-AUCTeX-p is customizable ... : (if ess-swv-plug-into-AUCTeX-p (eval-after-load "tex" '(ess-swv-plug-into-AUCTeX))) (defun ess-swv-toggle-plug-into-AUCTeX () "Toggle inclusion of commands to sweave noweb files and latex the results in \\[TeX-command-list] on and off. Commands are added via \\[Rnw-mode-hook]." (interactive) (unless (and (featurep 'tex-site) (featurep 'tex)) (error "AUCTeX are not available")) (setq ess-swv-plug-into-AUCTeX-p (not ess-swv-plug-into-AUCTeX-p)) (ess-swv-plug-into-AUCTeX) (TeX-normal-mode t) (if ess-swv-plug-into-AUCTeX-p (message "Sweave and LaTeXSweave are activated in AUCTeX.") (message "Sweave and LaTeXSweave are de-activated in AUCTeX."))) ;;; Now bind some keys. (define-key ess-noweb-minor-mode-map "\M-ns" 'ess-swv-weave) (define-key ess-noweb-minor-mode-map "\M-nT" 'ess-swv-tangle) (define-key ess-noweb-minor-mode-map "\M-nl" 'ess-swv-latex) (define-key ess-noweb-minor-mode-map "\M-np" 'ess-swv-PS) (define-key ess-noweb-minor-mode-map "\M-nP" 'ess-swv-PDF) (define-key ess-noweb-minor-mode-map "\M-nr" 'ess-swv-knit) (define-key ess-noweb-minor-mode-map "\M-nu" 'ess-swv-purl) (define-key ess-noweb-minor-mode-map "\M-nv" 'ess-swv-weave-PDF) (define-key ess-noweb-minor-mode-map "\M-nx" 'ess-insert-Sexpr) ;; AND add these to the noweb menu we have anyway ! : (easy-menu-define ess-swv-menu ess-noweb-minor-mode-menu "Submenu for use in `Rnw-mode'." '("Sweaving, Tangling, ..." ["Sweave" ess-swv-weave t] ["Tangle" ess-swv-tangle t] ["LaTeX" ess-swv-latex t] ["PDF(LaTeX)" ess-swv-PDF t] ["PS (dvips)" ess-swv-PS t] ["Knit" ess-swv-knit t] ["Purl" ess-swv-purl t] ["View PDF" ess-swv-weave-PDF t] ["Insert Sexpr" ess-insert-Sexpr t] ["AUCTeX Interface" ess-swv-toggle-plug-into-AUCTeX :style toggle :selected ess-swv-plug-into-AUCTeX-p] )) (easy-menu-add-item ess-noweb-minor-mode-menu nil ;; <= path ess-swv-menu) ; provides (provide 'ess-swv) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; outline-minor-mode: nil ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-swv.el ends here ess-17.11/lisp/ess-toolbar.el0000444005071500004540000001566313202324175012776 00000000000000;;; ess-toolbar.el --- Support for a toolbar in ESS. ;; Copyright (C) 1997--2009 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Stephen Eglen ;; Created: 2004-05-06 ;; Revised: 2009-03-16 ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This code adds a toolbar to ESS modes for editing R and S code. ;; Support can be added for other modes (e.g. STATA), just ask! ;; ;; This code is experimental, and runs best on Emacs 21 and XEmacs ;; 21. It has been tested only on Linux machines. All feedback ;; appreciated. ;; ;; If your emacs can support images, the ESS toolbar should be loaded. ;; ;; If you see a toolbar, but no icons, check out the value of ;; ess-icon-directory. ;; ;; The toolbar can be customized in several ways. To see options, do: ;; M-x customize-group RET ess-toolbar RET ;; If you change any of the variables, you _may_ need to restart Emacs ;; to see any effect. See also the documentation for ess-toolbar-items ;; if you wish to change its value. ;;; Technical issues. ;; 2009-03-16: toolbar code in Emacs 23 has changed slightly to 22, ;; and presumably once Emacs 22 is no longer supported, this code can ;; be cleaned up a bit (i.e. no need to set load-path.) ;;; Code: (defgroup ess-toolbar nil "ESS: toolbar support." :group 'ess :link '(emacs-commentary-link :tag "Commentary" "ess-toolbar.el") :prefix "ess-") (defcustom ess-use-toolbar (and (fboundp 'display-images-p) (display-images-p)) "Non-nil means ESS should support the toolbar." :type 'boolean) (defcustom ess-toolbar-own-icons nil "Non-nil means that we only put our toolbar entries in ESS. Otherwise we get standard toolbar as well as ESS entries. The standard toolbar items are copied from the default toolbar." :type 'boolean) (defcustom ess-toolbar-global nil "*Non-nil means that the ESS toolbar is available in all emacs buffers. Otherwise, the ESS toolbar is present only in R/S mode buffers. For beginners, this is probably better set to a non-nil value." :type 'boolean) (defcustom ess-toolbar-items '( (R "startr" "Start R process") ;;(S "spluslogo" "Start S process") (S "splus_letter_small" "Start S process") (ess-eval-line-and-step "rline" "Eval line & step") (ess-eval-region "rregion" "Eval region") (ess-eval-function-or-paragraph-and-step "rregion" "Eval function or paragraph and step") (ess-load-file "rbuffer" "Load file") (ess-eval-function "rfunction" "Eval function") (ess-switch-to-ESS "switch_ess" "Switch to ESS buffer")) "Items to be added to the ESS toolbar. Each list element has three items: 1. the name of the function to run 2. the icon to be used (without .xpm extension) 3. the tooltip doc string (XEmacs only; Emacs gets doc string from menu items. General toolbar items are also added to the ESS toolbar iff `ess-toolbar-own-icons' is nil. Setting this variable with setq doesn't take effect once you have loaded ess-site, unless you follow it by a call to `ess-make-toolbar' afterwards. Instead, change its value using Custom, and then on all new ESS buffers you should see the toolbar has changed." :set (lambda (symbol value) (set-default symbol value) (if (fboundp 'ess-make-toolbar) (ess-make-toolbar))) :type '(repeat (list (function :tag "Function to run") (string :tag "Icon") (string :tag "Tooltip")))) (defvar ess-icon-directory (expand-file-name "icons" ess-etc-directory) "*Location for ESS icons. This variable should be set automatically by the ESS install process. Icons should be found in ESS/etc/icons/ directory. If `ess-icon-directory' is invalid, please report a bug.") (unless (file-directory-p ess-icon-directory) (ess-write-to-dribble-buffer "`ess-icon-directory' does not exist; using `ess-etc-directory'.\n") (setq ess-icon-directory ess-etc-directory)) (defvar ess-toolbar nil "Toolbar items to be added to ESS editing buffers.") (defun ess-make-toolbar () "Make the ESS toolbar." ;; Under Emacs, only worth building the toolbar if tool-bar-map is ;; available. e.g. when running Emacs within a terminal, tool-bar-map ;; is not available, so no need to make the tool-bar. (when (boundp 'tool-bar-map) (setq ess-toolbar (if (or ess-toolbar-own-icons (null tool-bar-map)) (make-sparse-keymap) (copy-keymap tool-bar-map))) (let ((tool-bar-map ess-toolbar) (load-path (list ess-icon-directory))) ;; in Emacs 22, icons are found by examining load-path, bound here ;; whereas Emacs 23 seems to want them in image-load-path, set at the ;; bottom of this file. (mapc #'ess-add-icon ess-toolbar-items)))) (defun ess-add-icon (x) "Add an ESS item to the Emacs toolbar." ;; By using tool-bar-add-item-from-menu instead of tool-bar-add-item ;; we get the tooltips "for free" from ess-mode-map. (tool-bar-add-item-from-menu (car x) (cadr x) ess-mode-map)) (defun ess-add-toolbar () "Add the ESS toolbar to a particular mode. The toolbar is added iff `ess-toolbar-global' is nil, else the toolbar is added globally when ess-toolbar.el is loaded." (if (and ess-toolbar (not ess-toolbar-global)) (set (make-local-variable 'tool-bar-map) ess-toolbar))) ;; Make the toolbars. Each toolbar is hopefully made only when this file ;; is loaded; we don't need it to be remade every time. (if ess-use-toolbar (progn (ess-make-toolbar) ;; After making the toolbar, if ESS toolbar is needed globally, ;; add it here. (if ess-toolbar-global (setq tool-bar-map ess-toolbar) (ess-write-to-dribble-buffer "Creating global Emacs toolbar")) ;; Check for toolbar support - needed iff ess-use-toolbar is non-nil. (or ;; Emacs support for images: (and (fboundp 'display-images-p) (display-images-p)) ;; if above tests failed, give a warning. (progn (message "Toolbar support for ESS not available in this emacs.") ;; Not sure if we want to delay startup of ESS. ;;(sit-for 2) )) )) ;; Following needed for Emacs 23, not Emacs 22 (nor XEmacs). (when (boundp 'image-load-path) (add-to-list 'image-load-path ess-icon-directory)) (provide 'ess-toolbar) ;;; ess-toolbar.el ends here ess-17.11/lisp/ess-tracebug.el0000444005071500004540000035464713202324175013140 00000000000000;; ess-tracebug.el --- Tracing and debugging facilities for ESS. ;; ;; Copyright (C) 2011--2017 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; ;; Filename: ess-tracebug.el ;; Author: Vitalie Spinu ;; Maintainer: Vitalie Spinu ;; Copyright (C) 2010-2012, Vitalie Spinu, all rights reserved. ;; Created: Oct 14 14:15:22 2010 ;; URL: http://code.google.com/p/ess-tracebug/ ;; Keywords: tools, languages ;; ;; This file is *NOT* part of GNU Emacs. ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 3, any later version. ;; ;; This program is distributed in the hope that it will be useful, but WITHOUT ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ;; details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;; Features that might be required by this library: ;; ;; ESS - required ;; ido, face-remap, cl - desirable and are part of default emacs ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; Ess-tracebug is a package for interactive debugging of R code from ;; ESS and provides such features as: ;; - visual debugging ;; - browser, recover and conditional breakpoints ;; - watch window and loggers ;; - on the fly debug/undebug of R functions and methods ;; - highlighting of error source references and easy error navigation ;; - interactive traceback. ;; ;; For a complete description please see the documentation at ;; http://code.google.com/p/ess-tracebug/ and a brief tutorial at ;; http://code.google.com/p/ess-tracebug/wiki/GettingStarted ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Code: (require 'tramp) (require 'compile) (require 'overlay) ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl)) (require 'ess-utils) (autoload 'ess-helpobjs-at-point "ess-help" "[autoload]" nil) ;;todo: rename and put into a more neutral place (defvar text-scale-mode-amount) (autoload 'text-scale-mode "face-remap" "[autoload]" nil) (defgroup ess-tracebug nil "Error navigation and debugging for ESS. Currently only R is supported." :link '(emacs-library-link :tag "Source Lisp File" "ess-tracebug.el") :group 'ess) (defvar ess-tracebug-indicator " TB" "String to be displayed in mode-line alongside the process name. Indicates that ess-tracebug-mode is turned on. ") ;; (defvar ess--tracebug-p nil ;; "Non nil if ess-tracebug is turned on for current process. ;; Function `ess-tracebug' toggles on/off this variable.") ;; (make-variable-buffer-local 'ess--tracebug-p) ;; (add-to-list 'minor-mode-alist '(ess--tracebug-p ess-tracebug-indicator)) (defcustom ess-tracebug-prefix nil "*Key to be used as prefix for all ess-tracebug commands. Set this to a key cominbation you don't use often, like: (setq ess-tracebug-prefix \"\\M-t\") The postfix keys are defined in `ess-tracebug-map': \\{ess-tracebug-map} " :type 'string :group 'ess-tracebug) ;; (make-obsolete-variable 'ess-tracebug-prefix "ess-tracebug-prefix will be removed in future versions. ;; Electric debug keys are now on C-c and ess-dev maps." "ESS 13.05") ;; (define-obsolete-variable-alias 'ess-tracebug-command-prefix 'ess-tracebug-prefix) (defcustom ess-inject-source 'function-and-buffer "Control the source injection into evaluated code. If t, always inject source reference. If function, inject only for functions, If function-and-buffer, inject for functions and whole buffer (the default), If nil, never inject. When tracebug is active (the default), ESS instructs the subprocess to keep the source code references. If this variable is t, you won't be able to execute blocks which don't form a valid R expression. That is, if your expression spreads multiple paragraphs, and you call C-c C-c on first paragraph, R will report an error." :group 'ess-tracebug :type '(choice (const nil) (const function) (const function-and-buffer) (const t))) (define-obsolete-variable-alias 'ess-tracebug-inject-source-p 'ess-inject-source "ESS v13.09") (defcustom ess-tracebug-enter-hook nil "List of functions to call on entry to ess-tracebug mode. Use `add-hook' to insert append your functions to this list. " :group 'ess-tracebug :type 'hook) (defcustom ess-tracebug-exit-hook nil "List of functions to call on exit of ess-tracebug mode. Use `add-hook' to insert append your functions to this list. " :group 'ess-tracebug :type 'hook) (autoload 'ess-dev-map "ess-r-mode" "[autoload]" nil) (defvaralias 'ess-tracebug-map 'ess-dev-map) (defvar ess--tracebug-eval-index 0 "This is used by to track source references in evaluation with source. For example, each time ess-eval-function is called the evaluated region is marked. When debugger enteres the code it desplayes this reference number. Ess-debug finds this number in the referenced buffer.") ;; these vars are org variables that store the src block locations (defvar org-edit-src-beg-marker nil) (defvar org-babel-current-src-block-location nil "Marker pointing to the src block currently being executed. This may also point to a call line or an inline code block. If multiple blocks are being executed (e.g., in chained execution through use of the :var header argument) this marker points to the outer-most code block.") ;; hash to store soruce references of the form: tmpname -> (filename . src_start) (defvar ess--srcrefs (make-hash-table :test 'equal :size 100)) (defvar ess-tracebug-original-buffer-marker nil "Marker pointing to the beginning of original source code. If non-nil, tracebug will insert the source references based on this location instead of the current buffer. This is useful for applications, like org-babel, that call ess evaluation functions from temporary buffers.") (defun ess-tracebug-p () (ess-process-get 'tracebug)) (defun ess-make-source-refd-command (beg end visibly process) "Saves a region to a temporary file in order to add source references. BEG and END delimit the region. Returns a string containing an inferior process command for loading the temporary file. This command conforms to VISIBLY." (let* ((filename buffer-file-name) (proc-dir (ess-get-process-variable 'default-directory)) (remote (when (file-remote-p proc-dir) (require 'tramp) ;; should this be done in process buffer? (tramp-dissect-file-name proc-dir))) (orig-marker (or ess-tracebug-original-buffer-marker org-edit-src-beg-marker org-babel-current-src-block-location)) orig-beg) (setq ess--tracebug-eval-index (1+ ess--tracebug-eval-index)) (goto-char beg) (skip-chars-forward " \t\n") (setq beg (point)) (goto-char end) (skip-chars-backward " \t\n") (setq end (point) orig-beg beg) ;; Delete all old temp files (when (and (not (ess-process-get 'busy)) (< 1 (float-time (time-subtract (current-time) (ess-process-get 'last-eval))))) (dolist (f (ess-process-get 'temp-source-files)) (and (file-exists-p f) (delete-file f))) (ess-process-put 'temp-source-files nil)) (when (markerp orig-marker) (setq filename (buffer-file-name (marker-buffer orig-marker))) (setq orig-beg (+ beg (marker-position orig-marker)))) (let ((tmpfile (expand-file-name (make-temp-name (concat (file-name-nondirectory (or filename "unknown")) "!")) (if remote (tramp-get-remote-tmpdir remote) temporary-file-directory)))) (ess-process-put 'temp-source-files (cons tmpfile (ess-process-get 'temp-source-files))) (when remote ;; Get local name (should this be done in process buffer?) (setq tmpfile (with-parsed-tramp-file-name tmpfile nil localname))) (if (not filename) (puthash tmpfile (list nil ess--tracebug-eval-index nil) ess--srcrefs) (puthash tmpfile (list filename ess--tracebug-eval-index orig-beg) ess--srcrefs) (puthash (file-name-nondirectory tmpfile) ; R sometimes strips dirs (list filename ess--tracebug-eval-index orig-beg) ess--srcrefs) (with-silent-modifications (put-text-property beg end 'tb-index ess--tracebug-eval-index))) (let ((string (ess-process-buffer-substring process start end))) (or ;; Sending string to subprocess is considerably faster than tramp file ;; transfer. So, give priority to `ess-eval-command' if available (ess-build-eval-command string visibly t tmpfile) ;; When no `ess-eval-command' available, use `ess-load-command' (progn (write-region beg end tmpfile nil 'silent) (ess-build-load-command tmpfile visibly t))))))) (defun ess-process-buffer-substring (process start end) (ess--run-presend-hooks process (buffer-substring-no-properties start end))) (defun ess-tracebug-send-region (process start end &optional visibly message type) "Send region to process adding source references as specified by `ess-inject-source' variable." (let* ((inject-p (cond ((eq type 'function) ess-inject-source) ((eq type 'buffer) (or (eq ess-inject-source t) (eq ess-inject-source 'function-and-buffer))) (t (or (eq ess-inject-source t) ;; we need to always inject with namespaced ;; evaluation (fixme: not right place for this) (ess-r-get-evaluation-env))))) (ess--dbg-del-empty-p (unless inject-p ess--dbg-del-empty-p)) (string (if inject-p (ess-make-source-refd-command start end visibly process) (ess-process-buffer-substring process start end))) (message (if (fboundp ess-build-eval-message-function) (funcall ess-build-eval-message-function message) message)) ;; Visible evaluation is not nice when sourcing temporary files ;; You get .ess.eval(*code*) instead of *code* (visibly (unless inject-p visibly))) ;; Don't run the presend hooks twice (let ((ess--inhibit-presend-hooks t)) (ess-send-string process string visibly message)))) (defun ess-tracebug-send-function (proc start end &optional visibly message) "Like `ess-tracebug-send-region' but with tweaks for functions." (ess-tracebug-send-region proc start end visibly message 'function)) (defvar ess-tracebug-help nil "ess-dev-map prefix: \\[ess-dev-map] * Breakpoints (`ess-dev-map'): b . Set BP (repeat to cycle BP type) . `ess-bp-set' B . Set conditional BP . `ess-bp-set-conditional' k . Kill BP . `ess-bp-kil' K . Kill all BPs . `ess-bp-kill-all' o . Toggle BP state . `ess-bp-toggle-state' l . Set logger BP . `ess-bp-set-logger' n . Goto next BP . `ess-bp-next' p . Goto previous BP . `ess-bp-previous' (C- prefixed equivalents are also defined) * Debugging (`ess-dev-map'): ` . Show traceback . `ess-show-traceback' (also on C-c `) ~ . Show callstack . `ess-show-call-stack' (also on C-c ~) e . Toggle error action (repeat to cycle). `ess-debug-toggle-error-action' d . Flag for debugging . `ess-debug-flag-for-debugging' u . Unflag for debugging . `ess-debug-unflag-for-debugging' w . Watch window . `ess-watch' (C- prefixed equivalents are also defined) * Interactive Debugging (`ess-debug-minor-mode-map'): M-C . Continue . `ess-debug-command-continue' M-C-C . Continue multi . `ess-debug-command-continue-multi' M-N . Next step . `ess-debug-command-next' M-C-N . Next step multi . `ess-debug-command-next-multi' M-U . Up frame . `ess-debug-command-up' M-Q . Quit debugging . `ess-debug-command-quit' * Navigation to errors (general emacs functionality): C-x `, M-g n . `next-error' M-g p . `previous-error' ") ;; * Input Ring: ;; i . Goto input event marker forwards . `ess-debug-goto-input-event-marker' ;; I . Goto input event marker backwards . `ess-debug-goto-input-event-marker' (defun ess-tracebug-show-help (&optional ev) (interactive) (describe-variable 'ess-tracebug-help)) (defun ess-tracebug--propertize (dummy bitmap face &optional string ) "If window-system propertize DUMMY with fringe BITMAP and FACE, else propertize line-prefix and margin with STRING and FACE" (unless string (setq string dummy)) (if window-system (propertize dummy 'display (list 'left-fringe bitmap face)) (propertize dummy 'display (list '(margin left-margin) (propertize string 'font-lock-face face 'face face))))) (defun ess-tracebug (&optional arg) "Toggle ess-tracebug mode. With ARG, turn ess-tracebug mode on if and only if ARG is positive. This mode adds to ESS the interactive debugging, breakpoint and error navigation functionality. Strictly speaking ess-tracebug is not a minor mode. It integrates globally into ESS and iESS. Note: Currently, ess-tracebug does not detect some of R's debug related messages in non-English locales. To set your R messages to English add the following line to your .Rprofile init file: Sys.setlocale(\"LC_MESSAGES\", \"C\") See `ess-tracebug-help' for the overview of ess-tracebug functionality." ;; Note: The functionality in ess-tracebug is divided on conceptual ;; grounds in tracing and debugging and could be ;; activated/deactivate separately with `ess--tb-start' and ;; `ess-debug-start' respectively. (interactive "P") (ess-force-buffer-current "R process to activate tracebug in: ") (with-current-buffer (process-buffer (get-process ess-local-process-name)) (when (equal ess-dialect "R") (setq arg (if arg (prefix-numeric-value arg) (if (ess-process-get 'tracebug) -1 1))) (if (> arg 0) (unless (ess-process-get 'tracebug) ;; only if already not active (ess--tb-start) (ess-debug-start) ;; (dolist (bf (buffer-list)) ;; (with-current-buffer bf ;; (when (and (eq major-mode 'ess-mode) ;; (equal ess-dialect "R")) ;; (ess-bp-recreate-all)))) ;; watch functionality (if ess-tracebug-prefix (let ((comm (key-binding ess-tracebug-prefix))) ;; (message "ess-tracebug-prefix will be removed in future versions. Electric debug keys are now on [C-c] and [C-c C-t] maps.") ;; (sit-for 1) (when (commandp comm) (define-key ess-tracebug-map ess-tracebug-prefix comm)) (define-key ess-mode-map ess-tracebug-prefix ess-tracebug-map) (define-key inferior-ess-mode-map ess-tracebug-prefix ess-tracebug-map) (define-key ess-watch-mode-map ess-tracebug-prefix ess-tracebug-map))) (run-hooks 'ess-tracebug-enter-hook) (ess-process-put 'tracebug t) (message "ess-tracebug mode enabled")) (when (ess-process-get 'tracebug) ;;only when active (ess-process-put 'tracebug nil) ;; unset the map (when ess-tracebug-prefix (define-key ess-mode-map ess-tracebug-prefix nil) (define-key inferior-ess-mode-map ess-tracebug-prefix nil)) (ess--tb-stop) (ess-debug-stop) (run-hooks 'ess-tracebug-exit-hook) (message "ess-tracebug mode disabled")))))) (defalias 'ess-toggle-tracebug 'ess-tracebug) ;;;_* TRACEBACK ;; (defface ess--tb-last-input-face ;; '((((class grayscale) ;; (background light)) (:background "DimGray")) ;; (((class grayscale) ;; (background dark)) (:background "LightGray")) ;; (((class color) (background light) (min-colors 88)) ;; (:overline "medium blue" )) ;; (((class color) (background dark) (min-colors 88)) ;; (:overline "deep sky blue" )) ;; (((background light)) (:weight bold)) ;; (((background dark)) (:weight bold)) ;; ) ;; "Face to highlight currently debugged line." ;; :group 'ess-tracebug ) (defface ess-tracebug-last-input-fringe-face '((((background light) (min-colors 88)) (:foreground "medium blue" :overline "medium blue")) (((background dark) (min-colors 88)) (:foreground "deep sky blue" :overline "deep sky blue")) (((background light) (min-colors 8)) (:foreground "blue")) (((background dark) (min-colors 8)) (:foreground "syan"))) "Face for fringe bitmap for last-input position." :group 'ess-tracebug) (if (fboundp 'define-fringe-bitmap) (define-fringe-bitmap 'last-input-arrow [#b00011111 #b00010000 #b00010000 #b00010000 #b00010000 #b00010000 #b00010000 #b00010000 #b00010000 #b00010000 #b11010111 #b01111100 #b00111000 #b00010000] nil nil 'top)) (defvar ess--tb-last-input (make-marker) "Marker pointing to the last user input position in iESS buffer. This is the place where `ess--tb-last-input-overlay' is moved. Local in iESS buffers with `ess-tracebug' mode enabled.") (defvar ess--tb-last-input-overlay nil "Overlay to highlight the position of last input in iESS buffer. Local in iESS buffers.") (defvar ess--busy-count 0 "Used to compute the busy indicator") (make-variable-buffer-local 'ess--busy-count) ;; (unless (boundp 'ess--busy-slash) ;; (defvar ess--busy-slash '(32 ?\u2014 92 47)) ;; (setq ess--busy-slash (mapcar (lambda (el) (format " %c " el)) ;; ess--busy-slash)) ;; ) (defvar ess--busy-slash '(" " " - " " \\ " " / ")) (defvar ess--busy-B '(" " " B " " ")) (defvar ess--busy-stars '(" " " " " * " " ** " " *** " " **** ")) (defvar ess--busy-vbars '(" " " " " | " " || " " ||| " " |||| ")) (defcustom ess-busy-strings ess--busy-slash "List of strings to replace in turn for busy indication. The first element of the list is used as an indicator of the process being ready (i.e. not busy). Implemented lists that you can use `ess--busy-slash', `ess--busy-B',`ess--busy-stars', `ess--busy-vbars'" :group 'ess) (defvar ess--busy-timer nil "Timer used for busy process indication") (defcustom inferior-ess-split-long-prompt t "If non-nil, long prompt '> > > > > + + + + > ' is split." :group 'ess-tracebug) (defcustom inferior-ess-replace-long+ t "If non-nil, '+ + + + ' containing more than 4 + is replaced by `ess-long+replacement'" :group 'ess-tracebug) (defvar ess-long+replacement "+ . + " "Replacement used for long + prompt. Customization of this variable is not recommended. You can set it to '. '. If you set it to anything else you will have to change `inferior-S-prompt' to assure the correct prompt navigation in inferior buffers. ") (defmacro ess-copy-key (from-map to-map fun) `(define-key ,to-map (car (where-is-internal ,fun ,from-map)) ,fun)) ;;;_ + traceback functions (defun ess--tb-make-last-input-overlay (beg end) "Create an overlay to indicate the last input position." (let ((ove (make-overlay beg end))) (overlay-put ove 'before-string (ess-tracebug--propertize "!" 'last-input-arrow 'ess-tracebug-last-input-fringe-face)) ;; (overlay-put ove 'face 'ess--tb-last-input-face) (overlay-put ove 'evaporate t) ove)) (defun ess--tb-start () "Start traceback session " (with-current-buffer (process-buffer (get-process ess-local-process-name)) (unless ess-error-regexp-alist (error "Can not activate the traceback for %s dialect" ess-dialect)) (set (make-local-variable 'compilation-error-regexp-alist) ess-error-regexp-alist) (let (compilation-mode-font-lock-keywords) (compilation-setup t)) (setq next-error-function 'ess-tracebug-next-error-function) ;; new locals (make-local-variable 'ess--tb-last-input) (make-local-variable 'ess--tb-last-input-overlay) (make-local-variable 'compilation-search-path) (setq compilation-search-path ess-tracebug-search-path) ;; todo: make this dialect specific (ess-tracebug--set-left-margin) (save-excursion (goto-char comint-last-input-start) (setq ess--tb-last-input (point)) (setq ess--tb-last-input-overlay (ess--tb-make-last-input-overlay (point-at-bol) (point-at-eol)))) ;; busy timer (setq mode-line-buffer-identification (list (car (propertized-buffer-identification "%3b")) `(:eval (nth ess--busy-count ess-busy-strings)))) ;; 'face 'mode-line-buffer-id)))) (make-local-variable 'ess--busy-timer) (setq ess--busy-timer (run-with-timer 2 .5 (ess--make-busy-timer-function (get-buffer-process (current-buffer))))) (add-hook 'kill-buffer-hook (lambda () (when ess--busy-timer (cancel-timer ess--busy-timer)))) (add-hook 'comint-input-filter-functions 'ess-tracebug-set-last-input nil 'local) ;; redefine ;; todo: all this part should go (partially gone now) (unless (fboundp 'orig-ess-parse-errors) (defalias 'orig-ess-parse-errors (symbol-function 'ess-parse-errors)) (defalias 'ess-parse-errors (symbol-function 'next-error))))) (defun ess--tb-stop () "Stop ess traceback session in the current ess process" (with-current-buffer (process-buffer (get-process ess-current-process-name)) ;; restore original definitions (when (equal ess-dialect "R") (when (fboundp 'orig-ess-parse-errors) (defalias 'ess-parse-errors (symbol-function 'orig-ess-parse-errors)) (fmakunbound 'orig-ess-parse-errors))) (if (local-variable-p 'ess--tb-last-input-overlay) (delete-overlay ess--tb-last-input-overlay)) (kill-local-variable 'ess--tb-last-input-overlay) (kill-local-variable 'ess--tb-last-input) (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords)) (font-lock-fontify-buffer) (kill-local-variable 'compilation-error-regexp-alist) (kill-local-variable 'compilation-search-path) (cancel-timer ess--busy-timer) (remove-hook 'comint-input-filter-functions 'ess-tracebug-set-last-input 'local) (setq mode-line-buffer-identification (propertized-buffer-identification "%12b")))) (defvar ess--dbg-forward-ring (make-ring 10) "Ring of markers to the positions of the user inputs when the debugger or traceback events are initiated. It is used in `ess--dbg-goto-input-point'.") (defvar ess--dbg-backward-ring (make-ring 10) "Ring of markers to the positions from which `ess--dbg-goto-input-point' is called. See the also `ess--dbg-goto-debug-point'") ;; (setq ess-R--tb-regexp-alist '(R R2 R3 R-recover)) ;;(pop compilation-error-regexp-alist-alist) (defun ess-show-traceback () "Display R traceback and last error message. Pop up a compilation/grep/occur like buffer. Usual global key bindings are available \(\\[next-error] and \\[previous-error]\) for `next-error' and `previous-error' respectively. You can bind 'no-select' versions of this commands: \(define-key compilation-minor-mode-map [(?n)] 'next-error-no-select\) \(define-key compilation-minor-mode-map [(?p)] 'previous-error-no-select\) " (interactive) (if (null ess-traceback-command) (error "Not implemented for dialect %s" ess-dialect) (ring-insert ess--dbg-forward-ring (point-marker)) (ess-force-buffer-current "R process to use: ") (let ((trbuf (get-buffer-create "*ess-traceback*")) (lproc-name ess-local-process-name) (alist ess-mode-editing-alist) (cmd ess-traceback-command)) (setq next-error-last-buffer trbuf) (with-current-buffer trbuf (setq buffer-read-only nil) (setq ess-local-process-name lproc-name) (ess-command cmd trbuf) (goto-char (point-min)) ;; fixme: this is R specific check (if (re-search-forward "No traceback available" nil t) (message "No traceback available") (ess-dirs) (message nil) (make-local-variable 'compilation-error-regexp-alist) (setq compilation-error-regexp-alist ess-r-error-regexp-alist) (make-local-variable 'compilation-search-path) (setq compilation-search-path ess-tracebug-search-path) (ess-setq-vars-local alist) (font-lock-refresh-defaults) (compilation-minor-mode 1) (setq next-error-function 'ess-tracebug-next-error-function) ;(use-local-map ess-traceback-minor-mode-map) ;; ess keys (local-set-key "\C-c\C-s" 'ess-watch-switch-process) (local-set-key "\C-c\C-y" 'ess-switch-to-ESS) (local-set-key "\C-c\C-z" 'ess-switch-to-end-of-ESS) (setq buffer-read-only t) (pop-to-buffer trbuf)))))) (defvar ess-call-stack-command nil) (defun ess-show-call-stack () "Display current call stack. Also see `ess-show-traceback'" (interactive) (let ((ess-traceback-command ess-call-stack-command)) (ess-show-traceback))) (defalias 'ess-show-R-traceback 'ess-show-traceback) (defun ess--tb-next-error-goto-process-marker () ;; assumes current buffer is the process buffer with compilation enabled ;; used in ess-tracebug-next-error-function ; (with-current-buffer (process-buffer (get-process ess-local-process-name)) ; already in comint buffer .. no need (comint-goto-process-mark) (set-window-point (get-buffer-window) (point)) ;moves the cursor ;; FIXME: Should jump to current-debug-position, but messes the things if in recover ;; (when (ess-debug-is-active) ;; (ess-debug-goto-current-debug-position) ;; ) ) (defun ess-tracebug-next-error-function (n &optional reset) "Advance to the next error message and visits the file. This is the value of `next-error-function' in iESS buffers." ;; Modified version of `compilation-next-error-function'. (interactive "p") (if reset (goto-char (point-max))) (let* ((columns compilation-error-screen-columns) ; buffer's local value ;; (proc (or (get-buffer-process (current-buffer)) ;; (error "Current buffer has no process"))) (pbuff-p (get-buffer-process (current-buffer))) (last 1) (n (or n 1)) timestamp (beg-pos ; from where the search for next error starts (if (and pbuff-p (>= n 0) (comint-after-pmark-p)) ess--tb-last-input (point))) (at-error t) (msg (condition-case err (compilation-next-error n nil beg-pos) (error (when pbuff-p (ess--tb-next-error-goto-process-marker)) (if (< n 0) (message "Before first reference") (message "Beyond last reference"));(error-message-string err)) (setq at-error nil)))) (msg (if (or (not pbuff-p) (eq n 0) (> (point) ess--tb-last-input)) msg (ess--tb-next-error-goto-process-marker) (message "Beyond last-input marker") (setq at-error nil))) (marker (point-marker)) loc end-loc) (when at-error (setq compilation-current-error (point-marker) overlay-arrow-position (if (bolp) compilation-current-error (copy-marker (line-beginning-position))) loc (if (fboundp 'compilation--message->loc) (compilation--message->loc msg) (car msg)) end-loc (if (fboundp 'compilation--message->end-loc) ;; emacs 24 (compilation--message->end-loc msg) (nth 2 msg))) (let* ((file (caar (nth 2 loc))) (col (car loc)) (line (cadr loc)) (mkrs (ess--dbg-create-ref-marker file line col))) (if mkrs ;; is this really needed? Shall we go directly to the location? (compilation-goto-locus marker (car mkrs) (cadr mkrs)) (message "Reference to '%s' not found" file)))))) (defun inferior-ess-move-last-input-overlay () "Move the overlay to the point." (let ((pbol (point-at-bol))) (move-overlay ess--tb-last-input-overlay pbol (max (- (point) 2) (+ pbol 2))))) ;;;_* DEBUGGER (defgroup ess-debug nil "Debugging for ESS" :link '(emacs-library-link :tag "Source Lisp File" "ess-tracebug.el") :group 'ess-tracebug :prefix "ess-debug-") (defcustom ess-debug-error-action-alist '(( "" "NONE" "NULL" ) ( " r" "RECOVER" "utils::recover") ( " t" "TRACEBACK" "base::traceback")) "Alist of 'on-error' actions. Toggled with `ess-debug-toggle-error-action'. Each element must have the form (DISP SYMB ACTION) where DISP is the string to be displayed in the mode line when the action is in place. SYMB is the symbolic name of an action. ACTION is the string giving the actual expression to be assigned to 'error' user option. See R's help ?options for more details. " :type '(alist :key-type string :value-type (string string)) :group 'ess-debug) (defvar ess--dbg-output-buf-prefix " *ess.dbg" "The prefix of the buffer name the R debug output is directed to." ) (defvar ess--dbg-current-ref (make-marker) "Current debug reference in *ess.dbg* buffers (a marker).") (make-variable-buffer-local 'ess--dbg-current-ref) (defvar ess--dbg-last-ref-marker (make-marker) "Last debug reference in *ess.dbg* buffer (a marker).") (make-variable-buffer-local 'ess--dbg-last-ref-marker) (defcustom ess-tracebug-search-path nil "List of directories to search for source files. Elements should be directory names, not file names of directories. " :type '(choice (const :tag "Unset" nil) (repeat :tag "Directory list" (string :tag "Directory"))) :group 'ess-debug) (defalias 'ess--dbg-search-path 'ess-tracebug-search-path) (make-obsolete 'ess--dbg-search-path 'ess-tracebug-search-path "ESS[12.09]") (defvar ess--dbg-buf-p nil "This is t in ess.dbg buffers.") (make-variable-buffer-local 'ess--dbg-buf-p) ;; (defcustom ess--dbg-auto-single-key-p t ;; "If t entering the debug state triggers single-key mode. ;; Set it to nil if you want to trigger single-key mode manually ;; with the `ess-tracebug-prefix' key. ;; ") (defvar ess--dbg-current-debug-position (make-marker) "Marker to the current debugged line. It always point to the beginning of the currently debugged line and is used by overlay-arrow. In no-windowed emacs an `overlay-arrow' is displayed at this position.") (unless window-system (add-to-list 'overlay-arrow-variable-list 'ess--dbg-current-debug-position)) (defface ess-debug-current-debug-line-face '((default (:inherit highlight))) "Face used to highlight currently debugged line." :group 'ess-debug) (defvar ess--dbg-current-debug-overlay (let ((overlay (make-overlay (point) (point)))) (overlay-put overlay 'face 'ess-debug-current-debug-line-face) (overlay-put overlay 'evaporate t) overlay) ;; should be global variable!! "The overlay for currently debugged line.") (defcustom ess-debug-blink-interval .2 "Time in seconds to blink the background of the current debug line on exceptional events. Currently two exceptional events are defined 'ref-not-found' and 'same-ref'. Blinking colors for these events can be customized by corresponding faces." :group 'ess-debug :type 'float) (defface ess-debug-blink-ref-not-found-face '((((class grayscale) (background light)) (:background "DimGray")) (((class grayscale) (background dark)) (:background "LightGray")) (((class color) (background light) (min-colors 88)) (:background "IndianRed4")) (((class color) (background dark) (min-colors 88)) (:background "dark red")) (((background light) (min-colors 8)) (:foreground "red")) (((background dark) (min-colors 8)) (:foreground "red"))) "Face used to blink currently debugged line's background when the reference file is not found. See also `ess-debug-ask-for-file'" :group 'ess-debug ) (defface ess-debug-blink-same-ref-face '((((class grayscale) (background light)) (:background "DimGray")) (((class grayscale) (background dark)) (:background "LightGray")) (((class color) (background light) (min-colors 88)) (:background "steel blue")) (((class color) (background dark) (min-colors 88)) (:background "midnight blue")) (((background light) (min-colors 8)) (:foreground "blue")) (((background dark) (min-colors 8)) (:foreground "cyan"))) "Face used to highlight currently debugged line when new debug reference is the same as the preceding one. It is highlighted for `ess-debug-blink-interval' seconds." :group 'ess-debug ) (defcustom ess-debug-ask-for-file nil "If non nil, ask for file if the current debug reference is not found. If nil, the currently debugged line is highlighted for `ess-debug-blink-interval' seconds." :group 'ess-debug :type 'boolean) (defcustom ess-debug-skip-first-call t "If non-nil, skip first debugger call. In R first call doesn't contain source references and is skipped by default." :group 'ess-debug :type 'boolean) (defvar ess-electric-selection-map (let (ess-electric-selection-map) (define-prefix-command 'ess-electric-selection-map) ;; command-c and command-Q are not always working reliably (define-key ess-electric-selection-map "\M-N" 'ess-debug-command-continue) (define-key ess-electric-selection-map "\M-C" 'ess-debug-command-continue) (define-key ess-electric-selection-map "\M-Q" 'ess-debug-command-quit) (define-key ess-electric-selection-map "0" 'ess-debug-command-digit) (define-key ess-electric-selection-map "1" 'ess-debug-command-digit) (define-key ess-electric-selection-map "2" 'ess-debug-command-digit) (define-key ess-electric-selection-map "3" 'ess-debug-command-digit) (define-key ess-electric-selection-map "4" 'ess-debug-command-digit) (define-key ess-electric-selection-map "5" 'ess-debug-command-digit) (define-key ess-electric-selection-map "6" 'ess-debug-command-digit) (define-key ess-electric-selection-map "7" 'ess-debug-command-digit) (define-key ess-electric-selection-map "8" 'ess-debug-command-digit) (define-key ess-electric-selection-map "9" 'ess-debug-command-digit) (define-key ess-electric-selection-map "?" 'ess-tracebug-show-help) ess-electric-selection-map) "Keymap used to define commands for single key input mode. This commands are triggered by `ess-electric-selection' . \\{ess-electric-selection-map} ") (ess-if-verbose-write "\n<- debug-vars done") ;;;_ + debug functions (defun ess-debug-set-error-action (spec) "Set the on-error action. The ACTION should be one of components of `ess-debug-error-action-alist' (a cons!)." (let ((proc (get-process ess-local-process-name))) (if spec (with-current-buffer (process-buffer proc) (process-put proc 'on-error-action (car spec)) (ess-command (format "options(error= %s )\n" (nth 2 spec)))) (error "Unknown action.")))) (defun ess-debug-toggle-error-action () "Toggle the 'on-error' action. The action list is in `ess-debug-error-action-alist'. " (interactive) (ess-force-buffer-current) (let* ((alist ess-debug-error-action-alist) (ev last-command-event) (com-char (event-basic-type ev)) (cur-action (or (ess-process-get 'on-error-action) "-")) actions act) (setq actions (cdr (member (assoc cur-action ess-debug-error-action-alist) ess-debug-error-action-alist))) (unless actions (setq actions ess-debug-error-action-alist)) (setq act (pop actions)) (ess-debug-set-error-action act) (message "On-error action set to: %s" (propertize (cadr act) 'face 'font-lock-function-name-face)) (while (eq (event-basic-type (setq ev (read-event))) com-char) (unless actions (setq actions ess-debug-error-action-alist)) (setq act (pop actions)) (ess-debug-set-error-action act) (force-mode-line-update) (message "On-error action set to: %s" (propertize (cadr act) 'face 'font-lock-function-name-face))) (push ev unread-command-events))) (defun ess--dbg-activate-overlays () "Initialize active debug line overlays." (move-overlay ess--dbg-current-debug-overlay (point-at-bol) (1+ (point-at-eol)) (current-buffer)) ;; used by overlay-arrow functionality on no-X, should be bol (move-marker ess--dbg-current-debug-position (point-at-bol))) (defun ess--dbg-deactivate-overlays () "Deletes markers and overlays. Overlay arrow remains to indicate the last debug position." (delete-overlay ess--dbg-current-debug-overlay) (set-marker ess--dbg-current-debug-position nil)) ;;;_ + Work Flow (defun ess-debug-goto-input-event-marker () "Jump to the point where the last debugger/traceback etc event occurred. Mainly useful during/after debugging, to jump to the place from where the code was initialy executed. This is an electric-command, which means that after the command is triggered a single key event is enough to navigate through the input-event-S-ring. If the key-event which triggered the command is Shift modified the input-event-S-ring is traversed backwards. The input-event-S-ring is a virtual object which consists of two rings `ess--dbg-forward-ring' and `ess--dbg-backward-ring' which are joint at their tops. See the more info at http://code.google.com/p/ess-tracebug/#Work-Flow " (interactive) (let* ((ev last-command-event) (com-char (event-basic-type ev)) (ring-el 0) input-point) (if (memq 'shift (event-modifiers ev)) (setq input-point (ring-ref ess--dbg-backward-ring 0)) (ring-insert ess--dbg-backward-ring (point-marker)) ;; insert in backward ring ;;todo: check if the marker to this (close by?) position is already in the ring (setq input-point (ring-ref ess--dbg-forward-ring 0))) (when (marker-buffer input-point) ;; todo: give a message here if buff is not found (switch-to-buffer (marker-buffer input-point)) (when (marker-position input-point) (goto-char (marker-position input-point)))) (while (eq (event-basic-type (event-basic-type (setq ev (read-event)))) com-char) (if (memq 'shift (event-modifiers ev)) (setq ring-el (1- ring-el)) (setq ring-el (1+ ring-el))) (if (< ring-el 0) (setq input-point (ring-ref ess--dbg-backward-ring (- ring-el))) ;; get it from backward-ring ;; get it from forward-ring (setq input-point (ring-ref ess--dbg-forward-ring ring-el)) ) (when (marker-buffer input-point) (switch-to-buffer (marker-buffer input-point)) (when (marker-position input-point) (goto-char (marker-position input-point))))) (push ev unread-command-events))) (defun ess-debug-goto-debug-point () "Returns to the debugging position. Jump to markers stored in `ess--dbg-backward-ring'. If debug session is active, first jump to current debug line. This is an electric-command. Shift triggers the opposite traverse of the ring." (interactive) (let* ((debug-point (ring-ref ess--dbg-backward-ring 0)) (ev last-command-event) (com-char (event-basic-type ev)) (ring-el 0)) (if (ess--dbg-is-active-p) (progn (switch-to-buffer (marker-buffer ess--dbg-current-debug-position)) (goto-char (marker-position ess--dbg-current-debug-position )) (back-to-indentation)) (switch-to-buffer (marker-buffer debug-point)) (goto-char (marker-position debug-point))) (while (eq (event-basic-type (setq ev (read-event))) com-char) (if (memq 'shift (event-modifiers ev)) (setq ring-el (1- ring-el)) (setq ring-el (1+ ring-el))) (setq debug-point (ring-ref ess--dbg-backward-ring ring-el)) (when (marker-buffer debug-point) (switch-to-buffer (marker-buffer debug-point)) (when (marker-position debug-point) (goto-char (marker-position debug-point))))) (push ev unread-command-events))) (defun ess-debug-insert-in-forward-ring () (interactive) "Inserts point-marker into the forward-ring." (ring-insert ess--dbg-forward-ring (point-marker)) (message "Point inserted into the forward-ring")) (defvar ess-debug-indicator " DB" "String to be displayed in mode-line alongside the process name. Indicates that ess-debug-mode is turned on. When the debugger is in active state this string is shown in upper case and highlighted.") (defvar-local ess--dbg-mode-line-debug '(:eval (let ((proc (get-process ess-local-process-name))) (if (and proc (process-get proc 'dbg-active)) (let ((str ess-debug-indicator)) (ess-debug-minor-mode 1) ; activate the keymap (put-text-property 1 (length str) 'face '(:foreground "white" :background "red") str) str) (ess-debug-minor-mode -1) "")))) (put 'ess--dbg-mode-line-debug 'risky-local-variable t) (defvar-local ess--dbg-mode-line-error-action '(:eval (or (and (ess-process-live-p) (ess-process-get 'on-error-action)) ""))) (put 'ess--dbg-mode-line-error-action 'risky-local-variable t) (defun ess--dbg-remove-empty-lines (string) "Remove empty lines (which interfere with evals) during debug. This function is placed in `ess-presend-filter-functions'. " ;; the process here is an ugly reliance on dynamic scope (if (and ess--dbg-del-empty-p (process-get process 'dbg-active)) (replace-regexp-in-string "\n\\s *$" "" string) string)) (defun ess-debug-start () "Start the debug session. Add to ESS the interactive debugging functionality, breakpoints, watch and loggers. Integrates into ESS and iESS modes by binding `ess-tracebug-map' to `ess-tracebug-prefix' in `ess-mode-map' and `inferior-ess-mode-map' respectively." (interactive) (let ((dbuff (get-buffer-create (concat ess--dbg-output-buf-prefix "." ess-current-process-name "*"))) ;todo: make dbuff a string! (proc (ess-get-process ess-local-process-name)) (lpn ess-local-process-name)) (process-put proc 'dbg-buffer dbuff); buffer were the look up takes place (process-put proc 'dbg-active nil) ; t if the process is in active debug state. ; Active debug states are usually those, in which prompt start with Browser[d]> (set-process-filter proc 'inferior-ess-tracebug-output-filter) (with-current-buffer (process-buffer proc) (unless (equal ess-dialect "R") (error "Can not activate the debugger for %s dialect" ess-dialect)) (add-to-list 'ess--mode-line-process-indicator 'ess--dbg-mode-line-debug t) (add-to-list 'ess--mode-line-process-indicator 'ess--dbg-mode-line-error-action t) (add-hook 'ess-presend-filter-functions 'ess--dbg-remove-empty-lines nil 'local)) (with-current-buffer dbuff (setq ess-local-process-name lpn) (buffer-disable-undo) ;; (setq buffer-read-only nil) (make-local-variable 'overlay-arrow-position) ;; indicator for next-error functionality in the *ess.dbg*, useful?? (goto-char (point-max)) (setq ess--dbg-buf-p t ;; true if in *ess.dbg* buffer ess--dbg-current-ref (point-marker) ;; used by goto-error functionality ess--dbg-last-ref-marker (point-marker) ;; gives marker to reference of the last debugged line ) ;; (beginning-of-line) ;; (setq buffer-read-only t) ))) (defun ess-debug-stop () "End the debug session. Kill the *ess.dbg.[R_name]* buffer." ;;; process plist is not removed, todo?low priority (interactive) (let ((proc (get-process ess-current-process-name))) ;;local? (with-current-buffer (process-buffer proc) (if (member ess-dialect '("XLS" "SAS" "STA")) (error "Can not deactivate the debugger for %s dialect" ess-dialect)) (delq 'ess--dbg-mode-line-debug ess--mode-line-process-indicator) (delq 'ess--dbg-mode-line-error-action ess--mode-line-process-indicator) (remove-hook 'ess-presend-filter-functions 'ess--dbg-remove-empty-lines 'local)) (set-process-filter proc 'inferior-ess-output-filter) (kill-buffer (process-get proc 'dbg-buffer)) (process-put proc 'dbg-buffer nil) (process-put proc 'dbg-active nil) ;; (when (buffer-live-p ess--dbg-buffer) ;; ;; (with-current-buffer ess--dbg-buffer ;; ;; (set-buffer-modified-p nil) ;; ;; ) ;; (kill-buffer ess--dbg-buffer) ;; ) )) (defun ess--make-busy-timer-function (process) "Display the spiner of prompt if ess-process is busy." `(lambda () (let ((pb ,process)) (when (eq (process-status pb) 'run) ;; only when the process is alive (with-current-buffer (process-buffer pb) (if (not (process-get pb 'busy)) ;; if ready (when (> ess--busy-count 0) (setq ess--busy-count 0) (force-mode-line-update) (redisplay)) (setq ess--busy-count (1+ (mod ess--busy-count (1- (length ess-busy-strings))))) (force-mode-line-update) ;; looks like redisplay is necessary for emacs > 24.4 (redisplay))))))) ;; (ess--make-busy-prompt-function (get-process "R")) (defun ess--dbg-is-active-p () "Return t if the current R process is in active debugging state." (and (ess-process-live-p) (ess-process-get 'dbg-active))) (defun ess--dbg-is-recover-p () "Return t if the current R process is in active debugging state." (and (ess-process-live-p) (ess-process-get 'is-recover))) (defun ess-debug-active-p () (and (ess-process-live-p) (or (ess-process-get 'dbg-active) (ess-process-get 'is-recover)))) (defvar ess--dbg-regexp-reference "debug \\w+ +\\(.+\\)#\\([0-9]+\\):") (defvar ess--dbg-regexp-jump "debug \\w+ ") ;; debug at ,debug bei ,etc (defvar ess--dbg-regexp-skip ;; don't anchor to bol; secondary prompt can occur before (anything else?) ;; "\\(\\(?:Called from: \\)\\|\\(?:debugging in: \\)\\|\\(?:#[0-9]*: +recover()\\)\\)") "\\(\\(?:Called from: \\)\\|\\(?:#[0-9]*: +recover()\\)\\)") (defvar ess--dbg-regexp-no-skip ;; exceptions for first skip (magrittr) "debug_pipe") (defvar ess--dbg-regexp-debug "\\(\\(?:Browse[][0-9]+\\)\\|\\(?:debug: \\)\\)") (defvar ess--dbg-regexp-selection "\\(Selection: \\'\\)") (defvar ess--dbg-regexp-input (concat ess--dbg-regexp-debug "\\|" ess--dbg-regexp-selection)) (defvar ess--suppress-next-output? nil) ;;; MPI (defvar ess-mpi-control-regexp "\\([^]+\\)\\([^]+\\)") (defvar ess-mpi-alist '(("message" . message) ("error" . ess-mpi:error) ("eval" . ess-mpi:eval) ("y-or-n" . ess-mpi:y-or-n))) (defun ess-mpi:error (msg) (message (format "Error in inferior: %s" msg))) (defun ess-mpi:eval (expr &optional callback) "Evaluate EXP as emacs expression. If present, the CALLBACK string is passed through `format' with returned value from EXPR and then sent to the subprocess." (let ((result (eval (read expr)))) (when callback (ess-send-string (ess-get-process) (format callback result))))) (defun ess-mpi:y-or-n (prompt callback) "Ask `y-or-n-p' with PROMPT. The CALLBACK string is passed through `format' with returned value from EXPR and then sent to the subprocess." (let ((result (y-or-n-p prompt))) (when callback (ess-send-string (ess-get-process) (format callback result))))) (defun ess-mpi-handle-messages (buf) "Handle all mpi messages in BUF and delete them." (let ((obuf (current-buffer))) (with-current-buffer buf (goto-char (point-min)) ;; This should be smarter because emacs might cut it in the middle of the ;; message. In practice this almost never happen because we are ;; accumulating output into the cache buffer. (while (re-search-forward ess-mpi-control-regexp nil t) (let* ((mbeg (match-beginning 0)) (mend (match-end 0)) (head (match-string 1)) (payload (split-string (match-string 2) "")) (handler (cdr (assoc head ess-mpi-alist)))) (if handler (condition-case-unless-debug err (with-current-buffer obuf (apply handler payload)) (error (message (format "Error in mpi `%s' handler: %%s" head) (error-message-string err)))) ;; don't throw error here. The buffer must be cleaned first. (message "Now handler defined for MPI message '%s" head)) (goto-char mbeg) (delete-region mbeg mend)))))) (defun ess--flush-process-output-cache (proc) (let ((pbuf (get-buffer-create (process-get proc 'accum-buffer-name)))) (ess-mpi-handle-messages pbuf) (let ((string (with-current-buffer pbuf (prog1 (buffer-string) (erase-buffer))))) (when (> (length string) 0) (process-put proc 'last-flush-time (and (process-get proc 'busy) (float-time))) (comint-output-filter proc string) (ess--show-process-buffer-on-error string proc))))) (defun inferior-ess-tracebug-output-filter (proc string) "Standard output filter for the inferior ESS process when `ess-debug' is active. Call `inferior-ess-output-filter'. Check for activation expressions (defined in `ess--dbg-regexp-debug',...), when found puts iESS in the debugging state. If in debugging state, mirrors the output into *ess.dbg* buffer." (let* ((is-iess (member major-mode (list 'inferior-ess-mode 'ess-watch-mode))) (pbuf (process-buffer proc)) (dbuff (process-get proc 'dbg-buffer)) (wbuff (get-buffer ess-watch-buffer)) (was-in-dbg (process-get proc 'dbg-active)) (was-in-recover (process-get proc 'is-recover)) (input-point (point-marker)) (match-jump (string-match ess--dbg-regexp-jump string)) (match-input (string-match ess--dbg-regexp-input string)) (match-selection (and match-input (match-string 2 string))) ;; Selection: (match-skip (and ess-debug-skip-first-call (string-match ess--dbg-regexp-skip string) (not (string-match ess--dbg-regexp-no-skip string)))) (match-dbg (or match-skip (and match-input (not match-selection)))) ;;check for main prompt!! the process splits the output and match-end == nil might indicate this only ;; (prompt-regexp "^>\\( [>+]\\)*\\( \\)$") ;; default prompt only (prompt-replace-regexp "\\(^> \\|^\\([>+] \\)\\{2,\\}\\)\\(?1: \\)") ;; works only with the default prompt (is-ready (not (inferior-ess-set-status proc string))) (new-time (float-time)) (last-time (process-get proc 'last-flush-time)) (flush-timer (process-get proc 'flush-timer))) ;; current-buffer is still the user's input buffer here (ess--if-verbose-write-process-state proc string) (inferior-ess-run-callback proc string) (process-put proc 'is-recover match-selection) (if (or (process-get proc 'suppress-next-output?) ess--suppress-next-output?) ;; works only for surpressing short output, for time being is enough (for callbacks) (process-put proc 'suppress-next-output? nil) ;; FIXME: this should be in comint filters!! ;; insert \n after the prompt when necessary (setq string (replace-regexp-in-string prompt-replace-regexp " \n" string nil nil 1)) ;; replace long prompts (when inferior-ess-replace-long+ (setq string (replace-regexp-in-string "\\(\\+ \\)\\{4\\}\\(\\+ \\)+" ess-long+replacement string))) ;; COMINT (with-current-buffer (get-buffer-create (process-get proc 'accum-buffer-name)) (goto-char (point-max)) (insert string)) ;; Need this timer here; process might be waiting for user's input! (when (timerp flush-timer) ;; cancel the timer each time we enter the filter (cancel-timer flush-timer) (process-put proc 'flush-timer nil)) ;; insert "\n" after prompt (when (or (null last-time) (> (- new-time last-time) .5)) ;; Very slow in long comint buffers, but it's not a real issue, as it is ;; executed periodically. (with-current-buffer pbuf (save-excursion (let ((pmark (process-mark proc)) (inhibit-modification-hooks t)) (goto-char pmark) (when (looking-back inferior-ess-primary-prompt) (insert-before-markers "\n") (set-marker pmark (point))))))) (unless last-time ;; don't flush first time (setq last-time new-time) (process-put proc 'last-flush-time new-time)) (when (or is-ready (process-get proc 'sec-prompt) ; for the sake of ess-eval-linewise ;; flush periodically (> (- new-time last-time) .6)) (ess--flush-process-output-cache proc)) ;; setup a new flush timer (check for edebug to be able to debug mpi handler) (unless (and (boundp 'edebug-mode) edebug-mode) (process-put proc 'flush-timer (run-at-time .2 nil 'ess--flush-process-output-cache proc))) ) ;; WATCH (when (and is-ready wbuff) ;; refresh only if the process is ready and wbuff exists, (not only in the debugger!!) (ess-watch-refresh-buffer-visibly wbuff)) ;; JUMP to line if debug expression was matched (when match-jump (with-current-buffer dbuff ;; insert string in *ess.dbg* buffer (goto-char (point-max)) (insert (concat "|-" string "-|"))) (ess--dbg-goto-last-ref-and-mark dbuff is-iess)) ;; (with-current-buffer dbuff ;; uncomment to see the value of STRING just before debugger exists ;; (let ((inhibit-read-only t)) ;; (goto-char (point-max)) ;; (insert (concat " ---\n " string "\n ---")) ;; )) ;; SKIP if needed (when (and match-skip (not was-in-recover)) (process-send-string proc "n\n")) ;; EXIT the debugger (when (and was-in-dbg (not (or match-jump match-dbg)) (or is-ready match-selection)) (ess--dbg-deactivate-overlays) (process-put proc 'dbg-active nil) ;; (message "|<-- exited debugging -->|") (when wbuff (ess-watch-refresh-buffer-visibly wbuff))) ;; ACTIVATE the debugger if entered for the first time (when (and (not was-in-dbg) (not match-selection) (or match-jump match-dbg)) (unless is-iess (ring-insert ess--dbg-forward-ring input-point)) (process-put proc 'dbg-active t) (message (ess--debug-keys-message-string)) (unless match-jump ;; no source reference, simply show the inferiro (ess-show-buffer pbuf))) (when match-selection ;(and (not was-in-recover) match-selection) (ess-electric-selection t)))) (defvar ess-debug-minor-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "M-C") 'ess-debug-command-continue) (define-key map [(control meta ?C)] 'ess-debug-command-continue-multi) (define-key map (kbd "M-N") 'ess-debug-command-next) (define-key map [(control meta ?N)] 'ess-debug-command-next-multi) (define-key map (kbd "M-Q") 'ess-debug-command-quit) (define-key map (kbd "M-U") 'ess-debug-command-up) map) "Keymap active when ESS process is in debugging state. \\{ess-debug-minor-mode-map}") (define-minor-mode ess-debug-minor-mode "Minor mode activated when ESS process is in debugging state." :lighter nil :keymap ess-debug-minor-mode-map) (defun ess--dbg-goto-last-ref-and-mark (dbuff &optional other-window) "Open the most recent debug reference, and set all the necessary marks and overlays. It's called from `inferior-ess-tracebug-output-filter'. DBUFF must be the *ess.dbg* buffer associated with the process. If OTHER-WINDOW is non nil, attempt to open the location in a different window." (interactive) (let (t-debug-position ref) (with-current-buffer dbuff (setq ref (ess--dbg-get-next-ref -1 (point-max) ess--dbg-last-ref-marker ess--dbg-regexp-reference)) ; sets point at the end of found ref (when ref (move-marker ess--dbg-last-ref-marker (point-at-eol)) ;; each new step repositions the current-ref! (move-marker ess--dbg-current-ref ess--dbg-last-ref-marker))) (when ref (let ((buf (apply 'ess--dbg-goto-ref other-window ref))) (if buf ;; if referenced buffer has been found, put overlays: (with-current-buffer buf (setq t-debug-position (copy-marker (point-at-bol))) (if (equal t-debug-position ess--dbg-current-debug-position) (progn ;; highlights the overlay for ess--dbg-blink-interval seconds (overlay-put ess--dbg-current-debug-overlay 'face 'ess--dbg-blink-same-ref-face) (run-with-timer ess-debug-blink-interval nil (lambda () (overlay-put ess--dbg-current-debug-overlay 'face 'ess-debug-current-debug-line-face)))) ;; else (ess--dbg-activate-overlays))) ;;else, buffer is not found: highlight and give the corresponding message (overlay-put ess--dbg-current-debug-overlay 'face 'ess--dbg-blink-ref-not-found-face) (run-with-timer ess-debug-blink-interval nil (lambda () (overlay-put ess--dbg-current-debug-overlay 'face 'ess-debug-current-debug-line-face))) (message "Reference %s not found" (car ref))))))) (defun ess--dbg-goto-ref (other-window file line &optional col) "Opens the reference given by FILE, LINE and COL, Try to open in a different window if OTHER-WINDOW is nil. Return the buffer if found, or nil otherwise be found. `ess--dbg-find-buffer' is used to find the FILE and open the associated buffer. If FILE is nil return nil." (let ((mrk (car (ess--dbg-create-ref-marker file line col))) (lpn ess-local-process-name)) (when mrk (let ((buf (marker-buffer mrk))) (if (not other-window) (switch-to-buffer buf) (let ((this-frame (window-frame (get-buffer-window (current-buffer))))) (display-buffer buf) ;; simple save-frame-excursion (unless (eq this-frame (window-frame (get-buffer-window buf t))) (ess-select-frame-set-input-focus this-frame)))) ;; set or re-set to lpn as this is the process with debug session on (with-current-buffer buf (setq ess-local-process-name lpn) (goto-char mrk) (set-window-point (get-buffer-window buf) mrk)) buf)))) ;; temporary, hopefully org folks implement something similar (defvar org-babel-tangled-file nil) (defun ess--dbg-create-ref-marker (file line &optional col) "Create markers to the reference given by FILE, LINE and COL. Return list of two markers MK-start and MK-end. MK-start is the position of error. Mk-end is the end of the line where error occurred. If buffer associated with FILE is not found, or line is nil, or TB-INDEX is not found return nil." (if (stringp line) (setq line (string-to-number line))) (if (stringp col) (setq col (string-to-number col))) (let* ((srcref (gethash file ess--srcrefs)) (file (replace-regexp-in-string "^\n" "" ;; hack for gnu regexp (or (car srcref) file))) (tb-index (cadr srcref)) (buffer (ess--dbg-find-buffer file)) pos) (when (and buffer line) (save-excursion (with-current-buffer buffer (save-restriction (widen) ;; how does this behave in narrowed buffers? tothink: (goto-char 1) (setq pos (point)) (when tb-index (while (and (not (eq tb-index (get-text-property pos 'tb-index))) (setq pos (next-single-property-change pos 'tb-index))))) (unless pos ;; use beg position if index not found (setq pos (nth 2 srcref))) (when pos (goto-char pos) (forward-line (1- line)) (if col (goto-char (+ (point-at-bol) col)) (back-to-indentation)) (when org-babel-tangled-file (org-babel-tangle-jump-to-org)) (list (point-marker) (copy-marker (point-at-eol)))))))))) (defun ess--dbg-find-buffer (filename) "Find a buffer for file FILENAME. If FILENAME is not found at all, ask the user where to find it if `ess--dbg-ask-for-file' is non-nil. Search the directories in `ess-tracebug-search-path'." (let ((dirs (append (ess-r-package-source-dirs) (cl-loop for d in ess-tracebug-search-path append (ess-r-package--all-source-dirs d)))) buffsym buffer fmts name buffername) (setq dirs (cons default-directory dirs)) ;; TODO: should be R working dir ;; 1. search already open buffers for match (associated file might not even exist yet) (dolist (bf (buffer-list)) (with-current-buffer bf (when (and buffer-file-name (or (and (file-name-absolute-p filename) (string-match (format "%s\\'" filename) buffer-file-name)) (equal filename (file-name-nondirectory buffer-file-name)))) (setq buffer bf) (return)))) ;; 2. The file name is absolute. Use its explicit directory as ;; the first in the search path, and strip it from FILENAME. (when (and (null buffer) (file-name-absolute-p filename)) (setq filename (abbreviate-file-name (expand-file-name filename)) dirs (cons (file-name-directory filename) dirs) filename (file-name-nondirectory filename))) ;; 3. Now search the path. (while (and (null buffer) dirs) (let ((thisdir (pop dirs))) (setq name (expand-file-name filename thisdir) buffer (and (file-exists-p name) (find-file-noselect name))))) ;; 4. Ask for file if not found (tothink: maybe remove this part?) (if (and (null buffer) ess-debug-ask-for-file) (save-excursion ;This save-excursion is probably not right. (let* ((pop-up-windows t) (name (read-file-name (format "Find next line in (default %s): " filename) spec-dir filename t nil)) (origname name)) (cond ((not (file-exists-p name)) (message "Cannot find file `%s'" name) (ding) (sit-for 2)) ((and (file-directory-p name) (not (file-exists-p (setq name (expand-file-name filename name))))) (message "No `%s' in directory %s" filename origname) (ding) (sit-for 2)) (t (setq buffer (find-file-noselect name))))))) ;; nil if not found buffer)) (defun ess--dbg-get-next-ref (n &optional pt BOUND REG nF nL nC) "Move point to the next reference in the *ess.dbg* buffer. Must be called from *ess.dbg* buffer. It returns the reference in the form (file line col) /all strings/ , or NIL if not found . Prefix arg N says how many error messages to move forwards (or backwards, if negative). Optional arg PT, if non-nil, specifies the value of point to start looking for the next message, default to (point). BOUND is the limiting position of the search. REG is the regular expression to search with. nF - sub-expression of REG giving the 'file'; defaults to 1. nL - giving the 'line'; defaults to 2. nC - sub-expr giving the 'column'; defaults to 3. " (interactive "p") (unless ess--dbg-buf-p (error "Not in *ess.dbg* buffer.")) (setq nF (or nF 1) nL (or nL 2) nC (or nC 3)) (or pt (setq pt (point))) ;; (message "ess--dbg-last-ref-marker%s vs pt%s vs point-max%s" ess--dbg-last-ref-marker pt (point-max)) (goto-char pt) (if (search-forward-regexp REG BOUND t n) (list (match-string nF) (match-string-no-properties nL) (match-string-no-properties nC)) nil)) (defun ess--dbg-next-ref-function (n &optional reset) "Advance to the next reference and visit the location given by the reference. This is the value of `next-error-function' in *ess.dbg* buffers." (interactive "p") (if reset (set-marker ess--dbg-current-ref ess--dbg-last-ref-marker)) (let ((loc (ess--dbg-get-next-ref n nil ess--dbg-current-ref)) ;; moves point to next/prev ref if any ; loc is (file . line_nr) dbuff) (if loc (progn (set-marker ess--dbg-current-ref (line-end-position)) (set-marker overlay-arrow-position (line-beginning-position)) (setq dbuff (ess--dbg-find-buffer (car loc))) (switch-to-buffer dbuff) (save-restriction (widen) (goto-char 1) (forward-line (1- (cdr loc)))) (move-marker ess--dbg-current-debug-position (line-beginning-position)) ; move the overlay-arrow (back-to-indentation)) (if (>= 0 (or n 1)) (error "Moved past first debug line") (error "Moved past last debug line"))))) ;; not used; remove in 13.09 (defvar ess-electric-debug-map (let ((map (make-sparse-keymap))) (define-key map "c" 'ess-debug-command-continue) (define-key map "C" 'ess-debug-command-continue-multi) (define-key map "n" 'ess-debug-command-next) (define-key map "N" 'ess-debug-command-next-multi) (define-key map "q" 'ess-debug-command-quit) (define-key map "u" 'ess-debug-command-up) map) "Keymap used to define commands for single key input mode. This commands are triggered by `ess-electric-debug' . \\{ess-electric-debug-map}") (make-obsolete-variable 'ess-electric-debug-map nil "ESS 13.05") (defun ess--debug-keys-message-string (&optional map) (let ((overriding-local-map (or map ess-debug-minor-mode-map))) (substitute-command-keys (mapconcat 'identity '("(\\[ess-debug-command-continue])cont" "(\\[ess-debug-command-continue-multi])cont-multi" "(\\[ess-debug-command-next])next" "(\\[ess-debug-command-next-multi])next-multi" "(\\[ess-debug-command-up])up" "(\\[ess-debug-command-quit])quit") " ")))) ;; not used anywhere; remove in ESS 13.09 (defun ess-electric-debug (&optional wait) "Call commands defined in `ess-electric-debug-map'. Single-key input commands are those that once invoked do not requre the prefix command for subsequent invocation. For example, if the prefix key is 'C-c C-t' and `ess-debug-command-next' is bound to 'n' and `ess-debug-command-continue' is bound to 'c' then 'C-c C-t n n c' executes `ess-debug-command-next' twice and `ess-debug-command-continue' once. Any other input not defined in `ess-electric-debug-map' will cause the exit from single-key input mode. If WAIT is t, wait for next input and ignore the keystroke which triggered the command." (interactive) (let ((help-mess (ess--debug-keys-message-string ess-electric-debug-map))) (ess--execute-electric-command ess-electric-debug-map help-mess wait (not (ess-process-get 'dbg-active))))) (define-obsolete-function-alias 'ess-singlekey-debug 'ess-electric-debug "ESS 13.05") (make-obsolete 'ess-electric-debug nil "ESS 13.05") (defun ess-electric-selection (&optional wait) "Call commands defined in `ess-electric-selection-map'. Single-key input commands are those, which once executed do not requre the prefix command for subsequent invocation. See `ess-electric-debug' for more. If WAIT is t, wait for next input and ignore the keystroke which triggered the command." (interactive) (ess--execute-electric-command ess-electric-selection-map "Selection: " wait (not (ess-process-get 'is-recover)))) (make-obsolete 'ess-singlekey-selection 'ess-electric-selection "ESS 13.05") (defun ess-debug-command-digit (&optional ev) "Digit commands in selection mode. If suplied ev must be a proper key event or a string representing the digit." (interactive) (inferior-ess-force) (unless (ess--dbg-is-recover-p) (error "Recover is not active")) (unless ev (setq ev last-command-event)) (let* ((ev-char (if (stringp ev) ev (char-to-string (event-basic-type ev)))) (proc (get-process ess-current-process-name)) (mark-pos (marker-position (process-mark proc))) (comint-prompt-read-only nil) prompt depth) (with-current-buffer (process-buffer proc) (goto-char mark-pos) (save-excursion (when (re-search-backward "\\(?: \\|^\\)\\([0-9]+\\):[^\t]+Selection:" ess--tb-last-input t) (setq depth (string-to-number (match-string 1))) (when (> depth 9) (setq ev-char (ess-completing-read "Selection" (mapcar 'number-to-string (number-sequence depth 0 -1)) nil t ev-char nil))))) (setq prompt (delete-and-extract-region (point-at-bol) mark-pos)) (insert (concat prompt ev-char "\n")) (ess-send-string proc ev-char) (move-marker (process-mark proc) (max-char))))) (defun ess-debug-command-next (&optional ev) "Step next in debug mode. Equivalent to 'n' at the R prompt." (interactive) (inferior-ess-force) (unless (ess--dbg-is-active-p) (error "Debugger is not active")) (if (ess--dbg-is-recover-p) (ess-send-string (ess-get-process) "0") (ess-send-string (ess-get-process) "n"))) (defun ess-debug-command-next-multi (&optional ev N) "Ask for N and step (n) N times in debug mode." (interactive) (inferior-ess-force) (unless (ess--dbg-is-active-p) (error "Debugger is not active")) (let ((N (or N (read-number "Number of steps: " 10))) (ess--suppress-next-output? t)) (while (and (ess--dbg-is-active-p) (> N 0)) (ess-debug-command-next) (ess-wait-for-process) (setq N (1- N)))) (ess-debug-command-next)) (defun ess-debug-command-continue-multi (&optional ev N) "Ask for N, and continue (c) N times in debug mode." (interactive) (inferior-ess-force) (unless (ess--dbg-is-active-p) (error "Debugger is not active")) (let ((N (or N (read-number "Number of continuations: " 10))) (ess--suppress-next-output? t)) (while (and (ess--dbg-is-active-p) (> N 1)) (ess-debug-command-continue) (ess-wait-for-process) (setq N (1- N)))) (ess-debug-command-continue)) (defun ess-debug-command-up (&optional ev) "Step up one call frame. Equivalent to 'n' at the R prompt." (interactive) (inferior-ess-force) (unless (ess--dbg-is-active-p) (error "Debugger is not active")) (let ((up-cmd "try(browserSetDebug(), silent=T)\nc\n")) (ess-send-string (ess-get-process) up-cmd))) ;; (defun ess-debug-previous-error (&optional ev) ;; "Go to previous reference during the debug process. ;; R doesn't support step backwards. This command just takes you through ;; debug history." ;; (interactive) ;; (previous-error)) (defun ess-debug-command-quit (&optional ev) "Quits the browser/debug in R process. Equivalent of `Q' at the R prompt." (interactive) (inferior-ess-force) (cond ((ess--dbg-is-recover-p) (ess-send-string (ess-get-process) "0")) ;; if recover is called in a loop the following stalls emacs ;; (ess-wait-for-process proc nil 0.05) ((ess--dbg-is-active-p) (ess-send-string (ess-get-process) "Q")) (t (error "Debugger is not active")))) (defun ess-debug-command-continue (&optional ev) "Continue the code execution. Equivalent of `c' at the R prompt." (interactive) (inferior-ess-force) (cond ((ess--dbg-is-recover-p) (ess-send-string (ess-get-process) "0")) ((ess--dbg-is-active-p) (ess-send-string (ess-get-process) "c")) (t (error "Debugger is not active")))) (defun ess-tracebug-set-last-input (&rest ARGS) "Move `ess--tb-last-input' marker to the process mark. ARGS are ignored to allow using this function in process hooks." (let* ((last-input-process (get-process ess-local-process-name)) (last-input-mark (copy-marker (process-mark last-input-process)))) (with-current-buffer (process-buffer last-input-process) (when (local-variable-p 'ess--tb-last-input) ;; TB might not be active in all processes (save-excursion (setq ess--tb-last-input last-input-mark) (goto-char last-input-mark) (inferior-ess-move-last-input-overlay)))))) ;;;_ + BREAKPOINTS (defface ess-bp-fringe-inactive-face '((((class color) (background light) (min-colors 88)) (:foreground "DimGray")) (((class color) (background dark) (min-colors 88)) (:foreground "LightGray")) (((background light) (min-colors 8)) (:foreground "blue")) (((background dark) (min-colors 8)) (:foreground "cyan"))) "Face used to highlight inactive breakpoints." :group 'ess-debug) (defface ess-bp-fringe-logger-face '((((class color) (background light) (min-colors 88)) (:foreground "dark red")) (((class color) (background dark) (min-colors 88)) (:foreground "tomato1")) (((background light) (min-colors 8)) (:foreground "blue")) (((background dark) (min-colors 8)) (:foreground "cyan"))) "Face used to highlight loggers." :group 'ess-debug) (defface ess-bp-fringe-browser-face '((((class color) (background light) (min-colors 88)) (:foreground "medium blue")) (((class color) (background dark) (min-colors 88)) (:foreground "deep sky blue")) (((background light) (min-colors 8)) (:foreground "blue")) (((background dark) (min-colors 8)) (:foreground "cyan"))) "Face used to highlight 'browser' breakpoints." :group 'ess-debug) (defface ess-bp-fringe-recover-face '((((class color) (background light) (min-colors 88)) (:foreground "dark magenta")) (((class color) (background dark) (min-colors 88)) (:foreground "magenta")) (((background light) (min-colors 8)) (:foreground "magenta")) (((background dark) (min-colors 8)) (:foreground "magenta"))) "Face used to highlight 'recover' breakpoints fringe." :group 'ess-debug) (defun ess--bp-pipe-block-p () (save-excursion (let ((inhibit-point-motion-hooks t) (inhibit-field-text-motion t)) (forward-line -1) (end-of-line) (looking-back "\\%>\\%[ \t]*")))) (defvar ess--bp-identifier 1) (defcustom ess-bp-type-spec-alist '((pipe ".ess_pipe_browser() %%>%%" "B %>%\n" filled-square ess-bp-fringe-browser-face ess--bp-pipe-block-p) (browser "browser(expr=is.null(.ESSBP.[[%s]]));" "B>\n" filled-square ess-bp-fringe-browser-face) (recover "recover()" "R>\n" filled-square ess-bp-fringe-recover-face)) "List of lists of breakpoint types. Each sublist has five elements: 1- symbol giving the name of specification 2- R expression to be inserted (%s is substituted with unique identifier). 3- string to be displayed instead of the expression 4- fringe bitmap to use 5- face for fringe and displayed string 6- optional, a function which should return nil if this BP doesn't apply to current context." :group 'ess-debug :type '(alist :key-type symbol :value-type (group string string symbol face))) (defcustom ess-bp-inactive-spec '(inactive "##" filled-square ess-bp-fringe-inactive-face) "List giving the inactive breakpoint specifications." ;; List format is identical to that of the elements of ;; `ess-bp-type-spec-alist' except that the second element giving ;; the R expression is meaningless here." ;;fixme: second element is missing make it nil for consistency with all other specs :group 'ess-debug) (defcustom ess-bp-conditional-spec '(conditional "browser(expr={%s})" "CB[ %s ]>\n" question-mark ess-bp-fringe-browser-face) "List giving the conditional breakpoint specifications. List format is identical to that of the elements of `ess-bp-type-spec-alist'. User is asked for the conditional expression to be replaced instead of %s in the second and third elements of the specifications." :group 'ess-debug) (defcustom ess-bp-logger-spec '(logger ".ess_log_eval('%s')" "L[ \"%s\" ]>\n" hollow-square ess-bp-fringe-logger-face) "List giving the loggers specifications. List format is identical to that of `ess-bp-type-spec-alist'." :group 'ess-debug) (defun ess-bp-get-bp-specs (type &optional condition no-error) "get specs for TYPE " (let ((spec-alist (cond ((eq type 'conditional) (let ((tl (copy-sequence ess-bp-conditional-spec))) (when (eq (length condition) 0) (setq condition "TRUE")) (setcar (cdr tl) (format (cadr tl) condition)) (setcar (cddr tl) (format (caddr tl) condition)) (list tl))) ((eq type 'logger) (let ((tl (copy-sequence ess-bp-logger-spec))) (when (eq (length condition) 0) (setq condition "watchLog")) (setcar (cdr tl) (format (cadr tl) condition)) (setcar (cddr tl) (format (caddr tl) condition)) (list tl))) (t (copy-sequence ess-bp-type-spec-alist))))) (or (assoc type spec-alist) (if no-error nil (error "Undefined breakpoint type %s" type))))) (defun ess-bp-create (type &optional condition no-error) "Set breakpoint for the current line. Returns the begging position of the hidden text." (let* ((bp-specs (ess-bp-get-bp-specs type condition no-error)) (init-pos (point-marker)) (fringe-bitmap (nth 3 bp-specs)) (fringe-face (nth 4 bp-specs)) (displ-string (nth 2 bp-specs)) (bp-id (format "\"@%s@\"" (setq ess--bp-identifier (1+ ess--bp-identifier)))) (bp-command (concat (format (nth 1 bp-specs) bp-id) "##:ess-bp-end:##\n")) (bp-length (length bp-command)) (dummy-string (format "##:ess-bp-start::%s@%s:##\n" (car bp-specs) condition)) (dummy-length (length dummy-string)) insertion-pos) (when bp-specs (set-marker init-pos (1+ init-pos)) (setq displ-string (propertize displ-string 'face fringe-face 'font-lock-face fringe-face)) (setq bp-command (propertize bp-command 'ess-bp t 'bp-id bp-id 'bp-active t 'intangible 'ess-bp 'rear-nonsticky '(intangible ess-bp bp-type) 'bp-type type 'bp-substring 'command 'display displ-string)) (setq dummy-string (propertize (ess-tracebug--propertize dummy-string fringe-bitmap fringe-face "*") 'ess-bp t 'intangible 'ess-bp 'bp-type type 'bp-substring 'dummy)) (ess-tracebug--set-left-margin) (back-to-indentation) (setq insertion-pos (point) ) (insert (concat dummy-string bp-command)) (indent-for-tab-command) (goto-char (1- init-pos)) ;; sort of save-excursion insertion-pos))) (defun ess-bp-recreate-all () "internal function to recreate all bp" (save-excursion (save-restriction (with-silent-modifications (widen) (goto-char (point-min)) (while (re-search-forward "\\(##:ess-bp-start::\\(.*\\):##\n\\)\\(.+##:ess-bp-end:##\n\\)" nil t) (let ((dum-beg (match-beginning 1)) (dum-end (match-end 1)) (comm-beg (match-beginning 3)) (comm-end (match-end 3)) (type (match-string 2)) (bp-command (match-string 3)) bp-id dum-props condition) (when (string-match "^\\(\\w+\\)@\\(.*\\)\\'" type) (setq condition (match-string 2 type)) (setq type (match-string 1 type))) (setq bp-id (if (string-match "\"@[0-9]+@\"" bp-command) (match-string 0 bp-command) (setq ess--bp-identifier (1+ ess--bp-identifier)))) (setq type (intern type)) (let* ((bp-specs (ess-bp-get-bp-specs type condition t)) (displ-string (nth 2 bp-specs)) (fringe-face (nth 4 bp-specs)) (fringe-bitmap (nth 3 bp-specs))) (when bp-specs (setq displ-string (propertize displ-string 'face fringe-face 'font-lock-face fringe-face)) (add-text-properties comm-beg comm-end (list 'ess-bp t 'bp-id bp-id 'intangible 'ess-bp 'rear-nonsticky '(intangible ess-bp bp-type) 'bp-type type 'bp-substring 'command 'display displ-string)) (setq dum-props (if window-system (list 'display (list 'left-fringe fringe-bitmap fringe-face)) (list 'display (list '(margin left-margin) (propertize "dummy" 'font-lock-face fringe-face 'face fringe-face))))) (add-text-properties dum-beg dum-end (append dum-props (list 'ess-bp t 'intangible 'ess-bp 'bp-type type 'bp-substring 'dummy))) ;; (when comment-beg ;; (add-text-properties comment-beg comment-end ;; (list 'ess-bp t ;; 'bp-id bp-id ;; 'intangible 'ess-bp ;; 'display (propertize (nth 1 ess-bp-inactive-spec) 'face fringe-face) ;; 'bp-type type ;; 'bp-substring 'comment))) )))))))) (add-hook 'R-mode-hook 'ess-bp-recreate-all) (defun ess-bp-get-bp-position-nearby () "Return the cons (beg . end) of breakpoint limit points closest to the current position. Only currently visible region of the buffer is searched. This command is intended for use in interactive commands like `ess-bp-toggle-state' and `ess-bp-kill'. Use `ess-bp-previous-position' in programs." (interactive) (let* ((pos-end (if (get-char-property (1- (point)) 'ess-bp) (point) (previous-single-property-change (point) 'ess-bp nil (window-start)))) (pos-start (if (get-char-property (point) 'ess-bp) ;;check for bobp (point) (next-single-property-change (point) 'ess-bp nil (window-end)))) pos dist-up dist-down) (unless (eq pos-end (window-start)) (setq dist-up (- (line-number-at-pos (point)) (line-number-at-pos pos-end)))) (unless (eq pos-start (window-end)) (setq dist-down (- (line-number-at-pos pos-start) (line-number-at-pos (point))))) (if (and dist-up dist-down) (if (< dist-up dist-down) (cons (previous-single-property-change pos-end 'ess-bp nil (window-start)) pos-end) (cons pos-start (next-single-property-change pos-start 'ess-bp nil (window-end)))) (if dist-up (cons (previous-single-property-change pos-end 'ess-bp nil (window-start)) pos-end) (if dist-down (cons pos-start (next-single-property-change pos-start 'ess-bp nil (window-end)))))))) (defun ess-bp-previous-position () "Returns the cons (beg . end) of breakpoint limit points closest to the current position, nil if not found. " (let* ( (pos-end (if (get-char-property (1- (point)) 'ess-bp) (point) (previous-single-property-change (point) 'ess-bp )))) (if pos-end (cons (previous-single-property-change pos-end 'ess-bp) pos-end)))) (defun ess-bp-set () (interactive) (let* ((pos (ess-bp-get-bp-position-nearby)) (same-line (and pos (<= (point-at-bol) (cdr pos)) (>= (point-at-eol) (car pos)))) (types ess-bp-type-spec-alist) (ev last-command-event) (com-char (event-basic-type ev)) bp-type) (when same-line ;; set bp-type to next type in types (setq bp-type (get-text-property (car pos) 'bp-type)) (setq types (cdr (member (assq bp-type types) types))) ; nil if bp-type is last in the list (when (null types) (setq types ess-bp-type-spec-alist)) (ess-bp-kill) (indent-for-tab-command)) ;; skip contextual bps (while (and (nth 5 (car types)) (not (funcall (nth 5 (car types))))) (pop types)) (setq bp-type (pop types)) (ess-bp-create (car bp-type)) (while (eq (event-basic-type (setq ev (read-event (format "'%c' to cycle" com-char)))) com-char) (if (null types) (setq types ess-bp-type-spec-alist)) (ess-bp-kill) ;; skip contextual bps (while (and (nth 5 (car types)) (not (funcall (nth 5 (car types))))) (pop types)) (setq bp-type (pop types)) (ess-bp-create (car bp-type)) (indent-for-tab-command)) (push ev unread-command-events))) (defun ess-bp-set-conditional (condition) (interactive "sBreakpoint condition: ") (ess-bp-create 'conditional condition) (indent-for-tab-command)) (defun ess-bp-set-logger (name) (interactive "sLogger name : ") (ess-bp-create 'logger name) (indent-for-tab-command)) (defun ess-bp-kill (&optional interactive?) "Remove the breakpoint nearby" (interactive "p") (let ((pos (ess-bp-get-bp-position-nearby)) (init-pos (make-marker))) (if (null pos) (if interactive? (message "No breakpoints nearby")) (if (eq (point) (point-at-eol)) (goto-char (1- (point)))) ;; work-arround for issue 3 (set-marker init-pos (point)) (goto-char (car pos)) (delete-region (car pos) (cdr pos)) (indent-for-tab-command) (goto-char init-pos) (if (eq (point) (point-at-eol)) (forward-char))))) (defun ess-bp-kill-all nil "Delete all breakpoints in current buffer." (interactive) (let ((count 0) (init-pos (make-marker)) pos) (set-marker init-pos (1+ (point))) (save-excursion ;; needed if error (goto-char (point-max)) (while (setq pos (ess-bp-previous-position)) (goto-char (car pos)) (delete-region (car pos) (cdr pos)) (indent-for-tab-command) (setq count (1+ count))) (if (eq count 1) (message "Killed 1 breakpoint") (message "Killed %d breakpoint(s)" count))) (goto-char (1- init-pos)))) (defun ess-bp-toggle-state () "Toggle the breakpoint between active and inactive states. For standard breakpoints, the effect of this command is immediate, that is you don't need to source your code and it works even in the process of debugging. For loggers, recover and conditional breakpoints this command just comments the breakpoint in the source file. If there is no active R session, this command triggers an error." (interactive) (unless (and ess-local-process-name (get-process ess-local-process-name)) (error "No R session in this buffer")) (save-excursion (let ((pos (ess-bp-get-bp-position-nearby)) (fringe-face (nth 3 ess-bp-inactive-spec)) (inhibit-point-motion-hooks t) ;; deactivates intangible property bp-id beg-pos-dummy end-pos-comment bp-specs beg-pos-command) (if (null pos) (message "No breakpoints in the visible region") (goto-char (car pos)) (setq beg-pos-command (previous-single-property-change (cdr pos) 'bp-substring nil (car pos)) bp-id (get-char-property beg-pos-command 'bp-id)) (goto-char beg-pos-command) (if (get-char-property beg-pos-command 'bp-active) (progn (put-text-property (car pos) beg-pos-command ;; dummy display change 'display (list 'left-fringe (nth 2 ess-bp-inactive-spec) fringe-face)) (put-text-property beg-pos-command (cdr pos) 'bp-active nil) (ess-command (format ".ESSBP.[[%s]] <- TRUE\n" bp-id))) (setq bp-specs (assoc (get-text-property (point) 'bp-type) ess-bp-type-spec-alist)) (put-text-property beg-pos-command (cdr pos) 'bp-active t) (put-text-property (car pos) beg-pos-command 'display (list 'left-fringe (nth 3 bp-specs) (nth 4 bp-specs))) (ess-command (format ".ESSBP.[[%s]] <- NULL\n" bp-id)) ;; (insert (propertize "##" ;; 'ess-bp t ;; 'intangible 'ess-bp ;; 'display (propertize (nth 1 ess-bp-inactive-spec) 'face fringe-face) ;; 'bp-type (get-char-property (point) 'bp-type) ;; 'bp-substring 'comment)) ))))) (defun ess-bp-make-visible () "Makes bp text visible." (interactive) (let ((pos (ess-bp-get-bp-position-nearby))) (set-text-properties (car pos) (cdr pos) (list 'display nil)))) (defun ess-bp-next nil "Goto next breakpoint." (interactive) (let ((cur-pos (point)) (bp-pos (next-single-property-change (point) 'ess-bp))) (when bp-pos (save-excursion (goto-char bp-pos) (when (get-text-property (1- (point)) 'ess-bp) (setq bp-pos (next-single-property-change bp-pos 'ess-bp))))) (if bp-pos (goto-char bp-pos) (message "No breakpoints found")))) (defun ess-bp-previous nil "Goto previous breakpoint." (interactive) (let ((cur-pos (point)) (bp-pos (previous-single-property-change (point) 'ess-bp))) (if bp-pos (goto-char (or (previous-single-property-change bp-pos 'ess-bp) bp-pos)) ;; (message "No breakpoints before the point found")))) ;;;_ + WATCH (defvar ess-watch-command ;; assumes that every expression is a structure of length 1 as returned by parse. ".ess_watch_eval()\n") (if (fboundp 'define-fringe-bitmap) ;;not clear to me why is this not bound in SSH session? - :todo check (define-fringe-bitmap 'current-watch-bar [#b00001100] nil nil '(top t))) (defun ess-tracebug--set-left-margin () "Set the margin on non-X displays" (unless window-system (when (= left-margin-width 0) (setq left-margin-width 1) (set-window-buffer (selected-window) (current-buffer))))) (defun ess-watch-mode () "Major mode in ess-watch window. \\{ess-watch-mode-map}" (let ((cur-block (max 1 (ess-watch-block-at-point))) (dummy-string (ess-tracebug--propertize "|" 'current-watch-bar 'font-lock-keyword-face))) (kill-all-local-variables) (ess-tracebug--set-left-margin) (make-local-variable 'revert-buffer-function) (setq revert-buffer-function 'ess-watch-revert-buffer) (use-local-map ess-watch-mode-map) (setq major-mode 'ess-watch-mode) (setq mode-name (concat "watch " ess-current-process-name)) (turn-on-font-lock) (setq ess-watch-current-block-overlay (make-overlay (point-min) (point-max))) (overlay-put ess-watch-current-block-overlay 'line-prefix dummy-string) (overlay-put ess-watch-current-block-overlay 'face 'ess-watch-current-block-face) (ess-watch-set-current cur-block) ;; (when (require 'face-remap nil t) ;; scale the font (setq text-scale-mode-amount ess-watch-scale-amount) (text-scale-mode 1) ; (text-scale-mode -1) ;;restore to default ))) (defun ess-watch () "Run ess-watch mode on R objects. This is the trigger function. See documentation of `ess-watch-mode' for more information. \\{ess-watch-mode-map} " (interactive) (ess-force-buffer-current) (let ((wbuf (get-buffer-create ess-watch-buffer)) (pname ess-local-process-name) (alist (symbol-value ess-local-customize-alist))) (set-buffer wbuf) (ess-setq-vars-local alist) (setq ess-local-process-name pname) (ess-watch-mode) (ess-watch-refresh-buffer-visibly wbuf) ;; evals the ess-command and displays the buffer if not visible (pop-to-buffer wbuf) (set-window-dedicated-p (selected-window) 1) ;; not strongly dedicated )) (defun ess-watch-refresh-buffer-visibly (wbuf &optional sleep no-prompt-check) "Eval `ess-watch-command' and direct the output into the WBUF. Call `ess-watch-buffer-show' to make the buffer visible, without selecting it. This function is used for refreshing the watch window after each step during the debugging." ;; assumes that the ess-watch-mode is on!! ;; particularly ess-watch-current-block-overlay is installed (interactive) (ess-watch-buffer-show wbuf) ;; if visible do nothing (let ((pname ess-local-process-name)) ;; watch might be used from different dialects, need to reset (with-current-buffer wbuf (let ((curr-block (max 1 (ess-watch-block-at-point)))) ;;can be 0 if (setq buffer-read-only nil) (when pname (setq ess-local-process-name pname)) (ess-command ess-watch-command wbuf sleep no-prompt-check) ;; delete the ++++++> line ;; not very reliable but works fine so far. (goto-char (point-min)) (delete-region (point-at-bol) (+ 1 (point-at-eol))) (ess-watch-set-current curr-block) (set-window-point (get-buffer-window wbuf) (point)) (setq buffer-read-only t))))) (defun ess-watch-buffer-show (buffer-or-name) "Make watch buffer BUFFER-OR-NAME visible, and position acordingly. If already visible, do nothing. Currently the only positioning rule implemented is to split the R process window in half. The behavior is controlled by `split-window-sensibly' with parameters `split-height-threshold' and `split-width-threshold' replaced by `ess-watch-height-threshold' and `ess-watch-width-threshold' respectively." (interactive) (unless (get-buffer-window ess-watch-buffer 'visible) (save-selected-window (ess-switch-to-ESS t) (let* ((split-width-threshold (or ess-watch-width-threshold split-width-threshold)) (split-height-threshold (or ess-watch-height-threshold split-height-threshold)) (win (split-window-sensibly (selected-window)))) (if win (set-window-buffer win buffer-or-name) (display-buffer buffer-or-name) ;; resort to usual mechanism if could not split ))))) (defun ess-watch-revert-buffer (ignore noconfirm) "Update the watch buffer Arguments IGNORE and NOCONFIRM currently not used." (ess-watch) (message "Watch reverted")) (defvar ess-watch-mode-map nil "Keymap for the *R watch* buffer. \\{ess-watch-mode-map} ") (unless ess-watch-mode-map (setq ess-watch-mode-map (make-sparse-keymap)) (when (boundp 'special-mode-map) (set-keymap-parent ess-watch-mode-map special-mode-map)) (define-key ess-watch-mode-map "?" 'ess-watch-help) (define-key ess-watch-mode-map "k" 'ess-watch-kill) ;; (define-key ess-watch-mode-map "u" 'ess-watch-undelete) ;; editing requires a little more work. (define-key ess-watch-mode-map "a" 'ess-watch-add) (define-key ess-watch-mode-map "i" 'ess-watch-insert) (define-key ess-watch-mode-map "e" 'ess-watch-edit-expression) (define-key ess-watch-mode-map "r" 'ess-watch-rename) (define-key ess-watch-mode-map "q" 'ess-watch-quit) (define-key ess-watch-mode-map "u" 'ess-watch-move-up) (define-key ess-watch-mode-map "U" 'ess-watch-move-down) (define-key ess-watch-mode-map "d" 'ess-watch-move-down) (define-key ess-watch-mode-map "n" 'ess-watch-next-block) (define-key ess-watch-mode-map "p" 'ess-watch-previous-block) ;; R mode keybindings. (define-key ess-watch-mode-map "\C-c\C-s" 'ess-watch-switch-process) (define-key ess-watch-mode-map "\C-c\C-y" 'ess-switch-to-ESS) (define-key ess-watch-mode-map "\C-c\C-z" 'ess-switch-to-end-of-ESS) ;; Debug keys: ) (defface ess-watch-current-block-face '((default (:inherit highlight))) "Face used to highlight current watch block." :group 'ess-debug) (defvar ess-watch-current-block-overlay nil "The overlay for currently selected block in the R watch buffer .") (make-variable-buffer-local 'ess-watch-current-block-overlay) (defvar ess-watch-buffer "*R watch*" "Name of the watch buffer.") (defvar ess-watch-start-block "@----" ;; fixme: make defcustom and modify the injected command correspondingly "String indicating the beginning of a block in watch buffer." ;; :group 'ess-debug ;; :type 'string ) (defvar ess-watch-start-expression "@---:" "String indicating the beginning of an R expression in watch buffer." ;; :group 'ess-debug ;; :type 'string ) (defcustom ess-watch-height-threshold nil "Minimum height for splitting *R* windwow sensibly to make space for watch window. See `split-height-threshold' for a detailed description. If nil, the value of `split-height-threshold' is used." :group 'ess-debug :type 'integer) (defcustom ess-watch-width-threshold nil "Minimum width for splitting *R* windwow sensibly to make space for watch window. See `split-width-threshold' for a detailed description. If nil, the value of `split-width-threshold' is used." :group 'ess-debug :type 'integer) (defcustom ess-watch-scale-amount -1 "The number of steps to scale the watch font down (up). Each step scales the height of the default face in the watch window by the variable `text-scale-mode-step' (a negative number of steps decreases the height by the same amount)") (defvar ess-watch-help nil "Keymap for the *R watch* buffer. \\{ess-watch-mode-map} ") (defun ess-watch-help () (interactive) (describe-variable 'ess-watch-help)) (defun ess-watch-block-limits-at-point () "Return start and end positions of the watch block." (interactive) (save-excursion (let ((curr (point)) start-pos end-pos) (end-of-line) (setq start-pos (if (re-search-backward ess-watch-start-block nil t ) (point) (point-min))) (goto-char curr) (beginning-of-line) (setq end-pos (if (re-search-forward ess-watch-start-block nil t) (match-beginning 0) (point-max))) (list start-pos end-pos)))) (defun ess-watch-block-at-point () "return the current block's order count, 0 if no block was found." (save-excursion (let ((cur-point (point)) (count 0)) (goto-char (point-min)) (while (re-search-forward ess-watch-start-block cur-point t) (setq count (1+ count))) count))) (defun ess-watch-set-current (nr) "Move the overlay over the block with count NR in current watch buffer" (goto-char (point-min)) (re-search-forward ess-watch-start-expression nil t nr) (goto-char (match-end 0)) (apply 'move-overlay ess-watch-current-block-overlay (ess-watch-block-limits-at-point))) (defun ess-watch--make-alist () "Create an association list of expression from current buffer (better be a watch buffer). Each element of assoc list is of the form (pos name expr) where pos is an unique integer identifying watch blocks by position, name is a string giving the name of expression block, expr is a string giving the actual R expression." (interactive) (save-excursion (let* ((reg-name (concat "^" ess-watch-start-block " *\\(\\S-*\\).*$")) (reg-expr (concat "^" ess-watch-start-expression "\\s-*\\(.*\\)$")) (reg-all (concat "\\(" reg-name "\\)\n\\(" reg-expr "\\)")) (pos 0) wal name expr) (goto-char (point-min)) (while (re-search-forward reg-all nil t) (setq pos (+ 1 pos)) (setq name (match-string-no-properties 2)) (setq expr (match-string-no-properties 4)) (if (not (eq (string-to-number name) 0)) ;;if number of any kind set the name to "" (setq name "")) (setq wal (append wal (list (list pos name expr))))) wal))) (defun ess-watch--parse-assoc (al) "Return a string of the form 'assign(\".ess_watch_expressions\", list(a = parse(expr_a), b= parse(expr_b)), envir = .GlobalEnv)' ready to be send to R process. AL is an association list as return by `ess-watch--make-alist'" (concat ".ess_watch_assign_expressions(list(" (mapconcat (lambda (el) (if (> (length (cadr el) ) 0) (concat "`" (cadr el) "` = parse(text = '" (caddr el) "')") (concat "parse(text = '" (caddr el) "')"))) al ", ") "))\n")) (defun ess-watch--install-.ess_watch_expressions () ;; used whenever watches are added/deleted/modified from the watch ;; buffer. this is the only way to insert expressions into ;; .ess_watch_expressions object in R. Assumes R watch being the current ;; buffer, otherwise will most likely install empty list. (interactive) (process-send-string (ess-get-process ess-current-process-name) (ess-watch--parse-assoc (ess-watch--make-alist))) ;;todo: delete the prompt at the end of proc buffer todo: defun ess-send-string!! (sleep-for 0.05) ;; need here, if ess-command is used immediately after, for some weird reason the process buffer will not be changed ) (defun ess-watch-quit () "Quit (kill) the watch buffer. If watch buffer exists, it is displayed during the debug process. The only way to avoid the display, is to kill the buffer." (interactive) (kill-buffer) ;; dedicated, window is deleted unless not the only one ) ;;;_ + MOTION (defun ess-watch-next-block (&optional n) "Move the overlay over the next block. Optional N if supplied gives the number of steps forward backward-char." (interactive "P") (setq n (prefix-numeric-value n)) (goto-char (overlay-end ess-watch-current-block-overlay)) (unless (re-search-forward ess-watch-start-expression nil t n) (goto-char (point-min)) ;;circular but always moves to start! (re-search-forward ess-watch-start-expression nil t 1)) (apply 'move-overlay ess-watch-current-block-overlay (ess-watch-block-limits-at-point))) (defun ess-watch-previous-block (&optional n) "Move the overlay over the previous block. Optional N if supplied gives the number of backward steps." (interactive "P") (setq n (prefix-numeric-value n)) (goto-char (overlay-start ess-watch-current-block-overlay)) (unless (re-search-backward ess-watch-start-expression nil t n) (goto-char (point-max)) ;;circular but always moves to last! (re-search-backward ess-watch-start-expression nil t 1)) (goto-char (match-end 0)) (apply 'move-overlay ess-watch-current-block-overlay (ess-watch-block-limits-at-point))) ;;;_ + BLOCK MANIPULATION and EDITING (defun ess-watch-rename () "Rename the currently selected watch block. " (interactive) (end-of-line) (unless (re-search-backward ess-watch-start-block nil 1) (error "Can not find a watch block")) (let ((reg-name (concat ess-watch-start-block " *\\(\\S-*\\).*$")) name start end) ;; (reg-expr (concat "^" ess-watch-start-expression "\\s-*\\(.*\\)$")) ;; (reg-all (concat "\\(" reg-name "\\)\n\\(" reg-expr "\\)")) ;; (pos 0) wal name expr) (unless (re-search-forward reg-name (point-at-eol) 1) (error "Can not find the name substring in the current watch block ")) (setq name (match-string-no-properties 1)) (setq start (match-beginning 1)) (setq end (match-end 1)) (goto-char start) ;; todo: highlight the name in R-watch here (setq name (read-string (concat "New name (" name "): ") nil nil name) ) (setq buffer-read-only nil) (delete-region start end) (insert name) (setq buffer-read-only t) (ess-watch--install-.ess_watch_expressions) (ess-watch-refresh-buffer-visibly (current-buffer)))) (defun ess-watch-edit-expression () "Edit in the minibuffer the R expression from the current watch block. " (interactive) (end-of-line) (unless (re-search-backward ess-watch-start-block nil 1) (error "Can not find a watch block")) (let ((reg-expr (concat ess-watch-start-expression " *\\(.*\\)$")) expr start end) (unless (re-search-forward reg-expr nil 1) (error "Can not find an expression string in the watch block")) (setq expr (match-string-no-properties 1)) (setq start (match-beginning 1)) (setq end (match-end 1)) (goto-char start) ;; todo: highlight the name in R-watch here (setq expr (read-string "New expression: " expr nil expr) ) (setq buffer-read-only nil) (delete-region start end) (insert expr) (setq buffer-read-only t) (ess-watch--install-.ess_watch_expressions) (ess-watch-refresh-buffer-visibly (current-buffer)))) (defun ess-watch-add () "Ask for new R expression and name and append it to the end of the list of watch expressions" (interactive) (let (nr expr name) (goto-char (point-max)) (setq nr (number-to-string (1+ (ess-watch-block-at-point)))) (setq name nr) ;; (setq name (read-string (concat "Name (" nr "):") nil nil nr )) ;;this one is quite annoying and not really needed than for logging (setq expr (read-string "New expression: " nil nil "\"Empty watch!\"")) (setq buffer-read-only nil) (insert (concat "\n" ess-watch-start-block " " name " -@\n" ess-watch-start-expression " " expr "\n")) (setq buffer-read-only t) (ess-watch--install-.ess_watch_expressions))) (defun ess-watch-insert () "Ask for new R expression and name and insert it in front of current watch block" (interactive) (let (nr expr name) (setq nr (number-to-string (ess-watch-block-at-point))) (setq name nr) ;; (setq name (read-string (concat "Name (" nr "):") nil nil nr )) (setq expr (read-string "New expression: " nil nil "\"Empty watch!\"")) (re-search-backward ess-watch-start-block nil 1) ;;point-min if not found (setq buffer-read-only nil) (insert (concat "\n" ess-watch-start-block " " name " -@\n" ess-watch-start-expression " " expr "\n")) (setq buffer-read-only t) (ess-watch--install-.ess_watch_expressions))) (defun ess-watch-move-up () "Move the current block up." (interactive) (let ((nr (ess-watch-block-at-point)) wbl) (when (> nr 1) (setq buffer-read-only nil) (setq wbl (apply 'delete-and-extract-region (ess-watch-block-limits-at-point))) (re-search-backward ess-watch-start-block nil t 1) ;; current block was deleted, point is at the end of previous block (insert wbl) (ess-watch--install-.ess_watch_expressions) (setq buffer-read-only t)))) (defun ess-watch-move-down () "Move the current block down." (interactive) (let ((nr (ess-watch-block-at-point)) (nr-all (save-excursion (goto-char (point-max)) (ess-watch-block-at-point))) wbl) (when (< nr nr-all) (setq buffer-read-only nil) (setq wbl (apply 'delete-and-extract-region (ess-watch-block-limits-at-point))) (end-of-line) (when (re-search-forward ess-watch-start-block nil 1 1) ;; current block was deleted, point is at the end of previous block or point-max (goto-char (match-beginning 0))) (insert wbl) (ess-watch--install-.ess_watch_expressions) (setq buffer-read-only t)))) (defun ess-watch-kill () "Kill the current block" (interactive) (setq buffer-read-only nil) (apply 'delete-region (ess-watch-block-limits-at-point)) (ess-watch--install-.ess_watch_expressions)) ;;;_ + Debug/Undebug at point (defun ess--dbg-get-signatures (method) "Get signatures for the method METHOD" (let ((tbuffer (get-buffer-create " *ess-command-output*")); initial space: disable-undo signatures curr-point) (save-excursion (ess-if-verbose-write (format "ess-get-signatures*(%s).. " method)) (ess-command (concat "showMethods(\"" method "\")\n") tbuffer) (message ess-local-process-name) (message ess-current-process-name) (ess-if-verbose-write " [ok] ..\n") (set-buffer tbuffer) (goto-char (point-min)) (if (not (re-search-forward "Function:" nil t)) (progn (ess-if-verbose-write "not seeing \"Function:\".. \n") (error (buffer-string)) ;; (error "Cannot trace method '%s' (Is it a primitive method which you have already traced?)" method) ) ;; (setq curr-point (point)) ;; (while (re-search-forward ", " nil t) ;replace all ", " with ":" for better redability in completion buffers?? ;; (replace-match ":")) ;; (goto-char curr-point) (while (re-search-forward "^.+$" nil t) (setq signatures (cons (match-string-no-properties 0) signatures)))) ; (kill-buffer tbuffer) ) signatures)) (defun ess-debug-flag-for-debugging () "Set the debugging flag on a function. Ask the user for a function and if it turns to be generic, ask for signature and trace it with browser tracer." (interactive) (ess-force-buffer-current "Process to use: ") (let* ((tbuffer (get-buffer-create " *ess-command-output*")) ;; output buffer name is hard-coded in ess-inf.el (pkg (ess-r-package-name)) (all-functions (ess-get-words-from-vector (if pkg (format ".ess_all_functions(c('%s'))\n" pkg) ".ess_all_functions()\n"))) (obj-at-point (ess-helpobjs-at-point--read-obj)) (default (and obj-at-point (let* ((reg (regexp-quote obj-at-point)) (matches (loop for el in all-functions if (string-match reg el) collect el))) (car (sort matches (lambda (a b) (< (length a) (length b)))))))) (ufunc (ess-completing-read "Debug" all-functions nil nil nil nil (or default obj-at-point))) signature default-string out-message) ;; FIXME: Most of the following logic should be in R (if (ess-boolean-command (format "as.character(isGeneric('%s'))\n" ufunc)) ;; it's S4 generic: (save-excursion ;; ask for exact signature (setq signature (ess-completing-read (concat "Method for generic '" ufunc "'") (ess--dbg-get-signatures ufunc) ;signal an error if not found nil t nil nil "*default*")) (if (equal signature "*default*") ;;debug, the default ufunc (ess-command (format "trace('%s', tracer = browser)\n" ufunc) tbuffer) (ess-command (format "trace('%s', tracer = browser, signature = c('%s'))\n" ufunc signature) tbuffer)) (with-current-buffer tbuffer ;; give appropriate message or error (message (buffer-substring-no-properties (point-min) (point-max))))) ;;else, not an S4 generic (when (ess-boolean-command (format "as.character(.knownS3Generics['%s'])\n" ufunc)) ;; it's S3 generic: (setq all-functions (ess-get-words-from-vector (format "local({gens<-methods('%s');as.character(gens[attr(gens, 'info')$visible])})\n" ufunc))) (setq all-functions ;; cannot debug non-visible methods (delq nil (mapcar (lambda (el) (if (not (char-equal ?* (aref el (1- (length el))))) el)) all-functions))) (setq ufunc (ess-completing-read (format "Method for S3 generic '%s'" ufunc) (cons ufunc all-functions) nil t))) (ess-command (format ".ess_dbg_flag_for_debuging('%s')\n" ufunc))))) (defun ess-debug-unflag-for-debugging () "Prompt for the debugged/traced function or method and undebug/untrace it." (interactive) (let ((tbuffer (get-buffer-create " *ess-command-output*")); initial space: disable-undo\ (debugged (ess-get-words-from-vector (if nil ;; FIXME: was checking `ess-developer-packages` (format ".ess_dbg_getTracedAndDebugged(c('%s'))\n" (mapconcat 'identity ess-developer-packages "', '")) ".ess_dbg_getTracedAndDebugged()\n"))) out-message fun def-val) ;; (prin1 debugged) (if (eq (length debugged) 0) (setq out-message "No debugged or traced functions/methods found") (setq def-val (if (eq (length debugged) 1) (car debugged) "*ALL*")) (setq fun (ess-completing-read "Undebug" debugged nil t nil nil def-val)) (if (equal fun "*ALL*" ) (ess-command (concat ".ess_dbg_UndebugALL(c(\"" (mapconcat 'identity debugged "\", \"") "\"))\n") tbuffer) (ess-command (format ".ess_dbg_UntraceOrUndebug(\"%s\")\n" fun) tbuffer)) (with-current-buffer tbuffer (if (= (point-max) 1) ;; not reliable todo: (setq out-message (format "Undebugged '%s' " fun)) (setq out-message (buffer-substring-no-properties (point-min) (point-max))) ;; untrace info or warning, or error occurred ))) (message out-message))) ;;;_ * Kludges and Fixes ;;; delete-char and delete-backward-car do not delete whole intangible text (defadvice delete-char (around ess-delete-backward-char-intangible activate) "When about to delete a char that's intangible, delete the whole intangible region Only do this when #chars is 1" (if (and (eq major-mode 'ess-mode) (= (ad-get-arg 0) 1) (get-text-property (point) 'intangible)) (progn (kill-region (point) (or (next-single-property-change (point) 'intangible) (point-max))) (indent-for-tab-command)) ad-do-it)) (defadvice delete-backward-char (around ess-delete-backward-char-intangible activate) "When about to delete a char that's intangible, delete the whole intangible region Only do this when called interactively and #chars is 1" (if (and (eq major-mode 'ess-mode) (= (ad-get-arg 0) 1) (> (point) (point-min)) (get-text-property (1- (point)) 'intangible)) (progn (let ((beg (or (previous-single-property-change (point) 'intangible) (point-min)))) (kill-region beg (point)))) ad-do-it)) ;; reported as bug#21368 ;; ;; previous-line gets stuck if next char is intangible ;; reported ;; (defadvice previous-line (around ess-fix-cursor-stuck-at-intangible-text activate) ;; "When about to move to previous line when next char is ;; intangible, step char backward first" ;; (when (and (eq major-mode 'ess-mode) ;; (or (null (ad-get-arg 0)) ;; (= (ad-get-arg 0) 1)) ;; (get-text-property (point) 'intangible)) ;; (goto-char (1- (point)))) ;; ad-do-it) ;; (ad-remove-advice 'previous-line 'around 'ess-fix-cursor-stuck-at-intangible-text) (make-obsolete-variable 'ess-dbg-blink-ref-not-found-face 'ess-debug-blink-ref-not-found-face "ESS 13.05") (make-obsolete-variable 'ess-dbg-blink-same-ref-face 'ess-debug-blink-same-ref-face "ESS 13.05") (make-obsolete-variable 'ess-dbg-current-debug-line-face 'ess-debug-current-debug-line-face "ESS 13.05") (make-obsolete-variable 'ess-dbg-error-action nil "ESS 13.05") (make-obsolete-variable 'ess-dbg-error-action-alist 'ess-debug-error-action-alist "ESS 13.05") (make-obsolete-variable 'ess-dbg-blink-interval 'ess-debug-blink-interval "ESS 13.05") (make-obsolete-variable 'ess-dbg-indicator 'ess-debug-indicator "ESS 13.05") (make-obsolete-variable 'ess-dbg-ask-for-file 'ess-debug-ask-for-file "ESS 13.05") (make-obsolete 'ess-dbg-set-error-action 'ess-debug-set-error-action "ESS 13.05") (make-obsolete 'ess-dbg-toggle-error-action 'ess-debug-toggle-error-action "ESS 13.05") (make-obsolete 'ess-dbg-goto-input-event-marker 'ess-debug-goto-input-event-marker "ESS 13.05") (make-obsolete 'ess-dbg-goto-debug-point 'ess-debug-goto-debug-point "ESS 13.05") (make-obsolete 'ess-dbg-insert-in-forward-ring 'ess-debug-insert-in-forward-ring "ESS 13.05") (make-obsolete 'ess-dbg-start 'ess-debug-start "ESS 13.05") (make-obsolete 'ess-dbg-stop 'ess-debug-stop "ESS 13.05") (make-obsolete 'ess-dbg-command-digit 'ess-debug-command-digit "ESS 13.05") (make-obsolete 'ess-dbg-command-n 'ess-debug-command-next "ESS 13.05") (make-obsolete 'ess-dbg-command-Q 'ess-debug-command-quit "ESS 13.05") (make-obsolete 'ess-dbg-command-c 'ess-debug-command-continue "ESS 13.05") (make-obsolete 'ess-dbg-flag-for-debugging 'ess-debug-flag-for-debugging "ESS 13.05") (make-obsolete 'ess-dbg-unflag-for-debugging 'ess-debug-unflag-for-debugging "ESS 13.05") (make-obsolete-variable 'ess-tb-last-input-fringe-face 'ess-tracebug-last-input-fringe-face "ESS 13.05") (make-obsolete-variable 'ess-tb-next-error-function 'ess-tracebug-next-error-function "ESS 13.05") (ess-if-verbose-write "\n<- debug done") (provide 'ess-tracebug) ;;; ess-tracebug.el ends here ess-17.11/lisp/ess-trns.el0000444005071500004540000003342313202324175012314 00000000000000;;; ess-trns.el --- Support for manipulating S transcript files ;; Copyright (C) 1989--1994 Bates, Kademan, Ritter and Smith ;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2012 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: David Smith ;; Maintainer: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for dealing with ESS transcripts. ;;; Code: ; Requires and autoloads (require 'ess) (eval-when-compile (require 'comint) (require 'ess-inf)) (autoload 'ess-eval-region "ess-inf" "[autoload]" t) (autoload 'ess-eval-region-and-go "ess-inf" "[autoload]" t) (autoload 'ess-eval-function "ess-inf" "[autoload]" t) (autoload 'ess-eval-function-and-go "ess-inf" "[autoload]" t) (autoload 'ess-eval-line "ess-inf" "[autoload]" t) (autoload 'ess-eval-line-and-go "ess-inf" "[autoload]" t) (autoload 'ess-eval-line-and-step "ess-inf" "[autoload]" t) (autoload 'comint-previous-prompt "comint" "[autoload]" t) (autoload 'comint-next-prompt "comint" "[autoload]" t) (autoload 'ess-load-file "ess-inf" "[autoload]" t) (autoload 'ess-request-a-process "ess-inf" "(autoload)" nil) (autoload 'ess-get-process-buffer "ess-inf" "(autoload)" nil) (autoload 'ess-switch-to-ESS "ess-inf" "(autoload)" nil) (autoload 'ess-switch-to-end-of-ESS "ess-inf" "(autoload)" nil) (autoload 'ess-eval-linewise "ess-inf" "(autoload)" nil) (autoload 'inferior-ess-get-old-input "ess-inf" "(autoload)" nil) ; ess-transcript-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; In this section: ;;;; ;;;; * The major mode ess-transcript-mode ;;;; * Commands for ess-transcript-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;*;; Major mode definition (defvar ess-transcript-mode-map nil "Keymap for `ess-transcript-mode'.") (unless ess-transcript-mode-map (setq ess-transcript-mode-map (make-sparse-keymap)) (define-key ess-transcript-mode-map "\C-c\C-s" 'ess-switch-process) (define-key ess-transcript-mode-map "\C-c\C-r" 'ess-eval-region) (define-key ess-transcript-mode-map "\C-c\M-r" 'ess-eval-region-and-go) ;; (define-key ess-transcript-mode-map "\M-\C-x" 'ess-eval-function) ;; (define-key ess-transcript-mode-map "\C-c\M-f" 'ess-eval-function-and-go) ;; (define-key ess-transcript-mode-map "\C-c\C-j" 'ess-eval-line) ;; (define-key ess-transcript-mode-map "\C-c\M-j" 'ess-eval-line-and-go) (define-key ess-transcript-mode-map "\C-c\C-k" 'ess-force-buffer-current) (define-key ess-transcript-mode-map "\C-c\C-q" 'ess-quit) (define-key ess-transcript-mode-map "\C-c\C-j" 'ess-transcript-send-command) (define-key ess-transcript-mode-map "\C-c\M-j" 'ess-transcript-send-command-and-move) (define-key ess-transcript-mode-map "\M-\C-a" 'ess-goto-end-of-function-or-para) (define-key ess-transcript-mode-map "\M-\C-e" 'ess-goto-end-of-function-or-para) (define-key ess-transcript-mode-map "\C-c\C-y" 'ess-switch-to-ESS) (define-key ess-transcript-mode-map "\C-c\C-z" 'ess-switch-to-end-of-ESS) (define-key ess-transcript-mode-map "\C-c\C-v" 'ess-display-help-on-object) (define-key ess-transcript-mode-map "\C-c\C-d" 'ess-dump-object-into-edit-buffer) (define-key ess-transcript-mode-map "\C-c\t" 'ess-complete-object-name-deprecated) (define-key ess-transcript-mode-map "\C-a" 'comint-bol) (define-key ess-transcript-mode-map "\M-\t" 'comint-replace-by-expanded-filename) (define-key ess-transcript-mode-map "\M-?" 'comint-dynamic-list-completions) (define-key ess-transcript-mode-map "\C-c\C-k" 'ess-request-a-process) (define-key ess-transcript-mode-map "{" 'ess-electric-brace) (define-key ess-transcript-mode-map "}" 'ess-electric-brace) (define-key ess-transcript-mode-map "\e\C-h" 'ess-mark-function) (define-key ess-transcript-mode-map "\e\C-q" 'ess-indent-exp) ;(define-key ess-transcript-mode-map "\177" 'backward-delete-char-untabify) (define-key ess-transcript-mode-map "\t" 'ess-indent-command) (define-key ess-transcript-mode-map "\C-c\C-p" 'comint-previous-prompt) (define-key ess-transcript-mode-map "\C-c\C-n" 'comint-next-prompt) ;; (define-key ess-transcript-mode-map "\C-c\C-n" 'ess-eval-line-and-step) (define-key ess-transcript-mode-map "\r" 'ess-transcript-send-command-and-move) (define-key ess-transcript-mode-map "\M-\r" 'ess-transcript-send-command) (define-key ess-transcript-mode-map "\C-c\r" 'ess-transcript-copy-command) (define-key ess-transcript-mode-map "\C-c\C-w" 'ess-transcript-DO-clean-region) (define-key ess-transcript-mode-map "\C-c\M-c" 'ess-transcript-clean-buffer) ) (easy-menu-define ess-transcript-mode-menu ess-transcript-mode-map "Menu for use in S transcript mode." '("ESS-trans" ["What is this? (beta)" ess-mouse-me t] ["Describe" describe-mode t] ["About" (ess-goto-info "Transcript Mode") t] ["Send bug report" ess-submit-bug-report t] "------" ["Mark cmd group" mark-paragraph t] ["Previous prompt" comint-previous-prompt t] ["Next prompt" comint-next-prompt t] "------" ["Send and move" ess-transcript-send-command-and-move t] ["Copy command" ess-transcript-copy-command t] ["Send command" ess-transcript-send-command t] ["Clean Region" ess-transcript-DO-clean-region t] ["Clean Whole Buffer" ess-transcript-clean-buffer t] ["Switch S process" ess-switch-process t] )) (if (featurep 'ess-trans) (define-key ess-transcript-mode-map [menu-bar ess-trans] (cons "ess-trans" ess-transcript-mode-menu)) (eval-after-load "ess-trans" '(define-key ess-transcript-mode-map [menu-bar ess-trans] (cons "ess-trans" ess-transcript-mode-menu)))) (defun ess-transcript-mode (alist &optional proc) "Major mode for manipulating {ESS} transcript files. Type \\[ess-transcript-send-command] to send a command in the transcript to the current S process. \\[ess-transcript-copy-command] copies the command but does not execute it, allowing you to edit it in the process buffer first. Type \\[ess-transcript-clean-region] to delete all outputs and prompts in the region, leaving only the S commands. Other keybindings are: \\{ess-transcript-mode-map}" (interactive) (require 'ess-inf) (kill-all-local-variables) (setq buffer-read-only t) ;; to protect the buffer. (ess-setq-vars-local alist); (current-buffer)) (setq major-mode 'ess-transcript-mode) (setq mode-name "ESS Transcript") (use-local-map ess-transcript-mode-map) (set-syntax-table (or inferior-ess-mode-syntax-table ess-mode-syntax-table)) (setq mode-line-process '(" [" ess-local-process-name "]")) (make-local-variable 'ess-local-process-name) (setq ess-local-process-name nil) (unless inferior-ess-prompt ;; For S languages it is set in custom-alist (setq inferior-ess-prompt ;; Do not anchor to bol with `^' (concat "\\(" inferior-ess-primary-prompt "\\|" inferior-ess-secondary-prompt "\\)"))) (make-local-variable 'paragraph-start) (setq paragraph-start (concat "^" inferior-ess-prompt "\\|^\^L")) (make-local-variable 'paragraph-separate) (setq paragraph-separate "^\^L") (make-local-variable 'comint-use-prompt-regexp) (setq comint-use-prompt-regexp t) (make-local-variable 'comint-prompt-regexp) (setq comint-prompt-regexp (concat "^" inferior-ess-prompt)) ;; font-lock support (when inferior-ess-font-lock-keywords ;; new system (setq inferior-ess-font-lock-defaults (ess--extract-default-fl-keywords inferior-ess-font-lock-keywords))) (set (make-local-variable 'font-lock-defaults) '(inferior-ess-font-lock-defaults nil nil ((?\. . "w") (?\_ . "w") (?' . ".")))) ;;; Keep out of the code. (make-local-variable 'indent-tabs-mode) (setq indent-tabs-mode nil) (run-hooks 'ess-transcript-mode-hook)) ;;*;; Commands used in S transcript mode (defun ess-transcript-send-command () "Send the command at point in the transcript to the ESS process. The line should begin with a prompt. The ESS process buffer is displayed if it is not already." (interactive) (let* ((proc (or ess-local-process-name (ess-request-a-process "Evaluate into which process? " t))) (ess-buf (ess-get-process-buffer proc))) (setq ess-local-process-name proc) (if (get-buffer-window ess-buf) nil (display-buffer ess-buf t)) (let ((input (inferior-ess-get-old-input))) (with-current-buffer ess-buf (goto-char (point-max)) (ess-eval-linewise input))))) (defun ess-transcript-send-command-and-move () "Send the command on this line, and move point to the next command." (interactive) ;; (ess-transcript-send-command) ;; This doesn't work properly ;; replacement code begins (let* ((proc (or ess-local-process-name (ess-request-a-process "Evaluate into which process? " t))) (ess-buf (ess-get-process-buffer proc))) (setq ess-local-process-name proc) (if (get-buffer-window ess-buf) nil (display-buffer ess-buf t)) (let ((input (inferior-ess-get-old-input))) (with-current-buffer ess-buf (goto-char (point-max)) (ess-eval-linewise input nil nil nil 1)))) ;; replacement code ends (goto-char ess-temp-point) (comint-next-prompt 1)) (defun ess-transcript-copy-command () "Copy the command at point to the command line of the ESS process." (interactive) (let* ((proc (or ess-local-process-name (ess-request-a-process "Evaluate into which process? " t))) (ess-buf (process-buffer (get-process proc))) (input (inferior-ess-get-old-input))) (setq ess-local-process-name proc) (if (get-buffer-window ess-buf) nil (display-buffer ess-buf t)) (with-current-buffer ess-buf (goto-char (point-max)) (insert input))) (ess-switch-to-end-of-ESS)) (defun ess-transcript-clean-region (beg end even-if-read-only) "Strip the transcript in the region, leaving only (R/S/Lsp/..) commands. Deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Prefix argument means to clean even if the buffer is \\[read-only]." (interactive "r\nP") (unless inferior-ess-prompt (error "Cannot clean ESS transcript region in this mode! That only works in ess-transcript-mode or inferior-ess-mode ('*R*' etc)." ;; Maybe call ess-clean-region-in-new-transcript ?")) )) (let ((do-toggle (and buffer-read-only even-if-read-only)) (ess-prompt-rx (if inferior-ess-secondary-prompt (concat "^\\(\\(" inferior-ess-prompt "\\)\\|\\(" inferior-ess-secondary-prompt "\\)\\)") (concat "^" inferior-ess-prompt)))) (save-excursion (if do-toggle (setq buffer-read-only nil)) (save-restriction (deactivate-mark) (narrow-to-region beg end) (goto-char (point-min)) (delete-non-matching-lines ess-prompt-rx) (goto-char (point-min)) ;; (replace-regexp * * ) : (while (re-search-forward ess-prompt-rx nil t) (replace-match "" nil nil))) (if do-toggle (setq buffer-read-only t))))) ;; unfinished idea :----------------------- ;; (defun ess-clean-region-in-new-transcript (beg end) ;; "Copy the region into a new ess-transcript buffer, and clean it there, ;; using \\[ess-transcript-clean-region]." ;; (interactive "r") ;; (let ((bname (buffer-file-name))) ;; (setq bname (if bname .. ..)) ;; (let ;; (fbase (if fname (file-name-sans-extension (file-name-nondirectory fname)) ;; (buffer-name))) ;; ;; ;; the buffer name should be like a file name ;; (buf-nam ....) ;; (trns-buf (get-buffer-create fbase)) ;; (pop-to-buffer trns-buf) ;; (ess-transcript-mode .....) ;; ))) (defun ess-transcript-DO-clean-region (beg end) "Clean the current via \\[ess-transcript-clean-region] even if the buffer is read-only." (interactive "r") (ess-transcript-clean-region beg end 'In-ANY-case)) (defun ess-transcript-clean-buffer () "Cleanup the whole buffer. Use point-min/max to obey narrow-to-region." (interactive) (ess-transcript-clean-region (point-min) (point-max) 'In-ANY-case)) ; Local variables section ;; This file is automatically placed in Outline minor mode. ;; The file is structured as follows: ;; Chapters: ^L ; ;; Sections: ;;*;; ;; Subsections: ;;;*;;; ;; Components: defuns, defvars, defconsts ;; Random code beginning with a ;;;;* comment ;; Local variables: ;; mode: emacs-lisp ;; mode: outline-minor ;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;; End: ;;; ess-trns.el ends here ess-17.11/lisp/ess-utils.el0000444005071500004540000020124613202324175012466 00000000000000;;; ess-utils.el --- General Emacs utility functions used by ESS ;; Copyright (C) 1998--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2017 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: Martin Maechler ;; Created: 9 Sept 1998 ;; Maintainer: ESS-core ;; This file is part of ESS (Emacs Speaks Statistics). ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: (eval-when-compile (require 'tramp) ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl))) ;;*;; Internal ESS tools and variables (defvar ess-lisp-directory (directory-file-name (file-name-directory (locate-library "ess-site"))) "Directory containing ess-site.el(c) and other ESS lisp files.") (defvar ess-etc-directory nil "Location of the ESS etc/ directory. The ESS etc directory stores various auxillary files that are useful for ESS, such as icons.") (defvar ess-etc-directory-list '("../etc/ess/" "../etc/" "../../etc/ess/" "./etc/") "List of directories, relative to `ess-lisp-directory', to search for etc.") (while (and (listp ess-etc-directory-list) (consp ess-etc-directory-list)) (setq ess-etc-directory (expand-file-name (concat ess-lisp-directory "/" (car ess-etc-directory-list)))) (if (file-directory-p ess-etc-directory) (setq ess-etc-directory-list nil) (setq ess-etc-directory nil) (setq ess-etc-directory-list (cdr ess-etc-directory-list)) (when (null ess-etc-directory-list) (beep 0) (beep 0) (message (concat "ERROR:ess-site.el:ess-etc-directory\n" "Relative to ess-lisp-directory, one of the following must exist:\n" "../etc/ess, ../etc, ../../etc/ess or ./etc")) (sit-for 4)))) (defun ess-message (format-string &rest args) "Shortcut for \\[message] only if `ess-show-load-messages' is non-nil." (when (bound-and-true-p ess-show-load-messages) (message format-string args))) ;;*;; elisp tools (defun ess-goto-line (line) (save-restriction (widen) (goto-char (point-min)) (forward-line (1- line)))) (defun ess-line-end-position (&optional N) "return the 'point' at the end of N lines. N defaults to 1, i.e., current line." (save-excursion (end-of-line N) (point))) (defun ess-search-except (regexp &optional except backward) "Search for a regexp, store as match 1, optionally ignore strings that match exceptions." (interactive) (let ((continue t) (exit nil)) (while continue (if (or (and backward (search-backward-regexp regexp nil t)) (and (not backward) (search-forward-regexp regexp nil t))) (progn (setq exit (match-string 1)) (setq continue (and except (string-match except exit))) (if continue (setq exit nil))) ;;else (setq continue nil)) ) exit)) (defun ess-save-and-set-local-variables () "If buffer was modified, save file and set Local Variables if defined. Return t if buffer was modified, nil otherwise." (interactive) (let ((ess-temp-point (point)) (ess-temp-return-value (buffer-modified-p))) ;; if buffer has changed, save buffer now (before potential revert) (if ess-temp-return-value (save-buffer)) ;; If Local Variables are defined, update them now ;; since they may have changed since the last revert ;; (save-excursion (beginning-of-line -1) (save-match-data (if (search-forward "End:" nil t) (revert-buffer t t))) ;; save-excursion doesn't save point in the presence of a revert ;; so you need to do it yourself (goto-char ess-temp-point) ess-temp-return-value)) (defun ess-get-file-or-buffer (file-or-buffer) "Return file-or-buffer if it is a buffer; otherwise return the buffer associated with the file which must be qualified by it's path; if the buffer does not exist, return nil." (interactive) (if file-or-buffer (if (bufferp file-or-buffer) file-or-buffer (find-buffer-visiting file-or-buffer)))) (defun ess-set-local-variables (alist &optional file-or-buffer) "Set local variables from ALIST in current buffer; if file-or-buffer is specified, perform action in that buffer." (interactive) (if file-or-buffer (set-buffer (ess-get-file-or-buffer file-or-buffer))) (mapcar (lambda (pair) (make-local-variable (car pair)) (set (car pair) (eval (cdr pair)))) alist)) (defun ess-clone-local-variables (from-file-or-buffer &optional to-file-or-buffer) "Clone local variables from one buffer to another buffer." (interactive) (ess-set-local-variables (ess-sas-create-local-variables-alist from-file-or-buffer) to-file-or-buffer)) (defun ess-return-list (ess-arg) "Given an item, if it is a list return it, else return item in a list." (if (listp ess-arg) ess-arg (list ess-arg))) ;; Copyright (C) 1994 Simon Marshall. ;; Author: Simon Marshall ;; LCD Archive Entry: ;; unique|Simon Marshall|Simon.Marshall@mail.esrin.esa.it| ;; Functions and commands to uniquify lists or buffer text (cf. sort). ;; 23-Apr-1994|1.00|~/packages/unique.el.Z| ;; ;; MM: renamed from 'unique' to 'ess-unique', then (defun ess-uniq (list predicate) "Uniquify LIST, stably, deleting elements using PREDICATE. Return the list with subsequent duplicate items removed by side effects. PREDICATE is called with an element of LIST and a list of elements from LIST, and should return the list of elements with occurrences of the element removed. This function will work even if LIST is unsorted. See also `ess-uniq-list'." (let ((list list)) (while list (setq list (setcdr list (funcall predicate (car list) (cdr list)))))) list) (defun ess-uniq-list (items) "Delete all duplicate entries in ITEMS list, calling `ess-uniq'." (ess-uniq items 'delete)) (defun ess-flatten-list (&rest list) "Take the arguments and flatten them into one long list. Drops 'nil' entries." ;; Taken from lpr.el ;; `lpr-flatten-list' is defined here (copied from "message.el" and ;; enhanced to handle dotted pairs as well) until we can get some ;; sensible autoloads, or `flatten-list' gets put somewhere decent. ;; (ess-flatten-list '((a . b) c (d . e) (f g h) i . j)) ;; => (a b c d e f g h i j) (ess-flatten-list-1 list)) (defun ess-flatten-list-1 (list) (cond ((null list) (list)) ((consp list) (append (ess-flatten-list-1 (car list)) (ess-flatten-list-1 (cdr list)))) (t (list list)))) (defun ess-delete-blank-lines () "Convert 2 or more lines of white space into one." (interactive) (save-excursion (goto-char (point-min)) (save-match-data (while (search-forward-regexp "^[ \t]*\n[ \t]*\n" nil t) ;;(goto-char (match-beginning 0)) (delete-blank-lines))))) ;; Parse a line into its constituent parts (words separated by ;; whitespace). Return a list of the words. ;; Taken from rlogin.el, from the comint package, from XEmacs 20.3. (defun ess-line-to-list-of-words (line) (if (listp line) line (let ((list nil) (posn 0)) ;; (match-data (match-data))) (while (string-match "[^ \t\n]+" line posn) (setq list (cons (substring line (match-beginning 0) (match-end 0)) list)) (setq posn (match-end 0))) (store-match-data (match-data)) (nreverse list)))) ;;*;; System (defun ess-revert-wisely () "Revert from disk if file and buffer last modification times are different." (interactive) ; whether or not a revert is needed, force load local variables ; for example, suppose that you change the local variables and then ; save the file, a revert is unneeded, but a force load is (hack-local-variables) (if (not (verify-visited-file-modtime (current-buffer))) (progn (let ((ess-temp-store-point (point))) (revert-buffer t t) (goto-char ess-temp-store-point)) t) nil)) (defun ess-kermit-get (&optional ess-file-arg ess-dir-arg) "Get a file with Kermit. WARNING: Experimental! From your *shell* buffer, start kermit and then log in to the remote machine. Open a file that starts with `ess-kermit-prefix'. From that buffer, execute this command. It will retrieve a file from the remote directory that you specify with the same name, but without the `ess-kermit-prefix'." (interactive) ;; (save-match-data (let ((ess-temp-file (if ess-file-arg ess-file-arg (buffer-name))) (ess-temp-file-remote-directory ess-dir-arg)) (if (string-equal ess-kermit-prefix (substring ess-temp-file 0 1)) (progn ;; I think there is a bug in the buffer-local variable handling in GNU Emacs 21.3 ;; Setting ess-kermit-remote-directory every time is somehow resetting it to the ;; default on the second pass. So, here's a temporary work-around. It will fail ;; if you change the default, so maybe this variable should not be customizable. ;; In any case, there is also trouble with local variables in XEmacs 21.4.9 and ;; 21.4.10. XEmacs 21.4.8 is fine. (if ess-temp-file-remote-directory (setq ess-kermit-remote-directory ess-temp-file-remote-directory) (if (string-equal "." ess-kermit-remote-directory) (setq ess-kermit-remote-directory (read-string "Remote directory to transfer file from: " ess-kermit-remote-directory)))) (setq ess-temp-file-remote-directory ess-kermit-remote-directory) ;; (setq ess-temp-file (substring ess-temp-file (match-end 0))) (ess-sas-goto-shell) (insert "cd " ess-temp-file-remote-directory "; " ess-kermit-command " -s " (substring ess-temp-file 1) " -a " ess-temp-file) (comint-send-input) ;; (insert (read-string "Press Return to connect to Kermit: " nil nil "\C-\\c")) ;; (comint-send-input) ;; (insert (read-string "Press Return when Kermit is ready to recieve: " nil nil ;; (concat "receive ]" ess-sas-temp-file))) ;; (comint-send-input) ;; (insert (read-string "Press Return when transfer is complete: " nil nil "c")) ;; (comint-send-input) (insert (read-string "Press Return when shell is ready: ")) (comint-send-input) (switch-to-buffer (find-buffer-visiting ess-temp-file)) (ess-revert-wisely) )))) (defun ess-kermit-send () "Send a file with Kermit. WARNING: Experimental! From a file that starts with `ess-kermit-prefix', execute this command. It will transfer this file to the remote directory with the same name, but without the `ess-kermit-prefix'." (interactive) ;; (save-match-data (let ((ess-temp-file (expand-file-name (buffer-name))) (ess-temp-file-remote-directory nil)) (if (string-equal ess-kermit-prefix (substring (file-name-nondirectory ess-temp-file) 0 1)) (progn ;; I think there is a bug in the buffer-local variable handling in GNU Emacs 21.3 ;; Setting ess-kermit-remote-directory every time is somehow resetting it to the ;; default on the second pass. Here's a temporary work-around. It will fail ;; if you change the default, so maybe this variable should not be customizable. ;; In any case, there is also trouble with local variables in XEmacs 21.4.9 and ;; 21.4.10. XEmacs 21.4.8 is fine. (if (string-equal "." ess-kermit-remote-directory) (setq ess-kermit-remote-directory (read-string "Remote directory to transfer file to: " ess-kermit-remote-directory))) (setq ess-temp-file-remote-directory ess-kermit-remote-directory) ;; (setq ess-temp-file (substring ess-temp-file (match-end 0))) (ess-sas-goto-shell) (insert "cd " ess-temp-file-remote-directory "; " ess-kermit-command " -a " (substring (file-name-nondirectory ess-temp-file) 1) " -g " ess-temp-file) (comint-send-input) ;; (insert (read-string "Press Return to connect to Kermit: " nil nil "\C-\\c")) ;; (comint-send-input) ;; (insert (read-string "Press Return when Kermit is ready to recieve: " nil nil ;; (concat "receive ]" ess-sas-temp-file))) ;; (comint-send-input) ;; (insert (read-string "Press Return when transfer is complete: " nil nil "c")) ;; (comint-send-input) (insert (read-string "Press Return when shell is ready: ")) (comint-send-input) (switch-to-buffer (find-buffer-visiting ess-temp-file)) (ess-revert-wisely) )))) (defun ess-find-exec (ess-root-arg ess-root-dir) "Given a root directory and the root of an executable file name, find it's full name and path, if it exists, anywhere in the sub-tree." (let* ((ess-tmp-dirs (directory-files ess-root-dir t "^[^.]")) (ess-tmp-return (ess-find-exec-completions ess-root-arg ess-root-dir)) (ess-tmp-dir nil)) (while ess-tmp-dirs (setq ess-tmp-dir (car ess-tmp-dirs) ess-tmp-dirs (cdr ess-tmp-dirs)) (if (file-accessible-directory-p ess-tmp-dir) (setq ess-tmp-return (nconc ess-tmp-return (ess-find-exec ess-root-arg ess-tmp-dir))))) ess-tmp-return)) (defun ess-find-exec-completions (ess-root-arg &optional ess-exec-dir) "Given the root of an executable file name, find all possible completions. Search for the executables in ESS-EXEC-DIR (which defaults to `exec-path' if no value is given)." (let* ((ess-exec-path (if ess-exec-dir (ess-return-list ess-exec-dir) exec-path)) (ess-tmp-exec nil) (ess-tmp-path-count (length ess-exec-path)) (ess-tmp-dir nil) (ess-tmp-files nil) (ess-tmp-file nil)) (while ess-exec-path (setq ess-tmp-dir (car ess-exec-path) ess-exec-path (cdr ess-exec-path)) (when (and (> (length ess-tmp-dir) 0) (file-accessible-directory-p ess-tmp-dir)) ;; the first test above excludes "" from exec-path, which can be ;; problematic with Tramp. (setq ess-tmp-files (file-name-all-completions ess-root-arg ess-tmp-dir)) (while ess-tmp-files (setq ess-tmp-file (concat (file-name-as-directory ess-tmp-dir) (car ess-tmp-files)) ess-tmp-files (cdr ess-tmp-files)) (if (and (file-executable-p ess-tmp-file) (not (file-directory-p ess-tmp-file))) ;; we have found a possible executable, so keep it. (setq ess-tmp-exec (nconc ess-tmp-exec (list ess-tmp-file))))))) ess-tmp-exec)) (defun ess-drop-non-directories (file-strings) "Drop all entries that do not \"look like\" directories." (ess-flatten-list (mapcar 'file-name-directory file-strings))) (defun ess--parent-dir (path n) "Return Nth parent of PATH." (let ((opath path)) (while (and path (> n 0)) (setq path (file-name-directory (directory-file-name opath))) (if (equal path opath) (setq path nil) (setq opath path n (1- n)))) path)) ;;*;; Interaction with inferiors (defmacro ess-when-new-input (time-var &rest body) "BODY is evaluate only if the value of procss variable TIME-VAR is bigger than the time of the last user input (stored in 'last-eval' process variable). TIME-VAR is the name of the process variable which holds the access time. See the code for `ess-synchronize-dirs' and `ess-cache-search-list'. Returns nil when no current process, or process is busy, or time-var > last-eval. Otherwise, execute BODY and return the last value. If BODY is executed, set process variable TIME-VAR to (current-time). Variable *proc* is bound to the current process during the evaluation of BODY. Should be used in `ess-idle-timer-functions' which call the process to avoid excessive requests. " (declare (indent 1) (debug t)) `(with-ess-process-buffer 'no-error (let ((le (process-get *proc* 'last-eval)) (tv (process-get *proc* ',time-var))) (when (and (or (null tv) (null le) (time-less-p tv le)) (not (process-get *proc* 'busy))) (let ((out (progn ,@body))) (process-put *proc* ',time-var (current-time)) out))))) (defmacro ess-execute-dialect-specific (command &optional prompt &rest args) "Execute dialect specific command. -- If command is nil issue warning 'Not available for dialect X' -- If command is a elisp function, execute it with ARGS -- If a string starting with 'http' or 'www', browse with `browse-url', otherwise execute the command in inferior process. -- If a string, interpret as a command to subprocess, and substitute ARGS with `(format ,command ,@args). When PROMPT is non-nil ask the user for a string value and prepend the response to ARGS. If prompt is a string just pass it to `read-string'. If a list, pass it to `ess-completing-read'. " `(if (null ,command) (message "Not implemented for dialect %s" ess-dialect) (let* ((com (if (symbolp ,command) (symbol-function ,command) ,command)) (prompt ',prompt) (resp (and prompt (if (stringp prompt) (read-string prompt) (apply 'ess-completing-read prompt)))) (args (append (list resp) ',args))) (cond ((functionp com) (apply com args)) ((and (stringp com) (string-match "^\\(http\\|www\\)" com)) (setq com (apply 'format com args)) (require 'browse-url) (browse-url com)) ((stringp com) (unless (string-match "\n$" com) (setq com (concat com "\n"))) (setq com (apply 'format com args)) (ess-eval-linewise com)) (t (error "Argument COMMAND must be either a function or a string")))))) (defun ess--inject-code-from-file (file) ;; this is different from ess-load-file (let ((content (with-temp-buffer (insert-file-contents file) (buffer-string)))) (when (string= ess-dialect "R") ;; don't detect intermediate prompts (setq content (concat "{" content "}\n"))) (ess-command content))) (defcustom ess-idle-timer-interval 1 "Number of idle seconds to wait before running function in `ess-idle-timer-functions'." :group 'ess) (defvar ess-idle-timer-functions nil "A list of functions to run each `ess-idle-timer-interval' idle seconds. If your function calls the process, you better use `ess-when-new-input' to wrap your call. If you call the subprocess please respect `ess-can-eval-in-background' variable. These functions are run with `run-hooks'. Use `add-hook' to add symbols to this variable. Most likely you will need a local hook. Then you should specify the LOCAL argument to `add-hook' and initialise it in `ess-mode-hook' or `ess-post-run-hook', or one of the more specialised hooks `ess-r-post-run-hook',`ess-stata-post-run-hook' etc. ") (defun ess--idle-timer-function nil "Internal function executed by `ess--idle-timer'" ;; (while-no-input (run-hooks 'ess-idle-timer-functions)) (require 'timer) (defvar ess--idle-timer (run-with-idle-timer ess-idle-timer-interval 'repeat 'ess--idle-timer-function) "Timer used to run `ess-idle-timer-functions'.") ;;*;; Emacs Integration ;;;*;;; Menus (defun ess--generate-eval-visibly-submenu (menu) '(["yes" (lambda () (interactive) (setq ess-eval-visibly t)) :style radio :enable t :selected (eq ess-eval-visibly t)] ["nowait" (lambda () (interactive) (setq ess-eval-visibly 'nowait)) :style radio :enable t :selected (eq ess-eval-visibly 'nowait) ] ["no" (lambda () (interactive) (setq ess-eval-visibly nil)) :style radio :enable t :selected (eq ess-eval-visibly nil) ])) ;;;*;;; Font Lock (defun ess--extract-default-fl-keywords (keywords) "Extract the t-keywords from `ess-font-lock-keywords'." (delq nil (mapcar (lambda (c) (when (cdr c) (symbol-value (car c)))) (if (symbolp keywords) (symbol-value keywords) keywords)))) (defun ess-font-lock-toggle-keyword (keyword) (interactive (list (intern (ess-completing-read "Keyword to toggle" (mapcar (lambda (el) (symbol-name (car el))) (symbol-value ess-font-lock-keywords)) nil t)))) (let* ((kwds (symbol-value (if (eq major-mode 'ess-mode) ess-font-lock-keywords inferior-ess-font-lock-keywords))) (kwd (assoc keyword kwds))) (unless kwd (error "Keyword %s was not found in (inferior-)ess-font-lock-keywords list" keyword)) (if (cdr kwd) (setcdr kwd nil) (setcdr kwd t)) (let ((mode major-mode) (dialect ess-dialect) (fld (ess--extract-default-fl-keywords kwds))) ;; refresh font-lock defaults in all necessary buffers (mapc (lambda (b) (with-current-buffer b (when (and (eq major-mode mode) (eq ess-dialect dialect)) (setcar font-lock-defaults fld) (font-lock-refresh-defaults)))) (buffer-list))))) (defun ess--generate-font-lock-submenu (menu) "Internal, used to generate ESS font-lock submenu" (append (mapcar (lambda (el) `[,(symbol-name (car el)) (lambda () (interactive) (ess-font-lock-toggle-keyword ',(car el))) :style toggle :enable t :selected ,(cdr el)]) (cond ((eq major-mode 'ess-mode) (symbol-value ess-font-lock-keywords)) ((eq major-mode 'inferior-ess-mode) (symbol-value inferior-ess-font-lock-keywords)))) (list "-----" ["Save to custom" (lambda () (interactive) (let ((kwd (if (eq major-mode 'ess-mode) ess-font-lock-keywords inferior-ess-font-lock-keywords))) (customize-save-variable kwd (symbol-value kwd)))) t]))) ;;;*;;; External modes (defun ess-completing-read (prompt collection &optional predicate require-match initial-input hist def) "Read a string in the minibuffer, with completion. Use `ido-completing-read' if IDO interface is present, or fall back on classical `completing-read' otherwise. Meaning of arguments is as in `completing-read' (PROMPT is automatically suffixed with ': ' and (default %s) when needed). If HIST is null use `ess--completing-hist' as history. See also `ess-use-ido'." (let ((use-ido (and ess-use-ido (featurep 'ido)))) (setq hist (or hist 'ess--completing-hist)) (when (and def (not use-ido)) ;; ido places in front and highlights the default (setq prompt (format "%s(default %s)" prompt def))) (setq prompt (concat prompt ": ")) (if use-ido (let ((reset-ido (and use-ido (not ido-mode))) ;people not using ido but having it) (ido-current-directory nil) (ido-directory-nonreadable nil) (ido-directory-too-big nil) (ido-context-switch-command 'ignore) (ido-enable-flex-matching ess-ido-flex-matching) ;it's fast and useful, may be get into options (ido-choice-list (copy-sequence collection)) ;ido removes the match (reported) sel) (unwind-protect (progn (ido-init-completion-maps) (add-hook 'minibuffer-setup-hook 'ido-minibuffer-setup) (add-hook 'choose-completion-string-functions 'ido-choose-completion-string) (setq sel (ido-read-internal 'list prompt hist def require-match initial-input)) (when hist ;; ido does not push into hist the whole match if C-SPC or RET is used (reported) (unless (string= sel (car (symbol-value hist))) (set hist (cons sel (symbol-value hist)))))) (when reset-ido (remove-hook 'minibuffer-setup-hook 'ido-minibuffer-setup) (remove-hook 'choose-completion-string-functions 'ido-choose-completion-string))) sel) ;; else usual completion (when (and (featurep 'xemacs) ;; xemacs workaround (not (listp (car collection)))) (setq collection (mapcar 'list collection))) (completing-read prompt collection predicate require-match initial-input hist def)))) (defun ess-load-extras (&optional inferior) "Load all the extra features depending on custom settings." (let ((mode (if inferior 'inferior-ess-mode 'ess-mode)) (isR (string-match "^R" ess-dialect))) ;; auto-complete (when (and (boundp 'ac-sources) (if inferior (eq ess-use-auto-complete t) ess-use-auto-complete)) (add-to-list 'ac-modes mode) ;; files should be in front; ugly, but needed (when ess-ac-sources (setq ac-sources (delq 'ac-source-filename ac-sources)) (mapc (lambda (el) (add-to-list 'ac-sources el)) ess-ac-sources) (add-to-list 'ac-sources 'ac-source-filename))) ;; company (when (and (boundp 'company-backends) (if inferior (eq ess-use-company t) ess-use-company)) (when ess-company-backends (set (make-local-variable 'company-backends) (copy-list (append ess-company-backends company-backends))) (delq 'company-capf company-backends))) ;; eldoc) (require 'eldoc) (when (and ess-eldoc-function ;; if mode provide this, it suports eldoc (or (and (not inferior) ess-use-eldoc) (and inferior (eq ess-use-eldoc t)))) (when (> eldoc-idle-delay 0.4) ;; default is too slow for paren help (set (make-local-variable 'eldoc-idle-delay) 0.1)) (set (make-local-variable 'eldoc-documentation-function) ess-eldoc-function) (turn-on-eldoc-mode)) ;; tracebug (when (and ess-use-tracebug inferior isR) (ess-tracebug 1)))) (defmacro ess--execute-electric-command (map &optional prompt wait exit-form &rest args) "Execute single-key comands defined in MAP till a key is pressed which is not part of map. Return the value of the lastly executed command. Single-key input commands are those that once executed do not requre the prefix command for subsequent invocation. PROMPT is passed to `read-event'. If WAIT is t, wait for next input and ignore the keystroke which triggered the command. Each command in map should accept one at least one argument, the most recent event (as read by `read-event'). ARGS are the supplementary arguments passed to the commands. EXIT-FORM should be supplied for a more refined control of the read-even loop. The loop is exited when EXIT-FORM evaluates to t. See examples in the tracebug code. " ;;VS[09-06-2013]: check: it seems that set-temporary-overlay-map is designed ;;for this type of things; see also repeat.el package. `(let* ((ev last-command-event) (command (lookup-key ,map (vector ev))) out exit ) (if (not (or ,wait command)) (message "%s is undefined" (key-description (this-command-keys))) (unless ,wait (setq out (and command (funcall command ev ,@args)))) (while (and (not exit) (setq command (lookup-key ,map (vector (setq ev (read-event ,prompt)))))) (setq out (funcall command ev ,@args)) (sleep-for .01) (setq exit ,exit-form)) (unless exit ;; push only if an event triggered the exit (push ev unread-command-events)) out))) (defvar ess-build-tags-command nil "Command passed to generate tags. If nil, `ess-build-tags-for-directory' uses the mode's imenu regexpresion. Othersiwe, it should be a string with two %s formats: one for directory and another for the output file.") ;;;*;;; Emacs itself (defun ess-yank-cleaned-commands () "Yank and strip the code, leaving only (R/S/Lsp/..) commands. Deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Invoke this command with C-u C-u C-y." (setq yank-window-start (window-start)) (let ((beg (point))) (push-mark beg) (setq this-command t) (insert-for-yank (current-kill 0)) (ess-transcript-clean-region beg (point) nil) (if (eq (point) beg) (message "No commands found")) (if (eq this-command t) (setq this-command 'yank)) )) (defun ess-yank (&optional ARG) "With double prefix (C-u C-u) call `ess-yank-cleaned-commands" (interactive "*P") (if (equal '(16) ARG) (ess-yank-cleaned-commands) (let* ((remapped (command-remapping 'yank (point))) (command (cond ((eq remapped 'ess-yank) 'yank) ((null remapped) 'yank) (t remapped)))) (funcall command ARG)))) (put 'ess-yank 'delete-selection 'yank) (defun ess-build-tags-for-directory (dir tagfile) "Ask for directory and tag file and build tags for current dialect. If the current language defines `ess-build-tags-command' use it and ask the subprocess to build the tags. Otherwise use imenu regexp and call find .. | etags .. in a shell command. You must have 'find' and 'etags' programs installed. Use M-. to navigate to a tag. M-x `visit-tags-table' to append/replace the currently used tag table. If prefix is given, force tag generation based on imenu. Might be useful when different language files are also present in the directory (.cpp, .c etc)." (interactive "DDirectory to tag: GTags file (default TAGS): ") (when (or (eq (length (file-name-nondirectory tagfile)) 0) (file-directory-p tagfile)) (setq tagfile (concat (file-name-as-directory tagfile) "TAGS"))) ;; emacs find-tags doesn't play well with remote TAG files :( (when (file-remote-p tagfile) (require 'tramp) (setq tagfile (with-parsed-tramp-file-name tagfile foo foo-localname))) (when (file-remote-p dir) (setq dir (with-parsed-tramp-file-name dir foo foo-localname))) (if (and ess-build-tags-command (null current-prefix-arg)) (ess-eval-linewise (format ess-build-tags-command dir tagfile)) ;; else generate from imenu (unless (or imenu-generic-expression ess-imenu-generic-expression) ;; need both!! (error "No ess-tag-command found, and no imenu-generic-expression defined")) (let* ((find-cmd (format "find %s -type f -size 1M \\( -regex \".*\\.\\(cpp\\|jl\\|[RsrSch]\\(nw\\)?\\)$\" \\)" dir)) (regs (delq nil (mapcar (lambda (l) (if (string-match "'" (cadr l)) nil ;; remove for time being (format "/%s/\\%d/" (replace-regexp-in-string "/" "\\/" (nth 1 l) t) (nth 2 l)))) imenu-generic-expression))) (tags-cmd (format "etags -o %s --regex='%s' -" tagfile (mapconcat 'identity regs "' --regex='")))) (message "Building tags: %s" tagfile) ;; (dbg (format "%s | %s" find-cmd tags-cmd)) (when (= 0 (shell-command (format "%s | %s" find-cmd tags-cmd))) (message "Building tags .. ok!"))))) ;;;*;;; System ;; trying different viewers; thanks to an original patch for ;; ess-swv.el from Leo : (defun ess-get-ps-viewer () "Get external PostScript viewer to be used from ESS. Use `ess-ps-viewer-pref' when that is executably found by \\[executable-find]. Otherwise try a list of fixed known viewers." (file-name-nondirectory (or (and ess-ps-viewer-pref ; -> ./ess-custom.el (executable-find ess-ps-viewer-pref)) (executable-find "gv") (executable-find "evince") (executable-find "kghostview")))) (defun ess-get-pdf-viewer () "Get external PDF viewer to be used from ESS. Use `ess-pdf-viewer-pref' when that is executably found by \\[executable-find]. Otherwise try a list of fixed known viewers. " (let ((viewer (or ess-pdf-viewer-pref ;; (and (stringp ess-pdf-viewer-pref) ; -> ./ess-custom.el ;; (executable-find ess-pdf-viewer-pref)) (executable-find "evince") (executable-find "kpdf") (executable-find "okular") (executable-find "xpdf") (executable-find "acroread") (executable-find "xdg-open") ;; this one is wrong, (ok for time being as it is used only in swv) (car (ess-get-words-from-vector "getOption(\"pdfviewer\")\n")) ))) (when (stringp viewer) (setq viewer (file-name-nondirectory viewer))) viewer)) ;;*;; UI (defvar ess-current-region-overlay (let ((overlay (make-overlay (point) (point)))) (overlay-put overlay 'face 'highlight) overlay) "The overlay for highlighting currently evaluated region or line.") (defun ess-blink-region (start end) (when ess-blink-region (move-overlay ess-current-region-overlay start end) (run-with-timer ess-blink-delay nil (lambda () (delete-overlay ess-current-region-overlay))))) (defun ess-deactivate-mark () (cond ((and (featurep 'evil) evil-mode) (when (evil-visual-state-p) (evil-normal-state))) ((fboundp 'deactivate-mark) (deactivate-mark)))) ;; SJE: 2009-01-30 -- this contribution from ;; Erik Iverson (defun ess-tooltip-show-at-point (text xo yo) "Show a tooltip displaying 'text' at (around) point, xo and yo are x- and y-offsets for the toolbar from point." (let ( (fx (frame-parameter nil 'left)) (fy (frame-parameter nil 'top)) (fw (frame-pixel-width)) (fh (frame-pixel-height)) frame-left frame-top my-x-offset my-y-offset) ;; The following comment was found before code looking much like that ;; of frame-left and frame-top below in the file ;; tooltip-help.el. I include it here for acknowledgement, and I did observe ;; the same behavior with the Emacs window maximized under Windows XP. ;; -----original comment-------- ;; handles the case where (frame-parameter nil 'top) or ;; (frame-parameter nil 'left) return something like (+ -4). ;; This was the case where e.g. Emacs window is maximized, at ;; least on Windows XP. The handling code is "shamelessly ;; stolen" from cedet/speedbar/dframe.el ;; (contributed by Andrey Grigoriev) (setq frame-left (if (not (consp fx)) fx (if (eq (car fx) '-) (- (x-display-pixel-width) (car (cdr fx)) fw) (car (cdr fx))))) (setq frame-top (if (not (consp fy)) fy (if (eq (car fy) '-) (- (x-display-pixel-height) (car (cdr fy)) fh) (car (cdr fy))))) ;; calculate the offset from point, use xo and yo to adjust to preference (setq my-x-offset (+ (car(window-inside-pixel-edges)) (car(posn-x-y (posn-at-point))) frame-left xo)) (setq my-y-offset (+ (cadr(window-inside-pixel-edges)) (cdr(posn-x-y (posn-at-point))) frame-top yo)) (let ((tooltip-frame-parameters (cons (cons 'top my-y-offset) (cons (cons 'left my-x-offset) tooltip-frame-parameters)))) (tooltip-show text)) )) (defun ess-select-frame-set-input-focus (frame) "Select FRAME, raise it, and set input focus, if possible. Copied almost verbatim from gnus-utils.el (but with test for mac added)." (cond ((featurep 'xemacs) (raise-frame frame) (select-frame frame) (focus-frame frame)) ;; The function `select-frame-set-input-focus' won't set ;; the input focus under Emacs 21.2 and X window system. ;;((fboundp 'select-frame-set-input-focus) ;; (defalias 'gnus-select-frame-set-input-focus ;; 'select-frame-set-input-focus) ;; (select-frame-set-input-focus frame)) (t (raise-frame frame) (select-frame frame) (cond ((and (memq window-system '(x mac)) (fboundp 'x-focus-frame)) (x-focus-frame frame)) ((eq window-system 'w32) (w32-focus-frame frame))) (when focus-follows-mouse (set-mouse-position frame (1- (frame-width frame)) 0))))) (defun ess-do-auto-fill () "This is the same as \\[do-auto-fill] in GNU emacs 21.3, with one major difference: if we could not find a suitable place to break the line, we simply do not break it (instead of breaking after the first word)." (let (fc justify bol give-up (fill-prefix fill-prefix)) (if (or (not (setq justify (current-justification))) (null (setq fc (current-fill-column))) (and (eq justify 'left) (<= (current-column) fc)) (save-excursion (beginning-of-line) (setq bol (point)) (and auto-fill-inhibit-regexp (looking-at auto-fill-inhibit-regexp)))) nil ;; Auto-filling not required (if (memq justify '(full center right)) (save-excursion (unjustify-current-line))) ;; Choose a fill-prefix automatically. (if (and adaptive-fill-mode (or (null fill-prefix) (string= fill-prefix ""))) (let ((prefix (fill-context-prefix (save-excursion (backward-paragraph 1) (point)) (save-excursion (forward-paragraph 1) (point))))) (and prefix (not (equal prefix "")) (setq fill-prefix prefix)))) (while (and (not give-up) (> (current-column) fc)) ;; Determine where to split the line. (let* (after-prefix (fill-point (let ((opoint (point)) bounce (first t)) (save-excursion (beginning-of-line) (setq after-prefix (point)) (and fill-prefix (looking-at (regexp-quote fill-prefix)) (setq after-prefix (match-end 0))) (move-to-column (1+ fc)) ;; Move back to the point where we can break the line. ;; We break the line between word or ;; after/before the character which has character ;; category `|'. We search space, \c| followed by ;; a character, or \c| following a character. If ;; not found, place the point at beginning of line. (while (or first ;; If this is after period and a single space, ;; move back once more--we don't want to break ;; the line there and make it look like a ;; sentence end. (and (not (bobp)) (not bounce) sentence-end-double-space (save-excursion (forward-char -1) (and (looking-at "\\. ") (not (looking-at "\\. "))))) (and (not (bobp)) (not bounce) fill-nobreak-predicate (funcall fill-nobreak-predicate))) (setq first nil) (re-search-backward "[ \t]\\|\\c|.\\|.\\c|\\|^") ;; If we find nowhere on the line to break it, ;; do not break it. Set bounce to t ;; so we will not keep going in this while loop. (if (<= (point) after-prefix) (setq bounce t) (if (looking-at "[ \t]") ;; Break the line at word boundary. (skip-chars-backward " \t") ;; Break the line after/before \c|. (forward-char 1)))) (if enable-multibyte-characters ;; If we are going to break the line after or ;; before a non-ascii character, we may have ;; to run a special function for the charset ;; of the character to find the correct break ;; point. (if (not (and (eq (charset-after (1- (point))) 'ascii) (eq (charset-after (point)) 'ascii))) (fill-find-break-point after-prefix))) ;; Let fill-point be set to the place where we end up. ;; But move back before any whitespace here. (skip-chars-backward " \t") (point))))) ;; See whether the place we found is any good. (if (save-excursion (goto-char fill-point) (and (not (bolp)) ;; There is no use breaking at end of line. (not (save-excursion (skip-chars-forward " ") (eolp))) ;; It is futile to split at the end of the prefix ;; since we would just insert the prefix again. (not (and after-prefix (<= (point) after-prefix))) ;; Don't split right after a comment starter ;; since we would just make another comment starter. (not (and comment-start-skip (let ((limit (point))) (beginning-of-line) (and (re-search-forward comment-start-skip limit t) (eq (point) limit))))))) ;; Ok, we have a useful place to break the line. Do it. (let ((prev-column (current-column))) ;; If point is at the fill-point, do not `save-excursion'. ;; Otherwise, if a comment prefix or fill-prefix is inserted, ;; point will end up before it rather than after it. (if (save-excursion (skip-chars-backward " \t") (= (point) fill-point)) (funcall comment-line-break-function t) (save-excursion (goto-char fill-point) (funcall comment-line-break-function t))) ;; Now do justification, if required (if (not (eq justify 'left)) (save-excursion (end-of-line 0) (justify-current-line justify nil t))) ;; If making the new line didn't reduce the hpos of ;; the end of the line, then give up now; ;; trying again will not help. (if (>= (current-column) prev-column) (setq give-up t))) ;; No good place to break => stop trying. (setq give-up t)))) ;; Justify last line. (justify-current-line justify t t) t))) ;;*;; Syntax (defun ess-containing-sexp-position () (cadr (syntax-ppss))) (defun ess-code-end-position () "Like (line-end-position) but stops at comments" (save-excursion (goto-char (1+ (line-end-position))) (forward-comment -1) (point))) ;; FIXME: The following function pattern stuff is specific to R but is ;; used throughout ESS (defvar ess-r-set-function-start ;; [MGAR].. <=> {setMethod(), set[Group]Generic(), setAs(), setReplaceMethod()} ;; see also set-S4-exp in ess-r-function-pattern below "^set[MGAR][GMa-z]+\\s-?(") (defvar ess-function-pattern nil ; in R set to ess-r-function-pattern "Regexp to match the beginning of a function in S buffers.") (defvar ess-r-symbol-pattern "\\(\\sw\\|\\s_\\)" "The regular expression for matching an R symbol") (defvar ess-r-name-pattern (concat "\\(" ess-r-symbol-pattern "+\\|\\(`\\).+`\\)") "The regular expression for matching a R name.") (let* ((Q "\\s\"") ; quote (repl "\\(<-\\)?") ; replacement (function) (Sym-0 "\\(\\sw\\|\\s_\\)") ; symbol (Symb (concat Sym-0 "+")) (xSymb "[^ \t\n\"']+") ;; (concat "\\[?\\[?" Sym-0 "*")); symbol / [ / [[ / [symbol / [[symbol ;; FIXME: allow '%foo%' but only when quoted; don't allow [_0-9] at beg. (_or_ "\\)\\|\\(") ; OR (space "\\(\\s-\\|\n\\)*") ; white space (part-1 (concat "\\(" ;;--------outer Either------- "\\(\\(" ; EITHER Q xSymb Q ; any function name between quotes _or_ "\\(^\\|[ ]\\)" Symb ; (beginning of name) + ess-r-symbol-pattern "\\)\\)")) ; END EITHER OR (set-S4-exp (concat "^set\\(As\\|Method\\|Generic\\|GroupGeneric\\|ReplaceMethod\\)(" ; S4 ... Q xSymb Q "," space ;; and now often `` signature(......), : '' ".*" ;; <<< FIXME ??? )) (part-2 (concat "\\|" ;;--------outer Or --------- set-S4-exp "\\)" ;;--------end outer Either/Or------- "\\(" space "\\s<.*\\s>\\)*" ; whitespace, comment ;; FIXME: in principle we should skip 'definition *= *' here space "function\\s-*(" ; whitespace, function keyword, parenthesis ))) (defvar ess-r-function-pattern (concat part-1 "\\s-*\\(<-\\|=\\)" ; whitespace, assign part-2) "The regular expression for matching the beginning of an R function.") (defvar ess-s-function-pattern (concat part-1 "\\s-*\\(<-\\|_\\|=\\)" ; whitespace, assign (incl. "_") part-2) "The regular expression for matching the beginning of an S function.")) (defvar ess--funname.start nil) (defun ess--funname.start (&optional look-back) "If inside a function call, return (FUNNAMME . START) where FUNNAME is a function name found before ( and START is where FUNNAME starts. LOOK-BACK is a number of characters to look back; defaults to 2000. As the search might get quite slow for files with thousands of lines. Also store the cons in 'ess--funname.start for potential use later." (save-excursion (save-restriction (let* ((proc (get-buffer-process (current-buffer))) (mark (and proc (process-mark proc)))) (if (and mark (>= (point) mark)) (narrow-to-region mark (point))) (and ess-noweb-mode (ess-noweb-narrow-to-chunk)) (unless (ess-inside-string-p) (setq ess--funname.start (condition-case nil ;; check if it is inside a functon (progn ;; for the sake of big buffers, look only 1000 chars back (narrow-to-region (max (point-min) (- (point) 1000)) (point)) (up-list -1) (while (not (looking-at "(")) (up-list -1)) (let ((funname (symbol-name (symbol-at-point)))) (when (and funname (not (member funname ess-S-non-functions))) (cons funname (- (point) (length funname)))) )) (error nil)) )))))) (defun ess-function-arguments (funname &optional proc) "Get FUNARGS from cache or ask the process for it. Return FUNARGS - a list with the first element being a cons (package_name . time_stamp_of_request), second element is a string giving arguments of the function as they appear in documentation, third element is a list of arguments of all methods. If package_name is nil, and time_stamp is less recent than the time of the last user interaction to the process, then update the entry. Package_name is also nil when funname was not found, or funname is a special name that contains :,$ or @. If PROC is given, it should be an ESS process which should be queried for arguments. " (when (and funname ;; usually returned by ess--funname.start (might be nil) (or proc (ess-process-live-p))) (let* ((proc (or proc (get-process ess-local-process-name))) (args (gethash funname (process-get proc 'funargs-cache))) (pack (caar args)) (ts (cdar args))) (when (and args (and (time-less-p ts (process-get proc 'last-eval)) (or (null pack) (equal pack "")))) ;; reset cache (setq args nil)) (or args (cadr (assoc funname (process-get proc 'funargs-pre-cache))) (and (not (process-get proc 'busy)) (with-current-buffer (ess-command (format ess-funargs-command (ess-quote-special-chars funname)) nil nil nil nil proc) (goto-char (point-min)) (when (re-search-forward "(list" nil t) (goto-char (match-beginning 0)) (setq args (ignore-errors (eval (read (current-buffer))))) (if args (setcar args (cons (car args) (current-time))))) ;; push even if nil (puthash (substring-no-properties funname) args (process-get proc 'funargs-cache)))))))) (defun ess-symbol-at-point () "Like `symbol-at-point' but consider fully qualified names. Fully qualified names include accessor symbols (like aaa$bbb and aaa@bbb in R)." (with-syntax-table (or ess-mode-completion-syntax-table ess-mode-syntax-table (syntax-table)) (symbol-at-point))) (defun ess-symbol-start () "Get initial position for objects completion. Symbols are fully qualified names that include accessor symbols (like aaa$bbb and aaa@bbb in R)." (let ((beg (car (with-syntax-table (or ess-mode-completion-syntax-table ess-mode-syntax-table (syntax-table)) (bounds-of-thing-at-point 'symbol))))) (when (and beg (not (save-excursion (goto-char beg) (looking-at "/\\|.[0-9]")))) beg))) (defun ess-arg-start () "Get initial position for args completion" (when (not (ess-inside-string-p)) (when (ess--funname.start) (if (looking-back "[(,]+[ \t\n]*" nil) (point) (ess-symbol-start))))) (defun ess-inside-string-or-comment-p (&optional pos) "Return non-nil if POSition [defaults to (point)] is inside string or comment (according to syntax)." ;;FIXME (defun ess-calculate-indent ..) can do that ... (interactive) (setq pos (or pos (point))) (let ((ppss (syntax-ppss pos))) (or (car (setq ppss (nthcdr 3 ppss))) (car (setq ppss (cdr ppss))) (nth 3 ppss)))) (defun ess-inside-string-p (&optional pos) "Return non-nil if point is inside string (according to syntax)." (interactive) ;; when narrowing the buffer in iESS the ppss cahce is screwed:( But it is ;; very fast, so don't bother for now. (let ((pps (syntax-ppss pos))) (nth 3 pps)) ;; (nth 3 (parse-partial-sexp (point-min) pos)) ) (defun ess-inside-comment-p (&optional pos) "Return non-nil if point is inside string (according to syntax)." (interactive) (setq pos (or pos (point))) (save-excursion (or (when font-lock-mode ;; this is a shortcut (works well usually) (let ((face (get-char-property pos 'face))) (eq 'font-lock-comment-face face))) (nth 4 (parse-partial-sexp (progn (goto-char pos) (point-at-bol)) pos))))) (defun ess-inside-brackets-p (&optional pos curly?) "Return t if position POS is inside brackets. POS defaults to point if no value is given. If curly? is non nil also return t if inside curly brackets." (save-excursion (let ((ppss (syntax-ppss pos)) (r nil)) (while (and (> (nth 0 ppss) 0) (not r)) (goto-char (nth 1 ppss)) (when (or (char-equal ?\[ (char-after)) (and curly? (char-equal ?\{ (char-after)))) (setq r t)) (setq ppss (syntax-ppss))) r))) ;;*;; String manipulation (defun ess-quote-special-chars (string) (replace-regexp-in-string "\"" "\\\\\\&" (replace-regexp-in-string ;; replace backslashes "\\\\" "\\\\" string nil t))) ;; simple alternative to ess-read-object-name-default of ./ess-inf.el : ;; is "wrongly" returning "p1" for word "p1.part2" : (defun ess-extract-word-name () "Get the word you're on (cheap algorithm). Use `ess-read-object-name-default' for a better but slower version." (save-excursion (re-search-forward "\\<\\w+\\>" nil t) (buffer-substring (match-beginning 0) (match-end 0)))) (defun ess-rep-regexp (regexp to-string &optional fixedcase literal verbose) "Instead of (replace-regexp..) -- do NOT replace in strings or comments. If FIXEDCASE is non-nil, do *not* alter case of replacement text. If LITERAL is non-nil, do *not* treat `\\' as special. If VERBOSE is non-nil, (message ..) about replacements." (let ((case-fold-search (and case-fold-search (not fixedcase))); t <==> ignore case in search (ppt (point)); previous point (p)) (while (and (setq p (re-search-forward regexp nil t)) (< ppt p)) (setq ppt p) (cond ((not (ess-inside-string-or-comment-p (1- p))) (if verbose (let ((beg (match-beginning 0))) (message "buffer in (match-beg.,p)=(%d,%d) is '%s'" beg p (buffer-substring beg p)))) (replace-match to-string fixedcase literal) ;;or (if verbose (setq pl (append pl (list p)))) ))) ;;or (if (and verbose pl) ;;or (message "s/%s/%s/ at %s" regexp to-string pl)) ) ) (defun ess-replace-regexp-dump-to-src (regexp to-string &optional dont-query verbose ensure-mode) "Depending on dont-query, call `ess-rep-regexp' or `query-replace-regexp' from the beginning of the buffer." (save-excursion (if (and ensure-mode (not (equal major-mode 'ess-mode))) (ess-mode)) (goto-char (point-min)) (if dont-query (ess-rep-regexp regexp to-string nil nil verbose) (query-replace-regexp regexp to-string nil)))) (defun ess-space-around (word &optional from verbose) "Replace-regexp .. ensuring space around all occurences of WORD, starting from FROM {defaults to (point)}." (interactive "d\nP"); Defaults: point and prefix (C-u) (save-excursion (goto-char from) (ess-rep-regexp (concat "\\([^ \t\n]\\)\\(\\<" word "\\>\\)") "\\1 \\2" nil nil verbose) (goto-char from) (ess-rep-regexp (concat "\\(\\<" word "\\>\\)\\([^ \t\n]\\)") "\\1 \\2" nil nil verbose) ) ) (defun ess-time-string (&optional clock) "Returns a string for use as a timestamp. + hr:min if CLOCK is non-nil, like \"13 Mar 1992\". Redefine to taste." (format-time-string (concat "%e %b %Y" (if clock ", %H:%M")))) (defun ess-replace-in-string (str regexp newtext &optional literal) "Replace all matches in STR for REGEXP with NEWTEXT string. Optional LITERAL non-nil means do a literal replacement. Otherwise treat \\ in NEWTEXT string as special: \\& means substitute original matched text, \\N means substitute match for \(...\) number N, \\\\ means insert one \\." (if (not (stringp str)) (error "(replace-in-string): First argument must be a string: %s" str)) (if (stringp newtext) nil (error "(replace-in-string): 3rd arg must be a string: %s" newtext)) (let ((rtn-str "") (start 0) (special) match prev-start) (while (setq match (string-match regexp str start)) (setq prev-start start start (match-end 0) rtn-str (concat rtn-str (substring str prev-start match) (cond (literal newtext) (t (mapconcat (function (lambda (c) (if special (progn (setq special nil) (cond ((eq c ?\\) "\\") ((eq c ?&) (substring str (match-beginning 0) (match-end 0))) ((and (>= c ?0) (<= c ?9)) (if (> c (+ ?0 (length (match-data)))) ;; Invalid match num (error "(replace-in-string) Invalid match num: %c" c) (setq c (- c ?0)) (substring str (match-beginning c) (match-end c)))) (t (char-to-string c)))) (if (eq c ?\\) (progn (setq special t) nil) (char-to-string c))))) newtext "")))))) (concat rtn-str (substring str start)))) ;;- From: friedman@gnu.ai.mit.edu (Noah Friedman) ;;- Date: 12 Feb 1995 21:30:56 -0500 ;;- Newsgroups: gnu.emacs.sources ;;- Subject: nuke-trailing-whitespace ;;- ;;- This is too trivial to make into a big todo with comments and copyright ;;- notices whose length exceed the size of the actual code, so consider it ;;- public domain. Its purpose is along similar lines to that of ;;- `require-final-newline', which is built in. I hope the names make it ;;- obvious. ;; (add-hook 'write-file-hooks 'nuke-trailing-whitespace) ;;or at least ;; (add-hook 'ess-mode-hook ;; (lambda () ;; (add-hook 'local-write-file-hooks 'nuke-trailing-whitespace))) (defvar ess-nuke-trailing-whitespace-p nil;disabled by default 'ask "*[Dis]activates (ess-nuke-trailing-whitespace). Disabled if `nil'; if `t', it works unconditionally, otherwise, the user is queried. Note that setting the default to `t' may not be a good idea when you edit binary files!") ;;; MM: Newer Emacsen now have delete-trailing-whitespace ;;; -- but no customization like nuke-trailing-whitespace-p .. (defun ess-nuke-trailing-whitespace () "Nuke all trailing whitespace in the buffer. Whitespace in this case is just spaces or tabs. This is a useful function to put on write-file-hooks. If the variable `ess-nuke-trailing-whitespace-p' is `nil', this function is disabled. If `t', unreservedly strip trailing whitespace. If not `nil' and not `t', query for each instance." (interactive) (let ((bname (buffer-name))) (cond ((or (string= major-mode "rmail-mode") (string= bname "RMAIL") nil)); do nothing.. (t (and (not buffer-read-only) ess-nuke-trailing-whitespace-p (save-match-data (save-excursion (save-restriction (widen) (goto-char (point-min)) (cond ((eq ess-nuke-trailing-whitespace-p t) (while (re-search-forward "[ \t]+$" (point-max) t) (delete-region (match-beginning 0) (match-end 0)))) (t (query-replace-regexp "[ \t]+$" ""))))))))) ;; always return nil, in case this is on write-file-hooks. nil)) ;;*;; Debugging tools (defun ess-write-to-dribble-buffer (text) "Write TEXT to dribble ('*ESS*') buffer." (unless (buffer-live-p ess-dribble-buffer) ;; ESS dribble buffer must be re-created. (setq ess-dribble-buffer (get-buffer-create "*ESS*"))) (let (deactivate-mark) (with-current-buffer ess-dribble-buffer (goto-char (point-max)) (insert-before-markers text)))) ;; Shortcut to render "dribbling" statements less cluttering: (defun ess-if-verbose-write (text) "Write TEXT to dribble buffer ('*ESS*') only *if* `ess-verbose'." (if ess-verbose (ess-write-to-dribble-buffer text))) (defun ess-kill-last-line () (save-excursion (goto-char (point-max)) (forward-line -1) (delete-region (point-at-eol) (point-max)))) (defvar ess-adjust-chunk-faces t "Whether to adjust background color in code chunks.") (defvar-local ess-buffer-has-chunks nil "Internal usage: indicates whether a buffer has chunks. This is used to make face adjustment a no-op when a buffer does not contain chunks.") (defvar ess-adjust-face-intensity 2 "Default intensity for adjusting faces.") (defun ess-adjust-face-background (start end &optional intensity) "Adjust face background between BEG and END. On dark background, lighten. Oposite on light." (let* ((intensity (or intensity ess-adjust-face-intensity)) (color (color-lighten-name (face-background 'default) (if (eq (frame-parameter nil 'background-mode) 'light) (- intensity) intensity))) (face (list (cons 'background-color color)))) (with-silent-modifications (ess-adjust-face-properties start end 'face face)))) ;; Taken from font-lock.el. (defun ess-adjust-face-properties (start end prop value) "Tweaked `font-lock-prepend-text-property'. Adds the `ess-face-adjusted' property so we only adjust face once." (let ((val (if (listp value) value (list value))) next prev) (while (/= start end) (setq next (next-single-property-change start prop nil end) prev (get-text-property start prop)) ;; Canonicalize old forms of face property. (and (memq prop '(face font-lock-face)) (listp prev) (or (keywordp (car prev)) (memq (car prev) '(foreground-color background-color))) (setq prev (list prev))) (add-text-properties start next (list prop (append val (if (listp prev) prev (list prev))) 'ess-face-adjusted t)) (setq start next)))) (defun ess-find-overlay (pos prop) (cl-some (lambda (overlay) (when (overlay-get overlay prop) overlay)) (overlays-at pos))) (provide 'ess-utils) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-utils.el ends here ess-17.11/lisp/ess-vst-d.el0000444005071500004540000000605513202324175012364 00000000000000;;; ess-vst-d.el --- ViSta customization ;; Copyright (C) 1997 A. J. Rossini ;; Copyright (C) 1997--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 26 Aug 1997 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file extends the XLispStat configuration for ViSta. ;;; Code: ;;; Requires and Autoloads: (require 'ess-lsp-l) (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (defvar VST-customize-alist '((ess-customize-alist . VST-customize-alist ) (ess-language . "XLS" ) (ess-dialect . "ViSta" ) (ess-loop-timeout . ess-XLS-loop-timeout) (ess-object-name-db-file . "ess-xls-namedb.el" ) (ess-help-sec-regex . " ") (ess-help-sec-keys-alist . " ") (inferior-ess-primary-prompt . "> ?" ) (comint-use-prompt-regexp . t) (inferior-ess-program . inferior-VST-program-name) (inferior-ess-help-command . "(help '%s)\n" ) (inferior-ess-objects-command . "(variables)\n" ) (inferior-ess-exit-command . "(exit)\n" ) (inferior-ess-start-file . nil) ;"~/.ess-VST") ;;(inferior-ess-start-args . nil) ) "Variables to customize for XLS.") (defun VST-mode (&optional proc-name) "Major mode for editing ViSta source. NOT EVEN STARTED." (interactive) (setq ess-customize-alist VST-customize-alist) (lisp-mode)) (defun ViSta () "Call 'ViSta', the extend XLispStat statistical system, from Forrest Young." (interactive) (setq ess-customize-alist VST-customize-alist) (ess-write-to-dribble-buffer (format "(ViSta): ess-dialect=%s , buf=%s\n" ess-dialect (current-buffer))) (inferior-ess)) ; Provide package (provide 'ess-vst-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-vst-d.el ends here ess-17.11/lisp/ess-xls-d.el0000444005071500004540000000724713202324175012362 00000000000000;;; ess-xls-d.el --- XLispStat customization for ESS. ;; Copyright (C) 1997 A. J. Rossini ;; Copyright (C) 1998--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: A.J. Rossini ;; Created: 12 Jun 1997 ;; Maintainer: ESS-core ;; Keywords: statistics, languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the XLispStat customizations for ESS. See ;; ess-lsp-l.el for general Lisp modifications. ;;; Code: (autoload 'inferior-ess "ess-inf" "Run an ESS process.") ;;; Requires and Autoloads: (require 'ess-lsp-l) (defvar ess-help-XLS-sec-keys-alist '((?a . "Args:")) "Sparse online XLS help.") (defvar XLS-editing-alist Lisp-editing-alist) (defvar XLS-customize-alist '((ess-local-customize-alist . 'XLS-customize-alist) (ess-language . "XLS" ) (ess-dialect . "XLS" ) (ess-mode-editing-alist . XLS-editing-alist ) (ess-loop-timeout . ess-XLS-loop-timeout) (ess-object-name-db-file . "ess-xls-namedb.el" ) (ess-help-sec-regex . "^[A-Z. ---]+:$") (ess-help-sec-keys-alist . ess-help-XLS-sec-keys-alist) (inferior-ess-primary-prompt . "> ?" ) (inferior-ess-secondary-prompt . "^" ) (comint-use-prompt-regexp . t) (inferior-ess-program . inferior-XLS-program-name) (inferior-ess-help-command . "(help '%s)\n" ) (inferior-ess-objects-command . "(variables)\n" ) (inferior-ess-exit-command . "(exit)\n" ) ;;(inferior-ess-start-args . "")) (inferior-ess-start-file . nil)) "Variables to customize for XLS.") ;;; The functions of interest (mode, inferior mode) (defun XLS-mode (&optional proc-name) "Major mode for editing XLispStat source. NOT EVEN STARTED." (interactive) (setq ess-customize-alist XLS-customize-alist) (ess-mode XLS-customize-alist proc-name) (setq major-mode 'XLS-mode)) (fset 'xlispstat-mode 'XLS-mode) (defun XLS () "Call 'XLispStat', the Lisp statistical system from Luke Tierney." (interactive) (setq ess-customize-alist XLS-customize-alist) (ess-write-to-dribble-buffer (format "(XLS): ess-dialect=%s , buf=%s\n" ess-dialect (current-buffer))) (inferior-ess)) (defun xls-transcript-mode () "Does the right thing." (interactive) (ess-transcript-mode XLS-customize-alist)) (fset 'XLS-transcript-mode 'xls-transcript-mode) ; Provide package (provide 'ess-xls-d) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-xls-d.el ends here ess-17.11/lisp/ess.el0000444005071500004540000001467113202324175011334 00000000000000;;; ess.el --- Emacs Speaks Statistics: statistical programming within Emacs ;; Copyright (C) 1989--1996 Bates, Kademan, Ritter and Smith ;; Copyright (C) 1997--2010 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Copyright (C) 2011--2015 A.J. Rossini, Richard M. Heiberger, Martin Maechler, ;; Kurt Hornik, Rodney Sparapani, Stephen Eglen and Vitalie Spinu. ;; Author: Doug Bates ;; Ed Kademan ;; Frank Ritter ;; David Smith ;; Created: October 14, 1991 ;; Maintainer: ESS-core ;; Keywords: statistics, languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; PURPOSE ;; ;; Interface to the S, SAS, and XLisp dialects of statistical ;; programming languages, with potential extensions to other ;; languages. Designed to be extendable to most other interactive ;; statistical programming situations. ;; BRIEF OVERVIEW ;; ;; Supports structured editing of S, SAS, and XLisp (statistics ;; programming languages) functions that are integrated with a ;; running process in a buffer. ;; THE ESS MAILING LIST ;; ;; There is an informal mailing list for discussions of ESS. Alpha ;; and beta releases of ESS are also announced here. Send mail ;; to ess-help-request@r-project.org to join. ;; OVERVIEW OF ESS ;; ;; S is a statistics programming language developed at Bell Labs ;; particularly suited for descriptive and exploratory statistics. ;; s-mode is built on top of comint (the general command interpreter ;; mode written by Olin Shivers), and so comint.el (or comint.elc) ;; should be either loaded or in your load path when you invoke it. ;; ;; Aside from the general features offered by comint such as ;; command history editing and job control, inferior S mode ;; allows you to dump and load S objects into and from external ;; files, and to display help on functions. It also provides ;; name completion while you do these. For more detailed ;; information see the documentation strings for inferior-ess, ;; inferior-ess-mode, ess-mode, and comint-mode. There are also ;; many variables and hooks available for customizing (see ;; the variables below that have document strings that start ;; with an "*"). ;; INSTALLATION ;; See README and S-site for details. ;; GETTING RELEASES OF ESS ;; ===> http://ess.r-project.org ;; ;; CREDITS. ;; Thanks to shiba@shun.isac.co.jp (Ken'ichi "Modal" Shibayama) for ;; the indenting code. ;; Thanks also to maechler@stat.math.ethz.ch (Martin Maechler) for ;; suggestions and bug fixes. ;; ess-eval-line-and-step is based on a function by Rod Ball ;; (rod@marcam.dsir.govt.nz) ;; Also thanks from David Smith to the previous authors for all their ;; help and suggestions. ;; And thanks from Richard M. Heiberger, Kurt Hornik, Martin ;; Maechler, and A.J. Rossini to David Smith. ;; BUG REPORTS ;; Please report bugs to ess-bugs@r-project.org ;; Comments, suggestions, words of praise and large cash donations ;; are also more than welcome, but should generally be split between ;; all authors :-). ;;; Code: ;;*;; Requires and autoloads ;;;===================================================== ;;; (defun ess-write-to-dribble-buffer (text) "Write TEXT to dribble ('*ESS*') buffer." (unless (buffer-live-p ess-dribble-buffer) ;; ESS dribble buffer must be re-created. (setq ess-dribble-buffer (get-buffer-create "*ESS*"))) (let (deactivate-mark) (with-current-buffer ess-dribble-buffer (goto-char (point-max)) (insert-before-markers text)))) ;; Shortcut to render "dribbling" statements less cluttering: (defun ess-if-verbose-write (text) "Write TEXT to dribble buffer ('*ESS*') only *if* `ess-verbose'." (if ess-verbose (ess-write-to-dribble-buffer text))) (require 'easymenu) (if (or window-system noninteractive ; compilation! ) (require 'font-lock)) (require 'ess-compat) (require 'ess-custom) (require 'ess-mode) (require 'ess-inf) ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl)) ; ess-mode: editing S/R/XLS/SAS source (autoload 'inferior-ess "ess-inf" "Run [inferior-ess-program], an ess process, in an Emacs buffer" t) (autoload 'ess-dump-object-into-edit-buffer "ess-mode" "Edit an S object." t) (autoload 'ess-parse-errors "ess-mode" "Jump to the last error generated from a sourced file." t) (autoload 'ess-load-file "ess-inf" "Source a file into S.") (autoload 'ess-inside-string-or-comment-p "ess-utils" "Non-nil, if inside string or comment." t) (autoload 'ess-inside-string-p "ess-utils" "Non-nil if inside string." t) (autoload 'ess-do-auto-fill "ess-utils" "substitute for \\[do-auto-fill]." t) (autoload 'ess-rep-regexp "ess-utils" "Replace, but not in string/comment." t) (autoload 'ess-time-string "ess-utils" "Return time-stamp string." t) (autoload 'ess-nuke-trailing-whitespace "ess-utils" "Maybe get rid of trailing blanks." t) ; ess-transcript-mode: editing ``outputs' (autoload 'ess-transcript-mode "ess-trns" "Major mode for editing S transcript files." t) (autoload 'ess-display-help-on-object "ess-help" "Display help on an S object." t) (defalias 'ess-help 'ess-display-help-on-object) (autoload 'ess-goto-info "ess-help" "Jump to the relevant section in the `ess-mode' manual." t) (autoload 'ess-submit-bug-report "ess-help" "Submit a bug report on the `ess-mode' package." t) ;;==> ess-inf.el has its OWN autoload's ! (run-hooks 'ess-mode-load-hook) (provide 'ess) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess.el ends here ess-17.11/lisp/essd-els.el0000444005071500004540000002217413202324175012256 00000000000000;;; essd-els.el --- S-PLUS 3.x at another location customization ;; Copyright (C) 1998 Richard M. Heiberger ;; Copyright (C) 1999--2005 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: December 1998 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This file defines all the S-PLUS 3.x customizations for ess-mode. ;;; Code: (require 'ess-s-lang) (require 'ess-utils) (autoload 'inferior-ess "ess-inf" "Run an ESS process.") (autoload 'ess-mode "ess-mode" "Edit an ESS process.") (defvar S+elsewhere-dialect-name "S+6" "Name of 'dialect' for S-PLUS at another location.") ;easily changeable in a user's .emacs (defvar S+elsewhere-customize-alist (append '((ess-local-customize-alist . 'S+elsewhere-customize-alist) (ess-dialect . S+elsewhere-dialect-name) (ess-loop-timeout . ess-S-loop-timeout);fixme: dialect spec. (ess-object-name-db-file . "ess-spelsewhere-namedb.el" ) (inferior-ess-program . inferior-S-elsewhere-program-name) (inferior-ess-help-command . "help(\"%s\", pager=\"cat\", window=F)\n") (inferior-ess-start-file . nil) ;"~/.ess-S+3") (inferior-ess-start-args . "-i") (ess-STERM . "iESS") ) S+common-cust-alist) "Variables to customize for S+elsewhere") (defun S+elsewhere (&optional proc-name) "Call 'S-PLUS 3.x', the 'Real Thing' from StatSci. This command is obsolete; please use `ess-remote' instead." (interactive) (setq ess-customize-alist S+elsewhere-customize-alist) (ess-write-to-dribble-buffer (format "\n(S+elsewhere): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (inferior-ess) (if inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start))) (defun S+elsewhere-mode (&optional proc-name) "Major mode for editing S+3 source. See `ess-mode' for more help." (interactive) (setq ess-customize-alist S+elsewhere-customize-alist) (ess-mode S+elsewhere-customize-alist proc-name)) (defun S+elsewhere-transcript-mode () "S-PLUS 3.x transcript mode." (interactive) (ess-transcript-mode S+elsewhere-customize-alist)) ;; This REALLY shouldn't need an editing mode. Just a transcript and ;; an inferior process handler. (defun ess-change-alist (item value alist) "Modify ALIST to set VALUE to ITEM. If there is a pair whose car is ITEM, replace its cdr by VALUE. If there is not such pair, create new pair (ITEM . VALUE) and return new alist whose car is the new pair and cdr is ALIST. \[tomo's ELIS like function]" (let ((pair (assoc item alist))) (if pair (progn (setcdr pair value) alist) (cons (cons item value) alist)))) (defun ess-select-alist-dialect (&optional dialect) "Query user for an ESS dialect and return the matching customize-alist." (interactive) (let* ((dialects '("R" "S+" "julia" "arc" "vst" "omg" "s3" "s4" "stata" "sp3" "sp4" "sqpe4" "sp5" "sqpe" "XLS" "SAS")) (dialect (or dialect (ess-completing-read "Dialect" dialects nil t)))) (cond ((string= dialect "julia") ess-julia-customize-alist) ((string= dialect "arc") ARC-customize-alist) ((string= dialect "vst") VST-customize-alist) ((string= dialect "omg") OMG-customize-alist) ((string= dialect "s3") S3-customize-alist) ((string= dialect "s4") S4-customize-alist) ((string= dialect "stata") STA-customize-alist) ((string= dialect "R") ess-r-customize-alist) ((string= dialect "sp3") S+3-customize-alist) ((string= dialect "sp4") S+4-customize-alist) ((string= dialect "sqpe4") Sqpe+4-customize-alist) ((string= dialect "sp5") S+5-customize-alist) ((string= dialect "S+") S+-customize-alist) ((string= dialect "sqpe") Sqpe+-customize-alist) ((string= dialect "XLS") XLS-customize-alist) ((string= dialect "SAS") SAS-customize-alist);was S+elsewhere-customize-alist? (t S+elsewhere-customize-alist) ))) ;; (defun ESS-elsewhere (&optional proc-name) ;; "Call an inferior process from ELSEWHERE. ;; This command is obsolete; please use `ess-remote' instead." ;; (interactive) ;; ;; Need to select a elsewhere-customize-alist ;; (let ((elsewhere-customize-alist (ess-select-alist-dialect))) ;; (ess-change-alist 'inferior-ess-program ;; inferior-ESS-elsewhere-program-name ;; elsewhere-customize-alist) ;; (setq ess-customize-alist elsewhere-customize-alist) ;; (ess-write-to-dribble-buffer ;; (format "\n(ESS-elsewhere): ess-dialect=%s, buf=%s\n" ess-dialect ;; (current-buffer))) ;; (inferior-ess) ;; (if (equal ess-language "S") ;; (if inferior-ess-language-start ;; (ess-eval-linewise inferior-ess-language-start))))) (defun ess-add-ess-process () "Execute this command from within a buffer running a process to add the process to `ess-process-name-alist' and to make it the `ess-current-process-name'. This command will normally be run in a telnet buffer connected to another computer or in a shell or comint buffer on the local computer." (interactive) (let ((proc (get-buffer-process (buffer-name)))) (if (not proc) (error "No process is associated with this buffer.") (set-process-filter proc 'inferior-ess-output-filter) (setq ess-current-process-name (process-name proc)) (add-to-list 'ess-process-name-list (list ess-current-process-name))))) (defvar ess-remote nil "Indicator, t in ess-remote buffers.") (defun ess-remote (&optional proc-name dialect) "Execute this command from within a buffer running a process. It runs `ess-add-ess-process' to add the process to `ess-process-name-alist' and to make it the `ess-current-process-name'. It then prompts the user for an ESS language and sets the editing characteristics appropriately. To use this command, first start a process on a remote computer by manual use of telnet, rlogin, ssh, or some other protocol. Start the relevant program (\"S\" or \"R\" or \"sas -stdio\") in that buffer. Once you are talking to S or R or SAS, then execute `ess-remote' to make the current buffer an inferior-ess buffer with the right behavior for the language you are currently working with. With S and R, use C-c C-n to send lines over. With SAS, use C-c i `ess-eval-line-and-step-invisibly' to send lines over invisibly. DIALECT is the desired ess-dialect. If nil, ask for dialect" (interactive) (ess-add-ess-process) ;; Need to select a remote-customize-alist (let ((ess-customize-alist (ess-select-alist-dialect dialect))) (ess-write-to-dribble-buffer (format "\n(ESS-remote): ess-dialect=%s, buf=%s\n" ess-dialect (current-buffer))) (ess-setq-vars-local ess-customize-alist) (inferior-ess-mode) (set (make-local-variable 'ess-remote) t) (setq ess-local-process-name (or proc-name ess-current-process-name)) (goto-char (point-max)) (when (equal ess-dialect "R") ;; ugly fix for evn variable. What can we do :( (ess-eval-linewise (format "options(pager='%s')\n" inferior-ess-pager) nil nil nil 'wait) (inferior-ess-r-load-ESSR)) (when (equal ess-dialect "S+") (ess-command ess-S+--injected-code)) (when (equal ess-language "SAS") (font-lock-mode 0) (SAS-log-mode) (shell-mode) (setq buffer-read-only nil) (font-lock-mode 1)) (ess-process-put 'funargs-cache (make-hash-table :test 'equal)) (ess-process-put 'funargs-pre-cache nil) (ess-process-put 'accum-buffer-name (format " *%s:accum*" ess-local-process-name)) (ess-load-extras) (when inferior-ess-language-start (ess-eval-linewise inferior-ess-language-start nil nil nil 'wait-prompt)))) ; Provide package (provide 'essd-els) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; essd-els.el ends here ess-17.11/lisp/make-regexp.el0000444005071500004540000002533313202324175012744 00000000000000;;; make-regexp.el --- generate efficient regexps to match strings. ;; Copyright (C) 1994, 1995 Simon Marshall. ;; Author: Simon Marshall ;; Keywords: lisp, matching ;; Version: 1.02 ;; LCD Archive Entry: ;; make-regexp|Simon Marshall|simon@gnu.ai.mit.edu| ;; Generate efficient regexps to match strings.| ;; 11-Jul-1995|1.02|~/functions/make-regexp.el.gz| ;; The archive is archive.cis.ohio-state.edu in /pub/gnu/emacs/elisp-archive. ;;; This file is not part of GNU Emacs. ;;; This program is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 2, or (at your option) ;;; any later version. ;;; This program is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Purpose: ;; ;; To make efficient regexps from lists of strings. ;; For example: ;; ;; (let ((strings '("cond" "if" "while" "let\\*?" "prog1" "prog2" "progn" ;; "catch" "throw" "save-restriction" "save-excursion" ;; "save-window-excursion" "save-match-data" ;; "unwind-protect" "condition-case" "track-mouse"))) ;; (concat "(" (make-regexp strings t))) ;; ;; => "(\\(c\\(atch\\|ond\\(\\|ition-case\\)\\)\\|if\\|let\\*?\\|prog[12n]\\|save-\\(excursion\\|match-data\\|restriction\\|window-excursion\\)\\|t\\(hrow\\|rack-mouse\\)\\|unwind-protect\\|while\\)" ;; ;; To search for the above regexp takes about 70% of the time as for the simple ;; (concat "(\\(" (mapconcat 'identity strings "\\|") "\\)") regexp. ;; ;; Obviously, the more the similarity between strings, the faster the regexp: ;; ;; (make-regexp '("abort" "abs" "accept" "access" "array" "begin" "body" "case" ;; "constant" "declare" "delay" "delta" "digits" "else" "elsif" ;; "entry" "exception" "exit" "function" "generic" "goto" "if" ;; "others" "limited" "loop" "mod" "new" "null" "out" "subtype" ;; "package" "pragma" "private" "procedure" "raise" "range" ;; "record" "rem" "renames" "return" "reverse" "select" ;; "separate" "task" "terminate" "then" "type" "when" "while" ;; "with" "xor")) ;; ;; => "a\\(b\\(ort\\|s\\)\\|cce\\(pt\\|ss\\)\\|rray\\)\\|b\\(egin\\|ody\\)\\|c\\(ase\\|onstant\\)\\|d\\(e\\(clare\\|l\\(ay\\|ta\\)\\)\\|igits\\)\\|e\\(ls\\(e\\|if\\)\\|ntry\\|x\\(ception\\|it\\)\\)\\|function\\|g\\(eneric\\|oto\\)\\|if\\|l\\(imited\\|oop\\)\\|mod\\|n\\(ew\\|ull\\)\\|o\\(thers\\|ut\\)\\|p\\(ackage\\|r\\(agma\\|ivate\\|ocedure\\)\\)\\|r\\(a\\(ise\\|nge\\)\\|e\\(cord\\|m\\|names\\|turn\\|verse\\)\\)\\|s\\(e\\(lect\\|parate\\)\\|ubtype\\)\\|t\\(ask\\|erminate\\|hen\\|ype\\)\\|w\\(h\\(en\\|ile\\)\\|ith\\)\\|xor" ;; ;; To search for the above regexp takes less than 60% of the time of the simple ;; mapconcat equivalent. ;; ;; But even small regexps may be worth it: ;; ;; (make-regexp '("and" "at" "do" "end" "for" "in" "is" "not" "of" "or" "use")) ;; => "a\\(nd\\|t\\)\\|do\\|end\\|for\\|i[ns]\\|not\\|o[fr]\\|use" ;; ;; as this is 10% faster than the mapconcat equivalent. ;; Installation: ;; ;; (autoload 'make-regexp "make-regexp" ;; "Return a regexp to match a string item in STRINGS.") ;; ;; (autoload 'make-regexps "make-regexp" ;; "Return a regexp to REGEXPS.") ;; ;; Since these functions were written to produce efficient regexps, not regexps ;; efficiently, it is probably not a good idea to in-line too many calls in ;; your code, unless you use the following neat trick with `eval-when-compile': ;; ;; (defvar definition-regexp ;; (let ((regexp (eval-when-compile ;; (make-regexp '("defun" "defsubst" "defmacro" "defalias" ;; "defvar" "defconst" "defadvice") t)))) ;; (concat "^(" regexp))) ;; ;; The `byte-compile' code will be as if you had defined the variable thus: ;; ;; (defvar definition-regexp ;; "^(\\(def\\(a\\(dvice\\|lias\\)\\|const\\|macro\\|subst\\|un\\|var\\)\\)") ;; Feedback: ;; ;; Originally written for font-lock, from an idea from Stig's hl319. ;; Please don't tell me that it doesn't produce optimal regexps; I know that ;; already. But (ideas or) code to improve things (are) is welcome. Please ;; test your code and tell me the speed up in searching an appropriate buffer. ;; ;; Please send me bug reports, bug fixes, and extensions, etc. ;; Simon Marshall ;; History: ;; ;; 1.00--1.01: ;; - Made `make-regexp' take `lax' to force top-level parentheses. ;; - Fixed `make-regexps' for MATCH bug and new `font-lock-keywords'. ;; - Added `unfontify' to user timing functions. ;; 1.01--1.02: ;; - Made `make-regexp' `let' a big `max-lisp-eval-depth'. ;; The basic idea is to find the shortest common non-"" prefix each time, and ;; squirrel it out. If there is no such prefix, we divide the list into two so ;; that (at least) one half will have at least a one-character common prefix. ;; In addition, we (a) delay the addition of () parenthesis as long as possible ;; (until we're sure we need them), and (b) try to squirrel out one-character ;; sequences (so we can use [] rather than ()). ;;; Code: (defun make-regexp (strings &optional paren lax) "Return a regexp to match a string item in STRINGS. If optional PAREN non-nil, output regexp parentheses around returned regexp. If optional LAX non-nil, don't output parentheses if it doesn't require them. Merges keywords to avoid backtracking in Emacs' regexp matcher." (let* ((max-lisp-eval-depth (* 1024 1024)) (strings (let ((l strings)) ; Paranoia---make strings unique! (while l (setq l (setcdr l (delete (car l) (cdr l))))) (sort strings 'string-lessp))) (open-paren (if paren "\\(" "")) (close-paren (if paren "\\)" "")) (open-lax (if lax "" open-paren)) (close-lax (if lax "" close-paren)) (completion-ignore-case nil)) (cond ;; If there's only one string, just return it. ((= (length strings) 1) (concat open-lax (car strings) close-lax)) ;; If there's an empty string, pull it out. ((string= (car strings) "") (if (and (= (length strings) 2) (= (length (nth 1 strings)) 1)) (concat open-lax (nth 1 strings) "?" close-lax) (concat open-paren "\\|" (make-regexp (cdr strings)) close-paren))) ;; If there are only one-character strings, make a [] list instead. ((= (length strings) (apply '+ (mapcar 'length strings))) (concat open-lax "[" (mapconcat 'identity strings "") "]" close-lax)) (t ;; We have a list of strings. Is there a common prefix? (let ((prefix (try-completion "" (mapcar 'list strings)))) (if (> (length prefix) 0) ;; Common prefix! Squirrel it out and recurse with the suffixes. (let* ((len (length prefix)) (sufs (mapcar (lambda (str) (substring str len)) strings))) (concat open-paren prefix (make-regexp sufs t t) close-paren)) ;; No common prefix. Is there a one-character sequence? (let ((letters (let ((completion-regexp-list '("^.$"))) (all-completions "" (mapcar 'list strings))))) (if (> (length letters) 1) ;; Do the one-character sequences, then recurse on the rest. (let ((rest (let ((completion-regexp-list '("^..+$"))) (all-completions "" (mapcar 'list strings))))) (concat open-paren (make-regexp letters) "\\|" (make-regexp rest) close-paren)) ;; No one-character sequence, so divide the list into two by ;; dividing into those that start with a particular letter, and ;; those that do not. (let* ((char (substring (car strings) 0 1)) (half1 (all-completions char (mapcar 'list strings))) (half2 (nthcdr (length half1) strings))) (concat open-paren (make-regexp half1) "\\|" (make-regexp half2) close-paren)))))))))) ;; This stuff is realy for font-lock... ;; Ahhh, the wonders of lisp... (defun regexp-span (regexp &optional start) "Return the span or depth of REGEXP. This means the number of \"\\\\(...\\\\)\" pairs in REGEXP, optionally from START." (let ((match (string-match (regexp-quote "\\(") regexp (or start 0)))) (if (not match) 0 (1+ (regexp-span regexp (match-end 0)))))) ;; The basic idea is to concat the regexps together, keeping count of the span ;; of the regexps so that we can get the correct match for hilighting. (defun make-regexps (&rest regexps) "Return a regexp to match REGEXPS Each item of REGEXPS should be of the form: STRING ; A STRING to be used literally. (STRING MATCH FACE DATA) ; Match STRING at depth MATCH with FACE ; and highlight according to DATA. (STRINGS FACE DATA) ; STRINGS is a list of strings FACE is ; to highlight according to DATA. Returns a list of the form: (REGEXP (MATCH FACE DATA) ...) For example: (make-regexps \"^(\" '((\"defun\" \"defalias\" \"defsubst\" \"defadvice\") keyword) \"[ \t]*\" '(\"\\\\([a-zA-Z-]+\\\\)?\" 1 function-name nil t)) => (\"^(\\\\(def\\\\(a\\\\(dvice\\\\|lias\\\\)\\\\|subst\\\\|un\\\\)\\\\)[ ]*\\\\([a-zA-Z-]+\\\\)?\" (1 keyword) (4 function-name nil t)) Uses `make-regexp' to make efficient regexps." (let ((regexp "") (data ())) (while regexps (cond ((stringp (car regexps)) (setq regexp (concat regexp (car regexps)))) ((stringp (nth 0 (car regexps))) (setq data (cons (cons (+ (regexp-span regexp) (nth 1 (car regexps))) (nthcdr 2 (car regexps))) data) regexp (concat regexp (nth 0 (car regexps))))) (t (setq data (cons (cons (1+ (regexp-span regexp)) (cdr (car regexps))) data) regexp (concat regexp (make-regexp (nth 0 (car regexps)) t))))) (setq regexps (cdr regexps))) (cons regexp (nreverse data)))) ;; timing functions removed due to name collisions with Gnus (provide 'make-regexp) ;;; make-regexp.el ends here ess-17.11/lisp/mouseme.el0000444005071500004540000003264313202324175012213 00000000000000;;; mouseme.el --- mouse menu with commands that operate on strings ;; Copyright (C) 1997 by Free Software Foundation, Inc. ;; Author: Howard Melman ;; Keywords: mouse, menu ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; This package provides a command `mouse-me' to be bound to a mouse ;; button. It pops up a menu of commands that operate on strings or a ;; region. The string passed to the selected command is the word or ;; symbol clicked on (with surrounding quotes or other punctuation ;; removed), or the region (if either it was just selected with the ;; mouse or if it was active with `transient-mark-mode' on). If the ;; command accepts a region, the selected region (or the region of the ;; word or symbol clicked on) will be passed to the command. ;; The idea is that for any given string in a buffer you may want to ;; do different things regardless of the mode of the buffer. URLs ;; now appear in email, news articles, comments in code, and in plain ;; text. You may want to visit that URL in a browser or you may just ;; want to copy it to the kill-ring. For an email address you might ;; want to compose mail to it, finger it, look it up in bbdb, copy it to ;; the kill ring. For a word you may want to spell check it, copy it, ;; change its case, grep for it, etc. Mouse-me provides a menu to ;; make this easy. ;; The menu popped up is generated by calling the function in the ;; variable `mouse-me-build-menu-function' which defaults to calling ;; `mouse-me-build-menu' which builds the menu from the variable ;; `mouse-me-menu-commands'. See the documentation for these ;; functions and variables for details. ;; To install, add something like the following to your ~/.emacs: ;; (require 'mouseme) ;; (global-set-key [S-mouse-2] 'mouse-me) ;;; Code: (require 'browse-url) (require 'thingatpt) (eval-when-compile (require 'compile)) ;;;; Variables (defgroup mouseme nil "Popup menu of commands that work on strings." :prefix "mouse-me-" :group 'hypermedia) (defcustom mouse-me-get-string-function 'mouse-me-get-string "*Function used by `mouse-me' to get string when no region selected. The default is `mouse-me-get-string' but this variable may commonly be made buffer local and set to something more appropriate for a specific mode (e.g., `word-at-point'). The function will be called with no arguments and with point at where the mouse was clicked. It can return either the string or to be most efficient, a list of three elements: the string and the beginning and ending points of the string in the buffer." :type 'function :options '(mouse-me-get-string) :group 'mouseme) (defcustom mouse-me-build-menu-function 'mouse-me-build-menu "*Function used by `mouse-me' to build the popup menu. The default is `mouse-me-build-menu' but this variable may commonly be made buffer local and set to something more appropriate for a specific mode. The function will be called with one argument, the string selected, as returned by `mouse-me-get-string-function'." :type 'function :options '(mouse-me-build-menu) :group 'mouseme) (defvar mouse-me-grep-use-extension 't "*If non-nil `mouse-me-grep' grep's in files with current file's extension.") (defcustom mouse-me-menu-commands '(("Copy" . kill-new) ("Kill" . kill-region) ("Capitalize" . capitalize-region) ("Lowercase" . downcase-region) ("Uppercase" . upcase-region) ("ISpell" . ispell-region) "----" ("Browse URL" . browse-url) ("Dired" . dired) ("Execute File" . mouse-me-execute) ("Mail to" . compose-mail) ("Finger" . mouse-me-finger) ("BBDB Lookup" . mouse-me-bbdb) "----" ("Imenu" . imenu) ("Find Tag" . find-tag) ("Grep" . mouse-me-grep) ("Find-Grep" . mouse-me-find-grep) "----" ("Apropos" . apropos) ("Describe Function" . mouse-me-describe-function) ("Describe Variable" . mouse-me-describe-variable) ("Command Info" . mouse-me-emacs-command-info) ("Man Page" . (if (fboundp 'woman) 'woman 'man)) ("Profile Function" . mouse-me-elp-instrument-function)) "*Command menu used by `mouse-me-build-menu'. A list of elements where each element is either a cons cell or a string. If a cons cell the car is a string to be displayed in the menu and the cdr is either a function to call passing a string to, or a list which evals to a function to call passing a string to. If the element is a string it makes a non-selectable element in the menu. To make a separator line use a string consisting solely of hyphens. The function returned from this menu will be called with one string argument. Or if the function has the symbol property `mouse-me-type' and if its value is the symbol `region' it will be called with the beginning and ending points of the selected string. If the value is the symbol `string' it will be called with one string argument." :type '(repeat sexp) :group 'mouseme) (put 'kill-region 'mouse-me-type 'region) (put 'ispell-region 'mouse-me-type 'region) (put 'capitalize-region 'mouse-me-type 'region) (put 'downcase-region 'mouse-me-type 'region) (put 'upcase-region 'mouse-me-type 'region) ;;;; Commands ;;;###autoload (defun mouse-me (event) "Popup a menu of functions to run on selected string or region." (interactive "e") (mouse-me-helper event (lambda () (or (x-popup-menu event (funcall mouse-me-build-menu-function name)) (error "No command to run"))))) ;;;; Exposed Functions ;; Some tests: ;; ;; ;; http://foo.bar.com/sss/ss.html ;; http://www.ditherdog.com/howard/ ;; mailto:howard@silverstream.com ;; howard@silverstream.com ;; ;; import com.sssw.srv.agents.AgentsRsrc; ;; public AgoHttpRequestEvent(Object o, String db, Request r) ;;
    ;; d:\howard\elisp\spoon ;; \howard\elisp\spoon ;; \\absolut\howard\elisp\spoon ;; //absolut/d/Howard/Specs/servlet-2.1.pdf ;; \\absolut\d\Howard\Specs\servlet-2.1.pdf ;; gnuserv-frame. (defun mouse-me-get-string () "Return a string from the buffer of text surrounding point. Returns a list of three elements, the string and the beginning and ending positions of the string in the buffer in that order." (save-match-data (save-excursion (let ((start (point)) beg end str p) (skip-syntax-forward "^ >()\"") (setq end (point)) (goto-char start) (skip-syntax-backward "^ >()\"") (setq beg (point)) (setq str (buffer-substring-no-properties beg end)) ;; remove junk from the beginning (if (string-match "^\\([][\"'`.,?:;!@#$%^&*()_+={}|<>-]+\\)" str) (setq str (substring str (match-end 1)) beg (+ beg (match-end 1)))) ;; remove URL: from the front, it's common in email (if (string-match "^\\(URL:\\)" str) (setq str (substring str (match-end 1)) beg (+ beg (match-end 1)))) ;; remove junk from the end (if (string-match "\\([][\"'.,?:;!@#$%^&*()_+={}|<>-]+\\)$" str) (setq end (- end (length (match-string 1 str))) ; must set end first str (substring str 0 (match-beginning 1)))) (list str beg end))))) (defun mouse-me-build-menu (name) "Return a menu tailored for NAME for `mouse-me' from `mouse-me-menu-commands'." (list "Mouse Me" (cons "Mouse Me" (append (list (cons (if (< (length name) 65) name "...Long String...") 'kill-new) "---") mouse-me-menu-commands)))) ;;;; Commands for the menu (defun mouse-me-emacs-command-info (string) "Look in Emacs info for command named STRING." (interactive "sCommand: ") (let ((s (intern-soft string))) (if (and s (commandp s)) (Info-goto-emacs-command-node s) (error "No command named `%s'" string)))) (defun mouse-me-describe-function (string) "Describe function named STRING." (interactive "sFunction: ") (let ((s (intern-soft string))) (if (and s (fboundp s)) (describe-function s) (error "No function named `%s'" string)))) (defun mouse-me-describe-variable (string) "Desribe variable named STRING." (interactive "sVariable: ") (let ((s (intern-soft string))) (if (and s (boundp s)) (describe-variable s) (error "No variable named `%s'" string)))) (defun mouse-me-elp-instrument-function (string) "Instrument Lisp function named STRING." (interactive "sFunction: ") (let ((s (intern-soft string))) (if (and s (fboundp s)) (elp-instrument-function s) (error "Must be the name of an existing Lisp function")))) (defun mouse-me-execute (string) "Execute STRING as a filename." (interactive "sFile: ") (if (fboundp 'w32-shell-execute) (w32-shell-execute "open" (convert-standard-filename string)) (message "This function currently working only in W32."))) (defun mouse-me-bbdb (string) "Lookup STRING in bbdb." (interactive "sBBDB Lookup: ") (if (fboundp 'bbdb) (bbdb string nil) (error "BBDB not loaded"))) (defun mouse-me-finger (string) "Finger a STRING mail address." (interactive "sFinger: ") (save-match-data (if (string-match "\\(.*\\)@\\([-.a-zA-Z0-9]+\\)$" string) (finger (match-string 1 string) (match-string 2 string)) (error "Not in user@host form: %s" string)))) (defun mouse-me-grep (string) "Grep for a STRING." (interactive "sGrep: ") (require 'compile) (grep-compute-defaults) (let ((ext (mouse-me-buffer-file-extension))) (grep (concat grep-command string (if mouse-me-grep-use-extension (if ext (concat " *" ext) " *")))))) (defun mouse-me-find-grep (string) "Grep for a STRING." (interactive "sGrep: ") (grep-compute-defaults) (let ((reg grep-find-command) (ext (mouse-me-buffer-file-extension)) beg end) (if (string-match "\\(^.+-type f \\)\\(.+$\\)" reg) (setq reg (concat (match-string 1 reg) (if mouse-me-grep-use-extension (concat "-name \"*" ext "\" ")) (match-string 2 reg)))) (grep-find (concat reg string)))) ;;;; Internal Functions (defun mouse-me-buffer-file-extension () "Return the extension of the current buffer's filename or nil. Returned extension is a string begining with a period." (let* ((bfn (buffer-file-name)) (filename (and bfn (file-name-sans-versions bfn))) (index (and filename (string-match "\\.[^.]*$" filename)))) (if index (substring filename index) ""))) (defun mouse-me-helper (event func) "Determine the string to use to process EVENT and call FUNC to get cmd." (let (name sp sm mouse beg end cmd mmtype) ;; temporarily goto where the event occurred, get the name clicked ;; on and enough info to figure out what to do with it (save-match-data (save-excursion (setq sp (point)) ; saved point (setq sm (mark t)) ; saved mark (set-buffer (window-buffer (posn-window (event-start event)))) (setq mouse (goto-char (posn-point (event-start event)))) ;; if there is a region and point is inside it ;; check for sm first incase (null (mark t)) ;; set name to either the thing they clicked on or region (if (and sm (or (and transient-mark-mode mark-active) (eq last-command 'mouse-drag-region)) (>= mouse (setq beg (min sp sm))) (<= mouse (setq end (max sp sm)))) (setq name (buffer-substring beg end)) (setq name (funcall mouse-me-get-string-function)) (if (listp name) (setq beg (nth 1 name) end (nth 2 name) name (car name)) (goto-char mouse) (while (not (looking-at (regexp-quote name))) (backward-char 1)) (setq beg (point)) (setq end (search-forward name)))))) ;; check if name is null, meaning they clicked on no word (if (or (null name) (and (stringp name) (string= name "" ))) (error "No string to pass to function")) ;; popup a menu to get a command to run (setq cmd (funcall func)) ;; run the command, eval'ing if it was a list (if (listp cmd) (setq cmd (eval cmd))) (setq mmtype (get cmd 'mouse-me-type)) (cond ((eq mmtype 'region) (funcall cmd beg end)) ((eq mmtype 'string) (funcall cmd name)) (t (funcall cmd name))))) (provide 'mouseme) ;;; mouseme.el ends here ess-17.11/lisp/msdos.el0000444005071500004540000001467013202324175011666 00000000000000;;; msdos.el --- Run an MS-DOS shell in an NTemacs buffer with bash as the shell ;; Copyright (C) 1999 Richard M. Heiberger ;; Copyright (C) 2000--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Author: Richard M. Heiberger ;; Created: February 1999 ;; Maintainer: ESS-core ;; Keywords: processes ;; This file is part of ESS. ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; The file msdos.el in the next mail message opens an *msdos* buffer ;; in shell-mode and msdos-minor-mode. When cmdproxy.exe/command.com ;; is the emacs shell, then this gets various setting right that M-x ;; shell currently misses. The function M-x msdos-minor-mode could be ;; automatically run by emacs in shell-mode in that case. ;; When bash is the emacs shell, msdos.el still opens a ;; cmdproxy.exe/command.com shell in the buffer *msdos*. There are ;; occasions when it is necessary to run DOS character-based programs ;; in an emacs window. ;; I followed the suggestion by AndrewI to look at M-x shell and modify ;; it. It turns out not to have been trivial. ;; I've listed it as part of ESS (emacs speaks statistics) for now. I ;; will be happy to sign it over to FSF and have it become part of the ;; standard distribution for windows machines. ;;; Code: (require 'shell); and hence 'comint ;;; Customization and Buffer Variables (defcustom explicit-msdos-shell-file-name "cmdproxy.exe" "*If non-nil, is file name to use for explicitly requested msdos inferior shell." :type '(choice (const :tag "None" nil) file) :group 'shell) (defcustom explicit-msdos-comspec-file-name (if (w32-using-nt) "cmd.exe" "command.com") "*If non-nil, is file name to use for explicitly requested COMSPEC environment variable." :type '(choice (const :tag "None" nil) file) :group 'shell) (make-variable-buffer-local 'msdos-minor-mode) (defvar msdos-minor-mode nil "Non-nil if using msdos-minor mode as a minor mode of some other mode.") (defun msdos () "Run an inferior msdos shell, with I/O through buffer *msdos*. This function is intended to be used in an Ntemacs session in which bash is the primary shell. But sometimes an MSDOS window, within emacs, is also needed. If buffer exists but shell process is not running, make new shell. If buffer exists and shell process is running, just switch to buffer `*msdos*'. Program used comes from variable `explicit-msdos-shell-file-name'. If a file `~/.emacs_SHELLNAME' exists, it is given as initial input (Note that this may lose due to a timing error if the shell discards input when it starts up.) The buffer is put in Shell mode, giving commands for sending input and controlling the subjobs of the shell. See `shell-mode'. See also the variable `shell-prompt-pattern'. The buffer is put into \\[msdos-minor-mode]. See `msdos-minor-mode'. The COMSPEC environment variable in the inferior shell, but not in the emacs process, is set to `explicit-msdos-comspec-file-name'. The SHELL environment variable in the inferior shell, but not in the emacs process, is set to `explicit-msdos-shell-file-name'. The shell file name (sans directories) is used to make a symbol name such as `explicit-csh-args'. If that symbol is a variable, its value is used as a list of arguments when invoking the shell. \(Type \\[describe-mode] in the shell buffer for a list of commands.)" (interactive) (if (not (comint-check-proc "*msdos*")) (let* ((prog explicit-msdos-shell-file-name) (name (file-name-nondirectory prog)) (startfile (concat "~/.emacs_" name)) (xargs-name (intern-soft (concat "explicit-" name "-args"))) shell-buffer (comspec (getenv "COMSPEC")) (shell (getenv "SHELL")) ) (save-excursion (setenv "COMSPEC" explicit-msdos-comspec-file-name) (setenv "SHELL" explicit-msdos-shell-file-name) (set-buffer (apply 'make-comint "msdos" prog (if (and xargs-name (boundp xargs-name)) (symbol-value xargs-name)) (if (file-exists-p startfile) (concat "/k " startfile)))) (setenv "COMSPEC" comspec) (setenv "SHELL" shell) (setq shell-buffer (current-buffer)) (shell-mode) (msdos-minor-mode) (sleep-for 4) ; need to wait, else working too fast! ;;; The `exit' warning should precede the "c:\" prompt. ;;; If not, then increase the sleep-for time! (goto-char (point-min)) (insert "Remember to exit this buffer with `exit'. If you kill the buffer without exiting, you may not be able to shut down Windows cleanly.") (goto-char (point-max))) (pop-to-buffer shell-buffer)) (pop-to-buffer "*msdos*"))) (defun msdos-minor-mode () "Minor mode for running msdos in a shell-mode buffer: a. Uses \\[set-buffer-process-coding-system] to set the coding system to `'raw-text-dos'. The DOS C-m C-l end-of-line is critical. The shell freezes without it. b. The variable `comint-completion-addsuffix' is set to `\\' for directories. c. Prevents echoing of commands. d. strips ctrl-m from output. " (interactive) (setq msdos-minor-mode t) (set (make-local-variable 'comint-completion-addsuffix) '("\\" . " ")) (setq comint-process-echoes t) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) (set-buffer-process-coding-system 'raw-text-dos 'raw-text-dos) ;; buffer-process-coding-system is critical. ) ;; Install ourselves: (put 'msdos-minor-mode 'permanent-local t) (or (assq 'msdos-minor-mode minor-mode-alist) (setq minor-mode-alist (append minor-mode-alist (list '(msdos-minor-mode " msdos"))))) ;; Provide ourselves: (provide 'msdos) ;;; msdos.el ends here ess-17.11/lisp/old/0000755005071500004540000000000013202324175011047 500000000000000ess-17.11/lisp/old/ess-old-contrib.el0000644005071500004540000001254413202324175014323 00000000000000;;; ess-old-contrib.el --- Various utils contributed over the years ;; Copyright (C) 1997--2012 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Created: 1 April 2016 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Code: ;; This is thanks to Ed L Cashin , 03 Mar 2004 : (defun ess-restore-asm-extns () "Remove the S-Plus mode association for .s and .S files added by ESS. Putting the following in ~/.emacs restores emacs' default association between .s or .S files and assembly mode. (add-hook 'ess-mode-hook 'ess-restore-asm-extns) (add-hook 'inferior-ess-mode-hook 'ess-restore-asm-extns)" (interactive) (when (assoc "\\.[qsS]\\'" auto-mode-alist) (setq auto-mode-alist (remassoc "\\.[qsS]\\'" auto-mode-alist)) ;; put .q extention back ;; (add-to-list is in xemacs and GNU emacs) ;; R-mode when in a R/ subdirectory, otherwise S-mode: (add-to-list 'auto-mode-alist '("/R/.*\\.q\\'" . R-mode)) (add-to-list 'auto-mode-alist '("\\.q\\'" . S-mode)) )) ;; From: Sebastian Luque ;; To: ess-help@stat.math.ethz.ch ;; Date: Mon, 01 May 2006 19:17:49 -0500 ;; Without knowing how to tell R to use w3m from within Emacs, and after ;; switching to Konqueror's window for the millionth time, I wrote the ;; following function: ;; This emulates some of the functionality of RSiteSearch() and tests ok in ;; my system GNU Emacs 22.0.50.1 (i486-pc-linux-gnu, X toolkit, Xaw3d scroll ;; bars) of 2006-04-27 on pacem, modified by Debian. This has the benefit of ;; displaying results with whatever you've told browse-url to use; in my ;; case, w3m with the emacs-w3m package. ;; My elisp skills are rather poor, so comments and suggestions for ;; improvement are welcome. ;; -- ;; Seb ;; MM _FIXME_: This only works correctly for Emacs 22.0.50 (alpha) ;; for 21.x it has problems in the (completing-read-multiple .) ;; at the end (defun R-site-search (string) "Search the R archives for STRING, using default criteria. If called with a prefix, options are available for 1) matches per page, 2) sections of the archives to search (separated by value of `crm-default-separator'), 3) for displaying results in long or short formats, and 4) for sorting by any given field. Completion is available for supplying options." (interactive "sSearch string: ") (let ((site "http://search.r-project.org/cgi-bin/namazu.cgi?query=") (okstring (replace-regexp-in-string " +" "+" string))) (if current-prefix-arg (let ((mpp (concat "&max=" (completing-read "Matches per page: " '(("20" 1) ("30" 2) ("40" 3) ("50" 4) ("100" 5))))) (format (concat "&result=" (completing-read "Format: " '("normal" "short") nil t "normal" nil "normal"))) (sortby (concat "&sort=" (completing-read "Sort by: " '(("score" 1) ("date:late" 2) ("date:early" 3) ("field:subject:ascending" 4) ("field:subject:decending" 5) ("field:from:ascending" 6) ("field:from:decending" 7) ("field:size:ascending" 8) ("field:size:decending" 9)) nil t "score" nil "score"))) (restrict (concat "&idxname=" (mapconcat 'identity (completing-read-multiple "Limit search to: " '(("Rhelp02a" 1) ("functions" 2) ("docs" 3) ("Rhelp01" 4)) nil t "Rhelp02a,functions,docs" nil "Rhelp02a,functions,docs") "&idxname=")))) (browse-url (concat site okstring mpp format sortby restrict))) ;; else: without prefix use defaults: (browse-url (concat site okstring "&max=20&result=normal&sort=score" "&idxname=Rhelp02a&idxname=functions&idxname=docs"))))) (provide 'ess-old-contrib) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-old-contrib.el ends here ess-17.11/lisp/old/ess-old-s.el0000644005071500004540000000205213202324175013116 00000000000000 (defvar ess-function-outline-file (concat ess-etc-directory "/function-outline.S") "The file name of the ess-function outline that is to be inserted at point, when \\[ess-insert-function-outline] is used. Placeholders (substituted `at runtime'): $A$ for `Author', $D$ for `Date'.") ;; Use the user's own ~/S/emacs-fun.outline if (s)he has one : --- (let ((outline-file (concat (getenv "HOME") "/S/function-outline.S"))) (if (file-exists-p outline-file) (setq ess-function-outline-file outline-file))) (defun ess-insert-function-outline () "Insert an S function definition `outline' at point. Uses the file given by the variable `ess-function-outline-file'." (interactive) (let ((oldpos (point))) (save-excursion (insert-file-contents ess-function-outline-file) (if (search-forward "$A$" nil t) (replace-match (user-full-name) 'not-upcase 'literal)) (goto-char oldpos) (if (search-forward "$D$" nil t) (replace-match (ess-time-string 'clock) 'not-upcase 'literal))) (goto-char (1+ oldpos)))) ess-17.11/lisp/old/ess-old-site.el0000644005071500004540000003300013202324175013615 00000000000000;;; ess-old-setup.el --- Old setup suggestions from ess-site.ely ;; Copyright (C) 1997--2012 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Created: 1 April 2016 ;; Maintainer: ESS-core ;; Keywords: languages ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; You may need to require ess-old-contrib.el to apply these ;; suggestions: (require 'ess-old-contrib) ;;; Code: ;;; The following require sets ess-local-custom-available to ;;; true if custom is provided at this point. ;;; If it is not provided, but we think it will be available when necessary, ;;; then we can use the following line (uncommented) to make sure that ;;; it will be used. If you have to ask, then you don't need this. ;; (ess-require 'ess-compat) ;; (setq ess-local-custom-available t) ;; NON DEFAULTS: ;;(defvar ess-lisp-directory ;;(directory-file-name "/usr/local/lib/xemacs/site-lisp/ess-/lisp")) ;; >> or replace "ess-" above by "ESS" which would be a symbolic link.. ;; >> This way, your .emacs (or default.el or site-start.el) ;; >> won't have to change with each version of ESS ;; example of "local" or personal use ;;(defvar ess-lisp-directory ;;(directory-file-name "/stat2/faculty/rossini/ESS/lisp")) ;;) ;; Files ending in .q and .S are considered to be S source files ;; Files ending in .St are considered to be S transcript files ;; ;; NB: in standard Emacs, files ending in .s are assembler files. If you ;; want to use assembler. If a user wants to ;; restore the default modes for assembly file extensions, the ;; following can go into ~/.emacs or ~/.xemacs/init.el ;; ;; (add-hook 'ess-mode-hook 'ess-restore-asm-extns) ;; (add-hook 'inferior-ess-mode-hook 'ess-restore-asm-extns) ;; (1.4) Customize the dialects for your setup. ;;; AS OF ESS 5.1.14, if you are using Emacs 20.x, x>3, or XEmacs ;;; 21.x, x>0, you can now use the "Customize" facility for ;;; customization. ;;;; Choices for *(), where * is from inferior-*-program.... ;;; Most sites will not need to use these customized program-names. They are ;;; provided for cases where the program is not on the standard default path. ;;; If the program doesn't get located correctly by the default use of ;;; M-x S+3 (for example), then put the path name for your system into the ;;; the variable inferior-S+3-program-name. If for any reason you want the ;;; default use of M-x S to refer to a different program than S+3, then ;;; redefine inferior-S-program-name. ;;(setq-default inferior-S3-program-name "/disk05/s/S") ;;(setq-default inferior-S+3-program-name "Splus34") ;;(setq-default inferior-S4-program-name "/disk05/s4/S") ;;(setq-default inferior-S+4-program-name "Splus") ;;(setq-default inferior-S+5-program-name "Splus5") ;;(setq-default inferior-S+-program-name "Splus7") ; unix systems ; or ;;(setq-default inferior-S+-program-name "Splus") ; unix systems ;; ;; If you wish to call other versions of R on a Unix system, ESS ;; should auto-detect other versions of R, according to matches to the ;; variable `ess-r-versions' as described in its docstring. Consider ;; changing that variable rather than changing inferior-ess-r-program-name ;; if your version of R is not already auto-detected. ;;(setq-default inferior-R-program-name "R") ; unix systems ;;(setq-default inferior-R-program-name "Rterm") ; MS Windows, see below for path as well ;;(setq-default inferior-R-program-name "C:\\Program Files\\R\\R-2.5.0\\bin\\Rterm.exe") ;;(setq-default inferior-XLS-program-name "xlispstat") ;;(setq-default inferior-ARC-program-name "arc") ;;(setq-default inferior-VST-program-name "vista") ;;(setq-default inferior-SAS-program-name "sas") ;;(setq-default inferior-OMG-program-name "/home/rossini/src/anoncvs/Omegahat/org/omegahat/bin/omegahat") ;;(setq-default inferior-OMG-program-name "omegahat") ;;; The line below is the ESS default and sends the commands window ;;; to emacs, giving the user the opportunity to ;;; (1) edit the output into a clean ess-transcript file before printing, or ;;; (2) print a region of the file. ;;(setq-default inferior-S+4-print-command "S_PRINT_COMMAND=emacsclientw.exe") ;;; The editor and pager output from S+4 and Sqpe+4 are sent by ;;; StatSci default to notepad, effectively using the definition: ;;(setq-default inferior-S+4-editor-pager-command ;; "options(editor='notepad', pager='notepad')") ;;; ;;; ESS sends the output from both commands to an emacs buffer using ;;; the definition: ;;(setq-default inferior-S+4-editor-pager-command ;; "options(editor='emacsclient.exe', pager='emacsclientw.exe')") ;;; These commands are for running the PC version of Sqpe of S+4 and ;;; S+6 in an emacs buffer, using the same technology as ESS uses for ;;; Unix S-Plus. Interactive graphics with javagraph are available ;;; in this mode beginning with S-Plus 6.1. ;;; See ess-sp4-d.el or ess-sp6w-d.el ;;; -----> configuration now via custom, see ./ess-custom.el and look for ;;; inferior-Sqpe+... e.g. inferior-Sqpe+6-program-name ;;; see essd-els.el ;;(setq-default inferior-S-elsewhere-program-name "sh") ;;(setq-default inferior-S-elsewhere-program-name "ssh") ;;; You might consider using ssh, if you can! (and if you really do ;;; this, use ssh-agent, etc, for securing your sessions). ;;;; Choice for S(). ;;(setq-default inferior-S-program-name inferior-S+3-program-name) ;; (ess-message "[ess-site:] require 'ess-s4-d ...") ;; (require 'ess-s4-d) ; has become VERY RARE .. ;;(ess-message "[ess-site:] require 'ess-s3-d ...") ;;(require 'ess-s3-d) ; THIS IS RARE. You probably do not have this. ;; Old S+ versions: ;; (if ess-microsoft-p ;; (progn ;; (ess-message "[ess-site:] require 'ess-sp4-d ...") ;; (require 'ess-sp4-d)) ;; ;; else: decent OS ;; (ess-message "[ess-site:] require 'ess-sp5-d ...") ;; (require 'ess-sp5-d)) ;;; Rarely used packages: ;; (ess-message "[ess-site:] require 'ess-xls-d ...") ;; (require 'ess-xls-d) ;; XLispStat ;; (ess-message "[ess-site:] require 'ess-vst-d ...") ;; (require 'ess-vst-d) ;; ViSta ;; (ess-message "[ess-site:] require 'ess-arc-d ...") ;; (require 'ess-arc-d) ;; Arc ;; (ess-message "[ess-site:] require 'ess-omg-d ...") ;; (require 'ess-omg-d) ;; for omegahat ;;; Set this to the name of the program you use to run S or S-PLUS. It ;;; can be an absolute pathname, if you wish. ;;(setq inferior-ess-program "Splus") ;;(setq inferior-ess-program (concat (getenv "SHOME") "/Splus")) ;;; 2.1 Backwards compatibility (roll your own!) ;;; What you want S and R to call... ;;; (3.01) SOME PEOPLE (who will remain nameless) worry that novices ;;; won't like fancy buffer names for their first (and only :-) ;;; process. To number all processes: ;;(setq ess-plain-first-buffername nil) ;;; (3.02) Some people have requested using the program name as part ;;; of the buffer. Turned on for R. ;;(setq ess-use-inferior-program-name-in-buffer-name t) ;;; (3.2) Framepop. Windows produced by ess-execute-objects etc. are ;;; often unnecessarily large. The framepop package makes such ;;; windows appear in a separate, shrink-wrapped frame. This will ;;; also affect other "temporary" windows such as those produced by ;;; C-h k, etc. To enable: ;;; ;;; Works only with Emacs at this time. ;; (cond (window-system ;; (require 'framepop))) ;;; (3.3) ess-keep-dump-files. ;;; Documentation: ;;; *Variable controlling whether to delete dump files after a successful load. ;;; If nil: always delete. If `ask', confirm to delete. If `check', confirm ;;; to delete, except for files created with ess-dump-object-into-edit-buffer. ;;; Anything else (for example `always'): always keep and never delete. ;;; This variable only affects the behavior ;;; of ess-load-file. Dump files are never deleted if an error occurs ;;; during the load. ;;; ;;; RH sez: I find the default `always' keep to be imperative. The previous ;;; default was to throw away ;;; files at the wrong time (I think it was something like, if you M-x ;;; ess-load a file twice, while you are working on it, the file is ;;; deleted). I believe source is real and the ESS object is temporary. ;;; The previous default behavior is dangerous for people who believe this way. ;;; It made sense only for people who believe the object is real ;;; and the source file temporary. ;; (setq ess-keep-dump-files "always") ;;; (3.4) ess-ask-for-ess-directory ;;; If t, will ask for the directory to use. If nil, assumes the ;;; default (usually, the users home directory...). ;;now rather in ./ess-custom.el : (setq ess-ask-for-ess-directory t) ;;; (3.5) ess-directory default (correlated with above) ;;; The default location for running the subprocess is configurable. ;;; By default, that is the default-directory (a lisp variable which ;;; initially contains the directory from which the inferior ESS ;;; statistical package/process is started). ;;; For example, the following function (added to the pre-run-hook, by ;;; the line following it) will set the default directory to be your ;;; home directory: ;;; ;;(defun ajr:ess-set-directory () ;; "Set ess-directory to home." ;; (setq-default ess-directory (file-name-as-directory (getenv "HOME")))) ;;(add-hook 'ess-pre-run-hook 'ajr:ess-set-directory) ;;; ;;; If you replace the setq-default line with: ;;; ;; (setq-default ess-directory (file-name-as-directory ;; (concat (getenv "HOME") "/ess/"))) ;;; ;;; then it will always start up in the directory "ess" in your home ;;; directory. ;;; ;;; The default is to have ess to start up in the current buffer's ;;; directory (the one in which you started the inferior ESS ;;; statistical package/process). This is obtained ;;; by setting ess-directory to nil, i.e. ;; (setq-default ess-directory nil) ; this is the default. ;;; 3.6 Example of formatting changes ;;; Formatting and indentation patterns are defined in ess-custom.el, please ;;; see ess-custom.el for exact definitions of these variable settings. ;;; To change them (eg, follow changes suggested by Terry Therneau), ;;; you need one or both of the following lines: ;;; ;;(setq ess-indent-with-fancy-comments nil) ;;(setq ess-default-style 'CLB) ;;; 4.0 SAS configuration ;;; Beginning with ESS 5.1.13, we have editing options in SAS-mode. ;;; The default behavior is as it was in prior releases. ;;; ;;; There are two sets of alternatives. ;;; 1. Editing SAS-mode files. ;;; 1a. Default: TAB is bound to sas-indent-line. ;;; Current line is correctly indented as SAS code. Equivalent to ;;;(setq ess-sas-edit-keys-toggle nil) ;; default TAB in sas-mode ;;; 1b. Optional: TAB is bound to tab-to-tab-stop and inserts up to 4 ;;; columns at a time. C-TAB moves backwards and deletes characters ;;; up to 4 columns at a time. ;;; The following line is for the optional behavior. ;;;(setq ess-sas-edit-keys-toggle t) ;; optional TAB and C-TAB in sas-mode ;;; Use the function call (ess-sas-edit-keys-toggle) ;;; to change the setting after the first SAS-mode buffer has been created. ;;; 1c. You can also define C-TAB in all modes by Option 2b (below). ;;; ;;; 2. Managing submitted SAS jobs with function keys. ;;; 2a. Default: To define the function keys in ESS[SAS] mode only, ;;; you will need, at most, one of the following two lines. ;;;(setq ess-sas-local-unix-keys t) ;; F2-F12 bound in ESS[SAS] mode ;;;(setq ess-sas-local-pc-keys t) ;; F2-F12 bound in ESS[SAS] mode ;;; ;;; 2b. Options: To define the function keys in all modes, ;;; you will need, at most, one of the following two lines. ;;;(setq ess-sas-global-unix-keys t) ;; F2-F12 bound in all modes ;;;(setq ess-sas-global-pc-keys t) ;; F2-F12 bound in all modes ;;; ;;; 3. If it is more convenient to have "*Async Shell Command*" ;;; in same-window-buffer-names, then: ;;;(ess-same-window-async) ;;; ;;;(defvar sas-program "sas" "*Name of program which runs sas.") ;;; ;;;(defvar sas-indent-width 4 "*Amount to indent sas statements") ;; To remove toolbar support under ESS, add "(setq ess-use-toolbar nil)" ;; to your ~/.emacs or ~/.xemacs/init.el before (require 'ess-site) ;;; Customization (and examples) for your site ;;;; =============================================== ;;; (3.1) Font-lock ;; The following two expressions automatically enable font-lock-mode ;; for ess-mode and inferior-ess-mode buffers. ;; ;; no longer requiring (window-system) here: ;; (when ess-font-lock-mode ;; (add-hook 'ess-mode-hook 'turn-on-font-lock t) ;; (add-hook 'ess-transcript-mode-hook 'turn-on-font-lock t) ;; (add-hook 'Rd-mode-hook 'turn-on-font-lock t) ;; (add-hook 'inferior-ess-mode-hook 'turn-on-font-lock t)) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-old-setup.el ends here ess-17.11/lisp/tmp/0000755005071500004540000000000013202324175011071 500000000000000ess-17.11/lisp/tmp/ess-dump.el0000644005071500004540000001715513202324175013101 00000000000000;;; ess-dump.el --- Getting objects into text files for editing ;; Copyright (C) 2000--2004 A.J. Rossini, Richard M. Heiberger, Martin ;; Maechler, Kurt Hornik, Rodney Sparapani, and Stephen Eglen. ;; Original Author: A.J. Rossini ;; Created: 3 Sept 2000 ;; Maintainers: ESS-core ;; This file is part of ESS ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;;; Commentary: ;; Code for sending statistical objects to text files for editing. ;; ;; THIS IS STRICTLY NOT USED, BUT IS FOR PLANNING. ;;; Code: ; Requires and autoloads (require 'ess) (defun ess-check-source (fname) "If file FNAME has an unsaved buffer, offer to save it. Returns t if the buffer existed and was modified, but was not saved." (let ((buff (get-file-buffer fname))) ;; RMH: Corrections noted below are needed for C-c C-l to work ;; correctly when issued from *S* buffer. ;; The following barfs since ;; 1. `if' does not accept a buffer argument, `not' does. ;; 2. (buffer-file-name) is not necessarily defined for *S* ;;(if buff ;; (let ((deleted (not (file-exists-p (buffer-file-name))))) ;; Next 2 lines are RMH's solution: (if (not(not buff)) (let ((deleted (not (file-exists-p fname)))) (if (and deleted (not (buffer-modified-p buff))) ;; Buffer has been silently deleted, so silently save (save-excursion (set-buffer buff) (set-buffer-modified-p t) (save-buffer)) (if (and (buffer-modified-p buff) (or ess-mode-silently-save (y-or-n-p (format "Save buffer %s first? " (buffer-name buff))))) (save-excursion (set-buffer buff) (save-buffer)))) (buffer-modified-p buff))))) (defun ess-dump-object-into-edit-buffer (object) "Edit an ESS object in its own buffer. Without a prefix argument, this simply finds the file pointed to by `ess-source-directory'. If this file does not exist, or if a prefix argument is given, a dump() command is sent to the ESS process to generate the source buffer." (interactive (progn (ess-force-buffer-current "Process to dump from: ") (ess-read-object-name "Object to edit: "))) (let* ((dirname (file-name-as-directory (if (stringp ess-source-directory) ess-source-directory (save-excursion (set-buffer (process-buffer (get-ess-process ess-local-process-name))) (ess-setq-vars-local ess-customize-alist) (apply ess-source-directory nil))))) (filename (concat dirname (format ess-dump-filename-template object))) (old-buff (get-file-buffer filename))) ;; If the directory doesn't exist, offer to create it (if (file-exists-p (directory-file-name dirname)) nil (if (y-or-n-p ; Approved (format "Directory %s does not exist. Create it? " dirname)) (make-directory (directory-file-name dirname)) (error "Directory %s does not exist." dirname))) ;; Three options: ;; (1) Pop to an existing buffer containing the file in question ;; (2) Find an existing file ;; (3) Create a new file by issuing a dump() command to S ;; Force option (3) if there is a prefix arg (if current-prefix-arg (ess-dump-object object filename) (if old-buff (progn (pop-to-buffer old-buff) (message "Popped to edit buffer.")) ;; No current buffer containing desired file (if (file-exists-p filename) (progn (ess-find-dump-file-other-window filename) (message "Read %s" filename)) ;; No buffer and no file (ess-dump-object object filename)))))) (defun ess-dump-object (object filename) "Dump the ESS object OBJECT into file FILENAME." (let ((complete-dump-command (format inferior-ess-dump-command object filename))) (if (file-writable-p filename) nil (error "Can't dump %s as %f is not writeable." object filename)) ;; Make sure we start fresh (if (get-file-buffer filename) (or (kill-buffer (get-file-buffer filename)) (error "Aborted."))) (ess-command complete-dump-command) (message "Dumped in %s" filename) (ess-find-dump-file-other-window filename) ;; PD, 1Apr97 ;;This ensures that the object gets indented according to ess-mode, ;;not as the R/S deparser does it. At the same time, it gets rid ;;of the mess generated by sending TAB characters to the readline ;;functions in R when you eval-buffer-*. (indent-region (point-min-marker) (point-max-marker) nil) (set-buffer-modified-p nil) ;; Don't make backups for temporary files; it only causes clutter. ;; The ESS object itself is a kind of backup, anyway. (if ess-keep-dump-files nil (make-local-variable 'make-backup-files) (setq make-backup-files nil)) ;; Don't get confirmation to delete dumped files when loading (if (eq ess-keep-dump-files 'check) (setq ess-keep-dump-files nil)) ;; Delete the file if necessary (if ess-delete-dump-files (delete-file (buffer-file-name))))) (defun ess-find-dump-file-other-window (filename) "Find ESS source file FILENAME in another window." (if (file-exists-p filename) nil (ess-write-to-dribble-buffer (format "%s does not exist. Bad dump, starting fresh." filename))) ;; Generate a buffer with the dumped data (find-file-other-window filename) (ess-mode ess-customize-alist) (auto-save-mode 1) ; Auto save in this buffer (setq ess-local-process-name ess-current-process-name) (if ess-function-template (progn (goto-char (point-max)) (if (re-search-backward ess-dumped-missing-re nil t) (progn (replace-match ess-function-template t t) (set-buffer-modified-p nil) ; Don't offer to save if killed now (goto-char (point-min)) (condition-case nil ;; This may fail if there are no opens (down-list 1) (error nil))))))) ;; AJR: XEmacs, makes sense to dump into "other frame". (defun ess-dump-object-into-edit-buffer-other-frame (object) "Edit an ESS object in its own frame." (switch-to-buffer-other-frame (ess-dump-object-into-edit-buffer object))) (provide 'ess-dump) ; Local variables section ;;; This file is automatically placed in Outline minor mode. ;;; The file is structured as follows: ;;; Chapters: ^L ; ;;; Sections: ;;*;; ;;; Subsections: ;;;*;;; ;;; Components: defuns, defvars, defconsts ;;; Random code beginning with a ;;;;* comment ;;; Local variables: ;;; mode: emacs-lisp ;;; outline-minor-mode: nil ;;; mode: outline-minor ;;; outline-regexp: "\^L\\|\\`;\\|;;\\*\\|;;;\\*\\|(def[cvu]\\|(setq\\|;;;;\\*" ;;; End: ;;; ess-dump.el ends here ess-17.11/lisp/tmp/ess-rlib.R0000644005071500004540000001754013202324175012663 00000000000000## My modification of R 1.7.1 functions to help with iESS... Search for ## iESS to see the changes I made. ## source("ess-rlib.R") before running (ess-rpackage "") print.libraryIQR <- function (x, ...) { sQuote <- function(s) paste("'", s, "'", sep = "") db <- x$results out <- if (nrow(db) == 0) NULL else lapply(split(1:nrow(db), db[, "LibPath"]), function(ind) db[ind, c("Package", "Title"), drop = FALSE]) outFile <- tempfile("RlibraryIQR") outConn <- file(outFile, open = "w") first <- TRUE for (lib in names(out)) { writeLines(paste(ifelse(first, "", "\n"), "Packages in library ", sQuote(lib), ":\n", sep = ""), outConn) if (!is.null(getOption("STERM")) && grep("^iESS", getOption("STERM")) == 1) writeLines(formatDL(paste("\\package{", out[[lib]][, "Package"], "}", sep=''), out[[lib]][, "Title"]), outConn) else writeLines(formatDL(out[[lib]][, "Package"], out[[lib]][, "Title"]), outConn) first <- FALSE } if (first) { close(outConn) unlink(outFile) writeLines("no packages found") } else { if (!is.null(x$footer)) writeLines(c("\n", x$footer), outConn) close(outConn) file.show(outFile, delete.file = TRUE, title = "R packages available") } invisible(x) } data <- function (..., list = character(0), package = .packages(), lib.loc = NULL, verbose = getOption("verbose")) { sQuote <- function(s) paste("'", s, "'", sep = "") names <- c(as.character(substitute(list(...))[-1]), list) if (!missing(package)) if (is.name(y <- substitute(package))) package <- as.character(y) found <- FALSE fsep <- .Platform$file.sep paths <- .find.package(package, lib.loc, verbose = verbose) if (is.null(lib.loc)) paths <- c(.path.package(package, TRUE), getwd(), paths) paths <- unique(paths[file.exists(paths)]) nodata <- !(file.exists(file.path(paths, "data")) & file.info(file.path(paths, "data"))$isdir) if (any(nodata)) { if (!missing(package) && (length(package) > 0)) { packagesWithNoData <- package[package %in% sapply(paths[nodata], basename)] if (length(packagesWithNoData) > 1) { warning(paste("packages", paste(sQuote(packagesWithNoData), collapse = ", "), "contain no datasets")) } else if (length(packagesWithNoData) == 1) { warning(paste("package", sQuote(packagesWithNoData), "contains no datasets")) } } paths <- paths[!nodata] } if (length(names) == 0) { db <- matrix(character(0), nr = 0, nc = 4) noindex <- character(0) for (path in paths) { entries <- NULL if (file.exists(INDEX <- file.path(path, "Meta", "data.rds"))) { entries <- .readRDS(INDEX) } else if (file.exists(INDEX <- file.path(path, "data", "00Index.rds"))) { entries <- .readRDS(INDEX) } else if (file.exists(INDEX <- file.path(path, "data", "00Index.dcf"))) { entries <- read.dcf(INDEX) entries <- cbind(colnames(entries), c(entries)) } else if (file.exists(INDEX <- file.path(path, "data", "00Index"))) entries <- read.00Index(INDEX) else { if (length(list.files(file.path(path, "data"))) > 0) noindex <- c(noindex, basename(path)) } if (NROW(entries) > 0) { ## SJE if (!is.null(getOption("STERM")) && grep("^iESS", getOption("STERM")) == 1) entries[,1] <- paste("\\data{",entries[,1], "}", sep='' ) db <- rbind(db, cbind(basename(path), dirname(path), entries)) } } colnames(db) <- c("Package", "LibPath", "Item", "Title") if (length(noindex) > 0) { if (!missing(package) && (length(package) > 0)) { packagesWithNoIndex <- package[package %in% noindex] if (length(packagesWithNoIndex) > 1) { warning(paste("packages", paste(sQuote(packagesWithNoIndex), collapse = ", "), "contain data sets but no index")) } else if (length(packagesWithNoIndex) == 1) warning(paste("package", sQuote(packagesWithNoIndex), "contains data sets but no index")) } } footer <- if (missing(package)) paste("Use ", sQuote(paste("data(package =", ".packages(all.available = TRUE))")), "\n", "to list the data sets in all *available* packages.", sep = "") else NULL y <- list(type = "data", title = "Data sets", header = NULL, results = db, footer = footer) class(y) <- "packageIQR" return(y) } paths <- file.path(paths, "data") for (name in names) { files <- NULL for (p in paths) { if (file.exists(file.path(p, "Rdata.zip"))) { if (file.exists(fp <- file.path(p, "filelist"))) files <- c(files, file.path(p, scan(fp, what = "", quiet = TRUE))) else warning(paste(sQuote("filelist"), "is missing for dir", sQuote(p))) } else { files <- c(files, list.files(p, full = TRUE)) } } files <- files[grep(name, files)] found <- FALSE if (length(files) > 1) { good <- c("R", "r", "RData", "rdata", "rda", "tab", "txt", "TXT", "csv", "CSV") exts <- sub(".*\\.", "", files) o <- match(exts, good, nomatch = 100) paths <- dirname(files) paths <- factor(paths, levels = paths) files <- files[order(paths, o)] } if (length(files) > 0) { subpre <- paste(".*", fsep, sep = "") for (file in files) { if (verbose) cat("name=", name, ":\t file= ...", fsep, sub(subpre, "", file), "::\t", sep = "") if (found) break found <- TRUE ext <- sub(".*\\.", "", file) if (sub(subpre, "", file) != paste(name, ".", ext, sep = "")) found <- FALSE else { zfile <- zip.file.extract(file, "Rdata.zip") switch(ext, R = , r = source(zfile, chdir = TRUE), RData = , rdata = , rda = load(zfile, envir = .GlobalEnv), TXT = , txt = , tab = assign(name, read.table(zfile, header = TRUE), env = .GlobalEnv), CSV = , csv = assign(name, read.table(zfile, header = TRUE, sep = ";"), env = .GlobalEnv), found <- FALSE) if (zfile != file) unlink(zfile) } if (verbose) cat(if (!found) "*NOT* ", "found\n") } } if (!found) warning(paste("Data set", sQuote(name), "not found")) } invisible(names) } ## This function needed for ess-rpackage, Sun 14 Sep 2003 funs.for.package <- function(package) { x <- .readRDS(file = system.file("Meta", "Rd.rds", package = package)) writeLines(formatDL(unlist(x[,5]), rep(x[,4], sapply(x[,5], length)))) } ess-17.11/lisp/tmp/ess-rlib.el0000644005071500004540000002036013202324175013054 00000000000000;;; ess-rlib.el --- browse contents of R packages. ;; Stephen Eglen, GPL applies. ;; ;; Primitive browswing facilities for the list of packages, and ;; the functions within a package. Use RET or mouse-2 to click on a ;; link and see either contents of a package or the function. ;; ;; To use, simply start a R session, eval this buffer, ;; then, in the R buffer, do ;; source("ess-rlib.R") ;; to load the changes to the data() and print.libraryIQR() functions. ;; ;; Then do M-x ;; ess-rpackage or use C-x C-e at end of one of following lines: ;; ;; (ess-rpackage "ctest") ;; okay ;; ;; (ess-rpackage "foreign") ;; okay, but fails on "S3 read functions" ;; ;; (ess-rpackage "eda") ;; shows help for lib, but won't show individual files unless package ;; has been loaded. How to show help without loading the package first? ;; (ess-rpackage "ts") ;; not so good, due to regexp failure! ;; (ess-rpackage "base") ;; (ess-rpackage "mva") ;; one problem, near end of buffer. ;; Presumably, adding link markup to the output from library() command ;; would help here so that only functions will get converted into ;; links. This would be more robust than using regexps. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (ess-rdata) ;; This command will browse the output of the data() command, using ;; the extra markup of data names. Output goes to the *ess-rdata* ;; buffer. It currently just converts the data names into links ;; (highlight with mouse; underline), but no action is made on the ;; links. Kurt suggested before making e.g. ? bring up help on that ;; data topic, and RET to load the package. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun ess-rpackage (package) "View functions within the package named PACKAGE. The package must have already been loaded; if the package is not loaded, the functions in it can still be viewed, but the help for those functions cannot be viewed. This function is therefore currently restricted to show contents for loaded packages only. This calls an extra R funcition named funs.for.package()." (interactive (let () (list (completing-read "Package name: " (mapcar 'list (ess-rpackage-list)))))) (let (beg str (all t)) (setq str (concat "funs.for.package('" package "')\n")) (ess-execute str nil "ess-rlib") (pop-to-buffer "*ess-rlib*") (goto-char (point-min)) (while (re-search-forward "^[^ ]" nil t) (beginning-of-line) (setq beg (point)) (re-search-forward "\\s-") (add-text-properties beg (1- (point)) '(face underline mouse-face highlight help-xref function)) )) ;; End of mark up, so add some text to the top of buffer. (goto-char (point-min)) (insert "Functions in package " package ":\n\n") (goto-char (point-min)) (ess-rpackage-mode) ) (defun ess-rpackage-list () "Return list of packages currently loaded." (save-window-excursion (ess-execute "cat(.packages(), '\\n')") (pop-to-buffer "*ess-output*") (cdr (reverse (split-string (buffer-substring (point-min) (point-max)) " "))))) (defun ess-rpackage-1 (lib) "View help available for a topic. Lib should either be blank or name of a package. It currently uses regexps to guess which parts of the output are function and package names. This mostly works, but for a classic failure, see output from viewing the base package. Old version." (interactive "sPackage name (leave blank for lib list): ") ;; todo: would it be worth getting completion for package list? (let (beg str (all t)) (setq str (if (equal lib "") "library()" (setq all nil) (concat "library(help=" lib ")\n"))) (ess-execute str nil "ess-rlib") (pop-to-buffer "*ess-rlib*") (if all (ess-markup-libnames) (re-search-forward "^Index:") (while (re-search-forward "^[^ ]+ " nil t) (beginning-of-line) (setq beg (point)) (re-search-forward "[ \t]") (add-text-properties beg (1- (point)) '( face underline mouse-face highlight help-xref function)) (end-of-line) )) ;; end of mark up (goto-char (point-min)) (ess-rpackage-mode) ) ) (defun ess-markup-libnames () "Markup the output from library() command." (goto-char (point-min)) (while (re-search-forward "^\\\\package{" nil t) (delete-region (point) (progn (beginning-of-line) (point))) (setq beg (point)) (search-forward "}") (delete-backward-char 1) (add-text-properties beg (point) '(face underline mouse-face highlight help-xref library)) (end-of-line))) (defun ess-markup-libnames-old () "Markup the output from library() command." (goto-char (point-min)) (while (re-search-forward "^[^ ]+ " nil t) (beginning-of-line) (if (not (looking-at "Packages in library")) (progn (setq beg (point)) (re-search-forward "[ \t]") (add-text-properties beg (1- (point)) '(face underline mouse-face highlight help-xref library)))) (end-of-line) )) ;;; Set up the major mode for viewing. (define-derived-mode ess-rpackage-mode text-mode "Rlib" "Major mode for browsing package contents. \\{ess-rpackage-mode-map}" (setq case-fold-search nil)) ;; define the keys. (if (featurep 'xemacs) (define-key ess-rpackage-mode-map [button2] 'ess-rpackage-mouse-view) (define-key ess-rpackage-mode-map [mouse-2] 'ess-rpackage-mouse-view) ) (define-key ess-rpackage-mode-map [return] 'ess-rpackage-show-help) (define-key ess-rpackage-mode-map "\t" 'help-next-ref) (if (featurep 'xemacs) (define-key ess-rpackage-mode-map [iso-left-tab] 'help-previous-ref) (define-key ess-rpackage-mode-map [] 'help-previous-ref)) (defun ess-rpackage-show-help () "Show ESS help for item on current line." (interactive) (let (beg fn type) (save-excursion (beginning-of-line) (setq beg (point)) (if (looking-at "[ \t\n]") (message "No function on this line.") (setq type (get-text-property (point) 'help-xref)) (re-search-forward "\\s-") (setq fn (buffer-substring-no-properties beg (1- (point)))) (if (equal type 'function) (ess-display-help-on-object fn) (ess-rpackage fn)))))) (defun ess-rpackage-mouse-view (event) "In rdired, visit the object on the line you click on." ;; copied from ess-rdired. (interactive "e") (let (window pos) (save-excursion (if (featurep 'xemacs) ;; XEmacs (setq window (event-window event) pos (event-point event)) ;; Emacs (setq window (posn-window (event-end event)) pos (posn-point (event-end event)))) (if (not (windowp window)) (error "No file chosen")) (set-buffer (window-buffer window)) (goto-char pos) (ess-rpackage-show-help)))) (defun ess-rdata () "Show the data currently available. Currently the links are not active -- nothing is set up to handle either pressing RET or mouse-2 over a data name. Kurt suggested maybe `?' on a data item lists its help, and RET to load the data set?" (interactive) (let (beg str (all t)) (setq str "data()") (ess-execute str nil "ess-rdata") (pop-to-buffer "*ess-rdata*") ;; Now mark up the buffer. (goto-char (point-min)) (while (re-search-forward "^\\\\data{" nil t) (delete-region (point) (progn (beginning-of-line) (point))) (setq beg (point)) (search-forward "}") (delete-backward-char 1) (add-text-properties beg (point) '(face underline mouse-face highlight help-xref library)) (end-of-line))) (goto-char (point-min)) ) ess-17.11/lisp/julia-mode.el0000444005071500004540000041747113066034740012601 00000000000000;;; julia-mode.el --- Major mode for editing Julia source code ;; Copyright (C) 2009-2014 Julia contributors ;; URL: https://github.com/JuliaLang/julia ;; Version: 0.3 ;; Keywords: languages ;;; Usage: ;; Put the following code in your .emacs, site-load.el, or other relevant file ;; (add-to-list 'load-path "path-to-julia-mode") ;; (require 'julia-mode) ;;; Commentary: ;; This is the official Emacs mode for editing Julia programs. ;;; License: ;; 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. ;;; Code: ;; We can't use cl-lib whilst supporting Emacs <= 24.2 users (with-no-warnings (require 'cl)) ;; incf, decf, plusp (defvar julia-mode-hook nil) (defgroup julia () "Major mode for the julia programming language." :group 'languages :prefix "julia-") (defcustom julia-indent-offset 4 "Number of spaces per indentation level." :type 'integer :group 'julia) (defface julia-macro-face '((t :inherit font-lock-preprocessor-face)) "Face for Julia macro invocations." :group 'julia-mode) (defface julia-quoted-symbol-face '((t :inherit font-lock-preprocessor-face)) "Face for quoted Julia symbols, e.g. :foo." :group 'julia-mode) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.jl\\'" . julia-mode)) ;; define ignore-errors macro if it isn't present ;; (necessary for emacs 22 compatibility) (when (not (fboundp 'ignore-errors)) (defmacro ignore-errors (body) `(condition-case nil ,body (error nil)))) (defun julia--regexp-opt (strings &optional paren) "Emacs 23 provides `regexp-opt', but it does not support PAREN taking the value 'symbols. This function provides equivalent functionality, but makes no efforts to optimise the regexp." (cond ((>= emacs-major-version 24) (regexp-opt strings paren)) ((not (eq paren 'symbols)) (regexp-opt strings paren)) ((null strings) "") ('t (rx-to-string `(seq symbol-start (or ,@strings) symbol-end))))) (defvar julia-mode-syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?_ "_" table) (modify-syntax-entry ?@ "_" table) (modify-syntax-entry ?! "_" table) (modify-syntax-entry ?# "< 14" table) ; # single-line and multiline start (modify-syntax-entry ?= ". 23bn" table) (modify-syntax-entry ?\n ">" table) ; \n single-line comment end (modify-syntax-entry ?\{ "(} " table) (modify-syntax-entry ?\} "){ " table) (modify-syntax-entry ?\[ "(] " table) (modify-syntax-entry ?\] ")[ " table) (modify-syntax-entry ?\( "() " table) (modify-syntax-entry ?\) ")( " table) ;; Here, we treat ' as punctuation (when it's used for transpose), ;; see our use of `julia-char-regex' for handling ' as a character ;; delimeter (modify-syntax-entry ?' "." table) (modify-syntax-entry ?\" "\"" table) (modify-syntax-entry ?` "\"" table) (modify-syntax-entry ?. "." table) (modify-syntax-entry ?? "." table) (modify-syntax-entry ?$ "." table) (modify-syntax-entry ?& "." table) (modify-syntax-entry ?* "." table) (modify-syntax-entry ?/ "." table) (modify-syntax-entry ?+ "." table) (modify-syntax-entry ?- "." table) (modify-syntax-entry ?< "." table) (modify-syntax-entry ?> "." table) (modify-syntax-entry ?% "." table) table) "Syntax table for `julia-mode'.") (eval-when-compile (defconst julia-char-regex (rx (or (any "-" ";" "\\" "^" "!" "|" "?" "*" "<" "%" "," "=" ">" "+" "/" "&" "$" "~" ":") (syntax open-parenthesis) (syntax whitespace) bol) (group "'") (group (or (repeat 0 8 (not (any "'"))) (not (any "\\")) "\\\\")) (group "'")))) (defconst julia-triple-quoted-string-regex ;; We deliberately put a group on the first and last delimiter, so ;; we can mark these as string delimiters for font-lock. (rx (group "\"") (group "\"\"" ;; After the delimiter, we're a sequence of ;; non-backslashes or blackslashes paired with something. (*? (or (not (any "\\")) (seq "\\" anything))) "\"\"") (group "\""))) (defconst julia-unquote-regex "\\(\\s(\\|\\s-\\|-\\|[,%=<>\\+*/?&|!\\^~\\\\;:]\\|^\\)\\($[a-zA-Z0-9_]+\\)") (defconst julia-forloop-in-regex "for +.*[^ ].* \\(in\\)\\(\\s-\\|$\\)+") (defconst julia-function-regex (rx line-start (* (or space "@inline" "@noinline")) symbol-start "function" (1+ space) ;; Don't highlight module names in function declarations: (* (seq (1+ (or word (syntax symbol))) ".")) ;; The function name itself (group (1+ (or word (syntax symbol)))))) (defconst julia-function-assignment-regex (rx line-start (* (or space "@inline" "@noinline")) symbol-start (* (seq (1+ (or word (syntax symbol))) ".")) ; module name (group (1+ (or word (syntax symbol)))) (* space) (? "{" (* (not (any "}"))) "}") (* space) "(" (* (or (seq "(" (* (not (any "(" ")"))) ")") (not (any "(" ")")))) ")" (* space) "=" (not (any "=")))) (defconst julia-type-regex (rx symbol-start (or "immutable" "type" "abstract") (1+ space) (group (1+ (or word (syntax symbol)))))) (defconst julia-type-annotation-regex (rx "::" (0+ space) (group (1+ (or word (syntax symbol)))))) ;;(defconst julia-type-parameter-regex ;; (rx symbol-start (1+ (or (or word (syntax symbol)) ?_)) "{" (group (1+ (or (or word (syntax symbol)) ?_))) "}")) (defconst julia-subtype-regex (rx "<:" (0+ space) (group (1+ (or word (syntax symbol)))) (0+ space) (or "\n" "{" "}" "end"))) (defconst julia-macro-regex (rx symbol-start (group "@" (1+ (or word (syntax symbol)))))) (defconst julia-keyword-regex (julia--regexp-opt '("if" "else" "elseif" "while" "for" "begin" "end" "quote" "try" "catch" "return" "local" "abstract" "function" "macro" "ccall" "finally" "typealias" "break" "continue" "type" "global" "module" "using" "import" "export" "const" "let" "bitstype" "do" "in" "baremodule" "importall" "immutable") 'symbols)) (defconst julia-builtin-regex (julia--regexp-opt ;;'("error" "throw") '() 'symbols)) (defconst julia-builtin-types-regex (julia--regexp-opt '("Number" "Real" "BigInt" "Integer" "UInt" "UInt8" "UInt16" "UInt32" "UInt64" "UInt128" "Int" "Int8" "Int16" "Int32" "Int64" "Int128" "BigFloat" "AbstractFloat" "Float16" "Float32" "Float64" "Complex128" "Complex64" "Bool" "Cuchar" "Cshort" "Cushort" "Cint" "Cuint" "Clonglong" "Culonglong" "Cintmax_t" "Cuintmax_t" "Cfloat" "Cdouble" "Cptrdiff_t" "Cssize_t" "Csize_t" "Cchar" "Clong" "Culong" "Cwchar_t" "Char" "ASCIIString" "UTF8String" "ByteString" "SubString" "Array" "DArray" "AbstractArray" "AbstractVector" "AbstractMatrix" "AbstractSparseMatrix" "SubArray" "StridedArray" "StridedVector" "StridedMatrix" "VecOrMat" "StridedVecOrMat" "DenseArray" "SparseMatrixCSC" "BitArray" "Range" "OrdinalRange" "StepRange" "UnitRange" "FloatRange" "Tuple" "NTuple" "Vararg" "DataType" "Symbol" "Function" "Vector" "Matrix" "Union" "Type" "Any" "Complex" "AbstractString" "Ptr" "Void" "Exception" "Task" "Signed" "Unsigned" "Associative" "Dict" "IO" "IOStream" "Rational" "Regex" "RegexMatch" "Set" "IntSet" "Expr" "WeakRef" "ObjectIdDict" "AbstractRNG" "MersenneTwister" ) 'symbols)) (defconst julia-quoted-symbol-regex ;; :foo and :foo2 are valid, but :123 is not. (rx (or whitespace "(" "[" "," "=") (group ":" (or letter (syntax symbol)) (0+ (or word (syntax symbol)))))) (defconst julia-font-lock-keywords (list ;; Ensure :: and <: aren't highlighted, so we don't confuse ::Foo with :foo. ;; (in Emacs, keywords don't overlap). (cons (rx (or "::" "<:")) ''default) ;; Highlight quoted symbols before keywords, so :function is not ;; highlighted as a keyword. (list julia-quoted-symbol-regex 1 ''julia-quoted-symbol-face) (cons julia-builtin-types-regex 'font-lock-type-face) (cons julia-keyword-regex 'font-lock-keyword-face) (cons julia-macro-regex ''julia-macro-face) (cons (julia--regexp-opt '("true" "false" "C_NULL" "Inf" "NaN" "Inf32" "NaN32" "nothing") 'symbols) 'font-lock-constant-face) (list julia-unquote-regex 2 'font-lock-constant-face) (list julia-forloop-in-regex 1 'font-lock-keyword-face) (list julia-function-regex 1 'font-lock-function-name-face) (list julia-function-assignment-regex 1 'font-lock-function-name-face) (list julia-type-regex 1 'font-lock-type-face) (list julia-type-annotation-regex 1 'font-lock-type-face) ;;(list julia-type-parameter-regex 1 'font-lock-type-face) (list julia-subtype-regex 1 'font-lock-type-face) (list julia-builtin-regex 1 'font-lock-builtin-face) )) (defconst julia-block-start-keywords (list "if" "while" "for" "begin" "try" "function" "type" "let" "macro" "quote" "do" "immutable")) (defconst julia-block-end-keywords (list "end" "else" "elseif" "catch" "finally")) (defun julia-stringify-triple-quote () "Put `syntax-table' property on triple-quoted string delimeters. Based on `python-syntax-stringify'." (let* ((string-start-pos (- (point) 3)) (string-end-pos (point)) (ppss (prog2 (backward-char 3) (syntax-ppss) (forward-char 3))) (in-comment (nth 4 ppss)) (in-string (nth 8 ppss))) (unless in-comment (if in-string ;; We're in a string, so this must be the closing triple-quote. ;; Put | on the last " character. (put-text-property (1- string-end-pos) string-end-pos 'syntax-table (string-to-syntax "|")) ;; We're not in a string, so this is the opening triple-quote. ;; Put | on the first " character. (put-text-property string-start-pos (1+ string-start-pos) 'syntax-table (string-to-syntax "|")))))) (unless (< emacs-major-version 24) (defconst julia-syntax-propertize-function (syntax-propertize-rules ("\"\"\"" (0 (ignore (julia-stringify-triple-quote)))) (julia-char-regex (1 "\"") ; Treat ' as a string delimiter. (2 ".") ; Don't highlight anything between. (3 "\""))))) ; Treat the last " in """ as a string delimiter. (defun julia-in-comment () "Return non-nil if point is inside a comment. Handles both single-line and multi-line comments." (nth 4 (syntax-ppss))) (defun julia-in-string () "Return non-nil if point is inside a string. Note this is Emacs' notion of what is highlighted as a string. As a result, it is true inside \"foo\", `foo` and 'f'." (nth 3 (syntax-ppss))) (defun julia-in-brackets () "Return non-nil if point is inside square brackets." (let ((start-pos (point)) (open-count 0)) ;; Count all the [ and ] characters on the current line. (save-excursion (beginning-of-line) (while (< (point) start-pos) ;; Don't count [ or ] inside strings, characters or comments. (unless (or (julia-in-string) (julia-in-comment)) (when (looking-at (rx "[")) (incf open-count)) (when (looking-at (rx "]")) (decf open-count))) (forward-char 1))) ;; If we've opened more than we've closed, we're inside brackets. (plusp open-count))) (defun julia-at-keyword (kw-list) "Return the word at point if it matches any keyword in KW-LIST. KW-LIST is a list of strings. The word at point is not considered a keyword if used as a field name, X.word, or quoted, :word." (and (or (= (point) 1) (and (not (equal (char-before (point)) ?.)) (not (equal (char-before (point)) ?:)))) (member (current-word t) kw-list) (not (julia-in-comment)) ;; 'end' is not a keyword when used for indexing, e.g. foo[end-2] (or (not (equal (current-word t) "end")) (not (julia-in-brackets))))) ;; if backward-sexp gives an error, move back 1 char to move over the '(' (defun julia-safe-backward-sexp () (if (condition-case nil (backward-sexp) (error t)) (ignore-errors (backward-char)))) (defun julia-last-open-block-pos (min) "Return the position of the last open block, if one found. Do not move back beyond position MIN." (save-excursion (let ((count 0)) (while (not (or (> count 0) (<= (point) min))) (julia-safe-backward-sexp) (setq count (cond ((julia-at-keyword julia-block-start-keywords) (+ count 1)) ;; fixme: breaks on strings ((and (equal (current-word t) "end") (not (julia-in-comment)) (not (julia-in-brackets))) (- count 1)) (t count)))) (if (> count 0) (point) nil)))) (defun julia-last-open-block (min) "Move back and return indentation level for last open block. Do not move back beyond MIN." ;; Ensure MIN is not before the start of the buffer. (setq min (max min (point-min))) (let ((pos (julia-last-open-block-pos min))) (and pos (progn (goto-char pos) (+ julia-indent-offset (current-indentation)))))) (defsubst julia--safe-backward-char () "Move back one character, but don't error if we're at the beginning of the buffer." (unless (eq (point) (point-min)) (backward-char))) (defvar julia-max-paren-lookback 400 "When indenting, don't look back more than this many characters to see if there are unclosed parens. This variable has a major effect on indent performance if set too high.") (defvar julia-max-block-lookback 5000 "When indenting, don't look back more than this many characters to see if there are unclosed blocks. This variable has a moderate effect on indent performance if set too high.") (defun julia-paren-indent () "Return the column of the text following the innermost containing paren before point, so we can align succeeding code with it. Returns nil if we're not within nested parens." (save-excursion ;; Back up to previous line (beginning-of-line was already called) (backward-char) (let ((min-pos (max (- (point) julia-max-paren-lookback) (point-min))) (open-count 0)) (while (and (> (point) min-pos) (not (plusp open-count))) (when (looking-at (rx (any "[" "]" "(" ")"))) (unless (or (julia-in-string) (julia-in-comment)) (cond ((looking-at (rx (any "[" "("))) (incf open-count)) ((looking-at (rx (any "]" ")"))) (decf open-count))))) (julia--safe-backward-char)) (if (plusp open-count) (progn (forward-char 2) (while (looking-at (rx blank)) (forward-char)) (current-column)) nil)))) (defun julia-indent-line () "Indent current line of julia code." (interactive) (let* ((point-offset (- (current-column) (current-indentation)))) (end-of-line) (indent-line-to (or ;; If we're inside an open paren, indent to line up arguments. (save-excursion (beginning-of-line) (ignore-errors (julia-paren-indent))) ;; If the previous line ends in =, increase the indent. (ignore-errors ; if previous line is (point-min) (save-excursion (if (and (not (equal (point-min) (line-beginning-position))) (progn (forward-line -1) (end-of-line) (backward-char 1) (and (equal (char-after (point)) ?=) (not (julia-in-comment))))) (+ julia-indent-offset (current-indentation)) nil))) ;; Indent according to how many nested blocks we are in. (save-excursion (beginning-of-line) (forward-to-indentation 0) (let ((endtok (julia-at-keyword julia-block-end-keywords)) (last-open-block (julia-last-open-block (- (point) julia-max-block-lookback)))) (max 0 (+ (or last-open-block 0) (if endtok (- julia-indent-offset) 0))))))) ;; Point is now at the beginning of indentation, restore it ;; to its original position (relative to indentation). (when (>= point-offset 0) (move-to-column (+ (current-indentation) point-offset))))) (defmacro julia--should-indent (from to) "Assert that we indent text FROM producing text TO in `julia-mode'." `(with-temp-buffer (let ((julia-indent-offset 4)) (julia-mode) (insert ,from) (indent-region (point-min) (point-max)) (should (equal (buffer-substring-no-properties (point-min) (point-max)) ,to))))) ;; Emacs 23.X doesn't include ert, so we ignore any errors that occur ;; when we define tests. (ignore-errors (require 'ert) (ert-deftest julia--test-indent-if () "We should indent inside if bodies." (julia--should-indent " if foo bar end" " if foo bar end")) (ert-deftest julia--test-indent-else () "We should indent inside else bodies." (julia--should-indent " if foo bar else baz end" " if foo bar else baz end")) (ert-deftest julia--test-indent-toplevel () "We should not indent toplevel expressions. " (julia--should-indent " foo() bar()" " foo() bar()")) (ert-deftest julia--test-indent-nested-if () "We should indent for each level of indentation." (julia--should-indent " if foo if bar bar end end" " if foo if bar bar end end")) (ert-deftest julia--test-indent-function () "We should indent function bodies." (julia--should-indent " function foo() bar end" " function foo() bar end")) (ert-deftest julia--test-indent-begin () "We should indent after a begin keyword." (julia--should-indent " @async begin bar end" " @async begin bar end")) (ert-deftest julia--test-indent-paren () "We should indent to line up with the text after an open paren." (julia--should-indent " foobar(bar, baz)" " foobar(bar, baz)")) (ert-deftest julia--test-indent-paren-space () "We should indent to line up with the text after an open paren, even if there are additional spaces." (julia--should-indent " foobar( bar, baz )" " foobar( bar, baz )")) (ert-deftest julia--test-indent-equals () "We should increase indent on a trailing =." (julia--should-indent " foo() = bar" " foo() = bar")) (ert-deftest julia--test-indent-ignores-blank-lines () "Blank lines should not affect indentation of non-blank lines." (julia--should-indent " if foo bar end" " if foo bar end")) (ert-deftest julia--test-indent-comment-equal () "`=` at the end of comment should not increase indent level." (julia--should-indent " # a = # b = c" " # a = # b = c")) (ert-deftest julia--test-indent-leading-paren () "`(` at the beginning of a line should not affect indentation." (julia--should-indent " (1)" " (1)")) (ert-deftest julia--test-top-level-following-paren-indent () "`At the top level, a previous line indented due to parens should not affect indentation." (julia--should-indent "y1 = f(x, z) y2 = g(x)" "y1 = f(x, z) y2 = g(x)")) (defun julia--run-tests () (interactive) (ert-run-tests-interactively "julia--test"))) (defalias 'julia-mode-prog-mode (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode)) ;;; IMENU (defvar julia-imenu-generic-expression ;; don't use syntax classes, screws egrep '(("Function (_)" "[ \t]*function[ \t]+\\(_[^ \t\n]*\\)" 1) ("Function" "^[ \t]*function[ \t]+\\([^_][^\t\n]*\\)" 1) ("Const" "[ \t]*const \\([^ \t\n]*\\)" 1) ("Type" "^[ \t]*[a-zA-Z0-9_]*type[a-zA-Z0-9_]* \\([^ \t\n]*\\)" 1) ("Require" " *\\(\\brequire\\)(\\([^ \t\n)]*\\)" 2) ("Include" " *\\(\\binclude\\)(\\([^ \t\n)]*\\)" 2) ;; ("Classes" "^.*setClass(\\(.*\\)," 1) ;; ("Coercions" "^.*setAs(\\([^,]+,[^,]*\\)," 1) ; show from and to ;; ("Generics" "^.*setGeneric(\\([^,]*\\)," 1) ;; ("Methods" "^.*set\\(Group\\|Replace\\)?Method(\"\\(.+\\)\"," 2) ;; ;;[ ]*\\(signature=\\)?(\\(.*,?\\)*\\)," 1) ;; ;; ;; ;;("Other" "^\\(.+\\)\\s-*<-[ \t\n]*[^\\(function\\|read\\|.*data\.frame\\)]" 1) ;; ("Package" "^.*\\(library\\|require\\)(\\(.*\\)," 2) ;; ("Data" "^\\(.+\\)\\s-*<-[ \t\n]*\\(read\\|.*data\.frame\\).*(" 1))) )) ;;;###autoload (define-derived-mode julia-mode julia-mode-prog-mode "Julia" "Major mode for editing julia code." (set-syntax-table julia-mode-syntax-table) (set (make-local-variable 'comment-start) "# ") (set (make-local-variable 'comment-start-skip) "#+\\s-*") (set (make-local-variable 'font-lock-defaults) '(julia-font-lock-keywords)) (if (< emacs-major-version 24) ;; Emacs 23 doesn't have syntax-propertize-function (set (make-local-variable 'font-lock-syntactic-keywords) (list `(,julia-char-regex (1 "\"") ; Treat ' as a string delimiter. (2 ".") ; Don't highlight anything between the open and close '. (3 "\"")); Treat the close ' as a string delimiter. `(,julia-triple-quoted-string-regex (1 "\"") ; Treat the first " in """ as a string delimiter. (2 ".") ; Don't highlight anything between. (3 "\"")))) ; Treat the last " in """ as a string delimiter. ;; Emacs 24 and later has syntax-propertize-function, so use that instead. (set (make-local-variable 'syntax-propertize-function) julia-syntax-propertize-function)) (set (make-local-variable 'indent-line-function) 'julia-indent-line) (setq indent-tabs-mode nil) (setq imenu-generic-expression julia-imenu-generic-expression) (imenu-add-to-menubar "Imenu")) (defvar julia-latexsubs (make-hash-table :test 'equal)) (defun julia-latexsub () "Perform a LaTeX-like Unicode symbol substitution." (interactive "*i") (let ((orig-pt (point))) (while (not (or (bobp) (= ?\\ (char-before)) (= ?\s (char-syntax (char-before))))) (backward-char)) (if (and (not (bobp)) (= ?\\ (char-before))) (progn (backward-char) (let ((sub (gethash (buffer-substring (point) orig-pt) julia-latexsubs))) (if sub (progn (delete-region (point) orig-pt) (insert sub)) (goto-char orig-pt)))) (goto-char orig-pt)))) (defalias 'latexsub 'julia-latexsub) (defun julia-latexsub-or-indent (arg) "Either indent according to mode or perform a LaTeX-like symbol substution" (interactive "*i") (if (latexsub) (indent-for-tab-command arg))) (define-key julia-mode-map (kbd "TAB") 'julia-latexsub-or-indent) (defalias 'latexsub-or-indent 'julia-latexsub-or-indent) ; LaTeX-like symbol substitutions, equivalent to those in the Julia REPL, ; generated by: ;for (k,v) in sort!(collect(Base.REPLCompletions.latex_symbols), by=x->x[2]) ; ks = escape_string(k) ; vs = escape_string(v) ; if ismatch(r"^\\U[0-9A-Fa-f]+$", vs) ; # codepoints outside the BMP can be problematic in older Emacsen ; cp = vs[3:end] ; println("(let ((c (decode-char 'ucs #x$cp)))\n", ; " (if c (puthash \"$ks\" (char-to-string c) julia-latexsubs)))") ; else ; println("(puthash \"$ks\" \"$vs\" julia-latexsubs)") ; end ;end ; (See Julia issue #8947 for why we don't use the Emacs tex input mode.) (puthash "\\textexclamdown" "¡" julia-latexsubs) (puthash "\\sterling" "£" julia-latexsubs) (puthash "\\yen" "Â¥" julia-latexsubs) (puthash "\\textbrokenbar" "¦" julia-latexsubs) (puthash "\\S" "§" julia-latexsubs) (puthash "\\textasciidieresis" "¨" julia-latexsubs) (puthash "\\copyright" "©" julia-latexsubs) (puthash "\\textordfeminine" "ª" julia-latexsubs) (puthash "\\neg" "¬" julia-latexsubs) (puthash "\\circledR" "®" julia-latexsubs) (puthash "\\textasciimacron" "¯" julia-latexsubs) (puthash "\\degree" "°" julia-latexsubs) (puthash "\\pm" "±" julia-latexsubs) (puthash "\\^2" "²" julia-latexsubs) (puthash "\\^3" "³" julia-latexsubs) (puthash "\\textasciiacute" "´" julia-latexsubs) (puthash "\\P" "¶" julia-latexsubs) (puthash "\\cdotp" "·" julia-latexsubs) (puthash "\\^1" "¹" julia-latexsubs) (puthash "\\textordmasculine" "º" julia-latexsubs) (puthash "\\textonequarter" "¼" julia-latexsubs) (puthash "\\textonehalf" "½" julia-latexsubs) (puthash "\\textthreequarters" "¾" julia-latexsubs) (puthash "\\textquestiondown" "¿" julia-latexsubs) (puthash "\\AA" "Ã…" julia-latexsubs) (puthash "\\AE" "Æ" julia-latexsubs) (puthash "\\DH" "Ã" julia-latexsubs) (puthash "\\times" "×" julia-latexsubs) (puthash "\\O" "Ø" julia-latexsubs) (puthash "\\TH" "Þ" julia-latexsubs) (puthash "\\ss" "ß" julia-latexsubs) (puthash "\\aa" "Ã¥" julia-latexsubs) (puthash "\\ae" "æ" julia-latexsubs) (puthash "\\eth" "ð" julia-latexsubs) (puthash "\\div" "÷" julia-latexsubs) (puthash "\\o" "ø" julia-latexsubs) (puthash "\\th" "þ" julia-latexsubs) (puthash "\\DJ" "Ä" julia-latexsubs) (puthash "\\dj" "Ä‘" julia-latexsubs) (puthash "\\Elzxh" "ħ" julia-latexsubs) (puthash "\\hbar" "ħ" julia-latexsubs) (puthash "\\L" "Å" julia-latexsubs) (puthash "\\l" "Å‚" julia-latexsubs) (puthash "\\NG" "ÅŠ" julia-latexsubs) (puthash "\\ng" "Å‹" julia-latexsubs) (puthash "\\OE" "Å’" julia-latexsubs) (puthash "\\oe" "Å“" julia-latexsubs) (puthash "\\texthvlig" "Æ•" julia-latexsubs) (puthash "\\textnrleg" "Æž" julia-latexsubs) (puthash "\\Zbar" "Ƶ" julia-latexsubs) (puthash "\\textdoublepipe" "Ç‚" julia-latexsubs) (puthash "\\Elztrna" "É" julia-latexsubs) (puthash "\\Elztrnsa" "É’" julia-latexsubs) (puthash "\\Elzopeno" "É”" julia-latexsubs) (puthash "\\Elzrtld" "É–" julia-latexsubs) (puthash "\\Elzschwa" "É™" julia-latexsubs) (puthash "\\varepsilon" "É›" julia-latexsubs) (puthash "\\Elzpgamma" "É£" julia-latexsubs) (puthash "\\Elzpbgam" "ɤ" julia-latexsubs) (puthash "\\Elztrnh" "É¥" julia-latexsubs) (puthash "\\Elzbtdl" "ɬ" julia-latexsubs) (puthash "\\Elzrtll" "É­" julia-latexsubs) (puthash "\\Elztrnm" "ɯ" julia-latexsubs) (puthash "\\Elztrnmlr" "ɰ" julia-latexsubs) (puthash "\\Elzltlmr" "ɱ" julia-latexsubs) (puthash "\\Elzltln" "ɲ" julia-latexsubs) (puthash "\\Elzrtln" "ɳ" julia-latexsubs) (puthash "\\Elzclomeg" "É·" julia-latexsubs) (puthash "\\textphi" "ɸ" julia-latexsubs) (puthash "\\Elztrnr" "ɹ" julia-latexsubs) (puthash "\\Elztrnrl" "ɺ" julia-latexsubs) (puthash "\\Elzrttrnr" "É»" julia-latexsubs) (puthash "\\Elzrl" "ɼ" julia-latexsubs) (puthash "\\Elzrtlr" "ɽ" julia-latexsubs) (puthash "\\Elzfhr" "ɾ" julia-latexsubs) (puthash "\\Elzrtls" "Ê‚" julia-latexsubs) (puthash "\\Elzesh" "ʃ" julia-latexsubs) (puthash "\\Elztrnt" "ʇ" julia-latexsubs) (puthash "\\Elzrtlt" "ʈ" julia-latexsubs) (puthash "\\Elzpupsil" "ÊŠ" julia-latexsubs) (puthash "\\Elzpscrv" "Ê‹" julia-latexsubs) (puthash "\\Elzinvv" "ÊŒ" julia-latexsubs) (puthash "\\Elzinvw" "Ê" julia-latexsubs) (puthash "\\Elztrny" "ÊŽ" julia-latexsubs) (puthash "\\Elzrtlz" "Ê" julia-latexsubs) (puthash "\\Elzyogh" "Ê’" julia-latexsubs) (puthash "\\Elzglst" "Ê”" julia-latexsubs) (puthash "\\Elzreglst" "Ê•" julia-latexsubs) (puthash "\\Elzinglst" "Ê–" julia-latexsubs) (puthash "\\textturnk" "Êž" julia-latexsubs) (puthash "\\Elzdyogh" "ʤ" julia-latexsubs) (puthash "\\Elztesh" "ʧ" julia-latexsubs) (puthash "\\^h" "ʰ" julia-latexsubs) (puthash "\\^j" "ʲ" julia-latexsubs) (puthash "\\^r" "ʳ" julia-latexsubs) (puthash "\\^w" "Ê·" julia-latexsubs) (puthash "\\^y" "ʸ" julia-latexsubs) (puthash "\\rasp" "ʼ" julia-latexsubs) (puthash "\\textasciicaron" "ˇ" julia-latexsubs) (puthash "\\Elzverts" "ˈ" julia-latexsubs) (puthash "\\Elzverti" "ËŒ" julia-latexsubs) (puthash "\\Elzlmrk" "Ë" julia-latexsubs) (puthash "\\Elzhlmrk" "Ë‘" julia-latexsubs) (puthash "\\Elzsbrhr" "Ë’" julia-latexsubs) (puthash "\\Elzsblhr" "Ë“" julia-latexsubs) (puthash "\\Elzrais" "Ë”" julia-latexsubs) (puthash "\\Elzlow" "Ë•" julia-latexsubs) (puthash "\\u" "˘" julia-latexsubs) (puthash "\\texttildelow" "Ëœ" julia-latexsubs) (puthash "\\^l" "Ë¡" julia-latexsubs) (puthash "\\^s" "Ë¢" julia-latexsubs) (puthash "\\^x" "Ë£" julia-latexsubs) (puthash "\\grave" "Ì€" julia-latexsubs) (puthash "\\acute" "Ì" julia-latexsubs) (puthash "\\hat" "Ì‚" julia-latexsubs) (puthash "\\tilde" "̃" julia-latexsubs) (puthash "\\bar" "Ì„" julia-latexsubs) (puthash "\\overbar" "Ì…" julia-latexsubs) (puthash "\\breve" "̆" julia-latexsubs) (puthash "\\dot" "̇" julia-latexsubs) (puthash "\\ddot" "̈" julia-latexsubs) (puthash "\\ovhook" "̉" julia-latexsubs) (puthash "\\ocirc" "ÌŠ" julia-latexsubs) (puthash "\\H" "Ì‹" julia-latexsubs) (puthash "\\check" "ÌŒ" julia-latexsubs) (puthash "\\candra" "Ì" julia-latexsubs) (puthash "\\oturnedcomma" "Ì’" julia-latexsubs) (puthash "\\ocommatopright" "Ì•" julia-latexsubs) (puthash "\\droang" "Ìš" julia-latexsubs) (puthash "\\Elzpalh" "Ì¡" julia-latexsubs) (puthash "\\Elzrh" "Ì¢" julia-latexsubs) (puthash "\\c" "̧" julia-latexsubs) (puthash "\\k" "̨" julia-latexsubs) (puthash "\\Elzsbbrg" "̪" julia-latexsubs) (puthash "\\wideutilde" "̰" julia-latexsubs) (puthash "\\underbar" "̱" julia-latexsubs) (puthash "\\Elzxl" "̵" julia-latexsubs) (puthash "\\Elzbar" "̶" julia-latexsubs) (puthash "\\sout" "̶" julia-latexsubs) (puthash "\\not" "̸" julia-latexsubs) (puthash "\\Alpha" "Α" julia-latexsubs) (puthash "\\Beta" "Î’" julia-latexsubs) (puthash "\\Gamma" "Γ" julia-latexsubs) (puthash "\\Delta" "Δ" julia-latexsubs) (puthash "\\Epsilon" "Ε" julia-latexsubs) (puthash "\\Zeta" "Ζ" julia-latexsubs) (puthash "\\Eta" "Η" julia-latexsubs) (puthash "\\Theta" "Θ" julia-latexsubs) (puthash "\\Iota" "Ι" julia-latexsubs) (puthash "\\Kappa" "Κ" julia-latexsubs) (puthash "\\Lambda" "Λ" julia-latexsubs) (puthash "\\upMu" "Μ" julia-latexsubs) (puthash "\\upNu" "Î" julia-latexsubs) (puthash "\\Xi" "Ξ" julia-latexsubs) (puthash "\\upOmicron" "Ο" julia-latexsubs) (puthash "\\Pi" "Π" julia-latexsubs) (puthash "\\Rho" "Ρ" julia-latexsubs) (puthash "\\Sigma" "Σ" julia-latexsubs) (puthash "\\Tau" "Τ" julia-latexsubs) (puthash "\\Upsilon" "Î¥" julia-latexsubs) (puthash "\\Phi" "Φ" julia-latexsubs) (puthash "\\Chi" "Χ" julia-latexsubs) (puthash "\\Psi" "Ψ" julia-latexsubs) (puthash "\\Omega" "Ω" julia-latexsubs) (puthash "\\alpha" "α" julia-latexsubs) (puthash "\\beta" "β" julia-latexsubs) (puthash "\\gamma" "γ" julia-latexsubs) (puthash "\\delta" "δ" julia-latexsubs) (puthash "\\upepsilon" "ε" julia-latexsubs) (puthash "\\zeta" "ζ" julia-latexsubs) (puthash "\\eta" "η" julia-latexsubs) (puthash "\\theta" "θ" julia-latexsubs) (puthash "\\iota" "ι" julia-latexsubs) (puthash "\\kappa" "κ" julia-latexsubs) (puthash "\\lambda" "λ" julia-latexsubs) (puthash "\\mu" "μ" julia-latexsubs) (puthash "\\nu" "ν" julia-latexsubs) (puthash "\\xi" "ξ" julia-latexsubs) (puthash "\\upomicron" "ο" julia-latexsubs) (puthash "\\pi" "Ï€" julia-latexsubs) (puthash "\\rho" "Ï" julia-latexsubs) (puthash "\\varsigma" "Ï‚" julia-latexsubs) (puthash "\\sigma" "σ" julia-latexsubs) (puthash "\\tau" "Ï„" julia-latexsubs) (puthash "\\upsilon" "Ï…" julia-latexsubs) (puthash "\\varphi" "φ" julia-latexsubs) (puthash "\\chi" "χ" julia-latexsubs) (puthash "\\psi" "ψ" julia-latexsubs) (puthash "\\omega" "ω" julia-latexsubs) (puthash "\\upvarbeta" "Ï" julia-latexsubs) (puthash "\\vartheta" "Ï‘" julia-latexsubs) (puthash "\\phi" "Ï•" julia-latexsubs) (puthash "\\varpi" "Ï–" julia-latexsubs) (puthash "\\upoldKoppa" "Ϙ" julia-latexsubs) (puthash "\\upoldkoppa" "Ï™" julia-latexsubs) (puthash "\\Stigma" "Ïš" julia-latexsubs) (puthash "\\upstigma" "Ï›" julia-latexsubs) (puthash "\\Digamma" "Ïœ" julia-latexsubs) (puthash "\\digamma" "Ï" julia-latexsubs) (puthash "\\Koppa" "Ïž" julia-latexsubs) (puthash "\\upkoppa" "ÏŸ" julia-latexsubs) (puthash "\\Sampi" "Ï " julia-latexsubs) (puthash "\\upsampi" "Ï¡" julia-latexsubs) (puthash "\\varkappa" "ϰ" julia-latexsubs) (puthash "\\varrho" "ϱ" julia-latexsubs) (puthash "\\textTheta" "Ï´" julia-latexsubs) (puthash "\\epsilon" "ϵ" julia-latexsubs) (puthash "\\backepsilon" "϶" julia-latexsubs) (puthash "\\^A" "\u1d2c" julia-latexsubs) (puthash "\\^B" "\u1d2e" julia-latexsubs) (puthash "\\^D" "\u1d30" julia-latexsubs) (puthash "\\^E" "\u1d31" julia-latexsubs) (puthash "\\^G" "\u1d33" julia-latexsubs) (puthash "\\^H" "\u1d34" julia-latexsubs) (puthash "\\^I" "\u1d35" julia-latexsubs) (puthash "\\^J" "\u1d36" julia-latexsubs) (puthash "\\^K" "\u1d37" julia-latexsubs) (puthash "\\^L" "\u1d38" julia-latexsubs) (puthash "\\^M" "\u1d39" julia-latexsubs) (puthash "\\^N" "\u1d3a" julia-latexsubs) (puthash "\\^O" "\u1d3c" julia-latexsubs) (puthash "\\^P" "\u1d3e" julia-latexsubs) (puthash "\\^R" "\u1d3f" julia-latexsubs) (puthash "\\^T" "\u1d40" julia-latexsubs) (puthash "\\^U" "\u1d41" julia-latexsubs) (puthash "\\^W" "\u1d42" julia-latexsubs) (puthash "\\^a" "\u1d43" julia-latexsubs) (puthash "\\^alpha" "\u1d45" julia-latexsubs) (puthash "\\^b" "\u1d47" julia-latexsubs) (puthash "\\^d" "\u1d48" julia-latexsubs) (puthash "\\^e" "\u1d49" julia-latexsubs) (puthash "\\^epsilon" "\u1d4b" julia-latexsubs) (puthash "\\^g" "\u1d4d" julia-latexsubs) (puthash "\\^k" "\u1d4f" julia-latexsubs) (puthash "\\^m" "\u1d50" julia-latexsubs) (puthash "\\^o" "\u1d52" julia-latexsubs) (puthash "\\^p" "\u1d56" julia-latexsubs) (puthash "\\^t" "\u1d57" julia-latexsubs) (puthash "\\^u" "\u1d58" julia-latexsubs) (puthash "\\^v" "\u1d5b" julia-latexsubs) (puthash "\\^beta" "\u1d5d" julia-latexsubs) (puthash "\\^gamma" "\u1d5e" julia-latexsubs) (puthash "\\^delta" "\u1d5f" julia-latexsubs) (puthash "\\^phi" "\u1d60" julia-latexsubs) (puthash "\\^chi" "\u1d61" julia-latexsubs) (puthash "\\_i" "\u1d62" julia-latexsubs) (puthash "\\_r" "\u1d63" julia-latexsubs) (puthash "\\_u" "\u1d64" julia-latexsubs) (puthash "\\_v" "\u1d65" julia-latexsubs) (puthash "\\_beta" "\u1d66" julia-latexsubs) (puthash "\\_gamma" "\u1d67" julia-latexsubs) (puthash "\\_rho" "\u1d68" julia-latexsubs) (puthash "\\_phi" "\u1d69" julia-latexsubs) (puthash "\\_chi" "\u1d6a" julia-latexsubs) (puthash "\\^c" "\u1d9c" julia-latexsubs) (puthash "\\^f" "\u1da0" julia-latexsubs) (puthash "\\^iota" "\u1da5" julia-latexsubs) (puthash "\\^Phi" "\u1db2" julia-latexsubs) (puthash "\\^z" "\u1dbb" julia-latexsubs) (puthash "\\^theta" "\u1dbf" julia-latexsubs) (puthash "\\enspace" " " julia-latexsubs) (puthash "\\quad" " " julia-latexsubs) (puthash "\\thickspace" " " julia-latexsubs) (puthash "\\thinspace" " " julia-latexsubs) (puthash "\\hspace" " " julia-latexsubs) (puthash "\\endash" "–" julia-latexsubs) (puthash "\\emdash" "—" julia-latexsubs) (puthash "\\Vert" "‖" julia-latexsubs) (puthash "\\lq" "‘" julia-latexsubs) (puthash "\\rq" "’" julia-latexsubs) (puthash "\\Elzreapos" "‛" julia-latexsubs) (puthash "\\textquotedblleft" "“" julia-latexsubs) (puthash "\\textquotedblright" "â€" julia-latexsubs) (puthash "\\dagger" "†" julia-latexsubs) (puthash "\\ddagger" "‡" julia-latexsubs) (puthash "\\bullet" "•" julia-latexsubs) (puthash "\\dots" "…" julia-latexsubs) (puthash "\\textperthousand" "‰" julia-latexsubs) (puthash "\\textpertenthousand" "‱" julia-latexsubs) (puthash "\\prime" "′" julia-latexsubs) (puthash "\\pprime" "″" julia-latexsubs) (puthash "\\ppprime" "‴" julia-latexsubs) (puthash "\\backprime" "‵" julia-latexsubs) (puthash "\\backpprime" "‶" julia-latexsubs) (puthash "\\backppprime" "‷" julia-latexsubs) (puthash "\\guilsinglleft" "‹" julia-latexsubs) (puthash "\\guilsinglright" "›" julia-latexsubs) (puthash "\\tieconcat" "â€" julia-latexsubs) (puthash "\\pppprime" "â—" julia-latexsubs) (puthash "\\nolinebreak" "\u2060" julia-latexsubs) (puthash "\\^0" "â°" julia-latexsubs) (puthash "\\^i" "â±" julia-latexsubs) (puthash "\\^4" "â´" julia-latexsubs) (puthash "\\^5" "âµ" julia-latexsubs) (puthash "\\^6" "â¶" julia-latexsubs) (puthash "\\^7" "â·" julia-latexsubs) (puthash "\\^8" "â¸" julia-latexsubs) (puthash "\\^9" "â¹" julia-latexsubs) (puthash "\\^+" "âº" julia-latexsubs) (puthash "\\^-" "â»" julia-latexsubs) (puthash "\\^=" "â¼" julia-latexsubs) (puthash "\\^(" "â½" julia-latexsubs) (puthash "\\^)" "â¾" julia-latexsubs) (puthash "\\^n" "â¿" julia-latexsubs) (puthash "\\_0" "â‚€" julia-latexsubs) (puthash "\\_1" "â‚" julia-latexsubs) (puthash "\\_2" "â‚‚" julia-latexsubs) (puthash "\\_3" "₃" julia-latexsubs) (puthash "\\_4" "â‚„" julia-latexsubs) (puthash "\\_5" "â‚…" julia-latexsubs) (puthash "\\_6" "₆" julia-latexsubs) (puthash "\\_7" "₇" julia-latexsubs) (puthash "\\_8" "₈" julia-latexsubs) (puthash "\\_9" "₉" julia-latexsubs) (puthash "\\_+" "₊" julia-latexsubs) (puthash "\\_-" "â‚‹" julia-latexsubs) (puthash "\\_=" "₌" julia-latexsubs) (puthash "\\_(" "â‚" julia-latexsubs) (puthash "\\_)" "₎" julia-latexsubs) (puthash "\\_a" "\u2090" julia-latexsubs) (puthash "\\_e" "\u2091" julia-latexsubs) (puthash "\\_o" "\u2092" julia-latexsubs) (puthash "\\_x" "\u2093" julia-latexsubs) (puthash "\\_schwa" "\u2094" julia-latexsubs) (puthash "\\_h" "\u2095" julia-latexsubs) (puthash "\\_k" "\u2096" julia-latexsubs) (puthash "\\_l" "\u2097" julia-latexsubs) (puthash "\\_m" "\u2098" julia-latexsubs) (puthash "\\_n" "\u2099" julia-latexsubs) (puthash "\\_p" "\u209a" julia-latexsubs) (puthash "\\_s" "\u209b" julia-latexsubs) (puthash "\\_t" "\u209c" julia-latexsubs) (puthash "\\Elzpes" "â‚§" julia-latexsubs) (puthash "\\euro" "€" julia-latexsubs) (puthash "\\leftharpoonaccent" "âƒ" julia-latexsubs) (puthash "\\rightharpoonaccent" "⃑" julia-latexsubs) (puthash "\\vertoverlay" "⃒" julia-latexsubs) (puthash "\\overleftarrow" "⃖" julia-latexsubs) (puthash "\\vec" "⃗" julia-latexsubs) (puthash "\\dddot" "⃛" julia-latexsubs) (puthash "\\ddddot" "⃜" julia-latexsubs) (puthash "\\enclosecircle" "âƒ" julia-latexsubs) (puthash "\\enclosesquare" "⃞" julia-latexsubs) (puthash "\\enclosediamond" "⃟" julia-latexsubs) (puthash "\\overleftrightarrow" "⃡" julia-latexsubs) (puthash "\\enclosetriangle" "⃤" julia-latexsubs) (puthash "\\annuity" "⃧" julia-latexsubs) (puthash "\\threeunderdot" "⃨" julia-latexsubs) (puthash "\\widebridgeabove" "⃩" julia-latexsubs) (puthash "\\underrightharpoondown" "\u20ec" julia-latexsubs) (puthash "\\underleftharpoondown" "\u20ed" julia-latexsubs) (puthash "\\underleftarrow" "\u20ee" julia-latexsubs) (puthash "\\underrightarrow" "\u20ef" julia-latexsubs) (puthash "\\asteraccent" "\u20f0" julia-latexsubs) (puthash "\\BbbC" "â„‚" julia-latexsubs) (puthash "\\Eulerconst" "ℇ" julia-latexsubs) (puthash "\\mscrg" "ℊ" julia-latexsubs) (puthash "\\mscrH" "â„‹" julia-latexsubs) (puthash "\\mfrakH" "ℌ" julia-latexsubs) (puthash "\\BbbH" "â„" julia-latexsubs) (puthash "\\Planckconst" "ℎ" julia-latexsubs) (puthash "\\hslash" "â„" julia-latexsubs) (puthash "\\mscrI" "â„" julia-latexsubs) (puthash "\\Im" "â„‘" julia-latexsubs) (puthash "\\mscrL" "â„’" julia-latexsubs) (puthash "\\ell" "â„“" julia-latexsubs) (puthash "\\BbbN" "â„•" julia-latexsubs) (puthash "\\textnumero" "â„–" julia-latexsubs) (puthash "\\wp" "℘" julia-latexsubs) (puthash "\\BbbP" "â„™" julia-latexsubs) (puthash "\\BbbQ" "ℚ" julia-latexsubs) (puthash "\\mscrR" "â„›" julia-latexsubs) (puthash "\\Re" "ℜ" julia-latexsubs) (puthash "\\BbbR" "â„" julia-latexsubs) (puthash "\\Elzxrat" "℞" julia-latexsubs) (puthash "\\texttrademark" "â„¢" julia-latexsubs) (puthash "\\BbbZ" "ℤ" julia-latexsubs) (puthash "\\mho" "â„§" julia-latexsubs) (puthash "\\mfrakZ" "ℨ" julia-latexsubs) (puthash "\\turnediota" "â„©" julia-latexsubs) (puthash "\\Angstrom" "â„«" julia-latexsubs) (puthash "\\mscrB" "ℬ" julia-latexsubs) (puthash "\\mfrakC" "â„­" julia-latexsubs) (puthash "\\mscre" "ℯ" julia-latexsubs) (puthash "\\mscrE" "â„°" julia-latexsubs) (puthash "\\mscrF" "ℱ" julia-latexsubs) (puthash "\\Finv" "Ⅎ" julia-latexsubs) (puthash "\\mscrM" "ℳ" julia-latexsubs) (puthash "\\mscro" "â„´" julia-latexsubs) (puthash "\\aleph" "ℵ" julia-latexsubs) (puthash "\\beth" "â„¶" julia-latexsubs) (puthash "\\gimel" "â„·" julia-latexsubs) (puthash "\\daleth" "ℸ" julia-latexsubs) (puthash "\\Bbbpi" "\u213c" julia-latexsubs) (puthash "\\Bbbgamma" "ℽ" julia-latexsubs) (puthash "\\BbbGamma" "ℾ" julia-latexsubs) (puthash "\\BbbPi" "â„¿" julia-latexsubs) (puthash "\\bbsum" "â…€" julia-latexsubs) (puthash "\\Game" "â…" julia-latexsubs) (puthash "\\sansLturned" "â…‚" julia-latexsubs) (puthash "\\sansLmirrored" "â…ƒ" julia-latexsubs) (puthash "\\Yup" "â…„" julia-latexsubs) (puthash "\\mitBbbD" "â……" julia-latexsubs) (puthash "\\mitBbbd" "â…†" julia-latexsubs) (puthash "\\mitBbbe" "â…‡" julia-latexsubs) (puthash "\\mitBbbi" "â…ˆ" julia-latexsubs) (puthash "\\mitBbbj" "â…‰" julia-latexsubs) (puthash "\\PropertyLine" "â…Š" julia-latexsubs) (puthash "\\upand" "â…‹" julia-latexsubs) (puthash "\\leftarrow" "â†" julia-latexsubs) (puthash "\\uparrow" "↑" julia-latexsubs) (puthash "\\rightarrow" "→" julia-latexsubs) (puthash "\\downarrow" "↓" julia-latexsubs) (puthash "\\leftrightarrow" "↔" julia-latexsubs) (puthash "\\updownarrow" "↕" julia-latexsubs) (puthash "\\nwarrow" "↖" julia-latexsubs) (puthash "\\nearrow" "↗" julia-latexsubs) (puthash "\\searrow" "↘" julia-latexsubs) (puthash "\\swarrow" "↙" julia-latexsubs) (puthash "\\nleftarrow" "↚" julia-latexsubs) (puthash "\\nrightarrow" "↛" julia-latexsubs) (puthash "\\twoheadleftarrow" "↞" julia-latexsubs) (puthash "\\twoheaduparrow" "↟" julia-latexsubs) (puthash "\\twoheadrightarrow" "↠" julia-latexsubs) (puthash "\\twoheaddownarrow" "↡" julia-latexsubs) (puthash "\\leftarrowtail" "↢" julia-latexsubs) (puthash "\\rightarrowtail" "↣" julia-latexsubs) (puthash "\\mapsfrom" "↤" julia-latexsubs) (puthash "\\mapsup" "↥" julia-latexsubs) (puthash "\\mapsto" "↦" julia-latexsubs) (puthash "\\mapsdown" "↧" julia-latexsubs) (puthash "\\updownarrowbar" "↨" julia-latexsubs) (puthash "\\hookleftarrow" "↩" julia-latexsubs) (puthash "\\hookrightarrow" "↪" julia-latexsubs) (puthash "\\looparrowleft" "↫" julia-latexsubs) (puthash "\\looparrowright" "↬" julia-latexsubs) (puthash "\\leftrightsquigarrow" "↭" julia-latexsubs) (puthash "\\nleftrightarrow" "↮" julia-latexsubs) (puthash "\\downzigzagarrow" "↯" julia-latexsubs) (puthash "\\Lsh" "↰" julia-latexsubs) (puthash "\\Rsh" "↱" julia-latexsubs) (puthash "\\Ldsh" "↲" julia-latexsubs) (puthash "\\Rdsh" "↳" julia-latexsubs) (puthash "\\linefeed" "↴" julia-latexsubs) (puthash "\\carriagereturn" "↵" julia-latexsubs) (puthash "\\curvearrowleft" "↶" julia-latexsubs) (puthash "\\curvearrowright" "↷" julia-latexsubs) (puthash "\\barovernorthwestarrow" "↸" julia-latexsubs) (puthash "\\barleftarrowrightarrowbar" "↹" julia-latexsubs) (puthash "\\circlearrowleft" "↺" julia-latexsubs) (puthash "\\circlearrowright" "↻" julia-latexsubs) (puthash "\\leftharpoonup" "↼" julia-latexsubs) (puthash "\\leftharpoondown" "↽" julia-latexsubs) (puthash "\\upharpoonleft" "↾" julia-latexsubs) (puthash "\\upharpoonright" "↿" julia-latexsubs) (puthash "\\rightharpoonup" "⇀" julia-latexsubs) (puthash "\\rightharpoondown" "â‡" julia-latexsubs) (puthash "\\downharpoonright" "⇂" julia-latexsubs) (puthash "\\downharpoonleft" "⇃" julia-latexsubs) (puthash "\\rightleftarrows" "⇄" julia-latexsubs) (puthash "\\dblarrowupdown" "⇅" julia-latexsubs) (puthash "\\leftrightarrows" "⇆" julia-latexsubs) (puthash "\\leftleftarrows" "⇇" julia-latexsubs) (puthash "\\upuparrows" "⇈" julia-latexsubs) (puthash "\\rightrightarrows" "⇉" julia-latexsubs) (puthash "\\downdownarrows" "⇊" julia-latexsubs) (puthash "\\leftrightharpoons" "⇋" julia-latexsubs) (puthash "\\rightleftharpoons" "⇌" julia-latexsubs) (puthash "\\nLeftarrow" "â‡" julia-latexsubs) (puthash "\\nLeftrightarrow" "⇎" julia-latexsubs) (puthash "\\nRightarrow" "â‡" julia-latexsubs) (puthash "\\Leftarrow" "â‡" julia-latexsubs) (puthash "\\Uparrow" "⇑" julia-latexsubs) (puthash "\\Rightarrow" "⇒" julia-latexsubs) (puthash "\\Downarrow" "⇓" julia-latexsubs) (puthash "\\Leftrightarrow" "⇔" julia-latexsubs) (puthash "\\Updownarrow" "⇕" julia-latexsubs) (puthash "\\Nwarrow" "⇖" julia-latexsubs) (puthash "\\Nearrow" "⇗" julia-latexsubs) (puthash "\\Searrow" "⇘" julia-latexsubs) (puthash "\\Swarrow" "⇙" julia-latexsubs) (puthash "\\Lleftarrow" "⇚" julia-latexsubs) (puthash "\\Rrightarrow" "⇛" julia-latexsubs) (puthash "\\leftsquigarrow" "⇜" julia-latexsubs) (puthash "\\rightsquigarrow" "â‡" julia-latexsubs) (puthash "\\nHuparrow" "⇞" julia-latexsubs) (puthash "\\nHdownarrow" "⇟" julia-latexsubs) (puthash "\\leftdasharrow" "⇠" julia-latexsubs) (puthash "\\updasharrow" "⇡" julia-latexsubs) (puthash "\\rightdasharrow" "⇢" julia-latexsubs) (puthash "\\downdasharrow" "⇣" julia-latexsubs) (puthash "\\barleftarrow" "⇤" julia-latexsubs) (puthash "\\rightarrowbar" "⇥" julia-latexsubs) (puthash "\\leftwhitearrow" "⇦" julia-latexsubs) (puthash "\\upwhitearrow" "⇧" julia-latexsubs) (puthash "\\rightwhitearrow" "⇨" julia-latexsubs) (puthash "\\downwhitearrow" "⇩" julia-latexsubs) (puthash "\\whitearrowupfrombar" "⇪" julia-latexsubs) (puthash "\\circleonrightarrow" "⇴" julia-latexsubs) (puthash "\\DownArrowUpArrow" "⇵" julia-latexsubs) (puthash "\\rightthreearrows" "⇶" julia-latexsubs) (puthash "\\nvleftarrow" "⇷" julia-latexsubs) (puthash "\\nvrightarrow" "⇸" julia-latexsubs) (puthash "\\nvleftrightarrow" "⇹" julia-latexsubs) (puthash "\\nVleftarrow" "⇺" julia-latexsubs) (puthash "\\nVrightarrow" "⇻" julia-latexsubs) (puthash "\\nVleftrightarrow" "⇼" julia-latexsubs) (puthash "\\leftarrowtriangle" "⇽" julia-latexsubs) (puthash "\\rightarrowtriangle" "⇾" julia-latexsubs) (puthash "\\leftrightarrowtriangle" "⇿" julia-latexsubs) (puthash "\\forall" "∀" julia-latexsubs) (puthash "\\complement" "âˆ" julia-latexsubs) (puthash "\\partial" "∂" julia-latexsubs) (puthash "\\exists" "∃" julia-latexsubs) (puthash "\\nexists" "∄" julia-latexsubs) (puthash "\\varnothing" "∅" julia-latexsubs) (puthash "\\increment" "∆" julia-latexsubs) (puthash "\\del" "∇" julia-latexsubs) (puthash "\\nabla" "∇" julia-latexsubs) (puthash "\\in" "∈" julia-latexsubs) (puthash "\\notin" "∉" julia-latexsubs) (puthash "\\smallin" "∊" julia-latexsubs) (puthash "\\ni" "∋" julia-latexsubs) (puthash "\\nni" "∌" julia-latexsubs) (puthash "\\smallni" "âˆ" julia-latexsubs) (puthash "\\QED" "∎" julia-latexsubs) (puthash "\\prod" "âˆ" julia-latexsubs) (puthash "\\coprod" "âˆ" julia-latexsubs) (puthash "\\sum" "∑" julia-latexsubs) (puthash "\\minus" "−" julia-latexsubs) (puthash "\\mp" "∓" julia-latexsubs) (puthash "\\dotplus" "∔" julia-latexsubs) (puthash "\\setminus" "∖" julia-latexsubs) (puthash "\\ast" "∗" julia-latexsubs) (puthash "\\circ" "∘" julia-latexsubs) (puthash "\\vysmblkcircle" "∙" julia-latexsubs) (puthash "\\surd" "√" julia-latexsubs) (puthash "\\sqrt" "√" julia-latexsubs) (puthash "\\cbrt" "∛" julia-latexsubs) (puthash "\\fourthroot" "∜" julia-latexsubs) (puthash "\\propto" "âˆ" julia-latexsubs) (puthash "\\infty" "∞" julia-latexsubs) (puthash "\\rightangle" "∟" julia-latexsubs) (puthash "\\angle" "∠" julia-latexsubs) (puthash "\\measuredangle" "∡" julia-latexsubs) (puthash "\\sphericalangle" "∢" julia-latexsubs) (puthash "\\mid" "∣" julia-latexsubs) (puthash "\\nmid" "∤" julia-latexsubs) (puthash "\\parallel" "∥" julia-latexsubs) (puthash "\\nparallel" "∦" julia-latexsubs) (puthash "\\wedge" "∧" julia-latexsubs) (puthash "\\vee" "∨" julia-latexsubs) (puthash "\\cap" "∩" julia-latexsubs) (puthash "\\cup" "∪" julia-latexsubs) (puthash "\\int" "∫" julia-latexsubs) (puthash "\\iint" "∬" julia-latexsubs) (puthash "\\iiint" "∭" julia-latexsubs) (puthash "\\oint" "∮" julia-latexsubs) (puthash "\\oiint" "∯" julia-latexsubs) (puthash "\\oiiint" "∰" julia-latexsubs) (puthash "\\clwintegral" "∱" julia-latexsubs) (puthash "\\varointclockwise" "∲" julia-latexsubs) (puthash "\\ointctrclockwise" "∳" julia-latexsubs) (puthash "\\therefore" "∴" julia-latexsubs) (puthash "\\because" "∵" julia-latexsubs) (puthash "\\Colon" "∷" julia-latexsubs) (puthash "\\dotminus" "∸" julia-latexsubs) (puthash "\\dotsminusdots" "∺" julia-latexsubs) (puthash "\\kernelcontraction" "∻" julia-latexsubs) (puthash "\\sim" "∼" julia-latexsubs) (puthash "\\backsim" "∽" julia-latexsubs) (puthash "\\lazysinv" "∾" julia-latexsubs) (puthash "\\sinewave" "∿" julia-latexsubs) (puthash "\\wr" "≀" julia-latexsubs) (puthash "\\nsim" "â‰" julia-latexsubs) (puthash "\\eqsim" "≂" julia-latexsubs) (puthash "\\neqsim" "≂̸" julia-latexsubs) (puthash "\\simeq" "≃" julia-latexsubs) (puthash "\\nsime" "≄" julia-latexsubs) (puthash "\\cong" "≅" julia-latexsubs) (puthash "\\approxnotequal" "≆" julia-latexsubs) (puthash "\\ncong" "≇" julia-latexsubs) (puthash "\\approx" "≈" julia-latexsubs) (puthash "\\napprox" "≉" julia-latexsubs) (puthash "\\approxeq" "≊" julia-latexsubs) (puthash "\\tildetrpl" "≋" julia-latexsubs) (puthash "\\allequal" "≌" julia-latexsubs) (puthash "\\asymp" "â‰" julia-latexsubs) (puthash "\\Bumpeq" "≎" julia-latexsubs) (puthash "\\nBumpeq" "≎̸" julia-latexsubs) (puthash "\\bumpeq" "â‰" julia-latexsubs) (puthash "\\nbumpeq" "â‰Ì¸" julia-latexsubs) (puthash "\\doteq" "â‰" julia-latexsubs) (puthash "\\Doteq" "≑" julia-latexsubs) (puthash "\\fallingdotseq" "≒" julia-latexsubs) (puthash "\\risingdotseq" "≓" julia-latexsubs) (puthash "\\coloneq" "≔" julia-latexsubs) (puthash "\\eqcolon" "≕" julia-latexsubs) (puthash "\\eqcirc" "≖" julia-latexsubs) (puthash "\\circeq" "≗" julia-latexsubs) (puthash "\\arceq" "≘" julia-latexsubs) (puthash "\\wedgeq" "≙" julia-latexsubs) (puthash "\\veeeq" "≚" julia-latexsubs) (puthash "\\starequal" "≛" julia-latexsubs) (puthash "\\triangleq" "≜" julia-latexsubs) (puthash "\\eqdef" "â‰" julia-latexsubs) (puthash "\\measeq" "≞" julia-latexsubs) (puthash "\\questeq" "≟" julia-latexsubs) (puthash "\\ne" "≠" julia-latexsubs) (puthash "\\equiv" "≡" julia-latexsubs) (puthash "\\nequiv" "≢" julia-latexsubs) (puthash "\\Equiv" "≣" julia-latexsubs) (puthash "\\le" "≤" julia-latexsubs) (puthash "\\ge" "≥" julia-latexsubs) (puthash "\\leqq" "≦" julia-latexsubs) (puthash "\\geqq" "≧" julia-latexsubs) (puthash "\\lneqq" "≨" julia-latexsubs) (puthash "\\lvertneqq" "≨︀" julia-latexsubs) (puthash "\\gneqq" "≩" julia-latexsubs) (puthash "\\gvertneqq" "≩︀" julia-latexsubs) (puthash "\\ll" "≪" julia-latexsubs) (puthash "\\NotLessLess" "≪̸" julia-latexsubs) (puthash "\\gg" "≫" julia-latexsubs) (puthash "\\NotGreaterGreater" "≫̸" julia-latexsubs) (puthash "\\between" "≬" julia-latexsubs) (puthash "\\nasymp" "≭" julia-latexsubs) (puthash "\\nless" "≮" julia-latexsubs) (puthash "\\ngtr" "≯" julia-latexsubs) (puthash "\\nleq" "≰" julia-latexsubs) (puthash "\\ngeq" "≱" julia-latexsubs) (puthash "\\lesssim" "≲" julia-latexsubs) (puthash "\\gtrsim" "≳" julia-latexsubs) (puthash "\\nlesssim" "≴" julia-latexsubs) (puthash "\\ngtrsim" "≵" julia-latexsubs) (puthash "\\lessgtr" "≶" julia-latexsubs) (puthash "\\gtrless" "≷" julia-latexsubs) (puthash "\\notlessgreater" "≸" julia-latexsubs) (puthash "\\notgreaterless" "≹" julia-latexsubs) (puthash "\\prec" "≺" julia-latexsubs) (puthash "\\succ" "≻" julia-latexsubs) (puthash "\\preccurlyeq" "≼" julia-latexsubs) (puthash "\\succcurlyeq" "≽" julia-latexsubs) (puthash "\\precsim" "≾" julia-latexsubs) (puthash "\\nprecsim" "≾̸" julia-latexsubs) (puthash "\\succsim" "≿" julia-latexsubs) (puthash "\\nsuccsim" "≿̸" julia-latexsubs) (puthash "\\nprec" "⊀" julia-latexsubs) (puthash "\\nsucc" "âŠ" julia-latexsubs) (puthash "\\subset" "⊂" julia-latexsubs) (puthash "\\supset" "⊃" julia-latexsubs) (puthash "\\nsubset" "⊄" julia-latexsubs) (puthash "\\nsupset" "⊅" julia-latexsubs) (puthash "\\subseteq" "⊆" julia-latexsubs) (puthash "\\supseteq" "⊇" julia-latexsubs) (puthash "\\nsubseteq" "⊈" julia-latexsubs) (puthash "\\nsupseteq" "⊉" julia-latexsubs) (puthash "\\subsetneq" "⊊" julia-latexsubs) (puthash "\\varsubsetneqq" "⊊︀" julia-latexsubs) (puthash "\\supsetneq" "⊋" julia-latexsubs) (puthash "\\varsupsetneq" "⊋︀" julia-latexsubs) (puthash "\\cupdot" "âŠ" julia-latexsubs) (puthash "\\uplus" "⊎" julia-latexsubs) (puthash "\\sqsubset" "âŠ" julia-latexsubs) (puthash "\\NotSquareSubset" "âŠÌ¸" julia-latexsubs) (puthash "\\sqsupset" "âŠ" julia-latexsubs) (puthash "\\NotSquareSuperset" "âŠÌ¸" julia-latexsubs) (puthash "\\sqsubseteq" "⊑" julia-latexsubs) (puthash "\\sqsupseteq" "⊒" julia-latexsubs) (puthash "\\sqcap" "⊓" julia-latexsubs) (puthash "\\sqcup" "⊔" julia-latexsubs) (puthash "\\oplus" "⊕" julia-latexsubs) (puthash "\\ominus" "⊖" julia-latexsubs) (puthash "\\otimes" "⊗" julia-latexsubs) (puthash "\\oslash" "⊘" julia-latexsubs) (puthash "\\odot" "⊙" julia-latexsubs) (puthash "\\circledcirc" "⊚" julia-latexsubs) (puthash "\\circledast" "⊛" julia-latexsubs) (puthash "\\circledequal" "⊜" julia-latexsubs) (puthash "\\circleddash" "âŠ" julia-latexsubs) (puthash "\\boxplus" "⊞" julia-latexsubs) (puthash "\\boxminus" "⊟" julia-latexsubs) (puthash "\\boxtimes" "⊠" julia-latexsubs) (puthash "\\boxdot" "⊡" julia-latexsubs) (puthash "\\vdash" "⊢" julia-latexsubs) (puthash "\\dashv" "⊣" julia-latexsubs) (puthash "\\top" "⊤" julia-latexsubs) (puthash "\\bot" "⊥" julia-latexsubs) (puthash "\\models" "⊧" julia-latexsubs) (puthash "\\vDash" "⊨" julia-latexsubs) (puthash "\\Vdash" "⊩" julia-latexsubs) (puthash "\\Vvdash" "⊪" julia-latexsubs) (puthash "\\VDash" "⊫" julia-latexsubs) (puthash "\\nvdash" "⊬" julia-latexsubs) (puthash "\\nvDash" "⊭" julia-latexsubs) (puthash "\\nVdash" "⊮" julia-latexsubs) (puthash "\\nVDash" "⊯" julia-latexsubs) (puthash "\\prurel" "⊰" julia-latexsubs) (puthash "\\scurel" "⊱" julia-latexsubs) (puthash "\\vartriangleleft" "⊲" julia-latexsubs) (puthash "\\vartriangleright" "⊳" julia-latexsubs) (puthash "\\trianglelefteq" "⊴" julia-latexsubs) (puthash "\\trianglerighteq" "⊵" julia-latexsubs) (puthash "\\original" "⊶" julia-latexsubs) (puthash "\\image" "⊷" julia-latexsubs) (puthash "\\multimap" "⊸" julia-latexsubs) (puthash "\\hermitconjmatrix" "⊹" julia-latexsubs) (puthash "\\intercal" "⊺" julia-latexsubs) (puthash "\\veebar" "⊻" julia-latexsubs) (puthash "\\barwedge" "⊼" julia-latexsubs) (puthash "\\barvee" "⊽" julia-latexsubs) (puthash "\\rightanglearc" "⊾" julia-latexsubs) (puthash "\\varlrtriangle" "⊿" julia-latexsubs) (puthash "\\bigwedge" "â‹€" julia-latexsubs) (puthash "\\bigvee" "â‹" julia-latexsubs) (puthash "\\bigcap" "â‹‚" julia-latexsubs) (puthash "\\bigcup" "⋃" julia-latexsubs) (puthash "\\diamond" "â‹„" julia-latexsubs) (puthash "\\cdot" "â‹…" julia-latexsubs) (puthash "\\star" "⋆" julia-latexsubs) (puthash "\\divideontimes" "⋇" julia-latexsubs) (puthash "\\bowtie" "⋈" julia-latexsubs) (puthash "\\ltimes" "⋉" julia-latexsubs) (puthash "\\rtimes" "⋊" julia-latexsubs) (puthash "\\leftthreetimes" "â‹‹" julia-latexsubs) (puthash "\\rightthreetimes" "⋌" julia-latexsubs) (puthash "\\backsimeq" "â‹" julia-latexsubs) (puthash "\\curlyvee" "⋎" julia-latexsubs) (puthash "\\curlywedge" "â‹" julia-latexsubs) (puthash "\\Subset" "â‹" julia-latexsubs) (puthash "\\Supset" "â‹‘" julia-latexsubs) (puthash "\\Cap" "â‹’" julia-latexsubs) (puthash "\\Cup" "â‹“" julia-latexsubs) (puthash "\\pitchfork" "â‹”" julia-latexsubs) (puthash "\\equalparallel" "â‹•" julia-latexsubs) (puthash "\\lessdot" "â‹–" julia-latexsubs) (puthash "\\gtrdot" "â‹—" julia-latexsubs) (puthash "\\verymuchless" "⋘" julia-latexsubs) (puthash "\\ggg" "â‹™" julia-latexsubs) (puthash "\\lesseqgtr" "⋚" julia-latexsubs) (puthash "\\gtreqless" "â‹›" julia-latexsubs) (puthash "\\eqless" "⋜" julia-latexsubs) (puthash "\\eqgtr" "â‹" julia-latexsubs) (puthash "\\curlyeqprec" "⋞" julia-latexsubs) (puthash "\\curlyeqsucc" "⋟" julia-latexsubs) (puthash "\\npreccurlyeq" "â‹ " julia-latexsubs) (puthash "\\nsucccurlyeq" "â‹¡" julia-latexsubs) (puthash "\\nsqsubseteq" "â‹¢" julia-latexsubs) (puthash "\\nsqsupseteq" "â‹£" julia-latexsubs) (puthash "\\sqsubsetneq" "⋤" julia-latexsubs) (puthash "\\Elzsqspne" "â‹¥" julia-latexsubs) (puthash "\\lnsim" "⋦" julia-latexsubs) (puthash "\\gnsim" "â‹§" julia-latexsubs) (puthash "\\precnsim" "⋨" julia-latexsubs) (puthash "\\succnsim" "â‹©" julia-latexsubs) (puthash "\\ntriangleleft" "⋪" julia-latexsubs) (puthash "\\ntriangleright" "â‹«" julia-latexsubs) (puthash "\\ntrianglelefteq" "⋬" julia-latexsubs) (puthash "\\ntrianglerighteq" "â‹­" julia-latexsubs) (puthash "\\vdots" "â‹®" julia-latexsubs) (puthash "\\cdots" "⋯" julia-latexsubs) (puthash "\\adots" "â‹°" julia-latexsubs) (puthash "\\ddots" "⋱" julia-latexsubs) (puthash "\\disin" "⋲" julia-latexsubs) (puthash "\\varisins" "⋳" julia-latexsubs) (puthash "\\isins" "â‹´" julia-latexsubs) (puthash "\\isindot" "⋵" julia-latexsubs) (puthash "\\varisinobar" "â‹¶" julia-latexsubs) (puthash "\\isinobar" "â‹·" julia-latexsubs) (puthash "\\isinvb" "⋸" julia-latexsubs) (puthash "\\isinE" "⋹" julia-latexsubs) (puthash "\\nisd" "⋺" julia-latexsubs) (puthash "\\varnis" "â‹»" julia-latexsubs) (puthash "\\nis" "⋼" julia-latexsubs) (puthash "\\varniobar" "⋽" julia-latexsubs) (puthash "\\niobar" "⋾" julia-latexsubs) (puthash "\\bagmember" "â‹¿" julia-latexsubs) (puthash "\\diameter" "⌀" julia-latexsubs) (puthash "\\house" "⌂" julia-latexsubs) (puthash "\\vardoublebarwedge" "⌆" julia-latexsubs) (puthash "\\lceil" "⌈" julia-latexsubs) (puthash "\\rceil" "⌉" julia-latexsubs) (puthash "\\lfloor" "⌊" julia-latexsubs) (puthash "\\rfloor" "⌋" julia-latexsubs) (puthash "\\invnot" "âŒ" julia-latexsubs) (puthash "\\sqlozenge" "⌑" julia-latexsubs) (puthash "\\profline" "⌒" julia-latexsubs) (puthash "\\profsurf" "⌓" julia-latexsubs) (puthash "\\recorder" "⌕" julia-latexsubs) (puthash "\\viewdata" "⌗" julia-latexsubs) (puthash "\\turnednot" "⌙" julia-latexsubs) (puthash "\\ulcorner" "⌜" julia-latexsubs) (puthash "\\urcorner" "âŒ" julia-latexsubs) (puthash "\\llcorner" "⌞" julia-latexsubs) (puthash "\\lrcorner" "⌟" julia-latexsubs) (puthash "\\frown" "⌢" julia-latexsubs) (puthash "\\smile" "⌣" julia-latexsubs) (puthash "\\varhexagonlrbonds" "⌬" julia-latexsubs) (puthash "\\conictaper" "⌲" julia-latexsubs) (puthash "\\topbot" "⌶" julia-latexsubs) (puthash "\\obar" "⌽" julia-latexsubs) (puthash "\\APLnotslash" "⌿" julia-latexsubs) (puthash "\\APLnotbackslash" "â€" julia-latexsubs) (puthash "\\APLboxupcaret" "â“" julia-latexsubs) (puthash "\\APLboxquestion" "â°" julia-latexsubs) (puthash "\\hexagon" "⎔" julia-latexsubs) (puthash "\\Elzdlcorn" "⎣" julia-latexsubs) (puthash "\\lmoustache" "⎰" julia-latexsubs) (puthash "\\rmoustache" "⎱" julia-latexsubs) (puthash "\\overbracket" "⎴" julia-latexsubs) (puthash "\\underbracket" "⎵" julia-latexsubs) (puthash "\\bbrktbrk" "⎶" julia-latexsubs) (puthash "\\sqrtbottom" "⎷" julia-latexsubs) (puthash "\\lvboxline" "⎸" julia-latexsubs) (puthash "\\rvboxline" "⎹" julia-latexsubs) (puthash "\\varcarriagereturn" "âŽ" julia-latexsubs) (puthash "\\trapezium" "\u23e2" julia-latexsubs) (puthash "\\benzenr" "\u23e3" julia-latexsubs) (puthash "\\strns" "\u23e4" julia-latexsubs) (puthash "\\fltns" "\u23e5" julia-latexsubs) (puthash "\\accurrent" "\u23e6" julia-latexsubs) (puthash "\\elinters" "\u23e7" julia-latexsubs) (puthash "\\blanksymbol" "â¢" julia-latexsubs) (puthash "\\textvisiblespace" "â£" julia-latexsubs) (puthash "\\circledS" "Ⓢ" julia-latexsubs) (puthash "\\Elzdshfnc" "┆" julia-latexsubs) (puthash "\\Elzsqfnw" "â”™" julia-latexsubs) (puthash "\\diagup" "╱" julia-latexsubs) (puthash "\\diagdown" "╲" julia-latexsubs) (puthash "\\blockuphalf" "â–€" julia-latexsubs) (puthash "\\blocklowhalf" "â–„" julia-latexsubs) (puthash "\\blockfull" "â–ˆ" julia-latexsubs) (puthash "\\blocklefthalf" "â–Œ" julia-latexsubs) (puthash "\\blockrighthalf" "â–" julia-latexsubs) (puthash "\\blockqtrshaded" "â–‘" julia-latexsubs) (puthash "\\blockhalfshaded" "â–’" julia-latexsubs) (puthash "\\blockthreeqtrshaded" "â–“" julia-latexsubs) (puthash "\\blacksquare" "â– " julia-latexsubs) (puthash "\\square" "â–¡" julia-latexsubs) (puthash "\\squoval" "â–¢" julia-latexsubs) (puthash "\\blackinwhitesquare" "â–£" julia-latexsubs) (puthash "\\squarehfill" "â–¤" julia-latexsubs) (puthash "\\squarevfill" "â–¥" julia-latexsubs) (puthash "\\squarehvfill" "â–¦" julia-latexsubs) (puthash "\\squarenwsefill" "â–§" julia-latexsubs) (puthash "\\squareneswfill" "â–¨" julia-latexsubs) (puthash "\\squarecrossfill" "â–©" julia-latexsubs) (puthash "\\smblksquare" "â–ª" julia-latexsubs) (puthash "\\smwhtsquare" "â–«" julia-latexsubs) (puthash "\\hrectangleblack" "â–¬" julia-latexsubs) (puthash "\\hrectangle" "â–­" julia-latexsubs) (puthash "\\vrectangleblack" "â–®" julia-latexsubs) (puthash "\\Elzvrecto" "â–¯" julia-latexsubs) (puthash "\\parallelogramblack" "â–°" julia-latexsubs) (puthash "\\parallelogram" "â–±" julia-latexsubs) (puthash "\\bigblacktriangleup" "â–²" julia-latexsubs) (puthash "\\bigtriangleup" "â–³" julia-latexsubs) (puthash "\\blacktriangle" "â–´" julia-latexsubs) (puthash "\\vartriangle" "â–µ" julia-latexsubs) (puthash "\\blacktriangleright" "â–¶" julia-latexsubs) (puthash "\\triangleright" "â–¹" julia-latexsubs) (puthash "\\blackpointerright" "â–º" julia-latexsubs) (puthash "\\whitepointerright" "â–»" julia-latexsubs) (puthash "\\bigblacktriangledown" "â–¼" julia-latexsubs) (puthash "\\bigtriangledown" "â–½" julia-latexsubs) (puthash "\\blacktriangledown" "â–¾" julia-latexsubs) (puthash "\\triangledown" "â–¿" julia-latexsubs) (puthash "\\blacktriangleleft" "â—€" julia-latexsubs) (puthash "\\triangleleft" "â—ƒ" julia-latexsubs) (puthash "\\blackpointerleft" "â—„" julia-latexsubs) (puthash "\\whitepointerleft" "â—…" julia-latexsubs) (puthash "\\mdlgblkdiamond" "â—†" julia-latexsubs) (puthash "\\mdlgwhtdiamond" "â—‡" julia-latexsubs) (puthash "\\blackinwhitediamond" "â—ˆ" julia-latexsubs) (puthash "\\fisheye" "â—‰" julia-latexsubs) (puthash "\\lozenge" "â—Š" julia-latexsubs) (puthash "\\bigcirc" "â—‹" julia-latexsubs) (puthash "\\dottedcircle" "â—Œ" julia-latexsubs) (puthash "\\circlevertfill" "â—" julia-latexsubs) (puthash "\\bullseye" "â—Ž" julia-latexsubs) (puthash "\\mdlgblkcircle" "â—" julia-latexsubs) (puthash "\\Elzcirfl" "â—" julia-latexsubs) (puthash "\\Elzcirfr" "â—‘" julia-latexsubs) (puthash "\\Elzcirfb" "â—’" julia-latexsubs) (puthash "\\circletophalfblack" "â—“" julia-latexsubs) (puthash "\\circleurquadblack" "â—”" julia-latexsubs) (puthash "\\blackcircleulquadwhite" "â—•" julia-latexsubs) (puthash "\\blacklefthalfcircle" "â—–" julia-latexsubs) (puthash "\\blackrighthalfcircle" "â——" julia-latexsubs) (puthash "\\Elzrvbull" "â—˜" julia-latexsubs) (puthash "\\inversewhitecircle" "â—™" julia-latexsubs) (puthash "\\invwhiteupperhalfcircle" "â—š" julia-latexsubs) (puthash "\\invwhitelowerhalfcircle" "â—›" julia-latexsubs) (puthash "\\ularc" "â—œ" julia-latexsubs) (puthash "\\urarc" "â—" julia-latexsubs) (puthash "\\lrarc" "â—ž" julia-latexsubs) (puthash "\\llarc" "â—Ÿ" julia-latexsubs) (puthash "\\topsemicircle" "â— " julia-latexsubs) (puthash "\\botsemicircle" "â—¡" julia-latexsubs) (puthash "\\lrblacktriangle" "â—¢" julia-latexsubs) (puthash "\\llblacktriangle" "â—£" julia-latexsubs) (puthash "\\ulblacktriangle" "â—¤" julia-latexsubs) (puthash "\\urblacktriangle" "â—¥" julia-latexsubs) (puthash "\\smwhtcircle" "â—¦" julia-latexsubs) (puthash "\\Elzsqfl" "â—§" julia-latexsubs) (puthash "\\Elzsqfr" "â—¨" julia-latexsubs) (puthash "\\squareulblack" "â—©" julia-latexsubs) (puthash "\\Elzsqfse" "â—ª" julia-latexsubs) (puthash "\\boxbar" "â—«" julia-latexsubs) (puthash "\\trianglecdot" "â—¬" julia-latexsubs) (puthash "\\triangleleftblack" "â—­" julia-latexsubs) (puthash "\\trianglerightblack" "â—®" julia-latexsubs) (puthash "\\lgwhtcircle" "â—¯" julia-latexsubs) (puthash "\\squareulquad" "â—°" julia-latexsubs) (puthash "\\squarellquad" "â—±" julia-latexsubs) (puthash "\\squarelrquad" "â—²" julia-latexsubs) (puthash "\\squareurquad" "â—³" julia-latexsubs) (puthash "\\circleulquad" "â—´" julia-latexsubs) (puthash "\\circlellquad" "â—µ" julia-latexsubs) (puthash "\\circlelrquad" "â—¶" julia-latexsubs) (puthash "\\circleurquad" "â—·" julia-latexsubs) (puthash "\\ultriangle" "â—¸" julia-latexsubs) (puthash "\\urtriangle" "â—¹" julia-latexsubs) (puthash "\\lltriangle" "â—º" julia-latexsubs) (puthash "\\mdwhtsquare" "â—»" julia-latexsubs) (puthash "\\mdblksquare" "â—¼" julia-latexsubs) (puthash "\\mdsmwhtsquare" "â—½" julia-latexsubs) (puthash "\\mdsmblksquare" "â—¾" julia-latexsubs) (puthash "\\lrtriangle" "â—¿" julia-latexsubs) (puthash "\\bigstar" "★" julia-latexsubs) (puthash "\\bigwhitestar" "☆" julia-latexsubs) (puthash "\\astrosun" "☉" julia-latexsubs) (puthash "\\danger" "☡" julia-latexsubs) (puthash "\\blacksmiley" "☻" julia-latexsubs) (puthash "\\sun" "☼" julia-latexsubs) (puthash "\\rightmoon" "☽" julia-latexsubs) (puthash "\\mercury" "☿" julia-latexsubs) (puthash "\\venus" "♀" julia-latexsubs) (puthash "\\female" "♀" julia-latexsubs) (puthash "\\male" "♂" julia-latexsubs) (puthash "\\mars" "♂" julia-latexsubs) (puthash "\\jupiter" "♃" julia-latexsubs) (puthash "\\saturn" "♄" julia-latexsubs) (puthash "\\uranus" "â™…" julia-latexsubs) (puthash "\\neptune" "♆" julia-latexsubs) (puthash "\\pluto" "♇" julia-latexsubs) (puthash "\\aries" "♈" julia-latexsubs) (puthash "\\taurus" "♉" julia-latexsubs) (puthash "\\gemini" "♊" julia-latexsubs) (puthash "\\cancer" "♋" julia-latexsubs) (puthash "\\leo" "♌" julia-latexsubs) (puthash "\\virgo" "â™" julia-latexsubs) (puthash "\\libra" "♎" julia-latexsubs) (puthash "\\scorpio" "â™" julia-latexsubs) (puthash "\\sagittarius" "â™" julia-latexsubs) (puthash "\\capricornus" "♑" julia-latexsubs) (puthash "\\aquarius" "â™’" julia-latexsubs) (puthash "\\pisces" "♓" julia-latexsubs) (puthash "\\spadesuit" "â™ " julia-latexsubs) (puthash "\\heartsuit" "♡" julia-latexsubs) (puthash "\\diamondsuit" "♢" julia-latexsubs) (puthash "\\clubsuit" "♣" julia-latexsubs) (puthash "\\varspadesuit" "♤" julia-latexsubs) (puthash "\\varheartsuit" "♥" julia-latexsubs) (puthash "\\vardiamondsuit" "♦" julia-latexsubs) (puthash "\\varclubsuit" "â™§" julia-latexsubs) (puthash "\\quarternote" "♩" julia-latexsubs) (puthash "\\eighthnote" "♪" julia-latexsubs) (puthash "\\twonotes" "♫" julia-latexsubs) (puthash "\\flat" "â™­" julia-latexsubs) (puthash "\\natural" "â™®" julia-latexsubs) (puthash "\\sharp" "♯" julia-latexsubs) (puthash "\\acidfree" "\u267e" julia-latexsubs) (puthash "\\dicei" "⚀" julia-latexsubs) (puthash "\\diceii" "âš" julia-latexsubs) (puthash "\\diceiii" "âš‚" julia-latexsubs) (puthash "\\diceiv" "⚃" julia-latexsubs) (puthash "\\dicev" "âš„" julia-latexsubs) (puthash "\\dicevi" "âš…" julia-latexsubs) (puthash "\\circledrightdot" "⚆" julia-latexsubs) (puthash "\\circledtwodots" "⚇" julia-latexsubs) (puthash "\\blackcircledrightdot" "⚈" julia-latexsubs) (puthash "\\blackcircledtwodots" "⚉" julia-latexsubs) (puthash "\\Hermaphrodite" "\u26a5" julia-latexsubs) (puthash "\\mdwhtcircle" "\u26aa" julia-latexsubs) (puthash "\\mdblkcircle" "\u26ab" julia-latexsubs) (puthash "\\mdsmwhtcircle" "\u26ac" julia-latexsubs) (puthash "\\neuter" "\u26b2" julia-latexsubs) (puthash "\\checkmark" "✓" julia-latexsubs) (puthash "\\maltese" "✠" julia-latexsubs) (puthash "\\circledstar" "✪" julia-latexsubs) (puthash "\\varstar" "✶" julia-latexsubs) (puthash "\\dingasterisk" "✽" julia-latexsubs) (puthash "\\draftingarrow" "âž›" julia-latexsubs) (puthash "\\threedangle" "\u27c0" julia-latexsubs) (puthash "\\whiteinwhitetriangle" "\u27c1" julia-latexsubs) (puthash "\\perp" "\u27c2" julia-latexsubs) (puthash "\\bsolhsub" "\u27c8" julia-latexsubs) (puthash "\\suphsol" "\u27c9" julia-latexsubs) (puthash "\\wedgedot" "⟑" julia-latexsubs) (puthash "\\upin" "⟒" julia-latexsubs) (puthash "\\bigbot" "⟘" julia-latexsubs) (puthash "\\bigtop" "⟙" julia-latexsubs) (puthash "\\langle" "⟨" julia-latexsubs) (puthash "\\rangle" "⟩" julia-latexsubs) (puthash "\\UUparrow" "⟰" julia-latexsubs) (puthash "\\DDownarrow" "⟱" julia-latexsubs) (puthash "\\longleftarrow" "⟵" julia-latexsubs) (puthash "\\longrightarrow" "⟶" julia-latexsubs) (puthash "\\longleftrightarrow" "⟷" julia-latexsubs) (puthash "\\Longleftarrow" "⟸" julia-latexsubs) (puthash "\\Longrightarrow" "⟹" julia-latexsubs) (puthash "\\Longleftrightarrow" "⟺" julia-latexsubs) (puthash "\\longmapsfrom" "⟻" julia-latexsubs) (puthash "\\longmapsto" "⟼" julia-latexsubs) (puthash "\\Longmapsfrom" "⟽" julia-latexsubs) (puthash "\\Longmapsto" "⟾" julia-latexsubs) (puthash "\\longrightsquigarrow" "⟿" julia-latexsubs) (puthash "\\nvtwoheadrightarrow" "⤀" julia-latexsubs) (puthash "\\nVtwoheadrightarrow" "â¤" julia-latexsubs) (puthash "\\nvLeftarrow" "⤂" julia-latexsubs) (puthash "\\nvRightarrow" "⤃" julia-latexsubs) (puthash "\\nvLeftrightarrow" "⤄" julia-latexsubs) (puthash "\\twoheadmapsto" "⤅" julia-latexsubs) (puthash "\\Mapsfrom" "⤆" julia-latexsubs) (puthash "\\Mapsto" "⤇" julia-latexsubs) (puthash "\\downarrowbarred" "⤈" julia-latexsubs) (puthash "\\uparrowbarred" "⤉" julia-latexsubs) (puthash "\\Uuparrow" "⤊" julia-latexsubs) (puthash "\\Ddownarrow" "⤋" julia-latexsubs) (puthash "\\leftbkarrow" "⤌" julia-latexsubs) (puthash "\\bkarow" "â¤" julia-latexsubs) (puthash "\\leftdbkarrow" "⤎" julia-latexsubs) (puthash "\\dbkarow" "â¤" julia-latexsubs) (puthash "\\drbkarrow" "â¤" julia-latexsubs) (puthash "\\rightdotarrow" "⤑" julia-latexsubs) (puthash "\\UpArrowBar" "⤒" julia-latexsubs) (puthash "\\DownArrowBar" "⤓" julia-latexsubs) (puthash "\\nvrightarrowtail" "⤔" julia-latexsubs) (puthash "\\nVrightarrowtail" "⤕" julia-latexsubs) (puthash "\\twoheadrightarrowtail" "⤖" julia-latexsubs) (puthash "\\nvtwoheadrightarrowtail" "⤗" julia-latexsubs) (puthash "\\nVtwoheadrightarrowtail" "⤘" julia-latexsubs) (puthash "\\diamondleftarrow" "â¤" julia-latexsubs) (puthash "\\rightarrowdiamond" "⤞" julia-latexsubs) (puthash "\\diamondleftarrowbar" "⤟" julia-latexsubs) (puthash "\\barrightarrowdiamond" "⤠" julia-latexsubs) (puthash "\\hksearow" "⤥" julia-latexsubs) (puthash "\\hkswarow" "⤦" julia-latexsubs) (puthash "\\tona" "⤧" julia-latexsubs) (puthash "\\toea" "⤨" julia-latexsubs) (puthash "\\tosa" "⤩" julia-latexsubs) (puthash "\\towa" "⤪" julia-latexsubs) (puthash "\\rdiagovfdiag" "⤫" julia-latexsubs) (puthash "\\fdiagovrdiag" "⤬" julia-latexsubs) (puthash "\\seovnearrow" "⤭" julia-latexsubs) (puthash "\\neovsearrow" "⤮" julia-latexsubs) (puthash "\\fdiagovnearrow" "⤯" julia-latexsubs) (puthash "\\rdiagovsearrow" "⤰" julia-latexsubs) (puthash "\\neovnwarrow" "⤱" julia-latexsubs) (puthash "\\nwovnearrow" "⤲" julia-latexsubs) (puthash "\\ElzRlarr" "⥂" julia-latexsubs) (puthash "\\ElzrLarr" "⥄" julia-latexsubs) (puthash "\\rightarrowplus" "⥅" julia-latexsubs) (puthash "\\leftarrowplus" "⥆" julia-latexsubs) (puthash "\\Elzrarrx" "⥇" julia-latexsubs) (puthash "\\leftrightarrowcircle" "⥈" julia-latexsubs) (puthash "\\twoheaduparrowcircle" "⥉" julia-latexsubs) (puthash "\\leftrightharpoonupdown" "⥊" julia-latexsubs) (puthash "\\leftrightharpoondownup" "⥋" julia-latexsubs) (puthash "\\updownharpoonrightleft" "⥌" julia-latexsubs) (puthash "\\updownharpoonleftright" "â¥" julia-latexsubs) (puthash "\\LeftRightVector" "⥎" julia-latexsubs) (puthash "\\RightUpDownVector" "â¥" julia-latexsubs) (puthash "\\DownLeftRightVector" "â¥" julia-latexsubs) (puthash "\\LeftUpDownVector" "⥑" julia-latexsubs) (puthash "\\LeftVectorBar" "⥒" julia-latexsubs) (puthash "\\RightVectorBar" "⥓" julia-latexsubs) (puthash "\\RightUpVectorBar" "⥔" julia-latexsubs) (puthash "\\RightDownVectorBar" "⥕" julia-latexsubs) (puthash "\\DownLeftVectorBar" "⥖" julia-latexsubs) (puthash "\\DownRightVectorBar" "⥗" julia-latexsubs) (puthash "\\LeftUpVectorBar" "⥘" julia-latexsubs) (puthash "\\LeftDownVectorBar" "⥙" julia-latexsubs) (puthash "\\LeftTeeVector" "⥚" julia-latexsubs) (puthash "\\RightTeeVector" "⥛" julia-latexsubs) (puthash "\\RightUpTeeVector" "⥜" julia-latexsubs) (puthash "\\RightDownTeeVector" "â¥" julia-latexsubs) (puthash "\\DownLeftTeeVector" "⥞" julia-latexsubs) (puthash "\\DownRightTeeVector" "⥟" julia-latexsubs) (puthash "\\LeftUpTeeVector" "⥠" julia-latexsubs) (puthash "\\LeftDownTeeVector" "⥡" julia-latexsubs) (puthash "\\leftharpoonsupdown" "⥢" julia-latexsubs) (puthash "\\upharpoonsleftright" "⥣" julia-latexsubs) (puthash "\\rightharpoonsupdown" "⥤" julia-latexsubs) (puthash "\\downharpoonsleftright" "⥥" julia-latexsubs) (puthash "\\leftrightharpoonsup" "⥦" julia-latexsubs) (puthash "\\leftrightharpoonsdown" "⥧" julia-latexsubs) (puthash "\\rightleftharpoonsup" "⥨" julia-latexsubs) (puthash "\\rightleftharpoonsdown" "⥩" julia-latexsubs) (puthash "\\leftharpoonupdash" "⥪" julia-latexsubs) (puthash "\\dashleftharpoondown" "⥫" julia-latexsubs) (puthash "\\rightharpoonupdash" "⥬" julia-latexsubs) (puthash "\\dashrightharpoondown" "⥭" julia-latexsubs) (puthash "\\UpEquilibrium" "⥮" julia-latexsubs) (puthash "\\ReverseUpEquilibrium" "⥯" julia-latexsubs) (puthash "\\RoundImplies" "⥰" julia-latexsubs) (puthash "\\Vvert" "⦀" julia-latexsubs) (puthash "\\Elroang" "⦆" julia-latexsubs) (puthash "\\Elzddfnc" "⦙" julia-latexsubs) (puthash "\\measuredangleleft" "⦛" julia-latexsubs) (puthash "\\Angle" "⦜" julia-latexsubs) (puthash "\\rightanglemdot" "â¦" julia-latexsubs) (puthash "\\angles" "⦞" julia-latexsubs) (puthash "\\angdnr" "⦟" julia-latexsubs) (puthash "\\Elzlpargt" "⦠" julia-latexsubs) (puthash "\\sphericalangleup" "⦡" julia-latexsubs) (puthash "\\turnangle" "⦢" julia-latexsubs) (puthash "\\revangle" "⦣" julia-latexsubs) (puthash "\\angleubar" "⦤" julia-latexsubs) (puthash "\\revangleubar" "⦥" julia-latexsubs) (puthash "\\wideangledown" "⦦" julia-latexsubs) (puthash "\\wideangleup" "⦧" julia-latexsubs) (puthash "\\measanglerutone" "⦨" julia-latexsubs) (puthash "\\measanglelutonw" "⦩" julia-latexsubs) (puthash "\\measanglerdtose" "⦪" julia-latexsubs) (puthash "\\measangleldtosw" "⦫" julia-latexsubs) (puthash "\\measangleurtone" "⦬" julia-latexsubs) (puthash "\\measangleultonw" "⦭" julia-latexsubs) (puthash "\\measangledrtose" "⦮" julia-latexsubs) (puthash "\\measangledltosw" "⦯" julia-latexsubs) (puthash "\\revemptyset" "⦰" julia-latexsubs) (puthash "\\emptysetobar" "⦱" julia-latexsubs) (puthash "\\emptysetocirc" "⦲" julia-latexsubs) (puthash "\\emptysetoarr" "⦳" julia-latexsubs) (puthash "\\emptysetoarrl" "⦴" julia-latexsubs) (puthash "\\circledparallel" "⦷" julia-latexsubs) (puthash "\\obslash" "⦸" julia-latexsubs) (puthash "\\odotslashdot" "⦼" julia-latexsubs) (puthash "\\circledwhitebullet" "⦾" julia-latexsubs) (puthash "\\circledbullet" "⦿" julia-latexsubs) (puthash "\\olessthan" "â§€" julia-latexsubs) (puthash "\\ogreaterthan" "â§" julia-latexsubs) (puthash "\\boxdiag" "â§„" julia-latexsubs) (puthash "\\boxbslash" "â§…" julia-latexsubs) (puthash "\\boxast" "⧆" julia-latexsubs) (puthash "\\boxcircle" "⧇" julia-latexsubs) (puthash "\\ElzLap" "â§Š" julia-latexsubs) (puthash "\\Elzdefas" "â§‹" julia-latexsubs) (puthash "\\LeftTriangleBar" "â§" julia-latexsubs) (puthash "\\NotLeftTriangleBar" "â§Ì¸" julia-latexsubs) (puthash "\\RightTriangleBar" "â§" julia-latexsubs) (puthash "\\NotRightTriangleBar" "â§Ì¸" julia-latexsubs) (puthash "\\dualmap" "â§Ÿ" julia-latexsubs) (puthash "\\lrtriangleeq" "â§¡" julia-latexsubs) (puthash "\\shuffle" "â§¢" julia-latexsubs) (puthash "\\eparsl" "â§£" julia-latexsubs) (puthash "\\smeparsl" "⧤" julia-latexsubs) (puthash "\\eqvparsl" "â§¥" julia-latexsubs) (puthash "\\blacklozenge" "â§«" julia-latexsubs) (puthash "\\RuleDelayed" "â§´" julia-latexsubs) (puthash "\\dsol" "â§¶" julia-latexsubs) (puthash "\\rsolbar" "â§·" julia-latexsubs) (puthash "\\doubleplus" "⧺" julia-latexsubs) (puthash "\\tripleplus" "â§»" julia-latexsubs) (puthash "\\bigodot" "⨀" julia-latexsubs) (puthash "\\bigoplus" "â¨" julia-latexsubs) (puthash "\\bigotimes" "⨂" julia-latexsubs) (puthash "\\bigcupdot" "⨃" julia-latexsubs) (puthash "\\biguplus" "⨄" julia-latexsubs) (puthash "\\bigsqcap" "⨅" julia-latexsubs) (puthash "\\bigsqcup" "⨆" julia-latexsubs) (puthash "\\conjquant" "⨇" julia-latexsubs) (puthash "\\disjquant" "⨈" julia-latexsubs) (puthash "\\bigtimes" "⨉" julia-latexsubs) (puthash "\\modtwosum" "⨊" julia-latexsubs) (puthash "\\sumint" "⨋" julia-latexsubs) (puthash "\\iiiint" "⨌" julia-latexsubs) (puthash "\\intbar" "â¨" julia-latexsubs) (puthash "\\intBar" "⨎" julia-latexsubs) (puthash "\\clockoint" "â¨" julia-latexsubs) (puthash "\\cirfnint" "â¨" julia-latexsubs) (puthash "\\awint" "⨑" julia-latexsubs) (puthash "\\rppolint" "⨒" julia-latexsubs) (puthash "\\scpolint" "⨓" julia-latexsubs) (puthash "\\npolint" "⨔" julia-latexsubs) (puthash "\\pointint" "⨕" julia-latexsubs) (puthash "\\sqrint" "⨖" julia-latexsubs) (puthash "\\intx" "⨘" julia-latexsubs) (puthash "\\intcap" "⨙" julia-latexsubs) (puthash "\\intcup" "⨚" julia-latexsubs) (puthash "\\upint" "⨛" julia-latexsubs) (puthash "\\lowint" "⨜" julia-latexsubs) (puthash "\\ringplus" "⨢" julia-latexsubs) (puthash "\\plushat" "⨣" julia-latexsubs) (puthash "\\simplus" "⨤" julia-latexsubs) (puthash "\\plusdot" "⨥" julia-latexsubs) (puthash "\\plussim" "⨦" julia-latexsubs) (puthash "\\plussubtwo" "⨧" julia-latexsubs) (puthash "\\plustrif" "⨨" julia-latexsubs) (puthash "\\commaminus" "⨩" julia-latexsubs) (puthash "\\minusdot" "⨪" julia-latexsubs) (puthash "\\minusfdots" "⨫" julia-latexsubs) (puthash "\\minusrdots" "⨬" julia-latexsubs) (puthash "\\opluslhrim" "⨭" julia-latexsubs) (puthash "\\oplusrhrim" "⨮" julia-latexsubs) (puthash "\\ElzTimes" "⨯" julia-latexsubs) (puthash "\\dottimes" "⨰" julia-latexsubs) (puthash "\\timesbar" "⨱" julia-latexsubs) (puthash "\\btimes" "⨲" julia-latexsubs) (puthash "\\smashtimes" "⨳" julia-latexsubs) (puthash "\\otimeslhrim" "⨴" julia-latexsubs) (puthash "\\otimesrhrim" "⨵" julia-latexsubs) (puthash "\\otimeshat" "⨶" julia-latexsubs) (puthash "\\Otimes" "⨷" julia-latexsubs) (puthash "\\odiv" "⨸" julia-latexsubs) (puthash "\\triangleplus" "⨹" julia-latexsubs) (puthash "\\triangleminus" "⨺" julia-latexsubs) (puthash "\\triangletimes" "⨻" julia-latexsubs) (puthash "\\intprod" "⨼" julia-latexsubs) (puthash "\\intprodr" "⨽" julia-latexsubs) (puthash "\\amalg" "⨿" julia-latexsubs) (puthash "\\capdot" "â©€" julia-latexsubs) (puthash "\\uminus" "â©" julia-latexsubs) (puthash "\\barcup" "â©‚" julia-latexsubs) (puthash "\\barcap" "⩃" julia-latexsubs) (puthash "\\capwedge" "â©„" julia-latexsubs) (puthash "\\cupvee" "â©…" julia-latexsubs) (puthash "\\twocups" "⩊" julia-latexsubs) (puthash "\\twocaps" "â©‹" julia-latexsubs) (puthash "\\closedvarcup" "⩌" julia-latexsubs) (puthash "\\closedvarcap" "â©" julia-latexsubs) (puthash "\\Sqcap" "⩎" julia-latexsubs) (puthash "\\Sqcup" "â©" julia-latexsubs) (puthash "\\closedvarcupsmashprod" "â©" julia-latexsubs) (puthash "\\wedgeodot" "â©‘" julia-latexsubs) (puthash "\\veeodot" "â©’" julia-latexsubs) (puthash "\\ElzAnd" "â©“" julia-latexsubs) (puthash "\\ElzOr" "â©”" julia-latexsubs) (puthash "\\wedgeonwedge" "â©•" julia-latexsubs) (puthash "\\ElOr" "â©–" julia-latexsubs) (puthash "\\bigslopedvee" "â©—" julia-latexsubs) (puthash "\\bigslopedwedge" "⩘" julia-latexsubs) (puthash "\\wedgemidvert" "⩚" julia-latexsubs) (puthash "\\veemidvert" "â©›" julia-latexsubs) (puthash "\\midbarwedge" "⩜" julia-latexsubs) (puthash "\\midbarvee" "â©" julia-latexsubs) (puthash "\\perspcorrespond" "⩞" julia-latexsubs) (puthash "\\Elzminhat" "⩟" julia-latexsubs) (puthash "\\wedgedoublebar" "â© " julia-latexsubs) (puthash "\\varveebar" "â©¡" julia-latexsubs) (puthash "\\doublebarvee" "â©¢" julia-latexsubs) (puthash "\\veedoublebar" "â©£" julia-latexsubs) (puthash "\\eqdot" "⩦" julia-latexsubs) (puthash "\\dotequiv" "â©§" julia-latexsubs) (puthash "\\dotsim" "⩪" julia-latexsubs) (puthash "\\simrdots" "â©«" julia-latexsubs) (puthash "\\simminussim" "⩬" julia-latexsubs) (puthash "\\congdot" "â©­" julia-latexsubs) (puthash "\\asteq" "â©®" julia-latexsubs) (puthash "\\hatapprox" "⩯" julia-latexsubs) (puthash "\\approxeqq" "â©°" julia-latexsubs) (puthash "\\eqqplus" "⩱" julia-latexsubs) (puthash "\\pluseqq" "⩲" julia-latexsubs) (puthash "\\eqqsim" "⩳" julia-latexsubs) (puthash "\\Coloneq" "â©´" julia-latexsubs) (puthash "\\Equal" "⩵" julia-latexsubs) (puthash "\\eqeqeq" "â©¶" julia-latexsubs) (puthash "\\ddotseq" "â©·" julia-latexsubs) (puthash "\\equivDD" "⩸" julia-latexsubs) (puthash "\\ltcir" "⩹" julia-latexsubs) (puthash "\\gtcir" "⩺" julia-latexsubs) (puthash "\\ltquest" "â©»" julia-latexsubs) (puthash "\\gtquest" "⩼" julia-latexsubs) (puthash "\\leqslant" "⩽" julia-latexsubs) (puthash "\\nleqslant" "⩽̸" julia-latexsubs) (puthash "\\geqslant" "⩾" julia-latexsubs) (puthash "\\ngeqslant" "⩾̸" julia-latexsubs) (puthash "\\lesdot" "â©¿" julia-latexsubs) (puthash "\\gesdot" "⪀" julia-latexsubs) (puthash "\\lesdoto" "âª" julia-latexsubs) (puthash "\\gesdoto" "⪂" julia-latexsubs) (puthash "\\lesdotor" "⪃" julia-latexsubs) (puthash "\\gesdotol" "⪄" julia-latexsubs) (puthash "\\lessapprox" "⪅" julia-latexsubs) (puthash "\\gtrapprox" "⪆" julia-latexsubs) (puthash "\\lneq" "⪇" julia-latexsubs) (puthash "\\gneq" "⪈" julia-latexsubs) (puthash "\\lnapprox" "⪉" julia-latexsubs) (puthash "\\gnapprox" "⪊" julia-latexsubs) (puthash "\\lesseqqgtr" "⪋" julia-latexsubs) (puthash "\\gtreqqless" "⪌" julia-latexsubs) (puthash "\\lsime" "âª" julia-latexsubs) (puthash "\\gsime" "⪎" julia-latexsubs) (puthash "\\lsimg" "âª" julia-latexsubs) (puthash "\\gsiml" "âª" julia-latexsubs) (puthash "\\lgE" "⪑" julia-latexsubs) (puthash "\\glE" "⪒" julia-latexsubs) (puthash "\\lesges" "⪓" julia-latexsubs) (puthash "\\gesles" "⪔" julia-latexsubs) (puthash "\\eqslantless" "⪕" julia-latexsubs) (puthash "\\eqslantgtr" "⪖" julia-latexsubs) (puthash "\\elsdot" "⪗" julia-latexsubs) (puthash "\\egsdot" "⪘" julia-latexsubs) (puthash "\\eqqless" "⪙" julia-latexsubs) (puthash "\\eqqgtr" "⪚" julia-latexsubs) (puthash "\\eqqslantless" "⪛" julia-latexsubs) (puthash "\\eqqslantgtr" "⪜" julia-latexsubs) (puthash "\\simless" "âª" julia-latexsubs) (puthash "\\simgtr" "⪞" julia-latexsubs) (puthash "\\simlE" "⪟" julia-latexsubs) (puthash "\\simgE" "⪠" julia-latexsubs) (puthash "\\NestedLessLess" "⪡" julia-latexsubs) (puthash "\\NotNestedLessLess" "⪡̸" julia-latexsubs) (puthash "\\NestedGreaterGreater" "⪢" julia-latexsubs) (puthash "\\NotNestedGreaterGreater" "⪢̸" julia-latexsubs) (puthash "\\partialmeetcontraction" "⪣" julia-latexsubs) (puthash "\\glj" "⪤" julia-latexsubs) (puthash "\\gla" "⪥" julia-latexsubs) (puthash "\\ltcc" "⪦" julia-latexsubs) (puthash "\\gtcc" "⪧" julia-latexsubs) (puthash "\\lescc" "⪨" julia-latexsubs) (puthash "\\gescc" "⪩" julia-latexsubs) (puthash "\\smt" "⪪" julia-latexsubs) (puthash "\\lat" "⪫" julia-latexsubs) (puthash "\\smte" "⪬" julia-latexsubs) (puthash "\\late" "⪭" julia-latexsubs) (puthash "\\bumpeqq" "⪮" julia-latexsubs) (puthash "\\preceq" "⪯" julia-latexsubs) (puthash "\\npreceq" "⪯̸" julia-latexsubs) (puthash "\\succeq" "⪰" julia-latexsubs) (puthash "\\nsucceq" "⪰̸" julia-latexsubs) (puthash "\\precneq" "⪱" julia-latexsubs) (puthash "\\succneq" "⪲" julia-latexsubs) (puthash "\\preceqq" "⪳" julia-latexsubs) (puthash "\\succeqq" "⪴" julia-latexsubs) (puthash "\\precneqq" "⪵" julia-latexsubs) (puthash "\\succneqq" "⪶" julia-latexsubs) (puthash "\\precapprox" "⪷" julia-latexsubs) (puthash "\\succapprox" "⪸" julia-latexsubs) (puthash "\\precnapprox" "⪹" julia-latexsubs) (puthash "\\succnapprox" "⪺" julia-latexsubs) (puthash "\\Prec" "⪻" julia-latexsubs) (puthash "\\Succ" "⪼" julia-latexsubs) (puthash "\\subsetdot" "⪽" julia-latexsubs) (puthash "\\supsetdot" "⪾" julia-latexsubs) (puthash "\\subsetplus" "⪿" julia-latexsubs) (puthash "\\supsetplus" "â«€" julia-latexsubs) (puthash "\\submult" "â«" julia-latexsubs) (puthash "\\supmult" "â«‚" julia-latexsubs) (puthash "\\subedot" "⫃" julia-latexsubs) (puthash "\\supedot" "â«„" julia-latexsubs) (puthash "\\subseteqq" "â«…" julia-latexsubs) (puthash "\\nsubseteqq" "⫅̸" julia-latexsubs) (puthash "\\supseteqq" "⫆" julia-latexsubs) (puthash "\\nsupseteqq" "⫆̸" julia-latexsubs) (puthash "\\subsim" "⫇" julia-latexsubs) (puthash "\\supsim" "⫈" julia-latexsubs) (puthash "\\subsetapprox" "⫉" julia-latexsubs) (puthash "\\supsetapprox" "⫊" julia-latexsubs) (puthash "\\subsetneqq" "â«‹" julia-latexsubs) (puthash "\\supsetneqq" "⫌" julia-latexsubs) (puthash "\\lsqhook" "â«" julia-latexsubs) (puthash "\\rsqhook" "⫎" julia-latexsubs) (puthash "\\csub" "â«" julia-latexsubs) (puthash "\\csup" "â«" julia-latexsubs) (puthash "\\csube" "â«‘" julia-latexsubs) (puthash "\\csupe" "â«’" julia-latexsubs) (puthash "\\subsup" "â«“" julia-latexsubs) (puthash "\\supsub" "â«”" julia-latexsubs) (puthash "\\subsub" "â«•" julia-latexsubs) (puthash "\\supsup" "â«–" julia-latexsubs) (puthash "\\suphsub" "â«—" julia-latexsubs) (puthash "\\supdsub" "⫘" julia-latexsubs) (puthash "\\forkv" "â«™" julia-latexsubs) (puthash "\\mlcp" "â«›" julia-latexsubs) (puthash "\\forks" "⫝̸" julia-latexsubs) (puthash "\\forksnot" "â«" julia-latexsubs) (puthash "\\dashV" "â«£" julia-latexsubs) (puthash "\\Dashv" "⫤" julia-latexsubs) (puthash "\\interleave" "â«´" julia-latexsubs) (puthash "\\Elztdcol" "â«¶" julia-latexsubs) (puthash "\\lllnest" "â«·" julia-latexsubs) (puthash "\\gggnest" "⫸" julia-latexsubs) (puthash "\\leqqslant" "⫹" julia-latexsubs) (puthash "\\geqqslant" "⫺" julia-latexsubs) (puthash "\\squaretopblack" "\u2b12" julia-latexsubs) (puthash "\\squarebotblack" "\u2b13" julia-latexsubs) (puthash "\\squareurblack" "\u2b14" julia-latexsubs) (puthash "\\squarellblack" "\u2b15" julia-latexsubs) (puthash "\\diamondleftblack" "\u2b16" julia-latexsubs) (puthash "\\diamondrightblack" "\u2b17" julia-latexsubs) (puthash "\\diamondtopblack" "\u2b18" julia-latexsubs) (puthash "\\diamondbotblack" "\u2b19" julia-latexsubs) (puthash "\\dottedsquare" "\u2b1a" julia-latexsubs) (puthash "\\lgblksquare" "\u2b1b" julia-latexsubs) (puthash "\\lgwhtsquare" "\u2b1c" julia-latexsubs) (puthash "\\vysmblksquare" "\u2b1d" julia-latexsubs) (puthash "\\vysmwhtsquare" "\u2b1e" julia-latexsubs) (puthash "\\pentagonblack" "\u2b1f" julia-latexsubs) (puthash "\\pentagon" "\u2b20" julia-latexsubs) (puthash "\\varhexagon" "\u2b21" julia-latexsubs) (puthash "\\varhexagonblack" "\u2b22" julia-latexsubs) (puthash "\\hexagonblack" "\u2b23" julia-latexsubs) (puthash "\\lgblkcircle" "\u2b24" julia-latexsubs) (puthash "\\mdblkdiamond" "\u2b25" julia-latexsubs) (puthash "\\mdwhtdiamond" "\u2b26" julia-latexsubs) (puthash "\\mdblklozenge" "\u2b27" julia-latexsubs) (puthash "\\mdwhtlozenge" "\u2b28" julia-latexsubs) (puthash "\\smblkdiamond" "\u2b29" julia-latexsubs) (puthash "\\smblklozenge" "\u2b2a" julia-latexsubs) (puthash "\\smwhtlozenge" "\u2b2b" julia-latexsubs) (puthash "\\blkhorzoval" "\u2b2c" julia-latexsubs) (puthash "\\whthorzoval" "\u2b2d" julia-latexsubs) (puthash "\\blkvertoval" "\u2b2e" julia-latexsubs) (puthash "\\whtvertoval" "\u2b2f" julia-latexsubs) (puthash "\\circleonleftarrow" "\u2b30" julia-latexsubs) (puthash "\\leftthreearrows" "\u2b31" julia-latexsubs) (puthash "\\leftarrowonoplus" "\u2b32" julia-latexsubs) (puthash "\\longleftsquigarrow" "\u2b33" julia-latexsubs) (puthash "\\nvtwoheadleftarrow" "\u2b34" julia-latexsubs) (puthash "\\nVtwoheadleftarrow" "\u2b35" julia-latexsubs) (puthash "\\twoheadmapsfrom" "\u2b36" julia-latexsubs) (puthash "\\twoheadleftdbkarrow" "\u2b37" julia-latexsubs) (puthash "\\leftdotarrow" "\u2b38" julia-latexsubs) (puthash "\\nvleftarrowtail" "\u2b39" julia-latexsubs) (puthash "\\nVleftarrowtail" "\u2b3a" julia-latexsubs) (puthash "\\twoheadleftarrowtail" "\u2b3b" julia-latexsubs) (puthash "\\nvtwoheadleftarrowtail" "\u2b3c" julia-latexsubs) (puthash "\\nVtwoheadleftarrowtail" "\u2b3d" julia-latexsubs) (puthash "\\leftarrowx" "\u2b3e" julia-latexsubs) (puthash "\\leftcurvedarrow" "\u2b3f" julia-latexsubs) (puthash "\\equalleftarrow" "\u2b40" julia-latexsubs) (puthash "\\bsimilarleftarrow" "\u2b41" julia-latexsubs) (puthash "\\leftarrowbackapprox" "\u2b42" julia-latexsubs) (puthash "\\rightarrowgtr" "\u2b43" julia-latexsubs) (puthash "\\rightarrowsupset" "\u2b44" julia-latexsubs) (puthash "\\LLeftarrow" "\u2b45" julia-latexsubs) (puthash "\\RRightarrow" "\u2b46" julia-latexsubs) (puthash "\\bsimilarrightarrow" "\u2b47" julia-latexsubs) (puthash "\\rightarrowbackapprox" "\u2b48" julia-latexsubs) (puthash "\\similarleftarrow" "\u2b49" julia-latexsubs) (puthash "\\leftarrowapprox" "\u2b4a" julia-latexsubs) (puthash "\\leftarrowbsimilar" "\u2b4b" julia-latexsubs) (puthash "\\rightarrowbsimilar" "\u2b4c" julia-latexsubs) (puthash "\\medwhitestar" "\u2b50" julia-latexsubs) (puthash "\\medblackstar" "\u2b51" julia-latexsubs) (puthash "\\smwhitestar" "\u2b52" julia-latexsubs) (puthash "\\rightpentagonblack" "\u2b53" julia-latexsubs) (puthash "\\rightpentagon" "\u2b54" julia-latexsubs) (puthash "\\_j" "\u2c7c" julia-latexsubs) (puthash "\\^V" "\u2c7d" julia-latexsubs) (puthash "\\postalmark" "〒" julia-latexsubs) (puthash "\\openbracketleft" "〚" julia-latexsubs) (puthash "\\openbracketright" "〛" julia-latexsubs) (puthash "\\overbrace" "︷" julia-latexsubs) (puthash "\\underbrace" "︸" julia-latexsubs) (puthash "\\mbfA" "ð€" julia-latexsubs) (puthash "\\mbfB" "ð" julia-latexsubs) (puthash "\\mbfC" "ð‚" julia-latexsubs) (puthash "\\mbfD" "ðƒ" julia-latexsubs) (puthash "\\mbfE" "ð„" julia-latexsubs) (puthash "\\mbfF" "ð…" julia-latexsubs) (puthash "\\mbfG" "ð†" julia-latexsubs) (puthash "\\mbfH" "ð‡" julia-latexsubs) (puthash "\\mbfI" "ðˆ" julia-latexsubs) (puthash "\\mbfJ" "ð‰" julia-latexsubs) (puthash "\\mbfK" "ðŠ" julia-latexsubs) (puthash "\\mbfL" "ð‹" julia-latexsubs) (puthash "\\mbfM" "ðŒ" julia-latexsubs) (puthash "\\mbfN" "ð" julia-latexsubs) (puthash "\\mbfO" "ðŽ" julia-latexsubs) (puthash "\\mbfP" "ð" julia-latexsubs) (puthash "\\mbfQ" "ð" julia-latexsubs) (puthash "\\mbfR" "ð‘" julia-latexsubs) (puthash "\\mbfS" "ð’" julia-latexsubs) (puthash "\\mbfT" "ð“" julia-latexsubs) (puthash "\\mbfU" "ð”" julia-latexsubs) (puthash "\\mbfV" "ð•" julia-latexsubs) (puthash "\\mbfW" "ð–" julia-latexsubs) (puthash "\\mbfX" "ð—" julia-latexsubs) (puthash "\\mbfY" "ð˜" julia-latexsubs) (puthash "\\mbfZ" "ð™" julia-latexsubs) (puthash "\\mbfa" "ðš" julia-latexsubs) (puthash "\\mbfb" "ð›" julia-latexsubs) (puthash "\\mbfc" "ðœ" julia-latexsubs) (puthash "\\mbfd" "ð" julia-latexsubs) (puthash "\\mbfe" "ðž" julia-latexsubs) (puthash "\\mbff" "ðŸ" julia-latexsubs) (puthash "\\mbfg" "ð " julia-latexsubs) (puthash "\\mbfh" "ð¡" julia-latexsubs) (puthash "\\mbfi" "ð¢" julia-latexsubs) (puthash "\\mbfj" "ð£" julia-latexsubs) (puthash "\\mbfk" "ð¤" julia-latexsubs) (puthash "\\mbfl" "ð¥" julia-latexsubs) (puthash "\\mbfm" "ð¦" julia-latexsubs) (puthash "\\mbfn" "ð§" julia-latexsubs) (puthash "\\mbfo" "ð¨" julia-latexsubs) (puthash "\\mbfp" "ð©" julia-latexsubs) (puthash "\\mbfq" "ðª" julia-latexsubs) (puthash "\\mbfr" "ð«" julia-latexsubs) (puthash "\\mbfs" "ð¬" julia-latexsubs) (puthash "\\mbft" "ð­" julia-latexsubs) (puthash "\\mbfu" "ð®" julia-latexsubs) (puthash "\\mbfv" "ð¯" julia-latexsubs) (puthash "\\mbfw" "ð°" julia-latexsubs) (puthash "\\mbfx" "ð±" julia-latexsubs) (puthash "\\mbfy" "ð²" julia-latexsubs) (puthash "\\mbfz" "ð³" julia-latexsubs) (puthash "\\mitA" "ð´" julia-latexsubs) (puthash "\\mitB" "ðµ" julia-latexsubs) (puthash "\\mitC" "ð¶" julia-latexsubs) (puthash "\\mitD" "ð·" julia-latexsubs) (puthash "\\mitE" "ð¸" julia-latexsubs) (puthash "\\mitF" "ð¹" julia-latexsubs) (puthash "\\mitG" "ðº" julia-latexsubs) (puthash "\\mitH" "ð»" julia-latexsubs) (puthash "\\mitI" "ð¼" julia-latexsubs) (puthash "\\mitJ" "ð½" julia-latexsubs) (puthash "\\mitK" "ð¾" julia-latexsubs) (puthash "\\mitL" "ð¿" julia-latexsubs) (puthash "\\mitM" "ð‘€" julia-latexsubs) (puthash "\\mitN" "ð‘" julia-latexsubs) (puthash "\\mitO" "ð‘‚" julia-latexsubs) (puthash "\\mitP" "ð‘ƒ" julia-latexsubs) (puthash "\\mitQ" "ð‘„" julia-latexsubs) (puthash "\\mitR" "ð‘…" julia-latexsubs) (puthash "\\mitS" "ð‘†" julia-latexsubs) (puthash "\\mitT" "ð‘‡" julia-latexsubs) (puthash "\\mitU" "ð‘ˆ" julia-latexsubs) (puthash "\\mitV" "ð‘‰" julia-latexsubs) (puthash "\\mitW" "ð‘Š" julia-latexsubs) (puthash "\\mitX" "ð‘‹" julia-latexsubs) (puthash "\\mitY" "ð‘Œ" julia-latexsubs) (puthash "\\mitZ" "ð‘" julia-latexsubs) (puthash "\\mita" "ð‘Ž" julia-latexsubs) (puthash "\\mitb" "ð‘" julia-latexsubs) (puthash "\\mitc" "ð‘" julia-latexsubs) (puthash "\\mitd" "ð‘‘" julia-latexsubs) (puthash "\\mite" "ð‘’" julia-latexsubs) (puthash "\\mitf" "ð‘“" julia-latexsubs) (puthash "\\mitg" "ð‘”" julia-latexsubs) (puthash "\\miti" "ð‘–" julia-latexsubs) (puthash "\\mitj" "ð‘—" julia-latexsubs) (puthash "\\mitk" "ð‘˜" julia-latexsubs) (puthash "\\mitl" "ð‘™" julia-latexsubs) (puthash "\\mitm" "ð‘š" julia-latexsubs) (puthash "\\mitn" "ð‘›" julia-latexsubs) (puthash "\\mito" "ð‘œ" julia-latexsubs) (puthash "\\mitp" "ð‘" julia-latexsubs) (puthash "\\mitq" "ð‘ž" julia-latexsubs) (puthash "\\mitr" "ð‘Ÿ" julia-latexsubs) (puthash "\\mits" "ð‘ " julia-latexsubs) (puthash "\\mitt" "ð‘¡" julia-latexsubs) (puthash "\\mitu" "ð‘¢" julia-latexsubs) (puthash "\\mitv" "ð‘£" julia-latexsubs) (puthash "\\mitw" "ð‘¤" julia-latexsubs) (puthash "\\mitx" "ð‘¥" julia-latexsubs) (puthash "\\mity" "ð‘¦" julia-latexsubs) (puthash "\\mitz" "ð‘§" julia-latexsubs) (puthash "\\mbfitA" "ð‘¨" julia-latexsubs) (puthash "\\mbfitB" "ð‘©" julia-latexsubs) (puthash "\\mbfitC" "ð‘ª" julia-latexsubs) (puthash "\\mbfitD" "ð‘«" julia-latexsubs) (puthash "\\mbfitE" "ð‘¬" julia-latexsubs) (puthash "\\mbfitF" "ð‘­" julia-latexsubs) (puthash "\\mbfitG" "ð‘®" julia-latexsubs) (puthash "\\mbfitH" "ð‘¯" julia-latexsubs) (puthash "\\mbfitI" "ð‘°" julia-latexsubs) (puthash "\\mbfitJ" "ð‘±" julia-latexsubs) (puthash "\\mbfitK" "ð‘²" julia-latexsubs) (puthash "\\mbfitL" "ð‘³" julia-latexsubs) (puthash "\\mbfitM" "ð‘´" julia-latexsubs) (puthash "\\mbfitN" "ð‘µ" julia-latexsubs) (puthash "\\mbfitO" "ð‘¶" julia-latexsubs) (puthash "\\mbfitP" "ð‘·" julia-latexsubs) (puthash "\\mbfitQ" "ð‘¸" julia-latexsubs) (puthash "\\mbfitR" "ð‘¹" julia-latexsubs) (puthash "\\mbfitS" "ð‘º" julia-latexsubs) (puthash "\\mbfitT" "ð‘»" julia-latexsubs) (puthash "\\mbfitU" "ð‘¼" julia-latexsubs) (puthash "\\mbfitV" "ð‘½" julia-latexsubs) (puthash "\\mbfitW" "ð‘¾" julia-latexsubs) (puthash "\\mbfitX" "ð‘¿" julia-latexsubs) (puthash "\\mbfitY" "ð’€" julia-latexsubs) (puthash "\\mbfitZ" "ð’" julia-latexsubs) (puthash "\\mbfita" "ð’‚" julia-latexsubs) (puthash "\\mbfitb" "ð’ƒ" julia-latexsubs) (puthash "\\mbfitc" "ð’„" julia-latexsubs) (puthash "\\mbfitd" "ð’…" julia-latexsubs) (puthash "\\mbfite" "ð’†" julia-latexsubs) (puthash "\\mbfitf" "ð’‡" julia-latexsubs) (puthash "\\mbfitg" "ð’ˆ" julia-latexsubs) (puthash "\\mbfith" "ð’‰" julia-latexsubs) (puthash "\\mbfiti" "ð’Š" julia-latexsubs) (puthash "\\mbfitj" "ð’‹" julia-latexsubs) (puthash "\\mbfitk" "ð’Œ" julia-latexsubs) (puthash "\\mbfitl" "ð’" julia-latexsubs) (puthash "\\mbfitm" "ð’Ž" julia-latexsubs) (puthash "\\mbfitn" "ð’" julia-latexsubs) (puthash "\\mbfito" "ð’" julia-latexsubs) (puthash "\\mbfitp" "ð’‘" julia-latexsubs) (puthash "\\mbfitq" "ð’’" julia-latexsubs) (puthash "\\mbfitr" "ð’“" julia-latexsubs) (puthash "\\mbfits" "ð’”" julia-latexsubs) (puthash "\\mbfitt" "ð’•" julia-latexsubs) (puthash "\\mbfitu" "ð’–" julia-latexsubs) (puthash "\\mbfitv" "ð’—" julia-latexsubs) (puthash "\\mbfitw" "ð’˜" julia-latexsubs) (puthash "\\mbfitx" "ð’™" julia-latexsubs) (puthash "\\mbfity" "ð’š" julia-latexsubs) (puthash "\\mbfitz" "ð’›" julia-latexsubs) (puthash "\\mscrA" "ð’œ" julia-latexsubs) (puthash "\\mscrC" "ð’ž" julia-latexsubs) (puthash "\\mscrD" "ð’Ÿ" julia-latexsubs) (puthash "\\mscrG" "ð’¢" julia-latexsubs) (puthash "\\mscrJ" "ð’¥" julia-latexsubs) (puthash "\\mscrK" "ð’¦" julia-latexsubs) (puthash "\\mscrN" "ð’©" julia-latexsubs) (puthash "\\mscrO" "ð’ª" julia-latexsubs) (puthash "\\mscrP" "ð’«" julia-latexsubs) (puthash "\\mscrQ" "ð’¬" julia-latexsubs) (puthash "\\mscrS" "ð’®" julia-latexsubs) (puthash "\\mscrT" "ð’¯" julia-latexsubs) (puthash "\\mscrU" "ð’°" julia-latexsubs) (puthash "\\mscrV" "ð’±" julia-latexsubs) (puthash "\\mscrW" "ð’²" julia-latexsubs) (puthash "\\mscrX" "ð’³" julia-latexsubs) (puthash "\\mscrY" "ð’´" julia-latexsubs) (puthash "\\mscrZ" "ð’µ" julia-latexsubs) (puthash "\\mscra" "ð’¶" julia-latexsubs) (puthash "\\mscrb" "ð’·" julia-latexsubs) (puthash "\\mscrc" "ð’¸" julia-latexsubs) (puthash "\\mscrd" "ð’¹" julia-latexsubs) (puthash "\\mscrf" "ð’»" julia-latexsubs) (puthash "\\mscrh" "ð’½" julia-latexsubs) (puthash "\\mscri" "ð’¾" julia-latexsubs) (puthash "\\mscrj" "ð’¿" julia-latexsubs) (puthash "\\mscrk" "ð“€" julia-latexsubs) (let ((c (decode-char 'ucs #x1d4c1))) (if c (puthash "\\mscrl" (char-to-string c) julia-latexsubs))) (puthash "\\mscrm" "ð“‚" julia-latexsubs) (puthash "\\mscrn" "ð“ƒ" julia-latexsubs) (puthash "\\mscrp" "ð“…" julia-latexsubs) (puthash "\\mscrq" "ð“†" julia-latexsubs) (puthash "\\mscrr" "ð“‡" julia-latexsubs) (puthash "\\mscrs" "ð“ˆ" julia-latexsubs) (puthash "\\mscrt" "ð“‰" julia-latexsubs) (puthash "\\mscru" "ð“Š" julia-latexsubs) (puthash "\\mscrv" "ð“‹" julia-latexsubs) (puthash "\\mscrw" "ð“Œ" julia-latexsubs) (puthash "\\mscrx" "ð“" julia-latexsubs) (puthash "\\mscry" "ð“Ž" julia-latexsubs) (puthash "\\mscrz" "ð“" julia-latexsubs) (puthash "\\mbfscrA" "ð“" julia-latexsubs) (puthash "\\mbfscrB" "ð“‘" julia-latexsubs) (puthash "\\mbfscrC" "ð“’" julia-latexsubs) (puthash "\\mbfscrD" "ð““" julia-latexsubs) (puthash "\\mbfscrE" "ð“”" julia-latexsubs) (puthash "\\mbfscrF" "ð“•" julia-latexsubs) (puthash "\\mbfscrG" "ð“–" julia-latexsubs) (puthash "\\mbfscrH" "ð“—" julia-latexsubs) (puthash "\\mbfscrI" "ð“˜" julia-latexsubs) (puthash "\\mbfscrJ" "ð“™" julia-latexsubs) (puthash "\\mbfscrK" "ð“š" julia-latexsubs) (puthash "\\mbfscrL" "ð“›" julia-latexsubs) (puthash "\\mbfscrM" "ð“œ" julia-latexsubs) (puthash "\\mbfscrN" "ð“" julia-latexsubs) (puthash "\\mbfscrO" "ð“ž" julia-latexsubs) (puthash "\\mbfscrP" "ð“Ÿ" julia-latexsubs) (puthash "\\mbfscrQ" "ð“ " julia-latexsubs) (puthash "\\mbfscrR" "ð“¡" julia-latexsubs) (puthash "\\mbfscrS" "ð“¢" julia-latexsubs) (puthash "\\mbfscrT" "ð“£" julia-latexsubs) (puthash "\\mbfscrU" "ð“¤" julia-latexsubs) (puthash "\\mbfscrV" "ð“¥" julia-latexsubs) (puthash "\\mbfscrW" "ð“¦" julia-latexsubs) (puthash "\\mbfscrX" "ð“§" julia-latexsubs) (puthash "\\mbfscrY" "ð“¨" julia-latexsubs) (puthash "\\mbfscrZ" "ð“©" julia-latexsubs) (puthash "\\mbfscra" "ð“ª" julia-latexsubs) (puthash "\\mbfscrb" "ð“«" julia-latexsubs) (puthash "\\mbfscrc" "ð“¬" julia-latexsubs) (puthash "\\mbfscrd" "ð“­" julia-latexsubs) (puthash "\\mbfscre" "ð“®" julia-latexsubs) (puthash "\\mbfscrf" "ð“¯" julia-latexsubs) (puthash "\\mbfscrg" "ð“°" julia-latexsubs) (puthash "\\mbfscrh" "ð“±" julia-latexsubs) (puthash "\\mbfscri" "ð“²" julia-latexsubs) (puthash "\\mbfscrj" "ð“³" julia-latexsubs) (puthash "\\mbfscrk" "ð“´" julia-latexsubs) (puthash "\\mbfscrl" "ð“µ" julia-latexsubs) (puthash "\\mbfscrm" "ð“¶" julia-latexsubs) (puthash "\\mbfscrn" "ð“·" julia-latexsubs) (puthash "\\mbfscro" "ð“¸" julia-latexsubs) (puthash "\\mbfscrp" "ð“¹" julia-latexsubs) (puthash "\\mbfscrq" "ð“º" julia-latexsubs) (puthash "\\mbfscrr" "ð“»" julia-latexsubs) (puthash "\\mbfscrs" "ð“¼" julia-latexsubs) (puthash "\\mbfscrt" "ð“½" julia-latexsubs) (puthash "\\mbfscru" "ð“¾" julia-latexsubs) (puthash "\\mbfscrv" "ð“¿" julia-latexsubs) (puthash "\\mbfscrw" "ð”€" julia-latexsubs) (puthash "\\mbfscrx" "ð”" julia-latexsubs) (puthash "\\mbfscry" "ð”‚" julia-latexsubs) (puthash "\\mbfscrz" "ð”ƒ" julia-latexsubs) (puthash "\\mfrakA" "ð”„" julia-latexsubs) (puthash "\\mfrakB" "ð”…" julia-latexsubs) (puthash "\\mfrakD" "ð”‡" julia-latexsubs) (puthash "\\mfrakE" "ð”ˆ" julia-latexsubs) (puthash "\\mfrakF" "ð”‰" julia-latexsubs) (puthash "\\mfrakG" "ð”Š" julia-latexsubs) (puthash "\\mfrakJ" "ð”" julia-latexsubs) (puthash "\\mfrakK" "ð”Ž" julia-latexsubs) (puthash "\\mfrakL" "ð”" julia-latexsubs) (puthash "\\mfrakM" "ð”" julia-latexsubs) (puthash "\\mfrakN" "ð”‘" julia-latexsubs) (puthash "\\mfrakO" "ð”’" julia-latexsubs) (puthash "\\mfrakP" "ð”“" julia-latexsubs) (puthash "\\mfrakQ" "ð””" julia-latexsubs) (puthash "\\mfrakS" "ð”–" julia-latexsubs) (puthash "\\mfrakT" "ð”—" julia-latexsubs) (puthash "\\mfrakU" "ð”˜" julia-latexsubs) (puthash "\\mfrakV" "ð”™" julia-latexsubs) (puthash "\\mfrakW" "ð”š" julia-latexsubs) (puthash "\\mfrakX" "ð”›" julia-latexsubs) (puthash "\\mfrakY" "ð”œ" julia-latexsubs) (puthash "\\mfraka" "ð”ž" julia-latexsubs) (puthash "\\mfrakb" "ð”Ÿ" julia-latexsubs) (puthash "\\mfrakc" "ð” " julia-latexsubs) (puthash "\\mfrakd" "ð”¡" julia-latexsubs) (puthash "\\mfrake" "ð”¢" julia-latexsubs) (puthash "\\mfrakf" "ð”£" julia-latexsubs) (puthash "\\mfrakg" "ð”¤" julia-latexsubs) (puthash "\\mfrakh" "ð”¥" julia-latexsubs) (puthash "\\mfraki" "ð”¦" julia-latexsubs) (puthash "\\mfrakj" "ð”§" julia-latexsubs) (puthash "\\mfrakk" "ð”¨" julia-latexsubs) (puthash "\\mfrakl" "ð”©" julia-latexsubs) (puthash "\\mfrakm" "ð”ª" julia-latexsubs) (puthash "\\mfrakn" "ð”«" julia-latexsubs) (puthash "\\mfrako" "ð”¬" julia-latexsubs) (puthash "\\mfrakp" "ð”­" julia-latexsubs) (puthash "\\mfrakq" "ð”®" julia-latexsubs) (puthash "\\mfrakr" "ð”¯" julia-latexsubs) (puthash "\\mfraks" "ð”°" julia-latexsubs) (puthash "\\mfrakt" "ð”±" julia-latexsubs) (puthash "\\mfraku" "ð”²" julia-latexsubs) (puthash "\\mfrakv" "ð”³" julia-latexsubs) (puthash "\\mfrakw" "ð”´" julia-latexsubs) (puthash "\\mfrakx" "ð”µ" julia-latexsubs) (puthash "\\mfraky" "ð”¶" julia-latexsubs) (puthash "\\mfrakz" "ð”·" julia-latexsubs) (puthash "\\BbbA" "ð”¸" julia-latexsubs) (puthash "\\BbbB" "ð”¹" julia-latexsubs) (puthash "\\BbbD" "ð”»" julia-latexsubs) (puthash "\\BbbE" "ð”¼" julia-latexsubs) (puthash "\\BbbF" "ð”½" julia-latexsubs) (puthash "\\BbbG" "ð”¾" julia-latexsubs) (puthash "\\BbbI" "ð•€" julia-latexsubs) (puthash "\\BbbJ" "ð•" julia-latexsubs) (puthash "\\BbbK" "ð•‚" julia-latexsubs) (puthash "\\BbbL" "ð•ƒ" julia-latexsubs) (puthash "\\BbbM" "ð•„" julia-latexsubs) (puthash "\\BbbO" "ð•†" julia-latexsubs) (puthash "\\BbbS" "ð•Š" julia-latexsubs) (puthash "\\BbbT" "ð•‹" julia-latexsubs) (puthash "\\BbbU" "ð•Œ" julia-latexsubs) (puthash "\\BbbV" "ð•" julia-latexsubs) (puthash "\\BbbW" "ð•Ž" julia-latexsubs) (puthash "\\BbbX" "ð•" julia-latexsubs) (puthash "\\BbbY" "ð•" julia-latexsubs) (puthash "\\Bbba" "ð•’" julia-latexsubs) (puthash "\\Bbbb" "ð•“" julia-latexsubs) (puthash "\\Bbbc" "ð•”" julia-latexsubs) (puthash "\\Bbbd" "ð••" julia-latexsubs) (puthash "\\Bbbe" "ð•–" julia-latexsubs) (puthash "\\Bbbf" "ð•—" julia-latexsubs) (puthash "\\Bbbg" "ð•˜" julia-latexsubs) (puthash "\\Bbbh" "ð•™" julia-latexsubs) (puthash "\\Bbbi" "ð•š" julia-latexsubs) (puthash "\\Bbbj" "ð•›" julia-latexsubs) (puthash "\\Bbbk" "ð•œ" julia-latexsubs) (puthash "\\Bbbl" "ð•" julia-latexsubs) (puthash "\\Bbbm" "ð•ž" julia-latexsubs) (puthash "\\Bbbn" "ð•Ÿ" julia-latexsubs) (puthash "\\Bbbo" "ð• " julia-latexsubs) (puthash "\\Bbbp" "ð•¡" julia-latexsubs) (puthash "\\Bbbq" "ð•¢" julia-latexsubs) (puthash "\\Bbbr" "ð•£" julia-latexsubs) (puthash "\\Bbbs" "ð•¤" julia-latexsubs) (puthash "\\Bbbt" "ð•¥" julia-latexsubs) (puthash "\\Bbbu" "ð•¦" julia-latexsubs) (puthash "\\Bbbv" "ð•§" julia-latexsubs) (puthash "\\Bbbw" "ð•¨" julia-latexsubs) (puthash "\\Bbbx" "ð•©" julia-latexsubs) (puthash "\\Bbby" "ð•ª" julia-latexsubs) (puthash "\\Bbbz" "ð•«" julia-latexsubs) (puthash "\\mbffrakA" "ð•¬" julia-latexsubs) (puthash "\\mbffrakB" "ð•­" julia-latexsubs) (puthash "\\mbffrakC" "ð•®" julia-latexsubs) (puthash "\\mbffrakD" "ð•¯" julia-latexsubs) (puthash "\\mbffrakE" "ð•°" julia-latexsubs) (puthash "\\mbffrakF" "ð•±" julia-latexsubs) (puthash "\\mbffrakG" "ð•²" julia-latexsubs) (puthash "\\mbffrakH" "ð•³" julia-latexsubs) (puthash "\\mbffrakI" "ð•´" julia-latexsubs) (puthash "\\mbffrakJ" "ð•µ" julia-latexsubs) (puthash "\\mbffrakK" "ð•¶" julia-latexsubs) (puthash "\\mbffrakL" "ð•·" julia-latexsubs) (puthash "\\mbffrakM" "ð•¸" julia-latexsubs) (puthash "\\mbffrakN" "ð•¹" julia-latexsubs) (puthash "\\mbffrakO" "ð•º" julia-latexsubs) (puthash "\\mbffrakP" "ð•»" julia-latexsubs) (puthash "\\mbffrakQ" "ð•¼" julia-latexsubs) (puthash "\\mbffrakR" "ð•½" julia-latexsubs) (puthash "\\mbffrakS" "ð•¾" julia-latexsubs) (puthash "\\mbffrakT" "ð•¿" julia-latexsubs) (puthash "\\mbffrakU" "ð–€" julia-latexsubs) (puthash "\\mbffrakV" "ð–" julia-latexsubs) (puthash "\\mbffrakW" "ð–‚" julia-latexsubs) (puthash "\\mbffrakX" "ð–ƒ" julia-latexsubs) (puthash "\\mbffrakY" "ð–„" julia-latexsubs) (puthash "\\mbffrakZ" "ð–…" julia-latexsubs) (puthash "\\mbffraka" "ð–†" julia-latexsubs) (puthash "\\mbffrakb" "ð–‡" julia-latexsubs) (puthash "\\mbffrakc" "ð–ˆ" julia-latexsubs) (puthash "\\mbffrakd" "ð–‰" julia-latexsubs) (puthash "\\mbffrake" "ð–Š" julia-latexsubs) (puthash "\\mbffrakf" "ð–‹" julia-latexsubs) (puthash "\\mbffrakg" "ð–Œ" julia-latexsubs) (puthash "\\mbffrakh" "ð–" julia-latexsubs) (puthash "\\mbffraki" "ð–Ž" julia-latexsubs) (puthash "\\mbffrakj" "ð–" julia-latexsubs) (puthash "\\mbffrakk" "ð–" julia-latexsubs) (puthash "\\mbffrakl" "ð–‘" julia-latexsubs) (puthash "\\mbffrakm" "ð–’" julia-latexsubs) (puthash "\\mbffrakn" "ð–“" julia-latexsubs) (puthash "\\mbffrako" "ð–”" julia-latexsubs) (puthash "\\mbffrakp" "ð–•" julia-latexsubs) (puthash "\\mbffrakq" "ð––" julia-latexsubs) (puthash "\\mbffrakr" "ð–—" julia-latexsubs) (puthash "\\mbffraks" "ð–˜" julia-latexsubs) (puthash "\\mbffrakt" "ð–™" julia-latexsubs) (puthash "\\mbffraku" "ð–š" julia-latexsubs) (puthash "\\mbffrakv" "ð–›" julia-latexsubs) (puthash "\\mbffrakw" "ð–œ" julia-latexsubs) (puthash "\\mbffrakx" "ð–" julia-latexsubs) (puthash "\\mbffraky" "ð–ž" julia-latexsubs) (puthash "\\mbffrakz" "ð–Ÿ" julia-latexsubs) (puthash "\\msansA" "ð– " julia-latexsubs) (puthash "\\msansB" "ð–¡" julia-latexsubs) (puthash "\\msansC" "ð–¢" julia-latexsubs) (puthash "\\msansD" "ð–£" julia-latexsubs) (puthash "\\msansE" "ð–¤" julia-latexsubs) (puthash "\\msansF" "ð–¥" julia-latexsubs) (puthash "\\msansG" "ð–¦" julia-latexsubs) (puthash "\\msansH" "ð–§" julia-latexsubs) (puthash "\\msansI" "ð–¨" julia-latexsubs) (puthash "\\msansJ" "ð–©" julia-latexsubs) (puthash "\\msansK" "ð–ª" julia-latexsubs) (puthash "\\msansL" "ð–«" julia-latexsubs) (puthash "\\msansM" "ð–¬" julia-latexsubs) (puthash "\\msansN" "ð–­" julia-latexsubs) (puthash "\\msansO" "ð–®" julia-latexsubs) (puthash "\\msansP" "ð–¯" julia-latexsubs) (puthash "\\msansQ" "ð–°" julia-latexsubs) (puthash "\\msansR" "ð–±" julia-latexsubs) (puthash "\\msansS" "ð–²" julia-latexsubs) (puthash "\\msansT" "ð–³" julia-latexsubs) (puthash "\\msansU" "ð–´" julia-latexsubs) (puthash "\\msansV" "ð–µ" julia-latexsubs) (puthash "\\msansW" "ð–¶" julia-latexsubs) (puthash "\\msansX" "ð–·" julia-latexsubs) (puthash "\\msansY" "ð–¸" julia-latexsubs) (puthash "\\msansZ" "ð–¹" julia-latexsubs) (puthash "\\msansa" "ð–º" julia-latexsubs) (puthash "\\msansb" "ð–»" julia-latexsubs) (puthash "\\msansc" "ð–¼" julia-latexsubs) (puthash "\\msansd" "ð–½" julia-latexsubs) (puthash "\\msanse" "ð–¾" julia-latexsubs) (puthash "\\msansf" "ð–¿" julia-latexsubs) (puthash "\\msansg" "ð—€" julia-latexsubs) (puthash "\\msansh" "ð—" julia-latexsubs) (puthash "\\msansi" "ð—‚" julia-latexsubs) (puthash "\\msansj" "ð—ƒ" julia-latexsubs) (puthash "\\msansk" "ð—„" julia-latexsubs) (puthash "\\msansl" "ð—…" julia-latexsubs) (puthash "\\msansm" "ð—†" julia-latexsubs) (puthash "\\msansn" "ð—‡" julia-latexsubs) (puthash "\\msanso" "ð—ˆ" julia-latexsubs) (puthash "\\msansp" "ð—‰" julia-latexsubs) (puthash "\\msansq" "ð—Š" julia-latexsubs) (puthash "\\msansr" "ð—‹" julia-latexsubs) (puthash "\\msanss" "ð—Œ" julia-latexsubs) (puthash "\\msanst" "ð—" julia-latexsubs) (puthash "\\msansu" "ð—Ž" julia-latexsubs) (puthash "\\msansv" "ð—" julia-latexsubs) (puthash "\\msansw" "ð—" julia-latexsubs) (puthash "\\msansx" "ð—‘" julia-latexsubs) (puthash "\\msansy" "ð—’" julia-latexsubs) (puthash "\\msansz" "ð—“" julia-latexsubs) (puthash "\\mbfsansA" "ð—”" julia-latexsubs) (puthash "\\mbfsansB" "ð—•" julia-latexsubs) (puthash "\\mbfsansC" "ð—–" julia-latexsubs) (puthash "\\mbfsansD" "ð——" julia-latexsubs) (puthash "\\mbfsansE" "ð—˜" julia-latexsubs) (puthash "\\mbfsansF" "ð—™" julia-latexsubs) (puthash "\\mbfsansG" "ð—š" julia-latexsubs) (puthash "\\mbfsansH" "ð—›" julia-latexsubs) (puthash "\\mbfsansI" "ð—œ" julia-latexsubs) (puthash "\\mbfsansJ" "ð—" julia-latexsubs) (puthash "\\mbfsansK" "ð—ž" julia-latexsubs) (puthash "\\mbfsansL" "ð—Ÿ" julia-latexsubs) (puthash "\\mbfsansM" "ð— " julia-latexsubs) (puthash "\\mbfsansN" "ð—¡" julia-latexsubs) (puthash "\\mbfsansO" "ð—¢" julia-latexsubs) (puthash "\\mbfsansP" "ð—£" julia-latexsubs) (puthash "\\mbfsansQ" "ð—¤" julia-latexsubs) (puthash "\\mbfsansR" "ð—¥" julia-latexsubs) (puthash "\\mbfsansS" "ð—¦" julia-latexsubs) (puthash "\\mbfsansT" "ð—§" julia-latexsubs) (puthash "\\mbfsansU" "ð—¨" julia-latexsubs) (puthash "\\mbfsansV" "ð—©" julia-latexsubs) (puthash "\\mbfsansW" "ð—ª" julia-latexsubs) (puthash "\\mbfsansX" "ð—«" julia-latexsubs) (puthash "\\mbfsansY" "ð—¬" julia-latexsubs) (puthash "\\mbfsansZ" "ð—­" julia-latexsubs) (puthash "\\mbfsansa" "ð—®" julia-latexsubs) (puthash "\\mbfsansb" "ð—¯" julia-latexsubs) (puthash "\\mbfsansc" "ð—°" julia-latexsubs) (puthash "\\mbfsansd" "ð—±" julia-latexsubs) (puthash "\\mbfsanse" "ð—²" julia-latexsubs) (puthash "\\mbfsansf" "ð—³" julia-latexsubs) (puthash "\\mbfsansg" "ð—´" julia-latexsubs) (puthash "\\mbfsansh" "ð—µ" julia-latexsubs) (puthash "\\mbfsansi" "ð—¶" julia-latexsubs) (puthash "\\mbfsansj" "ð—·" julia-latexsubs) (puthash "\\mbfsansk" "ð—¸" julia-latexsubs) (puthash "\\mbfsansl" "ð—¹" julia-latexsubs) (puthash "\\mbfsansm" "ð—º" julia-latexsubs) (puthash "\\mbfsansn" "ð—»" julia-latexsubs) (puthash "\\mbfsanso" "ð—¼" julia-latexsubs) (puthash "\\mbfsansp" "ð—½" julia-latexsubs) (puthash "\\mbfsansq" "ð—¾" julia-latexsubs) (puthash "\\mbfsansr" "ð—¿" julia-latexsubs) (puthash "\\mbfsanss" "ð˜€" julia-latexsubs) (puthash "\\mbfsanst" "ð˜" julia-latexsubs) (puthash "\\mbfsansu" "ð˜‚" julia-latexsubs) (puthash "\\mbfsansv" "ð˜ƒ" julia-latexsubs) (puthash "\\mbfsansw" "ð˜„" julia-latexsubs) (puthash "\\mbfsansx" "ð˜…" julia-latexsubs) (puthash "\\mbfsansy" "ð˜†" julia-latexsubs) (puthash "\\mbfsansz" "ð˜‡" julia-latexsubs) (puthash "\\mitsansA" "ð˜ˆ" julia-latexsubs) (puthash "\\mitsansB" "ð˜‰" julia-latexsubs) (puthash "\\mitsansC" "ð˜Š" julia-latexsubs) (puthash "\\mitsansD" "ð˜‹" julia-latexsubs) (puthash "\\mitsansE" "ð˜Œ" julia-latexsubs) (puthash "\\mitsansF" "ð˜" julia-latexsubs) (puthash "\\mitsansG" "ð˜Ž" julia-latexsubs) (puthash "\\mitsansH" "ð˜" julia-latexsubs) (puthash "\\mitsansI" "ð˜" julia-latexsubs) (puthash "\\mitsansJ" "ð˜‘" julia-latexsubs) (puthash "\\mitsansK" "ð˜’" julia-latexsubs) (puthash "\\mitsansL" "ð˜“" julia-latexsubs) (puthash "\\mitsansM" "ð˜”" julia-latexsubs) (puthash "\\mitsansN" "ð˜•" julia-latexsubs) (puthash "\\mitsansO" "ð˜–" julia-latexsubs) (puthash "\\mitsansP" "ð˜—" julia-latexsubs) (puthash "\\mitsansQ" "ð˜˜" julia-latexsubs) (puthash "\\mitsansR" "ð˜™" julia-latexsubs) (puthash "\\mitsansS" "ð˜š" julia-latexsubs) (puthash "\\mitsansT" "ð˜›" julia-latexsubs) (puthash "\\mitsansU" "ð˜œ" julia-latexsubs) (puthash "\\mitsansV" "ð˜" julia-latexsubs) (puthash "\\mitsansW" "ð˜ž" julia-latexsubs) (puthash "\\mitsansX" "ð˜Ÿ" julia-latexsubs) (puthash "\\mitsansY" "ð˜ " julia-latexsubs) (puthash "\\mitsansZ" "ð˜¡" julia-latexsubs) (puthash "\\mitsansa" "ð˜¢" julia-latexsubs) (puthash "\\mitsansb" "ð˜£" julia-latexsubs) (puthash "\\mitsansc" "ð˜¤" julia-latexsubs) (puthash "\\mitsansd" "ð˜¥" julia-latexsubs) (puthash "\\mitsanse" "ð˜¦" julia-latexsubs) (puthash "\\mitsansf" "ð˜§" julia-latexsubs) (puthash "\\mitsansg" "ð˜¨" julia-latexsubs) (puthash "\\mitsansh" "ð˜©" julia-latexsubs) (puthash "\\mitsansi" "ð˜ª" julia-latexsubs) (puthash "\\mitsansj" "ð˜«" julia-latexsubs) (puthash "\\mitsansk" "ð˜¬" julia-latexsubs) (puthash "\\mitsansl" "ð˜­" julia-latexsubs) (puthash "\\mitsansm" "ð˜®" julia-latexsubs) (puthash "\\mitsansn" "ð˜¯" julia-latexsubs) (puthash "\\mitsanso" "ð˜°" julia-latexsubs) (puthash "\\mitsansp" "ð˜±" julia-latexsubs) (puthash "\\mitsansq" "ð˜²" julia-latexsubs) (puthash "\\mitsansr" "ð˜³" julia-latexsubs) (puthash "\\mitsanss" "ð˜´" julia-latexsubs) (puthash "\\mitsanst" "ð˜µ" julia-latexsubs) (puthash "\\mitsansu" "ð˜¶" julia-latexsubs) (puthash "\\mitsansv" "ð˜·" julia-latexsubs) (puthash "\\mitsansw" "ð˜¸" julia-latexsubs) (puthash "\\mitsansx" "ð˜¹" julia-latexsubs) (puthash "\\mitsansy" "ð˜º" julia-latexsubs) (puthash "\\mitsansz" "ð˜»" julia-latexsubs) (puthash "\\mbfitsansA" "ð˜¼" julia-latexsubs) (puthash "\\mbfitsansB" "ð˜½" julia-latexsubs) (puthash "\\mbfitsansC" "ð˜¾" julia-latexsubs) (puthash "\\mbfitsansD" "ð˜¿" julia-latexsubs) (puthash "\\mbfitsansE" "ð™€" julia-latexsubs) (puthash "\\mbfitsansF" "ð™" julia-latexsubs) (puthash "\\mbfitsansG" "ð™‚" julia-latexsubs) (puthash "\\mbfitsansH" "ð™ƒ" julia-latexsubs) (puthash "\\mbfitsansI" "ð™„" julia-latexsubs) (puthash "\\mbfitsansJ" "ð™…" julia-latexsubs) (puthash "\\mbfitsansK" "ð™†" julia-latexsubs) (puthash "\\mbfitsansL" "ð™‡" julia-latexsubs) (puthash "\\mbfitsansM" "ð™ˆ" julia-latexsubs) (puthash "\\mbfitsansN" "ð™‰" julia-latexsubs) (puthash "\\mbfitsansO" "ð™Š" julia-latexsubs) (puthash "\\mbfitsansP" "ð™‹" julia-latexsubs) (puthash "\\mbfitsansQ" "ð™Œ" julia-latexsubs) (puthash "\\mbfitsansR" "ð™" julia-latexsubs) (puthash "\\mbfitsansS" "ð™Ž" julia-latexsubs) (puthash "\\mbfitsansT" "ð™" julia-latexsubs) (puthash "\\mbfitsansU" "ð™" julia-latexsubs) (puthash "\\mbfitsansV" "ð™‘" julia-latexsubs) (puthash "\\mbfitsansW" "ð™’" julia-latexsubs) (puthash "\\mbfitsansX" "ð™“" julia-latexsubs) (puthash "\\mbfitsansY" "ð™”" julia-latexsubs) (puthash "\\mbfitsansZ" "ð™•" julia-latexsubs) (puthash "\\mbfitsansa" "ð™–" julia-latexsubs) (puthash "\\mbfitsansb" "ð™—" julia-latexsubs) (puthash "\\mbfitsansc" "ð™˜" julia-latexsubs) (puthash "\\mbfitsansd" "ð™™" julia-latexsubs) (puthash "\\mbfitsanse" "ð™š" julia-latexsubs) (puthash "\\mbfitsansf" "ð™›" julia-latexsubs) (puthash "\\mbfitsansg" "ð™œ" julia-latexsubs) (puthash "\\mbfitsansh" "ð™" julia-latexsubs) (puthash "\\mbfitsansi" "ð™ž" julia-latexsubs) (puthash "\\mbfitsansj" "ð™Ÿ" julia-latexsubs) (puthash "\\mbfitsansk" "ð™ " julia-latexsubs) (puthash "\\mbfitsansl" "ð™¡" julia-latexsubs) (puthash "\\mbfitsansm" "ð™¢" julia-latexsubs) (puthash "\\mbfitsansn" "ð™£" julia-latexsubs) (puthash "\\mbfitsanso" "ð™¤" julia-latexsubs) (puthash "\\mbfitsansp" "ð™¥" julia-latexsubs) (puthash "\\mbfitsansq" "ð™¦" julia-latexsubs) (puthash "\\mbfitsansr" "ð™§" julia-latexsubs) (puthash "\\mbfitsanss" "ð™¨" julia-latexsubs) (puthash "\\mbfitsanst" "ð™©" julia-latexsubs) (puthash "\\mbfitsansu" "ð™ª" julia-latexsubs) (puthash "\\mbfitsansv" "ð™«" julia-latexsubs) (puthash "\\mbfitsansw" "ð™¬" julia-latexsubs) (puthash "\\mbfitsansx" "ð™­" julia-latexsubs) (puthash "\\mbfitsansy" "ð™®" julia-latexsubs) (puthash "\\mbfitsansz" "ð™¯" julia-latexsubs) (puthash "\\mttA" "ð™°" julia-latexsubs) (puthash "\\mttB" "ð™±" julia-latexsubs) (puthash "\\mttC" "ð™²" julia-latexsubs) (puthash "\\mttD" "ð™³" julia-latexsubs) (puthash "\\mttE" "ð™´" julia-latexsubs) (puthash "\\mttF" "ð™µ" julia-latexsubs) (puthash "\\mttG" "ð™¶" julia-latexsubs) (puthash "\\mttH" "ð™·" julia-latexsubs) (puthash "\\mttI" "ð™¸" julia-latexsubs) (puthash "\\mttJ" "ð™¹" julia-latexsubs) (puthash "\\mttK" "ð™º" julia-latexsubs) (puthash "\\mttL" "ð™»" julia-latexsubs) (puthash "\\mttM" "ð™¼" julia-latexsubs) (puthash "\\mttN" "ð™½" julia-latexsubs) (puthash "\\mttO" "ð™¾" julia-latexsubs) (puthash "\\mttP" "ð™¿" julia-latexsubs) (puthash "\\mttQ" "ðš€" julia-latexsubs) (puthash "\\mttR" "ðš" julia-latexsubs) (puthash "\\mttS" "ðš‚" julia-latexsubs) (puthash "\\mttT" "ðšƒ" julia-latexsubs) (puthash "\\mttU" "ðš„" julia-latexsubs) (puthash "\\mttV" "ðš…" julia-latexsubs) (puthash "\\mttW" "ðš†" julia-latexsubs) (puthash "\\mttX" "ðš‡" julia-latexsubs) (puthash "\\mttY" "ðšˆ" julia-latexsubs) (puthash "\\mttZ" "ðš‰" julia-latexsubs) (puthash "\\mtta" "ðšŠ" julia-latexsubs) (puthash "\\mttb" "ðš‹" julia-latexsubs) (puthash "\\mttc" "ðšŒ" julia-latexsubs) (puthash "\\mttd" "ðš" julia-latexsubs) (puthash "\\mtte" "ðšŽ" julia-latexsubs) (puthash "\\mttf" "ðš" julia-latexsubs) (puthash "\\mttg" "ðš" julia-latexsubs) (puthash "\\mtth" "ðš‘" julia-latexsubs) (puthash "\\mtti" "ðš’" julia-latexsubs) (puthash "\\mttj" "ðš“" julia-latexsubs) (puthash "\\mttk" "ðš”" julia-latexsubs) (puthash "\\mttl" "ðš•" julia-latexsubs) (puthash "\\mttm" "ðš–" julia-latexsubs) (puthash "\\mttn" "ðš—" julia-latexsubs) (puthash "\\mtto" "ðš˜" julia-latexsubs) (puthash "\\mttp" "ðš™" julia-latexsubs) (puthash "\\mttq" "ðšš" julia-latexsubs) (puthash "\\mttr" "ðš›" julia-latexsubs) (puthash "\\mtts" "ðšœ" julia-latexsubs) (puthash "\\mttt" "ðš" julia-latexsubs) (puthash "\\mttu" "ðšž" julia-latexsubs) (puthash "\\mttv" "ðšŸ" julia-latexsubs) (puthash "\\mttw" "ðš " julia-latexsubs) (puthash "\\mttx" "ðš¡" julia-latexsubs) (puthash "\\mtty" "ðš¢" julia-latexsubs) (puthash "\\mttz" "ðš£" julia-latexsubs) (let ((c (decode-char 'ucs #x1d6a4))) (if c (puthash "\\imath" (char-to-string c) julia-latexsubs))) (let ((c (decode-char 'ucs #x1d6a5))) (if c (puthash "\\jmath" (char-to-string c) julia-latexsubs))) (puthash "\\mbfAlpha" "ðš¨" julia-latexsubs) (puthash "\\mbfBeta" "ðš©" julia-latexsubs) (puthash "\\mbfGamma" "ðšª" julia-latexsubs) (puthash "\\mbfDelta" "ðš«" julia-latexsubs) (puthash "\\mbfEpsilon" "ðš¬" julia-latexsubs) (puthash "\\mbfZeta" "ðš­" julia-latexsubs) (puthash "\\mbfEta" "ðš®" julia-latexsubs) (puthash "\\mbfTheta" "ðš¯" julia-latexsubs) (puthash "\\mbfIota" "ðš°" julia-latexsubs) (puthash "\\mbfKappa" "ðš±" julia-latexsubs) (puthash "\\mbfLambda" "ðš²" julia-latexsubs) (puthash "\\mbfMu" "ðš³" julia-latexsubs) (puthash "\\mbfNu" "ðš´" julia-latexsubs) (puthash "\\mbfXi" "ðšµ" julia-latexsubs) (puthash "\\mbfOmicron" "ðš¶" julia-latexsubs) (puthash "\\mbfPi" "ðš·" julia-latexsubs) (puthash "\\mbfRho" "ðš¸" julia-latexsubs) (puthash "\\mbfvarTheta" "ðš¹" julia-latexsubs) (puthash "\\mbfSigma" "ðšº" julia-latexsubs) (puthash "\\mbfTau" "ðš»" julia-latexsubs) (puthash "\\mbfUpsilon" "ðš¼" julia-latexsubs) (puthash "\\mbfPhi" "ðš½" julia-latexsubs) (puthash "\\mbfChi" "ðš¾" julia-latexsubs) (puthash "\\mbfPsi" "ðš¿" julia-latexsubs) (puthash "\\mbfOmega" "ð›€" julia-latexsubs) (puthash "\\mbfnabla" "ð›" julia-latexsubs) (puthash "\\mbfalpha" "ð›‚" julia-latexsubs) (puthash "\\mbfbeta" "ð›ƒ" julia-latexsubs) (puthash "\\mbfgamma" "ð›„" julia-latexsubs) (puthash "\\mbfdelta" "ð›…" julia-latexsubs) (puthash "\\mbfepsilon" "ð›†" julia-latexsubs) (puthash "\\mbfzeta" "ð›‡" julia-latexsubs) (puthash "\\mbfeta" "ð›ˆ" julia-latexsubs) (puthash "\\mbftheta" "ð›‰" julia-latexsubs) (puthash "\\mbfiota" "ð›Š" julia-latexsubs) (puthash "\\mbfkappa" "ð›‹" julia-latexsubs) (puthash "\\mbflambda" "ð›Œ" julia-latexsubs) (puthash "\\mbfmu" "ð›" julia-latexsubs) (puthash "\\mbfnu" "ð›Ž" julia-latexsubs) (puthash "\\mbfxi" "ð›" julia-latexsubs) (puthash "\\mbfomicron" "ð›" julia-latexsubs) (puthash "\\mbfpi" "ð›‘" julia-latexsubs) (puthash "\\mbfrho" "ð›’" julia-latexsubs) (puthash "\\mbfvarsigma" "ð›“" julia-latexsubs) (puthash "\\mbfsigma" "ð›”" julia-latexsubs) (puthash "\\mbftau" "ð›•" julia-latexsubs) (puthash "\\mbfupsilon" "ð›–" julia-latexsubs) (puthash "\\mbfvarphi" "ð›—" julia-latexsubs) (puthash "\\mbfchi" "ð›˜" julia-latexsubs) (puthash "\\mbfpsi" "ð›™" julia-latexsubs) (puthash "\\mbfomega" "ð›š" julia-latexsubs) (puthash "\\mbfpartial" "ð››" julia-latexsubs) (puthash "\\mbfvarepsilon" "ð›œ" julia-latexsubs) (puthash "\\mbfvartheta" "ð›" julia-latexsubs) (puthash "\\mbfvarkappa" "ð›ž" julia-latexsubs) (puthash "\\mbfphi" "ð›Ÿ" julia-latexsubs) (puthash "\\mbfvarrho" "ð› " julia-latexsubs) (puthash "\\mbfvarpi" "ð›¡" julia-latexsubs) (puthash "\\mitAlpha" "ð›¢" julia-latexsubs) (puthash "\\mitBeta" "ð›£" julia-latexsubs) (puthash "\\mitGamma" "ð›¤" julia-latexsubs) (puthash "\\mitDelta" "ð›¥" julia-latexsubs) (puthash "\\mitEpsilon" "ð›¦" julia-latexsubs) (puthash "\\mitZeta" "ð›§" julia-latexsubs) (puthash "\\mitEta" "ð›¨" julia-latexsubs) (puthash "\\mitTheta" "ð›©" julia-latexsubs) (puthash "\\mitIota" "ð›ª" julia-latexsubs) (puthash "\\mitKappa" "ð›«" julia-latexsubs) (puthash "\\mitLambda" "ð›¬" julia-latexsubs) (puthash "\\mitMu" "ð›­" julia-latexsubs) (puthash "\\mitNu" "ð›®" julia-latexsubs) (puthash "\\mitXi" "ð›¯" julia-latexsubs) (puthash "\\mitOmicron" "ð›°" julia-latexsubs) (puthash "\\mitPi" "ð›±" julia-latexsubs) (puthash "\\mitRho" "ð›²" julia-latexsubs) (puthash "\\mitvarTheta" "ð›³" julia-latexsubs) (puthash "\\mitSigma" "ð›´" julia-latexsubs) (puthash "\\mitTau" "ð›µ" julia-latexsubs) (puthash "\\mitUpsilon" "ð›¶" julia-latexsubs) (puthash "\\mitPhi" "ð›·" julia-latexsubs) (puthash "\\mitChi" "ð›¸" julia-latexsubs) (puthash "\\mitPsi" "ð›¹" julia-latexsubs) (puthash "\\mitOmega" "ð›º" julia-latexsubs) (puthash "\\mitnabla" "ð›»" julia-latexsubs) (puthash "\\mitalpha" "ð›¼" julia-latexsubs) (puthash "\\mitbeta" "ð›½" julia-latexsubs) (puthash "\\mitgamma" "ð›¾" julia-latexsubs) (puthash "\\mitdelta" "ð›¿" julia-latexsubs) (puthash "\\mitepsilon" "ðœ€" julia-latexsubs) (puthash "\\mitzeta" "ðœ" julia-latexsubs) (puthash "\\miteta" "ðœ‚" julia-latexsubs) (puthash "\\mittheta" "ðœƒ" julia-latexsubs) (puthash "\\mitiota" "ðœ„" julia-latexsubs) (puthash "\\mitkappa" "ðœ…" julia-latexsubs) (puthash "\\mitlambda" "ðœ†" julia-latexsubs) (puthash "\\mitmu" "ðœ‡" julia-latexsubs) (puthash "\\mitnu" "ðœˆ" julia-latexsubs) (puthash "\\mitxi" "ðœ‰" julia-latexsubs) (puthash "\\mitomicron" "ðœŠ" julia-latexsubs) (puthash "\\mitpi" "ðœ‹" julia-latexsubs) (puthash "\\mitrho" "ðœŒ" julia-latexsubs) (puthash "\\mitvarsigma" "ðœ" julia-latexsubs) (puthash "\\mitsigma" "ðœŽ" julia-latexsubs) (puthash "\\mittau" "ðœ" julia-latexsubs) (puthash "\\mitupsilon" "ðœ" julia-latexsubs) (puthash "\\mitphi" "ðœ‘" julia-latexsubs) (puthash "\\mitchi" "ðœ’" julia-latexsubs) (puthash "\\mitpsi" "ðœ“" julia-latexsubs) (puthash "\\mitomega" "ðœ”" julia-latexsubs) (puthash "\\mitpartial" "ðœ•" julia-latexsubs) (puthash "\\mitvarepsilon" "ðœ–" julia-latexsubs) (puthash "\\mitvartheta" "ðœ—" julia-latexsubs) (puthash "\\mitvarkappa" "ðœ˜" julia-latexsubs) (puthash "\\mitvarphi" "ðœ™" julia-latexsubs) (puthash "\\mitvarrho" "ðœš" julia-latexsubs) (puthash "\\mitvarpi" "ðœ›" julia-latexsubs) (puthash "\\mbfitAlpha" "ðœœ" julia-latexsubs) (puthash "\\mbfitBeta" "ðœ" julia-latexsubs) (puthash "\\mbfitGamma" "ðœž" julia-latexsubs) (puthash "\\mbfitDelta" "ðœŸ" julia-latexsubs) (puthash "\\mbfitEpsilon" "ðœ " julia-latexsubs) (puthash "\\mbfitZeta" "ðœ¡" julia-latexsubs) (puthash "\\mbfitEta" "ðœ¢" julia-latexsubs) (puthash "\\mbfitTheta" "ðœ£" julia-latexsubs) (puthash "\\mbfitIota" "ðœ¤" julia-latexsubs) (puthash "\\mbfitKappa" "ðœ¥" julia-latexsubs) (puthash "\\mbfitLambda" "ðœ¦" julia-latexsubs) (puthash "\\mbfitMu" "ðœ§" julia-latexsubs) (puthash "\\mbfitNu" "ðœ¨" julia-latexsubs) (puthash "\\mbfitXi" "ðœ©" julia-latexsubs) (puthash "\\mbfitOmicron" "ðœª" julia-latexsubs) (puthash "\\mbfitPi" "ðœ«" julia-latexsubs) (puthash "\\mbfitRho" "ðœ¬" julia-latexsubs) (puthash "\\mbfitvarTheta" "ðœ­" julia-latexsubs) (puthash "\\mbfitSigma" "ðœ®" julia-latexsubs) (puthash "\\mbfitTau" "ðœ¯" julia-latexsubs) (puthash "\\mbfitUpsilon" "ðœ°" julia-latexsubs) (puthash "\\mbfitPhi" "ðœ±" julia-latexsubs) (puthash "\\mbfitChi" "ðœ²" julia-latexsubs) (puthash "\\mbfitPsi" "ðœ³" julia-latexsubs) (puthash "\\mbfitOmega" "ðœ´" julia-latexsubs) (puthash "\\mbfitnabla" "ðœµ" julia-latexsubs) (puthash "\\mbfitalpha" "ðœ¶" julia-latexsubs) (puthash "\\mbfitbeta" "ðœ·" julia-latexsubs) (puthash "\\mbfitgamma" "ðœ¸" julia-latexsubs) (puthash "\\mbfitdelta" "ðœ¹" julia-latexsubs) (puthash "\\mbfitepsilon" "ðœº" julia-latexsubs) (puthash "\\mbfitzeta" "ðœ»" julia-latexsubs) (puthash "\\mbfiteta" "ðœ¼" julia-latexsubs) (puthash "\\mbfittheta" "ðœ½" julia-latexsubs) (puthash "\\mbfitiota" "ðœ¾" julia-latexsubs) (puthash "\\mbfitkappa" "ðœ¿" julia-latexsubs) (puthash "\\mbfitlambda" "ð€" julia-latexsubs) (puthash "\\mbfitmu" "ð" julia-latexsubs) (puthash "\\mbfitnu" "ð‚" julia-latexsubs) (puthash "\\mbfitxi" "ðƒ" julia-latexsubs) (puthash "\\mbfitomicron" "ð„" julia-latexsubs) (puthash "\\mbfitpi" "ð…" julia-latexsubs) (puthash "\\mbfitrho" "ð†" julia-latexsubs) (puthash "\\mbfitvarsigma" "ð‡" julia-latexsubs) (puthash "\\mbfitsigma" "ðˆ" julia-latexsubs) (puthash "\\mbfittau" "ð‰" julia-latexsubs) (puthash "\\mbfitupsilon" "ðŠ" julia-latexsubs) (puthash "\\mbfitphi" "ð‹" julia-latexsubs) (puthash "\\mbfitchi" "ðŒ" julia-latexsubs) (puthash "\\mbfitpsi" "ð" julia-latexsubs) (puthash "\\mbfitomega" "ðŽ" julia-latexsubs) (puthash "\\mbfitpartial" "ð" julia-latexsubs) (puthash "\\mbfitvarepsilon" "ð" julia-latexsubs) (puthash "\\mbfitvartheta" "ð‘" julia-latexsubs) (puthash "\\mbfitvarkappa" "ð’" julia-latexsubs) (puthash "\\mbfitvarphi" "ð“" julia-latexsubs) (puthash "\\mbfitvarrho" "ð”" julia-latexsubs) (puthash "\\mbfitvarpi" "ð•" julia-latexsubs) (puthash "\\mbfsansAlpha" "ð–" julia-latexsubs) (puthash "\\mbfsansBeta" "ð—" julia-latexsubs) (puthash "\\mbfsansGamma" "ð˜" julia-latexsubs) (puthash "\\mbfsansDelta" "ð™" julia-latexsubs) (puthash "\\mbfsansEpsilon" "ðš" julia-latexsubs) (puthash "\\mbfsansZeta" "ð›" julia-latexsubs) (puthash "\\mbfsansEta" "ðœ" julia-latexsubs) (puthash "\\mbfsansTheta" "ð" julia-latexsubs) (puthash "\\mbfsansIota" "ðž" julia-latexsubs) (puthash "\\mbfsansKappa" "ðŸ" julia-latexsubs) (puthash "\\mbfsansLambda" "ð " julia-latexsubs) (puthash "\\mbfsansMu" "ð¡" julia-latexsubs) (puthash "\\mbfsansNu" "ð¢" julia-latexsubs) (puthash "\\mbfsansXi" "ð£" julia-latexsubs) (puthash "\\mbfsansOmicron" "ð¤" julia-latexsubs) (puthash "\\mbfsansPi" "ð¥" julia-latexsubs) (puthash "\\mbfsansRho" "ð¦" julia-latexsubs) (puthash "\\mbfsansvarTheta" "ð§" julia-latexsubs) (puthash "\\mbfsansSigma" "ð¨" julia-latexsubs) (puthash "\\mbfsansTau" "ð©" julia-latexsubs) (puthash "\\mbfsansUpsilon" "ðª" julia-latexsubs) (puthash "\\mbfsansPhi" "ð«" julia-latexsubs) (puthash "\\mbfsansChi" "ð¬" julia-latexsubs) (puthash "\\mbfsansPsi" "ð­" julia-latexsubs) (puthash "\\mbfsansOmega" "ð®" julia-latexsubs) (puthash "\\mbfsansnabla" "ð¯" julia-latexsubs) (puthash "\\mbfsansalpha" "ð°" julia-latexsubs) (puthash "\\mbfsansbeta" "ð±" julia-latexsubs) (puthash "\\mbfsansgamma" "ð²" julia-latexsubs) (puthash "\\mbfsansdelta" "ð³" julia-latexsubs) (puthash "\\mbfsansepsilon" "ð´" julia-latexsubs) (puthash "\\mbfsanszeta" "ðµ" julia-latexsubs) (puthash "\\mbfsanseta" "ð¶" julia-latexsubs) (puthash "\\mbfsanstheta" "ð·" julia-latexsubs) (puthash "\\mbfsansiota" "ð¸" julia-latexsubs) (puthash "\\mbfsanskappa" "ð¹" julia-latexsubs) (puthash "\\mbfsanslambda" "ðº" julia-latexsubs) (puthash "\\mbfsansmu" "ð»" julia-latexsubs) (puthash "\\mbfsansnu" "ð¼" julia-latexsubs) (puthash "\\mbfsansxi" "ð½" julia-latexsubs) (puthash "\\mbfsansomicron" "ð¾" julia-latexsubs) (puthash "\\mbfsanspi" "ð¿" julia-latexsubs) (puthash "\\mbfsansrho" "ðž€" julia-latexsubs) (puthash "\\mbfsansvarsigma" "ðž" julia-latexsubs) (puthash "\\mbfsanssigma" "ðž‚" julia-latexsubs) (puthash "\\mbfsanstau" "ðžƒ" julia-latexsubs) (puthash "\\mbfsansupsilon" "ðž„" julia-latexsubs) (puthash "\\mbfsansphi" "ðž…" julia-latexsubs) (puthash "\\mbfsanschi" "ðž†" julia-latexsubs) (puthash "\\mbfsanspsi" "ðž‡" julia-latexsubs) (puthash "\\mbfsansomega" "ðžˆ" julia-latexsubs) (puthash "\\mbfsanspartial" "ðž‰" julia-latexsubs) (puthash "\\mbfsansvarepsilon" "ðžŠ" julia-latexsubs) (puthash "\\mbfsansvartheta" "ðž‹" julia-latexsubs) (puthash "\\mbfsansvarkappa" "ðžŒ" julia-latexsubs) (puthash "\\mbfsansvarphi" "ðž" julia-latexsubs) (puthash "\\mbfsansvarrho" "ðžŽ" julia-latexsubs) (puthash "\\mbfsansvarpi" "ðž" julia-latexsubs) (puthash "\\mbfitsansAlpha" "ðž" julia-latexsubs) (puthash "\\mbfitsansBeta" "ðž‘" julia-latexsubs) (puthash "\\mbfitsansGamma" "ðž’" julia-latexsubs) (puthash "\\mbfitsansDelta" "ðž“" julia-latexsubs) (puthash "\\mbfitsansEpsilon" "ðž”" julia-latexsubs) (puthash "\\mbfitsansZeta" "ðž•" julia-latexsubs) (puthash "\\mbfitsansEta" "ðž–" julia-latexsubs) (puthash "\\mbfitsansTheta" "ðž—" julia-latexsubs) (puthash "\\mbfitsansIota" "ðž˜" julia-latexsubs) (puthash "\\mbfitsansKappa" "ðž™" julia-latexsubs) (puthash "\\mbfitsansLambda" "ðžš" julia-latexsubs) (puthash "\\mbfitsansMu" "ðž›" julia-latexsubs) (puthash "\\mbfitsansNu" "ðžœ" julia-latexsubs) (puthash "\\mbfitsansXi" "ðž" julia-latexsubs) (puthash "\\mbfitsansOmicron" "ðžž" julia-latexsubs) (puthash "\\mbfitsansPi" "ðžŸ" julia-latexsubs) (puthash "\\mbfitsansRho" "ðž " julia-latexsubs) (puthash "\\mbfitsansvarTheta" "ðž¡" julia-latexsubs) (puthash "\\mbfitsansSigma" "ðž¢" julia-latexsubs) (puthash "\\mbfitsansTau" "ðž£" julia-latexsubs) (puthash "\\mbfitsansUpsilon" "ðž¤" julia-latexsubs) (puthash "\\mbfitsansPhi" "ðž¥" julia-latexsubs) (puthash "\\mbfitsansChi" "ðž¦" julia-latexsubs) (puthash "\\mbfitsansPsi" "ðž§" julia-latexsubs) (puthash "\\mbfitsansOmega" "ðž¨" julia-latexsubs) (puthash "\\mbfitsansnabla" "ðž©" julia-latexsubs) (puthash "\\mbfitsansalpha" "ðžª" julia-latexsubs) (puthash "\\mbfitsansbeta" "ðž«" julia-latexsubs) (puthash "\\mbfitsansgamma" "ðž¬" julia-latexsubs) (puthash "\\mbfitsansdelta" "ðž­" julia-latexsubs) (puthash "\\mbfitsansepsilon" "ðž®" julia-latexsubs) (puthash "\\mbfitsanszeta" "ðž¯" julia-latexsubs) (puthash "\\mbfitsanseta" "ðž°" julia-latexsubs) (puthash "\\mbfitsanstheta" "ðž±" julia-latexsubs) (puthash "\\mbfitsansiota" "ðž²" julia-latexsubs) (puthash "\\mbfitsanskappa" "ðž³" julia-latexsubs) (puthash "\\mbfitsanslambda" "ðž´" julia-latexsubs) (puthash "\\mbfitsansmu" "ðžµ" julia-latexsubs) (puthash "\\mbfitsansnu" "ðž¶" julia-latexsubs) (puthash "\\mbfitsansxi" "ðž·" julia-latexsubs) (puthash "\\mbfitsansomicron" "ðž¸" julia-latexsubs) (puthash "\\mbfitsanspi" "ðž¹" julia-latexsubs) (puthash "\\mbfitsansrho" "ðžº" julia-latexsubs) (puthash "\\mbfitsansvarsigma" "ðž»" julia-latexsubs) (puthash "\\mbfitsanssigma" "ðž¼" julia-latexsubs) (puthash "\\mbfitsanstau" "ðž½" julia-latexsubs) (puthash "\\mbfitsansupsilon" "ðž¾" julia-latexsubs) (puthash "\\mbfitsansphi" "ðž¿" julia-latexsubs) (puthash "\\mbfitsanschi" "ðŸ€" julia-latexsubs) (puthash "\\mbfitsanspsi" "ðŸ" julia-latexsubs) (puthash "\\mbfitsansomega" "ðŸ‚" julia-latexsubs) (puthash "\\mbfitsanspartial" "ðŸƒ" julia-latexsubs) (puthash "\\mbfitsansvarepsilon" "ðŸ„" julia-latexsubs) (puthash "\\mbfitsansvartheta" "ðŸ…" julia-latexsubs) (puthash "\\mbfitsansvarkappa" "ðŸ†" julia-latexsubs) (puthash "\\mbfitsansvarphi" "ðŸ‡" julia-latexsubs) (puthash "\\mbfitsansvarrho" "ðŸˆ" julia-latexsubs) (puthash "\\mbfitsansvarpi" "ðŸ‰" julia-latexsubs) (let ((c (decode-char 'ucs #x1d7ca))) (if c (puthash "\\mbfDigamma" (char-to-string c) julia-latexsubs))) (let ((c (decode-char 'ucs #x1d7cb))) (if c (puthash "\\mbfdigamma" (char-to-string c) julia-latexsubs))) (puthash "\\mbfzero" "ðŸŽ" julia-latexsubs) (puthash "\\mbfone" "ðŸ" julia-latexsubs) (puthash "\\mbftwo" "ðŸ" julia-latexsubs) (puthash "\\mbfthree" "ðŸ‘" julia-latexsubs) (puthash "\\mbffour" "ðŸ’" julia-latexsubs) (puthash "\\mbffive" "ðŸ“" julia-latexsubs) (puthash "\\mbfsix" "ðŸ”" julia-latexsubs) (puthash "\\mbfseven" "ðŸ•" julia-latexsubs) (puthash "\\mbfeight" "ðŸ–" julia-latexsubs) (puthash "\\mbfnine" "ðŸ—" julia-latexsubs) (puthash "\\Bbbzero" "ðŸ˜" julia-latexsubs) (puthash "\\Bbbone" "ðŸ™" julia-latexsubs) (puthash "\\Bbbtwo" "ðŸš" julia-latexsubs) (puthash "\\Bbbthree" "ðŸ›" julia-latexsubs) (puthash "\\Bbbfour" "ðŸœ" julia-latexsubs) (puthash "\\Bbbfive" "ðŸ" julia-latexsubs) (puthash "\\Bbbsix" "ðŸž" julia-latexsubs) (puthash "\\Bbbseven" "ðŸŸ" julia-latexsubs) (puthash "\\Bbbeight" "ðŸ " julia-latexsubs) (puthash "\\Bbbnine" "ðŸ¡" julia-latexsubs) (puthash "\\msanszero" "ðŸ¢" julia-latexsubs) (puthash "\\msansone" "ðŸ£" julia-latexsubs) (puthash "\\msanstwo" "ðŸ¤" julia-latexsubs) (puthash "\\msansthree" "ðŸ¥" julia-latexsubs) (puthash "\\msansfour" "ðŸ¦" julia-latexsubs) (puthash "\\msansfive" "ðŸ§" julia-latexsubs) (puthash "\\msanssix" "ðŸ¨" julia-latexsubs) (puthash "\\msansseven" "ðŸ©" julia-latexsubs) (puthash "\\msanseight" "ðŸª" julia-latexsubs) (puthash "\\msansnine" "ðŸ«" julia-latexsubs) (puthash "\\mbfsanszero" "ðŸ¬" julia-latexsubs) (puthash "\\mbfsansone" "ðŸ­" julia-latexsubs) (puthash "\\mbfsanstwo" "ðŸ®" julia-latexsubs) (puthash "\\mbfsansthree" "ðŸ¯" julia-latexsubs) (puthash "\\mbfsansfour" "ðŸ°" julia-latexsubs) (puthash "\\mbfsansfive" "ðŸ±" julia-latexsubs) (puthash "\\mbfsanssix" "ðŸ²" julia-latexsubs) (puthash "\\mbfsansseven" "ðŸ³" julia-latexsubs) (puthash "\\mbfsanseight" "ðŸ´" julia-latexsubs) (puthash "\\mbfsansnine" "ðŸµ" julia-latexsubs) (puthash "\\mttzero" "ðŸ¶" julia-latexsubs) (puthash "\\mttone" "ðŸ·" julia-latexsubs) (puthash "\\mtttwo" "ðŸ¸" julia-latexsubs) (puthash "\\mttthree" "ðŸ¹" julia-latexsubs) (puthash "\\mttfour" "ðŸº" julia-latexsubs) (puthash "\\mttfive" "ðŸ»" julia-latexsubs) (puthash "\\mttsix" "ðŸ¼" julia-latexsubs) (puthash "\\mttseven" "ðŸ½" julia-latexsubs) (puthash "\\mtteight" "ðŸ¾" julia-latexsubs) (puthash "\\mttnine" "ðŸ¿" julia-latexsubs) ;; Code for `inferior-julia-mode' (require 'comint) (defcustom julia-program "julia" "Path to the program used by `inferior-julia'." :type 'string :group 'julia) (defcustom julia-arguments '() "Commandline arguments to pass to `julia-program'." :type 'string :group 'julia) (defvar julia-prompt-regexp "julia>" "Regexp for matching `inferior-julia' prompt.") (defvar inferior-julia-mode-map (let ((map (nconc (make-sparse-keymap) comint-mode-map))) ;; example definition (define-key map (kbd "TAB") 'julia-latexsub-or-indent) map) "Basic mode map for `inferior-julia-mode'.") ;;;###autoload (defun inferior-julia () "Run an inferior instance of `julia' inside Emacs." (interactive) (let ((julia-program julia-program) (buffer (get-buffer-create "*Julia*"))) (when (not (comint-check-proc "*Julia*")) (apply #'make-comint-in-buffer "Julia" "*Julia*" julia-program julia-arguments)) (pop-to-buffer-same-window "*Julia*") (inferior-julia-mode))) (defun inferior-julia--initialize () "Helper function to initialize `inferior-julia'." (setq comint-use-prompt-regexp t)) (define-derived-mode inferior-julia-mode comint-mode "Julia" "Major mode for `inferior-julia'. \\" nil "Julia" (setq comint-prompt-regexp julia-prompt-regexp) (setq comint-prompt-read-only t) (set (make-local-variable 'font-lock-defaults) '(julia-font-lock-keywords t)) (set (make-local-variable 'paragraph-start) julia-prompt-regexp) (set (make-local-variable 'indent-line-function) 'julia-indent-line)) (add-hook 'inferior-julia-mode-hook 'inferior-julia--initialize) (provide 'julia-mode) ;; Local Variables: ;; coding: utf-8 ;; byte-compile-warnings: (not obsolete) ;; End: ;;; julia-mode.el ends here ess-17.11/mkinstalldirs0000644005071500004540000000121113202324175012040 00000000000000#!/bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Last modified: 1994-03-25 # Public domain errstatus=0 for file in ${1+"$@"} ; do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d in ${1+"$@"} ; do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" 1>&2 mkdir "$pathcomp" || errstatus=$? fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here ess-17.11/rsn.txt0000644005071500004540000002340413202324175010610 00000000000000 ESS User Poll Tally Stat package used with ESS R 44 SAS 7 JAGS 6 Stata 5 Splus 4 BUGS 1 Other 1 Sage? emacs used with ESS GNU Emacs 43 XEmacs 3 Aquamacs 2 Other 0 OS used with ESS Linux 38 Windows 23 Mac OS X 9 Solaris 3 Other 1 Cygwin Feature Requests Kevin Wright: I want to change the background color of code chunks in noweb buffers. Erik Iverson: I think ESS is very feature complete at this point. The only thing I've looked at that seems interesting is some sort of 'intellisense' feature that uses R's built-in completion mechanism to temporarily display available completions using something like company-mode, autocomplete, or completion-ui. I had at one point something that almost worked, but I believe the library it was built in, company-mode, has now changed significantly. Another separate point is that the manual could be slightly updated to keep up with current features. For example, the main evaluation command in R buffers, C-c C-c, is not documented. A great feature for showing R function arguments when the '(' key is pressed only shows up in the Changelog, and is claimed to be on be default (ess-r-args-electric-paren), when that no longer seems to be the case. Simple features like this can draw users to ESS who might not know why it is useful to them otherwise. Josh Wiley: This may be windows centric, but it would be minorly convenient if options("width") in R was paired with the size of the window in Emacs. Brendan Halpin: Clearer documentation - what I know how to do I found out often by trial and error, and the mailing list. Bill Venables: Better default customisation of iESS - nothing that can't be fixed with a hook, though. Felix Andrews: ESS eval seems to be very slow: when I do C-c C-b it takes a very long time and there is no visual indication that anything is happening (it says "Starting evaluation..."). I know this can be avoided using ess-eval-visibly-p but it would often be helpful to see the code echoed as well. Kjetil Halvorsen: A good cheatsheet to print and put on the wall. Andreas Kiermeier: When writing code using lattice (e.g. xyplot) and I have a panel function, then C-c C-c when pressed inside the panel function only submits the panel function rather than the whole plotting expression. I would love if this could be extended (same goes for apply functions and probably others) to cover the whole expression (or even 'paragraph') rather than just the panel function. Gray Calhoun: I'd like to be able to direct graphical output to a buffer, have graphics with multiple pages sent to multiple buffers, and have multiple graphics open at a time. Ista Zahn: Function/variable completion in script files (maybe this already is supposed to work, but for me completion only works in interactive sessions). Gerhard Schon: For consulting, I need to use SPSS 18. It would be nice, to interact with SPSS 18. Derek Eder: Easier configuration! "font lock" and "visible execution" are 2 features which I always have trouble turning off (on multiple machines) because I can never remember where they are in the configuration menus. Paul Hewson: Object browser (e.g. open another frame listing variable names of a dataframe) Deepayan Sarkar: Not have R output be fontified as if it were R code. David Carslaw: The one feature I really miss is the showing of function arguments in the R buffer. I think I saw an explanation for why this is not made available as "the source is real" paradigm. However, showing the function options in the R buffer in my view would be very useful and not take anything away from the "source is real" approach. The simple reason is it is difficult to remember what the options are! It's very useful when writing the scripts - where it is available. RKward does this too and it's useful. Gerald Jean: Having function arguments show up in the mini-buffer UNTIL the closing parenthesis is typed. By the way, in R it shows up briefly, but not at all in Splus; would be great to have it for all "S" variants. Charles Berry: Handle \Sexpr{}'s in Sweave code. How 'about ess-eval-sexpr Tangle the current contents of \Sexpr{ } and send it to the inferior ESS process. ess-eval-sexprs-in-region Tangle the contents of \Sexpr{ }'s in region and send them to the inferior ESS process. (Maybe even open a *Sexpr* buffer (say) and place the region contents in that buffer with the \Sexpr{}'s replaced by their printed results.) More than a few times, I have had Sweave terminate with an error or deliver unreadable results because of a silly error in an \Sexpr. Sven Hartenstein: I am sometimes annoyed by emacs "popup" windows, e.g. after expanding some string or when a R help buffer was opened. My request would be a simple key binding that - whatever the current window layout and active buffers are - gives me my two pane view with the latest *.R file as the active buffer in the upper 3/4 of the frame and the R process the other 1/4 of the frame. Francois Pepin: I haven't looked recently to see how hard this currently is, but I often run R on another linux machine through ssh and screen. I would love it if there was an easy way to connect ESS to the other R instance more or less seamlessly. Last time I looked, the proposed solutions seemed to be a bit clunky. Patrick Connolly and Emanuel Heitlinger: A clever way of dealing with the unbalanced quotes (to R's way of thinking) that can be returned to Emacs from a bash call. The ` character screws up the font colouring. Can't imagine how it could be done, and I realize it's really a bash issue, but I'd be very grateful if someone could work out a way of dealing with it. I invariably see colours as though it's all a string irrespective of function names or anything else. Brian Diggs: Interactive integration with SAS on Windows. I realize this is a problem with SAS, not ESS, though. Tengfei Yin: I would say, supporting more with Rsweave, especially some convenient key binding. That may require more work with AUCTeX guys, I don't know. It will be wonderful if I can just press Ctrl-C C, Rnw --> Latex->pdf viewer, and all the error messages could show up and I don't have to open another TeX file and click Ctrl-C C to see the output Keith Ponting: (Vaguely related to other comments about font locking, which I second, but probably an issue for two-mode-mode rather than for ESS) I use Sweave a lot with emacs two-mode-mode. When in an ESS block (for which I use \begin{Scode}...\end{Scode}) the font locking is often corrupted by characters in the rest of the file. It appears that the two modes are not completely isolated, so that an unbalanced $ in an ESS block will cause the LaTeX sections to be treated as in math mode, conversely unbalanced ' in the LaTeX sections causes the ESS sections to be treated as strings. There is a work-around - adding the balancing symbol as a comment in the appropriate language, but it does take a bit of finding sometimes. Jeff Arnold: I would like to see closer integration with CEDET (http://cedet.sourceforge.net/); adding the ESS languages to CEDET would open up a lot of development environment tools without reinventing the wheel. This would require writing a grammar for the parser for each language, but external parsers like etags/ctags can be used to bootstrap language support. I also find the fact that ESS includes several unrelated languages to be confusing. From what I have seen of the code, there doesn't appear to much shared code between the S/R, SAS, Stata, and BUGS/JAGS parts of ESS. I found this confusing both as a user and as a contributor, primarily because sometimes it is not immediately clear whether an ess-* function is generic to all the languages, or just a S/R related function. Refactoring the ESS package into four major modes (S, SAS, Stata, and BUGS) released by the ESS project would seem to make for a cleaner code base. Consistency among the major modes could still be enforced through conventions for the functions and key-bindings included in a major mode. John Maindonald: A GUI interface to commonly used commands, organised structured a/c the general nature of the command. There are a few Emacs commands that should also be noted, in a separate category. You might want to take a poll on which are the commands that get used, or would be used if one could remember them: 5F p n ; (with region selected) \ and x 1 r x ess-rdired x occur << RET (lines with <<) -x ess-font-lock- Commands for creating & handling transcript files: X Don MacQueen: An option to send R output to a separate window, with the commands that caused the output echoed before the output. Ross Boylan: I wish that ?foo, where foo is a non-existent command, didn't leave a *help[R](foo)* buffer lying around. ACTUALLY, IT HAS ALREADY BEEN IMPLEMENTED: JUST CUSTOMISE ess-help-kill-bogus-buffers TO t (thanks to Sam Steingold) t IS NOW THE DEFAULT IN ESS 12.03 (Rodney) Johan Sandblom: Some manner of font-lock integration with AUCTeX (I use mmm-mode) though I realize that may be more a matter for AUCTeX. Rasmus Pank: Improvements of AUCTeX integration. Sometimes results are weird. Compilation works poorly. It would be nice to easily specify new compilers to use for example pgfsweave. Mathieu Basille: Integration of Rubber as I said earlier! But I would definitely second Rasmus request of integration with AUCTeX. As I use mostly R in Sweave docs, I'd like to be able to use C-c C-c to compile, as I'm used to do for LateX documents. Well, of course it would go in two passes instead of one: 1) with Sweave, 2) with Rubber. ess-17.11/test/0000755005071500004540000000000013202324175010301 500000000000000ess-17.11/test/Makefile0000644005071500004540000000055613202324175011667 00000000000000EMACS=/usr/bin/emacs all: ${EMACS} -Q --script run-tests inf: ${EMACS} -Q --script run-tests --inf r: ${EMACS} -Q --script run-tests --rstats r-indent: ${EMACS} -Q --script run-tests --rstats-indent cases: indent-cases literate-cases indent-cases: ${EMACS} -Q --script generate-indent-cases literate-cases: ${EMACS} -Q --script generate-literate-cases ess-17.11/test/dummy-pkg/0000755005071500004540000000000013202324175012213 500000000000000ess-17.11/test/dummy-pkg/DESCRIPTION0000644005071500004540000000025013202324175013636 00000000000000Package: foo Title: title License: GPL-2 Description: Package description. Author: author Maintainer: maintainer Version: 0.1 ess-17.11/test/dummy-pkg/R/0000755005071500004540000000000013202324175012414 500000000000000ess-17.11/test/dummy-pkg/R/test.R0000644005071500004540000000002413202324175013432 00000000000000 ## Test file NULL ess-17.11/test/ess-indentation-tests.el0000644005071500004540000001057413202324175015016 00000000000000;; ess-tests.el --- Tests for ESS ;; ;; ;; Filename: ess-tests.el ;; Created: 07-05-2015 (ESS 15.09) ;; Keywords: tests, indentation ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; This file is *NOT* part of GNU Emacs. ;; This file is part of ESS ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 3, or ;; (at your option) any later version. ;; ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; A copy of the GNU General Public License is available at ;; http://www.r-project.org/Licenses/ ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; ;; To run these tests: ;; All tests: M-x ert t ;; ;; To apply styles for manual testing: ;; M-: (let ((ess-style-alist ess-test-style-alist)) ;; (ess-set-style 'misc1)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Code: (require 'ert) ;;; Indentation tests (defvar ess-test-style-alist `((RRR ,@(cdr (assq 'RRR ess-style-alist))) (RRR+ ,@(cdr (assq 'RRR+ ess-style-alist))) (RStudio- ,@(cdr (assq 'RStudio- ess-style-alist))) (C++ ,@(cdr (assq 'C++ ess-style-alist))) (misc1 (ess-indent-offset . 3) (ess-offset-block . open-delim) (ess-offset-arguments . (prev-call 5)) (ess-offset-arguments-newline . open-delim) (ess-offset-continued . cascade) (ess-align-nested-calls . ("ifelse")) (ess-align-arguments-in-calls . nil) (ess-align-continuations-in-calls . nil) (ess-align-blocks . (fun-decl bare-blocks)) (ess-indent-from-lhs . nil) (ess-indent-from-chain-start . nil) (ess-indent-with-fancy-comments . t)))) (defun ess-test-get-pos-from-undo-elt (e) "If E represents an edit, return a position value in E, the position where the edit took place. Return nil if E represents no real change. \nE is an entry in the buffer-undo-list." ;; stolen from goto-chg.el (cond ;; ((numberp e) e) ; num==changed position ;; ((atom e) nil) ; nil==command boundary ((numberp (car e)) (cdr e)) ; (beg . end)==insertion ((stringp (car e)) (abs (cdr e))) ; (string . pos)==deletion ;; ((null (car e)) (nthcdr 4 e)) ; (nil ...)==text property change ;; ((atom (car e)) nil) ; (t ...)==file modification time (t nil))) ; (marker ...)==marker moved (defun not-change-on-indent (buffer) "Return t if BUFFER wasn't modified on indent." (with-current-buffer buffer (setq buffer-undo-list nil) (indent-region (point-min) (point-max)) (not (buffer-modified-p buffer)))) (defun ess-test-explain-change-on-indent (buffer) "Explainer function for `not-change-on-indent'." (when (buffer-modified-p buffer) (with-current-buffer buffer (let ((bul buffer-undo-list) (change-pos (point-min))) (while (and bul (null (setq change-pos (ess-test-get-pos-from-undo-elt (car bul))))) (pop bul)) (let ((diff-file (concat (buffer-name) ".diff"))) (diff-buffer-with-file buffer) (with-current-buffer "*Diff*" (write-region (point-min) (point-max) diff-file)) `(,(buffer-name buffer) was modified on line ,(count-lines 1 change-pos) (diff was writen to ,diff-file))))))) (put 'not-change-on-indent 'ert-explainer 'ess-test-explain-change-on-indent) (defun ess-test-R-indentation (file style) (let ((ess-style-alist ess-test-style-alist) (buff (find-file-noselect file t t))) (with-current-buffer buff (R-mode) (ess-set-style style) (set-buffer-modified-p nil) (should (not-change-on-indent buff))))) (ert-deftest test-ess-R-indentation-RRR () (ess-test-R-indentation "styles/RRR.R" 'RRR)) (ert-deftest test-ess-R-indentation-RRR+ () (ess-test-R-indentation "styles/RRR+.R" 'RRR+)) (ert-deftest test-ess-R-indentation-RStudio- () (ess-test-R-indentation "styles/RStudio-.R" 'RStudio-)) (ert-deftest test-ess-R-indentation-C++ () (ess-test-R-indentation "styles/C++.R" 'C++)) (ert-deftest test-ess-R-indentation-misc1 () (ess-test-R-indentation "styles/misc1.R" 'misc1)) ess-17.11/test/ess-inf-tests.el0000644005071500004540000000243113202324175013247 00000000000000 (require 'ert) ;; As we use the R inferior for the generic tests (require 'ess-r-tests-utils) ;;; Evaluation (ert-deftest ess-evaluation () (with-r-running nil ;; `ess-send-string' (should (output= (ess-send-string proc "TRUE") "[1] TRUE")) ;; `ess-command' (with-r-running nil (let ((output-buffer (get-buffer-create " *ess-test-command-output*"))) (ess-command "identity(TRUE)\n" output-buffer) (should (string= (with-current-buffer output-buffer (ess-kill-last-line) (buffer-string)) "[1] TRUE")))))) (ert-deftest ess-run-presend-hooks () (with-r-running nil (let ((ess-presend-filter-functions (list (lambda (string) "\"bar\"")))) (should (output= (ess-send-string (ess-get-process) "\"foo\"") "[1] \"bar\""))))) ;;; Inferior utils (ert-deftest ess-build-eval-command () (should (not (ess-build-eval-command "command()"))) (let ((ess-eval-command "%s - %f")) (should (string= (ess-build-eval-command "command(\"string\")" nil nil "file") "command(\\\"string\\\") - file")))) (ert-deftest ess-build-load-command () (should (string= (ess-build-load-command "file") "source('file')\n"))) ess-17.11/test/ess-literate-tests.el0000644005071500004540000002227313202324175014312 00000000000000 (defvar ess-ltest-R-chunk-pattern "^###[ \t]*\\([0-9]+[a-zA-Z]*\\) \\([^\n]*\\)$") (defvar ess-ltest-R-code-start-pattern "^##!") (defvar ess-ltest-R-code-cont-pattern "^##>") (defvar ess-ltest-R-code-pattern "^##[!>]") (defvar ess-ltest-R-section-pattern "^##### \\([^\n]*\\)$") (defvar ess-ltest-R-mode-init '((mode . R))) (defun ess-ltest-R (&optional file) (when file (let ((r-file (concat file ".R")) (el-file (concat file ".el"))) (message "---Testing %s" (file-name-nondirectory r-file)) (set-buffer (find-file-noselect r-file)) (when (file-exists-p el-file) (load-file el-file)))) ;; Don't check safety of local variables declared in test files (cl-letf (((symbol-function 'safe-local-variable-p) (lambda (sym val) t))) (let ((enable-dir-local-variables nil)) (hack-local-variables))) (let ((ess-ltest-chunk-pattern ess-ltest-R-chunk-pattern) (ess-ltest-code-cont-pattern ess-ltest-R-code-cont-pattern) (ess-ltest-code-pattern ess-ltest-R-code-pattern) (ess-ltest-section-pattern ess-ltest-R-section-pattern) (ess-ltest-mode-init (append (assq-delete-all 'mode file-local-variables-alist) ess-ltest-R-mode-init))) (ess-ltest-this-buffer)) (save-buffer)) (defun ess-ltest-this-buffer () (goto-char 1) (let ((undo-inhibit-record-point t)) (undo-boundary) ;; Print first section header (ess-ltest-print-section-header) (when (ess-ltest-search-chunk nil t) (while (looking-at ess-ltest-chunk-pattern) (ess-ltest-print-chunk-id) (ess-ltest-process-next-chunk))) (skip-chars-backward "\n") (let ((point-max (or (ess-ltest-local-variables-pos) (point-max)))) (delete-region (1+ (point)) point-max) (insert "\n")) (when (looking-at (concat "\n" comment-start "+ +Local Variables:")) (insert "\n")) (undo-boundary))) (defun ess-ltest-local-variables-pos () (save-excursion (let ((pattern (concat "^" comment-start "+ +Local Variables:"))) (when (re-search-forward pattern nil t) (match-beginning 0))))) (defun ess-ltest-print-section-header () (save-excursion (skip-chars-forward " \n\t") (when (looking-at ess-ltest-section-pattern) (message (match-string-no-properties 1))))) (defun ess-ltest-print-chunk-id () (let ((number (concat "#" (match-string-no-properties 1))) (msg (match-string-no-properties 2))) (setq msg (substring msg 0 (string-match "-+$" msg))) (message (if (> (length msg) 0) (concat number " - " msg) number)))) (defun ess-ltest-search-chunk (&optional n skip-section) (let* ((next-chunk (save-excursion (cond ((re-search-forward ess-ltest-chunk-pattern nil t (or n 1)) (match-beginning 0)) ((ess-ltest-local-variables-pos)) (t (point-max))))) (next-section (save-excursion (when (re-search-forward ess-ltest-section-pattern next-chunk t) (match-beginning 0))))) (goto-char (if (and (not skip-section) next-section) next-section next-chunk)))) (defun ess-ltest-process-next-chunk () (let* ((chunk-beg (point)) (chunk-end (progn (forward-line) (save-excursion (ess-ltest-search-chunk) (point-marker)))) (test-case (progn (skip-chars-forward " \t\n") (ess-ltest-process-case))) (test-case-state test-case)) (while (looking-at ess-ltest-code-pattern) (ess-ltest-process-next-subchunk chunk-end)) (insert "\n") (ess-ltest-print-section-header) (when (looking-at ess-ltest-section-pattern) (insert "\n") (ess-ltest-search-chunk nil t)))) (defun ess-ltest-process-next-subchunk (chunk-end) (let* ((continuation (looking-at ess-ltest-code-cont-pattern)) (test-code (ess-ltest-process-code)) (test-result (ess-ltest- (if continuation test-case-state test-case) test-code ess-ltest-mode-init continuation)) (subchunk-end (save-excursion (if (re-search-forward ess-ltest-code-pattern chunk-end t) (match-beginning 0) chunk-end)))) (setq test-case-state test-result) (delete-region (point) subchunk-end) (insert (concat "\n" test-result "\n\n")))) (defun ess-ltest-process-case () (let ((case-start (progn (skip-chars-forward " \t\n") (goto-char (line-beginning-position)) (point))) (code-start (if (re-search-forward ess-ltest-code-pattern chunk-end t) (goto-char (match-beginning 0)) (error "No test code found"))) (case-end (progn (skip-chars-backward " \t\n") (point)))) (forward-char 1) (delete-region (point) code-start) (insert "\n") (buffer-substring-no-properties case-start case-end))) (defun ess-ltest-process-code () (let* ((test-start (point)) (test-end (if (re-search-forward "^$" chunk-end t) (1- (match-beginning 0)) (goto-char chunk-end))) (test-code (buffer-substring-no-properties test-start test-end))) ;; Remove comment prefix (while (string-match (concat (substring ess-ltest-code-pattern 1) "[ \t]?") test-code) (setq test-code (replace-match "" t t test-code))) ;; Parse elisp (setq test-code (concat "(" test-code ")")) (car (read-from-string test-code)))) ;; The following functions are borrowed from Lispy's testing ;; framework. The main difference is that they restore state when ;; `keep-state' is t. They also run `(kbd)' on strings. (defvar ess-ltest--state-buffer nil "Evaluation buffer of previous test chunk.") (defmacro ess-ltest (init &rest body) (apply 'ess-ltest- `(,init (,@body)))) (defun ess-ltest- (init body local-variables &optional keep-state) (unless keep-state (and ess-ltest--state-buffer (buffer-name ess-ltest--state-buffer) (kill-buffer ess-ltest--state-buffer)) (setq ess-ltest--state-buffer (generate-new-buffer " *temp*"))) (save-window-excursion (switch-to-buffer ess-ltest--state-buffer) (if keep-state (delete-region (point-min) (point-max)) (transient-mark-mode 1) (setq-local file-local-variables-alist (copy-alist local-variables)) (hack-local-variables-apply)) (insert init) (goto-char (point-min)) (when (search-forward "×" nil t) (backward-delete-char 1) (set-mark (point))) (goto-char (point-max)) (search-backward "¶") (delete-char 1) ;; Reset Emacs state (unless keep-state (setq last-command nil) (setq current-prefix-arg nil)) (mapcar (lambda (x) (cond ((equal x '(kbd "C-u")) (setq current-prefix-arg (list 4))) ((stringp x) (if (string= x "C-u") (setq current-prefix-arg (list 4)) (ess-ltest-unalias (kbd x)))) ((and (listp x) (eq (car x) 'kbd)) (ess-ltest-unalias x)) (t (eval x)))) body) (insert "¶") (when (region-active-p) (exchange-point-and-mark) (insert "×")) (buffer-substring-no-properties (point-min) (point-max)))) (defun ess-ltest-decode-keysequence (str) "Decode STR from e.g. \"23ab5c\" to '(23 \"a\" \"b\" 5 \"c\")" (let ((table (copy-seq (syntax-table)))) (loop for i from ?0 to ?9 do (modify-syntax-entry i "." table)) (loop for i from ? to ? do (modify-syntax-entry i "w" table)) (loop for i in '(? ?\( ?\) ?\[ ?\] ?{ ?} ?\" ?\' ?\ ) do (modify-syntax-entry i "w" table)) (cl-mapcan (lambda (x) (let ((y (ignore-errors (read x)))) (if (numberp y) (list y) (mapcar #'string x)))) (with-syntax-table table (split-string str "\\b" t))))) (defun ess-ltest-unalias (seq) "Emulate pressing keys decoded from SEQ." (if (vectorp seq) (ess-ltest--unalias-key seq) (let ((lkeys (ess-ltest-decode-keysequence seq)) key) (while (setq key (pop lkeys)) (if (numberp key) (let ((current-prefix-arg (list key))) (when lkeys (ess-ltest--unalias-key (pop lkeys)))) (ess-ltest--unalias-key key)))))) (defun ess-ltest--unalias-key (key) "Call command that corresponds to KEY. Insert KEY if there's no command." (let ((cmd (key-binding key))) (if (eq cmd 'self-insert-command) (insert key) (setq last-command-event (aref key 0)) (call-interactively cmd) (setq last-command cmd)))) ess-17.11/test/ess-r-tests-utils.el0000644005071500004540000000600613202324175014074 00000000000000 (defmacro with-r-file (file &rest body) (declare (indent 1) (debug (&rest body))) `(apply #'with-r-file- (list ,file '(,@body)))) (defun with-r-file- (file body) (let ((r-file-buffer (if file (find-file-noselect file) (generate-new-buffer " *with-r-file-temp*")))) (save-window-excursion (switch-to-buffer r-file-buffer) (R-mode) (mapcar #'eval body)))) (defmacro with-r-running (file &rest body) (declare (indent 1) (debug (&rest body))) `(apply #'with-r-running- (list ,file '(,@body)))) (defun with-r-running- (file body) (let ((r-file-buffer (cond ((bufferp file) file) ((stringp file) (find-file-noselect file)) (t (generate-new-buffer " *with-r-file-temp*"))))) (save-window-excursion (switch-to-buffer r-file-buffer) (R-mode) (let* ((proc (save-window-excursion (let ((ess-ask-for-ess-directory nil)) (R "--vanilla")) (ess-get-process))) (ess-local-process-name (process-name proc)) (prev-buffer (process-buffer proc)) (output-buffer (get-buffer-create " *ess-r-tests-output*"))) (with-current-buffer output-buffer (erase-buffer)) (set-process-buffer proc output-buffer) (set-process-filter proc 'inferior-ess-ordinary-filter) (unwind-protect (prog1 ;; Returning the last value (car (last (mapcar #'eval body))) (ess-wait-for-process proc) ;; Avoid getting "Process killed" in ;; output-buffer (set-process-buffer proc prev-buffer) (with-current-buffer output-buffer (ess-kill-last-line) (buffer-string))) (kill-process proc)))))) ;; The following retrieve the last output and clean the output ;; buffer. This is useful to continue testing without restarting a ;; fresh R session. ;; In case of other side effects than mere output, it's probably safer ;; to perform ulterior tests with a fresh R to avoid contaminating ;; them. (defmacro output (&rest body) (declare (indent 1) (debug (&rest body))) `(progn ,@body (ess-wait-for-process proc) (with-current-buffer output-buffer (ess-kill-last-line) (prog1 (buffer-string) (erase-buffer))))) (defmacro output= (body expected) (declare (indent 1) (debug (&rest body))) `(progn (let ((output (output ,body))) (if (string= output (eval ,expected)) output ;; Probably a better way but this gets the job done (signal 'ert-test-failed (list (concat "Expected: \n" expected) (concat "Result: \n" output))))))) (provide 'ess-r-tests-utils) ess-17.11/test/ess-r-tests.el0000644005071500004540000000634213202324175012741 00000000000000 (require 'ert) (require 'ess-site) (require 'ess-r-tests-utils) ;;; Inferior R (ert-deftest ess-build-eval-command:R () (let ((command "command(\"string\")")) (should (string= (ess-build-eval-command:R command) ".ess.eval(\"command(\"string\")\", visibly = FALSE, output = FALSE)\n")) (should (string= (ess-build-eval-command:R command nil t) ".ess.eval(\"command(\"string\")\", visibly = FALSE, output = TRUE)\n")) (should (string= (ess-build-eval-command:R command t t "file.ext" "foo") ".ess.ns_eval(\"command(\"string\")\", visibly = TRUE, output = TRUE, package = 'foo', verbose = TRUE, file = 'file.ext')\n")) (with-r-file nil (let ((command "command(\"string\")")) (should (string= (ess-build-eval-command command) (ess-build-eval-command:R (ess-quote-special-chars command)))))))) (ert-deftest ess-build-load-command:R () (should (string= (ess-build-load-command:R "file.ext") ".ess.source('file.ext', visibly = FALSE, output = FALSE)\n")) (should (string= (ess-build-load-command:R "file.ext" t t) ".ess.source('file.ext', visibly = TRUE, output = TRUE)\n")) (should (string= (ess-build-load-command:R "file.ext" nil t "foo") ".ess.ns_source('file.ext', visibly = FALSE, output = TRUE, package = 'foo', verbose = TRUE)\n")) (with-r-file nil (should (string= (ess-build-load-command "file") (ess-build-load-command:R "file"))))) (ert-deftest ess-r-send-single-quoted-strings () (with-r-running nil (insert "'hop'\n") (let (ess-eval-visibly) (should (output= (ess-eval-buffer nil) "[1] \"hop\""))))) (ert-deftest ess-r-send-double-quoted-strings () (with-r-running nil (insert "\"hop\"\n") (let (ess-eval-visibly) (should (output= (ess-eval-buffer nil) "[1] \"hop\""))))) ;;; ess-r-package-mode (ert-deftest ess-r-package-auto-activate () (with-temp-buffer (text-mode) (hack-local-variables) (should (not ess-r-package-mode))) (with-r-file "dummy-pkg/R/test.R" (hack-local-variables) (should ess-r-package-mode))) ;;; Namespaced evaluation (ert-deftest ess-r-run-presend-hooks () (with-r-running nil (let ((ess-presend-filter-functions (list (lambda (string) "\"bar\""))) (ess-r-evaluation-env "base") ess-eval-visibly) (insert "\"foo\"\n") (should (output= (ess-eval-region (point-min) (point-max) nil) "[1] \"bar\""))))) (ert-deftest ess-r-namespaced-eval-no-sourced-message () (with-r-running nil (let ((ess-r-evaluation-env "base") ess-eval-visibly) (insert "\"foo\"\n") (should (output= (ess-eval-region (point-min) (point-max) nil) "[1] \"foo\""))))) (ert-deftest ess-r-namespaced-eval-no-srcref-in-errors () (with-r-running nil (let ((ess-r-evaluation-env "base") (error-msg "Error: unexpected symbol") ess-eval-visibly) (insert "(foo bar)\n") (let ((output (output (ess-eval-region (point-min) (point-max) nil)))) (should (string= (substring output 0 (length error-msg)) error-msg)))))) ess-17.11/test/generate-indent-cases0000755005071500004540000000267713202324175014330 00000000000000#!/usr/bin/emacs --script ;; (Re)generate files with test cases for indentation (let ((current-directory (file-name-directory load-file-name))) (setq ess-test-path (expand-file-name "." current-directory)) (setq ess-styles-path (expand-file-name "./styles/" current-directory)) (setq ess-root-path (expand-file-name "../lisp/" current-directory))) (add-to-list 'load-path ess-root-path) (add-to-list 'load-path ess-test-path) (require 'ess-site) (load (expand-file-name "ess-indentation-tests.el" ess-test-path) nil t) ;; The RRR file is taken as a model, so modify this file to add or ;; adjust test cases. (let ((ess-style-alist ess-test-style-alist) (RRR-file (expand-file-name "RRR.R" ess-styles-path))) ;; Regenerate indentation in RRR file (set-buffer (find-file-noselect RRR-file)) (setq ess-indent-with-fancy-comments t) (ess-set-style 'RRR) (indent-region (point-min) (point-max)) (save-buffer) (mapc (lambda (test-conf) (let* ((test-name (car test-conf)) (test-file (expand-file-name (concat (symbol-name test-name) ".R") ess-styles-path))) (set-buffer (find-file-noselect test-file)) (setq ess-indent-with-fancy-comments t) (ess-set-style test-name) (insert-file-contents-literally RRR-file nil nil nil 'replace) (indent-region (point-min) (point-max)) (save-buffer))) (assq-delete-all 'RRR ess-test-style-alist))) ess-17.11/test/generate-literate-cases0000755005071500004540000000132413202324175014644 00000000000000#!/usr/bin/emacs --script ;; (Re)generate files with test cases for indentation (let ((current-directory (file-name-directory load-file-name))) (setq ess-test-path (expand-file-name "." current-directory)) (setq ess-literate-path (expand-file-name "./literate/" current-directory)) (setq ess-root-path (expand-file-name "../lisp/" current-directory))) (add-to-list 'load-path ess-root-path) (add-to-list 'load-path ess-test-path) (require 'ert) (require 'ess-site) (load (expand-file-name "ess-literate-tests.el" ess-test-path) nil t) (message "\nStarting literate tests") (mapc (lambda (file) (ess-ltest-R (expand-file-name file ess-literate-path))) '("roxy" "code-fill" "misc" "syntax" "tokens")) ess-17.11/test/literate/0000755005071500004540000000000013202324175012112 500000000000000ess-17.11/test/literate/code-fill.R0000644005071500004540000000450113202324175014013 00000000000000 ##### Code Filling ### 1 ---------------------------------------------------------------- fun_call(¶argument1, argument2, argument3, argument4, argument5) ##! (setq-local fill-column 40) ##! "M-q" fun_call(¶argument1, argument2, argument3, argument4, argument5) ##> "M-q" fun_call(¶argument1, argument2, argument3, argument4, argument5) ##> "M-q" fun_call(¶argument1, argument2, argument3, argument4, argument5) ##> "M-q" fun_call(¶argument1, argument2, argument3, argument4, argument5) ### 2 ---------------------------------------------------------------- fun¶_call(argument1, argument2, argument3, argument4, argument5) ##! (setq-local fill-column 40) ##! "M-q" fun¶_call(argument1, argument2, argument3, argument4, argument5) ### 3 ---------------------------------------------------------------- fun_call(¶ ## comment argument1, ## comment argument2) ##! "M-q" fun_call(¶ ## comment argument1, ## comment argument2) ### 4 ---------------------------------------------------------------- ¶fun_call(parameter = "string") ##! "M-q" ¶fun_call(parameter = "string") ### 5 ---------------------------------------------------------------- `fun_call`(¶argument1, argument2) ##! "M-q" ##! "M-q" `fun_call`(¶argument1, argument2) ### 6 Empty arguments ------------------------------------------------ fun_call¶(argument1, , arg2, , argument3, , argument4) ##! (setq-local fill-column 42) ##! "M-q" fun_call¶(argument1, , arg2, , argument3, , argument4) ##> "M-q" fun_call¶(argument1, , arg2, , argument3, , argument4) ##### Continuation Filling ### 1 ---------------------------------------------------------------- lm(outcome¶ ~ pred1 + pred2 + pred3 + pred4, data) ##! "M-q" lm(outcome¶ ~ pred1 + pred2 + pred3 + pred4, data) ##> "M-q" lm(outcome¶ ~ pred1 + pred2 + pred3 + pred4, data) ##> "M-q" lm(outcome¶ ~ pred1 + pred2 + pred3 + pred4, data) ### 2 ---------------------------------------------------------------- fun_call(¶argument +) ##! "M-q" fun_call(¶argument +) ess-17.11/test/literate/misc.R0000644005071500004540000000054613202324175013115 00000000000000 ##### Indentation ### 1 ---------------------------------------------------------------- { fun¶_call( argument ) + stuff1 } + stuff2 ##! "C-M-q" { fun¶_call( argument ) + stuff1 } + stuff2 ##! "C-u" ##! "C-M-q" { fun¶_call( argument ) + stuff1 } + stuff2 ess-17.11/test/literate/roxy.R0000644005071500004540000000563413202324175013166 00000000000000 ##### Filling ### 1a --------------------------------------------------------------- ##' Title ##' ##' @param¶ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ##' @param Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. NULL ##! (fill-paragraph) ##' Title ##' ##' @param¶ Lorem ipsum dolor sit amet, consectetur adipiscing elit, ##' sed do eiusmod tempor incididunt ut labore et dolore magna ##' aliqua. Ut enim ad minim veniam, quis nostrud exercitation ##' ullamco laboris nisi ut aliquip ex ea commodo consequat. ##' @param Lorem ipsum dolor sit amet, consectetur adipiscing elit, ##' sed do eiusmod tempor incididunt ut labore et dolore magna ##' aliqua. Ut enim ad minim veniam, quis nostrud exercitation ##' ullamco laboris nisi ut aliquip ex ea commodo consequat. NULL ### 1b --------------------------------------------------------------- ##' Title ##' ¶##' @param Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ##' @param Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. NULL ##! (fill-paragraph) ##' Title ##' ¶##' @param Lorem ipsum dolor sit amet, consectetur adipiscing elit, ##' sed do eiusmod tempor incididunt ut labore et dolore magna ##' aliqua. Ut enim ad minim veniam, quis nostrud exercitation ##' ullamco laboris nisi ut aliquip ex ea commodo consequat. ##' @param Lorem ipsum dolor sit amet, consectetur adipiscing elit, ##' sed do eiusmod tempor incididunt ut labore et dolore magna ##' aliqua. Ut enim ad minim veniam, quis nostrud exercitation ##' ullamco laboris nisi ut aliquip ex ea commodo consequat. NULL ### 2 ---------------------------------------------------------------- ##' ¶ ##! "RET" ##' ##' ¶ ##> "RET" ##' ##' ##' ¶ ##> (setq ess-roxy-insert-prefix-on-newline nil) ##> "RET" ##' ##' ##' ¶ ##! "M-j" ##' ##' ¶ ### 3 ---------------------------------------------------------------- ##' @param¶ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor `incididunt' ut labore et ``dolore'' magna aliqua. NULL ##! (fill-paragraph) ##' @param¶ Lorem ipsum dolor sit amet, consectetur adipiscing elit, ##' sed do eiusmod tempor `incididunt' ut labore et ``dolore'' ##' magna aliqua. NULL ess-17.11/test/literate/syntax.R0000644005071500004540000000247513202324175013513 00000000000000 ##### Statements ### 1 ---------------------------------------------------------------- (!stuff1 ||¶ stuff2) ##! (ess-climb-continuations) (¶!stuff1 || stuff2) ##### Operators ### 1a --------------------------------------------------------------- stuff1 =, ¶stuff2 ##! (ess-climb-operator) stuff1 =, ¶stuff2 ### 1b --------------------------------------------------------------- stuff1 =; ¶stuff2 ##! (ess-climb-operator) stuff1 =; ¶stuff2 ### 1c --------------------------------------------------------------- stuff1 := ¶stuff2 ##! (ess-climb-operator) stuff1¶ := stuff2 ### 1d --------------------------------------------------------------- stuff1 %a?a:a% ¶stuff2 ##! (ess-climb-operator) stuff1¶ %a?a:a% stuff2 ### 1e --------------------------------------------------------------- stuff1 %% ¶stuff2 ##! (ess-climb-operator) stuff1¶ %% stuff2 ##### Bare blocks ### 1 ---------------------------------------------------------------- function_call() ¶ ##! (ess-climb-block-prefix) function_call() ¶ ##! (ess-climb-block-prefix "function") function_call() ¶ ### 2 ---------------------------------------------------------------- ¶if (test1) stuff1 if (test2) stuff2 ##! (ess-jump-expression) if (test1) stuff1¶ if (test2) stuff2 ess-17.11/test/literate/tokens.R0000644005071500004540000002100613202324175013457 00000000000000 ##### Jumping/Climbing tokens ### 1 Strings and backquoted names ----------------------------------- ¶`a"a"a` "a`a`a" ##! (should (token= "identifier" "`a\"a\"a`")) `a"a"a`¶ "a`a`a" ##> (should (token= "string" "\"a`a`a\"")) `a"a"a` "a`a`a"¶ ### 2 Identifiers ---------------------------------------------------- ¶.a_a a10 ##! (should (token= "identifier" ".a_a")) .a_a¶ a10 ##> (should (token= "identifier" "a10")) .a_a a10¶ ### 3 Numbers -------------------------------------------------------- ¶100 1E10 1e10 1.10 ##! (should (token= "number" "100")) 100¶ 1E10 1e10 1.10 ##> (should (token= "number" "1E10")) 100 1E10¶ 1e10 1.10 ##> (should (token= "number" "1e10")) 100 1E10 1e10¶ 1.10 ##> (should (token= "number" "1.10")) 100 1E10 1e10 1.10¶ ### 4 Delimiters ----------------------------------------------------- ¶() a[[[]]] {} ##! (should (token= "(")) (¶) a[[[]]] {} ##> (should (token= ")")) ()¶ a[[[]]] {} ##> (ess-jump-token) ##> (should (token= "[[")) () a[[¶[]]] {} ##> (should (ess-jump-token "[")) ##> (should (ess-token-before= "[[")) () a[[[¶]]] {} ##> (should (token= "]]")) () a[[[]]¶] {} ##> (should (ess-jump-token "]")) ##> (should (ess-token-before= "]]")) () a[[[]]]¶ {} ##> (should (token= "{")) () a[[[]]] {¶} ##> (should (token= "}")) () a[[[]]] {}¶ ### 5 Buffer boundaries ¶ ##! (should (ess-token-before= "buffer-start")) ##! (should (ess-token-after= "buffer-end")) ¶ ### 6 Punctuation ¶.; ., ##! (ess-jump-token) ##! (should (token= ";")) .;¶ ., ##> (ess-jump-token) ##> (should (token= ",")) .; .,¶ ### 7 Keywords ¶if if_else else function while for ##! (should (token= "if")) ##! (should (token= "identifier" "if_else")) ##! (should (token= "else")) ##! (should (token= "function")) ##! (should (token= "while")) ##! (should (token= "for")) if if_else else function while for¶ ##### Jumping/Climbing operator tokens ### 1 Logical operators ---------------------------------------------- ¶a & a && a &&& a | a || a ||| a ##! (ess-jump-token) ##! (should (token= "&")) a &¶ a && a &&& a | a || a ||| a ##> (ess-jump-token) ##> (should (token= "&&")) a & a &&¶ a &&& a | a || a ||| a ##> (ess-jump-token) ##> (should (token= "&&")) a & a && a &&¶& a | a || a ||| a ##> (should (ess-jump-token "&")) ##> (should (ess-token-before= "&&")) a & a && a &&&¶ a | a || a ||| a ##> (ess-jump-token) ##> (should (token= "|")) a & a && a &&& a |¶ a || a ||| a ##> (ess-jump-token) ##> (should (token= "||")) a & a && a &&& a | a ||¶ a ||| a ##> (ess-jump-token) ##> (should (token= "||")) a & a && a &&& a | a || a ||¶| a ##> (should (ess-jump-token "|")) ##> (should (ess-token-before= "||")) a & a && a &&& a | a || a |||¶ a ### 2 Equality / equal operators ------------------------------------- ¶a = a := a == a === a :== a != a :!= a ##! (ess-jump-token) ##! (should (token= "=")) a =¶ a := a == a === a :== a != a :!= a ##> (ess-jump-token) ##> (should (token= ":=")) a = a :=¶ a == a === a :== a != a :!= a ##> (ess-jump-token) ##> (should (token= "==")) a = a := a ==¶ a === a :== a != a :!= a ##> (ess-jump-token) ##> (should (token= "==")) a = a := a == a ==¶= a :== a != a :!= a ##> (should (ess-jump-token "=")) ##> (should (ess-token-before= "==")) a = a := a == a ===¶ a :== a != a :!= a ##> (ess-jump-token) ##> (should (token= ":=")) a = a := a == a === a :=¶= a != a :!= a ##> (should (ess-jump-token "=")) ##> (should (ess-token-before= "==")) a = a := a == a === a :==¶ a != a :!= a ##> (ess-jump-token) ##> (should (token= "!=")) a = a := a == a === a :== a !=¶ a :!= a ##> (ess-jump-token) ##> (should (token= ":")) a = a := a == a === a :== a != a :¶!= a ##> (should (token= "!=")) a = a := a == a === a :== a != a :!=¶ a ### 3 %% operators --------------------------------------------------- ¶a %>% a %a`a`a"a"a$a@a% a %% a %%% a % a ##! (ess-jump-token) ##! (should (token= "%infix%" "%>%")) a %>%¶ a %a`a`a"a"a$a@a% a %% a %%% a % a ##> (ess-jump-token) ##> (should (token= "%infix%" "%a`a`a\"a\"a$a@a%")) a %>% a %a`a`a"a"a$a@a%¶ a %% a %%% a % a ##> (ess-jump-token) ##> (should (token= "%%")) a %>% a %a`a`a"a"a$a@a% a %%¶ a %%% a % a ##> (ess-jump-token) ##> (should (token= "%%")) a %>% a %a`a`a"a"a$a@a% a %% a %%¶% a % a ##> (should (token= "%infix%" "% a %")) a %>% a %a`a`a"a"a$a@a% a %% a %%% a %¶ a ### 4 Arithmetic operators ------------------------------------------- ¶a + a - a - -a * a ** a ^ a ^ ++a ##! (ess-jump-token) ##! (should (token= "+")) a +¶ a - a - -a * a ** a ^ a ^ ++a ##> (ess-jump-token) ##> (should (token= "-")) a + a -¶ a - -a * a ** a ^ a ^ ++a ##> (ess-jump-token) ##> (should (token= "-")) a + a - a -¶ -a * a ** a ^ a ^ ++a ##> (should (token= "-")) a + a - a - -¶a * a ** a ^ a ^ ++a ##> (ess-jump-token) ##> (should (token= "*")) a + a - a - -a *¶ a ** a ^ a ^ ++a ##> (ess-jump-token) ##> (should (token= "**")) a + a - a - -a * a **¶ a ^ a ^ ++a ##> (ess-jump-token) ##> (should (token= "^")) a + a - a - -a * a ** a ^¶ a ^ ++a ##> (ess-jump-token) ##> (should (token= "^")) a + a - a - -a * a ** a ^ a ^¶ ++a ##> (should (token= "+")) a + a - a - -a * a ** a ^ a ^ +¶+a ##> (should (token= "+")) a + a - a - -a * a ** a ^ a ^ ++¶a ### 5 : operators ---------------------------------------------------- ¶a: a:: a::: a:::: a:::= ##! (ess-jump-token) ##! (should (token= ":")) a:¶ a:: a::: a:::: a:::= ##> (ess-jump-token) ##> (should (token= "::")) a: a::¶ a::: a:::: a:::= ##> (ess-jump-token) ##> (should (token= ":::")) a: a:: a:::¶ a:::: a:::= ##> (ess-jump-token) ##> (should (token= ":::")) a: a:: a::: a:::¶: a:::= ##> (should (ess-jump-token ":")) ##> (should (ess-token-before= ":::")) a: a:: a::: a::::¶ a:::= ##> (ess-jump-token) ##> (should (token= ":::")) a: a:: a::: a:::: a:::¶= ### 6 Assignment operators ------------------------------------------- ¶a <- a <<- a -> > a ->> a >> a ##! (ess-jump-token) ##! (should (token= "<-")) a <-¶ a <<- a -> > a ->> a >> a ##> (ess-jump-token) ##> (should (token= "<<-")) a <- a <<-¶ a -> > a ->> a >> a ##> (ess-jump-token) ##> (should (token= "->")) a <- a <<- a ->¶ > a ->> a >> a ##> (should (token= ">")) a <- a <<- a -> >¶ a ->> a >> a ##> (ess-jump-token) ##> (should (token= "->>")) a <- a <<- a -> > a ->>¶ a >> a ##> (ess-jump-token) ##> (should (token= ">")) ##> (should (token= ">")) a <- a <<- a -> > a ->> a >>¶ a ### 7 Inequality operators ------------------------------------------- ¶a < > a >= a > = a <= ##! (ess-jump-token) ##! (should (token= "<")) a <¶ > a >= a > = a <= ##> (should (token= ">")) a < >¶ a >= a > = a <= ##> (ess-jump-token) ##> (should (token= ">=")) a < > a >=¶ a > = a <= ##> (ess-jump-token) ##> (should (token= ">")) a < > a >= a >¶ = a <= ##> (should (token= "=")) a < > a >= a > =¶ a <= ##> (ess-jump-token) ##> (should (token= "<=")) a < > a >= a > = a <=¶ ### 8 Special operators ---------------------------------------------- ¶~a~~a ##! (should (token= "~")) ~¶a~~a ##> (ess-jump-token) ##> (should (token= "~")) ##> (should (token= "~")) ~a~~¶a ##### Token refinement ### 1 Parameter assignment ------------------------------------------- call(param ¶= NULL) ##! (should (token= "=")) ##! (should (ess-refined-token= (ess-token-before) "param-assign")) call(param =¶ NULL) ### 2 Quoted parameter names ----------------------------------------- call(¶"param" = NULL) ##! (should (token= "string" "\"param\"")) ##! (should (ess-refined-token= (ess-token-before) "identifier")) call("param"¶ = NULL) ### 2 Quoted call names ---------------------------------------------- ¶"call"() ##! (should (token= "string" "\"call\"")) ##! (should (ess-refined-token= (ess-token-before) "identifier")) "call"¶() ##### Blanks, Characters and Comments ### 1 ---------------------------------------------------------------- text¶ text ##! (ess-skip-blanks-forward t) text ¶text ### 2 ---------------------------------------------------------------- text¶ # comment ##! (when (not (ess-skip-blanks-forward t)) ##! (insert "failure")) text ¶# comment ##> (when (ess-skip-blanks-forward t) ##> (insert "failure")) text ¶# comment ### 3 ---------------------------------------------------------------- text ¶text ##! (ess-skip-blanks-backward) text ¶text ##! (ess-skip-blanks-backward t) text¶ text ### 4 Form Feed character -------------------------------------------- text ¶text ##! (ess-skip-blanks-backward t) text¶ text ess-17.11/test/literate/tokens.el0000644005071500004540000000035613202324175013663 00000000000000 (defun token= (type &optional value) "Check that the next token conforms to TYPE and VALUE. This checks it back and forth and moves the point after the token." (and (ess-jump-token type value) (ess-token-before= type value))) ess-17.11/test/run-tests0000755005071500004540000000165013202324175012115 00000000000000#!/usr/bin/emacs --script ;; This script must be run from the test directory ;; With no argument, run all tests. Otherwise run only mentioned tests. ;; Possible arguments: --rstats --rstats-indent (let ((current-directory (file-name-directory load-file-name))) (setq ess-test-path (expand-file-name "." current-directory)) (setq ess-root-path (expand-file-name "../lisp/" current-directory))) (add-to-list 'load-path ess-root-path) (add-to-list 'load-path ess-test-path) (require 'ess-site) (when (= (length argv) 0) (setq argv '("--inf" "--rstats" "--rstats-indent"))) (when (member "--inf" argv) (load (expand-file-name "ess-inf-tests.el" ess-test-path) nil t)) (when (member "--rstats" argv) (load (expand-file-name "ess-r-tests.el" ess-test-path) nil t)) (when (member "--rstats-indent" argv) (load (expand-file-name "ess-indentation-tests.el" ess-test-path) nil t)) ;; run tests (ert-run-tests-batch-and-exit t) ess-17.11/test/styles/0000755005071500004540000000000013202324175011624 500000000000000ess-17.11/test/styles/C++.R0000644005071500004540000003433713202324175012211 00000000000000 ### Function declarations ## 1 { fun <- function(argument1, argument2) { body } } ## 2 { function( argument1, argument2 ) { body } } ## 3 function(argument_fun(sub_argument1, sub_argument2), argument) {} ## 4 function(argument1, parameter = fun_call( sub_argument), argument2) {} ## 5 function() function() body ## 6a object <- function() { body } ## 6b object <- function() { body } ## 6c object = function() { body } ## 6d fun_call(argument) <- function() { body } ## 7 { object <- function() { body } } ## 8 { fun_call(parameter = function() { body }) } ## 9 { fun_call(parameter = function() { body }) } ## 10 fun_call( function() { stuff } ) ## 11 { fun_call1(fun_call2(argument, function() { stuff }) ) } ## 12 { fun_call1(argument, fun_call2(function() { stuff }) ) } ## 13 fun_call(object := function() { body }) ## 14 fun_call(argument, function(x) stuff ) ## 15a `object` <- function() { body } ## 15b "object" <- function() { body } ## 15c 'object' <- function() { body } ### Function calls ## 1 fun_call(argument1, argument2) ## 2 fun_call( argument1, argument2 ) ## 3 fun_call(parameter = ( stuff ), argument) ## 4 fun_call(parameter = fun_argument( argument1 ), argument2) ## 5 fun_call(parameter = fun_argument(argument1, argument2 ) , argument3) ## 6 `fun_call`(argument1, argument2) ## 6b `:=`(argument1, argument2) ## 7 `fun_call`( argument1, argument2 ) ## 7b `:=`( argument1, argument2 ) ## 8 fun_call(argument1 , argument2 , argument3, argument4, ( stuff1 ), argument5, ( stuff2 ) , argument6 ) ## 9 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 10 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 11 { fun_call1( fun_call2 (argument1, argument2, parameter = fun_call3( argument3, argument4 ), function(x) { body }, argument5, fun_call4( argument6 ), argument7 ), { stuff }, argument8 ) } ## 12 object <- fun_call( arg1, arg2 ) ## 13 fun_call1(fun_call2( argument )) ## 14 some_function <- fun_call1(fun_call2( argument )) ## 15 object[, fun_call( argument )] ## 16 fun_call1(argument1, fun_call2(fun_call3( argument2 )) ) ## 17 fun_call({ stuff1 stuff2 stuff3 }) ## 18 fun_call(argument1 %>% stuff, argument2) ## 19 fun_call(argument, ) ## 20 fun_call(parameter1 = , parameter2 = argument) ### Blocks ## 1 { function() { body } } ## 2 { fun_call({ stuff1 }, { stuff2 } ) } ## 3 fun_call({ stuff1 }, { stuff2 }) ## 4 fun_call( parameter1 = { stuff1 }, parameter2 = { stuff2 } ) ## 5 fun_call(parameter1 = { stuff1 }, { stuff2 }, parameter2 = { stuff3 }, { stuff4 }, parameter3 = stuff5 ~ stuff6 + stuff7, argument) ## 6 fun <- fun_call({ stuff1 }, { stuff2 }, { stuff3 } ) ## 7 fun <- fun_call({ stuff }, argument ) ## 8 fun_call(function(x) { body1 }, function(x) { body2 }) ## 9 fun_call( { stuff }, { stuff } ) ## 10 object <- fun_call({ stuff }, { stuff }) ## 11 object <- fun_call( { body } ) ## 12 fun_call1( fun_call2({ stuff } ) ) ## 13 { stuff1 { stuff2 } } ## 14 {{ stuff } } ## 15 ({ stuff }) ## 16 ( { stuff } ) ## 17 fun_call(argument, function(argument1, argument2) { body } ) ## 18 fun_call( argument, function(argument1, argument2) { body } ) ## 19 fun_call1( fun_call2(argument, function(x) { body }) ) ## 20 fun_call1({ object1 <- fun_call2( argument) object2 }) ## 21 fun_call(argument, function() { stuff } } ## 22 function_call() stuff ### Bracket indexing ## 1 object[ argument1, argument2 ] ## 2 object[argument1, argument2 ] ## 3 object[( argument1 )] ## 4 { object[ fun_call( body ), argument[ ( sub_argument ) ] ] } ## 5 { object[ argument1, argument2, by = argument3 ][ argument4, fun_call1(argument1, argument2) argument5 ][ argument6, fun_call2( argument1, argument2 ) ] } ### Control flow ## 1 { if (condition) { stuff1 } else { stuff2 } } ## 2 { if (condition) { stuff1 } else { stuff2 } } ## 3 { if (condition) { stuff1 } else { stuff2 } } ## 4 { if (condition) { stuff1 } else { stuff2 } } ## 5 { for (sequence) { stuff } } ## 6 { for (sequence) { stuff } } ## 7 if (condition) stuff ## 8 for (sequence) stuff ## 9 object <- if (condition) { stuff1 } else { stuff2 } ## 10 { object <- if (condition) stuff1 else stuff2 } ## 10 { object <- if (condition) fun_call( argument1, argument2 ) else stuff } ## 11 { fun_call(parameter = if (condition) stuff1 else stuff2 ) } ## 12 { if (condition1) { stuff1 } else if (condition2) stuff2 else if (condition3) { stuff3 } else if (condition4) stuff4 else stuff5 } ## 13 fun_call( argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 14 fun_call( argument, parameter = if (condition1) stuff1 else if (condition2) stuff3 else stuff2 ) ## 15 object <- fun_call(argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 16 object <- fun_call(argument, if (condition) stuff1 else if (condition2) stuff2 ) ## 17 while(condition) stuff ## 18 if (condition1) stuff1 else if (condition2) { stuff2 } ## 19 object <- if (condition) fun_call()[index] else stuff ## 20 funcall({ if (test1) stuff1 if (test2) stuff2 }) ## 21 fun_call(argument, function() { if (cond) object1 <- object2 else object3 <- object4 }) ## 22 if (cond1) if (cond2) if (cond3) stuff1 else if (cond4) stuff2 else if (cond5) stuff3 else stuff4 else if (cond6) stuff5 else if (cond7) stuff6 else stuff7 else if (cond8) stuff8 else if (cond9) stuff9 else stuff10 ## 23 if (cond1) if (cond2) for (sequence1) if (cond3) stuff1 else stuff2 else if (cond4) for (sequence2) stuff3 else if (cond5) fun_call( argument ) else stuff5 else stuff6 ## 24 object <- if(cond) stuff1 else stuff2 ## 25 if (condition) { (stuff) } ## 26 { if (condition1) stuff1 else if (condition2) { stuff2 } else if (condition3) stuff3 } ## 27 object <- if (condition) { stuff1 } else { stuff2 } ## 28 if (condition) object <- stuff ## 29 if (condition1) object <- if (condition2) stuff1 else stuff2 else stuff3 ### Continuation lines ## 1 stuff1 %>% stuff2 %>% stuff3 ## 2 { stuff1 %>% stuff2 %>% stuff3 } %>% stuff4 %>% stuff5 ## 3 ( stuff1 %>% stuff2 %>% stuff3 ) %>% stuff4 %>% stuff5 ## 4 object[ stuff1 %>% stuff2 %>% stuff3 ] %>% stuff4 %>% stuff5 ## 5 stuff1 %>% stuff2 %>% if (condition) { stuff3 %>% stuff4 %>% stuff5 } else { stuff6 %>% stuff7 %>% stuff8 } %>% stuff9 %>% stuff10 ## 6 stuff[stuff1 %>% stuff2 %>% stuff3] %>% stuff4 %>% stuff5 ## 7 ggplot() + geom(lhs - rhs ) + geom() ## 8 { ggplot() + geom1(argument1, argument2 = ( stuff1 ) - stuff2) + geom2() + geom3() } ## 9 stuff + fun_call(parameter = argument1, fun_call((stuff1 - stuff2 + stuff3 ) / stuff4) ) / stuff5 fun_call(arg1 + arg2, arg3 + arg4) ## 10 fun_call(argument1 %>% stuff1, argument2 %>% stuff2, { stuff3 %>% stuff4 } %>% stuff5, argument3 ) ## 11 object1 <- object2 %>% fun_call1() %>% fun_call2() ## 12 object1 <- object2%>%fun_call1() %>% fun_call2()%>% fun_call3() ## 13 { (stuff) %>% fun_call() {stuff} %>% fun_call() } ## 14 { object + ( stuff ) %>% fun_call() object + { stuff } %>% fun_call() } ## 15 object <- stuff1 + stuff2 ~ stuff3 + stuff4 := stuff5 + stuff6 = stuff7 + stuff8 ## 16 object <- stuff1 + stuff2 + stuff3 + stuff4 ~ stuff5 + stuff6 + stuff7 + stuff8 := stuff9 + stuff10 + stuff11 + stuff12 = stuff13 + stuff14 + stuff15 + stuff16 ## 17 object %>% { stuff1 } %>% object[index] %>% {stuff2} %>% fun_call1() + {if (condition1) stuff3 else stuff4} + if (condition2) { stuff5 } else if (condition3) { stuff6 } else { stuff7 } %>% (fun_call2()) %>% fun_call3() %>% fun_call3() ## 18 `object`$`elem` <- stuff1 + stuff2 `object`@`elem` <- stuff1 + stuff2 ## 19 { ## comment object1 <- object2 } ## 20 fun_call(stuff1 + stuff2 + stuff3 + (stuff4 + stuff5 + stuff6) + object[stuff7 + stuff8] + {stuff9 + stuff10}) ## 21 object %>% fun_call({ stuff1 }) %>% stuff2 ## 22 "string1" %>% 'string2' %>% `stuff1` %>% stuff2 ## 23 object[index] %>% fun_call1( argument1 )[index2] %>% fun_call2( argument2 )[[index3]] %>% stuff ## 24 fun_call(argument) <- hop ## 25 fun_call1(argument, fun_call2( stuff1 ) + stuff2) ## 26 object <- { stuff1 } %>% ( stuff2 ) ## 27 fun_call1(fun_call2(fun_call3( argument ))) %>% fun_call2() ## 28 fun_call(argument1 %>% stuff, argument2) ## 29 fun_call(stuff1 := (stuff2), argument) ## 30 fun_call1(fun_call2( fun_call3()) %>% stuff) ## 31 fun_call(object1 + object2 ~ object3 + object4 + object5 := object6 + object7, argument) ## 32 fun_call(object ~ ) ## 33 fun_call(object + ) ## 34 fun_call(object[index1]$element[index2][index3]@attribute + stuff) ## 35a fun_call(argument <- object) ## 35b fun_call(argument <<- object) ## 36 funcall(!stuff1 || stuff2) ### Comments ## 1 # Side comment ## 2 { ## Hanging comment 1 fun_call( { ## Hanging comment 2 } ) } ## 3 { ### Section comment } ## 4 fun_call( ## Comment argument ) ## 5 object %>% ## comment, ## comment stuff ## 6a object <- function() { stuff ## comment } ## 6b object <- function() { ## comment } ## 7 { fun_call(lhs + ### Comment rhs ) } ## 8 "#" + # comment NULL ## 9 "* #" x ### Logical operators ## 1 stuff1 && stuff2 || stuff3 ## 2 (stuff1 && stuff2 || stuff3) ## 3 if (condition1 && condition2 || (condition3 && condition4) || (condition5 && condition6 && condition7) || condition8) { stuff } && condition8 || condition9 || condition10 ## 4 stuff1 == stuff2 || condition ## 5 (stuff1 == stuff2 || condition ) ## 6 (stuff1 != stuff2 || condition ) ## 7 object <- condition1 | condition2 | condition3 | condition4 ## 8 if (condition1 || object1 %op% object2 || condition3) { stuff } ## 9 any(condition1 | condition2) && all(condition3 & condition4) ### Specific situations and overrides ## 1 fun_call( ifelse(condition1, argument1, ifelse(condition2, argument2, ifelse)) ) ess-17.11/test/styles/RRR+.R0000644005071500004540000003731213202324175012415 00000000000000 ### Function declarations ## 1 { fun <- function(argument1, argument2) { body } } ## 2 { function( argument1, argument2 ) { body } } ## 3 function(argument_fun(sub_argument1, sub_argument2), argument) {} ## 4 function(argument1, parameter = fun_call( sub_argument), argument2) {} ## 5 function() function() body ## 6a object <- function() { body } ## 6b object <- function() { body } ## 6c object = function() { body } ## 6d fun_call(argument) <- function() { body } ## 7 { object <- function() { body } } ## 8 { fun_call(parameter = function() { body }) } ## 9 { fun_call(parameter = function() { body }) } ## 10 fun_call( function() { stuff } ) ## 11 { fun_call1(fun_call2(argument, function() { stuff }) ) } ## 12 { fun_call1(argument, fun_call2(function() { stuff }) ) } ## 13 fun_call(object := function() { body }) ## 14 fun_call(argument, function(x) stuff ) ## 15a `object` <- function() { body } ## 15b "object" <- function() { body } ## 15c 'object' <- function() { body } ### Function calls ## 1 fun_call(argument1, argument2) ## 2 fun_call( argument1, argument2 ) ## 3 fun_call(parameter = ( stuff ), argument) ## 4 fun_call(parameter = fun_argument( argument1 ), argument2) ## 5 fun_call(parameter = fun_argument(argument1, argument2 ) , argument3) ## 6 `fun_call`(argument1, argument2) ## 6b `:=`(argument1, argument2) ## 7 `fun_call`( argument1, argument2 ) ## 7b `:=`( argument1, argument2 ) ## 8 fun_call(argument1 , argument2 , argument3, argument4, ( stuff1 ), argument5, ( stuff2 ) , argument6 ) ## 9 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 10 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 11 { fun_call1( fun_call2 (argument1, argument2, parameter = fun_call3( argument3, argument4 ), function(x) { body }, argument5, fun_call4( argument6 ), argument7 ), { stuff }, argument8 ) } ## 12 object <- fun_call( arg1, arg2 ) ## 13 fun_call1(fun_call2( argument )) ## 14 some_function <- fun_call1(fun_call2( argument )) ## 15 object[, fun_call( argument )] ## 16 fun_call1(argument1, fun_call2(fun_call3( argument2 )) ) ## 17 fun_call({ stuff1 stuff2 stuff3 }) ## 18 fun_call(argument1 %>% stuff, argument2) ## 19 fun_call(argument, ) ## 20 fun_call(parameter1 = , parameter2 = argument) ### Blocks ## 1 { function() { body } } ## 2 { fun_call({ stuff1 }, { stuff2 } ) } ## 3 fun_call({ stuff1 }, { stuff2 }) ## 4 fun_call( parameter1 = { stuff1 }, parameter2 = { stuff2 } ) ## 5 fun_call(parameter1 = { stuff1 }, { stuff2 }, parameter2 = { stuff3 }, { stuff4 }, parameter3 = stuff5 ~ stuff6 + stuff7, argument) ## 6 fun <- fun_call({ stuff1 }, { stuff2 }, { stuff3 } ) ## 7 fun <- fun_call({ stuff }, argument ) ## 8 fun_call(function(x) { body1 }, function(x) { body2 }) ## 9 fun_call( { stuff }, { stuff } ) ## 10 object <- fun_call({ stuff }, { stuff }) ## 11 object <- fun_call( { body } ) ## 12 fun_call1( fun_call2({ stuff } ) ) ## 13 { stuff1 { stuff2 } } ## 14 {{ stuff } } ## 15 ({ stuff }) ## 16 ( { stuff } ) ## 17 fun_call(argument, function(argument1, argument2) { body } ) ## 18 fun_call( argument, function(argument1, argument2) { body } ) ## 19 fun_call1( fun_call2(argument, function(x) { body }) ) ## 20 fun_call1({ object1 <- fun_call2( argument) object2 }) ## 21 fun_call(argument, function() { stuff } } ## 22 function_call() stuff ### Bracket indexing ## 1 object[ argument1, argument2 ] ## 2 object[argument1, argument2 ] ## 3 object[( argument1 )] ## 4 { object[ fun_call( body ), argument[ ( sub_argument ) ] ] } ## 5 { object[ argument1, argument2, by = argument3 ][ argument4, fun_call1(argument1, argument2) argument5 ][ argument6, fun_call2( argument1, argument2 ) ] } ### Control flow ## 1 { if (condition) { stuff1 } else { stuff2 } } ## 2 { if (condition) { stuff1 } else { stuff2 } } ## 3 { if (condition) { stuff1 } else { stuff2 } } ## 4 { if (condition) { stuff1 } else { stuff2 } } ## 5 { for (sequence) { stuff } } ## 6 { for (sequence) { stuff } } ## 7 if (condition) stuff ## 8 for (sequence) stuff ## 9 object <- if (condition) { stuff1 } else { stuff2 } ## 10 { object <- if (condition) stuff1 else stuff2 } ## 10 { object <- if (condition) fun_call( argument1, argument2 ) else stuff } ## 11 { fun_call(parameter = if (condition) stuff1 else stuff2 ) } ## 12 { if (condition1) { stuff1 } else if (condition2) stuff2 else if (condition3) { stuff3 } else if (condition4) stuff4 else stuff5 } ## 13 fun_call( argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 14 fun_call( argument, parameter = if (condition1) stuff1 else if (condition2) stuff3 else stuff2 ) ## 15 object <- fun_call(argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 16 object <- fun_call(argument, if (condition) stuff1 else if (condition2) stuff2 ) ## 17 while(condition) stuff ## 18 if (condition1) stuff1 else if (condition2) { stuff2 } ## 19 object <- if (condition) fun_call()[index] else stuff ## 20 funcall({ if (test1) stuff1 if (test2) stuff2 }) ## 21 fun_call(argument, function() { if (cond) object1 <- object2 else object3 <- object4 }) ## 22 if (cond1) if (cond2) if (cond3) stuff1 else if (cond4) stuff2 else if (cond5) stuff3 else stuff4 else if (cond6) stuff5 else if (cond7) stuff6 else stuff7 else if (cond8) stuff8 else if (cond9) stuff9 else stuff10 ## 23 if (cond1) if (cond2) for (sequence1) if (cond3) stuff1 else stuff2 else if (cond4) for (sequence2) stuff3 else if (cond5) fun_call( argument ) else stuff5 else stuff6 ## 24 object <- if(cond) stuff1 else stuff2 ## 25 if (condition) { (stuff) } ## 26 { if (condition1) stuff1 else if (condition2) { stuff2 } else if (condition3) stuff3 } ## 27 object <- if (condition) { stuff1 } else { stuff2 } ## 28 if (condition) object <- stuff ## 29 if (condition1) object <- if (condition2) stuff1 else stuff2 else stuff3 ### Continuation lines ## 1 stuff1 %>% stuff2 %>% stuff3 ## 2 { stuff1 %>% stuff2 %>% stuff3 } %>% stuff4 %>% stuff5 ## 3 ( stuff1 %>% stuff2 %>% stuff3 ) %>% stuff4 %>% stuff5 ## 4 object[ stuff1 %>% stuff2 %>% stuff3 ] %>% stuff4 %>% stuff5 ## 5 stuff1 %>% stuff2 %>% if (condition) { stuff3 %>% stuff4 %>% stuff5 } else { stuff6 %>% stuff7 %>% stuff8 } %>% stuff9 %>% stuff10 ## 6 stuff[stuff1 %>% stuff2 %>% stuff3] %>% stuff4 %>% stuff5 ## 7 ggplot() + geom(lhs - rhs ) + geom() ## 8 { ggplot() + geom1(argument1, argument2 = ( stuff1 ) - stuff2) + geom2() + geom3() } ## 9 stuff + fun_call(parameter = argument1, fun_call((stuff1 - stuff2 + stuff3 ) / stuff4) ) / stuff5 fun_call(arg1 + arg2, arg3 + arg4) ## 10 fun_call(argument1 %>% stuff1, argument2 %>% stuff2, { stuff3 %>% stuff4 } %>% stuff5, argument3 ) ## 11 object1 <- object2 %>% fun_call1() %>% fun_call2() ## 12 object1 <- object2%>%fun_call1() %>% fun_call2()%>% fun_call3() ## 13 { (stuff) %>% fun_call() {stuff} %>% fun_call() } ## 14 { object + ( stuff ) %>% fun_call() object + { stuff } %>% fun_call() } ## 15 object <- stuff1 + stuff2 ~ stuff3 + stuff4 := stuff5 + stuff6 = stuff7 + stuff8 ## 16 object <- stuff1 + stuff2 + stuff3 + stuff4 ~ stuff5 + stuff6 + stuff7 + stuff8 := stuff9 + stuff10 + stuff11 + stuff12 = stuff13 + stuff14 + stuff15 + stuff16 ## 17 object %>% { stuff1 } %>% object[index] %>% {stuff2} %>% fun_call1() + {if (condition1) stuff3 else stuff4} + if (condition2) { stuff5 } else if (condition3) { stuff6 } else { stuff7 } %>% (fun_call2()) %>% fun_call3() %>% fun_call3() ## 18 `object`$`elem` <- stuff1 + stuff2 `object`@`elem` <- stuff1 + stuff2 ## 19 { ## comment object1 <- object2 } ## 20 fun_call(stuff1 + stuff2 + stuff3 + (stuff4 + stuff5 + stuff6) + object[stuff7 + stuff8] + {stuff9 + stuff10}) ## 21 object %>% fun_call({ stuff1 }) %>% stuff2 ## 22 "string1" %>% 'string2' %>% `stuff1` %>% stuff2 ## 23 object[index] %>% fun_call1( argument1 )[index2] %>% fun_call2( argument2 )[[index3]] %>% stuff ## 24 fun_call(argument) <- hop ## 25 fun_call1(argument, fun_call2( stuff1 ) + stuff2) ## 26 object <- { stuff1 } %>% ( stuff2 ) ## 27 fun_call1(fun_call2(fun_call3( argument ))) %>% fun_call2() ## 28 fun_call(argument1 %>% stuff, argument2) ## 29 fun_call(stuff1 := (stuff2), argument) ## 30 fun_call1(fun_call2( fun_call3()) %>% stuff) ## 31 fun_call(object1 + object2 ~ object3 + object4 + object5 := object6 + object7, argument) ## 32 fun_call(object ~ ) ## 33 fun_call(object + ) ## 34 fun_call(object[index1]$element[index2][index3]@attribute + stuff) ## 35a fun_call(argument <- object) ## 35b fun_call(argument <<- object) ## 36 funcall(!stuff1 || stuff2) ### Comments ## 1 # Side comment ## 2 { ## Hanging comment 1 fun_call( { ## Hanging comment 2 } ) } ## 3 { ### Section comment } ## 4 fun_call( ## Comment argument ) ## 5 object %>% ## comment, ## comment stuff ## 6a object <- function() { stuff ## comment } ## 6b object <- function() { ## comment } ## 7 { fun_call(lhs + ### Comment rhs ) } ## 8 "#" + # comment NULL ## 9 "* #" x ### Logical operators ## 1 stuff1 && stuff2 || stuff3 ## 2 (stuff1 && stuff2 || stuff3) ## 3 if (condition1 && condition2 || (condition3 && condition4) || (condition5 && condition6 && condition7) || condition8) { stuff } && condition8 || condition9 || condition10 ## 4 stuff1 == stuff2 || condition ## 5 (stuff1 == stuff2 || condition ) ## 6 (stuff1 != stuff2 || condition ) ## 7 object <- condition1 | condition2 | condition3 | condition4 ## 8 if (condition1 || object1 %op% object2 || condition3) { stuff } ## 9 any(condition1 | condition2) && all(condition3 & condition4) ### Specific situations and overrides ## 1 fun_call( ifelse(condition1, argument1, ifelse(condition2, argument2, ifelse)) ) ess-17.11/test/styles/RRR.R0000644005071500004540000003473713202324175012352 00000000000000 ### Function declarations ## 1 { fun <- function(argument1, argument2) { body } } ## 2 { function( argument1, argument2 ) { body } } ## 3 function(argument_fun(sub_argument1, sub_argument2), argument) {} ## 4 function(argument1, parameter = fun_call( sub_argument), argument2) {} ## 5 function() function() body ## 6a object <- function() { body } ## 6b object <- function() { body } ## 6c object = function() { body } ## 6d fun_call(argument) <- function() { body } ## 7 { object <- function() { body } } ## 8 { fun_call(parameter = function() { body }) } ## 9 { fun_call(parameter = function() { body }) } ## 10 fun_call( function() { stuff } ) ## 11 { fun_call1(fun_call2(argument, function() { stuff }) ) } ## 12 { fun_call1(argument, fun_call2(function() { stuff }) ) } ## 13 fun_call(object := function() { body }) ## 14 fun_call(argument, function(x) stuff ) ## 15a `object` <- function() { body } ## 15b "object" <- function() { body } ## 15c 'object' <- function() { body } ### Function calls ## 1 fun_call(argument1, argument2) ## 2 fun_call( argument1, argument2 ) ## 3 fun_call(parameter = ( stuff ), argument) ## 4 fun_call(parameter = fun_argument( argument1 ), argument2) ## 5 fun_call(parameter = fun_argument(argument1, argument2 ) , argument3) ## 6 `fun_call`(argument1, argument2) ## 6b `:=`(argument1, argument2) ## 7 `fun_call`( argument1, argument2 ) ## 7b `:=`( argument1, argument2 ) ## 8 fun_call(argument1 , argument2 , argument3, argument4, ( stuff1 ), argument5, ( stuff2 ) , argument6 ) ## 9 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 10 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 11 { fun_call1( fun_call2 (argument1, argument2, parameter = fun_call3( argument3, argument4 ), function(x) { body }, argument5, fun_call4( argument6 ), argument7 ), { stuff }, argument8 ) } ## 12 object <- fun_call( arg1, arg2 ) ## 13 fun_call1(fun_call2( argument )) ## 14 some_function <- fun_call1(fun_call2( argument )) ## 15 object[, fun_call( argument )] ## 16 fun_call1(argument1, fun_call2(fun_call3( argument2 )) ) ## 17 fun_call({ stuff1 stuff2 stuff3 }) ## 18 fun_call(argument1 %>% stuff, argument2) ## 19 fun_call(argument, ) ## 20 fun_call(parameter1 = , parameter2 = argument) ### Blocks ## 1 { function() { body } } ## 2 { fun_call({ stuff1 }, { stuff2 } ) } ## 3 fun_call({ stuff1 }, { stuff2 }) ## 4 fun_call( parameter1 = { stuff1 }, parameter2 = { stuff2 } ) ## 5 fun_call(parameter1 = { stuff1 }, { stuff2 }, parameter2 = { stuff3 }, { stuff4 }, parameter3 = stuff5 ~ stuff6 + stuff7, argument) ## 6 fun <- fun_call({ stuff1 }, { stuff2 }, { stuff3 } ) ## 7 fun <- fun_call({ stuff }, argument ) ## 8 fun_call(function(x) { body1 }, function(x) { body2 }) ## 9 fun_call( { stuff }, { stuff } ) ## 10 object <- fun_call({ stuff }, { stuff }) ## 11 object <- fun_call( { body } ) ## 12 fun_call1( fun_call2({ stuff } ) ) ## 13 { stuff1 { stuff2 } } ## 14 {{ stuff } } ## 15 ({ stuff }) ## 16 ( { stuff } ) ## 17 fun_call(argument, function(argument1, argument2) { body } ) ## 18 fun_call( argument, function(argument1, argument2) { body } ) ## 19 fun_call1( fun_call2(argument, function(x) { body }) ) ## 20 fun_call1({ object1 <- fun_call2( argument) object2 }) ## 21 fun_call(argument, function() { stuff } } ## 22 function_call() stuff ### Bracket indexing ## 1 object[ argument1, argument2 ] ## 2 object[argument1, argument2 ] ## 3 object[( argument1 )] ## 4 { object[ fun_call( body ), argument[ ( sub_argument ) ] ] } ## 5 { object[ argument1, argument2, by = argument3 ][ argument4, fun_call1(argument1, argument2) argument5 ][ argument6, fun_call2( argument1, argument2 ) ] } ### Control flow ## 1 { if (condition) { stuff1 } else { stuff2 } } ## 2 { if (condition) { stuff1 } else { stuff2 } } ## 3 { if (condition) { stuff1 } else { stuff2 } } ## 4 { if (condition) { stuff1 } else { stuff2 } } ## 5 { for (sequence) { stuff } } ## 6 { for (sequence) { stuff } } ## 7 if (condition) stuff ## 8 for (sequence) stuff ## 9 object <- if (condition) { stuff1 } else { stuff2 } ## 10 { object <- if (condition) stuff1 else stuff2 } ## 10 { object <- if (condition) fun_call( argument1, argument2 ) else stuff } ## 11 { fun_call(parameter = if (condition) stuff1 else stuff2 ) } ## 12 { if (condition1) { stuff1 } else if (condition2) stuff2 else if (condition3) { stuff3 } else if (condition4) stuff4 else stuff5 } ## 13 fun_call( argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 14 fun_call( argument, parameter = if (condition1) stuff1 else if (condition2) stuff3 else stuff2 ) ## 15 object <- fun_call(argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 16 object <- fun_call(argument, if (condition) stuff1 else if (condition2) stuff2 ) ## 17 while(condition) stuff ## 18 if (condition1) stuff1 else if (condition2) { stuff2 } ## 19 object <- if (condition) fun_call()[index] else stuff ## 20 funcall({ if (test1) stuff1 if (test2) stuff2 }) ## 21 fun_call(argument, function() { if (cond) object1 <- object2 else object3 <- object4 }) ## 22 if (cond1) if (cond2) if (cond3) stuff1 else if (cond4) stuff2 else if (cond5) stuff3 else stuff4 else if (cond6) stuff5 else if (cond7) stuff6 else stuff7 else if (cond8) stuff8 else if (cond9) stuff9 else stuff10 ## 23 if (cond1) if (cond2) for (sequence1) if (cond3) stuff1 else stuff2 else if (cond4) for (sequence2) stuff3 else if (cond5) fun_call( argument ) else stuff5 else stuff6 ## 24 object <- if(cond) stuff1 else stuff2 ## 25 if (condition) { (stuff) } ## 26 { if (condition1) stuff1 else if (condition2) { stuff2 } else if (condition3) stuff3 } ## 27 object <- if (condition) { stuff1 } else { stuff2 } ## 28 if (condition) object <- stuff ## 29 if (condition1) object <- if (condition2) stuff1 else stuff2 else stuff3 ### Continuation lines ## 1 stuff1 %>% stuff2 %>% stuff3 ## 2 { stuff1 %>% stuff2 %>% stuff3 } %>% stuff4 %>% stuff5 ## 3 ( stuff1 %>% stuff2 %>% stuff3 ) %>% stuff4 %>% stuff5 ## 4 object[ stuff1 %>% stuff2 %>% stuff3 ] %>% stuff4 %>% stuff5 ## 5 stuff1 %>% stuff2 %>% if (condition) { stuff3 %>% stuff4 %>% stuff5 } else { stuff6 %>% stuff7 %>% stuff8 } %>% stuff9 %>% stuff10 ## 6 stuff[stuff1 %>% stuff2 %>% stuff3] %>% stuff4 %>% stuff5 ## 7 ggplot() + geom(lhs - rhs ) + geom() ## 8 { ggplot() + geom1(argument1, argument2 = ( stuff1 ) - stuff2) + geom2() + geom3() } ## 9 stuff + fun_call(parameter = argument1, fun_call((stuff1 - stuff2 + stuff3 ) / stuff4) ) / stuff5 fun_call(arg1 + arg2, arg3 + arg4) ## 10 fun_call(argument1 %>% stuff1, argument2 %>% stuff2, { stuff3 %>% stuff4 } %>% stuff5, argument3 ) ## 11 object1 <- object2 %>% fun_call1() %>% fun_call2() ## 12 object1 <- object2%>%fun_call1() %>% fun_call2()%>% fun_call3() ## 13 { (stuff) %>% fun_call() {stuff} %>% fun_call() } ## 14 { object + ( stuff ) %>% fun_call() object + { stuff } %>% fun_call() } ## 15 object <- stuff1 + stuff2 ~ stuff3 + stuff4 := stuff5 + stuff6 = stuff7 + stuff8 ## 16 object <- stuff1 + stuff2 + stuff3 + stuff4 ~ stuff5 + stuff6 + stuff7 + stuff8 := stuff9 + stuff10 + stuff11 + stuff12 = stuff13 + stuff14 + stuff15 + stuff16 ## 17 object %>% { stuff1 } %>% object[index] %>% {stuff2} %>% fun_call1() + {if (condition1) stuff3 else stuff4} + if (condition2) { stuff5 } else if (condition3) { stuff6 } else { stuff7 } %>% (fun_call2()) %>% fun_call3() %>% fun_call3() ## 18 `object`$`elem` <- stuff1 + stuff2 `object`@`elem` <- stuff1 + stuff2 ## 19 { ## comment object1 <- object2 } ## 20 fun_call(stuff1 + stuff2 + stuff3 + (stuff4 + stuff5 + stuff6) + object[stuff7 + stuff8] + {stuff9 + stuff10}) ## 21 object %>% fun_call({ stuff1 }) %>% stuff2 ## 22 "string1" %>% 'string2' %>% `stuff1` %>% stuff2 ## 23 object[index] %>% fun_call1( argument1 )[index2] %>% fun_call2( argument2 )[[index3]] %>% stuff ## 24 fun_call(argument) <- hop ## 25 fun_call1(argument, fun_call2( stuff1 ) + stuff2) ## 26 object <- { stuff1 } %>% ( stuff2 ) ## 27 fun_call1(fun_call2(fun_call3( argument ))) %>% fun_call2() ## 28 fun_call(argument1 %>% stuff, argument2) ## 29 fun_call(stuff1 := (stuff2), argument) ## 30 fun_call1(fun_call2( fun_call3()) %>% stuff) ## 31 fun_call(object1 + object2 ~ object3 + object4 + object5 := object6 + object7, argument) ## 32 fun_call(object ~ ) ## 33 fun_call(object + ) ## 34 fun_call(object[index1]$element[index2][index3]@attribute + stuff) ## 35a fun_call(argument <- object) ## 35b fun_call(argument <<- object) ## 36 funcall(!stuff1 || stuff2) ### Comments ## 1 # Side comment ## 2 { ## Hanging comment 1 fun_call( { ## Hanging comment 2 } ) } ## 3 { ### Section comment } ## 4 fun_call( ## Comment argument ) ## 5 object %>% ## comment, ## comment stuff ## 6a object <- function() { stuff ## comment } ## 6b object <- function() { ## comment } ## 7 { fun_call(lhs + ### Comment rhs ) } ## 8 "#" + # comment NULL ## 9 "* #" x ### Logical operators ## 1 stuff1 && stuff2 || stuff3 ## 2 (stuff1 && stuff2 || stuff3) ## 3 if (condition1 && condition2 || (condition3 && condition4) || (condition5 && condition6 && condition7) || condition8) { stuff } && condition8 || condition9 || condition10 ## 4 stuff1 == stuff2 || condition ## 5 (stuff1 == stuff2 || condition ) ## 6 (stuff1 != stuff2 || condition ) ## 7 object <- condition1 | condition2 | condition3 | condition4 ## 8 if (condition1 || object1 %op% object2 || condition3) { stuff } ## 9 any(condition1 | condition2) && all(condition3 & condition4) ### Specific situations and overrides ## 1 fun_call( ifelse(condition1, argument1, ifelse(condition2, argument2, ifelse)) ) ess-17.11/test/styles/RStudio-.R0000644005071500004540000002742213202324175013344 00000000000000 ### Function declarations ## 1 { fun <- function(argument1, argument2) { body } } ## 2 { function( argument1, argument2 ) { body } } ## 3 function(argument_fun(sub_argument1, sub_argument2), argument) {} ## 4 function(argument1, parameter = fun_call( sub_argument), argument2) {} ## 5 function() function() body ## 6a object <- function() { body } ## 6b object <- function() { body } ## 6c object = function() { body } ## 6d fun_call(argument) <- function() { body } ## 7 { object <- function() { body } } ## 8 { fun_call(parameter = function() { body }) } ## 9 { fun_call(parameter = function() { body }) } ## 10 fun_call( function() { stuff } ) ## 11 { fun_call1(fun_call2(argument, function() { stuff }) ) } ## 12 { fun_call1(argument, fun_call2(function() { stuff }) ) } ## 13 fun_call(object := function() { body }) ## 14 fun_call(argument, function(x) stuff ) ## 15a `object` <- function() { body } ## 15b "object" <- function() { body } ## 15c 'object' <- function() { body } ### Function calls ## 1 fun_call(argument1, argument2) ## 2 fun_call( argument1, argument2 ) ## 3 fun_call(parameter = ( stuff ), argument) ## 4 fun_call(parameter = fun_argument( argument1 ), argument2) ## 5 fun_call(parameter = fun_argument(argument1, argument2 ) , argument3) ## 6 `fun_call`(argument1, argument2) ## 6b `:=`(argument1, argument2) ## 7 `fun_call`( argument1, argument2 ) ## 7b `:=`( argument1, argument2 ) ## 8 fun_call(argument1 , argument2 , argument3, argument4, ( stuff1 ), argument5, ( stuff2 ) , argument6 ) ## 9 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 10 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 11 { fun_call1( fun_call2 (argument1, argument2, parameter = fun_call3( argument3, argument4 ), function(x) { body }, argument5, fun_call4( argument6 ), argument7 ), { stuff }, argument8 ) } ## 12 object <- fun_call( arg1, arg2 ) ## 13 fun_call1(fun_call2( argument )) ## 14 some_function <- fun_call1(fun_call2( argument )) ## 15 object[, fun_call( argument )] ## 16 fun_call1(argument1, fun_call2(fun_call3( argument2 )) ) ## 17 fun_call({ stuff1 stuff2 stuff3 }) ## 18 fun_call(argument1 %>% stuff, argument2) ## 19 fun_call(argument, ) ## 20 fun_call(parameter1 = , parameter2 = argument) ### Blocks ## 1 { function() { body } } ## 2 { fun_call({ stuff1 }, { stuff2 } ) } ## 3 fun_call({ stuff1 }, { stuff2 }) ## 4 fun_call( parameter1 = { stuff1 }, parameter2 = { stuff2 } ) ## 5 fun_call(parameter1 = { stuff1 }, { stuff2 }, parameter2 = { stuff3 }, { stuff4 }, parameter3 = stuff5 ~ stuff6 + stuff7, argument) ## 6 fun <- fun_call({ stuff1 }, { stuff2 }, { stuff3 } ) ## 7 fun <- fun_call({ stuff }, argument ) ## 8 fun_call(function(x) { body1 }, function(x) { body2 }) ## 9 fun_call( { stuff }, { stuff } ) ## 10 object <- fun_call({ stuff }, { stuff }) ## 11 object <- fun_call( { body } ) ## 12 fun_call1( fun_call2({ stuff } ) ) ## 13 { stuff1 { stuff2 } } ## 14 {{ stuff } } ## 15 ({ stuff }) ## 16 ( { stuff } ) ## 17 fun_call(argument, function(argument1, argument2) { body } ) ## 18 fun_call( argument, function(argument1, argument2) { body } ) ## 19 fun_call1( fun_call2(argument, function(x) { body }) ) ## 20 fun_call1({ object1 <- fun_call2( argument) object2 }) ## 21 fun_call(argument, function() { stuff } } ## 22 function_call() stuff ### Bracket indexing ## 1 object[ argument1, argument2 ] ## 2 object[argument1, argument2 ] ## 3 object[( argument1 )] ## 4 { object[ fun_call( body ), argument[ ( sub_argument ) ] ] } ## 5 { object[ argument1, argument2, by = argument3 ][ argument4, fun_call1(argument1, argument2) argument5 ][ argument6, fun_call2( argument1, argument2 ) ] } ### Control flow ## 1 { if (condition) { stuff1 } else { stuff2 } } ## 2 { if (condition) { stuff1 } else { stuff2 } } ## 3 { if (condition) { stuff1 } else { stuff2 } } ## 4 { if (condition) { stuff1 } else { stuff2 } } ## 5 { for (sequence) { stuff } } ## 6 { for (sequence) { stuff } } ## 7 if (condition) stuff ## 8 for (sequence) stuff ## 9 object <- if (condition) { stuff1 } else { stuff2 } ## 10 { object <- if (condition) stuff1 else stuff2 } ## 10 { object <- if (condition) fun_call( argument1, argument2 ) else stuff } ## 11 { fun_call(parameter = if (condition) stuff1 else stuff2 ) } ## 12 { if (condition1) { stuff1 } else if (condition2) stuff2 else if (condition3) { stuff3 } else if (condition4) stuff4 else stuff5 } ## 13 fun_call( argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 14 fun_call( argument, parameter = if (condition1) stuff1 else if (condition2) stuff3 else stuff2 ) ## 15 object <- fun_call(argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 16 object <- fun_call(argument, if (condition) stuff1 else if (condition2) stuff2 ) ## 17 while(condition) stuff ## 18 if (condition1) stuff1 else if (condition2) { stuff2 } ## 19 object <- if (condition) fun_call()[index] else stuff ## 20 funcall({ if (test1) stuff1 if (test2) stuff2 }) ## 21 fun_call(argument, function() { if (cond) object1 <- object2 else object3 <- object4 }) ## 22 if (cond1) if (cond2) if (cond3) stuff1 else if (cond4) stuff2 else if (cond5) stuff3 else stuff4 else if (cond6) stuff5 else if (cond7) stuff6 else stuff7 else if (cond8) stuff8 else if (cond9) stuff9 else stuff10 ## 23 if (cond1) if (cond2) for (sequence1) if (cond3) stuff1 else stuff2 else if (cond4) for (sequence2) stuff3 else if (cond5) fun_call( argument ) else stuff5 else stuff6 ## 24 object <- if(cond) stuff1 else stuff2 ## 25 if (condition) { (stuff) } ## 26 { if (condition1) stuff1 else if (condition2) { stuff2 } else if (condition3) stuff3 } ## 27 object <- if (condition) { stuff1 } else { stuff2 } ## 28 if (condition) object <- stuff ## 29 if (condition1) object <- if (condition2) stuff1 else stuff2 else stuff3 ### Continuation lines ## 1 stuff1 %>% stuff2 %>% stuff3 ## 2 { stuff1 %>% stuff2 %>% stuff3 } %>% stuff4 %>% stuff5 ## 3 ( stuff1 %>% stuff2 %>% stuff3 ) %>% stuff4 %>% stuff5 ## 4 object[ stuff1 %>% stuff2 %>% stuff3 ] %>% stuff4 %>% stuff5 ## 5 stuff1 %>% stuff2 %>% if (condition) { stuff3 %>% stuff4 %>% stuff5 } else { stuff6 %>% stuff7 %>% stuff8 } %>% stuff9 %>% stuff10 ## 6 stuff[stuff1 %>% stuff2 %>% stuff3] %>% stuff4 %>% stuff5 ## 7 ggplot() + geom(lhs - rhs ) + geom() ## 8 { ggplot() + geom1(argument1, argument2 = ( stuff1 ) - stuff2) + geom2() + geom3() } ## 9 stuff + fun_call(parameter = argument1, fun_call((stuff1 - stuff2 + stuff3 ) / stuff4) ) / stuff5 fun_call(arg1 + arg2, arg3 + arg4) ## 10 fun_call(argument1 %>% stuff1, argument2 %>% stuff2, { stuff3 %>% stuff4 } %>% stuff5, argument3 ) ## 11 object1 <- object2 %>% fun_call1() %>% fun_call2() ## 12 object1 <- object2%>%fun_call1() %>% fun_call2()%>% fun_call3() ## 13 { (stuff) %>% fun_call() {stuff} %>% fun_call() } ## 14 { object + ( stuff ) %>% fun_call() object + { stuff } %>% fun_call() } ## 15 object <- stuff1 + stuff2 ~ stuff3 + stuff4 := stuff5 + stuff6 = stuff7 + stuff8 ## 16 object <- stuff1 + stuff2 + stuff3 + stuff4 ~ stuff5 + stuff6 + stuff7 + stuff8 := stuff9 + stuff10 + stuff11 + stuff12 = stuff13 + stuff14 + stuff15 + stuff16 ## 17 object %>% { stuff1 } %>% object[index] %>% {stuff2} %>% fun_call1() + {if (condition1) stuff3 else stuff4} + if (condition2) { stuff5 } else if (condition3) { stuff6 } else { stuff7 } %>% (fun_call2()) %>% fun_call3() %>% fun_call3() ## 18 `object`$`elem` <- stuff1 + stuff2 `object`@`elem` <- stuff1 + stuff2 ## 19 { ## comment object1 <- object2 } ## 20 fun_call(stuff1 + stuff2 + stuff3 + (stuff4 + stuff5 + stuff6) + object[stuff7 + stuff8] + {stuff9 + stuff10}) ## 21 object %>% fun_call({ stuff1 }) %>% stuff2 ## 22 "string1" %>% 'string2' %>% `stuff1` %>% stuff2 ## 23 object[index] %>% fun_call1( argument1 )[index2] %>% fun_call2( argument2 )[[index3]] %>% stuff ## 24 fun_call(argument) <- hop ## 25 fun_call1(argument, fun_call2( stuff1 ) + stuff2) ## 26 object <- { stuff1 } %>% ( stuff2 ) ## 27 fun_call1(fun_call2(fun_call3( argument ))) %>% fun_call2() ## 28 fun_call(argument1 %>% stuff, argument2) ## 29 fun_call(stuff1 := (stuff2), argument) ## 30 fun_call1(fun_call2( fun_call3()) %>% stuff) ## 31 fun_call(object1 + object2 ~ object3 + object4 + object5 := object6 + object7, argument) ## 32 fun_call(object ~ ) ## 33 fun_call(object + ) ## 34 fun_call(object[index1]$element[index2][index3]@attribute + stuff) ## 35a fun_call(argument <- object) ## 35b fun_call(argument <<- object) ## 36 funcall(!stuff1 || stuff2) ### Comments ## 1 # Side comment ## 2 { ## Hanging comment 1 fun_call( { ## Hanging comment 2 } ) } ## 3 { ### Section comment } ## 4 fun_call( ## Comment argument ) ## 5 object %>% ## comment, ## comment stuff ## 6a object <- function() { stuff ## comment } ## 6b object <- function() { ## comment } ## 7 { fun_call(lhs + ### Comment rhs ) } ## 8 "#" + # comment NULL ## 9 "* #" x ### Logical operators ## 1 stuff1 && stuff2 || stuff3 ## 2 (stuff1 && stuff2 || stuff3) ## 3 if (condition1 && condition2 || (condition3 && condition4) || (condition5 && condition6 && condition7) || condition8) { stuff } && condition8 || condition9 || condition10 ## 4 stuff1 == stuff2 || condition ## 5 (stuff1 == stuff2 || condition ) ## 6 (stuff1 != stuff2 || condition ) ## 7 object <- condition1 | condition2 | condition3 | condition4 ## 8 if (condition1 || object1 %op% object2 || condition3) { stuff } ## 9 any(condition1 | condition2) && all(condition3 & condition4) ### Specific situations and overrides ## 1 fun_call( ifelse(condition1, argument1, ifelse(condition2, argument2, ifelse)) ) ess-17.11/test/styles/misc1.R0000644005071500004540000004010213202324175012700 00000000000000 ### Function declarations ## 1 { fun <- function(argument1, argument2) { body } } ## 2 { function( argument1, argument2 ) { body } } ## 3 function(argument_fun(sub_argument1, sub_argument2), argument) {} ## 4 function(argument1, parameter = fun_call( sub_argument), argument2) {} ## 5 function() function() body ## 6a object <- function() { body } ## 6b object <- function() { body } ## 6c object = function() { body } ## 6d fun_call(argument) <- function() { body } ## 7 { object <- function() { body } } ## 8 { fun_call(parameter = function() { body }) } ## 9 { fun_call(parameter = function() { body }) } ## 10 fun_call( function() { stuff } ) ## 11 { fun_call1(fun_call2(argument, function() { stuff }) ) } ## 12 { fun_call1(argument, fun_call2(function() { stuff }) ) } ## 13 fun_call(object := function() { body }) ## 14 fun_call(argument, function(x) stuff ) ## 15a `object` <- function() { body } ## 15b "object" <- function() { body } ## 15c 'object' <- function() { body } ### Function calls ## 1 fun_call(argument1, argument2) ## 2 fun_call( argument1, argument2 ) ## 3 fun_call(parameter = ( stuff ), argument) ## 4 fun_call(parameter = fun_argument( argument1 ), argument2) ## 5 fun_call(parameter = fun_argument(argument1, argument2 ) , argument3) ## 6 `fun_call`(argument1, argument2) ## 6b `:=`(argument1, argument2) ## 7 `fun_call`( argument1, argument2 ) ## 7b `:=`( argument1, argument2 ) ## 8 fun_call(argument1 , argument2 , argument3, argument4, ( stuff1 ), argument5, ( stuff2 ) , argument6 ) ## 9 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 10 fun_call(parameter = fun_argument( sub_argument ), argument ) ## 11 { fun_call1( fun_call2 (argument1, argument2, parameter = fun_call3( argument3, argument4 ), function(x) { body }, argument5, fun_call4( argument6 ), argument7 ), { stuff }, argument8 ) } ## 12 object <- fun_call( arg1, arg2 ) ## 13 fun_call1(fun_call2( argument )) ## 14 some_function <- fun_call1(fun_call2( argument )) ## 15 object[, fun_call( argument )] ## 16 fun_call1(argument1, fun_call2(fun_call3( argument2 )) ) ## 17 fun_call({ stuff1 stuff2 stuff3 }) ## 18 fun_call(argument1 %>% stuff, argument2) ## 19 fun_call(argument, ) ## 20 fun_call(parameter1 = , parameter2 = argument) ### Blocks ## 1 { function() { body } } ## 2 { fun_call({ stuff1 }, { stuff2 } ) } ## 3 fun_call({ stuff1 }, { stuff2 }) ## 4 fun_call( parameter1 = { stuff1 }, parameter2 = { stuff2 } ) ## 5 fun_call(parameter1 = { stuff1 }, { stuff2 }, parameter2 = { stuff3 }, { stuff4 }, parameter3 = stuff5 ~ stuff6 + stuff7, argument) ## 6 fun <- fun_call({ stuff1 }, { stuff2 }, { stuff3 } ) ## 7 fun <- fun_call({ stuff }, argument ) ## 8 fun_call(function(x) { body1 }, function(x) { body2 }) ## 9 fun_call( { stuff }, { stuff } ) ## 10 object <- fun_call({ stuff }, { stuff }) ## 11 object <- fun_call( { body } ) ## 12 fun_call1( fun_call2({ stuff } ) ) ## 13 { stuff1 { stuff2 } } ## 14 {{ stuff } } ## 15 ({ stuff }) ## 16 ( { stuff } ) ## 17 fun_call(argument, function(argument1, argument2) { body } ) ## 18 fun_call( argument, function(argument1, argument2) { body } ) ## 19 fun_call1( fun_call2(argument, function(x) { body }) ) ## 20 fun_call1({ object1 <- fun_call2( argument) object2 }) ## 21 fun_call(argument, function() { stuff } } ## 22 function_call() stuff ### Bracket indexing ## 1 object[ argument1, argument2 ] ## 2 object[argument1, argument2 ] ## 3 object[( argument1 )] ## 4 { object[ fun_call( body ), argument[ ( sub_argument ) ] ] } ## 5 { object[ argument1, argument2, by = argument3 ][ argument4, fun_call1(argument1, argument2) argument5 ][ argument6, fun_call2( argument1, argument2 ) ] } ### Control flow ## 1 { if (condition) { stuff1 } else { stuff2 } } ## 2 { if (condition) { stuff1 } else { stuff2 } } ## 3 { if (condition) { stuff1 } else { stuff2 } } ## 4 { if (condition) { stuff1 } else { stuff2 } } ## 5 { for (sequence) { stuff } } ## 6 { for (sequence) { stuff } } ## 7 if (condition) stuff ## 8 for (sequence) stuff ## 9 object <- if (condition) { stuff1 } else { stuff2 } ## 10 { object <- if (condition) stuff1 else stuff2 } ## 10 { object <- if (condition) fun_call( argument1, argument2 ) else stuff } ## 11 { fun_call(parameter = if (condition) stuff1 else stuff2 ) } ## 12 { if (condition1) { stuff1 } else if (condition2) stuff2 else if (condition3) { stuff3 } else if (condition4) stuff4 else stuff5 } ## 13 fun_call( argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 14 fun_call( argument, parameter = if (condition1) stuff1 else if (condition2) stuff3 else stuff2 ) ## 15 object <- fun_call(argument, parameter = if (condition1) { stuff1 } else if (condition2) { stuff3 } else { stuff2 } ) ## 16 object <- fun_call(argument, if (condition) stuff1 else if (condition2) stuff2 ) ## 17 while(condition) stuff ## 18 if (condition1) stuff1 else if (condition2) { stuff2 } ## 19 object <- if (condition) fun_call()[index] else stuff ## 20 funcall({ if (test1) stuff1 if (test2) stuff2 }) ## 21 fun_call(argument, function() { if (cond) object1 <- object2 else object3 <- object4 }) ## 22 if (cond1) if (cond2) if (cond3) stuff1 else if (cond4) stuff2 else if (cond5) stuff3 else stuff4 else if (cond6) stuff5 else if (cond7) stuff6 else stuff7 else if (cond8) stuff8 else if (cond9) stuff9 else stuff10 ## 23 if (cond1) if (cond2) for (sequence1) if (cond3) stuff1 else stuff2 else if (cond4) for (sequence2) stuff3 else if (cond5) fun_call( argument ) else stuff5 else stuff6 ## 24 object <- if(cond) stuff1 else stuff2 ## 25 if (condition) { (stuff) } ## 26 { if (condition1) stuff1 else if (condition2) { stuff2 } else if (condition3) stuff3 } ## 27 object <- if (condition) { stuff1 } else { stuff2 } ## 28 if (condition) object <- stuff ## 29 if (condition1) object <- if (condition2) stuff1 else stuff2 else stuff3 ### Continuation lines ## 1 stuff1 %>% stuff2 %>% stuff3 ## 2 { stuff1 %>% stuff2 %>% stuff3 } %>% stuff4 %>% stuff5 ## 3 ( stuff1 %>% stuff2 %>% stuff3 ) %>% stuff4 %>% stuff5 ## 4 object[ stuff1 %>% stuff2 %>% stuff3 ] %>% stuff4 %>% stuff5 ## 5 stuff1 %>% stuff2 %>% if (condition) { stuff3 %>% stuff4 %>% stuff5 } else { stuff6 %>% stuff7 %>% stuff8 } %>% stuff9 %>% stuff10 ## 6 stuff[stuff1 %>% stuff2 %>% stuff3] %>% stuff4 %>% stuff5 ## 7 ggplot() + geom(lhs - rhs ) + geom() ## 8 { ggplot() + geom1(argument1, argument2 = ( stuff1 ) - stuff2) + geom2() + geom3() } ## 9 stuff + fun_call(parameter = argument1, fun_call((stuff1 - stuff2 + stuff3 ) / stuff4) ) / stuff5 fun_call(arg1 + arg2, arg3 + arg4) ## 10 fun_call(argument1 %>% stuff1, argument2 %>% stuff2, { stuff3 %>% stuff4 } %>% stuff5, argument3 ) ## 11 object1 <- object2 %>% fun_call1() %>% fun_call2() ## 12 object1 <- object2%>%fun_call1() %>% fun_call2()%>% fun_call3() ## 13 { (stuff) %>% fun_call() {stuff} %>% fun_call() } ## 14 { object + ( stuff ) %>% fun_call() object + { stuff } %>% fun_call() } ## 15 object <- stuff1 + stuff2 ~ stuff3 + stuff4 := stuff5 + stuff6 = stuff7 + stuff8 ## 16 object <- stuff1 + stuff2 + stuff3 + stuff4 ~ stuff5 + stuff6 + stuff7 + stuff8 := stuff9 + stuff10 + stuff11 + stuff12 = stuff13 + stuff14 + stuff15 + stuff16 ## 17 object %>% { stuff1 } %>% object[index] %>% {stuff2} %>% fun_call1() + {if (condition1) stuff3 else stuff4} + if (condition2) { stuff5 } else if (condition3) { stuff6 } else { stuff7 } %>% (fun_call2()) %>% fun_call3() %>% fun_call3() ## 18 `object`$`elem` <- stuff1 + stuff2 `object`@`elem` <- stuff1 + stuff2 ## 19 { ## comment object1 <- object2 } ## 20 fun_call(stuff1 + stuff2 + stuff3 + (stuff4 + stuff5 + stuff6) + object[stuff7 + stuff8] + {stuff9 + stuff10}) ## 21 object %>% fun_call({ stuff1 }) %>% stuff2 ## 22 "string1" %>% 'string2' %>% `stuff1` %>% stuff2 ## 23 object[index] %>% fun_call1( argument1 )[index2] %>% fun_call2( argument2 )[[index3]] %>% stuff ## 24 fun_call(argument) <- hop ## 25 fun_call1(argument, fun_call2( stuff1 ) + stuff2) ## 26 object <- { stuff1 } %>% ( stuff2 ) ## 27 fun_call1(fun_call2(fun_call3( argument ))) %>% fun_call2() ## 28 fun_call(argument1 %>% stuff, argument2) ## 29 fun_call(stuff1 := (stuff2), argument) ## 30 fun_call1(fun_call2( fun_call3()) %>% stuff) ## 31 fun_call(object1 + object2 ~ object3 + object4 + object5 := object6 + object7, argument) ## 32 fun_call(object ~ ) ## 33 fun_call(object + ) ## 34 fun_call(object[index1]$element[index2][index3]@attribute + stuff) ## 35a fun_call(argument <- object) ## 35b fun_call(argument <<- object) ## 36 funcall(!stuff1 || stuff2) ### Comments ## 1 # Side comment ## 2 { ## Hanging comment 1 fun_call( { ## Hanging comment 2 } ) } ## 3 { ### Section comment } ## 4 fun_call( ## Comment argument ) ## 5 object %>% ## comment, ## comment stuff ## 6a object <- function() { stuff ## comment } ## 6b object <- function() { ## comment } ## 7 { fun_call(lhs + ### Comment rhs ) } ## 8 "#" + # comment NULL ## 9 "* #" x ### Logical operators ## 1 stuff1 && stuff2 || stuff3 ## 2 (stuff1 && stuff2 || stuff3) ## 3 if (condition1 && condition2 || (condition3 && condition4) || (condition5 && condition6 && condition7) || condition8) { stuff } && condition8 || condition9 || condition10 ## 4 stuff1 == stuff2 || condition ## 5 (stuff1 == stuff2 || condition ) ## 6 (stuff1 != stuff2 || condition ) ## 7 object <- condition1 | condition2 | condition3 | condition4 ## 8 if (condition1 || object1 %op% object2 || condition3) { stuff } ## 9 any(condition1 | condition2) && all(condition3 & condition4) ### Specific situations and overrides ## 1 fun_call( ifelse(condition1, argument1, ifelse(condition2, argument2, ifelse)) ) ess-17.11/README0000644005071500004540000015204613202324201010120 000000000000001 General Information: README ***************************** This is the README file for the distribution of ESS version 17.11 ESS is a GNU Emacs and XEmacs mode for interactive statistical programming and data analysis. Languages supported: the S family (S, S-PLUS and R), SAS, BUGS/JAGS and Stata. ESS grew out of the desire for bug fixes and extensions to S-mode and SAS-mode as well as a consistent union of their features in one package. Installation instructions are provided in sections for both Unix and Windows; see below. The current development team is led by Martin Maechler since August 2004. Former project leader A.J. (Tony) Rossini () did the initial port to XEmacs and has been the primary coder. Martin Maechler () and Kurt Hornik () have assisted with the S family and XLispStat. Stephen Eglen () has worked mostly on R support. Richard M. Heiberger () has assisted with S/S-PLUS development for Windows. Richard and Rodney A. Sparapani () have done much of the work improving SAS batch and interactive support. Rodney has also extended ESS to support BUGS/JAGS and has an interest in improving Stata support. We are grateful to the previous developers of S-mode (Doug Bates, Ed Kademan, Frank Ritter, David M. Smith), SAS-mode (Tom Cook) and Stata-mode (Thomas Lumley). Table of Contents * License * Stability * Requirements * Latest Version * Installation * Starting an ESS Process * New Features * Current Features * Reporting Bugs * Mailing Lists * Authors 1.1 License =========== The source and documentation of ESS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ESS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details. 1.2 Stability ============= All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated! 1.3 Requirements ================ ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS. ESS supports current, and recent, stable versions of GNU Emacs (currently, 24.3 or higher; alpha/beta/pre-release versions are NOT SUPPORTED). Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ended with ESS 12.04-4. To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi). 1.4 Getting the Latest Version ============================== The latest released version of ESS is always available on the web at: ESS web page (http://ess.r-project.org) or StatLib (http://lib.stat.cmu.edu/general/ESS/) 1.4.1 Git for ESS development ----------------------------- For development and experimentation on new ESS features, there is now a GitHub branch for ESS, available at . 1.5 Installation ================ 1. Download the latest zip or tgz archive from ESS downloads area (http://ess.r-project.org/index.php?Section=download) and unpack it into a directory where you would like ESS to reside. We will denote this directory as '/path/to/ESS/' hereafter. Alternatively you can use 'git' to fetch the most recent development version to your local machine with: git clone https://github.com/emacs-ess/ESS.git /path/to/ESS 2. Optionally, compile elisp files and build the documentation with: cd /path/to/ESS/ make Without this step, info, pdf and html documentation and reference card will not be available. 3. Optionally, install into your local machine with 'make install'. You might need administrative privileges: make install The files are installed into '/usr/share/emacs' directory. For this step to run correctly on macOS, you will need to adjust the 'PREFIX' path in 'Makeconf'. The necessary code and instructions are commented in that file. 4. If you have performed the 'make install' step from above, just add (require 'ess-site) to your '~/.emacs' file. Otherwise, you should add '/path/to/ESS/lisp/' to your emacs load path and then load ESS with the following lines in your '~/.emacs': (add-to-list 'load-path "/path/to/ESS/lisp/") (load "ess-site") 5. Restart your Emacs and check that ESS was loaded from a correct location with 'M-x ess-version'. _Note for Windows and macOS users:_ The most straightforward way to install Emacs on your machine is by downloading the Emacs binary by Vincent Goulet; either Emacs Modified for macOS (https://vigou3.github.io/emacs-modified-macos/) or from Emacs Modified for Windows (https://vigou3.github.io/emacs-modified-windows/). _Note for XEmacs users:_ Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs. 1.6 Starting an ESS process =========================== To start an S session on Unix or on Windows when you use the Cygwin bash shell, simply type 'M-x S RET'. To start an S session on Windows when you use the MSDOS prompt shell, simply type 'M-x S+6-msdos RET'. 1.7 Current Features ==================== * Languages Supported: * S family (R and S+ AKA S-PLUS) * SAS * OpenBUGS/JAGS * Stata * Julia * Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia) * Syntactic indentation and highlighting of source code * Partial evaluation of code * Loading and error-checking of code * Source code revision maintenance * Batch execution (SAS, OpenBUGS/JAGS) * Use of imenu to provide links to appropriate functions * Interacting with the process (S family, SAS, Stata, Julia) * Command-line editing * Searchable Command history * Command-line completion of S family object names and file names * Quick access to object lists and search lists * Transcript recording * Interface to the help system * Transcript manipulation (S family, Stata) * Recording and saving transcript files * Manipulating and editing saved transcripts * Re-evaluating commands from transcript files * Interaction with Help Pages and other Documentation (R) * Fast Navigation * Sending Examples to running ESS process. * Fast Transfer to Further Help Pages * Help File Editing (R) * Syntactic indentation and highlighting of source code. * Sending Examples to running ESS process. * Previewing 1.8 New Features ================ Changes and New Features in 17.11: * The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put '(require 'ess-r-mode)' or '(require 'ess-stata-mode)' in your init file. This is for experienced Emacs users as this requires setting up autoloads for '.R' files manually. We will keep maintaining 'ess-site' for easy loading of all ESS features. * Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor. * ESS[R]: New command 'ess-r-package-use-dir'. It sets the working directory of the current process to the current package directory. * ESS[R] Lookup for references in inferior buffers has been improved. New variable 'ess-r-package-source-roots' contains package sub-directories which are searched recursively during the file lookup point. Directories in 'ess-tracebug-search-path' are now also searched recursively. * ESS[R] Namespaced evaluation is now automatically enabled only in the 'R/' directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file. Changes and New Features in 16.10: * ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls. * ESS[R]: Backquoted names and '%op%' operators are recognised as sexp. This is useful for code navigation, e.g. with 'C-M-f' and 'C-M-b'. * ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode's code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set 'ess-roxy-fold-examples' to non-nil to automatically fold the examples field when you open a buffer. * ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set 'ess-roxy-fontify-examples' to non-nil to try it out. * ESS[R]: New package development command 'ess-r-devtools-ask' bound to 'C-c C-w C-a'. It asks with completion for any devtools command that takes 'pkg' as argument. * ESS[R]: New command 'C-c C-e C-r' to reload the inferior process. Currently only implemented for R. The R method runs 'inferior-ess-r-reload-hook' on reloading. * ESS[R]: 'ess-r-package-mode' is now activated in non-file buffers as well. Bug fixes in 16.10: * ESS[R]: Fix broken (un)flagging for debugging inside packages * ESS[R]: Fixes (and improvements) in Package development * ESS[R]: Completion no longer produces '...=' inside 'list( )'. * ESS[R]: Better debugging and tracing in packages. * ESS[R]: Better detection of symbols at point. * ESS[R]: No more spurious warnings on deletion of temporary files. * ESS[julia]: help and completion work (better) * ESS[julia]: available via 'ess-remote' Changes and New Features in 16.04: * ESS[R]: 'developer' functionality has been refactored. The new user interface consists of a single command 'ess-r-set-evaluation-env' bound by default to 'C-c C-t C-s'. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set 'ess-r-package-auto-set-evaluation-env' to 'nil' to disable this. * ESS[R]: New 'ess-r-package-mode' This development mode provides features to make package development easier. Currently, most of the commands are based on the 'devtools' packages and are accessible with 'C-c C-w' prefix. See the documentation of 'ess-r-package-mode' function for all available commands. With 'C-u' prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with '[pkg:NAME]' in the mode-line. * ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change 'options('html_type')'. * ESS[R]: New specialized breakpoints for debugging magrittr pipes * ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process. Bug fixes in 16.04: * ESS[R]: Roxygen blocks with backtics are now correctly filled * ESS[R]: Don't skip breakpoints in magrittr's 'debug_pipe' * ESS[R]: Error highlighting now understands 'testthat' type errors * ESS[Julia]: Added getwd and setwd generic commands Changes and New Features in 15.09: * ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with 'ess-offset-' give the actual offsets, those starting with 'ess-indent-' are control (commonly Boolean) variables, and those starting with 'ess-align-' are vertical alignment overrides which inhibit default offsets in specific situations. See 'ess-style-alist' for detailed description of the new indentation system and provided default indentation styles. * ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring 'ess-brace-imaginary-offset', 'ess-expression-offset' and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by 'ess-offset-continuations'. It can be set to either 'cascade' or 'straight' (the default). 'ess-arg-function-offset' has been replaced by 'ess-indent-from-lhs' and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to 'prev-call' and 'open-delim' in order to produce a consistent indentation. * ESS: A test framework has been set up. * ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with 'ess-offset-arguments' set to 'prev-line' is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation. * ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the 'examples' field without squashing the surrounding code in the comments. * ESS[R]: ESS can now format your code! This is controlled through the settings 'ess-fill-calls' and 'ess-fill-continuations'. When activated, '(fill-paragraph)' formats your calls and your formulas/continuations while making sure they don't go past 'fill-column'. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set 'ess-blink-filling' to nil to prevent this. * ESS[R]: Fix occasional missing error location fontification in inferior buffers. * ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace. * ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on 'julia-mode.el' from the Julia project. If you install ESS from the official tarball/zip file, 'julia-mode.el' is already included. Otherwise, if you install ESS by running 'make', then the latest version of 'julia-mode.el' is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running 'make', then ensure that you have the 'julia-mode.el', which you can get easily from MELPA for example. * iESS: For naming inferior processes, ESS can use 'projectile''s project root and it does so when 'ess-gen-proc-buffer-name-function' is set to 'ess-gen-proc-buffer-name:projectile-or-simple' as by default, or to another value beginning with 'ess-gen-proc-buffer-name:projectile-*'. Changes and New Features in 15.03-1: * ESS[R]: An indentation bug has been fixed (github issue 163) * ESS[R]: On windows, if 'ess-prefer-higher-bit' is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R. Changes and New Features in 15.03: * ESS[R]: Full native support for 'company-mode'. * ESS[R]: More efficient caching algorithm for R completion. * ESS: New offset variable 'ess-close-paren-offset' to control the indentation of the closing parentheses. * ESS[R]: Ask for CRAN mirror only once per emacs session. * ESS[R]: Detect 'library' and 'require' calls for better completion caching. * Buffer display is now customizable ('ess-show-buffer-action'). * Use 'y-or-n-p' instead of 'yes-or-no-p' throughout. * More support for ODS in ess-sas-graph-view. * Makefiles are now both UNIX and GNU friendly. * ESS[R]: Simplify directory lookup in 'ess-developer' (#137). * Make closed paren indentation consistent Bug Fixes in 15.03: * Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R). * Fix git version lookup * Don't check directory modtime in R dialect. * Declare all ess macros for edebug. * Add 'ess-smart-comma' to eldoc message functions. * Inform users when retrieving RDA aliases. * Line ending in '~' is also a continuation line. * Filing roxy paragraphs works as expected now. * In 'ess-developer-add-package', remove incorrect 'wait' argument from 'ess-get-words-from-vector' call. * Fix #96, #117, #120, #125, #134, #137. * Fix ess-quit-r. Call base::q() even if it is masked. * Fix 'ess-show-buffer' to always display the buffer in another window. * Makefile: Fix cd bug for directories with spaces in them * 'ess-kill-buffer-and-go' modified to not restart R Changes / Selected Bug Fixes in 14.09: * ESS[Julia]: Executable is changed to 'julia'. * ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported. * ESS[R]: Running R with 'gdb' debugger now works as expected * iESS: Inferior ESS buffers are now derived from 'comint-mode' * ESS[R]: 'ess-execute-screen-options' uses correct screen width in terminal sessions * ESS: 'ess-build-tags-for-directory' works when no TAGS file name was provided * ESS: 'ess-offset-statement-continued' is now respected everywhere except inside of the 'if' test condition. * ESS: New variable 'ess-offset-statement-first-continued' for indentation of the first line in multiline statements. * ESSR: Starting ',' in multiline statements indentation is now ignored to achieve a more pleasant alignment. * ESSR: Improved behavior of 'RET' in roxygen blocks. * ESS[R]: command cleaning with 'C-u C-u C-y' was broken with lines containing " + " * ESS[R]: fixed "empty watch window bug" * ESS[R]: don't ask for help location on ac-quick-help (request of github #81) * ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands * ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1) * ESS[Julia]: recognize function names ending with ! * ESS[Julia]: fix indentation of "for" comprehension syntax within brackets. Changes / Selected Bug Fixes in 13.09-1: * ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in '~/.config/ESSR/' directory on the remote machine * TRAMP: PAGER environment variable is now correctly set to 'inferior-ess-pager' * retrieval of help topics on remote machines is fixed * org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature) * 'ess-execute' is now bound to 'C-c C-e C-e' in 'ess-extra-map'. * completion works again in 'ess-execute' * ESS[R]: 'head' and 'tail' methods were replaced by 'htsummary' in 'ess-R-describe-object-at-point-commands' * ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation * ESS[transcript]: 'Clean Region' now works with multiline statements; 'ess-transcript-clean-region' etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by '+' * ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2 (https://github.com/emacs-ess/ESS/pulls/mlf176f2). Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately. * ESS[SAS]: 'ess-sas-edit-keys-toggle' default returns to 'nil' * ESS[R]: support for 'prettify-symbols-mode': contribution from Rudiger Sonderfeld * ESS[SWV]: knitr now evaluates in the current frame * ESS[developer]: ess-developer doesn't kill open DESCRIPTION files anymore * ESS[roxygen]: 'ess-roxy-preview-HTML' is now on 'C-c C-o C-w' and 'ess-roxy-preview-text' is now on 'C-c C-o C-t' * ESS: installation with 'make install' was simplified and should work out of the box on most *nix systems * ESS installation instructions simplified * fixed font-lock bug introduced in 13.09 that was causing very slow process output Changes/New Features in 13.09: * font-lock in process buffers doesn't "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input. * ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types. * ESS[julia]: a much better eldoc showing arguments of methods and data type constructors * ESS-developer: - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package 'ess-developer-packages'. The old behavior (activation on per-process basis) is still available on 'M-x ess-developer' in a process buffer. - integration with 'devtools' package. New command 'ess-developer-load-package' calls 'load_all' on the package containing current file. 'ess-developer-add-package' now offers IDO menu completions with available loading methods, currently 'library', and 'load_all'. Loading command can be customized with 'ess-developer-load-on-add-commands'. * 'TAB' now indents region if region is active (a contribution of Matthew Fidler in pull #41) * 'M-x ess-version' now reports full loading path and recognizes git and ELPA versions. * warning and error keyword are now highlighted with 'font-lock-warning-face' as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification). * eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process. * org-babel: evaluation is now org-friendly * help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by 'ess-help-reuse-window' custom variable. * help: ?foo pops IDO menu on multiple help files (so far it worked only for 'C-c C-v') * remote evaluation is considerably faster now on slow connections * ESS[R] tracebug R source references regular expressions are (mostly) language agnostic. * 'ess-function-call-face' inherits from 'font-lock-function-name-face' rather than 'font-lock-builtin-face'. * 'ess-inject-source' now accepts 'function-and-buffer' option. * Documentation: The "New Features" section (and 'NEWS') now represent recent changes: within the last year or so. All changes can be found in the new news.html (news.html) (or 'NEWS' and 'ONEWS'). * ESS[R] 'ess-rep-regexp' should no longer inf.loop (rarely!), and hence 'M-x ess-fix-miscellaneous' should neither. Changes/New Features in 13.05: * ESS[gretl]: Support for 'gretl' (both editing and sub-process interaction). A contribution of Ahmadou Dicko. * ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when 'ess-tracebug' is active). * ESS: 'C-c `' is now bound to 'ess-show-traceback' and 'C-c ~' is bound to 'ess-show-call-stack'. * ESS[R]: ESS stores function in 'ESSR' environment to avoid kludging users' global environment and accidental deletion. * ESS[R]: new variable 'ess-swv-processing-command' to control weaving and tangling. * ESS[R]: 'ess-default-style' has been changed (from 'DEFAULT') to 'RRR'. Use something like '(setq ess-default-style 'DEFAULT)' or '(setq ess-indent-level 2)' in your '~/.emacs' equivalent _before_ loading ESS, if you do not like this new "incompatible" default style. * ESS[julia]: ESS stores its functions in 'ESS' module. * ESS[julia]: Eldoc is now supported in julia modes * ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes * ESS[R]: 'ess-use-tracebug''s default has been changed to 't'. Set it to nil if you want to keep the previous behavior. * ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with 'ess-debug-minor-mode' and 'ess-debug-minor-mode-map'. * ESS[tracebug]: 'ess-tracebug-map' is an alias to 'ess-dev-map' 'C-c C-t'. * ESS[tracebug]: 'ess-bp-toggle-state' ('C-c C-t o') can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan). * ESS[tracebug]: 'ess-debug-flag-for-debugging' and 'ess-debug-unflag-for-debugging' work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in 'ess-developer-packages' ('C-c C-t C-a'). * ESS[R]: Eldoc (activated by 'ess-use-eldoc') has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user. Note that you can turn off ElDoc, by placing '(setq ess-use-eldoc nil)' in your '~/.emacs' file, prior to loading ESS, * ESS[SAS]: long over-looked 'SAS-mode-hook' appears! * ESS[SAS]: 'ess-sas-edit-keys-toggle' now defaults to 't' since 'sas-indent-line' is still broken, i.e. 'TAB' is now bound to 'ess-sas-tab-to-tab-stop' by default Changes/Bug Fixes in 12.09-2: * ESS: new 'ess-switch-to-end-of-proc-buffer' variable that controls whether 'C-c C-z' switches to the end of process buffer. The default is 't'. You can use prefix argument to 'C-c C-z' to toggle this variable. * ESS: fix in 'ess-eval-linewise' that was causing emacs to hang during R debugging with 'ess-eval-visibly' equal to 't'. * ESS: fix in 'ess-eval-linewise' that was causing emacs to recenter the prompt in visible window * ESS[tracebug]: A better handling of "Selection" prompts and debug related singlekey commands. * ESS: fix a bug in 'ess-switch-process' that was causing '*new*' selection to fail. * ESS[R]: Solve missing 'ess-local-process-name' bug in R-dired. * ESS[SWV]: 'ess-swv-PDF' doesn't ask for a command to run if there is only one command in 'ess-swv-pdflatex-commands'. * ESS[SWV]: 'ess-swv-weave' gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr). * ESS: 'ess-eval-*-and-step' functions go to next empty line at eob, instead of staying at the last line. Changes/New Features in 12.09-1: * ESS _Breaking Changes in Keys_: - New keymaps: 'ess-doc-map' bound to 'C-c C-d'; 'ess-extra-map' bound to 'C-c C-e'; 'ess-dump-object-into-edit-buffer' was moved on 'C-c C-e C-d' - roxygen map was moved on 'C-c C-o' and 'ess-roxy-update-entry' now resides on 'C-c C-o C-o' - ess-handy-commands is not bound anymore - 'ess-dev-map' (including 'ess-tracebug' and 'ess-developer') moved on 'C-c C-t' - 'C-c C-y' is deprecated in favor of 'C-c C-z C-z' * ESS[R] new command 'ess-describe-object-at-point' bound to 'C-c C-d C-e' (repeat 'C-e' or 'e' to cycle). It was inspired by Erik Iverson's 'ess-R-object-tooltip'. Customize 'ess-describe-at-point-method' to use tooltip instead of an electric buffer. * ESS: New command 'ess-build-tags-for-directory' bound to 'C-c C-e C-t' for building dialect specific tag tables. After building tags use 'M-.' to navigate to function and objects definitions. By default 'C-c C-e C-t' builds tags based on imenu regular expressions and also include other common languages '.c, .o, .cpp' etc. But it relies on external 'find' and 'etags' commands. If 'ess-build-tags-command' is defined (for 'R'), the inferior process is asked to build tags instead. * ESS: 'ess-switch-process' offers '*new*' alternative to start a new process instead of switching to one of the currently running processes. * ESS: Switching between processes ('C-c C-s') uses buffer names instead of the internal process names. Use 'M-x rename-buffer' command to conveniently rename your process buffers. * ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where 'proc' stands for the internal process name and 'dir' stands for the directory where the process was started in. The default is *proc*. For customization see 'ess-gen-proc-buffer-name-function'. * ESS: 'ess-eval-visibly-p' is deprecated in favor of 'ess-eval-visibly'. * ESS: New evaluation pattern 'nowait'. In addition to old 'nil' and 't' values, 'ess-eval-visibly' accepts 'nowait' for a visible evaluation with no waiting for the process. See 'ess-eval-visibly' for details on evaluation patterns. * ESS: New "Process" menu entry with process related commands and configuration * iESS: Process buffer is now automatically shown on errors * ESS: New 'ess-switch-to-inferior-or-script-buffer' command bound to 'C-c C-z' in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command. * ESSR-help: On multiple help pages with the same name, 'C-c C-v' now asks for user resolution directly in emacs. * ESS[R] ess-roxy: new variable 'ess-roxy-re' for fontification of cases where the number of leading '#' differs from 'ess-roxy-str'. * ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods' arguments after trailing ||. * ESS[R]: New 'ess-display-demos' command bound to 'C-c C-d o' and 'C-c C-d C-o' * ESS: New 'ess-help-web-search' command bound to 'C-c C-d w' and 'C-c C-d C-w' to facilitate interactive search of web resources. Implemented for 'R', 'Stata' and 'Julia'. See also 'ess-help-web-search-command'. * ESS: ess-pdf-viewer-pref accepts now command line arguments * ESS[Rnw]: Add knitr support. Customize 'ess-swv-processor' for the default processor. * ESS[Rnw]: More thorough renaming of remaining 'noweb-*' to 'ess-noweb-*'. * ESS[Rnw] new commands 'ess-eval-chunk-and-step' and 'ess-eval-chunk' bound to 'M-n C-c' and 'M-n C-M-x' to mirror standard ess commands in C-c map. * ESS[R] Auto-completion: new variable 'ess-ac-R-argument-suffix' to customize the insertion of trailing "=". Defaults to " = ". * ESS[Julia]: Added index, apropos and web-search to julia. * ESS help: More evaluation commands were added to ess-help mode ('C-c C-c', 'C-M-x' etc) Bug Fixes in 12.09-1: * iESShelp: Multiple help pages with the same name are properly handled on 'C-c C-v' * iESSremote: Evaluation with ESS remote no longer freezes emacs. * iESS: 'comint-previous-prompt' 'C-c C-p' no longer stops on secondary prompt "+". * iESS[R], iESS(Sqpe) [S] on Windows: The 'options("editor")' is now initialized to 'emacsclient' instead of the previous 'gnuclient'. The user may need to add the line '(server-start)' to the emacs initialization file. 'emacsclient' has been included with emacs since GNU Emacs 22.1. * ESS[Rnw] Fixed "connection to R" bug (in 12.09 only). * ESS[Rnw] Explicit 'ess-swv-stangle' and 'ess-swv-sweave' functions. * ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched "\"' * ESS[R] is more careful with the 'R' code injection. It now happens only once at the start of the session. * ESS[R]: Fixed auto-scrolling the comint buffer on evaluation. * ESS[Julia]: Solve several indentation and word navigation problems. * ESS[Julia]: Help system works again. Changes/New Features in 12.09: * Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs. * ESS[R]: On Windows, there is now a new customizable variable (currently called 'ess-directory-containing-R') to tell ESS where to look for the 'Rterm.exe' executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find 'Rterm.exe' executables when they are installed somewhere else. * ESS[julia]: _new_ mode for editing julia code ('*.jl'). Start with 'M-x julia'. Full interaction interface, imenu and basic error referencing are available. * ESS[R] noweb: 'noweb-mode' and 'noweb-font-lock-mode' have been renamed to 'ess-noweb-mode' and 'ess-noweb-font-lock-mode' to avoid conflicts with the "real" 'noweb-mode'. * ESS[R] noweb: The long standing font-lock bug has been solved in 'ess-noweb' interface. * ESS: Basic evaluation keys are now bound to 'ess-eval-region-*-' functions: - 'C-M-x' is bound to 'ess-eval-region-or-function-or-paragraph' - 'C-c C-c' is bound to 'ess-eval-region-or-function-or-paragraph-and-step' - 'C-RET' is bound to 'ess-eval-region-or-line-and-step' Each of these functions first evaluates the region whenever the region is active. * ESS: 'C-M-a'/'C-M-e' now step to beginning/end of paragraph if no function has been detected. * ESS: 'ess-eval-*-and-step' family of functions are now smarter, and don't step to end of buffer or end of chunk code ('@') when at the end of the code. * ESS: 'ess-handy-commands' function is bound to 'C-c h' * ESS: ESS is now _blinking_ the evaluated region. Set 'ess-blink-region' to nil to deactivate; 'ess-blink-delay' gives the duration of the blink. Evaluated region is "blinked" in 'highlight' face. * ESS[R-help] New key 'a' for "apropos()" in help buffers. Also available through 'C-c h'. * ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers. * ESS[R]: New customization interface for _font-lock_. ESS font-lock operates with predefined keywords. Default keywords are listed in 'ess-R-font-lock-keywords' and 'inferior-R-font-lock-keywords', which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through 'ESS/Font-lock' submenu. Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators. * ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set 'ess-use-auto-complete' to nil to deactivate. * ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default 'ac-auto-start' characters. * ESS no longer redefines default ac-sources, but only appends 'ac-source-filename' to it. * ESS: 'ac-source-R' now concatenates " = " to function arguments. * ESS: Menus for ESS and iESS have been reorganized and enriched with _Tracebug_ and _Developer_ submenus. * ESS[R]: 'ess-developer' and 'ess-tracebug' commands are available by default in 'ess-dev-map' which is bound to 'C-c d' in ESS and iESS maps. * ESS[R]: 'eldoc' truncates long lines whenever 'eldoc-echo-area-use-multiline-p' is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also 'ess-eldoc-abbreviation-style'. * ESS[R]: completion code pre-caches arguments of heavy generics such as 'plot' and 'print' to eliminated the undesirable delay on first request. * iESS: Prompts in inferior buffers are now highlighted uniformly with 'comint-highlight-prompt' face. * ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like 'Sys.sleep(5)' no longer stall emacs. * ESS: [R, S, Stata, Julia] have specialized 'ess-X-post-run-hook's, which are run at the end of subprocess initialization. * ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on 'C-c C-c' and other interactive commands. * ESS no longer auto-connects to a subprocess with a different dialect than the current buffer's one. * ESS: 'ess-arg-function-offset-new-line' is now a list for all the ESS indentation styles, which results in the following indentation after an open "(": a <- some.function(other.function( arg1, arg2) * ESS[SAS]: Improved MS RTF support for GNU Emacs; try 'ess-sas-rtf-portrait' and 'ess-sas-rtf-landscape'. Changes/Bug Fixes in 12.04-3: * ESS: basic support for package.el compatibility * ESS[R]: correct indentation of & and | continuation lines * 'M-x ess-version' shows the svn revision even after 'make install' * ESS[SAS]: improved XEmacs support * iESS[R]: better finding of previous prompt * ESS[Stata]: adjusted prompt for mata mode * ESS[R]: resolved name clashes with cl.el * ESS[R]: removed dependence on obsolete package assoc * New 'make' target 'lisp', to build the lisp-only part, i.e., not building the docs. Changes/New Features in 12.04-1: * iESS[Stata]: New interactive help invocation. * iESS[Stata]: New custom variable 'inferior-STA-start-file'. * iESS[Stata]: 'inferior-STA-program-name' is now "stata" and can be customized. * ESS[Stata] New sections in stata help files Syntax('s-S'), Remarks('r'), Title('t'). Bug Fixes in 12.04-1: * ESS[R]: Better 'ess-tracebug' error handling. * ESS[R]: Corrected 'ess-eldoc' help string filtering and improved argument caching. * ESS[R]: Indentation of non-block if/else/for/while lines fixed. * 'M-x ess-version' should work better. * ESS: Filename completion now again works inside strings. * iESS[Stata]: Fixed prompt detection issue. * ESS[Rd]: R is autostarted also from here, when needed. Changes/New Features in 12.04: * ESS: Reverting new behavior of 12.03, 'TAB' in 'ess-mode' no longer completes by default. If you want smart 'TAB' completion in R and S scripts, similarly to iESS behavior, set the variable 'ess-tab-complete-in-script' to 't'. Also see 'ess-first-tab-never-complete' for how to customize where first 'TAB' is allowed to complete. * ESS: completion is consistently bound to 'M-TAB' (aka 'M-C-i') in both Emacs23 and Emacs24. * ESS: The variable 'ess-arg-function-offset-new-line' introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to '(2) results in: a <- some.function( arg1, arg2) Changes/New Features in 12.03: * ESS indentation: new offset variable 'ess-arg-function-offset-new-line' controlling for the indentation of lines immediately following open '('. This is useful to shift backwards function arguments after a long function call expression: a <- some.function( arg1, arg2) instead of the old a <- some.function( arg1, arg2) If '(' is not followed by new line the behavior is unchanged: a <- some.function(arg1, arg2) This variable should be set as part of indentation style lists, or in ess-mode hook. * ESS[R]: 'C-c .' sets (indentation) style. * ESS: In ESS buffers 'yank'('C-y') command accepts double argument 'C-u C-u' to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files. * Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features ("Completion", "Developing with ESS", "ESS tracebug", "ESS developer", "ESS ElDoc", "IDO Completion" and "Evaluating Code") * RefCard: Reference card was updated to include new features. * Eldoc: Eldoc was rewritten and is activated by default. See 'ess-use-eldoc', 'ess-eldoc-show-on-symbol', 'ess-eldoc-abbreviation-style' variables for how to change the default behavior. _Note:_ 'skeleton-pair-insert-maybe' prohibits eldoc display, on '(' insertion. * ESS[R]: Eldoc shows arguments of a generic function whenever found. * ESS: 'TAB' in 'ess-mode' now indents and completes, if there is nothing to indent. Set 'ess-first-tab-never-completes-p' to 't' to make 'TAB' never complete on first invocation. Completion mechanism is similar to the completion in the 'inferior-ess-mode' - a filename expansion is tried, if not found ESS completes the symbol by querying the process. * ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by 'completion-at-point'. Also in accordance with emacs conventions, ESS doesn't bind 'M-TAB' for emacs 24 or higher. 'M-TAB' calls the default 'complete-symbol'. * ESS[R]: Out of the box integration with 'Auto Completion' mode http://cx4a.org/software/auto-complete (http://cx4a.org/software/auto-complete) . Three AC sources 'ac-source-R-args', 'ac-source-R-objects' and 'ac-source-R' are provided. The last one combines the previous two and makes them play nicely together. Set 'ess-use-auto-complete' to 't' to start using it. Refer to documentation string of 'ac-use-auto-complete' for further information. * ESS[R]: New unified and fast argument completion system, comprised of 'ess-funname.start', 'ess-function-arguments', 'ess-get-object-at-point'. Eldoc and auto-completion integration are using this system. * ESS: 'ess-switch-to-end-of-ESS'('C-c C-z'), and 'ess-switch-to-ESS'('C-c C-y'): Automatically start the process whenever needed. * ESS[R]: 'roxy' knows about previewing text version of the documentation. Bound to 'C-c C-e t'. * ESS[R]: Solved the "nil filename" bug in roxygen support. * ESS[R]: 'ess-tracebug' is now part of ESS: New Features: - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don't have to source your file, but just evaluate your code in normal fashion. Variable 'ess-tracebug-inject-source-p' controls this behavior - if t, always inject source reference, if ''function', inject only for functions (this is the default), if 'nil', never inject. During the source injection the value of 'ess-eval-visibly' is ignored. - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer ('C-c '') and jumps through this buffers if still alive, or in original org buffer otherwise. - New keys in watch mode: '?' and 'd' - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook * ESS[R]: New package 'ess-developer' to evaluate 'R' code directly in the package environment and namespace. It can be toggled on and off with 'C-c d t'. When 'ess-developer' is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with 'C-d a', and remove with 'C-d r'. Source the current file with 'C-d s'.Evaluation function which depend on '`ess-eval-region'' ask for the package to source the code into, 'ess-eval-function' and alternatives search for the function name in the development packages' environment and namespace and insert the definition accordingly. See the documentation section "Developing with ESS/ESS developer" for more details. * ESS[R] help system: New Features: - 'q' quits window instead of calling 'ess-switch-to-end-of-ESS'. This is consistent with emacs behavior help and other special buffers (_breaking change_). - 'k' kills window without asking for the name (pointed by Sam Steingold) - Help map inherits from 'special-mode-map' as sugested by Sam Steingold. - Package index: new function 'ess-display-index' bound to 'i' in help mode map. - Package vignettes: new function 'ess-display-vignettes' bound to 'v' in help mode map. - Display help in HTML browser: new function 'ess-display-help-in-browser' bound to 'w' in help mode map. It depends on 'R''s 'browser' option. - New custom variable 'ess-help-pop-to-buffer': if non-nil ESS help buffers are given focus on display. The default is 't' (_breaking change_). - New menu entries for the above functions. - Bogus help buffers are no longer generated by default, i.e. buffers of the form "No documentation for 'foo' in specified packages and libraries: you could try '??foo' ". 'ess-help-kill-bogus-buffers' now defaults to 't'. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning. * ESS now uses 'IDO' completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set 'ess-use-ido' to nil if you don't want the IDO completion. See the documentation string of 'ess-use-ido' for more information about 'IDO' and ESS configuration. * ESS[S]: "','" is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from '`ess-handy-commands'' list. If 'ess-R-smart-operators' is t '`ess-smart-comma' also inserts " " after comma. * ESS[S], notably 'R': Variable '`ess-handy-commands'' stores an alist of useful commands which are called by 'ess-smart-comma' in the inferior buffer. Currently containing: change-directory 'ess-change-directory' help-index 'ess-display-index' help-object 'ess-display-help-on-object' vignettes 'ess-display-vignettes' objects[ls] 'ess-execute-objects' search 'ess-execute-search' set-width 'ess-execute-screen-options' install.packages 'ess-install.packages' library 'ess-library' setRepos 'ess-setRepositories' sos 'ess-sos' Handy commands: 'ess-library', 'ess-install.packages', etc - ask for item with completion and execute the correspond command. 'ess-sos' is a interface to 'findFn' function in package 'sos'. If package 'sos' is not found, ask user for interactive install. * ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of 'ess-tracebug' and developer status of 'ess-developer' in all associated buffers. * ESS: New 'ess-completing-read' mechanism: ESS uses 'ido' completions whenever possible. Variable 'ess-use-ido' controls whether to use ido completion or not. Active by default. * ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future. * ESS[S]: New custom variable 'inferior-ess-S-prompt' to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation ('comint-previous-prompt' and 'comint-next-prompt') the inferior buffers. * ESS[R]: Internal 'R' completion retrieval ('ess-R-complete-object-name') was rewritten and is faster now. * ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged. * ESS: new functions to manipulate process plists: 'ess-process-get' and 'ess-process-set'. * ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in '> '. This could be overwritten by setting 'inferor-ess-primary-prompt'. * ESS[S], notably 'R': Saved command history: ESS-HISTORY-FILE now accepts 't' (default), 'nil', or a file name. By setting it to 'nil' no command line history is saved anymore. ESS-HISTORY-DIRECTORY now allows to have the history all saved in one "central" file. * ESS[R]: more Roxygen improvements. * ESS[R]: 'C-c .' to set (indentation) style. * ESS[R]: Functions with non-standard names (for example 'aaa-bbb:cc') are properly handled by font-lock and evaluation routines. * ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in 'ess-get-words-from-vector' and 'ess-command'. 1.9 Reporting Bugs ================== Please send bug reports, suggestions etc. to The easiest way to do this is within Emacs by typing 'M-x ess-submit-bug-report' This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug. If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer. Note that comments, suggestions, words of praise and large cash donations are also more than welcome. 1.10 Mailing Lists ================== There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to ; contributions to the list may be mailed to . Rest assured, this is a fairly low-volume mailing list. The purposes of the mailing list include * helping users of ESS to get along with it. * discussing aspects of using ESS on Emacs and XEmacs. * suggestions for improvements. * announcements of new releases of ESS. * posting small patches to ESS. 1.11 Authors ============ * A.J. Rossini (mailto:blindglobe@gmail.com) * Richard M. Heiberger (mailto:rmh@temple.edu) * Kurt Hornik (mailto:Kurt.Hornik@R-project.org) * Martin Maechler (mailto:maechler@stat.math.ethz.ch) * Rodney A. Sparapani (mailto:rsparapa@mcw.edu) * Stephen Eglen (mailto:stephen@gnu.org) * Sebastian P. Luque (mailto:spluque@gmail.com) * Henning Redestig (mailto:henning.red@googlemail.com) * Vitalie Spinu (mailto:spinuvit@gmail.com) * Lionel Henry (mailto:lionel.hry@gmail.com) ess-17.11/ANNOUNCE0000644005071500004540000014413613202324201010372 000000000000001 ANNOUNCING ESS **************** The ESS Developers proudly announce the release of ESS 17.11 Emacs Speaks Statistics (ESS) provides an intelligent, consistent interface between the user and the software. ESS interfaces with R/S-PLUS, SAS, BUGS/JAGS, Stata and other statistical analysis packages under the UNIX, GNU Linux, Microsoft Windows, macOS and other operating systems. ESS is a package for the GNU Emacs and XEmacs text editors whose features ESS uses to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages. ESS is freely available under the GNU General Public License (GPL). Please read the file COPYING which comes with the distribution, for more information about the license. For more detailed information, please read the README files that come with ESS. 1.1 Getting the Latest Version ============================== The latest released version of ESS is always available on the web at: ESS web page (http://ess.r-project.org) or StatLib (http://lib.stat.cmu.edu/general/ESS/) 1.1.1 Git for ESS development ----------------------------- For development and experimentation on new ESS features, there is now a GitHub branch for ESS, available at . 1.2 Current Features ==================== * Languages Supported: * S family (R and S+ AKA S-PLUS) * SAS * OpenBUGS/JAGS * Stata * Julia * Editing source code (S family, SAS, OpenBUGS/JAGS, Stata, Julia) * Syntactic indentation and highlighting of source code * Partial evaluation of code * Loading and error-checking of code * Source code revision maintenance * Batch execution (SAS, OpenBUGS/JAGS) * Use of imenu to provide links to appropriate functions * Interacting with the process (S family, SAS, Stata, Julia) * Command-line editing * Searchable Command history * Command-line completion of S family object names and file names * Quick access to object lists and search lists * Transcript recording * Interface to the help system * Transcript manipulation (S family, Stata) * Recording and saving transcript files * Manipulating and editing saved transcripts * Re-evaluating commands from transcript files * Interaction with Help Pages and other Documentation (R) * Fast Navigation * Sending Examples to running ESS process. * Fast Transfer to Further Help Pages * Help File Editing (R) * Syntactic indentation and highlighting of source code. * Sending Examples to running ESS process. * Previewing 1.3 Requirements ================ ESS is most likely to work with current/recent versions of the following statistical packages: R/S-PLUS, SAS, Stata, OpenBUGS and JAGS. ESS supports current, and recent, stable versions of GNU Emacs (currently, 24.3 or higher; alpha/beta/pre-release versions are NOT SUPPORTED). Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ended with ESS 12.04-4. To build the PDF documentation, you will need a version of TeX Live or texinfo that includes texi2dvi (BEWARE: recent TeX Live, and some texinfo RPMs, do NOT include texi2dvi). 1.4 Stability ============= All recent released versions are meant to be release-quality versions. While some new features are being introduced, we are cleaning up and improving the interface. We know that there are many remaining opportunities for documentation improvements, but all contributors are volunteers and time is precious. Patches or suggested fixes with bug reports are much appreciated! 1.5 Mailing List ================ There is a mailing list for discussions and announcements relating to ESS. Join the list by sending an e-mail with "subscribe ess-help" (or "help") in the body to ; contributions to the list may be mailed to . Rest assured, this is a fairly low-volume mailing list. The purposes of the mailing list include * helping users of ESS to get along with it. * discussing aspects of using ESS on Emacs and XEmacs. * suggestions for improvements. * announcements of new releases of ESS. * posting small patches to ESS. 1.6 Reporting Bugs ================== Please send bug reports, suggestions etc. to The easiest way to do this is within Emacs by typing 'M-x ess-submit-bug-report' This also gives the maintainers valuable information about your installation which may help us to identify or even fix the bug. If Emacs reports an error, backtraces can help us debug the problem. Type "M-x set-variable RET debug-on-error RET t RET". Then run the command that causes the error and you should see a *Backtrace* buffer containing debug information; send us that buffer. Note that comments, suggestions, words of praise and large cash donations are also more than welcome. 1.7 Authors =========== * A.J. Rossini (mailto:blindglobe@gmail.com) * Richard M. Heiberger (mailto:rmh@temple.edu) * Kurt Hornik (mailto:Kurt.Hornik@R-project.org) * Martin Maechler (mailto:maechler@stat.math.ethz.ch) * Rodney A. Sparapani (mailto:rsparapa@mcw.edu) * Stephen Eglen (mailto:stephen@gnu.org) * Sebastian P. Luque (mailto:spluque@gmail.com) * Henning Redestig (mailto:henning.red@googlemail.com) * Vitalie Spinu (mailto:spinuvit@gmail.com) * Lionel Henry (mailto:lionel.hry@gmail.com) 1.8 License =========== The source and documentation of ESS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ESS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file COPYING in the same directory as this file for more details. 1.9 New Features ================ Changes and New Features in 17.11: * The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put '(require 'ess-r-mode)' or '(require 'ess-stata-mode)' in your init file. This is for experienced Emacs users as this requires setting up autoloads for '.R' files manually. We will keep maintaining 'ess-site' for easy loading of all ESS features. * Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor. * ESS[R]: New command 'ess-r-package-use-dir'. It sets the working directory of the current process to the current package directory. * ESS[R] Lookup for references in inferior buffers has been improved. New variable 'ess-r-package-source-roots' contains package sub-directories which are searched recursively during the file lookup point. Directories in 'ess-tracebug-search-path' are now also searched recursively. * ESS[R] Namespaced evaluation is now automatically enabled only in the 'R/' directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file. Changes and New Features in 16.10: * ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls. * ESS[R]: Backquoted names and '%op%' operators are recognised as sexp. This is useful for code navigation, e.g. with 'C-M-f' and 'C-M-b'. * ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode's code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set 'ess-roxy-fold-examples' to non-nil to automatically fold the examples field when you open a buffer. * ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set 'ess-roxy-fontify-examples' to non-nil to try it out. * ESS[R]: New package development command 'ess-r-devtools-ask' bound to 'C-c C-w C-a'. It asks with completion for any devtools command that takes 'pkg' as argument. * ESS[R]: New command 'C-c C-e C-r' to reload the inferior process. Currently only implemented for R. The R method runs 'inferior-ess-r-reload-hook' on reloading. * ESS[R]: 'ess-r-package-mode' is now activated in non-file buffers as well. Bug fixes in 16.10: * ESS[R]: Fix broken (un)flagging for debugging inside packages * ESS[R]: Fixes (and improvements) in Package development * ESS[R]: Completion no longer produces '...=' inside 'list( )'. * ESS[R]: Better debugging and tracing in packages. * ESS[R]: Better detection of symbols at point. * ESS[R]: No more spurious warnings on deletion of temporary files. * ESS[julia]: help and completion work (better) * ESS[julia]: available via 'ess-remote' Changes and New Features in 16.04: * ESS[R]: 'developer' functionality has been refactored. The new user interface consists of a single command 'ess-r-set-evaluation-env' bound by default to 'C-c C-t C-s'. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set 'ess-r-package-auto-set-evaluation-env' to 'nil' to disable this. * ESS[R]: New 'ess-r-package-mode' This development mode provides features to make package development easier. Currently, most of the commands are based on the 'devtools' packages and are accessible with 'C-c C-w' prefix. See the documentation of 'ess-r-package-mode' function for all available commands. With 'C-u' prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with '[pkg:NAME]' in the mode-line. * ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change 'options('html_type')'. * ESS[R]: New specialized breakpoints for debugging magrittr pipes * ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process. Bug fixes in 16.04: * ESS[R]: Roxygen blocks with backtics are now correctly filled * ESS[R]: Don't skip breakpoints in magrittr's 'debug_pipe' * ESS[R]: Error highlighting now understands 'testthat' type errors * ESS[Julia]: Added getwd and setwd generic commands Changes and New Features in 15.09: * ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with 'ess-offset-' give the actual offsets, those starting with 'ess-indent-' are control (commonly Boolean) variables, and those starting with 'ess-align-' are vertical alignment overrides which inhibit default offsets in specific situations. See 'ess-style-alist' for detailed description of the new indentation system and provided default indentation styles. * ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring 'ess-brace-imaginary-offset', 'ess-expression-offset' and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by 'ess-offset-continuations'. It can be set to either 'cascade' or 'straight' (the default). 'ess-arg-function-offset' has been replaced by 'ess-indent-from-lhs' and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to 'prev-call' and 'open-delim' in order to produce a consistent indentation. * ESS: A test framework has been set up. * ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with 'ess-offset-arguments' set to 'prev-line' is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation. * ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the 'examples' field without squashing the surrounding code in the comments. * ESS[R]: ESS can now format your code! This is controlled through the settings 'ess-fill-calls' and 'ess-fill-continuations'. When activated, '(fill-paragraph)' formats your calls and your formulas/continuations while making sure they don't go past 'fill-column'. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set 'ess-blink-filling' to nil to prevent this. * ESS[R]: Fix occasional missing error location fontification in inferior buffers. * ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace. * ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on 'julia-mode.el' from the Julia project. If you install ESS from the official tarball/zip file, 'julia-mode.el' is already included. Otherwise, if you install ESS by running 'make', then the latest version of 'julia-mode.el' is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running 'make', then ensure that you have the 'julia-mode.el', which you can get easily from MELPA for example. * iESS: For naming inferior processes, ESS can use 'projectile''s project root and it does so when 'ess-gen-proc-buffer-name-function' is set to 'ess-gen-proc-buffer-name:projectile-or-simple' as by default, or to another value beginning with 'ess-gen-proc-buffer-name:projectile-*'. Changes and New Features in 15.03-1: * ESS[R]: An indentation bug has been fixed (github issue 163) * ESS[R]: On windows, if 'ess-prefer-higher-bit' is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R. Changes and New Features in 15.03: * ESS[R]: Full native support for 'company-mode'. * ESS[R]: More efficient caching algorithm for R completion. * ESS: New offset variable 'ess-close-paren-offset' to control the indentation of the closing parentheses. * ESS[R]: Ask for CRAN mirror only once per emacs session. * ESS[R]: Detect 'library' and 'require' calls for better completion caching. * Buffer display is now customizable ('ess-show-buffer-action'). * Use 'y-or-n-p' instead of 'yes-or-no-p' throughout. * More support for ODS in ess-sas-graph-view. * Makefiles are now both UNIX and GNU friendly. * ESS[R]: Simplify directory lookup in 'ess-developer' (#137). * Make closed paren indentation consistent Bug Fixes in 15.03: * Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R). * Fix git version lookup * Don't check directory modtime in R dialect. * Declare all ess macros for edebug. * Add 'ess-smart-comma' to eldoc message functions. * Inform users when retrieving RDA aliases. * Line ending in '~' is also a continuation line. * Filing roxy paragraphs works as expected now. * In 'ess-developer-add-package', remove incorrect 'wait' argument from 'ess-get-words-from-vector' call. * Fix #96, #117, #120, #125, #134, #137. * Fix ess-quit-r. Call base::q() even if it is masked. * Fix 'ess-show-buffer' to always display the buffer in another window. * Makefile: Fix cd bug for directories with spaces in them * 'ess-kill-buffer-and-go' modified to not restart R Changes / Selected Bug Fixes in 14.09: * ESS[Julia]: Executable is changed to 'julia'. * ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported. * ESS[R]: Running R with 'gdb' debugger now works as expected * iESS: Inferior ESS buffers are now derived from 'comint-mode' * ESS[R]: 'ess-execute-screen-options' uses correct screen width in terminal sessions * ESS: 'ess-build-tags-for-directory' works when no TAGS file name was provided * ESS: 'ess-offset-statement-continued' is now respected everywhere except inside of the 'if' test condition. * ESS: New variable 'ess-offset-statement-first-continued' for indentation of the first line in multiline statements. * ESSR: Starting ',' in multiline statements indentation is now ignored to achieve a more pleasant alignment. * ESSR: Improved behavior of 'RET' in roxygen blocks. * ESS[R]: command cleaning with 'C-u C-u C-y' was broken with lines containing " + " * ESS[R]: fixed "empty watch window bug" * ESS[R]: don't ask for help location on ac-quick-help (request of github #81) * ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands * ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1) * ESS[Julia]: recognize function names ending with ! * ESS[Julia]: fix indentation of "for" comprehension syntax within brackets. Changes / Selected Bug Fixes in 13.09-1: * ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in '~/.config/ESSR/' directory on the remote machine * TRAMP: PAGER environment variable is now correctly set to 'inferior-ess-pager' * retrieval of help topics on remote machines is fixed * org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature) * 'ess-execute' is now bound to 'C-c C-e C-e' in 'ess-extra-map'. * completion works again in 'ess-execute' * ESS[R]: 'head' and 'tail' methods were replaced by 'htsummary' in 'ess-R-describe-object-at-point-commands' * ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation * ESS[transcript]: 'Clean Region' now works with multiline statements; 'ess-transcript-clean-region' etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by '+' * ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2 (https://github.com/emacs-ess/ESS/pulls/mlf176f2). Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately. * ESS[SAS]: 'ess-sas-edit-keys-toggle' default returns to 'nil' * ESS[R]: support for 'prettify-symbols-mode': contribution from Rudiger Sonderfeld * ESS[SWV]: knitr now evaluates in the current frame * ESS[developer]: ess-developer doesn't kill open DESCRIPTION files anymore * ESS[roxygen]: 'ess-roxy-preview-HTML' is now on 'C-c C-o C-w' and 'ess-roxy-preview-text' is now on 'C-c C-o C-t' * ESS: installation with 'make install' was simplified and should work out of the box on most *nix systems * ESS installation instructions simplified * fixed font-lock bug introduced in 13.09 that was causing very slow process output Changes/New Features in 13.09: * font-lock in process buffers doesn't "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input. * ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types. * ESS[julia]: a much better eldoc showing arguments of methods and data type constructors * ESS-developer: - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package 'ess-developer-packages'. The old behavior (activation on per-process basis) is still available on 'M-x ess-developer' in a process buffer. - integration with 'devtools' package. New command 'ess-developer-load-package' calls 'load_all' on the package containing current file. 'ess-developer-add-package' now offers IDO menu completions with available loading methods, currently 'library', and 'load_all'. Loading command can be customized with 'ess-developer-load-on-add-commands'. * 'TAB' now indents region if region is active (a contribution of Matthew Fidler in pull #41) * 'M-x ess-version' now reports full loading path and recognizes git and ELPA versions. * warning and error keyword are now highlighted with 'font-lock-warning-face' as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification). * eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process. * org-babel: evaluation is now org-friendly * help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by 'ess-help-reuse-window' custom variable. * help: ?foo pops IDO menu on multiple help files (so far it worked only for 'C-c C-v') * remote evaluation is considerably faster now on slow connections * ESS[R] tracebug R source references regular expressions are (mostly) language agnostic. * 'ess-function-call-face' inherits from 'font-lock-function-name-face' rather than 'font-lock-builtin-face'. * 'ess-inject-source' now accepts 'function-and-buffer' option. * Documentation: The "New Features" section (and 'NEWS') now represent recent changes: within the last year or so. All changes can be found in the new news.html (news.html) (or 'NEWS' and 'ONEWS'). * ESS[R] 'ess-rep-regexp' should no longer inf.loop (rarely!), and hence 'M-x ess-fix-miscellaneous' should neither. Changes/New Features in 13.05: * ESS[gretl]: Support for 'gretl' (both editing and sub-process interaction). A contribution of Ahmadou Dicko. * ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when 'ess-tracebug' is active). * ESS: 'C-c `' is now bound to 'ess-show-traceback' and 'C-c ~' is bound to 'ess-show-call-stack'. * ESS[R]: ESS stores function in 'ESSR' environment to avoid kludging users' global environment and accidental deletion. * ESS[R]: new variable 'ess-swv-processing-command' to control weaving and tangling. * ESS[R]: 'ess-default-style' has been changed (from 'DEFAULT') to 'RRR'. Use something like '(setq ess-default-style 'DEFAULT)' or '(setq ess-indent-level 2)' in your '~/.emacs' equivalent _before_ loading ESS, if you do not like this new "incompatible" default style. * ESS[julia]: ESS stores its functions in 'ESS' module. * ESS[julia]: Eldoc is now supported in julia modes * ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes * ESS[R]: 'ess-use-tracebug''s default has been changed to 't'. Set it to nil if you want to keep the previous behavior. * ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with 'ess-debug-minor-mode' and 'ess-debug-minor-mode-map'. * ESS[tracebug]: 'ess-tracebug-map' is an alias to 'ess-dev-map' 'C-c C-t'. * ESS[tracebug]: 'ess-bp-toggle-state' ('C-c C-t o') can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan). * ESS[tracebug]: 'ess-debug-flag-for-debugging' and 'ess-debug-unflag-for-debugging' work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in 'ess-developer-packages' ('C-c C-t C-a'). * ESS[R]: Eldoc (activated by 'ess-use-eldoc') has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user. Note that you can turn off ElDoc, by placing '(setq ess-use-eldoc nil)' in your '~/.emacs' file, prior to loading ESS, * ESS[SAS]: long over-looked 'SAS-mode-hook' appears! * ESS[SAS]: 'ess-sas-edit-keys-toggle' now defaults to 't' since 'sas-indent-line' is still broken, i.e. 'TAB' is now bound to 'ess-sas-tab-to-tab-stop' by default Changes/Bug Fixes in 12.09-2: * ESS: new 'ess-switch-to-end-of-proc-buffer' variable that controls whether 'C-c C-z' switches to the end of process buffer. The default is 't'. You can use prefix argument to 'C-c C-z' to toggle this variable. * ESS: fix in 'ess-eval-linewise' that was causing emacs to hang during R debugging with 'ess-eval-visibly' equal to 't'. * ESS: fix in 'ess-eval-linewise' that was causing emacs to recenter the prompt in visible window * ESS[tracebug]: A better handling of "Selection" prompts and debug related singlekey commands. * ESS: fix a bug in 'ess-switch-process' that was causing '*new*' selection to fail. * ESS[R]: Solve missing 'ess-local-process-name' bug in R-dired. * ESS[SWV]: 'ess-swv-PDF' doesn't ask for a command to run if there is only one command in 'ess-swv-pdflatex-commands'. * ESS[SWV]: 'ess-swv-weave' gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr). * ESS: 'ess-eval-*-and-step' functions go to next empty line at eob, instead of staying at the last line. Changes/New Features in 12.09-1: * ESS _Breaking Changes in Keys_: - New keymaps: 'ess-doc-map' bound to 'C-c C-d'; 'ess-extra-map' bound to 'C-c C-e'; 'ess-dump-object-into-edit-buffer' was moved on 'C-c C-e C-d' - roxygen map was moved on 'C-c C-o' and 'ess-roxy-update-entry' now resides on 'C-c C-o C-o' - ess-handy-commands is not bound anymore - 'ess-dev-map' (including 'ess-tracebug' and 'ess-developer') moved on 'C-c C-t' - 'C-c C-y' is deprecated in favor of 'C-c C-z C-z' * ESS[R] new command 'ess-describe-object-at-point' bound to 'C-c C-d C-e' (repeat 'C-e' or 'e' to cycle). It was inspired by Erik Iverson's 'ess-R-object-tooltip'. Customize 'ess-describe-at-point-method' to use tooltip instead of an electric buffer. * ESS: New command 'ess-build-tags-for-directory' bound to 'C-c C-e C-t' for building dialect specific tag tables. After building tags use 'M-.' to navigate to function and objects definitions. By default 'C-c C-e C-t' builds tags based on imenu regular expressions and also include other common languages '.c, .o, .cpp' etc. But it relies on external 'find' and 'etags' commands. If 'ess-build-tags-command' is defined (for 'R'), the inferior process is asked to build tags instead. * ESS: 'ess-switch-process' offers '*new*' alternative to start a new process instead of switching to one of the currently running processes. * ESS: Switching between processes ('C-c C-s') uses buffer names instead of the internal process names. Use 'M-x rename-buffer' command to conveniently rename your process buffers. * ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where 'proc' stands for the internal process name and 'dir' stands for the directory where the process was started in. The default is *proc*. For customization see 'ess-gen-proc-buffer-name-function'. * ESS: 'ess-eval-visibly-p' is deprecated in favor of 'ess-eval-visibly'. * ESS: New evaluation pattern 'nowait'. In addition to old 'nil' and 't' values, 'ess-eval-visibly' accepts 'nowait' for a visible evaluation with no waiting for the process. See 'ess-eval-visibly' for details on evaluation patterns. * ESS: New "Process" menu entry with process related commands and configuration * iESS: Process buffer is now automatically shown on errors * ESS: New 'ess-switch-to-inferior-or-script-buffer' command bound to 'C-c C-z' in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command. * ESSR-help: On multiple help pages with the same name, 'C-c C-v' now asks for user resolution directly in emacs. * ESS[R] ess-roxy: new variable 'ess-roxy-re' for fontification of cases where the number of leading '#' differs from 'ess-roxy-str'. * ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods' arguments after trailing ||. * ESS[R]: New 'ess-display-demos' command bound to 'C-c C-d o' and 'C-c C-d C-o' * ESS: New 'ess-help-web-search' command bound to 'C-c C-d w' and 'C-c C-d C-w' to facilitate interactive search of web resources. Implemented for 'R', 'Stata' and 'Julia'. See also 'ess-help-web-search-command'. * ESS: ess-pdf-viewer-pref accepts now command line arguments * ESS[Rnw]: Add knitr support. Customize 'ess-swv-processor' for the default processor. * ESS[Rnw]: More thorough renaming of remaining 'noweb-*' to 'ess-noweb-*'. * ESS[Rnw] new commands 'ess-eval-chunk-and-step' and 'ess-eval-chunk' bound to 'M-n C-c' and 'M-n C-M-x' to mirror standard ess commands in C-c map. * ESS[R] Auto-completion: new variable 'ess-ac-R-argument-suffix' to customize the insertion of trailing "=". Defaults to " = ". * ESS[Julia]: Added index, apropos and web-search to julia. * ESS help: More evaluation commands were added to ess-help mode ('C-c C-c', 'C-M-x' etc) Bug Fixes in 12.09-1: * iESShelp: Multiple help pages with the same name are properly handled on 'C-c C-v' * iESSremote: Evaluation with ESS remote no longer freezes emacs. * iESS: 'comint-previous-prompt' 'C-c C-p' no longer stops on secondary prompt "+". * iESS[R], iESS(Sqpe) [S] on Windows: The 'options("editor")' is now initialized to 'emacsclient' instead of the previous 'gnuclient'. The user may need to add the line '(server-start)' to the emacs initialization file. 'emacsclient' has been included with emacs since GNU Emacs 22.1. * ESS[Rnw] Fixed "connection to R" bug (in 12.09 only). * ESS[Rnw] Explicit 'ess-swv-stangle' and 'ess-swv-sweave' functions. * ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched "\"' * ESS[R] is more careful with the 'R' code injection. It now happens only once at the start of the session. * ESS[R]: Fixed auto-scrolling the comint buffer on evaluation. * ESS[Julia]: Solve several indentation and word navigation problems. * ESS[Julia]: Help system works again. Changes/New Features in 12.09: * Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs. * ESS[R]: On Windows, there is now a new customizable variable (currently called 'ess-directory-containing-R') to tell ESS where to look for the 'Rterm.exe' executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find 'Rterm.exe' executables when they are installed somewhere else. * ESS[julia]: _new_ mode for editing julia code ('*.jl'). Start with 'M-x julia'. Full interaction interface, imenu and basic error referencing are available. * ESS[R] noweb: 'noweb-mode' and 'noweb-font-lock-mode' have been renamed to 'ess-noweb-mode' and 'ess-noweb-font-lock-mode' to avoid conflicts with the "real" 'noweb-mode'. * ESS[R] noweb: The long standing font-lock bug has been solved in 'ess-noweb' interface. * ESS: Basic evaluation keys are now bound to 'ess-eval-region-*-' functions: - 'C-M-x' is bound to 'ess-eval-region-or-function-or-paragraph' - 'C-c C-c' is bound to 'ess-eval-region-or-function-or-paragraph-and-step' - 'C-RET' is bound to 'ess-eval-region-or-line-and-step' Each of these functions first evaluates the region whenever the region is active. * ESS: 'C-M-a'/'C-M-e' now step to beginning/end of paragraph if no function has been detected. * ESS: 'ess-eval-*-and-step' family of functions are now smarter, and don't step to end of buffer or end of chunk code ('@') when at the end of the code. * ESS: 'ess-handy-commands' function is bound to 'C-c h' * ESS: ESS is now _blinking_ the evaluated region. Set 'ess-blink-region' to nil to deactivate; 'ess-blink-delay' gives the duration of the blink. Evaluated region is "blinked" in 'highlight' face. * ESS[R-help] New key 'a' for "apropos()" in help buffers. Also available through 'C-c h'. * ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers. * ESS[R]: New customization interface for _font-lock_. ESS font-lock operates with predefined keywords. Default keywords are listed in 'ess-R-font-lock-keywords' and 'inferior-R-font-lock-keywords', which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through 'ESS/Font-lock' submenu. Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators. * ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set 'ess-use-auto-complete' to nil to deactivate. * ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default 'ac-auto-start' characters. * ESS no longer redefines default ac-sources, but only appends 'ac-source-filename' to it. * ESS: 'ac-source-R' now concatenates " = " to function arguments. * ESS: Menus for ESS and iESS have been reorganized and enriched with _Tracebug_ and _Developer_ submenus. * ESS[R]: 'ess-developer' and 'ess-tracebug' commands are available by default in 'ess-dev-map' which is bound to 'C-c d' in ESS and iESS maps. * ESS[R]: 'eldoc' truncates long lines whenever 'eldoc-echo-area-use-multiline-p' is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also 'ess-eldoc-abbreviation-style'. * ESS[R]: completion code pre-caches arguments of heavy generics such as 'plot' and 'print' to eliminated the undesirable delay on first request. * iESS: Prompts in inferior buffers are now highlighted uniformly with 'comint-highlight-prompt' face. * ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like 'Sys.sleep(5)' no longer stall emacs. * ESS: [R, S, Stata, Julia] have specialized 'ess-X-post-run-hook's, which are run at the end of subprocess initialization. * ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on 'C-c C-c' and other interactive commands. * ESS no longer auto-connects to a subprocess with a different dialect than the current buffer's one. * ESS: 'ess-arg-function-offset-new-line' is now a list for all the ESS indentation styles, which results in the following indentation after an open "(": a <- some.function(other.function( arg1, arg2) * ESS[SAS]: Improved MS RTF support for GNU Emacs; try 'ess-sas-rtf-portrait' and 'ess-sas-rtf-landscape'. Changes/Bug Fixes in 12.04-3: * ESS: basic support for package.el compatibility * ESS[R]: correct indentation of & and | continuation lines * 'M-x ess-version' shows the svn revision even after 'make install' * ESS[SAS]: improved XEmacs support * iESS[R]: better finding of previous prompt * ESS[Stata]: adjusted prompt for mata mode * ESS[R]: resolved name clashes with cl.el * ESS[R]: removed dependence on obsolete package assoc * New 'make' target 'lisp', to build the lisp-only part, i.e., not building the docs. Changes/New Features in 12.04-1: * iESS[Stata]: New interactive help invocation. * iESS[Stata]: New custom variable 'inferior-STA-start-file'. * iESS[Stata]: 'inferior-STA-program-name' is now "stata" and can be customized. * ESS[Stata] New sections in stata help files Syntax('s-S'), Remarks('r'), Title('t'). Bug Fixes in 12.04-1: * ESS[R]: Better 'ess-tracebug' error handling. * ESS[R]: Corrected 'ess-eldoc' help string filtering and improved argument caching. * ESS[R]: Indentation of non-block if/else/for/while lines fixed. * 'M-x ess-version' should work better. * ESS: Filename completion now again works inside strings. * iESS[Stata]: Fixed prompt detection issue. * ESS[Rd]: R is autostarted also from here, when needed. Changes/New Features in 12.04: * ESS: Reverting new behavior of 12.03, 'TAB' in 'ess-mode' no longer completes by default. If you want smart 'TAB' completion in R and S scripts, similarly to iESS behavior, set the variable 'ess-tab-complete-in-script' to 't'. Also see 'ess-first-tab-never-complete' for how to customize where first 'TAB' is allowed to complete. * ESS: completion is consistently bound to 'M-TAB' (aka 'M-C-i') in both Emacs23 and Emacs24. * ESS: The variable 'ess-arg-function-offset-new-line' introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to '(2) results in: a <- some.function( arg1, arg2) Changes/New Features in 12.03: * ESS indentation: new offset variable 'ess-arg-function-offset-new-line' controlling for the indentation of lines immediately following open '('. This is useful to shift backwards function arguments after a long function call expression: a <- some.function( arg1, arg2) instead of the old a <- some.function( arg1, arg2) If '(' is not followed by new line the behavior is unchanged: a <- some.function(arg1, arg2) This variable should be set as part of indentation style lists, or in ess-mode hook. * ESS[R]: 'C-c .' sets (indentation) style. * ESS: In ESS buffers 'yank'('C-y') command accepts double argument 'C-u C-u' to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files. * Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features ("Completion", "Developing with ESS", "ESS tracebug", "ESS developer", "ESS ElDoc", "IDO Completion" and "Evaluating Code") * RefCard: Reference card was updated to include new features. * Eldoc: Eldoc was rewritten and is activated by default. See 'ess-use-eldoc', 'ess-eldoc-show-on-symbol', 'ess-eldoc-abbreviation-style' variables for how to change the default behavior. _Note:_ 'skeleton-pair-insert-maybe' prohibits eldoc display, on '(' insertion. * ESS[R]: Eldoc shows arguments of a generic function whenever found. * ESS: 'TAB' in 'ess-mode' now indents and completes, if there is nothing to indent. Set 'ess-first-tab-never-completes-p' to 't' to make 'TAB' never complete on first invocation. Completion mechanism is similar to the completion in the 'inferior-ess-mode' - a filename expansion is tried, if not found ESS completes the symbol by querying the process. * ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by 'completion-at-point'. Also in accordance with emacs conventions, ESS doesn't bind 'M-TAB' for emacs 24 or higher. 'M-TAB' calls the default 'complete-symbol'. * ESS[R]: Out of the box integration with 'Auto Completion' mode http://cx4a.org/software/auto-complete (http://cx4a.org/software/auto-complete) . Three AC sources 'ac-source-R-args', 'ac-source-R-objects' and 'ac-source-R' are provided. The last one combines the previous two and makes them play nicely together. Set 'ess-use-auto-complete' to 't' to start using it. Refer to documentation string of 'ac-use-auto-complete' for further information. * ESS[R]: New unified and fast argument completion system, comprised of 'ess-funname.start', 'ess-function-arguments', 'ess-get-object-at-point'. Eldoc and auto-completion integration are using this system. * ESS: 'ess-switch-to-end-of-ESS'('C-c C-z'), and 'ess-switch-to-ESS'('C-c C-y'): Automatically start the process whenever needed. * ESS[R]: 'roxy' knows about previewing text version of the documentation. Bound to 'C-c C-e t'. * ESS[R]: Solved the "nil filename" bug in roxygen support. * ESS[R]: 'ess-tracebug' is now part of ESS: New Features: - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don't have to source your file, but just evaluate your code in normal fashion. Variable 'ess-tracebug-inject-source-p' controls this behavior - if t, always inject source reference, if ''function', inject only for functions (this is the default), if 'nil', never inject. During the source injection the value of 'ess-eval-visibly' is ignored. - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer ('C-c '') and jumps through this buffers if still alive, or in original org buffer otherwise. - New keys in watch mode: '?' and 'd' - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook * ESS[R]: New package 'ess-developer' to evaluate 'R' code directly in the package environment and namespace. It can be toggled on and off with 'C-c d t'. When 'ess-developer' is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with 'C-d a', and remove with 'C-d r'. Source the current file with 'C-d s'.Evaluation function which depend on '`ess-eval-region'' ask for the package to source the code into, 'ess-eval-function' and alternatives search for the function name in the development packages' environment and namespace and insert the definition accordingly. See the documentation section "Developing with ESS/ESS developer" for more details. * ESS[R] help system: New Features: - 'q' quits window instead of calling 'ess-switch-to-end-of-ESS'. This is consistent with emacs behavior help and other special buffers (_breaking change_). - 'k' kills window without asking for the name (pointed by Sam Steingold) - Help map inherits from 'special-mode-map' as sugested by Sam Steingold. - Package index: new function 'ess-display-index' bound to 'i' in help mode map. - Package vignettes: new function 'ess-display-vignettes' bound to 'v' in help mode map. - Display help in HTML browser: new function 'ess-display-help-in-browser' bound to 'w' in help mode map. It depends on 'R''s 'browser' option. - New custom variable 'ess-help-pop-to-buffer': if non-nil ESS help buffers are given focus on display. The default is 't' (_breaking change_). - New menu entries for the above functions. - Bogus help buffers are no longer generated by default, i.e. buffers of the form "No documentation for 'foo' in specified packages and libraries: you could try '??foo' ". 'ess-help-kill-bogus-buffers' now defaults to 't'. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning. * ESS now uses 'IDO' completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set 'ess-use-ido' to nil if you don't want the IDO completion. See the documentation string of 'ess-use-ido' for more information about 'IDO' and ESS configuration. * ESS[S]: "','" is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from '`ess-handy-commands'' list. If 'ess-R-smart-operators' is t '`ess-smart-comma' also inserts " " after comma. * ESS[S], notably 'R': Variable '`ess-handy-commands'' stores an alist of useful commands which are called by 'ess-smart-comma' in the inferior buffer. Currently containing: change-directory 'ess-change-directory' help-index 'ess-display-index' help-object 'ess-display-help-on-object' vignettes 'ess-display-vignettes' objects[ls] 'ess-execute-objects' search 'ess-execute-search' set-width 'ess-execute-screen-options' install.packages 'ess-install.packages' library 'ess-library' setRepos 'ess-setRepositories' sos 'ess-sos' Handy commands: 'ess-library', 'ess-install.packages', etc - ask for item with completion and execute the correspond command. 'ess-sos' is a interface to 'findFn' function in package 'sos'. If package 'sos' is not found, ask user for interactive install. * ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of 'ess-tracebug' and developer status of 'ess-developer' in all associated buffers. * ESS: New 'ess-completing-read' mechanism: ESS uses 'ido' completions whenever possible. Variable 'ess-use-ido' controls whether to use ido completion or not. Active by default. * ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future. * ESS[S]: New custom variable 'inferior-ess-S-prompt' to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation ('comint-previous-prompt' and 'comint-next-prompt') the inferior buffers. * ESS[R]: Internal 'R' completion retrieval ('ess-R-complete-object-name') was rewritten and is faster now. * ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged. * ESS: new functions to manipulate process plists: 'ess-process-get' and 'ess-process-set'. * ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in '> '. This could be overwritten by setting 'inferor-ess-primary-prompt'. * ESS[S], notably 'R': Saved command history: ESS-HISTORY-FILE now accepts 't' (default), 'nil', or a file name. By setting it to 'nil' no command line history is saved anymore. ESS-HISTORY-DIRECTORY now allows to have the history all saved in one "central" file. * ESS[R]: more Roxygen improvements. * ESS[R]: 'C-c .' to set (indentation) style. * ESS[R]: Functions with non-standard names (for example 'aaa-bbb:cc') are properly handled by font-lock and evaluation routines. * ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in 'ess-get-words-from-vector' and 'ess-command'. ess-17.11/NEWS0000644005071500004540000012756613202324202007751 00000000000000Changes and New Features in 17.11: * The ESS initialisation process has been streamlined. You can now load the R and Stata modes independently from the rest of ESS. Just put '(require 'ess-r-mode)' or '(require 'ess-stata-mode)' in your init file. This is for experienced Emacs users as this requires setting up autoloads for '.R' files manually. We will keep maintaining 'ess-site' for easy loading of all ESS features. * Reloading and quitting the process is now more robust. If no process is attached, ESS now switches automatically to one (prompting you for selection if there are several running). Reloading and quitting will now work during a debug session or when R is prompting for input (for instance after a crash). Finally, the window configuration is saved and restored after reloading to prevent the buffer of the new process from capturing the cursor. * ESS[R]: New command 'ess-r-package-use-dir'. It sets the working directory of the current process to the current package directory. * ESS[R] Lookup for references in inferior buffers has been improved. New variable 'ess-r-package-source-roots' contains package sub-directories which are searched recursively during the file lookup point. Directories in 'ess-tracebug-search-path' are now also searched recursively. * ESS[R] Namespaced evaluation is now automatically enabled only in the 'R/' directory. This way ESS will not attempt to update function definitions from a package if you are working from e.g. a test file. Changes and New Features in 16.10: * ESS[R]: Syntax highlighting is now more consistent. Backquoted names are not fontified as strings (since they really are identifiers). Furthermore they are now correctly recognised when they are function definitions or function calls. * ESS[R]: Backquoted names and '%op%' operators are recognised as sexp. This is useful for code navigation, e.g. with 'C-M-f' and 'C-M-b'. * ESS[R]: Integration of outline mode with roxygen examples fields. You can use outline mode's code folding commands to fold the examples field. This is especially nice to use with well documented packages with long examples set. Set 'ess-roxy-fold-examples' to non-nil to automatically fold the examples field when you open a buffer. * ESS[R]: New experimental feature: syntax highlighting in roxygen examples fields. This is turned off by default. Set 'ess-roxy-fontify-examples' to non-nil to try it out. * ESS[R]: New package development command 'ess-r-devtools-ask' bound to 'C-c C-w C-a'. It asks with completion for any devtools command that takes 'pkg' as argument. * ESS[R]: New command 'C-c C-e C-r' to reload the inferior process. Currently only implemented for R. The R method runs 'inferior-ess-r-reload-hook' on reloading. * ESS[R]: 'ess-r-package-mode' is now activated in non-file buffers as well. Bug fixes in 16.10: * ESS[R]: Fix broken (un)flagging for debugging inside packages * ESS[R]: Fixes (and improvements) in Package development * ESS[R]: Completion no longer produces '...=' inside 'list( )'. * ESS[R]: Better debugging and tracing in packages. * ESS[R]: Better detection of symbols at point. * ESS[R]: No more spurious warnings on deletion of temporary files. * ESS[julia]: help and completion work (better) * ESS[julia]: available via 'ess-remote' Changes and New Features in 16.04: * ESS[R]: 'developer' functionality has been refactored. The new user interface consists of a single command 'ess-r-set-evaluation-env' bound by default to 'C-c C-t C-s'. Once an evaluation environment has been set with, all subsequent ESS evaluation will source the code into that environment. By default, for file within R packages the evaluation environment is set to the package environment. Set 'ess-r-package-auto-set-evaluation-env' to 'nil' to disable this. * ESS[R]: New 'ess-r-package-mode' This development mode provides features to make package development easier. Currently, most of the commands are based on the 'devtools' packages and are accessible with 'C-c C-w' prefix. See the documentation of 'ess-r-package-mode' function for all available commands. With 'C-u' prefix each command asks for extra arguments to the underlying devtools function. This mode is automatically enabled in all files within R packages and is indicated with '[pkg:NAME]' in the mode-line. * ESS[R]: Help lookup has been improved. It is now possible to get help for namespaced objects such as pkg::foobar. Furthermore, ESS recognizes more reliably when you change 'options('html_type')'. * ESS[R]: New specialized breakpoints for debugging magrittr pipes * ESS: ESS now implements a simple message passing interface to communicate between ESS and inferior process. Bug fixes in 16.04: * ESS[R]: Roxygen blocks with backtics are now correctly filled * ESS[R]: Don't skip breakpoints in magrittr's 'debug_pipe' * ESS[R]: Error highlighting now understands 'testthat' type errors * ESS[Julia]: Added getwd and setwd generic commands Changes and New Features in 15.09: * ESS[R]: The indentation logic has been refactored. It should be faster, more consistent and more flexible. There are three types of indentation settings, those starting with 'ess-offset-' give the actual offsets, those starting with 'ess-indent-' are control (commonly Boolean) variables, and those starting with 'ess-align-' are vertical alignment overrides which inhibit default offsets in specific situations. See 'ess-style-alist' for detailed description of the new indentation system and provided default indentation styles. * ESS[R]: Deprecation of old indentation settings. As a consequence of the indentation re-factoring 'ess-brace-imaginary-offset', 'ess-expression-offset' and all delimiter-specific offsets are deprecated. The settings for indentation of continued statements have been replaced by 'ess-offset-continuations'. It can be set to either 'cascade' or 'straight' (the default). 'ess-arg-function-offset' has been replaced by 'ess-indent-from-lhs' and has been generalised to assignments. This setting now works with both statement blocks and expressions and only takes effect for offsets set to 'prev-call' and 'open-delim' in order to produce a consistent indentation. * ESS: A test framework has been set up. * ESS[R]: A new RStudio style is provided to mimic as closely as possible R files indented via RStudio. To reproduce the setup of some of the RStudio users, the RStudio- style with 'ess-offset-arguments' set to 'prev-line' is also provided. In addition, the new RRR+ style is equivalent to RRR except it indents blocks in function calls relatively to the opening delimiter. This style does not try to save horizontal space and produces more indentation. * ESS[R]: Roxygen fields will now be indented on paragraph refilling in order to make the documentation more readable. You can also refill commented lines in the 'examples' field without squashing the surrounding code in the comments. * ESS[R]: ESS can now format your code! This is controlled through the settings 'ess-fill-calls' and 'ess-fill-continuations'. When activated, '(fill-paragraph)' formats your calls and your formulas/continuations while making sure they don't go past 'fill-column'. Repeated refills cycle through different styles (see the docstrings for more details). By default, the refilled region blinks. Set 'ess-blink-filling' to nil to prevent this. * ESS[R]: Fix occasional missing error location fontification in inferior buffers. * ESS[R]: ess-developer now correctly assigned the environment of new functions to the package namespace. * ESS[Julia]: ?[topic] now works in the *julia* buffer. Note that support for editing Julia code now depends on 'julia-mode.el' from the Julia project. If you install ESS from the official tarball/zip file, 'julia-mode.el' is already included. Otherwise, if you install ESS by running 'make', then the latest version of 'julia-mode.el' is downloaded (and so you need an active internet connection to install) during the installation process. Alternatively, if you run ESS without running 'make', then ensure that you have the 'julia-mode.el', which you can get easily from MELPA for example. * iESS: For naming inferior processes, ESS can use 'projectile''s project root and it does so when 'ess-gen-proc-buffer-name-function' is set to 'ess-gen-proc-buffer-name:projectile-or-simple' as by default, or to another value beginning with 'ess-gen-proc-buffer-name:projectile-*'. Changes and New Features in 15.03-1: * ESS[R]: An indentation bug has been fixed (github issue 163) * ESS[R]: On windows, if 'ess-prefer-higher-bit' is non-nil (the default), then R-newest will try to run a 64 bit (rather than 32 bit) version of R. Changes and New Features in 15.03: * ESS[R]: Full native support for 'company-mode'. * ESS[R]: More efficient caching algorithm for R completion. * ESS: New offset variable 'ess-close-paren-offset' to control the indentation of the closing parentheses. * ESS[R]: Ask for CRAN mirror only once per emacs session. * ESS[R]: Detect 'library' and 'require' calls for better completion caching. * Buffer display is now customizable ('ess-show-buffer-action'). * Use 'y-or-n-p' instead of 'yes-or-no-p' throughout. * More support for ODS in ess-sas-graph-view. * Makefiles are now both UNIX and GNU friendly. * ESS[R]: Simplify directory lookup in 'ess-developer' (#137). * Make closed paren indentation consistent Bug Fixes in 15.03: * Fix open brace indentation bug (#27 in ess/R-ESS-bugs.R). * Fix git version lookup * Don't check directory modtime in R dialect. * Declare all ess macros for edebug. * Add 'ess-smart-comma' to eldoc message functions. * Inform users when retrieving RDA aliases. * Line ending in '~' is also a continuation line. * Filing roxy paragraphs works as expected now. * In 'ess-developer-add-package', remove incorrect 'wait' argument from 'ess-get-words-from-vector' call. * Fix #96, #117, #120, #125, #134, #137. * Fix ess-quit-r. Call base::q() even if it is masked. * Fix 'ess-show-buffer' to always display the buffer in another window. * Makefile: Fix cd bug for directories with spaces in them * 'ess-kill-buffer-and-go' modified to not restart R Changes / Selected Bug Fixes in 14.09: * ESS[Julia]: Executable is changed to 'julia'. * ESS[Julia]: Completion and help system was adjusted to Julia v.0.3.0. Julia v.0.2.x is no more supported. * ESS[R]: Running R with 'gdb' debugger now works as expected * iESS: Inferior ESS buffers are now derived from 'comint-mode' * ESS[R]: 'ess-execute-screen-options' uses correct screen width in terminal sessions * ESS: 'ess-build-tags-for-directory' works when no TAGS file name was provided * ESS: 'ess-offset-statement-continued' is now respected everywhere except inside of the 'if' test condition. * ESS: New variable 'ess-offset-statement-first-continued' for indentation of the first line in multiline statements. * ESSR: Starting ',' in multiline statements indentation is now ignored to achieve a more pleasant alignment. * ESSR: Improved behavior of 'RET' in roxygen blocks. * ESS[R]: command cleaning with 'C-u C-u C-y' was broken with lines containing " + " * ESS[R]: fixed "empty watch window bug" * ESS[R]: don't ask for help location on ac-quick-help (request of github #81) * ESS[R]: "importClassesFrom" and "importMethodsFrom" were added to the list of two-parameter roxygen commands * ESS[R]: fix vignetes display and hyperlinks (were broken in 13.09-1) * ESS[Julia]: recognize function names ending with ! * ESS[Julia]: fix indentation of "for" comprehension syntax within brackets. Changes / Selected Bug Fixes in 13.09-1: * ess-remote and TRAMP: R support code is now downloaded in binary form instead of being injected from local machine. The R code is stored in '~/.config/ESSR/' directory on the remote machine * TRAMP: PAGER environment variable is now correctly set to 'inferior-ess-pager' * retrieval of help topics on remote machines is fixed * org-babel: source references of R code executed from org files correctly point to source references in original org files (version 8.2.1 or higher of org-mode is required for this feature) * 'ess-execute' is now bound to 'C-c C-e C-e' in 'ess-extra-map'. * completion works again in 'ess-execute' * ESS[R]: 'head' and 'tail' methods were replaced by 'htsummary' in 'ess-R-describe-object-at-point-commands' * ESS[roxygen]: evaluation commands now work in roxygen blocks. Leading comments are automatically removed before the evaluation * ESS[transcript]: 'Clean Region' now works with multiline statements; 'ess-transcript-clean-region' etc. correctly treat multiline statements, i.e., no longer forgets the lines typically preceded by '+' * ESS[SAS]: Three features/fixes with special thanks to Matthew Fidler https://github.com/emacs-ess/ESS/pulls/mlf176f2 (https://github.com/emacs-ess/ESS/pulls/mlf176f2). Turn on SAS log mode when appropriate. Indent comments and CARDS statement more appropriately. * ESS[SAS]: 'ess-sas-edit-keys-toggle' default returns to 'nil' * ESS[R]: support for 'prettify-symbols-mode': contribution from Rudiger Sonderfeld * ESS[SWV]: knitr now evaluates in the current frame * ESS[developer]: ess-developer doesn't kill open DESCRIPTION files anymore * ESS[roxygen]: 'ess-roxy-preview-HTML' is now on 'C-c C-o C-w' and 'ess-roxy-preview-text' is now on 'C-c C-o C-t' * ESS: installation with 'make install' was simplified and should work out of the box on most *nix systems * ESS installation instructions simplified * fixed font-lock bug introduced in 13.09 that was causing very slow process output Changes/New Features in 13.09: * font-lock in process buffers doesn't "spill" over prompts. Missing closing string delimiters should not cause wrong fontification of the following command input. * ESS[julia]: full features M-TAB completion and auto-complete support, which now works for modules, structures and data types. * ESS[julia]: a much better eldoc showing arguments of methods and data type constructors * ESS-developer: - ESS-developer work-flow pattern has been streamlined: ESS-developer is now automatically activated on per-file basis if the file is part of a developed package 'ess-developer-packages'. The old behavior (activation on per-process basis) is still available on 'M-x ess-developer' in a process buffer. - integration with 'devtools' package. New command 'ess-developer-load-package' calls 'load_all' on the package containing current file. 'ess-developer-add-package' now offers IDO menu completions with available loading methods, currently 'library', and 'load_all'. Loading command can be customized with 'ess-developer-load-on-add-commands'. * 'TAB' now indents region if region is active (a contribution of Matthew Fidler in pull #41) * 'M-x ess-version' now reports full loading path and recognizes git and ELPA versions. * warning and error keyword are now highlighted with 'font-lock-warning-face' as they should be, (for quite some time these keywords have been hijacked by compilation mode fontification). * eldoc: Eldoc now recognizes multiple processes. If current process is busy, or current buffer is not associated with a process, eldoc picks its completions from the first available free process. * org-babel: evaluation is now org-friendly * help: new help buffers now try to reuse ess-help buffers. This behavior is controlled by 'ess-help-reuse-window' custom variable. * help: ?foo pops IDO menu on multiple help files (so far it worked only for 'C-c C-v') * remote evaluation is considerably faster now on slow connections * ESS[R] tracebug R source references regular expressions are (mostly) language agnostic. * 'ess-function-call-face' inherits from 'font-lock-function-name-face' rather than 'font-lock-builtin-face'. * 'ess-inject-source' now accepts 'function-and-buffer' option. * Documentation: The "New Features" section (and 'NEWS') now represent recent changes: within the last year or so. All changes can be found in the new news.html (news.html) (or 'NEWS' and 'ONEWS'). * ESS[R] 'ess-rep-regexp' should no longer inf.loop (rarely!), and hence 'M-x ess-fix-miscellaneous' should neither. Changes/New Features in 13.05: * ESS[gretl]: Support for 'gretl' (both editing and sub-process interaction). A contribution of Ahmadou Dicko. * ESS: process output display is 4-10 times faster due to new caching and only occasional emacs re-display (for the moment this functionality is available only when 'ess-tracebug' is active). * ESS: 'C-c `' is now bound to 'ess-show-traceback' and 'C-c ~' is bound to 'ess-show-call-stack'. * ESS[R]: ESS stores function in 'ESSR' environment to avoid kludging users' global environment and accidental deletion. * ESS[R]: new variable 'ess-swv-processing-command' to control weaving and tangling. * ESS[R]: 'ess-default-style' has been changed (from 'DEFAULT') to 'RRR'. Use something like '(setq ess-default-style 'DEFAULT)' or '(setq ess-indent-level 2)' in your '~/.emacs' equivalent _before_ loading ESS, if you do not like this new "incompatible" default style. * ESS[julia]: ESS stores its functions in 'ESS' module. * ESS[julia]: Eldoc is now supported in julia modes * ESS[julia]: Adjusted error reference detection and interactive help to julia internal changes * ESS[R]: 'ess-use-tracebug''s default has been changed to 't'. Set it to nil if you want to keep the previous behavior. * ESS[tracebug]: Electric debug keys have been removed [breaking change] The functionality was replaced with 'ess-debug-minor-mode' and 'ess-debug-minor-mode-map'. * ESS[tracebug]: 'ess-tracebug-map' is an alias to 'ess-dev-map' 'C-c C-t'. * ESS[tracebug]: 'ess-bp-toggle-state' ('C-c C-t o') can now be used during the debug session to toggle breakpoints on the fly (suggestion by Ross Boylan). * ESS[tracebug]: 'ess-debug-flag-for-debugging' and 'ess-debug-unflag-for-debugging' work correctly from the debugging contexts. These commands also recognize non-exported functions for the packages listed in 'ess-developer-packages' ('C-c C-t C-a'). * ESS[R]: Eldoc (activated by 'ess-use-eldoc') has become more sophisticated, and hence also more intruding in the interface between the Statistics softare, e.g., R, and the user. Note that you can turn off ElDoc, by placing '(setq ess-use-eldoc nil)' in your '~/.emacs' file, prior to loading ESS, * ESS[SAS]: long over-looked 'SAS-mode-hook' appears! * ESS[SAS]: 'ess-sas-edit-keys-toggle' now defaults to 't' since 'sas-indent-line' is still broken, i.e. 'TAB' is now bound to 'ess-sas-tab-to-tab-stop' by default Changes/Bug Fixes in 12.09-2: * ESS: new 'ess-switch-to-end-of-proc-buffer' variable that controls whether 'C-c C-z' switches to the end of process buffer. The default is 't'. You can use prefix argument to 'C-c C-z' to toggle this variable. * ESS: fix in 'ess-eval-linewise' that was causing emacs to hang during R debugging with 'ess-eval-visibly' equal to 't'. * ESS: fix in 'ess-eval-linewise' that was causing emacs to recenter the prompt in visible window * ESS[tracebug]: A better handling of "Selection" prompts and debug related singlekey commands. * ESS: fix a bug in 'ess-switch-process' that was causing '*new*' selection to fail. * ESS[R]: Solve missing 'ess-local-process-name' bug in R-dired. * ESS[SWV]: 'ess-swv-PDF' doesn't ask for a command to run if there is only one command in 'ess-swv-pdflatex-commands'. * ESS[SWV]: 'ess-swv-weave' gained an universal argument to allow for an interactive choice between available weavers (sweave, knitr). * ESS: 'ess-eval-*-and-step' functions go to next empty line at eob, instead of staying at the last line. Changes/New Features in 12.09-1: * ESS _Breaking Changes in Keys_: - New keymaps: 'ess-doc-map' bound to 'C-c C-d'; 'ess-extra-map' bound to 'C-c C-e'; 'ess-dump-object-into-edit-buffer' was moved on 'C-c C-e C-d' - roxygen map was moved on 'C-c C-o' and 'ess-roxy-update-entry' now resides on 'C-c C-o C-o' - ess-handy-commands is not bound anymore - 'ess-dev-map' (including 'ess-tracebug' and 'ess-developer') moved on 'C-c C-t' - 'C-c C-y' is deprecated in favor of 'C-c C-z C-z' * ESS[R] new command 'ess-describe-object-at-point' bound to 'C-c C-d C-e' (repeat 'C-e' or 'e' to cycle). It was inspired by Erik Iverson's 'ess-R-object-tooltip'. Customize 'ess-describe-at-point-method' to use tooltip instead of an electric buffer. * ESS: New command 'ess-build-tags-for-directory' bound to 'C-c C-e C-t' for building dialect specific tag tables. After building tags use 'M-.' to navigate to function and objects definitions. By default 'C-c C-e C-t' builds tags based on imenu regular expressions and also include other common languages '.c, .o, .cpp' etc. But it relies on external 'find' and 'etags' commands. If 'ess-build-tags-command' is defined (for 'R'), the inferior process is asked to build tags instead. * ESS: 'ess-switch-process' offers '*new*' alternative to start a new process instead of switching to one of the currently running processes. * ESS: Switching between processes ('C-c C-s') uses buffer names instead of the internal process names. Use 'M-x rename-buffer' command to conveniently rename your process buffers. * ESS: Process buffers can be automatically named on process creation according to user specified scheme. Default schemes are *proc*, *proc:dir* and *proc:abbr-long-dir* where 'proc' stands for the internal process name and 'dir' stands for the directory where the process was started in. The default is *proc*. For customization see 'ess-gen-proc-buffer-name-function'. * ESS: 'ess-eval-visibly-p' is deprecated in favor of 'ess-eval-visibly'. * ESS: New evaluation pattern 'nowait'. In addition to old 'nil' and 't' values, 'ess-eval-visibly' accepts 'nowait' for a visible evaluation with no waiting for the process. See 'ess-eval-visibly' for details on evaluation patterns. * ESS: New "Process" menu entry with process related commands and configuration * iESS: Process buffer is now automatically shown on errors * ESS: New 'ess-switch-to-inferior-or-script-buffer' command bound to 'C-c C-z' in both script and process buffers. If invoked form process buffer it switches to the most recent buffer of the same dialect. It is a single key command. * ESSR-help: On multiple help pages with the same name, 'C-c C-v' now asks for user resolution directly in emacs. * ESS[R] ess-roxy: new variable 'ess-roxy-re' for fontification of cases where the number of leading '#' differs from 'ess-roxy-str'. * ESS[R] Eldoc was considerably enhanced. It now finds hidden default S3 methods and displays non-default methods' arguments after trailing ||. * ESS[R]: New 'ess-display-demos' command bound to 'C-c C-d o' and 'C-c C-d C-o' * ESS: New 'ess-help-web-search' command bound to 'C-c C-d w' and 'C-c C-d C-w' to facilitate interactive search of web resources. Implemented for 'R', 'Stata' and 'Julia'. See also 'ess-help-web-search-command'. * ESS: ess-pdf-viewer-pref accepts now command line arguments * ESS[Rnw]: Add knitr support. Customize 'ess-swv-processor' for the default processor. * ESS[Rnw]: More thorough renaming of remaining 'noweb-*' to 'ess-noweb-*'. * ESS[Rnw] new commands 'ess-eval-chunk-and-step' and 'ess-eval-chunk' bound to 'M-n C-c' and 'M-n C-M-x' to mirror standard ess commands in C-c map. * ESS[R] Auto-completion: new variable 'ess-ac-R-argument-suffix' to customize the insertion of trailing "=". Defaults to " = ". * ESS[Julia]: Added index, apropos and web-search to julia. * ESS help: More evaluation commands were added to ess-help mode ('C-c C-c', 'C-M-x' etc) Bug Fixes in 12.09-1: * iESShelp: Multiple help pages with the same name are properly handled on 'C-c C-v' * iESSremote: Evaluation with ESS remote no longer freezes emacs. * iESS: 'comint-previous-prompt' 'C-c C-p' no longer stops on secondary prompt "+". * iESS[R], iESS(Sqpe) [S] on Windows: The 'options("editor")' is now initialized to 'emacsclient' instead of the previous 'gnuclient'. The user may need to add the line '(server-start)' to the emacs initialization file. 'emacsclient' has been included with emacs since GNU Emacs 22.1. * ESS[Rnw] Fixed "connection to R" bug (in 12.09 only). * ESS[Rnw] Explicit 'ess-swv-stangle' and 'ess-swv-sweave' functions. * ESS[Rnw] Fixed completion and smart underscore problems cause by unmatched "\"' * ESS[R] is more careful with the 'R' code injection. It now happens only once at the start of the session. * ESS[R]: Fixed auto-scrolling the comint buffer on evaluation. * ESS[Julia]: Solve several indentation and word navigation problems. * ESS[Julia]: Help system works again. Changes/New Features in 12.09: * Due to XEmacs lacking some features that ESS requires, ESS support of XEmacs ends with ESS 12.04-4. This decision will be re-visited in the future as XEmacs continues to sync with GNU Emacs. * ESS[R]: On Windows, there is now a new customizable variable (currently called 'ess-directory-containing-R') to tell ESS where to look for the 'Rterm.exe' executables. The name of the variable and the values it can take are both in beta and subject to change. Prior to this variable, ESS searched only in the default installation directory. Setting this variable now tells ESS how to find 'Rterm.exe' executables when they are installed somewhere else. * ESS[julia]: _new_ mode for editing julia code ('*.jl'). Start with 'M-x julia'. Full interaction interface, imenu and basic error referencing are available. * ESS[R] noweb: 'noweb-mode' and 'noweb-font-lock-mode' have been renamed to 'ess-noweb-mode' and 'ess-noweb-font-lock-mode' to avoid conflicts with the "real" 'noweb-mode'. * ESS[R] noweb: The long standing font-lock bug has been solved in 'ess-noweb' interface. * ESS: Basic evaluation keys are now bound to 'ess-eval-region-*-' functions: - 'C-M-x' is bound to 'ess-eval-region-or-function-or-paragraph' - 'C-c C-c' is bound to 'ess-eval-region-or-function-or-paragraph-and-step' - 'C-RET' is bound to 'ess-eval-region-or-line-and-step' Each of these functions first evaluates the region whenever the region is active. * ESS: 'C-M-a'/'C-M-e' now step to beginning/end of paragraph if no function has been detected. * ESS: 'ess-eval-*-and-step' family of functions are now smarter, and don't step to end of buffer or end of chunk code ('@') when at the end of the code. * ESS: 'ess-handy-commands' function is bound to 'C-c h' * ESS: ESS is now _blinking_ the evaluated region. Set 'ess-blink-region' to nil to deactivate; 'ess-blink-delay' gives the duration of the blink. Evaluated region is "blinked" in 'highlight' face. * ESS[R-help] New key 'a' for "apropos()" in help buffers. Also available through 'C-c h'. * ESS[R-help] All R commands of type foo?bar and foo??bar are recognized and redirected into appropriate *ESS-help* buffers. * ESS[R]: New customization interface for _font-lock_. ESS font-lock operates with predefined keywords. Default keywords are listed in 'ess-R-font-lock-keywords' and 'inferior-R-font-lock-keywords', which see. The user can easily customize those by adding new keywords. These variables can also be interactively accessed and saved through 'ESS/Font-lock' submenu. Several new fontification keywords have been added. Most notably the keywords for highlighting of function calls, numbers and operators. * ESS[R]: auto-complete is now activated by default whenever auto-complete package is detected. Set 'ess-use-auto-complete' to nil to deactivate. * ESS[R]: R AC sources are no longer auto-starting at 0 characters but at the default 'ac-auto-start' characters. * ESS no longer redefines default ac-sources, but only appends 'ac-source-filename' to it. * ESS: 'ac-source-R' now concatenates " = " to function arguments. * ESS: Menus for ESS and iESS have been reorganized and enriched with _Tracebug_ and _Developer_ submenus. * ESS[R]: 'ess-developer' and 'ess-tracebug' commands are available by default in 'ess-dev-map' which is bound to 'C-c d' in ESS and iESS maps. * ESS[R]: 'eldoc' truncates long lines whenever 'eldoc-echo-area-use-multiline-p' is non-nil (the default). Set this variable to t if you insist on multiline eldoc. See also 'ess-eldoc-abbreviation-style'. * ESS[R]: completion code pre-caches arguments of heavy generics such as 'plot' and 'print' to eliminated the undesirable delay on first request. * iESS: Prompts in inferior buffers are now highlighted uniformly with 'comint-highlight-prompt' face. * ESS[R]: R process no longer wait for the completion of input in inferior buffer. Thus, long running commands like 'Sys.sleep(5)' no longer stall emacs. * ESS: [R, S, Stata, Julia] have specialized 'ess-X-post-run-hook's, which are run at the end of subprocess initialization. * ESS[Stata]: All interactive evaluation commands work as expected. On-line comments are removed before the evaluation and multiline comments are skipped on 'C-c C-c' and other interactive commands. * ESS no longer auto-connects to a subprocess with a different dialect than the current buffer's one. * ESS: 'ess-arg-function-offset-new-line' is now a list for all the ESS indentation styles, which results in the following indentation after an open "(": a <- some.function(other.function( arg1, arg2) * ESS[SAS]: Improved MS RTF support for GNU Emacs; try 'ess-sas-rtf-portrait' and 'ess-sas-rtf-landscape'. Changes/Bug Fixes in 12.04-3: * ESS: basic support for package.el compatibility * ESS[R]: correct indentation of & and | continuation lines * 'M-x ess-version' shows the svn revision even after 'make install' * ESS[SAS]: improved XEmacs support * iESS[R]: better finding of previous prompt * ESS[Stata]: adjusted prompt for mata mode * ESS[R]: resolved name clashes with cl.el * ESS[R]: removed dependence on obsolete package assoc * New 'make' target 'lisp', to build the lisp-only part, i.e., not building the docs. Changes/New Features in 12.04-1: * iESS[Stata]: New interactive help invocation. * iESS[Stata]: New custom variable 'inferior-STA-start-file'. * iESS[Stata]: 'inferior-STA-program-name' is now "stata" and can be customized. * ESS[Stata] New sections in stata help files Syntax('s-S'), Remarks('r'), Title('t'). Bug Fixes in 12.04-1: * ESS[R]: Better 'ess-tracebug' error handling. * ESS[R]: Corrected 'ess-eldoc' help string filtering and improved argument caching. * ESS[R]: Indentation of non-block if/else/for/while lines fixed. * 'M-x ess-version' should work better. * ESS: Filename completion now again works inside strings. * iESS[Stata]: Fixed prompt detection issue. * ESS[Rd]: R is autostarted also from here, when needed. Changes/New Features in 12.04: * ESS: Reverting new behavior of 12.03, 'TAB' in 'ess-mode' no longer completes by default. If you want smart 'TAB' completion in R and S scripts, similarly to iESS behavior, set the variable 'ess-tab-complete-in-script' to 't'. Also see 'ess-first-tab-never-complete' for how to customize where first 'TAB' is allowed to complete. * ESS: completion is consistently bound to 'M-TAB' (aka 'M-C-i') in both Emacs23 and Emacs24. * ESS: The variable 'ess-arg-function-offset-new-line' introduced in ESS(12.03) now accepts a list with the first element a number to indicate that the offset should be computed from the indent of the previous line. For example setting it to '(2) results in: a <- some.function( arg1, arg2) Changes/New Features in 12.03: * ESS indentation: new offset variable 'ess-arg-function-offset-new-line' controlling for the indentation of lines immediately following open '('. This is useful to shift backwards function arguments after a long function call expression: a <- some.function( arg1, arg2) instead of the old a <- some.function( arg1, arg2) If '(' is not followed by new line the behavior is unchanged: a <- some.function(arg1, arg2) This variable should be set as part of indentation style lists, or in ess-mode hook. * ESS[R]: 'C-c .' sets (indentation) style. * ESS: In ESS buffers 'yank'('C-y') command accepts double argument 'C-u C-u' to paste commands only. It deletes any lines not beginning with a prompt, and then removes the prompt from those lines that remain. Useful to paste code from emails, documentation, inferior ESS buffers or transcript files. * Documentation: ESS user manual has been rearranged and completed with several new chapters and sections to reflect newly added features ("Completion", "Developing with ESS", "ESS tracebug", "ESS developer", "ESS ElDoc", "IDO Completion" and "Evaluating Code") * RefCard: Reference card was updated to include new features. * Eldoc: Eldoc was rewritten and is activated by default. See 'ess-use-eldoc', 'ess-eldoc-show-on-symbol', 'ess-eldoc-abbreviation-style' variables for how to change the default behavior. _Note:_ 'skeleton-pair-insert-maybe' prohibits eldoc display, on '(' insertion. * ESS[R]: Eldoc shows arguments of a generic function whenever found. * ESS: 'TAB' in 'ess-mode' now indents and completes, if there is nothing to indent. Set 'ess-first-tab-never-completes-p' to 't' to make 'TAB' never complete on first invocation. Completion mechanism is similar to the completion in the 'inferior-ess-mode' - a filename expansion is tried, if not found ESS completes the symbol by querying the process. * ESS for emacs version 24 or higher: ESS is fully compatible with the emacs 24 completion scheme, i.e. all the completion is done by 'completion-at-point'. Also in accordance with emacs conventions, ESS doesn't bind 'M-TAB' for emacs 24 or higher. 'M-TAB' calls the default 'complete-symbol'. * ESS[R]: Out of the box integration with 'Auto Completion' mode http://cx4a.org/software/auto-complete (http://cx4a.org/software/auto-complete) . Three AC sources 'ac-source-R-args', 'ac-source-R-objects' and 'ac-source-R' are provided. The last one combines the previous two and makes them play nicely together. Set 'ess-use-auto-complete' to 't' to start using it. Refer to documentation string of 'ac-use-auto-complete' for further information. * ESS[R]: New unified and fast argument completion system, comprised of 'ess-funname.start', 'ess-function-arguments', 'ess-get-object-at-point'. Eldoc and auto-completion integration are using this system. * ESS: 'ess-switch-to-end-of-ESS'('C-c C-z'), and 'ess-switch-to-ESS'('C-c C-y'): Automatically start the process whenever needed. * ESS[R]: 'roxy' knows about previewing text version of the documentation. Bound to 'C-c C-e t'. * ESS[R]: Solved the "nil filename" bug in roxygen support. * ESS[R]: 'ess-tracebug' is now part of ESS: New Features: - Source injection: Tracebug now can inject source references on the fly during code evaluation, i.e. you don't have to source your file, but just evaluate your code in normal fashion. Variable 'ess-tracebug-inject-source-p' controls this behavior - if t, always inject source reference, if ''function', inject only for functions (this is the default), if 'nil', never inject. During the source injection the value of 'ess-eval-visibly' is ignored. - Org-mode support: Visual debugger is now aware of the temporary org source editing buffer ('C-c '') and jumps through this buffers if still alive, or in original org buffer otherwise. - New keys in watch mode: '?' and 'd' - Two new hooks: ess-tracebug-enter-hook and ess-tracebug-exit-hook * ESS[R]: New package 'ess-developer' to evaluate 'R' code directly in the package environment and namespace. It can be toggled on and off with 'C-c d t'. When 'ess-developer' is on all ESS evaluation commands are redefined to evaluate code in appropriate environments. Add package names to the list of your development packages with 'C-d a', and remove with 'C-d r'. Source the current file with 'C-d s'.Evaluation function which depend on '`ess-eval-region'' ask for the package to source the code into, 'ess-eval-function' and alternatives search for the function name in the development packages' environment and namespace and insert the definition accordingly. See the documentation section "Developing with ESS/ESS developer" for more details. * ESS[R] help system: New Features: - 'q' quits window instead of calling 'ess-switch-to-end-of-ESS'. This is consistent with emacs behavior help and other special buffers (_breaking change_). - 'k' kills window without asking for the name (pointed by Sam Steingold) - Help map inherits from 'special-mode-map' as sugested by Sam Steingold. - Package index: new function 'ess-display-index' bound to 'i' in help mode map. - Package vignettes: new function 'ess-display-vignettes' bound to 'v' in help mode map. - Display help in HTML browser: new function 'ess-display-help-in-browser' bound to 'w' in help mode map. It depends on 'R''s 'browser' option. - New custom variable 'ess-help-pop-to-buffer': if non-nil ESS help buffers are given focus on display. The default is 't' (_breaking change_). - New menu entries for the above functions. - Bogus help buffers are no longer generated by default, i.e. buffers of the form "No documentation for 'foo' in specified packages and libraries: you could try '??foo' ". 'ess-help-kill-bogus-buffers' now defaults to 't'. Beware, there may be instances where the default is unsatisfactory such as debugging and/or during R development. Thanks to Ross Boylan for making the suggestion, Sam Steingold for reminding us of this variable and Martin Maechler for the warning. * ESS now uses 'IDO' completing read functionality for all the interactive requests. It uses ido completion mechanism whenever available, and falls back on classical completing-read otherwise. You can set 'ess-use-ido' to nil if you don't want the IDO completion. See the documentation string of 'ess-use-ido' for more information about 'IDO' and ESS configuration. * ESS[S]: "','" is bound to ess-smart-comma: If comma is invoked at the process marker of an ESS inferior buffer, request and execute a command from '`ess-handy-commands'' list. If 'ess-R-smart-operators' is t '`ess-smart-comma' also inserts " " after comma. * ESS[S], notably 'R': Variable '`ess-handy-commands'' stores an alist of useful commands which are called by 'ess-smart-comma' in the inferior buffer. Currently containing: change-directory 'ess-change-directory' help-index 'ess-display-index' help-object 'ess-display-help-on-object' vignettes 'ess-display-vignettes' objects[ls] 'ess-execute-objects' search 'ess-execute-search' set-width 'ess-execute-screen-options' install.packages 'ess-install.packages' library 'ess-library' setRepos 'ess-setRepositories' sos 'ess-sos' Handy commands: 'ess-library', 'ess-install.packages', etc - ask for item with completion and execute the correspond command. 'ess-sos' is a interface to 'findFn' function in package 'sos'. If package 'sos' is not found, ask user for interactive install. * ESS: New dynamic mode line indicator: Process status is automatically reflected in all mode-lines of associated with the process buffers. Particularly useful for displaying debug status of 'ess-tracebug' and developer status of 'ess-developer' in all associated buffers. * ESS: New 'ess-completing-read' mechanism: ESS uses 'ido' completions whenever possible. Variable 'ess-use-ido' controls whether to use ido completion or not. Active by default. * ESS now supports comint fields for output and input detection. This feature is not used by default, but might be useful in the future. * ESS[S]: New custom variable 'inferior-ess-S-prompt' to customize prompt detection regular expression in the inferior ESS buffers. You can customize this variable to enhance comint navigation ('comint-previous-prompt' and 'comint-next-prompt') the inferior buffers. * ESS[R]: Internal 'R' completion retrieval ('ess-R-complete-object-name') was rewritten and is faster now. * ESS is using process plist to store process specific variables, as opposed to buffer local variables as it was using before. The use of buffer local variables to store process variables is discouraged. * ESS: new functions to manipulate process plists: 'ess-process-get' and 'ess-process-set'. * ESS: Internal process waiting mechanism was completely rewritten. ESS no more relies on prompt regular expressions for the prompt detection. The only requirement on the primary process prompt is to end in '> '. This could be overwritten by setting 'inferor-ess-primary-prompt'. * ESS[S], notably 'R': Saved command history: ESS-HISTORY-FILE now accepts 't' (default), 'nil', or a file name. By setting it to 'nil' no command line history is saved anymore. ESS-HISTORY-DIRECTORY now allows to have the history all saved in one "central" file. * ESS[R]: more Roxygen improvements. * ESS[R]: 'C-c .' to set (indentation) style. * ESS[R]: Functions with non-standard names (for example 'aaa-bbb:cc') are properly handled by font-lock and evaluation routines. * ESS[R]:Several regexp bugs (described in etc/R-ESS-bugs.el) were fixed in 'ess-get-words-from-vector' and 'ess-command'. ess-17.11/ONEWS0000644005071500004540000011212613202324202010052 00000000000000Changes/New Features in 5.14: * ESS[BUGS/JAGS]: Batch BUGS is back! For recent OpenBUGS versions, 3.0.8+, a batch BUGS script is once again available, but for Linux only. Therefore, since it seems that BUGS and JAGS must co-exist (rather than a transition from BUGS to JAGS), .bug files are now in ESS[BUGS] mode and .jag files are in ESS[JAGS] mode. ESS[BUGS] now works like ESS[JAGS] rather than the original mode ESS[BUGS] mode which was difficult to maintain. Although, ESS[BUGS] appears to work, there still may be some features missing as well as bugs. * ESS[R]: New customizable variable 'ess-swv-plug-into-AUCTeX-p' Commands to Sweave current file and LaTeX the result are now available to AUCTeX users, if this variable is set to 't'. * ESS[S]: 'C-c C-c' ('ess-eval-function-or-paragraph-and-step') is now skipping over comments as the other paragraph functions do. It (and similar functions) should no longer wrongly find 'function()' beginnings inside comments or strings. * ESS[SAS]: improved by better support for GNU Emacs Changes/New Features in 5.13: * ESS[R]: On Windows, for R 2.12.0 and later, the Rterm executables (in subdirectories i386 / x64) now are found as well as for earlier R versions. * ESS[S+]: on Windows, both 32- and 64-bit versions of S+ ("S-PLUS") are found now and made available on the menu. * ESS[R]: When prompting for a starting directory, the R version is (always?) correct now. * ESS[R]: on non-Windows platforms, the 'use-dialog-box' variable is no longer temporarily changed (to 'nil' for R-x.y.z version functions and to 't' for 'R' itself), but rather the user customization is obeyed. * ESS[R]: more Roxygen improvements. * 'Rd-preview-help' now generates preview buffers with navigation facilities the same as regular help buffers. * ESS: New functions and keys C-c [up] / [down] for evaluating the buffer "from beginning till here". Changes/New Features in 5.12: * ESS[SAS] Font-locking: update of PROCs keywords (up to SAS 9.22); error/warnings. * ESS[R]: Roxygen improvements: S4 classes; also optionally keep spaces when filling arguments * ESS[Rd]: support new keywords: section-name \subsection plus a dozen "new" keywords; should match R 2.12.x now. * 'ess-display-help-on-object' ('C-c C-v') now _caches_ the list of topics, thus speeding up the improvement feature introduced in 5.9. Changes/New Features in 5.11: * Filename completion within buffers now adds only trailing characters to complete the filename, rather than expanding to an absolute file path. This filename completion is bound to the TAB key. * 'M-n P' in Sweave buffers now prompts for the command to run instead of using 'pdflatex' unconditionally, offering completion from customizable collection 'ess-swv-pdflatex-commands', the first of which is taken as default and that defaults to 'texi2pdf'. * 'M-RET' is now also bound in S language (R and S+) buffers to 'ess-use-this-dir'. It sends 'setwd(..)' to the S process to set the working directory to the one of the source file. Changes/New Features in 5.10: * 'M-RET' in *S* buffers is now bound to 'ess-dirs'. This function will set Emacs's current directory to be the same as the *S* process. This is useful if you use 'setwd()' within a *S* process. Changes/New Features in 5.9: * Toolbar: The toolbar now has an icon for starting Splus. * Indentation: New documentation and code has been added to make it easier to change how ESS indents code. In particular, see 'ess-default-style', 'ess-own-style-list' and the documention subsection "Changing indentation styles". * 'ess-display-help-on-object' ('C-c C-v') now offers completion candidates for help file aliases, in addition to object names. * Font locking: is now turned on even without 'window-system' is 'nil', whenever ESS-FONT-LOCK-MODE is non-nil, i.e., by default. * ESS script editing: ess-eval-deactivate-mark default is now t, as suggested by Leo Alekseyev and subsequent "unanimous" ESS-help discussion. * ESS[R]: Editing support for "#!" (Rscript / littler) editing, thanks to Jeffrey Arnold. * ESS[R]: Now finds all R versions, both 64-bit and 32-bit, on some 64-bit Windows machines. Please report back to ess-core success or failure on your 64-bit Windows machine. * ESS Manual now more visually pleasing; * ESS[R]: Roxygen on XEmacs no longer font locks for now (as it required missing features and hence broke ESS startup, there). * ESS[R]: Roxygen has a sub-menu on the [ESS] menu. * ESS[R]: Function 'ess-rutils-htmldocs' in 'ess-rutils.el' offers an alternative to 'help.start()' for navigating R documentation, using the 'browse-url' Emacs function. Changes/New Features in 5.8: * ESS[R]: New 'ess-rutils.el' with utilities for listing, loading, installing, and updating packages, as well as object manipulation (listing, viewing, and deleting). It also provides an alternative to 'RSiteSearch()' that uses the 'browse-url' function, so results can be viewed in an Emacs web browser. * ESS[R]: much more extensive Roxygen interface, via ess-roxy.el from Henning Redestig. Ess-roxy supports filling of roxygen fields, generation and updating roxygen templates, completion of roxygen tags, basic navigation (marking and moving between entries), folding using hs-minor-mode and preview of the Rd file. * Emacs lisp files have got better names (partly, for now). Changes/New Features in 5.7: * ESS[R]: loading a source file ('C-c C-l') now works in Windows, similarly to other platforms; (further; it had accidentally been broken in ESS 5.6 on all platforms) Changes/New Features in 5.6: * ESS[R]: help() calls have to differ from old default, with newer versions of R; currently via .help.ESS <- function(...) hack. Changes/New Features in 5.4: * ESS[SAS]: The long overdue change from 'make-regexp' to 'regexp-opt' for font-locking is complete. The new 'regexp-opt' is now the default since it is better than the old code in many ways (and especially more maintainable). However, there are certainly some special cases missed (bug reports and patches welcome!). Setting 'ess-sas-run-regexp-opt' to 'nil' will result in the old code being used. * ESS[BUGS] and ESS[JAGS]: typing '=' now results in '<-'. * ESS[R] function arguments "show" '(ess-r-args-show)' now uses the new '(tooltip-show-at-point)' contributed by Erik Iverson. * Toolbar icons now also work in (beta) Emacs 23. * ESS[S]: New function 'ess-change-directory' for setting both emacs' current directory and the directory of an *R* or *S* buffer. * ESS[S] when transient-mark-mode is true, the mark is now kept, rather than deactivated, thanks to a patch from David Reitter. Changes/New Features in 5.3.11: * ESS[SAS]: work around bug in Emacs 22.2 & 22.3 which fails to set case-fold fontification automatically. * Rd mode: support new keyword 'Rdversion' * ESS[R]: now again works with Emacs 21.x Changes/New Features in 5.3.10: * Fixed noweb-mode bug accidentally introduced into 5.3.9 * In noweb-mode, e.g., Rnw-mode, electric "<" also inserts closing "@". Further, the code chunk boundaries are better kept up-to-date, such that code[R] <-> text[LaTeX] minor mode switching should happen more reliably. * In noweb-mode, fix a buglet in rare [Enter] or [Tab] behavior; further, by default disable the former '[[' .. ']]' code-protection-when-filling behavior which has been found to be buggy. Changes/New Features in 5.3.9: * ESS[SAS]: evince PDF viewer now supported as well; search order: evince, Xpdf, Adobe/Acrobat Reader * ESS[R]: added support for Roxygen, potentially to be extended. * ESS[S] (and R): inferior ('*R*') and transcript modes no longer fontify language keywords (such as 'for', 'in', etc). * iESS[Stata]: Customize the 'ess-sta-delimiter-friendly' setting to 't' to convert embedded semi-colons to newlines for Stata processing. * Sweave fix for embedded blanks in PDF reader and PDF files * Several fixes for Major Mode Convention violations in 'ess-mode' and 'noweb-mode'. * ESS[JAGS]: 'M-x comment-region' now available! * ESS[S] The 'ess-swv-*' commands (and keybindings) are now in a submenu of the "Noweb" menu, when editing Sweave files. Changes/New Features in 5.3.8: * ESS[JAGS]: more separation from ESS[BUGS] (as much as is currently planned); now 'C-c C-c' on an empty '.jmd' creates a template as it should; symbolic links are created for CODA output so BOA is happy: from 'index.txt' to '.ind' and 'chain#.txt' to '#.out' * ESS[SAS]: buffer-local 'ess-sas-submit-command' and 'ess-sas-submit-command-options' now recognized by 'ess-sas-submit-region' * ESS[S]: When trying to evaluate code in an S language buffer and there is no associated process, now start R automatically instead of signalling an error. Also, restart R if there is an associated process which is not running. However, do not start R just via the "electric" '(' ('ess-r-args-auto-show'). * ESS[S]: For (one-line) functions withOUT '{ .. }' bodys, the end of function is now correctly found more often. This notably improves 'C-c C-c' ('ess-eval-function-or-paragraph-and-step'). * ESS[JAGS]: cleanup/re-organization of elisp code; symbolic links for CODA output are now only created by the new JAGS 'system' command in version 1.0.3; specify whether this command is available via 'ess-jags-system'; if not present, then no links are created so that the '*shell*' buffer does not become unresponsive during the batch run Changes/New Features in 5.3.7: * ESS: 'ess-default-style' now *is* customizable, i.e., changing its value in '~/.emacs' now does have the desired effect. * ESS: 'ess-font-lock-mode' is a new variable (default: t) which controls whether font-locking is enabled in ESS buffers. * ESS[R]: for XEmacs on Windows; another tweak to find R versions * ESS[SAS]: font-locking updated for ODS and SAS Bayesian Procedures; a more consistent handling of SAS options by 'ess-sas-submit-command-options' which is buffer-local; portable snooze for MS Windows via customize-able 'ess-sleep-for' (floats welcome); Xpdf now supported as a PDF viewer * ESS[Rnw]: now also works with "emacs -nw" and Emacs 22. * ESS[JAGS]: now requires JAGS 1.0 (see the new ESS for JAGS help section for more information): both need work; suggestions welcome * ESS[R]: [TAB] completion now uses the R-internal completion mechanism (for R >= 2.5.0). * ESS[R] ([S]): interpretation of "_" as assignment has been removed in 'ess-continued-statement-p' for R and S. * several internal code cleanups. * ESS[R]: An experimental version of a new command 'Rgui' on MS Windows to send lines directly from emacs to 'Rgui' is available in file 'lisp/essd-rgui.el'. Preliminary documentation is in file 'doc/rgui-doc.txt'. Changes/New Features in 5.3.6: * ESS: for XEmacs, using "gnuclient" (without a "-q") works for things like fix() after M-x gnuserv-start has been done. * ESS[R]: M-x R-newest should now work in more situations on MS Windows, e.g., when R has been installed in a non-default "ProgramFiles" directory tree. In these cases, there's no need to specify the name (and full path) of the R program anymore. * ESS[R]: For XEmacs, startup (with new tooltip code) works again. Changes/New Features in 5.3.5: * ESS[R] a new defun is available, 'M-x R-newest', which will start the newest version of R that it can find on your system. * ESS[R] add Sven Hartenstein's "R function arguments tips" functionality, via new file '../lisp/essd-r-args.el'. Note that this includes an "electric "("" behavior inside 'R-mode' which is _active by default_ and can be customized via 'ess-r-args-electric-paren'; i.e., use '(setq ess-r-args-electric-paren nil)' to turn it off. Further, 'ess-r-args-show-as' allows to switch to the "tooltip" mode. * ESS: functions 'ess-get-pdf-viewer' and *-ps-viewer; built on new customizable variables 'ess-pdf-viewer-pref' and 'ess-ps-viewer-pref'; currently used in 'ess-swv-PDF' and '*-PS'. * ESS[R] Improved 'ess-swv-PDF' to run pdf viewer only if pdflatex was ok * ESS[R] Improved 'ess-swv-weave' to start R automatically if none is running. * ESS: Do no longer ask _which_ ESS process to use if there is only one. Changes/New Features in 5.3.4: * ESS[R] now better work with options(error=recover); and the new default of CHM help files on windows. * ESS[R] some more cleanup in the "sweave" functions * miscellaneous fixes Changes/New Features in 5.3.3: * ESS[S] fix buglet (5.3.2 only) which left command prompt in "execute buffer" and hence help files. * new customizable variable 'ess-display-buffer-reuse-frames' set to true (which changes default behavior) such that execution or help *frames* are reused. Changes/New Features in 5.3.2: * Classic BUGS now supported by '(require 'essd-bugs)' with ESS[BUGS] and JAGS by '(require 'essd-jags)' with ESS[JAGS]. But, only one of them can be used at a time since they don't play nice together. Also, 'C-c C-c' is now bound to the function 'ess-bugs-next-action' ('F12' has been retired). And finally, note that 'essl-bug.el' is deprecated and the replacement is 'essl-bugs.el'. * ESS[R] Improved some of the "Sweave-make" functions (yet scarcely documented) in 'ess-swv.el'. * ESS[S] No longer mess with .Last.value (nor in other "languages"). Changes/New Features in 5.3.1: * See the docs for 2 ways to install ESS for XEmacs 1. by uncommenting the XEmacs part of Section 1 of 'Makeconf' and performing 'make install' 2. by unpacking either 'ess-5.3.1.tgz' or 'ess-5.3.1.zip' into 'PREFIX/lib/xemacs/site-packages' on unix or 'PREFIX\XEmacs\site-packages' on windows * ESS[R]: fixed bugs so that Rterm.exe can be found by XEmacs * ESS[S]: 'ess-toggle-S-assign-key' is slightly changed; in particular, the default 'ess-assign-key' is now 'C-x ='. * ESS[R]: 'M-x R-site-search' is a new (slightly experimental) utility similar to R's 'RSiteSearch(..)' but with the advantage of using Emacs' preferred browser, see 'browse-url-browser-function' Changes/New Features in 5.3.0: * ESS[BUGS]: sanely re-format statistical output, '.bog', from scientific notation to numbers rounded with 4 decimal places with 'M-x ess-bugs-sci-round-to-4-dp'. * The keys for navigating among section headings in help buffers worked, but only for one language per session; they should now work for multiple languages. (They were also broken on Windows machines.) * ESS[S] long standing buglets in the internal logic for loading lisp code on Windows. Particularly fixed behavior in help mode with S-plus GUI. * New variable, 'ess-use-inferior-program-name-in-buffer-name', which enables using the executable name instead of the dialect name for R. Feature request. * ESS[S] 'ess-execute-screen-options' now also works correctly when there is more than one window *side-by-side* in the same frame and runs in the correct buffer also when there is more than one S buffer. * iESS[S] new functions 'ess-eval-paragraph-and-step' and 'ess-eval-function-or-paragraph-and-step' are bound to keys 'C-c C-p' and 'C-c C-c' respectively and to the menu in ESS-mode; also bound in the help mode (for evaluating examples). * ESS[S] new function 'ess-toggle-S-assign-key' allows to assign the " <- " insertion to an arbitrary key. Changes/New Features in 5.2.12: * ESS[SAS]: 'M-;' fixed, but the XEmacs function 'comment-dwim' may be broken, if so, use 'M-x comment-region' and 'M-x uncomment-region' instead; only valid PROCs are fontified which is very helpful finding syntax errors (currently supported: BASE, ETS, FSP, GRAPH, IML, INSIGHT and STAT); the "feature" where 'F'-keys take you to an empty buffer when the requested destination is a file that does not exist has been fixed, now the request results in a no-op. Further, sas-mode now also works in simple terminals. * Rterm/Cygwin combination works under Microsoft Windows. * ESS[R]: internal calls use baseenv() instead of NULL and define 'baseenv' where needed. * New experimental support for installing ESS. See the file 'lisp/ess-install.el'. Changes/New Features in 5.2.11: * ESS Info entry and 'dir' handled more effectively for GNU Emacs users * ESS[SAS]: temporary files created for batch submission of a region are now named based on the current file; see 'ess-sas-file-root' for details; all 'lag' and 'dif' functions now fontified correctly * iESS[SAS]: fixed a few nagging bugs, however, still does not appear to work at this time; please let us know if you have any ideas. * ESS[S]: Support for running other versions of Splus has been added for unix. Two new variables, 'ess-s-versions' and 'ess-s-versions-list', are used to tell ESS what other versions of Splus you would like to run. Changes/New Features in 5.2.10: * ESS[R]: ess-r-versions can no longer be customized (since the customization was not taking effect unless customizations were loaded before ESS). Its value has been changed so that it will also find R executables beginning "R-devel" and "R-patched". If you wish to change this variable, it must be set in your '.emacs' before ESS is loaded. * Installation with GNU Make enhanced: unix and unix-like operating systems will now be able to install ESS for all users in either a GNU Emacs site-lisp or an XEmacs package configuration by editing 'lisp/ess-site.el' and 'Makeconf' accordingly, then issuing 'make install' * ESS[S]: Filename completion (inside strings) now also works in XEmacs for R and S-plus. Changes/New Features in 5.2.9: * ESS[R] for Windows: the \ directory character bug with respect to ess-load-file has been eradicated. * iESS[SAS]: 'C-c C-r' and 'C-c C-b' once again work as intended and documented. * ESS[S]: M-x ess-fix-EQ-assign is a bit more agressive. * ESS[S]: Imenu now also shows setAs(), etc. * ESS[R]: R function pattern enhanced with underlying code such that 'M-C-a' ('ess-beginning-of-function') etc now work for many more cases, including S4 method definitions. * iESS[R]: myOwnhelp(1) no longer wrongly triggers help(1). * ESS[R]: Improved detection of bogus help buffers: valid help buffers containing with the string "no documentation"(e.g. contour) were being treated as bogus. * ESS[R]: In R help buffers, if 'options("help.try.all.packages" = TRUE)' then '?rlm' will list which packages rlm is defined in. This help buffer is not bogus, but instead is now relabelled "*help[R](rlm in packages)*". * ESS[STA]: add "//" as comment starting character to syntax-table. Changes/New Features in 5.2.8: * iESS: [Tab] completes *file* names "inside string" as in earlier (<= 5.2.3) ESS versions. Changes/New Features in 5.2.7: * If you use Custom to change the variable ess-toolbar-items, the new toolbar is used in all subsequent ESS buffers. * ESS[SAS]: new feature: if ess-sas-log-max >0 and your .log grows to more than ess-sas-log-max bytes, just the first ess-sas-log-max bytes are refreshed; this is helpful when your .sas program generates lots of error messages and gets too big for emacs to display * ESS[R/S]: 'M-;' in R/S editing modes will now indent with either one or two hashes depending on context. * ESS[R]: David Whiting's Sweave extensions (to 'noweb') are now available (from ess-swv.el loaded by default). Changes/New Features in 5.2.6: * Removed non-ASCII characters in a few files. * ESS[R]: now works better when UTF-8 locale is active; in particular, you get correct directional quotes in R's startup message for R-devel (unstable development version of R 2.1.0) when using environment variables LANGUAGE=en@quot LC_ALL=en_US.UTF-8 * ESS[SAS]: toggling of .log mode improved ('F10'); toggling of .lst mode now also available ('C-F10'); killing all buffers associated with .sas program no longer bound to 'C-F10' since its a bit overzealous. * S-Plus 7 for Windows is now recognized. * ESS[S] (incl. R): in auto-fill mode, strings are not wrapped anymore. * ESS[S] (incl. R): font-lock now correctly differs between R and S, e.g., for "_"; both now fontify warning(.) and S does terminate() additionally. * Support for 'bell' aka 'beep' aka 'ding' aka 'alarm' in all inferior modes: When \a is output "to the the console" at the beginning of a line, the bell is rung. Changes/New Features in 5.2.5: * ESS[R]: 'C-c C-q' or 'Quit S' from the menu now should work (again and less klunkily) and do not append '-exited' to the buffer name. Further, the behavior of '(ess-cleanup)', called from ess-quit, now depends on the new customizable variable 'ess-S-quit-kill-buffers-p' which defaults to 'nil'. Consequently, the question _"Delete all buffers associated with ..?"_ will not be asked anymore by default. * ESS[SAS] - ess-ebcdic-to-ascii-search-and-replace will now work with the 'recode' application as well which is available on many platforms * ESS[S] (incl. R): Name completion for slots of S4 objects now works! Changes/New Features in 5.2.4: * The documentation now includes an overview of how to use the emacs TAGS facility for S functions. (The distribution also used to contain a directory 'etc/other/Tags' where a ~1990 version of 'etags.c' was distributed; this is no longer relevant and so has been deleted.) * ESS[SAS] - When you are working with EBCDIC files on an ASCII platform, .log NOTEs may display as gibberish since the EBCDIC characters are not converted to ASCII prior to their display. So, the function ess-ebcdic-to-ascii-search-and-replace is provided for convenience and is bound to 'C-F11'. This function requires the 'dd' command (only available on unix or unix-like platforms). * ESS: Completion of object names is now always done dynamically rather than allowing the option of using a pre-computed database (by 'ess-create-object-name-db') since modern computers seem fast enough for dynamic completion. (We expect few users, if any, have been using the pre-computed database method.) * ESS: object completion in iESS buffers running on Windows was very slow (for GNU Emacs, but not XEmacs) and has now been fixed. Further, it was more or less broken for all versions of S-plus 6.x, and has been fixed to work everywhere but with the Windows' GUI of S-plus. The list of objects now shows unique names also when an object appears more than once in the search path. * ESS[R]: Completion of object names now also includes those starting with ".". Changes/New Features in 5.2.3: * ESS: When new inferior ESS processes are created, by default they will replace the current buffer (this restores behavior from pre 5.2.0). If you wish new ESS processes to start in another window of the current frame, set inferior-ess-same-window to nil. * New variables inferior-Splus-args and inferior-R-args provide a way to pass command line arguments to starting S and R processes. Changes/New Features in 5.2.2: * bug-fixes for 5.2.1 (require 'executable), html docs, etc. * ess-lisp-directory/../doc/info added to Info-directory-list if ess-info not found by info * ESS[R]: If you have other versions of R on your exec-path, such as "R-1.8.1" with Unix or "rw1081" with Windows, ESS will find them and create appropriate functions, such as 'M-x R-1.8.1' or 'M-x rw1081', for calling them. By default only Unix programs beginning "R-1" and "R-2" and Windows programs parallel to the version of R in your exec-path will be found, but see ess-r-versions and ess-rterm-versions for ways to find other versions of R. * ESS[R]: Other versions of R, such as "R-1.8.1" on Unix and "rw1081" on Windows, are added to the "ESS / Start Process / Other" menu. * ESS[S]: If you have other versions of S-Plus on your Windows computer, such as S-Plus 6.1 or S-Plus 4.5, ESS will find them and create appropriate functions, such as 'M-x splus61', for calling the console version (Sqpe) inside an emacs buffer. By default only programs installed in the default location will be found, but see ess-SHOME-versions for ways to find other versions of S-Plus. * ESS[S]: Other versions of Sqpe on Windows, such as "splus61", are added to the "ESS / Start Process / Other" menu. * ESS[R]: (bug fix) ess-quit (bound to 'C-c C-q') should now quit the inferior R process, when issued from either the inferior buffer, or from a .R buffer. Changes/New Features in 5.2.1: * ESS[S] (R and S-plus): now have toolbar support with icons to evaluate code in the inferior process or to switch there. This code is experimental and likely to change as XEmacs/Emacs issues get resolved. The toolbar should be enabled if your Emacs displays images, but can be disabled with the variable ess-use-toolbar. Thanks to David Smith from Insightful for the S-plus logo. * ESS[SAS]: ess-sas-graph-view ('F12') enhanced; you can specify external file viewers for each graphics file type via the alist ess-sas-graph-view-viewer-alist; also .jpg/.gif are now handled by image-mode on XEmacs, if available, otherwise by graphics primitives as before Changes/New Features in 5.2.0: * ESS[BUGS]: new info documentation! now supports interactive processing thanks to Aki Vehtari (mailto:Aki.Vehtari@hut.fi); new architecture-independent unix support as well as support for BUGS v. 0.5 * ESS[SAS]: convert .log to .sas with ess-sas-transcript; info documentation improved; Local Variable bug fixes; SAS/IML statements/functions now highlighted; files edited remotely by ange-ftp/EFS/tramp are recognized and pressing SUBMIT opens a buffer on the remote host via the local variable ess-sas-shell-buffer-remote-init which defaults to "ssh"; changed the definition of the variable ess-sas-edit-keys-toggle to boolean rather than 0/1; added the function ess-electric-run-semicolon which automatically reverse indents lines containing only "run;"; 'C-F1' creates MS RTF portrait from the current buffer; 'C-F2' creates MS RTF landscape from the current buffer; 'C-F9' opens a SAS DATASET with PROC INSIGHT rather than PROC FSVIEW; "inferior" aliases for SAS batch: 'C-c C-r' for submit region, 'C-c C-b' for submit buffer, 'C-c C-x' for goto .log; 'C-c C-y' for goto .lst * ESS[S]: Pressing underscore ("_") once inserts " <- " (as before); pressing underscore twice inserts a literal underscore. To stop this smart behaviour, add "(ess-toggle-underscore nil)" to your .emacs after ess-site has been loaded; ess-dump-filename-template-proto (new name!) now can be customized successfully (for S language dialects); Support for Imenu has been improved; set ess-imenu-use-S to non-nil to get an "Imenu-S" item on your menubar; ess-help: Now using nice underlines (instead of 'nuke-* ^H_') * ESS[R]: After (require 'essa-r), 'M-x ess-r-var' allows to load numbers from any Emacs buffer into an existing *R* process; 'M-x ess-rdired' gives a "directory editor" of R objects; fixed ess-retr-lastvalue-command, i.e. .Last.value bug (thanks to David Brahm) * ESS: Support for creating new window frames has been added to ESS. Inferior ESS processes can be created in dedicated frames by setting inferior-ess-own-frame to t. ESS help buffers can also open in new frames; see the documentation for ess-help-own-frame for details. (Thanks to Kevin Rodgers for contributing code.) Changes/New Features in 5.1.24: * The version number is now correct even inside ESS/Emacs Changes/New Features in 5.1.23: * Minor more Makefile clean up. Changes/New Features in 5.1.22: * Besides info documentation, PDF and HTML documentation are also provided (instead of built using "make") and available on the web as well; see ESS web page (http://ess.r-project.org/) and StatLib (http://lib.stat.cmu.edu/general/ESS/doc) * Now that info documentation is available, the README.* files are no longer supported. However, they are still distributed for what it's worth. * ESS is now an XEmacs package! See XEmacs Installation HOWTO (http://www.xemacs.org/Install/index.html) for details (specifically, items 10-15). * ESS[SAS]: more user-friendly enhancements for remote SAS batch jobs with Kermit file transfers (LOG and OUTPUT function key features now supported). Multiple shells now supported so you can run SAS on different computers from different buffers by setting the buffer-local variable ess-sas-shell-buffer to unique buffer names. * Major re-vamping of Makefile/Makeconf. Changes/New Features in 5.1.21: * ESS[SAS]: info documentation now available!, see ESS->Help for SAS; 'F12' opens GSASFILE nearest point for viewing either within emacs, when available, or via an external viewer; more syntax highlighting keywords; more enhancements for remote SAS batch jobs with Kermit; new framework for remote SAS interactive jobs, see ess-remote * ESS[S]: info documentation now available!, see ESS->Help for the S family * Makefile: tag now independent of rel; info files made by doc/Makefile and installed in new info sub-directory Changes/New Features in 5.1.20: * New 'options()$STERM' in the S dialects (S, S-Plus, R). The S program can determine the environment in which it is currently running. ESS sets the option to 'iESS' or 'ddeESS' when it starts an S language process. We recommend other specific values for S language processes that ESS does not start. * New 'ess-mouse-me' function, assigned to S-mouse-3 by default. User may click on a word or region and then choose from the menu to display the item, or a summary, or a plot, etc. This feature is still under development. * GNU Emacs 21.1 is now supported (fixed for S dialects, SAS & BUGS), (some from Stephen Eglen). * XEmacs 21.x is now supported (fixed w32-using-nt bug) * XEmacs on Win (NT) is better supported. * Workaround for bug in Sqpe+6 (S-PLUS 6 for Win). * should now work even when imenu is not available (for old XEmacsen). * ESS[SAS]: XEmacs-Imenu fix; 'C-TAB' is globalized along with your function-key definitions, if specified; you can specify your SAS library definitions outside of autoexec.sas for ess-sas-data-view with SAS code placed in the variable ess-sas-data-view-libname, also the dataset name is defaulted to the nearest permanent dataset to point; Speedbar support now works for permanent datasets, please ignore first./last.; new font-locking is now the default with more improvements for font-locking PROCs, macro statements, * ; and %* ; comments; you can toggle sas-log-mode with 'F10' which will font-lock your .log (if it isn't too big); submit remote .sas files accessed with ange-ftp, EFS or Tramp (Kermit is experimental) by setting ess-sas-submit-method to 'sh; ess-sas-submit-command and ess-sas-submit-command-options are buffer-local so you can have local file variable sections at the end of your .sas files to request different executables or specify special options and the local file variables are re-read at submit instead of only at file open so that if you make a change it is picked up immediately; * ESS[BUGS]: font-lock with 'in' fixed. * for STATA: font-lock bug fixed. * for Rd mode: 'C-c C-v' and 'switch-process' in menu. further, 'C-c C-f' prefix (Rd-font) for inserting or surrounding a word by things such as \code{.}, \code{\link{.}}, \emph{.} etc. * new functions (ess-directory-function) and (ess-narrow-to-defun) ess-directory <-> default-directory logic (Jeff Mincy). * Re-organized Makefile and fixed a few bugs. Changes/New Features in 5.1.19: * S+6 now supported (Tony Rossini (Unix) and Rich Heiberger (Windows)) * New BUGS support through ESS[BUGS] mode (Rodney Sparapani) Templates assist you in writing .bug and .cmd code (.cmd and .log are replaced by .bmd and .bog to avoid emacs extension collisions). Substitution" parameters facilitate "automagic" generation of data...in" and "init...in" filenames, "const N=" from your data file and "monitor()/stats()" commands. Activated by pressing 'F12'. * Fixes for 'ess-smart-underscore' SAS breakage (Rich Heiberger) * You can change between PC and Unix, local and global SAS function-key definitions interactively (Rich Heiberger) * 'C-Submit' a highlighted region to SAS batch (Rodney Sparapani) * New and improved SAS syntax highlighting (Rodney Sparapani) To get the new functionality, set ess-sas-run-make-regexp to nil. Also available in .log files via 'F10'. * Open a permanent SAS dataset for viewing via 'F9' (Rodney Sparapani) You must have the library defined in autoexec.sas for it to work. * User-friendly defaults for 'sas-program', 'ess-sas-batch-pre-command' and 'ess-sas-batch-post-command' as well Customize support for these and other ESS[SAS] variables (Rodney Sparapani) * 'ess-sas-suffix-2' now defaults to .dat via 'F11' (Rodney Sparapani) * Emacs/XEmacs, Unix/Windows issues collectively handled in ess-emcs.el * defadvice solves problem of missing *ESS* (thanks to Jeff Mincy) * Improved manual a bit by including things that were only in 'README'. Changes/New Features in 5.1.18: * New 'ess-smart-underscore' function, now assigned to "_" by default. Inserts 'ess-S-assign' (customizable " <- "), unless inside string and comments where plain "_" is used instead. (MM) * Fixes for longstanding interactive SAS breakage (RMH) Changes/New Features in 5.1.17: * Documentation for Windows Installation (Rich Heiberger) * removal of ess-vars, finalization of customize support (in the sense that there is no more use of ess-vars, but that we need to fix ess-cust) (AJ Rossini) * Many small (and large) fixes/contributions (MMaechler) * addition of the "S-equal" variable and provide 'M-x ess-add-MM-keys' a way to remap "_" to 'ess-S-assign', typically " <- ", but customizable. (MMaechler) Changes/New Features in 5.1.16: * BUG FIXES * Better SAS support Changes/New Features in 5.1.15: * BUG FIXES Changes/New Features in 5.1.14: * Yet more fixes to SAS mode, (Rich Heiberger and Rodney Sparapani) * Customize support (for most Emacsen which support it) (AJRossini) * ARC and ViSta support out of the box, and fixes for XLispStat (AJRossini) Changes/New Features in 5.1.13: * Version numbering finally all depending on the ./VERSION file, thanks to Martin Maechler. * Yet more fixes to SAS mode, thanks to Rich Heiberger. Changes/New Features in 5.1.12: * Splus 5.1 stabilized, thanks to Martin Maechler, Bill Venables, Chuck Taylor, and others. * More fixes to SAS mode, thanks to Rodney Sparapani and Rich Heiberger. Changes/New Features in 5.1.11: * More fixes to Stata mode, thanks to Brendan Halpin (mailto:brendan@essex.ac.uk). * fixed bugs in ESS-elsewhere, thanks to many testers * README.SPLUS4WIN has DETAILED instructions for S-PLUS 2000, thanks to David Brahm (mailto:brahm@alum.mit.edu). * Fixes to SAS mode, thanks to Rodney Sparapani Changes/New Features in 5.1.10: * More fixes to Stata mode * primitive generic version of ESS-elsewhere * Small fixes to SAS/Stata. Changes/New Features in 5.1.9: * Stata mode works * Literate Data Analysis using Noweb works Changes/New Features in 5.1.8: * Bug fixes * R documentation mode defaults changed Changes/New Features in 5.1.2: * able to use inferior iESS mode to communicate directly with a running S-Plus 4.x process using the Microsoft DDE protocol. We use the familiar (from Unix ESS) 'C-c C-n' and related key sequences to send lines from the S-mode file to the inferior S process. We continue to edit S input files in ESS[S] mode and transcripts of previous S sessions in ESS Transcript mode. All three modes know the S language, syntax, and indentation patterns and provide the syntactic highlighting that eases the programming tasks. ess-17.11/RPM.spec0000644005071500004540000000752213202256261010562 00000000000000# This is an RPM spec file that specifies how to package # ESS for Fedora Core Linux and, possibly, similar systems. %define name emacs-ess %define version 17.11 %define release 1.tgm Summary: Emacs Speaks Statistics add-on package for Emacs Name: %{name} Version: %{version} Release: %{release} Copyright: GPL Group: Applications/Editors Source: http://ESS.R-project.org/downloads/ess/ess-%{version}.tgz URL: http://ESS.R-project.org/ Packager: Detlef Steuer <.........de> BuildRoot: %{_tmppath}/%{name}-root Prefix: %{_prefix} BuildArchitectures: noarch BuildRequires: emacs Requires: emacs %description This package provides Emacs Speaks Statistics (ESS), which provides Emacs-based front ends for popular statistics packages. ESS provides an intelligent, consistent interface between the user and the software. ESS interfaces with S-PLUS, R, SAS, BUGS and other statistical analysis packages under the Unix, Microsoft Windows, and Apple Mac OS operating systems. ESS is a package for the GNU Emacs and XEmacs text editors whose features ESS uses to streamline the creation and use of statistical software. ESS knows the syntax and grammar of statistical analysis packages and provides consistent display and editing features based on that knowledge. ESS assists in interactive and batch execution of statements written in these statistical analysis languages. %prep %setup -n ess-%{version} ( cd doc && chmod u+w html info ) # fix perms to ensure builddir can be deleted %build make # create an init file that is loaded when a user starts up emacs to # tell emacs to autoload our package's Emacs code when needed cat > %{name}-init.el <<"EOF" ;;; Set up %{name} for Emacs. ;;; ;;; This file is automatically loaded by emacs's site-start.el ;;; when you start a new emacs session. (require 'ess-site) EOF # create a README.RPM file to document any quirks of this package cat > README.RPM < EOF %install %{__rm} -rf ${RPM_BUILD_ROOT} INITDIR=${RPM_BUILD_ROOT}%{_datadir}/emacs/site-lisp/site-start.d PKGLISP=${RPM_BUILD_ROOT}%{_datadir}/emacs/site-lisp/%{name}-%{version} INFODIR=${RPM_BUILD_ROOT}%{_infodir} %{__install} -D %{name}-init.el $INITDIR/%{name}-init.el %{__install} -d $PKGLISP %{__install} -d $INFODIR %{__make} install \ PREFIX=${RPM_BUILD_ROOT}%{_prefix} \ LISPDIR=$PKGLISP \ INFODIR=$INFODIR %{__rm} -f $INFODIR/dir # don't package but instead update in pre and post %{__cp} -a etc $PKGLISP # tuck ess's /etc into lisp dir for easy transport # Uncomment to print the README file after install. # # %post # echo # cat %{_defaultdocdir}/%{name}-%{version}/README.RPM # echo %clean %{__rm} -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,root) %doc README README.RPM ANNOUNCE COPYING VERSION ChangeLog doc %dir %{_datadir}/emacs/site-lisp/%{name}-%{version} %{_datadir}/emacs/site-lisp/%{name}-%{version}/* %{_datadir}/emacs/site-lisp/site-start.d/* %{_infodir}/*.gz %post [ -f /usr/share/info/ess.info.gz ] && \ /sbin/install-info /usr/share/info/ess.info.gz /usr/share/info/dir || : %preun if [ $1 = 0 ]; then [ -f /usr/share/info/ess.info.gz ] && \ /sbin/install-info --delete /usr/share/info/ess.info.gz \ /usr/share/info/dir || : fi %changelog * Fri Oct 15 2004 Tom Moertel 5.2.3-1.tgm - Updated to ESS 5.2.3. * Fri Aug 27 2004 Tom Moertel 5.2.2-3.tgm - Updated ESS URL. - Fixed Summary. * Fri Aug 27 2004 Tom Moertel 5.2.2-2.tgm - Fixed bug: Forgot to include ESS's etc/ directory. * Thu Aug 26 2004 Tom Moertel 5.2.2-1.tgm - Initial build.